From 1bcbf74883df8b43f4fafee75484498aa1b4d5a2 Mon Sep 17 00:00:00 2001 From: RockYang Date: Sun, 28 Jul 2024 18:55:17 +0800 Subject: [PATCH 01/34] remove chat debug log --- api/handler/chatimpl/openai_handler.go | 1 - database/update-v4.1.1.sql | 6 ++++-- web/src/views/MarkMap.vue | 18 +----------------- web/src/views/Suno.vue | 12 +++++++++++- 4 files changed, 16 insertions(+), 21 deletions(-) diff --git a/api/handler/chatimpl/openai_handler.go b/api/handler/chatimpl/openai_handler.go index 9c4c57ea..775c8275 100644 --- a/api/handler/chatimpl/openai_handler.go +++ b/api/handler/chatimpl/openai_handler.go @@ -65,7 +65,6 @@ func (h *ChatHandler) sendOpenAiMessage( if !strings.Contains(line, "data:") || len(line) < 30 { continue } - logger.Info(line) var responseBody = types.ApiResponse{} err = json.Unmarshal([]byte(line[6:]), &responseBody) if err != nil { // 数据解析出错 diff --git a/database/update-v4.1.1.sql b/database/update-v4.1.1.sql index e49f9102..0cb22b77 100644 --- a/database/update-v4.1.1.sql +++ b/database/update-v4.1.1.sql @@ -23,7 +23,9 @@ CREATE TABLE `chatgpt_suno_jobs` ( `power` smallint NOT NULL DEFAULT '0' COMMENT '消耗算力', `play_times` int DEFAULT NULL COMMENT '播放次数', `created_at` datetime NOT NULL -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='MidJourney 任务表'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='Suno 任务表'; +ALTER TABLE `chatgpt_suno_jobs` MODIFY `id` int NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=1; ALTER TABLE `chatgpt_suno_jobs` ADD PRIMARY KEY (`id`); -ALTER TABLE `chatgpt_suno_jobs` ADD UNIQUE(`song_id`); \ No newline at end of file +ALTER TABLE `chatgpt_api_keys` DROP `platform`; +ALTER TABLE `chatgpt_chat_models` DROP `platform`; \ No newline at end of file diff --git a/web/src/views/MarkMap.vue b/web/src/views/MarkMap.vue index e1e5d334..9a75ecbe 100644 --- a/web/src/views/MarkMap.vue +++ b/web/src/views/MarkMap.vue @@ -94,7 +94,7 @@ + + \ No newline at end of file diff --git a/web/src/components/SendMsg.vue b/web/src/components/SendMsg.vue index c76cb100..72a30052 100644 --- a/web/src/components/SendMsg.vue +++ b/web/src/components/SendMsg.vue @@ -1,48 +1,20 @@ - \ No newline at end of file From 5da879600afeb052bad48a757dd8e9527c3c204d Mon Sep 17 00:00:00 2001 From: RockYang Date: Tue, 13 Aug 2024 14:55:47 +0800 Subject: [PATCH 05/34] add verification code for login and register page --- api/core/types/config.go | 10 +++--- api/handler/admin/admin_handler.go | 41 ++++++++++++++++------- api/handler/admin/user_handler.go | 2 +- api/handler/sms_handler.go | 20 ++++++------ api/handler/user_handler.go | 23 +++++++++++++ web/src/components/LoginDialog.vue | 52 +++++++++++++++++++++++++++--- web/src/components/SendMsg.vue | 20 +++++++++--- web/src/store/cache.js | 22 ++++++------- web/src/store/session.js | 3 +- web/src/views/ChatApps.vue | 3 +- web/src/views/Home.vue | 3 +- web/src/views/Login.vue | 22 ++++++++++++- web/src/views/Register.vue | 20 +++++++++++- web/src/views/admin/Login.vue | 21 +++++++++++- 14 files changed, 207 insertions(+), 55 deletions(-) diff --git a/api/core/types/config.go b/api/core/types/config.go index 10f16f62..07d19ff1 100644 --- a/api/core/types/config.go +++ b/api/core/types/config.go @@ -161,10 +161,10 @@ type SystemConfig struct { SdNegPrompt string `json:"sd_neg_prompt"` // SD 默认反向提示词 MjMode string `json:"mj_mode"` // midjourney 默认的API模式,relax, fast, turbo - IndexBgURL string `json:"index_bg_url"` // 前端首页背景图片 - IndexNavs []int `json:"index_navs"` // 首页显示的导航菜单 - Copyright string `json:"copyright"` // 版权信息 - MarkMapText string `json:"mark_map_text,omitempty"` // 思维导入的默认文本 + IndexBgURL string `json:"index_bg_url"` // 前端首页背景图片 + IndexNavs []int `json:"index_navs"` // 首页显示的导航菜单 + Copyright string `json:"copyright"` // 版权信息 + MarkMapText string `json:"mark_map_text"` // 思维导入的默认文本 - EnabledVerify bool `json:"enabled_verify,omitempty"` // 是否启用验证码 + EnabledVerify bool `json:"enabled_verify"` // 是否启用验证码 } diff --git a/api/handler/admin/admin_handler.go b/api/handler/admin/admin_handler.go index eaaaf8fd..f4677723 100644 --- a/api/handler/admin/admin_handler.go +++ b/api/handler/admin/admin_handler.go @@ -14,6 +14,7 @@ import ( "geekai/core/types" "geekai/handler" logger2 "geekai/logger" + "geekai/service" "geekai/store/model" "geekai/store/vo" "geekai/utils" @@ -28,33 +29,49 @@ import ( var logger = logger2.GetLogger() -// Manager 管理员 -type Manager struct { - Username string `json:"username"` - Password string `json:"password"` - Captcha string `json:"captcha"` // 验证码 - CaptchaId string `json:"captcha_id"` // 验证码id -} - const SuperManagerID = 1 type ManagerHandler struct { handler.BaseHandler - redis *redis.Client + redis *redis.Client + captcha *service.CaptchaService } -func NewAdminHandler(app *core.AppServer, db *gorm.DB, client *redis.Client) *ManagerHandler { - return &ManagerHandler{BaseHandler: handler.BaseHandler{DB: db, App: app}, redis: client} +func NewAdminHandler(app *core.AppServer, db *gorm.DB, client *redis.Client, captcha *service.CaptchaService) *ManagerHandler { + return &ManagerHandler{ + BaseHandler: handler.BaseHandler{DB: db, App: app}, + redis: client, + captcha: captcha, + } } // Login 登录 func (h *ManagerHandler) Login(c *gin.Context) { - var data Manager + var data struct { + Username string `json:"username"` + Password string `json:"password"` + Key string `json:"key,omitempty"` + Dots string `json:"dots,omitempty"` + X int `json:"x,omitempty"` + } if err := c.ShouldBindJSON(&data); err != nil { resp.ERROR(c, types.InvalidArgs) return } + if h.App.SysConfig.EnabledVerify { + var check bool + if data.X != 0 { + check = h.captcha.SlideCheck(data) + } else { + check = h.captcha.Check(data) + } + if !check { + resp.ERROR(c, "请先完人机验证") + return + } + } + var manager model.AdminUser res := h.DB.Model(&model.AdminUser{}).Where("username = ?", data.Username).First(&manager) if res.Error != nil { diff --git a/api/handler/admin/user_handler.go b/api/handler/admin/user_handler.go index 07b93700..6d713f53 100644 --- a/api/handler/admin/user_handler.go +++ b/api/handler/admin/user_handler.go @@ -49,7 +49,7 @@ func (h *UserHandler) List(c *gin.Context) { } session.Model(&model.User{}).Count(&total) - res := session.Offset(offset).Limit(pageSize).Find(&items) + res := session.Offset(offset).Limit(pageSize).Order("id DESC").Find(&items) if res.Error == nil { for _, item := range items { var user vo.User diff --git a/api/handler/sms_handler.go b/api/handler/sms_handler.go index 680f73e1..b64962c3 100644 --- a/api/handler/sms_handler.go +++ b/api/handler/sms_handler.go @@ -56,15 +56,17 @@ func (h *SmsHandler) SendCode(c *gin.Context) { resp.ERROR(c, types.InvalidArgs) return } - var check bool - if data.X != 0 { - check = h.captcha.SlideCheck(data) - } else { - check = h.captcha.Check(data) - } - if !check { - resp.ERROR(c, "验证码错误,请先完人机验证") - return + if h.App.SysConfig.EnabledVerify { + var check bool + if data.X != 0 { + check = h.captcha.SlideCheck(data) + } else { + check = h.captcha.Check(data) + } + if !check { + resp.ERROR(c, "请先完人机验证") + return + } } code := utils.RandomNumber(6) diff --git a/api/handler/user_handler.go b/api/handler/user_handler.go index db39216a..25127eda 100644 --- a/api/handler/user_handler.go +++ b/api/handler/user_handler.go @@ -33,6 +33,7 @@ type UserHandler struct { searcher *xdb.Searcher redis *redis.Client licenseService *service.LicenseService + captcha *service.CaptchaService } func NewUserHandler( @@ -40,11 +41,13 @@ func NewUserHandler( db *gorm.DB, searcher *xdb.Searcher, client *redis.Client, + captcha *service.CaptchaService, licenseService *service.LicenseService) *UserHandler { return &UserHandler{ BaseHandler: BaseHandler{DB: db, App: app}, searcher: searcher, redis: client, + captcha: captcha, licenseService: licenseService, } } @@ -58,6 +61,9 @@ func (h *UserHandler) Register(c *gin.Context) { Password string `json:"password"` Code string `json:"code"` InviteCode string `json:"invite_code"` + Key string `json:"key,omitempty"` + Dots string `json:"dots,omitempty"` + X int `json:"x,omitempty"` } if err := c.ShouldBindJSON(&data); err != nil { resp.ERROR(c, types.InvalidArgs) @@ -193,11 +199,28 @@ func (h *UserHandler) Login(c *gin.Context) { var data struct { Username string `json:"username"` Password string `json:"password"` + Key string `json:"key,omitempty"` + Dots string `json:"dots,omitempty"` + X int `json:"x,omitempty"` } if err := c.ShouldBindJSON(&data); err != nil { resp.ERROR(c, types.InvalidArgs) return } + + if h.App.SysConfig.EnabledVerify { + var check bool + if data.X != 0 { + check = h.captcha.SlideCheck(data) + } else { + check = h.captcha.Check(data) + } + if !check { + resp.ERROR(c, "请先完人机验证") + return + } + } + var user model.User res := h.DB.Where("username = ?", data.Username).First(&user) if res.Error != nil { diff --git a/web/src/components/LoginDialog.vue b/web/src/components/LoginDialog.vue index 8fe04551..b6cdd66e 100644 --- a/web/src/components/LoginDialog.vue +++ b/web/src/components/LoginDialog.vue @@ -55,7 +55,7 @@ 还没有账号? 注册 - 忘记密码? + 忘记密码? @@ -226,6 +226,10 @@ + + + + @@ -239,12 +243,14 @@ import {Checked, Close, Iphone, Lock, Message} from "@element-plus/icons-vue"; import SendMsg from "@/components/SendMsg.vue"; import {arrayContains} from "@/utils/libs"; import {getSystemInfo} from "@/store/cache"; +import Captcha from "@/components/Captcha.vue"; +import ResetPass from "@/components/ResetPass.vue"; // eslint-disable-next-line no-undef const props = defineProps({ show: Boolean, }); -const showDialog = ref(true) +const showDialog = ref(false) watch(() => props.show, (newValue) => { showDialog.value = newValue }) @@ -260,19 +266,23 @@ const data = ref({ const enableMobile = ref(false) const enableEmail = ref(false) const enableUser = ref(false) -const enableRegister = ref(false) +const enableRegister = ref(true) const wechatLoginURL = ref('') const activeName = ref("") const wxImg = ref("/images/wx.png") +const captchaRef = ref(null) // eslint-disable-next-line no-undef const emits = defineEmits(['hide', 'success']); +const action = ref("login") +const enableVerify = ref(false) +const showResetPass = ref(false) onMounted(() => { const returnURL = `${location.protocol}//${location.host}/login/callback` httpGet("/api/user/clogin?return_url="+returnURL).then(res => { wechatLoginURL.value = res.data.url }).catch(e => { - console.error(e) + console.log(e.message) }) getSystemInfo().then(res => { @@ -296,12 +306,21 @@ onMounted(() => { if (res.data['wechat_card_url'] !== '') { wxImg.value = res.data['wechat_card_url'] } + enableVerify.value = res.data['enabled_verify'] } }).catch(e => { ElMessage.error("获取系统配置失败:" + e.message) }) }) +const submit = (verifyData) => { + if (action.value === "login") { + doLogin(verifyData) + } else if (action.value === "register") { + doRegister(verifyData) + } +} + // 登录操作 const submitLogin = () => { if (data.value.username === '') { @@ -310,7 +329,18 @@ const submitLogin = () => { if (data.value.password === '') { return ElMessage.error('请输入密码'); } + if (enableVerify.value) { + captchaRef.value.loadCaptcha() + action.value = "login" + } else { + doLogin({}) + } +} +const doLogin = (verifyData) => { + data.value.key = verifyData.key + data.value.dots = verifyData.dots + data.value.x = verifyData.x httpPost('/api/user/login', data.value).then((res) => { setUserToken(res.data.token) ElMessage.success("登录成功!") @@ -345,9 +375,21 @@ const submitRegister = () => { if ((activeName.value === 'mobile' || activeName.value === 'email') && data.value.code === '') { return ElMessage.error('请输入验证码'); } + if (enableVerify.value) { + captchaRef.value.loadCaptcha() + action.value = "register" + } else { + doRegister({}) + } +} + +const doRegister = (verifyData) => { + data.value.key = verifyData.key + data.value.dots = verifyData.dots + data.value.x = verifyData.x data.value.reg_way = activeName.value httpPost('/api/user/register', data.value).then((res) => { - setUserToken(res.data) + setUserToken(res.data.token) ElMessage.success({ "message": "注册成功!", onClose: () => { diff --git a/web/src/components/SendMsg.vue b/web/src/components/SendMsg.vue index 72a30052..f39714a0 100644 --- a/web/src/components/SendMsg.vue +++ b/web/src/components/SendMsg.vue @@ -1,10 +1,10 @@ @@ -15,6 +15,7 @@ import {validateEmail, validateMobile} from "@/utils/validate"; import {httpPost} from "@/utils/http"; import {showMessageError, showMessageOK} from "@/utils/dialog"; import Captcha from "@/components/Captcha.vue"; +import {getSystemInfo} from "@/store/cache"; // eslint-disable-next-line no-undef const props = defineProps({ @@ -24,15 +25,24 @@ const props = defineProps({ const btnText = ref('发送验证码') const canSend = ref(true) const captchaRef = ref(null) +const enableVerify = ref(false) -const showCaptcha = () => { +getSystemInfo().then(res => { + enableVerify.value = res.data['enabled_verify'] +}) + +const sendMsg = () => { if (!validateMobile(props.receiver) && !validateEmail(props.receiver)) { return showMessageError("请输入合法的手机号/邮箱地址") } - captchaRef.value.loadCaptcha() + if (enableVerify.value) { + captchaRef.value.loadCaptcha() + } else { + doSendMsg({}) + } } -const sendMsg = (data) => { +const doSendMsg = (data) => { if (!canSend.value) { return } diff --git a/web/src/store/cache.js b/web/src/store/cache.js index 04409f60..fdb3284a 100644 --- a/web/src/store/cache.js +++ b/web/src/store/cache.js @@ -1,6 +1,5 @@ import {httpGet} from "@/utils/http"; import Storage from "good-storage"; -import {showMessageError} from "@/utils/dialog"; const userDataKey = "USER_INFO_CACHE_KEY" const adminDataKey = "ADMIN_INFO_CACHE_KEY" @@ -16,12 +15,12 @@ export function checkSession() { httpGet('/api/user/session').then(res => { item.data = res.data // cache expires after 10 secs - item.expire = Date.now() + 1000 * 10 + item.expire = Date.now() + 1000 * 60 * 5 Storage.set(userDataKey, item) resolve(item.data) - }).catch(err => { + }).catch(e => { Storage.remove(userDataKey) - reject(err) + reject(e) }) }) } @@ -38,11 +37,12 @@ export function checkAdminSession() { return new Promise((resolve, reject) => { httpGet('/api/admin/session').then(res => { item.data = res.data - item.expire = Date.now() + 1000 * 10 + item.expire = Date.now() + 1000 * 60 * 5 Storage.set(adminDataKey, item) resolve(item.data) - }).catch(err => { - reject(err) + }).catch(e => { + Storage.remove(adminDataKey) + reject(e) }) }) } @@ -59,11 +59,11 @@ export function getSystemInfo() { return new Promise((resolve, reject) => { httpGet('/api/config/get?key=system').then(res => { item.data = res - item.expire = Date.now() + 1000 * 10 + item.expire = Date.now() + 1000 * 60 * 10 Storage.set(systemInfoKey, item) resolve(item.data) }).catch(err => { - reject(err) + resolve(err) }) }) } @@ -77,11 +77,11 @@ export function getLicenseInfo() { return new Promise((resolve, reject) => { httpGet('/api/config/license').then(res => { item.data = res - item.expire = Date.now() + 1000 * 10 + item.expire = Date.now() + 1000 * 60 * 10 Storage.set(licenseInfoKey, item) resolve(item.data) }).catch(err => { - reject(err) + resolve(err) }) }) } \ No newline at end of file diff --git a/web/src/store/session.js b/web/src/store/session.js index 2f97602f..3f023555 100644 --- a/web/src/store/session.js +++ b/web/src/store/session.js @@ -1,6 +1,6 @@ import {randString} from "@/utils/libs"; import Storage from "good-storage"; -import {removeAdminInfo, removeUserInfo} from "@/store/cache"; +import {checkAdminSession, checkSession, removeAdminInfo, removeUserInfo} from "@/store/cache"; /** * storage handler @@ -18,6 +18,7 @@ export function getUserToken() { } export function setUserToken(token) { + // 刷新 session 缓存 Storage.set(UserTokenKey, token) } diff --git a/web/src/views/ChatApps.vue b/web/src/views/ChatApps.vue index d0e589dc..48193f8e 100644 --- a/web/src/views/ChatApps.vue +++ b/web/src/views/ChatApps.vue @@ -89,7 +89,8 @@ onMounted(() => { const getRoles = () => { checkSession().then(user => { roles.value = user.chat_roles - }).catch(() => { + }).catch(e => { + console.log(e.message) }) } diff --git a/web/src/views/Home.vue b/web/src/views/Home.vue index 298721cd..cdd49a69 100644 --- a/web/src/views/Home.vue +++ b/web/src/views/Home.vue @@ -72,7 +72,6 @@
登录 - 注册
@@ -161,7 +160,7 @@ const docsURL = ref(process.env.VUE_APP_DOCS_URL) const gitURL = ref(process.env.VUE_APP_GIT_URL) const store = useSharedStore(); -const show = ref(true) +const show = ref(false) watch(() => store.showLoginDialog, (newValue) => { show.value = newValue }); diff --git a/web/src/views/Login.vue b/web/src/views/Login.vue index 09840ef2..05b443e9 100644 --- a/web/src/views/Login.vue +++ b/web/src/views/Login.vue @@ -55,6 +55,8 @@ + + @@ -73,6 +75,7 @@ import {checkSession, getLicenseInfo, getSystemInfo} from "@/store/cache"; import {setUserToken} from "@/store/session"; import ResetPass from "@/components/ResetPass.vue"; import {showMessageError} from "@/utils/dialog"; +import Captcha from "@/components/Captcha.vue"; const router = useRouter(); const title = ref('Geek-AI'); @@ -82,12 +85,15 @@ const showResetPass = ref(false) const logo = ref("") const licenseConfig = ref({}) const wechatLoginURL = ref('') +const enableVerify = ref(false) +const captchaRef = ref(null) onMounted(() => { // 获取系统配置 getSystemInfo().then(res => { logo.value = res.data.logo title.value = res.data.title + enableVerify.value = res.data['enabled_verify'] }).catch(e => { showMessageError("获取系统配置失败:" + e.message) }) @@ -129,7 +135,21 @@ const login = function () { return showMessageError('请输入密码'); } - httpPost('/api/user/login', {username: username.value.trim(), password: password.value.trim()}).then((res) => { + if (enableVerify.value) { + captchaRef.value.loadCaptcha() + } else { + doLogin({}) + } +} + +const doLogin = (verifyData) => { + httpPost('/api/user/login', { + username: username.value.trim(), + password: password.value.trim(), + key: verifyData.key, + dots: verifyData.dots, + x: verifyData.x + }).then((res) => { setUserToken(res.data.token) if (isMobile()) { router.push('/mobile') diff --git a/web/src/views/Register.vue b/web/src/views/Register.vue index f080b568..979b7a7f 100644 --- a/web/src/views/Register.vue +++ b/web/src/views/Register.vue @@ -160,6 +160,8 @@ + +
@@ -182,6 +184,7 @@ import {setUserToken} from "@/store/session"; import {validateEmail, validateMobile} from "@/utils/validate"; import {showMessageError, showMessageOK} from "@/utils/dialog"; import {getLicenseInfo, getSystemInfo} from "@/store/cache"; +import Captcha from "@/components/Captcha.vue"; const router = useRouter(); const title = ref(''); @@ -201,6 +204,8 @@ const enableRegister = ref(true) const activeName = ref("mobile") const wxImg = ref("/images/wx.png") const licenseConfig = ref({}) +const enableVerify = ref(false) +const captchaRef = ref(null) getSystemInfo().then(res => { if (res.data) { @@ -222,6 +227,7 @@ getSystemInfo().then(res => { if (res.data['wechat_card_url'] !== '') { wxImg.value = res.data['wechat_card_url'] } + enableVerify.value = res.data['enabled_verify'] } }).catch(e => { ElMessage.error("获取系统配置失败:" + e.message) @@ -257,9 +263,21 @@ const submitRegister = () => { if ((activeName.value === 'mobile' || activeName.value === 'email') && data.value.code === '') { return showMessageError('请输入验证码'); } + + if (enableVerify.value) { + captchaRef.value.loadCaptcha() + } else { + doSubmitRegister({}) + } +} + +const doSubmitRegister = (verifyData) => { + data.value.key = verifyData.key + data.value.dots = verifyData.dots + data.value.x = verifyData.x data.value.reg_way = activeName.value httpPost('/api/user/register', data.value).then((res) => { - setUserToken(res.data) + setUserToken(res.data.token) showMessageOK({ "message": "注册成功,即将跳转到对话主界面...", onClose: () => router.push("/chat"), diff --git a/web/src/views/admin/Login.vue b/web/src/views/admin/Login.vue index 37d17458..4c326c93 100644 --- a/web/src/views/admin/Login.vue +++ b/web/src/views/admin/Login.vue @@ -37,6 +37,8 @@ + +
@@ -54,12 +56,15 @@ import {useRouter} from "vue-router"; import FooterBar from "@/components/FooterBar.vue"; import {setAdminToken} from "@/store/session"; import {checkAdminSession, getSystemInfo} from "@/store/cache"; +import Captcha from "@/components/Captcha.vue"; const router = useRouter(); const title = ref('Geek-AI Console'); const username = ref(process.env.VUE_APP_ADMIN_USER); const password = ref(process.env.VUE_APP_ADMIN_PASS); const logo = ref("") +const enableVerify = ref(false) +const captchaRef = ref(null) checkAdminSession().then(() => { router.push("/admin") @@ -70,6 +75,7 @@ checkAdminSession().then(() => { getSystemInfo().then(res => { title.value = res.data.admin_title logo.value = res.data.logo + enableVerify.value = res.data['enabled_verify'] }).catch(e => { ElMessage.error("加载系统配置失败: " + e.message) }) @@ -87,8 +93,21 @@ const login = function () { if (password.value === '') { return ElMessage.error('请输入密码'); } + if (enableVerify.value) { + captchaRef.value.loadCaptcha() + } else { + doLogin({}) + } +} - httpPost('/api/admin/login', {username: username.value.trim(), password: password.value.trim()}).then(res => { +const doLogin = function (verifyData) { + httpPost('/api/admin/login', { + username: username.value.trim(), + password: password.value.trim(), + key: verifyData.key, + dots: verifyData.dots, + x: verifyData.x + }).then(res => { setAdminToken(res.data.token) router.push("/admin") }).catch((e) => { From 43843b92f20b9dee0110f9a1945c7e57940fb256 Mon Sep 17 00:00:00 2001 From: RockYang Date: Tue, 13 Aug 2024 18:40:50 +0800 Subject: [PATCH 06/34] add mobile and email filed for user --- api/handler/user_handler.go | 29 ++++++-- api/store/model/user.go | 2 + api/store/vo/user.go | 2 + web/src/assets/css/login.styl | 3 +- web/src/assets/css/member.styl | 2 - .../{ResetAccount.vue => BindMobile.vue} | 35 ++++++---- web/src/components/LoginDialog.vue | 66 +++++++++++-------- web/src/components/ResetPass.vue | 6 +- web/src/components/SendMsg.vue | 12 +++- web/src/views/Login.vue | 4 +- web/src/views/LoginCallback.vue | 25 ++++++- web/src/views/Member.vue | 7 +- web/src/views/Register.vue | 22 +++++-- web/src/views/admin/Users.vue | 4 +- web/vue.config.js | 2 +- 15 files changed, 152 insertions(+), 69 deletions(-) rename web/src/components/{ResetAccount.vue => BindMobile.vue} (73%) diff --git a/api/handler/user_handler.go b/api/handler/user_handler.go index 25127eda..ac9cc240 100644 --- a/api/handler/user_handler.go +++ b/api/handler/user_handler.go @@ -58,6 +58,8 @@ func (h *UserHandler) Register(c *gin.Context) { var data struct { RegWay string `json:"reg_way"` Username string `json:"username"` + Mobile string `json:"mobile"` + Email string `json:"email"` Password string `json:"password"` Code string `json:"code"` InviteCode string `json:"invite_code"` @@ -85,8 +87,15 @@ func (h *UserHandler) Register(c *gin.Context) { // 检查验证码 var key string - if data.RegWay == "email" || data.RegWay == "mobile" { - key = CodeStorePrefix + data.Username + if data.RegWay == "email" { + key = CodeStorePrefix + data.Email + code, err := h.redis.Get(c, key).Result() + if err != nil || code != data.Code { + resp.ERROR(c, "验证码错误") + return + } + } else if data.RegWay == "mobile" { + key = CodeStorePrefix + data.Mobile code, err := h.redis.Get(c, key).Result() if err != nil || code != data.Code { resp.ERROR(c, "验证码错误") @@ -106,7 +115,17 @@ func (h *UserHandler) Register(c *gin.Context) { // check if the username is existing var item model.User - res := h.DB.Where("username = ?", data.Username).First(&item) + session := h.DB.Session(&gorm.Session{}) + if data.Mobile != "" { + session = session.Where("mobile = ?", data.Mobile) + data.Username = data.Mobile + } else if data.Email != "" { + session = session.Where("email = ?", data.Email) + data.Username = data.Email + } else if data.Username != "" { + session = session.Where("username = ?", data.Username) + } + session.First(&item) if item.Id > 0 { resp.ERROR(c, "该用户名已经被注册") return @@ -115,6 +134,8 @@ func (h *UserHandler) Register(c *gin.Context) { salt := utils.RandString(8) user := model.User{ Username: data.Username, + Mobile: data.Mobile, + Email: data.Email, Password: utils.GenPassword(data.Password, salt), Avatar: "/images/avatar/user.png", Salt: salt, @@ -134,7 +155,7 @@ func (h *UserHandler) Register(c *gin.Context) { user.Nickname = fmt.Sprintf("极客学长@%d", utils.RandomNumber(6)) } - res = h.DB.Create(&user) + res := h.DB.Create(&user) if res.Error != nil { resp.ERROR(c, "保存数据失败") logger.Error(res.Error) diff --git a/api/store/model/user.go b/api/store/model/user.go index bc2bafec..6a6e5829 100644 --- a/api/store/model/user.go +++ b/api/store/model/user.go @@ -4,6 +4,8 @@ type User struct { BaseModel Username string Nickname string + Email string + Mobile string Password string Avatar string Salt string // 密码盐 diff --git a/api/store/vo/user.go b/api/store/vo/user.go index 8e0faabe..06d9d55d 100644 --- a/api/store/vo/user.go +++ b/api/store/vo/user.go @@ -4,6 +4,8 @@ type User struct { BaseVo Username string `json:"username"` Nickname string `json:"nickname"` + Mobile string `json:"mobile"` + Email string `json:"email"` Avatar string `json:"avatar"` Salt string `json:"salt"` // 密码盐 Power int `json:"power"` // 剩余算力 diff --git a/web/src/assets/css/login.styl b/web/src/assets/css/login.styl index bf8b6c49..57d11521 100644 --- a/web/src/assets/css/login.styl +++ b/web/src/assets/css/login.styl @@ -96,7 +96,8 @@ font-size 20px background: #E9F1F6; padding: 8px; - border-radius: 50%; + border-radius: 50% + cursor pointer } .iconfont.icon-wechat { color #0bc15f diff --git a/web/src/assets/css/member.styl b/web/src/assets/css/member.styl index 7147db4a..c1f61bb5 100644 --- a/web/src/assets/css/member.styl +++ b/web/src/assets/css/member.styl @@ -4,8 +4,6 @@ .el-dialog { .el-dialog__body { - padding-top 10px - .pay-container { .amount { text-align center diff --git a/web/src/components/ResetAccount.vue b/web/src/components/BindMobile.vue similarity index 73% rename from web/src/components/ResetAccount.vue rename to web/src/components/BindMobile.vue index 04446884..9fa4d54e 100644 --- a/web/src/components/ResetAccount.vue +++ b/web/src/components/BindMobile.vue @@ -6,14 +6,12 @@ :before-close="close" :title="title" > -
- -

当前绑定账号:{{ username }},只允许使绑定有效的手机号或者邮箱地址作为登录账号。

-
+
+
当前已绑手机号:{{ mobile }}
- - + + @@ -21,7 +19,7 @@ - + @@ -44,26 +42,31 @@ import SendMsg from "@/components/SendMsg.vue"; import {ElMessage} from "element-plus"; import {httpPost} from "@/utils/http"; import {validateEmail, validateMobile} from "@/utils/validate"; +import {checkSession} from "@/store/cache"; const props = defineProps({ show: Boolean, - username: String }); const showDialog = computed(() => { return props.show }) -const title = ref('重置登录账号') +const title = ref('绑定手机') +const mobile = ref('') const form = ref({ - username: '', + mobile: '', code: '' }) +checkSession().then(user => { + mobile.value = user.mobile +}) + const emits = defineEmits(['hide']); const save = () => { - if (!validateMobile(form.value.username) && !validateEmail(form.value.username)) { + if (!validateMobile(form.value.mobile) && !validateEmail(form.value.mobile)) { return ElMessage.error("请输入合法的手机号/邮箱地址") } if (form.value.code === '') { @@ -87,7 +90,15 @@ const close = function () { ")}catch(l){console&&console.log(l)}}t=function(){var l,c=document.createElement("div");c.innerHTML=a._iconfont_svg_string_4125778,(c=c.getElementsByTagName("svg")[0])&&(c.setAttribute("aria-hidden","true"),c.style.position="absolute",c.style.width=0,c.style.height=0,c.style.overflow="hidden",c=c,(l=document.body).firstChild?m(c,l.firstChild):l.appendChild(c))},document.addEventListener?~["complete","loaded","interactive"].indexOf(document.readyState)?setTimeout(t,0):(h=function(){document.removeEventListener("DOMContentLoaded",h,!1),t()},document.addEventListener("DOMContentLoaded",h,!1)):document.attachEvent&&(i=t,o=a.document,z=!1,p(),o.onreadystatechange=function(){"complete"==o.readyState&&(o.onreadystatechange=null,s())})}function s(){z||(z=!0,i())}function p(){try{o.documentElement.doScroll("left")}catch(l){return void setTimeout(p,50)}s()}}(window); \ No newline at end of file +window._iconfont_svg_string_4125778='',function(a){var l=(l=document.getElementsByTagName("script"))[l.length-1],c=l.getAttribute("data-injectcss"),l=l.getAttribute("data-disable-injectsvg");if(!l){var t,h,i,o,z,m=function(l,c){c.parentNode.insertBefore(l,c)};if(c&&!a.__iconfont__svg__cssinject__){a.__iconfont__svg__cssinject__=!0;try{document.write("")}catch(l){console&&console.log(l)}}t=function(){var l,c=document.createElement("div");c.innerHTML=a._iconfont_svg_string_4125778,(c=c.getElementsByTagName("svg")[0])&&(c.setAttribute("aria-hidden","true"),c.style.position="absolute",c.style.width=0,c.style.height=0,c.style.overflow="hidden",c=c,(l=document.body).firstChild?m(c,l.firstChild):l.appendChild(c))},document.addEventListener?~["complete","loaded","interactive"].indexOf(document.readyState)?setTimeout(t,0):(h=function(){document.removeEventListener("DOMContentLoaded",h,!1),t()},document.addEventListener("DOMContentLoaded",h,!1)):document.attachEvent&&(i=t,o=a.document,z=!1,p(),o.onreadystatechange=function(){"complete"==o.readyState&&(o.onreadystatechange=null,s())})}function s(){z||(z=!0,i())}function p(){try{o.documentElement.doScroll("left")}catch(l){return void setTimeout(p,50)}s()}}(window); \ No newline at end of file diff --git a/web/src/assets/iconfont/iconfont.json b/web/src/assets/iconfont/iconfont.json index 5fbfb566..0d177ae5 100644 --- a/web/src/assets/iconfont/iconfont.json +++ b/web/src/assets/iconfont/iconfont.json @@ -5,6 +5,20 @@ "css_prefix_text": "icon-", "description": "", "glyphs": [ + { + "icon_id": "15838472", + "name": "email", + "font_class": "email", + "unicode": "e670", + "unicode_decimal": 58992 + }, + { + "icon_id": "6151052", + "name": "mobile-alt", + "font_class": "mobile", + "unicode": "e79a", + "unicode_decimal": 59290 + }, { "icon_id": "15617554", "name": "drag", diff --git a/web/src/assets/iconfont/iconfont.ttf b/web/src/assets/iconfont/iconfont.ttf index 887cbd6a24ca7db515cb29a401879dea262a07cf..6e879bd8f69adff317cf1cc134654c4ea36e1e19 100644 GIT binary patch delta 2150 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 diff --git a/web/src/assets/iconfont/iconfont.woff b/web/src/assets/iconfont/iconfont.woff index 79f8c16da438c36babcbc38990bc029405545765..ef68b85ff696645d27cfec892543464f98cafe45 100644 GIT binary patch delta 18279 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 delta 18087 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 CM$BaZ literal 16108 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 yNy`ywTnNqGg_U + +
+
当前已绑定邮箱:{{ email }}
+ + + + + + + + + + + + + + + + +
+ + +
+ + + + + \ No newline at end of file diff --git a/web/src/components/BindMobile.vue b/web/src/components/BindMobile.vue index 9fa4d54e..41eceb3f 100644 --- a/web/src/components/BindMobile.vue +++ b/web/src/components/BindMobile.vue @@ -2,24 +2,24 @@
-
当前已绑手机号:{{ mobile }}
+
当前已绑手机号:{{ mobile }}
- + - + - - + + @@ -37,12 +37,11 @@ diff --git a/web/src/components/LoginDialog.vue b/web/src/components/LoginDialog.vue index c04da964..9c9de180 100644 --- a/web/src/components/LoginDialog.vue +++ b/web/src/components/LoginDialog.vue @@ -66,7 +66,7 @@ @@ -249,6 +249,8 @@ import {arrayContains} from "@/utils/libs"; import {getSystemInfo} from "@/store/cache"; import Captcha from "@/components/Captcha.vue"; import ResetPass from "@/components/ResetPass.vue"; +import {setRoute} from "@/store/system"; +import {useRouter} from "vue-router"; // eslint-disable-next-line no-undef const props = defineProps({ @@ -282,9 +284,10 @@ const emits = defineEmits(['hide', 'success']); const action = ref("login") const enableVerify = ref(false) const showResetPass = ref(false) +const router = useRouter() onMounted(() => { - const returnURL = `${location.protocol}//${location.host}/login/callback` + const returnURL = `${location.protocol}//${location.host}/login/callback?action=login` httpGet("/api/user/clogin?return_url="+returnURL).then(res => { wechatLoginURL.value = res.data.url }).catch(e => { diff --git a/web/src/components/RedeemVerify.vue b/web/src/components/RedeemVerify.vue index 4b173239..a11e4ebe 100644 --- a/web/src/components/RedeemVerify.vue +++ b/web/src/components/RedeemVerify.vue @@ -2,7 +2,6 @@ { canSend.value = false httpPost('/api/sms/code', {receiver: props.receiver, key: data.key, dots: data.dots, x:data.x}).then(() => { showMessageOK('验证码发送成功') - let time = 120 + let time = 60 btnText.value = time const handler = setInterval(() => { time = time - 1 diff --git a/web/src/components/ThirdLogin.vue b/web/src/components/ThirdLogin.vue new file mode 100644 index 00000000..cbfe9a9d --- /dev/null +++ b/web/src/components/ThirdLogin.vue @@ -0,0 +1,93 @@ + + + + + \ No newline at end of file diff --git a/web/src/store/system.js b/web/src/store/system.js index 6b6eee80..2c6c15ae 100644 --- a/web/src/store/system.js +++ b/web/src/store/system.js @@ -6,6 +6,7 @@ // * +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ import Storage from "good-storage"; +import {useRouter} from "vue-router"; const MOBILE_THEME = process.env.VUE_APP_KEY_PREFIX + "MOBILE_THEME" const ADMIN_THEME = process.env.VUE_APP_KEY_PREFIX + "ADMIN_THEME" @@ -62,4 +63,12 @@ export function FormatFileSize(bytes) { const sizes = ['Bytes', 'KiB', 'MiB', 'GiB', 'TiB', 'PiB']; const i = Math.floor(Math.log(bytes) / Math.log(k)); return parseFloat((bytes / Math.pow(k, i)).toFixed(2)) + ' ' + sizes[i]; +} + +export function setRoute(path) { + Storage.set(process.env.VUE_APP_KEY_PREFIX + 'ROUTE_',path) +} + +export function getRoute() { + return Storage.get(process.env.VUE_APP_KEY_PREFIX + 'ROUTE_') } \ No newline at end of file diff --git a/web/src/views/Login.vue b/web/src/views/Login.vue index 6545274a..fea058da 100644 --- a/web/src/views/Login.vue +++ b/web/src/views/Login.vue @@ -114,7 +114,7 @@ onMounted(() => { }).catch(() => { }) - const returnURL = `${location.protocol}//${location.host}/login/callback` + const returnURL = `${location.protocol}//${location.host}/login/callback?action=login` httpGet("/api/user/clogin?return_url="+returnURL).then(res => { wechatLoginURL.value = res.data.url }).catch(e => { diff --git a/web/src/views/LoginCallback.vue b/web/src/views/LoginCallback.vue index d6d4573b..3d089a26 100644 --- a/web/src/views/LoginCallback.vue +++ b/web/src/views/LoginCallback.vue @@ -39,9 +39,10 @@ import {useRouter} from "vue-router" import {ElMessage, ElMessageBox} from "element-plus"; import {httpGet} from "@/utils/http"; import {setUserToken} from "@/store/session"; -import {isMobile} from "@/utils/libs"; import Clipboard from "clipboard"; import {showMessageError, showMessageOK} from "@/utils/dialog"; +import {getRoute} from "@/store/system"; +import {checkSession, removeUserInfo} from "@/store/cache"; const winHeight = ref(window.innerHeight) const loading = ref(true) @@ -52,12 +53,25 @@ const password = ref('') const code = router.currentRoute.value.query.code +const action = router.currentRoute.value.query.action if (code === "") { ElMessage.error({message: "登录失败:code 参数不能为空",duration: 2000, onClose: () => router.push("/")}) } else { + checkSession().then(user => { + // bind user + doLogin(user.id) + }).catch(() => { + doLogin(0) + }) +} + +const doLogin = (userId) => { // 发送请求获取用户信息 - httpGet("/api/user/clogin/callback",{login_type: "wx",code: code}).then(res => { - setUserToken(res.data.token) + httpGet("/api/user/clogin/callback",{login_type: "wx",code: code, action:action, user_id: userId}).then(res => { + removeUserInfo() + if (res.data.token) { + setUserToken(res.data.token) + } if (res.data.username) { username.value = res.data.username password.value = res.data.password @@ -96,11 +110,7 @@ onUnmounted(() => { const finishLogin = () => { show.value = false - if (isMobile()) { - router.push('/mobile') - } else { - router.push('/chat') - } + router.push(getRoute()) } diff --git a/web/src/views/Member.vue b/web/src/views/Member.vue index 3a1475f4..fcf359f9 100644 --- a/web/src/views/Member.vue +++ b/web/src/views/Member.vue @@ -7,13 +7,19 @@ - 修改密码 + 绑定邮箱 绑定手机 + + 第三方登录 + + + 修改密码 + - 兑换码核销 + 卡密兑换 @@ -95,6 +101,9 @@ + + + Date: Mon, 19 Aug 2024 06:42:53 +0800 Subject: [PATCH 08/34] fixed styles --- web/src/assets/css/chat-plus.css | 534 ++++++++++++++---------------- web/src/assets/css/chat-plus.styl | 3 +- web/src/views/ChatPlus.vue | 10 +- 3 files changed, 253 insertions(+), 294 deletions(-) diff --git a/web/src/assets/css/chat-plus.css b/web/src/assets/css/chat-plus.css index 8a231ae8..aa695bf9 100644 --- a/web/src/assets/css/chat-plus.css +++ b/web/src/assets/css/chat-plus.css @@ -1,378 +1,334 @@ #app { - height: 100%; + height: 100%; } - #app .chat-page { - height: 100%; + height: 100%; } - #app .chat-page .el-aside { - background-color: #252526; + padding: 10px; + width: var(--el-aside-width, 320px); } - -#app .chat-page .el-aside .title-box { - padding: 6px 10px; - display: flex; - color: #fff; - font-size: 20px; -} - -#app .chat-page .el-aside .title-box span { - padding-top: 5px; - padding-left: 10px; -} - #app .chat-page .el-aside .chat-list { - display: flex; - flex-flow: column; - background-color: #28292a; - border-top: 1px solid #2f3032; - border-right: 1px solid #2f3032; + display: flex; + flex-flow: column; + border-radius: 10px; + padding: 10px 0; } - #app .chat-page .el-aside .chat-list .search-box { - flex-wrap: wrap; - padding: 10px 15px; + flex-wrap: wrap; + padding: 10px 0; } - -#app .chat-page .el-aside .chat-list .search-box .el-input__wrapper { - background-color: #363535; - box-shadow: none; +#app .chat-page .el-aside .chat-list .search-box .search-input { + --el-input-bg-color: #363535; + --el-input-border-color: #464545; + --el-input-focus-border-color: #47fff1; + --el-input-hover-border-color: #2da39a; + box-shadow: none; } - #app .chat-page .el-aside .chat-list ::-webkit-scrollbar { - width: 0; - height: 0; - background-color: transparent; + width: 0; + height: 0; + background-color: transparent; } - #app .chat-page .el-aside .chat-list .content { - width: 100%; - overflow-y: scroll; + width: 100%; + overflow-y: scroll; } - #app .chat-page .el-aside .chat-list .content .chat-list-item { - display: flex; - width: 100%; - justify-content: flex-start; - padding: 8px 12px; - cursor: pointer; + display: flex; + width: 100%; + justify-content: flex-start; + padding: 8px 12px; + cursor: pointer; + border: 1px solid #3c3c3c; + margin-bottom: 6px; + border-radius: 5px; } - #app .chat-page .el-aside .chat-list .content .chat-list-item:hover { - background-color: #343540; + background-color: #343540; } - #app .chat-page .el-aside .chat-list .content .chat-list-item .avatar { - width: 28px; - height: 28px; - border-radius: 50%; + width: 32px; + height: 32px; + border-radius: 50%; } - #app .chat-page .el-aside .chat-list .content .chat-list-item .chat-title-input { - font-size: 14px; - margin-top: 4px; - margin-left: 10px; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; - width: 190px; + font-size: 14px; + margin-top: 4px; + margin-left: 10px; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + width: 190px; } - #app .chat-page .el-aside .chat-list .content .chat-list-item .chat-title { - color: #c1c1c1; - padding: 5px 10px; - max-width: 220px; - font-size: 14px; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; + color: #c1c1c1; + padding: 5px 10px; + max-width: 220px; + font-size: 14px; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; } - -#app .chat-page .el-aside .chat-list .content .chat-list-item .btn { - display: none; - position: absolute; - right: 2px; - top: 16px; - color: #fff; +#app .chat-page .el-aside .chat-list .content .chat-list-item .chat-opt { + position: absolute; + right: 2px; + top: 16px; + color: #fff; } - -#app .chat-page .el-aside .chat-list .content .chat-list-item .btn .el-icon { - margin-right: 8px; +#app .chat-page .el-aside .chat-list .content .chat-list-item .chat-opt .el-dropdown-link { + color: #fff; +} +#app .chat-page .el-aside .chat-list .content .chat-list-item .chat-opt .el-icon { + margin-right: 8px; } - #app .chat-page .el-aside .chat-list .content .chat-list-item.active { - background-color: #343540; + background-color: #343540; + border-color: #21aa93; } - -#app .chat-page .el-aside .chat-list .content .chat-list-item.active .btn { - display: inline; -} - #app .chat-page .el-aside .tool-box { - display: flex; - justify-content: flex-end; - align-items: center; - padding: 0 20px 10px 20px; - border-top: 1px solid #3c3c3c; + display: flex; + justify-content: center; + padding-top: 12px; + border-top: 1px solid #3c3c3c; } - -#app .chat-page .el-aside .tool-box .user-info { - width: 100%; - padding-top: 10px; +#app .chat-page .el-aside .tool-box .iconfont { + margin-right: 5px; } - -#app .chat-page .el-aside .tool-box .user-info .el-dropdown-link { - width: 100%; - cursor: pointer; - display: flex; -} - -#app .chat-page .el-aside .tool-box .user-info .el-dropdown-link .el-image { - width: 20px; - height: 20px; - border-radius: 5px; -} - -#app .chat-page .el-aside .tool-box .user-info .el-dropdown-link .username { - display: flex; - line-height: 22px; - width: 230px; - padding-left: 10px; -} - -#app .chat-page .el-aside .tool-box .user-info .el-dropdown-link .el-icon { - color: #ccc; - line-height: 24px; -} - #app .chat-page .el-main { - overflow: hidden; - --el-main-padding: 0; - margin: 0; + overflow: hidden; + --el-main-padding: 0; + margin: 0; } - -#app .chat-page .el-main .chat-head { - width: 100%; - height: 50px; - background-color: #28292a; +#app .chat-page .el-main .chat-container { + min-width: 0; + flex: 1; + background-color: var(--el-bg-color); + color: var(--el-text-color-primary); } - -#app .chat-page .el-main .chat-head .chat-config { - display: flex; - flex-direction: row; - align-items: center; - justify-content: center; - padding-top: 10px; +#app .chat-page .el-main .chat-container .chat-config { + height: 30px; + padding: 10px 30px; + display: flex; + justify-content: center; + justify-items: center; + border-bottom: 1px solid #d9d9e3; } - -#app .chat-page .el-main .chat-head .chat-config .role-select-label { - color: #fff; +#app .chat-page .el-main .chat-container .chat-config .role-select-label { + color: #fff; } - -#app .chat-page .el-main .chat-head .chat-config .el-select { - max-width: 150px; - margin-right: 10px; +#app .chat-page .el-main .chat-container .chat-config .el-select { + max-width: 150px; + margin-right: 10px; } - -#app .chat-page .el-main .chat-head .chat-config .role-select { - max-width: 130px; +#app .chat-page .el-main .chat-container .chat-config .role-select { + max-width: 130px; } - -#app .chat-page .el-main .chat-head .chat-config .el-button .el-icon { - margin-right: 5px; +#app .chat-page .el-main .chat-container .chat-config .setting { + padding: 5px; + border-radius: 5px; + cursor: pointer; } - -#app .chat-page .el-main .chat-head .iconfont { - margin-right: 5px; +#app .chat-page .el-main .chat-container .chat-config .setting .iconfont { + font-size: 18px; + color: #19c37d; } - -#app .chat-page .el-main .chat-head .is-circle { - margin-left: 5px; +#app .chat-page .el-main .chat-container .chat-config .setting:hover { + background: #d5fad3; } - -#app .chat-page .el-main .chat-head .is-circle .iconfont { - margin-right: 0; +#app .chat-page .el-main .chat-container .chat-config .el-button .el-icon { + margin-right: 5px; } - -#app .chat-page .el-main .chat-box { - min-width: 0; - flex: 1; - background-color: #fff; - border-left: 1px solid #4f4f4f; +#app .chat-page .el-main .chat-container #container { + overflow: hidden; + width: 100%; + position: relative; } - -#app .chat-page .el-main .chat-box #container { - overflow: hidden; - width: 100%; +#app .chat-page .el-main .chat-container #container ::-webkit-scrollbar { + width: 12px /* 滚动条宽度 */; + background: #f1f1f1; } - -#app .chat-page .el-main .chat-box #container ::-webkit-scrollbar { - width: 0; - height: 0; - background-color: transparent; +#app .chat-page .el-main .chat-container #container ::-webkit-scrollbar-track { + background-color: #e1e1e1; } - -#app .chat-page .el-main .chat-box #container .chat-box { - overflow-y: scroll; - --content-font-size: 16px; - --content-color: #c1c1c1; - font-family: 'Microsoft YaHei', '微软雅黑', Arial, sans-serif; - padding: 0 0 50px 0; +#app .chat-page .el-main .chat-container #container ::-webkit-scrollbar-thumb { + background-color: #c1c1c1; + border-radius: 12px; } - -#app .chat-page .el-main .chat-box #container .chat-box .chat-line { - font-size: 14px; - display: flex; - align-items: flex-start; +#app .chat-page .el-main .chat-container #container ::-webkit-scrollbar-thumb:hover { + background-color: #a8a8a8; } - -#app .chat-page .el-main .chat-box #container .re-generate { - position: relative; - display: flex; - justify-content: center; +#app .chat-page .el-main .chat-container #container .chat-box { + overflow-y: auto; + --content-font-size: 16px; + --content-color: #c1c1c1; + font-family: 'Microsoft YaHei', '微软雅黑', Arial, sans-serif; + padding: 0 0 50px 0; } - -#app .chat-page .el-main .chat-box #container .re-generate .btn-box { - position: absolute; - bottom: 10px; +#app .chat-page .el-main .chat-container #container .chat-box .chat-line { + font-size: 14px; + display: flex; + align-items: flex-start; } - -#app .chat-page .el-main .chat-box #container .re-generate .btn-box .el-button .el-icon { - margin-right: 5px; +#app .chat-page .el-main .chat-container #container .input-box { + position: absolute; + bottom: 0; + width: 100%; } - -#app .chat-page .el-main .chat-box #container .input-box { - background-color: #fff; - display: flex; - justify-content: center; - align-items: center; - box-shadow: 0 2px 15px rgba(0, 0, 0, 0.1); - padding: 0 15px; +#app .chat-page .el-main .chat-container #container .input-box .input-box-inner { + display: flex; + background-color: #fff; + justify-content: center; + align-items: center; + box-shadow: 0 2px 15px rgba(0,0,0,0.1); + padding: 0 15px; } - -#app .chat-page .el-main .chat-box #container .input-box .input-container { - width: 100%; - margin: 0; - border: none; - padding: 10px 0; - display: flex; - justify-content: center; - position: relative; +#app .chat-page .el-main .chat-container #container .input-box .input-box-inner .tool-item { + margin-right: 15px; + border-radius: 6px; + color: #19c37d; + display: flex; + justify-content: center; + justify-items: center; + padding: 6px; + cursor: pointer; + background: #f2f2f2; } - -#app .chat-page .el-main .chat-box #container .input-box .input-container .el-textarea .el-textarea__inner::-webkit-scrollbar { - width: 0; - height: 0; +#app .chat-page .el-main .chat-container #container .input-box .input-box-inner .tool-item:hover { + background: #d5fad3; } - -#app .chat-page .el-main .chat-box #container .input-box .input-container .select-file { - position: absolute; - right: 48px; - top: 20px; +#app .chat-page .el-main .chat-container #container .input-box .input-box-inner .tool-item .iconfont { + font-size: 24px; } - -#app .chat-page .el-main .chat-box #container .input-box .input-container .send-btn { - position: absolute; - right: 12px; - top: 20px; +#app .chat-page .el-main .chat-container #container .input-box .input-box-inner .input-body { + width: 100%; + margin: 0; + border: none; + padding: 10px 0; + display: flex; + justify-content: center; + position: relative; } - -#app .chat-page .el-main .chat-box #container .input-box .input-container .send-btn .el-button { - padding: 8px 5px; - border-radius: 6px; - background: #19c37d; - color: #fff; - font-size: 20px; +#app .chat-page .el-main .chat-container #container .input-box .input-box-inner .input-body .hide-div { + white-space: pre-wrap; /* 保持文本换行 */ + visibility: hidden; /* 隐藏 div */ + position: absolute; /* 脱离文档流 */ + line-height: 24px; + font-size: 14px; + word-wrap: break-word; /* 允许单词换行 */ + overflow-wrap: break-word; /* 允许长单词换行,适用于现代浏览器 */ } - -#app .chat-page .el-main .chat-box #container::-webkit-scrollbar { - width: 0; - height: 0; +#app .chat-page .el-main .chat-container #container .input-box .input-box-inner .input-body .input-border { + display: flex; + width: 100%; + overflow: hidden; + border: 2px solid #21aa93; + border-radius: 10px; + padding: 10px; + background-color: #f4f4f4; +} +#app .chat-page .el-main .chat-container #container .input-box .input-box-inner .input-body .input-border .input-inner { + display: flex; + flex-flow: column; + width: 100%; +} +#app .chat-page .el-main .chat-container #container .input-box .input-box-inner .input-body .input-border .input-inner .file-list { + padding-bottom: 10px; +} +#app .chat-page .el-main .chat-container #container .input-box .input-box-inner .input-body .input-border .input-inner .prompt-input::-webkit-scrollbar { + width: 0; + height: 0; +} +#app .chat-page .el-main .chat-container #container .input-box .input-box-inner .input-body .input-border .input-inner .prompt-input { + width: 100%; + line-height: 24px; + border: none; + font-size: 14px; + background: none; + resize: none; + white-space: pre-wrap; /* 保持文本换行 */ + word-wrap: break-word; /* 允许单词换行 */ + overflow-wrap: break-word; /* 允许长单词换行,适用于现代浏览器 */ +} +#app .chat-page .el-main .chat-container #container .input-box .input-box-inner .input-body .input-border .send-btn { + width: 32px; + margin-left: 10px; +} +#app .chat-page .el-main .chat-container #container .input-box .input-box-inner .input-body .input-border .send-btn .el-button { + padding: 8px 5px; + border-radius: 6px; + font-size: 20px; +} +#app .chat-page .el-main .chat-container #container::-webkit-scrollbar { + width: 0; + height: 0; } - #app .el-message-box { - width: 90%; - max-width: 420px; + width: 90%; + max-width: 420px; } - #app .el-message { - min-width: 100px; - max-width: 600px; + min-width: 100px; + max-width: 600px; } - .el-select-dropdown__wrap .el-select-dropdown__item .role-option { - display: flex; - flex-flow: row; - margin-top: 8px; + display: flex; + flex-flow: row; + margin-top: 8px; } - .el-select-dropdown__wrap .el-select-dropdown__item .role-option .el-image { - width: 20px; - height: 20px; - border-radius: 50%; + width: 20px; + height: 20px; + border-radius: 50%; } - .el-select-dropdown__wrap .el-select-dropdown__item .role-option span { - margin-left: 5px; - height: 20px; - line-height: 20px; + margin-left: 5px; + height: 20px; + line-height: 20px; } - .account { - display: flex; - background-color: #90ffc2; - color: #000; - width: 100%; - border-radius: 10px; - padding: 10px; + display: flex; + background-color: #90ffc2; + color: #000; + width: 100%; + border-radius: 10px; + padding: 10px; } - .account .vip-logo .el-image { - width: 40px; - height: 40px; - border-radius: 100%; - background-color: #fff; + width: 40px; + height: 40px; + border-radius: 100%; + background-color: #fff; } - .account .vip-info { - padding: 0 10px 0 10px; + padding: 0 10px 0 10px; } - .account .vip-info h4, .account .vip-info p { - margin: 0; + margin: 0; } - .account .vip-info h4 { - font-weight: bold; - font-size: 16px; + font-weight: bold; + font-size: 16px; } - .account .vip-info p { - color: #333; + color: #333; } - .account .pay-btn { - width: 100%; - display: flex; - justify-content: right; - align-items: center; + width: 100%; + display: flex; + justify-content: right; + align-items: center; } - .el-overlay-dialog .el-dialog .el-dialog__body .notice { - padding: 0 20px 0 20px; - line-height: 1.8; + line-height: 1.8; + font-size: 16px; + overflow: auto; + height: 100%; } - -.el-overlay-dialog .el-dialog .el-dialog__body .notice .el-text { - font-size: 16px; -} - .dialog-service { - text-align: center; + text-align: center; } - .dialog-service .el-image { - width: 360px; + width: 360px; } diff --git a/web/src/assets/css/chat-plus.styl b/web/src/assets/css/chat-plus.styl index 1c4a22c1..b1dbce43 100644 --- a/web/src/assets/css/chat-plus.styl +++ b/web/src/assets/css/chat-plus.styl @@ -412,9 +412,10 @@ $borderColor = #4676d0; .el-dialog { .el-dialog__body { .notice { - //padding 0 20px 0 20px line-height 1.8 font-size 16px + overflow auto + height 100% } } } diff --git a/web/src/views/ChatPlus.vue b/web/src/views/ChatPlus.vue index 579fe8c2..1bb04204 100644 --- a/web/src/views/ChatPlus.vue +++ b/web/src/views/ChatPlus.vue @@ -184,11 +184,13 @@ >
- -

- 我知道了,不再显示 -

+ +
From 8d7c028ca8e64f8c17af52a539e2bd312af01499 Mon Sep 17 00:00:00 2001 From: RockYang Date: Mon, 19 Aug 2024 12:05:00 +0800 Subject: [PATCH 09/34] refactor reset password functions --- CHANGELOG.md | 3 +- api/handler/user_handler.go | 30 ++++++--- web/src/components/ResetPass.vue | 82 ++++++++++++++++-------- web/src/views/Login.vue | 3 +- web/src/views/mobile/Profile.vue | 2 +- web/src/views/mobile/pages/ImageDall.vue | 3 +- 6 files changed, 82 insertions(+), 41 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 77011921..0abf61b3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,7 +2,8 @@ ## v4.1.3 * 功能优化:VIP 会员在进行任何操作都不扣减算力,以实现会员周卡月卡功能 -* 功能优化:登录注册页面可以自定义是否启用行为验证码功能 +* 功能优化:重构用户登录模块,给所有的登录组件增加行为验证码功能,支持用户绑定手机,邮箱和微信 +* 功能优化:重构找回密码模块,支持通过手机或者邮箱找回密码 * 功能优化:管理后台给可以拖动排序的组件添加拖动图标 * 功能新增:支持 Luma 文生视频功能 diff --git a/api/handler/user_handler.go b/api/handler/user_handler.go index de96c80e..42ebd8c3 100644 --- a/api/handler/user_handler.go +++ b/api/handler/user_handler.go @@ -562,7 +562,9 @@ func (h *UserHandler) UpdatePass(c *gin.Context) { // ResetPass 找回密码 func (h *UserHandler) ResetPass(c *gin.Context) { var data struct { - Username string `json:"username"` + Type string `json:"type"` // 验证类别:mobile, email + Mobile string `json:"mobile"` // 手机号 + Email string `json:"email"` // 邮箱地址 Code string `json:"code"` // 验证码 Password string `json:"password"` // 新密码 } @@ -571,26 +573,36 @@ func (h *UserHandler) ResetPass(c *gin.Context) { return } + session := h.DB.Session(&gorm.Session{}) + var key string + if data.Type == "email" { + session = session.Where("email", data.Email) + key = CodeStorePrefix + data.Email + } else if data.Type == "mobile" { + session = session.Where("mobile", data.Email) + key = CodeStorePrefix + data.Mobile + } else { + resp.ERROR(c, "验证类别错误") + return + } var user model.User - res := h.DB.Where("username", data.Username).First(&user) - if res.Error != nil { + err := session.First(&user).Error + if err != nil { resp.ERROR(c, "用户不存在!") return } // 检查验证码 - key := CodeStorePrefix + data.Username code, err := h.redis.Get(c, key).Result() if err != nil || code != data.Code { - resp.ERROR(c, "短信验证码错误") + resp.ERROR(c, "验证码错误") return } password := utils.GenPassword(data.Password, user.Salt) - user.Password = password - res = h.DB.Updates(&user) - if res.Error != nil { - resp.ERROR(c) + err = h.DB.Model(&user).UpdateColumn("password", password).Error + if err != nil { + resp.ERROR(c, err.Error()) } else { h.redis.Del(c, key) resp.SUCCESS(c) diff --git a/web/src/components/ResetPass.vue b/web/src/components/ResetPass.vue index 0f6f9c4f..2dfe70e8 100644 --- a/web/src/components/ResetPass.vue +++ b/web/src/components/ResetPass.vue @@ -6,27 +6,44 @@ width="540px" :before-close="close" :title="title" + class="reset-pass-dialog" >
- - - - - -
- - -
- - + + + + + + + + + + + + + + + - - + + + + + + + + + + + + + + + + + - - -
@@ -65,7 +82,9 @@ const showDialog = computed(() => { const title = ref('重置密码') const form = ref({ - username: '', + mobile: '', + email: '', + type: 'mobile', code: '', password: '', repass: '' @@ -74,12 +93,12 @@ const form = ref({ const emits = defineEmits(['hide']); const save = () => { - if (!validateMobile(form.value.username) && !validateEmail(form.value.username)) { - return ElMessage.error("请输入正确的手机号码/邮箱地址"); - } if (form.value.code === '') { return ElMessage.error("请输入验证码"); } + if (form.value.password.length < 8) { + return ElMessage.error("密码长度必须大于8位"); + } if (form.value.repass !== form.value.password) { return ElMessage.error("两次输入密码不一致"); } @@ -101,15 +120,24 @@ const close = function () { From d000cc5a67c8ff7bb8bad9785ebbf1dea460e7cc Mon Sep 17 00:00:00 2001 From: RockYang Date: Fri, 23 Aug 2024 18:25:58 +0800 Subject: [PATCH 11/34] luma page video list component is ready --- api/core/types/config.go | 8 ++--- api/handler/user_handler.go | 26 ++++++++++------ api/store/leveldb.go | 12 ++------ web/.env.development | 2 +- web/public/images/logo.png | Bin 255786 -> 36201 bytes web/src/assets/css/home.styl | 2 ++ web/src/assets/css/index.styl | 8 +++++ web/src/assets/css/login.styl | 2 ++ web/src/assets/css/luma.styl | 49 ++++++++++++++++++++++++++---- web/src/store/cache.js | 8 ++--- web/src/views/Index.vue | 2 +- web/src/views/Luma.vue | 38 ++++++++++++++++++++--- web/src/views/PowerLog.vue | 6 ++-- web/src/views/Register.vue | 2 ++ web/src/views/admin/Login.vue | 2 ++ web/src/views/admin/SysConfig.vue | 11 +++++++ 16 files changed, 136 insertions(+), 42 deletions(-) diff --git a/api/core/types/config.go b/api/core/types/config.go index 07d19ff1..05dec367 100644 --- a/api/core/types/config.go +++ b/api/core/types/config.go @@ -131,10 +131,10 @@ func (c RedisConfig) Url() string { } type SystemConfig struct { - Title string `json:"title,omitempty"` // 网站标题 - Slogan string `json:"slogan,omitempty"` // 网站 slogan - AdminTitle string `json:"admin_title,omitempty"` // 管理后台标题 - Logo string `json:"logo,omitempty"` + Title string `json:"title,omitempty"` // 网站标题 + Slogan string `json:"slogan,omitempty"` // 网站 slogan + AdminTitle string `json:"admin_title,omitempty"` // 管理后台标题 + Logo string `json:"logo,omitempty"` // 方形 Logo InitPower int `json:"init_power,omitempty"` // 新用户注册赠送算力值 DailyPower int `json:"daily_power,omitempty"` // 每日赠送算力 InvitePower int `json:"invite_power,omitempty"` // 邀请新用户赠送算力值 diff --git a/api/handler/user_handler.go b/api/handler/user_handler.go index 42ebd8c3..837fecc3 100644 --- a/api/handler/user_handler.go +++ b/api/handler/user_handler.go @@ -452,18 +452,24 @@ func (h *UserHandler) CLoginCallback(c *gin.Context) { // Session 获取/验证会话 func (h *UserHandler) Session(c *gin.Context) { user, err := h.GetLoginUser(c) - if err == nil { - var userVo vo.User - err := utils.CopyObject(user, &userVo) - if err != nil { - resp.ERROR(c) - } - userVo.Id = user.Id - resp.SUCCESS(c, userVo) - } else { - resp.NotAuth(c) + if err != nil { + resp.NotAuth(c, err.Error()) + return } + var userVo vo.User + err = utils.CopyObject(user, &userVo) + if err != nil { + resp.ERROR(c, err.Error()) + return + } + // 用户 VIP 到期 + if user.ExpiredTime > 0 && user.ExpiredTime < time.Now().Unix() { + h.DB.Model(&user).UpdateColumn("vip", false) + } + userVo.Id = user.Id + resp.SUCCESS(c, userVo) + } type userProfile struct { diff --git a/api/store/leveldb.go b/api/store/leveldb.go index 5de00425..ec9ca9f1 100644 --- a/api/store/leveldb.go +++ b/api/store/leveldb.go @@ -29,15 +29,9 @@ func NewLevelDB() (*LevelDB, error) { } func (db *LevelDB) Put(key string, value interface{}) error { - var byteData []byte - if v, ok := value.(string); ok { - byteData = []byte(v) - } else { - b, err := json.Marshal(value) - if err != nil { - return err - } - byteData = b + byteData, err := json.Marshal(value) + if err != nil { + return err } return db.driver.Put([]byte(key), byteData, nil) } diff --git a/web/.env.development b/web/.env.development index 90c5c327..1e54193a 100644 --- a/web/.env.development +++ b/web/.env.development @@ -1,6 +1,6 @@ VUE_APP_API_HOST=http://localhost:5678 VUE_APP_WS_HOST=ws://localhost:5678 -VUE_APP_USER=18575670125 +VUE_APP_USER=18888888888 VUE_APP_PASS=12345678 VUE_APP_ADMIN_USER=admin VUE_APP_ADMIN_PASS=admin123 diff --git a/web/public/images/logo.png b/web/public/images/logo.png index 78753b32dea7f535e9aeb293e2943566317df0bf..63f187ed4f387babb9505da12f8721eef195f166 100644 GIT binary patch literal 36201 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⁣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

-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 fv#?MX1PkN;D3E z58OIq=nkYLA%UHP2RVD>FiK`zm3v?Mr)(^T)GxbtSP>pVR#V4hB1lHcn7pr5t@5FY zl%PtDRo08iDGZThe^x?5vk)z*Ruo5wrq&*#sn8e0zz~%&#YLa~$To2)i1x^_HJB;O z^%*y=d0w{>`SSy3dG7(w8NdaHq*!LB5E+T43pBg8x&nUD4CK@}t0}ve z;icI7pv2L#n+?m6FotA;kg{|Ous1?j2%%()Gp`C)@=V02=8%>WWN9%gHuHWirtutY zuRYv`-*uz(ul$2|e&Kz&_I(29-+1ROKeQCqD#v48ThT6*4%YAN*pRD)6mCjWXYvMC zoQoXl;ES&~z`A<61P+%7T)VNJU_9R;ai58^YSr2`hxhJe1_ik5KNr}v5d^9#n?&en z!J0}SG(tD*Bq5*)4{3-&{tva(c`}all3aKkTz=v#PwkI0JL8D=K-_YKg+Oqr`noM} zL5QQ$Gs8z^zKlHfzy@FYkSlqp>zQ=|PU$o<_l}u54tmFW^mIwpw&v9A-Z-3Q+q1)o zQgb#>tbyfkotwRaYUa@h`!uoGpvIWb!r<)yI zwPU%Dje{8E=o|qR)|WTZ$!IoYZ9%^B=-QUAlDv`?x;Za<&8`T9bML#o! z-vu@XCBE*B76+Wv>RFgeJUWm7IZ|@whwN;rBs;VLN)Sm-Vxc_CNIFj~i)D_V9%Hm; zjj)K3AsstniAY8){pVsFE!-+N&fYpeoSReb`oIk{&tLbRw{3RZaG)d39DWFN>Tnto zEyxd)!P261Vi{0rOnOsNm=nYlH=UU5<6~eP10k55-Ix|hOO^S_T2kjc z-g~mIfJxY~j=xq)q?7)cM&f~ObqzVf)zAB--~aLZa+Ui8&TqVZ`^&`b=4Gd3s@>kU z;4&CF$%zB<#xGkVYqUWi2F&R}EcPkk{(%?Nym02G9;PL}oGa<;Ne!fvq`l>~Uj< zZVU0O5YKk#&?B)2b;J}a7>5ACHn$svgC4%+*I8-F4R2oBqA+ug zJ|!Z_b~4g$rQY;vKHAAxwj;FHm{thCsCGfXs z5i)~-Wxw9<<;rpS$}M0=S`fduc0NYJrBJIzMZCutC_>bZ7yZGX@gM%(53=Dq&}jL( z!BSG{$i|U%4jkFAp38)lK6ft_THQ-tQ`OTpcTCFupHS?kpEc%Lk$c_-L{vlL45||b zxjb)*9TV*BQhWaR&pw8_nVlO)uK232Wl)cciX(9BKGGH2aOCV$AGG3Z8QHWTLYt5IF@;MTZXY64Jo~6U=%BYF{n9_Ekj_` zk@3`k4-v(4b~|#?9Y8k@T7BnS=}AVs2PIlU1g8WU(^%!CFm;KTwmVCrnxxj4KsXXY zB#fbWa_6w791d5_grL!Kktee@V@T3(Stn_v^7?4VPE<9^h{giG8kHC=b7N)xGFH@Q z*neSO$WM7+nu$@Iu)KTwKB=}Z8k}EsX8D-qY`&)IN=C5OmQY(ul&48SCZRWJU{|jZ zRoF&&&f7oEiKN_F058AmG#@;>tjXikifD6cS8QD2)hiD`W4YSLWBYu~Zsx>d7z-s% z8%VKqg7!P*<-$lU>Y)u?$c%;M(4CD+pPU&G@D2{2R<2&oaASvP55eJehL3BwMGt3s z^mGSX9d7LL+Tqkn1j;Cul_yw?^V6?5#v|8EX{};1lb6VPr_3eb9m#{++=e`s5Wh)~ zR|^&(`^^1*1AB3d(8Yt$19R^5I_KWKRg+W4#;S(Z2;&OCOaQoj`SOzTw?pXC_qN|! zw)bM5aQ}tg2FRI;d#~rM)K3vaJ6`g;FX2bN@5h*{OBFLHAfg&McyxpHgKN81!~~#s zJwhhuF+`W_A6e^?Cc`t>y~QPO2SAEpK?$@I48xZ!kZG*BA;UnRss@JUxy6d zQYG?0j*HHftn8VGbgrfKjLBnrv~-@qY~%~wWLydmICQ*2)*{jk%r(-hG50D4_(-B< zK~qZDDWF*ho2lQ!5E(}cxeLK)T!^vQkAWssO4IoiwX^|tBuboWLV7>9vzv^2C%99`Gd=o!^?Kbhjup6hXPt8+AM#>F%U5!jGEyz=>P{)+RRz1l7s zod58BAODVpvXQwGG?tCLtM6JjVUA_a98%>_tL!l;q#%v~UHyh39kl@gz!V)AntF^l9;7mt6)f3P3=(2;@ zC&wQL0d!P6@Qf=j=OKM!vP9^eL&C_W_sp?E8#Cw4fhDQo3p3UtQ9ELjMX>i6?v_r^ zz3%T5?{waC&&MV+`8}`VR>51Lz`}_faRRC)1*iPw>D7Mj@=NM_U;f7CoY;Ui38)1r z8NXuF*Za%L7-TqR6B)F=rsfRQj^F)_7x1iSJ(n(!)T_zv8%;VobbOQf#;h>GyI8lC zNvawynS9%-iR;(Zq}57s+FVNjzqp%qJ%xxSpO2Q|TIoo+tpRfsc;^iZ)O9$MQCVDa zIcEf-2D&&f55m@~-$akqP&VRR^&X~8NFh_{`eRbNT6kKp>{cp;mLVjdmJ)hZ82t>& zId_C;vI3_vlWJ)_M<*=Dkn(P80%%hcvlC!@1a&yC5C?`Z7#Jr%883haE7}t*46M-g z7|78k;q8o~>1WPTaX^<^{rV&HwqWm;AuF&)(fG z8k}E!)7h^P0f|zg4a#PjsFzl|orrr%P7h`$C^3N9R+J}20oO5%!Uy99FZjqw-hDa{ z!VI*xo5s9|@`zBbS2t^8UlL2(S!#V|>2;qT@AoNlMwQBBz-Q_uj;Y#XjM?!NiJ^98 zq7uqWQIMecF&3u=P0#f3*&$r?rVbi_=<&g!L5xEk)C#F<2Rj};>(SF4;S_|0fwyR9 z>c<82!SmEBFXyn1XqNEQvF5CBhEuTw1RBh)L$*z(N0)X$&L=JJ-R=+Yeq!5xE1&|E zN(2dw#4BZN?6W3~Lk3+-N!$Z7phuYjGldyiUiteTr6b}+Z5|T1=lgX@8kb2A&o`py z|Gi4k*#ogL1RbLCtN-Jdc**a*1Rrt{8ry%C1u$~t_(A;KmlVp)Zk;Zpd;_gt z=CwARgWZo+Dp%%nIMC0Ov)kJ&!;mtHC6{RN$pm1#$0X89%hB#bZnrud{S6g7+O=XS-vu zSeoRniu1lOI3j{~-WZh$lXs4Fru)CL0NN}`d#28D=JwN9@4nc%+eLx%EAH8O+}VD9 zSd+Azfpo%Quk5t4og2rj?4)J3fE43Lez*#k8kLk}2Ngk`;JTzfk$RV6!_JOZE#@^` zPqt?ia;Bws`?p<`gG4Cm=a|$ZnSd1M!X!ESE`>s;1mPaGu0D44_8rM>5| zhY#VSNypA9qLG;sdgsm7EvbgIl43(GM56l6>?I3dOw-9~*){a{soh`Lmz5XP6=hO# zrF&^<3Ay?0zjkpNGAlJlnaNkx0XoT?`7bMJPT%ipA~j=FMSb5LUJ zixiXybZdi@GuI;;KrGI<4F$@+DXX0@ZHTfHdS3lkx0RS=Byz=KXm*^k*%K#>AvtoX#RTVcok3$MEg95o_L0C4BBaugR_^`jFgCVvBe`T*eMu^*RHf>>TerXGoW0kYbG$#sn9bT} zpL=hWP2Q@{t+V&qtC{WS$8UJ>SQ3K?RS}XXN7Fsl+!s1F7+sjg98W3=uamrzH!#tL+MtYKc@RtI%WdBWU; z(F7I(X>u%#WVAO(w0!0etZ2_Ta&)v}no`xcLkJbQu@zxbw`@wSpMBDCvz=9@ykFgd z@w*)ce(qmBD><+Zz$$~LRvdhaqq+OHEQR@pe&22*9NVV zIO>|V1uiPYF6q2fDG}dP7Afc>kQ_fvF2{8j%kd$DZ(GhflkS*yxx*2=O zLQDg!B6@j&TvM-hyl;5!wlhS7SS^Nr(`H4?1U-`#oo`YGtaXt(O`8wbY<8cLbOQ zo7h7lfljfG3{8DF$*#(l0a9Au8bkesE};age>;^I+Mq2FnQ}l z9w$;BAny5=% z@)@_7bPT$-K-2*$3S-XC3Ao3@-ylg`rU z<~k=d1}2oFJhE0;t81i3YH=u%NgoK>eYQO`2)grVp_h8G$$^N+DOxx+K=QXFCs(`jyuQ*yC5n@ZViaw4KLS0W1 z+;3jotDEr-CmtvLrgaHhKpH&wz~_F=4IXstxMk-2lb4RZ=3r;{jAnr;QT@U_=aoim z)uo08uW5~y5Grh2IkKwzBD$z;zt`oY>U-^d10tbrE~)34-Cu{w8HNOD@2{q(ZKUf2 zVkXD0DnVcBxVRFcn_!B6*F_IuvFMl*addf%-%bg|9J=Pe9leavomQ@NF8KUX zMyQy07dO39h^($&=a2jce}qAINRzu}oIxj577Jnj^p1mX*j?>aPA5dF6{i=fd&1xC z?h5RabFSJ?VIsr$91ER{fvD3a-O_Vu&jZs&({hJj{Nh!nXt5ds#9#4FrfhB@NSwVs zk)C*(uEunBBB`ynWOaq*N=|KA(9aj9w>^FG%dL(RpqbrgV$n; z3V*6J)~zWe)+Z&a!WE-+u=tHbXy)n|O#?1QSqVan3-Gaxq1ce@J;Pv3*c6+<-rhbj zM8MFfe`QoHn4Vv)9;k#{!>RFOKlR18Zh7q1F-!7;@B94$t)CXVnvDMyBZvJ^kZ!8PD!td*bq3drdjnGmqG0xHf3gI+ z<~SeeHoUZjUl?ZJX1jOGAa6T1E^CSPo@ebEQjyHcJtaCYPs#maWuX^s*>sPrRsp8? zKZ^NuROQj>G7}Rai6wrIimV}zLdXM50aoUdmK4w&Em&-w$VU_T$Z|Xb?$esofJ@fG z9kRpH(_kbPV1#Vgv|7?siX@Hw){UXm&3p3kav9}~?>p&N-SS)i{RR?m(bm+A#>N0$ zQ>OWOms&LGqE(ny7J^wy7Fk(nVqjuHVnJr%X79nZ?PB(hBnB}}xR|&HgoOr{+49~^ zV3Qj4Es}{O7HYqn-@8P4N2t-_7 zE*UpTE|z@cfv1qLARuT?-0}WzHfEA7Nb2@0mx(W4B!~qUDXF8;MKjcDem66;`Ezk5 zUQ(e<#8Sp&e&mE{%83#fX8(*)7vHpvg#B*&(vZ872WKfqDUk>yV3pS-NuU!t22_`5 z3J6PrMDpa?D7fZs&yZk&VH$n>a+yu?$MM}^Hux$$T<^ZWEh58^ga0Gv^<9@R{#dJP+MpI^P+sQDxiA#?$DFmIut|&LhPcDMJ$-B%!?ZP zn@XG1M1wNISrQt|lsh@zy<+K8C9gSognUWY8a0!oMS4$IYE@ED6;^3tRCAd)atH@U z6H`*sm>33IS!1$j=tk{aC^w>q7FR*N!hh4o02?tb^_0~$<1&}x?FNZ~DW{qT-r$kT znkf0>#WXI=;5dD6<*XbXtyr%|luV4FDo8_&)dgzGknf@jic(^LsMdp%j?G`q4b}Ya z5+Ds32@`uqhdlPre*E{`@PXZNOU(I`hvVH(PVtRJVlf7rJY`~Y0${epHx_*Pu1Y0R zeNdDXhUw2TiK~Bt`C^KcRlrBuq7Zt?x=*R9jHTP_k&q*%H}hnZeSwF(}-X`~C>nT<|2hBGbu z_(-0(1-AU~@)>jAu3nle|BTcHjDZ>h&Xr7BnPuQ;YeEt+#~erhS}!L?&CFXe#yvsDo>Gi?+Y1pl3xAYp8>i;%5z_EH&jFJNWF zMS+&{T&`-*7XoP-_)q`vA7@+-q%^q(Y&pPLGa8lMy`3VR*k8qozs_D=f~xFXu{3Q8 zSk2FBN}5_4;Njynut^H`eU0_#Mn~ssSTj8F%n_@+V@&n<^^pGsgJSZUp%@UslNt3!UZ27c$MbA0#h_dIvy6OZ4${fYDAmYDPB zFCD&j8Wv}YM>y0#syP!bNAWkeN!iezq}lfEtJFoR^GD5&zDUFjY(xs9PA zLxLQTBV~sONOb&>%3DvO-8)fhz0gzYTJ7@o9$YRqz} zZeI447>bLdFkbPTW`w0!?QHuFOI4PLM|cYhf2IYU8Fx2DW@z?py!e>4^i4$m)Qdbj^O(j-{v`AC*S$DMI|iPpr^kKteRebnY(F2s$Q$CWZ{t z<4=;sa-vn;&n!4xWG>3kz&AO0^j^#uv6%;Kk%v;cG>0!x;qU80P?P_C1mcC{4S;jGhKuQw`)jHWT(!z^UN|qrbu_1*CNDRcm z07-IA{#?_zb1C6jEty(#qGw0fx59-KXUI;wgBsmHEWTuaeZ&WK;t%bf1*Ges<~FFMZmS!LXY*OO_UR<;y(haS-U@q9M*5U8I!Mn zwVK1BW7NHd+>c~=W)r-9i#DQgbLLQ%%$(y}9oD&tw+IIXfd)+aBf?N3pgRU_%?yob zA*e)%W|B_H%%)RTo<6hYk>$!zaP(J$dL&z0+@mIWKrEoYL2u3M?kp0 zWYCn6k}J{$+CQo3S6AeJYG> zumCuUhFJ2L%SQ1&ySaH$G-VuGQ*w=_4w_AqR$-9?gBHJVF-@D+ZU2NIcwrG+yAfE3 zuu!#>IVsvo5gLR=NuQDiOk$~6P_*V6F@8etU(Qk5VA``iuZZIfexism!Vmv{{!hO2 z&{s%lbUTD~(tOdGQ>S(tM7z}g`ByncC}*xJsLWi|Tu8Y4E2G4t=h@Mts%bZqxG~cH z(dq(OC20a*d?K~_!I~Jp>Mf8)bOM=HoLR%-!e!840a%hN@y|4E&Y}Sd{j;%>AQXJ; za?UWaZ9Y{q$pL_jrnt{JyE$7EiA)kRV;69)Ni7n*po)z-*>6EON)wX^lfsyl5Ef(| z$VphQ#qyljN+L3j>P)Q6t^*>eN5q%8>gKNa(S3^Ta0@FA!ZMDdt@$eO7X{6POdGbq zae?dsLe_77SQ0;=n zvY$61-wIijx1A^o-NGm~N-Pw_aH-=dvp1O?BCXc^&wt`ifmq66PNuz-yTVR%tb_h7 zGW#}1^|M~|L1TrsRA%eKWE@{0xaqWwwcpc`k$QjmRe)vW!AGw)^Rx)dx4j!li9999 z6T4TgF7Dzu4!+RpN)PUFC<@M?5ktI10OH zj6CtBFTaypIBv?E|IOv2w_jj*r7iBBIW}p|8o0T!8wowG{j`m|jX`$8Nq4k&mgm<0 zyYIR&|Nb_q_trtZC8jJJpXK;z|6Y)ZnxD`wE0dbk!t^EiwQAAY9@-vJH*q_e4uN$L zvM;Fhw05ACz$AeuZkzb<{#90k>32D0@;X8C*y218jw11Dh65o?OF|yZw4DW=6kRJi zc`ioEFPK4R>YD72M7BWqmk8NOCzktzU9WwJR-3opKvyhZ#U<2h(wka#Ts=pLC8$Dqp|9OA6ydVIOF`q3 z2fujH8Ly%uEME0GhLyr(X4!*>J`Xw7`-`?^xwcdWP}-F%uJ@+D-i0%<8qSk5y{vc; zSDyKvbE!<_zUl0UVwU_@7`#*jF~i%=XuzvnB@W5Ng`yfsli1!*%6dIjhAA3INmwPV zE7r`#ZGQ3jDBPhpvi39)%c?zF3biNLnMktWoJ!w?#lR@%Z+Be^k=4N za%j(77f+fp$?H0+gS3b%~sL3J@#-wu*>^$Ad3t9v&+N!zsT{wTK$JJf4$*6^tI;Sx)2@TMpV~F# z(u|}^3dI$es1#Sl5X97iHk07yEYDm~7udA~rIi5BOx8%s!X(E0M@=ji8OfRTIL7QnjLu}=W~i*`az>G080F^H(5hTjD}(!iaiJzIpwX$ir7-#B|{X{$xKl2|^d14Q9gGG&=3?$s6F8Uo+H zcb2b@`#f|B(rL+aNxhuz5xtIsgp`N1DQ*#eI`d1-f<&q*r@y;BYxcSDlPz>awtQ;e zw-Fv+ayc0S7)@{~_eg-mM7VH`t3UTS!u82%g47}aGp6tD%OXr6Fp5dSN6D+X_~yH~ zpZL+U&+*Ke(KceKw4O{O)|BjD7Bnx=NnoYubqK3SNWt==E%cLVQeIdevLcZs7y%$~ z#AHGO3hu|sWkb4|&ev}@a%H@>jhl4;-#*$WA1{%iY?TnoU(*Ca$A}{akJ+F!?SBy% z6tBtcmBIo9%`6pmRavNlWOB$5%9xmxJ*XHCHx?*T;5dVnf5r6O{iQ`-N40dSh}J+g zdseQ(!k||2GfMVgFs&x|!mMv?^g4mzB@DEgx62Of{}mr};L$HV#*hB_HZ#{KpScKFfsFaeRLK9HieeTW)zLKRVde++zLKTLxrm8WAVIah4 zr6zMmJdLU%ih^KkyF_@KR%jL{QUXD_p;pgv?n!22wgx{*($O@i|53- z80d5+^~^8rx8A0XGk=pu;gxGe=BD$?oBjQ|alU3VD1Bp2ROC*GN)q2V1xVk7y(aw) zB7~!f>FMXV{?PO6t%NBKMP2A#9Z-@l0LRG@Z{-e#C%UxkscxNH~;eAQ}EkVb~_GKIPOiaoySq_Pr!uMvpHpIc+a8iFyn z-P;ULJAsCb90laX3uJ+qi*3SkWe2hTWf$r!kjern1Hoy8Ra`1%XH#))DTrkA^NN?7 zO-c?JnwLWKdiJR@Opj~O63S?OE@)#(ElOJ?T3m%Hac{-2m{18E93&%sBA~aVeB zHKlvv6Wp8Etj&sEJ>>GozQn1c$dCf-d`R5E7Q7}$ju9p`IKCiS+X=!dD9d2F-5`O( zbVQV0l4KW1ghy{%^Y`=9e29Cw_p;?Mk_JSgX>n0Ok6;w@lSM^BWPu?8rK1E9E)FX$ z#%yKT+!S_{lvI2;nmz49FkHa^9!Xl}sZJ$DgxWZ6mD=BcZ@)B_QM9*SEU?cm+fpDe z2elxpPzklxz%JYL+3&Pqt7Q%Z!D?~4n?fYmh7J~)UAIGFoaY$btn)gv`Gzp zNz|hKEuy?c{zEBLa$FSke9U9(yPUtZ!$Z3q**k6gR*uM59(sf?KKK>h@aEUpxTdDl z8yurl_wYQzi&;Bo_}W1#!)xqUko83tvZCT(cDHO>UM?D$$yJ3X&QDf_sc3rpw~?l7 z65Ei7lMoLMY3r-JxfF$I`MjDlS*)^KDY+QLaJYlRt*R?8#p|VF#U~aFs2Y&S0yp9M zddnHZ+*TYS*jSv&4dj(PDEX@ zo~%?yc1GGT9y%gWMWKofXUq>%XiyXO4VcG*vyx*#gb({24v`y%- zNOxQJIh&7~0YrrmU@TRtTu4wgsL&W~j$({xQli-Yo?_x0Bkz`7-oDr)rh%tc$}e8K z$YTpQ+8Zp6r_z8zag?&-s&5;Q!ViJnH1IS3@-y##|F?hb$4=T)H)PHazIgE76wHs( z*Ntsp8zx~kFb&@nb#ka$XE9F+;;1hjpLMReU0W^-fI4Aif^C3H*iNSpNWVUsbXPWS zYcD6N2z?i5S9h07_pU}nL;|c6Jad7AhaTs)g9ss^Awd+@N1j(#{9xX%+!6DFMw&%9 z5?eSinPhr39kIXIF>Gx&kbUL0L;lwAB)@6rUfytF0GU9|^qD6QWg4LBPV2@@Vi2Z~ zcqSikeb?iXvoZn)nn^5B9qVQp++?d76;;3i7$vl5Wo&#lW~LJUw3F!%sfM&%XFLPmb5P$Osw0R#Tlqts*=f977!LZ5<%5XrPi11 zjUW9vqRQ0MB`vwp9d-i7~bYNA#( zfj2wjoHUt_S`*7*pkR&L93?~N(Ll}<(a`~#tFyTPN|d$c%s5Si7)d#^SPWP zXF`a@<}5@2%Wd|^HnJKNsKI)Ag(_z%MJY;CW{3f0%^i$<9lN|U-p-(br%^t9^#YF$ z!nkklDbZlUR^?%ZPc()+-yz1kLXNNg;wK+}|I231AARxQ*G^Dv^3-Y|MJ{SmYzYQv z%5-U5W9mRP;b`}u64u_W@TQvfy($d6w1?V|cAc&BHV~x+wPBrxU7pn+F0F6IY&GIj z`qm2#p05}MxxQxgsYltrxZ?B}VIjT%Euo*qfUX+!VHIc)N=S$l-)<1rk{DuO5f(%> z7`>zQic@jfMQjG1IW_V_!xMaSKF9m6-p zAv0z`OoLlXNvATv{31XU(`=z~$E^MWo2O>eTEBIZw&i$f%whY{6Y>%aVl2dizqI59 zdjKEmu$b8ip3&xjFknR{&`b^mhQkDxax$YNK9rfU8*6z-L9v2>&`p)o%g?+YkTm~E06O-Py9TO$^lmy zi8>In`Nu`GgUFOpm1QrK$Zf5k<|1dCjk1GZ%2D)ZBa!8a{jcz)2R{#CNzS90FENdO zQiE1ZGPS!3vG(H7p)g-<0zWPU6(Vbw1cud%?uu(IQ583Nc59<35dHVK;JNb$t@l|8 z=k78*dXvD|TOX0rXt4;+q>7bL{as)dfdUaZrNj_o?N`=Jl);2u7XmW5rmQMT(#%rK z{GG%iB`OxQ1Y3_{xLR2gNty}QY7%6ESWWo}(>|9foVzDhQhMPszQHyGPcEr)j+&ozs|Uy`eYAX}zXYt?9V- z3DjRtK2H%;>Ta|}6cnb+;>jyqfAA5`9GMwPU2+Z~+F}lYqqRba7OYi>gce!97-X~o z$j8WGo`^B9>*kj!Wv)&u_J&>1i9wYq36~bizk1~b9^AdkcOJf)`_3PkMioqZ9Xx?uR;*`l)#HIZWUa&mzz7Q~}o1jC})HscAkZPslJdN$@KGv(Rk zFOx$be{%DXnVTvTwE=e&0$Xsc7noKj!HQ3aPHyV5^TEs=L=i+25i^ga2JUi+*(L2Mdro>F9|XdBAdi_L8&p?k!$&V zi<*4AC&ev+`!EF|$0g6bu=3nvK|+MHcUhdmPc8ecJmQmt$}adzngOiS2O(hwTt{>IAp!6hz!7B77GQ(Y@IJCnJWZkK6|EO zpE6HA{KO5@sZM0h|KjrMz1K9JHFHGw@cOZQFH1^jejW9V(4CWJ?ru4M=7-a~g#@@} zZ6=@cJgQV$d+8}Cv`gBv%DGLgyuZDCE?T+H9yGhQO6K5F>BJO-{ShvI>`TanHT%=x znq?D8>>iVr;;@6ROR_@illga&H?f2hxG8IhTxNniuw0ESg1KJ~rbBjQ0bU+Wa$t(^ zg;%V3;_xfHMIzrZy^gzIoRFl9I+3GmjY&v@xsu^3+f6J(<=K^qoN%~&s84WG#koVCK1KX zS&)`#5mCHaR1Bmn2#I$LyZq_j`nxzY9m3%OA%zMOfdVT*4i@BV3x;VyNWoG|u(6h) zmg<&qY~^Hm@>$SqIqYaAgbXQi>M-z@OH2OD>EFtWcf((N;>Y=k^a$tUA%iR!Cex_Q zlc6qr2RLwlYk%o)^8bAAyI7BjK{K+9&ScE} zLuz|BbP%}(NFtXx(qN3E2)Aw?j{?K^LbnIEuM4x1b-`f9?n!aM^XCsxSyYl1PM;yA zLMI|T{kXgLf@{5H1f9NV^YSNWD!GPhMMAIur&t6f2_Cf!+2aS40Fs%qG6YBPQ(KRP zeg=0FPO1zZNNDyFtu6x*n}zJaMr#>3cmF=B6NEi3T@=S1Eb)H5ES7<~ooxIT%Q0b+od8KM@NM z^Qu;w3cyGpO~q0}6?{s1Yu1d69vm5M?+yrz%Cro`Mdnq9*Z9r1zm~hkiIu`ft{w7I z>kC}p4TP{jvoPj~L4fGO$}MjSnJ+w-z-3H}PyFP=Z++*tyz%qf?mCeJj!194jeE^M{wNyJR0EFim9)n~+ik z#uD`{7QJ1@Ir}EPA|tmgBYB-zi1|F$IuSzzHB>9I5?7haapD*6o%sCf3*5I{@Qu?w zeD#$b_O6diIyr1#U=;@*3)i_Cl%$b^EF2La88aS586~3{>p)aXNA5+8GGbd+t8V#O z`_+2#q1}?Y<)dmzrYqR(rKRRuE+8W{GFuCvhxy^^A!g<_Z7tO2M=jXa;x&p_{GqqK zpWpmdZy+2V0g*fjM5~Lf>wp{x@%j#umPjr&Ycs4S(~4DX->Ov+gM_-qt)7+zfvgiu zfkj@JK$l0B3GRDx!Jk-skl%mLxAMO~_b>R#^cYt|Ky+|ZXu;hU4;13qz}g6Hlk{(0 zdoFhcVy8X#N8qVPzG5jVV%37iNvkezLX^*1jpgwD;keS;MLpN{ih3lknNMZ9WXm-B z+^hGaGSNE4t$%K!O&Ym;c@4S*F+d>Mzs=eUq$!e~d(JhsGHP>0#{9xfdrmpC25W}|?w;W}a%7{gRqj@DHn2Fx3J-K3HS78F-Xk4?q^pc?& zN@R5m=1)fLvuZZ0N)W?q2ra&7kVuZgG>ybKPzsrpa=gXvQZ#6FS~Y;Vk%Az*fx8c{ z@Ednu#cP(Qh=&tTW#wO8eufwJ2FB$;(!qkuG_zO)Qc7eJgA8tQIeAaiW!1Jsv(kt# ze}=KgBds=;p3wEm!^<-nEo#O|P+8Y4MR1eB!ae@V##ma+&0VLb(= zA#wHYk*|!8a@+obS6>NyeY%r3rgQ9FA32PX&!;OKiQ(-Y_$D4hW(vxb6O*q2RZA6V zB&bP`lDknmwod9WZp_y$9QCqW=g#%Y68&D7Do{|vgRcubkjAu1JgmgCNH7!dAmC9z zWHCK6`g%?xESdP@@A?itaNoTw#)+Iua7rK@Bskn79xkjdc6MfwCNpzq>~jK5##GGp zVDB?Csi77nR%DrA5s0gRt`wcjwGu>-tb|qK{$~UKL;Q9=_sVPhu_yi>UyN1*yzEi) zx0jJHqP!){s@uoqx0lAC#ouDCn%)HxxPJL6(_tp;3hT)_U|^X0w3^;3hdf=~;n#31I5%!x%!ckTv;6nN;&5r-MpWG0DZ8A&0s77L)T zoYb1%avbmaX7qYCwEgN)w%**GdMOHXy}i;~dx!XQN;*_@##{1PO`BBLj?F?NYISf+ni-cqY*8< zx=;!D0S`zcd$~K0YdsWnDrq!We*82L)T#_gg5?BnfBGzc<=*e(4?gpE`GQl*A_XmC@5RK@InF|GRlWs4=`V1CA-?gms zKDsLcBu|8N*h%o-BBi1|_0ppGbG4#Etyd#QE0Be8p&SQfxnuLE=IY5;E)fNq&!Rr5 ze$F0L8NK~uPAtNJc)=X|z96d=cPQ|kCA}!))yOE!(1O5HGV}k!(HXOA$Qkv57SSO< zjZTJODMB_*nH;XNcj|UT23AJ{*RR|78*Nrdo}u9WU_mOwRBubE!3>3r1vHzvTRiA# znkJ@cVpQ1O+qJ+nNvH}_c6U(_a5&9jh!%V{O;!V2Ti!8((bcT}j>de&>28^COTV)3 zQ7r~y3a}FsUp)oB?aaNrLWL9q4_v*@&yQERyq8JQ(8ba?x$bH44?zOsI9h&r?$%3L za5vZmbDm;-2|>td;_)v(^))Bmy_GqCYMt*szYg~?G&wMIj81(v8t?6hturXqEgj#F?*_COczB>f^+TsCtlxXs1b**Vc+LcF!@XMQuWJ$wl@bs}HKI`r;dw_VAvt zq>u<1@`KMYJ#mRMD;wk#AmlmmDWlYz2L%%h4p;6>>wV|5L!cPV6|cVHzXVI5*Ju&0 zYt8IT!fy7|tegyZ9`l_R=TG)XSIv>5oJ!%My4s7Df+rH=pH&oFOz7RE$a!?amhx*?j0l=k{ih@4&}f{?UzN^UyYvumXm z(JXo5j(w)ePyN`x=AGa89!k+7Trd|g$XmrT0g4-lydg-Jx!GWj0&!X)c|}zfN)&P< zQ!|UCik7-1WZ>{& z9AZUQBjsu>DejFLB&f!S%LJ6fH5DB8UVzB75YAk=!gt;MO5QS9iQLC?;>WID;PG80 zFF@k}xDf5@Xt5Y9>N{nY!@^O;nq{_{sVVEU<9j_%F4vct&I%!LboJV~ryjW+U-gEw zb8rB9dtY~a`h{!XFbZeOTDH)OBBhkYTG~@v))wUKyR_@nS(aMpd~X&gm3pjZtw{|7 z>bxKtVXIPqGtpHhR~fU=aoB3o>H$vF&r7gtO%l}l+@?`@iUyh8RpQ`*FA^WUNL(pX zG%Y&JtP0IXR$AF!XiwYO+XL{8S3I7j-E9tJ)(tnzt8Z`wmB17OtEF&lP}U(>jiO|D z+9{i_cnr!aWDc2FF>xfyfhq@M;%I^+QI1r-*oB!oS6IGeEfXrePSx$u8yq($-+KJx zmYZ&ot>5q!ZSQo9**BK?nr*8EaLCQBScF($O)acK$>&VGsEFN(cvm zaDBlr?xHJkoO6&BgtgUi(gb|h!QnuRGjYTOjj6;}3BJu*0ZyoM7^ zGi(UBc{nDEff$nV-tZ>w%csa<)sRX*io0j~IKLdR==dRC#G{b!vfdT=@)y5=P7Xbp z%-o-oGNnyH*Y2op9v9Z3q*nFw?4o{NS&p-|DE$q-P9+@WpVL(h!ok4`Er0_G#045k zjWWx5&*Q4@ahX4KcBqQuT-yt#lq(ZWIn}7>)|_Htq~c{4YGP?hHU?%wrVUs1Mr0m)^bk!$ZF+e|d6!{e+vlki+Q9n(^*xmdDV4@2H|sBV zmWYa{Kn2f^a0NsQzK98KIZvcyL0`i#SPE5v?W89?9x3jo_2Mo?gqTeTRS|}G#Cu8n zr{`YH*R2D2xx-IhxyIkRevwCaVI_eSBU+;YS|7#J{~D9Hm_4@J4ty-qkUZ@=Mv2HF8>@L|s?m zruf4hH)jp``>VSkT6}T6e4;`T&yB4)tAH zH>*!Xz#@NZ0SZUV7#CL7aZrmwjKx%*J#9uukl;{%4pgBAP>?XKfndco#+=EL>125_ zsV%mbrZ^P^cIz$HHT$)WzyROT6yQX+J6)uJs$rZD4~fT9*v8;MqwBw@irF5HT* zwXzR1tCbyfqG(ZNnE9MQ$a|b&uqe}t$YpFswywg~l=G#V|@#N|>$_3Q}3t>OM0WxUA((snFL7!fKW39`8w*`k8#m2Z^tq20VhpxI z82fw{`kYc`Sa_u;HS{qj%9KSvIi%;pBeHW!6{0qZ`JXjsPfK%`XfA?*1#RZkR&641 z`|2X!e)c}zo-;#8e0frS!&Zjo6|18XpqQ5pM3b6zTrMExX< z02DJ$kc|!n+oZ4CRsQ?;yn)w~2^x9N?Wg!1Kk-E#lT${i>PB}8+Y#1df^pBL9fikm zu%% zah8d?+0vWKYbP8so2^?V^S6E!Az`!PC#}OxJ&AS z^Axi=HaS%cDM@IlETtz%X6XFB+eTcvbN!Bno6h!44=L^NAg8hxr^!(7OlwjQ^UWqo z?y}YynVAxcK;QG$Dmyy!pAKpq$Skn3?^yj@H?P|gmBYhn)^Cji$+fqPG6X?##p7z% z9qWA&e%z|&#=@j64>_sl1{btLC$(9rtFT~n7xG(hr&ZlqQ7nKyx~Ll5r$=2+nurn+ z5-BLJecNrISJANG=_kSLlx3KT(3dOrw}r@efm`kq7YanFjiH&M%{AfPw3?k0LSR@7 z1{zWXt)4~(>+3j8EX1zQWr0^^PKbj$9Fxb4#7N3!Wf~ZmB(q@RtvT}BZhsAXBk0b+ zzrJ#b59iFmj-_{n5N%weStllx!N)N~L*9>r3%@CuCLag0P|Pf()`OlY7ZG&Ek!Fj- zSGFq8K7M{H&h}R3{KVDO8&wOwX(v_oOxVpWElTd#+h5T?|>3kOwmFz4tWt zlZf7iyQA>-d+z43r?1s5T035IZAxUL)(2Moz?pYhwEX}TW*Qu?KL-np7%r_j{On`w zURnbY^|YDZS1h$J{e;X%tD2nr*W{8jNLOn#x0`aC*v+FxbJI_}xRhs_utp1@2q-!^ zYE{+T)GbNH?_>UN%TIJj0o}q^JK^W%Om{ZCvuoS<^lRzlhyBtSb`cmY(5N7Om2#ee zl1??h+8DOhwJJ2ilq7Sf2*3SJ?`CmT4NyeQ7aX!c64O|%RG68oF{T?N7&N6CBSI|5 zMqO|q2|6mG=7X;JuSgbUjYGMS!0?W*D6Hy6_gR){(`=;G2+-MHA$8f)t zqcJ91ktOfhL|e@kTAbE~podt7KrPEz_O5h{8K?z7N(82C5J(Y1I&d1*=C%gO)S%FI zh|=O$fYq35q_*7}%*^d8CWxWCRgQSmVG{SRM#p3~hB<`bOCdM|_I2SV+5)WRy`7F$<%t*uUMX&n4O8{PPnj1F_kMikolB$<}w! zI({nBfN>n{ETs-a#AmA1W-fD*QYK|AO)6V{bji`~`G5wGN7G`LG;ovPX?L2EVQ7cJ zu1ym$2?W!I&rEB+WoNR zFh#>KFr{Q>`RMud(R}$OSV5e47K6<3c!>GFz=f|DpStk+Z7b#&bN<*m-FI=7?vb5n z!AP4AECV=OjZI#VGAWxfgfzlm&|lDEDris00?!;OhXlt*g%$AVi&qSk-A#g^6`rn6 ztpBeF3flir$4A*;GNp$Ecb#{nvy-v~qDc01qgd-INv;729B`^sR`_QkZaw z(4Mzxo7ixxM$ZAK70DTW&{j9~l6uvZkkCnjs}EE?CeO{H#(U z?TZ*Or$#keR&fjvY0eYMpcSn5X|q~#DbH0 z?}q>yEh;-$>Sfa8_{`#Y&mKI50o>$DbL>by21Or9S)IAL#wu1j*yD=_!r7tUX*R88Ho)QSa(lT2e;C6usSpPebs6{Xhu?0L-5+oma5a2nJ! ztKO-i?t+@c>p6%xzi>@DS+%YZqy08cM2*BSkaWeXrz3vL-aUL36Ju09eFXpK#TQuZ zE^KWTK|!prO`)%aS%)A*2c9v;Yf4m_GI21hhq6Bl)M-hV+s=wl`c|YyVRhyD9nXC6 z^6tHFK6}((dn_RAvo9Y0sxic~Wg!=B5!%>SeyHtV**>-pI`Uf>r4I^<`&wG4e%W%? zVc~(Nuk$w_yTa4c#FLZqcb>Sw=ME-b)ic1|WDdfxRVo&R}X>}=)61C2*c>eHg zKU68+)_q~jrI}^U6c8Qld+wNf%>iryWwSh3nxK|4o_6VHJtDXU|M$akE5qPS-TcZ4 zJOV!@wPzP%?=-TMXD#n?*(J(liTMMHK<*T8IA6zMFV-v+;{Jaum}*B zT)dXJbWIpNc&pHn;>T4{bA^GW6uM?vNE@Ni+l?u&9}43Fh>L}RhIoGRY)w?z)1Fxh zh*)j;Mt3C!2v&q6N<@PY(u%KE_E%fACRiqYw>_(hAW30ef&}OuLwva#fg|fbE$$WRgw-q znJrj__T1w8(N0K_GF29Vt0jPJ<4_8*=uc`RQn_7MMziEa_D9CemmR^9#);jh)xM*p z{CloaavRSrM_X5$ALhTGc)Uc8`x1^ODwS1Nw69Kz)aGBd1=MoOEgHJ4Ep-jr&7&dn zRl^;;Zh0qi6{{xY?gEk^ljWa^2FnQzfl`eJFs<5M3#3S%6w$%09%a83#+)lNl8p}9 zektf!8HwV+5y^5$myv0aiDXuLiJ!dk8P*}e&9e_? z@|>@yLTCzLO6WJ_iG$Vsphj0qPO_y-WkS)QMI2lsG+Kq$HB{(B&IZ{DZuJVzth1$d zM(jz})T=bTuD1>f+2dk9$}BtH4MLnhf}08$zm;=c8b82&Hq{>5y;O34Gh~ zE^gOD9*Kc}aQ=B7Iem(8H?f0|639>jxQrgEnrUC$0wq9LEUX@a1jcc4!NNrzwY3;y zH1oCttyF=quJ28ew(Y9+TN8Z;5x(%rFMiXn{~hoCk$&YIW6oc`zW$ozaAy^aU2$ou z+XvEj=?^oMZy_dAnwZM8;`Fmcbw&RNb%G zO{2K^vXj6{Y0e&?q?nO<($~N8c)zu68lgR--dqN9-f-O*yYkrM+HluRZ35HwACEP( z>&2FDH|G+^FY8QfC04jyC*2J_^KJ~i$CXeNfsCI$8MjokEc z+~kM|l9Z4K^D9$K-sP_mDD~*i(!2&g+w~{-I*e*svScJ=@?woHfoK|Zo)VAjAMs;f zdC)U03enHrtI+w!j>}xXG>`Ms; zeDV|52y)ij7#OFKAw&=2vS*ZZH3cL@(=uf;KoN%hNAjRE~>H$>4Vlc)Zyx-$U ztM}Z~)kZ)|tWK$az0MO0jRcM42zRaz_>Sd1?_MZDj`+Mr{@)ibusXGCXkM!3n)Jx> zwxBnnm$E^sikAb;YPFq1^ehQa8_QW4q9LV~LL5N?(>NJ=o3Gn`-@tIgZ9 zkH7H7&9!rkIX{1G_3BJ)5;{HeaE2#Te{XQCS<#~T7S3BPZ&H{scqdc{cuq6go^1rF z)e)_mif&_c8?q2pdzIARXSv~}GroYy8KNMo#FfuH%$eucEb~BKWXRbWr%hkfM3Moi z+G%6Zb&LxEC|6WIr?n5Z;U=3{U9c=HVUt<;GaHYr)TK_SoeHQVmq*$h6&Yc^IQ&2H z`0FANb-(xHJ#R|UbLQtEE^rY(|EKCoxZ z7Q9pgcg^Lju*k~Wckd${8cI=6fn-tDIhpNQeD9!>oy$g`0%iu!BNXUGgWSXeqkNwP zELRz==c_O)p28CZjhV0jjT3n>!BWsAXjTSE91V%{r%v%FKlLwoA!dfOw3t8yYTcqL zRUVs?DrDbqMowM>C!VhxMS0zu-a-8v3auo+3baMw7yF_pQ%VH!l+bCS2%j;AO7Kdsq$SO06_A3L%p4SSRHjAb&V$Q* z|GB%lKL-+reBx-u-#<{U??wV6guzNjYNn>QRt;Y|%c2Vm;(=<}H1rq)<7y>dkdC^Ep47bG&dkzH-iR=F(;P4?My& z8|35da>&=;ro3}Mb5^WclbXO&r6B>&A#&G+?U~WGqGZE|R*QNTNuEa>eFIBfJlizRGS+RhJXN4G zp^8LM0}Cm^Dn)Rp0t{New@O)UKFUzkfUxf9_DUNsIzomc_iUvpdi<-DH)&Z%w|;C2 zid)~dA>sV89)%dswZFDnWcIy@c}7@riCb`pz)a?j9C+Q{9moib1L+8|=OG(1S0GQ> zBCAKZDGKl<6f%crM{EYl9;=p$bIk~1rSlePT-NdX-v2Fz zjHXzr!DNd&R;j2HTswhM$}_gTqnDEXTIX&QE0EyA)JEHSpW)zntc7oDcDU6-qSSnr z$H!>iCY_y~3ld2U6b6Mx$~u3qf3`rtLKiJnPjjI~_ESy`iy-A(^-;SrWGH1WgJ5eGY^sLjH>bRFPF;SD`) zP^i9b1BCIClme^Oib+$oycj*OIbSRmX8QJOSgj~WM~9Cs&&J#4=alQ0uHU_R^-OdA z^40aPSjliVst$?P4LIAGHIlh!JmBws=bN}M1cbl?SJwQ&pM9Kb3=kq#3b9FBEos|2 zQzmGJ;-!snl|YK%Id>(6q!9SJNToN!QzfOcRHmS$w1&qnaP-i5POk%L(NKl!;_yYK z7^J1R=G%s%ljdh_?rB4-LkrXZh(IO}3uG*S1KntDNTbjgX<@3`&#ttETN~F=+(rr< z8+W!a+PnL6GbOzP2{h1L!j$N_2a_q@l?f=`4TVdhH7|zz`&wZmNgqo`BD8yL1t}dd?KXCwWwKlrR5O248bORfC)5j|l=j{DXyaI)=JJB&&If<@ zl#*$yS!uP@jMj(>8d`snwqhb89`@j-UlEv6VmX*eR@9hd3W;~UYo8ECL>64Uu*>C( zki%dCi?0d`Z&73jjM;&oqT$L{ncWw%NCATB=~kP%jH1abtXVBBEG`xVvgf%|6|Mp> zBB4ah*iH><=J=q7Tbxu4tfniZKJy>`G)=?+s!h)kAJN`dz*PvICpa{_Mr z&|?A2pFFY{1{TXD(>NM{ibravl!(!>&1uo{DH#-ND45=}*+0G>`Zk0Z$m_K8$)9=r zjqiB>{STMxW}5S7pTGXT9C|5g^Z7-ZwSOYYt|-6rUH9`Ui7YfSsPLZKc6j5NGd8K7 zI9`GbOiuHq>d%Rxz&yydzJN2wf)J#>S;Gt=s1O;q`8$_1f{;l9J8L2R+#~FM{zZl) z=-_4gvW4##&9y8(QLWncOdKkyGrh0?gg|@0s5C}g&P(~9nJ8njs#Ie*RsCIpR3QJ} zl2G1LY}5^=u=G)?P;#7vb^-$>(y=YVW{KFmuL&WQ64JA>8yp>DzWLR+;;lR0#FOsn zWZ@Iu-S?nlJwjb0bb^A4t=%y&hnD3o^}4oxvXw}Zd=*EOPL*Y4O&TF zwlhiKw}0r(nBN5&rqLBmPZ@N;sW zqRm%3qY6V9D&m)dwG&~vvt&wEzytA0T$EHd6W)WD{mi+61)a1A3a9FomMGl!*x}H0OuTUw?P300E-H+XPB_IvEQ5%Zy#dARe2YSTE&M(P8``t{vw zNd?!q*NTt%MrC6-)JHrBnZ)kF#I>J)i2Z939TfAv6_lG}u!6rJujB4t0f|beD_o>+eb_M~JMBEL8LC`pnhJ@?}bdf-e zKxFp^5(Dd)Ie*&@fAWEU%16iZtR=BjA#1>ZNYq!Kl6_qiE$K!qcFPjD!3^B!=vJ50 z&DXu@S8#ANn%^AtT;D`U2AWY2r)-`I9BxpALfZ+9!hsdy|=O{NFg>Hw|zlHvZxb{2@)t_lqsN9@t z1{Tj_#sX)t*oP9VX7{=FteJ%juE1m_j(Gi>BAQ1e?(tJUw?gANs_@g(RO#C3d}Pdt zoD3b!j^f9~$FdAXq36Z=S;(|gX$s*AuCY_)?whT%g^wK?s*NT zb7GZ*e|+H*KM~I$;m{dmb446iSGJ$%y5m5*UT0F;>82Lc;%277tK~*o>Q2nG=^%lvxueJ2esbjIYJe7vr2h7 zzu1#i!<5NSTx9j7=hz(`Us#QKwFTJAF#TVD?u>|4(c)NJ+x6v7^HocTgs?Lk^R|np*dmr&igk%xZIRQB!Ny%xd@dyRQ$#Rz4 zGfRb^O2E2Octp^s=m2pMnDQF-0vZysR0wN(XNag+VA6VLm!}trzw()%=HFg>hASa4 zWM!cPlQ7s7ZAxW;s-Uu@?9vjjQ)=**&+~hw&Ar0j?hX-{Feb<}A~`$6 zuobL`!w$N>)`@+$e%RaWo}?4P;I1Qchee00v{coS1Fb}Hnp(`M?j|fQ>q!%_q-qK^ znppD0a`z%pu9FGmlGO5as6&iR>QSx5(`y$r7Y1lB0U#^|qMAQBDk+SF9mtD>$EFwv z3d$IS@$`aETz`hY^U%lm#P#Pm5MvrUIl39sY%Us-Gh{{c0`4lPu)nvk7I)x8<*3=eisxtJ^Al!_RzyLDwlAx4;lW@v z{U^IsL26{M5&6ui-GN1bby+`oM8-8?XV*>Q5!u~E4_ePo+7g>QVm3M=sG2oKC4gim z^*m+;6X}B0jYb@}qr;h|(86Fq8yMu~5X`b-5S~`L=3CyokERic3$Bf)xN<=ul!78R zXk@ofN=GNnXr36tP?6kh2z|t>+by?;Dj>?Z9xWZP2*4gg)Xy{-Bn?bKxNUuj|LVTi zbI1CCiGhE6`3nCsEI>xGu8cexa}`uF zFXjaou9?9_WT$Eel%ObqSzc~2P4%myF37IoofuX(Skbt(1Tgu6D2!Q^<%Jc84?fE2 zYoiqr2p~zj$?)KvsNLyv(JZ$|t*EgC>NOR@-DQV&>2Ofp3Eg=lR&r{S0L| zHFtstUH^p&p&F#2svU>PE3?%6(1A{9>05jQ+Ut9#`~J&8v}aBHcXrGk?L>Rt>Sjv! zxOJLj(?-6e;3Tmz96WgO1v%pPKl(%5t*3bX&h5Ni?&V#J`?)8aVL1+7Im*{>0@G3P z_ozp>S`{EdAS@z;j11V{2pSU%Vtgf70f>=69)#6S;E{v#{Ma*J;=`98BnIH00L{@Wj18tOp`F&ejT$#W=Ekwy{pWJct*j9fQ{ME(*YK)W?DM53Ry8uc zfPw7q4!}qsZ&9A#SCz9@XT%FO;8MK$yb*UcS|gQKR7glC#wC~7_K#JM+FeHWmdZhL zd^t^UcnCYEeRPE3^f~f{Cml&_+lbA_WP@_pxeO`;StqmTxkb>l=UA;VCHzY@ySCZJ z!xMX0WV4DSEXdV_7qbwIGVlYx>kS4UC-9^H`UOVL0G=*ef&ot8VK%&Cfn_-{!~qS; zIXt}m97l#>sKQWHA`9E_Jve1^N2HW0 z-Hjn`j^KPyr8LpbA01Ao`kyOv{_s(H{ZZCa^9DE0FXjK<=Q)Ec{^AmZ(cs-?`^yKY zz`s=(&C>jhyyC?p4~O%U{Q`WXU?TjDS*=(Cfj55 zridoBAB_p4RAyM(Q*U>z%S>v@7~t#?Py}UaskfWO$i8H+;JD{$GTX8n~b0y`{vXcp_H&F z+SsH8DGWCV7GRbZ9c=2t$>Kiz}zNAA704DN{n4rp8-K@dyN~#0G)HZ`xV#mZL+a zxa5Tlf9q(?dKoNwU7XjT#b{6|oE#IrjfzSAyV=WTeT{>s`(|OeY_3_YwFVmRD`QZK zc~~D!h?%B|#V~+qml8H7p_NVxc$|H`jEcK{u8e(>Va`&49qbJNb#DjM-^ zi=|^89)wYRp8XDk_OdIA`ci(mUZ{5qbp1tw0?P)iAj%?g^GiKe!NBcf2 zm06edRElF}byz`FPpMK=0#k+s!ZO+efk{#JGjm_#;GHK>uT61|isv<&x5Lp20W2e9TKudWoHqR;?ck*%Xub!-e68%+HrhFHiT~yr}lUFzTf@5>@5Pn z{@cEmAN!d{$T~oPQ@fE6Okgg+J$+n?R5s|=A?cspXcd6Q(-uzYd$4Xxe_l$N7zZmg z7{G!CJIRX5)1h8eXnmS5v>fiTs%oeuCG~r`bqXLSk)VqG@mp# z*%ZyY2p17qV=E@$qSCibe4vk;fr!2vsnQ#8O*Elri$h*Jh&HU)I&mme^!|WxS zAE*Oa=PlkQ8WQzKjmm0)XQBbE5 z88eIG30Ml`iC5gY2ag-bgs8&vPZ{~mHebW5?(fF!rHxu$58XWl=egu6CpEOf;D~a9 zR7{4Vac0e42U;B=OsbNUaw3GtDhl8Kq5Bz$>`3Obj|%I?@_#)46i=OARP;uZhn#X& za#w_c&dMq_cl|8YUe-=mamV*gwzMe<3cb5iLUXB>+hTzQ^|-1~(c^3Y%yh3zljT8I z!KG(=8I zxpFt^xA2S`JoE-X-2&c2_l(>z>0$zr`^F)kR!NSp>F z2Sg(|2T~49Dx^%+n2j-;F*6aJaRibI6JExfV11hTj80fH$37j)4!!xXpEQA@D2dyRs1F*L~C5fW$au_7?s=*<6(^-N>j?6R@g;)$LJG81~3AG*VHu@jf0TSb!)k z+PG9fA}3z`iZe69Ef=0875Gd^=pCF>!cwJ~h@%NDtAbg2YCCRB1a zF2|LRKGmpLT_xKb?dK!D?-h5jJ6=OW;AgH+{KD?i7_K-ZZ_TdoH@LN{*oLO^M%}(5 zb=#*(Q_FaoHOeqYeeG2m?DJ8CZ7jGkJ0qT^#Ckp2gM$V5<(xgnqP1OUf@UD_#KTX% zy|kw?=kx1yUv?^0{NAnkT0~Qq+NAlJPw4X8Y$G#?tL62{eCKN~ZFNttz6-72RjdLJ zUwH;T{y2Nrg;YvB&g9Y7m#q+-$BxDr>lOZ9^^H>`*Sfmu$TY#F(hLHc60bfN*r90i zf&IP6?RVbhbfp_NY2%}_=XO%+jQ9Fj^<#+MfRX8J?`;y)WB1MFt<4*^9ycfCH@M>E zsBFMygWCFSK4#NE4GG9lo{AU+#haAK#`s*JLKPt+nhBbjWMmyij%3XdBcoW&A9d|o zB{4}NOTzv$(0{U+MwsovA%P?{p#5xtXh|lEv{J!=I#>IQ*vH?_mWc6JS)hR z7cClCtUpJ~Q)nD!_K3a>Hy@de>s-jlnsAwcteFX`q*UWuq|jHpx3WRC`t5F9wSdB$ zc>R3`EaecLl%sf#M;<)`uBA7+-YXXKwilLLEu~^9LyC4Nh@RT&YcA!0qxu=G2973WM!6_c7$l&I92MuZS8=*_CBsh2@*bXQ>p)mu&m0@tq|o-6ICX6@VI0;z{lu*0p_i&ii+|j>db~vZ?7nE`6pQE{(l^EjzI67ZwH#~ZYv;4oVWH#6AmQ!0U+Bj~0 z#m(Ec`Mj5W6Sm=N1T1FO?!yCoYkB{zD$wNM3Z4l?AXezqlG2n!Q44Dzsy#P|7ZH%m zkZBT}<~GhQv`)qgn$|;woG~ILlY>m)%-4~kJoP7OAr}wPPA%X-U2)y<6r@3-<3Aq(R=z~S2|EsNqWnXNrP1THs zffP=mdeLu^j)}PRY?(_`qGVH5t0ukfo&j<)DyflpaE%=iCdaxy$P3bPhd5r}Sn#*L zH#Wr(7p-@lLbrJ4zcVLH@h1uo<+h(A`|es>44w# z>Q}OyR;(uY2hYC1)xE(|#)>hl`99fHHYkD@%BadhN|Za!zqEKiHhS4bG6jGW@7|c{nS|nJsIu^7UR@e7StE%RFl=A*e z#FS1ll@?7`SVAS_(rI_ln3rfn4J$;-{dyJ*Q|=cZP---$`4P1KT&h&5C|NQbCa(SL zL!5qc%`gJ-xU@HC%(M+zPRuw|xBa_`>(efBnb8daQ@h2nxg~px+p{lRB#K){g0P4K zUw-H-4AKO^GJZXyF9MJ~FSmA;er>$74qE3In*Z4TY(FQ*eml;XkN*|scb-h1Zp>yk zue{mSC%#9ackC4ZY+Wg8=ITT!N^K*GUW8&4B}*{#U_rW5^Xr*uS_s)*lO(a0k&!hM ziM3?bOpLl_(uoy`Ls5>%9FbU+f07w%sz<;0A~_4{!C$DRh!RV7P4?I!O_a%z%*ITa4xQ{!;mAY?#Z4tQLA8~^RxCoffbpNW_c;X`th#n?62a1%NeF* zIN(z%z%|DFYbn?+mLWO(XR&;S5XmVqj!p2y(cZ+&4Cb~9$}5)F_+4+h^V6k80pQD; z7wfg|$_7C%e&=FRRf;s-Pp-JB*C(bMu+rK3duJZ*ndcUs*OGd>jYXER*B&pn>ci>pW-$1DBG+WSuCjg|7XlWF?>D8A7I;mT@aO0l++ zpzLdAI=D^=YUl^9JSJ-kN+|EHCiONG$NQtoEU{m^es5Wrg=lR%HlIHuXx(4!f9&3~ zjT{~Sb~16l(NDK>6hT{^aj66YyTK8(#F?9#DcCH{#<(Xn6WJ)j6wDl+979)=Qn39enqPzT0|VnXG+Yjq3UQ#vI!| zowNMS2=2BSIJUl3l_}myU;DVwgaZC!>%!5V+^-Q3i+)a-d+yj{KbUO-$w)dRJ^M7M zRX$1~F}(7vsCL-+x5SL+zxKT~LA?~LEOs4Xaz>DIGEFN4(v+*kC5ek;PP?qq(h=|e zn#_U&%SqNVJoKqEgld|n(cqVGs9PIC5El@H649=J1o7N!3rbt;EYYYAlA=|Bs?3~7 z3W2u{E57dRKpp~X5&r%&PccS!ITi4v;`2RDmFwt=GmtX2Szy%c%AYpgaBRACw)i#Y zD%hoD!F7cf3POz0Nv0`qiddRi7E;R2w_E@X7W)ySncKuuv9rQ59`deJ*ZD(le+{n< z2i4FO0G_y>-Z)A;Q?<+7TG&`JwKM&uoeN*xb?uvd?iN8YgBNDdS7$0nOCp$)A0@kg zIXrfrqo046)2jtjRNF8$@Ta`AXF!fY>!yez-EA`M*-<0|JSR~5Y3|w4Tx8Sk)w9Fw zJLI^-!DOb=NFwKv|NIaA0AKj@XNkJ0<4U{Lf!vQ(?kWOA0d|qiclJcA{Vto=_TRVJ z=C@urKaQ<&*>dF#9(}X7-rBM4DgDX})l598gLJ6PM^a~e5=hv;lIBq&7_u7kG%%0I zBnHGkib>{^z*=Dx)3{Bu^^}(KpBfzGggt9iWeu#!tb;I$Fp|iwsb?`?XA+n&=DVh} z!KHUB_-iGQ)KeKHlY4ydTRgV0mX|y7^@*au#CLx8cT^Om<|Z>C=+P&hrY@SYPNfK* zE;>{tplPYS!cbabiiuylb4L}L>%JG;&q0ExKv@xn;01{_d+lG%?Crq)uh^}AMMSys z;73U^plbJ@{hIfHf8H9fv2~P>3*k+=Z(>c(g>Kp&PmaqV!OKmCP(g~y5M(A2nMsr! z5BdGy_g1E0xLKe3{Oz34bEIT}a;0d)jgGDB!SBgl03r^t7JMkC+90uBI8762nmnzl z(QAQPN-~Uz-+1?Jc2695_+aFb-QAkMT*WaLfEpcZYoO;hG80>0MOD1CC*&mL5ICK$@w?x4 zH{bh~yE&Ujp3TH3e)_?;fHUVuE**W15qLK!745OwWvS)t`fgOkw+pl?ed>kC2GOSV zx*|1IzmcmqRr<;>h}rQaC5}G!FzIv8vPcn;&aA6N80w^+ZlSk#QX>r8By<~PE~0x% zLm=V_@0992?S8v^9&E5V;ez=jRR*5AvS#qM=M?$P-}UQw$2-1?Cm#E9Efv=!vogjy zW3;WGrNNowORRP2m}&b43|LCv=bZldLywYGDd`;>qZJr~p@U}K!doJSFo1}1`=ilZ@QjG2xClL(Upk_7(@qvA}rFkV=z8sk=& z6ef*~1l9yrVklrE_WmrGI$eMu_k%_^6bJ^Nsif=mnjji3v zv3(ZwgwKL83uWRD|Kb1G&be)}vvYCr@&QHTnG<1;t>|M@)M7tG1aSnWSyqV@rY+>1 zJDct)#T1!p8f2QXLwPbIvZWPKN8a(aJ1iK`gN4!~pF%aV0ECHCZ}>Wh3lHp>t18>a z>-g@f->cN&XC>71KEP{Gm$5Lw8A79(s6{*n0!i1r_WsE0?#Z5_75N|kx6d-hm068E z{i>r}CyKW-hE=X~1t4cP<(7D*5SWtrW>J_qA?%l)51smwO!WP2sIyG~mFBIZ+0$&klVN*>%*1|txM zp_VchF+pVr1LHW_^~pf5hD9W5L{lUzh5Lu|{IU1Fj(6@)2n#-bKJmZ(+b?|oM?d%Y zd!aDri-%t$UHN95LDy(%Od@Jzu$W9cS*0?M?yIk(>iaDwiOvjNO-*Hh#Tc`Qau`O^ zIC1r-zsQ-VC&Hv?O7*&|R=H(!aC=5=VgF4y*fir5EuFHdMa@JM6qPlJk;yTNi`3E> z`^H3WobHzgqWqH&f5}kHicq4FANm`Ajl+xQx$yk63;{=(309U&)dZ2cLc0j}x>I^4 z)a~z$zvWszcCtyAT`x{P%I4U-Y(srNiOt^VnVav{EuU_F6tT%ZyGP75F7^CyC23-k zl4EXCVM)bE!L;9XOpHNMEIlcyT7)#FnN8XJzh;hZ8gvqm_7?GfW-6bsifwCLiWe{A z=m8f7!Kvmu#tJ%)K`q@&J@QkjzVZnVEK>_aOYVYcqU)`X)=L>--STa=)+vIal4axr z-}FA-^rqL(NvNBfk5&^Zu|rU5>w0Ffc6w2&;%V`5ZfH!kF9Lb@jyhLvU#yBk%GvTx zohfOyJX;it?o|Pu__{ZrMUvO>lE85Nd6tNkk3_i^c3GV{YbicX0D8u8eAMRV*xBb} za&zDy z14G(MWR4vhxj9>}DQmMZ=m{ziP)|>fQ^DfKRkwbrp$F#d`_WunX0A3!$dr^dJ1lobzWGl0L+^Yww{yT@-skUp?mU0%%a@oIui&9ied!y(ne&sE4&SJ< z(IoA+(#B@r7^7nhnl^z=(y>7Zp_x)PAwa=H&I62O7MBh=`q>9LcUcYpHgrtAu=K7i zGk^hKz@^$r!A9NGY%8-as(w;pPJG)tPVUd(i!@sN z9w-(V7XttErygSRXj~E7Ofdxh@jv<@KL6>Dad`c*L1xq<7oERfO<*z7-4Cuapx%#C zM`xpDdR&)M8bR_MHzyxkcjm@+Nisinb;xbGOh zM+-Pgc7_}oHJWBG9smR+9eD>IUn&o-}k+UL_a@YmtTD3iRve9 zqC%q!z1CbL>EiP&LU>vCP4KpRbmuOTnvPq{j;^Y;raye?0r6`J^otRizkW9a%?Or>}B`eqIeS}6UTsSn$(hAU{iI* zBcL2{@9l^D#&5k3T`U-4;9vasirvMYY2m>%+%b*JQ5`p$+07*!r+9@K7ujcsmi!YW znj6TqO*0EG37%S%nB0P5rr>kwI&Z&w&)O1%pSg4uaSPI1nd$}a##c||QQf~Ha249A zs!W=EEQ5zn_OFt%h$ctY6>{zWE%# z<<)!aDm<5${NT@jiH}}Wj`Bd3!1)(0-RIK;FC4D!t6^Tf1l6|LY*MOL?H#QR*9|v) z6N3Hcrn%Z@XPD)^j?|MR5uUt2`uVSL=3p@N9_chzTcuPexeZfq@6Rs2rWpu9B@^D} zaz0xVUVrZ%fBO5riMO8J;jQO(_+uY>CvUiKha9}zUhD1&N85zGEO2$qTw4{>l>JE} zeAVmk=kNTDzsx5dc!2Tf(6)JJj>pG4yVu%muWt0SM&-*y&ccd`-~4M&F>uI~ zlxwR~{GES%#1yi@l}aFMauf8pHR8FxzB_+Bc&zaURgdYx+nSq_RB4FVyyXOWG8&yl zc;~&R*$oDxdX$w1F0Wf&aG~`ZE!@y0=OesjQO{{uiP!M`T#({yv%5U#bGfl>n=)tX zrQm5-0ng_rOOcoY)1>S!;A{4;@t?l$eqO)7A_HH!y5I*Nc$6o(4atExSc%x{m#*9e z&YZ8T(;c%7r)?vY!IfF3HzbsLdYiu1Z5@%S!4~FPS-ekXoRsw!o*+H=47)2KlgN^3 z<(CVyh2B3}P-{x-B!oJ*xlXQh3#Mb}+DsP!Z+O++oCyvmCvZw4zwW(n^EkOqR=Wuu zlx{tc1;Q@RU7hNCiolQ&zU^DSh5zNx{&#%hqdyPRir@>qKn{XSq~sX`EsDj=BB1>Y zZI}l+S?Aw=w6Qz>%gxy3ExzaF^XprFlytvml*uaf5}c_OCTT%gRL!(#ubNAAw4JLy zW@pwT=3^ek{;fCujjo~h|0coTCzS!`9LQQ2aL;Xifw%CE?)XKSuHZvK&|Je(k#;EMRv05XSV;+%6ULZ1cY5S^f9GpSvS2p|pMCfgdAf%jmc+#l zDiGpemI9QNCSyi3#jG`>X^n;EY|H8?*1b@p$%6z^%8cVgPRh~I5#xG9)ii2NO3d&z zw=Fy_M|tGnh{L6W$M_gGz^e^4cCZ61=E$=WQfvn$$XPqnL0aO+w5 zZ9)ly1%E{X!?0uxoaQRO_0_w4-<$8`j&KNL^rRKAU1!6C z%Pc_R!=HZ+4P9V|xCSKfJHO}OPbU_c&EK7Wz2B{!{?rMN<<451T2qzh23_i1Og zG-{SanD$>+iFR>w%>)e9R_asdW0MtzJn`#(^?g)K%n;eT`V4oBk-^h@4)$&%-T4Y2 zc?9@I(@s2e>(`#gC|JA!p4OSMxR?@O;AZ74o(+%_ANqAWoZVZK)4(b(_`$#a0zrh7 zgO@Y45h#(>BEeD$b3p<)X$5pCmo+lIxC|V|vpt@SG7N(uZ7r7!!@_?rJO*~t#2e2o zk&wtyd2}4npuTt15XO$tt1ZKL)4}d8=oVXfmRX~y!Gf)@P;WWx6&0N`_HOcm3P(wi zA@fz?8vo(f-p6}y5A3FiNl)`n9=^ukefp5AVFw1wp`Q{2FV~z#U4XCmBbEK;x?LYBnyLM0?8|H^yRvpL1roa>&8Q9%BFbLxP$Qpb`p|`Qu7kbM{=c;{>N5 z(Ufy@&2p|oN?B~q;6MBLC4TT9J;;Tl%+SAObqJn-;EO3e1QW0PR@1VH@%s+oWK zQ=c)N%_p{-cSMAL|9Af`{)a#L-|&eK|17#XB50~U=vppLl^W4Gds$l`&5zeKff50` zweeen#WpYR?$^x`-}t=!Ndu|7G))t5>{sb?-jRdvE6I>;a{9kNCdBtynW{-J@jR^Ohy(p^HSqFdh;f{TxX$F$o6>^4hmK zg4GEDYBw3p;^Z#%$WNYBu3bM$VnO&cFX#UISBNN0g^tIK>O+&yj+~ zLP!k6p;UvCW{URoSqplaHez!+C9RXy>lN9?sst@oK0*O1ft(T{1ct>D{JW^~sy#Th zG|MP4@a4-EZIPsNftL5mOBF*mdvNk$g0H!@rrbup@t;7A9QG&H?><&RgIlsAdvW5M z?oj^7J72@A_t&USTnlITtDk<9AHSMd$v}wFYOhNo4z@Ew5OUHbIDBWSHCd{T<-tdN z(_LEVIqr<8ns%oic+pqaDHq$k`9{kM(ZbY+^9LL~_#~$evzst-HDOoz#qVu-Zc>3H z>{2bNv9(fY8ori=9@=#qqPn22otW10SAX&m{`OCOi7CKQ9*7>$Vprc_yD7)C&pMI; zzWn%kt{*Aq7E&v#wBZww$nW_*KR^r%{>%UJkMriQeFx|6y3>3x9WyqKxdgs>tF)h` zGB!4z$F$m67mV58$V^|JRRAxM^7hSVwHuD-l>c9I$n4WL2Hkpte@a;TTz15w!VroO zR6ZK;zQ;-Uqi&>a&d}ew_m%C@Orb)_i77i#%kOpHHF({ZJF4Ao{UwV-n{6m<%QBMn zh(GWj{ejva>26919)J3IkGU!9w$Yzz9Yb1K$nF6%^LY2(Q70+J0#B!*av zfRuOj$X2FZJFY;67?jt)a>>1?6VI#?Ax2b`Xa3FqN%*S&jwojJy8Y|FnQOoBV+fhp z(HGG=tuJlPwoH(ULCY?50T_n65D5PKDPQM5`_4N#yEr7Li0CQ)#y=ei;dBisOF6Ti z)+Xe{!Al!924hj|kn-rc%G9`)^104K8U1drmuq9R${IO0_gv12G))H7;s1U0T}xm> zLm*4!$)kya&|z@9!7ZPz+j=j=ak4bblm03*OVWA=rNvky!U}Xf#@##z$_z57^KAQK~6c&I#Y>7l^wj# z+emFkDvAlJV z?KtU|m(LVl&Yjy^(UBJa?!Y5n*=JJA&@BOC8DEQPrl)dUfz3?P`;qPM#HN4Qe9V*B zJ!UGmh-))l+VIxkG80p2!E7&&Eo=98+y1!mNF9ILjb=emlB{{}`@WuE`MzIiIM1_o z2-gl*tkz>C=H;1XRcZS&+w1c=yK!r)A9VLl*5Q;Bd^5ck;mdNSZ6q{%r6s3zp=wIX z-k|*UUvs}@jAXOv?Y#IU&K_F!yUIkm`?cs@ul1@{-Xoo_*jrw`9bIVK&Dxo>yJFO1 zCGvzKOd<2?SFZWqUw03htmwk?mv;H-pO2ot>1!w}!>}L>3opo!Yg!Ne0%Zy z+sPw*^Rd_3v9kOU>d0blIoO=fBFuR!A|qdadgQ-)*X#J2vw`oc3j z#SS@G+`!Z;zrn1kAqHX;Q@w%k2*j)ggWg`Mm9kge)q@+h1!MF_k9}L2llMC!h$`!l z44nU=7m&}qz|NZE_}Cry(mHVVd`pAq+EKOXGFbDbNs)Z?Mp}opEqK0bz(Gs=`U(J4 z$EG81J@u=nJMQd$p+JVP%SRu277;@x>VwAmC8xmme$R*am;dA+ad`OxU-;}Ni6sJ1 z=4n$F?%y{e&mLIPMB30cmefA=Ezk|=wEv>@&keQWUi#R$?4MQNS+qmZs=fA<|8*c2nRI=IQ4Gp@^I#nbOlQ8fTAW(x zKJ^%{7TBXu8BxJSM$EVUrdJN!x4$CiL<|PXdf{jOHhWWMp-K*!{r7w;)9z`CCRl~! z8;)nc2mNyo11d!z^S(OcEM{LL?j!I0YT?`7yN{+s2ym2d<8S|iE1u#NAOtVoFo6WZ zFaXkkKqOWgT3|gx7_3BMPDno=vu5`KN9#uR=yIS2{SL!|AVLg*teK>+y8}69h=~{i z(XAJGGys$3Vuuoq9%5w5iIkJ`rzWztAv%1OU&Dh0hdVBb|?WMb3|!FQ$#qJcpZ zZ(ff47hiinA9%$M0}~+(Ji1o?^hY1!!`GLr!oU!e9K3>@mO@f(F{@V^3jtI@{?ac# z`O0u%(pTm}2z+h#DNe^bvZeDq{q2+`seTs=lg}X&uT32N?4z7{b|R{vAvOQdv4qAEyTVs={ZyH&ES=w-^j5#@4_*nRix~bu4zJY6X{CnK|BCRbK;Tbu5$jW zn zxvtdaC(NGy%Oz}V_GR0-%|74i7~iOcwoel|tofh*-2ce3*1?_M_w;iwLT5hiudqE` zX+A~JJ>E{8E!r|GwUu?78v5FF`m5Y`AFGSZ9&P5{5Tehjl{GZ(;t~A5m3QO7@Bgm1 zBFR!A6M@syc}_p^70M32x_<}DU-7FgkT2wBZ9HMTZgvI=pEkPNn1aQTWQ@TL@*;oY z_q_pGUn5VMJnZnXhfZ<*=$vhXY`{lx7#QM$$y1vOZoh(6xpFPKn3OYC?rR*?)e_9YfiB^Dv@gDP6|1|Svlgn?pyMoyzMUT8Lksm z$hyOa&ntiWQ_t~yJWJHXP~2d}dSOoHnqj2iru^ikKjrn8o;m-9aQ-mex9Pt;zG${A zoD$(E8+1_niL($=ItxP7{Co|M=_t z;1B*8o_X?N9(njdA_*&r+7W;%d`q*^&{7v}CY;Q-+SUbe(@{K`?agF>8$9Tjfl=M$ z5t}+ox#eVbsavnu_FwE6@DMUu1vGL``H_ar#$(J5xM`B*(o*IcW#o zbcX9#Xk{|CuZ5zQP8t5Q?|VIOzIP32Fs8SB1%K_ItYKI}D1Ek6%rTEvO{whC67gQN zS;qiXm74cGInyv9#+z1{@HP?8+Zux5GNim_J+2w2(Vt^g2D5-wvx;a09h5ho+XWrm zI-1#8?y|GkVOT7Y5Li!>VO{4oCde`MhN{o!w$J+CZg!NhrYJ87qDE2{f+SwExW*rS z$G!ZTyB6p$l89WHcK92gf11DX=yf#g6C-F8Qb;uj5f@O3wWe5gg9Jhd7OkzB=byjy z>Tv#GytfM(J3i3Ix?A{BCHr+k8dK3KsVHVjT0Xbp;AbCZe-+3B#@wt0JshW&D)hGpYhBfdTHE@M>!S+vrI2JL1hkf4Hy)%*O3 zPd@30LdUfW=c2Vg1r;o3<#+y$@8Odl{}^}QafVNR>?2&ia>?}M8V6uL&;leVzR~*j z-KfX&g)FnNonLkGm=!^$j?d=hzeL`9ODt=fJb8mlZ_Wy3y1hdcB5>D!;@jVOTiw%>1Qyqx;bTDceXqcHbG_*S_{5|G}@_gOtguB@BCf_OaXf z%A-EGqj;vN=E%g}}gG&IG@l)n$ zb062C+(^5d&&hoM71-2XAlG04!Ka3i58f^Ov9Em<_r*hE2!v_DW8)rw_JN0a;QG=a zQnLwl7GIKQRk|!FuFZ)kOp}@G$%^F6Gmk&}mT><1bYH&+X8xD@Z_^jo_pkd^nub>A zPBT1tk@d&F%-%E*2Qf$nH6q?i%GDq0V-lp4N^Fd(NV{2!gr~LLRVI+`{7p&k&6(Bw zT94+Y)v2z&=rS{&pXc_KVe+HO>GypHhr6dh-8VW5hS|24PM`v_L2nk903^vQ zhiCa~|Mz#I069R$zv(*pD6kVU?BB!R`;j$aI0a##)T7UuOxXzn5{yBI;5CX}W5%@A z5Ta>uUd7KCcw#+`tk&y|Hg4Zl>U~vA<5n``v}Vea(KAhGfa?}`PL4tj!kg|2?CB9H z4M;XP(!HG}JBuB5cXnCC1sa6)dSwTA#A?kMr-gS zA>fx=IJxG|6D7SWT$*sAVv0^^im5ge1Cx$Wv_Z3;;c%e(&nk@w#Lmt|F*Km1vHpL3s3xw@)zqPuCDrhz6% zRKGWa7)Kp(bQoX#jf{>XCLHU%*U1y$pAgvK_A z2uJQebgntRKHlw#=8DRslm;?MPsNWb#e5LaC`IyFFJT{`Rg89=`1tjV?mim)B$hx3 z)m*0Fj1hK zAH?lisZA-;Gyj_=(F({hRGLOp>HHcCi=M|l`AN8p*+p1Au|DCzkz=tE(UhP+hX(T+s9bHD zW%anG210teA%3b&-^stXxXjx2Me%<5+sk*K*?A2jdAv4rVsVQVH<2QZktIctQmg4GCZ+ z)N%gl?>dVs&pd$Z3`^ePox`5_SpMoQN9pY{B4Ph7E13*pvwNXn>=fs4vhhijx zHuSEicP^T?O({;I%pur05|x8=SA<`__EtXcw&2B~#?f0(kIVbRLxC2}iCEIuiwOx?@^=A|khv`+ zYVoYBtnV}@Ha2$VKBT~=if~G$5waALCM^(h+#K#h9pv5$cGa`?{+rl#DC{*vH1Bmz zizVg3mbd}C$OUDACG9!nJB{y-;BBHrSdti|ohZ!q}8X{SFeZ_B$m8;%{#AWEHOA^M*BR;A$1gcXx!I6`{~?%`z<`}X^-ao{PDagQ1mHl=A|X%tUH9Hk@Y+I>>^Boar_U$N zmx|U?)Nid-4_r1ybBK^FVLQ>;PYd;T)n>+M#Nhg%*(FUY838Lb0ugW+w1e%VWBll| z_kaX*t+9p$-*fM4{wHU<3C1d2W4QPme}s+EZeW5pkkf_LearvC9(c*7*F?)6HC;d` z=g zLonTOIs|EKuxvC<3|e!zu18QzYZ>=Fy@_@Ot=dx`NqLJVePe9g!yPNfNk}~71gv<@ z&?Eff6VBtsSD(dhj-XzU-Y_=Xc-75E`2Ek{&k4IkD;~k(y`@)=8jG4(<~0@AmY^7E z{H)p4;Gn?8ZjF^v(3ZLbuLDMl#yzte$#1MnT(q|Dr%-3yzqli}E>J7=#t^_h7q z@L%sZ84%C=Z61j0CfEM!948YgHWQc9+zNtc%sOYDvyH2+eCQlzEgUmn`bQ|3!kLiRAeWP05MKIRa*t>?4GZq!(!PL_*5r1G^XXtG+d;Td7qRoEx3 zmjC>M%Q&w&1nOzyZuZ5aw{YZb|BD?6eFGb3T)=tX`a;(27R0XwE17uEsaaQo4?La9 zTd)EXG0|eS;yurK(jqVYiOblrXmI_A7LRL|8C~*q{Q0Xsjh7|7l*&p;fl9)>L_x!3 z-k9QgDnY246z3hi>&RAq39hx-oij?ly;fMH#O8qDd{<;A5svy1w;pvdEp7u?L>kWD zKITWCatVuW9pA^f>0{v^W1^BH_&&HH`Yvu=tKxG~vx>(xjH?(EUC)tcI{{}94?Fz{ ze&P}5@M}-Jj7$76gb`vJoD=SqCH~8YZsMO$2;Me`xag@-Faaleo#10aY?G|faV_L6 zR29!lSsz6d+gMr~TqfP5UoacaEo(%y99hWhdXWmW^XLlTG}BXi&kEhgZ)bT;@YbV7 z5nr_Cw4}3)o2A?8{neajCZ9Cq=ob;vg7guL3zJC+^2;?-LdDFn30utSvShPXx-@Jg zk1whjg_J&)$JG6joG3&EXjRZ% z-0bh^A2Rj#f!(aV_UKkrh0?`N)Hd$Y!*cPvPUbC&+1uVMeng}mpQJ0V3|r}idmXB<S!wWiyz!xqcZ>;W#j)3{ z^23ijgO@z3{b%lAGzMow zHsZ#mf{WF?k`_~xVxUN^gep@RsO$G8z{Tfh70q=@mzxsdr}MGSXUK&xYtwXUOY+eG zxd=yYSQ)@f1gTAftsxXaCAdEvZ+XuRY|uv1!)p>xr*>9)%H}5_F zy2r`-t|w_{*spEG(dimbd-~%z>w@!w`zi_H8lG_A$T5zeSkJs=_?+3#(_md%Sh?D= zFg#~XC(T!w@!iH)WV$n+z(lr!v@v!iYKShCkBu&)7^_jVXo-1NJ&MKjmh<+W;FrGR z5{!0;I$C3BWWtH}y_U)Q-^xzoaZQ80_-Zcr_Fv}2()l<8qGLcY>JXU_vIq7cUHq&- z4`$5RO*ronSMqgFJ%<OU?C}T#DK+rt!>B;pz!(wu&w6R1xNy=8T_7~bw+Lq+QA^=n| zkrjZRj@DMPjHT^ewGbfLr(FYLzCyBhe3PdSHG=iE4IXp(xmjqPmPdpU=X9HJkum2o95P**d(@*GcKQb8`MZ;C+fOTU9gJ`1}FmDw!) zmMFYxh1Lu_k$e1gYI|5Emro7O$zX3FzMVE0*6sM$2hgv)BdrQAW47)T-gC`+S!@@} z0wtJCdoSE@^IbR(iLQq;Fg>0_K9J8wW^Sr`Yq_{wF9SI_@Qh-$GLeT!vxr+e&X(1i z2lSY;5mHDk3+WITZ`8n0LYhob9`WE^967wsb$71d#elJhI@a#I0e9js=RWx1Od5;b zxs&s*cp^uSoM7eHy%@S!3(!}8gNEhla2`gxF5+p=c{Ud;e~w@Mjwmz$F9szeNh0lB*+EL)YGv4#0F2id=F+af#k-F0>l~1p0B>_JhnB9++U$bX_ z&rkk`6W;E|*5Dka(CMX<8X^*G>fW>VsoPn&=QzfjFj$F+#|aI@5$>7xFQ@#Xg+^om z*qMqd^RXtMZ|Y16%&M7gBC;=ln`%YOsv(lPu!{=B>NeyzS5#UqE5lJYNi;+dVrY%w z>5n)A_0t-(mb)HMUy`3ZjQs~ceGhltdz{ub9NBj_7Gg@eDCDG_SCm&}nK^dZ)Zi=$ zTq}k<0Oz4-a%ymf;r`XBfU=W<^Somoq)tP_13UhI3z&80o8-Tz7#}fMGht%a`K4d{ zDW37nXQN`KmYZ<gBQB;^G&B2~HvBG_hrE|Ia;Ub^&v;y=w?D*`eR%oE?q z*g#Mg?3Qy`-2X42U?fqkM&Ky{XJX2`vW67T8xtaaRXopl)EOK;w90jNtO61uk#UUo z-^P)fKf>NK_p)&2xpYh0Is4&HVfO`>G43}wcJv^9--UYO;+cpr+P0I2JnpGn{p{y5 zT7-+_8eaNu&*kieBZw2|4Q(@K;+JVJe?D&UDt`TcypB8W+lbk~G?k&w+H2se!D^PO zLKP*Wnt_V%W*b=IV-aw2A&h9HFtL!vV42kfm7W`&)>4lplG(ta70==VT(qmjXxaoT zvCxOoNXJFH;K`Sr!?{~WxNd{v>l2(RKJ6$HAq8G}4YH0=Fs^5J>v-(BTlo6RcJdup zp2cI%Y}so)t?MwVG#Z32XGeT?z2WyiaR(nf;!&{yltPr}^JEI}Dzl zbXOW1xKPUtwOFPi zbW3|VvHPpoap0Oj(XpUGxV-S8giQi*t50;l`QRfKW57GaIDYL1FXgP=2l(x`-p;yT z3IHyOKX?l_{>@9+cJb9*^!Tr1$Ace_dH7?w=+Td2(Zj~k<1jhFvK3m>a^&zG-2B;V zIs7lb&98jhMSRmE&!Bbt@qLT;&^A528_`_+^-Oj>oZCM;=Hu7hjhN-k@TVg0W$E4WsRryNSfNR6*p;(N+_@ThEE(} z&+<7ua<|fGO5PN|A2+l4YSEBW@k**H9OC_ZY!wgEK96O$=|j@etSCzXDB5V?xV(6cPZ6l|GcU zv{^}vB$Jdy)m(=)Dlss_0P%sVPCqGm@iz7qB0>&;tBj`j+#VRSj^qIk#gFyA^Aqz<7bnfrd&q&u! z9}h$X+59*?Ab6nfIaR;DQjb&F8Paj;bUg};F(c0(zx?;Gb`HR>1X(!>M2IQj>DJKf<=V00CcAPtDnnh9&Set_$4y_SjH!mjf!XXlyc zGg?>zG;*{ z{MH}-FFGAnj4|Rb$Eyo$0@TRfBSlFi)lbTQ?U@jd^ocyx#y zpPe=oFtF|{e|hbF{K%8fVgur^&aqP*yY{p^V$VW0=Zk<95Ov^V zwRN|SI>k5_iZE%&1cz1BH0&QQ@Q&M#@XkB#XTvNbtwB=hPqm0OC>;`Pjv3Pm_?A9p z-7CRerq_U{IQ^6l-F-Wd*OcDGqzGl2?*`#BqzYC!K&fw!y|nZ(++u3&v%0 zMZG?912e!IYOOldw2j121697Sp413%6*x-lVA*F}CoU;1DbicLU@NVWS}KoQ3Z|-f zWXZYK%;P8Z%7X2A&f|9T+$Uen{RdZh)jxlh&)l~`%<2vlNtNo}vJk?edFzMo~DQGwXu zqw5@B8D~vx&WlcdY)U58jkQCOu+r07R!Q1fju;7->Tn%RM!Pt1{eUOp?W(8n%6HtsU%%&WZaFZa?*%a?)G(W@vUbY> zR&I&>N*zn0TygF)&w19FeAm}KopZLIz;Zmsf&k8hN=@G2w>_5rf@eXu%;&D#&u4Es z2$Hh0Y5aeMkdOg3?B)n1Ff%`r;o#IeWNN_4f#nj+_T`sU#y42!a>mALw96}^mQvpy z&#Mo+Nse@um%slmp8wc$dBTN@EbD|tS;S4cu(ekeETOi&cNi~VeAos~4oA0;&G(({w=DN$F64~Y!P zSf2Ofv-y?hKbA!-ddY5{a>ZGE-HYGM*f&+yzDlc)3qFB#2%J-HxM?3Z-n+s>&)$Mp z$uv9!h0_GMLMNfPVKbs_l*N$^m1VR?F^KxG4Il`k8B#-`jI>q4kYXJZ_zp09s(piH zTP@02m=LCWwt3fN_P42o4)c$pXj7j(o#SNJ)xXt!u6uPlLcshMKCs{Cf1efdHakuY z%z+CvbC$IR^|AiGBsiL&7SHq3B-$OPPRnIt8KL)RqDPEKpX$2%1F{(8yb01Z8 zR6spyLLv%x;WHWE^L7^8L9C>tM`Vr2R6>6aWbzs+IQ0&(0ur^LWcuxUT2AnSXYb~F zo_Q9x?;rE-kM85Mcdc=7rDM{Ah-cek%URnS9&^QBp7Q9kIeQy497pv4wu`YYB3Kvl zXp0ei`xxZ>Z^g3d^6?sN*$D67u$*B`o%Pu(Uw|M6FF&f+?4Yw4ZCG$vX%g8(HK zQr+w%js@NseB(CLf#5AT8F65(;k|bs<(;43$Eqx2WyBH$OQ-jQ^4Eq?UOPZA+G4zmeGYDtAI&x0+o`(_lTnC)H9_%?o@^S59)AF3hH@AK3M$|J=>b&jX}+ zfGVf>9Zp*`JMF7Bd&ls*5cX(xc-!%kU-^I7x@`x}6H_Ke#s}Pd`(5;X(m1||u}-q# zRDSs+GM50G%{wz4A0gFx#|Qp1rlo(__tAdl<%pkPr4I=tkid{*S;^Xph!VDY8k51m zh{bsjaai%7A#37-I399N!$Y2Tegq5)RxmaQ#^U?1-`bymUI|XJ*w|d4!GkpPOIOgI z^UbWgWk#yJ{R6jf&(Sfa8AX8GWY#Od4#Bx5)>xLjfHMoN*l#jl zTJnTWqgAqrg;4}bk=Y)^%htIt6(|qG&&f&=q+QnJz2I6`w zA){Exg{>GBY<#An#2^SZB**fW6TRh@6?pp%_wdR4R`Cl=th$RVwLN+oJ%;=#`#8-p{W&gpIuw_hxS!dOGjvPCJm+<@G zecAV>6?g{C*;#n^C-39n*s!Pd@p);X)ZM5$G&9WepwZB@7H>EBfggM>fBgr)$kJ#B zd(S$DNvFYdh9T`A4@8q^2T@lf>S{rW=qBw-7bStIUiEc5>*E13^3721OLA=1meXtV zX23fCd8H$#BRG8Fa97jB{NbCU=#ZF@pmeg%*FWcL_<t~lP=%r9B*q6kh> zKq*DQSH6H@VkSj2rqPrht8M%o%-CZc@w(3(eI#?jARA76OsXNB{MM2PCpj)^kk7vrVplx>^OYasiVM%=>I-+U?%);w@Ja4l zRg8vcPSq^=RJBkOfmUOHu-NTRE8l7s?oGf5Io{Q4x-PsEXusEJu#%YZJKJ~ zG!ksmo!RG|uKuglKiKpIrww^uI5eL8d0*=1p6n=eGw-dnSuk7^gCyBt>z)Pv@~{7# z#xBxFOGi>{ox*jW`8-O?tbq6h^iYe>F0~}lUX^z!Jh;l`o!Tsz%CatK(uUJ|6d?sf zIoq>w)$@^$-NN>j+fXb*Fl`1J4<=3H%QmD?dNJ;{P=~RG5`1L}*-20@e7%n2-dv5s ze{x`jfN@2AgP>U509nB8cod^^p2vE>g;pG@Ex-K-|3K#(z!#Htc?0uS4MbD6gc;5A zGvJ#EafV|m5{ft^3ukS%Er+B53mUf#LR#=X-41 z;2k(^xapANci;7SjPqDGW&zL6EhDxqj%cmWJJ0cr2}jn)jJ-vh7HJIPEz)d9G+7Nm zad{h;#nG4%&UI094!k>6DYH!z$ug{sv=u7hL#lKJA)mGp6U_U$+LvS@FSt&UexIxp zCTQ*waYGDVos~zu?Nhhk+b>*1Be`xRB8Y>@XYOEO-zrum)Mc(GI!;tx&=LGXbahpZ zO=>VM#1MckNIY5c(n=buwAEmn4^>S<#Tc@Lp1`U|fAzKw&Gc69>C4h^*0O5>ApvNR z07F{p@E#le>mH3(Cy%Pdm=3qTM&B4li(8?K3)y=-J_KN>;^MyPuth8SAEfMavz_P6 z?MuAj*T0FyKBgBmMXP7fvuUlM8pP^CQFzyNpXDi6UlkI_V|d=Td>bEm@B5gnbu8K) zT=byJF~-L1KS@jp)&QrW2)OtnVuf<7S^`$05YVZQ(U63Gg+EMupWC9uz>H2SSJKyn`4N1YwIBN-$|k54siE{VeqC$AVu5wKxYyCtLXTANynaNr!1o z-ojcZTH5r;)<+LwvC&dFxFg}SF94gL9Q~<*7e^ki)2W98a2so*;uH9oH7V$>Qcy@+ zsp9UDI47bZ1!vo|^sbK;xfJz+jmluCBcgE}Q@!b_@`f*u1wPIQCR}V*zvK9ak zPcwF`fBa^a?p>pCF_JF%C*r^gC8b-^Mw7ig`4{4h=I_CrloFv+EZ`X=L;I5HJIW=2 zc%w9uoGU4rdXi#7n0^J!gXftH{NDSVF39_&`Im(=0O{D)RF}(Z0NdCbh^B1cx0q%- zt=S4)C{i8*2uiqp*avNMxl5A-iMU2p!HKf}$e1_2>qc5Ld0@V~EJ0TbML~`5ghyP7 zZJMwh&N=@6^{?iRd++4&PkSxu&{q6Fwy;eb)c&$Mjfic1@tqvdVNYCn3hdA&V1!;l(fFx!?F~ zoG%F$Adu#<6Jw67Y$PQS*mT%W|BzZhkW5#@->VmDX?gCUmUUm;Zb8E_l7!D-LKf3; zv^|sVkuPA}Y$b#mHCgD_nDZbdR8l1i?bcX&7ZXdkptM*l-UXrDh()~+yoxCyODOJO zXb@~Pr8gKXjjYkjGNVhrjsC1B;@u*~br^+ib%F2vk(aRH#z@;x6xb=Ad$MuWSj)Kv z)rw@2t1tnxMjr3Ik2#>roTRdnSviaIm0SRd&wRQBP$gw6eNRDB;k{W=u@>ihj5To| zwP3A8PU>-ZoFUZA#(;!6$|>)JibOsiQ%Gyc1)eY~`Q4qw>WOiCX;MyXV`c`&$tkv=<+fm>Z46P-{3^G;yM4HZVQM0U?_U zN~Bzt9IAC&18&}$6}4d(YfNVWp{Cc^Hc69GO&#i^bQN>qnslp2)dfjU!(!FsqsSd9 z#97cxQ5z!l{`ws^v)(KO%fco&Bb%HnqHjE>uwYvDA3Mav7}P+AusB-apWgN+Zn*V! zzW(2Q6BEC}4Yz!fn{NIj&W|Hqd(^u;2l;RQ@AUig3J-sz{%yLYI*Z~%xndsN&Ut$^ zj)Q;m+Bf{X*}p))Wv-<9SHFAudKp|lY>5n>GkyQ*0ov(ZyIKFI&&%+c0w&g_4MiAw zeB1F|FZeco@fUs;XshKI7}L0SeD0>(QLQwhFTqhPMfEy~jZBNNnu|;U+4r25R0Zml z`7Yg+vN3rzAfDCbhvF~)5ggkBzY>G@eE_GJVM}8)vT6fJtTEgKOHyo-j}{=GZSaY) z`*@Fo7)>1b2N>xQgthhx79RYQtSvtbgN>%ukpA&+-tuuK?52?>D@JjY=Kd|?HXK_Q z>lZlJm+K?{lgN)Wfl3laqNeQA4jpQ~YBJBxb73lrsS*{dLWRZ@YlyGrI0cmD=U0MP zvYLt%Qosa!iA5-@%2a_52i$UGOGUN*ip(du6lJ&~RPb}o)AugP4S4lA16UGZ2NBom zv-0VEsREcRwRt>6b6*npq-=DGq}T>;T9M8Zz@t6Uv-Z*386787S;8yP%GdCA(;YFX00d;WTGZVcPoWZN;AqJ zg>|cBX)+26N%AX9K4}NBDoEAOwD@Zxw8n(UN{SiD#bC0`baO!o2KW&sPD66`0WnH> zUW$%3%DqQcc*_Uxz{n&6*l@Yc0>oyFTNT9hoVB!zwebc=Hr7!algEhR%(M3JnpgfM zpS$IHe&{D(KyTK#?Y`@|`PNTz{P+Pzjg47we9@#S3oDOT>Uss>!`9Y7tkq!8>((sv z&u9J9ARPstDIwuhhcdi-^Cu6_%<7x-o|n!IA%5OHr*3E6zd8M#b4&{YmIIv%!V5 zrCx%@oSAfqWr4uQQjrKTHn&PWhzgA;w(scrCHy&G%jm&B$hbKdaWN~FDq=?5d${LM z-}(X29;aG1z$R039zLyCXPPn+kF++#lo%7Vi4=KV#v(G!WNC;BO#<}fI?V4Yl2K0J z1#>QPVq!O12zbfji zc(IqXY19VZFM=3L+ESHV6{WnW4l;bz&r2nZ#R@5~Fuf@UK_|R6X{?J?r)lkmJmc-3 z{Lm*S?c>bx9)I24Y+Fs{OrIm8CB8J`a2y;Hwa;j~5Bh!tB3Bj>3S!x@EWGK(Pvz__ zTM-QRofz}%U-?JI>zZqehN^OYFbPF7DZWU}?;=Zld4duxrm2XMO!5m=-mCh;j2FdM zPTu!OCit|lO|@NsEL7CmJyh)qy$ejt7Xc)rSsb^}!5-=1f?Zp9{eS;D%)~O|7b+t$ zJXMWYftmCzXyu()PE0m%qU>JYMic!iDMVr4z5~4REpOu&f9aPnV@1cF<#w4pXP<{* z6f3TTtp~V58%{lawHGkiN<@XuMH9b*7mxLV_GE_cW6)ghUDf__go-Vaeb&L`?wIvC zS6T{TJ4=W<4Fn%dVs45?W(M$I{is8*9vGy_oKNXFi56pAMn=t8T){gemgb8^?}An( z4p~(G{4f5DZ~CU^GO{)%8wuKFaKRXExaD4s9$(FZ^=un9>CdL!3qKem`I|(+*O+Kh zPJ)e;brymwD>#b3r5Y6?>2n%`5^G{A%Z;stY&C3Ky$k=TzhtYs71Yzv2YNP%*QFLq z28N-ukp5QTn+jqA5gV~c@4>h9+pl2Zf@je$?L}RSQ3>enJO;yL!}5Zk`*UtSVrWdz z=#!O3lblQPcluJ^cMeG>08{Romsq0aElouZ1JC8>pUK`WBSb?$!g<>)=WRD(Kdoq#HZ}WXE7>Lz zKmk*UiOy@^MJA?#r&&77rjjCFl11sMvCYGk1jzXQFfqYTP_*_$9I4G^@Uw|LPEIy+ zRg)QBSCw89a0JuyJ%={<#}D64W4p@dTbe#|Nes7w=yY{$rq=(1|AzhD{3@CG zSL@<&Ke~ikz!(S8qY`QYs~O|%8s4noWDRdO=w(dD2D)r`$m6c&KmF=2@V0lojeG97 zhj0F-Z^DYnx#f`*v}3sap8Gj+Y&8p%^;(^sld5m0kUKI7Pg#p<%XWRS4t|@W87UVP zF}18uNsM=Z260ryv9je{`X~N-PF(m6OiasI1TPj<6RlhZ)Z{k!S|iltXC;3oF=sWQ zu!9%6<%?+^@_n?Ie=n283s5(Ty$GgM5e3`u>bHJ|TMvh{luETvncSHIIFTTB9| zWW?kk!PM4_2S~<&q7BEuTOnFSeOCI?Sova7jbLBcX4u~zA_RgZJSdIE*aFV!U6sZx zA~`zSyCnP;j7nO3w%$s~rbZmE@Qg5yi_42An&o5tO8?2*+0l)ntdo z1}=^(gP@4|og_Uu^*OymD?pcWF7~qolu7)*42ZRswsiQyEc_TFr~zjjzxSGt^Q^CW z5Q{jx(@L^E374B9_WH^Y^%!cPjzrkqj@S_8;OZKRvUAH;TEH4%X>pNfKjmpW^Bqs) zb2r?`Ti^B%y!`iG&f!D%a_GceEH7+l$JVnMHOr_YM!1%-NaL7e4kBQtHfGk56OS_m zxanm5H;d1+{mn^~6)_=)u8-QaXtKHt#q`40r!5nwd(0nft$wOlz-Dg`SIm($l2knl z+~pY>`y6tlYqa(#XsBl!p5T#@u=nhW93B4a- zcR!T&tj8kTFJ{bAt_r7Us2Z7hoZ*IBR(Qp0K7=uC23|}6-w^#9b7YhFP2p)NfQ!^7 zsX1HWw@LY^kTY-t(E;k8$not32_dZHQR@<#YSE=eUm&g~^@Ec%L3Hv#vF2!nH}E*#Gln zDU@jE%5h&w+_mW^-BZy>epfMXCkZhUl@9-=z<{(=d>)(Gam$P?O)kmotsy<2RSvB5 z{PjP6jvx8jOA%=qZWEhx47vZ*s8ukR7{7;Q5tiB!6A@0VuF>Jyv9!dZn4CP}p$~ls z553}YUij~Sl7D{JyLja*U&%kc?X9dGJw~G=mKJuhytsp=S&UmS6jceyZA2n-D(zND z3?lt^s_}VVB>xl^X9u?lpi3|2;)^fh zf{QNZ!t>APf^*Mh%kol4GnqhJ6D6mNa1zEV4>+U<1E+A?UHiHJz=?{PpG>G3Q2yMW zZ+__DPd&^b=|=UIB%n)mZEAj;%i0Y#*t$ddJ+1vXOGyBZd#G2oUy6CukFv0GEB$>R zMehGBjXR3>lMvDF9L7}En%sPY($cep*?KPR?uRnkc`1HzFP$HSl({L{QUyS&g2ixR z#qor;)iuYh|nj#B+R1t|HD>gpO~tDjA< z>KJQi+m_Md0?W(GY~8wrt=qP-bH@&L?AXDM9Xr{zYbU#R?`HSzGuX3t4`=Mz!>%)S zv-^x)Y*}7n)Hb0kXfkhR*HcZ)Q!R{u5P)7{)}`=+!LYJ6=GHs+v9>yn`($SxG3Tf+ zk}0~KcSNR}{iWgl5N{)O?Vj*#lbEy&Mp+_qrFza`cmt7_^30N_H-SoHB+zKiDW9hX zCG08*>%g((k0ZzKL00aB_51PTqe!=kxJfX>HcQyic4TQcc4-gIwsUapE>s&tZPuhk zT^vgv%FGgIL{w2{c-bF*h}Xa8real000CJ7OgwO4#jGrfHK8TY6^Z_K)d4@O!6!d+ z3I}SpfOjq^K!tI~IW*aqo&4a5SB8Kzhfw*kr})@Vn=a2C__w7}1XG`dDuZM>AFc`6 z-OB3<-!Jh#Y0SbH<*b%*%#hR{o#Nk`$An6YPT9gjH>1^-%2$sc`k|w+j1eCE*vtP$ z{-4)=>c9QSqD4`iiX z7D*2BKD6vSudbaY#zZiQ*rplNK=Ym@gbH1=W~IqTlT8}rvB-jfg3fu|fUReupB4nb z_z<`iqaDQe_pDDknzmuf;vypv zOy>0-#o#?0K72o~e#7f{_dmar_q^vl^s5_KMl3d47`0nz+hxQje_h1C-i5MQDmV$% z&AfL>L`y9K6?z>fcAMXv@~$HujH2o|?~=W|MH(*A!%6Fw z!R2Xyl8lj<__%Z2xBn3LA3O?bhu5FhQ7?c~-C2RH6YXHu9-4#Amz&Sn#L1GrK z49;;tj4@ddNeMxW2sR0SlHwD{*2FM2K^G2H`od=`js}OtVIr?ok&xn4Q&l66@gAd! z)mp=jyj5LH+ex^VhBv?SHh%r(??S}jt<8d65(fWd?)T zc%3G%b7Ba^TvCl%ZbvcO1e09eJ}3ej7`lip#9p<1;1kYI4FjX4wG|jdf=!yV6m2at z%1YX)gVHKQC*`KC$Sn_7GPBn5L!!n6AmKN`i|3smzndRBZh6r59@pENQ_VlpDm@8E z4`tID!NPB?3t4g&mzL=899lhrwJpm{%Tn70u#9uQ_l!OK^pE^F|L%u>ob~ZKZ+^oY z`Nx0!C$7ErLmb?9FLqV2X2e3Xjm9j|*hMh5FqH(@xj|AuWFW{$)#6BR;^}q5!ykD$ zZ+`ph*t%sY$fPldB{^GaK`}A7rV*N^Woe;>txF&~h9fdhxRUa1RtVF=7ze+dhO|^} zkBi)+E|h5<&}f>Y)Q-x8Sg+sunGk7C=Fo%|auEs17*4E?Ie6$82M-^OKwh>;KJY^x z(2b!VsgcE973i`6L!yfs^Yg4^D_9{Psh*uoiv=8p?=Lr0hFgtUsSq?Ky$?Z4O-MT_ z5wI1+2fA#{tLkws?A}Nw=9Jwl1$d=kxLUTTKluo{NbzT< zzX@;h1PO8LZrKx_#<8~c)>Y4vRW_ABS>CessJ!+whoAX#FMsDdq>1L1v`{I48>FW= z$y#1C44*I8*XKmizTVhLEx>0)q81b^=d*2I7=2vY7_f#qK6%uW(_HL$;1eDqYC3O z=Wa8+{x_db>ziN#J0-)@!JktfmFQBBQ)FUZ1ZRcg;|X2gvoIR5IBIFdV3a5^RrC?> z{qV;=%3uEFpK;yCKh8}z-a@}I#;B!{C0esg%OXZcsK!JE1SUYyUFh8gskSP_bT;DR zJoa4j@CWfP*SwY1m`HC)f**p_48Upu)6(%o3nv$DX2&i+giR+W3Sq^KGYk|Pv@bE9 z{85WkG4qN!4IQG)plx;Bomc33$Hqp_(c^0zIed(+>q+^ki=%6HEu8joTDOIZOx_xm z<|gJ)i0mv2*^!|Yvv$;k<2Mu6e9l76xffBu~q z_^LkU#c=VjN7Q49d6VPsfxcY6R}>m;IB;C~(HH$0`wsPpv7tRlL8)k`99b-ja!|5% zN)~E@AQ9SXs=d}pxXI*}KE&-ADoJqt%uz5sBH;g3ywx zo6RSfq3f`$*V?^WY1OI!5`>}DZ<}gRM=VOXlmr_|{m{hUOJ0q{b$}cfl<9~f=s=8k zS1oz9<0}=7Jd*sbgiD$4CYoONeBXcizVC0&-o5pXG`5365K*E?(YB>%kyZ}w8q*Re z6~CcKN|6~Ioi#$?*-#@4WiGy!qpY zL!H$sVx-pI6I`p03H_7wMAAqK@o1blpWhkjw%XHN1e9X(PGd1mV!07h!b<_dEZ2ws zMgOM?NZW8|Re0CO5Ad9;_u!?;EVBSwK&8JX;<;RK6G3P882Ul;=SYY~!Su>5+u+*~ zore=EE2uFnEG#gxmW9Ns5+gu(!ebuG6Cd*!oC=d}%-{e0-}Ab^do4G9{zmS;`#x6I zj$pjO(9oC>Ru(YQAlf2oBh#oLN|KcB@jB+hD;~x>-}gEeM{P8X$EZqA7Rb`DB;FzU zn+zoG`t*PyoW|JAeaQ5=e7cwv%heUr)!{9Jx9HS0nHfSMz;vRP+M)B%caDuo&-(h9 z6DzB%uCCL&P_ve_B~UEce@1%bmlK$)J`UugqG4uDS1G|r>2n^Z2+)#vg$}18TEPZN zULYj~DpS0zJbS1xlw3n;>!*)awU~Rk6511ZYt@vb=}FZmi)Gxwue|IH+;=#n*z`qe z%mJ{)%9Va9AeaJWlfaVeE^FC8o-!ilDDPx|D6|b<`xUle?M$>eVhiU zY;wt|?+jEG3V;~ajpxMr8b&Nz7MEy^p%EMQbH@G`;1`UB6d}Fu`M?K0z~8<4HGJYz zpWx7a2RL^41g>*f8jNW$-iE*004)Gcdz@}?>6H)Soga7yBN?Nn4U0V{tSHfQMN6IT zTLQ>|MmSf-si8>*mzLj8jY69-l<9Vr>t_Xo%(SZKkY>Zi3TW4); zgZ0S-=YnNMq^Z_mB1nx}Q>NDbbo(FZaoRUU@gfWG;msDnfK38dx>V9Sm2$TvCK!uJ znB>$*=OcJjYqOSRtdzBz-koC>Ap4X}0w+8r?q30q^--hN;F~t-bJD!k2OoGy5f-*i zA!slB&;R`%UjO#bW3&m?krc!flXezRr|E5qOmb4E1dx*a?BS9Sv7C~Ygd0sooJrwU zJdLsReV+x98enQZSW|1_YniU9_7LX+1uG_w`7|XAtpoKO)hF}YHMkU#Vrin*n}xZU zrOn1zrQlzm;`>@6%}d_vBtTK|+PJeX;#(|Effb2+p@X)bGExFG*2dDAasRdj>jg_7g&r!-e=Va-UWGFn-5ipZe8NwlPe`9q)hd2YAyP-^d59c|XUG9$|fDh4Ds@ zs)WikR`{wXK9)EB(;LB0IJ&X{+69>*2}u%sPPPd-;2UGm7zv!+F;XqMtfiH%mJCvJ z23PB|Lx6~n%Rg1W#Rxxv4g#hcDkzuctgVl(EU$?_fMbVj~4KZU-}or=ByzU=9!Ry}kIgD-5xc4T)kg|0T2HLX-ImoMbeE>vja(2f$fk>!t9iHI{0M;~?N!LN-#eMH+Vr9GRUZ?;! z_^v~m<0LqxHKY+F^Ntr0I`6;~;3~&F^L-liG?!*(9u*0gAyY9w5p&X>Yin&0P^v^A z0kgt0G`bFJs{n~_RJ4~`>J@N3DIm0If(Gq;3?B80Sc4b>C?he`ThDGc;hW7ePhbbf z9K7n#?PtCCDVN^dgjabl*`rd(p$6g^K}`zy4G2%m{w|Hzg~peyFFuy^GFf^nQcK>4 zm=|X82LzCHn1uz7I%Qi+UJ70;2aj)rb_7dPCK?k5Ju&WDdQ1~C)Yjv`XQ87M+g8n=dcLvXc?@b7sJZhI)}y^EH5sxytEXy%2>f>NpMzH<-1|NFm5ua4EpB$NeA(yk4@X|Fy=uoF+G z9=y`0vU~vXbD~{8H2}#kmKbob{1l&C7XIS31#F4ZdK6;f=alhCW1xuh9`C|m*T+Qr zKD4=y5#Z{5Y-Wih)zU!1zU^qiz~nX-P?KsRG~PRmB%im;72Gmk&D(VZ#NeIf+E4E1H~;M2 z^g5#T9u*U`YaoVG4SFyXmE$^0U^I}ZVm7WAL2GQ#d~-EHiS-aPtN`zowrLo56WXRh z720-`X}Pfty$eM<^48NzrBr|vJssDH^NxDQO=_bt0tPzoX)qyJY(RyjpF^$_|7w-O zM3cZ1*NBESRBy`*!CT?Gi+Q_ML%oAk{?bJ=e#)W-Uqf6@q(QfvTfDz$!5YUkKD?EGk4q_UZcttKl^uwy58<~wKT%C z6j^{uqXd=+yo8~X8yZJ2E~vOsy8?8jq?jwpgFt1T$RHmJSf?a#)(elle33tV;n%an zS`^PU_pb0mzy6PO8i=Y6WJzrci%7EMSWD(asjsf}>|K?oHWGv|Ol)7MMyQ-ob60g< zm(%C#$HYn|Rs>bYWMhMNG%8y@I?sYT!s~zg$2f1t2%oYK&Ajhq(tkZig9+I5wkhbM zPKP(tZe&0UKGtehvGgdb8|zG5&(fA9mKT;X;|;+ykSrxc=~&TH{>}Hr+^>r392?^a zq6YCvvJC^_sy)*w=&-JSlX{f8oT4$4IV;U@*Sk$dBlI(EqpHopg@Kgw$;3DeB8<=Q zTE3GCq}10Zz)k&1YcoDK4gM6{o==2xx-;jJQ#|GLj?=s`K@ZH^=NvUaASV@}XiN1r znsQ!9brB>FpJsDpW1B2+N7*te3UQrBq1cj4*x^WfowHe66pNwnJFJQ3U*4N*|WID;~sVicOPEi`nwJ?nKT&NL=&m6h|~m4Ii{6K zk$6yoCi0%OiqJz}WAvT1rLEaKQ!R=-QEB$3CT{+z@+FIjF=!%6Zw3w0tM_!1G4060 zM#sa?AMuJ`{Z1NZs@v;Dy19^0S~J!DB!c-qrj5los-h+uo-Ih;y5fmKRXtAw zslNn|X%rAd43kMWBZw8cP3ie+;iQaHu0)f5Pw$8i(R7Wb02QLYDvncHI{AKbhNJwL zbZzR=+^MTj>J&#sJzqRH*AG0+3v&QboPU!eu1mXs46G&cS~I96w9ZLK2;iK^I~765 z;7k+_Q<=j7IF}L4iAXewQJzK&uJ37Vptah!EPzpmRfC}qZBh^FX`I2aldu1tU**_J z0K06DtG3HEro_*rY>k86AOl}aQg8|_CSXWHvv&?_Z3JxMDv7!8RS+BctP;RTU5G^x zgvK^F*GImX5{ZQIDI7Cd)Ff^hjbd(eHMj`WDgFq+o50$Q3av4j@T%px2^p0>XS1^i zf%k{stg(nEnDwPtQG=VcWD5&?WtiY3R1$PFO_RqxE!^q$BwA1RyU4od3i0}=irRAjU{Qc zQ$ACT1Pcu9^tsUm@}x3N)jsL^y%JYa_6x;MD~h+Fmg@cMBi{0nyJL_`3xlXUvIOqq zel#Ukr}8>@clunoTVaM_Qi4e%feZ}&*M)qh*kX-Vv%iuDL55cZVaR|w)GJ*-!D6ts zrSE#$QNs=QI$rsY*YkZ}`>?1H#Bn}tb~@D>sXpkO->XY9zZ#H05_}4%NK9@};ta@( zzi_+j18k`9Ic*2@NGS^`zPN3o#WQP)75^A6A*ntkNsEDDi27aLhm2<=QkXB=PU3B2+eq($mznq;Z!AtGgy@>MmSd(ldc~UsCVm|JrQ$JSNtNsdN*F`oAt^>p zv~U^|@=^Fo!3nHA2q$A7v{qYBmd+CrtMxs#MzrE#DdJpF8q?%0U7B)}N2{;%F@spt zoWt%SXxldLG=H<_w%{M zj`hWcR$3-PD5Gpb`t}B3`=U8~aJ4G26-{;F?ZY8SiAelFdxTuSQYw>Y1%82f6i0h7 zLB`-G@ADqBfu-4}`#scq$$F2Ck(gFY)~e9NEQbqh;Hyb}Gez~${uIum-*c#@gD zz+ehop#p=Nie_2k?9xw^SH?LIY}D|LgkD>hNp0O%Ugjc-&8XkP%cAjv>xul(- z1Cp7sz05nNQ8qD^Q`|Cr>zrric~l_!i0a!DWrPe$K}#ALgIib#i?vraCKJ35HEbnn zE{(AvGTVp1j|7SN&2gIQNZZ_wX-=JGvedSE6gMA)5^PcdJ1MBF9>2n{2A!{#_q0eg zcyFey`9eZzZG7fn&J*-cz4|nc)1jO%)iJMUNjM+;C<&OVb8(RldMPEqv=-XZeLhC- z7R@>Nf-43v{fhW0WfiM`Q>KFl3*ieIw_Zr#c@EsdZoc(<{wqgTO#tRdGefZ=woC-) z`;bwqTADS@Z3bJZIWbZqj*SL)og^>`G3TLbogmtPQLK7&BJ_>0ARZN=cRj))tqI$r zhIze9+)l|d1}=_u@(|}e*fnp=a#Waa=N*cnu@c=_!}T~6n04?utt2&qc#l}2?}BTp z#2J}fEh{Nm*(9$Z#srswDt%vVJ&Qb9XWkqbjuQiTS_hg_6Hi!H;j6Xbo3>xfR;RpY z<2Y~etL)zbVq2WHVP4`GG)>cmRsv^iTfUdru#}5;IubiIW$0TjtxRU&y!|Nsq?*mv zX^(KNX@JCPOH)H!PZ-5XA2Pp~n3y1$&#MKS(Xy04%k7GQA*KY_463Y97<)2t57>S* z)8uQ*tA^`CmEm&PWZBn%9wkVr9_W2Y71{S4z3XY)5pC1Zh(!&o(eTTE@HXx`yfO8r z)Sxefy>5!Q<>{OKEagM({|kdU1m<)u`S(==fIs;e6-j38IBVpI1!Z3JKn}^mdfES*2r4up0e`9v z)~KQP%RK*kUdq112GiKgpQ^{kKE=6<>!f77n|I8itxW%=ZOQ6HwJt*_p@u43Sd8?H z{3_45bQ>>x@j^PP!POCSVpl0XOA{&)S)+jC zf_vDS2^Xzz@Y8JP`*bJ934d|)e*V^Muz#TeGeT+Om`3H+3tP5sIT~6IoWFP1ZK{c& zq!4lj>5P;>so_~m^hH}p!DI!%vwtYTeAHe`L~FIs2EbMkSz_j1t0D=-{5`F`qEBFzgn+*u;>f@C#^;c5EMP>89gum+EOGTu`@mS8g@mez(%@uG@% zU6v~GiWtk$^%1}DKVQq53(|jK=BLYT<}vRI*`|aK$#Wtzx60Iq5X_>}zg8b>=n0a% zlURBnGPi5jtR`=EHqWn_E zCEq)Ez&uzUK4G(O!&aU8S*JRbnzFzAN4>QrkeXysdH8#}s_+M>M>an(e9vomD2V64 zQ)O^JGtb$)tpi%BC4)GzB9?Jy`Jw;thupc}(b$lP!&hr9Y0&wEP!tdq?ZM_*swOXP;9D8IRSA0J*;R;`5WZxZa+ zUWzM2ESz=rt~()u^Tp@v`CMUmag4G=7;mg*xkOf$3LV4-4}ukR_`Qzqh6LKvQdfLK z#ryN5#wI4|Cag1`Z!PDlwpLPI5|D)|ayNl+Ubpqqu8BPD34{TCBs2LYtSfo*2Nz|G7#z4KyXv>SWez-DCEmdQt#(EP0Vpd2R_GjSR9rSyK{ZtHf`f*y_ zQ3+w03ahK;wewU1z3HJ-|6qDtzR=^#0njr-&9q>Z-<-6}lnWt_e(qx3*WrKbXQa<% zgoXq)4eIm06}QGzVCX<*4U}nVSYNaJ_|N?>K6mpPVoflCicHaG-M-=1L_JCfQkvBs zD-m$IFR6P;3)dhtdr?wRH z^SQ`_ozDtoZe8TFg$503f))4j^>zM3w}a<*XJ8f_f4O>?H#8IOT@-rL;7x-UfoLMn zF;~%&c>aUW{}e=@^QGsVab3}F%aJ9m%BPTqCP%wPF)Rm1Nzsnex$r%KTSypQ`=*l= zBB|3-7F^)brM4(kIZ@;DG(JBQLT+WzLWjUGG>s(5X~4(kFx)KX>B)0j7cbZJbEe3t zlG5@D%Kg^hY0was-}|)DE#7B5wy}8aakk-o*B#)GUVkk=`K?dJYPJ36lv3uY*li`z zP#?8rxb-bm@v+N5G1Er^SssuiF0l@=E)kHTsBW6n+DQ(uPA+< zeNU0A6D-efWNp}-M>R7YnR(3VL+1SFKd@tS3ix6#uI?G!R;^` z2Nhv$v%tD9K7-!Jkf|MEHBx$g+xTC8}yH&{`e zbcCHG}?9n?cgg>2)*n2vrb^sw-Py zfkV@uB{28(8^E@P1b>w zy=nH^(_nw~a8}9C%fo8FjASOG#65RD6)jJRGK9WqdF4Ak!>(;x`JQJ#3>LK%lg!wn0tQDs^|HXmy7lC7^bBI0v+*q9?hlO1scPRM><~iuJ>~5c!UtNO$Uf7P8@~> zphMMx+9|%B+EY%JpS1jq^Cq(cK09duu{s|JIENRBB`0U;c;2#bDC#_oZPA$jT;urH zR+?~2+Gb~Ha@njfH}!OYAU?!xk9@~N#>%%edwFob%!$_WR)2(R#z#4}EeI2#xLX>V z{3qjF60y9>y_Y@Yf{#H2=PS=>PT0nDZlb6dGC0I$*O7S4&U4lHve$IRtdRgZb0Lj+ zN$V)Z^o|;3j>O(L|+^3ippLfgr(HlO_jx8~ON_r<~M7ypFQISMeQeHul-sap|w!xYxm&nQRYQyQxRrC((x zHX;QohQuG`w?x(XS_P{%B$oh^GdoYUvZKV( zjGqMjN@xB*v=0<@iMkr=o#_m>-Y0#AO1Y+?T8R} z92i_6y_lZVcL)w+4c^rjjY8SQY6|ssTqBZmP0ZlQCTvO}YyT?X2!fAyKJ1A;#UT>-iNiA%S;yH2~eVBr7tBo5<;*SVcVBcVY};jD%<$lb}vhAgXWMrcgBJp_!DcVRNt5ND00^8II8u)GN zF#8mU`s% zi9=)tF4XEQ%;MzmQ5bS^6;SqjOCe~bT9gu!pP(U|Pv1@G)P-a%BB%t5gT-PaaE~{H zH~;Zl_=fY&KrTEBPYj%!+p>9Qry1IG2PkteZ^+^elH&>}tBZ17eQTbZ!6j*~XMUJ- z)D5f|=Ma(SGw^iv&zDiW;*Q*IFaeA>(zw_}Mj+;Qs) z|MA8Divx!p*0eZ$Sj#m(IobRsc1x^Kr7rqRV_jok`sRF!Jg&D)CGKB(W-%CbY;QOC z_fNc(C!V<*85!=`fIof5C%ER&3Tm6M3nuX*1T>Y6RFqKuGE_zkJvULI8;oLXo}sEa z9mgyIb>QJehS+R<*W0OrXcUyd&W9v0DFc`wnbp)Inu=2x1gD-xY&P#FzB_PDrSm2x z$Z|68~=?=5DZ4vb*z8IVlj06{O$aZP-91Yy7 z7>xDVCz-){%K|4>HpqSslPXAM$*Yz#!f2U_(d6YY;8v9;RDqAFIAmgq#w6_bMG%mB zV-W+pd|D&}U-8WRMs2Jrhn6IuWaeg&>8ij&VfO(9bB@(0C=3TSne59`=K5aq@RjJi zbVJ%Bp6)Tm&^w1yPp>_6vArfl9|kGhg7-9{;9${s9_0@6pU>Kb{J~$){>1mwU36Al zXub$P5A>LO%VtO?gHOuPqLS{d^^aP5tw$`$Pt!v=Fr{sJJW$k}bH5bAR!PrH%rE_s z=re+uhSnV!bap5JiWXPE0C-N)v@aZEEAY>a`^q`8z$QaF3dj6GDe)u$#%BY`$c(D4 zy<4s*16q&EKtrwvJu`J5(n2xgE6n*EK{B!JsQo1l zodhK3U9f7VeaKUsCe6JPazhvudi5bcMpW*SkdXMhM6-Fau=Fk@6tUjWSQmBY!?F!YUr4VN6i>D4)HB$h&c$Y^i_{S{u*gb-WQv}dB?In zc>i(tkmP(1>Di*znFl_0RAWu&%70Lsm1}}lH0Bx&1RN5UCo^aAH%peFvc@pww@7~1 zuszDfH%Mln0ob*)B>{81w@$F)eMx>#dUjRCBu}WMV3P12pR@m@rKW}g>XIah|A3}S_@jrbvyMFq6 z8K1cu=b~gEEdVFa=6Dh@w#>-f`>LgxS!5ooxKeYVmooT$-kWRdO&+n6;%?1IH@R?L z^Ro=O3AheEM6qKaB%GcwkjF-ggg*PbkhjI9busgJnfm*{j#JI>sg5s7J~+j5laLau zM-0ayG4i?nujs0tv&dwL!oL}SxnyNvD57VHtc=y5!^w4H;xiTF7P#iUxAR~B$1CY4 zEw=Sxts)>kSjsBEIrWi*029GFG{kv_wI)}R5(z@OHx`V;svv4Ys%H#J&!X*l%6SXC z;IWTqD-({}t-SFQxAXc>-@~L`qESI@lX+SZ4q^)DtT{)4AtjEA38(AiR4G{3B(rlY zdX(dfDt?em@Np()rgA3ZOP-tXDU~u(AG44pr7Nw`j5Ot5ALrY|I?CyHk&rvXdyh+Q zHigz31P{`2h(oHtH3enY@&DX1}%)0k9Sdihs2Bk*3BK!9a5s8Hp2^%uQKn&=T@A z@LYRe4@D(_r%dW`(F%DFpvNPvjTz81R^zmu3F*E8oUF z3(GXErHwH>sz9<(r*VqU&RTF~%?z=uY2R?j1cr}^LM#4jt<6>05>yV0(A4ug{5&mZ z4aYCFBk<PSR@tr-p3yDwjrL5obscvv z^!(lNd-(JY=tc%3(c%yzTua6|LqKVb03W%OR}dF6nVC>~46$t6v3NLjH@k8!IcLvj z3@(~LJS7EZcu>%m!z7AHfigt{9*l4{foRrZgT1{l9?g?gMmc8!%8#l*GCngU4+(AZ z`5g&-B~4A0KRZdqB`Vxk?JOSj(Aj!X5D7Bo*3Km-gXZe0=42 z_IpcO4e`6DM_PkjXu*bgMW9FVvHH8>gPF?+dvN?%zrs)T$Jx2Q9+K?$itPk55_Ye5 z-1E{uX8G`uAXue#og`ghBIL~v+4Ks{zi4$$wZv-wv&hWr2l8F@-*RsFeYOp9lHX2p zq(ze$d3yI;tH{)eN>H7>Hc{m8+{xQEJ1(2O`sBwKBP{%%dvZ>zsYxi+yhLWb!4>$X zGnG)4k3?&kw^x=jou#SS85_!kiSHQ<-Fm}IU-CNs;1&OXm=;E153!n1(|0OANCvu;jZ%bN3* z7oGcIYi`1648Smw>mO4|K{X(2{9fv#RvL5!<>Z$xSyht6SbQ*vIE&vc5`vTxWD>pl zN_tMzbz|Fx>no6KUWnOzSeX%J=$XoQRwl2!=uK6LE1GmnMO|KfOl=o~uL^bLzbS}8 z2_~!Hp_fGar-IX}fwRw?`Z@E9L{rm045Y)&-=P_89*`Ka$&udm zrFhmCa|{KOtZhm9Eee*J0NS=l(o(pi`Ave&(pBTHu>W<*Qa)2m3-miy2EqZl=L^(0zMv>G(v z5ZvY~tVjXAN%nW%(KNP1#cQlM7Qs}c-l;R&=Yc#=H7?W3LING6ZBY)7#nAN~jj!Sv3ykfjTy)bDFi_Y=%)rRj{IG1h5h5M!FZ`bzokuwaFk)_q9l3O&> zl4j{{YE32bs%Jj&ND(@xTz18SKAM`D!TE{{_k64|dSL9_-fXrdn0*6K6_c(>)rR7A zzS0Q6qm|UBvDs-2nN;juf`k?(PjXN}8vWY(8U%n4C09ZYlEe}Gr`ac>AXP+WlEA~~ z0m)@TnR`Ujw=ss!b;YORTp-L;W7@kANRgcUiQ#G#5aNGDB$%63b58J3Ev3g>gK2F^ z-)GC%0XPedHX*r)7-*D>SB~*tM0w27`x%+w<1ikaI@-|)Rgd6hK$Rsm30WET%?Z?&NAmN&G$|Dp)~-SrNOFU|Gn${yC45GCL3)~9vZ>*5lEe* zwMxufJ%^IQJM9me#W)hN%o>M`tD7%{PqBTjk48{Wx00d#$#79osS2nmT61*bGqwWoviH}SAk@Io;z@L<<=oVPaSCl@c~q2Ay+ z&!?p0Rg-(TeXj{VeJtK8sLd9K)RdgNVRpK!kF_Qp#@M<3@Kukv=mY7R49-`d-5yvN zHEXNu9>tbGfF$-rsVzweNgT=nQ!&_UFm_Q}E`utWX$P&>QzsLL#GI*2SYazcGDRmw zo`MeYqD5C`E^=UEXhp&mWNKd8oIYnkd{$)cSp_%H|`F9T~?Jd(Pp} z=UvRM1!286y#2ZxxqW;BGiou;p$&OEQ1XkWQ4^G2QgnA3jnYgd@IdGLsI@D^Xzt>Q zD4_15iQJlGZIlemb%w|!6Q>cWg|1qin&Bk1un!bdN5G@rE7lr1uNd(mx;*haCA%vH zLA+sXVaYlkf5h_rqs!R40;?_j?a@29W)Ft}j#xCmsYO!wV_XOl%{)H0v);aym_nkGL10qa z>uZX>FNAD2&In?gkiIe%$q@}TsYUT(&}hDDtN{xx!qxllE&e|zC`+1mEGUg<2eI6anKUo}`p zA~CrLk)c)$P!f;T0r}SV=ko(IO1ystzBXxD6>&Rg_JHuE46n zMvHM7&(fNcbE(RGhB8`c#`UiQaNf1GJ#gpYJ^)1pVo7|eD?!x@D9mpXuS#QTP|QuJ zHK3>|4E=&77^LFPc@z6|v~dl%)9)Xi8gjF=_=Y)lwHn;g|Fj=YqDY)-QWuw(M(K$> zDk2t%bzCcQ4HBzOBELpW*@6u+kq>(7K28S={k!)Ub*X&6aa%xE0 zmM`;%;Q=+}i@5j8b0i|GEl2$J5TF*d(8OEgGjddU*{cXGc%^eLCJ+hFus*#p z#aii1TZXe)|5zAO4Dn^_miB0U$pDVmPu;!>DU%JAk0;4{l@OojC31=yPxJWA zk$5s-Ck?#%HJid~08SmvAS)GfstrVOfHZY}C{yW_;K0=VsVk98^I#`wjFj8f*jTt* za+?x4E5ur-0O@Z4Wfd?@G((Bxe5+o3j`UM&P!sAJHwwNLwpzzG9z4X49o^vU6D#2v z6Acoa4SqCh4c<=x!8L+okyhB&FpoqiE+@6 z(>yX+7GZYoQU5T_yEo(EUx5%ibIdS>lU%42V2v7H5$vJRVqWos`v`0jOFv zyx5w!-x!QWA)#@czdq(WIiIiUmT3_VThHHZ+{v}u9plCzYIESB$yzU=9v9EfZPy=*{l&*n4f>P47YmllwDOyry zClhuaZ_UXCWO#GN;zU35wD96v)|uQFgBM*d}7AHM#f*c+`2E zQ80>hmV;ZCc*T|rc+J)YR@Q=Gp}o=)q;J&Gd&7Z4BYysu-^34n`{Ve*?|D2%dc3z` z;ZZcm!6Kf+W3rVbFJj43ECe7%D`Bs!^6E(AmfRhMKFUOG(tu5m)4Vp#6XdxqjJ43l zsRDRT-h@Jc(=zs)<_ymkK6je0e;{M@fW?i$eW%rw)4VWenaY*l>XuajJabVbToZi1 zHA9>toix9uP+D5Q8FUZ?!=1Mr;dfs88g9D&0F52t=|W5a!!pMA)u&`XGv-s&5^=F%(J)9k>D;npMf@u@p*p%oM2in6vL3Hg3R<6@tZBqg4??f|aQq8F|`5pPdisM=ga9gukZxKK<%~9h;5N>@X%b zMFhw={Nji}61F`p*fEbhvB1A=FXp^%5yf+zKf)W_L2lY*=&i8O8@xAo<6`h&3?|e< zr>Tln!5^6qVs-1L-7*12IQPOcZm!P{!1XN((pfFN3&&ZjBzQHT<^2^P zONs;x@AN2Q35z88@{OP-P`S4n_8K&2?PL2m2rzy_F(Zpp z5OJ814N|^WoETJu`Ql%?;PXU|)RVJrvV6P=t2Q64as z)=>jG^UENb`T?WaCT&g<%jxu|URDqE^{4UZGD{Co0Qr(0@%_nHG!VFlKIg=r!m>_l zuslfyPt4q-xWgoBM4~YeDkK$glZMy*?K^qhtKW-Tw_%5h*}yr2I74IFVC71dzL+gb zh)J2UDLaV>(>!siftwt`!Wi6Yz3FHXF4(@8tM^{cqQEK>K78wq>|Z;Aw?dnElmV}O z5Ou}iz2el7XwbWmutRgK&z$kkoV}um$iK@k@sZWsWThs?%y=InrhC^Rm>?9TsZ}3S zH>bej>BbbRJHGI_044c<1W9ynT6{1KSNF zHQ0%zYdl^oVqM%no(EuPT}uLG{CTFebsW^ZAvOXyE`8W#*VcU)fb%o1*z=hM%UbVs z8!<9FPhA4FC>`Xy?UAVz`LvFNj^LG|0^L?#~|*Zp1#D2Gj^%qTk#QDt}pzHySnO@T`WA z2%u{n=Z{bDpYERU)EoA(y*Dv)m=D_bq(>SPX3u#hriWHA6S!mN7XI+83;3tyEo`iJ z=vXnn0qMdb_Z}t+ozh54?;O^)&~M?|YwqQ{zx#Ljh5z_Gp82%PQ0-$jvMdBw=*n<) zRFbkttvQz|nVwtH98&I`4wso-fisM3z=~Ray_?~bN7aXjg;}yCfzb30tn5_gLEm{uyJJR7?yqmLXZp0qD7>2R~=VTd&yoUqcU! zOwU#8p6~VNb4lMIcEa`A@i&wExoM{|HkP&zg+Ig?obRx$pgtAKNP|!bAW{^)FkEHK zhx}*C0+1ygk~Q}5BOZIjJL_%@z!_ls^62pDik_7tPa@|Gi>7R6$U*K?=Hq;IQUp}1 z2~F3OJuoZD7%Ou`zFuQ9(g17Oa*_9Tlj)Y& z|7;n^GEDF>+a~OR3r2w$g>3|H99Y2{0h=VrAi=jy&jtQCKevCCCx7}d%iaV)-w43$ zdZDo)3y`NHKzf5}&mCv%<=4+Vmk(}RV13-t_tDSoJxy=0DdOCRy^?*DZr!-Uh@xIN zaA3lVe(5!Q=eItFpZdwKWBc+1FVXfMJ6M+rNmF0T-+8Tga(qFaKPl%1v@r+h@~N4H znod4&c*u{~dSGQ8lb<_&#af<;NzxTxkNV& zt%WjJ|LKEJ(_lR91#22MPB>osw{PbyuX`W5zD#2qyzRp_7j0-Ht~>RJD2)g{ft|IX zG+-7IVtoRU=~a@Kzn8mGWGVjbF<^!0{4A<=9n;CzN*9EhAS;F2c);5R@>(#5LcReYXObF)T z;72zYwPo+|fGDK)#YY$Z<4|KM;X)P&5DP_P=laxxqH*!lWv8!tI0AQth%DkB<0zn4KWjHHJ@+C$ zygb5S@KjFFcSemvpTulgWw|HqHShD?G%_ZYW;wLTY^urcV#`5sllSV5h^`z~bt(wMQ! z+KOjRbvS>m=@@24JU1?IMdOvTwx7Xc&bx|6g?;Ns_{42DFljuU2n&Gg6*Wn_@3Apw zzp7$m3elACDaGd`x48EXft+cqj_D~4Pc5#5>FH-r zpD*`HP49WYiV$I{oT};ilKQhIJhBFzGMD+B7knr+iAb(8f`kZaZ!|EK7%7PudK+?Y zss(QZZPI3fFq8|X=jyd%{6BZCbNR>iV{8*7;VwjYo5rHP!!`|0Ciu|^+!()L_}s;3 z^V0M7@WCa6tZzVX@h%7y{n#Nc?76fwcsB;Ii1)!t#j4o=S)=BHj1|M)qVRDGE3s}4RD5k;mb_e*!=b-(HJPhaqvf8R+& zi%JG7=ap1FE>}FN1o{HhQP4z)l@<{~;Al*-L@-)e_TRU{pZxY~`25H2$MhqtSfo{) zOQma5;v|<{T(0jC3|1OYhjTrq5qj6heaM23!AGg8-$3ZAx}MHT6eAE9d6P22a>Y3h z;ezEo^u6QeWBd8+y*Gd{h&CAS>BZ4Bfmdj@Y$o@Mi+n5cVXwqm4tc-0jR~HTwweQA zQ`N!2DAzMowAo?0d?^A(dcIe@@AD29YYnNcbJ&JtGJuD*UWo>kfIO|+=MhcHk_K=^ z!!DUEZp_symLG4fV()l^HR<_yv%#NC4sd9<;$zk_FTMoo5-okvn&7p^8xsm@sK)x$ zl6h5DST%})(OuwObjPIrQ~+o|m%r1lgC2z!@7lZPZl;bIaK7rIbFY2l2kxSmCToU+ zDAv??(jb=CC1G(|CQLpZv}m`9-(?d(W&TvEcjg|&j#j{&f+eP~HJe5%5qZGC24%}K z$ZEMSPJnZL>Epn3Es+mME*g%}V5*i_UM&?zF%gX0m|e|+T5|NCv&ym^^VR!T`S}}H zx$yG`Xrx7Z0)ezPFara&ZRzRo%MIF((UIX}SDedl?AggpOD${&wjVK`^npm7()dte z#d<-zJ`j)#z}&kY@gA$n#EmgNR<$t(*L%b+;wQpizw%oC_BC(k_kQaqdE%4KW7IS; zJJ67QXYosm5EGIOZ==f5)z_DtvM&=zd)ePjSIColzBmsVPt_FfSQk~QkW2g)9vk;XRI9Kg`Ydl zMYn7qE}FUHb}8?Jq$$SIu?nLR^b=N>4exv8<-F|7W$tJd+3={dbbXIi#XCXzpf%$` zox}K$aaK2@A|NzUPE$)zV|V~zT#VhF)fqz1^(U7{233sau@&ozyAoAT)Y%= zc~@rsw2-`s|d&%=i^v~TLarmO(jf!sZH?t8FeMI>fQ4|d~o9? zKt9`%S~{5{g4CxsNBC-SCCWaHX8zxHWV9``lM`Q{xiVhvb!0js5rwf_ zMD#^>eUG&^+?#?a)y5PawY4$w!q5S_#<8dk=Wn@)3wK_G?R)N9Kf=duzYZD$CIF`E zJ#EuO9@P%2T(CwJ3PAEUyT+ZIE z$1ggrYdT(W{BCYJ6EHqrJEdA={*!Pa{+hSt`2e(7EU^$$6d*$3qcSdrkP*$q>}+8# zbX`B92sQ#Z?ReN%UGetmB`^cd4?lbP@Q$VC;QE@|i=<>E)wZdDKQKktmWfCpTmy7s z&PkdY1_()2{Ys|DHfgp|8>JEyi0??iJxwctN^(B%Bv}@Xx-ixB3OXF1%iiGop{z7~NR#;f?;d6I! z-QT~Lf4cb?y0L>+EZCmD_jo0kz*VqK0JE|05HG=>OVEdsdbHVz1NAj>W#^Q5QU#ZFY%?Zg9i?JGuA7efY-2go1%UEr!1D zgO525NU87?z(O?!enyLfcN0{gNpu`F{Zc6|3MAfV)~M=Za--C*(B2{pRuD7b^+ZJq zgismEV6(6jiUoyv_8QZW3fWR&O}N%a?Y$HjEAPwn9<^n`v(iO)v!lN1P2}{xvS3u?IpuQ?F1P46mgKGona9$RtPrLDF&Nl+5XHH;8>eaL zQ}QYz@S`aH*rOlw;D4E34`%uVz(wcm{CqKK$3|-98;p&YJV9w9>J?Y1L0U;*NS5@{ zb3=~RXc9?4p8X)n_YdSnt{ya80NtMQd=j!CS$4XvJb1$CQ~Y=wOy7MMs>}2twVZWL1Y`+jatG2YCc73w zI4%+B11Hx7jRho7Qq>U=F$BahMwY=`tAL2=0{U3Pk>pqS14NVi71R&ZZ^(D_i zL82(^4Irfk%=w4Tynqa_wcBSy_AXrl-t+lC5r zs!^s0#b=BNeK*GAqHL#`Z{|R$z&hC8?&hm5dNNy@C02Bm_uqUC_nx>nnz?&Y%19Bw zfNf$KO7Cc!HYX%X*2rv97Zc3vZ4<&k(gtG*5!H$oo|?_qWd^+Sp-yw8k2V4_&S1R3Xvd!QF+V##pPzIW zvrNmO1>wIQyOrNsTIJAkhu{#SG3k>J;}G}krP7xJt*@dkiPAwz0qQ;UG2>cl4g{;D z^FH6+G))MCi!Osn*A0wb(bLP8ojVR(aQT@V)2m=EI6vsDZP$ydB36_PkZCn&oSb2< z>^PK_@3tQB?6a*vG)#Iy{9>Ax46r%-3L3-khyLQC8YRD_b6f}!s@nYn9;DQ-J3 z$s$mte~Zsm^>`e1)Pz0C>G~M#s-JZzjlY^n_l^8&OFkC z2&Mz$2}Tn)K{S}0oCed6)d{zqwal+SVVmUg^=TQ_Le!Wifz1d#a#>B0LB z)S{h2=VOF60lZ^YBV)mN#jC@qXVOnFw!s*SwTsx+;+SCDh7bX1G0h0fGTnGPzx3k2 z=J8McIo|fqw;^I!Y(1hbEG!?$%ZTKt^aRWr(XlMMS%oSA>VQ@TN2M_pQF{1waHS4^ zm;eY%g_y68&*mbDGxt`m%Y~}dQ3y^)c@@vn$nuSHj#C2#t!S|j< z3@t*VCIp8$Xl(#t*E{;IXFT3uZEcml>)2S|pzk^+lSx((M9D#-ULDRmoOT!!!BsQ} zuPCOoJb3SwJmQ?I5be0_@a=r~rcdC-;Bgoidz|@hAd;luSQ|~K5;Qt7VZB*nBR};K zP&`dDinZY*$YzDehBX-XeFtA_Sg&3K$cRYLW}PoQKQEGsucisq5K{xt>jV*@?_Ex9 zDshjqjj50m@T$17qsn4Z!qk0$&Pd*f^Xz6(Dp^o2{3;F7GK}S8GURvRoHtyh) z7l3OvFisF{!8Ld#TSo(QXvVhMJ(u9R#t)NtR;0Jy`P}n_Az>CYR0%|J&e8XM+AW2DtKqy&pzzCvyuS`c8_!Hcf6h61R{Hgqf(K#OGs@^As$R z!qT%JDVek4^OKE!+H6&1H1Yziw@GD98M2>p5Y1ggLsB7vd@8lKV(~$ykSuvx+n^H7 zKN7Ne8QbE-;Vm&gwt^UF1sfTSZ9C5IkMUpk36Fi-%`9~zOw=mVR)=7UcVHVF7C|v| zT(_&^H=gojKD@nSJPD?eZZZkJY43wvC-HM9(1+wBy&uzfTSaCIMt#r(MCrVzH3qd7 z^**F1be_I*7&8V8BRit+d)iUh9^m?*McZ}(BbN1}8~ohQ{ysa;T;Ny!%a8NSCtpHi zyO2xQC&7m>9!j-UqBtdLAg(=3X{|@@QPGu_3CoukgV!`bSC#eJ3<#UyJkM98BEk`)XYnM>&ziz#Ch*R;twYd-}e}60{ALOuA@*g zn-!%b`b1rncaN;C;aoJ0x2fRA5HjDD8LyKIQC zMWkm-H{su`Z|9rk61I(dPK=Z{t{mWX%M*_8?P&zO7fkT_VQ@iMQK?D}OU9?f1B!Jm zrYB8Gog{@Y?*2jPeaN(CqD!Qv&%O^4{*ARHOD%)F+#VIfg_oWGnR%;YE;v8pvU5Jr z7!G^Y-8oa36k6MNZr6Adac_!^Q zv;TtB1FgqoUveC{9C(s6ccNM=VT+Uck~yrA0L(@Mz%?N-0c*lU7{v*U+6}J0{}}(} z<_VX7gS(6-}amo4x+kGX;mZUY?)jWz)w`{-BdJ*E#S z`I>?`4fqTZh@P)t2S!XZtq8I%D-}sD&Vw*{j7HeRs1g3g{6oZEhCrGB1)JSKd zL-5uDdYb3IdT$Nn@nfpO6J)~pplM`J&z#ZRtA{Itcc1)-qMzvS;*;E13m2#JhX31+ zKo@D2%7mvakaY}8;xY;}Dv0xJS@nGW-S6el$3D%L6B{fGG)96usRv_}V|K)Q55vSR z^N=%PX?!0)dets&x$h=E&#q9VXgmgi#x~&%-qQ&5k(RvgSy*T=jlnvDkyLBmBi@4z zTB!3uixs2b6eE^iJ>6uL<#v%Xme1$Hb1y>FbN|Zy+_LXRdf$gCbupOBX^7wki$wmI zg0un+q=Zn>;+M#2ioc1F_h5?&LWp-&z5A?J1-@ru-u_g2(b$+%y0WG^@3Rs%404L| zqiG(~TJ~A!vZe`)P9-aBB!M``29Y)S;LZ#Y(u!gkbKcQ)etPjiJkqr|xF&CU4dH(hTySBCm_O0k{p#ZK{lb#5qY(=UWNEzUA zM7ElJd4Us`F#K|5k;)2?7QtZZnOZ$N{&x`1ous0noKOxErNnS?h#agmc|k)G0voQ) zn!12Cg16wTi`sI?n;n9}Vu|?1FlyI%{QiUdf392Op`TpEun?Z*qC^;_SCJmyj2Jgf zs7ST2!8@pc)_f$@v*o31LN!OWMO5@GBM~Wnt1^%LZ=NMY<6;JX*=5{j!PFEb__fH z8o&0OEBTp!ypaR4BUG1?WIhdha9i8bct_J1L_z>$pngl+w80e=>#vKAj6VX7sKFY` zL_4fe?6~F9b05hWOM97gYuvQ|^BmteiZ_ap9*JO)x118n#iTiZ2&KY=~8= zTz*jy&h?XHRBGCW75HP?&n;D?anRbs{^ao8JBN#z&y2ML{yUh;fe<$4ve;V<5^J8~bZ5RY@T2(LQXWlUO#zJC93aAQBT<#hLR2S15Y; z;g5OnyXUQux!?@&u#0zp`2J5HdPp)s<_$@C-S`=1HDIE7$mgF=JY;CLnz|$L-?TWR zy+NaCrJnpEyUjAEA}DBmGH!h=mVg{_DUhU6@OT?EN^Br>)0mJ<#DX&+D%)FwS_yt7 z14<}nv20iQwmUcYv1`^j@9yIuEut3b;$n*CG!@0QL7N)&4U?^7KK%6$;{SWWGPlSC zKW?!;Y%_4<2)vV?rXS&YhxCH$I-1_#yB^aEIFH0+B*q(DH^#;cJSxP}mSJ2?V+m%Q zV00n|(zWdAjz=R0azmSh{3 zUvL#mc9ElNhq&>+8=0_QqmO@ z`jJXo23)AuZBZsQ@}0bd5xU+JJt4tWLdd>`Do$KhCIVdxJ9aPazwC-L*XE7drr>BbzX9e~+lVB}eB*Z7`; z8~pHl@8hhy1Wb$Zl8Gk-k2nyIHx14z);W&uR^Io_hw|%}EOEad<9!1vh*xydW4%Ya z9^=A3M&krJhwTi$?=UWE|3385PdeO05tU+&lJFU0z)Q%8WI~{Z3N%fN(+=mtLU9Bi zn5JzbE=FPEajp*%rf4W`-Vg)^JEAcy#}1Eq%WFT#KfLLKJp9oQ=DWV@={)PH52J13 zRtbubm*!0erkH9TXO3B^eV|+n$Ww|bd9K7*Juf+)PIBnXhm%}WRxot~hVWX$){Hng zzq$X)#}^CC;Tf74NqSbYekK-BC)8?;0q1cmV?KS&2f6zrpF!_G%2t5|3^odyVT};t zJ&fW-u+A_M!@EYixKp=cbe(hb2+Qk>h*QKuV|uRIV|m7z4gY*_g3@BMi$sHu(lqqO z(_m;2I+WFoG3{uCcw+EUG@p8*X>5qx6_53nbGKZ=g?lb$;wIdD@MiWMxsy&kjkPqX zf?FQpXv)Q7#D<_KeC2`(J4Sr6KqZiw5;6y&Ixrxn67v(4mnhJbz+H(6ScE|dObx+K z#@MW!sn!|Wh7>aUErDGLkdhcRoxU5wc2bF@YrQxwJG{XQ+l#oeU!b#=&-Ls4<#-<- z+o8B7>c(*_(iSQ8iO%Blqr&Tj()Q#oO+Mi$m$O@7GkI)cUwhZnSW6#c z4RQc;+&@ngP*jBrE}8FdhLeEvBQHJoy~cm+m@`{;3{A=8&c-2_VWNs=jkH2zvTPM4 zz#8zgwjxYXQ>C42k`pRTxaPz%O^7;pzYLz5d;t{^Cx#)x=R*?-E{5G3Y4BFj#^P)Q zkS1u*#s*>33&^NvuV3LO?o^)l&b!&W-!nEN8f{{QCk@*NL}Qe9=;O#a4xBB#?OPtn z%eQvy?>)vXgguBp_~YMV;{Vg zk6!yZ&bxRQ&w0+{_}1q>g$G@<2c-`r9O6VxSgB2QO-4=b`}^b;KJqBTJVmgrlogEyU;M6Ou!Noei(Wm;!;}K!Gq7af*lJx zS?|~Q?7q)(eC>FsMCXVAt{6kyJ6jMn_*(y8=Kee0lB+uNhres@U3Kogox7DK6c7R= zK!|LD$;MzD7~5lP<2+8_H1>?+7>^m8bHJE!7zZ%e#x~d(j~OsIV-QIKAqk;`q?Xj` zbi+ASd$0G8wRTmV+btm&=JR{&gXnY5sZ*zFhZUdoEH5W=udbr0Ma=sPh#AtkMeg`S-&5KPG1w_(|=<~fdVN}7 zDGq3?VBzsTb)=HH?VQMKzxomU-i}SyH6pr#biSs#Ozt|uqK96PJ{SmW-Xp!BorSi^ zYM`<{qg#d4I~rayQgDI-tk$^#Syai34su3wA;m!MoNHUXgNzFsRGln8pxXQR8RA^T ztkphuW^p_CL;^-P=<^u@bloP<6Qt)Mm!8M7p7|v_Bcj77@bb~HkSga&s+k4YJQ)@-3#?SPUsw1Ak7n%ZEbh7qz z5V-XxEWbYrz0q19OK9wV)gnYW$&WpNW04a+It4?Ut1;4j}g1fzn!wi{g2&2 zVgqR-NJJ$=EL^v>lNY_|7B+M@h_OONfxajbt(LVbnO+N;0=+7W(xGByKV7ITVuby> z&*H)}9ssJ`bm#^?ef!lE=~2x{Nk%(~?;nBW-lzaFabN}qLIg{Ji4$DloX@z2XGr3c znY9zW;C~M)##f^({f>1u+JZ_;C~>Uao)Ff{@PFHuo`@4R zdK%>fqV)Mh~qQ&Ca^$*Fxx!Loa&C_dflJ&v^Ld zC*3Odq@2I$*Z%qM-*fe$ua(rEFzHJixD!QsQiVBa+|goKnymUTCsEAHUb`-R_e6(Y z#|sVOe1sTHzah*2S4YDv+GtjmxB?H!%B4yaGz4-KNP!YTqM*@Qld-bkzKi4h%r%8a z{-5jE)wM_;kz%>B>{g=yC1x~P6L6Xh4&JxrRnK`Sf25lnXO);6149&3Y&!2?0ig%& z)%brGiY%1UV=jAN2w9O1%Df{Kr@t#$u2?Z%+fqn&7q&57d6(X}wlynw-__tP@+?WC z1K+J78;i5}n8GxRwID&AkGLR2Ya6GooCl;nsCTW&-JGJCm@*1AOwW?_<}ZXSE1Pf?+a4AYn-CBtnXoYi`7Hp=}VND61jR^fO*}%K5x@-wx)w ziEITfJ#?IZI$c>?93_-FO*=E(NX&%P)5(lCe@c1z$B#2l4G@QUvow%U0(7~M#Xv?K znXE!jp%bM|Ef<`Ae@@+dChPMJKJnR4a`5;qX5@S6CdH~a0%|#Ov8v#J43wcuZLD2x z7DH(IIRIAaVHFsGKwOf1OV;V+&`E462xK>~E2H9)cPKKHUJdMHRK;4Ak}G8$(av=N zOw53ZQ8sa-#GYIFNRUF5!h?=1cz(Ko2W%yB3S22ic*Xp)e0aamMG$;$5FeXNZS`7p z$aD>=|AvZ@Fr|{gKpV?3i{jC8>$JByR|v-7=qTuGUwjcNJpDY@QR1RYT%$`pWhH@+7(nSPyPOPUd8*~ z@ljNJ?tjUB_`0usDo=g-BRKuQijQ@fY!KYU*d};%ocF0Ax3tfetUDRCU!D7<6Q=Io zww<`_j+|_te$Hd*JKMfIy^oVBx|5r!C*J4(2gmYoRbg$$oruu&J;%2;$$e)3&YhgQ z=XBorrnm5}zyB9j=E`oxdY8KdP|R~A%4CjANfqCVT~HDU>4kTnb~^w2^ix^rCe3DK z5d+`Y6q>C$;vs0Qo}6F5)y&f_Ug48>^t}7_K+s@ik`=#EOvtxE==`yY_aZJia>|bV z-2dDM(4-YUd-$_lapTA6#5lJ_J>ujvo+XUsNMPk!kwEEtnkJEJQw1NyoDBmbLA*C| zu+B-PcsH!Nr_%|Fd0byL-B`wyz(fwBIG!iiewGpZ6{4jHYTspxra42RRAALu9#v_b z2fMaDi#p!fBXOY!p$L8KX>#VvkF4???E~4nwczlo^6teEUe3+ja;nQUjY9;rYb?Cp zXdKYy!}Dl004CmT9m`UqePcd2)V#eil=+&TsKy73RUOkYtxJ2l=eDQ7tbs-)W|1JA zeg4@eG`pA{_o$p7eEwew!>s`8zFqBG}1&OeAa=${#Le5x8Mc+f$leQxC zZin?fW!{srE9NW){3=l9nb0$uq{aHV=Dug(pmil=OUHO`aYc<90RSmc7Cov;yQ3i= zFLci3JLIXvYY&4FrHD@2YSx@oh!g^;nbCJOKkbABzEQ;s_lp){+Yo6eWtE_XYp%MJ zU-^~4=C}XgA9(KbzKW+l9{v{^7$Mm8Gx#IC&v1a-_zlZ;d@=T zU~{ox(aqVtw#H@myFY9!_|QAv&7c0sD`@AL9XXPOp;SkxRU)IIpTz{Ks@9SevRat8 z*%Gce^%Va4yfZl*d*XV-R!ZFe=v{opiju(c*{;SwP$>kGgBmya_Q##Y_5X4`w=VX$ z$7M!kuhyr%^u>T`0xC+0iHpv>A7|}9mm_(LD{s1zo9?)Q9D5TbYK&h+6@mdUgY#Jn zwui%z3leUWw#KXN(u%H}38@-b5-IyQn!)kO^x2w2NjZaT?cU-N%Ch){1$OAzwd4fOTr*%aBta8jESo zn=?ex#=x;Ijft!B<@@mOg#ndTc<^QSedqQaHa+f9Ie*2&&VBzZvNac78*96U;bx@O ztb)!TVEZQag)n86(NXg0<= z{N|G`;_XT4yVlU-wRuI~L6-@0JX{@72ZO~Dy@Uhj(k|#clS)J#A&7@mv-ZQ7+nnWr zzOL2`8!FLT%oX#%rHKSpj&E$z=ef7a>uF+xYKLe;F5T#GN}!Y;^}Jw+5wZR)=5bf! z&8IL*q<6tvQK!|LHiG{|+pa=@#nBD^{3WmE-EX;^r#$`195|3T<XEu-?PGw zS%ZX(1(HT?+o=qaaS_yM89%Qpc37A7Mz^h`i9nmKwYyV&)6Y&k?`{l$6Ew3dy*lwa zC$Sdp_D=5UZtv;PyLmnSd^L2&aWqWFvo+sj(Qk43X{U41ea~YxSW}jdf9S*f z&tLpqRyGQ=60N@0u`>lVAfsS1Lx%3ZgCSPKsyP5bXtxsA@7}{-UvNL}Sc$}b6OBS% z5x#T%7<*HP?&yXF2)!1PB)V#pNr0T$6F2$3$DhHky!jS3%U+sbG`BG%v~;$%C84RX zBdv1T10P0AEjJ&zgAZJLISbuFQnrp*=E)46dM-UtOoE^eW~(7t)WA&|>3cU?Q=sGp zIcHnp?)8-dDMcg+-J+*$OnKLS0I?>LPgrY{IULHdtOs(@>^V{$#dnhi5>S_7hVuA=D{6k%v`-X=YJl#mQS4CvT($^<-a}L z?+rv^j@EsvTCbs!*0{{`d#MVzJ`Y|?T`HisTI^K7ni+aEjZ~S;s2;OgieotiI}tL2 zy}vTKg-O@ICFpLPOj6LsEevlI)3kleyb0znOt?VQ*p28acX0YW6j!mL^F zw8IO2?7eq#pN||jo$fj2Aw%!^Bn>?pgd~txj&Svp&gEw>JB1H64SnB|vgM8FdQ#t` zost#_x&!oGg(qd(N{t_rmj7i5V7!6c(Iu=1wlS?-?A}J7cX; zVk)EkS|72D>uvi=8H|kKwMB%wK2NOh>5%z2GUk=jXXiTYqN>5Qc>> z>vhV|bC4nDJe=yD(LHV9ll#v1wC9)i)V=wJm9f~XoO}A5Iez>&8yoBF-?xVg?sE>S zt1}u2%!1HwEx7Iz*YP{Q_*;}C>ohsBB9>P+@*eZF+89Z=F)a3eh=C+R6l)@r+@qBU zYh{g%l^L(T_oA7m2ExchIauI60yWz% zCi7~kl#j=Bzf>7nbH&q~*nnQ28vIiwtrJ~1xleaZ=*q^icU=35-S@Dq?%8t&c+zF( z{Nv@Hx$+qUn$K?A8=$l8X6j>YJF1tmE&L5N+%b7y8Lc_3Ihm8)*@;5r!z z{NxmPvc<=rabJG&l6`!9ttG7|Vpek3A-N!nj#z>ruorVfW*3ECtZYh)G2yAATRm~^ zq2aaJA(E1Xhl~WihOdE|iz;HqfO`$rx7q+v;-SNkfMUNOu_b2ZEwBA2PC4xW zU;VXTPg+}{lgN!XZ*s#;*Bc8{=vmzrIP=T{oO9-G_U&4wO@%;j>us7Z8ocIloi4Ap zyHiWDbgpjyuJ6SYcZHewlhaP}3*)CJ`+Rt>8n%;_e|H9|obcD(1LID1M`JXsdV1zv z6)kj&j$_A;GM{g9;J_ZvJNrJY%+4YNLtBVKgQDGn>#x0uU;DXVX5;qbtdf{X9Bxi4 z|BNG*Yo6IsXAV@VMh&*kON#VT*xjwN8595Xzz6cdGxidSl1gB!DV%m>ogbVZr_Gy` zkP&7>959zmDuOibbd+KsPf-$?Ctb3} zI~g}6waE;5D%yHfUdm|Hi3T^Sac|NvC+h8FjU(LpQ&+-~Tx#n>d#>WFTEk{4is1nY zy+mrGMvKfv7NM}aQJ#CpDSSgXz-%jX=Zf$b>o@XmdpFr?Trm&8POrJH_bf83fx1fs z?*eHhb`ANHwCj_f=*8a;jGc zfuLGA`-0Q%w!XO@pHn$M?839&(v*)J%Q5bnE|y_p*=8kdJErk?9k$i7*9_x>j>=e< z6wBQm_vk6td!ULHC}O1uIA^S)mSc`U!uq4826ehlbtRsnP>3+=+12)Z`!V4gUw7y?uJLg>}{$1aMofYDHL z9vWF_&Il3hGG*S;<_0O*e^#I`1LdFzG8uBoIvr=mTu|Mr1qh*`?+YuR|bbhVry8aTp2?ao0gfe<21Y}lM{kh7B7 z7SYa-slB4PM`8e4Zolm?FZ+X+@+D7r7>|C!lL(H*YzAbewgFOkJ7dc_c{Aa&OP%i zQaXo7MnX^2Xo&MJ8 zfoDLZJ_rlx+0)NB9uxoPvWt1=*$0^QLMVmJlnKDM+;S@q**Z#T1QtTy3$daX>yuVP zs^%xf6iXxPeD~wd=4W1i1M9Mjr112IK7kqgIouci{mPGW^Rb&~r6bYMOP~Nr0=?K? ztggZQJ^MjAdLk#W_|s_}WpiHUnay zuRx$no1C|`;3vBW@Zfoaw1pdX2mavTC;7l>f;NSi8;V3@N25k)%^MyFPil(P$EvQ2 z;a;Ye++>|goeMF!Q``wO9E~%_nHD8^YtE&TUf)ydxqth-%3c2*8KcUB98pUh^ri5G zCq44De2(LDD(5FZ;LK0#Z1RyKs=KDES;iGrHS0;gKb|*!t~#OLtR@JuTEU^rI#$Vjqw} zkeH%EGD<^E3m_wMoDY7-!}yWY7TiLMY(-+m$PW6B*o!e1Wu?rO*f(bNc0l%Ul18g* zUKE;=OsQ9yTdcmak^s~)0l@2wVd&%}#jN^V7gKO0X&a!=g{BF{W+st##oD?xDIlfx zvo`BFN*o#!glMcnrSt^CXk805(Q?#%-xCoh;{J>)^sbNduD5@PCq3;kJmS%hMMCfQ=BP-q5F?$kJ{PXN_6VQ8<|t8= z&}5pXuzTk!XPmm1QxEKA*Up9*3PMKdeVx=ila5Pyv?5u0HFbKHjLhw8a`JlH-Z|0x zofyBh45`XMmC0vzu1@|QjN3sMx%aChp`qfSDh;SaL`>ixKfccT#xeRlXV0#koORl1 zoORkMq(i(VCN8gsK*DF0^UJ)GQFE8MSFB*2B6ptV)xt6Wy$xAtA6>ELe04L$9~SUKSW@ zcMXtc@--KeN1=10IR!#oaM>Lj{M5=LIcKA1YX^KFAL9=fc??zQY#2jlF%*^j=l|fgCevA~7fLKFo)IItk-8=R$-`Jw>=Uy|I30RT6p~HPnbp&XXlD$H~RDulF zZDFxk5M!WZYfahr3)_g=v9+;D+cvaKVzHQ0$xcF0f8K&>hic(VpYjME^SCD(#VShg zC1p~C5)_J|JFNwua|06)%|tN|BLpEOW!40C?wqk_&rWvlT4Qa^JQeFxQgBumf6g+b zV(P-S9Pzl|bvnNOx@h&n$Ne#_Wgf5rzE=#nJ08QSLzvI@$%s^~RR~oW*?Bn^7Ttoa z`JAn-O}g9>MA^4%C;NBrX7{cg_N*cUdzH8`Aoaeq0xRv>$?Az{V#6!`;??}!U;RC@ z+0$xbRgz&9#KDrmQe#P?_xm;vx(Tj~gAq|QA)5D%l0qaYXfz?Yl4l&7&3N0B9>?XU z@1*S_u@idj*@}hx-*JeaxcXWy-8jlxE36Wkk(fnTNrBXON4Peit(7||AS)3KwbaNA z*Aj*6Za#~T%rD^W|Nc%k*|f$61?C#rV1YJ?x%PBHSd_v-GhI;#fzI(01%V*$k)Fg1 zlgW#z12mptic})8!I%TJklH|ygyu}wEof3h+cwO%78LE7t<2COOV6mR&9c zsTCI%jjMg3Lv-)3_;zfZXRLJGc}jMw2fFstv<;S-Pu9>M1B&d4A;G*Svf$pX2zPo-@Ex z9)A9-|If#7`z|WS>R{Euww1H=_n?F)AIbC_4>_oN-XrDPvJzgt+DVl1iEG@1<7gZj z7%SO?N)d__Vo1)jYJD|T7?ia*S9TDkw43aUg%{s(I*)tR+t@u%hBUO;R1I<<8c{K8 zp8#pzv9-77T|fL}et2ch;cku8wP=U2edSEbigpFbfwFMspoN*-+M7a*8qoQI)CIg) z&b*4^i^`i+7&yqI5~U1bv+ZF_v(CqPT&@eO^~*E5eokKsD>1TI^bX=`(6;CJ)^VC9 z5{QHl&AacjjR`h>xwl%(T=LM0&OWVFfd(LwAjFi2AsHey8-hDFfzk(7R}8hS0wFd& z+MO9#lC2vM)==YJZ}}kaeEYjO_o6fS`v3Smx{{4rRVvWPyduPVU~6N~?HzdfEJzl* zUfG%#jvU|Ov$t+phC(c#6_XI7ZTi#%+9t9xYgt)oX;PwT6HT-nT?}fZEECVRZUhmW zgK-JrLQRd>yu^Y1Ofe*{))7=oxs>7{K*a!drI2&yuX}RoEbp5ltFx9Jt1IkUYiMV? zNMVnIh7A8P*0wSU@7a12b8P)iEgfVAnT0m*yyGyx{-WRJ$`5}WStzSCG@%(-_6iog z$%+eJ{M|qePdeas492;Tuf&!)foNcDD{|AWRo?%VPv#T*)<|8V>8<5r7Xk+sbH3x# zH*mkBN0FHk_2d90L9e+A1;D#7X&4=Yg2@1{=|!v`^f{*=<}Y6RHymMwJ*A;5k%Qwz{BC=MBU>w^zCpS`=@z733B3u^rUdf5hd!V^mS67d!DNxq zc_tQdugjk|JHVnoqt=k0g=n7mt6K%%jTg&3*qlsWeUfqrZZCEm_fP|c*ULRLq)IyRu|tg*Qn zC1%n0o%4fhCNu%*S15VTm4|NU*I)F*oPX}ceC5}FGb=myve1P|U3GYGE@pgD&>-~1 zgr}8+%K)B%Y7-@L4_O5|Gu(uNNJhefx^#jFAzJv~XbmmQC&4KW#pX_87!6U|4A#(K zVmR5F)?rBxB`jjs3c>QH(T#x=0<$&}W8-+nK#b7FNSgvFS-!E>B8wXgV`kbSE<>s0 z#1k=4mPJTnNLEKLk$-*tzwz=vc?EafdXU(+q!?)>SWa0@$P9{?F^?U@2u4P)Uj{E< z-MF^hrRHr?hy_+?_{5oedG9lx%*}guk#Zu0LT+HuWOgm!xu3j>2Ol|Tz0r%%s_*Y2 z^s%Dg-7ru~*J$*5{k}jlq7cQ1Ly`t09p}fNase-T!wvM>kcy(w`W`pIo+bA^O%v#I zp-n=c)yQ+O>Wb_k`{4Vuh>h*tM=)jS9~HYFUm+G>g(bfi||3Tospt&#D&*zBhf%XD29<1()4=l%Lpf8RyLl z$5(r<4e&chui={g7@R96S6pVuN=Rt#jiWyokVKbzQb>k1$d=Bl>9nO|>Zti^Q@nAc zAg1P=ZFN-zjRiS;>jgvBiwsp4Db*I4E=%1LS1Mr9ottW))ZZRD?FmJDp7Q07dF9sac__9O4kIFtRKG+CFluRDn02Qnkv&cj!E2N&Y`kr4oxW=XbbUC{>B8rttQ3t&;=?44VoRrkf zIet34>N_66OLzAip0~ulfq9R13sPT@-mI{YAukGa0zKAbqBjd!=RLu_>Z)*+V*J_E zA<{vH4*&!o+aX8CD1POHL6hahJj_eAbE5x-(zK0-IV|K}TVoP!@h#?aq9#^WTITbG zS)QGuq4OGMV>U7&;5@ScqC;NSY5*;tY1cN-JeQ8(${z4MmqJJ&b}!c2G7yt;*-!p7 z@A)s^L;sO?@q1T(gwxJApT|DsDO~dK$1v~bXl_i|hJqAmidpEQ5Y?2ms6Tt9DWpak z%CG@(g;|v=>K1YlikQ(?+=!FHK;J3?(TRORnAD605BrJ{N?3^3TkH961@Uq=XQ>N< z*9WVGp{rpKgV*HSwT&~w)!>lu93f-Xn;QUZK$E}hQ`|^#^nY?eDxu-pt3JbD{n@Md z;CnyF)?MqY#D*r!{GOByP-{}vfM3Bkn@R->+1wAcqIj6U-diP@5D20)+OU!nSKRj; z-t*;8;I17j#GHs71PYri#9VmhmDlm5H{C)LtrnON$P(!R(af57Ye%(Edg%+|biCD2 z62IXpmZB=CuzOF>*FJa;ufB3lP?IGpfkusoyA6rH&!k{%Vo8KvCmrzoI<{^CwKePT z$lUWW4ZjY+E+F^ztT9=fq3;acU9#0eTTOIBphd|;x+T^e?2yxU?1`5liI@l3bylw) z-Gi+j=s-jj0y(>q$_CckAwADJ((;`v4`HV&8#^O^zkUmUpEfwOuP10rDCS*TwJzdFrYt?qlP zo9hF~^x>vot`D$1oHJ;Q6Ro1{%6xjosbUw^`n$#ms zdU?0r?J7!RtVy{LB5a&@I_G`c*Kz3g|A<~YZoBDfUi0Ul;thZI*IanXB|P?tPvwmB z&S&0dkYwJfhl?KwlI*N;2|JiXv46!BQLMdlr7Cbi zLIq3~XHl|o&0O%<_JRw+agQnEU3iOQnyh|+)*x(@8&d_AXV zT>6zW+wmbW#zB!4S7xD2c3m%z3|J(k|Ca;%tyH4MzBc~^>Se;(oCx}VHT?Y*U2ogPPk&=gN zjncCCZ`8VH#lT4l#HQl`TOGgo>4y8h{bQ`=#ulB5S@SllAOQ`K>8+1*-*f1Gd-&t$ zT*x2oPHb*1h>O-bMs=B#1?kkh-~u|&gifIIP?}?mWNw_?6h(@aV%cx!VMCg(9+j>s zVEen)aN2^{X50+kvJQV&FMD9oS(2mbo?QbaI|5V8ijKi8+HSBG3x#IZKxvq7&S{!R z6BD`5R$iklarV|HsFZ|SOsa}|li&cU8gBN`bM3~|_g0?LlMM$DB3rRx zO|Se%cHVi!@}m-&udj2(zrT-d#zGi8k74wRjEqG(8B=7UKxJ6TgMz9rE8xl%u2v7Uu5jOn`20bashS5jt$QA@_LJjeQg&jYxd$sDpnV|+ zGbX(WJ#A`G4Q$P~NRo&o3wuYH_m&^8DX)^9Kt&BBQbAuT20Y8X0olx>#eh@2mAUmm z44I3Mb^K7eFPAI=UEA?NI)3x;wcK>TYKx`#dI|N}vaJC}PM2C2Ue}H1j3qOG(@H5` zpImd#ccY9Lm!lcCla5m!eHy%GsYZ6~_U0^XF^)=E7;rr`dLR>J9o)0891}+A;A4yO z<&iZFyQ97579@FXg9QZ;!9-TdJdHSg;!LoRt{G zfEJ~Ae#q+hQcUdJy^F?T#!g` z2hi?65(&whZnQJzN%%}#So`L$qkqXCksP!Zlb|GGP>vtEgZI7p4ZQc?-pDDZozDFq z{7^2w^r4(}-uYNbgf}TDGBjv6Iz~Z*XX>g#^NnkFYN4$ZebWx}V1rwU9P0mT)r_(n z;TY;DC)+|iEG*M8i4%>iu2B46d)t3Mc(%DJ>d8)RQX)!ZV{6WbKlV}H{-(F_-gkeH z8$bP7l15h3j1^W0Ne29yu|5Tgc1CMCHS}Cz822?psCsxpkue87dFFsMnkb^AEUaYs z%$}ByKKI#Ncj38Yjieq3iZqsrP*EO!{mnf6y_a)fql3oR)L;x@_yx=eEI_YHDPEHt z%~+-vG?~FrvQ<%(5Qr0l)^vfgYvnl4ebm|f&3lir5L3YRtbyEHzImQAO)&oYf~6d? zgE$8h&-d848}C-fOjpKajo4UPG|J_OLhh6hv*8*f(RCdmL_%sP+S7H$4W2?mOLiq= z>%`J2j&Q~ehbmjejM3~RM|3a?iH^b!S@6Uok?(IGz$uHK^;P8`w{GWeb)7r*nBo-` zH+CH><3?pQ&TE-dHE^?+ga(gpT6t!mc8{9wqq`qDnHY@YxmxuM{_Ot!>N$(o{Pj6| z&A2ICQHJ{r6Xjm7oO2#hVdCS4D2r~f@t7xG_S(-my?)$l_46KvrJHvn8DSP7MRp$eA$ z4^aF+1a^eNkKQrk0dKgP)qcewp7j}IB5b3Q#XRxUciixxQ~1?qUBa8zl#R{6tR$o> z^ox$BfG!kDG0$@WaSV%^PE0TrG{}3^V-$NYZ9t1rG{Or)xRy&T|Mn- zeR&#Mfi^nEe!T_r-F2^2K;BzjWrIT8Zr{=m0$!)yMI zbn{&hA{1*Gr!ExR(4eXuzU@}tciSzz>)-x2t2=jd@q-`6dG~(+7u@dw?AW~rGa$s7 z;tZ{tJ?HCiZ!B_QUU#&BFjiA;9KKT|bY1tREX6M&qfb5w-7Q;AQy*(^F3?~eU^Q3> zib!Rq3QM^%6Do-iBe~1mbp2=f;QK$!d*1n8KKTC2SwD81S(?#=#E!5s)H2uguTn7q z4tA>7bt9y%%-RFjiyDUdX4~SnD^)FYom{DO$@0{*UVz9|=bgrsIC+o@=M0j} z9Az+g?9`AO9)4cKM?Q52AGxa`d2Y0nLK{r6mB{4zOffexSp>?%x9am>>x74W$GtoT zIXW@KmK1hIvm1&5`o5s_2K+L(GKNPm-hmj5KS3)`Ld}nx$Z^1=S3YC`5#|(jFM7T{ z@8Mh1>8$2Cx9t#Kv2iQ^vbJC@)(=3`3{6|Bqcl;MN2(RDHAbguM6ZVtXf>YRAcNjsXc|=3oai1 zQumsNF=W^<6@jQ;VpTV$_+qo6vQ1PK|MtPHM%MJ&c7`hoUtqN~Oyp) zdq2RTgNKMRVsLN>UJ&dJUh#qDa@Sfjsf>^D9uexgMbB(|-2L+n- z2O?xwf^7%KW8^bWcoa8%-7~m#rZ5Lbw0X|f!nY5;`8J;N`Zsa*`X;3@F6$CxP{@X~ zHMm9}jC`aMrH#oruvG`XXzQOI(a^hhsMc6PbU=|yHC8i(wBSEI>wdiWZ?EBwF3^TZ zMo1JIh2FuF5sNf7A$tFF!(U{^TxQ+pU&ygt@>YYq0AwKqPuC!BRJAlo=(|ixap)he z?j=TtmshsG+!tbMNHH1Cq!a_KhCm;C&fi?{{BRym)ZN5bxGHu0+Tl-g&E7Ton1_^* zl|EXyc+5_Y=^dCv7JU1}X!w(o?Yvy`yTTa$X6mq=YZ|nb*%tIX~utQ?K6<=SL2+vg^dhUw+)_ zKhv}9xwczI3|6$AH-2?G4okmL2VyeX(;VKC5)wnQh8W3S%U98QRmoQm{ALw1yRk(DfZk zK~o&Ovrq~u9dXui%7InRI{OqZz3d{+IrCJ0?gih(sqcIf;d$S{BKNF)*LQN~>)y`F zhp#l0x8UJ5gDC|EyVXq<#k{r@ZG#=X<+Hr+mg|kwq(HN>gLBTkfcxJ6{+xO4dF(&s zH1_P<&+3jfBV@tXxQwG6V5kJJD1<8-CP-cXTNTf5IXI{0x5U6v1cT+=fD%qEhc(}E? z`HY6P8wRRME=JD?G6=D{P6oC*^~whSZU)OSQftnIg(z)FG@HWhr|;mlZ~hN_`qGOy znvCr#B~NLnvPeB>&!yLVmM6XH^_;!gBaMgKJ^EnYx^WH^lp;cuKo6!wH4}r-<(`-t zGt`R`>my1-J-7fpC=PKJIk>_#Fq?EG?}>Dt%_7Kum08qu1<0_527koCfUn_a;D7cHA<&f8>zKRR|JHy;R~y#pL=?u(4Q63p0h)2+6h zlv=Jg0b!v|1`@ode0GP#^T5>YaH0g;uCAwUiEKO3kk+HDL=0Cm-jkgu)d2Opb*&M% zd%($2jBv>eB>S~K_s72KYoGGc&u3mgFXasI%rCj*m4EZT>wm)PUZ;;e3h?PekD9T#*9|w!OQ2uF zL*AvjEzXS4kx8V|(KSc-z+=zi*B^BWpG@oYi$d;z-pZd!pUp!nM$91#p>%3FXcZ_% zIubkcMC+m$Ue~a-8z6)2=Za-4d2r*V)KHQ5*wzvAa<787qVq8qsEPh<)3h`XHRMzU zZnY9^4##hb2z^l`TDPjEji8CGtu1S{SB!9EmRj?)`W}&l_Lf6Z3MDHsSh-c!Vl|qb zF%g9Vsy!)n>_2st3oksICqLm~JmGPdvUhjO>Z-8F>pc1)Pi3`PVL zS}C0Ov;Ucc-}Rqq4{wnpB+W$c@Fd02`o%i@x~8_z0-%K;4M8o8OE>41Yd_9S*M5Xt zGL?62wqqBko_ZGNoOeEFpML=dPCbnsJ9o3Pw#v%tjAqu-HjR~|sDbI!ORH=W&Cm(e z*irG2va?qyP?Wyw$cv7yU$D8c&hg_%x&5}=xbdbNx$f$#x&G6i=JtcP)6FxAk`PjA zNTH=+g_T(v4204bYwMk?%aDpA$gwUv#5Buxaapti?S%IP!`B1f9 z&zZ4I$UJ+ccod^6nM5$65H)YQ=38@TjV-FIDLEr)f(1~};KUWh>KN{SX5k5EDQ~%{ z&;bpm{AWJCZ3xV@FbfS^YHcK~|M6I^WMXKf!TfyH^a=a7`bTxoIy$>hXxf%0HcmDK z3-9+XVw~VbqSdiuC0Z#ZxtWIvCbNIt*y)oC`&J-}T_xfp$+|N-F=4CTJ;prED^z)h1&s#Zv<1-)mTd#iC z)jz0lWv!x46`c1?g*~Fjw27AluGxi+qT3)X=MM5^D|*i>^08y0T{7zY6qyN9m2d zs`g3^Dbl3KqMH*M?@$#JGtX;vMA|m9_dw!H9{W(9_YGgpsrwR5Gbe=t(j)XpiG28d zA7`=N(WEu>+M76cBlGDUO74YYmtDsG|MXnuzx7H)dI}klNYDnATK2=RIjz^O8A~GS zA#gkuqNp@Tj-)Ul+1S|Pw(GCv*3VqU2i|I9Ry24x&lGP=4NW_vU0Gpub&c6MhY;A0?wY9}!(NX$5xxa#OT_;ZuL>g_G#ejrJ3? z-HF@3;W-?7;+Jq}*3f4ls7DTjOs32-do~M~{rlBi^4fpkz&wy=(L7kctKw@hi_$AJ z1m}N_911X>>jDaMx=#UVddpYu)C!EhGUw19n zZ>4YK`gJH*@l(#u#HBDI^j+~9OC`uqCp<*6Hgud%Q-BaDBAnn@KkzvV+U|7MvmWR*T zW=JxSokS-}GH=-7e2(j>HP_kE;|6Y4^SZ+b3ca_r&C}!aR?ZJQbJuM2*JQB<`^5@T2YJ~ zA(&xN%XEU}&+gC}f4J`ger(@CLf?}!lqjSe2zkzJXRq_o@BA`;YGacllF>e*eMjCZ z7>K~Szl5yN8&xQCLHcMcUkinW<(}068J3z-tW-+C1v&O+}Ie}(79r-b;B@0 z6M`w4i83E^XQP!~>kI2RZ=b>8sGjuF>`o6ig4FU=qJjC=g3vlWWQfGZkls=XxT4mg z^hIgg8GSdm@Vj=jJK<3eyO3}FmS?ehO-apyHf^xANR$#_maLy|v{2%UU-%o$WEG`j z-=e2|>wDoVA4li|huXpee)I>p^Fvp&<8AMuab#%0@{1w(_^9QegVr9nb(Ibp%Qm!k zY4TyAXit!aBFT(72N1EeR2AtJ>F4ClImhlg%yE`K-+l}utcG+AC@TaAmUlBzQ3(|y zT8+KBW|YwY#(O^nhi+CnB+QF8VA?X^W%NO0I9D-jM8ra~L91}|C>7qogg8ExjD!_} z39@z(Sp@j##pkg1Cx4O~cS2X}Zj7xf5Y#<*3GAKEdC)uF#)JR){p?8b;26b&^%R*E%8ZoR#8Z%FFkDXJ>KjQO!& z>it{?XxSNIaDeJLR))r4DEGN1#YE*|u$yGC1eLJ_49o!vF%0i@aO^u@@J&DSc}*m6 zuNq%$KVJC9Z+g+oKXl8_Ma8-(g)lz*#H*cJf`gE&)`nWGS_K`Ppb{pYbhUP-4FRUM zeO=fiu%JM6b|tUpE1Dshr5c-P9*{stkrLFDvoDI20$&}r_`d57aliL}jJy?KhjRS| zdw9n;d<8GN?RM^5L?kE5Tq(J8RAe!LP_`~eA!8u0t|fMfGGAD0NDs5&Ibv%Xq3F~y zt3py3L)SG260Fatd8uXM*o+=tMQ{%mc&*8kam1Dw#iX`A8^?6J4?UWPTLQ7K$UEdK{aNrd9)nEBh_U%mEbn6YQ%o^HeMjIou zHqthUSu3S}G8m#&eAy1J`piDoY}xAi#in^%L>73QeMrpk}) zS6rHd<-J<-*Ru4T;d@fgkzxPT_k%0v=w)d&uV&}kd=5LTCdL-EhMRIx5nsZi!BL+ebHe^;HWN!H7%B??Vw=yM_E zE%CGdB*i5aD0CBm5q>ao1Y06qOpuP%jphvUCtu^UK%^dTFg!Yk?|* z?D=C%E;G{LlvVwqS|heKPw&r>3sECoQuc54Jmrp6u30(G6?+Z;Qa$XYJyf@lJ1`Pt zAUx^wf|3hO(|Ap_E`6^W6hq0NJ3s`ZGVQudOo1bd`PN5nc*W}HF@?Yv;5h?)=hr>{ zf4uVjfBmCH;;!VOr#j9{0)1j|*QVH2fmS75A^Wn#lUhUMRhUiMeChI~fzb-{rHALt zYKTM~5i45xUtOUMG<9AgP?Q`ai$&ybS7*HTerIsM3r^*syLZv4@{T(Xv3|or);nlI zqRcx=wi>}c7lK+(W;!+Gb!R0Pk`)#mu>;im9uM`yI-stHbY4}={-D9ftkwq>=LoOe zWJISZcKd!^Z(4~Vf`@Rb0(L!HjUW@s%Og7iwAf~1dNgDBmtkH;%c5iKwXTE;D&PPKw zT1_BF?~kpiO(fJrViN@8Z@S%3>kz=m&cDbYsqFP*#BpjvryqZ~h(+zP>kboD{2ch(=_R zrC4e~CTmi?{3dua8o$rt`zQkoRa(Edz8H!>CLebPgH~rlv!c;LmP@peKCVR-ZIvfI zY$u<*{dPWhXG;o7rjVi`oJEz~Wts#8LyN2PYY*XVF;JGuw1)TdJ8D_|R90>`wSza0 zP)8#-vxdIM={YT$kczdVT+@yx-_h}-yB^MgqnX1i4S#y)XL$AA%=$`C(nxk5fhw=1 z^aI#)$~!$^jF#OhkKENrp0!^bKz*uYPZ5eR7?sAoV2)wT0y$A)W?$aqJJ-+PtIMfu z?ppAZN3Y?NdyS!D;!60qFe+WGIqWc$dNxg*+`H}b;w7BE0KCFxVmucEI)-T7%`ScP z{onWnOyd{kIRjk!JukWWsO&o{(py!)Swonh35XPyEEo z`9+uC6Hy4pD_l^tsnC4OT}kxNY77)9*27uw#upZTEunJw6uJ#PQkc=XD!UymX#*5G81NPqHP1SX2yp< zdIjI|4gZOiup4DzQ4uZlEI8CGIRDLW;rhLMY}16o?wHy67jNL`FTI47vd-xBj^1r3 zP(doig=iQo8mJ-S8bj8K9jsPhjZ`RuQCUl*mPc~T{ck@$@15xrFkk|t?n4=H2e$9R zkVXm~^{Qd%x+X-#nWO4wf#?bt8EZ@}r09rNEtdCooI?zOl58)eoati6XU;vF1Hbgk ze0KjD*{Ls8vU!cgO}(s0>}eJ~5Bc{iIPjOR=8Pljw9N`L4J1*bDs7B3Ay}(PQJNsM zL>e*f@iqh+v94+jRzB4PXe2O;fmW572s=~5Orf0xVzjCTiGr+V)N92h1!#+rl+@@} zsD_#C6Dd~He*E|vzx?;taYtAoN0=jYs`R4d)Urj#CWVdO*u)l^>9m?Ljy6|os8KEU z&nx?UH?H=;ayK=r>sFRvO>NXjNg@qB3-)z$zPmq_|InSnT2eOm?cjwsypMOC(NJWK zpbL{}8W9J|<(yqk<*|d*BuZD0Fo_IIpRq<(YoxD&!UP$vKbBn@0a5HD8hcLb7X0YO zc|2xoMvikryUOMc;k)%l4yH|r^>?hiYe&0jSeB*z<`d2Qx?2+eu_TEpR9r5RX{^vj6?*Op5VC(&#KKK+BX#{bhv)vQW z<-c4h*n2hPHhjo{1RY$vdgkO9CE(=Wl+NbRHC#=Jkg;nRrm!d@#UEh^2-+D&B|wV8O4~APTmH|# zzKQ34Sxg+>KhFI^v#JwyE

(~<(#?!)&;tDLKF>dRlrg@5-ZPFe3Msn8%E)zIN4f>DuSCbKxg-9HO;-&o!= zg7=ihOV2#_oh)P-B@msnwUmt5avg`X=4pV+%Hebz<5-tM+jg8XYxw9*bFu^kBm9tP zAg4u_Es_NWjPveXTIEk2`)U{8tF^Fw4V<_(hV3{!P~F645J(Y1jzkUgA#=fI&o8cA z!k5l>&_w0h9m;<_^a(zAs#h> z;$tKR1dKVN63D6N+|8b!o?pnLHdYW8q?qV5v#(Q*?B2=8@{z$P86tcv?;>+FynzM9 z)&o^-8LngS`E|VaF=uYioK*=aa=bsDU-awW{Zn7a6n;TrZGa#9`bWR?WpDWKFKx*R z(Q}AQyxe8~c?{x>1EC{(${1rEtb32i`mb4tbVPwK4dvvnMkJjip$0K(g8>mJeQ$XT z4IcXP+^o8{T)hwX=%WaI*Mk^{!fF%kH%s3WJ3%zi|mu4 za_I>FZ&+ufoWKwdELLT_UvbJ z`=cKLw4_DH!8UN-kAElqu?5|0UP~$&q8UFy5)e`H5ZQ^u5vlDd7PVqcg2o}QhE&5& z2SR4p1>UHcDtXh9{+An##F z>X1zNG-9ar&33O=CJE2@>c{=b=QnYasro|0+5k`fp_hK>`fk_51P0=ZWzQCd{3i?x z4JLVN*)}vf6)a4~@!s9%Fu@g(S}o9^)&WHoOxmYDcC)`A#28C*v}imr^QPapb|R!&NOkuzQ>i zCH1pvnGOrgm9P{yc*4>tgV#H`pNacSZJD@4qOdeqCZtN~h!T*H=(|jmqx{FOc_`oa z&5!4_{RwFJ_@{2?-5>`4&mdDh03DR7h3ynd&mH@BaQdtMjGIn7i#7|8na>Jmb{$85;+NRkVo->jNi;i1Y0;@0hR`h9K#vS{2k!etB zt?QVoiP?cwQ8|z@Yya>X&iLy$aq6+2hCmY&jT(=6h{`Nj%fmKAq6m#Z3XxW!73*i+ zi2317u>V>Kw4%%eW-$=OT072CAW300L{?&?ErFG!G|8g?B7~VDjWN|}2uO-(W28Dp z>XB@Xg-nGhNr4iSBbyDs{&%0|7Iu+CV4=naJlDdUz*gy*CnXCW)>am()a)x->4ukd z?H7EA*LjZ~`6%P01dxsdJbPm&KNQbpSLs-90)Kt#z{+7PyG=_PfUh4ss~pmMkc~+1b9uZ zz&(`~j0S*NvMNF)`iC- zg)mn_=iDU&+m}zId$vV&^kzzpG}OPxT=G<~Psea170{(|1%|S!sgYw!R7WeXuF2ul z>39z6XnAlaR$>jop*;*an`MwiK*=h!Zl4ISW6uV^_!Iwu$36Tk>+B;9@4EbYKKjYq zNU1fjUNqsF8f#F|#6SwdY(;2N;)?fwh~Ieei&?B6cLJHn>dsxP>{%Ursxqu84}TS< z#6Zjoj(y2PS^d3V=3ui%+Xd#0QL&ykpL6Gr{{gc%y@|j&j_80AJVL-QA1bC`B@2a& z6PHq3UmAeSW^S6s0TWm?4dGH}GUk)P-nODoevF?DUh(wZs+`RgSXRnDk7Is$QkEqn z%39Tl7?451BY|j*sm-$pg;tF3OY#I z_gr+x9c=veA9C8quVHsFuIi))ylllJ0wT;(gGjbElK6T-m`S9m3K?TcOCi{MBCMo9 zTMA7Kv`wN>Lw2`8nT5b=6PXog1!hgKp4fn8n9lR-t(1NxOWc5Zk7DX^)P>Rn) zhO2K5{Ki{vW+S$!Bo?alO=6Li9F;9H^OBhZJ!%MVU%R$l&9JM@PQGwy4P!1!2W2lM z5R0I3!S4Ac-=6pJb#e}Cnz?;Xn!xtS&rjrb(@Z{;6waB+VJJCBEL4 z`WshSbP^d;AJ9U>!S{||uafnsAlYydt1S4M^__f2e-`_;GFzcT6RdVE>ofS>aszKT zuwWsO5O>U`kgyZ?(%|t>OR56m41(4Kt4cfvy9J@-G62LZ!U+UnU5_36$fy5q_ZK={ zUvSPD;Ntu2|IDBK>&Jdzk=Ye-U==LOlZn^6tP`r|%#vc}Btv&^SLE{dsv?>)@58s75WtNGYfhpYsmhR~@wrBQ)}Xae>_?|wVK{R=OqY#La_ zemb#h|NfzANzJQP?IeCrK?^woH+_cO7UbcV(Gyw8pe1ovo7nr5$5ZaS3$D6~kj^2> zf3c3!@IChkOnJ-jY$7rWM*o{&WEG;21hnh9bv8r4^|>@Z^|Ks#^5a#REVCo5*Gu4b2noKb4tc~7%=ae3YZK)v}@Yb354VdyZ4Jl#CuCtlSxF_zq1fE zapfIG|7lH7KqZrVLvt%QMn=Z0bNxpc4ZNW$<(}5Y-5uk;@LlarMgYm2xw+uS!hLzR zoPvbRr`pUfAN>sPJkZkx19BGcHE$j1`XR@vS_U$zLFU$#s+Rj-GWv&Go}4+cJjQ+F zGaRgUd?=BS%@A4*9pAorI^Q-wlU<7iU4lj;O@WW^QhuS_z`GC3$sv2R$`rG@#X8+L z%O>zx*<<^4bZBbp+G;@5M_5V^`BjSKW6yj3fBc!pKK_#T-^&R);rN1c&h>cEnJe#q z*9}|Gu_ooVSw~N8Ja1`owi``a!(4YGr0&UN)Nz38pjN8GTGru`5kq>IhbmDp>Z(bJ ziKBe$Y?;HG2SFVR#tp4@o!BR2OOY-Zy0;WB+fZX3QgPf!_L}D9QWpEHjFUYvWYlBE z1Gvh)-YIx&=qp++SRc!!#lOun-adANwm+$pW`k!Li!e067{*ho_s%ee7O=3*t8$#5 z`hh3&AHVEDq$W@_Au7D--B)wfb%!jR+80W&k?BR%I?K+BnHcWtAWIVsR{&Z#-U_lPDCPwjv6Km5~+ErIxe*qvd-PeQ~kM@_z9N% zFy_-!YQAnXs|1i?J=BctxZY(5GBc(%e9(%|WvRJxyBH-DqC&_Wea_r@%3jvK_1oF= ztgqq7DZAOI3bBZ{VYM5Tpo9WhG7@2jD5revN)|8qBhLQB4eTxrB_^VVL3!4D9+t3| z(q$M}wh%SKRkiSNR;zU_E{7~aW?p;m-cG6pdMNbXoS@f2uZH}t%^w=!*KtMH;&+Q6MyNqSt>$Cs0URfC0-RI{s}HC% zJ9?fc-MA-TMUy2Y#nwlN9hV#}{MhV5E?NkAweXgFgumE4$W6OJG(uRhCOi=$Em?a@ zWn`1O*7wEks^)5^F4l;@827{SjZI$5xVA@qQLqwJMPla6tp(5T&*JHuds)eIYuTv< z(G}h`>-bH*j)VIYG@zlO;uEUTr1eJzgJJ?&t7%vPXV`HO>BdtTJF-ppU-9qOhBtj) z#2@?duY1Y8nwYye{;$H?0Pnxy&U3!;7hZFfO0y=VTHE&7uw1uk>H6MaPYnjuJ>1L5 zKAP-@!2(hn*nkNZ>;F4Zegooiw4QLwyw2HBW2&_ox_iIHiXDPR=!CGT*0Xu2qcI?o zg*GkBGZ3lQ@aV)OE>5F3D3to?G;}?Dti$&O2eL_U0+YIUPCh;ZYP*J}nJ&h0UWV&e z;WhcasiLWZzc4j8>_)|b5&L$o^SeL)tvvjJYxFX+hy%jEz4L0WxbCncV_ik~*oP1Z z(Tvj+V6|z`jpO{p4}Ley7nT=8P#0f2&)9=BtzTQ0*O`uwW>%J>u@G|4;nl>h-}z;3 zeZ<3|Pb4X1pl@JDP;VE>0-ZCK zEd=HiI#Cub4;LOWtI(=Uk9xZAM5MyKSrqj<9^DgTQ+wh@H$xD6iYL>b@A2=OsuMV##3L7jk zq+w*bLoBK?0z${VJVZg&80~hSo<8x$_x|Z6_b?%!^Z373&HzvR(Levljq7r$#o-wg zPGPDPY(U1`=h9Sgk78-tN88V?-kZIynp#07xgeJFuS^DWuu;eLV1KJC)*7@a7z5Wr zkcAL4gOH^z0Iz)u6mNf4y4h>2q~o;dl^5`)(; zE~7zkvhm&SmQ^ECoXDh1=4`Zrec-fk-wPW4>UX}AwYJb>>|0R+Z-4)F{QDGFr;9k8YQ0AqR!B z;OMTFQ-1$9x#5xrk%+`jStKYSlbXVrhmUaZ1;4<~4_{8q3vvjqpuPK%T3FE14uvrV zQH+b(f3;NO47{;MU37JRM-ykd4o=(+lQnX;GPnw&Q4kLkEP}Op^v~Tr4Q|M)j0{de z#E4Wx5vdgc9rGac54()?4bP>0(vvy1lIS!bu>nSN-}o;a zd)c3IpTn7%u3||J6M9K;w6rlzMK=fxq69oq^1%$^;>yQIHuF>CK>7${|(R zQXmVLe+GW*9k(Wi$sv%vhcUkAiqu&>nR32IYmLfF9ZLkw ztb~rQIyU2Z>0H{rV`E3+FV=75ZB6F*42ZrrRUGUFN^i8D1o!f7-poif*`7i)a->|G zciJAHmh_EB6>2A0!|uA)E?N|5$UJDX@L$6Hxc}imh?ydpl!e2o3{-%*mPD$>5}!K~gk3*MZC8YK$`KJPCnC>5l!{AO7%@p8VyH zy8NCe<(`lKtDJK^ZaH*p=ZCJl;|UT%qmHZ_um@F0+9ObBW3*VRg1+}hRYqgTdh-78 z+OJ+^UIlA-PQ>UKWfvoQN_*dFgNbDu+IM zoss5ivT_Z7nAP1o2rDxS%+{t9jKGunltBU-idVdta?%i3n`aKb{jHqy*hh18-(Gq# za*I?Tmxja5Ue0*-SF*Juv31SIXxBFpNrQKZ*FlTm`NC-f`D#f|#*JyHPsVwk7>6f4 zWb&dWO7G$1aZmZ_6XVnj*X)<6>#5Rq8d6Jx5pSqu&;=cHHc#2Z*3+KMju-tZ`n+#p z^8pvJk!BQW2r*G86eE@*#6ZNo-XJt7uq$q{=R+Uj*iXKQz5nNgh?w(Ks?0C)ZK|Y4<6&w>y}ao7{zC%P`nhYw%6gZ+-udpX_NrpW}<-IRjk!fqTlN$u_ExosQr zK>?4b`z1tuJqN)`vCNVTNqPDcPUlyC;;ZqRwE?~PsT+>+x_`UU5RcLmXxyr0%=grA zYk)R1+;Y_i`Cq^NTZCHLR9gZD`|Z8woQXzjj9^AencUkrp2N5Z#&xd764r-;XwTu@ zE$6-D*SPkgODL=$Iir#(l4$4%F|gyNn>hNjzrxx_t|0c7M!@^Ej%aRMbM+@JtZmBA zSjPHlA5J{_aSoPR1x^?FNmu{Lj)_49V{pXxf-;#)Tv(|XmcR`S1Nvn|=k%+A&5It$ zj^}*`>B(Ql`buDt5=BiJ280}n@zG=J+B)(W@F_OJp1x<-wV&ePZ~hLae(;m*$*aWF z5DQ2&5{V?HK$CM68;DE%ee3%i#KPP$RB$4+jjbZlK&qZGkOogW&<1h-?d8&{S@o<1 z+6avZElS%4k_xjJSrbSlu+l_gR8sW479gw$B{`Ru1k~BJYW*`Xf`o>WHG99C@8-w; z;se~a;{bhV=!(z>WlPn=+C3SebEByCe;SzRy{BDJVH48pyP0-w7vsC4@u74WnGUO=J0tdNHbm}VY6 zUt%n)0!qy~7jHPEW%?U6oHFqSYh7w5$O1z4o}L4u7_V{0!hb%owM42mmdLpu>i4Pv zLEYE`nMd`=fRbGydxxiD4>XuO6&){+;6O6)T_kK;0VZ#d+2Tq=uAhZio@2gO#V`RA@To&K-#h z|KPW{@&OMZ)6$k=WDF>w1afFNP%`?)w{ZL=FJs3|HyFW;#DU?h+Tr#(3{-xj&{{U; zYIwVXe5{Usyw8E=bG-3!tuM{>wxIakDfVi?iBGZEd+MP$(GHc&`sw>APkb`xyx<2p zwEtAPC+P29aJ-}iW7P-kh=t$2CRxf7n zvEyh8yhAp4o!rHt)gF;ZDYd%AN=gSXqf{cNhFlgj%?$J6q3b%-JAMH}Q=TYRVkDkE zi6Kms+GHR4(yVB8GkC3a>@4(r)9t(XUOkVstp$swC#w*1kuvTzYEroEVC=zUC$bmo{JXiCE84Zpq{HMPK4E)NlM3z5<#{hNaBLfQ+ zRFu9%8d0ywQ$h~~>#~(g=X}UUi&*#JG|xKCx7P4WjV9Dk_fpe?Z8_%QtzjxgZ`@uh zcx`Wt@HNjmpP&8yr-HNt+ZhBFo$~vycn6Xj+pLb{RLxZldHB4WSDNRVs2!&IMa_sN_k&Qq8Gj`r_h?uc(yc5w_F}%+?it(=-i&&*( zt#ebwKyhFgLw;K7Lrjis^Rs==$o4xH02xASe6`nW=b5P3CV-3hHg$+j9FA!O)bG2CM1bQOoGx#pcNw@F;Ci9 zl-n4I3T+Imgg_{Tl!RG`%!1M&%t9dfxhu8v6@gi6ZAC*=G%KMANQAho_dKjGHyt?|AJ!UJRE0WoxJ~`a-NJ0jXpWNADCeO)sQs@D<$i-RI2n&h&siU)0+3?} z{y=3@vBd=SVSvw_KJ#N7 z7{>5)m0!MKs_?F0soJG!P~2j7G~{SqqnYp?(a!>IQxv2RFju4xBdLH>4-N{sD#6iG zsE;{@DXaA+)BCB`7*zC7ke)qzH+jf7!RskVE>iOztoX^ib|CywiAS7zZ0j2Qre|SIZ z8x2jEdaX*$5sMhITgCdnMpcd;yqUND(<^C2Pz@%8q#8Db*hJP&J!PnJwF|kiQx}I+ z+(XTYF>I*Xt5pSpB+L6HSj&mK{`F0qws(!i1?RG{l8D7h?KEb33G^CSCy^iYAkO}# zZ=pZsOz!&lM_8F3gFYKRVQOXLAukcYx-1O~B-nc*<9vcpz9ts14h(P;ivXnym0x;Vw>C`=Ds@C$)CxJvY zFA%r^_vD>L(4vfXoP zBDoYamlG88=yOdF@cw4CA*%3O8oD}9llvTOTOX@hLyLMZmz4OLFFS)5{=kLppje0Vtg?w0!CZA|CA zdd7+;_M!BKg3cW=^c<(-$XWMc|MUMdr+@X=a&UEpt+F6XG&QEd4L@8C6%WT&)V3+v zLMDY7ZKIr~nUzm|l*^z0-JE;t7HfHx(9R4IjM0Dwk9@>vdD0ld7y<G8TRnr{jzg+3a`m zf>(ZsJK`R4YFXEwPGBL0B89%#^|nejU8_Q_7z`OE-;FONsnzpq20~^>$b4nLgC}g9 z#*D(vJ7)aNp-=ItQ!E4`t`xI)pKd7w8B)c+Ol63O^JXiAXx-wvJ~NxOWUoN!`%KQg zHxx;hbI#__jFH8s{F6q5Jt&qWnNWrTlrX@yP<#c=n#$`PBq|SZJR1qZn^W6 zwX6Q^eSh%4yWP5<=Mg^lDfj;P{;z(-%TM3Y-e_KP880%x*tN*n zlr$4Wb*+8Y$$bn-Zd>>nHxNq4kA3gcSQVp-Y(zQ#v|ar0_dSh;RE}`ts_naO*`kxF zs@35hPBu=<#*%yAGEr)7Sd0iW{|t+G)H1X#3Xgd38ZUhQvxy|iBo4B|4QF4> z?!SB$r@j4Mq?f*ggBPE};n-8k1|e^eq(kTll1-5W%g4uHUTzGYgQd79tyE;LcsbL6 zCX)i8prKHj!XkEbX+f_WNLhz+6y+|Cw(Hz}@qIY{-(SSqJN}*aiW}JX_V=;%jo-|* zJ61Usg&b#ukW6qTAqOZ?2OK~Y%m2>AN{)6ma9|Z4usSFF*-N_-a$!XmiAKakEIR)95sS?zBQyX<`pcKoan_72l#bmor zoMu!F$kjKQJ*Duxd@c_^zK5+f<%*pRzuSF=YxY}8F1XC=rGwCu%Lb)b{jZZmv2uz0aOgU5`G=z@bBOh|?GG;`oE?imL#opa3C{_ld7;E*TE;)-n z8)<^&ma5lXd489NWGNOgvHEPZMioAMZ4zM`!#4~$aUVhZO;Mr>gu=O}Zt?ps{4PQh zj8<>*d-Fx%6|a3i+9xEcb8C-vnFEoDFN9Jc#6&+|=WqVk?@yl9=OkFSr;-b^-8&%$ zFHIS*6Fh`HvamTJL^Xyc5=;n$;6_}~;kN?T-cSVQGvz+VdaixW3)uZl&)~rKej8V( z9SG67j?oj;6lW2k#7xl{x9tp+CwvJ9p72-fJif)=LkGF$pI^tuKfRuK=UuG!g_Z1~ zJaJ0F=;N&z@4G4*Mht@uni-zr9(B-S#&0fkQdp0PeBOQ8@ziH>)-#{Qu~SZGwr>x4 zC9xGEH%jexR9Atiw;Y3c9A3_5B}Gp9pb(3Yf)RM^P0H?rxAKu+`9*Gj>pR$gq;O`l zY9VK_v9tOnj}~YxPqODNMM=@{9adr#M$TmypaDgb(|c;6)NnR6T&>o|HP(9-O0Q_L z1zbuYix^{@E9#P=MC(x1`#lvEIxRFIx``O*vl3!tf%W+nRZ@v`VkN(eoM}U#@6_=p z5R#xt%)nomXDe+SqD%u@Uk;Q_GwwrU^WNtkr02n>CZ2g}!$01+K*J0vimCy$P-`ADTo(hEyJHcWu;5GYYWXkmV)h?d zFki81nb~5-KgXN-jXig;5rI6jJ_o}s)pomKQV(v9p#&j2$x{f%Eip)5b=jh3>eW)W z+V*j1ONn=vD%E+Jg3JUQXHbCID(gS}-@omb`63=)bmjc5U-774{fGB{>iKhBIdupD zPdqW3V`WqpcjrI*F*$9>2Pq72R-J5w$x#J!Rn{TI5s>6{c(t`zC_-%+6RKF0YK@K| z@uI!wwvt)?#X_OOvn-W|)%zI3Ak`>Q7c>+IB{M&Mh&v9hv-iwBhDP+?{=kQ?CI3EVsrUk>zLOZ&RDKx#zEvx{@1VlSJu`def2igqaz4! z{lE>Bz9mH+!u-WIvN)re?MxYeOW`B$dk0NfSZh5UbBn5h5;7ZUoo7DjX?*mPH!u^W zGFDZuOppQaRjqXsE`o7iPmD#RGH)0{Sj@u;rNQ!Bfj%lba;E&n>$&M)-_8X;{UfYD z`q3N?iPS|_#k~J6C|#=6+CoV)j+7OS?AgujyG|$lz{Q;P13yZ0be&yCkI~(B3kN^? zA&y-B0rb?abjJ?l)YED2_W*WY@?h33dJyHb(^%|1 zK(l){Wu>7ba$_+M&epGcEn?+kW+zXfI4-=@0FO}=(PI6hlCYK*oYNH!zV@HF{xAQW z_L`g7H&@y)BSnEcuwUchkRcOMQvh{uj*LofOh;!?Ll75;!P&U#9H}dY;%SwE@B*u? zRlIMm<3NnFTgX`cIIDMja^)ZevNMncF`d`DmmGu8m5ju|!U3WI=z53=$UQMNG(`F> zfz|=2jaWbGQqYB3?z9OItI=LYbZ<6gQYge^`Q#w*?T>!|ANiM$@W~u#LPKAycX>_G z+1j?ec+qiHYv0-zS;)1U{vWw^E^VzfBF;6|K zy|B?JzZ*WqKb^8*y%l1&>atd=H(=&_jlzcEZCi%U;zv=VTn2Z>mcd@tXs@-~r6SKm zG>nh0e*${1^Op*-qw5B?Xv$j28o=Uk8P|E<^m@f)wa^}E#pLZVgKxyQt^QW=gx z*>K|fu9Qs3+r+CYxFszljKD9cKrd5<)q)qdzykrzP&ypAGWkiLIPu@F`QwVvp2GEO zPI2(iCKs6sr2!CDm4|~Y0?H#UK84?V@i%hHs-63R>+a$|{m7rOvAJp`9G+dtrE|sQ z&$i9R85Q*Qd7WzNlYc(7#zz(Ia#xg6?&4Ly{XIPN0jFB;+=(R`M7a6j7O(o}kCO0S zO&4fNBkykM^G5q#0wu(9N0)edsv$pa*c;PyHxI?|UJ~wHeYO zITQou1QX8HR58LVV~bNUu4aHndRh@;$w=;r^Gxh}Le4`vBm<=hXiSv0K~tg+ks?B` zLeXewY7r;GaAqROCybd)hDJDSWnec`V6zLVQu`6u)r_#~@$ zY|+Y$AcmHf$$vv@MKNWXJYAGR?PfI+h={+hD9Ib1L%lAsTa-)U<-- zrIRz71;2iq%&d+;#Ht+{snnfD@!5(+0W2C|_cM#pYM@bXS!(F+M!d6?T0VRwMA}kV zX%oQ}O`C+6@G!6KuOb#Ml{TPJUGA6w3j|Xz640D2s@EiPC){*Q_|I>?hP&b}N{B2< zv6|;#Zth%rR119=_Z(`CD|*SSNXMi4Rlc;G!kP*jP39jrZ{g}$q%;gsBRq{(Wkjt~ zamTirQ={=NGOU;C^$s|fFy4nT`?)t-ThaOJCK||1g7qMXnkXncwc{I)@8@}X20Isp zMOe_}!0ofZFX=~l*M5K&)wHBYWmw0SovP{JC^ZslhO^PrhCx0ti3kLb2HM^q^VO<4 zbYim_?n*E+{5*A}K#>rc_v>4K^}1g>`$3nUe~2&Q@&80Qzx87`T>L%1`!Dawvbx8f zqbjcDkn@tToa&2-G6uFOAoX6k_(YB1uM__EBgnL#PAS>Zn;l5!zu{J-R!Pl>*c(e< zrXD|o@^vS3%-QpJNDjsaklcFT|4ByGOb3K4-GAxydJQJ`D4SHAqSxM#_UH zGKoB&XcV0E7=CS8B*rIz2HfF-7_wsX!PR#@jkj9Uh$gCIdr7Z z#NHIEs`H1}5Ry*rvI>C22j23}y!&;3OA4N+wB1J_(y`8ZILcMme3U`b*s1LxW4iNNT1V&_ zuW&VmJm8}Co(e=PtRI0sW_C20^ZUY)cfFU}U;QdJKk!jj4<4s2kr-MBb$Qyx1$w1s ztfeJ_MI)>%O1u-%2*wd)NFxarxeCEZWTIHK2*k)n{M_LGMyxHQDRGO$%|h~$7aOjW zOaTYATzL~9>4aAsV+Lz5>_HRkvnUMZQxzcA2IJ*UVx?6<3vCKsFI`woi6%23#bYDJ zz3t(4y!Jk(1dULF4)bB-C*aIl7J&=UDX+QyIKO|@T`bsv3T!E!4~{G(Q?!sPmZzA< zoGGm41y5xk59xN0Qs&MiykUMP*RPhL6JMyzh-!%SQjDOZD&|p2$hb?DF?}@1h06X_ z#m-obGk{RR6fwARGpt7_0Fgcjd%7)t@c21=?R-DT7C97R5w2`E_|<$HSMT3KB~diG zQCaVA;)IPiZTI2EesZ9e?GQ`dSpOnLh=UR~oJYN9dvbGnGE-1lRqi7ngL*}ol8bQB zW#|0st6uv{&*F=Ge9^<&08f6%xu1B%1*g5`eb*g+j-he|p=^^oQ%?>iW4@%QW%5}S zN-$b!m7dK$o(g~eepNK}i^W)n%0f&jBFhW1YSF52hkL5xbQy3qH6SV?x!!-JkDIdN z3<}#L!iTTCg~P`>&nr%H{~nec@6X;ZPHNGwALAWwd>u_? zE*sJW)+@Ns^TR*-gPeKR+1z>OVXv<>;ElM|Ze>DoVnBsq!{P#^z8*aT9jxVLgE35m zlNkuLW`5BKQIvh}{}@~EyPU;?FJ{-*Kbt*IdlI+CRpuf@ZD?E()=V!RlC;p9?Sm{; zX$SYXs&ziOgE}8l4NfdlFx;VadcxZ`O7!%D)XE4OgHWZLU}5V}*b@UgjvwOC+uzRS zn_thz-u)56!6U4Y*sY16t+nRt1B4NjC|=T|gW&c(?W7{L4t5aYjK*kD&+R)ipM`1N zP>6=`RyVgQ>y=OO5Ynu;j;<7Ik|7oXE=7&4%#Gr{FoZ8f&6^FLq6!%B3$Yfky_W#h zy!(_6S5#?&7*kiYCJ>T!2*o!9bfGkAwe&c65G|CxAU#NmNOBOB8%DTd5D5e+kl-sW z+|NgEKE|7mE4>Cn1+fZ7u8{*N7kbQeEz)u7e2ZtKGq_K`MxQdbtMZ2V?c6f6hA<`M zB^jvbAd@V|>N2KQv`h@vfr8VO(r9Q;<%`Qt=V%yIorCTycMcRmNGLsLt`6)}2#MZ7@=7P=Shkq{h> zJ?f6Bb64?FHD3*0i9^)~E>k41=+^Uheb3kYcm5w7|4)=Nz&AeqA;10pKYsHwl$AAO zcbfWY6U{r(b4#A|(&rNor|MX(WjHc^R*M;Q`F*Kgrsqz}T#$@glj_!AEqw|j&F1ja z9>S=9YxPJ*tE-k{O`-hKRqaV%xo zh>-fdr9X6{vnSzU(ZM6jL0N0>;%8s*y_P4OQc$^oJ#=)zJ3n;2g>+5g4hwh~jX~p& z;4oD9_y^xkoNqt~Mj1FUl#2E&WQ!mEq30*tRvfBT_k_ndg^s*=DS&6Wl z%LX6s=$&GcwFWb;CydzWk=u*OPCt zK}gozaw$rTZhTFQ-r5`?`1e9p;0_!c6ai}NOU|s8JQ7n>ky32!sFJ;$#zDBt|0$k} zhTg9u66xLJiXvt(DM%?u3U17(<2}rfjv=sE6f_oAlX>|Oq3<)X7^+%AK)p!}ss_Bu zYCWOFm9*n9tZKxRFxH0S{1y~e?6p*|?X~-HWu|UY2z1j1$cs>XE zhV``I2AT8D?kIPzC7Qw#$2EeJWtg#94dz^GMSu+5_e>VaAV;eKHMET#1S-Q`t73Y< z7kKI~ra;I78t78toFkk3Y`#BVvREUhO$6AAkw5Q0!>e~JII?1;bfw^c&FNlXNik3N z%qXrss^lOw1Y&AT>bU->i1aX#%@tRaORc)`G@KJX#Ubx(-;cr8&V>&-?_FQ^?8kh; zJ)7_8_K`E~4Y7qmUXwCiPp@s~EsR zu3)RFWouIiInXa47@c&$mIrS%7DlB*wcM*#uJ>G()$knFji={0ulVgBVCQP2*DzkM zdd>mf`N8YSCDH^Pn9%Bmt%7(8P@;N3-GX<&`Cpyvs6MkP9~C9bf*1VI_i);&r=SXl zj~sV_2@p`p!*$I%uVXs#>IOv^s9yW9eq>bNG8lG~v2!8{q&Fg(l7MWU4xlN~s&L@W zBk14!14sV$ADEwd3hk4=g#8bFC_5hdaQf5EV4c9aV4ba~_m3HiqJtn8t$s*dF&;vj zjvKfl48!<~sxe>%SP^AS7tFdX=C|HN_sOd`cIC&o=|dlek6i&rHfXakZ_QK?W?nOH z>fQFKc}kf{yF53x#7oiCmD(_8YR^$uXiX(m8rY(0EODqsuLkdV89R`~d*;d@OKruM zGJuq-EXa(#j)Qp9fhfaVW;cp5kOKr&axpKu0FsO4@UeV7Qh``jl_4=9wRYT%6)Dyw zOA+WY8X|4-wwOiH&RE9+V&!f@2)%l#CmscGG9eMPa+@niQ#cS7{NQEh@be$OiS@V( zX$&naUN2rG&~yv#tHKl8^H}MH^{8BtH~D}ZX1-!|;kDGO)EQAmq7dJgW^C&qSr8fa zF209KnOKfxRLa%(He=W(OBhp9CdVT5f)GJE9&~7npN$XY5)G7QPE(ZYXPMvWujgI+ z7c4?Fu&r(HQRWTuwMw?SBJW0TxD3mxNP#G2=nf~o*Mn494kBT|?^qoXtzYyacr@A~sz)1K&M0n4BxT@sqW)cKnz zBm)+Rlb8>IJzD`(i9HffjN~6fSf&f)1xC6b93Z5Fj$stc_PPr28vX%Snzc_aV<(nn zg{(_=K0HTVU}fxxGHqn>|6}jH<84ifdhc&_KWpuM;^Z6|28JQ$Ad-^^D02}IB#0me z446?Al?w`p2>}5?u7X5Skqd%~C|NQL3^NSF43p!@XNR?(?t1^IuI^s@oHO9PSK|B3 z=gi)Ftta%;U0wC7>^*`P3jlP2x(et{A3Oj9^o+cX$*lBZ!k~&P-;lI(rG0K2Z9h*r z=g!>Z|P?7H4wamS}`&Z8UENi=W)_rNw^IYen&Q%w6RA553V5gi3<2rHQUgY{6hqr` zo&P0d&t4|ke5sp>paaNeGkuROUV;ktd=GYX(-(CRYN=b(T#I(1S`0DLglP}<3hlZn zo6s0-Dn8Gord_9k=sX9y23;Z~wQ%rEX{exPvc%2V*nI?>FI6QM;FEHTzz*1Fp}eY! zwQfu$kTi%8G%`c2v3NHBMUhIP1MdE}!jS8>54F)qQ7 zGbAZycP)Ie1iz|Q>ztN3ap7dK7SupO+cTb79VnSyMRRVv$?F#MmO9^0F^gF|hLJm5 zpLoIa_8dD)q_~2FfzM1%ouSNtsJ$uVE;4*|QeS zSt`vqPc9RMW@XHC%X7|(Y9hqeMNz~A{|ToZ`^6vn;Rn6@YYgZA`1tP?&iB3LKfLPi zKls(l_odqwxrT4@7P(zl!;WtD%|uZ)j1!v+=YrzI8A<XJURoE?1W{(>yj5%N( z+;m^Jjx1cVFfJ*xmKZsH`;1?F%KcfeRrXI6_~555AxI;wPCPznX~OK&-fBaeUbW7vB55r_ol}9SKZXVq}^U;nK^{OTNPRHf2As9)-Mh6X}E# zh^L>m`xg!;6TE8z=he_4bp|FA; zu?Sc7aC3sy~%Y|Qvm`042%zt6QCNkzs96}whSAQB+ORWM* zzIbsd1qW~i%u{$uD1yxE?Pt)U?Ggf#GV@^80?kSqGfOd8KWa+K;7o~AYdt`+8$fmq#0ajABjzuIlt|8j^M3q_voMz1>P0F-J zPid?B3g6}iEG1(Vzk)KA{oL>R$aA*ci6homSdB9x6W*cM@iKOD^>(FT^K!qQsJfx} zr?Q|!RNCx0p%bWf7u4Pc6@(UAx1@X1o;6iH(fd!E-#OM4M2dnjpRdjz`@~1T@PNnu zKRo_hg)_jDAAZl@|NS?8=v69{Z40wpG!JOZVo|Q>!r!?=Y%y5Z5|l1g$1k%DjAkSW zc^=R)l-{gfTc|a;a1GqG+d2%V(b_Y)2LRem>c&`!rV>H<+_m_!*g0u0>+Cb!OuixD zrU(nq(OyInP19~c3I|z)vf)B`hPu!xn^NjIZW&f4!<@Ii>=%e6GA&TV-y?`{>DBwW zCVa&Xk$<1X@9utFb&1DyJ)kPPu9E>T~7YmU@LI>eRfA~D2Ob~>tue*Wu zaWuh2M6+NLr{9{*%vRGqqO0o8gxkAUuvHkWT~H#MvKA9vxlZgm%@()d8j10+Vgu5` zoZN?(0~!X9DN}{1W;7|fb57WC3HjWMNMw>)2ds6~QZXynwG65j(4<&e55nfcbg~3s zEA`EsQRecuGbaxm)HX{v@D*?$lVU(8lL;D&X<5x59Gdp5MSDgI$c!F96BdMVH6|6Z zwT?i80j3a&z$%Ssia;B}qj^RQ(@dRC2!lz zc;r^%F-NlHCa1A<(oxJOk#$v4Fo0AwGXP24Su-J9x)3GzpD{9oP0Z(WF8bod=)b&= zk6&;V7hS!ZmHCK<%n*kX{4}Me3Hh9wbj95|R@kLF&}!vG3hz^BK~X6)41=|ZbStLc zrvLz}-C*mr6xMk7b&+RpyA8wIUS@fXwN1;sao-jE^|qbtiIE`>jWmTS6BYz=|Fgpm z3oMQUkE(C02c?#p?m-MZ6lox+b<&Dq0nj_`QWO`>N(=)@6Neo=T=|rrc-R{b^4R}p z$A7zUe%ga>^`@7-?LS_yXC~Xk8zYqP&Ng{k8B6(~$cjaOTP_S#lLsIex~-<{%5;Gg z$#aF#0yb2%SUKI0-h^^5m|fuZHL-gkZJ0tA#@YuS`QObv1MXuExbH$1WlEU>%Q;~U31(MbtLEHJ6MQWkJd~iEFyp@8b5jmKETZ0Moc?0d9zOi( zODxGn5-FReO0xTe@uP5>faY@wpDBCn*CmzoC6$hi0xFXrY#w^C-dhCJ31hHXx&zp;{|wi@<6C&58LF=pl*+2X;`~hzd-b`DrAJCMfMS40kYMd7O&*zGPMVpkGKtnRIVT9Q z9g&ntE;Ng8*!R+E&P*j*+D^_4!OB>UF_4D=*}j={++l3J<;~f2^HW*hw1iG!6=Ai2 zaY6ddeKfyu_M_3T%)Ytu_IG`dzy0TraPhVK z*+0v8UNb=nSx9OrUoMPYV7W#a%K950Fw2va&P^hM#K4%wsz9{Vq5^J9A7&NUlGk|b zp3VHswzFBrT2$_qC4P1H=lS?i!IA(pkV_Row|+S{b#~xZy#)??FiCvCu~Ep|Zx%#Y zA}l;07%A=(zqwm&T(Q6d?9nWwJYRe2Pe1-yU(YE1Z;t<#Jm-zaE8l(Y6JPw6kNjB* zlfxPhbPd|C;v@9W1@ot*WYOBr7y<$wWjzPxp@i?Z`_=*?ofg;**S_5^ z+-q2Vi_&6Dq#?M%oGQ%gcy@np1*;-dH8H7-$XY+PKqapoZNt+lsC|5uQnd#!G-1-s zqrZn+7($uLW|k^GC=@S5zkTZ(|NiD*WukLZcKG7&XWf3jdhLGR@~(4*VRk-0HNs`$X%UQ#NYbpp6zJQzGcQbvCKl{>C zo>o$|FDYqE*xH3Ccv;m@=+}yb_#U+OkWhTS#TPsbrKKR{ek#Pl{G0*P+PvV15Qt)> zZ9|Am7?5Bz9Vx|0usY>YA_G=P#QH>=#byYU<{8RheX~ldNM#5xQOmy`qB3a7oenSw zkto*6a)`E2(EbTf z4zvm=)3A*%7t>4Cm@749&kruahy_mg9t=660gf2g`SF#bc=F@~MApfYxO^$_3)f!2 zMaNO%>tf|MiUsNQvM98wD2JflgC7UePuh3J_X1d6ddh?_G$8Mm$ZT&F21~i}Hl3sMa=SE?nEaDzzHZ?p2X;ZA;j9jfJ8r>IhS^z_R2MPeFonh?4+R4hF(u0a75j#{MHCnw7F0;O?&4+D_xoET^ zSc=gaKlkMOF{Jfc+qfN$K7@~a@)A69QA-4DjgT)XQPA=vQxPgbluv!^1LXBpCLIDV z7Dy87-2P6tW3s$l1hFN+T=&B3)s zrKXEXsp=H$Id1DwDgMaRq_Y+c&3@ED;w?#$whr1yIoEU{8u)Zj+5s=E0$vNNN!dSU+W7^zyc(N5t5g#bLl z+2=QeP%{d0Q6e-egG3|2m^gNAm0#C0xNkU&F|IK(;WNzn)qNMS^H>8vGYlv-rKhpq zYN^x~UEZ=+{?8BJrCtOlWvkz<;y_u<$RHN{76>FAnU7;tKBkj_`Iy#z>X}dYrT>ee zeBH-4L~{oC%YXUeqo4nV54=Xh(l)BF(aKaRCsnPJDXMdK*rlC@S3m5uAG+sshrL5C1s_av6)6#~N}Zd^jLW!BJ~r@AfA!O-M#j{l zyB$6WaP{?Tyx|?6ExCUM@v0cY>>_!KWwdCXR`5Th%#H9NRW86J;oK8F|FxewNFx-ANQm;D(m`=3F()IyZ$WdZ(F|^IX7F`DtsKieR@n zsesF^3BK0ar-_v{E*dmhH>`~;(3M+)yfvgkn;)lR6|#h^7I@JTOFs0PA@_C!BFI_kZXkIP11&a?I(+vH9q2 z43miS7n?&1D$F62mROfMSJwcfe2|-9{&Y%S(7C2*VzmuhBsS><#L>?_?9_%v} z$kr1)6yWRhPfo-r*gmzE}IhV}V6lVM8I5nWo_@tF(W zdeqk($p3@m8z!6qZuw(>bnS|6KPD0oi6osfcyn>hctiB2VKiS?pVCwd;FqdFj7naQ z#2mVuVXBF+rYC6^tkOsE_T0>oWcjnEKb0i)ZjV)syZVLf(*@1jwVj+@bEgT-oJ&to zT^xef>Ne7~z1CIm**IhuI_2>uoGMt*da_|2^S|28s&c3VN$lmt&v`r#xZBAHlTv)3 zk$O=udCPmw#YbmXS_i{*3tm5%+>03SM#brcs7%qu{5Nj`H3*kYuxm< zr}Kf2{~MY{>*E^+QV87Zp-*9LHX^}PIP-A{wf}4ptS*q<)GY{_a$O$>Z8kN=sL@QR z3V{cDIUQ86sJ+j+0LdByQR-UPb$ zbQ@1i=`W16UvFQy8#$yc9iCQGNCh`v+j#vyWjdLVQ(_1Mh?UixgaMCu2&Dw1h%h0Vh8Z&}X_ec4&+RzpiI3rkV~=4ropbW> zr?c&_sl8JPB+UQ?I1Z)?6*1?*Z6*kF9?3VX^0wzZkJ%TmVL2{Yr>q>9Oec(+2JZC4 zA4JbQjkKId*+8f5Ru8)Jd2Ox~*Zo{T3}OLyIgLbI!!D^!WCJByIwlq1W!4)LATb+F z22n!JSgb^`)Tx10(To)EzdjG_mm_%SQ+|u<*S0V(8SEi=)=9t`#1!R+XfC`MYrKf9 zbqNG3-PNpsOXBp^886&?Yfj%gGMS9*T^@M;brA^+lS#)^VdGuLkBk&H~M)^=%0XD_I~}$HI#vF%Hbq%G&c^@^cS)#3S$V z{;z8g|Ch%%#H{VduRr+*pZ+_4^>2TjG;9kwGsGqUyyRkY)j2}*psd0WwD@YH1v%sy z=qwO*!1~d+S<;zhLtV{$y)n?so>fs>VZJVm9W{n>PBq2W{5Vg)k;1cE5e6uXtC&Vi zOZ4CaHyzQ9jpi5E((qojB1rqrpVtv;M~$^KpXVqPU}5)6hz#ZYT=s;$!_80K&I9j$ z6GW}|sk0m^(+TWe&0KNy{+c7Y5UL?Crc^c)SVV29jzuJp`0&5Ko1k-$3Dt}&AR!SZ z@RzTBSv7Tr@-F9J^i}q+tTUOKXU@#qC5O6f+!{#Yg%z?1Ud@Wc($`f}XFB#V8@LKF znqOawt)P^dQfLJWYH^za_T0o9%Kcnu);Vi}&VRPfN@WzqB(KHK7lRekP=z3ao$K

#B>?HcH;dCOi=&hwWF*r;R5+2*>utrvIj^eXAC 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 Z{|9JJPj}S+=8OOU002ovPDHLkV1gC4c=P}O diff --git a/web/src/assets/css/home.styl b/web/src/assets/css/home.styl index bf257eda..41bd1257 100644 --- a/web/src/assets/css/home.styl +++ b/web/src/assets/css/home.styl @@ -23,6 +23,8 @@ .el-image { width 48px height 48px + background-color #ffffff + border-radius 50% } } diff --git a/web/src/assets/css/index.styl b/web/src/assets/css/index.styl index 8a47c12a..f2e8aa0c 100644 --- a/web/src/assets/css/index.styl +++ b/web/src/assets/css/index.styl @@ -56,6 +56,7 @@ .el-image { height 50px + background-color #ffffff } .el-button { @@ -72,6 +73,9 @@ .content { text-align: center; position relative + display flex + flex-flow: column; + align-items: center; h1 { font-size: 5rem; @@ -88,6 +92,10 @@ max-width 900px padding 20px + .el-space--horizontal { + justify-content center + } + .nav-item { width 200px .el-button { diff --git a/web/src/assets/css/login.styl b/web/src/assets/css/login.styl index 57d11521..32d79ed0 100644 --- a/web/src/assets/css/login.styl +++ b/web/src/assets/css/login.styl @@ -30,6 +30,8 @@ .el-image { width 120px; cursor pointer + background-color #ffffff + border-radius 50% } } diff --git a/web/src/assets/css/luma.styl b/web/src/assets/css/luma.styl index 04b2741d..1f681ed6 100644 --- a/web/src/assets/css/luma.styl +++ b/web/src/assets/css/luma.styl @@ -95,12 +95,49 @@ } - .h-title { - color #ffffff - max-width 56rem + + .video-container { + display flex + flex-flow column width 100% - padding 40px 20 - font-size 36px - text-align left + padding 0 40px + + .h-title { + color #ffffff + width 100% + font-size 36px + text-align left + } + + .videos { + display flex + flex-flow row + + .item { + + .video-box { + width 100% + border-radius 10px + video,img { + width: 100%; + height: 100%; + object-fit: cover; + border-radius 10px + cursor pointer + } + } + + .video-name { + color #e1e1e1 + font-size 16px + white-space nowrap + overflow hidden + text-overflow ellipsis + padding 6px 0 + text-align center + } + } + } } + } \ No newline at end of file diff --git a/web/src/store/cache.js b/web/src/store/cache.js index fdb3284a..46206354 100644 --- a/web/src/store/cache.js +++ b/web/src/store/cache.js @@ -15,7 +15,7 @@ export function checkSession() { httpGet('/api/user/session').then(res => { item.data = res.data // cache expires after 10 secs - item.expire = Date.now() + 1000 * 60 * 5 + item.expire = Date.now() + 1000 * 30 Storage.set(userDataKey, item) resolve(item.data) }).catch(e => { @@ -37,7 +37,7 @@ export function checkAdminSession() { return new Promise((resolve, reject) => { httpGet('/api/admin/session').then(res => { item.data = res.data - item.expire = Date.now() + 1000 * 60 * 5 + item.expire = Date.now() + 1000 * 30 Storage.set(adminDataKey, item) resolve(item.data) }).catch(e => { @@ -59,7 +59,7 @@ export function getSystemInfo() { return new Promise((resolve, reject) => { httpGet('/api/config/get?key=system').then(res => { item.data = res - item.expire = Date.now() + 1000 * 60 * 10 + item.expire = Date.now() + 1000 * 30 Storage.set(systemInfoKey, item) resolve(item.data) }).catch(err => { @@ -77,7 +77,7 @@ export function getLicenseInfo() { return new Promise((resolve, reject) => { httpGet('/api/config/license').then(res => { item.data = res - item.expire = Date.now() + 1000 * 60 * 10 + item.expire = Date.now() + 1000 * 30 Storage.set(licenseInfoKey, item) resolve(item.data) }).catch(err => { diff --git a/web/src/views/Index.vue b/web/src/views/Index.vue index 5d3fd311..fdbd6e93 100644 --- a/web/src/views/Index.vue +++ b/web/src/views/Index.vue @@ -40,7 +40,7 @@

@@ -42,11 +56,27 @@ const images = ref([ "http://nk.img.r9it.com/chatgpt-plus/1719371605709871.jpg" ]) -const list = ref([ +const videos = ref([ { id: 1, - name: '1', - url: 'http://localhost/download/xmind.mp4' + name: 'a dancing girl', + url: 'http://localhost/download/xmind.mp4', + cover: 'https://storage.cdn-luma.com/dream_machine/d133794f-3124-4059-a9f2-e5fed79f0d5b/video_0_thumb.jpg', + playing: false + }, + { + id: 1, + name: 'a dancing girl', + url: 'http://localhost/download/dancing.mp4', + cover: 'https://storage.cdn-luma.com/dream_machine/92efa55a-f381-4161-a999-54f8fe460fca/video_1_thumb.jpg', + playing: false + }, + { + id: 1, + name: 'a dancing girl', + url: 'http://localhost/download/xmind.mp4', + cover: 'https://storage.cdn-luma.com/dream_machine/d133794f-3124-4059-a9f2-e5fed79f0d5b/video_0_thumb.jpg', + playing: false } ]) diff --git a/web/src/views/PowerLog.vue b/web/src/views/PowerLog.vue index 909e5c78..84df9cb1 100644 --- a/web/src/views/PowerLog.vue +++ b/web/src/views/PowerLog.vue @@ -23,8 +23,8 @@ --el-table-row-hover-bg-color:#373C47; --el-table-header-bg-color:#474E5C; --el-table-text-color:#d1d1d1"> - - + + - + diff --git a/web/src/views/Register.vue b/web/src/views/Register.vue index 2e5ee34e..9f6d493f 100644 --- a/web/src/views/Register.vue +++ b/web/src/views/Register.vue @@ -335,6 +335,8 @@ const doSubmitRegister = (verifyData) => { .el-image { width 120px; cursor pointer + background-color #ffffff + border-radius 50% } } diff --git a/web/src/views/admin/Login.vue b/web/src/views/admin/Login.vue index 4c326c93..1e763164 100644 --- a/web/src/views/admin/Login.vue +++ b/web/src/views/admin/Login.vue @@ -145,6 +145,8 @@ const doLogin = function (verifyData) { .el-image { width 120px; cursor pointer + background-color #ffffff + border-radius 50% } } diff --git a/web/src/views/admin/SysConfig.vue b/web/src/views/admin/SysConfig.vue index cff3138e..f3ece4bc 100644 --- a/web/src/views/admin/SysConfig.vue +++ b/web/src/views/admin/SysConfig.vue @@ -376,6 +376,12 @@ +

激活后可获得以下权限:

+
    +
  1. 1、使用任意第三方中转 API KEY,而不用局限于 GeekAI 推荐的白名单列表
  2. +
  3. 2、可以在相关页面去除 GeekAI 的版权信息,或者修改为自己的版权信息
  4. +
+ @@ -592,6 +598,11 @@ const onUploadImg = (files, callback) => { } } + + .active-info { + line-height 1.5 + padding 10px 0 30px 0 + } .el-descriptions { margin-bottom 20px .el-icon { From f71a2f5263904f127d63981ea0db68dc93fb9799 Mon Sep 17 00:00:00 2001 From: RockYang Date: Mon, 26 Aug 2024 07:24:04 +0800 Subject: [PATCH 12/34] add download for video --- api/core/app_server.go | 104 ++++++++++---------- web/src/assets/css/home.css | 154 ++++++++++++++++++++++++++++++ web/src/assets/css/index.css | 101 ++++++++++++++++++++ web/src/assets/css/login.css | 99 +++++++++++++++++++ web/src/assets/css/luma.css | 142 +++++++++++++++++++++++++++ web/src/assets/css/luma.styl | 28 +++++- web/src/components/FileSelect.vue | 2 +- web/src/views/Luma.vue | 36 +++++-- 8 files changed, 607 insertions(+), 59 deletions(-) create mode 100644 web/src/assets/css/home.css create mode 100644 web/src/assets/css/index.css create mode 100644 web/src/assets/css/login.css create mode 100644 web/src/assets/css/luma.css diff --git a/api/core/app_server.go b/api/core/app_server.go index 84bc89a8..fab16d1c 100644 --- a/api/core/app_server.go +++ b/api/core/app_server.go @@ -26,6 +26,7 @@ import ( "io" "net/http" "os" + "path/filepath" "runtime/debug" "strings" "time" @@ -315,58 +316,65 @@ func staticResourceMiddleware() gin.HandlerFunc { url := c.Request.URL.String() // 拦截生成缩略图请求 - if strings.HasPrefix(url, "/static/") && strings.Contains(url, "?imageView2") { - r := strings.SplitAfter(url, "imageView2") - size := strings.Split(r[1], "/") - if len(size) != 8 { - c.String(http.StatusNotFound, "invalid thumb args") - return - } - with := utils.IntValue(size[3], 0) - height := utils.IntValue(size[5], 0) - quality := utils.IntValue(size[7], 75) + if strings.HasPrefix(url, "/static/") { + if strings.Contains(url, "?imageView2") { + r := strings.SplitAfter(url, "imageView2") + size := strings.Split(r[1], "/") + if len(size) != 8 { + c.String(http.StatusNotFound, "invalid thumb args") + return + } + with := utils.IntValue(size[3], 0) + height := utils.IntValue(size[5], 0) + quality := utils.IntValue(size[7], 75) - // 打开图片文件 - filePath := strings.TrimLeft(c.Request.URL.Path, "/") - file, err := os.Open(filePath) - if err != nil { - c.String(http.StatusNotFound, "Image not found") - return - } - defer file.Close() + // 打开图片文件 + filePath := strings.TrimLeft(c.Request.URL.Path, "/") + file, err := os.Open(filePath) + if err != nil { + c.String(http.StatusNotFound, "Image not found") + return + } + defer file.Close() - // 解码图片 - img, _, err := image.Decode(file) - // for .webp image - if err != nil { - img, err = webp.Decode(file) - } - if err != nil { - c.String(http.StatusInternalServerError, "Error decoding image") - return + // 解码图片 + img, _, err := image.Decode(file) + // for .webp image + if err != nil { + img, err = webp.Decode(file) + } + if err != nil { + c.String(http.StatusInternalServerError, "Error decoding image") + return + } + + var newImg image.Image + if height == 0 || with == 0 { + // 固定宽度,高度自适应 + newImg = resize.Resize(uint(with), uint(height), img, resize.Lanczos3) + } else { + // 生成缩略图 + newImg = resize.Thumbnail(uint(with), uint(height), img, resize.Lanczos3) + } + var buffer bytes.Buffer + err = jpeg.Encode(&buffer, newImg, &jpeg.Options{Quality: quality}) + if err != nil { + logger.Error(err) + c.String(http.StatusInternalServerError, err.Error()) + return + } + + // 设置图片缓存有效期为一年 (365天) + c.Header("Cache-Control", "max-age=31536000, public") + // 直接输出图像数据流 + c.Data(http.StatusOK, "image/jpeg", buffer.Bytes()) + c.Abort() // 中断请求 + } else if strings.Contains(url, "?download=true") { + filename := filepath.Base(url) + c.Header("Content-Disposition", "attachment; filename="+filename) + c.Header("Content-Type", "application/octet-stream") } - var newImg image.Image - if height == 0 || with == 0 { - // 固定宽度,高度自适应 - newImg = resize.Resize(uint(with), uint(height), img, resize.Lanczos3) - } else { - // 生成缩略图 - newImg = resize.Thumbnail(uint(with), uint(height), img, resize.Lanczos3) - } - var buffer bytes.Buffer - err = jpeg.Encode(&buffer, newImg, &jpeg.Options{Quality: quality}) - if err != nil { - logger.Error(err) - c.String(http.StatusInternalServerError, err.Error()) - return - } - - // 设置图片缓存有效期为一年 (365天) - c.Header("Cache-Control", "max-age=31536000, public") - // 直接输出图像数据流 - c.Data(http.StatusOK, "image/jpeg", buffer.Bytes()) - c.Abort() // 中断请求 } c.Next() } diff --git a/web/src/assets/css/home.css b/web/src/assets/css/home.css new file mode 100644 index 00000000..f037af08 --- /dev/null +++ b/web/src/assets/css/home.css @@ -0,0 +1,154 @@ +.home { + display: flex; + height: 100vh; + width: 100%; + flex-flow: column; +} +.home .header { + display: flex; + justify-content: space-between; + height: 50px; + line-height: 50px; + background-color: #1e1f22; + padding-right: 20px; +} +.home .header .banner { + display: flex; +} +.home .header .banner .logo { + display: flex; + padding: 5px; + cursor: pointer; +} +.home .header .banner .logo .el-image { + width: 48px; + height: 48px; + background-color: #fff; + border-radius: 50%; +} +.home .header .banner .title { + display: flex; + color: #fff; + font-size: 20px; + padding: 0 10px; +} +.home .header .navbar { + display: flex; + flex-flow: row; +} +.home .header .navbar .link-button { + margin-right: 15px; + color: #e1e1e1; + padding: 0 10px; +} +.home .header .navbar .link-button:hover { + background-color: #414141; +} +.home .header .navbar .link-button .iconfont { + font-size: 24px; +} +.home .header .navbar .user-info { + width: 100%; + padding: 5px 0; +} +.home .header .navbar .user-info .el-dropdown-link { + width: 100%; + cursor: pointer; + display: flex; +} +.home .header .navbar .user-info .el-dropdown-link .el-image { + width: 36px; + height: 36px; + border-radius: 50%; +} +.home .header .navbar .user-info .el-dropdown-link .el-icon { + color: #ccc; + line-height: 24px; +} +.home .main { + width: 100%; + display: flex; + flex-flow: row; +} +.home .main .navigator { + display: flex; + flex-flow: column; + width: 60px; + padding: 10px 1px; + border-right: 1px solid #3c3c3c; + background-color: #1e1f22; +} +.home .main .navigator .nav-items { + margin-top: 10px; + padding: 0 5px; +} +.home .main .navigator .nav-items li { + margin-bottom: 15px; + display: flex; + flex-flow: column; +} +.home .main .navigator .nav-items li a { + color: #dadbdc; + border-radius: 10px; + width: 48px; + height: 48px; + display: flex; + justify-content: center; + align-items: center; + cursor: pointer; + background-color: #414348; +} +.home .main .navigator .nav-items li a .el-image { + border-radius: 10px; +} +.home .main .navigator .nav-items li a .iconfont { + font-size: 20px; +} +.home .main .navigator .nav-items li a:hover, +.home .main .navigator .nav-items li a.active { + color: #47fff1; + background-color: #0f7a71; +} +.home .main .navigator .nav-items li .title { + font-size: 12px; + padding-top: 6px; + color: #e5e7eb; + text-align: center; + white-space: nowrap; /* 防止文本换行 */ + overflow: hidden; /* 隐藏溢出内容 */ + text-overflow: unset; /* 使用省略号表示溢出内容 */ +} +.home .main .navigator .nav-items li .active { + color: #47fff1; +} +.home .main .content { + width: 100%; + overflow: auto; + box-sizing: border-box; + background-color: #282c34; +} +.el-popper .more-menus li { + padding: 10px 15px; + cursor: pointer; + border-radius: 5px; + margin: 5px 0; +} +.el-popper .more-menus li .el-image { + position: relative; + top: 5px; + right: 5px; +} +.el-popper .more-menus li:hover { + background-color: #f1f1f1; +} +.el-popper .more-menus li.active { + background-color: #f1f1f1; +} +.el-popper .user-info-menu li a { + width: 100%; + justify-content: left; +} +.el-popper .user-info-menu li a:hover { + text-decoration: none !important; + color: var(--el-primary-text-color); +} diff --git a/web/src/assets/css/index.css b/web/src/assets/css/index.css new file mode 100644 index 00000000..3eaa8878 --- /dev/null +++ b/web/src/assets/css/index.css @@ -0,0 +1,101 @@ +.index-page { + margin: 0; + overflow: hidden; + color: #fff; + display: flex; + justify-content: center; + align-items: baseline; + padding-top: 150px; +} +.index-page .color-bg { + position: absolute; + top: 0; + left: 0; + width: 100vw; + height: 100vh; +} +.index-page .image-bg { + filter: blur(8px); + background-size: cover; + background-position: center; +} +.index-page .shadow { + box-shadow: rgba(0,0,0,0.3) 0px 0px 3px; +} +.index-page .shadow:hover { + box-shadow: rgba(0,0,0,0.3) 0px 0px 8px; +} +.index-page .menu-box { + position: absolute; + top: 0; + width: 100%; + display: flex; +} +.index-page .menu-box .el-menu { + padding: 0 30px; + width: 100%; + display: flex; + justify-content: space-between; + background: none; + border: none; +} +.index-page .menu-box .el-menu .menu-item { + display: flex; + padding: 20px 0; + color: #fff; +} +.index-page .menu-box .el-menu .menu-item .title { + font-size: 24px; + padding: 10px 10px 0 10px; +} +.index-page .menu-box .el-menu .menu-item .el-image { + height: 50px; + background-color: #fff; +} +.index-page .menu-box .el-menu .menu-item .el-button { + margin-left: 10px; +} +.index-page .menu-box .el-menu .menu-item .el-button span { + margin-left: 5px; +} +.index-page .content { + text-align: center; + position: relative; + display: flex; + flex-flow: column; + align-items: center; +} +.index-page .content h1 { + font-size: 5rem; + margin-bottom: 1rem; +} +.index-page .content p { + font-size: 1.5rem; + margin-bottom: 2rem; +} +.index-page .content .navs { + display: flex; + max-width: 900px; + padding: 20px; +} +.index-page .content .navs .el-space--horizontal { + justify-content: center; +} +.index-page .content .navs .nav-item { + width: 200px; +} +.index-page .content .navs .nav-item .el-button { + width: 100%; + padding: 25px 20px; + font-size: 1.3rem; + transition: all 0.3s ease; +} +.index-page .content .navs .nav-item .el-button .iconfont { + font-size: 24px; + margin-right: 10px; + position: relative; + top: -2px; +} +.index-page .footer .el-link__inner { + color: #fff; +} diff --git a/web/src/assets/css/login.css b/web/src/assets/css/login.css new file mode 100644 index 00000000..0b015d74 --- /dev/null +++ b/web/src/assets/css/login.css @@ -0,0 +1,99 @@ +.bg { + position: fixed; + left: 0; + right: 0; + top: 0; + bottom: 0; + background-color: #313237; + background-image: url("~@/assets/img/login-bg.jpg"); + background-size: cover; + background-position: center; + background-repeat: repeat-y; +} +.main .contain { + position: fixed; + left: 50%; + top: 40%; + width: 90%; + max-width: 400px; + transform: translate(-50%, -50%); + padding: 20px 10px; + color: #fff; + border-radius: 10px; +} +.main .contain .logo { + text-align: center; +} +.main .contain .logo .el-image { + width: 120px; + cursor: pointer; + background-color: #fff; + border-radius: 50%; +} +.main .contain .header { + width: 100%; + margin-bottom: 24px; + font-size: 24px; + color: $white_v1; + letter-space: 2px; + text-align: center; + padding-top: 10px; +} +.main .contain .content { + width: 100%; + height: auto; + border-radius: 3px; +} +.main .contain .content .block { + margin-bottom: 16px; +} +.main .contain .content .block .el-input__inner { + border: 1px solid $gray-v6 !important; +} +.main .contain .content .block .el-input__inner .el-icon-user, +.main .contain .content .block .el-input__inner .el-icon-lock { + font-size: 20px; +} +.main .contain .content .btn-row { + padding-top: 10px; +} +.main .contain .content .btn-row .login-btn { + width: 100%; + font-size: 16px; + letter-spacing: 2px; +} +.main .contain .content .text-line { + justify-content: center; + padding-top: 10px; + font-size: 14px; +} +.main .contain .content .opt { + padding: 15px; +} +.main .contain .content .opt .el-col { + text-align: center; +} +.main .contain .content .divider { + border-top: 2px solid #c1c1c1; +} +.main .contain .content .clogin { + padding: 15px; + display: flex; + justify-content: center; +} +.main .contain .content .clogin .iconfont { + font-size: 20px; + background: #e9f1f6; + padding: 8px; + border-radius: 50%; + cursor: pointer; +} +.main .contain .content .clogin .iconfont.icon-wechat { + color: #0bc15f; +} +.main .footer { + color: #fff; +} +.main .footer .container { + padding: 20px; +} diff --git a/web/src/assets/css/luma.css b/web/src/assets/css/luma.css new file mode 100644 index 00000000..ec316d99 --- /dev/null +++ b/web/src/assets/css/luma.css @@ -0,0 +1,142 @@ +.page-luma { + display: flex; + height: 100%; + background-color: #0e0808; + overflow: auto; + flex-flow: column; + align-items: center; + background: linear-gradient(180deg, rgba(75,62,53,0.8), rgba(144,50,181,0.3)); +} +.page-luma .prompt-box { + display: flex; + max-width: 56rem; + width: 100%; + padding: 20px; + flex-flow: column; +} +.page-luma .prompt-box .images { + display: flex; + flex-flow: row; + padding-bottom: 10px; + justify-content: center; +} +.page-luma .prompt-box .images .item { + position: relative; +} +.page-luma .prompt-box .images .item .el-image { + width: 100px; + height: 100px; + border-radius: 6px; + margin-right: 10px; +} +.page-luma .prompt-box .images .item .el-icon { + position: absolute; + cursor: pointer; + font-size: 20px; + color: #545454; + right: 10px; + top: 0; +} +.page-luma .prompt-box .images .item .el-icon:hover { + color: #888; +} +.page-luma .prompt-box .prompt-container { + width: 100%; +} +.page-luma .prompt-box .prompt-container .input-container { + background: linear-gradient(90deg, rgba(75,62,53,0.8), rgba(144,50,181,0.3)); + border-radius: 28px; + padding: 10px 20px; + display: flex; + align-items: center; + box-shadow: 0 2px 10px rgba(0,0,0,0.2); +} +.page-luma .prompt-box .prompt-container .input-container .prompt-input { + background: transparent; + border: none; + outline: none; + color: #fff; + font-size: 14px; + width: 100%; + padding: 10px; + resize: none; + white-space: pre-wrap; + word-wrap: break-word; + line-height: 24px; + overflow-wrap: break-word; + scrollbar-width: none; /* 隐藏滚动条 */ +} +.page-luma .prompt-box .prompt-container .input-container .prompt-input::placeholder { + color: rgba(255,255,255,0.6); +} +.page-luma .prompt-box .prompt-container .input-container .prompt-input::-webkit-scrollbar { + display: none; +} +.page-luma .prompt-box .prompt-container .input-container .upload-icon, +.page-luma .prompt-box .prompt-container .input-container .send-icon { + color: #e1e1e1; +} +.page-luma .prompt-box .prompt-container .input-container .upload-icon .iconfont, +.page-luma .prompt-box .prompt-container .input-container .send-icon .iconfont { + font-size: 20px; + cursor: pointer; +} +.page-luma .prompt-box .prompt-container .input-container .upload-icon { + position: relative; +} +.page-luma .video-container { + display: flex; + flex-flow: column; + width: 100%; + padding: 0 40px; +} +.page-luma .video-container .h-title { + color: #fff; + width: 100%; + font-size: 36px; + text-align: left; +} +.page-luma .video-container .videos .item { + margin-bottom: 20px; +} +.page-luma .video-container .videos .item .video-box { + width: 100%; + border-radius: 10px; +} +.page-luma .video-container .videos .item .video-box video, +.page-luma .video-container .videos .item .video-box img { + width: 100%; + height: 100%; + object-fit: cover; + border-radius: 10px; + cursor: pointer; +} +.page-luma .video-container .videos .item .video-name { + color: #e1e1e1; + font-size: 16px; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + padding: 6px 0; + text-align: center; +} +.page-luma .video-container .videos .item .opts { + display: flex; + justify-content: center; +} +.page-luma .video-container .videos .item .opts .btn { + margin-right: 10px; + background-color: rgba(255,255,255,0.15); + border: none; + border-radius: 20px; + padding: 3px 15px; + cursor: pointer; + color: #fff; + font-size: 14px; +} +.page-luma .video-container .videos .item .opts .btn .iconfont { + font-size: 12px; +} +.page-luma .video-container .videos .item .opts .btn:hover { + background-color: rgba(255,255,255,0.2); +} diff --git a/web/src/assets/css/luma.styl b/web/src/assets/css/luma.styl index 1f681ed6..557ff651 100644 --- a/web/src/assets/css/luma.styl +++ b/web/src/assets/css/luma.styl @@ -110,10 +110,8 @@ } .videos { - display flex - flex-flow row - .item { + margin-bottom 20px .video-box { width 100% @@ -127,6 +125,7 @@ } } + .video-name { color #e1e1e1 font-size 16px @@ -136,6 +135,29 @@ padding 6px 0 text-align center } + + .opts { + display flex + justify-content center + .btn { + margin-right 10px + background-color hsla(0,0%,100%,.15) + border none + border-radius 20px + padding 3px 15px + cursor pointer + color #ffffff + font-size 14px + + .iconfont { + font-size 12px + } + + &:hover { + background-color hsla(0,0%,100%,.2) + } + } + } } } } diff --git a/web/src/components/FileSelect.vue b/web/src/components/FileSelect.vue index b2a1cb59..d340c460 100644 --- a/web/src/components/FileSelect.vue +++ b/web/src/components/FileSelect.vue @@ -20,7 +20,7 @@ :auto-upload="true" :show-file-list="false" :http-request="afterRead" - accept=".doc,.docx,.jpg,.png,.jpeg,.xls,.xlsx,.ppt,.pptx,.pdf" + accept=".doc,.docx,.jpg,.png,.jpeg,.xls,.xlsx,.ppt,.pptx,.pdf,.mp4,.mp3" > diff --git a/web/src/views/Luma.vue b/web/src/views/Luma.vue index 6a46e0af..94c6cbd7 100644 --- a/web/src/views/Luma.vue +++ b/web/src/views/Luma.vue @@ -33,12 +33,20 @@
- -
{{item.name}}
+
@@ -60,24 +68,38 @@ const videos = ref([ { id: 1, name: 'a dancing girl', - url: 'http://localhost/download/xmind.mp4', + url: 'http://localhost:5678/static/upload/2024/8/1724574661747320.mp4', cover: 'https://storage.cdn-luma.com/dream_machine/d133794f-3124-4059-a9f2-e5fed79f0d5b/video_0_thumb.jpg', playing: false }, { id: 1, - name: 'a dancing girl', - url: 'http://localhost/download/dancing.mp4', + name: 'a dancing girl a dancing girl a dancing girl a dancing girl a dancing girl', + url: 'https://storage.cdn-luma.com/dream_machine/92efa55a-f381-4161-a999-54f8fe460fca/watermarked_video0e5aad607a0644c66850d1d77022db847.mp4', cover: 'https://storage.cdn-luma.com/dream_machine/92efa55a-f381-4161-a999-54f8fe460fca/video_1_thumb.jpg', playing: false }, { id: 1, name: 'a dancing girl', - url: 'http://localhost/download/xmind.mp4', + url: 'https://storage.cdn-luma.com/dream_machine/d133794f-3124-4059-a9f2-e5fed79f0d5b/watermarked_video01944f69966f14d33b6c4486a8cfb8dde.mp4', cover: 'https://storage.cdn-luma.com/dream_machine/d133794f-3124-4059-a9f2-e5fed79f0d5b/video_0_thumb.jpg', playing: false - } + }, + { + id: 1, + name: 'a dancing girl', + url: 'https://storage.cdn-luma.com/dream_machine/92efa55a-f381-4161-a999-54f8fe460fca/watermarked_video0e5aad607a0644c66850d1d77022db847.mp4', + cover: 'https://storage.cdn-luma.com/dream_machine/92efa55a-f381-4161-a999-54f8fe460fca/video_1_thumb.jpg', + playing: false + }, + { + id: 1, + name: 'a dancing girl', + url: 'https://storage.cdn-luma.com/dream_machine/d133794f-3124-4059-a9f2-e5fed79f0d5b/watermarked_video01944f69966f14d33b6c4486a8cfb8dde.mp4', + cover: 'https://storage.cdn-luma.com/dream_machine/d133794f-3124-4059-a9f2-e5fed79f0d5b/video_0_thumb.jpg', + playing: false + }, ]) From ab421f2185509ba30eec9174015e73aa690e8fe7 Mon Sep 17 00:00:00 2001 From: RockYang Date: Mon, 26 Aug 2024 17:59:05 +0800 Subject: [PATCH 13/34] luma page, upload image and remove image function is ready --- api/core/app_server.go | 110 ++++++++++++++++------------------ api/handler/upload_handler.go | 39 ++++++++++-- api/main.go | 5 +- web/public/images/loading.gif | Bin 0 -> 16618 bytes web/src/assets/css/luma.styl | 27 ++++++++- web/src/utils/http.js | 14 +++++ web/src/views/Luma.vue | 86 +++++++++++++++++++++----- 7 files changed, 200 insertions(+), 81 deletions(-) create mode 100644 web/public/images/loading.gif diff --git a/api/core/app_server.go b/api/core/app_server.go index fab16d1c..92967067 100644 --- a/api/core/app_server.go +++ b/api/core/app_server.go @@ -26,7 +26,6 @@ import ( "io" "net/http" "os" - "path/filepath" "runtime/debug" "strings" "time" @@ -228,6 +227,7 @@ func needLogin(c *gin.Context) bool { c.Request.URL.Path == "/api/suno/client" || c.Request.URL.Path == "/api/suno/detail" || c.Request.URL.Path == "/api/suno/play" || + c.Request.URL.Path == "/api/download" || strings.HasPrefix(c.Request.URL.Path, "/api/test") || strings.HasPrefix(c.Request.URL.Path, "/api/user/clogin") || strings.HasPrefix(c.Request.URL.Path, "/api/config/") || @@ -316,64 +316,58 @@ func staticResourceMiddleware() gin.HandlerFunc { url := c.Request.URL.String() // 拦截生成缩略图请求 - if strings.HasPrefix(url, "/static/") { - if strings.Contains(url, "?imageView2") { - r := strings.SplitAfter(url, "imageView2") - size := strings.Split(r[1], "/") - if len(size) != 8 { - c.String(http.StatusNotFound, "invalid thumb args") - return - } - with := utils.IntValue(size[3], 0) - height := utils.IntValue(size[5], 0) - quality := utils.IntValue(size[7], 75) - - // 打开图片文件 - filePath := strings.TrimLeft(c.Request.URL.Path, "/") - file, err := os.Open(filePath) - if err != nil { - c.String(http.StatusNotFound, "Image not found") - return - } - defer file.Close() - - // 解码图片 - img, _, err := image.Decode(file) - // for .webp image - if err != nil { - img, err = webp.Decode(file) - } - if err != nil { - c.String(http.StatusInternalServerError, "Error decoding image") - return - } - - var newImg image.Image - if height == 0 || with == 0 { - // 固定宽度,高度自适应 - newImg = resize.Resize(uint(with), uint(height), img, resize.Lanczos3) - } else { - // 生成缩略图 - newImg = resize.Thumbnail(uint(with), uint(height), img, resize.Lanczos3) - } - var buffer bytes.Buffer - err = jpeg.Encode(&buffer, newImg, &jpeg.Options{Quality: quality}) - if err != nil { - logger.Error(err) - c.String(http.StatusInternalServerError, err.Error()) - return - } - - // 设置图片缓存有效期为一年 (365天) - c.Header("Cache-Control", "max-age=31536000, public") - // 直接输出图像数据流 - c.Data(http.StatusOK, "image/jpeg", buffer.Bytes()) - c.Abort() // 中断请求 - } else if strings.Contains(url, "?download=true") { - filename := filepath.Base(url) - c.Header("Content-Disposition", "attachment; filename="+filename) - c.Header("Content-Type", "application/octet-stream") + if strings.HasPrefix(url, "/static/") && strings.Contains(url, "?imageView2") { + r := strings.SplitAfter(url, "imageView2") + size := strings.Split(r[1], "/") + if len(size) != 8 { + c.String(http.StatusNotFound, "invalid thumb args") + return } + with := utils.IntValue(size[3], 0) + height := utils.IntValue(size[5], 0) + quality := utils.IntValue(size[7], 75) + + // 打开图片文件 + filePath := strings.TrimLeft(c.Request.URL.Path, "/") + file, err := os.Open(filePath) + if err != nil { + c.String(http.StatusNotFound, "Image not found") + return + } + defer file.Close() + + // 解码图片 + img, _, err := image.Decode(file) + // for .webp image + if err != nil { + img, err = webp.Decode(file) + } + if err != nil { + c.String(http.StatusInternalServerError, "Error decoding image") + return + } + + var newImg image.Image + if height == 0 || with == 0 { + // 固定宽度,高度自适应 + newImg = resize.Resize(uint(with), uint(height), img, resize.Lanczos3) + } else { + // 生成缩略图 + newImg = resize.Thumbnail(uint(with), uint(height), img, resize.Lanczos3) + } + var buffer bytes.Buffer + err = jpeg.Encode(&buffer, newImg, &jpeg.Options{Quality: quality}) + if err != nil { + logger.Error(err) + c.String(http.StatusInternalServerError, err.Error()) + return + } + + // 设置图片缓存有效期为一年 (365天) + c.Header("Cache-Control", "max-age=31536000, public") + // 直接输出图像数据流 + c.Data(http.StatusOK, "image/jpeg", buffer.Bytes()) + c.Abort() // 中断请求 } c.Next() diff --git a/api/handler/upload_handler.go b/api/handler/upload_handler.go index 9d2c8706..fd7f437d 100644 --- a/api/handler/upload_handler.go +++ b/api/handler/upload_handler.go @@ -17,19 +17,21 @@ import ( "geekai/utils/resp" "github.com/gin-gonic/gin" "gorm.io/gorm" + "io" + "net/http" "time" ) -type UploadHandler struct { +type NetHandler struct { BaseHandler uploaderManager *oss.UploaderManager } -func NewUploadHandler(app *core.AppServer, db *gorm.DB, manager *oss.UploaderManager) *UploadHandler { - return &UploadHandler{BaseHandler: BaseHandler{App: app, DB: db}, uploaderManager: manager} +func NewNetHandler(app *core.AppServer, db *gorm.DB, manager *oss.UploaderManager) *NetHandler { + return &NetHandler{BaseHandler: BaseHandler{App: app, DB: db}, uploaderManager: manager} } -func (h *UploadHandler) Upload(c *gin.Context) { +func (h *NetHandler) Upload(c *gin.Context) { file, err := h.uploaderManager.GetUploadHandler().PutFile(c, "file") if err != nil { resp.ERROR(c, err.Error()) @@ -60,7 +62,7 @@ func (h *UploadHandler) Upload(c *gin.Context) { resp.SUCCESS(c, file) } -func (h *UploadHandler) List(c *gin.Context) { +func (h *NetHandler) List(c *gin.Context) { var data struct { Urls []string `json:"urls,omitempty"` } @@ -95,7 +97,7 @@ func (h *UploadHandler) List(c *gin.Context) { } // Remove remove files -func (h *UploadHandler) Remove(c *gin.Context) { +func (h *NetHandler) Remove(c *gin.Context) { userId := h.GetLoginUserId(c) id := h.GetInt(c, "id", 0) var file model.File @@ -119,3 +121,28 @@ func (h *UploadHandler) Remove(c *gin.Context) { _ = h.uploaderManager.GetUploadHandler().Delete(objectKey) resp.SUCCESS(c) } + +func (h *NetHandler) Download(c *gin.Context) { + fileUrl := c.Query("url") + // 使用http工具下载文件 + if fileUrl == "" { + resp.ERROR(c, types.InvalidArgs) + return + } + // 使用http.Get下载文件 + r, err := http.Get(fileUrl) + if err != nil { + resp.ERROR(c, err.Error()) + return + } + defer r.Body.Close() + + if r.StatusCode != http.StatusOK { + resp.ERROR(c, "error status:"+r.Status) + return + } + + // 将下载的文件内容写入响应 + c.Status(http.StatusOK) + _, _ = io.Copy(c.Writer, r.Body) +} diff --git a/api/main.go b/api/main.go index 58a428be..2cf9a407 100644 --- a/api/main.go +++ b/api/main.go @@ -128,7 +128,7 @@ func main() { fx.Provide(handler.NewChatRoleHandler), fx.Provide(handler.NewUserHandler), fx.Provide(chatimpl.NewChatHandler), - fx.Provide(handler.NewUploadHandler), + fx.Provide(handler.NewNetHandler), fx.Provide(handler.NewSmsHandler), fx.Provide(handler.NewRedeemHandler), fx.Provide(handler.NewCaptchaHandler), @@ -249,10 +249,11 @@ func main() { group.POST("tokens", h.Tokens) group.GET("stop", h.StopGenerate) }), - fx.Invoke(func(s *core.AppServer, h *handler.UploadHandler) { + fx.Invoke(func(s *core.AppServer, h *handler.NetHandler) { s.Engine.POST("/api/upload", h.Upload) s.Engine.POST("/api/upload/list", h.List) s.Engine.GET("/api/upload/remove", h.Remove) + s.Engine.GET("/api/download", h.Download) }), fx.Invoke(func(s *core.AppServer, h *handler.SmsHandler) { group := s.Engine.Group("/api/sms/") diff --git a/web/public/images/loading.gif b/web/public/images/loading.gif new file mode 100644 index 0000000000000000000000000000000000000000..77eb7b88e38e761d60f99516be3f2530552db07d GIT binary patch literal 16618 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 { + axios({ + method: 'GET', + url: url, + responseType: 'blob' // 将响应类型设置为 `blob` + }).then(response => { + resolve(response) + }).catch(err => { + reject(err) + }) + }) +} \ No newline at end of file diff --git a/web/src/views/Luma.vue b/web/src/views/Luma.vue index 94c6cbd7..8f3d8e8e 100644 --- a/web/src/views/Luma.vue +++ b/web/src/views/Luma.vue @@ -2,15 +2,24 @@
-
+
- +
- + + + +
-
+
@@ -42,20 +42,22 @@
循环参考图 - +
提示词优化 - +
- + + +

你的作品

- + + +
+
+
+
+
+ + + +
+
+
+ +
{{item.prompt_ext}}
+
+
+
+ + + + + + + + + + + + + + + + + + + +
+
+
+
+
+ +
+
+
+ {{item.title}} + {{item.prompt}} +
+
+
+
+ {{item.err_msg}} +
+ 正在生成视频 +
+
+ + + +
+
+
+
+ + +
From 87b03332d9a4891392507aa8924cda19063f5ce3 Mon Sep 17 00:00:00 2001 From: RockYang Date: Thu, 5 Sep 2024 10:54:58 +0800 Subject: [PATCH 27/34] add auto execute task to downloading video files --- CHANGELOG.md | 1 + api/service/suno/service.go | 6 ++-- api/service/video/luma.go | 69 ++++++++++++++++++++++++++++++------- 3 files changed, 61 insertions(+), 15 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index bfd50612..59a127ac 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ * Bug修复:用户登录过期之后聊天页面出现大量报错,需要刷新页面才能正常 * 功能优化:优化聊天页面 Websocket 断线重连代码,提高用户体验 * 功能优化:给算力增减服务全部加上数据库事务和同步锁 +* 功能优化:支持用户在前端对话界面选择插件 * 功能新增:支持 Luma 文生视频功能 ## v4.1.2 diff --git a/api/service/suno/service.go b/api/service/suno/service.go index 26c545c9..e3e502dd 100644 --- a/api/service/suno/service.go +++ b/api/service/suno/service.go @@ -429,11 +429,11 @@ type QueryRespVo struct { func (s *Service) QueryTask(taskId string, channel string) (QueryRespVo, error) { // 读取 API KEY var apiKey model.ApiKey - tx := s.db.Session(&gorm.Session{}).Where("type", "suno"). + err := s.db.Session(&gorm.Session{}).Where("type", "suno"). Where("api_url", channel). Where("enabled", true). - Order("last_used_at DESC").First(&apiKey) - if tx.Error != nil { + Order("last_used_at DESC").First(&apiKey).Error + if err != nil { return QueryRespVo{}, errors.New("no available API KEY for Suno") } diff --git a/api/service/video/luma.go b/api/service/video/luma.go index 3bea43a9..8d71b3e4 100644 --- a/api/service/video/luma.go +++ b/api/service/video/luma.go @@ -95,11 +95,15 @@ func (s *Service) Run() { } // 更新任务信息 - s.db.Model(&model.SunoJob{Id: task.Id}).UpdateColumns(map[string]interface{}{ + err = s.db.Model(&model.VideoJob{Id: task.Id}).UpdateColumns(map[string]interface{}{ "task_id": r.Id, "channel": r.Channel, "prompt_ext": r.Prompt, - }) + }).Error + if err != nil { + logger.Errorf("update task with error: %v", err) + s.PushTask(task) + } } }() } @@ -145,7 +149,7 @@ func (s *Service) LumaCreate(task types.VideoTask) (LumaRespVo, error) { return LumaRespVo{}, fmt.Errorf("请求 API 出错:%v", err) } - if r.StatusCode != 200 { + if r.StatusCode != 200 && r.StatusCode != 201 { return LumaRespVo{}, fmt.Errorf("请求 API 出错:%d, %s", r.StatusCode, r.String()) } @@ -193,12 +197,28 @@ func (s *Service) DownloadFiles() { } for _, v := range items { - logger.Infof("try download video: %s", v.VideoURL) - videoURL, err := s.uploadManager.GetUploadHandler().PutUrlFile(v.VideoURL, true) - if err != nil { - logger.Errorf("download audio with error: %v", err) + if v.WaterURL == "" { continue } + + logger.Infof("try download video: %s", v.WaterURL) + videoURL, err := s.uploadManager.GetUploadHandler().PutUrlFile(v.WaterURL, true) + if err != nil { + logger.Errorf("download video with error: %v", err) + continue + } + logger.Infof("download video success: %s", videoURL) + v.WaterURL = videoURL + + if v.VideoURL != "" { + logger.Infof("try download no water video: %s", v.VideoURL) + videoURL, err = s.uploadManager.GetUploadHandler().PutUrlFile(v.VideoURL, true) + if err != nil { + logger.Errorf("download video with error: %v", err) + continue + } + } + logger.Info("download no water video success: %s", videoURL) v.VideoURL = videoURL v.Progress = 100 s.db.Updates(&v) @@ -224,10 +244,31 @@ func (s *Service) SyncTaskProgress() { task, err := s.QueryLumaTask(job.TaskId, job.Channel) if err != nil { logger.Errorf("query task with error: %v", err) + // 更新任务信息 + s.db.Model(&model.VideoJob{Id: job.Id}).UpdateColumns(map[string]interface{}{ + "progress": service.FailTaskProgress, // 102 表示资源未下载完成, + "err_msg": err.Error(), + }) continue } logger.Debugf("task: %+v", task) + if task.State == "completed" { // 更新任务信息 + data := map[string]interface{}{ + "progress": 102, // 102 表示资源未下载完成, + "water_url": task.Video.Url, + "raw_data": utils.JsonEncode(task), + "prompt_ext": task.Prompt, + } + if task.Video.DownloadUrl != "" { + data["video_url"] = task.Video.DownloadUrl + } + err = s.db.Model(&model.VideoJob{Id: job.Id}).UpdateColumns(data).Error + if err != nil { + logger.Errorf("更新数据库失败:%v", err) + continue + } + } } @@ -254,12 +295,12 @@ type LumaTaskVo struct { func (s *Service) QueryLumaTask(taskId string, channel string) (LumaTaskVo, error) { // 读取 API KEY var apiKey model.ApiKey - tx := s.db.Session(&gorm.Session{}).Where("type", "suno"). + err := s.db.Session(&gorm.Session{}).Where("type", "luma"). Where("api_url", channel). Where("enabled", true). - Order("last_used_at DESC").First(&apiKey) - if tx.Error != nil { - return LumaTaskVo{}, errors.New("no available API KEY for Suno") + Order("last_used_at DESC").First(&apiKey).Error + if err != nil { + return LumaTaskVo{}, errors.New("no available API KEY for Luma") } apiURL := fmt.Sprintf("%s/luma/generations/%s", apiKey.ApiURL, taskId) @@ -269,8 +310,12 @@ func (s *Service) QueryLumaTask(taskId string, channel string) (LumaTaskVo, erro if err != nil { return LumaTaskVo{}, fmt.Errorf("请求 API 失败:%v", err) } - defer r.Body.Close() + + if r.StatusCode != 200 { + return LumaTaskVo{}, fmt.Errorf("API 返回失败:%v", r.String()) + } + body, _ := io.ReadAll(r.Body) err = json.Unmarshal(body, &res) if err != nil { From 11c760a4e881b2485dd215c35ab9e8b48a9b118e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=83=A1=E5=8F=8C=E6=98=8E?= Date: Thu, 5 Sep 2024 11:56:02 +0800 Subject: [PATCH 28/34] =?UTF-8?q?feat:=20=E7=94=9F=E6=88=90=E8=A7=86?= =?UTF-8?q?=E9=A2=91=E9=A1=B5=E9=9D=A22?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- web/src/assets/css/luma.styl | 18 ++++-- web/src/components/ui/BlackDialog.vue | 12 +++- web/src/utils/libs.js | 9 +++ web/src/views/Luma.vue | 80 ++++++++++----------------- 4 files changed, 60 insertions(+), 59 deletions(-) diff --git a/web/src/assets/css/luma.styl b/web/src/assets/css/luma.styl index 9d529a3a..b50fb16a 100644 --- a/web/src/assets/css/luma.styl +++ b/web/src/assets/css/luma.styl @@ -139,6 +139,7 @@ .item { display flex flex-flow row + align-items center padding 5px 0 cursor pointer margin-bottom 10px @@ -149,11 +150,16 @@ .left { .container { - width 60px - height 90px + width 160px position relative + .video{ + width 160px + border-radius 5px + } + .el-image { + width 160px height 90px border-radius 5px } @@ -172,7 +178,7 @@ .play { position absolute - width: 56px; + width: 100% height 100% top: 0; left: 50%; @@ -202,14 +208,13 @@ justify-content center align-items flex-start flex-flow column - height 90px padding 0 20px .title { padding 6px 0 font-size 16px font-weight 700 - + color rgb(250 247 245) a { color rgb(250 247 245) &:hover { @@ -241,7 +246,7 @@ } .right { - min-width 350px; + min-width 200px; font-size 14px padding 0 15px @@ -279,6 +284,7 @@ height 100px background-color #2A2525 display flex + align-items center margin-bottom 10px .left { display flex diff --git a/web/src/components/ui/BlackDialog.vue b/web/src/components/ui/BlackDialog.vue index 7794afb0..4e659ad2 100644 --- a/web/src/components/ui/BlackDialog.vue +++ b/web/src/components/ui/BlackDialog.vue @@ -20,10 +20,10 @@
- + + ")}catch(l){console&&console.log(l)}}t=function(){var l,c=document.createElement("div");c.innerHTML=a._iconfont_svg_string_4125778,(c=c.getElementsByTagName("svg")[0])&&(c.setAttribute("aria-hidden","true"),c.style.position="absolute",c.style.width=0,c.style.height=0,c.style.overflow="hidden",c=c,(l=document.body).firstChild?m(c,l.firstChild):l.appendChild(c))},document.addEventListener?~["complete","loaded","interactive"].indexOf(document.readyState)?setTimeout(t,0):(h=function(){document.removeEventListener("DOMContentLoaded",h,!1),t()},document.addEventListener("DOMContentLoaded",h,!1)):document.attachEvent&&(i=t,o=a.document,z=!1,p(),o.onreadystatechange=function(){"complete"==o.readyState&&(o.onreadystatechange=null,s())})}function s(){z||(z=!0,i())}function p(){try{o.documentElement.doScroll("left")}catch(l){return void setTimeout(p,50)}s()}})(window); \ No newline at end of file +window._iconfont_svg_string_4125778='',(a=>{var l=(c=(c=document.getElementsByTagName("script"))[c.length-1]).getAttribute("data-injectcss"),c=c.getAttribute("data-disable-injectsvg");if(!c){var t,h,i,o,z,m=function(l,c){c.parentNode.insertBefore(l,c)};if(l&&!a.__iconfont__svg__cssinject__){a.__iconfont__svg__cssinject__=!0;try{document.write("")}catch(l){console&&console.log(l)}}t=function(){var l,c=document.createElement("div");c.innerHTML=a._iconfont_svg_string_4125778,(c=c.getElementsByTagName("svg")[0])&&(c.setAttribute("aria-hidden","true"),c.style.position="absolute",c.style.width=0,c.style.height=0,c.style.overflow="hidden",c=c,(l=document.body).firstChild?m(c,l.firstChild):l.appendChild(c))},document.addEventListener?~["complete","loaded","interactive"].indexOf(document.readyState)?setTimeout(t,0):(h=function(){document.removeEventListener("DOMContentLoaded",h,!1),t()},document.addEventListener("DOMContentLoaded",h,!1)):document.attachEvent&&(i=t,o=a.document,z=!1,p(),o.onreadystatechange=function(){"complete"==o.readyState&&(o.onreadystatechange=null,s())})}function s(){z||(z=!0,i())}function p(){try{o.documentElement.doScroll("left")}catch(l){return void setTimeout(p,50)}s()}})(window); \ No newline at end of file diff --git a/web/src/assets/iconfont/iconfont.json b/web/src/assets/iconfont/iconfont.json index c58dfdf4..f114daa2 100644 --- a/web/src/assets/iconfont/iconfont.json +++ b/web/src/assets/iconfont/iconfont.json @@ -5,6 +5,13 @@ "css_prefix_text": "icon-", "description": "", "glyphs": [ + { + "icon_id": "41645421", + "name": "luma-logo", + "font_class": "luma", + "unicode": "e704", + "unicode_decimal": 59140 + }, { "icon_id": "7573248", "name": "exchange", diff --git a/web/src/assets/iconfont/iconfont.ttf b/web/src/assets/iconfont/iconfont.ttf index c6f10b8616ef50a7295b7678b72c80541bcbb633..f00663eccf08e1b716563b5d864c8fdaa3285968 100644 GIT binary patch delta 1997 zcmb7_du)?c7{;Hk{n~Xmw(bIBo4emH9YYv`MJ^6dn4qYr2*ZYPahGmJlqqJ#L3CNf zj1-Mo(3lvJ7(*6Ujae24bhdEV!F z8~MdLe90PG6#D7fiA8|34e%80>wIDF(vprSkkSn7>e;_1&{mW9y&u3dY1+>Rp3m(G zUXPQq{apuo58ayk0kCFCZ)f-JfcKBTZUV_i`Tg0hKyQzA$Xdqla(G`940P>Df6qSx zbVLBhzMk%9QxB~9ZQwEx%;zEk$Hz-owZh`NWOvi~XLhCeuOr#!1K^TtL*c*Yxj*L) z+E<)|y!XIip7LY{XUxHc-pFr#2>(M2G00Z9nVSpFA>;|e!d#SYPjGF4?8zm zcKBCkH;-HGV<9t95Pk8{kE0mGYj_=R#>YvRaVkDe!;BB{5zhQKM(`=e*#8>fI_}03 zSb-;T7b-)z1KD^S_n-_mw&5Xo@hFy|5ILy95^P5W)?f$fx%fx06!&5i?nFL{;m2Am zLJ1miA4;(RO-M!&79$IJ*aXfMARQTa7|qy-&B#S2g)g9@u-sv<`$l-kP7I}(D%hRo$j?qdcrtK@ z5SGWly+RxccMahj2JRoiN*kyI#HCOZh+9D=&j|`;f_M}P21#P&gaxK{5H7_)6(Q*g z^@Mm8DhtU_s4;~0Gf-`anV3*_NU_2SKuQ$W0#d55DiAX-L5L=o3WcSDnAH*%4Px#I z%Ll1dSV%~{!jeLK3X2PAP*`RN18QKwA&m-44>9u+ngGH@h0K9|fGk(&42Y4H&?68d zJ)v75euch)7?lVe1X-=nOOSt{s~~1xLVrP;6*>*FPNC;QkoCMFv>#-HLL)-VLI^Dh z*`m;#5Tgb`5znUPgocF#6j~S3uF%AgZYA!m9$pg~8*B1c0zx`4NsG&KXFOoSWD%^Divex?nn|J?H8||H7%fpxf8|uw_NtGocT}IKzEU$#n^b$T zZd<+ISLJ)jH`Gwq@EKRneawwJ-*B!p`L?_+udCdVc{^mi%+Y6^ow>bsW`?hgR;7Fw Zuv)`6y2d=#F1Fd{x&ou01VauBe*-8M&VT>_ delta 1923 zcmb7^TWnNS6o$XKbUM8NrL?pZC~ax!l~M!&p#pNPpn|BNTmn@J4fH~^0aTJ9XcP%1 z;P6D0n241$h8Sp!F-?q@s1ah~HG~I4Bv~Dh5MLnpK=9vPk#}e3+xwh7bI$Cw*8i`A zS0jUeMvk?lezt$QA+`;YxjVaF-qDemydU!GU~5}vNBj1M>|ZwnSHzr7Z6v>lf2r#s zQQg_yw}0Q=d%r;BhUn|+eWCqM=jbJn*A;%#-M)WMgdGrY_n-M86ep&B{q^9n*S?ytp>tYP@a6f9t*5_x8oF z$ByVeNi^*06Q0|WE|2_uzA)MmsT~;EAbOhE$W@cpT>Z-c@u)(ii^XKols*+(o&GD< zlin0Rnu=)mz{ohrAr5ndqnsESCkf;9$ml1GGYs(Y{c)B-jnDqafJMybSsr2|bD72@ zic)OgVW#S!&#;yPo@Nf^lu*wso})$w-b52|o?$~Q&9qn6w`A7#f-%qMUSbz z0p$V9a+DD);V3s)wxcXzNrxh>xv4Pe;SE}Klz?)G6*$T!Hr7#Iu|h`~#=^^la*a)P zly$7qQU0+iN0q?ByM$_jRXe0gbP-M{R4A<0QOU3dN5#V$9hDKA?yy*Ev!l{t5_mvG z##$Ve8=L8<@Yrle62O$DRG6d&ETmFM7g$KQkV3EpjVMbQd|mKp&KFbVJjWU5L@j?kk}e0IM70!g+z*lsDaPj)2r@ezbqg}P9rX<|Z#wEAWE6csy@bpKM_q-?4M+WjYx+8%PQx_? z6u95yyU0XVMNUL6MGK$m!2b<_+W@&A&N%$Cx<<2MW%OJv;VN;rhbw$88*!DOy{cC|+MYIDXyuZ%Y=I zTr6E*dU-^tMosPe z)0j3`+fzGKx1#P;eOvv(`rjM+8g4iK(6nTFU2{=$XY+v>r87>S@5=wFJ+dXeu;=p# J=Xz7oe*uC(wA}yz diff --git a/web/src/assets/iconfont/iconfont.woff b/web/src/assets/iconfont/iconfont.woff index bd6384cb71ab8eb6bc8b519a06530a3ed8cf82e9..ff63b66a4981c48ca2526ecbb3b8c06394358231 100644 GIT binary patch delta 17953 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 diff --git a/web/src/assets/iconfont/iconfont.woff2 b/web/src/assets/iconfont/iconfont.woff2 index be61aa71eff1205b861441a224fcf814cb94ca66..a6df0ee8c0360ad8b6a3fb72f289f09e646827b9 100644 GIT binary patch literal 16812 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

;^1D(Cf)yfO$}KB7CTwhD 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 搜索 - 新增用户 + 删除

@@ -170,8 +170,8 @@ import {onMounted, reactive, ref} from "vue"; import {httpGet, httpPost} from "@/utils/http"; import {ElMessage, ElMessageBox} from "element-plus"; -import {dateFormat, disabledDate, removeArrayItem} from "@/utils/libs"; -import {Plus, Search} from "@element-plus/icons-vue"; +import {dateFormat, disabledDate} from "@/utils/libs"; +import {Delete, Plus, Search} from "@element-plus/icons-vue"; // 变量定义 const users = ref({page: 1, page_size: 15, items: []}) @@ -281,7 +281,7 @@ const userEdit = function (row) { } const addUser = () => { - user.value = {} + user.value = {chat_id: 0, chat_roles: [], chat_models: []} title.value = '添加用户' showUserEditDialog.value = true add.value = true @@ -306,8 +306,36 @@ const saveUser = function () { }) } +const userIds = ref([]) const handleSelectionChange = function (rows) { - // console.log(rows) + userIds.value = [] + rows.forEach((row) => { + userIds.value.push(row.id) + }) +} + +const multipleDelete = function () { + ElMessageBox.confirm( + '此操作将会永久删除用户信息和聊天记录,确认操作吗?', + '警告', + { + confirmButtonText: '确定', + cancelButtonText: '取消', + type: 'warning', + } + ).then(() => { + loading.value = true + httpGet('/api/admin/user/remove', {ids: userIds.value}).then(() => { + ElMessage.success('操作成功!') + fetchUserList(users.value.page, users.value.page_size) + loading.value = false + }).catch((e) => { + ElMessage.error('操作失败,' + e.message) + loading.value = false + }) + }).catch(() => { + ElMessage.info('操作被取消') + }) } const resetPass = (row) => { From 78f443ed6d9b39cb23720f1c6ecf65a5fc52a426 Mon Sep 17 00:00:00 2001 From: RockYang Date: Tue, 10 Sep 2024 11:11:17 +0800 Subject: [PATCH 33/34] update v4.1.3 database sql file --- .../data/mysql/init.d/geekai_plus-v4.1.3.sql | 39 +++++-------------- 1 file changed, 9 insertions(+), 30 deletions(-) diff --git a/deploy/data/mysql/init.d/geekai_plus-v4.1.3.sql b/deploy/data/mysql/init.d/geekai_plus-v4.1.3.sql index 0ea55627..41887783 100644 --- a/deploy/data/mysql/init.d/geekai_plus-v4.1.3.sql +++ b/deploy/data/mysql/init.d/geekai_plus-v4.1.3.sql @@ -3,7 +3,7 @@ -- https://www.phpmyadmin.net/ -- -- 主机: 127.0.0.1 --- 生成日期: 2024-09-09 17:58:40 +-- 生成日期: 2024-09-10 10:42:42 -- 服务器版本: 8.0.33 -- PHP 版本: 8.1.2-1ubuntu2.18 @@ -212,8 +212,8 @@ CREATE TABLE `chatgpt_configs` ( -- INSERT INTO `chatgpt_configs` (`id`, `marker`, `config_json`) VALUES -(1, 'system', '{\"title\":\"GeekAI 创作助手\",\"slogan\":\"我辈之人,先干为敬,让每一个人都能用好AI\",\"admin_title\":\"GeekAI 控制台\",\"logo\":\"/images/logo.png\",\"init_power\":100,\"invite_power\":200,\"vip_month_power\":1000,\"register_ways\":[\"username\",\"email\",\"mobile\"],\"enabled_register\":true,\"order_pay_timeout\":600,\"vip_info_text\":\"月度会员,年度会员每月赠送 1000 点算力,赠送算力当月有效当月没有消费完的算力不结余到下个月。 点卡充值的算力长期有效。\",\"default_models\":[1],\"mj_power\":20,\"mj_action_power\":5,\"sd_power\":5,\"dall_power\":10,\"suno_power\":10,\"luma_power\":120,\"wechat_card_url\":\"/images/wx.png\",\"enable_context\":true,\"context_deep\":4,\"sd_neg_prompt\":\"nsfw, paintings,low quality,easynegative,ng_deepnegative ,lowres,bad anatomy,bad hands,bad feet\",\"mj_mode\":\"fast\",\"index_bg_url\":\"color\",\"index_navs\":[1,5,13,19,9,12,8,6],\"copyright\":\"极客学长 © 2022- 2024 All rights reserved\",\"mark_map_text\":\"# GeekAI 演示站\\n\\n- 完整的开源系统,前端应用和后台管理系统皆可开箱即用。\\n- 基于 Websocket 实现,完美的打字机体验。\\n- 内置了各种预训练好的角色应用,轻松满足你的各种聊天和应用需求。\\n- 支持 OPenAI,Azure,文心一言,讯飞星火,清华 ChatGLM等多个大语言模型。\\n- 支持 MidJourney / Stable Diffusion AI 绘画集成,开箱即用。\\n- 支持使用个人微信二维码作为充值收费的支付渠道,无需企业支付通道。\\n- 已集成支付宝支付功能,微信支付,支持多种会员套餐和点卡购买功能。\\n- 集成插件 API 功能,可结合大语言模型的 function 功能开发各种强大的插件。\",\"enabled_verify\":true}'), -(3, 'notice', '{\"sd_neg_prompt\":\"\",\"mj_mode\":\"\",\"index_bg_url\":\"\",\"index_navs\":null,\"copyright\":\"\",\"mark_map_text\":\"\",\"enabled_verify\":false,\"content\":\"## v4.1.2 更新日志\\n\\n* Bug修复:修复思维导图页面获取模型失败的问题\\n* 功能优化:优化MJ,SD,DALL-E 任务列表页面,显示失败任务的错误信息,删除失败任务可以恢复扣减算力\\n* Bug修复:修复后台拖动排序组件 Bug\\n* 功能优化:更新数据库失败时候显示具体的的报错信息\\n* Bug修复:修复管理后台对话详情页内容显示异常问题\\n* 功能优化:管理后台新增清空所有未支付订单的功能\\n* 功能优化:给会话信息和系统配置数据加上缓存功能,减少 http 请求\\n* 功能新增:增加卡密功能,支持用户使用卡密兑换算力\\n\\n注意:当前站点仅为开源项目 \\u003ca style=\\\"color: #F56C6C\\\" href=\\\"https://github.com/yangjian102621/chatgpt-plus\\\" target=\\\"_blank\\\"\\u003eChatPlus\\u003c/a\\u003e 的演示项目,本项目单纯就是给大家体验项目功能使用。\\n\\u003cstrong style=\\\"color: #F56C6C\\\"\\u003e体验额度用完之后请不要在当前站点进行任何充值操作!!!\\u003c/strong\\u003e\\n\\u003cstrong style=\\\"color: #F56C6C\\\"\\u003e体验额度用完之后请不要在当前站点进行任何充值操作!!!\\u003c/strong\\u003e\\n\\u003cstrong style=\\\"color: #F56C6C\\\"\\u003e体验额度用完之后请不要在当前站点进行任何充值操作!!!\\u003c/strong\\u003e\\n 如果觉得好用你就花几分钟自己部署一套,没有API KEY 的同学可以去下面几个推荐的中转站购买:\\n1、\\u003ca href=\\\"https://api.chat-plus.net\\\" target=\\\"_blank\\\"\\n style=\\\"font-size: 20px;color:#F56C6C\\\"\\u003ehttps://api.chat-plus.net\\u003c/a\\u003e\\n2、\\u003ca href=\\\"https://api.geekai.me\\\" target=\\\"_blank\\\"\\n style=\\\"font-size: 20px;color:#F56C6C\\\"\\u003ehttps://api.geekai.me\\u003c/a\\u003e\\n3、 \\u003ca href=\\\"https://gpt.bemore.lol\\\" target=\\\"_blank\\\"\\n style=\\\"font-size: 20px;color:#F56C6C\\\"\\u003ehttps://gpt.bemore.lol\\u003c/a\\u003e\\n支持MidJourney,GPT,Claude,Google Gemmi,以及国内各个厂家的大模型,现在有超级优惠,价格远低于 OpenAI 官方。关于中转 API 的优势和劣势请参考 [中转API技术原理](https://docs.geekai.me/config/chat/#%E4%B8%AD%E8%BD%ACapi%E5%B7%A5%E4%BD%9C%E5%8E%9F%E7%90%86)。GPT-3.5,GPT-4,DALL-E3 绘图......你都可以随意使用,无需魔法。\\n接入教程: \\u003ca href=\\\"https://docs.geekai.me\\\" target=\\\"_blank\\\"\\n style=\\\"font-size: 20px;color:#F56C6C\\\"\\u003ehttps://docs.geekai.me\\u003c/a\\u003e\\n本项目源码地址:\\u003ca href=\\\"https://github.com/yangjian102621/chatgpt-plus\\\" target=\\\"_blank\\\"\\u003ehttps://github.com/yangjian102621/chatgpt-plus\\u003c/a\\u003e\",\"updated\":true}'); +(1, 'system', '{\"title\":\"GeekAI 创作助手\",\"slogan\":\"我辈之人,先干为敬,让每一个人都能用好AI\",\"admin_title\":\"GeekAI 控制台\",\"logo\":\"/images/logo.png\",\"init_power\":100,\"invite_power\":200,\"vip_month_power\":1000,\"register_ways\":[\"username\",\"email\",\"mobile\"],\"enabled_register\":true,\"order_pay_timeout\":600,\"vip_info_text\":\"月度会员,年度会员每月赠送 1000 点算力,赠送算力当月有效当月没有消费完的算力不结余到下个月。 点卡充值的算力长期有效。\",\"default_models\":[1],\"mj_power\":20,\"mj_action_power\":5,\"sd_power\":5,\"dall_power\":10,\"suno_power\":10,\"luma_power\":120,\"wechat_card_url\":\"/images/wx.png\",\"enable_context\":true,\"context_deep\":4,\"sd_neg_prompt\":\"nsfw, paintings,low quality,easynegative,ng_deepnegative ,lowres,bad anatomy,bad hands,bad feet\",\"mj_mode\":\"fast\",\"index_bg_url\":\"color\",\"index_navs\":[1,5,13,19,9,12,6,20,8,10],\"copyright\":\"极客学长 © 2022- 2024 All rights reserved\",\"mark_map_text\":\"# GeekAI 演示站\\n\\n- 完整的开源系统,前端应用和后台管理系统皆可开箱即用。\\n- 基于 Websocket 实现,完美的打字机体验。\\n- 内置了各种预训练好的角色应用,轻松满足你的各种聊天和应用需求。\\n- 支持 OPenAI,Azure,文心一言,讯飞星火,清华 ChatGLM等多个大语言模型。\\n- 支持 MidJourney / Stable Diffusion AI 绘画集成,开箱即用。\\n- 支持使用个人微信二维码作为充值收费的支付渠道,无需企业支付通道。\\n- 已集成支付宝支付功能,微信支付,支持多种会员套餐和点卡购买功能。\\n- 集成插件 API 功能,可结合大语言模型的 function 功能开发各种强大的插件。\",\"enabled_verify\":true}'), +(3, 'notice', '{\"sd_neg_prompt\":\"\",\"mj_mode\":\"\",\"index_bg_url\":\"\",\"index_navs\":null,\"copyright\":\"\",\"mark_map_text\":\"\",\"enabled_verify\":false,\"content\":\"## v4.1.3 更新日志\\n\\n* 功能优化:重构用户登录模块,给所有的登录组件增加行为验证码功能,支持用户绑定手机,邮箱和微信\\n* 功能优化:重构找回密码模块,支持通过手机或者邮箱找回密码\\n* 功能优化:管理后台给可以拖动排序的组件添加拖动图标\\n* 功能优化:Suno 支持合成完整歌曲,和上传自己的音乐作品进行二次创作\\n* Bug修复:手机端角色和模型选择不生效\\n* Bug修复:用户登录过期之后聊天页面出现大量报错,需要刷新页面才能正常\\n* 功能优化:优化聊天页面 Websocket 断线重连代码,提高用户体验\\n* 功能优化:给算力增减服务全部加上数据库事务和同步锁\\n* 功能优化:支持用户在前端对话界面选择插件\\n* 功能新增:支持 Luma 文生视频功能\\n\\n注意:当前站点仅为开源项目 \\u003ca style=\\\"color: #F56C6C\\\" href=\\\"https://github.com/yangjian102621/geekai\\\" target=\\\"_blank\\\"\\u003eGeekAI-Plus\\u003c/a\\u003e 的演示项目,本项目单纯就是给大家体验项目功能使用。\\n\\u003cstrong style=\\\"color: #F56C6C\\\"\\u003e体验额度用完之后请不要在当前站点进行任何充值操作!!!\\u003c/strong\\u003e\\n\\u003cstrong style=\\\"color: #F56C6C\\\"\\u003e体验额度用完之后请不要在当前站点进行任何充值操作!!!\\u003c/strong\\u003e\\n\\u003cstrong style=\\\"color: #F56C6C\\\"\\u003e体验额度用完之后请不要在当前站点进行任何充值操作!!!\\u003c/strong\\u003e\\n 如果觉得好用你就花几分钟自己部署一套,没有API KEY 的同学可以去下面几个推荐的中转站购买:\\n1、\\u003ca href=\\\"https://api.chat-plus.net\\\" target=\\\"_blank\\\"\\n style=\\\"font-size: 20px;color:#F56C6C\\\"\\u003ehttps://api.chat-plus.net\\u003c/a\\u003e\\n2、\\u003ca href=\\\"https://api.geekai.me\\\" target=\\\"_blank\\\"\\n style=\\\"font-size: 20px;color:#F56C6C\\\"\\u003ehttps://api.geekai.me\\u003c/a\\u003e\\n3、 \\u003ca href=\\\"https://gpt.bemore.lol\\\" target=\\\"_blank\\\"\\n style=\\\"font-size: 20px;color:#F56C6C\\\"\\u003ehttps://gpt.bemore.lol\\u003c/a\\u003e\\n支持MidJourney,GPT,Claude,Google Gemmi,以及国内各个厂家的大模型,现在有超级优惠,价格远低于 OpenAI 官方。关于中转 API 的优势和劣势请参考 [中转API技术原理](https://docs.geekai.me/config/chat/#%E4%B8%AD%E8%BD%ACapi%E5%B7%A5%E4%BD%9C%E5%8E%9F%E7%90%86)。GPT-3.5,GPT-4,DALL-E3 绘图......你都可以随意使用,无需魔法。\\n接入教程: \\u003ca href=\\\"https://docs.geekai.me\\\" target=\\\"_blank\\\"\\n style=\\\"font-size: 20px;color:#F56C6C\\\"\\u003ehttps://docs.geekai.me\\u003c/a\\u003e\\n本项目源码地址:\\u003ca href=\\\"https://github.com/yangjian102621/geekai\\\" target=\\\"_blank\\\"\\u003ehttps://github.com/yangjian102621/geekai\\u003c/a\\u003e\",\"updated\":true}'); -- -------------------------------------------------------- @@ -231,7 +231,7 @@ CREATE TABLE `chatgpt_dall_jobs` ( `publish` tinyint(1) NOT NULL COMMENT '是否发布', `power` smallint NOT NULL COMMENT '消耗算力', `progress` smallint NOT NULL COMMENT '任务进度', - `err_msg` varchar(255) NOT NULL COMMENT '错误信息', + `err_msg` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '错误信息', `created_at` datetime NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='DALLE 绘图任务表'; @@ -371,7 +371,7 @@ CREATE TABLE `chatgpt_mj_jobs` ( `progress` smallint DEFAULT '0' COMMENT '任务进度', `use_proxy` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否使用反代', `publish` tinyint(1) NOT NULL COMMENT '是否发布', - `err_msg` varchar(255) DEFAULT NULL COMMENT '错误信息', + `err_msg` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '错误信息', `power` smallint NOT NULL DEFAULT '0' COMMENT '消耗算力', `created_at` datetime NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='MidJourney 任务表'; @@ -487,7 +487,7 @@ CREATE TABLE `chatgpt_sd_jobs` ( `params` text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci COMMENT '绘画参数json', `progress` smallint DEFAULT '0' COMMENT '任务进度', `publish` tinyint(1) NOT NULL COMMENT '是否发布', - `err_msg` varchar(255) DEFAULT NULL COMMENT '错误信息', + `err_msg` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '错误信息', `power` smallint NOT NULL DEFAULT '0' COMMENT '消耗算力', `created_at` datetime NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='Stable Diffusion 任务表'; @@ -519,7 +519,7 @@ CREATE TABLE `chatgpt_suno_jobs` ( `progress` smallint DEFAULT '0' COMMENT '任务进度', `duration` smallint NOT NULL DEFAULT '0' COMMENT '歌曲时长', `publish` tinyint(1) NOT NULL COMMENT '是否发布', - `err_msg` varchar(255) DEFAULT NULL COMMENT '错误信息', + `err_msg` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '错误信息', `raw_data` text COMMENT '原始数据', `power` smallint NOT NULL DEFAULT '0' COMMENT '消耗算力', `play_times` int DEFAULT NULL COMMENT '播放次数', @@ -562,28 +562,7 @@ CREATE TABLE `chatgpt_users` ( -- INSERT INTO `chatgpt_users` (`id`, `username`, `mobile`, `email`, `nickname`, `password`, `avatar`, `salt`, `power`, `expired_time`, `status`, `chat_config_json`, `chat_roles_json`, `chat_models_json`, `last_login_at`, `vip`, `last_login_ip`, `openid`, `platform`, `created_at`, `updated_at`) VALUES -(4, '18888888888', '18575670125', 'yangjian@pvc123.com', '极客学长', 'ccc3fb7ab61b8b5d096a4a166ae21d121fc38c71bbd1be6173d9ab973214a63b', 'http://localhost:5678/static/upload/2024/5/1715651569509929.png', 'ueedue5l', 4830, 0, 1, '{\"api_keys\":{\"Azure\":\"\",\"ChatGLM\":\"\",\"OpenAI\":\"\"}}', '[\"red_book\",\"gpt\",\"seller\",\"artist\",\"lu_xun\",\"girl_friend\",\"psychiatrist\",\"teacher\",\"programmer\",\"test\",\"qing_gan_da_shi\",\"english_trainer\",\"elon_musk\",\"kong_zi\"]', '[1,11]', 1725853969, 1, '::1', 'oCs0t64FaOLfiTbHZpOqk3aUp_94', NULL, '2023-06-12 16:47:17', '2024-09-09 11:52:49'), -(9, '1234567', NULL, NULL, '极客学长@604526', '858e2afec79e1d6364f4567f945f2310024896d9aa45dd944efa95a0c31e4d08', '/images/avatar/user.png', '00qawlos', 100, 0, 1, '', '[\"gpt\"]', '[11,7,1,10,12,19,18,17,3]', 0, 0, '', NULL, NULL, '2024-04-26 15:21:06', '2024-04-26 15:21:06'), -(11, 'abc123', NULL, NULL, '极客学长@965562', '7a15c53afdb1da7093d80f9940e716eb396e682cfb1f2d107d0b81b183a3ba13', '/images/avatar/user.png', '6433mfbk', 1124, 0, 1, '', '[\"gpt\"]', '[11,7,1,10,12,19,18,17,3]', 0, 0, '', NULL, NULL, '2024-06-06 09:37:44', '2024-06-06 09:37:44'), -(14, 'wx@3567548322', NULL, NULL, '极客学长', '5a349ba89582a4074938b5a3ce84e87c937681ad47e8b87aab03a987e22b6077', 'https://thirdwx.qlogo.cn/mmopen/vi_32/uyxRMqZcEkb7fHouKXbNzxrnrvAttBKkwNlZ7yFibibRGiahdmsrZ3A1NKf8Fw5qJNJn4TXRmygersgEbibaSGd9Sg/132', 'abhzbmij', 83, 0, 1, '', '[\"gpt\"]', '[11,7,1,10,12,19,18,17,3]', 1723537600, 0, '::1', '', '', '2024-07-04 14:52:08', '2024-08-13 16:26:41'), -(15, 'user123', NULL, NULL, '极客学长@191303', '4a4c0a14d5fc8787357517f14f6e442281b42c8ec4395016b77483997476011e', '/images/avatar/user.png', 'cyzwkbrx', 100, 0, 1, '', '[\"gpt\"]', '[11,7,1,10,12,19,18,17,3]', 0, 0, '', '', '', '2024-07-09 10:49:27', '2024-07-09 10:49:27'), -(17, 'user1234', NULL, NULL, '极客学长@836764', 'bfe03c9c8c9fff5b77e36e40e8298ad3a6073d43c6a936b008eebb21113bf550', '/images/avatar/user.png', '1d2alwnj', 100, 0, 1, '', '[\"gpt\"]', '[11,7,1,10,12,19,18,17,3]', 0, 0, '', '', '', '2024-07-09 10:53:17', '2024-07-09 10:53:17'), -(21, 'husm@pvc123.com', NULL, NULL, '极客学长@721654', 'e030537dc43fea1bf1fa55a24f99e44f29311bebea96e88ea186995c77db083b', '/images/avatar/user.png', 'p1etg3oi', 100, 0, 1, '', '[\"gpt\"]', '[11,7,1,10,12,19,18,17,3]', 0, 0, '', '', '', '2024-07-11 16:50:33', '2024-07-11 16:50:33'), -(22, '15818323616', NULL, NULL, 'ted0000', '3ca6b2ff585d03be8ca4de33ad00148497a09372914ee8aa4cfde343266cbcdd', 'http://localhost:5678/static/upload/2024/7/1720775695548167.jpg', 'sq4s1brf', 100, 0, 1, '', '[\"gpt\"]', '[11,7,1,10,12,19,18,17,3]', 1721785366, 0, '172.22.11.36', '', '', '2024-07-12 15:12:16', '2024-07-24 09:42:46'), -(26, 'admin1', NULL, NULL, '极客学长@282111', 'c26d3c966ea66eb7bf1549f24a66af386465c16757328bfb9f3077ae5effcfb1', '/images/avatar/user.png', 'v76iw0k1', 100, 0, 1, '', '[\"gpt\"]', '[1]', 0, 0, '', '', '', '2024-08-13 12:07:30', '2024-08-13 12:07:30'), -(27, 'admin3', NULL, NULL, '极客学长@172692', 'b1a67a2e3e630c532a9127050256aaa9bb6ee03fa0bdf54d73edbbcc5b0a44af', '/images/avatar/user.png', '5wmclwgh', 100, 0, 1, '', '[\"gpt\"]', '[1]', 0, 0, '', '', '', '2024-08-13 12:12:04', '2024-08-13 12:12:04'), -(28, 'admin4', NULL, NULL, '极客学长@936655', '0a756e0bff6c4b8b19522ff443abd98739fdd746b561bfcd1430ea29996d4ca3', '/images/avatar/user.png', 'j4r5ywfe', 100, 0, 1, '', '[\"gpt\"]', '[1]', 0, 0, '', '', '', '2024-08-13 12:12:49', '2024-08-13 12:12:49'), -(29, 'admin11', NULL, NULL, '极客学长@822189', 'bd950072a8b944be77ec3054ba75632de4b6a79555f9ceece984d8d91cd6781c', '/images/avatar/user.png', '4hi9ein6', 100, 0, 1, '', '[\"gpt\"]', '[1]', 0, 0, '', '', '', '2024-08-13 14:11:14', '2024-08-13 14:11:14'), -(30, 'admin5', NULL, NULL, '极客学长@789501', 'ada230c9805f19100dfb5f33a7867f94786db1215654113d29305ab3755b1bf9', '/images/avatar/user.png', 'xvhao7x4', 100, 0, 1, '', '[\"gpt\"]', '[1]', 0, 0, '', '', '', '2024-08-13 14:13:35', '2024-08-13 14:13:35'), -(31, 'admin67', NULL, NULL, '极客学长@343467', 'fea7ad23610e9aeca7230c422b95adacbab817f097d4e4753fe0b33a1c883172', '/images/avatar/user.png', 'cqmgcj6y', 100, 0, 1, '', '[\"gpt\"]', '[1]', 0, 0, '', '', '', '2024-08-13 14:14:01', '2024-08-30 09:25:45'), -(32, 'admin7', NULL, NULL, '极客学长@286350', '25f059928fd2db417a844371847bb280d4c31907085180ca44265dd6eebab77f', '/images/avatar/user.png', 'bqmph02n', 100, 0, 1, '', '[\"gpt\"]', '[1]', 0, 0, '', '', '', '2024-08-13 14:16:08', '2024-08-13 14:16:08'), -(33, 'user1', NULL, NULL, '极客学长@172155', '41435a562af10889f545a90d02635911d3af639eb580bf9b77382e75375fde06', '/images/avatar/user.png', '8mk6g4qx', 100, 0, 1, '', '[\"gpt\"]', '[1]', 1723530263, 0, '::1', '', '', '2024-08-13 14:19:47', '2024-08-13 14:24:24'), -(34, 'wx@4425914709', '', '', '极客学长', 'f88cfd707b1cc793fc51f8a50b499d4bf4afae032a594f968011c50fb93ae531', 'https://thirdwx.qlogo.cn/mmopen/vi_32/uyxRMqZcEkb7fHouKXbNzxrnrvAttBKkwNlZ7yFibibRGiahdmsrZ3A1NKf8Fw5qJNJn4TXRmygersgEbibaSGd9Sg/132', 'naa3fvjo', 100, 0, 1, '', '[\"gpt\"]', '[1]', 0, 0, '', NULL, '', '2024-08-13 16:36:08', '2024-08-13 16:36:08'), -(35, 'wx@2463076272', '', '', '极客学长', '02ad55a3828af665168ace544678b848bf7b3681878e8c055e1494973124e903', 'https://thirdwx.qlogo.cn/mmopen/vi_32/uyxRMqZcEkb7fHouKXbNzxrnrvAttBKkwNlZ7yFibibRGiahdmsrZ3A1NKf8Fw5qJNJn4TXRmygersgEbibaSGd9Sg/132', 'kgt5wq2m', 100, 0, 1, '', '[\"gpt\"]', '[1]', 1723539827, 0, '::1', '', '', '2024-08-13 16:48:37', '2024-08-13 17:03:48'), -(36, 'wx@2206731379', '', '', '极客学长', '92803ab5221da03e1f663c1381648476eb8c975094570e9980843adbd6415dca', 'https://thirdwx.qlogo.cn/mmopen/vi_32/uyxRMqZcEkb7fHouKXbNzxrnrvAttBKkwNlZ7yFibibRGiahdmsrZ3A1NKf8Fw5qJNJn4TXRmygersgEbibaSGd9Sg/132', 'xppsctgl', 100, 0, 1, '', '[\"gpt\"]', '[1]', 1723539964, 0, '::1', '', '', '2024-08-13 17:04:19', '2024-08-13 17:06:05'), -(37, 'wx@5354985253', '18575670126', 'yangjian1@pvc123.com', '极客学长', 'a0cdb6bf32424c4f3534ea9c0326898537e5a76a12ef0170a1eadd68e7931804', 'https://thirdwx.qlogo.cn/mmopen/vi_32/uyxRMqZcEkb7fHouKXbNzxrnrvAttBKkwNlZ7yFibibRGiahdmsrZ3A1NKf8Fw5qJNJn4TXRmygersgEbibaSGd9Sg/132', 'kcpgg3fs', 97, 0, 1, '', '[\"gpt\"]', '[1]', 1724037840, 0, '::1', 'oCs0t62472W19z2LOEKI1rWyCTTA', '', '2024-08-13 17:16:26', '2024-08-19 11:24:00'), -(38, 'yangjian102621@gmail.com', '', 'yangjian102621@gmail.com', '极客学长@479380', '18c9c557eee244127e5b841308292e14085cd4e44c44e929eb0eb2355471807b', '/images/avatar/user.png', 'zjyyjdfu', 100, 0, 1, '', '[\"gpt\"]', '[1]', 0, 0, '', '', '', '2024-08-13 18:39:14', '2024-08-30 09:25:24'), -(39, '17620556057', '17620556057', '', '极客学长@896656', 'a7794114454933b3128cf7b17b1c9167943b0d59f85b1490a56f37b12126ebfc', '/images/avatar/user.png', 'qajhd6sj', 96, 0, 1, '', '[\"gpt\"]', '[1]', 0, 0, '', '', '', '2024-08-30 15:03:32', '2024-08-30 15:03:32'); +(4, '18888888888', '18575670125', 'yangjian@pvc123.com', '极客学长', 'ccc3fb7ab61b8b5d096a4a166ae21d121fc38c71bbd1be6173d9ab973214a63b', 'http://localhost:5678/static/upload/2024/5/1715651569509929.png', 'ueedue5l', 4710, 0, 1, '{\"api_keys\":{\"Azure\":\"\",\"ChatGLM\":\"\",\"OpenAI\":\"\"}}', '[\"red_book\",\"gpt\",\"seller\",\"artist\",\"lu_xun\",\"girl_friend\",\"psychiatrist\",\"teacher\",\"programmer\",\"test\",\"qing_gan_da_shi\",\"english_trainer\",\"elon_musk\",\"kong_zi\"]', '[1,11]', 1725853969, 1, '::1', 'oCs0t64FaOLfiTbHZpOqk3aUp_94', NULL, '2023-06-12 16:47:17', '2024-09-09 11:52:49'); -- -------------------------------------------------------- @@ -622,7 +601,7 @@ CREATE TABLE `chatgpt_video_jobs` ( `water_url` varchar(512) DEFAULT NULL COMMENT '带水印的视频地址', `progress` smallint DEFAULT '0' COMMENT '任务进度', `publish` tinyint(1) NOT NULL COMMENT '是否发布', - `err_msg` varchar(255) DEFAULT NULL COMMENT '错误信息', + `err_msg` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '错误信息', `raw_data` text COMMENT '原始数据', `params` varchar(512) DEFAULT NULL COMMENT '参数JSON', `power` smallint NOT NULL DEFAULT '0' COMMENT '消耗算力', From cdaf6fb9dc117fc99f65b5e8294627b798398d1f Mon Sep 17 00:00:00 2001 From: RockYang Date: Tue, 10 Sep 2024 11:15:26 +0800 Subject: [PATCH 34/34] update v4.1.3 database sql file --- database/geekai_plus-v4.1.3.sql | 4 ++-- deploy/data/mysql/init.d/geekai_plus-v4.1.3.sql | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/database/geekai_plus-v4.1.3.sql b/database/geekai_plus-v4.1.3.sql index 41887783..d26368b0 100644 --- a/database/geekai_plus-v4.1.3.sql +++ b/database/geekai_plus-v4.1.3.sql @@ -3,7 +3,7 @@ -- https://www.phpmyadmin.net/ -- -- 主机: 127.0.0.1 --- 生成日期: 2024-09-10 10:42:42 +-- 生成日期: 2024-09-10 11:14:24 -- 服务器版本: 8.0.33 -- PHP 版本: 8.1.2-1ubuntu2.18 @@ -212,7 +212,7 @@ CREATE TABLE `chatgpt_configs` ( -- INSERT INTO `chatgpt_configs` (`id`, `marker`, `config_json`) VALUES -(1, 'system', '{\"title\":\"GeekAI 创作助手\",\"slogan\":\"我辈之人,先干为敬,让每一个人都能用好AI\",\"admin_title\":\"GeekAI 控制台\",\"logo\":\"/images/logo.png\",\"init_power\":100,\"invite_power\":200,\"vip_month_power\":1000,\"register_ways\":[\"username\",\"email\",\"mobile\"],\"enabled_register\":true,\"order_pay_timeout\":600,\"vip_info_text\":\"月度会员,年度会员每月赠送 1000 点算力,赠送算力当月有效当月没有消费完的算力不结余到下个月。 点卡充值的算力长期有效。\",\"default_models\":[1],\"mj_power\":20,\"mj_action_power\":5,\"sd_power\":5,\"dall_power\":10,\"suno_power\":10,\"luma_power\":120,\"wechat_card_url\":\"/images/wx.png\",\"enable_context\":true,\"context_deep\":4,\"sd_neg_prompt\":\"nsfw, paintings,low quality,easynegative,ng_deepnegative ,lowres,bad anatomy,bad hands,bad feet\",\"mj_mode\":\"fast\",\"index_bg_url\":\"color\",\"index_navs\":[1,5,13,19,9,12,6,20,8,10],\"copyright\":\"极客学长 © 2022- 2024 All rights reserved\",\"mark_map_text\":\"# GeekAI 演示站\\n\\n- 完整的开源系统,前端应用和后台管理系统皆可开箱即用。\\n- 基于 Websocket 实现,完美的打字机体验。\\n- 内置了各种预训练好的角色应用,轻松满足你的各种聊天和应用需求。\\n- 支持 OPenAI,Azure,文心一言,讯飞星火,清华 ChatGLM等多个大语言模型。\\n- 支持 MidJourney / Stable Diffusion AI 绘画集成,开箱即用。\\n- 支持使用个人微信二维码作为充值收费的支付渠道,无需企业支付通道。\\n- 已集成支付宝支付功能,微信支付,支持多种会员套餐和点卡购买功能。\\n- 集成插件 API 功能,可结合大语言模型的 function 功能开发各种强大的插件。\",\"enabled_verify\":true}'), +(1, 'system', '{\"title\":\"GeekAI 创作助手\",\"slogan\":\"我辈之人,先干为敬,让每一个人都能用好AI\",\"admin_title\":\"GeekAI 控制台\",\"logo\":\"/images/logo.png\",\"init_power\":100,\"invite_power\":200,\"vip_month_power\":1000,\"register_ways\":[\"username\",\"email\",\"mobile\"],\"enabled_register\":true,\"order_pay_timeout\":600,\"vip_info_text\":\"月度会员,年度会员每月赠送 1000 点算力,赠送算力当月有效当月没有消费完的算力不结余到下个月。 点卡充值的算力长期有效。\",\"default_models\":[1],\"mj_power\":20,\"mj_action_power\":5,\"sd_power\":5,\"dall_power\":10,\"suno_power\":10,\"luma_power\":120,\"wechat_card_url\":\"/images/wx.png\",\"enable_context\":true,\"context_deep\":4,\"sd_neg_prompt\":\"nsfw, paintings,low quality,easynegative,ng_deepnegative ,lowres,bad anatomy,bad hands,bad feet\",\"mj_mode\":\"fast\",\"index_bg_url\":\"color\",\"index_navs\":[1,5,13,19,9,12,6,20,8,10],\"copyright\":\"极客学长 © 2022- 2024 All rights reserved\",\"mark_map_text\":\"# GeekAI 演示站\\n\\n- 完整的开源系统,前端应用和后台管理系统皆可开箱即用。\\n- 基于 Websocket 实现,完美的打字机体验。\\n- 内置了各种预训练好的角色应用,轻松满足你的各种聊天和应用需求。\\n- 支持 OPenAI,Azure,文心一言,讯飞星火,清华 ChatGLM等多个大语言模型。\\n- 支持 MidJourney / Stable Diffusion AI 绘画集成,开箱即用。\\n- 支持使用个人微信二维码作为充值收费的支付渠道,无需企业支付通道。\\n- 已集成支付宝支付功能,微信支付,支持多种会员套餐和点卡购买功能。\\n- 集成插件 API 功能,可结合大语言模型的 function 功能开发各种强大的插件。\",\"enabled_verify\":false}'), (3, 'notice', '{\"sd_neg_prompt\":\"\",\"mj_mode\":\"\",\"index_bg_url\":\"\",\"index_navs\":null,\"copyright\":\"\",\"mark_map_text\":\"\",\"enabled_verify\":false,\"content\":\"## v4.1.3 更新日志\\n\\n* 功能优化:重构用户登录模块,给所有的登录组件增加行为验证码功能,支持用户绑定手机,邮箱和微信\\n* 功能优化:重构找回密码模块,支持通过手机或者邮箱找回密码\\n* 功能优化:管理后台给可以拖动排序的组件添加拖动图标\\n* 功能优化:Suno 支持合成完整歌曲,和上传自己的音乐作品进行二次创作\\n* Bug修复:手机端角色和模型选择不生效\\n* Bug修复:用户登录过期之后聊天页面出现大量报错,需要刷新页面才能正常\\n* 功能优化:优化聊天页面 Websocket 断线重连代码,提高用户体验\\n* 功能优化:给算力增减服务全部加上数据库事务和同步锁\\n* 功能优化:支持用户在前端对话界面选择插件\\n* 功能新增:支持 Luma 文生视频功能\\n\\n注意:当前站点仅为开源项目 \\u003ca style=\\\"color: #F56C6C\\\" href=\\\"https://github.com/yangjian102621/geekai\\\" target=\\\"_blank\\\"\\u003eGeekAI-Plus\\u003c/a\\u003e 的演示项目,本项目单纯就是给大家体验项目功能使用。\\n\\u003cstrong style=\\\"color: #F56C6C\\\"\\u003e体验额度用完之后请不要在当前站点进行任何充值操作!!!\\u003c/strong\\u003e\\n\\u003cstrong style=\\\"color: #F56C6C\\\"\\u003e体验额度用完之后请不要在当前站点进行任何充值操作!!!\\u003c/strong\\u003e\\n\\u003cstrong style=\\\"color: #F56C6C\\\"\\u003e体验额度用完之后请不要在当前站点进行任何充值操作!!!\\u003c/strong\\u003e\\n 如果觉得好用你就花几分钟自己部署一套,没有API KEY 的同学可以去下面几个推荐的中转站购买:\\n1、\\u003ca href=\\\"https://api.chat-plus.net\\\" target=\\\"_blank\\\"\\n style=\\\"font-size: 20px;color:#F56C6C\\\"\\u003ehttps://api.chat-plus.net\\u003c/a\\u003e\\n2、\\u003ca href=\\\"https://api.geekai.me\\\" target=\\\"_blank\\\"\\n style=\\\"font-size: 20px;color:#F56C6C\\\"\\u003ehttps://api.geekai.me\\u003c/a\\u003e\\n3、 \\u003ca href=\\\"https://gpt.bemore.lol\\\" target=\\\"_blank\\\"\\n style=\\\"font-size: 20px;color:#F56C6C\\\"\\u003ehttps://gpt.bemore.lol\\u003c/a\\u003e\\n支持MidJourney,GPT,Claude,Google Gemmi,以及国内各个厂家的大模型,现在有超级优惠,价格远低于 OpenAI 官方。关于中转 API 的优势和劣势请参考 [中转API技术原理](https://docs.geekai.me/config/chat/#%E4%B8%AD%E8%BD%ACapi%E5%B7%A5%E4%BD%9C%E5%8E%9F%E7%90%86)。GPT-3.5,GPT-4,DALL-E3 绘图......你都可以随意使用,无需魔法。\\n接入教程: \\u003ca href=\\\"https://docs.geekai.me\\\" target=\\\"_blank\\\"\\n style=\\\"font-size: 20px;color:#F56C6C\\\"\\u003ehttps://docs.geekai.me\\u003c/a\\u003e\\n本项目源码地址:\\u003ca href=\\\"https://github.com/yangjian102621/geekai\\\" target=\\\"_blank\\\"\\u003ehttps://github.com/yangjian102621/geekai\\u003c/a\\u003e\",\"updated\":true}'); -- -------------------------------------------------------- diff --git a/deploy/data/mysql/init.d/geekai_plus-v4.1.3.sql b/deploy/data/mysql/init.d/geekai_plus-v4.1.3.sql index 41887783..d26368b0 100644 --- a/deploy/data/mysql/init.d/geekai_plus-v4.1.3.sql +++ b/deploy/data/mysql/init.d/geekai_plus-v4.1.3.sql @@ -3,7 +3,7 @@ -- https://www.phpmyadmin.net/ -- -- 主机: 127.0.0.1 --- 生成日期: 2024-09-10 10:42:42 +-- 生成日期: 2024-09-10 11:14:24 -- 服务器版本: 8.0.33 -- PHP 版本: 8.1.2-1ubuntu2.18 @@ -212,7 +212,7 @@ CREATE TABLE `chatgpt_configs` ( -- INSERT INTO `chatgpt_configs` (`id`, `marker`, `config_json`) VALUES -(1, 'system', '{\"title\":\"GeekAI 创作助手\",\"slogan\":\"我辈之人,先干为敬,让每一个人都能用好AI\",\"admin_title\":\"GeekAI 控制台\",\"logo\":\"/images/logo.png\",\"init_power\":100,\"invite_power\":200,\"vip_month_power\":1000,\"register_ways\":[\"username\",\"email\",\"mobile\"],\"enabled_register\":true,\"order_pay_timeout\":600,\"vip_info_text\":\"月度会员,年度会员每月赠送 1000 点算力,赠送算力当月有效当月没有消费完的算力不结余到下个月。 点卡充值的算力长期有效。\",\"default_models\":[1],\"mj_power\":20,\"mj_action_power\":5,\"sd_power\":5,\"dall_power\":10,\"suno_power\":10,\"luma_power\":120,\"wechat_card_url\":\"/images/wx.png\",\"enable_context\":true,\"context_deep\":4,\"sd_neg_prompt\":\"nsfw, paintings,low quality,easynegative,ng_deepnegative ,lowres,bad anatomy,bad hands,bad feet\",\"mj_mode\":\"fast\",\"index_bg_url\":\"color\",\"index_navs\":[1,5,13,19,9,12,6,20,8,10],\"copyright\":\"极客学长 © 2022- 2024 All rights reserved\",\"mark_map_text\":\"# GeekAI 演示站\\n\\n- 完整的开源系统,前端应用和后台管理系统皆可开箱即用。\\n- 基于 Websocket 实现,完美的打字机体验。\\n- 内置了各种预训练好的角色应用,轻松满足你的各种聊天和应用需求。\\n- 支持 OPenAI,Azure,文心一言,讯飞星火,清华 ChatGLM等多个大语言模型。\\n- 支持 MidJourney / Stable Diffusion AI 绘画集成,开箱即用。\\n- 支持使用个人微信二维码作为充值收费的支付渠道,无需企业支付通道。\\n- 已集成支付宝支付功能,微信支付,支持多种会员套餐和点卡购买功能。\\n- 集成插件 API 功能,可结合大语言模型的 function 功能开发各种强大的插件。\",\"enabled_verify\":true}'), +(1, 'system', '{\"title\":\"GeekAI 创作助手\",\"slogan\":\"我辈之人,先干为敬,让每一个人都能用好AI\",\"admin_title\":\"GeekAI 控制台\",\"logo\":\"/images/logo.png\",\"init_power\":100,\"invite_power\":200,\"vip_month_power\":1000,\"register_ways\":[\"username\",\"email\",\"mobile\"],\"enabled_register\":true,\"order_pay_timeout\":600,\"vip_info_text\":\"月度会员,年度会员每月赠送 1000 点算力,赠送算力当月有效当月没有消费完的算力不结余到下个月。 点卡充值的算力长期有效。\",\"default_models\":[1],\"mj_power\":20,\"mj_action_power\":5,\"sd_power\":5,\"dall_power\":10,\"suno_power\":10,\"luma_power\":120,\"wechat_card_url\":\"/images/wx.png\",\"enable_context\":true,\"context_deep\":4,\"sd_neg_prompt\":\"nsfw, paintings,low quality,easynegative,ng_deepnegative ,lowres,bad anatomy,bad hands,bad feet\",\"mj_mode\":\"fast\",\"index_bg_url\":\"color\",\"index_navs\":[1,5,13,19,9,12,6,20,8,10],\"copyright\":\"极客学长 © 2022- 2024 All rights reserved\",\"mark_map_text\":\"# GeekAI 演示站\\n\\n- 完整的开源系统,前端应用和后台管理系统皆可开箱即用。\\n- 基于 Websocket 实现,完美的打字机体验。\\n- 内置了各种预训练好的角色应用,轻松满足你的各种聊天和应用需求。\\n- 支持 OPenAI,Azure,文心一言,讯飞星火,清华 ChatGLM等多个大语言模型。\\n- 支持 MidJourney / Stable Diffusion AI 绘画集成,开箱即用。\\n- 支持使用个人微信二维码作为充值收费的支付渠道,无需企业支付通道。\\n- 已集成支付宝支付功能,微信支付,支持多种会员套餐和点卡购买功能。\\n- 集成插件 API 功能,可结合大语言模型的 function 功能开发各种强大的插件。\",\"enabled_verify\":false}'), (3, 'notice', '{\"sd_neg_prompt\":\"\",\"mj_mode\":\"\",\"index_bg_url\":\"\",\"index_navs\":null,\"copyright\":\"\",\"mark_map_text\":\"\",\"enabled_verify\":false,\"content\":\"## v4.1.3 更新日志\\n\\n* 功能优化:重构用户登录模块,给所有的登录组件增加行为验证码功能,支持用户绑定手机,邮箱和微信\\n* 功能优化:重构找回密码模块,支持通过手机或者邮箱找回密码\\n* 功能优化:管理后台给可以拖动排序的组件添加拖动图标\\n* 功能优化:Suno 支持合成完整歌曲,和上传自己的音乐作品进行二次创作\\n* Bug修复:手机端角色和模型选择不生效\\n* Bug修复:用户登录过期之后聊天页面出现大量报错,需要刷新页面才能正常\\n* 功能优化:优化聊天页面 Websocket 断线重连代码,提高用户体验\\n* 功能优化:给算力增减服务全部加上数据库事务和同步锁\\n* 功能优化:支持用户在前端对话界面选择插件\\n* 功能新增:支持 Luma 文生视频功能\\n\\n注意:当前站点仅为开源项目 \\u003ca style=\\\"color: #F56C6C\\\" href=\\\"https://github.com/yangjian102621/geekai\\\" target=\\\"_blank\\\"\\u003eGeekAI-Plus\\u003c/a\\u003e 的演示项目,本项目单纯就是给大家体验项目功能使用。\\n\\u003cstrong style=\\\"color: #F56C6C\\\"\\u003e体验额度用完之后请不要在当前站点进行任何充值操作!!!\\u003c/strong\\u003e\\n\\u003cstrong style=\\\"color: #F56C6C\\\"\\u003e体验额度用完之后请不要在当前站点进行任何充值操作!!!\\u003c/strong\\u003e\\n\\u003cstrong style=\\\"color: #F56C6C\\\"\\u003e体验额度用完之后请不要在当前站点进行任何充值操作!!!\\u003c/strong\\u003e\\n 如果觉得好用你就花几分钟自己部署一套,没有API KEY 的同学可以去下面几个推荐的中转站购买:\\n1、\\u003ca href=\\\"https://api.chat-plus.net\\\" target=\\\"_blank\\\"\\n style=\\\"font-size: 20px;color:#F56C6C\\\"\\u003ehttps://api.chat-plus.net\\u003c/a\\u003e\\n2、\\u003ca href=\\\"https://api.geekai.me\\\" target=\\\"_blank\\\"\\n style=\\\"font-size: 20px;color:#F56C6C\\\"\\u003ehttps://api.geekai.me\\u003c/a\\u003e\\n3、 \\u003ca href=\\\"https://gpt.bemore.lol\\\" target=\\\"_blank\\\"\\n style=\\\"font-size: 20px;color:#F56C6C\\\"\\u003ehttps://gpt.bemore.lol\\u003c/a\\u003e\\n支持MidJourney,GPT,Claude,Google Gemmi,以及国内各个厂家的大模型,现在有超级优惠,价格远低于 OpenAI 官方。关于中转 API 的优势和劣势请参考 [中转API技术原理](https://docs.geekai.me/config/chat/#%E4%B8%AD%E8%BD%ACapi%E5%B7%A5%E4%BD%9C%E5%8E%9F%E7%90%86)。GPT-3.5,GPT-4,DALL-E3 绘图......你都可以随意使用,无需魔法。\\n接入教程: \\u003ca href=\\\"https://docs.geekai.me\\\" target=\\\"_blank\\\"\\n style=\\\"font-size: 20px;color:#F56C6C\\\"\\u003ehttps://docs.geekai.me\\u003c/a\\u003e\\n本项目源码地址:\\u003ca href=\\\"https://github.com/yangjian102621/geekai\\\" target=\\\"_blank\\\"\\u003ehttps://github.com/yangjian102621/geekai\\u003c/a\\u003e\",\"updated\":true}'); -- --------------------------------------------------------