From ffb2211174708dcfe939436d57c682a001fc07f7 Mon Sep 17 00:00:00 2001 From: MuTu <59136159+githubdulong@users.noreply.github.com> Date: Sat, 11 Jul 2020 16:57:31 +0800 Subject: [PATCH 01/19] Create cs --- cs | 1 + 1 file changed, 1 insertion(+) create mode 100644 cs diff --git a/cs b/cs new file mode 100644 index 00000000..841618ab --- /dev/null +++ b/cs @@ -0,0 +1 @@ +cs From f621de7d04f64aad13fda275964a01a8cb92c5d8 Mon Sep 17 00:00:00 2001 From: MuTu <59136159+githubdulong@users.noreply.github.com> Date: Sat, 11 Jul 2020 16:58:50 +0800 Subject: [PATCH 02/19] Delete weather_pro.js --- weather_pro.js | 1167 ------------------------------------------------ 1 file changed, 1167 deletions(-) delete mode 100644 weather_pro.js diff --git a/weather_pro.js b/weather_pro.js deleted file mode 100644 index 15c93cec..00000000 --- a/weather_pro.js +++ /dev/null @@ -1,1167 +0,0 @@ -/* -可以自由定制显示的天气脚本,想怎样都随你,轻松修改轻松查看 -https://github.com/sazs34/TaskConfig/blob/master/assets/weather_pro.md - */ -let config = { - darksky_api: "填这里", //从https://darksky.net/dev/ 上申请key填入即可 - aqicn_api: "填这里", //从http://aqicn.org/data-platform/token/#/ 上申请key填入即可 - huweather_apiKey: "填这里", //和风天气APIkey,可自行前往 https://dev.heweather.com/ 进行获取(注意key类型选WebApi) - lat_lon: "经度,纬度", //请填写经纬度,直接从谷歌地图中获取即可 - lang: "zh", //语言,随意切换为您想要的语言哦(zh/zh-tw/ja/en/fr/...) - log: 0, //调试日志,0为不开启,1为开启,2为开启精简日志 - timeout: 0, //超时时间,单位毫秒(1000毫秒=1秒),一般不推荐修改[为0则不限制超时时间] - show: { - //普通每天的 - template: { - title: `[天气日报] $[city]$[district] • $[summary]`, - subtitle: `$[weatherIcon]$[weather] $[temperatureMin] ~ $[temperatureMax]°C ☔️降雨概率 $[precipProbability]%`, - detail: `🥵空气质量 $[aqi]($[aqiDesc]) 🍃风速$[windSpeed]km/h $[windDir] -🌞紫外线指数 $[uv]($[uvDesc]) 💧湿度$[currentHumidity]% -🌡体感温度 $[apparentTemperatureMin] ~ $[apparentTemperatureMax]°C 💨气压$[atmosphere]pa - -[生活指数] -$[lifeStyle($[icon][$[brf]]$[txt])] - -[天气周报] • $[weeklySummary] -$[daily($[month]月$[day]日 $[temperatureLow]~$[temperatureHigh]°C $[weatherIcon]$[weather])]` - }, - lifestyle: { //此处用于显示各项生活指数,可自行调整顺序,顺序越在前面则显示也会靠前,如果您不想查看某一指数,置为false即可,想看置为true即可 - drsg: true, //穿衣指数, - flu: true, //感冒指数, - comf: true, //舒适度指数, - cw: true, //洗车指数, - sport: false, //运动指数, - trav: false, //旅游指数, - uv: false, //紫外线指数, - air: false, //空气污染扩散条件指数, - ac: false, //空调开启指数, - ag: false, //过敏指数, - gl: false, //太阳镜指数, - mu: false, //化妆指数, - airc: false, //晾晒指数, - ptfc: false, //交通指数, - fsh: false, //钓鱼指数, - spi: false, //防晒指数 - } - } -} - -const provider = { - heweather_now: { - api: `https://free-api.heweather.net/s6/weather/now?location=${config.lat_lon.replace(/\s/g, "").replace(",", ",")}&key=${config.huweather_apiKey}`, - progress: 0, //处理进度:0需处理1已处理2无需处理9报错 - timeoutNumber: 0, //超时处理编号 - data: { - basic: {}, - now: {} - }, - support: ['$[province]', '$[city]', '$[district]', '$[weatherIcon]', '$[weather]', '$[currentTemperature]', '$[currentWindSpeed]', '$[currentWindDir]', '$[currentWindPower]', '$[currentHumidity]', '$[currentAtmosphere]', '$[currentVisibility]'] - }, - heweather_daily: { - api: `https://free-api.heweather.net/s6/weather/forecast?location=${config.lat_lon.replace(/\s/g, "").replace(",", ",")}&key=${config.huweather_apiKey}`, - progress: 0, - timeoutNumber: 0, - data: {}, - support: ['$[temperatureMin]', '$[temperatureMax]', '$[precipProbability]', '$[windSpeed]', '$[windDir]', '$[windPower]', '$[humidity]', '$[atmosphere]', '$[visibility]', '$[uv]', '$[uvDesc]', '$[sunrise]', '$[sunset]', '$[moonrise]', '$[moonset]'] - }, - heweather_air: { - api: `https://free-api.heweather.net/s6/air/now?location=auto_ip&key=${config.huweather_apiKey}`, - progress: 0, - timeoutNumber: 0, - data: {}, - support: [] - }, - heweather_lifestyle: { - api: `https://free-api.heweather.net/s6/weather/lifestyle?location=${config.lat_lon.replace(/\s/g, "").replace(",", ",")}&key=${config.huweather_apiKey}`, - progress: 0, - timeoutNumber: 0, - data: [], - support: ['$[lifeStyle]'] - }, - darksky: { - api: `https://api.darksky.net/forecast/${config.darksky_api}/${config.lat_lon.replace(/\s/g, "").replace(",", ",")}?lang=${config.lang}&units=si`, - progress: 0, - timeoutNumber: 0, - data: { - daily: { - data: [] - }, - hourly: { - data: [] - }, - currently: {} - }, - support: ['$[summary]', '$[weeklySummary]', '$[weatherIcon]', '$[weather]', '$[temperatureMin]', '$[temperatureMax]', '$[apparentTemperatureMin]', '$[apparentTemperatureMax]', '$[precipProbability]', '$[uv]', '$[uvDesc]'] - }, - aqicn: { - api: `https://api.waqi.info/feed/geo:${config.lat_lon.replace(/\s/g, "").replace(",", ",").replace(/,/, ";")}/?token=${config.aqicn_api}`, - progress: 0, - data: {}, - support: ['$[aqiIcon]', '$[aqi]', '$[aqiDesc]', '$[aqiWarning]'] - } -} - -$tool = Tool() -$tool.log.level("error") -weather() - -$tool.done() - -// #region 天气数据获取 -function weather() { - support(); - heweatherNow(); - heweatherDaily(); - darksky(); - aqicn(); - heweatherLifestyle(); -} -//clear-day, partly-cloudy-day, cloudy, clear-night, rain, snow, sleet, wind, fog, or partly-cloudy-night -//☀️🌤⛅️🌥☁️🌦🌧⛈🌩🌨❄️💧💦🌫☔️☂️ ☃️⛄️ -function darksky() { - if (provider.darksky.progress == 2) return; - start("darksky"); - $tool.get({url: provider.darksky.api}, function (error, response, body) { - if (!error) { - try { - let darkObj = JSON.parse(body); - $tool.log.debug(`天气数据获取-A1-${body}`); - if (darkObj.error) { - $tool.notify("DarkApi", "出错啦", darkObj.error); - } - provider.darksky.data.daily = darkObj.daily; - provider.darksky.data.hourly = darkObj.hourly; - provider.darksky.data.currently = darkObj.currently; - $tool.log.debug(`天气数据获取-A2`); - check('darksky', true) - } catch (e) { - $tool.log.error(`天气数据A获取报错${JSON.stringify(e)}`) - } - } else { - $tool.log.error(`天气数据获取-A3-${reason.error}`); - check('darksky', false); - } - - }) -} - -function aqicn() { - if (provider.aqicn.progress == 2) return; - start("aqicn"); - $tool.get({url: provider.aqicn.api}, function (error, response, body) { - if (!error) { - try { - var waqiObj = JSON.parse(body); - if (waqiObj.status == 'error') { - $tool.notify("Aqicn", "出错啦", waqiObj.data); - } else { - $tool.log.debug(`天气数据获取-B1-${body}`); - provider.aqicn.data = { - ...getAqiInfo(waqiObj.data.aqi) - }; - } - check('aqicn', true) - } catch (e) { - $tool.log.error(`天气数据B获取报错${JSON.stringify(e)}`) - } - } else { - $tool.log.error(`天气数据获取-B2-${reason.error}`); - //获取精确数据失败后,直接获取粗略信息即可 - heweatherAir(); - } - }) -} - -function heweatherNow() { - start("heweather_now"); - $tool.get({url: provider.heweather_now.api}, function (error, response, body) { - if (!error) { - try { - $tool.log.debug(`天气数据获取-C1-${body}`); - var heObj = JSON.parse(body); - provider.heweather_now.data.basic = heObj.HeWeather6[0].basic; - provider.heweather_now.data.now = heObj.HeWeather6[0].now; - check('heweather_now', true) - } catch (e) { - $tool.log.error(`天气数据C获取报错${JSON.stringify(e)}`) - } - } else { - $tool.log.error(`天气数据获取-C2-${reason.error}`); - //因为此接口出错率还挺高的,所以即使报错我们也不处理,该返回什么就返回什么好了 - check('heweather_now', false) - } - }) -} - -function heweatherDaily() { - if (provider.heweather_daily.progress == 2) return; - start("heweather_daily"); - $tool.get({url: provider.heweather_daily.api}, function (error, response, body) { - if (!error) { - try { - $tool.log.debug(`天气数据获取-D1-${body}`); - var heObj = JSON.parse(body); - provider.heweather_daily.data = heObj.HeWeather6[0].daily_forecast[0]; - check('heweather_daily', true) - } catch (e) { - $tool.log.error(`天气数据D获取报错${JSON.stringify(e)}`) - } - } else { - $tool.log.error(`天气数据获取-D2-${reason.error}`); - //因为此接口出错率还挺高的,所以即使报错我们也不处理,该返回什么就返回什么好了 - check('heweather_daily', false) - } - }) -} - -function heweatherAir() { - if (provider.heweather_air.progress == 2) return; - start("heweather_air"); - $tool.get({url: provider.heweather_air.api}, function (error, response, body) { - if (!error) { - try { - $tool.log.debug(`天气数据获取F1-${body}`); - var heObj = JSON.parse(body); - provider.heweather_air.data = { - ...getAqiInfo(heObj.HeWeather6[0].air_now_city.aqi) - }; - check('heweather_air', true) - } catch (e) { - $tool.log.error(`天气数据F获取报错${JSON.stringify(e)}`) - } - } else { - $tool.log.error(`天气数据获取-F2-${reason.error}`); - //因为此接口出错率还挺高的,所以即使报错我们也不处理,该返回什么就返回什么好了 - check('heweather_air', false) - } - }) -} - -function heweatherLifestyle() { - if (provider.heweather_lifestyle.progress == 2) return; - start("heweather_lifestyle"); - var needRequest = false; - //判断一下是否全部都是false,全false的话,则不需要请求此接口直接返回渲染的数据了 - for (var item in config.show.lifestyle) { - if (config.show.lifestyle[item]) { - needRequest = true; - break; - } - } - if (needRequest) { - $tool.get({url: provider.heweather_lifestyle.api}, function (error, response, body) { - if (!error) { - try { - $tool.log.debug(`天气数据获取-E1-${body}`); - var heObj = JSON.parse(body); - provider.heweather_lifestyle.data = heObj.HeWeather6[0].lifestyle; - check('heweather_lifestyle', true) - } catch (e) { - $tool.log.error(`天气数据E获取报错${JSON.stringify(e)}`) - } - } else { - $tool.log.error(`天气数据获取-E2-${reason.error}`); - //因为此接口出错率还挺高的,所以即使报错我们也不处理,该返回什么就返回什么好了 - check('heweather_lifestyle', false) - } - }) - } else { - check('heweather_lifestyle', false) - } -} -//#endregion - -// #region 提醒数据组装 -function check(type, result) { - $tool.log.debug(`check-${type}-${result}`); - try { - //支持setTimeout居然不支持clearTimeout,有点难受 - if (provider[type].progress == 1 || provider[type].progress == 9) return; - provider[type].progress = result ? 1 : 9; - var isAllChecked = provider.heweather_now.progress != 0 && provider.heweather_daily.progress != 0 && provider.darksky.progress != 0 && (provider.aqicn.progress != 0 || provider.heweather_air.progress != 0) && provider.heweather_lifestyle.progress != 0; - // var isAllChecked = true - if (isAllChecked) { - $tool.log.debug(`天气数据渲染中[template]`); - try { - renderTemplate(); - } catch (e) { - $tool.log.error(`天气渲染出错-${JSON.stringify(e)}`); - } - } - } catch (lineerror) { - $tool.log.error(`check error: ${lineerror}`) - } -} - -var lineBreak = ` -`; - -function renderTemplate() { - execArrayTemplate(); - const map = { - //省 - province: provider.heweather_now.data.basic.admin_area, - //市 - city: provider.heweather_now.data.basic.parent_city, - //区 - district: provider.heweather_now.data.basic.location || "UNKNOW", - //全天气候变化概述 - summary: `${provider.darksky.data.hourly.summary||""}`, - //一周气候变化概述 - weeklySummary: `${provider.darksky.data.daily.summary||""}`, - //天气图标 - weatherIcon: `${getHeweatherIcon(provider.heweather_now.data.now.cond_code)||getDarkskyWeatherIcon(provider.darksky.data.hourly.icon)}`, - //天气描述(晴/雨/雪等) - weather: `${provider.heweather_now.data.now.cond_txt||getDarkskyWeatherDesc(provider.darksky.data.hourly.icon)}`, - //当前温度 - currentTemperature: `${provider.heweather_now.data.now.tmp}`, - //温度最低值 - temperatureMin: `${Math.round(provider.heweather_daily.data.tmp_min||provider.darksky.data.daily.data.get(0).temperatureMin)}`, - //温度最高值 - temperatureMax: `${Math.round(provider.heweather_daily.data.tmp_max||provider.darksky.data.daily.data.get(0).temperatureMax)}`, - //体感温度最低值 - apparentTemperatureMin: `${Math.round(provider.darksky.data.daily.data.get(0).apparentTemperatureLow)}`, - //体感温度最高值 - apparentTemperatureMax: `${Math.round(provider.darksky.data.daily.data.get(0).apparentTemperatureHigh)}`, - //降雨概率 - precipProbability: `${provider.heweather_daily.data.pop||(Number(provider.darksky.data.daily.data.get(0).precipProbability) * 100).toFixed(0)}`, - //空气质量图标 - aqiIcon: `${provider.aqicn.data.aqiIcon||provider.heweather_air.data.aqiIcon}`, - //空气质量 - aqi: `${provider.aqicn.data.aqi||provider.heweather_air.data.aqi}`, - //空气质量描述 - aqiDesc: `${provider.aqicn.data.aqiDesc||provider.heweather_air.data.aqiDesc}`, - //空气质量警告(提示) - aqiWarning: `${provider.aqicn.data.aqiWarning||provider.heweather_air.data.aqiWarning}`, - //全天风速 - windSpeed: `${provider.heweather_daily.data.wind_spd}`, - //当前风速 - currentWindSpeed: `${provider.heweather_now.data.now.wind_spd}`, - //全天风向 - windDir: `${provider.heweather_daily.data.wind_dir}`, - //当前风向 - currentWindDir: `${provider.heweather_now.data.now.wind_dir}`, - //全天风力 - windPower: `${provider.heweather_daily.data.wind_sc}`, - //当前风力 - currentWindPower: `${provider.heweather_now.data.now.wind_sc}`, - //全天相对湿度 - humidity: `${provider.heweather_daily.data.hum}`, - //当前相对湿度 - currentHumidity: `${provider.heweather_now.data.now.hum}`, - //全天大气压 - atmosphere: `${provider.heweather_daily.data.pres}`, - //当前大气压 - currentAtmosphere: `${provider.heweather_now.data.now.pres}`, - //全天能见度 - visibility: `${provider.heweather_daily.data.vis}`, - //当前能见度 - currentVisibility: `${provider.heweather_now.data.now.vis}`, - //紫外线等级 - uv: `${provider.heweather_daily.data.uv_index||provider.darksky.data.daily.data.get(0).uvIndex}`, - //紫外线描述 - uvDesc: `${getUVDesc(provider.heweather_daily.data.uv_index||provider.darksky.data.daily.data.get(0).uvIndex)}`, - //日出时间 - sunrise: `${provider.heweather_daily.data.sr}`, - //日落时间 - sunset: `${provider.heweather_daily.data.ss}`, - //月出时间 - moonrise: `${provider.heweather_daily.data.mr}`, - //月落时间 - moonset: `${provider.heweather_daily.data.ms}`, - } - var notifyInfo = { - title: execTemplate(config.show.template.title, map), - subtitle: execTemplate(config.show.template.subtitle, map), - detail: execTemplate(config.show.template.detail, map), - }; - $tool.notify(notifyInfo.title, notifyInfo.subtitle, notifyInfo.detail); -} -// #endregion - -// #region 数据处理方法 -function getHeweatherIcon(code) { - var codeMap = { - _100: '☀️', - _101: '☁️', - _102: '☁️', - _103: '⛅️', - _104: '☁️', - _200: '💨', - _201: '🌬', - _202: '🌬', - _203: '🌬', - _204: '🌬', - _205: '🌬', - _206: '💨', - _207: '💨', - _208: '💨', - _209: '🌪', - _210: '🌪', - _211: '🌪', - _212: '🌪', - _213: '🌪', - _300: '🌨', - _301: '🌨', - _302: '⛈', - _303: '⛈', - _304: '⛈', - _305: '💧', - _306: '💦', - _307: '🌧', - _308: '🌧', - _309: '☔️', - _310: '🌧', - _311: '🌧', - _312: '🌧', - _313: '🌧❄️', - _314: '💧', - _315: '💦', - _316: '🌧', - _317: '🌧', - _318: '🌧', - _399: '🌧', - _400: '🌨', - _401: '🌨', - _402: '☃️', - _403: '❄️', - _404: '🌨', - _405: '🌨', - _406: '🌨', - _407: '🌨', - _408: '🌨', - _409: '🌨', - _410: '❄️', - _499: '⛄️', - _500: '🌫', - _501: '🌫', - _502: '🌫', - _503: '🌫', - _504: '🌫', - _505: '🌫', - _506: '🌫', - _507: '🌫', - _508: '🌫', - _509: '🌫', - _510: '🌫', - _511: '🌫', - _512: '🌫', - _513: '🌫', - _514: '🌫', - _515: '🌫', - _900: '🔥', - _901: '⛄️', - _999: '❓', - } - return codeMap[`_${code}`] ? codeMap[`_${code}`] : ""; -} - -function getDarkskyWeatherIcon(icon_text) { - let icon = "❓" - if (icon_text == "clear-day") icon = "☀️"; - if (icon_text == "partly-cloudy-day") icon = "🌤"; - if (icon_text == "cloudy") icon = "☁️"; - if (icon_text == "rain") icon = "🌧"; - if (icon_text == "snow") icon = "☃️"; - if (icon_text == "sleet") icon = "🌨"; - if (icon_text == "wind") "🌬"; - if (icon_text == "fog") icon = "🌫"; - if (icon_text == "partly-cloudy-night") icon = "🌑"; - if (icon_text == "clear-night") icon = "🌑"; - return icon; -} - -function getDarkskyWeatherDesc(icon_text) { - let icon = "未知" - if (icon_text == "clear-day") icon = `晴`; - if (icon_text == "partly-cloudy-day") icon = `晴转多云`; - if (icon_text == "cloudy") icon = `多云`; - if (icon_text == "rain") icon = `雨`; - if (icon_text == "snow") icon = `雪`; - if (icon_text == "sleet") icon = `雨夹雪`; - if (icon_text == "wind") icon = `大风`; - if (icon_text == "fog") icon = `大雾`; - if (icon_text == "partly-cloudy-night") icon = `多云`; - if (icon_text == "clear-night") icon = `晴`; - return icon; -} - -function getCityInfo(name) { - var loc; - try { - var locArr = name.split(/[(),,()]/) - if (locArr.length >= 4) { - loc = locArr[2] + " "; - } else if (locArr.length >= 2) { - loc = locArr[1] + " "; - } else { - loc = ""; //此时会很长,还不如不显示了 - } - } catch (e) { - loc = ''; - $tool.log.error(`获取城市名称失败-${JSON.stringify(e)}`); - } - return loc; -} - -function getAqiInfo(aqi) { - var aqiDesc = ""; - var aqiIcon = ""; - var aqiWarning = ""; - if (aqi > 300) { - aqiIcon = `🟤`; - aqiDesc = `严重污染`; - aqiWarning = "儿童、老人、呼吸系统等疾病患者及一般人群停止户外活动"; - } else if (aqi > 200) { - aqiIcon = `🟣`; - aqiDesc = `重度污染`; - aqiWarning = "儿童、老人、呼吸系统等疾病患者及一般人群停止或减少户外运动"; - } else if (aqi > 150) { - aqiIcon = `🔴`; - aqiDesc = `中度污染`; - aqiWarning = "儿童、老人、呼吸系统等疾病患者及一般人群减少户外活动"; - } else if (aqi > 100) { - aqiIcon = `🟠`; - aqiDesc = `轻度污染`; - aqiWarning = "老人、儿童、呼吸系统等疾病患者减少长时间、高强度的户外活动"; - } else if (aqi > 50) { - aqiIcon = `🟡`; - aqiDesc = `良好`; - aqiWarning = "极少数敏感人群应减少户外活动"; - } else { - aqiIcon = `🟢`; - aqiDesc = `优`; - } - return { - aqi, - aqiIcon, - aqiDesc, - aqiWarning - }; -} - -function getUVDesc(daily_uvIndex) { - var uvDesc = ""; - if (daily_uvIndex >= 10) { - uvDesc = "五级-特别强"; - } else if (daily_uvIndex >= 7) { - uvDesc = "四级-很强"; - } else if (daily_uvIndex >= 5) { - uvDesc = "三级-较强"; - } else if (daily_uvIndex >= 3) { - uvDesc = "二级-较弱"; - } else { - uvDesc = "一级-最弱"; - } - return uvDesc; -} -// #endregion - -// #region 模板相关 -/** - * 用于标识该接口已执行,如果有使用超时设置则此操作是有意义的 - * @param {String} type 具体的接口执行类型 - */ -function start(type) { - if (config.timeout > 0) { - provider[type].timeoutNumber = setTimeout(() => { - check(type, false); - }, config.timeout); - } -} -/** - * 判断哪些接口需要进行处理,减少网络请求 - */ -function support() { - let regex = /\$\[([a-z,A-Z,0-9]*)\]/g; - const template = `${config.show.template.title}${config.show.template.subtitle}${config.show.template.detail}`.match(regex); - provider.heweather_now.progress = template.filter((item, filter) => { - return provider.heweather_now.support.indexOf(item) != -1; - }).length > 0 ? 0 : 2; - provider.heweather_daily.progress = template.filter((item, filter) => { - return provider.heweather_daily.support.indexOf(item) != -1; - }).length > 0 ? 0 : 2; - // provider.heweather_air.progress = template.filter((item, filter) => { - // return provider.heweather_air.support.indexOf(item) != -1; - // }).length > 0 ? 0 : 2; - provider.heweather_lifestyle.progress = template.filter((item, filter) => { - let regexLifestyle = /\$\[(lifeStyle\()+([\s\S]+?)(\))+\]/g; - return regexLifestyle.test(config.show.lifestyle) ? 0 : 2; - }).length > 0 ? 0 : 2; - provider.aqicn.progress = template.filter((item, filter) => { - return provider.aqicn.support.indexOf(item) != -1; - }).length > 0 ? 0 : 2; - provider.darksky.progress = template.filter((item, filter) => { - return provider.darksky.support.indexOf(item) != -1; - }).length > 0 ? 0 : 2; - if (provider.darksky.progress == 2) { - //如果 - let regexDaily = /\$\[(daily\()+([\s\S]+?)(\))+\]/g; - let regexHourly = /\$\[(hourly\()+([\s\S]+?)(\))+\]/g; - provider.darksky.progress = (regexDaily.test(config.show.template.detail) || regexHourly.test(config.show.template.detail)) ? 0 : 2; - } - $tool.log.debug(`h_n:${provider.heweather_now.progress},h_d:${provider.heweather_daily.progress},h_a:${provider.heweather_air.progress},h_l:${provider.heweather_lifestyle.progress},aq:${provider.aqicn.progress},da:${provider.darksky.progress}`) -} -/** - * 用于普通模板的映射 - * @param {String} template 模板内容 - * @param {Object} map 映射内容 - */ -function execTemplate(template, map) { - if (!template) return ""; - let regex = /\$\[([a-z,A-Z,0-9]*)\]/g; - if (regex.test(template)) { - for (item of template.match(regex)) { - item.match(regex); - if (RegExp.$1 && map[RegExp.$1]) { - template = template.replace(item, map[RegExp.$1]); - } else { - template = template.replace(item, ""); - } - } - } - return template; -} - -function execArrayTemplate() { - try { - execTemplateLifestyle(); - execTemplateDaily(); - execTemplateHourly(); - } catch (e) { - $tool.log.error(`${JSON.stringify(e)}`) - } - -} - -function execTemplateLifestyle() { - let regexLifestyle = /\$\[(lifeStyle\()+([\s\S]+?)(\))+\]/g; - if (provider.heweather_lifestyle.data <= 0) { - config.show.template.detail.replace(regexLifestyle, '') - } - let result = []; - if (regexLifestyle.test(config.show.template.detail)) { - let lsMap = { //此处用于显示各项生活指数,可自行调整顺序,顺序越在前面则显示也会靠前,如果您不想查看某一指数,置为false即可,想看置为true即可 - drsg: { - icon: '👔', - type: '穿衣指数' - }, - flu: { - icon: '🤧', - type: '感冒指数' - }, - comf: { - icon: '😊', - type: '舒适度指数' - }, - cw: { - icon: '🚗', - type: '洗车指数' - }, - sport: { - icon: '🏃🏻', - type: '运动指数' - }, - trav: { - icon: '🌴', - type: '旅游指数' - }, - uv: { - icon: '☂️', - type: '紫外线指数' - }, - air: { - icon: '🌫', - type: '空气污染扩散条件指数' - }, - ac: { - icon: '❄️', - type: '空调开启指数' - }, - ag: { - icon: '😷', - type: '过敏指数' - }, - gl: { - icon: '🕶', - type: '太阳镜指数' - }, - mu: { - icon: '💄', - type: '化妆指数' - }, - airc: { - icon: '🧺', - type: '晾晒指数' - }, - ptfc: { - icon: '🚥', - type: '交通指数' - }, - fsh: { - icon: '🎣', - type: '钓鱼指数' - }, - spi: { - icon: '🔆', - type: '防晒指数' - }, - } - config.show.template.detail.match(regexLifestyle); - var rangeTemplate = RegExp.$2; //此处拿到的是要替换的列表显示部分了 - let regex = /\$\[([a-z,A-Z,0-9]*)\]/g; - var template = rangeTemplate.match(regex); - for (life of provider.heweather_lifestyle.data) { - if (!config.show.lifestyle[life.type]) continue; - var singleInfo = rangeTemplate; - for (item of template) { - item.match(regex); - if (RegExp.$1 == "icon") { - singleInfo = singleInfo.replace(item, lsMap[life.type].icon) - } else if (RegExp.$1 == "type") { - singleInfo = singleInfo.replace(item, lsMap[life.type].type) - } else { - singleInfo = singleInfo.replace(item, life[RegExp.$1]) - } - } - result.push(singleInfo); - } - config.show.template.detail = config.show.template.detail.replace(regexLifestyle, result.join(lineBreak)); - } -} - -function execTemplateDaily() { - let regexDaily = /\$\[(daily\()+([\s\S]+?)(\))+\]/g; - if (provider.darksky.data.daily.data.length <= 0) { - config.show.template.detail.replace(regexDaily, '') - } - let result = []; - if (regexDaily.test(config.show.template.detail)) { - config.show.template.detail.match(regexDaily); - var rangeTemplate = RegExp.$2; //此处拿到的是要替换的列表显示部分了 - let regex = /\$\[([a-z,A-Z,0-9]*)\]/g; - var template = rangeTemplate.match(regex); - for (daily of provider.darksky.data.daily.data) { - var singleInfo = rangeTemplate; - for (item of template) { - item.match(regex); - if (RegExp.$1 == "month") { - singleInfo = singleInfo.replace(item, (`${daily["time"]}`).toDateTime().Format("MM")); - } else if (RegExp.$1 == "day") { - singleInfo = singleInfo.replace(item, (`${daily["time"]}`).toDateTime().Format("dd")); - } else if (RegExp.$1 == "weatherIcon") { - singleInfo = singleInfo.replace(item, getDarkskyWeatherIcon(daily.icon)); - } else if (RegExp.$1 == "weather") { - singleInfo = singleInfo.replace(item, getDarkskyWeatherDesc(daily.icon)); - } else if (RegExp.$1 == "uvDesc") { - singleInfo = singleInfo.replace(item, getUVDesc(daily.uvIndex)); - } else if (RegExp.$1 == "cloudCover") { - singleInfo = singleInfo.replace(item, daily.cloudCover * 100); - } else if (RegExp.$1 == "temperatureHigh") { - singleInfo = singleInfo.replace(item, Math.round(daily.temperatureHigh)); - } else if (RegExp.$1 == "temperatureLow") { - singleInfo = singleInfo.replace(item, Math.round(daily.temperatureLow)); - } else if (RegExp.$1 == "apparentTemperatureMax") { - singleInfo = singleInfo.replace(item, Math.round(daily.apparentTemperatureMax)); - } else if (RegExp.$1 == "apparentTemperatureMin") { - singleInfo = singleInfo.replace(item, Math.round(daily.apparentTemperatureMin)); - } else if (RegExp.$1 && daily[RegExp.$1] != undefined) { - singleInfo = singleInfo.replace(item, daily[RegExp.$1]); - } - } - result.push(singleInfo); - } - config.show.template.detail = config.show.template.detail.replace(regexDaily, result.join(lineBreak)); - } -} - -function execTemplateHourly() { - let regexHourly = /\$\[(hourly\()+([\s\S]+?)(\))+\]/g; - if (provider.darksky.data.hourly.data.length <= 0) { - config.show.template.detail.replace(regexHourly, '') - } - let result = []; - if (regexHourly.test(config.show.template.detail)) { - config.show.template.detail.match(regexHourly); - var rangeTemplate = RegExp.$2; //此处拿到的是要替换的列表显示部分了 - let regex = /\$\[([a-z,A-Z,0-9]*)\]/g; - var template = rangeTemplate.match(regex); - for (hourly of provider.darksky.data.hourly.data) { - var singleInfo = rangeTemplate; - for (item of template) { - item.match(regex); - if (RegExp.$1 == "month") { - singleInfo = singleInfo.replace(item, (`${hourly["time"]}`).toDateTime().Format("MM")); - } else if (RegExp.$1 == "day") { - singleInfo = singleInfo.replace(item, (`${hourly["time"]}`).toDateTime().Format("dd")); - } else if (RegExp.$1 == "hour") { - singleInfo = singleInfo.replace(item, (`${hourly["time"]}`).toDateTime().Format("hh")); - } else if (RegExp.$1 == "weatherIcon") { - singleInfo = singleInfo.replace(item, getDarkskyWeatherIcon(hourly.icon)); - } else if (RegExp.$1 == "weather") { - singleInfo = singleInfo.replace(item, getDarkskyWeatherDesc(hourly.icon)); - } else if (RegExp.$1 == "uvDesc") { - singleInfo = singleInfo.replace(item, getUVDesc(hourly.uvIndex)); - } else if (RegExp.$1 == "cloudCover") { - singleInfo = singleInfo.replace(item, hourly.cloudCover * 100); - } else if (RegExp.$1 == "temperature") { - singleInfo = singleInfo.replace(item, Math.round(hourly.temperature)); - } else if (RegExp.$1 == "apparentTemperature") { - singleInfo = singleInfo.replace(item, Math.round(hourly.apparentTemperature)); - } else if (RegExp.$1 && hourly[RegExp.$1] != undefined) { - singleInfo = singleInfo.replace(item, hourly[RegExp.$1]); - } - } - result.push(singleInfo); - } - config.show.template.detail = config.show.template.detail.replace(regexHourly, result.join(lineBreak)); - } -} - -// #endregion - -// #region 扩展方法 -Array.prototype.get = function (index, defaultValue = {}) { - if (index >= 0 && this.length > 0 && this.length >= index + 1) { - return this[index]; - } else { - return defaultValue; - } -} -String.prototype.toDateTime = function () { - var time = parseInt(this + '000'); - return new Date(time); -} -Date.prototype.Format = function (fmt) { - var o = { - "M+": this.getMonth() + 1, //月份 - "d+": this.getDate(), //日 - "h+": this.getHours(), //小时 - "m+": this.getMinutes(), //分 - "s+": this.getSeconds(), //秒 - "q+": Math.floor((this.getMonth() + 3) / 3), //季度 - "S": this.getMilliseconds() //毫秒 - }; - if (/(y+)/.test(fmt)) - fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length)); - for (var k in o) - if (new RegExp("(" + k + ")").test(fmt)) - fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length))); - return fmt; -} -// #endregion - -// https://github.com/yichahucha/surge/blob/master/tool.js -//https://github.com/chavyleung/scripts/blob/master/chavy.js -// 工具方法编写参考了以上脚本,在此感谢 🙏 -function Tool() { - // app - const _isQuanX = typeof $task != "undefined" - const _isSurge = typeof $httpClient != "undefined" - const _isJSBox = typeof $app != "undefined" && $app.info.bundleID == "app.cyan.jsbox" - const _isNode = typeof require == "function" && !_isJSBox - - // environment - const _isRequest = typeof $request != "undefined" - const _isResponse = typeof $response != "undefined" - - const ishttp = _isRequest || _isResponse - - // require Tools - const _requireTools = (() => { - var tools = {} - if (typeof require == "function") { - let request = require('request') - if (request) tools.request = request - let fs = require("fs") - if (fs) tools.fs = fs - } - return tools - })() - - // config - const _nodeStoreName = "prefs.json" - - // custom log - // if you want to add log level, just add to _logLevels - const _log = (() => { - // default log value - let _logLevel = "debug" - - const _logLevels = new Array("trace", "debug", "info", "warn", "error", "fatal") - - // 默认显示日志等级 - let _isShowLevel = true - - // 设置日志等级,返回值为当前等级 - const _setLogLevel = (level = "") => { - if (_logLevels.indexOf(level) > -1) { - _logLevel = level - } - return _logLevel - } - - const showLevel = (isShow) => { - if (typeof isShow == "boolean") { - _isShowLevel = isShow - } - return _isShowLevel - } - - // 过滤低等级日志信息 - const _filterLog = (level, callback) => { - let index = _logLevels.indexOf(level) - let current = _logLevels.indexOf(_setLogLevel()) - if (index > -1) { - if (index >= current) { - callback() - } - } else { - callback() - } - } - - const _setLogFunction = (level) => { - return (message) => { - _filterLog(level, (() => { - if (showLevel()) { - console.log(`<${level}> ${message}`) - } else { - console.log(message) - } - })) - } - } - - let level = _setLogLevel - let log = _filterLog - var logFunc = {level, log, showLevel} - _logLevels.forEach((item) => { - logFunc[item] = _setLogFunction(item) - }) - - return logFunc - }) - - const log = _log() - - // setTimeout - const timeout = (() => { - if (typeof setTimeout != "undefined") { - return setTimeout - } - return (handler, timeout = 0) => { - handler() - } - })() - - // notification - const notify = (title, subtitle, message) => { - if (_isQuanX) { - $notify(title, subtitle, message) - } - if (_isSurge) { - $notification.post(title, subtitle, message) - } - if (_isNode) { - console.log(JSON.stringify({title, subtitle, message})) - } - if (_isJSBox) { - if (subtitle && message) { - $push.schedule({title: title, body: subtitle + "\n" + message}) - } else { - $push.schedule({title: title, body: subtitle + message}) - } - } - } - - // store - const read = (key) => { - if (_isQuanX) return $prefs.valueForKey(key) - if (_isSurge) return $persistentStore.read(key) - if (_isJSBox) return _jsBoxRead(key) - if (_isNode) return _nodeRead(key) - } - - const write = (value, key) => { - if (_isQuanX) return $prefs.setValueForKey(value, key) - if (_isSurge) return $persistentStore.write(value, key) - if (_isJSBox) return _jsBoxWrite(value, key) - if (_isNode) return _nodeWrite(value, key) - } - - const _nodeRead = (key) => { - try { - var data = JSON.parse(_requireTools.fs.readFileSync(_nodeStoreName)) - if (typeof data[key] != "undefined") { - return data[key] - } - } catch (error) { - log.error(error) - } - return "" - } - - const _nodeWrite = (value, key) => { - try { - if (!_requireTools.fs.existsSync(_nodeStoreName)) { - _requireTools.fs.writeFileSync(_nodeStoreName, JSON.stringify({})) - } - var data = JSON.parse(_requireTools.fs.readFileSync(_nodeStoreName)) - data[key] = value - _requireTools.fs.writeFileSync(_nodeStoreName, JSON.stringify(data)) - return true - } catch (error) { - log.error(error) - } - return false - } - - const _jsBoxRead = (key) => { - try { - if (_jsBoxEnvName != "icloud") { - return $prefs.get(key) - } - if (typeof $drive != "undefined") { - let filePath = "Code/" + _nodeStoreName - if ($drive.exists(filePath)) { - let content = $drive.read(filePath) - if (content) { - let data = JSON.parse(content) - if (typeof data[key] != "undefined") { - return data[key] - } - } - } - } - } catch (error) { - log.error(error) - } - return "" - } - - const _jsBoxWrite = (value, key) => { - try { - if (_jsBoxEnvName != "icloud") { - return $prefs.set(key, value) - } - if (typeof $drive != "undefined") { - let filePath = "Code/" + _nodeStoreName - var data = {} - if ($drive.exists(filePath)) { - let content = $drive.read(filePath) - data = JSON.parse(content) - } - data[key] = value - return $drive.write({data: $data({string: JSON.stringify(data)}), path: filePath}) - } - } catch (error) { - log.error(error) - } - return false - } - - const _jsBoxEnvName = (() => { - if (typeof $addin != "undefined") { - if (typeof $addin.current == "undefined") { - // 运行在icloud - return "icloud" - } else { - - let _version = typeof $addin.current.version != "undefined" - let _author = typeof $addin.current.author != "undefined" - let _url = typeof $addin.current.url != "undefined" - let _website = typeof $addin.current.website != "undefined" - if (_version || _author || _url || _website) { - // jsBox 应用 - return "app" - } else { - // jsBox 脚本 - return "script" - } - } - } - return "" - })() - - // http request - const get = (options, callback) => { - if (_isQuanX) { - if (typeof options == "string") options = {url: options} - options["method"] = "GET" - $task.fetch(options).then(response => { - callback(null, _status(response), response.body) - }, reason => callback(reason.error, null, null)) - } - if (_isSurge) $httpClient.get(options, (error, response, body) => { - callback(error, _status(response), body) - }); - if (_isNode) { - _requireTools.request(options, (error, response, body) => { - callback(error, _status(response), body) - }) - } - if (_isJSBox) $http.get(_jsBoxRequest(options, callback)) - } - const post = (options, callback) => { - if (_isQuanX) { - if (typeof options == "string") options = {url: options} - options["method"] = "POST" - $task.fetch(options).then(response => { - callback(null, _status(response), response.body) - }, reason => callback(reason.error, null, null)) - } - if (_isSurge) { - $httpClient.post(options, (error, response, body) => { - callback(error, _status(response), body) - }) - } - if (_isNode) { - _requireTools.request.post(options, (error, response, body) => { - callback(error, _status(response), body) - }) - } - if (_isJSBox) $http.post(_jsBoxRequest(options, callback)) - } - - const _jsBoxRequest = (options, callback) => { - if (typeof options == "string") options = {url: options} - options["header"] = options["headers"] - delete options["headers"] - let body = options["body"] - if (typeof body != "undefined") { - try { - body = JSON.parse(body) - options["body"] = body - } catch (e) { - } - } - options["handler"] = function (resp) { - let error = resp.error - if (error) error = JSON.stringify(resp.error) - let body = resp.data - if (typeof body == "object") body = JSON.stringify(resp.data) - callback(error, _status(resp.response), body) - } - return options - } - - const _status = (response) => { - if (response) { - if (response.status) { - response["statusCode"] = response.status - } else if (response.statusCode) { - response["status"] = response.statusCode - } - } - return response - } - - // done - const done = (value = {}) => { - if (_isQuanX) ishttp ? $done(value) : "" - if (_isSurge) ishttp ? $done(value) : $done() - } - - return {read, write, notify, get, post, ishttp, log, timeout, done} -} From 163230b50ad216ba3e74dd37da8f5702b6eb3db9 Mon Sep 17 00:00:00 2001 From: MuTu <59136159+githubdulong@users.noreply.github.com> Date: Sat, 11 Jul 2020 16:59:01 +0800 Subject: [PATCH 03/19] Delete dlercloud.js --- dlercloud.js | 235 --------------------------------------------------- 1 file changed, 235 deletions(-) delete mode 100644 dlercloud.js diff --git a/dlercloud.js b/dlercloud.js deleted file mode 100644 index f8919b27..00000000 --- a/dlercloud.js +++ /dev/null @@ -1,235 +0,0 @@ -/* -Dler Cloud 签到脚本 转自TG大佬 - -https://raw.githubusercontent.com/githubdulong/Script/master/dlercloud.js - -说明:登录 https://dleris.best/ 获取 cookie,cookie有效期为 31 天,失效后需重新获取 - -QX 1.0.5+ : -[rewrite_local] -^https:\/\/dleris\.best\/user url script-request-header https://raw.githubusercontent.com/githubdulong/Script/master/dlercloud.js - -[task_local] -0/60 * * * * https://raw.githubusercontent.com/githubdulong/Script/master/dlercloud.js - -[mitm] -hostname = dleris.best - - -Surge 4.0 : -[Script] -http-request ^https:\/\/dleris\.best\/user script-path= https://raw.githubusercontent.com/githubdulong/Script/master/dlercloud.js -cron "0/60 * * * *" script-path= https://raw.githubusercontent.com/githubdulong/Script/master/dlercloud.js - -[MITM] -hostname = dleris.best -*/ - -const $util = init() -const title = 'Dler Cloud墙洞机场' -const cookieName = 'DlerCloud' -const totalKey = 'DlerCloudTotal' -const url = 'https://dleris.best' - -const checkinResult = { - msg: undefined, - used: undefined, - rest: undefined, - total: undefined, -} - -if ($util.isRequest) { - getCookie() -} else { - ;(async () => { - let cookie = $util.read(cookieName) - if (cookie == undefined || cookie == "0" || cookie == null) { - console.log(`${title} 未获取Cookie!\n`) - $util.notify(title, "未获取Cookie⚠️", "请先获取Cookie") - } - await checkin(cookie) - await getDataTraffic(cookie) - })().then(() => { - let result = totalCalculation(checkinResult.total) - let msg = `已用流量:${checkinResult.used}\n剩余流量:${checkinResult.rest}\n累计收益:${result}B` - console.log(`${title}\n${checkinResult.msg}\n${msg}\n`) - $util.notify(title, checkinResult.msg, msg) - }) -} -$util.done() - -function getCookie() { - if ($request.headers) { - let cookieValue = $request.headers['Cookie'] - if ($util.read(cookieName) != (undefined || null)) { - if ($util.read(cookieName) != cookieValue) { - if (!$util.write(cookieValue, cookieName)) { - $util.notify(`更新 ${cookieName} Cookie 失败‼️`, '', '') - } else { - $util.notify(`更新 ${cookieName} Cookie 成功 🎉`, '', '') - } - } - } else { - if (!$util.write(cookieValue, cookieName)) { - $util.notify(`首次写入 ${cookieName} Cookie 失败‼️`, '', '') - } else { - $util.notify(`首次写入 ${cookieName} Cookie 成功 🎉`, '', '') - } - } - } else { - $util.notify(`写入 ${cookieName} Cookie 失败‼️`, '', '无法读取请求头') - } -} - -function getDataTraffic(cookie) { - return new Promise((resolve, reject) => { - let options = { - url: `${url}/user`, - headers: { - Cookie: cookie, - }, - } - $util.get(options, (error, response, data) => { - let matcher = data.replace(/\n/g, '').match(/>可用:(.*?)<.*>已用:(.*?) { - let options = { - url: `${url}/user/checkin`, - headers: { - Cookie: cookie, - }, - } - $util.post(options, (error, response, data) => { - if (!data) { - $util.notify(`${title} 签到失败‼️`, `${error}`, '详情请见日志⚠️') - console.log('签到请求失败\n') - console.log(`error: ${error}\n`) - console.log(`statusCode:${response.status}\n`) - } - if (!data.match(/"ret":/)) { - console.log('签到失败,cookie已失效\n') - console.log(`statusCode:${response.status}\n`) - $util.notify(`${title} 签到失败‼️`, "Cookie已失效⚠️", "请重新获取Cookie") - } - obj = JSON.parse(data) - checkinResult.total = updateTotal(obj.msg) - checkinResult.msg = obj.msg - resolve('done') - }) - }) -} - -function updateTotal(checkinMsg) { - let total = $util.read(totalKey) - if (total != (undefined || null)) { - total = parseFloat(total) - } else { - total = 0.0 - } - - if (checkinMsg) { - let matcher = checkinMsg.match(/(增加|减少)[^.\d]*(([1-9]\d*|0)(\.\d+)?)[^.\d]*/) - if (matcher && matcher.length >= 3) { - if (matcher[1] === '增加') { - total += parseFloat(matcher[2]) - } else if (matcher[1] === '减少') { - total -= parseFloat(matcher[2]) - } - } - $util.write(`${total}`, totalKey) - } - - return total -} - -function totalCalculation(totalFlow) { - let absoluteValue = totalFlow - if (totalFlow < 0) { - absoluteValue = -totalFlow - } - let flow = '0M' - if (absoluteValue >= 1 * 1024 && absoluteValue < 1 * 1024 * 1024) { - absoluteValue = Math.floor(1.0 * absoluteValue / 1024 * 100) / 100 - flow = absoluteValue + 'G' - } else if (absoluteValue >= 1 * 1024 * 1024 && absoluteValue < 1 * 1024 * 1024 * 1024) { - absoluteValue = Math.floor(1.0 * absoluteValue / 1024 / 1024 * 100) / 100 - flow = absoluteValue + 'T' - } else if (absoluteValue >= 1 * 1024 * 1024 * 1024 && absoluteValue < 1 * 1024 * 1024 * 1024 * 1024) { - absoluteValue = Math.floor(1.0 * absoluteValue / 1024 / 1024 / 1024 * 100) / 100 - flow = absoluteValue + 'P' - } else { - flow = absoluteValue + 'M' - } - if (totalFlow < 0) { - flow = '-' + flow - } - return flow -} - -/** - * 该兼容方法来自 @nobyda https://github.com/NobyDa/Script - */ -function init() { - const isRequest = typeof $request != 'undefined' - const isSurge = typeof $httpClient != 'undefined' - const isQuanX = typeof $task != 'undefined' - const notify = (title, subtitle, message) => { - if (isQuanX) $notify(title, subtitle, message) - if (isSurge) $notification.post(title, subtitle, message) - } - const write = (value, key) => { - if (isQuanX) return $prefs.setValueForKey(value, key) - if (isSurge) return $persistentStore.write(value, key) - } - const read = key => { - if (isQuanX) return $prefs.valueForKey(key) - if (isSurge) return $persistentStore.read(key) - } - const get = (options, callback) => { - if (isQuanX) { - if (typeof options == 'string') options = { url: options } - options['method'] = 'GET' - return $task.fetch(options).then( - response => { - response['status'] = response.statusCode - callback(null, response, response.body) - }, - reason => callback(reason.error, null, null) - ) - } - if (isSurge) return $httpClient.get(options, callback) - } - const post = (options, callback) => { - if (isQuanX) { - if (typeof options == 'string') options = { url: options } - options['method'] = 'POST' - $task.fetch(options).then( - response => { - response['status'] = response.statusCode - callback(null, response, response.body) - }, - reason => callback(reason.error, null, null) - ) - } - if (isSurge) $httpClient.post(options, callback) - } - const done = (value = {}) => { - if (isQuanX) isRequest ? $done(value) : '' - if (isSurge) isRequest ? $done(value) : $done() - } - return { isRequest, isQuanX, isSurge, notify, write, read, get, post, done } -} From f221d1dbefe3c1831052fd22b22a06bf19fb1c6b Mon Sep 17 00:00:00 2001 From: MuTu <59136159+githubdulong@users.noreply.github.com> Date: Sat, 11 Jul 2020 16:59:14 +0800 Subject: [PATCH 04/19] Delete README.md --- README.md | 2 -- 1 file changed, 2 deletions(-) delete mode 100644 README.md diff --git a/README.md b/README.md deleted file mode 100644 index d016b320..00000000 --- a/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# Surge-module -Surge/module From 372e1134538594775c46df87cc28989f11ee3cd1 Mon Sep 17 00:00:00 2001 From: MuTu <59136159+githubdulong@users.noreply.github.com> Date: Sat, 11 Jul 2020 16:59:30 +0800 Subject: [PATCH 05/19] Delete Task.sgmodule --- Surge/Task.sgmodule | 81 --------------------------------------------- 1 file changed, 81 deletions(-) delete mode 100644 Surge/Task.sgmodule diff --git a/Surge/Task.sgmodule b/Surge/Task.sgmodule deleted file mode 100644 index 5886c9ff..00000000 --- a/Surge/Task.sgmodule +++ /dev/null @@ -1,81 +0,0 @@ -#!name=𝙏𝙖𝙨𝙠 -#!desc=Task定时 • 签到脚本、无主机名; -#!system=ios - -[Script] -# > 多账号切换 -// 切换会话 = type=cron,cronexp="0 12 * * *",wake-system=1,script-path=https://raw.githubusercontent.com/chavyleung/scripts/master/box/switcher/box.switcher.js,script-update-interval=0 -# > 京东多合一签到 -京东商城 = type=cron,cronexp="0,30 0 0 * * *",wake-system=1,script-path=https://raw.githubusercontent.com/NobyDa/Script/master/JD-DailyBonus/JD_DailyBonus.js,script-update-interval=0 -# > 饿了么 签到、打卡 -饿了签到 = type=cron,cronexp=0 1 0 * * *,wake-system=1,script-path=https://raw.githubusercontent.com/songyangzz/QuantumultX/master/elem/elemSign.js,script-update-interval=0 -饿了打卡 = type=cron,cronexp=30 1 0 * * *,wake-system=1,script-path=https://raw.githubusercontent.com/zZPiglet/Task/master/elem/elemCheckIn.js,script-update-interval=0 -# > 去哪儿 -去哪签到 = type=cron,cronexp=0 2 0 * * *,wake-system=1,script-path=https://raw.githubusercontent.com/chavyleung/scripts/master/qunar/qunar.js,script-update-interval=0 -# > 人人字幕组 -人人字幕 = type=cron,cronexp=30 2 0 * * *,wake-system=1,script-path=https://raw.githubusercontent.com/chavyleung/scripts/master/zimuzu/zimuzu.js,script-update-interval=0 -# > 人人视频 -人人视频 = type=cron,cronexp=0 3 0 * * *,wake-system=1,script-path=https://raw.githubusercontent.com/chavyleung/scripts/master/rrtv/rrtv.js,script-update-interval=0 -# > 喜马拉雅 -喜马拉雅 = type=cron,cronexp=30 3 0 * * *,wake-system=1,script-path=https://raw.githubusercontent.com/chavyleung/scripts/master/ximalaya/ximalaya.js,script-update-interval=0 -# > 美团 -美团签到 = type=cron,cronexp=0 4 0 * * *,wake-system=1,script-path=https://raw.githubusercontent.com/chavyleung/scripts/master/meituan/meituan.js,script-update-interval=0 -# > 网易云音乐 -网易音乐 = type=cron,cronexp=30 4 0 * * *,wake-system=1,script-path=https://raw.githubusercontent.com/chavyleung/scripts/master/neteasemusic/neteasemusic.js,script-update-interval=0 -# > 京东到家 -京东到家 = type=cron,cronexp=0 5 0 * * *,wake-system=1,script-path=https://raw.githubusercontent.com/Sunert/Scripts/master/Task/jddj.js,script-update-interval=0 -# > 新浪微博 -新浪微博 = type=cron,cronexp=30 5 5 * * *,wake-system=1,script-path=https://raw.githubusercontent.com/Sunert/Scripts/master/Task/weibo.js,script-update-interval=0 -# > 顺丰速运 -顺丰速运 = type=cron,cronexp=0 6 0 * * *,wake-system=1,script-path=https://raw.githubusercontent.com/chavyleung/scripts/master/sfexpress/sfexpress.js,script-update-interval=0 -# > 苏宁易购 -苏宁易购 = type=cron,cronexp=30 6 0 * * *,wake-system=1,script-path=https://raw.githubusercontent.com/chavyleung/scripts/master/suning/suning.js,script-update-interval=0 -# > 吾爱破解 -吾爱破解 = type=cron,cronexp=0 7 0 * * *,wake-system=1,script-path=https://raw.githubusercontent.com/NobyDa/Script/master/52pojie-DailyBonus/52pojie.js,script-update-interval=0 -# > 网易新闻 -网易新闻 = type=cron,cronexp=30 7 0 * * *,wake-system=1,script-path=https://raw.githubusercontent.com/chavyleung/scripts/master/neteasenews/neteasenews.js,script-update-interval=0 -# > 滴滴出行 -滴滴出行 = type=cron,cronexp=0 8 0 * * *,wake-system=1,script-path=https://raw.githubusercontent.com/zZPiglet/Task/master/DiDi/DiDi.js,script-update-interval=0 -# > bilibili 哔哩哔哩 -哔哩哔哩 = type=cron,cronexp=30 8 0 * * *,wake-system=1,script-path=https://raw.githubusercontent.com/chavyleung/scripts/master/bilibili/bilibili.js,script-update-interval=0 -# > 115云盘 -1 1 5 云盘 = type=cron,cronexp=0 9 0 * * *,wake-system=1,script-path=https://raw.githubusercontent.com/zZPiglet/Task/master/115/115.js,script-update-interval=0 -# > 中国电信 -电信签到 = type=cron,cronexp= 30 9 0 * * *,wake-system=1,script-path=https://raw.githubusercontent.com/chavyleung/scripts/master/10000/10000.js,script-update-interval=0 -# > 中国移动 -移动签到 = type=cron,cronexp=0 10 0 * * *,wake-system=1,script-path=https://raw.githubusercontent.com/chavyleung/scripts/master/10086/10086.js,script-update-interval=0 -# > 百度贴吧 -百度贴吧 = type=cron,cronexp=30 10 0 * * *,wake-system=1,script-path=https://raw.githubusercontent.com/chavyleung/scripts/master/tieba/tieba.js,timeout=60,script-update-interval=0 -# > 万达电影 -万达电影 = type=cron,cronexp=0 11 0 * * *,script-path=https://raw.githubusercontent.com/chavyleung/scripts/master/wanda/wanda.js,wake-system=1,script-update-interval=0 -# > 威锋论坛 -威锋论坛 = type=cron,cronexp=30 11 0 * * *,script-path=https://raw.githubusercontent.com/chavyleung/scripts/master/feng/feng.js,wake-system=1,script-update-interval=0 -# > 可林商城 -可林商城 = type=cron,cronexp=0 12 0 * * *,wake-system=1,script-path=https://raw.githubusercontent.com/zZPiglet/Task/master/Oclean/Oclean_mini.js,script-update-interval=0 -# > GitHub监控 -GitHub库 = type=cron,cronexp="0 5 0/1 * * *",wake-system=1,script-path=https://raw.githubusercontent.com/Peng-YM/QuanX/master/Tasks/github.js,script-update-interval=0 -# > 金山WPS -金山WPS = type=cron,cronexp=0 2 8 * * *,wake-system=1,script-path=https://raw.githubusercontent.com/chavyleung/scripts/master/wps/wps.js,script-update-interval=0 -# > 中国移动 余量 -移动余量 = type=cron,cronexp=0 0 9 * * *,wake-system=1,script-path=https://raw.githubusercontent.com/chavyleung/scripts/master/10086/10086.fee.js,wake-system=true,script-update-interval=0 -# > 中国电信 余量 -电信余量 = type=cron,cronexp= 0 2 9 * * *,wake-system=1,script-path=https://raw.githubusercontent.com/Sunert/Scripts/master/Task/telecomInfinity.js,script-update-interval=0 -# > 天气预报-益阳市 -天气预报 = type=cron,cronexp="0 1 8,18 * * *",wake-system=1,script-path=https://raw.githubusercontent.com/githubdulong/Script/mutu/weather_pro2.js,script-update-interval=0 -# > 彩云天气 -彩云天气 = type=cron,cronexp="0 1 8-20/1 * * *",wake-system=1,script-path=https://raw.githubusercontent.com/Peng-YM/QuanX/master/Tasks/caiyun.js, script-update-interval=0 -# > 降雨提醒 -//降雨提醒= type=cron,cronexp="0 2 8-20/4 * * *",wake-system=1,script-path=https://raw.githubusercontent.com/toulanboy/scripts/master/weather/weather.js, script-update-interval=0 -# > Dler Cloud 墙洞机场 -墙洞机场 = type=cron,cronexp="0 0 8-22/2 * * *",wake-system=1,script-path=https://raw.githubusercontent.com/githubdulong/Script/master/dlercloud.js,use-local-host-item-for-proxy = true -# > 电视节目预告 -电视预告 = type=cron,cronexp=0 5 9 * * *,wake-system=1,script-path=https://raw.githubusercontent.com/Sunert/Scripts/master/Task/tvpreview.js, script-update-interval=0 -# > 实时汇率 -//实时汇率 = type=cron,cronexp=50 0 9 * * *,wake-system=1,script-path=https://raw.githubusercontent.com/Peng-YM/QuanX/master/Tasks/exchange.js,script-update-interval=0 -# > Epic游戏限免 -游戏限免 = type=cron,cronexp=0 8 10 * * *,wake-system=1,script-path=https://raw.githubusercontent.com/Peng-YM/QuanX/master/Tasks/epic.js,script-update-interval=0 -# > 疫情报告 -疫情报告 = type=cron,cronexp=0 8 9 * * *,wake-system=1,script-path=https://raw.githubusercontent.com/Peng-YM/QuanX/master/Tasks/nCov.js,script-update-interval=0 - --------- 分 - 割 - 线 -------- = type=http-request,pattern=分割线,script-path=Script/分割线.js - From 900afc4c91ebf47bc11e4b7acb007e922e2ed6c4 Mon Sep 17 00:00:00 2001 From: MuTu <59136159+githubdulong@users.noreply.github.com> Date: Sat, 11 Jul 2020 16:59:39 +0800 Subject: [PATCH 06/19] Delete SurgePro.conf --- Surge/SurgePro.conf | 79 --------------------------------------------- 1 file changed, 79 deletions(-) delete mode 100644 Surge/SurgePro.conf diff --git a/Surge/SurgePro.conf b/Surge/SurgePro.conf deleted file mode 100644 index 397a7240..00000000 --- a/Surge/SurgePro.conf +++ /dev/null @@ -1,79 +0,0 @@ -[General] -bypass-system = true -loglevel = notify -replica = false -dns-server = system, 119.29.29.29, 119.28.28.28, 1.2.4.8 -skip-proxy = 127.0.0.1, 192.168.0.0/16, 10.0.0.0/8, 172.16.0.0/12, 100.64.0.0/10, 17.0.0.0/8, localhost, *.local, *.crashlytics.com -tun-excluded-routes = 192.168.0.0/16, 10.0.0.0/8, 172.16.0.0/12 -tun-included-routes = 192.168.1.12/32 -always-real-ip = *.srv.nintendo.net, *.stun.playstation.net, xbox.*.microsoft.com, *.xboxlive.com -hijack-dns = 8.8.8.8:53, 8.8.4.4:53 -http-listen = 0.0.0.0:8888 -socks5-listen = 0.0.0.0:8889 -wifi-access-http-port = 6152 -wifi-access-socks5-port = 6153 -internet-test-url = http://www.aliyun.com -proxy-test-url = http://cp.cloudflare.com/generate_204 -test-timeout = 5 -allow-wifi-access = true -exclude-simple-hostnames = true -ipv6 = true -network-framework = false -show-error-page-for-reject = true -tls-provider = default -use-default-policy-if-wifi-not-primary = false -wifi-assist = true - -[Replica] -hide-apple-request = true -hide-crashlytics-request = true -hide-udp = false -keyword-filter-type = false - -[Proxy] -𝙍𝙀𝙅𝙀𝘾𝙏-𝙏𝙄𝙉𝙔𝙂𝙄𝙁 = reject-tinygif -𝙍𝙀𝙅𝙀𝘾𝙏 = reject -𝘿𝙄𝙍𝙀𝘾𝙏 = direct - -[Proxy Group] -𝙋𝙍𝙊𝙓𝙔 = select, 𝘿𝙡𝙚𝙧𝘾𝙡𝙤𝙪𝙙 𝙄𝙋𝙇𝘾, 𝘿𝙡𝙚𝙧𝘾𝙡𝙤𝙪𝙙 𝘽𝙂𝙋 -𝘿𝙡𝙚𝙧𝘾𝙡𝙤𝙪𝙙 𝙄𝙋𝙇𝘾 = url-test, policy-regex-filter=(标准).*IPLC, url=http://www.gstatic.com/generate_204, policy-path=机场订阅, update-interval=43200, timeout=0, interval=600, tolerance=50 -𝘿𝙡𝙚𝙧𝘾𝙡𝙤𝙪𝙙 𝘽𝙂𝙋 = select, policy-path=机场订阅, policy-regex-filter=(高级).*BGP, update-interval=43200 -𝙔𝙤𝙪𝙏𝙪𝙗𝙚 = select, 𝘿𝙄𝙍𝙀𝘾𝙏, 𝙋𝙍𝙊𝙓𝙔 -𝙉𝙚𝙩𝙛𝙡𝙞𝙭 = select, 𝘿𝙄𝙍𝙀𝘾𝙏, 𝙋𝙍𝙊𝙓𝙔 -𝙏𝙚𝙡𝙚𝙜𝙧𝙖𝙢 = select, 𝘿𝙄𝙍𝙀𝘾𝙏, 𝙋𝙍𝙊𝙓𝙔 -𝘼𝘿 𝘽𝙡𝙤𝙘𝙠 = select, 𝘿𝙄𝙍𝙀𝘾𝙏, 𝙍𝙀𝙅𝙀𝘾𝙏, 𝙍𝙀𝙅𝙀𝘾𝙏-𝙏𝙄𝙉𝙔𝙂𝙄𝙁 -𝘽𝙡𝙤𝙘𝙠 𝙊𝙏𝘼 = select, 𝘿𝙄𝙍𝙀𝘾𝙏, 𝙍𝙀𝙅𝙀𝘾𝙏 -𝙎𝙥𝙚𝙚𝙙𝙩𝙚𝙨𝙩 = select, 𝘿𝙄𝙍𝙀𝘾𝙏, 𝙋𝙍𝙊𝙓𝙔 -𝘼𝙥𝙥𝙡𝙚 = select, 𝘿𝙄𝙍𝙀𝘾𝙏, 𝙋𝙍𝙊𝙓𝙔 -𝙋𝙖𝙮𝙋𝙖𝙡 = select, 𝘿𝙄𝙍𝙀𝘾𝙏, 𝙋𝙍𝙊𝙓𝙔 - -[Rule] -DOMAIN,rsshub.app,𝙋𝙍𝙊𝙓𝙔 -DOMAIN,dleris.best,𝘿𝙡𝙚𝙧𝘾𝙡𝙤𝙪𝙙 𝘽𝙂𝙋 -DOMAIN,chat.dler.io,𝘿𝙡𝙚𝙧𝘾𝙡𝙤𝙪𝙙 𝘽𝙂𝙋 -DOMAIN,dlercloud.com,𝘿𝙡𝙚𝙧𝘾𝙡𝙤𝙪𝙙 𝘽𝙂𝙋 -URL-REGEX,^https:\/\/dayone\.me,𝙋𝙍𝙊𝙓𝙔 -RULE-SET,https://raw.githubusercontent.com/eHpo1/Rules/master/Surge4/Ruleset/Liby.list,𝘼𝘿 𝘽𝙡𝙤𝙘𝙠 -RULE-SET,https://raw.githubusercontent.com/eHpo1/Rules/master/Surge4/Ruleset/Tide.list,𝘼𝘿 𝘽𝙡𝙤𝙘𝙠 -RULE-SET,https://raw.githubusercontent.com/nzw9314/Surge/master/Ruleset/BlockOTA.list,𝘽𝙡𝙤𝙘𝙠 𝙊𝙏𝘼 -RULE-SET,https://raw.githubusercontent.com/eHpo1/Rules/master/Surge4/Ruleset/Sub/PayPal.list,𝙋𝙖𝙮𝙋𝙖𝙡 -RULE-SET,https://raw.githubusercontent.com/eHpo1/Rules/master/Surge4/Ruleset/Sub/YouTube.list,𝙔𝙤𝙪𝙏𝙪𝙗𝙚 -RULE-SET,https://raw.githubusercontent.com/eHpo1/Rules/master/Surge4/Ruleset/Sub/Netflix.list,𝙉𝙚𝙩𝙛𝙡𝙞𝙭 -RULE-SET,https://raw.githubusercontent.com/eHpo1/Rules/master/Surge4/Ruleset/Sub/Pornhub.list,𝙋𝙍𝙊𝙓𝙔 -RULE-SET,https://raw.githubusercontent.com/eHpo1/Rules/master/Surge4/Ruleset/Sub/Telegram.list,𝙏𝙚𝙡𝙚𝙜𝙧𝙖𝙢 -RULE-SET,https://raw.githubusercontent.com/eHpo1/Rules/master/Surge4/Ruleset/Sub/Speedtest.list,𝙎𝙥𝙚𝙚𝙙𝙩𝙚𝙨𝙩 -RULE-SET,https://raw.githubusercontent.com/eHpo1/Rules/master/Surge4/Ruleset/Apple_API.list,𝘼𝙥𝙥𝙡𝙚 -RULE-SET,https://raw.githubusercontent.com/eHpo1/Rules/master/Surge4/Ruleset/Apple_CDN.list,𝘿𝙄𝙍𝙀𝘾𝙏 -RULE-SET,https://raw.githubusercontent.com/eHpo1/Rules/master/Surge4/Ruleset/GlobalMedia.list,𝙋𝙍𝙊𝙓𝙔 -RULE-SET,https://raw.githubusercontent.com/eHpo1/Rules/master/Surge4/Ruleset/Global.list,𝙋𝙍𝙊𝙓𝙔 -RULE-SET,https://raw.githubusercontent.com/eHpo1/Rules/master/Surge4/Ruleset/AsianMedia.list,𝘿𝙄𝙍𝙀𝘾𝙏 -RULE-SET,https://raw.githubusercontent.com/eHpo1/Rules/master/Surge4/Ruleset/Domestic.list,𝘿𝙄𝙍𝙀𝘾𝙏 -DOMAIN,ocsp.apple.com,𝙍𝙀𝙅𝙀𝘾𝙏 -RULE-SET,LAN,𝘿𝙄𝙍𝙀𝘾𝙏 -GEOIP,CN,𝘿𝙄𝙍𝙀𝘾𝙏 -FINAL,𝙋𝙍𝙊𝙓𝙔,dns-failed - -[MITM] -ca-passphrase = 52E176D8 -ca-p12 = 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 From f1a173c77f7aa359b73b756dce7157820021e984 Mon Sep 17 00:00:00 2001 From: MuTu <59136159+githubdulong@users.noreply.github.com> Date: Sat, 11 Jul 2020 16:59:47 +0800 Subject: [PATCH 07/19] Delete Script.sgmodule --- Surge/Script.sgmodule | 140 ------------------------------------------ 1 file changed, 140 deletions(-) delete mode 100644 Surge/Script.sgmodule diff --git a/Surge/Script.sgmodule b/Surge/Script.sgmodule deleted file mode 100644 index 7c09beef..00000000 --- a/Surge/Script.sgmodule +++ /dev/null @@ -1,140 +0,0 @@ -#!name=𝙎𝙘𝙧𝙞𝙥𝙩 -#!desc=Java Script合集 • 包含Host映射、Rule规则、Rewrite重写、Script破解、集成主机名; -#!system=ios - -[Host] -iosapps.itunes.apple.com = script:商店加速 -ip6-localhost = ::1 -ip6-loopback = ::1 -taobao.com = server:223.6.6.6 -*.taobao.com = server:223.6.6.6 -tmall.com = server:223.6.6.6 -*.tmall.com = server:223.6.6.6 -jd.com = server:119.29.29.29 -*.jd.com = server:119.28.28.28 -*.qq.com = server:119.28.28.28 -*.bilibili.com = server:119.29.29.29 -*.tencent.com = server:119.28.28.28 -*.alicdn.com = server:223.5.5.5 -aliyun.com = server:223.5.5.5 -*.aliyun.com = server:223.5.5.5 -weixin.com = server:119.28.28.28 -*.weixin.com = server:119.28.28.28 -hdslb.com = server:119.29.29.29 -163.com = server:119.29.29.29 -*.163.com = server:119.29.29.29 -126.com = server:119.29.29.29 -*.126.com = server:119.29.29.29 -*.126.net = server:119.29.29.29 -*.127.net = server:119.29.29.29 -*.netease.com = server:119.29.29.29 -mi.com = server:119.29.29.29 -*.mi.com = server:119.29.29.29 -xiaomi.com = server:119.29.29.29 -*.xiaomi.com = server:119.29.29.29 -dler.cloud = server:180.76.76.76 -dleris.best = server:180.76.76.76 -routerlogin.net = server:system -_hotspot_.m2m = server:system -router.asus.com = server:system -hotspot.cslwifi.com = server:system -amplifi.lan = server:system -*.lan = server:system - -[General] -# > 优酷 去广告 -//force-http-engine-hosts = %APPEND% vali.cp31.ott.cibntv.net - -[Rule] -# > 人人视频 去广告 -AND,((USER-AGENT,PUClient*), (NOT,((DOMAIN-SUFFIX,rr.tv)))),REJECT -URL-REGEX,^https?:\/\/api\.rr\.tv\/(?:ad\/getAll$|storage/business/rootName/app/homePage),REJECT -# > 优酷 去广告 -URL-REGEX,^http:\/\/vali\.cp31\.ott\.cibntv\.net\/youku\/,REJECT-TINYGIF -# > 京东 去广告 -URL-REGEX,^https?:\/\/api\.m\.jd\.com\/client\.action\?functionId=start$,REJECT-TINYGIF -# > 哔哩哔哩 去广告 -URL-REGEX,https://app.bilibili.com/x/v2/(splash|search/(defaultword|square)),REJECT -URL-REGEX,https://api.bilibili.com/x/v2/dm/ad,REJECT - -[URL Rewrite] -# > TikTok封区解锁 -(?<=_region=)CN(?=&) VN 307 -(?<=&app_version=)16..(?=.?.?&) 1 307 -(?<=\?version_code=)16..(?=.?.?&) 1 307 - -[Header Rewrite] -# > 小小影视解锁 -https:\/\/.*.xiaoxiao(img|apps|appxs).com header-replace Cookie xxx_api_auth=6131333537653261363463323331666265663763396239663835636662373930 - -[Script] -# > 京东 历史价格 -京东比价 = type=http-response,pattern=^https?://api\.m\.jd\.com/client\.action\?functionId=(wareBusiness|serverConfig),requires-body=1,max-size=0,script-path=https://raw.githubusercontent.com/yichahucha/surge/master/jd_price.js,use-local-host-item-for-proxy = true,script-update-interval=0 -# > 淘宝 历史价格 -淘宝比价 = requires-body=1,script-path=https://raw.githubusercontent.com/yichahucha/surge/master/tb_price.js,type=http-request,pattern=^http://.+/amdc/mobileDispatch,use-local-host-item-for-proxy = true -淘宝比价 = requires-body=1,script-path=https://raw.githubusercontent.com/yichahucha/surge/master/tb_price.js,type=http-response,pattern=^https?://trade-acs\.m\.taobao\.com/gw/mtop\.taobao\.detail\.getdetail,use-local-host-item-for-proxy = true -// 淘宝 lite = type=http-request,pattern=^https?://.+/amdc/mobileDispatch,requires-body=1,max-size=0,script-path=https://raw.githubusercontent.com/yichahucha/surge/master/tb_price_lite.js,script-update-interval=0 -// 淘宝 lite = type=http-response,pattern=^https?://trade-acs\.m\.taobao\.com/gw/mtop\.taobao\.detail\.getdetail,requires-body=1,max-size=0,script-path=https://raw.githubusercontent.com/yichahucha/surge/master/tb_price_lite.js,script-update-interval=0 -# > 奈飞 评分 -// 奈飞评分 = script-path=https://raw.githubusercontent.com/yichahucha/surge/master/nf_rating.js,type=http-request,pattern=^https?://ios\.prod\.ftl\.netflix\.com/iosui/user/.+path=%5B%22videos%22%2C%\d+%22%2C%22summary%22%5D -// 奈飞评分 = requires-body=1,script-path=https://raw.githubusercontent.com/yichahucha/surge/master/nf_rating.js,type=http-response,pattern=^https?://ios\.prod\.ftl\.netflix\.com/iosui/user/.+path=%5B%22videos%22%2C%\d+%22%2C%22summary%22%5D -// 单集评分 = type=http-response,pattern=^https?://ios\.prod\.ftl\.netflix\.com/iosui/warmer/.+type=show-ath,requires-body=1,max-size=0,script-path=https://raw.githubusercontent.com/yichahucha/surge/master/nf_rating_season.js -# > 新浪微博 去广告 -微博广告 = requires-body=1,script-path=https://raw.githubusercontent.com/yichahucha/surge/master/wb_launch.js,type=http-response,pattern=^https?://(sdk|wb)app\.uve\.weibo\.com(/interface/sdk/sdkad.php|/wbapplua/wbpullad.lua) -微博广告 = type=http-response,requires-body=1,max-size=-1,pattern=^https?://m?api\.weibo\.c(n|om)/2/(statuses/(unread|extend|positives/get|(friends|video)(/|_)(mix)?timeline)|stories/(video_stream|home_list)|(groups|fangle)/timeline|profile/statuses|comments/build_comments|photo/recommend_list|service/picfeed|searchall|cardlist|page|!/photos/pic_recommend_status|video/tiny_stream_video_list),script-path=https://raw.githubusercontent.com/yichahucha/surge/master/wb_ad.js -# > 微信公众号 去广告 -微信广告 = script-path=https://Choler.github.io/Surge/Script/WeChat.js,type=http-request,pattern=^https://mp\.weixin\.qq\.com/mp/getappmsgad -openad$ -# > YouTube 去广告 -油管广告 = script-path=https://Choler.github.io/Surge/Script/YouTube.js,type=http-request,pattern=^https://[\s\S]*\.googlevideo\.com/.*&(oad|ctier) -# > 人人视频 去广告 -人人广告 = type=http-response,requires-body=true,pattern=^https?:\/\/api\.rr\.tv\/watch\/v\d\/get_movie_info,script-path=https://Choler.github.io/Surge/Script/rrsp.js -人人广告 = type=http-response,requires-body=true,pattern=^https?:\/\/api\.rr\.tv\/v\dplus\/index\/channel$,script-path=https://Choler.github.io/Surge/Script/rrsp.js -# > 小小影视TF 去广告 -小小广告 = type=http-response,pattern=https:\/\/.*\/getGlobalData,requires-body=1,max-size=0,script-path=https://raw.githubusercontent.com/Alex0510/Eric/master/surge/Script/xxysad.js,script-update-interval=0 -# > 哔哩哔哩 去广告 -哔哩广告 = type=http-response,requires-body=1,max-size=0,pattern=https://app.bilibili.com/x/resource/show/tab\?access_key,script-path=https://raw.githubusercontent.com/onewayticket255/Surge-Script/master/surge%20bilibili%20tab.js -# > 香蕉视频 vip -香蕉破解 = requires-body=1,script-path=https://raw.githubusercontent.com/NobyDa/Script/master/QuantumultX/File/xjsp.js,type=http-response,pattern=^https?:\/\/.*\.(lago|fuli|xiang(jiao|xiang))apps\.com\/(ucp\/index|getGlobalData|.+\/reqplay\/) -# > 金山WPS vip -WPS破解 = requires-body=1,script-path=https://raw.githubusercontent.com/NobyDa/Script/master/Surge/JS/Wps.js,type=http-response,pattern=^https://account.wps.*/api/users/ -# > 大千视界 pro -大千破解 = requires-body=1,script-path=https://raw.githubusercontent.com/NobyDa/Script/master/Surge/JS/dqsj.js,type=http-response,pattern=^https:\/\/api\.mvmtv\.com\/index\.php.*(c=user.*a=info|a=addr.*vid=.*) -# > 扫描全能王 pro -扫描破解 = requires-body=1,script-path=https://raw.githubusercontent.com/NobyDa/Script/master/Surge/JS/CamScanner.js,type=http-response,pattern=^https:\/\/(api|api-cs)\.intsig\.net\/purchase\/cs\/query_property\? -# > Gyroscope运动 pro -// 运动破解 = requires-body=1,script-path=https://raw.githubusercontent.com/NobyDa/Script/master/Surge/JS/gyroscope.js,type=http-response,pattern=^https:\/\/api\.gyrosco\.pe\/v1\/account\/$ -# > Bear熊掌记 vip -// Bear破解 = requires-body=1,max-size=0,script-path=https://raw.githubusercontent.com/nzw9314/QuantumultX/master/Script/bear.js,type=http-response,pattern=^https:\/\/buy\.itunes\.apple\.com\/verifyReceipt -# > Day one日记 vip(成功后禁用第一条) -// 日记破解 = debug=1,script-path=https://raw.githubusercontent.com/nzw9314/QuantumultX/master/Script/dayone-pre.js,type=http-request,pattern=^https:\/\/dayone\.me\/api\/users$ -日记破解 = requires-body=1,max-size=0,script-path=https://raw.githubusercontent.com/langkhach270389/Scripting/master/dayone.surge.js,script-update-interval=0,type=http-response,pattern=^https:\/\/dayone\.me\/api\/(users|v2\/users\/(account-status|receipt)) -#> WorkingCopy库 pro -Copy破解 = requires-body=1,max-size=0,script-path=https://raw.githubusercontent.com/langkhach270389/Scripting/master/workingcopy.js,script-update-interval=0,type=http-response,pattern=^https:\/\/education\.github\.com\/api\/user$ -# > PDF Expert办公 pro -PDF 破解 = requires-body=1,max-size=0,script-path=https://raw.githubusercontent.com/langkhach270389/Scripting/master/Pdfexpert.vip.js,script-update-interval=0,type=http-response,pattern=^https:\/\/license\.pdfexpert\.com\/api\/.+\/subscription\/(refresh$|check$) -# > Fantastical日历 vip -日历破解 = requires-body=1,max-size=0,script-path=https://raw.githubusercontent.com/nzw9314/QuantumultX/master/Script/fantastical.js,type=http-response,pattern=^https:\/\/api\.flexibits\.com\/v1\/(auth|account)\/(device|details|appstore-receipt)\/$ -# > 闪电下载 vip -闪电下载 = requires-body=1,max-size=0,script-path=https://raw.githubusercontent.com/nzw9314/QuantumultX/master/Script/sdxz.js,type=http-response,pattern=^http\:\/\/app\.flashdown365\.com\/ios\/login -# > 彩云天气 vip -//彩云天气 = type=http-response,pattern=https://biz.caiyunapp.com/v2/user\?app_name=weather,requires-body=1,max-size=0,script-path=https://raw.githubusercontent.com/nzw9314/Surge/master/Script/caiyun.js -彩云天气 = type=http-response,pattern=https://biz.caiyunapp.com/v2/user\?app_name=weather,requires-body=1,max-size=0,script-path=https://raw.githubusercontent.com/LeeeMooo/ScriptOwn/master/myQx/js/caiyun.js -# > Pear 雪梨(本地) -雪梨破解 = requires-body=1,max-size=0,script-path=Script/pear.js,type=http-response,pattern=^https:\/\/(www\.baidu.com2\.club|ayk\.tmdidi\.com|m\.pearkin\.com|souhu\.mett\.me|bkcd\.b-cdn\.net)\/(api\/movie\/WatchMovie|api\/Account\/CheckVip|api\/account\/IndexDetail) -# > apple下载加速 -// dns 商店加速 script-path=https://raw.githubusercontent.com/langkhach270389/Scripting/master/Surge/dnspod.js,use-local-host-item-for-proxy = true,script-update-interval=0 -# > 脚本转换(圈X、LOON、surge脚本自动转换) -//脚本转换 = type=http-response,pattern=^https?:\/\/(raw|gist)\.githubusercontent.com/.*\.js$,requires-body=1,max-size=0,script-path=https://raw.githubusercontent.com/Peng-YM/ScriptConverter/master/js-converter.js,script-update-interval=0 -# > 多账号切换获取Cookie 访问https://8.8.8.8/home -切换会话 = type=http-request,pattern=^https://8.8.8.8/api,script-path=https://raw.githubusercontent.com/chavyleung/scripts/master/chavy.box.js,requires-body=true,max-size=0,script-update-interval=0 -切换会话 = type=http-response,pattern=^https://8.8.8.8/(home|sub|my|app|log\/),script-path=https://raw.githubusercontent.com/chavyleung/scripts/master/chavy.box.js,requires-body=true,max-size=0,script-update-interval=0 -# > 有道云笔记 vip -// 有道破解 = requires-body=1,max-size=0,script-path=https://raw.githubusercontent.com/Alex0510/Eric/master/surge/Script/ydybj.js,type=http-response,pattern=https://note.youdao.com/yws/(mapi/payment|api/self) -# > 网易蜗牛读书 vip -// 蜗牛读书 = requires-body=1,script-path=https://raw.githubusercontent.com/NobyDa/Script/master/QuantumultX/File/wnyd.js,type=http-response,pattern=^https?:\/\/p\.du\.163\.com\/gain\/readtime\/info\.json -# > 彩云天气定位 -天气定位 = require-body=false,script-path=https://raw.githubusercontent.com/Peng-YM/QuanX/master/Tasks/caiyun.js,type=http-request, pattern=https://weather-data.apple.com - -[MITM] -hostname = %INSERT% mp.weixin.qq.com, *.googlevideo.com, api.m.jd.com, trade-acs.m.taobao.com, education.github.com, api.rr.tv, account.wps.cn, ap*.intsig.net, dayone.me, license.pdfexpert.com, app.flashdown365.com, api.flexibits.com, api.gyrosco.pe, ios.prod.ftl.netflix.com, biz.caiyunapp.com, *.musical.ly, *.tiktokv.com, *.byteoversea.com, *.snssdk.com, api.weibo.cn, mapi.weibo.com, *.uve.weibo.com, *.xiaoxiaoimg.com,*.xiaoxiaoapps.com,*.xiaoxiaoappxs.co, ios.fuliapps.com, apple.fuliapps.com, ios.xiangjiaoapps.com, apple.xiangjiaoapps.com, *.xiangxiangapps.com, *.lagoapps.com, bkcd.b-cdn.net, souhu.mett.me, ayk.tmdidi.com, m.pearkin.com, www.baidu.com2.club, api.meiyan.com, raw.githubusercontent.com, gist.githubusercontent.com, 8.8.8.8, note.youdao.com, p.du.163.com, app.bilibili.com, weather-data.apple.com \ No newline at end of file From 5d3ff80d40df97da826a46908d7bcd7aa57111ad Mon Sep 17 00:00:00 2001 From: MuTu <59136159+githubdulong@users.noreply.github.com> Date: Sat, 11 Jul 2020 16:59:56 +0800 Subject: [PATCH 08/19] Delete Q-Search_All_in_one.sgmodule --- Surge/Q-Search_All_in_one.sgmodule | 125 ----------------------------- 1 file changed, 125 deletions(-) delete mode 100644 Surge/Q-Search_All_in_one.sgmodule diff --git a/Surge/Q-Search_All_in_one.sgmodule b/Surge/Q-Search_All_in_one.sgmodule deleted file mode 100644 index dcd295b3..00000000 --- a/Surge/Q-Search_All_in_one.sgmodule +++ /dev/null @@ -1,125 +0,0 @@ -#!name=𝙌-𝙎𝙚𝙖𝙧𝙘𝙝-𝘼𝙡𝙡 𝙞𝙣 𝙤𝙣𝙚 -#!desc=Safari搜索 • 命令+空格+关键词指定引擎快速搜索(Safari 搜索改为DuckDuckGO)集成主机名; -#!system=ios - -# gh: GitHub搜索 -# gm: Google图片搜索 -# sof: Stack Overflow -# se: StackExchange -# wiki: 维基百科 -# wk: 维基中文 -# mg: Magi -# tf: Google 搜索 TestFlight - -# yd:有道词典搜索 -# trc: Google 译至中 -# tre: Google 译至英 -# trj: Google 译至日 - -# db:豆瓣搜索 -# zh: 知乎 -# wb: 微博 -# wx: 微信 -# rd: Reddit -# ssp: 少数派 -# csdn: CSDN - -# zdm: 什么值得买 -# amz: 亚马逊 -# jd: 京东 -# tb: 淘宝 -# tm: 天猫 - -# ac: Acfun -# bli: 哔哩哔哩 -# ytb: YouTube -# ph: PornHub -# gd: Google Drive资源 -# tgd: TG搜索Google Drive资源 - -# bi: 必应 -# bd:百度搜索 -# ddg:DuckDuckGo 搜索 -# 无指令则转 Google 搜索 - -[URL Rewrite] -#gm (Google图片) -^https:\/\/duckduckgo.com\/\?q=gm\+([^&]+).+ https://www.google.com/search?&tbm=isch&q=$1 302 -# gh (GitHub) -^https:\/\/duckduckgo.com\/\?q=gh\+([^&]+).+ https://github.com/search?q=$1 302 -# sof (Stack Overflow) -^https:\/\/duckduckgo.com\/\?q=sof\+([^&]+).+ https://stackoverflow.com/search?q=$1 302 -# se (StackExchange) -^https:\/\/duckduckgo.com\/\?q=se\+([^&]+).+ https://stackexchange.com/search?q=$1 302 -# wa (WolframAlpha) -^https:\/\/duckduckgo.com\/\?q=wa\+([^&]+).+ https://www.wolframalpha.com/input/?i=$1 302 -# wiki (维基百科) -^https:\/\/duckduckgo.com\/\?q=wiki(\+|%20)([^&]+).+ http://wikipedia.org/wiki/$2 302 -# wk (维基中文) -^https:\/\/duckduckgo.com\/\?q=wk(\+|%20)([^&]+).+ https://zh.wikipedia.org/wiki/$2 302 -# mg (Magi) -^https:\/\/duckduckgo.com\/\?q=mg(\+|%20)([^&]+).+ https://magi.com/search?q=$2 302 -# tf (Google 搜索 TestFlight) -^https:\/\/duckduckgo.com\/\?q=tf(\+|%20)([^&]+).+ https://www.google.com/search?as_q=$2&as_sitesearch=testflight.apple.com 302 -# > 翻译 -# yd (有道) -^https:\/\/duckduckgo.com\/\?q=yd\+([^&]+).+ http://dict.youdao.com/search?q=$1 302 -# trc (Google 译至中) -^https:\/\/duckduckgo.com\/\?q=trc\+([^&]+).+ https://translate.google.com/#view=home&op=translate&sl=auto&tl=zh-CN&text=$1 302 -# tre (Google 译至英) -^https:\/\/duckduckgo.com\/\?q=tre\+([^&]+).+ https://translate.google.com/#view=home&op=translate&sl=auto&tl=en&text=$1 302 -# trj (Google 译至日) -^https:\/\/duckduckgo.com\/\?q=trj\+([^&]+).+ https://translate.google.com/#view=home&op=translate&sl=auto&tl=ja&text=$1 302 -# 社区 -# db:豆瓣 -^https:\/\/duckduckgo.com\/\?q=db\+([^&]+).+ https://m.douban.com/search/?query=$1 302 -# zh: 知乎 -^https:\/\/duckduckgo.com\/\?q=zh\+([^&]+).+ https://www.zhihu.com/search?type=content&q=$1 302 -# wb: 微博 -^https:\/\/duckduckgo.com\/\?q=wb\+([^&]+).+ https://s.weibo.com/weibo/$1 302 -# wx: 微信 -^https:\/\/duckduckgo.com\/\?q=wx\+([^&]+).+ https://weixin.sogou.com/weixinwap?query=$1 302 -# rd (Reddit) -^https:\/\/duckduckgo.com\/\?q=rd\+([^&]+).+ https://www.reddit.com/search?q=$1 302 -# tw (Twitter) -^https:\/\/duckduckgo.com\/\?q=tw\+([^&]+).+ https://twitter.com/search?q=$1 302 -# ssp: 少数派 -^https:\/\/duckduckgo.com\/\?q=ssp\+([^&]+).+ https://sspai.com/search/post/$1 302 -# csdn: CSDN -^https:\/\/duckduckgo.com\/\?q=csdn\+([^&]+).+ https://so.csdn.net/so/search/s.do?q=$1&t=&u= 302 -# > 购物 -# zdm: 什么值得买 -^https:\/\/duckduckgo.com\/\?q=zdm\+([^&]+).+ https://search.m.smzdm.com/?v=b&s=$1 302 -# amz: 亚马逊 -^https:\/\/duckduckgo.com\/\?q=amz\+([^&]+).+ https://www.amazon.cn/gp/aw/s/?k=$1 302 -# jd : 京东 -^https:\/\/duckduckgo.com\/\?q=jd\+([^&]+).+ https://so.m.jd.com/ware/search.action?keyword=$1 302 -# tb: 淘宝 -^https:\/\/duckduckgo.com\/\?q=tb\+([^&]+).+ https://s.m.taobao.com/h5?q=$1 302 -# tm: 天猫 -^https:\/\/duckduckgo.com\/\?q=tm\+([^&]+).+ https://s.m.tmall.com/m/search.htm?q=$1 302 -# 视频资源 -# ac (Acfun) -^https:\/\/duckduckgo.com\/\?q=ac\+([^&]+).+ https://www.acfun.cn/search?keyword==$1 302 -# bli (哔哩哔哩) -^https:\/\/duckduckgo.com\/\?q=bli\+([^&]+).+ https://m.bilibili.com/search?keyword=$1 302 -# ytb (YouTube) -^https:\/\/duckduckgo.com\/\?q=ytb\+([^&]+).+ https://www.youtube.com/results?search_query=$1 302 -# ph (PornHub) -^https:\/\/duckduckgo.com\/\?q=ph\+([^&]+).+ https://cn.pornhub.com/video/search?search=$1 302 -# gd (Google Drive) -^https:\/\/duckduckgo.com\/\?q=gd\+([^&]+).+ https://www.google.com/search?q=%22Google+Drive%22+$1 302 -# tgd (t.me/gdurl 搜索 Google Drive 资源) -^https:\/\/duckduckgo.com\/\?q=tgd\+([^&]+).+ https://t.me/s/gdurl?q=$1 302 -# 默认搜索 -# bi: 必应 -^https:\/\/duckduckgo.com\/\?q=bi\+([^&]+).+ https://cn.bing.com/search?q=$1 302 -# bd: 百度 -^https:\/\/duckduckgo.com\/\?q=bd\+([^&]+).+ https://www.baidu.com/s?wd=$1 302 -# ddg: DuckDuckGo -^https:\/\/duckduckgo.com\/\?q=ddg\+([^&]+).+ https://duckduckgo.com/?ia=about&q=$1 302 -# 无指令: 谷歌 -^https:\/\/duckduckgo.com\/\?q=([^&]+).+ https://www.google.com/search?q=$1 302 - -[MITM] -hostname = %APPEND% duckduckgo.com From 3cbc77c7953f7d2d77fd459c124f1809838a1b0e Mon Sep 17 00:00:00 2001 From: MuTu <59136159+githubdulong@users.noreply.github.com> Date: Sat, 11 Jul 2020 17:00:04 +0800 Subject: [PATCH 09/19] Delete Cookie.sgmodule --- Surge/Cookie.sgmodule | 71 ------------------------------------------- 1 file changed, 71 deletions(-) delete mode 100644 Surge/Cookie.sgmodule diff --git a/Surge/Cookie.sgmodule b/Surge/Cookie.sgmodule deleted file mode 100644 index e6d153ca..00000000 --- a/Surge/Cookie.sgmodule +++ /dev/null @@ -1,71 +0,0 @@ -#!name=𝘾𝙤𝙤𝙠𝙞𝙚 -#!desc=Cookie获取 • 签到脚本Cookie获取、集成主机名、获取后取消勾选; -#!system=ios - -[Script] -# > 京东商城 登录 https://bean.m.jd.com -京东商城 = max-size=0,script-path=https://raw.githubusercontent.com/NobyDa/Script/master/JD-DailyBonus/JD_DailyBonus.js,type=http-request,pattern=https:\/\/api\.m\.jd\.com\/client\.action.*functionId=signBean(Index|GroupStageIndex) -# > 网易云音乐 -#登录1 https://music.163.com/m/login -#登陆2 https://music.163.com/#/user/level -网易音乐 = type=http-request,pattern=^https:\/\/music.163.com\/weapi\/user\/level,requires-body=1,max-size=0,script-path=https://raw.githubusercontent.com/chavyleung/scripts/master/neteasemusic/neteasemusic.cookie.js,script-update-interval=0 -# > 人人字幕组 app与网页http://www.rrys2020.com -人人字幕 = script-path=https://raw.githubusercontent.com/chavyleung/scripts/master/zimuzu/zimuzu.cookie.js,type=http-request,pattern=^https?:\/\/(www\.)?rrys2020\.com\/?.? -人人字幕 = script-path=https://raw.githubusercontent.com/chavyleung/scripts/master/zimuzu/zimuzu.cookie.js,type=http-request,pattern=^http:\/\/ios.zmzapi.com\/index.php.*a=(mobile_)?login -# > 喜马拉雅 app获取 -喜马拉雅 = script-path=https://raw.githubusercontent.com/chavyleung/scripts/master/ximalaya/ximalaya.cookie.js,type=http-request,pattern=^https?:\/\/.*\/mobile\-user\/homePage\/.* -# > 人人视频 app获取 -人人视频 = script-path=https://raw.githubusercontent.com/chavyleung/scripts/master/rrtv/rrtv.cookie.js,type=http-request,pattern=^https:\/\/api\.rr\.tv\/user\/profile -# > 饿了么 app获取 -饿了获取 = script-path=https://raw.githubusercontent.com/songyangzz/QuantumultX/master/elem/elemGetCookies.js,type=http-request,pattern=^https:\/\/h5\.ele\.me\/restapi\/eus\/v\d\/current_user$ -# > 中国电信套餐余量 天翼账号中心app获取 -电信余量 = script-path=https://raw.githubusercontent.com/Sunert/Scripts/master/Task/telecomInfinity.js,type=http-request,pattern=https?:\/\/e\.189\.cn\/store\/user\/package_detail\.do -# > 美团 app获取 -美团获取 = script-path=https://raw.githubusercontent.com/chavyleung/scripts/master/meituan/meituan.cookie.js,requires-body=true,type=http-request,pattern=^https:\/\/i.meituan.com\/evolve\/signin\/signpost\/ -# > 京东到家 京东app-京东到家栏目获取 -京东到家 = script-path=https://raw.githubusercontent.com/Sunert/Scripts/master/Task/jddj.js,type=http-request,pattern=https:\/\/daojia\.jd\.com\/client\?_jdrandom=\d{13}&functionId=%2Fsignin -# > 新浪微博 app获取 -新浪微博 = script-path=https://raw.githubusercontent.com/Sunert/Scripts/master/Task/weibo.js,type=http-request,pattern=https:\/\/api\.weibo\.cn\/\d\/video\/machine\?gsid -微博钱包 = script-path=https://raw.githubusercontent.com/Sunert/Scripts/master/Task/weibo.js,type=http-request,pattern=http-request,pattern=https:\/\/pay\.sc\.weibo\.com\/aj\/mobile\/home\/welfare\/signin\/do\? -# > 顺丰速运 app获取 -顺丰速运 = script-path=https://raw.githubusercontent.com/chavyleung/scripts/master/sfexpress/sfexpress.cookie.js,type=http-request,pattern=^https:\/\/sf-integral-sign-in.weixinjia.net\/app\/index -顺丰速运 = script-path=https://raw.githubusercontent.com/chavyleung/scripts/master/sfexpress/sfexpress.cookie.js,type=http-request,pattern=^https:\/\/mcs-mimp-web.sf-express.com\/mcs-mimp\/share\/(.*?)Redirect -# > 苏宁易购 app获取 -苏宁易购 = script-path=https://raw.githubusercontent.com/chavyleung/scripts/master/suning/suning.cookie.js,requires-body=true,type=http-request,pattern=^https:\/\/passport.suning.com\/ids\/login$ -苏宁易购 = script-path=https://raw.githubusercontent.com/chavyleung/scripts/master/suning/suning.cookie.js,type=http-request,pattern=^https:\/\/luckman.suning.com\/luck-web\/sign\/api\/clock_sign.do -苏宁易购 = script-path=https://raw.githubusercontent.com/chavyleung/scripts/master/suning/suning.cookie.js,type=http-request,pattern=^https:\/\/sign.suning.com\/sign-web\/m\/promotion\/sign\/doSign.do -苏宁易购 = script-path=https://raw.githubusercontent.com/chavyleung/scripts/master/suning/suning.cookie.js,type=http-request,pattern=^https:\/\/gameapi.suning.com\/sngame-web\/(api\/signin\/private\/customerSignOperation.do|gateway\/api\/queryPrize.do) -# > 金山WPS app、微信“我的WPS会员”小程序获取 -金山WPS = type=http-request,pattern=^https:\/\/zt.wps.cn\/2018\/docer_check_in\/api\/act_list,script-path=https://raw.githubusercontent.com/chavyleung/scripts/master/wps/wps.cookie.js,script-update-interval=0 -金山WPS = type=http-request,pattern=^https:\/\/zt.wps.cn\/2018\/clock_in\/api\/clock_in,script-path=https://raw.githubusercontent.com/chavyleung/scripts/master/wps/wps.cookie.js,script-update-interval=0 -# > Dler Cloud墙洞机场统计版 登陆https://dleris.best/ -墙洞机场 = type=http-request,pattern=^https:\/\/dleris\.best\/user,script-path=https://raw.githubusercontent.com/githubdulong/Script/master/dlercloud.js,script-update-interval=0 -# > 吾爱破解 登陆https://www.52pojie.cn -吾爱破解 = type=http-request,pattern=https:\/\/www\.52pojie\.cn\/home\.php\?,script-path=https://raw.githubusercontent.com/NobyDa/Script/master/52pojie-DailyBonus/52pojie.js -# > 网易新闻 app获取 -网易新闻 = type=http-request,pattern=^https:\/\/(.*?)c\.m\.163\.com\/uc\/api\/sign\/v3\/commit,requires-body=1,max-size=0,script-path=https://raw.githubusercontent.com/chavyleung/scripts/master/neteasenews/neteasenews.cookie.js,script-update-interval=0 -# > 去哪儿 app获取 -去哪获取 = script-path=https://raw.githubusercontent.com/chavyleung/scripts/master/qunar/qunar.cookie.js,type=http-request,pattern=^https:\/\/user.qunar.com\/webapi\/member\/signIndexV2.htm -# > 滴滴出行 app获取 -滴滴出行 = type=http-request,pattern=^https:\/\/as\.xiaojukeji\.com\/ep\/as\/toggles\?,script-path=https://raw.githubusercontent.com/zZPiglet/Task/master/DiDi/DiDi.js,script-update-interval=0 -# > 百度贴吧 登陆https://tieba.baidu.com -百度贴吧 = type=http-request,pattern=^https?:\/\/tieba\.baidu\.com\/?.?,script-path=https://raw.githubusercontent.com/chavyleung/scripts/master/tieba/tieba.cookie.js,script-update-interval=0 -# > 哔哩哔哩 登录: https://www.bilibili.com -哔哩哔哩 = type=http-request,pattern=^https:\/\/(www|live)\.bilibili\.com\/?.?,script-path=https://raw.githubusercontent.com/chavyleung/scripts/master/bilibili/bilibili.cookie.js,script-update-interval=0 -# > 115云盘 app获取 -1 1 5 云盘 = type=http-request,pattern=^https?:\/\/proapi\.115\.com\/ios\/user\/takespc\?,script-path=https://raw.githubusercontent.com/zZPiglet/Task/master/115/115.js,script-update-interval=0 -# > 中国移动 余量 app获取 -移动余量 = type=http-request,pattern=^https:\/\/clientaccess.10086.cn\/biz-orange\/LN\/uamrandcodelogin\/autoLogin,script-path=https://raw.githubusercontent.com/chavyleung/scripts/master/10086/10086.fee.cookie.js,requires-body=true,debug=true -移动余量 = type=http-request,pattern=^https:\/\/clientaccess.10086.cn\/biz-orange\/BN\/realFeeQuery\/getRealFee,script-path=https://raw.githubusercontent.com/chavyleung/scripts/master/10086/10086.fee.cookie.js,requires-body=true,debug=true -# > 中国移动 签到 app获取 -中国移动 = type=http-request,pattern=^http:\/\/wx.10086.cn\/website\/taskCenter\/index\?,script-path=https://raw.githubusercontent.com/chavyleung/scripts/master/10086/10086.cookie.js,script-update-interval=0 -中国移动 = type=http-request,pattern=^http:\/\/wx.10086.cn\/website\/taskCenter\/sign\?,script-path=https://raw.githubusercontent.com/chavyleung/scripts/master/10086/10086.cookie.js,script-update-interval=0 -# > 万达电影 app获取 -万达电影 = type=http-request,pattern=^https:\/\/user-api-prd-mx\.wandafilm\.com,script-path=https://raw.githubusercontent.com/chavyleung/scripts/master/wanda/wanda.cookie.js,debug=true -# > 可林商城 小程序获取 -可林商城 = type=http-request,pattern=^https:\/\/mall\.oclean\.com\/API\/VshopProcess\.ashx\?action=TaskHome&clientType=5&client=5&openId=,script-path=https://raw.githubusercontent.com/zZPiglet/Task/master/Oclean/Oclean_mini.js,script-update-interval=0 - --------- 分 - 割 - 线 -------- = type=http-request,pattern=分割线,script-path=Script/分割线.js - -[MITM] -hostname = %INSERT% api.m.jd.com, music.163.com, *.rrys2020.com, ios.zmzapi.com, mobwsa.ximalaya.com, *.rr.tv, h5.ele.me, e.189.cn, i.meituan.com, daojia.jd.com, api.weibo.cn, pay.sc.weibo.com, sf-integral-sign-in.weixinjia.net, mcs-mimp-web.sf-express.com, passport.suning.com, luckman.suning.com, sign.suning.com, gameapi.suning.com, draw.jdfcloud.com, zt.wps.cn, dleris.best, www.52pojie.cn, *.m.163.com, user.qunar.com, as.xiaojukeji.com, tieba.baidu.com, *.bilibili.com, proapi.115.com, clientaccess.10086.cn, user-api-prd-mx.wandafilm.com, mall.oclean.com From ad95fa268eb99a67875151ccbed4b96143790aa9 Mon Sep 17 00:00:00 2001 From: MuTu <59136159+githubdulong@users.noreply.github.com> Date: Sat, 11 Jul 2020 17:00:17 +0800 Subject: [PATCH 10/19] Delete QuantumultX.conf --- QuantumultX/QuantumultX.conf | 285 ----------------------------------- 1 file changed, 285 deletions(-) delete mode 100644 QuantumultX/QuantumultX.conf diff --git a/QuantumultX/QuantumultX.conf b/QuantumultX/QuantumultX.conf deleted file mode 100644 index 7b458258..00000000 --- a/QuantumultX/QuantumultX.conf +++ /dev/null @@ -1,285 +0,0 @@ - -# >【🐲 MuTu木土】QuantumultX配置 -# > 以 “;” 或 “#” 或 “//“ 开头的行为注释行 -[general] -excluded_routes=192.168.0.0/16, 172.16.0.0/12, 100.64.0.0/10, 10.0.0.0/8, 127.0.0.0/8, 224.0.0.0/24 -geo_location_checker=http://ip-api.com/json/?lang=zh-CN, https://raw.githubusercontent.com/KOP-XIAO/QuantumultX/master/Scripts/IP_API.js -resource_parser_url=https://raw.githubusercontent.com/KOP-XIAO/QuantumultX/master/Scripts/resource-parser.js -network_check_url=http://www.baidu.com/ -server_check_url=http://www.gstatic.com/generate_204 -profile_img_url=MuTu.PNG - -# 分割线—————————————————————————— - -[dns] -server=119.29.29.29 -server=223.5.5.5 -server=114.114.114.114 -server=1.0.0.1 -server=8.8.8.8 -server=/*.taobao.com/223.5.5.5 -server=/*.tmall.com/223.5.5.5 -server=/*.alipay.com/223.5.5.5 -server=/*.alicdn.com/223.5.5.5 -server=/*.aliyun.com/223.5.5.5 -server=/*.jd.com/119.28.28.28 -server=/*.qq.com/119.28.28.28 -server=/*.tencent.com/119.28.28.28 -server=/*.weixin.com/119.28.28.28 -server=/*.bilibili.com/119.29.29.29 -server=/hdslb.com/119.29.29.29 -server=/*.163.com/119.29.29.29 -server=/*.126.com/119.29.29.29 -server=/*.126.net/119.29.29.29 -server=/*.127.net/119.29.29.29 -server=/*.netease.com/119.29.29.29 -server=/*.mi.com/119.29.29.29 -server=/*.xiaomi.com/119.29.29.29 - -# 分割线—————————————————————————— - -[policy] -# > 策略组 -# 运营劫持 -static=运营劫持, proxy, direct, reject, img-url=https://raw.githubusercontent.com/Koolson/Qure/master/IconSet/Hijacking.png -# 广告拦截 -static=广告拦截, proxy, direct, reject, img-url=https://raw.githubusercontent.com/Koolson/Qure/master/IconSet/Advertising.png -# SSID策略 -ssid=SSID策略, proxy, proxy, 一般路由器(WiFi): proxy, 翻墙路由器(WiFi): direct, img-url=https://raw.githubusercontent.com/Koolson/Qure/master/IconSet/SSID.png -# Final漏网规则 -static=漏网规则, proxy, direct, 线路检测, 负载均衡, Hong Kong, Taiwan, Singapore, Japan, Korea, United Kingdom, United States, Other, img-url=https://raw.githubusercontent.com/Koolson/Qure/master/IconSet/Available.png -# 国外网站 -static=国外网站, proxy, direct, 线路检测, 负载均衡, Hong Kong, Taiwan, Singapore, Japan, Korea, United Kingdom, United States, Other, img-url=https://raw.githubusercontent.com/Koolson/Qure/master/IconSet/Global.png -# 国外影视 -static=国外影视, proxy, direct, 线路检测, 负载均衡, Hong Kong, Taiwan, Singapore, Japan, Korea, United Kingdom, United States, Other, img-url=https://raw.githubusercontent.com/Koolson/Qure/master/IconSet/ForeignMedia.png -# YouTube -static=YouTube, proxy, direct, 线路检测, 负载均衡, Hong Kong, Taiwan, Singapore, Japan, Korea, United Kingdom, United States, Other, img-url=https://raw.githubusercontent.com/Koolson/Qure/master/IconSet/YouTube.png -# Netflix -static=Netflix, proxy, direct, 线路检测, 负载均衡, Hong Kong, Taiwan, Singapore, Japan, Korea, United Kingdom, United States, Other, img-url=https://raw.githubusercontent.com/Koolson/Qure/master/IconSet/Netflix.png -# Pornhub -static=Pornhub, proxy, direct, 线路检测, 负载均衡, Hong Kong, Taiwan, Singapore, Japan, Korea, United Kingdom, United States, Other, img-url=https://raw.githubusercontent.com/Koolson/Qure/master/IconSet/Pornhub.png -# 动画疯 -static=动画疯, proxy, direct, 线路检测, 负载均衡, Hong Kong, Taiwan, Singapore, Japan, Korea, United Kingdom, United States, Other, img-url=https://raw.githubusercontent.com/Koolson/Qure/master/IconSet/Bahamut.png -# Telegram -static=Telegram, proxy, direct, 线路检测, 负载均衡, Hong Kong, Taiwan, Singapore, Japan, Korea, United Kingdom, United States, Other, img-url=https://raw.githubusercontent.com/Koolson/Qure/master/IconSet/Telegram_X.png -# TikTok -static=TikTok, proxy, direct, 线路检测, 负载均衡, Hong Kong, Taiwan, Singapore, Japan, Korea, United Kingdom, United States, Other, img-url=https://raw.githubusercontent.com/Koolson/Qure/master/IconSet/TikTok.png -# Apple -static=Apple, proxy, direct, 线路检测, img-url=https://raw.githubusercontent.com/Koolson/Qure/master/IconSet/Apple.png -# Google -static=Google, proxy, direct, 线路检测, img-url=https://raw.githubusercontent.com/Koolson/Qure/master/IconSet/Google.png -# Speedtest -static=Speedtest, proxy, direct, 线路检测, img-url=https://raw.githubusercontent.com/Koolson/Qure/master/IconSet/Speedtest.png -# 网易云解锁 -static=网易音乐, direct, proxy, reject, img-url=https://raw.githubusercontent.com/Koolson/Qure/master/IconSet/Netease_Music_Unlock.png -# 负载均衡 -round-robin=负载均衡, 🇭🇰 香港标准 IPLC 03, 🇭🇰 香港标准 IPLC 02, 🇭🇰 香港标准 IPLC 04, 🇭🇰 香港标准 IPLC 05, 🇭🇰 香港标准 IPLC 06, 🇭🇰 香港标准 IPLC 07, 🇭🇰 香港标准 IPLC 11, img-url=https://raw.githubusercontent.com/Koolson/Qure/master/IconSet/SoftBank.png -# 线路检测 -available=线路检测, 🇭🇰 香港标准 IPLC 03, 🇭🇰 香港标准 IPLC 02, 🇭🇰 香港标准 IPLC 04, 🇭🇰 香港标准 IPLC 05, 🇭🇰 香港标准 IPLC 06, 🇭🇰 香港标准 IPLC 07, 🇭🇰 香港标准 IPLC 11, 🇸🇬 新加坡标准 IPLC 01, 🇸🇬 新加坡标准 IPLC 02, 🇯🇵 日本标准 IPLC, 🇺🇸 美国标准 IPLC, 🇭🇰 香港标准 IPLC 01, 🇭🇰 香港标准 IPLC 08, 🇭🇰 香港标准 IPLC 10, 🇭🇰 香港标准 IPLC 09, img-url=https://raw.githubusercontent.com/Koolson/Qure/master/IconSet/Auto.png -# 屏蔽更新 -static=屏蔽更新, direct, reject, img-url=https://raw.githubusercontent.com/Koolson/Qure/master/IconSet/Apple_Update.png -# CN(回国服务) -static=回国服务, direct, reject, img-url=https://raw.githubusercontent.com/Koolson/Qure/master/IconSet/China_Map.png - -# 分割线—————————————————————————— - -[server_remote] -# > 墙洞机场线路 - -# 分割线—————————————————————————— - -[filter_remote] -# > 分流订阅 -# 广告拦截(神机) -https://raw.githubusercontent.com/DivineEngine/Profiles/master/Quantumult/Filter/Guard/Advertising.list, tag=广告拦截, force-policy=广告拦截, update-interval=86400, opt-parser=false, enabled=true -# 广告拦截(野比) -https://raw.githubusercontent.com/NobyDa/Script/master/QuantumultX/AdRule.list, tag=广告拦截, force-policy=广告拦截, enabled=true -https://raw.githubusercontent.com/NobyDa/ND-AD/master/QuantumultX/AD_Block_Plus.txt, tag=广告拦截, force-policy=广告拦截, update-interval=86400, opt-parser=false, enabled=false -# Google -https://raw.githubusercontent.com/ConnersHua/Profiles/master/Quantumult/X/Filter/Google.list, tag=Google, force-policy=Google, enabled=true -# 运营劫持 -https://raw.githubusercontent.com/DivineEngine/Profiles/master/Quantumult/Filter/Guard/Hijacking.list, tag=运营劫持, force-policy=运营劫持, update-interval=86400, opt-parser=false, enabled=true -# TikTok -https://raw.githubusercontent.com/ConnersHua/Profiles/master/Quantumult/X/Filter/Media/TikTok.list, tag=TikTok, force-policy=TikTok, enabled=true -# CN(回国服务) -https://raw.githubusercontent.com/DivineEngine/Profiles/master/Quantumult/Filter/China.list, tag=CN(回国服务), force-policy=回国服务, update-interval=86400, opt-parser=false, enabled=true -# Telegram -https://raw.githubusercontent.com/eHpo1/Rules/master/QuantumultX/Filter/Sub/Telegram.txt, tag=Telegram, force-policy=Telegram, enabled=true -# YouTube -https://raw.githubusercontent.com/eHpo1/Rules/master/QuantumultX/Filter/Sub/YouTube.txt, tag=YouTube, force-policy=YouTube, enabled=true -# Netflix -https://raw.githubusercontent.com/eHpo1/Rules/master/QuantumultX/Filter/Sub/Netflix.txt, tag=Netflix, force-policy=Netflix, enabled=true -# 解锁网易云音乐 -https://raw.githubusercontent.com/demo2099/QTXScripts/master/filter/NeteaseMusic.list, tag=网易音乐, force-policy=网易音乐, enabled=true -# 国外影视 -https://raw.githubusercontent.com/eHpo1/Rules/master/QuantumultX/Filter/GlobalMedia.txt, tag=国外影视, force-policy=国外影视, enabled=true -# 动画疯 -https://raw.githubusercontent.com/ConnersHua/Profiles/master/Quantumult/X/Filter/Media/Bahamut.list, tag=动画疯, force-policy=动画疯, enabled=true -# Speedtest -https://raw.githubusercontent.com/eHpo1/Rules/master/QuantumultX/Filter/Sub/Speedtest.txt, tag=Speedtest, force-policy=Speedtest, enabled=true -# Pornhub -https://raw.githubusercontent.com/eHpo1/Rules/master/QuantumultX/Filter/Sub/Pornhub.txt, tag=Pornhub, force-policy=Pornhub, enabled=true -# 国外网站 -https://raw.githubusercontent.com/eHpo1/Rules/master/QuantumultX/Filter/Global.txt, tag=国外网站, force-policy=国外网站, enabled=true -# 苹果CDN 资源类 -https://raw.githubusercontent.com/eHpo1/Rules/master/QuantumultX/Filter/Apple_CDN.txt, tag=苹果CDN 资源类, force-policy=Apple, enabled=true -# 苹果API 服务类 -https://raw.githubusercontent.com/eHpo1/Rules/master/QuantumultX/Filter/Apple_API.txt, tag=苹果API 服务类, force-policy=Apple, enabled=true -# 国内媒体 -https://raw.githubusercontent.com/eHpo1/Rules/master/QuantumultX/Filter/AsianMedia.txt, tag=国内媒体, force-policy=回国服务, update-interval=86400, opt-parser=false, enabled=true -# 国内网站 -https://raw.githubusercontent.com/eHpo1/Rules/master/QuantumultX/Filter/Domestic.txt, tag=国内网站, force-policy=回国服务, update-interval=86400, opt-parser=false, enabled=true - -# 分割线—————————————————————————— - -[rewrite_remote] -# > 远程重写(远程) -# Cookie获取(Profiles文件夹引用) -Github_CK.conf, tag=Cookie 获取, update-interval=86400, opt-parser=false, enabled=false -# JavaScript合集(Profiles文件夹引用) -Github_JS.conf, tag=JavaScript合集, update-interval=86400, opt-parser=false, enabled=true -# Q-Search搜索(Profiles文件夹引用) -https://raw.githubusercontent.com/githubdulong/QuantumultX/master/Q-Search.conf, tag=Q-Search搜索, update-interval=86400, opt-parser=false, enabled=true -# boxjs会话切换 -https://raw.githubusercontent.com/chavyleung/scripts/master/QuantumultX.box.remote.conf, tag=boxjs会话切换, update-interval=86400, opt-parser=false, enabled=true -# Rewrite重写去广告 -https://raw.githubusercontent.com/DivineEngine/Profiles/master/Quantumult/Rewrite/Advertising.conf, tag=Rewrite重写AD, update-interval=86400, opt-parser=false, enabled=true -# eHpo1重写去广告 -https://raw.githubusercontent.com/eHpo1/Rules/master/QuantumultX/Rewrite.txt, tag=eHpo1重写AD, update-interval=86400, opt-parser=false, enabled=true - -# 分割线—————————————————————————— - -[server_local] -# > 本地节点 - -# 分割线—————————————————————————— - -[task_local] -# > Task定时脚本 -# 切换会话 -0 10,20 0 * * * https://raw.githubusercontent.com/chavyleung/scripts/master/box/switcher/box.switcher.js, tag=会话切换, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/box.png, enabled=false -# 京东签到 -0,30 0 0 * * * https://raw.githubusercontent.com/NobyDa/Script/master/JD-DailyBonus/JD_DailyBonus.js, tag=京东商城, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/jd.png, enabled=true -# 饿了么签到 -0 1 0 * * * https://raw.githubusercontent.com/songyangzz/QuantumultX/master/elem/elemSign.js, tag=饿了签到, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/elem.png, enabled=true -# 饿了么打卡 -30 1 0 * * * https://raw.githubusercontent.com/zZPiglet/Task/master/elem/elemCheckIn.js, tag=饿了打卡, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/elem.png, enabled=true -# 去哪儿签到 -0 2 0 * * * https://raw.githubusercontent.com/chavyleung/scripts/master/qunar/qunar.js, tag=去哪签到, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/qunar.png, enabled=true -# 人人字幕组 -30 2 0 * * * https://raw.githubusercontent.com/chavyleung/scripts/master/zimuzu/zimuzu.js, tag=人人字幕, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/zimuzu.png, enabled=true -# 人人视频 -0 3 0 * * * https://raw.githubusercontent.com/chavyleung/scripts/master/rrtv/rrtv.js, tag=人人视频, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/rrtv.png, enabled=true -# 喜马拉雅 -30 3 0 * * * https://raw.githubusercontent.com/chavyleung/scripts/master/ximalaya/ximalaya.js, tag=喜马拉雅, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/ximalaya.png, enabled=true -# 美团签到 -0 4 0 * * * https://raw.githubusercontent.com/chavyleung/scripts/master/meituan/meituan.js, tag=美团签到, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/meituan.png, enabled=true -# 网易音乐 -30 4 0 * * * https://raw.githubusercontent.com/chavyleung/scripts/master/neteasemusic/quanx/neteasemusic.js, tag=网易音乐, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/Netease.png, enabled=true -# 京东到家 -0 5 0 * * * https://raw.githubusercontent.com/Sunert/Scripts/master/Task/jddj.js, tag=京东到家, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/jddj.png, enabled=true -# 新浪微博 -30 5 5 * * * https://raw.githubusercontent.com/Sunert/Scripts/master/Task/weibo.js, tag=新浪微博, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/weibo.png, enabled=true -# 顺丰速运 -0 6 0 * * * https://raw.githubusercontent.com/chavyleung/scripts/master/sfexpress/sfexpress.js, tag=顺丰速运, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/sfexpress.png, enabled=true -# 苏宁易购 -30 6 0 * * * https://raw.githubusercontent.com/chavyleung/scripts/master/suning/suning.js, tag=苏宁易购, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/suning.png, enabled=true -# 吾爱破解 -0 7 0 * * * https://raw.githubusercontent.com/NobyDa/Script/master/52pojie-DailyBonus/52pojie.js, tag=吾爱破解, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/52pj.png, enabled=true -# 网易新闻 -30 7 0 * * * https://raw.githubusercontent.com/chavyleung/scripts/master/neteasenews/neteasenews.js, tag=网易新闻, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/neteasenews.png, enabled=true -# 滴滴出行 -0 8 0 * * * https://raw.githubusercontent.com/zZPiglet/Task/master/DiDi/DiDi.js, tag=滴滴出行, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/didi.png, enabled=true -# 哔哩哔哩 -30 8 0 * * * https://raw.githubusercontent.com/chavyleung/scripts/master/bilibili/bilibili.js, tag=哔哩哔哩, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/bilibili.png, enabled=true -# 115网盘 -0 9 0 * * * https://raw.githubusercontent.com/zZPiglet/Task/master/115/115.js, tag=115网盘, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/115.png, enabled=true -# 电信签到 -30 9 0 * * * https://raw.githubusercontent.com/chavyleung/scripts/master/10000/10000.js, tag=电信签到, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/10000.png, enabled=true -# 移动签到 -0 10 0 * * * https://raw.githubusercontent.com/chavyleung/scripts/master/10086/10086.js, tag=移动签到, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/10086fee.png, enabled=true -# 百度贴吧 -30 10 0 * * * https://raw.githubusercontent.com/chavyleung/scripts/master/tieba/tieba.js, tag=百度贴吧, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/tieba.png, enabled=true -# 万达电影 -0 11 0 * * * https://raw.githubusercontent.com/chavyleung/scripts/master/wanda/wanda.js, tag=万达电影, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/wanda.png, enabled=true -# 威锋论坛 -30 11 0 * * * https://raw.githubusercontent.com/chavyleung/scripts/master/feng/feng.js, tag=威锋论坛, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/feng.png, enabled=true -# 欧可林商城 -0 12 0 * * * https://raw.githubusercontent.com/zZPiglet/Task/master/Oclean/Oclean_mini.js, tag=可林商城, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/Oclean.png, enabled=true -# GitHub监控 -0 5 0/1 * * * https://raw.githubusercontent.com/Peng-YM/QuanX/master/Tasks/github.js, tag=GitHub库, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/github.png, enabled=true -# 金山WPS -0 2 8 * * * https://raw.githubusercontent.com/chavyleung/scripts/master/wps/wps.js, tag=金山WPS, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/wps.png, enabled=true -# 移动余量 -0 0 9 * * * https://raw.githubusercontent.com/chavyleung/scripts/master/10086/10086.fee.js, tag=移动余量, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/10086.png, enabled=true -# 电信余量 -0 1 9 * * * https://raw.githubusercontent.com/Sunert/Scripts/master/Task/telecomInfinity.js, tag=电信余量, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/telecominfinty.png, enabled=true -# 天气预报 -0 1 8,18 * * * https://raw.githubusercontent.com/githubdulong/Script/mutu/weather_pro2.js, tag=天气预报, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/weather.png, enabled=true -# 彩云天气 -0 1 8-20/1 * * * https://raw.githubusercontent.com/Peng-YM/QuanX/master/Tasks/caiyun.js, tag=彩云天气, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/caiyun.png, enabled=true -# 降雨提醒 -0 2 8-20/4 * * * https://raw.githubusercontent.com/toulanboy/scripts/master/weather/weather.js, tag=降雨提醒, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/weather.png, enabled=false -# 墙洞机场 -0 0 8-22/2 * * * https://raw.githubusercontent.com/githubdulong/Script/master/dlercloud.js, tag=墙洞机场, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/airport.png, enabled=true -# 流量监控 -30 30 8,22 * * * https://raw.githubusercontent.com/Peng-YM/QuanX/master/Tasks/flow.js, tag=流量监控, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/airport.png, enabled=true -# 电视预告 -0 2 9 * * * https://raw.githubusercontent.com/Sunert/Scripts/master/Task/tvpreview.js, tag=电视预告, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/dianshijia.png, enabled=true -# 实时汇率 -40 0 9 * * * https://raw.githubusercontent.com/Peng-YM/QuanX/master/Tasks/exchange.js, tag=实时汇率, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/exchangerate.png, enabled=true -# Epic游戏限免 -0 8 10 * * * https://raw.githubusercontent.com/Peng-YM/QuanX/master/Tasks/epic.js, tag=游戏限免, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/epic.png, enabled=true -# PSN会免 -30 8 10 * * * https://raw.githubusercontent.com/Peng-YM/QuanX/master/Tasks/psn.js, tag=PSN会免, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/PSN.png, enabled=true -# Steam价格 -0 9 10 * * * https://raw.githubusercontent.com/Peng-YM/QuanX/master/Tasks/steam.js, tag=Sem价格, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/steam.png, enabled=true -# TG电报图片推送 -0 3 10-20/2 * * * https://raw.githubusercontent.com/Peng-YM/QuanX/master/Tasks/telegram.js, tag=电报推送, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/tgpic.png, enabled=true -# 疫情报告 -0 30 8 * * * https://raw.githubusercontent.com/Peng-YM/QuanX/master/Tasks/nCov.js, tag=疫情报告, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/COVID-19.png, enabled=true -# 猫眼电影 -0 1 18 * * * https://ooxx.be/js/maoyan.js, tag=猫眼电影, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/maoyan.png, enabled=true - -# 分割线—————————————————————————— - -[rewrite_local] - -# 分割线—————————————————————————— - -[filter_local] -# > 本地写入分流 -# Steam、Epic(新增代理) -host, rsshub.app, proxy -host, steamdb.info, direct -# 1password(新增直连) -host, c.1password.com, direct -host, watchtower.1password.com, direct -# 微软office(新增直连) -host, substrate.office.com, direct -host, nexus.officeapps.live.com, direct -host, roaming.officeapps.live.com, direct -host, odc.officeapps.live.com, direct -host, ocws.officeapps.live.com, direct -# 绕过企业证书过期 -host, ocsp.apple.com, reject -# 屏蔽系统更新 -host, gdmf.apple.com, 屏蔽更新 -host, mesu.apple.com, 屏蔽更新 -# 去掉YouTube+底部广告 -host-suffix, ehg-youtube.hitbox.com, reject -ip-cidr, 10.0.0.0/8, direct -ip-cidr, 127.0.0.0/8, direct -ip-cidr, 172.16.0.0/12, direct -ip-cidr, 192.168.0.0/16, direct -ip-cidr, 224.0.0.0/24, direct -geoip, cn, direct -# 漏网规则 -final, 漏网规则 - -# 分割线—————————————————————————— - -[mitm] -# > 通用证书 -passphrase = 52E176D8 -p12 = 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 From 54c2d5a49ac517dcf4c798e5e6fe0dc2741c06cf Mon Sep 17 00:00:00 2001 From: MuTu <59136159+githubdulong@users.noreply.github.com> Date: Sat, 11 Jul 2020 17:00:27 +0800 Subject: [PATCH 11/19] Delete Q-Search_All_in_one.conf --- QuantumultX/Q-Search_All_in_one.conf | 112 --------------------------- 1 file changed, 112 deletions(-) delete mode 100644 QuantumultX/Q-Search_All_in_one.conf diff --git a/QuantumultX/Q-Search_All_in_one.conf b/QuantumultX/Q-Search_All_in_one.conf deleted file mode 100644 index 7adadd71..00000000 --- a/QuantumultX/Q-Search_All_in_one.conf +++ /dev/null @@ -1,112 +0,0 @@ -# > Q-Search - -# 分割线—————————————————————————— - -# - Safari 内输入 命令 + 空格 + 关键词 快速指定搜索引擎搜索 -# 注:先进入设置更改 Safari 默认搜索为 DuckDuckGO -# 可自行修改指令或者添加搜索引擎 - -# gh:GitHub 搜索 -# gm:Google 图片搜索 -# sof: Stack Overflow -# se: StackExchange - -# yd:有道词典搜索 -# trc: Google 译至中 -# tre: Google 译至英 -# trj: Google 译至日 - -# db:豆瓣搜索 -# zh: 知乎 -# wb: 微博 -# wx: 微信 -# rd: Reddit -# zdm: 什么值得买 -# amz: 亚马逊 -# jd: 京东 -# tb: 淘宝 -# tm: 天猫 - -# ytb: YouTube -# ph: PornHub -# gd: Google Drive资源 -# tgd: TG搜索Google Drive资源 - -# bi: 必应 -# bd:百度搜索 -# ddg:DuckDuckGo 搜索 -# 无指令则转 Google 搜索 - -# 分割线—————————————————————————— -# 图片 -#gm (Google图片) -^https:\/\/duckduckgo.com\/\?q=gm\+([^&]+).+ url 302 https://www.google.com/search?&tbm=isch&q=$1 -# gh (GitHub) -^https:\/\/duckduckgo.com\/\?q=gh\+([^&]+).+ url 302 https://github.com/search?q=$1 -# sof (Stack Overflow) -^https:\/\/duckduckgo.com\/\?q=sof\+([^&]+).+ url 302 https://stackoverflow.com/search?q=$1 -# se (StackExchange) -^https:\/\/duckduckgo.com\/\?q=se\+([^&]+).+ url 302 https://stackexchange.com/search?q=$1 -# wa (WolframAlpha) -^https:\/\/duckduckgo.com\/\?q=wa\+([^&]+).+ url 302 https://www.wolframalpha.com/input/?i=$1 - -# 翻译 -# yd (有道) -^https:\/\/duckduckgo.com\/\?q=yd\+([^&]+).+ url 302 http://dict.youdao.com/search?q=$1 -# trc (Google 译至中) -^https:\/\/duckduckgo.com\/\?q=trc\+([^&]+).+ url 302 https://translate.google.com/#view=home&op=translate&sl=auto&tl=zh-CN&text=$1 -# tre (Google 译至英) -^https:\/\/duckduckgo.com\/\?q=tre\+([^&]+).+ url 302 https://translate.google.com/#view=home&op=translate&sl=auto&tl=en&text=$1 -# trj (Google 译至日) -^https:\/\/duckduckgo.com\/\?q=trj\+([^&]+).+ url 302 https://translate.google.com/#view=home&op=translate&sl=auto&tl=ja&text=$1 - -# 社区 -# db:豆瓣 -^https:\/\/duckduckgo.com\/\?q=db\+([^&]+).+ url 302 https://m.douban.com/search/?query=$1 -# zh: 知乎 -^https:\/\/duckduckgo.com\/\?q=zh\+([^&]+).+ url 302 https://www.zhihu.com/search?type=content&q=$1 -# wb: 微博 -^https:\/\/duckduckgo.com\/\?q=wb\+([^&]+).+ url 302 https://s.weibo.com/weibo/$1 -# wx: 微信 -^https:\/\/duckduckgo.com\/\?q=wx\+([^&]+).+ url 302 https://weixin.sogou.com/weixinwap?query=$1 -# rd (Reddit) -^https:\/\/duckduckgo.com\/\?q=rd\+([^&]+).+ url 302 https://www.reddit.com/search?q=$1 -# tw (Twitter) -^https:\/\/duckduckgo.com\/\?q=tw\+([^&]+).+ url 302 https://twitter.com/search?q=$1 - -# > 购物 -# zdm: 什么值得买 -^https:\/\/duckduckgo.com\/\?q=zdm\+([^&]+).+ url 302 https://search.m.smzdm.com/?v=b&s=$1 -# amz: 亚马逊 -^https:\/\/duckduckgo.com\/\?q=amz\+([^&]+).+ url 302 https://www.amazon.cn/gp/aw/s/?k=$1 -# jd : 京东 -^https:\/\/duckduckgo.com\/\?q=jd\+([^&]+).+ url 302 https://so.m.jd.com/ware/search.action?keyword=$1 -# tb: 淘宝 -^https:\/\/duckduckgo.com\/\?q=tb\+([^&]+).+ url 302 https://s.m.taobao.com/h5?q=$1 -# tm: 天猫 -^https:\/\/duckduckgo.com\/\?q=tm\+([^&]+).+ url 302 https://s.m.tmall.com/m/search.htm?q=$1 - -# 视频 -# ytb (YouTube) -^https:\/\/duckduckgo.com\/\?q=ytb\+([^&]+).+ url 302 https://www.youtube.com/results?search_query=$1 -# ph (PornHub) -^https:\/\/duckduckgo.com\/\?q=ph\+([^&]+).+ url 302 https://cn.pornhub.com/video/search?search=$1 -# gd (Google Drive) -^https:\/\/duckduckgo.com\/\?q=gd\+([^&]+).+ url 302 https://www.google.com/search?q=%22Google+Drive%22+$1 -# tgd (t.me/gdurl 搜索 Google Drive 资源) -^https:\/\/duckduckgo.com\/\?q=tgd\+([^&]+).+ url 302 https://t.me/s/gdurl?q=$1 - -# 搜索 -# bi: 必应 -^https:\/\/duckduckgo.com\/\?q=bi\+([^&]+).+ url 302 https://cn.bing.com/search?q=$1 -# bd: 百度 -^https:\/\/duckduckgo.com\/\?q=bd\+([^&]+).+ url 302 https://www.baidu.com/s?wd=$1 -# ddg: DuckDuckGo -^https:\/\/duckduckgo.com\/\?q=ddg\+([^&]+).+ url 302 https://duckduckgo.com/?ia=about&q=$1 -# 无指令: 谷歌 -^https:\/\/duckduckgo.com\/\?q=([^&]+).+ url 302 https://www.google.com/search?q=$1 - -# 分割线—————————————————————————— - -# > Hostname主机名 -hostname = duckduckgo.com From 56039a1d945d15c67107249656c379b67fd42717 Mon Sep 17 00:00:00 2001 From: MuTu <59136159+githubdulong@users.noreply.github.com> Date: Sat, 11 Jul 2020 17:00:37 +0800 Subject: [PATCH 12/19] Delete JavaScript.conf --- QuantumultX/JavaScript.conf | 127 ------------------------------------ 1 file changed, 127 deletions(-) delete mode 100644 QuantumultX/JavaScript.conf diff --git a/QuantumultX/JavaScript.conf b/QuantumultX/JavaScript.conf deleted file mode 100644 index 8dcc6c81..00000000 --- a/QuantumultX/JavaScript.conf +++ /dev/null @@ -1,127 +0,0 @@ -# 【JavaScript】合集 - -# 分割线—————————————————————————— - -# TikTok国际抖音解锁封区(更换307后面JP JP=日本 KR=韩国 HK=香港 US=美国) -(?<=_region=)CN(?=&) url 307 JP -# 港区 -(?<=\?version_code=)16..(?=.?.?&) url 307 1 -# 美区 -//(?<=&app_version=)16..(?=.?.?&) url 307 1 - -# 去微博应用内广告 -^https?://(sdk|wb)app\.uve\.weibo\.com(/interface/sdk/sdkad.php|/wbapplua/wbpullad.lua) url script-response-body https://raw.githubusercontent.com/yichahucha/surge/master/wb_launch.js -^https?://m?api\.weibo\.c(n|om)/2/(statuses/(unread|extend|positives/get|(friends|video)(/|_)(mix)?timeline)|stories/(video_stream|home_list)|(groups|fangle)/timeline|profile/statuses|comments/build_comments|photo/recommend_list|service/picfeed|searchall|cardlist|page|!/photos/pic_recommend_status|video/tiny_stream_video_list) url script-response-body https://raw.githubusercontent.com/yichahucha/surge/master/wb_ad.js - -# 微信公众号广告 -^https?:\/\/mp\.weixin\.qq\.com\/mp\/getappmsgad url script-response-body https://raw.githubusercontent.com/NobyDa/Script/master/QuantumultX/File/Wechat.js - -# 微信朋友圈广告 -//^https:\/\/mp\.weixin\.qq\.com\/mp\/(getappmsgext|getappmsgad) url script-response-body https://raw.githubusercontent.com/iepngs/Script/master/weixin/ad.js - -# 小小影视TF -#会员 -https:\/\/.*.xiaoxiao(img|apps|appxs).com url request-header (\r\n)Cookie:.+(\r\n) request-header $1Cookie: xxx_api_auth=6131333537653261363463323331666265663763396239663835636662373930$2 -#去广告 -https:\/\/.*\/getGlobalData url script-response-body https://raw.githubusercontent.com/Alex0510/Eric/master/surge/Script/xxysad.js - -# 网易蜗牛读书VIP -//^https?://p\.du\.163\.com/readtime/info.json url reject -//^https?:\/\/p\.du\.163\.com\/gain\/readtime\/info\.json url script-response-body https://raw.githubusercontent.com/NobyDa/Script/master/QuantumultX/File/wnyd.js - -# VSCO滤镜VIP -//^https?:\/\/vsco\.co\/api\/subscriptions\/2.1\/user-subscriptions\/ url script-response-body https://raw.githubusercontent.com/NobyDa/Script/master/QuantumultX/File/vsco.js - -# 香蕉视频VIP -^https?:\/\/.*\.(fuli|xiang(jiao|xiang))apps\.com\/(ucp\/index|getGlobalData|.+\/reqplay\/) url script-response-body https://raw.githubusercontent.com/NobyDa/Script/master/QuantumultX/File/xjsp.js - -# 金山WPS -^https://account.wps.*/api/users/ url script-response-body https://raw.githubusercontent.com/NobyDa/Script/master/Surge/JS/Wps.js - -# Gyroscope 解锁 pro -//^https:\/\/api\.gyrosco\.pe\/v1\/account\/$ url script-response-body https://raw.githubusercontent.com/NobyDa/Script/master/Surge/JS/gyroscope.js - -# 大千视界 解锁 -^https:\/\/api\.mvmtv\.com\/index\.php.*(c=user.*a=info|a=addr.*vid=.*) url script-response-body https://raw.githubusercontent.com/NobyDa/Script/master/Surge/JS/dqsj.js - -# 彩云天气 Vip -//^https:\/\/biz\.caiyunapp\.com\/v2\/user\?app_name\=weather url script-response-body https://raw.githubusercontent.com/NobyDa/Script/master/QuantumultX/File/ColorWeather.js -^https://biz.caiyunapp.com/(v2\/user|membership_rights) url script-response-body https://raw.githubusercontent.com/LeeeMooo/ScriptOwn/master/myQx/js/caiyun.js - -# 扫描全能王 pro -^https:\/\/(api|api-cs)\.intsig\.net\/purchase\/cs\/query_property\? url script-response-body https://raw.githubusercontent.com/NobyDa/Script/master/Surge/JS/CamScanner.js - -# 哔哩哔哩 精简去广告 -^https:\/\/app\.bilibili\.com\/(search\/resource|x\/(resource\/show\/tab|v2\/(view|rank|feed|reply\/main|account\/mine))) url script-response-body https://raw.githubusercontent.com/nzw9314/QuantumultX/master/Script/Bilibili.js - -# vsco -//^https?:\/\/vsco\.co\/api\/subscriptions\/2.1\/user-subscriptions\/ url script-response-body https://raw.githubusercontent.com/langkhach270389/Scripting/master/vsco.js - -# gyroscope -//^https:\/\/api\.gyrosco\.pe\/v1\/account\/$ url script-response-body https://raw.githubusercontent.com/langkhach270389/Scripting/master/Gyroscope.vip.js - -# Pdfexpert -^https:\/\/license\.pdfexpert\.com\/api\/1\.0\/pdfexpert6\/subscription\/(refresh$|check$) url script-response-body https://raw.githubusercontent.com/langkhach270389/Scripting/master/Pdfexpert.vip.js - -# workingcopy -^https:\/\/education\.github\.com\/api\/user$ url script-response-body https://raw.githubusercontent.com/langkhach270389/Scripting/master/workingcopy.js - -# pre_dayone -//^https:\/\/dayone\.me\/api\/users$ url request-header (\r\n)If-None-Match:.+(\r\n) request-header $1 -# dayone -^https:\/\/dayone\.me\/api\/(users|v2\/users\/account-status)$ url script-response-body https://raw.githubusercontent.com/langkhach270389/Scripting/master/dayone.js - -# Bear熊掌记 内购解锁 -//^https:\/\/buy\.itunes\.apple\.com\/verifyReceipt url script-response-body https://raw.githubusercontent.com/nzw9314/QuantumultX/master/Script/bear.js - -# 人人视频 去广告 -^https:\/\/api\.rr\.tv(\/user\/privilege\/list|\/ad\/getAll|\/rrtv-video\/v4plus\/season\/detail) url script-response-body https://raw.githubusercontent.com/nzw9314/QuantumultX/master/Script/rrtv.js - -# 人人字幕组(商店版) 去广告 -^http://ctrl.playcvn.com/app/(init|ads) url script-response-body https://raw.githubusercontent.com/nzw9314/QuantumultX/master/Script/YYeTs.js - -# YouTube 去广告 -^https?:\/\/.+\.googlevideo\.com\/.+&oad url reject-img -^https?:\/\/.+\.googlevideo\.com\/.+ctier url reject-img -^https?:\/\/youtubei\.googleapis\.com\/youtubei\/.+ad_ url reject-img -^https?:\/\/youtubei\.googleapis\.com\/youtubei\/.+log_ url reject-img -^https?:\/\/.+\.youtube\.com\/get_midroll_ url reject-img -^https?:\/\/premiumyva\.appspot\.com\/vmclickstoadvertisersite url reject-img -^https?:\/\/.+\.youtube\.com\/api\/stats\/ads url reject-img -^https?:\/\/.+\.youtube\.com\/api\/stats\/.+adformat url reject-img -^https?:\/\/.+\.youtube\.com\/pagead\/ url reject-img -^https?:\/\/.+\.youtube\.com\/ptracking url reject-img - -# Fantastical 内购解锁 -^https:\/\/api\.flexibits\.com\/v1\/(auth|account)\/(device|details|appstore-receipt)\/$ url script-response-body https://raw.githubusercontent.com/nzw9314/QuantumultX/master/Script/fantastical.js - -# Pear 雪梨 -^https:\/\/(www\.baidu.com2\.club|ayk\.tmdidi\.com|m\.pearkin\.com|souhu\.mett\.me|bkcd\.b-cdn\.net)\/(api\/movie\/WatchMovie|api\/Account\/CheckVip|api\/account\/IndexDetail) url script-response-body Js/pear.js - -# 有道云笔记VIP -//https://note.youdao.com/yws/(mapi/payment|api/self) url script-response-body https://raw.githubusercontent.com/nzw9314/QuantumultX/master/Script/ydybj.js - -# 闪电下载vip -^http\:\/\/app\.flashdown365\.com\/ios\/login url script-response-body https://raw.githubusercontent.com/nzw9314/QuantumultX/master/Script/sdxz.js - -# 京东历史比价 -^https?://api\.m\.jd\.com/client\.action\?functionId=(wareBusiness|serverConfig) url script-response-body https://raw.githubusercontent.com/yichahucha/surge/master/jd_price.js - -# 淘宝历史比价 -^http://.+/amdc/mobileDispatch url script-request-body https://raw.githubusercontent.com/yichahucha/surge/master/tb_price.js -^https?://trade-acs\.m\.taobao\.com/gw/mtop\.taobao\.detail\.getdetail url script-response-body https://raw.githubusercontent.com/yichahucha/surge/master/tb_price.js - -# 脚本转换 -//^https?:\/\/(raw|gist)\.githubusercontent.com/.*\.js$ url script-response-body https://raw.githubusercontent.com/Peng-YM/ScriptConverter/master/js-converter.js - -# Netflix获取评分 -//^https?://ios\.prod\.ftl\.netflix\.com/iosui/user/.+path=%5B%22videos%22%2C%\d+%22%2C%22summary%22%5D url script-request-header https://raw.githubusercontent.com/yichahucha/surge/master/nf_rating.js -//^https?://ios\.prod\.ftl\.netflix\.com/iosui/user/.+path=%5B%22videos%22%2C%\d+%22%2C%22summary%22%5D url script-response-body https://raw.githubusercontent.com/yichahucha/surge/master/nf_rating.js - -# 彩云天气 定位 -https://weather-data.apple.com url script-request-header https://raw.githubusercontent.com/Peng-YM/QuanX/master/Tasks/caiyun.js - -# 分割线—————————————————————————— - -# > Hostname主机名 -hostname = mp.weixin.qq.com, *.googlevideo.com, api.m.jd.com, trade-acs.m.taobao.com, education.github.com, api.rr.tv, account.wps.cn, ap*.intsig.net, dayone.me, license.pdfexpert.com, app.flashdown365.com, api.flexibits.com, api.gyrosco.pe, ios.prod.ftl.netflix.com, biz.caiyunapp.com, *.musical.ly, *.tiktokv.com, *.byteoversea.com, *.snssdk.com, api.weibo.cn, mapi.weibo.com, *.uve.weibo.com, , *.xiaoxiao*.com, ios.fuliapps.com, apple.fuliapps.com, ios.xiangjiaoapps.com, apple.xiangjiaoapps.com, *.xiangxiangapps.com, *.lagoapps.com, bkcd.b-cdn.net, souhu.mett.me, ayk.tmdidi.com, m.pearkin.com, www.baidu.com2.club, api.meiyan.com, raw.githubusercontent.com, gist.githubusercontent.com, note.youdao.com, p.du.163.com, app.bilibili.com, api.rr.tv, ctrl.playcvn.com, weather-data.apple.com From 0d4b88562ea9fb052bfdb0924657b1413644dd31 Mon Sep 17 00:00:00 2001 From: MuTu <59136159+githubdulong@users.noreply.github.com> Date: Sat, 11 Jul 2020 17:00:46 +0800 Subject: [PATCH 13/19] Delete Cookie.conf --- QuantumultX/Cookie.conf | 99 ----------------------------------------- 1 file changed, 99 deletions(-) delete mode 100644 QuantumultX/Cookie.conf diff --git a/QuantumultX/Cookie.conf b/QuantumultX/Cookie.conf deleted file mode 100644 index 8b92723b..00000000 --- a/QuantumultX/Cookie.conf +++ /dev/null @@ -1,99 +0,0 @@ -# > Cookie获取 - -# 分割线—————————————————————————— - -# 京东商城 登录 https://bean.m.jd.com -https:\/\/api\.m\.jd\.com\/client\.action.*functionId=signBean url script-request-header https://raw.githubusercontent.com/NobyDa/Script/master/JD-DailyBonus/JD_DailyBonus.js - -# 网易云音乐 -#登录1 https://music.163.com/m/login -#登陆2 https://music.163.com/#/user/level -^https:\/\/music.163.com\/weapi\/user\/level url script-request-body https://raw.githubusercontent.com/chavyleung/scripts/master/neteasemusic/quanx/neteasemusic.cookie.js - -# 人人字幕组 app与网页http://www.rrys2020.com -^https?:\/\/(www\.)?rrys2020\.com\/?.? url script-request-header https://raw.githubusercontent.com/chavyleung/scripts/master/zimuzu/zimuzu.cookie.js -^http:\/\/ios.zmzapi.com\/index.php.*a=(mobile_)?login url script-request-header https://raw.githubusercontent.com/chavyleung/scripts/master/zimuzu/zimuzu.cookie.js - -# 喜马拉雅 app获取 -^https?:\/\/.*\/mobile\-user\/homePage\/.* url script-request-header https://raw.githubusercontent.com/chavyleung/scripts/master/ximalaya/ximalaya.cookie.js - -# 人人视频 app获取 -^https:\/\/api\.rr\.tv\/user\/profile url script-request-header https://raw.githubusercontent.com/chavyleung/scripts/master/rrtv/rrtv.cookie.js - -# 饿了么 app获取 -^https:\/\/h5\.ele\.me\/restapi\/eus\/v\d\/current_user$ url script-request-header https://raw.githubusercontent.com/songyangzz/QuantumultX/master/elem/elemGetCookies.js - -# 中国电信套餐 天翼账号中心app获取 -^https?:\/\/e\.189\.cn\/store\/user\/package_detail\.do url script-request-header https://raw.githubusercontent.com/Sunert/Scripts/master/Task/telecomInfinity.js - -# 美团 app获取 -^https:\/\/i.meituan.com\/evolve\/signin\/signpost\/ url script-request-body https://raw.githubusercontent.com/chavyleung/scripts/master/meituan/meituan.cookie.js - -# 京东到家 京东app-京东到家栏目获取 -https:\/\/daojia\.jd\.com\/client\?_jdrandom=\d{13}&functionId=%2Fsignin url script-request-header https://raw.githubusercontent.com/Sunert/Scripts/master/Task/jddj.js - -# 新浪微博 app获取 -https:\/\/api\.weibo\.cn\/\d\/video\/machine\?gsid url script-request-header https://raw.githubusercontent.com/Sunert/Scripts/master/Task/weibo.js -# 微博钱包 钱包获取 -https:\/\/pay\.sc\.weibo\.com\/aj\/mobile\/home\/welfare\/signin\/do\? url script-request-header https://raw.githubusercontent.com/Sunert/Scripts/master/Task/weibo.js - -# 顺丰速运 app获取 -^https:\/\/sf-integral-sign-in.weixinjia.net\/app\/index url script-request-header https://raw.githubusercontent.com/chavyleung/scripts/master/sfexpress/sfexpress.cookie.js -^https:\/\/mcs-mimp-web.sf-express.com\/mcs-mimp\/share\/(.*?)Redirect url script-request-header https://raw.githubusercontent.com/chavyleung/scripts/master/sfexpress/sfexpress.cookie.js - -# 苏宁易购 app获取 -^https:\/\/passport.suning.com\/ids\/login$ url script-request-body https://raw.githubusercontent.com/chavyleung/scripts/master/suning/suning.cookie.js -^https:\/\/luckman.suning.com\/luck-web\/sign\/api\/clock_sign.do url script-request-header https://raw.githubusercontent.com/chavyleung/scripts/master/suning/suning.cookie.js -^https:\/\/sign.suning.com\/sign-web\/m\/promotion\/sign\/doSign.do url script-request-header https://raw.githubusercontent.com/chavyleung/scripts/master/suning/suning.cookie.js -^https:\/\/gameapi.suning.com\/sngame-web\/(api\/signin\/private\/customerSignOperation.do|gateway\/api\/queryPrize.do) url script-request-header https://raw.githubusercontent.com/chavyleung/scripts/master/suning/suning.cookie.js - -# 金山WPS app获取 -^https:\/\/zt.wps.cn\/2018\/docer_check_in\/api\/act_list url script-request-header https://raw.githubusercontent.com/chavyleung/scripts/master/wps/wps.cookie.js -^https:\/\/zt.wps.cn\/2018\/clock_in\/api\/sign_up url script-request-header https://raw.githubusercontent.com/chavyleung/scripts/master/wps/wps.cookie.js - -# Dler Cloud机场 登陆https://dleris.best/ -^https:\/\/dleris\.best\/user url script-request-header https://raw.githubusercontent.com/githubdulong/Script/master/dlercloud.js - -# 吾爱破解 登陆https://www.52pojie.cn -https:\/\/www\.52pojie\.cn\/home\.php\? url script-request-header https://raw.githubusercontent.com/NobyDa/Script/master/52pojie-DailyBonus/52pojie.js - -# 网易新闻 app获取 -^https:\/\/(.*?)c\.m\.163\.com\/uc\/api\/sign\/v3\/commit url script-request-body https://raw.githubusercontent.com/chavyleung/scripts/master/neteasenews/neteasenews.cookie.js - -# 去哪儿 app获取 -^https:\/\/user.qunar.com\/webapi\/member\/signIndexV2.htm url script-request-header https://raw.githubusercontent.com/chavyleung/scripts/master/qunar/qunar.cookie.js - -# 滴滴出行 app获取 -^https:\/\/as\.xiaojukeji\.com\/ep\/as\/toggles\? url script-request-header https://raw.githubusercontent.com/zZPiglet/Task/master/DiDi/DiDi.js - -# 百度贴吧 登陆https://tieba.baidu.com -^https?:\/\/tieba\.baidu\.com\/?.? url script-request-header https://raw.githubusercontent.com/chavyleung/scripts/master/tieba/tieba.cookie.js - -# 哔哩哔哩 登录: https://www.bilibili.com -^https:\/\/(www|live)\.bilibili\.com\/?.? url script-request-header https://raw.githubusercontent.com/chavyleung/scripts/master/bilibili/bilibili.cookie.js - -# 115网盘 app获取 -^https?:\/\/proapi\.115\.com\/ios\/user\/takespc\? url script-request-header https://raw.githubusercontent.com/zZPiglet/Task/master/115/115.js - -# 中国移动 余量box设置 -^https:\/\/clientaccess.10086.cn\/biz-orange\/LN\/uamrandcodelogin\/autoLogin url script-request-body https://raw.githubusercontent.com/chavyleung/scripts/master/10086/10086.fee.cookie.js -^https:\/\/clientaccess.10086.cn\/biz-orange\/BN\/realFeeQuery\/getRealFee url script-request-body https://raw.githubusercontent.com/chavyleung/scripts/master/10086/10086.fee.cookie.js - -# 中国电信 box设置 -^https:\/\/wapside.189.cn:9001\/api\/home\/sign url script-request-body https://raw.githubusercontent.com/chavyleung/scripts/master/10000/10000.cookie.js - -# 中国移动 app获取 -^http:\/\/wx.10086.cn\/website\/taskCenter\/index\? url script-request-header https://raw.githubusercontent.com/chavyleung/scripts/master/10086/10086.cookie.js -^http:\/\/wx.10086.cn\/website\/taskCenter\/sign\? url script-request-header https://raw.githubusercontent.com/chavyleung/scripts/master/10086/10086.cookie.js - -# 万达电影 app获取 -^https:\/\/user-api-prd-mx\.wandafilm\.com url script-request-header https://raw.githubusercontent.com/chavyleung/scripts/master/wanda/wanda.cookie.js - -# 欧可林商城 小程序获取 -^https:\/\/mall\.oclean\.com\/API\/VshopProcess\.ashx\?action=TaskHome&clientType=5&client=5&openId= url script-request-header https://raw.githubusercontent.com/zZPiglet/Task/master/Oclean/Oclean_mini.js - -# 分割线—————————————————————————— - -# > Hostname主机名 -hostname = api.m.jd.com, music.163.com, *.rrys2020.com, ios.zmzapi.com, mobwsa.ximalaya.com, *.rr.tv, h5.ele.me, e.189.cn, i.meituan.com, daojia.jd.com, api.weibo.cn, pay.sc.weibo.com, sf-integral-sign-in.weixinjia.net, mcs-mimp-web.sf-express.com, passport.suning.com, luckman.suning.com, sign.suning.com, gameapi.suning.com, draw.jdfcloud.com, zt.wps.cn, dleris.best, www.52pojie.cn, *.m.163.com, user.qunar.com, as.xiaojukeji.com, tieba.baidu.com, *.bilibili.com, proapi.115.com, clientaccess.10086.cn, wapside.189.cn, wx.10086.cn, user-api-prd-mx.wandafilm.com, mall.oclean.com - From 9adadf79f20a991096fb156163b56ce3cb6699f5 Mon Sep 17 00:00:00 2001 From: MuTu <59136159+githubdulong@users.noreply.github.com> Date: Sat, 11 Jul 2020 17:01:01 +0800 Subject: [PATCH 14/19] Delete MuTu.PNG --- Images/MuTu.PNG | Bin 14182 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 Images/MuTu.PNG diff --git a/Images/MuTu.PNG b/Images/MuTu.PNG deleted file mode 100644 index 2457fbc168f315457d8fbc6cf48441c76839778a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14182 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 From d7d85acc4b1ddafaaf201f1ec5bd863f29f9618e Mon Sep 17 00:00:00 2001 From: MuTu <59136159+githubdulong@users.noreply.github.com> Date: Sat, 11 Jul 2020 17:01:09 +0800 Subject: [PATCH 15/19] Delete dulong.png --- Images/dulong.png | Bin 280455 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 Images/dulong.png diff --git a/Images/dulong.png b/Images/dulong.png deleted file mode 100644 index ffe615adee927ece55cc0d3404a6244dd763ce77..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 280455 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≥R-WE9~c+K5sk;8v?ZSd2%c6r8HyIM~>`5I~$U_GiylF2QoIiv>Sa z3S-pjL-shsvcV1uxZczS?8 z$_k)K2i|!FCLJm3`TV>VcKCB9asLcH;`L@c*%2njygc*%cc-epn*? zyWD-rfBPWL*?mpRzl?Bx_zkOH_;a#70jJf%k$B8dC#1q2OQD@mfmdjMt!N$_xG<_` z+4I_+PMn;cSc6$K0X!2~`D~bPF)n(6OhzOs| ziAnji>67cTM;_+W4^%bS=?(4P#M2(G_rt}qkgrEh&<*FKP@H&RZX6@w1D(W0gYKjO zn*{WqPS`neyM6~m85&;^%Q0vT3%!IhNhg$Xx9MJYEB|WyjdKewz*F1(rZmb7mQgHqFLvwYp1{Xs zo+@tRQmZ0CeZT!8gn-VOn1VFsCs*<&%SmI#_*FtOI9myXMWb*YU318zOptjbU{*bB z!PDo7sfYXZGa}2Uymj#R}0uGZ>FjS5d!2JnG#X>%b z+()<(JLwO7@qs-s$%|w4z~4K6eZ>G@!pzk*!JtdX^o6F4Y_)BDgRB|UCUa0_n_Mds zF@#%WrzqLvqrBdc{@zHI?~ImC-TiHDl4YBaprvAm*{wTn__>Ca&3H;Ft3Yjkr51WJ zlBwRS_F_I9Uz2pg#~Oi5Ocnm(STwR!F^0xo7s&HiUqYi=g>Tp0%P7N>P{5^E3P*K@Oj3&L%bYD5{zFj?*% z3*)cZKps<$J69DTd3RP^%rI4160etjU3U-b+#>^$#X(ema;*g06a&;h)`Ky3xKejJ z{eXzqR{_(bKY!}l+m*gM%u$i!3j-;Nhi+cczcbQS`k(Dr$tE#%gA3`Wc*i??FV=km zmVm@+(LVMk>Z;kpi+|CPSZBBPhrql(m+0d=My1WWB<1E~AycoGkL5@78l!ULB%G9Q&e=@Z-3p@QeAoS9}dOY|FLul-e+^ zWcXX)p84RHTPNa=Tl;Z3$EQ{V<#X@ajW}qp<8DKVW-?!o!6JO|X66&3-8)j^ywq z9kf2%JT;$1o-+|=?&A9^wR9XbnW-0Ly2}bBdq551%b*EmRI~zULzh0U6t5mpA^oC| zR_oySTl0NtsU>@(ZXe=W{BNE0YC+%BGpK5st3e|Bg(=bns%Al=nLu2up}*OVa}@tv zr!x4^ZFihlI0`G<=Y(z9Y5hGAIvIP!0WzM5xkXlx{laK{_HxhpYYt=YENyGb&A|iV zmz>mz9Dvt&YJ>fzT9*zTnIcxbfZGZ9*_N~M+d6|!N;*ar4=R-oyn zjkEcDCE-lIG0y1<^(&+Nt?`9!CbpM&Z?4b0%s#eFIJVGWp+M=Jc9f8y9)$56=&R>s zX`nH!uCZBp*m>qhNb|SRr6rQ5TdGGor=EM^9xk%|`C}23xPVbiAjyOl{U3b%gy^|u zc!+WKAMi-w;0T^$2nGRstn*Rm&IO;W3BH!fXUHi=bmiB&2w4$d>z*F;0G#Q@Q8d~6TLPLpV~ z!&e$NM?uwxX_edye$tWT+X0iYrsC3`njrCSkw=@3Md;SG4#OpxA62wf{nh4IOXD!hYk* zTdh|fPQwp7isO#&zIJZD_tkJ*s92?jx~f>ur+W)q2GzoVt=-Xa2Lge(0Bhwe8b~(1 zJwi>63oyApF$+Ie){h9w;;#wXSz({0+Ud=oyox|14xt*nYDJ z8z*Oj$g8ym=1EtOKP(ID=xOpqL?rXIX}T&#U^ zC-D=bg!qO4zWtoNSG-o@Fot64w}yrfpfkKuH8y`j-;M<;X|x!MYD4-a9dZ-iQ5J78RS5+ zIDy3E5D%6g{5xL{l?JEj&<|qYi$EZo|3aJ&PCy22%!>PSSAgAxu)4%UBfh^^s5p+G z!?Vravon^mSgH?}0Ws}_Jeg{({-^A656=>)X0rJr?mx|X^#96_^8k5Ns?B?Smq>rB zR)-S%c_9Rv$d{obF@gPwSjX~}PgA*yumUNgkAY5gn+|)X^j^AuEq=Yur-DcgXpQwY z>71m!s@7g9y!E+`4ecA&(60o9+9@vnjxTfe8r@@-ZQb_|h)r%E%38lWxtiIhy>d30 zp?Vr*vI*Gi{O8=^{>Nc@2JibgpCUIlR<~1@O&DPAYo*Fvx&v3DJjQ1LmjrYVeIt{f zlPkQ?TxZ>8965T$e%ND7Paj_{_u4w5|A%wJw7Ev+%td_e#Mw9tkU=nT17$>^ z2(7BB=AnoIH<9-y#t0|u&={jp(Fsg4n1%PA19^i}wj%J<*Fdsc$YP0Auyg{i*RcnK zMn4zdfVr$>hLu%58h6ja9|(?YCb`$LEBI{$={28$s?q+puC6J7)Br(MOJKeh=?)hR zRmZiq6viB^3h`?WH|BF*$>IY|5jXI}RjC><5&pUF>3phVO1zUzt=&$vsNv+Was3xy zZfWH`f`@cK+QgOv`e%cuU)Gq*;9}*gDh|%mUpsN9y(qZfRt+<#^m2>YYB=F3&Ysb| zNdzqvVVO88mHj#GRTZC`gtHG{=>ZYpt-29PATR>pc4rgsC_PiZm}R(kj#Gzywhc@c zGB-&7$4%rg@Uv!6Z{+}Y=k05ca)o&)Eq`TDC{IoKG^WvViGD5N^JjYSZVQ2G_VgG_ z;0Z$2maDd2B6ljCpe^2{EMif!FWg(RmW+;LLwn0f^oeSsDqqi+vp%nBJ!hIGCSaJ1 z&s*B#{yLYf$6)NnG{RoMhGo=pYdoRF_*uOB_*-{(*t}iBAh({A6IWLB&1a^b$>~3i zbA>;P_TSb9UMKy7*+G5(VA(yx&g}$z=}ypT{`l&qtmiMT5U}VKIz~n)1Bp2G8rxs{ zR^udXeYudQqF2=}O~RPpC(5B;`1}dTO5w}mt3UQp{qtj*gzc51epS7Pkn@WE;$6wx z6rr@u<<5dA#R9kO1#_qy0;nhM_(eT)IP99b<;Q74>TV8@_IPJhjQnN}TYfz@MkM+&OA1 z@O5jESVc`ymwWm+iAM;Ka&qoEBe=V}GwSmE3{(?2AE}lfmOh>-mr`khwMPA({NE;!u| zlj6v|riFTfdau@;xrC0-Ld%nmx^4}zcshEKCFI$@{6@yQN9k98JbSg$aojz@bleG> zou#XYj9_8?ZQRwLq*v?ec7neBTvj_`4jL5|)kdq!MnZmh3lNMy>ut)LcfXw+fWQ&Z z7y^6Z3ibg*hQsk#qvkCH0wIu@5a4EudY1yIy`U=&KtN4aVkiWggQ8`=PGX%X%VJib zA17mZ&Jpp+N-l?L?cIb_*<{LOlumcH*bn{h__%FK zV+;1P^YWtd;CQ)e?6?d=i6=L{bz}w#c=FqU8`cLe#9cw|=O=Xja3&mS2jG-}ZKzyP z-@zG6ic;wQdzFHB#hQ*9Y$UThvfdtO(g3m+Y3A^YSl~^) zz@JOLyE=~YtqV~tF_B*6lf>IekBY*=3`JH<{FXVKKMDk5vgsQ;Uf&kc)CSzJVh_`; zmRUFccs;yBqn~PKCoJ3XCbRUPgw#-{*knXA!4pD__t00-e={Zx0EqQV)S}1ujsfm< z$-G(FG~X^YP5y6eQT4V_-RA6hFVx&DO~w@%;?EJX^h{t^ITpmCDQ{Hp^9;5m`t1e<*DfJ>djF1sfKp!=EM&5{IyLoUrnI7J^)aCP$jSi78<*WNoLfPy8+}Hbce4 znl{v5Xu6)Y=OzU;!}xu09wCX$$6(aQXPag4N2|-(krtu*6Amb*S#O**JMck5`ys_pX;NA>&9v${7 zw`j{uGTB#C3ttM+CC`jCL7nf97`#*9<8@H)N4Tmjy|tL@ILE-LTIicR((t4j@oK@l#%W zQO`!`OH)Agt)pYYf@kaRPbiQH_$@2d$H(qrTn0aSPcC47(kD#nKd#lXlod2(3cw_pSNuh5|gmzqd4t(8e6s% z$Z~LYKL3p{mD1J$nyEEY8FsrEjyk2Q`0vx!0J);se3NR;%05he45zLiUTqfP%)hK4~pl1D&S7sE2+`}x;QVY|$b!-lT* z;a)Fpp4kJgUoX88OwNhk&juiqfxAt$9Haj#59k|pJr>)Ea;)IfLDmXx_nq-Z;5j>E z*E1lJ+<7+63Orbnir8EIg7aVLYGng^T3A1tGjQboMXbWFoDzTTp6t41C>1Ca&2G;9 z`FF4{n^H_}+0$XZf3z#gHj@Cce^pdO2aNVRcFpp)8j&Qfp!tl*w@-imZ~zoOmY$a) zMxjUs+>oJRfK{VRghrHtoND<#vy?g@5D+Vf-o94UqGoy*AD&W7glD3oIv-D{DUxED zSJCX6DrJIFLKN+D{)zM&sD+f`{tDH)AIcYtO=_`9I3hLph=o!x2I9xOqaCB{Dl)G4 zUi5=$rHg-CvlKxpNX%G8o~||U$JrDCDh;H0XT`aQrcinw4|`%Q^^-Ay13Y`be@6p{ zt8R99fhkokF)#^YNLJt{&Ryj@4n0zTo}i<{e|$FuSL$c&=&FmTIV4iS(oe0!CRCl* zaIci?ksxYDktK<8^m+9u75DX^!3GJd<)C6nDL8q;GTst6y!$wSf&|o)M0(BI#pm4c z?^5%8l&>k>0CKQ0%Pong!I271QBu&C>sV(byZYvs1)Sso3<`{49MU5JM4bAst2@x^ z*Hd|DrMBkp>}tO4{d~PY->-lA`^`AD@d&N?|r?e zo&V}i&j*D(_Dqxa!Ki_4Cy1w=p2_aJ_2ZMrAIBPCqU#iElb;8Rm5o&_?KQkYN0H*{ z@+wK0irp-`BT%!+fq^{qP-l|XazS97f7iv=(aBH&NoEsh`dH`}$`i|w?Ri7+Bl8&} z?|F^!%4G<3blmy|T|vT0GypnJIF1x9+kd|78No_>-_X8Ryl59p1)O9K{uxFTB}>mK zqe+BWpPtBW&lqO*-cA^>&>E>uH~UaZ11I;3l^KJM|_-u->HUT*s!AU;$ovm$|m>DgZ5x7H{ZfEgV>tK4@+FrwG#g7dBI z+mHV*3t&qTp3_mt{ia335|t`~3p+y&FBGGo%H7Sa|DlKwG}2eWXCsi6Z11VEzA0)0 zK$yI7m#Y#B}XI+q*Z{G_WAV7KTXZ=>bRk^b25svdlcAxFJ+0BA|WI#9U9aV zJV0J#U@Km5!~3&SOBBKfIInSje-3j8lBGnlX2Llr$q(5 zXtR=dGS{m)u1JAW+v#u~QCOB$Uc%q)|N&>;}d}C+u?|9rtU|SA=iGTx`YXRPG zI@X7I`G8*hv>kMPJb2`Hx=aH7*UV!7w+?;rdb)=-90xt!f!4bvd*JdD^v%u9t?dkK zNJDQyo>x>kTd3j{bS9sURPZ?mgVXh2$4V5uW7DdPpo1406OE@i71*#)@7#%-Q6mc^ zR$%5?(jU}dR`Y9?rLdNmu!wWS55mKPqjn(J>&!LB_PIXcrYgFzlf$? z!GrRAB@teM2(J^rGXJwNCeiz!B&C+8uVBVS2Gv?Kjv>@D1kDWX~Z3dB~m z|F_;KsHuPeNYXcwn43DjR7H+Z_ycg<{(2dHEdZ2XKCergg#($$X%|TG`Vn`A%E?Pp z@J6#3Q*D^pq=>!hJUx0yc4JJ2${=cQ74FBwvs@d^(TJ|pE5ff4t$9D>nF_H4iQ=Mi zF{G?*%=5SGYddLER|yK@?K4yTJ`bTvcd(20CT3$`g|bz2TS2cJJS54&qUGq+)YZwc z!+*6;FHH+nR#qw`$~cxwf<}Hz_>Z2Ra_cj8>n74yt%SBw7_voHaKX-HmR&O4e0^D} zm}7aFZh%`$IWchbQ4?_dQEJ3yrca{9680+W^RtQy^Zjk)K@Gl95eo)I+DU@(U7n#r zjllqTUXs3kYPoLZd5}9VkH|6aG>^C|8n|ArLg8BSjTfYFe%}T18`wdumj|TR+s^lN zxeu_XO4I}Z3iZ&jRiXZCUtxyuTiwf}po`k;VZrV`JI#N`{tf}?3`Dmh+hY(f6uRRo z4vTBzh+h0Zn!Ylss;+BW5tNQYBhn4hN=kQkcQ;ZJ5`uJh!;vm&0cq*(Zt3nW`4;!{ zet*Q_7z&=f_FQvbH7WEYgv63JreE-rgpd)`yp9n2z9oe;!QQ7NiQYycFv3cutR77# z+Ql$i7%GD>?A(E{+a? z$jJ>Pg_aCI-z@!*{_B2FY73zbDg2EH<7{$4K@}sAWa>O1QYSOMiq+%7(jkC8CgbTf z#7q+}m0L-Y=zBatjC%V0+x|@XgcV{Hwg-kGx*;7-Y;hJHoyTjn%6>QAt?U(Z_7rpy zA%iZl4589~mDpbA3<*W}>|o#Z@%rC?Z;T{-*iG(Js1+zvhMhZ`dx9={l-YI7O>M)Z z<#kOruD3UA)Xt9Y`Rw=vz;W7|ehIA7n&ne8Ndp>*U0pwd@-6XhHy9P=V0)DPNd7uO z?+F26bch138aL%2=1>WU!h}En{r)jL+TI>PsTxv=1ttaUx+3w)by31Vr)4N2tYL6j z@MLQl(wa?H#h8}((&Fk5g{|gm;BtHL>tH5x@MP4j4=3!@2pm4TqmrH?0M&hBLYZ;i z+?g7)Ot(=iPpPf8tIHpFCPG=MuYe(q6SbhAfRKpD(ajA$c(3O1jri|Owz@Czh-*%h zP16TZ??Y?Av>}J< zaG+56#@1={OhJnuXv;8$F^xcQAsYr3YVta)875y(`#&Uy1&G!(v` zcHwSI8v_5(sRsH}O8?EG)5y?qc?tm@>`TzgK8rtBGG-jGr9?vm;eD|QP{6|*%MpiF zlwiFSftFBAcgA}T*V*8nG<}P*Us{_k)sF9n10eaV4G>a(RP41ysl-E#HtTQP4pH%` zl!)*2xAV7M&}sY<;aD$Y&-r(?BZ#5A6y4mYSvJPBf3r&Ai%W!6&hX>gV^%^`;G;BW z#v4SqJNV5n30d_W{#5_H?Zu4CcCl@qQjQX~J|@WtjNcz>_<-1_9-oIEFeHCen*j*e zZORsGPl`hMjITTsk%?xekB?yq!t0;5B{wm*kZ(AT4EW$rd^&jWF}CgRf(p=){N_=z*n9Y9PVY$;6yE&VqloS zVLFl&iO>5%*V_zLaI&1Fc-934U$79@`LtDm?r)IkuYWt6@oOW$i10#1X z2^J$b7kQ#~^vrmb8E4u*Z^@Rh$8huzFoC0M$Q{gu3zW{PdHh7+mc;H77@OouaS?)& zL{z>{F{+d(QZYJ^Ieo<A9nYu(|NH^|aJ4_x>u!wgMMeaSbA|9UYw{!SQV=B(SQgPHu zyM0cho-n)DF_vOFIt1S?RgIy%DmBSTkO9QADB7`!-|_tm(9_vyyKxZnx(Q?{{7@=V zU`(pC{mQqRMuDK6^ySox*qj%*?mn~f8u1cga`_?SvR6u|G0T|9cGb!VN}NwVDRPP_ zVjpZu>0wei%pN;V@{vax>$%@jvdiY!;j*Bhpm0&oWs?nslc0L}QRL_DVWpN#BB$NI zLF00gvn1xrS1ZXXEmJ5`37+uRP@J=2ul!g`OWDqM^7o$?Xa$lOb&br;-^i*We19?G za*9rl3b(M;zd4{nk3Bp*3~D6>3qv^*;F-b<@nm|)13Op{A^DbT^^E4`=FgErM-^ed z-CNT*@_e@xX=&P6h;R-t7@{Wb*LHtB{4?Dcil?mjEa|blC1Xd=_Bg?>*~wMKhRH&* zsM+Y`1HYSowd*y95Wn_xyf^0acno4^i;&7o)O|X$XHuDi!@1G!^y_^tVNOk_K2M@o z(;QE+QG9O1K5G?qbv>9#Wq=S7=ElpiBrwDw4Z;Y_HQXnNqcPyzQGBl^>XLw*ns2aA zRwEY+=_0Ky-9%LN4`;tdluAYYGuH(N(A^&MZJ@qn9r~d}2OPbDruaKrf;5%4{+6+= zBH}`BlwS(k(~2YjTah@UN}C#(zblcda4D52YpFnSDvVL<=-KcH5?`=a8MTGvQCKx0 zVH%cnp4s_gMN0WCgnz}>H0IG@Or}VNSS#uBiwdhcf!2iQK$!;1qO3f7hX7oL=0BuE z;rRm)Kppb7mqCZcE9N}oKz^k>7VVh8IMn*|_|+9JJW%K24ulUFN#<#lj%&<;GsL{( z0vDsElA3@hRxbnT`NhNyMn)JPvV2pQ456%VmZ?r3lvGs(_s)#%Bx93hsGM4VZo9)4 zReYAP45SM)^aU3D;xCGBUwSZARP&5N6yDXlvVZ>64lcbvR0cA%|sT5&UM{VH5TOWIn|is z?0G7T)hZ=97HjQf!%7M!nI3zz-`r!cIn0(o-_#5f#TuHr7Rn;Y)OHvYuj6k+ z^Dl65aluyR0Kq8jlOh9c;6-~@b&v2}vOApKfU$dROjbM3!B<^ z0RqT;%h0I`W~_|5DqeL@^JGor2MU21S>!1SIZVGXe}(}X)qVgJGNOqxA4WX#G+oAV z1SiqQm*m;3Z!-N4Hh6C+Xo9Qp_n4*Sp8wJNYFgX=^zR{*Y=E`3p{Bcg`s02Aff{;r z=Z^u1BzhS6j7IK=Ek$vI??ychZ7+UdXkh-gtUih2@O&wWz`*SWAxTzbnGT^?)4K@- zfMY_vZ?Y7SzrW~Ur7`m#erlz*BrDcdxo(%hC2&-aZxfJXApR7-K%*mX+RfCvJ zE#D|4e^<#YxF!dd!GASf3x1qFrH!SC+4-2KhM%L7t;1-nMrV;2u31A0+R-wmF?<(USIq}jP13&3)0QkNngFu5CDs7g7+?fWJ}!QK>QJ&W zod%hbDIs;0tQ)5HAurNMi)Yld-#=gE3kw|%Iz*qiDI&W(?ONxJ8(0n9-QCMP#SOuc zG6~sPN?;XHcOdil;({H|ER=vX4yzz~|57mAzeBG^(s%^Dt>XTA_G!P)ZGk3EcFD%e z7Ug#D97zbkO@Fl(l`71^}AycVsOr;QDtzxWq6>G`#_3J z1q0GRg#|moO(dt4IwiJj*mhgO?YOeH%;8-NNoIo>ULYYcv6J&d@~(5JWhxkTfg84B z02{o53x}*JG8%LrUho}m#wTAp^v8DIbrXQd0{%#mvqdKazZXla0qWxr%-T$Hc%vK* zpfy)&)G+}EM*R9}yG21Wam*BMg1z$mkKB$-;SP6zBZBCRME5f97}OLW;9gcWJ6ncK zB?>?0Y=*UA0&zdZxN(s5D(_d5|4UIHXGWH)M|9hgd3_dodlWl_PvOrf9i~4m%C4KnU&L}x*`_eE-xfgQ}`i0(N3XMO)*h;oO3mU_))_D zGEjI-4;c3{#rvuhRTEGaaE_tjqP7~E7YJV!gZCQ%;T{sGe9QO1@P8AFfxBQSy4 zYX<76#89-k%B8dl09Sngd|X|9aeugBxjtUmZu|ZQbp3$I1%VRD`F&F*>f2F63@31F z*|O<6!AMN#`ZKlI?aU^4H^@EYbOQsx2-AN@VE6a@bdI*%=RU3Q5|XC>(1QedK0Zhq zllJeyoyeBnbUty=rfq*#;B!|1OC4p&PQY7V)eh_j)?E+~+|+a1uENkeq-4);b}oOos|#)@wr|0{ zRklOzreD29i1{7(ocgGg*Ej`3fqKWu`SYMN_vU<@{CWL|kFWOiQBE-;CM)pCqcJjy ztdwLM;88jD2`QSW2uDl5KPG=yk6N}LyVaH*LLHoEwgd3VVw5b-*N>+rcssVSUjqJu8(io?sX$gHi}U=sKW$Gne{5CFY` zvBk*HhAeRpKoK)#y6XVGv`D4mwtW|*1*oSzy0QZRf*LNn+GxV5sCGpuf$QFFRy>xX zyQ=ea%y_x!D^ibx+m=&ne^Sc@rQVJGQ8w2f)Xnrlv-N6UG@yerKTiZlDUj$w1D-jFgD$JMw8y?O}bZW8xni zBKb3-VS?0rmP^m0#rlqpoF2c=md`^oy|%XBkG*!bw>>O|cn~oJ2M8;X+zS?rR7r@M zw@6tkmtk=B1Dsy&uIzvjF9C}SAuxn||G~5eot}YXAwmTq1MGCF!0-!Fi+=s`&$0rz z4>*0^col&20@b}A;TJ_7O{iZs{L@}|=g^&9j~sHSOcqH~w&jn_r5ws}_RWV=d^93n z3UDPggJ_rghj^pPKhE5FJa}W4P&S8m-`oxV&1b@E%YKTtksT`@EnC2wvI&DKT5BH5dXJVgB za(pp1i>6=a5RQ|N@1>-WxQ=JCgP2Sp2IA#Eq>9=BOku5FF4L`Zd*DQ z{`+n!pZXv3y|2xB)V;#riM?+~ua6d=Cl!D}fdn2=j(bpR2&%Hg|`mH%MVc4!I zrL^TC)cNl8{^9!R?0S~PhShu!voT52{=@G@bbr&0h~&tg-J6T+{3fqetFzFX&r+}iq8z-hFU>PPqR9;d*KudQ zXpL4^u{yKtD^Vu&uPl+6Eco*9XQ{>h{+x1^j!56&9d{*S3(3!^Fdvvn(&2@;=^yGC zp5xGfp&oD$>FMbPc&`IvzUrH@WboWi@bSOl(|wR~B;z6fC0UkUpcsxDs`ALd3rB+6 z7AFqNYv)|5+!A$GoRA3eEkppEBP{EKh?hK}m^H zScw&}Rz>#q6OZVme%=5j*?{)rOLdpA_!zb?i+$ooxGQ!x%KTk+q)hYpzb+mBm zW);mR7+Gb&lpu*QOCr{d@a*1-lMtXIVCL;$b^{hax0@4isFt4H%e4(sc}iJ|*tj;5 zSR=NeyB*ti-nu?+@{pd{p7y0rVmv*%KR*B0cziYiMu7er>!y=MCs1~-zI^$NFpB)D zV>CuJfI&uL91jJ1g8j3N_T*pM*Il9AacSBn>j>BKa=)GK7(MUHEv5Bo5A_&gHNL7$*Loo;Jm8NWR*q23XGxC-x8qjTfgFZiG@1s%BCY!rxLlB93%V6O0W3 zrKt8vBrO8vV)L@4B#rnAxLsb)CW@BoK^I7X%;5V!|3=qi)*a-zg}L>;1Zrj!9`zgN zW$$AuU^@vL!;>AOO)LSr$Q&$0lDx%MAAOptGU3GB!iGRwEt0U58L4Jp24RMfKhx1$F7)aMwUn8PZy2vw& zYe+qjZGy{OLTOc#iie`0I=|kws1+^wBR^V-R;sL5>K5zp_O||HM~pPlP`M-#^h<;p zndn_C#o6#R+KMq#i}^qHZ(5>2tNT&AH?=>A*i!%mOCrN05}>?pzS5z5ZRnI-bZv;I zM4NygA;#XZbS%CsyQqBJZ6}E0qmBxM+T6$LHCX{>L6p)=1RSV8Yl2k&cESNO%cX?;qU5mZpKP58nS3KVfL3 z`*zg7?Sqk)e=fsz-o4dt>3Qo~y4XtSb30f-p6IoBZf`sTCPNxcILMWhS^q|Z7@U_J z4c|2xt%5C#i{PfIEV-U6Bh?p=JcS-6Bf_Fd7?<#VSiT_rtMa%Og09kU*Rx>pW+ZSg zuJ6K%PAi~bc8n^x5D$#TY`}^t;@uE6SSnQ5ASQmeek;~OBG9EIDl>`N&8Zx<+nJ}s zm}5zhU<9Xmi9m%qQ6z3PkLC1a4)J%M$4z%$@J}J>R%_cD-yFCIdIi`v>VkrUDI~nq z$lQfL1*GW|-#MkXcfETsFl(o*R0(gzF~I5K>7l;K8tGrg*_YSJSJ5`(#An@=?^ELB z8}a_hDhagHB|m7vJ954VSVRz#_}0Fut^BFm9)283F3n~lNl4op z8mc(zz8Zk*cJlWnwRr*70HvX}qN<7}DWVYQ-hIgtt8;#pn9>zD{Xz< z7_@(CI0J@eWlh73u>JXN%QT@RD^+y)_U6~h=&(Q8wSkOh{P+q;q5fW6#80eaRwCy| z27E9x&B)v2hFcO+V;$EZk5qCVpl~XlsQa!0)x$P2I*ebt$y`H)8Azv;d-?r=gqozQ7*nDP!n`R_L>pxXARwi$n&{mhq3;K&DBqRx2K&~HS)4o^d~Fvr zx)`pttla6p^Iq%j0jN1tFOc`m+FL08HiYE9U%1>e)Re$jl z2De(%nduGX?Q<71_S!u?D5KfZN$*%nrJ9-)DVQ+XhP8!`RWR+1dajB#dp~kdStTs+ z|D#_eJ^Dh6g{a{!|2Y=HI@mH5fc=Z76!r+S>%$p5&pdfe&4=mK2v6V0de+qZ_TzNZ z|6sG0V<(_Pii{#s{)Gf$l?+m;6d~0rMPM`m3Kw7>;O*(EwVhV)yf}#fB}(Z_y2Ah0 z0`L-znA_HI)D^1GLGKE5quAxP)WRllVZY?xFus2em^RqcA*GKq(?!$P&P?2(0DxXz zxLJ|%+>2c`f3YgsIgA~_f$)vy2bK>RN=2~Wlpvk;8w~&$zF18A7YBXtUy@F$KHSD} z(E(KFaoGPT1`@l+{ipZ$IUt-vD-Yt`Iw0p2GUL7OwCH}UtCl9qI?@)e%p4#}5-da& z_o64_^t-QWDkSoDsng#k1x8Frj~SSN7yt3Jf8r zlTxKpwl$KegLGLYYYdcOaGG*!yc+%r{Ak3)gGi6I3*EI0f)+MmMtSLPifynYadusM z+Rk}nc@@+OrLY*@4ltkcM#SeI+qL$LPru$wpt36JHQ_d6#|O}lr7IIB zF|vmK0vP-Z)U9s}|NQV0^kIip?O;qSR83M)#h#d~RKYX~AvtjnQx=Ou$YcYsq>N^s zMp>3N!KM(#0HhQV`t-1!B12^q|96Z$e_}ViVmS6Tl&qV;tY@yv=yYPfMo#{r2_k`i z-c`OBAe2M92W=NAY#E+}UXSKm_M17-Qa`Mnvq?Im7PwEeMXh*#7s?VSQu(1%o<);Q ztfpj|?;zoBs>zUcIZu%}6bz|(Sa;2a@qChocu)o97y^oWxq2DC3?dV+C+;xACF08t}` zk%~xErR~DnSIXT*dtPg|9n?v#ov-kGIvbChgqp%Yy3{2>)Pxq}%kqrf?`VVWk?%9gl-4WMr4K-qw8Yb+V8N?xXE%N0Y zeL*lLSdvr|e5E647%v%Gs78%#n!|D+x@b1l zPeV0u;!fRosU6hXx}8Nw4nWq$e*|)~9-644hNc~m-2gqq;-}wXRP;NEO!N3AUf%kH zM^ST9i81OyvQ(HdqLVIO|MpaY2J+wlc>$+o1t{J?V4hkD5IBKZeJ8&Upf(f7V7e?S z|2b;I7*llh(1LxbjF7p_LV$`VPc5NDb`<3(O4A;gJS(dt7=Oio2LOl9x?|-$(i0=| z*x=c2)jd}07DtlLznV@=bt(Z-%_8+4X`9pE`b@~?Q5^?-4Ym0vAS5V{^45(M2nZoE z{b@`T7~?P!6F25}?k>8E`6)(RJ6EIZ5ms3gM6M;AXo~Kc9QG#BrYX`%jEd}{3Ipf7 z&bm)j~J zpX`BvNvKpQZw!5@2egFt?7@y?NZI8d2k0mKniN;p*8GCdhyfSh3m~)SD9+2yINs~_ zb3!U}&y%({i%kx39Ua2mxa65$SDLjSYq#FR1EwQF^vN!{&TVjBsDBqD!65-KZMS_< z-h&fhY+qj4WJ(98>P@g{)PH)!vBpciX}3Gk-G`ypVejK>Z?wla9sp1L8z}b%*MxiE z0>68jQc)*cqx#KB2byJ~w!4?wOa9NhJZr&x{UUyk@2+jZ6;p|YV$PdIQUvsi)ry!> z>9)y09=aZ994eYNefOHfZt<_UeT!hdj#&jo@4U?61kee5F{f9mMv$Lik8w=%-FEjk z3{GW|7gh8>zIV&qnL>t9MEXb$(pO@DbZ)x3^qs zJ^&TK#J^eZM<)pZNR3{>Kn*q203;oN+;#^q^RP4yxDdC)ni-(U2IH7V1|x`CPKRcO z`uz*}u3EwMiO-Oe@C=A`Vu@L(3j-sIcNQC6qn@Q*6Tjvf8S+Jw64QPy*hWUmgB}+z zQMOqRihFbIcg4&3Aw#bI_iqDm8#R{!I4ezGXK=D*?vX$ggM+{2gL;bjdC55)wP^f4 zeJHE`6QH~NZynKWY-rA}NAhj?8zCRl2s4)gQ|`F#ef%!Wj7sSSB+hfZxYRe$u8CtQ z5FAJt)r3Z%Gl7(nFprENF#hNipV;dHgMO2$y!nb?rmlSS_*&Dxj13Pt`M2KD+%!n5 zZ+dDA0ugjU`}_1wSM%0{#Jt&K7Naz(oZOrnXJDHNS>%m$9>jQLb?XiBNn5i#4VF~X zLx1@RXcW(BTD=_gd{y6vrdD%ejr1HUdUXRI!Wn{cdl^(!L z>_hXpFc#cU8tc<8R-sKQ#&VRmXGT3~|HcWwO|KJZ8*&<&xWkd*GCyo)?zPh6q?=8% zHl?ng5%-RVI3xL1!(4p7y139MtrMmY8>2n-6BS!FH~H|RH?cvB+~pj0WlAgqId3hn zZ*CdVMDQ}yR!TlR37M=vaE;gBBkY%0douX+KJxfY>ZaGxN_8)Wai5Hhp{!eifiRW`7cQsS)lg80{?)7jKJ$?1D_3ErVww`F+E@_*IUl1&;xZm+N z&-|L$7C@3D82^`w)H@YD79x!w8mq+0z!)iy@8WS_XItIS(C=uB@cz0gKhz)hX0l&Y zXJvhPRaox+-GO6>M*o)7-hsu+^`pC29K*oRpFan&XH#6A)ZEG~2?~X1*=4=TW{1_{ z+L<@{mnj2=e@zBdkc7OP&&^IIPrg=ZWlI$mBRb+2Z+50&qk(y> zHd6i{J2Nrk;UK~t2>$8m>7DP^dY5VsZ+{+y+k}p0z@HX11eRIhC4zQHA{72eRFS<^ zAsHMndSLPRRX~Q0legBZKTMKxE7?nv(0{(Y+$w8CDJg`Ob2}4nYN!raS!@J+gq8EI zE?GQ?2R*`-Nk4bERtDW*nC4fg#Y>%$8btI^2T zv>*NI`RB9`VMO026(D}yiv3b00Xz^KY*Dq4^M&6{O)}Lp8>_1?&9}F)`YAJ;oK1-w z(=%`+V*T?AoyHjkSgi-F!J`pq`}<7eUmY$07~TEQl5UDFPso=c^dt_RKb%JEwOE!2 zd7T4=uXMdqt`Z}tzt81$_#dAj0iZTPl+?LawNzd^2#E%86Cl+<6Ab{UoSG^>Lp;Dc z#nN=w+V-2tC?RUvmomSLbn|rUy#`+O!D+FparLLZ|GK@_SO0fDZ?^Ow-g=)b9mklF z^6+Te*x8I*OyYI26z#|4V>l)PZBT6XY7mPe;a^TmqVc|HQw3~%(HIeQE8gx&=hPDV zUjzd?4XBc!fBRWl>hRf3Vt#*>6SLuwsDaYMNPd1hJsrBGeL9H!)2c?Qk_JX{$GKmi|c;RdgW2y<4moBUC zGi31O;pR%GtlV0JjV%!@IZ1;diQ4bMJb;U<3vyHB`Mn;MRau69U!K}ZVA?EnyXbzo zzG6oC-U#)SspDv`LjJ;}Z|Gv1()L4K6o+VLUI}i1nMPeSO(18EL<$1Is;%Yt?RZEB zTGyS#h}>^<^cGctwG_e4#nxc+RBWCE{!YHHk!Cm(w?rtzbd%YooFq5@c=?nSiL^!U zkKWrsrrua&h+8H{IeXgDHuN1YP>VxP6U~Ah=F;p8hVAj*5PtUNZvTN}Wc}fT-nLbaUPmZKmv^lgwdTl$1iE z5*0eoW5^LNu5N7jCuO?JF$CsesAc^rTo6|>QDCnk5gGfy67e>`EwY0XH94~LE~U7b zrugJ0DxuX=u_P^!h@b<`@Jr!3Nho)F^d zPSM0mJC#I)hg+r@3E?v%Q5`Qe1lTTs!}}~d0)H7aB+qG2Z3cf5ombIJH=0(qlcW~-lC z;>A|u@BiqJ-Rq-Te8Y|@L7)cL@jL!&Z>b>2gA6>9v7A< zxG}&H1Hx5jx%onEdWQEv()-AN(5xA5GMBM@&9hxrX^&s8%BZTVtJ{p7wj_(%N5t5H zpYkdqNErSkoKoPm4W1uE_(QfY3jgfLRTwP%)eF`Q-$ycm%u3EQ5zEf3-!dFC%f*^Y zHR{u`_YnM;%H=~s{`9vT)uBVhRB7pkao4XPikkQs*Jhm&O)HPX*H0~60CoiHwZf?} zx3;!G=+4H`lFODk?#^$_>kDmQ?UlH`PAsodY-mcPR6PE z`x^aB~7%hvnNKYH6;DH zF34dEcAb$~zT}n-9d!toI{!kRfaju~wnGonjUvzkain{?Yr~C7Ryp-mt!<=PBZC&3 zUBarR>C=5yg_~}td7L{~LdfT47qa$L708yJL}GILZAvx7YT1DgPI`Sgnye8od82oD)hOiedyVel)P zAmOmd;qYA`1!o@2Pzp}JYYdj4mW;v;UE7sc@e~09qWY|ayyKUe&b=a2m{LGSW-lC` z4f7m-c6ROrq$5a|`LaO4-PuogZr^mpy`9NBVq^V!pbAWI$m=g&4t|&yDd^T|uIp-U zeEUpgpo8SFy-M}aZ$mFCLcFPz_vR%x zl`3MG2OkUI)CJK^zDsodDy#l4k7HnUm2}*-nzKkK>kpiOMo;eDb23J{mI*6C8u$1u zSAQ2o{?jGaGebYqdcq~~raxY(>EUc(aClgWF>TVnzMhN1&!bT^+c@*5UIQAAd%fEwt(fq zAuu(vWgrDBDAKuILcd-gIb0v<@{X+6Q#1Y;(-6YTCZNf*hf7xn1!;NBmz{wgB97o5hKZ(;hk@;3U-oor48pykWAyuAq$ zMpTsHQsXrAWBO2bxTb+x`8p5I7$qbcwulZ#n(cD=UHG$DK^i;Jd^@G+1G=G5baLG9 zTGC*lhMbq++-kqQ{_S{;+NGAEOiv$=YX%%MIt`8=&M$$|(M)bKNs2ZlC8bYd(%IdO z+l?a6Wc1MVm65U^PlT=`VUS*V50DK2a|zK!mFe=tKv=q-9>ocYAQbhF3LUmGcIfGR z;)3kj80?H~^+vkrYf?9&k)h_^Gvktr_o4;WBOr4l^Z2yRXB#POJEQ`8dB+IZ6afhu8Mesr@P!Lo3l)J60V^aZGkeZA}s`HCQV{~!<{&-lL zECEX@2LZw^6&Kn8(ukUNSp*fcW(y8hYq59=*c|VVGD#E&QFXX4tB_v)qO44|O|({J8`Edj+v{~W zE(xmfOiQRX$Lq#WB;$NqthRAQyE)1Wz^r|HLAOq`@wejHbz5sYQ8>kBe|aHf zpIVF2!{Pv0FYx~W4+AtdBYfASU+%;YB43Nt*^eo+Y^x13b8rMfr{78sP(ff)=w^hp z;0MG+Sp?Gw^%?S}BOV_gZJ<<^Yrgvp44K?u7Zn+@@Ur{8Ee?*1;rDPXt)5vyp{ZI< zj@C|-7~qm0yM7<`_sC7r*(R3w`i@s3Mr(SBR>Dm`72tfgZy&iHC3inEK`e1 zT8_>2hKkNySifU3muloe*x15e+iCp1K(jbkU|8a22+Q4Hn+wrexhljQD1fXb%}az6`ZEUqLR!+qgY<`~6kXn*u%__NOd0y*7V*5fd|Fmc z#S#xk$JUvB(*^z%CSI>H5_lz1&dVjUL#^F&9wOe8CTb`@*jt;J`1^Di8#F`PBhc;V zo6zO<1K(+ge6rCi!${p6PU^W<;1g3T0g%Z6I6Pnn=mJr5qib}FG&3F`PH0r=G{)mU zVHHzu?aM;gLGZrKif+N24N*_9gAO7%U0qrMN2{cXwqsT`css!WkPyOlx;oHYZtzF| zKqM$-V5MEQG1;)EA^6waJiAOLQ6n3Eu;=~i70T~%82jj8bNJ=$3WuUAIOU+0Ih}9G z{uhD`vTi|G2K0V$`!`^g%3JQ}T#pu4^OE$0I=kgCV2ud}^3+)V9oQ8N%x5fw_pC#w zp?QQ{-geR3&xKC8v-O|;Kk7%2MKjjw85R%#$M@J-JvcI=EE5KcXsk?1_o@1TPbsy} zM9ADorKQ&az%>5z4AARt%rCXI_-`-)0)5Kn;=QR1-8wlz2al3N3!pd{BBVg}p3@f` zhRbwzIADJo6XoguwAOli4+3sV4^edL{R}8oQU9eyKr6PP=3m?3GJdmqz|gy zIg$ovzRK2uSh-wPW6?@QB1H<%d1!25=D#lb%=y}s>9=npR_=It)a{HH zK9*X=Ee*Y=^9}**936Jh3P{G>J~*RmeOzdjbv2IyOKvbrqQIg~hteu*z3UJO38O9w zmQ7@ztEYcHi}hcF^gT{dQcY(Qkz8zx-NZ;B-!N<@j_UJb6@Z8X!2Vfx1KO6s zp`kG=_L$l(;GG3a*UX)q;&6QqC%`@NrQwa|UL165GYnTz>a-ka0YSc&y!V;%e=cJu z=~G2_X4E4hx7UrPF7BZddl{YpV>CYfPbU<1|?cdv0X9vc2elFnFek~mSRQA>yyR~y;&bPcf zev{Ub|H_cs=k;~mNL-XxbT1-l1+hscnn6Rv`W7uKgkeHzI!@vi_e}SuG9HpuA0+`@ zd}4@F`IapA#P583aNt0=}^G1&&4#$vzApx*x z4iZ$Pn@S0Jo9QXp>YVLg$%5rQGPpl-fquJrCAG7yl}AtSHSiJ4i5iHu^wS| zvU=I7)+TAqlR!CI+v(sLOSHJKoC|28x?jEhb8IqeH0OMQlHu{nenx5yC@vE;rtp6x zSMuXw7HTUPLe^(FBV{-8Vb$Q*%VnNqxi{s~A<*5|xr6Q3FPq*_j=%XV^DCDW%`d!^ zN+4TV^ro#K1u{=dngGM#JM=hkF+M$)0rw-nF^!M=JdU7%R*Q-@EAg8EpPz(QltKI6 zDz6hA7C*@FS!wx9^p9H4N+CMdEjsl6%tF=kA(aGHDwXN|phBh$3I3blz+5%DF|;0) zG?(Gl&%QNjbrn~&^))qe1LbQ;yb#iu7GVl@y~=ND#yE2CtEyZ2K;`4Tzj4=D;jpr* zPSN|DVkd1ptaU0Ug4gKof4uJSVG?3Y(Yn*<|nA zX|nkFO$bGhzltv|Eeg>Bs7j~VE6uTf(56{Z8GcPk>!UBpbgI-IPiCSjyy5FPx&%aE zQwM|nXHKx&K>Na@`R9o-_lw)oIz7{Tt!>Z7p}U&5>^Nqi=;J~?(|=UUPx5R;sOzl` zI*sgaMtSk7n>uZ{;r=%iL7DCJJVl?TfLj=JtE_nxMrAA`d;N6hP6eN9DBz8MvGx~| zQ)TTYSs~6I{@FXT78yUVBzoGVjEoZK%Cy!wi;TYdF(caEKu3RM<7L>* z)Y{lM=rFz@VaRcNEARW_r4kY(MhgXUo?{%Ko^nqrxFb%N-A7*7bN~42q403wioEs* zyAokJA|NVD{y_XB@$g&A-nUg&2+>Q6DfBl%3?Vs~IbvU~gMOK5>$q)c+JU{Nf*|&z z*<~x!BT=i~4<4)b*sx2XSS|U2>Unx8ZQOtM#G4QE8A`pn%QztG4?I}waDjD*|0_{F z0xs9m4?qRG`J4>#R@P==t8gJlfrhYvod)TBujl-{L#2%`kDpX?cY8YwaQ@V^eFHbI zROZOwU^uO?1jNR4^2vg?jUKB)dFq2&cN$OgP8xvH_5-2!CqeaJF6lreriO>vn*wg+ z0c2RRWXqwd);e(~`zUJ;`;!!EA~26I^SAaM95C1)9&cvq|VwT?U zM54|CqngFO6%;VO0g6>FMvNBh-TNi+LOd*ngoa%orK}ei2cDY0GV~z@xX$N? znkw_bbz_{NEm(YnJ(&DF5e%Ol~@0+7@Px?u3f(D*n7-w z7DKEba5P1V4hD%|5@1Lr!6vYw&$5I_V4LSTqKM)j17-tGBE=$A4K2;J$#Iw|E&Q37 z6d3wgC5kT@Eg3(R(C%ENW12Y@7k5N$FAvF$8&jCr z?)B!Q)S~`pUu=LtI(phMvpi%R&Pr{I6hjlwxtu8xR7CV^UM|EY9W_l-uCPriCoixQ z_9^E>DlF+Zx_3<1iP?fT$D7Vc`+H_y$M`F+;d#FPSNDa6%W+Z-5E87d=5f5d6^9BN zp0}ywiXxKXp(w&pDnj)tMx2DHR}8>LK&1R$^?9G88zUmXx>j1C&`2EAP+@EC;>bx%kRiHqgBVLcP9K%z%CB zise997o^kb{yoF~DPcPEX`PUY%ke>noVp5p@&CNrs6XX%OYJk*#i3WAT6&gco@rF8 zlVzYu(LpK*A{WxCj+LWRb3V7n2T@32K-duA1he5Gf$MM(?d$D(FqZ0>!Qcrb^S{7(vYyywE`?Yd4}B_>(e*2s3hA9?X@C}imEH~Z7QU{ zNg+gUbD9Zs<8YRp(jZy}L#IAkzTX?xu#BaBCBwvNhHYV zMncS2awWk#PJR!6D9gKs%5U?-KGgrBot#oX#W6FV7tdNel^1IVU_v z*xFpp5;mP9C(wKYrT*;v@)ke?^9|Y)E#Q17(cg%Wx6z;$AwTn~n~wMkwbfz2XzMRS z18neYKmd8qNQSY!YZAb9o;9Y%<|B?*7x;@qUtf4W)r6(HAF!->Ljg3H$=leUK(D?- zI|O~`BR)ras`E)KspN9x{q`SDh1m{%M17xI?2jBD-L`IVHTarC_tIph+DKUQUdGG* z^)Z1twT(=oluXJ}P5*(R`89f)D%RS=&%SN}XbmxK6FiJ{XS$@%H43CN1PvTzwzsxE z>&|%Um*G#@%odDUM5ilAuArcaIc6Yla#ZT{?7}KT|4OcTu-5!FfoZ?siWO&QmX}mX zEVug7kFF{mOEKnk4TWfixO4gZiM#*9H_O_5&7S9bZ;wLh?RsQDbO*1OwOp`q$9JlS zrCI8d_&O^=Y!B0W`$7XI#=StE2-9$W3kMc6yYSmO4tNRtSN&7)mAkkJQg~;98;UGI zE@8ZgN!wbsNGr=t#f+CIE%3L{ZVL`8DR2?u{D@p%vq=MnwZTDTkUnTrZV$|08oGLh zfWH;Wi??0hNK$|i@zbX>qes?6l*kf5hXovC)$iZQC{CI}X2;j;^zJ_Xq(ZtLOctb*+!KzbJ1LY2(=+*b z;&Hf|eNDemjq!X6YOrbO5f|%{CQ}r6m@!aP%INlRd&%tj09rl)jOJ|KBrY#`6WBAp z3j1dR0X?uKjZw-f%c3o~T!rc#5dwGstjF-cT7WXIl=O{V1GfwXwjAUFZT^S7kcl*PKS0I^YY?DcWN*J~i*y|kKLD7r) z!S_7wF&Tu=$E&|?AE$tnMDF_t2kgYP9LUbbvOuPr zanDrgKyC_A%BVR2mnZO5Oj;&m%>#Ft697Vi84k!Gn}DCLQJ&&Ez^dEQoh9J$%_a<7 z^Z}|E;2Ip?sU8`AF&gy5HWhPKk=c9$KD3&S+97bKn`{0DvO7L|3niW)>($!n{^c2W zqxoffh%To;+u;J3R{rebv#FGS^xUlP8h^T1e7gGY@(ksIM0vWYfUd|9wRNDOSw~!p1PoY*7 zGebRiytJYI(>G;&ejMq=9|wQsJJs>_HQ8}4BV3i9JKjH5S5*OY+Y3bgtXI}W{Dm}V zqE^#QZwb0hNB{hJ-mj>X0-6cHsEx(S~%YHI1>8U{UcE`MHcStSPO7D*)7x>U$EH%kfieskx?AYTkHJuj%jO$VH zKFqOsly+q(Hto_Zb|9>YneuR9l4rKnTD@K7$W;@#R!Kq4-+*c7*~ADO+>`sR^lCBw zp7x#cz|WIg-#07Za1c@={MEnP`M1=6x8qg1#})D?_Oz}iylgc=uqA7-er`^B&K^l> zmhP$*D;Fw!%4F4-4WOcog*YWEjLA9{2GPJVM$}A#V_unAtu&R1c|3o8Fa8QA zm0=%_!$vF?L+Hr0MTRMXwTJvpm=sEhS*(DcXd9s~6Y#)Nj;3w$yy{ z_k;fCx3v;_-3CbV0j_c0!l9d{wjSk)8$)trH1s8Kt}7E13$6V!&ZR*Np)OcN42OCr>ia=Xz zb&xhTbc8^zg;x6&Pg+w;Eak9`x(SqNhMpCl-X#w*7HOvEKx^&VKD?{a>+CHNx_!1q ziq7z$xl++iM*1~Fmyeir1au&RIS=D6LsZzAOn&mSmoX#32t-8?lc7l^!a|)uWhQ7; z1}7sZ2L?)9p790eJ}=@DOi@HWA``dlll0fmaM{P{6^79M=CQE`LbA(+mBk&$r_X=F zvc;fC`G$gx#2%-4`1t#`GovH+NJEairix;fDnG7#Bb%aLBt05x4YX%9#gtNP_J*K< zL!r*;6b~34l9|Zr>s|hCvLAY!IPZ>=f={Ug5C1F@?l$Ok=Uvw6xyNJA+PX->Yv=@l zGganm=w0^@fL&QxSvG~wtb^O&HT@;rTgRM=r`Y4U=*IREZjt?1NgD=FxdIVJ9`b{_ zw*L>D%6xEb=`w2QtBh@`8E3dTXNDFsO|m4zBx75t9Z$h=s^-|(SYF^}yz<@I-Nh0G z?_Yp}e1ls5Eq{MVnB)r0X@;Uf(njt=WAUe%H|vy3ouG0Ag$jGD9l7FTlnHUKE5+XL zvyZVDti|{YLlJ`OrIp=IB%v@h)cr&35h>U@FGY<7(0`~z90#ERj>DdZH?1GKqhOr) zzlce3y#A^CC-E;SuT&>&;rp23Y9nhJU`dS@2A0}{$=2t&tF|_07}f9><+xAknw&67 z)N)sBl@n>K6(&&?WRl`gh?bfNN~nGKf4q3nEpQAxyo2cCFFC!pNgV2*_X#eZ{KigzI-0xqj~jFc zQbtnkD9$k8GIzQ>z=wHzds-;ex77^J6i|X4-2I_2rt|M>LdpLYKf2FEL(TnBI|X{U19|C^o6M~EYVa^(Vw@fuB0KD{pL5n>S$8+D5R-+rNz61 zUl>|hg{YLiFIwNgMfqmM~8Y0Y7B@xJD>EIsx?81GiK-@VQy4fEF4ZNs~{JTL|eqrXWGVHme|_LxyNq!biD~ZybQE>HY9WFlqYu?9gQM zKXJ`r@B=;l=U1yg*IRKeTbneWR$e}xD?T+oF5^GipCpYX1pPO7n`~`*7;Fm|Jffs# zfK~^$Y)#!lp((C=YylhMekZxcMHq2@K{!kNtYVlKa)Cn1g;EV6X01{qQ~=g{p6*xu zVe-=R{x9J$4U`L6-DmSnq3(IOnjGZ0pAj56^pSPxuO}|*_Hs+H1@sPb;2Q;E#TW;O z;wm79(#&%`mx4*+>qKwyMt&vIYG=}zCP*3<1?kfvOe^?pU*B}Q@(BVazxZ*DU0wk! zLu?#e@&I-seKeoPKd06E)kDk5=VrKli=4bQVvxt`#hdT^U}BXGei@TxsbG~SSuWkY zRJ2E&V(>Lu9tW9nN;S;}2Pr(TyMmj!fuV_bZ^e%4qqEBvYu>NqVYA>}({jYrWZtG2 zcfsH(#3D|CU>ew_`0LmaRmHDRQODg`qPWWJfqGKO$c!rP4C@9Y4j2z4}wP)*(K$sAE6VY4|$YW)L7x3_7zS6YnEp=ePsA1!Bi9D2krjF`zMf`5Sli3@(ZAdrB93E z4Z+^>%Moo2KEN2=nigSWpy@nSEmcd;$=L;}J+S*X%xa;|s>u__NVZg=glzeKNsLdD zh0;yqtd3oLO03EL{$O-9ao!`UK^4D>?BuVjl`7`F>3;h(?a#){3??0rKvO6Q+VX~N zM;M4qEM(D|LH_XJ!|2!qut%QBrnnl`#^Z7A+4?IHG1te?vvUVe8on=58Df69@`Vui zqd@n?9hl?ck16$gCdeF0kl@OGn?kL2^wgnzjn4=GKr080KVZ?L3;{EZmbNw(B8<@8 z!o+h1(0;8`o*>jyJr3OTS0-FY26}%HEB0cpxr35Q(Y$cIzgo<5ATxPnU%A!BnsfWB zq{Zik!$H5JA3Wk+mj+M1k4F=C-yZa=8x=931G|2l&G^3u6Tle(lnMgR!%Lo82*|T=OB2_82|tQXuZu> zw)rzt?U!Qi5^C_c_hJ9&L@CEgnGIJ2t|gl~8Xi*4Y9l}l=C|{0Hvcama;fio`8*hu zDCU@h+6v$k2PTk$$#COZ#BRXK1?ukSew;n(0BZFzU4-WKtu$HB?63xsr@q7!HUQNk8J*?&_Xv>PODqzRPiA*dT8-vf}O0u)@E+GzoB#!!p4&O%0)Jd}Ecys~v-m;WKdey31= zy>q83XIVC5%K{U6dWX?IRtAYBciGGZuM4fn&@EmqL6UT}sM%N0uL_lKr(gMea^g~# zFY4^7wAJo4TH=;A&TlIAssVRBUUPuPr9gaMnwO-d)|^+)!?s*eTdiPo3!W-)Gi%u0as1jqLK(Y{fuI!` zK2%DYn|yO5yOh6I)D>m+$K1f6eH_fdKx;OyA6i`nrMF;3I%mJS&f}-z;2KLpZup;e zOOExlf$=0|;B`j|{&%&yrUQ+o+SqL9jtxN?$a(URR2n!-l$7`RxYE?&DaH`X0i2K; zyF^&y6eY%w>CvJf!hyM1JY#7rixMGjEXCfBSUE1RhUd~L;sU={cu~VXfsKq8Wj4$I^r*@h<>qk>d^I&~zN z=IO>{n~Fke^7ilnW`{XPdvkoz&b`?q-DV;~d-Xh+k*ukK9$yxch71@_fX1k0U|<2v zg2sFg?}|W(G*BT-x>m}jNxojYpt(I~R<>O&i=*sl^Nux@Za*c`=WZ&q0+?6!YoS`{ zR<-Uwdyrobr;Z&~`y|Pxt^S%2%1nFx`})WKOk-G1$5|uGZC=w{e}5f-t9$TIsSPSq zTQvLDHno-W^@qJFt>G8CDByTZJ{1rD8GHi}rcee5r$9{B z?X=yJ`5Piw@t=^y53hkz#t53eUi3TU`3bu3CmX`Y*J&Vd|G`MMMD(R36YSpJrh966gjuwJu{ zxS&8-L`cMG^?D)@2XHR#5rZ2jJGz%vR*Hb(2*hJzhB%;`(=E14;GAf|FdU=snYKlUY+G`bPmz37s;dG zc*=y}6^`kNA_l9_<7VREVkd{BMh07TmQg9Q0|D{v7YghYFHo7dd*(xo#bk_y10_=y z6cv{+PBE2+&EpW$1m^`Uyd}rR&2El`AQ^G~8KNa+9Zu8sy!kh}v1z$PSW4ywxpEiw zNaj?^S``^c9PJ37P>UxdL0wopAxj&@cEnTD!rUB$50;k}ive1WC>+9ia0P?fqUJYs%8)NnENDrC*R#Yi@SUgA7_sv!t42=lu^=LUvZ84M zoIcv6a;@5w=s314h`;;iJq!C)u$Ph$jWW7>rQd@zs-JtTOzEg{GgP_x!z7!bEU^v> zZRy&|l`n`zU&uy*<>HCG162_h613-!m5X53Cd9BT6|dCT z8Xur7n54HUD94Ko?JnXQsQoEUze!JpC!= zkcMy|)Be)KSi7o4Cabc;DVe~vk@`vE#{X4I-<&R*@8EJ?cP)3to|9)uvOE}6qHdm@ zot6B1+#Ng@dH>&?9P61xOAu8!VkX%QFQx|Kj0 zCT-1wX%LPfqwN|ECpUD0XEmykqW!eJMXuP+*$moq^>D<=uC7l$N`xmPW*mFL8+$6t zlD_J3kOHUVWGqCNT{{mF>1JAxDN!)BcLVhr2p4MQGt9NQ02E1r&Y=E%Yr+bW#B1IT zEdLDkW0D0R9{Ey^_5_^1nmRgLI62p_*1X-=Q^^8f2Nm(AJnh(kSPr;-V>_z~8F4zJ zerfcPy!`wyxw>cIJ5xlVH5MiL@&IlI&s#z|<}e4pi_GWlMG!bHQrQ6YeI%#|z-vf; zbqr*{U6}vo!grhg56~y6)9>f}E;6;)biZh^sLG69k-?Nw>suNj1!SfhB{&fnT4hE+ z#Ep6r2yi5^#ITY)9W62TFvQyWGjKPn5^jP9!)3FSm{1_CHYvDDM?*Qz%8NyRL1S-SRTYmk?auN-;Ru5gTbC()?r` zmojfvqlz#Q^)_}+P>-hJV!TYBm1O}oQ9dG6tK@QsF~KoO&6H(9P&jWk1s45?geI$B zhx`gd-MiT%*I0UfGL^Pu=FHluH-uDnB0crpPLuYeP$xdYy*IIt8JWyCiGTmmjq;@4 z-1^`0vwc5No&Q=~a6D0Y9*C39AfCLAXut6XU2&XEuPfA&UwlvOdN2G8r6O+~X z-w`SL9>H-}4G5mhT_4~-#dlp@J(gd&kvu<|{|#uK81vV&Ol@;~)Tm+^V}u3nog=>< zF-)zCBQ<7KCu%dOgS!<<8ujMJoS8{_&%0eu_fBW5@9?Jo#Q)QmM3KmaN(IJ{YEm%PH9q;^j-_alH|* zl0T{Sqb3~N1fg~^3Xj&1#B({zfFrtCHdu2iOtuVriKFe)xye>5g_CJ zv!z*@c8Wmu%pjDrZ31ff{ z3=d+6J;2^{$kPsF&)WyTHh!G#oIaASv;W>pr!T9&|3O~zZr`Ifx9^lFHKb}L6AYp5 z{d$lhXQDA}Cd1jrDECn zxnEn+z-=ItK)uuQQHBy5j)S{)fQV#-mWr!7jYE94o)ieeV3#S`0l0oZ%4DsCCzxKNQn^}C2Qt_KUS<@($L*KwIj=p`($DQ zRbOpHQZO$^{}LXwvH7Cj&KRj+@-x90n8-UGUs<NXDd~kR(Jx1WcW9aZ?GJ?A_YN z`WOqao?~&eyI{>cBtBYM>5h22HAH~xU-MDI`L}1+|9w}0bnqdpSiraQZP@92KmV8q zF4Q1Z=maS}dq=+HyH>9}8ASlL5qw=TErDXZib}N_QegLQ8*4kNx+$E$L#eOxxc+Mk zmLF9vdv8_AnWFJ&;1#`UBo|G&D$Oij=%6{7)(8jP$=~0;&aK)q5h<%YQ1)aM%~Ux% zw9npFC6_(gC|rgD&Rp=%1*h{WgZ=Cn$=CVR15T)= zqiV`)C2H0A17fQ0qPp=CsadEUr;e@NraqK&JlQ5vOCcr1a=3XP@Xak=|9Usk2Wn9I zC}kLsLjo!5il|~wL5W+>zY}!u%Foy2GK1gnG>*higdK4LF;S>fxVmU^KNvVFKfRiB z2Pb{yKsfgdWs&<02->y0;(IoWM*!Gb-Zq?dkk1YbD)BP`sS_+^@mZYP^N+L&UJ|R z^S}X4wU*`xaU~n>ns+?vC9yV~xI5zHnmZcwVwQ~-Fr$q$giuOL`CfJ;CFN0YC5fd1 zTQvqLX&~f#{^AicVU&DTtI@w`iXewzTugV|V`!NDn$#Xk6jMUE47M1#DqidLl&iE3 zL&z~dZDY3^W>aaQ`r_{aWGkOUQ5n;+Wra$#UXFmjU3-|KltoezDdI_GCi@}X4X7{V z^vdF~&{?%b2&lhej;`TGXax6Qt}$_vphxt@xBe51wVTW#+3;EwBR43Yag35oLH&Sp z6hbxjDdyZ$4$yYK>Ki_st(^u}O4z_ot0P84IQjA>yuBPP=AOOs4Gsn6RC2Ux(|u4$ z%%aHC23DBstgg^DF9z0erk#ZhgnnspD4tCJa?|w_5?e*r1Qh zx%upD{#Q%)v%CH{C42Q9T_0*yBmoAWWJ`mIH#R67*T`Qy5Wwg*@ljCkUOoE%Tdnwz z$UJd!x8iMg`S#yn^l0?(a79&_zI9tkiN&W-Qw+Z3zf|wVkT4CdX+M9Wq*pR{AO9B@ zaZluD5QP*53_T*YR3u5QgjHMUyXon7D~)VgDO#%VW&+i-j|MJ%z|}wjP)h$ z7NvEsV5vBI@m)OX8%%bypZKE8Wc+<&c*EbVGxOJ@2!RM8h z90MLwvvA9gxvo3!oG#9{mS=DhVy47gp74)1Pk)3L%`!0IU#2y?i->7c2P?yVg<=qX zrD|{cTZMV8Qai|*9H2{3gGWj7C0SIdkTCo0$?w&FAiQa+1xVx&Ee&tPA~%}e9@O01KN%8Y*hsP;c|)OM#eHs&IydsP20Zjkic)gQNRZPpiZc#-@A zABK6?Pr}CSfshz&#I(m#kQP;pn+LbE`fK7HVVstiX5}i~@J-RLDXeU>g_s1Y6b()ZI@(*ApMUM(Ye33=!KgFVd1X)A zH`mVcn`yLQW7@C)RuJ|hXMHkghcwHBV z@S(!aeZSf+*9T**WjDny{0$Ks>aaMD2oPDvH0Rpz@8m2v(aD92XRM7>#%5EgH7Hqx zi*ZBfi=^a5AdU1sLzY~{9gX8LnFbpV0v>M$)Gq+B%lotgdMfPVVEJ=BDk5}{+wzRB z1AhQzfsgm7K?cjyXdv+QdUNTHc7ykj086hE*-=a4;f9?YFWjKkczFy z)h%5V6Mp<+KGwV9@^*e9SYg>%FpG~o*S)jbMRXm}X*+DJE?T2pqI?@dD#u5W%p0N< z9_jhjAK?R8;c2Ukf>%|Ywv8TIrK7=W$q@#1yx$6v{#V&6qFid?(X^Lr`er2h-eMb9?Y(JwhYQgn9vM zA`KAcm#sH>-GgM8GAG6f@sMpAm%hZnx%$>#2x8f$7*{mXp6NX}HL56~(N_u0THgk$ zM50Dv*~bqzvhhB#FTPJGD3m~w{oLOS!}YCqQ&wW{hB}G{#BTc#3FHSF7FYOl+<`aq zihMb*xnsyX#|Je43hHIBvkEGEHt%;ez9wlIFy0To{<~5(+JS&Ezr0Y`)p;!B@Ln_K zCm-!d!mx>rZ%ircPwnYr_b;P#{m0?NJk=K^1tzGem_dvjFnYOeCx1-Y`~9Res2hUt z`k*DQ;63~4lJ>OPKr&W!(MXDY;`(=A9Iw}IiTfS#n*9+RTBoaJxNQ)8PEb-3j^Cf8 z9LJ7!g>~t+ETNJj-{dwAW`ws==gj>I3aBlsr`ibf{u=n-`TY zlNKO$Xmo%;#LH{w%5Tc;vQVS<6&pzp~{ z*{>??>_!|_g+N;VH}IgzZ8^P`ejLdu)vW&*@5RN^4)=2FHeb%&RH?^Wr=NPDU z==!%f2eRa%1VQ4z9<|r5o)N-cID`Yv9G;_|g63aX&q4~jJM^8eND!sJw+4)IfbJTl zfP8}Xo_3qNJ0H)x=O$j{g2gNFtLY<6W7F&E0f6r--#>yDt-61DQP{xky$>MS{Yn%Q zM+r&DdA#b-Ivf7`G8B7=g+HzM9k#FG_+LNx%W`DB*0BL4#q6Y6=TnbvsdTUZm<6&Z zlC`QSSS7xcY195lsY~Ib3}JRvFh@rI7Li+<>eFP{F}+pbu_~_B6Z3$tsbCRrGp?YZ zj2K8k5xdwg5**fTYLBEtgn|vE*1+V%Iel+56I5`>d_SMgaRLg^CT~^A_lXh0_i1#G zEi=x;c14Vg0cQ|P9jFHqO+vQl4Xf<09xwE+qd$tr5iER~4}O|gLSwrwtG-uyfLg=! z{k*>U#=rCF$?5pOt+$(DS6iPtUp-PpVhTPiZU_&Fo6U23M^^CmH`#+bf--@iV&3pZ z>F}$z1BAxeI^YZ%8bVsT8TasfxSTue+U74AoG!T}62yJG;Inzvc?vNAU&!|tdM)$K zk!N^XJ>cpR;M%7=^XKUy3;hKH|fLr@gUh^!1Nqjc{nuklw7%~@< zbYh-1<;Bp~iot||b*2yn&I3Fz&j5TdVNbCU*t}l zwuaw!{%fqpDgfff=DDF%_1tT{-?mkDuQ_>J{rhcrI)`6%^>y9smH2F@q}?R(_z$1= zP~J_nu7Pt|LiE2^D{|-M$|=%w7z8XutPXBxbvO)pN$QpklXhEQe^R_g)LWkYG0!|y z!fDR*_U**VZ?}@^(xsL%YX!5fyVWXAv5lyYwYzFsp29q`)Gug z4JR~hcBllgmtNAgc&o*XXMbJOP_+I|VC0{dG7X{H5?e6U2zIkGC7M-6VzHH7$WR?> z@3+y9?r+?Dj=ap7ccyRs)dRfqj?2HlR|}s|i)E_5DZ?#XI<7mq)MQQjnw13ttYF!; zYeu;EOUPMy5fz|0mHVl_)TfW7Pwe(@v#0HPWzAx`wq0vb-M=_o;MXc#i4Y-B*j2DQ zc5lCA7tS0z>($75pWi5%j9kgsanyN=6Uyq1XA+^k!D&Z@M&zSBiMareCiLp*U(VC% zzwzUxzuxbD2^P&AV_WqA00W!-5r;Oj9?VPDLsd250PxOUtWMuvw@>M&F3M=#-#}AI{SB-AJy|*e^PAZwDn&{8_OV z6gw%KbO%Yb0HJ53gpInN>R)S!);qkYZ5Z;N{>tN(rH!&#)i-YVAiKv`MsB|P`uAD{ z6>k3m1?Pf|qE&>p>iHzlWss9=@Ljx)f1H+4+p7Cyuy8f~G&3Hkm$p>Dw63Iyq>?O9 z&f@#J%Qt*?|0~EMpNO{Nb(?s{y?rI+NL}K!a?;02w}<*Om_jEZO_47z>aaO2YW8q3 zoZUn$8$}Q!7*UJgT+c3$H#jnp;u@vQV(Aoq>)0oXf+!hI%GA`hidj1YChW!f8CF`= z$>hn^V6^)XY3l_p$})G;CV_#}Z2LPrt>Jyo!5vR=%#)UHtXb@&afpIBscPZfhOf@l z!<7PCNGDZoV3nhSCQ*f>-w@%=*68k#kmXQtH$~{!Iir+vBibcQ^?fAE{u^O7_^Ev2 zQ+t#}F1dSp+(6g7#X@e6fhyN--t%`Sd^4oz2|)4!nL0=Ir!7g1+`-usw%mOmSK(;5 zp_tkd%8+ZB*<+{r zqDVg+d0k(8r=%BDTaLND!Q2vVDKs|%q zE3J)0j0WuB#UgZ1mC4g9zB(;}hY9WDQ0iJ9#Q!tszr|?uo0*Sw( zaS8~mY$$~x8oy|@3I&N)U-R)7S5on3k?~J6;~{Byp1`QVAySJ#Ku=;;#&=z8D0^5~ zoL`S(y+}}3_W#Tu0T`>^q3{&Jb*K=e!}Iev$UAoTHwa1`#HjLA`?Ga4Ojh$txp)0i#sKXM5wWh#VWAsjw1k zWoEcx*RH^+(=f6vjr_s9E|OObIqlR$9@oM2MVgAz0u3W>GcCDH+t4SwpREL`ShOdCq26b2ejo^SSG^{A7&XHAriq;URFUA-~90`)wM;xMN(BSO3z}|t zY__wAK5oQ5S+?audgMi;sQrcHo}Oo4*M{lvqK0HNl{9C?8`t~p1S3jJjVXJNg}qBY z&$D<9%s+c4FXPsH`%e5GbYc*`^`s%ACD{F3XSnVIMvM7^f`Uc1xqVmQOK?z2LRw-YXDA{k}?Cg>w<$VD`R{7|AoFLW97+FeE}+Fe}ka7rIj zs68=XWxDT;sfkHYobY4IxWCJFbq3N~*~8*j7N)v*KI&j*#d zcqDFkYRd+y#D5}f8Sh0qDQlG%x?SGEap?F}*Xg|kxJW00I)IT`-w*>#$oaJuNd^fh zhNdZlG9-aGD6KUxDxV&B$e$DOK0c$S98P5Fl|9;pO~Fpx%p+JD`S?gO^l}staGDc( z-|QV61m4bR1OLF6tn7q?K-(`sl4||sF{ZC_D}IbO#b2b2$OHSy$~(;4Lx}RE`h2hF z-Jd@#4nNmNg8#dhLGG`i!tSs1E4kTpmn_(`5?FB5swL_)r|dkW@ML|)x5|RqX;QEt z1eozQCG%R8E2iGtZp<#G@_AaLJAcLEVjhV)s%#vwLqzb2y0pjVLaD|uIbQ3rioj~x zNp(ONXh8J~zJX7|598;lt9}ULC_bzm^|P23v-7kdAHaIkBPv$2%V6^&adFH-nH9CD z?4@kswrpYlS#9}*3VH-HNRtw($gpR!vTFyXgwx5QWe+A)-q+5i^9#@5jh7jZ)rasD zL9%zTB%Z_1%y=kQEu!}-;YVd3X1z35BKyja%Nhrgt>DTvGCy^3%^q7YReQf3sF-T` z7}k7%@+%7J4|tFf=f-Bj2{62wv!VMLBCM|%R)zA?uuC2 z<0`;~1($QV)K;G*F3@uc+~>d|4V+Em46So7`ZQ4v8 zEM2rtpZ^{3q2&I$iWvqSpHiTwD`nC>rW{5tc4ITWsmn!F)V=f0w@;f$%_`BKQRud) zom7_(oj~K2EJ-^pb>#9)X6mHaY_jUkc3lm9O4@f@Zf({yp!CL@5dyfy#yVu;;sD7F zL%H0f^K>f>2lzE%K&(-j1uM;Ov4lZa_+#u|+Dk>6+85ZB7mIybSPRUG2S`tfjV>uq z6@CxD@ATChgdFO%i$33Wo~r$DzOGiW_9xU_k-QK`7JGYCR7h`QzVb19cUxlCqQq2? zMfk>wZ&-ccI7zdSv7#3(IjcRYWST*MnAr91x!%#1YZDYs9Ut56`tlGJiC%T$OW2Kk zE3=>GD$=ALEmln(DIzZJyII#e%=A8H92*q7@()MUH2s z-AIhF^fmbR-Ri1qJGbzie-K~i+_=izM(b|CqjiS=?f*UWyM$T##GG2W!QD)_4eyCyGPm$m1W5&&P2Ts{iTU)Jsh8P)RcBEo)w=m9Mk8A28iFCXMrkV8H>@h4U8*-ZX$zY? zLSx@x(cyeAnz%P!oy(?*{LI`FcHpIb+!Fb!vHvMDH{1MC z_4(P!J64BNiWmt!G7B`#J#m7FQ75qul|`BuFNBg!*WTH5`NjOBtT%WD z(jLloM43% z7^=ur)ERQPYUI|V+94Oxx44!ps}0iEprW`1Oa8cMUn*&z}C7&3RzI zyYub5$m|*uzO#6W4!d%=uvzmANh(kjDjR9|KQDkTO6H*Dhd@ExbmlyqAEr?>x{D@| z&JP0C1+03s7rueKwDep#f-TU0x3qC5YbGWZN%;EThaL)ESAGA7=J&5pcyrGGu$^Qq z7C2VK>7`KId6w?~d2|Ly58R)VKM1V)oI;;@bGfh>VOK*l=m6TLYg4=$NPp>R<^8H$ zbo_hz(`DCP4k#%b?|PD50GNd9!@&PeT-epe4UCGz@Cl@Lqf-6WE(Y<+zXV&U7*Y8x z@#hC#tV?d(nYFb||4R3d)zyYz0(M^yLx(R&LZa;cXvbQ9Qa|X9JZ*|k=i_t|r$?!+h~Cv*qCP8W_pqI3tsRxWC;G3X5l`5&Q@LCwM3-iyytQ0d+v{F~Po@AwH zaw%*iNGTQ_lU8+|!2s6*5N|OxS|^JvI_VE?*TA0?`s6C*Z<3{WvUb-h+y{^L*j7MU zhejkA;IZ~8Q@_1$@^838c?>qTA~Ga!+0yjOP{uAFy>y~Q6$`^egn-`n?%m(6-KN}T zCMK^6Z3eJqjElahqQAh4f@OHOm_;^>F<2MK%oJYH{qdy;6Rb&Xs{o~qNzGzn2F%M* zJeOWxDn07|@lASrdjs()kizf_t>H(i2A}HjP+UdULv0;49^sfX?&}*YSP{}}1GK&1 zJe2A+U|82;sl`>+A&oCfOJK>dC5nr?mFhz*3G;^q(1@gw-{-qd+X0CS)7nh7!dmYR_XR?TA=+beLax9%lbZ9 z#n!gEwzF~k+-C?#6bkiSwfTX=@yrxQf36p`w(pFlw294y>otYHJ_|mwp6HGVr5( z&+kH52ek+TY{*Bcd2WPh2ufF=Lhlo_FY1o;V|1dsdR%A>ZY4R-$npj)bkPAhfOM(ltgzh&ek z_G0(Zsie>FP43z;P&_n8%|WcAWSVk}^WI)=J*2{|J(>=uF!}qQDarG}#Qgl2`Y2@5<2w z@vBgK2!faud#yH8c^)WwJ;~Z?S{58aX5L7ve$36SRCQC6kd=au7T-W~H9BE_9v6d=*{t zs$%db>?o%!BW!&>MHZT#-x>8rO7*b|FH!x|Cew1ON0`l=zM*^S=f-3+Ur)(+3t2%s zq|fhfDm>bC+uc)m)_js~eBd={hra3(GzF5HTX2dtif9xbopyB}RzH32=)k|O&$(yt zPxHUl%`pgqH-P05ZxRW@UB2BQU%2r>PojD7TVt7EOCx{`f7~;J&;9@j1*fhpK@ze2 zFROY2^r5=whC#5M1fJH$we-6&DcXtKd_&F=n1MeplzDN- zCv^k5Z~jF$0;6y3sLH+b!Xn12L~182VbK}u?7xD+Dw^e~@ z3GYZzvq!eHd3xXF4Qj+aR3La}PzhwUSvJZ1&{bC`zY}Cr)*p+9OG8wuI8vNBSA~EC zWQ`{CK_cSXMNMgC%G8Wh<%}IxMT775O$cuALHS@74>wbt3YrGK1~CxCg>sT)!}Gt{ z!*LE^dn{5*hn~IjfoXXAJgbA&meWEsmZ0wY>TGYJB17 z2NyvadOX4@%}}~m&t(O570-vQN-%E~n^a|GB8iF;cGsw{-+ocrb8Z`yGEGmbrp4x? zUED1H2(!BS#CF`W(-YGuM80;r*DBNwMoIerMoA{mv!QoBc?4uRe>PXuVW_#sdOp%` z*V7{hQhXzB;3z+Tm!kmzqJY#?GPS%`A(BqJ0HV62W(v+a-h0FbZbTa_Q5YCI=0(kl z}?g1a5QF>vu&mbs%wgx)-XCL6yd|x zO1R{fyNV@$hh#)LZk0O7n8u~g4r~T5zWy*4iS)M9KRQV=g9FRPXoWbi?}Vt-=rXsu z9`n-y58l=W>WqF3nX6J~++Q@&PgQno6G(yS8cd>6ab}6Nzxc90(_~16n5z8QJBqea zIrHSDME&G*_DJV*nAs)rO`AChQmwu&`y*fNXm=6h_9c{S{Ew063|a=B$rD+MLOYFf z`h5g_1qES8`kkX-epx$yqibE&JO3!91fL_gD48E+@cxNrPM!Q6!@fA`yVPa)<#_VrgBer|*3EssF~k!hSmG zN#FN=W>@bLyZWT-(#Zr>Ix(Kg8lx3+ob1=WE3c1h4$x16e^#lPx}ac=7NgXeNg8ow zpDEW>*v_(+7OvP&TenIIS&;Gxv-a@@{&M{EDYEgoP-e=Z+6m;Q{4NB#LR0`+s+_V} zrUT*1UlcHbfQI({@%B*g)8Fu}bDl@|`i1BZVF9*BD0ejL5bZp-7=>N8K6#b0=JIwMC&r4*FkE33b8AwEkK8uw?9VhSr z(Z=kg5eW01Lb=}vjH_lDv$Ba+b-zLPLtm0fY*@+t_zr)iUs^Ab+BzozI^ga1!4Qpn zAAEmTRXFm|l36QTxdQgIdH_e=KoL6(K4;)S#pi8>nqE8!`8!Z+o*5@}8~$8#tV8ZI z_;7c1leKn3ir2@!>i*Ol-1&QRH=Y^^5G$8ET*7!`wOG@D+zvW5PFC8F4E#4#rC*lg zQ-jMiAYg)h8K`VG=o*jn`}-Pf@WE41kv4Ka6QYI7fDcEhPw)oRjk8VCocF^_`;FkFB#Zw+6_7^99eUnCb^w8z>B686EFsrj!^wlCgiWhhTK~L|uI?Iude~n$e;@MjyK}f$ zd%}3)^glg)c(=F|`NJ~!$W;^Lb(_;~!Oq!rhM_&z&(+jVzjN;K@2CB56>oaTA1K!z z|24PX{E!D6rModMnuS`1?Q>$Tj(x$i7KLvVMg?@XK$jvyo^3Bosf`*E({(Dmsn+|n>`qdsHS=Ab(jGLqq zA{{v&`N~fkTaU9Qb^%Bfuuxk(PW4IQ+yVLm^!=rfDHghF1UYwoSHf(v=F`-o`PQ@{ zz3qOw%@b+exCPu z{(&9scU{+ce!m~yGIevD^H)KgVD{n2(C`uzm%-|AtD)-=ebP#v6)>3pWB&EP_&s>N zz68e@4%meBG zIRJQ7F(br}dQxPR&~b#3b1yQ1y()c;=7=o8VAyvVP#{qMnJiFq+Ai2yb?IZFm-K~x zc(=`<2&-jNHGDQzPuY{%Zxyx7rcWC)m&J63rKdfO>j-7R)XRRT=ccOBPK=@O2|9ff z+<+SK?!7q9L}5dpsBt7k-JX7TVQ_E_v;j(^$saeoeICIdSdi2cqO`#@<8;!&@%F7B zgA=S?eNW0I`k(R(8+Y$5%E=9 zPo7KdUhJ+-T&q<3qk-#788OL(inl@YIvvpwjA~r`9*wv<_jyymtnEClPmc<$5s3m@ zIQx4$Me3j$Ai4lMsw^TDf15jzfydvr4HxE({wTaJ(`@{u%$W`k*7PZ;J9IQ`rW6~} zFom%8|B9hH)jPotCaL_lMWEK>C1G8k-o-Y1h%$U*7)Y|_zBL(qn=#wO<&@!Ayyi&Qbu;Xf0Rnabl(GzuC1g)xSKz`%Z=mC!8n`z zU6v9p*$iJDJLI-QLH{1*h)1FH#2`+)_=6IiLVt@erU`q|XIPY}ySoq3qpAWcvRL+u zTrMo~;B}OSNn<=1;L_BHYDFzK^_3?w4a^}*y2lA20g@!^hJ}R%LxCK&oQZu~mxE>M zLPfe9g~D77Q&k&1x+4&E)85|Bn_f=YVa8!MYpdqLNcSLG$hzyHUx|BrwI21R5bj)A z>59M0skzONqtq5jBr_#IHQX}J+}?l#lSJIEX;Pak=$D4R9B(;w4cvoC9?L-{wZ@5b z1F8}_M0~Y6ZA5-9bp&$#Z!E&9rT*d2!<2#V)(v{)ng@g?tkS6#Fm;PTZmke9`R|DQ zOPTnSM<~GGG~(6TE26ZJKki={JyCJR07MEtOL!SzRiaFw5&4;1`P)(~*(}INHV^H4 z(!Zmlv(wEUUf8i15iab%YA2y$i8&+vbClDPpX}G#hP;{_STba#FCwF&qLw^sHR&}^ z+)fk8PC;8mXF5R(ptJ)1Ge1%QK}hPT#jWyhL{fgb16?=EJ8(oADLyg{k6=Rx$w6 zr}yhSgm^!GH1qQ#;wGwg;!K$$YOUQ8SL*c^sQSkIS^m^pjjmpq>brWYPy0&tqOF_o zS;fqhrn(LwD;!-Z1TPbyZOjvBvZ&30n)~Lw2|95AXl3?|_Z!uIqQ56u z@yWG4?=GzpPotshiT?qo)%X=dvrh$MQ4KF(E}ecPlOtEP@Zm{d)gBAu=U{n4f(qtE zBsi&7j)mglcX_hbD1k);ew=bN86s{5`)%59DTPf7oR1i+2xRB`@#@IRU*5(sA-%hRNBbfO_77ss@9iizPvd$cRAd|p(f(aJ|&)IQqpjMdM@lYgs&{9I{I3W46Q zmx-|lgWGVgRR$WWTh8BBpe)gJx9F0@Dz~)h!mdP`eWVb4t(k0DuBudZ67XP_# zSAn+WS*&X4i2b94a*%&MDC4zxRaG`1t~7I|_>ZfXdnnXEF~~zOp+bB0%10s&I*&;V zSfuR&Uee9IDGh&h;DW!UolrcR%r=Y_(q>h>#Gu1s*4NqUgf)hUpnCBTd=s%oquv5k zDkvj&0dyLbpFud#UbKY`5FLJf9Yqz5eRqGntso}9^p@4%sMzlQB;+h_+r=;eCu3Y@ z`q6vm;aP?1xq_RjcPcyQbHy(XJD6XZF4F1^9~ef4zHHT6F#I&itR*IiHqp-F9KI2f zNjz!IaWtX9V42Hg;=qbmK6`jHFNN&HJ}~Dh9M)v#y7L2s-Pze$FiDYGyn3GUr!D5T zjkv5t*Y8PYxum}&xH%dfg|HO`a1UQeu44kkq^)RBtk%s8?<=yPwsht1$C1nzV2F{Zq4c(bm5vz`k4# zyV0si+ma;B94DC3rs$}7)ugqxA4sW8Av7A@wZ_pZPdW#oVhGtXqtkMt?=t)@9BR=q z?bypYg+0$xdxdQ5q7q_uO^sxeizvw@`%-_w4O)ALCi`!tI6qQeYgn{^U^0! zxx6rU4A4=o@Z8C1dzp69^I7k6>~oYw{$M)HU~uRJ)2wL~B9h_UndkUHDi|T|N$rm= zj*D1tf_=9iKOtM1tU!|XS7cYyzG-E+GWJMzIh*dL@L}cZmNxykeQSe?c&Pe0`jk>U zZR@79N8}$Aaw%86Pm7CM?F?8dFe{C~4Ab-ir6ir%?u57MvwOkwT4kBFeADc8Q~7CX zkQGD)y_QQ#ArkS{+PmO%nlbi<*3?c^EkRgE1pfS@tGexe<*qFAUHQsUi)Lg_JE#~~ z!!d$ni&grkDLj;rJ;UvrNe9$bA%Z`~3OqT>89mNu$A>V|Y={ z{)L)_hH<=YtNNA6N0}k5n0fre&=>iarHI>ZvMeg8Qfk<-MN^sLX(IuHpPOtVky9n& zZ*jiNk=C1wHmsU>*-QUKChYh;5fi^X!g`g9OUb%}ET8n}a|i00`jx~kIxzZ=o#f|q|pr)Li*XYD6GNc&#! zNQ8AYO%Z7+WmF+!t9CB>#P5m7Aa0NdYZ@B>+$~exDxXWflyciaT8(Olz*>i$tA{%J z&!u}OivTf%=&XTmesM-1MJ)qfSQ6q^JyxC)FkKo(bb90(wYu?pJX)KBbKcDxpz!Op zSq2;cRR$gqRl-hx>h&9#L*ZF6IrW&XOVwx)S}D}k@=yrIg;%qL;9{UK}< z`!{HABAMvAIVD3JH5#{4e7qn&pGcgUnBo&&T{N zV_*|M%n+a)$H^d>tNV}vDjq3$c>1&>EFe|~kq0Mf>WX7ZOD79)pNb;R-v9a<-r1)tCWjqNjW+PeNod(wVGXjfzE<{gSv*}np6 z-*s--=9=blVvtZIs?T&@-o_{>+@-wySwCHW)Og_tELa8$&hI7&fRw4DBLkd}?meTO zy<`2?leR~^wyT8Jw#%tc^v*FQbz@syVAdL|xLM!*Yb)gYzyMii!uj$CF&NM{Q~%)t zWPaSE=QPdA*cAVjrA%mPwiL(#s&*j6dF1CmvWk)^hgB^UQDZO^-w*a#vMB*xU+{fY z74J@rj~~bmudeD%^}REojjeQqIb7;FpP~7wo|HY7WQRgmW)wI9qWffvD=8|eVb9qM zrX8Op$Tq+^3SOM|ir*O>yOZM_@-Iu&b6kP&-Nq)utyK?+eypAn>)pENjt}|NSNbO= zk8Hz=!ui9bgbR}Cnv6t+_@Hq&&==4>bec#EZEf}fC?z2D*IHf>g6{Gb*y}+O-0neI z2TYR`_%}^_A^^ZJyMvW7>}#eKd)KE~Gdns@g)yV%VAHU4MpJnIZT;gnxQE?glar$( z5O@i0Q+7F}EV(A9IPPV!Vr?E8laBg4d~@gQe0t}mL)X;@tg5Owa~$D+-uu!Ae_Al5 zWspC(-1`6lXKSJMb6t!*IA<9+-5FaGVGhr8z1j)EBl;Bte8+VS&3%$YKE3mmKS17O zw$!2b8vlfJ%@_Zes&^n44A`?Y>BBgeU0cM_#eay016q&Q>>8-P4Iux!6xzeww6XtU z$n$+360&)XG(4_|u_68J=GOmwYz7w4yqCvMHwt{xRoRhc++?|x-R;N*^|kC;Su0>? z^7(V<)(S`&z!U;v4@8$b?VM9!?UN&@1Bry98D}Ya4k;lW-t|h=;Yj3v{JO@#;=b=P z?9}nOM=%0H3H=N-!JIvGzC5^^l`9YHLH8ZAsW<|WwVP{?<0ueS&1r*CdaxEgP!s02 zd#rMR1q$wYt&FRWbD(4lAxcWjo+JsbjzJIs0X{%=lv>4GSNmas37_csG_(!${X@A@vx+`5wA?C~_uY0s!I;znsM zrWA6=RF*^HYqf8*Nx79Tt6hfzf(IxyxaELBD%+aprNuR=p?#r8rdk;lS`7=uaDY_J34p^9g`xK&k56|F% zw_pf9VW*y#g_lW64ghvuD?gt}{jTeB&X2HOL?L@r_zemYLxq`hn6#jC8b4!k+O#89 zaGUb-n2gzG17YrtB8 zE>52^(lYVnaokzP{_$v!s;Q6^!j+-y=fY{dXU>V=3n)Vo!5{FxDhEko>vxF2zfeF8 z3$TearWA5533_^U*Z?6EC;=sO(nL}%Mkf2}AB}}1wG)9La5ZM&pF#65z+)r&0>C1e zUeXR6GLKK4FE=dx;-w7*3p76+M-Z$lddXqVBdk4|b zMjGdc&z3C*BDi$104w{4dzZ@Z-iBGp_kXnjCLqS-%UK^5s43vPIX(x7@nvoRbbliN@_qoGhH0T&zTEbPLa}za*fau4rjc3-7hGN*k?Hsk$@^Ydh)gdq_ z_f^+=t~@_~*TA)a!r_zMtB9)W?sdaE@v*ltI<;;Ngx>3-rG@Ja3-i>6oSc6_fTSVM zKCd1|^(0g$m&yPgXjDBY^A9Y6(F$(h45fu6x)-G5P5L!lIe^Q^G zd3%B$eND)4Xy+YyCMkD*rWd|H1 ztl6$%s!gBbzpD$BuZ+>wU0mc=T(DZ(pzI83BvRShF^H6U4$7vCJTq1f##aPw3Z|XF z9B)6zJpUH_Gsd;PO(l2-)0;YplhoS;`s!``TgyE(~D9 z;mxWoM3^ez+(~cyypQYQ&%ma|l038fJ%Xa!IXsIf)N=DWZPB(LM7Exu#@+}%e&usN z{>BFmq)kRmVG-!}=r(MJt zLZ=R`uyI#;Bu@$>nj=DOn#?xhTx3D!@`Afn#|GKMmRJo$t<8;^26;&lYjoiO>=T3W ziS+YQa1YBVsqK$yYwfNXp+sxDeN}#0{L*Q%p|7rz#l_eG@S1RPDRvAzDI8B9H(0qF z19Qu}At#>D+^E_ReuK$yA5LBZ$o@qTP*Jwdr}#nms}x*F&t{d|y8Yxv6*MmCa;`8; zF}254qPzHt0225}aHFh6bmUkk_MCxji3U0+F#M};GHEOBrW#7{LHYUQM}%3sy$c=? zROkJ$ybh|6s`Z_08?*uY7q_Q%w=`lJm^PAj#Wt@vr*$&FRL+d4!~nr{S2qD+vwHsI z)Jz_p&&#m^swY6#vLt;9%}M8r01(Egmj^Sr_^^O7IL@4T6zw;_Hlo|^*{~+5j>a|# zNrT~WFsPcnm&z{*H)6{DjzS9@%H_a9XxO34Dwpy&l=BE92vWoVZf*pQa1DKr;LfY5 zlULKn+%=;|T)uZsMFoKyquurV~;mI}!m^@~4M18oU zdZ5$?>UDQQGkRsK9}X}&cBaS)J8<=Jnc3O3ULG++wj#jTBta%Q2{Bq1c`ylM6bQ?v?Kq1fY z6;1OC3QcKX;E43bjCf_zdTTOT;Co_01zBy|*wWIH!AABPfM*F`pYGe!zhgOzv(y#E z;&>ksfTH|Wsz&QfP)Bb9@KRvHc=TAjbv|*}zDvQx)Opr@8Owgrfs0U<@9K6oa7DE9 z2&hUCK%_4>tL}HdV|;^<172 zhyWrZ@|C)rDe87-$)xkIRZ7t$aN3(s;{cZzceM0$A~?L({9b$>2lrm>E%Sa)^NTAh zru_H-ewSM^uhUvZ1?75K>KQ=D^V*6&X5Ks1g9VG^A4;sCXC&OB`Ew?a9(cIq<>f)H z7GVrxY~Do1Nrz~9k@xADB%={=_-)quvt7saRn^6xF+2{KvN9F80-Pv`$ID_QU_SvF z*B4FTNRNkl4;HqbGcCPD!$@IRC5tscf&Q#g^IL^!}+s#h(fWoNPnJ(%885@Rl@43YyT6B|nKhS71ObJg2x5&wrQojJ87~ae&Tdb` z%2RIs>K(BN5d484yqnQ;`Df7Cui$s;<9pG%zH@d~LsyObwjXv$IFdEqg;(;Oj$_7{ zdWNvoQ>p4{{^t{q**EjKT`6y0nUJp$Dzh@BElG!3CB;((CF2ml&5DnY1du(!c}{+Y zhK-?44Fim~xAdx}n@bHguF{~yi86)BU>Eek?*I=s01?(a_6RuV<^WF{j(2Z8V80-a zb>+mVJ9=t+`dA%Y1R`a=c#rm9CzAz>ckS*Lm9rr(fd-m+v)~Zl3etnN5*WksSrO=0 zw_3tD5>Lk1m&?CON75BH1SU+JpDAbnXq6@Z`uNkDDPDktI&~lr4FrI^0OK;fRP9B_ z`NQhdZg!HEmW{@V7uTFU@&~TCSn4U<-(5AmXPUTt=$mHUD4wZMp#(;qTAN&gyy(ef zwminRS_L@YOw#bJNnqmNNWF^+7UJ?0)yPZHuA`;9X?u8jJYDsoD}Uq41tA|qzHLNa z-lCY~aWRtNF>&*f^TLBK=$i>z-JJeTl0=e|$P;Fyt;U%D1^GdrZ~rPuS4)bnwcc}L zA!dz0woTPDO|#SNCMd>=k!7HMGBlu28zjn&4GQ><`hH62gW0-AirrN2^V=%N`G7zI zpd$L(+Rgw)Xi-!sw{Q$X+k>Z^$-mmDd+s0(kFQnw!6wY1Qk1sz*#ve)<}|0n+%lxV><@xCy$I z*;KqnY6p|TZykGoxl$kCmKFU8@tUP0`QUl3sgIuDivkI0kInp5rB}&(vBC3(ut7V@$u68b zeDUZytRPIeS+-KWOBr2cf(lUtU9U&VHdP{!1OW3+&5x6=NKb}Dj@+rE+b#A*cxq}K z5hij_YvFx=dQJqbEMgM;)YQzhw3NOV1t5LmRerP+VYn7nNlVKpY@as1TJyoZ+NUpb z<;G_9oJn{BwqC==%b#tol)2pzG zx@O~a3bhIZS=R@G+c71||ArK+r6ZOZo1pjD#Z98GV%kd=chbkPM)JW5Mv z-LOpEVgteBsDkVEyg1v))sqT!i(Bc=~}!oQ1jaqF3e??hEg6M=o{v3=UPPBzQGVX`-NgR`#;i z+_iBYOJLVJnIidAz6TlUaq`xAv))hLx4g6csDF;uSB)VT@}B-g(^l zG-&TkKE4B0e6P^+?Wqw676je5B+&2nt*g)99%kU_`t0d}j!3HpZR`*dsGK4^{EwcA zAhoJpl>}atendpvXod*9M`;;ZeHU%Er@s}^7#N2`v*!!ueA{p{4qA}xar-9}#N%rH z=?PAL_5az}iuNNST1ZVT`k`9}Qv>Qx&TrVIN9|UV_ud3X3h_k;+K=SXaKL=222rrJ z1B9YOE!;GYk}AK^p!{9x3P}m5K=~n&_vzc>@oXc|r^quR6S9B~LW@N{EN&!&GlRDk zL<;6wS?y8OETEF`@}^fNurYwBRuFSmp>AfzwHWr$p-`%NuajMaCVP4VhepcR^#Q4i zaMNgg{?apB!h`l3B{M~>5m0ngp`#eD%PC>}!49J3@N}fFrTtu{5H(;Q zJ}dTR6szM`^?VPr+$&Jrf6x0eLG*+Is%qe{7?HoF8h3mxI^`-aad2_`|Nv(N2-^c5KG16<={cDzT^}#>^u&J}8fLISs{eduRndgvDe*u(rH>;S~A`c%j9nC zP4T@G&-Of^0h#gOiMQP!ls{IzJP@4w;R26Hggx@{qnFb+2jn` z#QtPTlq!?pyE*cQiZCKQy*-kTv3C$E&=#IW2qG%zh1Etj`5O>lgobVl-XicNEZM$~ z^+&(+&K~Rfs$Fpn#}i7Gx^cowDdrXcLl_Xb@m-LcnBlXY2BO(t&*U8d#VLuT&Pd)? zL~9iFLmBp$hY&&S`+Ofr@|9a&ep)CLnBEvMc!E_Bd}7zoZ|%M@xF-}lKNHl;=vLEn zd(h*3BCIJ@VoXlW&N16etD-sEr6WyJpq9qarjEB17(a{2*eZS@BvOyy&tXpcf)yUX zAe(RMlTY0}NoenwT)Fd;#!p*3W-HZOAm>THg%Zg*@YW-*Y)bCUwUjHmIQZ{_I$iE1 z2a`oeP-wYBCD_qTF@Tlpw7tNBd*QrL)VCA}1@EQ}pM^r_E&zg+K_uAX;^Gb%d5Oc{ z{lVrRD4ab+_7o`e_Adn4l#&JyuCmj;aHf3|HzMGK=W#tix3RHVY4(UfE0$+jjuoTk zxQ@w(9%*DNh8UB2OiH*B4ZEEbFm5}~de-?UWIFw}di0P39l6i42_1 z_a0pnKe`W&^z$m8T1b_!kCv;kLxf9JMXHA1j@l38&025v@dk^$RZH@-*mK(U&hei% zVaFHxu@MpGT}WEs`$_ztcQmv=7UZ{``L%ao>|meHwcI(?bFjUo1?@bWEsR$OpreK6 z{O+}wI+NcGzb^j0vFe!6G=_)+ba((!@DDqC#VUCcbclLWV#XR~Hij%?{d-skTies# z8Zuy~cjq2_bReQ=O#=rz^?wfbFVKW)adHfy{h3IBTmEHEm9}0=^6x98mS@>OBy!Koj zj9NwKa0?eI7sgJYiKFx+5y9|Lov?8%#dJfXNCc(dYX&KP8hX&g)5cugp6H?O{zSRP zA>IWg9fD3lrWO;J*juzsnpLSVPd2-T8&XqMd*cX*@D|eI!7c87DQ!?0Syx}*dw=sB z(AnDC#{>B>%0?|eUK)i zYR+Mu>y!)h1ogN61z&(7qqvMFhno6&vG(6W8fwE0u;KZR7vm2ukUqYT(>WkxiO20< zYGjHlzBedSOAIt@F*CD!o;gudLa+b6C8)nin1V!owgyQnmxq_q@ZEG~T4*-jSqS=( zx)&+XR+L;7LY&%?d@mF^O-{p;ehW3^%&$0TsnITcmNq40Dn3 zPIF!J&{-jwE&P3^fNua%+cR$Vo)SBJNRI%-bZ#uy-z)w}RrnFpy2b6$8nlIwZ_xoH zrk^CDAX>^$ag;f0+S{W}KnNAUw+87aDRCEJ1Ze*E)etwm@wKS>Q(Q)?t^5?(6BcUJ z#?Xot(dtL~utnOwA*obfbx=YLt03SLceB>oHGU9%nVXqy)S?e^RUyARJp1{{cTSrX z&*z;)emS3Fn;I2_{_E1JTJFYaSyYbekBTNn(t<2@DkYM-NaYiB%yI!AWdcnW#At>R zQbfj%As#l`xNkJ^v0}1tUpacqv?{6caIspsH@CgLr`_x3mdo$F%26-H-R~N4)pxX*F~`K{ znb{~WX3t}kiT-qDXM~=RR}6nZQygd9@$wXubVNz{>vt-I;Y0FyUQ#o4+=~0&TD(Mq zYVzy|QgjlupStsXaNdXnJduV!tj9HH)!wQpecKS7y>ux-A&(vQ+$8D#%xLJ+@lzqHnnw16e*9MqvD!Zl z!S5KpIjXB+_>ohH2F3+$agVZ>m8AQhj5N?3dhX8UQp2|ED}+R*Vs@OE*zf>ID!dHs zTPje*G^_s6w@3kuzp_EctK)!}e4id0GrS0m%AZ~v{^%N{t3r>|Qm1i>Xpk&0MbV(c za!2=Avd7nkuq@XAEHVJ*InPAI6kHf2ATO6-{;|-`riXblA)*+MFzn06H~#hbG7bj| z?_o%gBdt&dI-*}59i#me60lENf7vv^My266CC{MpW)U_ytn{+Wy#}jdA~880Eph1k zY`Ly^-Ow^UZDVA69rKKTd?I&tb_Ps{3T;w}DlMxQFv%$Ohqw~H!zc|_>(9Z4xr1DZ zOOS?BCN0S~gcj|9jG@jfn&6?3Fa1H>5Pt3>IL%3v=;+L!=A|zMLqu+ zJ3z<9(Neh;-cDO@rj^O<7y#fhfLc2|Zga>q$`!Kq-8|p7s+LjU50Ipc)GQxtawA@q zzP31k@#UEn9JV^k!=&b1TwJ9J3hxayYcYInJc7C5OUKw#v$OkS%ywqk<(!)F6$I|c z1@C{yfM603nJG(Vqe%(0ndL?NNC{SS(uOxuJGVC6(T*BnokJj5SDYoBkq^=_^>%|Y z1FL89`sw(##dl`@>_NWs#>apcuM zwPtr$0;lpQdIU77HVliKp1T35c2Hy)rU)_w$(^@A9sS7O#r8+7Z&j)?XjTAw!2U1x z;K3JamMWG<*I=jr6}o`FT#p0ZL+M)qIg2Fd=4#C1)b9J!Rl$)gPaxjp%Gt!_@%+dJ z3aw|PfUDe+H@u8QQAs3e5ar9$8#arrTf$%`7$$gVV;<-kTTZhUy zoOqNFg79w+*;TRW3ZE(y&aa86cqnA-{-p=C0oWnEd9poI^iksy5euwJuq@6Nm|t!x zn!qJS!OZS?#OX%D1QWz4E%RMUprhq?vsUA2wD}<5Q z!7M>6=A|M&xomqo)fHOwBY);@*87>^cVX2U1sBX^=unP4z4uje%sf5Qm+IjgG_|$! ze_K{NIiz{%=m0Hoy?6G(BmPOdSCYXql3$dK!&4;O1V4otxhLy3)<{>mP*87K|K$+c zrM^eniC%NJ!(+b#v(F{9 z^X}AYu=sqw$)H$8eXX-+&L^j@*#i?3iv|-maWpkzFJ%G1k`?XW%5T4fbWNyhG;6kp zDdqG<0=I)lmi89(RT|o@KVUHDh<<<`kiVQwsTJzb?wp!~%e@t@Grl=vQ4jpBisl6k zZ?%Ks*`NbRZ2T2`I-;}qMh~+1+S;xJu<$S^G%?VZb0?E|4_mBJG9cy}2xs#pHsBZR z>~pa(m7rIB2lppl&dIw>0~9{|&zhvl`?)$Fhl1gg-1MoBV8rE&YZfT7$L3W#8pD%9^b z1M%9fmu%YHuW+dpvbU#mJoR;3T)rg?M4QkHRE0In2Zx!U4@hFXW6Kd$DAVyjDS!)P z{>@%i79O^}#2Z~#g$n5{g?Z*ItRl#cO&*lX!WF@W4NixBH@--ItfuvWN;S|pU+<;Y zoNZoPsXbLoIlFG%8x%xh$wHk@-qvDQU_;w|RlAu{-;ykl!wlc-c|{92Ce22W_&$7@ z6=DQHkfD_DOn#5};vA2Vt$`R5O-isS1J)gIphA_F&Y%a=_q2ehwykZnuQ>a=a)z3Z4w&y!oO-bYAo=mKS|8IWurgo!!E zhYVM{@_1>arPt|95edu6@}mhZe)4q}j0Z>*bPW%~IuAsD{?iMy^z_ydU!_8w%|L6K zJuN54f*Bh*hy-MWp$rVobPm#1K;^h&hm_QKf83&uNBuCLkfiy^v(4K7-&Akej6Pfs zan8g@b<(e`>%dk}?qOR_4MklL2F?NG08r`k*^4WpL;k8y$SwQt+%xjGH~TfV8kF}7 zFakXPGXhWLmDD3-H5Tbj6s(_+eeL=@xFSoIF`Au~RoFh8j5V@J7za`7U+$ zR{6d_wVigu@jqR1u=rV`s7x1P*^P@JY^!?W54(mHKu@^-Mm?whgS~!%jTl<*<_7)V z%JusjM|2WYjlh{jV)3GwM`&y3NlABaySX{_gw2B3s3=UV98c7Vi?CL`0ODLt+I(tQ zf705ar^FSj^pHQ2$o+pSL$RR5l%)Pbm6WC2{k`vaEpr3jn}?edXP{KsUu>=EiaUS@ zy~nGL*obDh+Mt|q(IRID6a=CVQ#6-Kg%pL1Lw^O@Jg}GlynAL4c-o&hJuesB1ySw% zt~ZRu@>xcp9F9yfnm8z+%o;i`mztIolUOwkaV_$HwE*bss^V)3Aj8&KjS7>U4FPVut*Gp5jJ!H1+lSsj+z6kMWP5iN8HDOdYwM1)_lT^gGcAmsUNu z#`OAD0`%?vv8h5TCwS`0mObWp&2XOauf&lk>GH^MEghkyc-YPS&B{0|PGRqeD54eB z2-u_AvP@d$ezDpH+&G|k3gE&f+cU$Gt;7YE(SR-&Z5up5J%;ocU28)_JQB+W;L?L& z=O<#&I0)%a{!`F_|3C9o|9|JH*!XeoGc^q9nIC%|P9=~zU~Km#QE=cU4kJ4+B)ze( zP^3+|)|)Ay7U9?~s?R z6%JFx_+gyAa8(CaYn2X&D3G;%?#-JeZyuT?pG}0%c#rHDqayN2{hO>o;Mrv0rLUWt zj_mwFYWg_PXjqKrn1Je|CEGxm!gwC+@1pYi1*I(^ZzL)>L(1}WKuxAF`fsABQ+_O_ z#ecx=8u$v*f{tsD2j1u#B@uWmpW@j*KDF5cenY@|nwl{|v$hvz%T8m#LXe^WQ4VO4 z0;HxYLy>@9o;s8B-V?^!mn{TFUG7jt*?-1wCvZ^vNW$|`hQ8R|-?}JmJ^Qcmh~oEcq$pd>j7Jp=0mS4M+VPf@@v!2vUwebe_gQ}$eI=x|lvY!p zmxbMl{{er~vJf)EP+k^}7h2MSpLmFH4{#qae~Q%9?lIc^vMnkqTCh82#f|z5&-05L zMl^LJAqXZe%P=6+(3{(ArGr*}c|AN483g8m_1#+r>b=$-N|^|?v9T$t5_a%H2;&pW zRg8kEigB#W+x|0djP*0&`1*62-t5J8GcDHkNHN4%a@WG_+=**y z#w>y%l@^$vPj?_diZ^f;`i{C*+EXqm$XV9&?dRLccv+Dpd#9&egzjG2{pP*wg2!z% zTYK91+NWT4vusoZs|JA+fw zORYX@zFUB*J~Y^y+!Te*BR0m_$CLE>AP`*$Q&WWd#V7@Ioz;N|ZvYi&YH4i-W9bjl z*7X^)@ap9wCkD z!sQ_Q!7^Jx-_uYK$wIj=IR5NZ!pZ$8$%}C+(^+B$c}7VY_Cf%!uB6 zS-Qs!_`8vj5x`QXs24}sEz|o|i?lY3j2&`)*2T($-ZeK@az&sEXJ*ghh9(Jj3}vJ{ zSqF>^2!CK!wTm&NGWA+n+%UpeyyW=QkO#HAwgq{gUZga*$K(6>MSZ^wOfMPBa?v?F z6m%thq~P!qod*A&s0vI$SaTr-w5UW638={a@#DwqdGp#$Shtv{rlPjwuyf&2R9yTD z{DvYD7z1{3R)-GE2M5#BfOY|cng>WP1x)!iP|)BDxT#8%V#0#m9Dbztf*)*~U?4JP z8MwcH&nVy+JywBWztYing{P5bkV%Ez42^;&&SELefwnlD;`ClRes6E@^&SF{t@mjc z6#vzX3OJISUY>o1cbpm}(#y;-79Cg5Z#`pdq^Diw^+=~kdWfOJ&`Xb0(RiXSOIN+* z0=bhjU?=*}DLv`Um^+{+<+f@j9Q5Y3G&OSxAXztv)gAGv%D-Zv-5{X! z0kjv~B`G7)II^hv@w}WMg~N}zdr~gE54Fe+EtEwVods1{#_)rH%nxKZ2tiD2r64Hj zZw9Z}2RQ#T^)rZ}nK=l+&*_3N%TA41=r-qw-%O(TPF3iWsgRYEru7R}snaiKQilI? zBDF=qnkG#oZs0cd{YD#TJ{#u%j4`vE=aYa+L;B1mg;FwWfu0aP8WpCpmFN6`@PU8& z{vM(6w@W1{I+YNkK_gUg@a%OBLZG(kwP@6Wf2^TKj7ESr)4G|oCoYf|n?D$xSxp72Lq>Bk23%E#X&<1$CuIbr!Xfij$GR>xKIh)VcT;Bjt zB!p5hTUA_KWoA@VU4tX-JLR?4J|X_IQerzfb&wE;OMT6CHF7{68>z&SlFzG%vi)!# z=taS7a#oPyE7Z9TD&CprQ;m#_-c~S@NhEPgpl!G;{rgw1so&940ZL4?wDJ~hS@Ge4 z@CB}TV#<=88^DH967QFjhZM#d5D0&)nANa^Rvy+eWNL{?kI?ln{{#%`n0Z3Ol`9ZN z0(Tc+-@#B7P55zm73$`+?W;x3mv{hN1)D8D{C!pGbw{Z1v5=8A*s|!+14)!%{SrLmWgNvL&@;OI#m) z@pl0qyQ#lBfOjT0{0|Jt;yBq2{IT>S#=gGU4>yQTx<6wVO~I)o?VBJcQlm+pGV(gbK5Pg8 zhSa!J3~Xoh8T0n5pq3^%noxM&6-ZL3Y5zP3fCX-)(~qb%aiCh(e0OgWKFhkW zd$rXaw4QFxl&V;UWH-P0^*qczXj%gHI8ZePUXMqh6g2{aH=D&ch$&>#>J@&Mu{Kbk z3pbS$0&~O-)2iU774`Q)(rYBxk}I^nphka1Z=0kZktc zq6C**VIdi-v3gtE_Q%5X>5h@R5^jugZ3zY$A7p2vFB+X!`K>fsOT?ZHB2B`u+p*pRcuZSLlqozzMM+S_q>5RZIgoUz6)s-9zBBC7nJ z4lmt#y?BMx4onHw3j}ee_TBc~T0y0X1R2jqh9D58YKFxet2R9&WH8MRhSKCxfqBa} zia@EMXU~{o!jAhY+R!Oa{7`f)8Dd1PlqDlk>%BfuU13W-z%J*e(|Ycp>LDB*Ki6Jl zrI{SOexvlEq%5R#xYSo}nz;G%i^a=j6M#3ice8H56UobD$}OYiT5BGD@wN!A>bRu? zC|GWPfZtu{3)Sl-v4yv8IJ2K8{!S1cw1(sJdIy2yZO7YR*iWcXk^HkRx=-i6m-hEh z`>HZiNz9b8E*0kS9q0or!r036Ns6jThg|l|VD-iy$o%LWvY3X`a)kKGnMTc5PU`Ae z0IdOdGE9DFpC0#fo@tIM>~NzX2V#i!`X+q*`}+EPM2$O6M9EL@dwd2KiJC91ROm5Z z6*qfKx`WF7jCw7-+RkWl(_b#exb7bJ1Y^pm6U#BcS1|zUalyJcQi~jytK@K6$F;WG zJd*RLfzF|Nb)`tR^7GR@LUy~i^g(n_thQac_wP~KgGM_v57ziO#%&(ZpuESZztOt> z#Q1W1_!5^mO77dS&zzlK*82^TU#@QH}Gpr$_CDPcfP z}M{2NS&jXr-+vlDg zSQiTDsvNfmQ5f~x1{-YVHMQb;QWZK+wE%OtV9i-$m(h0z0X`L=MY74r;6M8}{aV|4 z?DCynO6_*z`QyqjN$9SFeo9FOyash46;*mU2~H^A-lr@(#H4bkX|$1>%-|4ORd$m3 ze}Q~Aw<{MpJ8PX!Tt67s$vW9Tp^M`iXy?~0n_2Bc&sP~(05g`SeKa!9m-KmtvT20y z>#(LZ&j?T}2yTVHk-A_Zm=JjQ*BKKt1kOahZ?7A`yKCDYV)16a)gSM<)ZUtymem5z(76GLpsh=>TFq?op32V9&mw7=al_7KZSqc(SCM7V8edAh{5N6h1! zkvY>Jq&xyEb0;@-2Wm0`1=OT6@rC0#f(kSS8vr|a9TXF&6u`oBJMP{giZ1SbWMfdE zO8eV#aQlaHDLGx#&^{>(bQ9i*_ybG<9K~HO1@fJO+pjc094SMIQ<+SIZcy+@c*}FqsgGpiuLy|748D?d zL+i5f=7i$AV*~G;og_Z~hktc0t*fJSJmI95+bdE8lj%&%4l8rk_TFHbjGdU}0;_3dK?T@@f*iY=}s z^G)vZF~IIJ4l*S;ifyn4lm~QZlO_q8Stcv+g^^A5(*OS@ z`n4Sv$PG;2laz|1Race4cvVao*GM(!?#_WkL|laYjvjfhl)AkMKnNp{-wT?(FsNTM znj`ge4dB1jFX@z)!G?rDcmERzApRvqW-(22!2(xkyCE5+B%V2h zjgFeZs>ZyqCeGo4SyYt9px}5giQ?ww_6iHGpIlrogUzmHynl&z);bByH{o~tIG#Ok zOJIX_vw@+!b9p4Xi*@@=dKlr;V{LERG$^p+6v zxMp85e@A6pLxFX69yzi$2h#ohf z9yf`eNmOQenVyGJCOOaqVfQZy>Te7%jqoWZ3<~R-yMiP3SPf}#gi(?0*DbBsZE+(;Nu+`E8yxb3J5HnHh;OH^W5o-nhxOE|WluvWr5A=gpra&?QbD@yC^Ig$fAcBliQr0h%SRD9RSyJGS30 zd-3}Igyqoa;mxE^@;QBJ5a~#qIA7jQH$YZoaW?Gp3X>y;OGJhrhJNu4Gr|r^55SXv zUnKzpYHI~!_Es*I4EO<$kBau9Ux|ieKTw<*nhE+xn`lK*kkl-)kY9fiofk%O zg`Wm&v$cu}kmA0dvbM6a`UVU-Ks#a~pR)_Fx#r5$SG_?vn2Alm_YU&Mhq<-5{WJ*9MX9lJ17HxS#Jme{~Ec z)?RDQE9Eh=HkkRw=FR0&DxTK4R0?WhTrBL(%tGGfxCcNU&x^r821(vD&1pWjX$XHl z`Ji{VwRI@><3peH{V8Y9#oqIN*?pE}BXlr633Jqb#dtVg$O*cxL}6Zf%!9siMLGrM z&y36u3zhGG=%Vwwr8s7h7aFA>5aat~<=B@90G4B4$17{2$%X%khNUbs1c`rKHA&-B z^yUp=uabJUsw*-%1%==*6-rD0l#c>`stUF}_}q^H3Dyl{eHQx-9w1l^gj;8EJBKv) zycYNG%T6|R>VZjC4tJ^-*@yp8Q5nxFOV@_Zg2PRW^p=9IGOa|;cqb)^y&Hxf?Ufco zS+58hJTo(MEeFsPT&)dJ-@u=dGd}TliCGrb z8Mr=2(AJy?(Tx$Er~!!f?45hS8-X|f;q5{gwcY{>oR-UlJbcu|S<086O@#Fdh{rZh zIeoQH9y6chpT7YGh+jnc0ZsN7ZS@a=TYNKIbOarylV7`k`Yyy+Wc3Rmf@ceG2-f5&sB@*b@;jvNFpEomo#<4|}yk?}?C`XHZH& z5iXUTV`-A1$&RAbrC~+HPfCsB;x>OBGh`0&^9PK^pE;h^Ou1v2!w;2;HCIJlP-#>8 zD<-5syT-e5V^%qpK~$_@@WFQAG67)3^C1HE$JqF7CxFHaXy_RN8|>w`&|}dU2oIh1 z-qrFmjzs>dPl0$l(Cez%?}?GO^@H!xm2d1~!+A5iO(4^&8RBpFGyoA9s&U^MrW+Q# zF=p1y+^W^T=Y!k~Z)<2aKlAYn^{v}u=GgluSHbICv2rHR5xEv&B0)dbt~d@Iaf}Ur zaiZXF11SDh1HwgI5n;(~chdDMu^^jlOoST943lr!o_nplT6_NeqX$)S4S7} zvL}mZn2?LHO&B6#jH8Mzr&jF*B;6|#%BQQhB;<&>6bP@nMOMBu)2@^SD5~L6J4NMH zV19zh?M5JfU-N>xRp`BX|1ORxK|Wh)2}16vofprAsVo<#JgExFQC`b9fVO0#w7c}9^b z_FO2r&p|-@qlQ!d#tQAkYSHkbD{uU|T~@C6+IvndnTZ&zla z#WCA$$s-h~gH7z-S_b?5zxHs{)6sclVCI;!6_RCVC#ztLs9Quv9hNx1%mHJVg;ua!4Bc2K(7e8( zuQ9}1Yq8^CUM5BApXKn-<{`y8$f6>x{`tfe#j-{p^b47qTb<(Oh^s`;TI#je--Fye z9*;#aX1U#vZ}=O|aGf|hcLwR;SDTAiU?bEG1V3hGX6_E3M?D<;D!P`%A}N<=8=hT0x` z&m=bO+Npu!(=75EnNJ5aYWj3`E2D@uY}5;>yS9-DP1H%~{RS*rkturg23k@2N3fQ2 z`QCE@RCi%{u~3y!MVd%dq)(=9mFJ65d3|jyYy+7-L&EzFp!=@T&bL0lMNtE&MpOZ7 zxZ$@QI3=nF2mW}~L|0)@UY$z&ec+w2S8=dqMid`}@@?q#H>k<@QLV$jw1p`ug3T#r z(6BRmGtRzdLgvIplxIm$s2nbjB~^a&*>`i@>rRg8_cG>xni?v+4vnurwj7w0&t8CC z2K86C$v+P+A}6q3MnojbvG29SkV?xL##xzUcVvrS=Erzs2}Q3vven2nrfMp^Ax8-O zN;c6BC;ZES);6DwY8Q%uk(jV)$MR57(4Yg)mJ3#^no}MZJZ_XI@wB3FTP@8x`$A>F zu>)eah+O;Eg=cmqr~R4-Ng3fD5Yans4dd_r)+$@!fQ6ayqKYTh7u@Y9>-emOt&707 zyv)gEo{3X&^gNCLkjUf2S%2kpb7;Z)>RC71KSchGwOFC{=g+MA^1eX2Uic%DO|7`w zL5{{o*0HJoh%h1nZ#-~;y6|}KX)kv+*d8w2ef2FK;ywDAcs(jT@^80x8-zia+S!Fv zdT+j8X!DB&-J}ALKIyr$!$n90Qw(_b08p!1I9P3ekJ)md%Qvt-b<>}`7HOjF8UCn%R$Gn zLQ6l6&^Q!38b)IOZ4dyPMxT7b zhbjuCrsEjtCe`}q77Cl*lsvakxNBN4nJM|T!A$_68utl_9$ccLp(v}Zuz)lGb}bNZ zYqVwKXjseqS_N&vJ#&R-=`p>S9lsl9at9f$#OP2^NEh-5^K~;J(L*^5q3`Ms(IVqNA(_CNE(_4Oq(ZGs1U%-L)et3ouz?|xK9iTQR zshqEC+ICtme`_J}OiY2T_eETYJ%MTN%*Jbrw zQvas~DE#=uVpRGoP%pCSdmN-J&*ShB_e6-;3c{V3vVeqrBbc3ikQ?=FL<;xo;g`ro z^~kPz{Pq)4?`W;+;lb7!W-M$I2~8>s$K=4iI6{G3JsxSXS9F@@Fn2DT?;BkpiV) z@_G-h{susE)0Z8Zbwr^U=Pb}k5m0lbbYVf{8F_!?VPSzC907EX(M(nTfdh^V8$F9 zrN+fc28C$|2azkS&8_f~O~El;0(&RX`OTfs(AZtZ5sPD6~{TojMo zXiiIiqwgtwvUD~lu=JcapZS%IbpQb4F5*AV`&CPYv6W}hld2kaHwm`1R2YxA_~fpE zTs$LuNc_-wWRYcFkd&I04hGs$DtwezrkRvPNr+MeGE z>3X$s9}^PnjO#4u0ssgmi2aTR^0bT*8oT_20n8llQ>iU;LcW`g#3?Iw)lcTu&bk5< zVw8k%!YKmSpU{CTF)r|9xO$Vxb~>O!nTScgI8FZ*lVR(q0}ZTsNmL8Jmjv_LfZNlq=ZOJb2#) zzBJoz0vPZ7US^$^Q#laFrdLb@D{kmiuY*IC67A&D2Lzaa0@iPPEk6oERzI@&{97TT zifbzd@V(GWwTbZkw$kRk7T_VUf84S^Jw^5F{`YXl=XhetFqAiQP+e8^>q~7k$K_)k z13sS7ywh=+Vwq{nvM`2B7Ky^Y*YAVKa85!CxE+ZwBba#qOyTknFP(!~;kOL?;_gGN zHf&3U3^4dTKHLGp@O~Q?kg{U^@7V)v=DbgvV+i01plA3p>OO7AfrcDcP}g& zvZ@-LXbiC?2%A}8eOB_w!)=meZzSj^$@ncXV|X!N;K!?}VKb|DCc^D_9XuLUr`6X& zQ_SdDB|mOu%fHJsVoV*#xfquI-Z9lK0K0Db(lg??9nl1g)nbu3E&Szb@VPrT5{ zg=Ga15}h$hBp47kEL}O1-(24V(9yszAiMw^E(0K}I*68QzbLnVc-n8Xj4QbES-!dv zbX(qD*go7JU21)S^FkQ3sRmF{NvD{ks#a%5=uw#_mrFM%;SLa{Dod-~Q#j5#Q7g@2 zw<_0Q%hcs1xz3S+_??*7Z(!b{{e}JOWwxD@lhc0J{N!=s*Wza8IN`sXwr@W@MKlj> zdpL)lc|U<9mlgB&TbMDyCqC;d^(xy;%veE?&NF&^W9`j_ZS>WKW2i*M{F#s(d)%J^ ziB<0qV5ZqF@%7Ja7$t~41sU4YzMpU<=A8)mawW*^YH&S=MD_M5{-BxDe!0_;=(I3^ z1sA)f+i}>gQM7fjNWF}lE$~4+QNCDoRQlvPG1hsj+fp7P5Z%9PQln|~xlrNSPKX9# z3^*vR7+~E4uC2Ljlyp^sKg;nUc1pvW%s4q%6Qib@+L~P)$<0#IQn`xXw91_Tkq;OP zF#kn;?gLZCyMynN-%Cp9Kx!5YyAKXVU8vZKNPy}5IbZ6yGcyBb7mK40>W3(Y8q4Hr z@0Dwx$yLGy`7rp5GhwX|G1FfpRJB@0aWxE)KWy`~Y2tHBt_q7N>VixiRwpFD-uLtR zz`hz}YftSXr5Ixlq|qV>&4fBp_Aw0fN|kMT-Ua zF%t1cPpQ&aOdUO6&T|i#=$uZ~?)j!BR49DKD9w2oIA!3Jtj$BPGErQ;C zB!tzKy_b`_=dg<;NcGjbVte7|B~j6I{6}jlMpxy6$;~$YdiI$vJaQe-9v2&%KJ{jx z=0c)`S?;^?DJtp(Va9gFqUGwwUbcbt_3W1%jg}mlY=m;kC0NV1e;UE>WP4BFBL{#P z;4=X7NWV8u6>v={(x565jGaBt?*F~D!0iouRd~%hhk^svB=0s{4Ga(y>Fn`B1eM|T z&3k}g7VONPWj&zJ#87(kV6fokK>vQoPl_jbtvei3Bc*4Xq`7~#)_j*ut3VlF%aC{C zkS9sHF!#`Xr3kf4BRxZ1eLUz}np?Qk+`L^IeQjSmElrz-6>VD~<1bgWH@~{O@s93S zK0M!$oeTF46EubQ{oyu0h}*weDC5&o3gQ)cS!5Iuv{DH7%AY7DSqo{P`g#-nCjJR* z3&_afT?K&!quf!(%9_|Jp_}7$uE$2EPA;<1z#62M;c!W`{4n(SI6qEeOmGnV6k>`J zUgXi{E$^XI&}})Xma4hvzB4Y_hFX<`domObX4fMvko}^VfPv3t2^@$UM+#@FH$Y5C zc%zGnH*n6CES-Bp0>URp>QtSzd7^W7K|fbe1+ofNkZP;Q`depuI#WBi14^7g%BbV@ zDD-$@!=P7%BJnPCV_(|D1xLF)7f$@7jbB*~RX`7YWcq)qMU;pvuwnkLAzo#Y=1dH|%;nkO||6RJFG9 zX7!^;0wRB$xRnucC21XaO6VqtW+0^U?-*InRFfL|0PR4wk1^-;b*7Y*s z`iEX4KUFU<-A1L-Kdb+(>l}1(WuUY3^Xv6T_t+o~BZO(~d>2~4pv|rtT~_YHKb!go zK8P=zANnl4mUpd@ZdP3dsvN${zsAEPf~8sOkP~)$j?BRy*a8kyeU7qeSVVuhD?Xyft`VDHztu-=;z^%;)sIUX(XFSYna-@PxpKUa9bVy!(} zXmw6aZ9l`sQqiO-DnhtrG#~n8q>mwiexMGKFaA_EONlT&wIEw+1CMzRE}f{Ju{ST8 zZyJ#JAzt>6;S9;rUn9&hG1fG)W4A|jS3c@_hXZ?x$yywzoU;amu#eg7#}uwe0KV`K zLA=3U7$Z4anA9ZPASE#}<1pb2&r>_DsF#lX*XWU5&_iKSy)ddtRRWjMbOL}2YZK9$YqrVTmopGzGsY8Fn|)YMm(6o|*r2P1ex>?+}X zB^eV9e|(EcCuuql@-Nx#nhIw^nvf$D#p_-Z&Il#xY0`=kmZhZ$#it5l%3hgvk?SIPspqM~frjeog|Jdn**tBp~mLF(fv9ini%)?>Hx7jRWA{O_vz zrb?$mm)uNk52{B)*$ZJUPP=lSW^Hi3hKIiaYg6;Zp&A$m;y#pUWchP&_{K4NGPO%X z>qQ4(`^EN3@ukSS0=*}hkSyJR;|7_HpLfBIXkq3z(d^6LAFvP$l}_&C zp&(so=_x1V)b!l4k2sv8zR@&ZhMf_e!=N0X!yY&vAw`>o4TgsVkrrOB8M44J@$$-4 z7S|Yo1(h{fbFZX0XASTUNqz6Q+%6eDSGJ7-*dJYr-DV$t>YrCrhyqPwt}0`^;MtFz zWpA}5eO+@97NlM~aC*uDv`nP!4=BE9aejBUnk7jZ8hjDW*WBoK5Aj57?yqw~ZA%vn z`yBhtYNKLf--q`fG8!8j1MO(dEJL)oXm%f8SaRg69n?1ca})Z#e>~Z~vF(d}Xaq$i zn71#fcr-m$@QC?};A8iM19-iWhMI(lb19$h`}_%B*42`H3XZjufRxEm%PJ<)Tcq-If) zz0p6SfJ|FFgoqm$M?6e&@`y0D=}UI5v2)>pFq*KyFfOF{h8SBdyo?0&0?dPh_~0mt z8e-g%H=PBBBW%bns(Q7inl1|h5;!=11^*p1o&O!Qm0?VUh^eE;iYWi0EvXvcf z!P_}rF;#mk92~us_k)#HATH}!wn`bxC-RXSPAd-|hw63-b~Zo76b$+vw{IcalY)Mc zSId47T*YAQhR4~4ClwH<@#pi)r$CIrmlN-9T_*N~dDCd7TuwzZG*4FNVSd<`4CwP@ z7HKdTMJHpO$P5cW^{-#QWU60I@&WA0rd!kT4kg3rXvu+#%JILl%G1-KkIpxzrp@*9 zR1lUl?KE@nO+wi`&Z0?=+hi(P1-M^+AK34S#4S;OQqAFV3jxLeWBiba2&fCtM6{^( zxqbPP0v3*Evp{cO9~j@(u20s%o&=6x-gchMMb<^ogjM)4JIwTOiu7uc3K++VicQ{X z*^KWt4E+6L82#g#$)ErFL5Py~TJxKKap2TzJG}SG?@267LX}BGMX%{ewQ6MxN^)Ow z%sR!ZiWe#syecS10uPtCEd=x?Y| zh$1HbiNW198B6-`@g6|AI_A5^Jb(yjuf?DcH5rd+csfZr&j&G{7;VOXoi|%PacC2d zl++xk*bZ(VM5C2Mk&J1h_l1-ls!puG4UB9$feibJ!!OTMcz1$KDkJhK$EMIAFv*3l zb4j74fz>g-x|+HDzNdJCEgI1G0+4r3YLDjQYOk&cm#^VKFwyU@Z^|WAz;lNek|p4y zm9B#^eG*rPT7Z7~n|aWzw(id7S(bKm_rt!FDwsAxHF?)uh$EE}QPjI5f7mAc(77u5 zF+ZaXMI-{X&&G!+2BJ|kZBeuM1FB(5LBI|ugA(atC3greW`kogBvunk>k!8_mn_A}D^;C0OgU`9?n*+e=iNK;JmTYfb7o-fr0BlsF{(&?AoW zZhUt8Y*X9}C=_e6=T??Hpkotyi{Fn5FX{NLA+ zTrvMyOxkkks+7x(2;eGz-t)(N7*Vm`haNO{ql0@5L?eC5pCEIYHu|yM0zx&@hwR%6 zaWujmt$eLQz+4KFcS8m5$;bHb7yu)>J)F)8aCo#C!olH<8y8+;S#7x#ScopX7)2UvfzWGSgwTnH-zOR0Z>~rh&lrXr?OEJ&ea)pl$%Y&J(sGFE z&nx1_F|Ep86$SpDgL*aPSvGYJ;Qh_wag6{9hw8>g_zdxJw+Sk|6#ppEtP^_T##r<> zBzK)EKizJKS#F4SMPe4kvu8TacsfqsKOv7qKj)Bi%)UzNf1-X zDeRa^xhkxaGYG^3NC7Y%B`0HFUS2l&Jqa}0FPi~XOvj+LE=fQ=AOTYYr*Yx4aByaI9`=kSf^4tX+ zxO~Cz2U1X(CU2Q$>J(|2n3;bM4Avuma}a*Pk+RbECrl4!UF@y^}mbk6tgQp;TGP<(k3?k zV{&E9Zos#A)(W>S(m)1)d5bxbBHV>1I>->^oQwoXZpDM7nlU7Dz+Z=!do^S`y2!Fy zGJuw#q5P9nvc2gKo~eUarcMP!aWSx*pscLD75p&zbV54tx&2~$XBI0biplk5NRCNs zgs90OSqj8ci|=fDd&B;r)~}bvQNgFti=} zn4%DzkL($%ts!<-J88Qu3V?u6bs20tuu(F#&8$ZdvL{A6V*S4o^I{U?r0Y7{~1 zh<#WQHnM8iH}E03G!yQjcC2A6gmE8cuKsE_OOz;YJ)1at??~gMi^t^>$s$k+3B0k= z4_sPJzIs;+fo(*C(a~*_ScfVyv-O0%(Nduqkq40i#bR~;TxAh*d>4E&1s;W$ZMz4sgzGU=WS!nJ8q^S4_} zSnzq;7^&Zn9bTfC3GeoMm2&{kX!t+8dM#up%X2)Wsb)iJwVt9PV@sa;TN0q7w+N9( z3&yI|yanOF<;X65oya;YvkW2#rcBszUz9f{@xzRaKE9C1+xzDo8IPa~E4R`|t}YaZ1m=Dn@(#P7d{9If1fwlhGrVGudqb-j=X z*(QDLdeV#s_g9u#E_oF@tSI8G6zd-Y77!JI5by$87s@OZVmQ8c5i$S^>=CCLC;)+8 zUVfJtR3V`hwAUg!$%~*)YC+K0*m!f<*Z~Y#1yIZBg(P`YIi{TLlfg!PQ*Va8{e8AX zOiWohS>s}cWMb>Gr^F)sw4#axEE7pC$q&b{OHJqWyDk|6;cw`BFy=G0pFN#Jsmn&L zw#gp_PCR6xW-Tl^vYS}sAh0;J)J_lu2z9x+!*M?WbuTXPErEywr~UU7e?3$%1hV$; zNJD>54M|Ft+G+md$|%y(pn8j>sPfl;$_On%P*89TSO7sd*S`zsEAXrEJdm&^88Tr3 zQ_Q|m3~j{qv(5krnWF4>0GtHO>yE9!*9m74Fs_EI2{y-@8_1JKio!<_1JW##W>@nVZogGc5~g(kuRt9tT2qk2`pK zC*XJ(Y<`Xy6t{+Ww@Y>`8Umpf$m0i0jH5!%O81GW*)}fVlX%_ZvJC&h!HM7}6J;VC z=c5saQ%^ZwbV()$Q`P>F?Cq9vM93hE%3mFu8pBSHTu)<)sB!@^FkYRXQmX1T=Xa{~ z*a7qO5^n$ESv5l5C`G*z`Mmo#nzms3k}frZ?TQdDMQT|k@`rDu1dsC7{I1J)`y(U7 zWO}sxQRBv9qa85@DQ%7&s{}y}4LduVap$|86e}+02<)Fs20%gtK&yMMJezs?WClC`ZcxA2e{J73)F}PZvS^1%si{YR-zI)N&=uAn!_+Ct<+%2$S^5np zisd;Eo+Z2lLII;>Je~}Sm=1CG$wxs-r^1K@`$mf|ybN-q7=$ogQ(>+ST`xG15aR!) zfS?mF!ppu--cg*ctDo7U>%^Dnk{$;?e~|1pw3+Ksrd5to#>|?I1U6vMF#!N%Ff+=^ zmE21~*#^v}Ikx})#amxr2XETrU1Y3ce=2RtDPD*_1kH9tRV{tw%iFGTw3hJPlHqYO z1Oy*aL8Kdq@A{0#`o+=7!;z2u-&dxZIEjf+BJP@Bnf5-Axg|z@_j~6ETIqV%xm_3E z0_8xv)~*3)ag+B0qP=drEKlOr#(=3%{P>ubGU2C*T+eZ?S^60UYc!inQ@xl)qW;P_^PXMoqB~*NM_6_PT-|_P!`& zZ_y90^2o?jsDkkv`PhVdr7lmuDT>Xo8R=4rVDvCMVi^_?x7a~M8luebB%wl_NFp75 z*XLN4eTD$IQUUah^lSa^x-mubDyOLNcpWyFmh>J$jBMw1qIeQ6p1L$NG!{SXo_)PH zltUH>R(sl5PTWR=q03U6y-+Qf|dJNqd?* z2qi6(@B|9bhLD2kFNpM^Y6O29HPIq z|Kq9)l6w$9d<8IP5v@Bz?uc+1b@0SlUcWKyk{IM^CDXBx@(7f-~@H zRFVolu#XcdP)B}1^w~lGV@yzvF_rKS96VpYCjWWUfD*sYZJm_}0OLW){Bsv8wZ_E!^G+81hVs;bqxFY z5ZoVa)UAt*hC8V5+<{$zoq1sJ!RzP!=};;052#_~e6N%yRt@)LGlP+cW&8S_z4X|T z^Wg&bv-Po=)%@9VRK!?iOSpU$y84t;{Do0=UPKH737MQ+IwsM$WVd~-yhR5JktpR2Gv_o^qiELrr~sVU&?l zm?fS;Mo@OUm11H}hWjmfx=RLcD<_lf+g-W=nUx#WV*2v~xab2o{$)`Y9(UqY8;-L6 z#)@G_mXufVJR}cPyTE`{)lfa!ITe+Fo++MZYgsB~~jR?twM&G4V-mdRjbpFhQ2h&X5Sb7hOapao~3WHdYA+6PuG} zO7Q+5xg)5&EK+4;=H<=Y!TZo~*%0!|8l-Tb3S55$UfIlOWNf92tH-6vxUucfngC%n z3ve?h4vdc{CjmzxnsU#8Ot|E*dA+qCIVoFYkK_qiuM8qB)r6iS)`S}@0REo24Q5wTkQ+K>rlUE ziZ4AYd#z0Wfj*Z1?h|llU0>)wx$5~nxIRwUKdJyG$HOumAcFbY42;A*PplBm<@Vtj zefOC5qt(k>@Zz73xTcS6(P2fJ$a_oex1ZY=SZ08ygpu!(HdW6ndPd(b8#wea`j{mk z_Z}145A8N=1U9w@zp{C2;zpI}ld4m5aE#7kHvml3Z|>}#(^vWU&u{3@ADrjK5qw5A zT~cmlx!I$Ujq@~0&)`GSf3;X5u>)CX=@>d>#qFNY+L0BAY-ge+)yiInt*22lw!{yC3GB<~RpPjet zG)?j8^9OezF9U%STMy4zT%k?8U8@}Z0UCLH#%-p-+e9w%!$Ro)9sgPSfZ27IP`@oYf8?yX(uxw^zhLdZ}71A|0=OgdEirbyq zF_pA@n8Z`h<5c56fpZHcXO1V*8ok)7$o&k>$;qr{97rf2)l}F%2B91i)y- zHLH`rPQ*`3DH&73ShsrE(>3xX@JgI0(lF!qi@^1J$G17c8#1f{6Rz1eCES-+ zSJhHDTrr+ccyw>)8_-jPX%azb92mIUkATo4bk1$4W(sQ_XzSI&``~hTPRFr|U|{^v$;R+j4i*vT-{#-Mu0GI^b{d?!^u~e`nps8mq#Y$50-vO+E3x#Qqc^R_y5NE>B4T_Ao1Oz`$Tx z#;&CS+}v&X@#Rs)LN8j!`hqVBZ6J9ltnaTnEBBq z^4AUioo`|&OiH5_v4XRb&YCnXh#Ggnj-^6&sKIX$|BAnt7WrwxGrNkELKYJ_`XCy) z-S1AWLa%Lbb`Tw81xQ$$WkBxI?T;sAKAv2*+CvwY*8weQ^rLj)INOdC)G4H@@g>C3 z7dKLi2>fjU$Sn;En-yUu-@`Sg_io9UF&^9vQ#X^%u_w{U_Db*j$;&(MlX%wq%cFbi zhQ=Iozyr}vS+eWG=!bv!X=1&wcaS(_vNQWl>i52CI#5F#F8u7=*r4*{%oiZUd2IV! zu-783Vv9#+&!cJob` z^B513y)_l=Z1Z3mo%!Ca*`i* zO5@jSO9IVrG8eOndvR!Ho18=IFl(EA6II?yq%#!$ZENkEn!<9kUjn3H#w;}QSu?oS z`AU9*{0|Ix_L@D;Xn-s>4c*4Z_Bmfvx>ag${5stn@?7{)XHA#mduwU5i?L$#kH+n2 z5sVOVqo!}x!hY=;7uh&XvpjGWtX?1>{eH+s#*qj7+&{Gj9%Qqz920w2Y{S%>)$$Jn zBw) z5OeJ)@`>IlL^waUbKR?LX*|jqk6H2)860So0igxOP+?4I!A$AGaaVSwuG@`mM~46| zrV*h@O+O)LuCOPb@4`e)=kOg*N@I;x=XJ+_J`Vjof;#(nK0L?6<;?e7`Oq7y-7b>c z)q_71D4MEPM$uAE)t;X-0vE6%=Z}>TRPuJ*h>v)Z{E> z2U2_IGTr_zE>bs~ZLnDOvS`*cBl&WFaBe2*`6di>kO@iy$S~n(1das>6et4bBU5Pc zQfQ^NrsS{W#$MCKvrxpi234rgCOu1xKHvwCc$o2O-_Zw8iqzHVE- z<9}RQerUDQ;t>Fvh=FQkbmjEHng-|ZA1k6v&C9|48_1DB zeveAx-z18vK$=F{2wI#-5J^>d!ja@rsa0On(lQ7l>l$oTq!C%}?fkfAYi$WB=_YqB zJYVHhQWVqB{GDAe^7DgO)n{0Q3VOWr8h1#Qe_#8VuChksOde-QTms*K z;ek4Z9-zm90>uzA1*}!xhL9u;;6vY`AYvM)7M8av1ZYvZDS$fyjlnxiQ zH%ABQq0VOrxvc$$?izQz*GtSF7VPY4e^)7^Xt(mJrl_8ZyRYc*OPU~y?ppDW-Nn_d zkj+lB!H$QCln5Y6VM(#cecK}tQHiatRSEp{PP<r z7WoLhF=_ZI7j6Zltv%IF`Vd zQctwCJKqvM%LvHInSSIg3Jxm-uRej^3gzql{pt7&$)bl%g?sJilUebS0shTv2gxya z#bw&Ug4sEh11ZKJJ<0t~J1xIx#CHhn^?f6O%v-}XOFCC*=jQy5M2U#Pg;?7eO#^}d z+l=#s3d*cY&UCizlGo?yj>rA6M+W}BHBbwwQ{n2U3$fM(Dzad5cAZ9rnIol=6iIUy zF1pA+k0eLSKZUhaXefElr3!5`9^j6an^3l6260IqLc#*#@T9aF0j|ZGO>yaiB#MsA zn_{Aj;wZh+N}{(yBhCv8Wyt*?W%5d|&vgBfgO^u33DJ~(nqrLqifH-1@hN7u*)b&s zVzk;%VZ8p@X%+^bHQMqY&<13XDJto~J`}8T0m4{zC{MktWY?mAU;-$a$CG`XfFkwt zl6x>ni~$#@l=&I`%Pw`67;)Q7S(-pYyaMGC^7s$Q(hDtx4TG`S{BnZ(h9OcEf#d#Y z_%b?`fr%^#d=L@3q2UE8!yPBT2a@_*M-ahOL+JNi-QE3As>&u)zEw^jlh8`2v7rI2 z?^TE;MsMg?n=p4+ylf8t7-7QM>IUCLlZa7(2w_V2D`91;Tum~yyR6(@z*mi1xb-U} zgADbYpY0Xf38Sf&_UvKo*}aD(;)66!)9YGAAbOM%bZyKp5@GbVUa70eYKzN(9f-}5 z2=$@`uoXZVCW{Gz&w<_opmCsp9ehKgP!lZhsgadL3ObpHe38GkGFI_bI{Cr+kWmnsU59ekrt z?rw>X(uu%@(l_YMu98-unr60;fFQTlo1k10WM@U+@O|kylVe{34W4}d3tR`OgUrW7 z%lV%kuBlI(kEDaJTd=4p&bbVqQmwpb<&ny|cd1cBAnwYf*5Z>tAt-z`uRmKmPCO7x*0liCl zg**!o8USeEIYO?`2z|!2Id$p{gx^cO4QD{ziKvf^8eEOd&D=p~&$(An;8|nhlqrLL zg0f*dHY}T%N!zZPv)~7iJ$FX|VZ^gz0@(29ouuZugN*auyhSJM_9sK4ocx2NfTMPe@1^mb5C%>eBL% zlTfomkYcRDkZR$^`@Esm;1=?zZAc*Auo!fsM*QO_TPe-KvUNiQ9HJM$Q1&ISyZ4Dqy2Rp+{ZyF!PK%rLGwrY z?;s=bBb)A9CFWdyj|{Ez>>Pj8XXpMFG}KGvL%VJJG*YB;bvo-lcxH2qe2E;n_|TFg z17Hpx>qMYWVF6`f0NemBxcxs@<4UgO6zO>q8D!aG%+|xK?Cj6>5Rgq;`jtG~RAoe! z7|3iE?Nn&LXRU#nWe`uqX}?r3VNuo4EKk1)emzWbuyn@vR7Yy!=t@{?8aT?55t|f4 zLwzOFUz%H;Qdx0FeQn5t!IO^oroj^Z1|5JLt9O+@<>{02z&~4|P8J>r8xooCU-!!~ zYqgm>tsjLgFL0o|BD2ex0|@)kjquPtZ7})_=IH>3} z6K1UZB?4$BOc)&Q1lD(dCeU{?_ZX#voj>W{17-+1CT1dt)xEsj!?UHn0EBlHa5247 zlH`D>)W8lEXfRf{em1u6kY9EVkH0n)vMHmarP?87o^3!%B(o$Z#Dajvq{`)Y$GK@e~0%SF1Y1;tMFSxci9nnrdFnyO}x66y8#KZFnOgDY+P%2&P16j zpXNfxlvv2d05rCWtK(OjWX;?{kpQ!V$B)6r;FUjHG@O^BmxSmidaz+9n{c(YXIYi% znrWG)6iy`;K3hQ{j8yTqm{Qr2tS5Yt4NQLzFExRr{|2~8_=a*VX7>+fnmg)4XkOjT zQgG|8pPE5zydo<}(#h30Z?xvfAfqZZEfz)cQS=RxQY!ex6hhJ|quCPT^a}zB%$Pka z(AcLBj&^78HH#Jj73d)X?W$S|lnG?Ub?sV6P5!^Crp_lEiP%(oj)66xIA5AlH9yUN zJjg09BAJaUap<|j0a%zup94^JbU+3jvUQ|$Fop0pL~5YmPNYtJj%qgUi*W?i&+3N@ zg~|*-7<^2I^C4zDLA*k}Sgu)z1_8z?m@ih(JIbx{XW!t1TD_3F1>E-@RD>UlsT;D3FN`tWG5${vSHG#ux1&GGN2YU3MN{SQCG!e#4W z$*DJ-KW%N}dN^<55bl9-Tes8SMw?+YsJ&d$^YG77Jz2b@;|o#Ss{)%ZUkWw#%ZBM}QKD}S{ik4=!VWV%g*d)Qg z8NTgmk^+RWjcM)hp;DQzp6S1@D;)?%Ilb>Npo9oOh)I;L3|3F%;xB`wq>kf_IE-DPNxS- zon(U7lQmzuzwLf6Bl{vvwdW4X2y#RzCM=A3OZ8p@P-so2I)Vv;sHmw-vpY1g!&HXV zH+=gO;D>>YOTftNWDx&f7q+fC7NFpDiu4fQv%>nW?%O;)xPmoBP_hC0Ba)1WAS{qF zh#=ZY6bZU0-KfCp1m>;wAcByMogL_vop9U4ky8u^_?_QM>i|$tfWj^iJh4!iBCwP$ z9L7xZX~O69b#AX@jp~CSOhBBXNX(ZvN3fTB_dZYP`V_VCCsF*zd-~CicaKjMeSljA3_^4-UON8bJ6#%JDE)Tw#B;;-Qmu|DS-Gc& zZ!<#_d$s4kr;6{@({T9{b^9q^`=5>j{OqFh;pXF0;5~a1Z+8c71gP(NZf^DA_8bV- zDrGBQkWO3DEpDj~Q%#HBtCp0q)Osxze(5{kS^og57x|?-&)&4m^Mn_m90+Agh3&G1 zW&&lj{Qg~XL`*><-!Y2%(XPHE@pL(3C2melP3^Q?R-$HQ*@p%vgDtNXJogKzZw`cj z%ix!6m1$N=8oI?8w>_{V=yVZzA2M_3hmkh~TNv|aR1p>uUHUh?c|w>wH*8)Wo*b~9a+H$iN3Uyb4B;~k`lDPZ%Dtp|4F6p#?KQSpYQ`L|>o$Z;(-5S?m#x?Wyak)Cv z{(6CXbcsK=l7;^TMBK&)qL61InSd#!pJ3t2GaRNEdm58RO{5@Uc+i)p5Gzf=Dv_Ud z28r)ibDHa$jj))j62+B>ldydo8~|a{Gi9kmQuY}Ae=mS&dHuc9%H_fKP|)=id446; zf?Zm$VTnp)x-CG|CPknSIN5!$9*79^1oGk2OD1l)IxZB`suc`9yYjqdj%p9sA zG|6h;#YL!kjd-y=+S>~YXsiFa!=dgQu)z)d`|qtY6Oeg5_Jk5?05n0Or4{%P0V=lA z``HWF9Kay<$XLd?rn&|#FnetT3;tlGJrg+hzaGM+4DD13A_dA`lEku*DvKJ!?32y*l zhvD<*p|v$qQ0IcZZQfR5nTaRF@Ul?ek97(~lo&IYZ?QgLzOGlJLAylJt}~4ZU@V~f zanwrXtX3CTfLcfe=z!2T3UJba*wci4lzh0lGOHX99ZY_({R!wnvCU4^Kz9XxSNgUa z(nie;uxf|jv&$VuWbt#})dNJcIcmi~0Fe1Ab(&^CVIYBsBRcApl8W(1^Ng`w2Q>{1 z{h2N+tCgnCsS;J!t2txT6wykxu7MAzKg|I<4sOA2$4TkPy@&JBs))~7EWwb9&@$%V zJ+CePHFF#H;0`iZCAhu8Ygd>HuW%>h_EY*cq6FW#UtP8XcE<6Z{nuCI=!DC~TjJ2U zW@q|Fy;UKdkKkcqSN9We%JO-_cf0H1{dhDry;=IaIisejv3j!jI?eN*2O0_fCrIuw zx&3$xuYBNZX&@d2IN|3%IRYxry|WBBkAn5$Hzyn~e=Jz9gi$?n$9`({ozW_V}_%51}OB7LtVPFfwbC8^-S zmxozbWNpF7$O*%5fafnT=veJL%CcNBNqmuBBawzjQ54k06q$XGfV}B4%QnZ&+2^Mn z?9$pfvybO6&l?_1ijc@C-gic5o7U6QQkruun z#mDX>nnGX~Odk^UU7tn!y-2?bC{r2X!k{3?Ut_VDn;2VTe+Kd%aTKyl!}Cot>$jn8VBOj7U6iEx6!ggwQj z&M!Ar*z5P~1p+Yf7`Po1J}_jl@C>Hsixh|%-wpV2_nZJO#l9O~!avsxu6z@=N_U<$ z0;bnPY+2b7J_&~i$+(}jUlmZz&YM*jk06w{d!>YapsQ?C=}g7$uG5NP04c`sx1^vW z6PuBlKcujwM(I%U(Yfrsq{Hx8gZ~-1lon*F0h+3k35x9!E|X3Ml%{T{YM=F@)EW*M zY(fH(Ffz8iRF_-)6w8?1y$iC5H#uSyy*b#?#dy6f`&1h$^`TbDV5~1i@kUoXN)(@q zr^hFV2oL2w%w6`>wUCO{i?E8x&OP zLFVeJ3tvGTGYm9@?e1}k9l*q<-LOf=Pu0MioMsabbq#r&NWs;VkZoE(tvZTOMI!=_ zo)@eu>e4|j1F75mWSA@<6TB!iEPLXg9SX&xDNJJ%rt>rtMYeJpd zC;bqLyQA#UwvqE|Pp>5g1aN92^PIeZ9#GKN8o;>WA0crA7Mw^;qp&dze3a@5e=jar z^mBzQ*xA%IbP5(sV?MdgMuaptH1TTFja*%!jiW&%{9kC!tc{5gZE~-;2B*G%Kgq_1 zjfZ<^+zpUJ6J}udzqcx^rEpY-8)rhR*$Gt`75JX!mfqcS)TiTLy(5?dNp)KFD;`^} z+AA-Wr|Mqii3SS8Bj)nCz@y*@O`+yc3QizUeEi7izRguA*Dm5!&&3H~syANzx-$@9 z(cW#WfWiGXM@Tx$nLbP9J!|Uq#k<^aful?+cP?*f7lf?hf*Ll%j7H2GnO|b12&`lBjTEx1y;jL>F89 zB@Qmt-cZSUkb_4i@ex}7%c(K=(3FtGcF)5VGtQZ9ut~R{ppkWLrI|A=YeViELgpF z&6v@Dzx*cE0sxTBMpqs|R$sFVj6xXKE@d zcd_7ihS)oRh3|iYu*qvy~({8I=s3o^^ST5lXr%{#K96G4-qC`4f-5 zcr%CeMDtoe^2`%v>f+vCOnQkpLLYpc$zbyabiM$}Y~R4Xn5UqZN>MZ@zK*SB;*d)x zfD-iyBZ=D~Z2z2n_9v@Jtx%voqLzKH0zqEz=SzQvndk6Hz1LI@c`P<9Xvpa<{y~Hu z{-4U*JAgLu6Qe)Gmt@LjDOleEJb-%)ngn_v00{ie*>Lj*PGA+LZ#$!w&#U^yEqfrl zKJ_kCl#3w#e2KG)9mMXk?8xgMWBv zTnH12F%=b>?oScnC8pqUf7ySruEkn|QG1uxk}uU^Oam>G!jyu5#|46Rp_KChp9!KN zgUMX1L_K&kcb{Dz?E`a{TK0#Sdz9b%rRUK{Ui!B4{(-YvRqgzwflB%E=VTrCr>PH{ z`{nJ!z>&jO&B4n%3?f7&Vu1FKV(VK#bxjpQ+T?}Kw{xM<^&hv7;o`KrXUws+oj7No z!hmmdP`QHjW~*lZB(!6hX%{`sNiu&ro)A$ft$90sv|0A7=vVLunjO#K6Y36@Gth z!-MBJsdAKMsE?=O-D_rTO~NWQ^=F#diZuZcKb){^ch{ONHfV2uzeYa!k*u4{HIa3?cPaw{SVZoq`sJl^<@ZZX3uJdR z$h|r7Y=6FmNVJ8TMI8<%t*~Cd2SUM=-M86|+0%EkpfXFO(^>;Y8Ib$J$ioz9%x#ho zUVvkQb~PxC4g=>lcT;9AC<5=4LC>G+Ft?Z8L^3=cioExSHfm?I!Dj=_BvALlH4Q9N z@G|9mb<4v=iB$rLDL&;Xl`LA{Qm}0CnOKydq}X5VHEtPVwOHW4c~De zIcrv?znozRdzv})XwyM$dZr?o8Ig*nS~i@MFRBXyTba zGKE768tP!!qS3pfOgwcHCcII>JToYZcI}(%gr2~0S^|W8fqIN zEEj5m&O%C4CL~JnJNm^nQ>_q~q)rylO84zsnZiCarCGyp;LY4x6Mh~n(`t4h*5((| z>&G5tbiWr8wT`A_;(NHAXp@7T$1rM-xdP-<(5s&>yB|Z_F_5|uXqp0_wQ@-6c=*W1 zCDZAs1>{VSlL)2FgYV~TG&hpcUnzxwg+%;4Li)V3b-S7M7pX zK&iPy)CTr_(OiN01>iu=xqNyQW+WbC4o=~8KC9fjoZr3KX_75c%2|LrY2hhLUBB3^ zPs&&xAS)zP)~Rm`Bnq&YtiQdPrJF8aGBh#yaXj38_SEwkKrXgj!Q>Xa1DUHO6|P*s z7z&z&{U(s*3})f#3DBTS2QL5CO)kaaRN>sjXI6yxm&>WpOm_MD@a%oqg`CDVQA_*R z0}RQ@$+x33J>dFfF!{g7G4pXUGL(JAMX2p=uLS52;IV(6EN=#j>EPS|s$!cG)Y!A7 z5=#t=&CSpa5TbYaZnC4l_vfSAKp6!^d;C<+f6^oVzJ@wD~B#5X1fX{i-Q5#ubDH$9=2;i3nm?6LX5X z{VzpvC-{kz=i)H{9f3`)`cr9un!a)U?&?G`;xLLdIQQoDQRNP^T<7R9!RP%)nMWEw z4#n4hWeIkNE39@X1Yv<;7BscK*>!Ek#>Sv|c6eX|gBFORKkiTIP|Dz5W$F;P6iHQ8vYG!Sh)l@*K&3sw1ja6{gd|uWnx_12W@gAW{!C;m%a?1(2R0HNF z93aF3Y!)c`{j&O=tyW$@H+t^MLuE_zUZ@_Wb!HAwrNJ5#B-+gSea8#^88W@~R=(&? zu?)=c_aE{u@MBcasmMXu2HXYU`JSDf&6?W%mO@dQeo&)(kqK3NCns5;D}j?ed_V_m z8vv#{&~PXTSrz4t+84}4A{^aaoJ?TF%v8M@dP!XmVHB;a>yVQEoi zY!~9@4zQL%6c@|#pfzw$D$7liTrhAn4c2V@VLoS47Qle;b?LiSa}Qh!m+?sZP~_u- zH$}p*r(#{*k^M;*+;X#BGDwokc?Sb4p!#$CRV)J4pWd_n_*y;xg6tr(1`lVKI2P$! zPhDHbL+THBa2oTl;XmJY{4Rfi_PShEIE#tIkc0W*%Z{sNm}{fu~^XhQyt;71vSC^SW8h6#+N@ycp^ z^mW%N1h&p7mC>$WTbwam7_r|!Ie)Oh4{~sTU5a{h`>Mz^=36W$T*e7txVuQivPdM4 ze4G{Sp6((Xp22R;SE93Rx8msg1vmn}jpRbGB|7CgoW?s4$#ags{3W^q(8Q4*&C zcOYN`(V4!rGxFgkvTAN|t0R6uv-yk=%4nD}t2DmU0yBfg+byF0$9Kr`&Go|AUDAgO zQu_Je$<E9jf03sr>bUzT z7RsJp1vqnFod^u4Hwu29-}+`40W=p!57?gLvpZ+)&1B<@)!}rmI!il~6#=O4wQ*+n zELhINSLhuQ6ogycx&s%HYoq^pULfk{Tc(~*s1UeA4NLsi{=8pnoUXsRHY1;Rk55k~ z{nA{{Fm!I`kH3Tsc&znpt2MY~_V8WdgQJ_DdV6t)v(n8v*`g;=W>kG?7K-C;Z0rO( zhc@1h@j*n~P-0o~be0+c3A*o)XsV!LlC&bt)|+&9!%ZG%nOG+zLFSHX#1KxrPMbLs z>xs#)afNZr=2*-}R%O|yr$OPP2d)NinSlkDzu>GXI|S1w;8Fyjh?+>; zd0R1Owv=@aFrD)yCYDjuoKePGN|+nLZz>yT-OT5;S$5Q7nxtqb_+(tGNq6?UQr|+y zQ^tr%*W;S5hNVE04s>c64x@;<#})bN#VM(75y=z?EQgOj1e=$j$qF9s+>j8`z2N+$ z`levh;@oK(3Dg1s4D!c=jmch&CE0iGF0eu~4AsKfiFtPDA}LXDr6V;W;(1x^(S*i~ zOapg~U0EYSQ|_GqFa|0}a#tcSKB5+wQmN7?t5MS`wkSxUhlPdNw8X9Nh3^BDNR{yj zAzJ`gKa-v~6cgnc@ym$C4%F%(&eHf|h<04(0pbI*7-ZI$xyP}JpIC#L&X|$kTeXsn z)n?#*ydSA7{e zHqazWOvHhL^JuZr&vF6O=|IX3hI;t;wQ$WY!gGFlH;r4>_qj!eW_+T0vMM-h*PYJ& z0gHLaI98-2IawVC9G|#U2}k^|5m~Se-r?@hmqvOX=syf^K%9^1&&Fq-YQfd{obkeC z`|mMeRY~NIW$iU>*fn~|Mvel$WIG3DWAx|GM`u=7s2K56UaF` z{^*PK8)QW6qf?Xcc(FKqgUvx4Ndg>>gIQ!}#s*R9eWfm1}bKij3A6WVWeLO0^>nB5^g$pdP z%5}P}ojF`~P=b)~4U9&#r;q6;OzVD3#PyG&Gzay}e&*~;$78nz%t#bsX^|H3ypWQx zhzMYh85l}sZ>)ES+!K$t(x7!9$l&hkc#vV4_|kK(`yG&$BO-p`ac8DraP3>R2WV0+DQansn$UG1aPcXT4;R6^%_m5;E}c z(DXc(@YSsP>6ij3wY(Z4$OCZ%7EZI878RzA&>zd#!PhKbuvA+JHgxlnoSJE5p}u@V zhSXumXzS!pdqSo?Q2CFW{!_EaFTp4O(7BD*iPm{KOH^-aAAfFvP=EwIz=oi%vlH_p z-eDD^RV%4qx+K$iYERceL`8|*ZF zp)1X<1__wUfh_@1aHhx$m=JYuT}oIXJ(4ln*8`)cem@iW93=dH2pc6ug!e)$`F_`0 zoYj@2#Jdgf7Ev&=_$h^svAmvP0ORt8y7{mVfpg~H_GoKfa*mLhv7-uZuLj9hRM@0m z&cokoqOM$5(!A3WM-cLZl@{t8+Kg5}t9v~?qiQQG+U)4Js@w+-i4rfr%1Ts0Pl@7o z>r}BwFU?lq!;(}SYQwM|yh;gi zz=lyzA!Q{P!q`c!l5=J%=JxnX;uh}sN_rvZ3uTrBN4-skwdeUlO^RbJcA>^>foMv1 zQo-x51#TS*mo~;t{ISH2o0Dv~h~q4q8-20jMT;g>^9B`<0au%jz_KP8yjt)3n@JB543#^#~rlwvszlkZbtrywQ^@4fmEP7`0_ z@J@@JQicbj-DEHDl&QKBt7>Igxn&Ny!XEm<>TW6_zU;WG_T6|qKFa9J50*6!Lz*Gb zOYX$17Qz+mkB+faaX@655e7(qcqmA{8z7cdT;m|eq!RqVAxI{L?w_k~N|DY$8mxHc z8oyM^t^sa}MEWRU)Z|fE2?o|gVk8r>mjF`75E@nI6P88bZ_w&pc#uxz9#3tH{bk%y zG;)w(GFWZtm#&4y>gIVvz$;g&PC42t;an;i5NN%FG;#Qb#`4z-68bxmKc%>x39`10 zq2|BH{J&{@FgSinNUJ=@U*sE5L>F?g$}pBPd|Bc7942iLNUo0{B!vDdPk7l~L-M7q zs?a~ZBQJ#?3)_bEtwW>Y@w-A|v&_z6qG@X)aDT;p^L5F62N_0Rl8_&Y3MpS~@yyHr zJ_>h~o>3gI=h~pg9Ow8mj5)V#7SrdS-3RBCNNuJg$6)26osNP`DL z&NKAoR3$8>Jbb` zcW*2ur{Jlm-p^R+aZ`|W>JP4@hz-l?;$qbu>NPvH(~yKIX=`5LPO^~nR>3lB?altb z7l14pTRmhOJIO6$OfcH|`Bb%cJ2cKRGHqYJFOgBvW-ORFfN#Jb_Zur!G^H`tzu$ei zEvMahgGO4@zLr~w){LJ&%h;OvTkZn>KyePuCaJz_fEVCzd{z4R{@?H5PHLl36U7D1 z&amHgGW`)j8aN#e(khP>15)o7=hQYY@&^vm=VWZJVdWlo?7ctpZNT8}tl0inslS}U zGkV$Jd`fUTzh7?mc&7|-VSm*~@N_v4xtAlW2R zjqf__bOj2AU-BQhMV{_*4Bz*bDWSdTm%+m!>>S`Uq13i2z~dJ!#MA%Ebx7Pb%7TVA zt`zf?E70^CPVo!k*A7d`Txo2CJ0O}+Ozwn7JyDz+Yxs(U zM98-nML}qwhIbAOJ5X?%2C>T`PA0{8LzZ%RLCv)3{M*)+36TmSAIHGRCK;Hw>1^v5 zoBNT_z{3GyqHcDvnE5ly5OC-!6lk{dj)a@fK(oNX-1y6(eL5RZxC|8ZIH57hEf?cb z;(Tk{UPs$%F)<*N3pvjKoby(=cDLi?&|4a~MmRmMn3yDjbH0Q4019WB=sy3=DNJAj zAsz-co;Yd|g=CaM)UTwY2m&P&d2N-!`)(K^uXJ}feo8yW7*g-8x;&=xlf3c5x~#OT zvjmr|)w0XJOt+ZmT&;N`sjmxL8xd(u*spitqs+IwQ&Qg#MBej^g$uxoH2a%`P|TmU$%+%X6*T%ZxKA+&+q;_=T-A=-yipXXuowFZa=3B z5R8b9CZR5qis=IF?*;d9PmdUj8t&P3>-r=sVXg(emX5(O|)-s{E@UH4+wou_mWs9WFtA2FcR;pA;t zCZ3n;7?>C&tx6_aeKa!3>%W_aSJ!6b9x{y&@T_ly)U)kB=yGp^9s+}yBq*OS_5L4WLw=e%H5Kf@Jkx!hxtUwI68h2Mrz>$Yfu|gyJ;r_*o zganrCm$+s0`vKx`MTOTEJ^Qp@19nU{@R1S6{GPZU&6X(PD@yTGU}*XH4SfAk#u2oV zx^yKAC&&{ANGzuam5-g2^37wuxl{dR_&czjgj>v{O%r885m;bbsNBO~!Bq17*m*QI zi38!sBU?fOs&a82K_1t!ULE;w9nh(V9+(D}Vn47s|+iAYBZmJ5#4Lvx{X6r?6G$-Mcz zTsayXoAtc2D<~w!ph?LfPc7fK37ab8za8yt(UiIXyYP4Cud&lrt3f%j?z>O!mrt}8 zRYBGUH@0E&eU+$nYWr5PpEg{s)-yrHo(3R#SF&=7G^&;OctxPT%uD$i66Yn39cW@J zYItm=skPM03-VZAm+3T!tLC+w?wSA6pgNx^N1slBLo~sCmOcXZtU|uW+n23CfBE{~ zss3raql1UO<>XbmN^B32+s~07OF(6L+H(9~;=l(gtn;w&a8S{JR4A}t0UF({O9gSWrEl4EAK^fMki2;BDci2h7F^S7e*( zX?52^96JErpsUHoyRi_X4l>!Ko$|oEI19V=curECx%9#`{mTd;E0{T5G@2`j|Z)C-7y8-D(vJc?2^H zT(UGHZ7eZdaK{ToR!!FoF=oW*yxF?av+g<>fN^q~A10mR2*}1C0b)3?>(*W&87m8% z*2?0&m|&>*M9v~(m@W}NLD=`5Mp1Jbq)4eJ0i5X4A#H8EH@B{fOOobX0;omP@Kg6h zkcRs}2c#>*N6~RRvnea20??>o9=c!bT2QvIC0;RPs24 zIp933amXZwO-fmW0;eR-Hh$5gsW=18hZuhcgg1cgO%rw`QLZtMkRnfy~@lai7GX~zmQSl~(mP{#-YSKzbkoA2i$ zBO^1pVEDR3C*B80AmF}$Qg8u94nK(Jv?p1K_9GdeH#>xs)Y)Nkq68CKR{TzkS>E2a9ST6Uy;Cp&~5A5Z!kfzw12U=ZpLQ1AgTuTxUCeMrYNy z?PLOfxiBTvO1pg+xc53cmGh)ec@i@p=Q1~a8ihdePl65WH#@s3opzi+c-5Nq-#|kI z1hzr@ktbNd9~OYUyaiVQ@CGF<^97rxfI(b!Tifu5r{NLc-2jxBYU2?-bu7>ZENZBe z!oC{L_&o5(?_IE)t0s*f^M~clhk*Aym%(!1T#$r@v4?IG^E3u+KMruPoHyKjRf;{H zth<@nmznNNs_p%YjA+mjxS4cQ8AyVNP(2$eh!Gr%p*YgJhQMt3%^Y`qO1C3R)a$2Y zk&++;Mm=uT-0a_92H0He38mLHiS)(TB0`u#4(I`!9n7Zn%?$-TDkXk_#F-=d@BuFt zieTf_Lk1NPNW`ndASway5$3t?!=0*yupn{8e|Z%oU?r66e+2v<56?(V%@V#u+ zV3+WZIQVl+@P>JlM@Xd`C>*CkL=&TM9<>J;+d(LTVjS=Rn^!Q!O5lPStB%W?$X}kz z$#6JjK_r7yV|uHdaPl!ZXv(U>db2GpDd}6W;s%4lG_dfxd(aE$`hx;|ShJ-oyH&pPvmFvqo+RevxOC} z;QP>lhwA62c14b#RvoX!2-lwPRK0%#?DEaphxT58wJAT7dhVk?*>8W^hvv?=Up~m4 zbg;Mo^*%*@mh!sPc_{aIGWJTL_ujqcbUwmI#jz^--S+yv5sc|_<4J&*OAh4?FlR0v z@E(;et_N7R{HA|eqd)6+*51mW(O$b*&7Cb1D2wZH)M^?+(%sXSO!pw~Ia`A-Z#~7$ zeB2!Yt%T0qcw%ob&r~Ie9u6~$HZ+ASx_EnljYfJPFX~gy?zany$%GRef->O5pJV0q zMX@=*dKF-Y>R?jqR!%-c7AxUxsyH)g_sv4wEVbm9j#lAj{ZFN0o~PMdp6enxyNA`F zXj|!&0)Oxag+XA)G&z?6goeI6cA#jwoFnYV*ARXM8jRlfkPXq2K_z$#_WD`p4HUO! zLo=tq>f@FnAiFkP4>3cN@79*2KH%Wu#sm>P?0ici*a?#TUuUNmzZTbZfyeFwJ$T+T zA1{n6XhH#`SH4VXc2-SQY)Ty5myx`8lo{KVAj&@b3o-Elz5UBaeH$4?3?Gh&`$NS7 z(-_f^AArdkxXuCOeV!3;r}znGXD!!QrsA<%p#+iuV=RaYAo!l|9tsu?Yrm4~&{b6~ z8rs{ZLXp}u0h0M)?B@+X+ph_3Yst0w9=z`|U)un}76>RDNzouVX*Nh+8<&*A zMBm9+SdRxKlgzK(hJtXq^$b5OX6EW3y|y3H=mr9|W)p*+5 zY#A*45O(SoKyemBd0jPT@-x!CmvUefICZ)r;}kOt_eLW1W29+QhlYkumph<46d0kM zY6&6+)K6w+$zTPWF^o{3MRZ0hhlQld5&*xY^aA1}(PEtV!QNeSZpMsk32$9T4d_%C$5ClX9qfK)?+Wop41yq>hBf}3ZdyD1^~i$?Ohcm63T|{~%`p|NECDGV z6+MT8xwbnR{3=I79^U1**v;+ZG3cITVfK)&O0~?YM zQqXV=PfjYe2R((eFaNHh$#C1F3P`5jYP7jU6NCjd8%k60K#gYX`$YP+4T6B4rprLh zR_7qqmDc|GdE9rRg*WXwcVxFg^{Q|OXsH6C6j}%}1ao(R!P<4bc0z9i_4@IH>3WU7 znR5lM@P~Rt$jT|~Ou0}9RxF!kFZCDtOvEu7t2MQ}0nv@3_nR z!>_Q00+7nv?x@>O2A->LiniG|S~Z++hu_n$CK1NQf-CAqV!82z(7NrGVropD_i8e> z=Ha`}^O`lY65-l8-);TPju_GQT{zyu@$=d9zxKQGXU3pN0>g`;dXC2{PD1yy+@vz0 zxco^rc5FPn_0@MoK+XnkG3n!UJqx=JALw-c@!j3(d^2~CT{y2deM{im+f#$+AQaW_ zuf*S`*)haD$)?iS`t@JYs@%yxePq<&q-J(&^s*q3N1Dp;ewLfD6zfGZaLRtCQ=aUq z)U@a!L8aDjH`kuD>M3NA2MsG=)tk%@%)DtR~4l9<5?e~vlq!r`8 zcs#7joh{mrFjaZOjP2QZyP}RM`|0u`X(Wt6jFlS-+?V1i?6eWQH z%+$1Kg*@|e{-@I8&jafvyudMMKk)L@f3O0ZC5z9V;0)1sacO8L@dPad?|JeF1JDe> z^cXCOZJn%kLTg!2|E}Hhg0Zu{omyG2yQn6E%Q|QLi|0 z0tRRBA%Cm-N4ocRmKnkbQ>RFy&3+(&VwfZ-t}4@SDOlqG;hubk96`w9b7!3lf|ji= zpkXx$V03dtNTG>ABti^JT5Jpa=o}p;vL>uzIldGjj2&2zF`wWE^&+1%qoxd+-1A0Q z`W3~V+p9mElp}(+vC;$2=uvQ}9?J zW@f@IrS0xS>LKEkwbJ!*UgqrCHj0cbpn6_idA^6D3cSyUtZnwlA_vyxo@;K9pNdbBnb4Ww+4Nd2R5q-;R1oo^}Rw z$fePZkPZqL;4p$Xb#gRI8Jf()7{X8m^}fDZsNN0Kf`aa!mX!gBpVMvwb^<*X++=p! zTb6WMP5vZ~jQ6U9@39@Vd|m%#U(o1jXUhB66>n!8GsdP0C?{SuOf2sxLDh z8o5hW6Q;FKL|4nK;=}vA#}DZP?#D-s$PCznFW$g@Cl(KRL!}U7s*nfKh{o)boimq+ zKyOYPrzje7W8dVcZLWQ)k=MMfldx2FIvg@0D6!~~Z%NqbWuJ>7A1e@tUz7Rw))@ij z_oCa~o%RUl{pv;7ugJMgw~`IlVl`pZu5V5Ehr8R4ncL6q71J>gxQTQsy&}ebRPjt? zXPHC$t$;}4U`k?mA=wr0goS$RiNoug#r9{*wmV~QQFY~`?WZR`-lTrQo$_#`umc~Y zi)X>-iRY8|N9Q^q!ZGEv?A=JEy>t3hzM+b0BFM;o_T7~YTCEsa%XYSPFib8jMTGGq zoR}c!XIc@nIHa{#j;E)D_5CheSj|^znPT+(yZ{sk2J91H!Ue$m8)%v;i2DA|5N`vP zw}F|`<+^!A28>s5J2%Z$ugnD!6B4kGB0xE@a(7^?o|L?*?|m+&#&IpQc4w|*tK+_p zW-Su>aIta&_p~%`IlU#vG+4?W-62L;7vBZ%^CeUX%Y>g&gim_9<2jhayh#QlB9a0*hzM#+ zaMH_@QO@?~hm|;#%=xlzA=3~<+bJgq{A1m(^JL`@5oR_pl!KAT&Ugw{6Mu*^;zrmG zM|Ytr6HAmDG2oNtbtMJz58o{2p@d2Pl#%&~4#Q2>Zx;lKsWDy{3=W*%!Y|Tgz>jfe z2ehn`Issep&S*TrnA{zZ!VcK$Jf>)Trk2i_!4GO4WBJ&NVo3kgUXKsV=I|~boiptu);bA1ObjbhK z=5Y&=&}&DF5~KYbXjq*~gz{*Nwc}tfs9)aaE!TwQ7S`4rzSa4n)W~TzvPTrzHGZ~s z+WO7zdW{AS-hy+Z$1WmJr^K)llH|7Fa-edWKbf623zEM~IPU}j_G{`=jE z6T-|I8nk69=ZL+jZ)Is!4N`>sNTl?=c0LpRJMAIb?)#Vt$Rlf}q;as^^Q#37EwJ_fv&8pw7R@aD z=O>FP6j@_`0skKl39S=o`uH7_vjrq0V#4yjqXR^Ie^(n=>YJGPP2=L2{jxMEP8r9T z{i2&jj)JDB!a?8;L;Z4?vne;5Jx;(MeYBq`lfVIuiZu!5Bfifxx|M}cQXckteY@ph zV&5zBIRXT#d@>2W{(0*v_92Kq-hKNB9OYRW&AB0#t2zp5<>v$R{THQV{!ti?e#$Vq zknqwm-N6RRU_tSiH^JH1n3Gj!81M5<>kDnx(+-Dd`^DG&yNYM!c1SZr={~9t3B$ma z+7yt$3x=t%gm+W5Bd9i$V2R&KZ%`?0E@Jg?&hX1@+KRP> zsX?}6VwLDQR_EVe>$czL^ew$|&j;T0Ps@eRQqKEVTE5~FD+DBY6iMluHVNOl$$pt9 zrDtxE5#7RqH&MVj==Rq2sgLh50M4_s0u&U+yyrNeW$TWfd;0>~zkZv^gn=qlew)EqA4=4dBT_>$@1la8w7^FPP(4ecbwag3FJuFPz?4tSoKJ*Ww8)FtfAw^haZ2sbV$Mc%pxADT?Bc%gvPBStP+Y{b9|=Vok0`;8qYkVosW(Zl!q;3BMDB{hUHm@^MqKV7Kkdk!{A zVB3=1+j;gW%(vVc3vq@LX`;RS=B`}K=%{l49L_Nn$g*OAVcORkR?c(d+oWh|GSrPhyOYGu3xon4H_?O zyE{(qj{=n5b7sCr=Nn^i1~opfUc-HV?|s6lif0`~=zhQ$L8No}?@2;sf>Y-Waf%($ zXj}ciYUjxeh?kEU$icb2z4f%W2X_e)0T)Z(@Uj7LTSaBcy>kZb(2e^>*(mH_x<-4=dt(M>z3=*V?&0Y4fe)C1Bw$oPrL1Mk2kRo zSMTXZnc-3&33I5Uxb%}m3?w9@>GXWRi?b_nD9jPR5{DsQKTUEvR8vbTq(xUcoMrWL z*QnKaVuXMHQXG>s?fjQY5yLA7Y{sAFZtE$sDPP!GgEV+UDi#*V2bkQ-{$O`1rO3}< zmi>fXi(`RBk^O=bgoPppkCFDJp?e%#EQib=O-;X2GHUy6Hs)ZBF=Y?uya;xQJXc;B zE(EvqO@}1b_SQ?v5)#++3EP<6WYcb$NJn`FW{unEjMrlftgywh;wk0_INDSU#|`Z}jxa{0n=PQtwA-ZEsqMg!}``H@T1A@txVPG5(vc zZ{IN5+S)-5I?(h8Po8E`oUjyqj9EIOxaP4*shY{B`+V~p#COKNbM2-iBH_)mG1*L* z#mX#l-EDa`_5+BmIkiR<=COa_bRI(aNcL+?>NPxe=8U7om5Ar|tWGbg<^1ehE~hm# zo9u!C;HQcM{4!%y1i$7D5~M)mC>NY(;7Ac+3K%$aIo*$VHMdOJKU%V#y#(K@AP!Qd+Ul5dd+IwP zj~~p}gt=6BXMa#w2~m1z^HgBXi^RwZ61Q}ts$H*$kr@8O2Rs&pxH%T2X!nl8h zO}GA9to*+hz*ixpCcY8~A^<4?&87ebNZe2qtbB4VSh(5+9oYp9L4=yM$763k`Zfn2 zZs((u@OFUiCh|r$CUiM??#YaM$2F?+e??kmHa+0kALS=%uL0y$m?)Xo=?CvaIn4rKYv0pvnQAXq^0EAVRw9smzk_V1 zh;qX7h1qF4;PHY6hb0(Vw6yuyM*tebJ#zp440xCTuI!juGhX2U>5k{DEa=hpygP8j z(aPF>Ytqyjr3x!3;mv!l4Ow*%O_Xu2sibG2&M;+_9Y>19D)`g0?$@8&TraAMS}`|6 z_3pDZ1XuMh3FHzn2V{RF$)gpResxpko8VfDzXXWa{lql?aRYT}-r;MFp}nSpsk3MV z^j=RUpXn5c?3hnZnUpW_$q$LGS;-R}iP*A!-8l<~BrMnc6?nYWVq*Fq=^MSMY&UeN*W4!))f2g?k+V`6GoY$NT z^!Aza@%lT=Vg3*mzy@o={M&fpII@_D%fJ`Yzf&gMP@!R0E!uGff3=WFexca`e6oY) zbp#k=B3AxZw(O0fsvn|5^|Pz#8+R^{!}0T$8cz&Z|V@LZL$$ZN+5EF;)` zkC$*|Wrlkv2EZIU2&5v}_%C;Xtapu%eI_7AgjHu`VG%ZSOS5vH#h%`9X{t9Lcw+qu~S<~f$rh^&AvUn|}U$IE}3 zwjWzY|D76nZX{&);)}oQa+BRByI;9CDB8?N+(eGA1ROBU*Wf{3E42HxHqzvX9!IQT zf^p%+Ty^c|l=G5gH*<;=nxF0TtW<(pp4&m?vy(wi@TB7qNybyF2qvoiu=!*Jszy}* zq7B(S_1S^SL9`-4ERjof5lNjWx>SaqhY_ZZCuyINt3Ey9%Ti@~XdkyX)aOa$d5F5X ziSfw*nEf+5pYs~en;x?51d;QakIkOnMl-UF(f?J6m?}dh7!Qa|FTqU5Tj@DPBip^W z4hv8~4||u)cTm0N0E*>I5;nBvWymP;8G$4haD2w>! zif$F%WbzH8$!Ngl-*N92)*QvE|Vno+_t6#Cui6N@-R6$vQ?SF6^mgkcqw zSbq(V08>UgJVQ@oaemo?mr|2N!M_)Xw#dV;Q+g8B_+GvbF@?l`fwdwEcJ^bx6dq#4 zL@5{NLZ8F0JzLyEjxS=Da62awjD`4CC7Pi7YJ4VA*2Y)L!r1h*5KAn0F`ba%lyz?i zPv;f@;b zE`yw@sp)%tfo_2NNC{_t?g)8SRmY%9W2fNC30l902NUR?+Z!{L%tYF2wC6yh)-ZS_ zfDh8dRcKqp`{=xN2a(haTv7iKy>Y*oIPbN9UEP}Uz1j$Q9j36IHhe{P}z ziqMe#=(Beilrw{&i0+%^c`uIg$>!6g$ksM+Umf_}Tcic+ufHNU{0CKgb#T!_l)4gKofAlX9;1$bu6#Y@=f%ItAGjaOFtoRy;AKgo zDLY}BZeuVmdH67{jKMfm-OVp(P;HqQN)XdW{f!ktCO`Iz1+o=kJpH!Uu?Ly*yGz^` zpi$ERVA7}u-?unh`J8^Ak^812FtU-$!;(d*5+8@tdV8jw@!QaLsj*L9aIUe&J>~m5 zaXl^ES?oXx10G3CI1OE#y%!|Eru%X}`l-S0T|7#-+k=W9tyj#isov^l;w881f)iV7xID#?+GJA2rg|$rpD0mfDnuH93oKc}gX4Yk z#*AKu4;uJtnn}FG38e=sE{&M55r498TAsUh@q*es`(mnXLHqD z0n+YlVYCtv2v(UQ2+G+1iY|C@yK&fRF$*kEZZ>y{PN|X9XSnKUaI*re%0E34q9bT% zO12~z#L1|}9pf(T2`(H)ez*(;{aQ*2w+ybTxJdhKbzM5cZFEZGY3Y=!BlAnG!-sW? z?QK6uId+H}=4Sa^j*-zx&UhhWC7wYJdH7LM0J;S(W#(oCs<`aLcYoV}NhG+3qT+|S z88fI~WEhUWBzjKre$HgY(ouMhc!I;`V~2Mpu(&6lRZ4-#Zo;aZ>z9$63@$za` z_;3E|af?#1<7ZQFz<+;9<&pEUt>@qM{l!=BTtExLl#JsgQll*7Eq8&Pw9{n{CpR|k z+nQw~JSI2(t+A9>2nlC0G_y)icol*lC9ObX1NgrLN!$ht8%LRXi3;?nBdp~o*TN@a z0#h{?5&nhZ(zk0hA`G_ecRNRxm=25G9}EzXSfULMM|~Op@|ajOE{+kPGMU5$#KKi& zlk;b;5lh&=Duh^m!2IVc<7T>lHi~KWnFU}ZiX#(6WnwvNwnkMs_z`R#24kjUsR_i? z4HU%l#pR~fG9)ei%7_)pjPuzfsM9jbZJY!PE#AU1hgRd6s<^!@#|5-;t}EKkM4GzO zZM7hZ#r$?&6~DaRbnuU2zp$zhSl5HCR=YV^V093I6Ys0WFSSXb2BH5;y($FSaxaA@ zMb(v2_ZqKWw_2pF6-dYo+WLqVh*FLV1o!3K+G^So(@`smQ{yUx-3&E-YbSDD@8>w}_FkB19h! zoiHC6j||(4)rwb3FVlIwZGHiF=r)fn_gjtTBPz$2O_7 zq9xZ2{rZLmCZqF9+*@M?Q<{$mLKL_}zLdqgg zE@h!pxZ&@Na0%)8r*0#jW@*peI(u4+Z{j?6C_8TVvrP=XCYxn@CC}GNg5222#S%5; zM#|aQ#2;zV)CZwd@}244-La98aW1rU!Nnh|Z9OUNH}JyHJ>`2#Q!6nk37zz!c~ckL z==26&osS<24k<@7_U+dUgE!&#n0QXL#NTXrcY6m9+z|u4A(0 z9Ur`N5-By-UC)c^b9ssV>S}cv-j3JmBD=HGMvA+*G?+JVYJqa28KQAH^%dxiyV8;e z#{M$eb0bx0%{9;uenrX8F{Guf*Kwzq5VY8LZ_n!Kmx|ZB@HA;K{@`9p!s-+2pf3$4 zMv~Pf(LGG1M=7D3_QjU{YgrI6uDd}fR=KznYfmiT6l#%#35R8m{Ta=AHVal|KNe;Lq`!=;Tplm)9i~GBD~I9K?9j zF#!5!;U;;d3+;o^AFhvRR~ugC4Q^>t7A$m(;>O$SiyrbV>O6#5*n|}efDVR($Gem0vActxAimuutBGEnT zn75aIr*U!r^dZ|P3Rw5R3o`#_X=^2cZhm2YyUP({e9aBatj{G@&jS|1PRe{4iWT!S zDC3~%{&ssVdsExzQhQ#vqep$LHJfh5Im_dy2~p>EUy$vOM2V+^Mp*Y_TWA9a!s=lbrb#6r}*K3ylN)ehlR`}IYY3|gK&_v4bO>lA1+k6UPp0{ z1gXEDBQNy(sz7X2R@R9mEoeK@7_1scBvUGzpI9~kjjMl2K`bRt$mC^U@h`kS zIySC|VEg@!`7d@0!3W#dOlWe*l)zgEOMwdUI5&vQB}AW4!wN*%VWP#wbq=aK=xA@* zWJd|98vmA^SB*!&V2j~`>;%E5lUb+#QAoP8OWutfAP0+LHBWG?mMonA?+5uf#owG9 z3$V4IL{?)%*hKBS*{74ElFG;O+9{C~$CnB;5Y_qX6akxG$m$oH#=%OE7R(l{3W?w0 zH<33YjIy+ZB~Zh-dtb<>Y7vNkmOIL%OxzyhAuTu{sy0TJi&OV4JJZBvohQOo`~9a+ z#s4nAOv0y{zmdBBr8mkdMW>`#l|zC+a*EMnGLncKjz1cO_B0D1OmD6KMd*PCnC@7 zJ66tgj}}4VmSfcCVdFNP?1?_z)#aw{(-U_VG?(l@ZE8Rud}4`tcZL65TDw!AF9AuO zQPy5fnZc&*7Z~D9Bb|7w^2Ii(|H#X5(E!dLxgt5&rteznIXscn1|4>fW7XR-6tTWIXdl> zZqH7MgezcsOPo77EjfB>H0*guG&Z3l&|Rud*YuIFxn4+YZXRmpR4n0o36y#K zq?h5UlI2`}(JBc=rKjdHxaP(`ykLB< z0k@~b%s8KXiTKxi(o)pWyy+SXD{;(w1v7Om4d-8t9QU}PZBljBObn4QO!mWbFeydd zeDZWkZR-q#3aVJOYCn_NG{8Yn)=IAMfB@A$;z5DbYDoCe;qg)6U)^WXeP^20Oib!R z7Hdf|fJyUzG?&qtWf~dV2<-o<^HNi1QlYvgZyL9UMN^&f3$?vmTG0i9URqzga#|TG znj}90c{t^?@rF(!Rasw7-53>-QD{6qXVdJzl^4`brlteu83ql*Ud3Z)ou@d!Vrm@> zWQh1ebCUR4*xF>7I8MUr&LE&|V%HfSwe7$y+rDAu+Kgh}F4~EW+u7=?@*(4!h&4gJ z9rbMra@YU5E*ZRuWx<%gcnIP!&S0thMHeVI;e8+!_AT=p#ge$D2|+`ea6ngQhfi(M z;^EO8e>R`Je|dR1^!=E=72!`2_^hXb2Q7AZ!_BhNAj^53I03~O-N?-S?uiQdv$$UZOec0@A=*16sR-YHTIF` zAsOJ7;T9MN8Yt)y^=-nahwR|5F6Yf;K?XxJqhMxoCBdKm>0dWtwR6US-q@Lk$*%?l z#pSHLGD0SF!2`89?pt#iJ)(~q`GtkZ4ou_=!@C8NxRQK@NGLJIX?O$`_VgAn0vPU4 zgWuJ%XYg0|4vla?kY+P-iKF%e#Eq=p5*YR%>G1tbE~*Xv!z%twN`;qZ7B;VsPo5E7 zR-#h_KNnMlNW$ii^J}?Z)>i<08ubmtMya;$4}TO~Q^XAhI5Qctgq$-%7-WW-5o{3&x|Hy!0@s3w_)}c&nf}7mYNw8I z0g5(`v>AwFGBw!gZ%$fiyYC;djfn+f)jtx zr?6_!Y4J!GmyWqf4LM0TwO7SN3Q~!`6_21UkF=LR143gJ*qJsg(jdWpZ6gJ8Th7$p zO(~s%!(`WE)W}K!^e*#5>&-usEbnb5yH6c*!i0|7OVA6K=7)!|Cn2yzDzK2#)0#Gs zB<`1ivzoI#d4>>JJqw89bq&6)wpS1S^YoD=Wx-N6 z3Z=y8SDcM%5EIWDt@wKAMD2*o4@vlTzD};Jwq{;u>wmCT%;kUBMH&XG=FxS&qw#yk zQL6&#HwQYcr`8@?3!A7W7LJ>)I8&)j6ecidu$zeCN+lM43bpEcEf8%HSqxhn5Zd)w z^m~#jF8o3#04v&JPXIcKH};!f1@`_7=}^Nkp)rfVY=;kfVQ_Mm8u;XBT%&n`sb8!a zpP-T}=3Ju&Woc{{xpjq>glT=BUk;il9#2tQFMp;zjcr4&bVMI6*oC+eYj><>FOA&n z`a4GJcf@q^`utiqmZQf7v8s|kK3>IK-MUK!aglurUp}`BK|)~oLhR8EnEP&!MP}o* z`5pX&P!f3^V86&2{v#xySBdY_4Rnw&P{_P~VTWH_T-D_0B{bl&{(;?@c>MEBR=9I&fvP)wTJyiy#q`*m~yUX@wy*R_t}67$P@tb^zGYe zQWwA?Z9M~2b3;fMM2c2hgs(Q>AxMu8u1_z0_WQH9lC<^L!QRxGu*b{?ig9cAl&*Yw z(u08`mG$=LT-i=We#heGuQ#8z&au)-xs~+O5hMG0XPU`++cEu3~4hB4POd}+we562j!cv63Q=bJ_%I-6iwoA0W z%?x0@IquiHT7dcgXL0gu8gTZ42hbwz&RlFWDtjgw(2&m3GBZh}Oo`wI;+|e)VZ5Q| zWjxCKkT-wiXziZG+YZGx8x#kl0J{p7`%_3@R;XHHbZ-4wq45=t**=B!mX0(Q)fHqpd-QllX&srkEF z@9s1q2F&@YVMty!)|=$!#C`7%0^JwjUQ;5`YQV~}l??=%3V%D3Qm2z)tn!n3FGebt z!Dg*RBk+p7TNSx$X`0Jr z!Boo)H2S#ZeMgs*bVuc!kkYH0UkKq3L4urB7clhS|H6VGos~)ONlRP8<_mSTQty5I&` zv6|DiDgAJK^MJ({5JN~68q?u(NUdga-xep^5?sASU-dqGy^YTN<$jxarP(Fux^-Vj z?QOSg(05ZvT=nCv^U&$Vl(Hk3lDBtup0f#{pb!*;%ym3E$5XG5=Ze1o#6fmq^!Y!3 z)_@2s!!ZA6fpW|-Ii}pf%xWqn<6$cMFHZJNpq<2blv;H6_1m4>&Jf|iSCs7+$KFv- zrzwvFA`jxq=Ub(S?*{}1hE{!NG=prxOsbKeq3=4U{76SbqC4Pa8CI9<5VO7hN2G8* zLi9kA>_r-pHsIv)uDAshuRNg!ER!D27&SIZ1;I41x|3cSP8)pO+9m&dyQ>NoYnrOW zy|2(OyvqM8-<4T){H&V8{rhC_H0PtEit8?HouQV5rjvZj>_dax6AP45K)reYp+$^s z{ym1jFMtqC5xu9_y}sAr5_X;AY;-`yfz!mjw}?^F-4!(?^h-o3f4FAYCoJb~feP!& z`K#D(Ps=9jh7450m3ju(@)8^V3nm`hB~C$u$PzBz>{Zq9y~2B#n=H4DJSxEpR!q=}9as3i%u0ltbM~&D znuZ`!N~4}aQ9W^bS}_dEJC70TK9~})gZefTGwxWl>jxM!VtcEy^Fj=el4w|8#nY!- z=caf=1WIwQrfw)?Q(t)h`{!Qa?eQ+!XoIhhV1E#$2Mcn;*Sn(8z%&dU%vH-$P|-qD zVmJ zr;0e=Db}>TVskGiL^0~>+`htlcK=s-jNMpG&t_p_DuffH5lVx+TY<%p8$KqzUxq>j zk=b=Vw@2$7&=HQ>uJ!f3E;WHd9@)}hoBtTU=ZF(<6v(=za&tXJ>Zqlt#J9n>JzM?( zeAKGz{_dv%_RKt}>|Q*q2A}k-9T5LB%l@?hzzH?>DNIqfH~l`5WYCG2s@mGE)&2kq zXU(%ex6<>?Es`B`f1lUY182lQR>AN-q3X47eG>S)S=FJczzN=`R7=-~eO`)hT#9v1 z3kYH_7L>!TQ7f!QyrDlFqb+w+hJl7S-c4!2*u%q}WKqIMW&n02T)%}>b62nDPx@Bz z+1<0y|KFUeHN}>^dXU8mxdSB?>5t- zi7WksA8Q&>%cD2+eMu}%!d8%r?O$fO%Zs-I$4w!H(wSaW{~fxC%msOc>)(78!+oNc z_J3XgK@{%MDDzU>KynnWLpE|17}H4!6S)YLaI_D;f!-!aNwk_+Qe3s0q0JQpa^l2A zPBvjRu$i<68bSTeLAl2bc5tJ};oWag4zS>_Mhu88W8>EgX0@!MYJ&4h=xr2@tR(PN zlF)J;Yir=bI&}xEVr)^S0%d|PtOMe)^It2;oE1U%BDyGEt|HM);3i0M)VWHqd{&7b zNBR+{#dsBjWFo1V+}H<hJFnDZSNdz@BFQ`fvH*Nv|o)9_O&bRH?oZI zH?L|cU!eG9sKAHI=K5#g8vT)VdD9-TFE^D4e(xinHDbnLX=v0yfd+-zV}XH7y`m~E z@ID>)qkxkTUE#p*QFr&hTJTko%o^_?w6Y_8c=5v#CWKr?RB>kd{m$=7dps*RDP$*d zDAt$7FMDU2w)JN0_-TB`pmW^>PSSObD3Q9ToC`^w+)x+n&=^ERH+aKorHCDavYqj+Pd+bz;~l)cMl;Wl9Y?4ZK)vj)ti4 zTO?~L|`!wEswObYm= zJRFqIgH~UK>l}qz+wZMNYpzP1SD0gInNc-uqC`ly%XWfL$dyAaF#Z0RkwH$G66~j_ ztq!H(UQ|<4DN!mI?Oh`xt#`yInV}dk7oJXF71B6QkrUU};8iRal{nn>VDF>q-qJAJ zNIiblfX$^A%W=C{KHh%l#)YnTD$kxOsz=rI&gM~D+b+?NMTahUBQr#E$weGD74>hj zTg}bI=_bg@s%i*t?svZZL~&3n&gX}N9U>xdd}#gb_v>C42ckX5`*_=Tt;WKm>=RG= zI^*rZLFj)N`8ZT0Qlfg*idorh?*M1i_^9CT zwOOomHlnUv)7U6eH4iF)u!AWa)u$pOG8_)^R=@7i=)0Xt;%%q6-K>W+Iqfm)L+|8U zZ@1Hhu9u!;Tn^xNbJVm$`W)5%x4_TNS9@UZg3#!Sn-~BTkI_tTnoqsnt_iD^;Cxxu^A6Krfr-Mtg;8-IHex!8h zI_;3|#}3*gs-b28ej3LP?=nk4fMCS2K! zqydf3uL8!=^&ptkwUPnd(r`fkj9&|+#!{z;6E{(<`V?u8pZF@Y8jf}*C#p_GoQg!z zh@LWRCia7!l1@9)cI2Tj|O!;4%Jqj=Y6b-T&C85A|O@ln-=p;n!S^8{#Ekl4Vu>_2jdeQRmK zDi#?(FYdj527l9P#<;P2tL!rXvAYO~qQDO4Q~EiI86yXIbzaKqIbb8Emtve7^Mcyy z1F^7E=+nQgwh_jVR{MmcA5nuuwdlx!loRalw5z=xqg1&i`s1UAW$H}vi!@}u&U5wQ zx4U=*fSk*K#>lABdDgs6y|z|pJ?|I$2!;d>TR1s7eDzJ;@NO*y=8@B=%6I)|>*B;B z_84;&AHl-)WI91)H>y+vX$LbQ+$h6GKT`vV0jZ$aKeB%lIu#8xf3RT%rUd}IG>A0d zA_VvQ5jUZg7}w{v`w=pJ1--fFB+kQ)^5Yxgv`;xAgw<@kh-#Gisg@ogPy4RkA;4KP zxwy2w>9Zrv*Zwtf@5gVEhd*>p4tpHW;>GIisB7cJo#Z2B^ta4wMSY)pJD+eN)+Voe z9`~d9E_HPqkk$tGVN}5^Syqd1^Sg6eTrp zsE(NSeNo~6Ch{p=c@j@hp6et8Qd8ZNbz{1jl8{s7ZwmJaXV6khhPT(9;uG< zpcedSs(*CKf{&5~VL|+Tl*%Zw@j-{r2PInXA(a{K_t~ef3V0<-UqSuVO6d1d%orn+ z%=ggxA7}Z69aI%=$_rKD)C^Q5#0Gwzp-E_JuEQDQc#f|)>ij`5v+C|O3&nDYU;Q!8 z0SN}%U{wuYQTi{FdHKlFGv3z-J!VKycDv%KE?xW?8aXRNp|&nVnS4|%xAq_G2tV?x zgPFp`y3M&Dr^}GQG7A-0CcLmQK2G=6A;r%RS}I!nG|8eC@qAQBuj{jxE+SuL@1b$g zOY*bG}#yn6NfggG=toxEBJb1`65FfHMuK!Xf*v%PhY$dQTXQPW5? z`L)!|Wj4AZk0Z&uO_ODq2-n;n&9`|xrYPqCqB}ve~QVd9W(i97iq3!lYk!DbmWe zx87Z!^trBd^7lUnAfA7j$9J?j9KHnx(1!q@lbH8b@QE{waB}k%L);2ruZ#NAUUVrlFoD(!#z)a3rJ$8Je zG6Tf~y~36UK;!bB{m;SsC^EhhVxx*ny3F}4u&L8)Y@(`wcG|xLwbR&|?iCXg@dnZN zYoNrgYGCzzmU%~yJcVlSnouynV5~T6Y2c4fAo;L*(54evxaYNU?a^Sz|DjxOX8+>H zy9m<(9X@OZd;CFvh@it~YV6N!qPRVAtbyc6;6H~HqSYPBH?VLLC=OWCFd2N+@u^&r zasD#jM!#q|T05~`Hne?US*f%P_E&i6C+#wF{vv7*!4fPrJCL@p;o=l@Phj6zoiQ1uqN&qZjl>m6P)$;X!=KROgpJ0Ra>e3_#aoDr z!%+O>if7`ysn0)Ub|z8PRVnc&CvFc5#Q#QxDLhU9vrw=;V{FXM&FD-?otPM5HmoK^ zpP|N-A|Jl)+pL#Y6UoGCUxPvcznG6)UynpEp{tUaL0)KF-R^gtyy+cgsX`lUdh~(; zv)<>x<}K|{8~J3DEjdcba6nWdH%X563#;vN_?b#a?$a){%+sqQxsBb!txgz7txZ_! zc!EwO#38y!oBUH_FH}e-)?JnwGb!(Nyv|IXY`O8KVXv$eSd;`C@_mL;NJrTLE#{o~ zxWqd0Z6)t(EC?!&7(Ih9ar0r9;mhW6cVN>uos)x#%aVJ4zChj_uS#HC_)F@pwYK;O z%S70UrorKGZ%np0gBn7mpu>hAm1>u{48V zJ_(pk(J?UGciLRP{Wg8Zp0z%l4gV;wJRcXwIK4?w{$g+~MCNsYl`t51c?ws~ohLHr zcTr13s*p`qWJXY=gubF7=dS7ASixn;6r zMi;G`vHYU)eRkh|Ml)c~40X^Op+aOhvWasBjWfr59?x4n9OCm{m^d&<2LAQ*`-!J) z%!kjJhB_#f4#n2ljiJUV8u)++Su=utx=*biZNm<%$gjhq=%S)mkXqJIpv56f=gA$b zF7bL~Z|uy|oxHrs=P3xLp2Dz%$ds8#zGjJikknpIrAxtC{n7B za`Y|7YqSi*%H|@Pa0%(3vkqM8xru=8OhsbA%N;*G%0ryo*h!E{NrrkNJbvp|?_0<7 z?Qi`gxU z8fa}5)1TV+jcskRQ(R0%jvA)GW}^9eYA+Fx6AdFmCtz5qC=qI96-^qBRuF&zIjWj? z(tWI-Y<1gX)hEbx#XSUL8+o6GXKKIvoWxJYjHr9b-oXKqY|?r&!U;BZ2l8l!Le3gE zb)B)4)W-nSr8xD)&0*y6(VNmp<8{;E&(P^DT9PVPeC3*^n)!o+Hj_x%RmMKf6uh;n ze$q|g$p#1k@G(H5crMW+S0!k_o2fk8h+w5GD8MiJJ1{?i4BVcrr_dDl+oU{Sd3^T_ zD$8tfZSr{%Ci8Y8*&&|G^7IGJ`1A3X+JIsWdF6g3*sHtPaWr|1@{J%+DbjF=;#=wa zKQsbkCB;*?nz}4HEGgDDh2{aDBwuOWF^pTr>RA-}{JL9wI`yH|za1s(fBsn&Sy|YG zu)Un6v&vW%03@Ej#xA^GySA0=dLxZ>=cx7$S-jv=SOc2hJeUnUs+$UJ;7xUncI2Bs z1A!{AJf3HaKn6b<{tov}pOw9>rzEkP(GQIzYB#3iB@&!YQOP30UlPSHxF&;KZn69l zDmr4z&LhTmU+I`2L>aF{$u+_h$XlfmG36-3<9XoH@OKv^%hKwwa^ccy4`$$FFvAxS z5y1roR1l@MQYVz&X)=g?!7GkuOe&3ZP%-q+t7Gml@DpX**G*)fUNO+4W^~9%vLiS){P!Syh0hHPhLB4fwB`EG67gxn z(~;eYV8^w{>G`Ky9aC3Zd*~y{MPKOb3^|vUw64KV+BF+xXe>%1<;XS?+Kq1yRtv5d z!FI6yH+5#q?GWi{L^^zQUvRs8K&PB6?LFaJX8A5Kr%M+?^rDy)j87_ib&*>A<=ZkYJiYSP{_GLnwUp%CfaojkH1?>}p?0eo>YX6Gpt?b7$1 zp^5f3i!4n8s^pYVDGzitYS&?&QZ#uPq|?ZtZ`ZF|GwYm&X#(s)-GG=_-H*X@;$x%i z!*sRC*)J7FW@aJH6&7jHr)~<1Mb_qvvq-u0!x;$)IJD^rTR(Jtw!=wDNOJpowj`)< zczN8?OnP!g2E&Oz%<-k*7mxDS&JNC8u3Iw<;0KVC3(pjp*7ov;gofFw;KEbDna*IB zzRsTr#e}VJ?9GzNt)rFm+h;1bB0xh39OsR~VhDL@EJLtf|NY*CD?sffUS^R!8VhyE zRV{Aro^DzZ1*?4CW#g!!pnL_lJG&^{u&1!{Q3LzhJ(5h(*q^*oRc3Bm%?N&Ag$tC4 z*{r4v>|8&^0{d1;WVfA6SMs7AF`^#u184O)QMI%svId5r{aYw@dJaA*k6P@K zSxt~xA_;#RgCHSu<57i@?Gz=O46dw@z8TF192vop9mk>StpE&RJ`d=}R<}4y9>L*= zhGG5$$Hj-ixsEPl4*vUuYt72sPoIU#TcBK8#}^*ikFN6t2Q1LR;PG%kJg#Qi1mph4 z*5+Z?j(a^|?eEIdJ8S8n(@6>uQO=!HP2y$@H@ z<~BF_vVs%T%RS5~Y{^c{_KCXRq4_-Sq+CB6Wp0byjuwy{m13^IPH< zt92zz%6xgvCXPnw3p|6W#4&uf#e766R8ctS$4r8hR1sLY+!el2dE0*qIJ&d?YB3P2v(?Iyu6)A7cutO zA%wbX)(Ed)wnW^M{4ZUWlp@yQ7kW**j6NSvI&S`q&Zj`b#k z$>8VMjPB1QQI&COY=r1oRXH~MH5|d@>MJ@B~-JZHRGQ4{DG zwqbYx{ouHHqOYX7_*dFk$~;dAhA`1}y@Eqar?_0>=BT2&u=sJ_YE8}GjFqiJ52Nfr zFtX^lbX+&h#O&imAW|}Gbi(a%JFXf#| z)zPW5`SKwJ{a=l&IBo8(e{6xl5b^k(&Ei>*S%<<@?bZS&rEvfZMB?#c>@g6K)lO^#P7ewS~(4f_>N|GP0n`h>Ee>!ZV( zdf^Q_&r7>%cl#7epP|pL5x>)26ZX?hN>?O757)J9=Yv$h%uffYH89A zlu_9M4CjyTDHOvt64M$p@wVO)2Lgud1@tHgrcnzYXmx^zD4J4&(;8!^AJyeWZD zIliQdcv@&!iAYK`3Q0 zaX8QGY!rsXs*wMa)vBJg};FN~QljeSa?H()F|7%RG5x5dNlE?N4O#hP5k4-I)@ zn>sMHx)Vu^gh>@ro0FImk%ehs%%zW1q(_Or<*uYM&X-a>0Vjk)LETJz;{DOAh#JwU zv4_yZ9gUy?*gA`GE0p|A`Z8|eGWlnA<3fm+ZY^9O1dY^v12 zZ^IGTNyvFPe?Hp})$HoJ)YtR>X&IYsB02JQN?49~v-=Nk?|#nC$M5B!-&Grx&0-qa z<4MTFNffU|bM%{RA3wS*kK_-$B9C*I-|Y&M9*64wdyGSJo){>el>(3^Q@!*bJKxennC;pIA5Lhip?QUT_TxE6K4siWteGSb+D3hMjQjx z@EPnYs90+_DaDH5+>fQwDf=5m_tk`_=oM8^b_D$8nMOsa?|cssd(}0jzOX4YZJ8>m z&v*rEjk7FpiKfHmbMfdlH`5RmJrp>TmJ1s=ZcB=3nQBZCQsEeBUd`lpetSg+InXJF zq6ox))iLl=%pwZ5O3*0$@Bwco9v|K$ZryrlLyC3a+(}{CnMCac1!ZDyMCeiGdo%H4 zm137-Orfd046)<{6GG@gY>Ob4s!eS5#_Dk{8R`1GJH~yx4+TQ-1 zzVz;oQ9Q=Y!d!dbt85=UGLlA#L=`XE4`IRyg!i+pkC!-KA(CJA+_Bg*%Ut#PjXBm& zwo?1E+%hcn?SZ$(W$bX=nPg||(;D=8m2R8ha-H2IThaUc_niCoH#1;(@5dL{D^`zI z57Z{4eW#;Oo~TgKbl1y&>1FGxPxCf-6qj~vK$;&yctX-1^|Aed-k?e%Q5=tK)zr)* z1r(0_^sr6Y+%&3haGAtp6uvEabh29WIBx5Iw(&$4(|Lk$#>17}leSaDg4B5M|9Ju6 z!CvAv(z~X-cCy3$f3+%t-Ky++B15b5>y6U|<}388rqfersRWoRjb1US)E`FS8D=2= z@sm5Grt>mJc*BO%h%I|U2_@J>Y@C30Y76)M++-~$WQ4v}3|}$1a;ly=s%DL;jLANL zLJ4JiR?R$s3B`I5E2y(HRMmgpA?rk1N!3#EBpOqw=#w$Q2kGRbRLb?p<~{66+$h}V zoJW_cV2B1nE}G)WxU+FU?GKGa_~Bd1zvhd0wSCf<>^1-ttKvS|S~}U8WWp6CZblH% zT$D2=92}_mueCoyWA~McT#&?PMEIKd#E-_t-(Yr-DQ7C>3S;3GW(|!bq-0e}u`Edi znn(TF-|vXZTl?}{C3WknI-`lbZ4JD25c~E<;`KL8&d6k3ldjHJY3>Qpkx{vpg#NCz zdIADtclm#tEn?*;?o!3gaMpaHV1&U)A-&AAyQahViq5tlH`aCsdv zVeEB!l7%M}m_|ADD1ll`oeQh$_mV^?$!0R`&L&7--6&8P$w03IHQZzS!|9kq;CcEtS{WkrYvVYRf=Hh z_lY)k_j8TpXm$eP6K*5d-6WQInEq|WH`H(b3(zht3ts;c`C+;j|JyMMAT_+JuOC&N zWA0f`#r#}VvfIp(^gfXw@98nW3PKnai(SZ_!QzQ5>g&4a-ZxD89dBX?rvUP=vkU4G zDTQO|aou<`u8EH;bkWOwafN_mr>aAkCdn7of?_B$K^C~yvI=D(^Lb#WfXniEbbt0k z{%fWsJFYmZVuVhca}QM1PMQ@=d>Qz{XUvmc1(etP7~!F}A*t zP7jakShZZPRH1(PsJbl7x3y{vfc3%N+phSwj^Gxvv@CqvDPKUj!E2$yIql7bzlQXp zb|Lm;$aix7;wo8Uov&snal}PI8zkBUR6OEdIyi$ijSE zL*uIVU;Z^H(OR^0l)WWy$|}BHtuVX5lk~IpEYps{GeHeFrMLI|9xRhXjOG#jC5Mfm zT7_X%HjkX1Qh*cbjSAA4kmduAW`t;UeZABaSL0~WPN`4p>%H5(j6#7@f|!0828%Qv zRl4eoSsjRvLNumKt{81ufL3_7G2d#TDIdd_TLnwO!>KVx*RNGdv2lB<3*5 zR`4$efFvbl;Xuy^7{%ugwfv_$?ECxsgM)(%WI;Ns7>npbbyZXk;Uf3-Y}UaQWThK(Zj}71&s$K=1vnN$@dU~l?W>I)CU2-P_=8l8DS3x zwVj?zQ9Xeo*MFo?Zk|J4xdmA=q`hRiGPDnxtNgP)+vi>At`l9pcv49%3S#X4ME z0%#aD&0-AV$yVDi3KtTTdGf0bnDKe^|3lMPg+f zQDbuLBT=jQd?g{0m^RlLK!;>6e4}08xo0k1r?z-&Z- zM4w`-fMih=R*T$&+AWyaC+qe*^qlDkcS6mRP-$DD+%irUSo@x)`lbV)js9{ATz#4Q z7yZ}FFw{<*{|8&b<>tfXCWUDy?RdmV>FKt0L}s)qSu1P_J&khggQvh=b!EY>9*}&0 z`R!`%YOe2vt+Drp;KEK>5|ALc!oUc-Ey%9mnL9N!>Fr4Kc^a9>ajeoV0`=sZVE~I$r)p|SQl}}_$ zH9l}g!j$tz+{JnrnEa2aj6wRQK*E0CjU4R(YFA|Uos|b;vZ{GJ^zRwd56nZ8KO>yjfiaujDL%DwE@~SBj z*ZQG?>x_qo$C!tJDo=ZEG2py763_#V-Y6JX!iTL;3pKhW0C45a?@co&r^M8u(&3XC zH$eA*FQA!Zfe%zuAVqEY3xlN_S3B3mCc6=XD%XP=e7KUEB?WLCSx^D3s!#bZHw0Bw zhU?QxbSxqxPJ<0n!{NU$l(vlbKo~mURbVGTd5o<|*L*lx{EtDJQ^q6dncn^7)xk)4 zo4!xR{JB^E^5RrD2IvJ(QeAqx>A8LvpWk{8zd!52YRrh~Y`9;a#Yvcn3cUNvXxYN+ zgiT-qN8>SxTQkHPz5>d}2raYwfi0+v48`nicxLWBj^$4AcE#-UwJpoT#k=c99sRY;-h%jcg8=g-)nuYitZeui0MyXDqa$WuNvP zV51;lTr@r_D>>mi+{8f8UNtp{{lcsG3OS8#FJV8+ToeAsbr?KU(nM<_vJ65P z2nB^OSbiNPj~iNLbTLoT-A%8+!8CCdh^SdV0_gOLD}lT1&@_t)DbmgDPcK(5a0V#V zXunhcG_DnvmCz~=?3Kgt_@iF1VeX@t&%V+No>E-Bqr=qsQtG;s|w1mX*xMBvm zS%c13vI~e(l9aYck{Icf(#hJRs=zKhP_6j(t2f`q&C81JQX6OKA5=6eDU=l&qL~UJ zBBIMsZX+x041wGGxqpE+MX^N5PW8L+zJA#6yeGujb?ftaML6zOZ#@hrL95CThydEEz%xqNHaRhjf8Zm>9=_| z8Y^a*f`Zv*L2-oQRYJWS@6s&)WV5_tz8uEuEq9cdeQhMDs-p|X;2)-@ln82fY@LGU z)B&^BVn@5~#C?l`l2>dckNOUdY^HS4LV~!Xw9Wb{IQS0V%WQS(T~?N2q?xD`-a>g| zUTu~mP?fTGqtHDP^wWx1GGuaktg_Hbp`fV8QcaozcEojCSt~pDY%vh1_yMst=$F7} z#i7Vw0{LzoOu^^Sofa5M^*6E#@9;kcu4Qc{r^$v;cyn;ktL%&nwtR{ZQ@%noG1rLI zQ7i^vfr|U7mVFE+DqWy8i26cjTVn2dQtHl=S%L*5+3*22(f$>*E^Tu8$;%Z3TMN5@ z9FQ4!I+N3m?<~+zE-IJ|&S1%OIBH!7`3wk?v1u`{igX?kH%4r$_-?fnQ-2n(v87!7)j?S{^O&uoZnJ3k`p zP@jk^HVKVtOKE8gw_BLIx*vl)VsVSoDb?5ZTSof6s&+%!P7VGr=YKL z5Qw1*&1@<1q>5-a^bOQ`r9>g2g?K zq%F+f%+_VVr#tSg05CIYBZ4FEp5Fa6r>?YPyz*UPen&tOaLwAj!VLr( zJf#Z1@HzF|i;bSz{rkMvW?*6@iBA@D;Qds!L0uw)^z+0bG%1E7kH7Yt;PQ#EQofEE ziYUGE_T$de%~sAcQP!@F=9S zeq25Q6SjcP~1wsgkZ3`s5@oMV(b?X3N~IVC#uw<(|X@# znnWWdZ!4%$4kfCR~`4dXgamj_lN%p!=5>pg5J|?DqSc? z&b_~)PKM21uMH#)vz>ld2Z(%dYoDV}xx}Ta`xQI2>kV=7(c|^yY+<;h>WvG9!2h4LathBnumS7@x2o5J8sQ zdp)$n;-Z)v;hI#4L0mHucVV7FFu0CO$ViVI;>>fJ?9-VvF&$I^@Qw4+1kD#fM8&wv z(slO!{y2TPbr{VgNY%KWBFXr9)@$4z9$IjaTiaRui#`W2PNj9AIcv4!7+@oT$f&PZ zwnhQJ-U|5tF-fSP>3+W1(D!>%Sy|xFE*t zcXPZgqwwXvkcRmkKyi0CmGjTw+0|#uQ~$i3($lje6dco_tkY3a02b>C8}FTPysWvS zVaWaQUhdQJuTLGHyb7-}nVMT#LKg*d-$>rFUY36B~bPG$_fCJ$k7yOh7$ z)N{HhUESQyzunraHF~BudfLUqcM$F-Fx7gfUise?xRDsBBk(u;@nWwuW~QFll+!{R z%{vY8i1^5>J^HA9yc1!0Q-Q5zbRMD@HsT|-p?I;`l8*lQv%Sq&%0d+-1EHi&L_MDQ zI?JRgqJ}49D=xmEUHM5Qnj9Eu)gn|0#0;(Oyg_lnQ6g+ADf?6K)we7j1S2J^ie_4j z$pHTB`r4DtW!7%`R&)=C6!_!^&LC*s!rNAP{8@&nWAUH414L5*azy~n-bdh@YWf3L zLiUBT_f(rOZTy&(Ddh;E{twR?KAz3-FLOCVh<;QR3jJz{bJ{`C7J-tShNf)D3WEdz zc^Q0JKWNR(n?jW^Dq4yl9A-gaN8ECPR8FTX*;4gz&?-<`Lobhw(prI}yn$=u8W!a~ zKoj98?GB%RpuM&8h(HQ8E8%9KpKLa-XILWF(?}hWo=2)NT8o&*4r3U?!f?Ir?8izgjgCguyrJPB?}OYEbe!FnF$*K ziJ7jSWuw?ASX41`8c6?=$K*i>%24263;D_m^-Dz0a*li~nt#m+zXfuqhM-B=JH7qz zJC^x!#_2=q%n@~(&Mc5tOwoH?&a8rh2uLVp?^A_K{1bEKl&mL<2%xH0`Y)V7y%F+$ z6uh~)ai0C>6|Ed$-dNy39ojj!Pnv0t1H6=u1Vhh{x7A10vOW$1K!jduuDfV^)~q&D zrhxYjJ#+6JxfIPHwpOZm%tlGL#c9drZ1!3hvTCpf_{86 z1!!%mvOgLu!Ee2x_gjA#gm(|0yXqVqE~kv1y?nOU@ifJL$_oGa-&T9N1)K}VGJ4r_ z8V0m8$~})u;p`2SX_)vm!&Yq(-3<5+aoID6*z^`;nNw6!Qc~vV=IR=uT=VUW77Z=~ zOS*E|M<@>n*}g(@33|zQjcjsHUn)+3-+cd>`tiY>(Iiw~D&s)=Xl^~$G;aU1;u{H_ ziojd}4Af=@3pqdWl-q#hps+Rj(b09?5}a$PsSpkxA9B7qkkCiqj9ZF0Cq!XI)l$uh zZi|2cP?Jh@QMMNRx$xzK-5C66ylt2xqW<(X`iqZ~FTKdQMhQmPUu*6Um)_h81Jm8JKXFO^PnnyV0nxoC~}z zSfMf}5HYB{X`Xirb^x99Rw><;smfZm;E#)E@Hm*ovM%c68e&nB*lv=Z#Qwe0r&VZW zY)VuL>!*2fS}liemY=yj+#UJM9tqv@_5ueO$t*gHI$ZV;_bwo-9vm7Hyg5(9x0=U+ z32G~hg}!-aacM)ZhZdq%GaFSka9H~R3YpaZ{Pji`zdQ8W{hiBACu!oC6;FL-p?6G8 z4N%2^UQwZ7dobk|Q?k96D16vNLlT)A0%)WD9WCm8{^fL)f94q@D`5lFruX&3|5wEHU*`CohEKcD!BP6_ z5VIb$j_C))a&;?u^@M(k67zQ95hmNwA!t{2F$eGGk8xLV6jpTc!C698Vn%a(vvPH9 zMBFX=kc3F>Ld0)m@aeHLDAx-V_rkIG?c6Ol~+Ne zitx@di^WI?b0MyCzaO15+UUJnaJV{JIRd#P%$+uWFF+&=8~vjsK%B3am9yGV=vrE7 z)Q(ESzdnJJl~xCPlPYJQykjIE+@~dVflreeffU5Tt9@1de353e%se3@vZp^*S8(;9 z=j7U)cX9U8)@XVf^S0fy`X;gZ6v0Bp)&B_XU&`i+A6=_dGTOZXFa!J|szz z_=KSg=eauir9vnoBO~?wuT=mESONq4rtdT3e-F=V&ktofsPE6&GvnXLt(Sn_3#qN` z;`iwP4na7|>hEEYYrL1k{9UiVwGCtl+Mnf_wSJ!cPWUNVwYkSF8K@cF&B1Lk=tA9N zq&w#Mh4zLYHkKsWyKwjOZ}z+B?~gpU$C?XP%}+IGpTubTI8y3Tt4JK%XSfux}J?}Px;?>wdZWdR!Sqi^WTSqy7RCPF5&(IJqH4(JY9 zd5^d*lCA`f_V@Q044v2cZh&N9=f@j|f5L7cS*eCzvQ&kB;+PIcb@GF8MW8~~{^l*3 z*Q$r`Xu|WCd_K2CrQFfZhCS<-AV4Sxz^uSJ0%VsQUhx7NpLM&f1AuaSNd?fq55I)( z(C;UWUfR+LfhDx(|8|1Whk;GQr{0M*!Uonv#@k-trtdUSCX>N_ISuK*7-%j6ku-aG z6jl6be;Ezt&ySOY{{(2Ydb!^ikR5YH%E{LpQ{gvsIAf-K}_jOSR}N zdbMQLV(@U1=LlTcD`<*_3zk_7#3qTi)NS-2OgYDcDd8gr)e^s*5>f**h^0IUR?$bh}fJotR42j0a^Hy9%FUVm*qGfaZ6n_yP*-!DRmoPjWC-86Rjy( zP)eAm zEgv42?Nrz^_@23E97{=HVEz_msQ=#;i^E^oRFq3PCg-!c6JFOXG+{*rt^cyvz0W=a zm)==d*!Dw0TUJ~@e3%Wm{jPOPv_xmHdNEFsc>V-XCxD!5vHe%Wd1>oRc9XGqid6Bs z2f`9(b{ZDCu~x4#TQ^+t)?xvF6CvD~mZHzzGB>2NV93h=fihOltHaZ4$c~#?o5^So ztMG|(4mc}gy*w9CDc~Y1clD&5 zGO@KspX6mHW-ncMi-`$k*D%0q_;E}Y0anIu2Df^~G{?+%hBw0r_ZFn3IBXTS(P^~r zHET!pMw#k07bfqfp*1~qjpt=6R#J>DlTlsIE|n<5m1!bK;KqFPj2cA838|y1{lf14 zx*i3*=ExtnAa8}$={U5_PEWUPDeGR~@o6Nd`C{`{kWO?KPIYqxInQkzMS=Y_#=8Jf z>7zz%`5c3!0NALWb3$S zjXJ7q&c(@B()5oiNaq)mT1}hQ$m1oY!7AX?w{$W!<~ivaS**E)W?@<5x}{|iS(CSd ze93e)=8GV5S!-7mY1{5wdo8;!CgCfX$p}!tIF4z{)Rf2e3@{uZ4?hU@a{@FmG?6sj z?f!fGxXrqDC1G8^J7WQqEbXcOHcJ27rW~HpDU7S*toPB=@fZN@X0&=QaaK+_0o}^l z_gf8(U*fhE=E2;#Gm86$`uab=eV^)Xklb}8T5C$P%VuA+eroT|aEuvW^=P9A0>HY} z`=3_AQ>#FxF6q=PZoJSN#Ex_{0%vZ+`L!3c!y`OX~?jqjmlfP zjzvIVm`gnyH_#ClrI%)-oXbD%rsRLWA-^i;%4zYuY?UQX=t|L~Arbe67mW;s_gx6R zMv;bv_0d}jX+cb^G9pkfsGx>kPA|6&xE3*E8HI)zoP@7*f9_<-9tO^9%(U;Ww3XHB zUe5XBi`r=}kWVB~i0+MV_XYkq>?!8Hr$mP2nII3{|!Y zC%pii;bjZ0#c9kOuvF8cl!*9^=7a($LPfeot{^)VhUEF7X*4I!lFdW{Jv2!tsg-Fk zM_+SzY=i=e%8J;U_C+In6-_wJ%#(^yP2*gH$v#VwpsbZ=)$9}>)^B?}pDuY41IFxm z|I4Uz5oIWc<3s+WZ5r*pYA|J_h$4oH&f>vEkCHbV2uz3N7g;AlFw>oLIZEghgiUK^ zZ5|ycPUfdHNtRAY8QhA)guZ`VWhbgPbHc1?&t>4Eg0T;&YNdj(TUv`+#!{D-k3uwJ zXv1LpVXvFj$HCI(VRQT7B)(Mt;cI-l=kYp)Fj^O}eerAg^!X0kT)DbMqB+9N z=kczp8r6><^_iksU4N~&HK%Fh8Vn!s{OZb^vh)2;tm<#!YK%^@Qtdc~%84h<%qYPwc(ddVM2e=zXy-$HLD(y)S^N zdNcmtv+DmD{`14l6_-3(G8j%&t|X|!LC(YGeKlch<2yG_#Bh}evMJ5m;Eg<^0Tegao{SSvC-#}E%l7$#el6%HxP)eIxJZ3=McnW$E5XB zoo_g-JviosY!Kvso3R}77oy<-zP}9|ksf-0Gm*k#z@6>L-$f;%Dw#teHpxc+8yz{* zD9<8t!qjS}M2Bv9G+j|V6H_@D4CjJf7T`>Q$Emsz!-6v2PDO*H!&*2O&5GGAmb*J& zK?#OJRjJ9ODM1b95E_SpFw{4>j#C2zuVJ+90aA)dZDrYt+Vz@sTEt_OG$>+orap#w z_8Rp1ZAsdtGEGF>l?-d{X#64PW|&cRA3HmO9H-9=xylb9BIyt7S(tw;(0HjIKJ+v4 zCnP4~cN5}QNCY7udqAoCGZDJ-*pb5*G9pxc7{ZO&3NboOu!k6-d@0gjQge>qJ~WhO z&msr5oq{E?+5>nIxsjud_XNo;bj@Tnni)H7Yl0XSKy_Re14{2%n^6(p7tj+ls{5#l2L`r(q)OV5kw4L~T z{ay=n771CybI?b43!f zJX;PVnt(xN((+G^%abz`Yuq`^q!F>{SK%=rv=-XQkkZDuz+Y1uvUOSAt=PB8mW>mp zENFwzrB|meKU!Wz%T~{2Zw|8xo*)Y_UQ9b^lhpG)i((~DleE)=G%oCvN=eFK<2#^0 zsaG0~tQV6~D5vDrYt&mKqGDfXkFKyHueR9Qs;)MnmY2)5l@~KKtWKk$XOYYRIw3SK zTs$IDBGa0Pfwy&wMY3@vt-k5@=8M6;-CRiH#T+R}DnwS%B9_O4+A6u^VPO^61k%-2 z!3T#S6aJFi?vxlZnbR?3WzcjYR|XYyGe+B`IJMb;J{Cj!%TyY@|@41k3?aHbci=pWHw9Awb618#*Z@9`lWMbKy(moX%wrgi%W3Zf06H<4WBzYjGMH7e$y$(e$G0`pF84by1Z|WD-Kl}IT%_nfF(5xfe;Dp6)wwNuW~GV+U`^S_CG zdT{d3@jLSiB7M0aJ=%J_f3amYy=^HJw)}5w@*%9?lK29GvP$lliR;8p+D=~}nMUm^ z*TfBbfBV+{%aOIL2`3k&ZGi>lKwC4Gc<7HSbi_}|fXC@sw~fq3!`p7?9tRb`ItK+~j$%ykLcMlBnrUIN(Y91rd7 zKdYJ#Zd=y^aP?Pr3)aKSubP%%S*XPXuH&Z-gNSB5r>JxjwrsGP`7-)`o=&|c(Z=qu zVIJeWE^Dr0@Sq)WM6l4~_l$cgr4`+&X40?rT*sZ~c4m|IpWdf&9>lAqjF=9%^OZZ$ zTnEfmoMpv7tICnt?>b2n>q zEa~{2x$5lE)SnfT%k8wdPEJ`)kB-fX*ZIbWfe8}f%1qm~*Kb>oA32p`p2B(Hzt%wb*rZ-fj9>b3hm*|F7EEIa^0FymcqGgT?xJA zyjc<^*w6jqOAjZZWGCQs5};|E{5O6R`?Z`$(}i>k8!i4JwDfo+e*R{FywH1=J$Izu z$2tEBIO|B_7IA1!Utz-J;^dKUSxTaa2 zn!SA%Z*@sq(_qe?tvp9wZXzfxFJ7ZL-%Hx;JU7^ee{aQ8?47=NWHsuk2`z1D@t1x{ zQWe$3uQ|Uwrv?_nmTiapbu)ZsA3R)MwMfd0=yR7>^_!PycDMgdYAYAwDLeJccoreW zGSnkNuA_EGDyG7SDtV%6qrCnZbQ`*{*sdl%Ti3;@tF4HJrh`iS+#cF4sXOG#;3i!S zn&Gcy)Wlh3qt>qH&#@d7_brQ+PaDwz5SwgGdc zz@IN_-@1KL{~dzk(aM=234C&?YXc03K+pE_t_L8J+=kOA-i5BM`=sthA*nGT7hrX0s+;|D2~~8u_5sGcK)R6h3`%x{U3+i~Yve zwf*?=ka&*%cjLw8?BAXjIQjn@p=Xat*YB^#L2hqkLDULzX(#n7q;ylPUK$ILBzP35 zHgcd~-7i4kmZ=}(vw=;aw!XAvs`UxqI9v&)Bq<9DQOY`DB!I>e-;nWfqz35EEuAZ+Em!89=3 zf#BPg#T9p*ck3R+!681K-%t`+OIj%_^)mvSzwx$8KoU$T`Rdxdwep51%ylzHMjhO< z;n$^GlRBXD?cvP1Qi}E1aqe#s41W@F^YVR?#XeGvaupzgk(GaOsIBlqE}(sa^bX9XE&5p><_q*p#EuG5<^< ztz2;t~u56a+=p>7zr;$fO{BItxCdHe3xuLmyB0f0U(fV+p1%{m$_uZKM z_8AMaDhy2c?@96H@9OvW+@ybNT`qiZ^T_7xsgwTNW)1bs+nBmlla+x?_H=dj0L|?@ z8ju?GKMp!0N|uZPkY-~B@}Ud#@^Vv;Df3mACo>l6>7N{6B6j@VIkF5y4?JCr{rdq5 zACIu*gd6!?2fyHFbCKAze_TUj&kf=~%lGih^VCb&ulcJb;pe5N>A9!r!l|=@=buN+ zkN^MWl-cs;D41-hm_(Nly{;vzDjPf<m&F3Jbq6p11$ysw^bz9(f*S5OL* zxt3HjYFKPbmI><@88l&xG*SxGha=UN&P z>Tqe4(qLGy8$xRNdv%AgPHmZbyEIIew8z2Q1WM$#ffYa_8Q0d35$ibQ+eCl-5hFfa z9gI~?KXynGuO3r2dRh$+QP92p+DU$g3YAi)Er*~Rc>fm6x==&k>~h2YG!^@OZYVSG z5$Qi=L%@rl_j&&9MVC@w59p5_DR}5pUs7ozk-*cN!M?i@VOB~%I&=2RTizzsw6`S( zuAlwxkf2EcKF+%JnhdzH#BwWHu$?T$%ITvk;->8sRc9T69VwHVHYSgL$C-L=r;9s@!+SEV5>; zObPb0d3gnl=hm6=tL?s`i z!tl$IwkgENSyRd>M}vrSQ{y!Dv(9--9S|hR=Rw(ETGgAfZ5fzZ4M8I0y*a|DbqXPZ zQN+H0phc`d{~^rIY+g5%iJZJLu8niUQBDy-nb`s(Ok?R|bg*OBh_ys}ijX)PKF*al zwn0LunJcXZR_X9(5=Od^xwnJcp0kv6E&5E^nw*>bDOXg1IZM9_qF7DE@0V&96C~pH ziB#5&;|{l-g}9vQN(jHol3Aoom;cDv4f1lN70{zZI$lI9E5Z!%WD~PfhOvRpL-&5h zOX$E|OQ0a?=u6^gV1&p*6(k6116r6~1V8I5nMS0ksIqsEpk8mFy+=@3GEUo19wWIA z5Pm~LQ`zibB>*g zB8SR^7F5D3Q2c{j7XP=3g^x^Z94I-7U17QTLJ&$>ks1NU+;Grw%vM5)9f4yn{J808 zZF+cjp44%|)8`W_kn8GwP{z=Ft(USgoOL|Naw$LXSRjeLx&YD3h*cex7+XwCZ(}77 z`pFju9?v`Jp^#BfM5?y)JsPiwg4^Jz6Dx{Avg33e&(fV=*P%n6Psx+m$+4aBgq(+3 zvE{%1C^OV>xFjthjZwCJd>q!h!2*viYw8dhl}r$h{$|snuKsI9!g57r1;M}{mto`h z9jaF{H%;Q$t>krD*VvJ3S}{VM3q9eI=@LS)vNl}d>v9I5NGOgA9Ll@FWaF_g z(?swQD9db=OC*qFmNkbdJB~l?L*8}LS%fXZ>%>4{*k$q)i?ZSM?+NTMHuplToP%fT z^-u;%!zuN`*>H65;ZnY3yp2i1QhXO?GmaUS*x81^?)~ zuNJjR6{abTIWq<3EYAK007Ruuz#kDY_dT&Sc3&blqR9a=p9#U$tpO>aON`Bz?_2Sz zF(bAE_H0xm>K$FYW**@UQEqR%M+*RK zrswL-wpHHkxM-QPaZ2TIif z9Bh)-b|n{QA!H$^ms#R%JOirO*XC-H2@VYfh}(xq54rDL-%k8GXEKt=M+smdPE1XHuT{?zqN0LQ>N|sylh=29h7$3$8F4ge`HrGO#p1K-kKgD@ zr>Rp_kWqbr%$Gz}Ovbsqq5#X9)O5~cmC*1gjpLJI$=XnRgtlg4gpu#suSg>l>_X%$ zV$A4eH`ytza}fD^oxWcFK|ITnrxuaajfQL$La3#n-czyNLCAX3m(pwInTDl} zl2}zWP_JaBCU%gt8uE;5Ke07z{K_be>{SwY88MnGe8PK4LHFN&18kzeD7}9kcJ|VX z?&j_rzGEt(7{VaOusyl3Q~2aYwOIo9s>|Q`{Gb33c2TkS;Iq2*3V@I^y~zKlq8J@& z?$nRN=$>isFMtcn28uU;-D4YwxP}?=?@lgvd2c;#j+veLaJMX}J&eGqim%6*sF4#Q zMTzew0srythaa`wK35(ec1WMix^JKM#{y#tA3qoFy&-)#_2d4pHqHL8HWA5N%IC&x zYz_=y`?$^gm_@|rHw6(DaETl`8j$@xdPXoI{wf)r7UISUco|g`sKX!=%~9|YmMeTV$s1csO-0Be9meKIuu?RA9*M25b-K{mMTat1t6N`}|1V60&>IqB38g%-L zARSxwB&8Y$Y)Xa{&KBW-Y_Bi160_dEub($&V?CA;M^a4oD3XyPOY1L7c{Tx4QK-4F z?w;o$57GazEBnV8a5l_1SDFhZwjKW6GyCw+`}Rdz^pJ~~x#v!SD;Jg9X$zo`d;fl0 zy+7{zV-)rK5AzXENj;@<{O^N84*u3c=i==A z>Z9IZr#>bM^d~M+x@s60NYi_t)pk+54cuqjDYz9Jj3?ywUZqH6$(BE_)zE>%!f|}W zRb&{J21OtE4siF~D-?L|A^{&J)MwE0|7k|LxAk|eZ>nqa+3BamKe)S*)eqWL_}q=^ z=FhiteU07cjY`J>P^4#Etrgg~_L_D-D$3CXb@dLfd4=$zP4!Ov8 zGwW?m!p4@MG$5hz(`vu90(gS#6E&CKCCfTt2R&OoXxloH>Jd@E)=(CE+sb15pIHR` zMy)b+-4Uj>=9aa(ju|@BdaC$E$#^vD$pgQc(l>falC!q*<+fUOaje&S9tv#fw4wfT z=Qs;m=Z>lw5lnruW&-5D8(7P}uL!pjeX114Xe+kgp2|Css@%wGPV@A>i!}H$RkP~3 z$YP^g@ZsUa^}3M(&}?SjJ@((<^QP0IRW;ZFny#?xNW;_H+1X@b;$^wf({i(yhttN) zN6x740faEJ1UWkZ=I-JdXb88PUV{~@>l=Q$x^nxM)8D!xa6K<3aNhq$;I8=g>hEnp z(1Z0X;nrU+r_IihKaZp$(gV57eZvbA7m5N#ToD0#gmV|=%z^`{ea{|$2VTyFFR_F# zumtWJ&M@X)erH~_-*&%ToNc^Y2ez|0mj6AKt50C^l*=}Ooo=^o&$6!sGRPwr6YbOl zVk;8e)k)|1l?5wAq%&Ct_B_HyAA8(J=N--!b{ab+%}PY0$rU|t!@$w9WR&*)Qpmv$ zXl4%eCPyo zl`*2f4VLMQdrcdC9j#D!VfZoOHI%Y_(LRz<%`QkjzsQkV`jdsBlFk8|uy;b`+mX+N zL>hXm9puS67&{&5e~&;ET(4=T=x z-K0^n&@}PM=GM2b&xk!NSR|DXava-CY8Z3~W`u|!0NG6C< zJR>SimNn$d_&~CO(s;1t`g!n92tvt!Ee&8v2Qee4{LfSZ8^4a z(Sx|YUZ;_%N=h_F-aH#r(dz5NzTLdnTO)96u0wK%7{k9&zB}LR{)jtu_0F*&Lz?dM z-@mtj>>%-cHj;D~xX?``>>j@f0tvQsDUNRhALO&^8o14!aB6yGOgC;#P0jfOkH$CV z<(~Af7@(V3CG9SJ`4jkfdw&;rXLKfhI<)m?peN`bOUG%+Yz~0ppKShtp%$ByVX|clS8)t^lw4L8iZ6FF?YQ`OKI5cy1E$DoPl zXG-28opxP@xRJ7^5PWxR-FM`2j*^tpSes*hDO{WV zueh^z^~hLl4zUzII!0Y5?bDU)?gm6Z#Cc^KJrq7|Is>=l0Is}EzSNA4SAcJje#+HH zlqB2?KN^y6QH-;)VqJYM^t(4x{U9F;0uw=yK}&A=Lu}}CfFrJ#vyieP0@Du7u>C~r z)F!GYCZ7TkWW^q+p&P8JnGz;_K!b^#!YYlibu;B;l;I(zg!gX~7e(U)zFc-@DpsT* zN7L4uiif3${0%^B1DD&NLcx0h&i9!l)$iilg7$&`TG#FV?QEHYiNIfBL7|-=%e4S~ zz_h9D?Cv{wnaz9v+oSDV)_vzBkjcH{J|D0BBI6&LplhHk3tHqFMYqB>% z5vXAKW*Ebt3_tXI+gm9KE1RNv+e?6mxOEj?S-^l!PeY^MbL2?ke`oS9M)`M_OK52+ z1!DGC<4KjnkbNBeoyHgdd{>nn*7jWx`tL6F{ny#TG`l)C{ym!jt5u+r<VSNfv=R#?#wCi!1y^+M$~j9*{sjh6r`L@ zEf$aW*mZV7j(r$@^Sk_i2QQ<^s z<+5$xRYs8_4UlcP$f2q+)*M18RW;jP`U%q23zOtg(rT%ZjLY^3z-ftCGS&3*1`eO| z;hGY@JQfWt?VC4)kI6O4Y*jEBCiXWl$!@QCKh>DlQOp1lR1zp9)JI(Qi%d~E1N>`B zQEVu_djw>X4fkh8KU@gqJGRW>r(NCHb%qZU5fMP>3|Jn>}~9=HL8&h1QJL9#LhO0f7@YLd1?hJmb1H;e%cc zaJ$={TaXQ@EJ>P8Ri*@<;kfQ&jj5;6J;%RNR4Ty{a^N$Li zach6YylvAG2HHvw!)DEdo|q#l`J@t} zErld3&r8gaXcSIzwh-TzEkvUt|ozwo|?8p+6^R!S{%It2;nb{4=A7Uutas91~ee|5QQ@ z-MTI?yRNj8AxuiUwnLCe!fy*Y+s#d4{0vvA-d6jXGx05_sz_p)j#k0AqIlEGS@FJJ zzZvw3nqmvf1ARvtPc;Q+tm+E1Me|0N;nq`v59erH`Svo62h2va`b6^s*p65qVSz%aV= z&-kG_ZYhF8q95$=8h@34{RBRJ+mx0yaq^3IALHj$|Lg^(wWFFEWtgdXu}=5JuAMnu zzpm|u^RI{3x0`{&kk}-A`I(awx-stGdp}O-d{wJ3eWoE>x_M%gfWO?Vo(es9)v0IJ zO-Xp@9dmcT)8F+g{EKR_c~D*Wp%ntk#-b_Ud|Bi6^lGGMH7$U`UA z=qME{P)fNPL4d;3*SajGe&aRp5I2Kgl#ha9`pQ`7t!u&;7&|5Ht#whKZ~ebSJ54{hAI$iT_F4Y!92asrdVvaXKp0@ZpIf-sh zeOZWfLbe3^ZcHh@mK}w`sq`MhF8MB%R z1_1>G5$SG(=kj;|pZC0g59c~(@3q(du4OpX>p3+el!(bvj;8Sl70xF0G8x%std7~N zt%gP7WN=YTUDM4g_+t?Pl|1<4#}#>~^NbTN_v~;^C!hkMirBB*CsG8Yc>%stDw_9NCK?yumb7vP%GkF}?^{75lW70jl_QkYCn z7nkrNpViOJ?Xx*3y}nx~#oqZVi6ymkl_s4ojWFfIY#dNfWo}1qTZNpX=Zh`y4Qr4a zcghH+tG2%8U<{q2w#=)51*^L4f0`C78%G~d;OrhJ?meN;dHe!^s)tf_tKVr9Z2t76 z_yw%R4$P~UjN_$Z5exJ@Y;*nsg0p=&3D)(T?N6{%);t4SjS<5 zyd;0YN*!?~{?=8@8V8!3!f89B7fm{&(~vS8kG#Nw<03&DKG24?O>Qf6#D1Wv(^2Cr zC#%i0g9)Zi988N8>hOfv+L_n$D6}r)sc!&v!WL)j;8!DQ=7@#J4m)s~3~+PU{c50~ zph(@$?2sUhAf=gau>x(DMkf#bC482s**Zj`@Gi6mfJzdh`J;8Bln_KJkQU0)K8u-6 zhuFgTI$KIfXeWy-6bsn`Ih)0)KCC6tS}>Qbk|ir_X^zK^zYE8W%#}9HL&4?NjEcb0 zT?+n|1U2~+iSI+Ibh5T(uG=*p_|YNb{>2`n^`?$H%caiqec^GEg*4l#)HfH*$=ls& zV)881AHWYec8COT0U0pJg}`U%1A$94S9o;%_I@h+-%TbXtJq@PG&b2D&e3tMq6RM6 zlz5Qtpka$vg`(mMZVU@^h^Yi@-E1V0cJePJ-hOEyd++JW{=<3Tm5TS@7{Q0pxW8zq zsHopPj|JO24#}2kjYry_GkLFiKu1Z2G<)cn2u$P9;$^M1;IJH52F#kST=4n$L~TQd zYd>($;XO|`l&(v(8?;N_2UhZHi43$cnFtR1gSS3QVks-zmf$P?h)qb^1ieCMl7?*X z{L7ILY@NOtKNgutQV|(@A8>E`Zx7KeeYYPTM&ZW@^o;iRId+}&*@j%1Z=KH%umG5k zRlC7s`(wZ|P+7D5pPaPi7bo_;-6fHd5a!sq+64kjjmD-Yx~=kkS!nta52XwHXv@-d z&UXHBHUpuIPQCHHB|H*y9F3-&_kHmf?`qs%m?HFc>iAM?rn$j5UnTO%t2D=YOSm}L zY-2Ek=*EBhdZ6zCJCiLnsuePC1_-2&QILygE6eRRM+YZO^Gb%bQsVJP!wD$ZF}3Kc z!oPxa&|~5;b)A0;QmMTP3J01qJ?2xH8Q-{b3Z|xKrZS#9pVsZUhs8M5B3}{PuBNPz zl(7h;mKD$>a!GJU%Ym{9mDH)ts61kEXoz%clF#L`fjJ=ch1hU#u%#Gdgerz5jH)r; zLi(I*1ITerlan6bO6VO8r&E>Swo`ldDK?MJES|QK7sp?sG@P3(i3emYrK}+l6ik3G z(l)2@&MGD>Yt$z3BOD*foXB(>`RaMX#C|6no#V(175vIiPNSvZ8cRYd5Ayg9MJjZK z1Vz{?`(+VaEnkZ8Bx1ocoDPrlk`a6^v zd;+HMzY$+EFcQ=M;QS5b{YO&5Z{HQ%dnR?%L3n=4{WE!eJYHt*#YdlgmFMQEq*}}p z$2#mp!R7IGy!ecgJmckGb$@y~gK(qDgtO1*Qs{@9ZW`;W+>+me*`IsdU1?K0W8qr ztF;PSve1o$&Fa?|3L}_(X${#TZLwLAg$%_~&@7o}mW0jKkRhvrHW(CV%n9t(zLCG; z10~6~6`Xr66URsFVTET|DKa$Z(OJBn^7?kSh}vtqVKuLLSj(!Fo}y4T@~izj*7mR5 z*Wh$Tw4%37Mri#TLLA5)xJ$`0S##Sh!tn2Z;xQ;MU4AOYEXn4@gNQ##L=WNs_$eG{ zx%u11{7=E}Tt?!P3l`ELx;540;!iY^#joYzY}FvLW7ICs&ci@rA*IC>nVMmOpS2J| zrzyb8n(?Jd$^4y8zw9c-5h0rsjv~MIGdg+4e3`Y8jkQxbsnU zAqLLr-AZ71OA8$MT|1@#BjWMVDezDo`CJTaUTKS@t0*gbZ3Ll~y_q;%Z3R$SsouNA z+GzcUUc*pG=*F(^$ZUd1I~z8WUYDlp{k^qY=g5BdvOSe0Ks}unz9w%q^3Mha{VqbH zBs|^b+3ZfqjL!f!|GF9Uy(0E+paWD?Ut8yzqfm~E;~qB2XkpVaf@{_M+w5C1_6ZHW++~OFP3Ze|3KIXaMYRKT3 z+uAoEB%DX#bu_dw67;I$Vh3ZoiJG^I<)Pu1`EBs}yb;LPMkxsk6k4YBT8>ZLsBt~W zx7W{E>Ge_+&+86l9390}RkdTP^H`*b$~kN9G?@2xvtmeg@pM7eu)EWse3f*P7s)K2 z1Y>YNXNjqkYcYd#VqCGd@wFfZq67ieYC}q;-<>eG*VVj4MF{96&c0@%SiZ*I=8G$D zEyw|^{Vz96Ji^{>2Z*vWZ>aZ(Y%^;Wy|9O!eclNMuc9 zX$QC*w@1M@LQQDop~hM<3upD&eo>-mUvi`|eK}M4pe~EnrUrd|64Qc}d=X6oa(D<8 z%01}wZu)M{?l#9xmi0u`y6f??XelU-!P@ULpG|IO0Hq&-TX?+GRb-a8NWRe zOcYF1^NNas5{B#as^j`GI-gm@%$)UmEV?isMYmB{;ux#uIl zI<3lL4&k)1WTlQrXO5i1Eo2)ftE&Hl=M@3224V~5(jaz)8W7mf6j*kq;i9;JDK@#@ z##-M0%XJPp(s0?O8L_HgTtW12=yem6Q8MxI>p0Wy@1{-RgA{gd#y!lHjLR(R8A}vi zsXLb@b}3CXJr!LIjKmwx7wi>Ya;_=IOVMvoK4&CZDnzS6_uQ5CtbnNqcO(Sn_La$8 z6=EeLsn+It(G*2LkdKpGcw10(=h`j;)lJsID5)$a)_&8ZS+<7bLQv}n0e#5i(UXjB z_mbb<&_8P3RAZ0pWLAJN)1&u;UomfWcO{VUAyIb@tyYb>(Pg~@re{Z9kg0^aKY&H+ zVhZhaDpF@nHT*q7b&0PLbWnGENu^Mkj7A(k~&()EWVg<_32Gq?l0XA)IQ)EKiw^P z-*;cvK^k56Fja(3k;ShyY7*X44!z1YWAIfuiAej!*S1%;IF822d3{>aZu0qcfU~`k zG;m00`_?Jm@3n?1Jq|cVDCY?3;?iI?GlT+_3UY9jWMyDTeQ;v4 z-n2<5j`P$887e8b;R-z$UxP5Y<*Qj-E_+$FIH|NMQ4CFdpIz0sO}3g|LNd)Tv{M7V zP(*0>N6tTSd{ltT7`-XGI-bu0c!B?k0`I zVvRC2+xqse%T%ATGcqr3ft%s$>U=vpA~4r}ikr>excJUt?<|c({=swVNvDe#ZCfUmWV1uX{en3nR!X3NSsW@%&_Khe~Ep)Z)z}i=h4) zjZELkLS)ALlc;`SGMllE$m0$14N|29ffy@;>~vf`!L-Ap2$OJbKFzOZGDS=^)G0s1 z*P;aM-$-2G(1Pi!K3Eb^C-4jwFkBnS@EI7Yy|(kg1G=llUupGn8&U8GW?YvqugRwV zb|}?OYM!m20Z+`uF=!>Nezsa)7!67Z@!l1_E+G` z6h>Bj0JVupqm>7@X;BX@@|cFO1#$KSnvbzd_W-*(rYj4LbwnFRDNZ+@)b3HMyM z_I^ZU2-6PW4^$9Ueyk_i^4e+k1XkKhY*qWlenu}D`@~$Yum7ush+szoh**~>~ZvWP&Q#Z^e(xgx_Px-1M31RUS8*@xUf!4?-WoQA2cD_#DT4wTN&G8ZLK!-BDvML{T`A(CfhmmL%3onHZfRRX#kJ$z}t>#imeEK0kM0#jm-{ z%h$i6qg60EXIg6ZfQ}IQ7z-^H)U_Jw!&TJM)UgVz^z&D#oRkx>r6}v9Po%HwdlhxIq1dvke55M2rhVtb;rsrDt!aRj@VOiS`NxgYiP61$j z*wA@Ai27nsXJMSga+fvrd2p5P<%k3deRkK#$Vk^YVzuk(@t)rtAOkWC4QAH%_ETnN zG!jpppN3IxKir;2XFfl_%@Xu&1$TJn?j4W3w!<;_ z;V#kEE>UyRY&@KYI!aV8L~0ZlpMW%GcJBAaDm_LFx8*LDxA2wPu*~q*X>VQbd*I$l zC458E*^eSB;rHRd#(u=fQnCrM@C}Y8Wv4wWTV@|qZbvOn9pA{v0*2zF0M; z%o{CI^2(Tt31|n@)l5~;MN5jZOhL2~C2Ka1hgpJ{)^J@t^EpJ4uy|$E8hmy{mn~WI zc5@VtlktrSv<#IClqe5A{fNyglhk0gd_9+$p*8R#y`sFH8mBQ{1cqrCAIVJo{B_H8 z8A&;dLNVKT_~jRyy4m@BRdly4L{QhQOAv^xls#%DNzQ`Zzh0AGy|4W1+HVQx9~C`$ zP_{dIB!@8>o-E~Ha#qQ{8AkN`1a^(cH7xJ*M_fs5d;(0v$qzef$_&o_Xl)$~!?9_N z1W!q0L!T0HhIA}Rqe(6jj*5!uH}^1pVCv#fN70*0v$#*?5mL*^)jG0NRBSSKf<@Js zTeh-r1{0wPa#O&D+W8PV-~|x6#=-)isL_n8z-udejeUA7lB#~@W;mSMXMkD7&gNfh zyEi8guZ`^SQpx{v9%G|8@WOc8Dd7C&Z^l={^A0V;`ZqN@n;~IdPk)60mYU(?N$Vr& znlB5jB#FLxJ=S+&T@X1Iu$Y>aVee|{gR(vXx+TAPAPyi}e+d-h6E*Y{9#W}&W3HXM z3jx+grO0($&42`)yt#vL*U#MUzd@&z}G+?TPmW^C4qFS&n z8&~;jv|SXJhTj>B5N|oW;=8*-6JPYcxLO~Q3~5CIa=(T$N%3f3U4`yl4u|v%(e~i` z?;~Q5eFa)*&*L#_Iua*dcgq$cAY4|9G*rl)#$T5Le)JrV<#*}MQj}8Jc&n?%6=`34 zc@O5158Zp-E&jgc3@0r4ucy#dtt7c)Q3st?R7j^I}e^?$Blt43!5EmJghc236VAG^9d#aHjb#kZ&! zkJfvqt9@HZ7jv?-3$gC{EiDwLf;!H&&-Vn4!0A`jJ1*xZ^LsJc##`H|Jwq<-zrO4? zG8KQzQ2ge-iN3N$s;S9cVUfUkl>;E>m9gT|Car+9)UE&d|5f+}1k6;&5|;qd%D0u3 z&3)s*6!9N*e9Kk>0h| z51#uJACPEY*KcfSAAW%H<^k<=B5yc}<;k&gVC{?{yZW?e!0hBzT=}pIT{-NHrl?be$fgKPJv3VO;b!Pl5t1%xhRwv^!gMW3pGw;uVIr_uT)w1! zNCasiVWD04b3HqqiMwlOPJT{reg zjl@`}xAJkG4YDQR=fu9E*Mh3-H+dar1ElEkjp-5@MnNMj8P6*k2f$Nc7Ge6k;A^~1 z(C6o2{pRBvl5gmfDJAJHDPY@jt3>V{*ADW#vgswlLirw8GOx>`mt1H}oa1=}qH>oO z3aS`c{|*d{!K)7)0yr)n=9cI8x-nC-UjBbCfTz*qK>k*D?NjdU!Ez({wXC9w62GfQ zYU{c;Qg<|OH;pAaODLUdJ@+KUKjWKeGytfS;CPK)Dacm4@QrXbxi|3g=_dDVAD|}w zEtCWX=s?C@zlqq95O@GMA{OoYYq;0gM+rW0uCY9&%C5U#q+@r204cIjzjP3S19Dhx zyuMOeJ6!*{c}1#rN&Hs!oG7MWD|TD}1rele@v_;2i2zH^ADPB~NliDbaYImrSRh4S z!hf89uRpvr=WfAj5eC%9V*eea@YCA~?ZrTK%HN+qBgu??I5v_+1jXYmqIRVvmJm-D zo~6el722VpOE_;iO`CNpRey}@6efNDj%M6b5_{PlO4Dz4Sss~r^7 zMKoYgpR=B_M_tdSm>a9GO=!4et+Y7YUZb`meT0~EHBsk5Wk{o#3C(~7cW9N|#DUGQ zn@|FExU$_q#~C-XT0nNH4`(!+-X-%!RTEV(&dj(N)FOF_!a`fuO_*h0EApqwM4Ok-D^sT};Se+32eD8z)DL@p^T~|;!1h`6T z*MI2N*85FVyPD2I%`Uy=%%aMw=#fc-%Jw_rMIh^riBx);`EakQ`^{^^;+@9hZJ72e z^Qx4lUl=7WqN6UUx2mNd43_{WN;;4AH``(nmJ5Kf6sXtzuqQfB%xP34>SiQeM>Q;xYq)df2n z1gzOTv7PFBdsS=%n-G{vL*?qFWfv8t+BvA^i&d*EO$ZX!>C#;|FEyx;!T&5+Ngf8oR7`4ba&v(YU!^xa~x& zn86e%Ux;`aocAL_=Xbqbwv|yMnqRJdV8vWdC-}ddBlX zag}=^v~W8}vH7Y%s@0K7_N;v80m#H_&iH*`>(LSWptVqR>R-`{xDD>` zikIr_ARZgmi(YJD z|37LWr%tb1fjrc_a=SgBzK0X3FVQO>oR2x4eg)nK0#UQO4+DzB`d^P_Q9eh`Z%rIv za%>8`#H|2qAXT9Zk%X4ZO@qkXALDjg$`Ub|Jv|>YibX_ogNufgf9t3 zMqJ=|>ZJ5z9}#7cJ2oFYhL>wz*GeK!x6`hlfE>4{*0#IB5%05km4}(Y*nf|Z^#AS- zKV)Y+PkqQQryguoM3~fU6QTg7DIu7irZC3R@U_TYtzM2^hd^G2piWN#yCRMq0!!4i z4648>+s3PAZ*JaS^EO;ygt2RCrfw*p%0zV(Eg(%>QkQ8(fRZEW^XDRGZKS?7j1opg zCM$%OvAnWimRDhxflKPQUoLqX%FbgJJ2mrC-4sxva8~5NSR|GTaopAQ(a$fap)fVE zWT=ig-S!dw6bXy|ym!568GKBDn8x@MSk3;K-fnYgQ^nv~y$&1VZC(&6i|ZjvV!}N` zaqf$|~U`CjMUp6qW(uA=tYzcc40n`PHu+2$5ZVje>^^4hh`2|NvH))P)wB#9g0 zXPu_((xD?iLiI7M>4C8qMO$Y{zEpU!)cic13pl+UU!fV)K~ck zU;P;g$lGt}M|p$x|1XU$iJ^JH+q3NJv~;mb_Qrr9&DW3L=J&LI%g2P0*lLD|JKd;;6c1|rv}FrS6AhLDWOPcx@x`L7h?Q|Bu~36hBsXOXnql-scFHS$HfwWjzb=~EV&;z34z$b+?mwuEek6+g`d zg(a`Ux;#4+9IM1^7Gs6DZtF;dmQ>Y)ll-PtZL1Q-8DQ*Xbm)GSsun551rwGZ);c6~ zlum;o5kUpmL#|nvv%Vb%YI>%uq#WTE)TtpS->SIAxyq`l(l6C2+OkSKVnw7uk*Y#% zxM3a{@ksuPUm;<8Xfax3_%Gafz69sYprUXoEv>EKPS?l|+dnC;23vCAstA}CB~`s{hwJK4;*THmO@HyA z1*9r%zWV@U4Ok`>?EUMz;1l*Qdjs)q>t{GQf&Xg4eOHa#L`Af{MfmpCbrjq}jBe*E z&{JDa=WI7G8EqxVQUIi9xvqJkHpR=giU@%15q1sseIy@g#9tF`8}jnZoJ9ny2>p#X zeu@OXdXzwh|4swV&6i}>y};eyw?D4e&8-}@Fm|ut*RzmN}`vJEQ&AjYbwA?)|1@RKNV!zO?Ph&W&2UZBL0rdftM(T zIoMO0Bg?heNgH2M%(lF5T+2#FUf%8toax(?PQh3a$r!b{>J7OXB&jhaScFtlC_8bZ z)vbr|DkzOMKe#P=ESQSV7NOTbWCl5fvlRbXNvW{4K}qK2YI+MsDQ{<)P-bTI!;}so z%(a6=a7;)!C(&}F+BuL$!`wc-V=se?>q={65d0F5%H1_r*dnvjo^Q?O#j=T+49#Pc zkv7BWy$Er&4%pbSKXF-KYj+KM^WMqj@&E{~xFUJ)_)XCyD&_i}(M{qCfxj z4>*`*1sVk)mwxd z25zR+cs{Qe9b_AlCg4=PqJzPCSTc@yHg7$0pK zGMi_@5QoVuGN)|cIEewlnPberNZ*XSXsu?3D%+dNBcM`AkLCe=s7xHjVhImQ@(6;G zYL2$QNKa)K?t?@$7r=xYrBzxYS9B!|XMI&5!jLyu_e5KmN(*x<8`Q;ODt+J)Q_Qj= zwRUOg0j**ZC#7$DdMQy@1~H9DW}b4CzIwugr8x(DHMVlE;#xBPCiyDLn0pjR=ub4` zc$?jPu7!Zv6+Z~r-`q}%4E$Jqe>2DF9~AiT=81=y_1{26CGbo=dc^$qdHRjh&Z`0* z9D24ijO=+`QPp=7BV%rv*G_9@)*#D{<^hFuuUOH$&+9ukC&56#pNr!)@4SzkC0oF9 z{efP&&>H}3vcxXED=lYbOtkgsaZ3NJ)O`C*s`3vxplCc<+gsl@zx5G$sJ|2zjS2h96Vy@;@FFw7(lzOa0!zf|PDQbjb;!7astW)roJp+G^y!fG^; zCB_OaZHAyzqvz;ik`$}f6ufhRANkA9puikXe~r&2c*%#<4Uw1cfj}mcE3Y~a1org& zdMYn`(VjOI0LGALh%uwsRZh=wxq&Wpyx2bvlbw#XNJ@Iw*N}cj7Z=|_j1`j}o(vi9 zYWOzZaNrYNj~TYc?*s(}zxQ@dPiDUNer$h#^L1LnyzKB_f6XbRW4=}^ zt*aj><3=i`O1-R@+mBR&mTwbOxD+plnrqSICSH1hj?A@Y!-(g|Tp(xvshakU<&ME}E#}?N=tWP9W5lHbRjyDsG$GWe`MD&yZAh(|XDco6JUfCWAIQTG? zEihSK7dE_c-*Yj8)$Z;ax2p;tOD;B9WT+!+OQXzjKDyBTE$f;Scmy``Ir27J<;id~ zPcD8(WJWU-EFM7?hx4<=K@Ba)a4E+>%;m1zL}4(~Z>j7mX)b)0v9eMigf|lv7dbUY1^p2gNUqaiA3y=X_jA7p zAmfJN;w-PU5<{18crZR+pGAEq32V+sGhJ@BCr3I@Qr0SL_V@3HE#j4$DDqe(T}*B@<{9HrA)y4Q>1y@yT)L} z{5zQ4W!6|!QuYqdcRdd8bCg-3$|i5+B?}ug0;|!gURd&(oXRsetj-iVgm8xr9U#Nl z5sO~OyJoimpF5CeX*AWh%n2HP@ZLZ_=Hm3$f+T_^kJXa%rxRErLG~_EJJDLCa>#|j zZp2?4K{)u$Z$Q|j)7(gcCMGSTF~!VwHM>NAa3T-|&4mi=6NR*~_c?zvWxHk>E5=>S z1%^mvs}!8Za^!Q##Kr;cv#SSW6zUk zI8Gwx0Fx=i&5r}>IXu) zPsVH%pYN|#EczrZui}o*5r@~ezJb?EUI&f2KajhDsvzvY*=QUWMc~;;yYDrJej)BG zD!lNbIdW(cN<_B~8Zni)}B*b&hk-K#8kZvYAu3uDC*uc-nZ%g+P=% zR=!eq5-y%j%bk^*Z5< z?Fl27fKeFdMWIh!Pc`eJ8msjBH84+1z?+-gqfMw1F zJp=NaoZYQp~O>Teo`ja09OcD;(+oM1kwv9tJ)}J6}q1(W0`#o^| z3=BwCRG1mWj9~x)b|Z+CveESzTrzW;)s%Nl8k!+|#gosPTjKoQ7r~vUxHBgaaR3_~ zGi;#QC3hl|w|LF;m? ztzIX&?T|xK-8&bd&Il{TtDx$VeEH-D87F{1N6C|>sOqpWDn7s9c8N7PI>*ThfBwTt z;^fH+sUwpl1;V zB7Mu#FWZH??XBh=-AJB6m26r9fYRPQFQ(CIrpx@`!IlEAp$!(JGOx&RWEuHhk%0r3 zcw-yzCk~&{-%Q6zU8VIFed`vOKL0chJY!sF&AEs4Sg8t<_>*t6i9e1Z0(`) z;WB^1pxuXXiw)qH0iUh+d7+k}c4gdtgASSc{BEp>JLq_iM!=FcqYBfh_mQagUhpY8 z>7J1vw!F4nQVxs7ifsd)`rm>oSE4gMbv{C?HMDoZm9Uce=UCo64JSXYc_$(-3r(Gz zoE-K6yAa6eQI?cz* zNYZQ|<3q$m$q+7T>w#v$Mr5g#gooZF1KVw$q^Ea+GVFw_p=iG!tYNg4R87z7&zoJw z`@CRWUVt1*5&<@CK%rq#*IK8t9YT0XjLr?>m=_%n305YWwd=%N2@8<5c(kr&;8xTD18MkP*~W3b zXELt>?7m09BDsVDSQH|Rlreg4C!NmrCf0v%-YS^ka-~e9a=NAzxO(Oue2&%04mQQlXxf2i-CMzTsbecE%-2tG}|PZ?u6^C zW~`v+(Wuvp$Z4T-Ocg&XbJlNw{pJ5epUs=w!}7aZ>l~DgK>yvLE>Gu7!R7^>*CUkX z%TvpOLRLLGIM$x>5Od{27xR`4!s_%vF-L|n5@!#oTpA@#*_9Rf{UAgGU2_$bR5gC< zB+L91Cc$7zYf)SVN6MUGf=5~;>$1fyQ@n3-h|@B2DRX~`0;Cus>Z9K#H(r1fUCese zAeEscgy3m460vYal#CMHT3$^}dUta@c^LZ!1ETWpYpVzD%4V;kN|3^`oG}jld zr7<3_Q4krg`Q;ayygA=ThH^}Bp6E4SuFWS|E*SPvj3pRnr;TIw%(;)Cxz^UsLMVr%@dU&*0A=T?_j1frVT_%iJ z^lok_{-`MEgf5cbUy1tyvD|smz*vt9Q3E=*^u=nX(EPe?fPhOMP9dUg7A&)!CBf5@a?9n)xEl$I80dZnOEsSwvs>gGc4bU( zgCf|Yx@gONd+~x=mCv2J)atK7&%4m6>jfDJwQ(lqUd}#(i;FA{pp)m}%#jx2yu%xoOLdAiL(-vqk6M2FN%1R2G4)s*M+wsbXu7ga%_m3` z@{uOLyu#{Gn?YY=<|3RXv!S0QWC?;+4;oDC_Z<2xB(}m}b-|E7{&$vU`qf)L7R#mz zlJ`i;xobaxT^+y2uQhjPQPVrKei8L4f~`(GYh+2!O8I&mxQBrPOiWYLpv^4-`0ku{ z=ZekH0p)C4!fc{jPtO;Kp9Wr5SL=7B$G#<74gg2+_Ucmmrm)s8IRKa6^NJ1VLU!FE z)qvcvDGPz^wf^T@{c;qwmt|kV_FIU~!Tl4N*iCw@vtVo8ZdR-{(N~5`gt?8((`pk4 z1d-v=&u-4xh-h{??VPzY87bzWu`z$FxVW?x$umFQ0IH z>`4ktcoY2ozZU>r;E9`yU%|QkR~HWB!Fe^z=Iat`p>3Wefem7|mN5-(NO9hO=a}yG z=Ky|AJbg<4#@nxqzw2?)@9+-?qpYuvgO}|SgEpsdaCR>+G-<`w%W^$9rgT2~3eNF5 zW5&V?$aPJf8uvT1i5}lYB3fRw_=s~ujt@xufAB}b7!97TU|pwsu&&3$eYYt3`O|;l zEmUEni(wpvAG&Vu^s`phOcyX812y$vi>-bEZhmZ~&n49^JE@#Dn_74$~MKbu*_?{61Y8kV~Wczw4IH?s}OA>679@Y48B*ompe(uX&#e1c~JQ zf~BESPfht7^eE;@K+xRvJyk_C`{ja;;-g;t$trG1neovW)u@qyDIMCS_=iQp3A)O9 z$=VIe*;==8B47LgK0liuI1l9QZ=%eypBJj4p{uA7IKbFtstK+P1l;JQh{wKS9dC7v z0-l0W6&3G`pR!(6xS*>k!DHvW1?H<%_65Fs&*QUiBNWuRbT5L&EF`9Ya6|7fKsxkW z0_yRba%+)^W*BxOzX;s>8)5rb>>8L>9niD?!`vd=!iaMMb7~*^DbJc~{bPb0+FZ6V z$VS`*ET0f>ISktRT-ICxm_f@hJ}}f}>%HGEa9F)e=;el*GQ?1x`9!Q|kKmaDVqY*2 z^G*~seikHfHb556STpT5)c&BID9-(c3f=Y0;V@kywBH29}VH_x6MjOpvn{SHr6W0sy> zIAOsDA*-Xkb-}E?e@0>ehSIZ|DU#4i%_WW2C=QhbtIdJmz!z*a$Ae~VvPXwalEp2h z)2?|Dri~%bAcCVaLv#bk5GxyV-JM7jKtnSOCxOjEl2qHy)TC#q)tHsC2^HRkgYhI7 zWlv>dZ`74_tY=r|T3(qcFSy5G=gj!BaaE&!RsL;bZet(~ikR`OK$9VbQr4~DjBW^n zhh5U~G87=F{5Zl7hM72t^cpKRAwIsnEFYFiR4? z1$*2yO>SNi!@?##Rte6Zc1g>S>>t4`+Y4TU>DdmCB`!iKZ;i7Y%is5&t$OPtU1PUx zl>AD&Eq&U48eKK^j}5$Bf7s6w^o(WQ!tH(B@0}`p<#)Ohm~ig+wfCAeFskJc-BTrx zRg#31$U$Mrr>fcB=@^u)thO_K@^~-ncNmwmwXNMV*^M-rKCi-6PKL4={Nt2BfWOy2 zS>Nf$0E5@&8Ge!ZtU=-8&D?YQ>S7NGrY#p{;o2YEz??r@hC6SdVzg{5{`bvaaHlor zKl%kj=PHoFlK{w$xW3c3=R5W8(h9$TG^nc2M()sq-fNMcUc(_1sopzRnL=0J%)bkR zH?R6B^p_|K9IU(i_E9u7PY;u>Z&#nD)_<_7g zfyDEw)D981zvJ6g3&vY462}oNrWm#<(v?j{b}lt#oyp6AH>O{iu{jtMm8JPKKPP@bhf%{o&rA78B(V~zUTZFH z_^QsDD1sHI(W{f=y{gA5gr?|~a>xHVRvRw4@F@*knMCnePdR%F{an~(Zq0cLJU>0< zF3pS_av65!{{`^wt$lsRyM3>L&TP|1yt;w~81Vvk42<*4Zg%e|TX=YjI|*hS0rK|+_sP}%vC9sE0yqwB2mJi}8xgQL7a%FjsQU?&zYli( zjR|-GF7$wWF5u5Bp=jvtp8O{i`)re0tK|NySMj$h90uG&qKyC5eDr?L z5Tg=P+`0p&%upJNp|2aeNi_z+kqt_d=fAn1icjc)^4fY1|}HN8D;0lATHs|Gac! zunr@5gIkudXv@4}_FZ8$yNEHph=-;3ih3kXKvlZ?vUh?mq07i53 zC|fX#Ec@rtq3|b1z&&ix?h*o=o2tqlMO{uo|2y6>RIA4Hc%!9_tbum2WYBT%E!KL# zqqNb@u51)DT1+#MO>op||WQGwsr*40PSU7Ps1Aow|e$nz@cWp@H$$a&^HWNi1 z4EGnaa-GT}7&-jpBP6vLYk6YwdNJ?k$)E83+Me;Jk+n=zd6)I2?A-N)ba(g5AHu}H z`%E}Y#BfNm=;XwnF-5|$_qf<266LGkVpP9vsd_zD8U9zcGgfC}|C=fk!CG=Rt^&+` zIg+qEsssy)Cx0>+^PKB*f0i(hFpt0IQu4_0H_-rHzL==F6%c*UErUQsXN3SOYiGsp z?fdRyUj&KA(RcY?E_*B=#jnadjWEYXM=3Epfo=SA1t5sxim5LIx2E5M8 zKce^k#{8i7u*IpLQ7i;wy{9bPJ_O_V*^LXDf;9U3l-l!$Vs${l%89bg<(<}v)MG*( z{w0Skg06mP0y!>_k_$WOCw}9?PrnxW9m=dJ?x*RpWg|`NR5EBTI-cQ z0d4bCnh>T3dc-x>@xU|qv#NM%cd_L03K!EA<6sm9{oov5b0u&LCuH-rK%}#75D}jB ztEx#{5cT`e0<>UvekBgH&*lR^*>&~E;5YzjZOB;+)g{yXJdYRq+{Yn(BhP?Jk{9i6}K<&u)12$jJV^c>*EL-xwj!qg5_a0Abuj3B6$SOx& z?`-P`i)_aiZjhVx9EuR*XUAajVd(bh#Jsc6in%!^3Q|f+%IJBPxoliRPfsi~@`s=Y zigDHX!oGX(HGy;;IU31nZC^|jqsu9XR# zaxqY3K_5-o5^U5Zyoz)LZC4esRn4f(3uP)gm9xgtQ?~#cp*1Q0A@-Jc{N!)i+1#%e z1yDr!M6j=upke(ir1rS!=!@MfkrFSDTcTBEsXAMjWUkPy--cXE*_`}8n!YkB&aUUW z#a#z?7~I|6U5mTBdkYkI*Wyko?o!;PKyi01uEpWI`rPmLV`i=SF|*)0Imu4;PJ(?R zUMDIT)$gq7_?yn#y#%xk?%{2$V zB*ak~Xw&xeiw)fTptyExlYbAFXSBBUUe+eGS}B_mvS&gqK8`4bYkhW!^xtuu(8YO zYRv9#?`db`x!U^7MqhM|Pw~S#fpqii7m(BHhC$A7P}mIK z$tqD0igd&%0`>=JxgGJw)9(VJ7-{+Y&G8)td2D+ZD@jXf>PH)xc0^-vDSiC$3@1LR zY9ljQ1h@9_v|`TwAp<){R=pK=3UN&kC*yv!0aMW;L7_?7hoWMIU`;8wKhtap@7jN| zx|GQB71%GiG~RvlwnGQD6D@eU#lE8cuy%Z+L`Q9F4;FHoClk5U z_8CWx_UTpVq^5IdCKgKxNchK@^Gr=l0O49G# z1NO*d9x@fUd%c)hf1k{C!s5sac}fjyU{?c~!q4G6K^1*=vU0p?iO~XO&S|N4oJl~> zp1`%xf#=T2VZm)>g7muR2tD@@HDp)jmF=2a`|tS;qu+QE`M^k8B| zR;g_3ef{sqd+Z%z49wIy4v;ME5L3OD<=DR{7QiRJsaE3BD1vOj=n&FrVIvHblyXBO z1rYFXhpHCgW%s##I@t&zk`MJMJ*(3_87*O%Gw!o7-+u+%dAozc$tdjVh($UdEp?=drbT?iZ*pa9oKdm}Y*i&T4@Di=Rb|X*6jKtD=8{zwNK?d8 zq2v)F>GXzE)OhgZ+{0V!$m$l%^wDk2JH@3DvaoUOBFss5sZbM*F$iGV$L65I#mU4p ztKAeDhx$|qdhyXtQGVRss1&ANn%lsvD;|qEGbk<15+CNx5m66OxNN(#%Peo*0oe0ae$qg9fm2`(XOfg|Uu-SH=jHEzdq zHcGhyqoIgorScUSZ3g_ySQ8;8+{`YoNO?HDLFkAW${Nna&a`$*LeNr)wWrILuW?W2Wot5-sz^at6A0epl5OSD<;`7Lrs0&c4zQ+A#5sBPt_Rq_D z(Z2&p4~Ni(S#>FIpZyXN?qEqd?~1v`s$&aj2$j)cVl~S5+WSbG#N-8S6QT-f9=t=v zwQ*$XQK?~NF<{12KA;nauL*@-kWJN#V1)KO<&zh2Ht8Y@AEl?*XN0NbM#!kh1+x~M z_CB%|!pWrb8$j5f517B4O}70a^J>-WXqr4}cWe+$Ru zK$Px$IchpyAS!b>M05?sDzGeuK<6ZHwSHUQ*cih2_;^tbhoViq;%|E{*`(jM3m4(; zk-AAxrqO^t8t0l(V|m-o(whFL3^EB!7DbL9EA@?)P+%r5i`A`v^Thq<=?a#{E->Gs z9@qd3l04n$%v#@kZGCv^e$o<>#rROo%v=|+NQ@r~V>eC@K!MUyYVYmGWRB7ynzLz4d zdtaz2gdT=zl{h%vD^0T~(7jpT7Ii?HE>P2@77?x%CFO<(2c#Q{i>_ltMH9leP;XL! z)X7{4fGLw0__i8X9*q)b6peBQezQmqJik!MVH0Z_PCQ*6h9D`7WE|)|zGGEV!%1zx zTbL-)B-aLRjbH!m!?vb%(RMYXmBXOI!zO|9Xdamn35j+#Ahbzo)j4Omj1%)#`?OF& zo{%`euPm$>i7`kzQKv~EA;IQsT_AgcN5ws-h+Dm?ZA8WvCfJlsgqi%J&3JGTGidrq z-+fZ{)1dk3B&Nl(wbnT`vW}~Tn7{9O24737+U530m8rUhlzKJWp!L^^ChR_Aou)RH z$)(K4rUhKp@~uOgz}}m_n<>}pJy}EVH%Z`ze*Sy9zmzj<)3l;(H(kMmrd1_Pt?$1o zi&f&$gA%XjlP&pp&mq}c5(*tvNNU3+6HORRUA|}?*R-^AA(IBa+QbWmuD#>e&WfQwp zdWx)06c*LQJg?0UHY^F4*TK1V^2>1MuKsnx7>x^4N;-{B9yu}_qY%bJTLcPi&?dkh zblLVn;=?mDGXqIVWZp&YV)MvnT8U0fxGgL$q66(KR2fc)afG~mlN<-j1a|&;zZ+K_ zFlubL2pY2(lcb0a#Xd@OZ(5m}1_6!$8wY2(B2qj5z1)*Se_W=HqWjmhvGKbHrZ1p|$jZn+fjzH=VO zaO#mlz53@F)(p3eALofIt&O%m}Zs9j&nGow?(1IA~wWafJ)*L0#;Y(e;FZ*02@D}t>Keadz`YN(D+c}p+2_iEu!nZ zG?#9xK*_wVNudb7m_e1e1S$M@T`2p=+;#~rXafG9b!&o+a9ZC( z!a5M{1$s$PSt0JB*t%_E$v~u(1V%YjpFD#FSoa z(yBz;0_%?HmYsnr+il48BF-Klij)Bz%-oicKG2*zB|46+T`2AM6I{q6-&oO1lNfPn z3@b?ZR5gkcv5~A`B}tcACDPCy-eB4&wojtl=A>gHIvxa@m3^@s7_sPN&)8OfeBtG0 znUNN-z%GKPmWKJoqz(&52aqeF(iQlAi9taFP=#G}T~V4*ej9aV^Lu6oqrK=YwB(Y3U2{Q^&Xyb=YFEPk%nB^VBo+b3$RWOm24;UB+o2 zCC(QMv5VF$7Oh^)o?+R4L#pDm$xUjDk&i|s;DvH7Uu+^N`QTcv0o(u?V!leZnE{4mUW-KckFTQexOuNf`R1&*Dw2<7^7K;R-Zg}Pd!=k!M|Lk2^K>%hF zS-80+r+2@6aujs_+8KVYX2+F)LSCX{Xh1;(I?`rk=N`V95|~1>V z;7*(9r8@J>@?|sul7O-<^hzjsd3v5hz%dkAR#jCowy!&9pEOZ5>Bh!RYU;3{lO;#6 zmPjwxp^bPmMwKhh%fRwxdpvH5=IK{ttbe z8~j{aTOwtb{F90$Q#Dc_Gajv_)9M?VKGhZE76+^{?|r2{ClWj#qz5K$r6zNn+^PJ? z=ZKXG4t_@cZQHzbWN#9)J#O@hA&pA1Uxyly5OAyhZYF68L<#!;stMsc1*%0!7pe#Jqk;%Ej}tNu|`ETs7!Uk}b; z3+Y3=5N8!BA1D;l4qzA)`yf`iz#=!c3gLu6j`fmT3T{YpWf_OmZuD4N0jf=-@%#C@7E-lhx-N`9I$C0U+?@|{GMjfInz`c_u&gYyFvRm`EXc(t zXm9j7TeLfPA=8t;ab#Z)Qa6^WYSe|w7WoSXS(TYe$gYpWBcGd_TTBZzDYm@>zUGYo z$O@6u<(2Z67~iT&qvbI61RgmM&=d{!Q!x}EWEs{H>T|Z7 znX_&Jw*zMXOD=2Buo8hBlPKo1*JLE{a`E&SR8~~1>!^)Ti`plkzlHJplBwpzB||Ql zDUmK0cwaEaHM5_fp@KDE3-R)j%GpFzp}sEaV~*z1 zb)DQNY^nJMk@7Bt5HD-+4+h(aF_Wr3d<{_0xtrCMWLTV;?j0B4GeVeQ+XTFE#z1ny z&Mm8wQu&1u?g@n{rP$IYEDUl|xf9L`9B|UPC@N$5Aq-}<0?=uF``&*dPYSMEWYn+8 zp?gp<@eqP<969DRK+v&LkQaWqNN!;QEk)bK9Ex>g>BI0H=>v%jm=p{Ev@kYn<|Dw( zp$N%eJxjC{w4K0CW>1buzS@Gk*zRvidsvI6e*Luq^Yg$<)jb`u_r%JZA|p4mWJ9Kw z3)W0WyLD`A41abOQ(v!LG|hsr^9E(*j0>nYa2&&*oSghC(1wOWPv#0vJw5RyRyB@73DTt+fHVi@oHu%%g>;LRushhL4J*<9I++kbk>FoZjqCp;B#^DMw}7^xp`BN0e+hW5NahN9NVDZvnk z5OSj-wA znzYkdjY4`k^OCI~V{RX`)i;l)&+b%whRmx*;jtR%zwHPMcw1SYKJ__0i|d3jaDC%I zUzA9;8y9r%M{hAMRKe&k>zMeu=B}}(eaepeQ(@1Ha1#HFd*K(j8&m92mLl z<+^C#ug?41A}ehnQzBZG$yP=ABc%vpF(?pfCF@N4 zN48MQMrvvenYB@h;Znh%h-3($q123|G3y~mi)&S-jx5~5WBjzTU2^*sv_y`iJm?a` z7=^ZsWmDh#0hm{1btng+b1-)BtstMKF=6KU za!`hJ&f8CzfNMYg@*?21=9ArEC5GSY|1SXnr>#|-U{KFyr-a0lz^5B6>HiLTIQQWLZ1=9q z$J)ofhPUMRDdvXy`aZ^=p0m~*M|Zve*MTOzEwK-%Q%aWY$>C*Tb?xFvgePHzEY|7hHYio6$Cj}09qcU@N@-a(KBh%` zW%^JDc40!ZVg{ic{Y+9AH%7f|lPsv+*hUDPA!DjY4@-fN!_s)FhY}54(`D@CjTVce z)9<`T$|gZh_PKCbDDa566k37+I^^tvm|M!-Wpq>^P8c*pM(X?0f-PJ?a#YSVl+zZ+ zL14m`J}fxe?~%A-q*Uw$*WY&TiGj+fh9HgJB=2&d$D^tihrYV5g4vEU78apXZ=+g4cjS?1`$AzR zUG?r_2q_^|hH+?7-xu)LVQC|aGFnv+rMgi$(L7>PSPkLY`(|$hC03}HSpiG?{BR^K zJQg0XH*6$LIK{~5ynhSHG!$+pVI+t$N-&Gd_HtK*Kupn4P{}o}B%4MvHVTERlAo}PBLo$(N}YG|9x86zFaaW>235WnZYE({o_n?Lj94|DH6;4RfPWQbyP8g^ zvRRWaU$TLvBW&E%XwExx-(>gi-y5R=b-kW_3@Td_U(NGB7ZtJl|5kHNz5P ze#m=Pes6h?-F!eM_J1&`fBR}!gX0=#=aHgj?h`&aM75Z<_zwaAKinUVdh<3+eAxAT zZg!}buq6EWs{Fk9+PMk9onUDazm(-=9ieCGfRWod5VcbFRviEN*3ooP0PV#fP<4FS z|6ft*OO~Bv ziXq_hB~X7VrQ|Upg`z2U)(-hC^8L&L_i>+afiHX9B`Ry-Bkgy7)~Gu*h@E0C^6F*{ z|00KtC9xkOnICI{P3arOzQZM0+g(mhM+=}M=oI%_bu0{5R4lieuz6T_K8-ir0~l?e_@!Z0UJ9f7mq%xOC8=H&!P^hjuGRht+e&tSF z+CIDA_{{uoHgfl4R`=*)*I!Pc@^o;2u{pJ(OZr{DEgzt_`F~>O4DgW1ftvXYfcUb= zt(EaDXZx~l)#p+W^=4r6eWOJ~UAg-*CE$A8$TY!YZHp25AQ93UhJK>iQiDYEc$PRwa!0g8HOV5Q{L+oAA4iGfnbGt?ohp0=Hi?kc%5 zVzV#Kx2&w9Pj)7;)DzFW{PIC@V7O08H{G0x0k|pYtRXeV`W{u>7I}7bTHa0|VWT_4>s3!UgKW zsgPp>R+2pmG>K5@2Ir;D8 zc!*y&JTdrRboKR%H7i&-IR^nTva;|i2Xp5w#+@&b8B)0nulFUX+fUDi=8nD_=FVSD zc3QL@;5f55qMyn9=R8Bf7kUn=+kB0FJ*5V_x|BWckS7owO{XZIgle^?u8#d zkUa7Sr0-G_|A6~bw_>mPX5OIXV07XE*-_FfIMOIBaUD zxqfua+n>iWTw0OviOjQR6%vxgpAV*PTt*t;n37F`(vs5QbWov8WtAzfv#=FqfcBQP z9~XnngYKj1OGvqgaF)TFEEhCs{l&+^HH>zO*nC^7OE!KBDXhD}tS?$A)`3wn_>o%f z1mdg26N@&u6N*qZ!5~t_`=VBiG(_wnpKw)8kprUxXK%x_QaWWooiVfB)Si5X3I zI;B@>D@KwwFiI@W@fb121(!sirLA_0@J^t5*j<%nm?^Pl0 z^@zXm*)xHKQ?OUszIUDaeEakLIXcjLbhDBBIhSEPBO6y7PE^p*^=!z)^Oq7}@Uedf zaHqN-Fr?!MO)ky_vxU5Zr(Q=7+rB)~Wu4Gx^La$xcU=%i{c=93YH>ZDpAEE5H`;)G z9%A8MthgT7MTYWtc+ImSVmZ#jTpt{i^gLba1#D#Fb8~Yu;ETb`(O`}3IKb|(`2 zt0oPtAn57oF*tf2*?X2xOt7;~Q!%>Y%PI&~n<%{T-7$L0Q&cuY)EA6lLmPhe>{ZL} zfE0j1H7OyXyc;Pxw$B*24@&BRsi~R~)oGgCjY2CW8L6ZIs1#pmk8f`LwwrV}4itEp zf1oJ){?huj5BV~n(W-=8(5&@+h0*a!mXO0gqv9VflIGV=!M+qX(pY==Ng>c z0L$xh4GlmO>n7@N8SRq=;=>QAMvt5eTnhkPMeQ_&*IVB>i2y+rAU zu8U`(jdwrcTO9HNU?^VvL-*Sm^An<#(QYm#>SfO6BNQvFnnGN+Tl^e@7g% z26p!oUcLo5yPnTab#$*qCXqrz1x*xt?(hhzrI4+-Py<3}ctvX2XnXtGnoJD+ZT@mi zsAQKy66RQvwYYGUkwtKMSW9bY>0?H@VcwNeNn1J8Y4CD%DKG#5Uf9K8aEV5*3WYbX`2BY_4dvxfu1PIMR@W<>FO{2(GZkvdN_ z4!$1Z#!6qf7@PvJ360j9QqjC4Bh)3`6fQ@1`PM6VG0M z`)_j(6+1|>cc`aPFz^MZR$uQ}+zsbLzZEkh6chrmIi0TiUH- zqND<`v8=SM`Abet%c=2Zub$6wd09qA#=p{r9?GdS?cl)y6+JzD_D}ajK!Ms-lKCVh z_T;%F^ze5`l$8t$AbA1mb%sOIZUQL0FX(D&ib0?M%JoU2DNWy(Q2o`rJIv!gT=#Bt z5&7Cev_~CqT;_9oby4|0-wLU!gGi_GouzMaGW!aZSct*j%WmAs(ee7R&l%tjtC7I~ zCsZ{-d{!=N`?=HxC=-)Ip-UFQf3ZVuV!I=y6E+MXCrJJF4fQe^&0}FHhR>ZVz|l;}v&yXPSXZ!xLl>w9_A8*0TBt~bc9;J^sc`PR zHwUzRnzVI8X8VfoWoigOU^LPVd*y~<1Q&u$W%0)M$6jyy{Zh8C9BjUcgzTndI;z;p zj}Ma410$lBPEO#+teYwRxvZiy*7NpVo_7_}x4VFs#%_lj!W^aWu(O0x-t|~c$F!-%2<1`Nn_V8XP<6;VA42JJor~FdRp;J12h_WI$>&YtQv9D{mVy;4ftyvEUd` z)&M@5Y;HgTS~wt1t~)N}q6PVOPA)BJU#_KfEw_-@i-nknI$07OVLK7Stonae1^pw; z8ODPwOkI-zUJZzq09~iw>KzAsZEOWbUS6J1$Tub4@6_z2isY#-Dh2R~4nhAUF)G`P zSKaR~Q_p53FHE*g_}zZ5bpK{Q=zxI5IAu5h%;A^UKvdri?P^Oo?JO%98`HxQC~2dc zZ)QOIj960RNTLOKmhk9N8(;ZFv&p&jD|<|A*gFvlj- zl|zJ=(N8QgmjKb%qR2s{4?;%Or)gSCS|tEQ7*#u>_H`!yrUGC`7G&a1;Pd(6v)3>9 zukXN+jNjeYWAu%-WM0iy{VZ9W+mW^;b7o>95QZ>)f5zxEDf*FvV|%$jX@tW=)>nEH z`6B}}`R$6H{Tjwwf*s>x&kx7yW423}mD#$M->|y!H4$x~?d$QR){``jJB5{&A4eofgWF!FD%MmiUA zPOKt6CMWQ$M>Vo!{!BY7Pxut8jerw!bLqwG(@_!3SE2gsD1zD36w(HMLtpR2P)3?c zI0g-WvI$8*QlL?(9Sa5>F@Q0brsuxs1jy^4+toV@#>voSFOVI6l8}KO3#Xzl5fc+N zL7t2a(L*qzYg02jYaXh`fV5ME%Z3|hqKQnWH!H(1(8X|uV;*-87U5{H7g6>^BSzSj zX%MQ&N%>-y+=>QJ!f^_7%iRIO!nI~h+AwdIUXMG;MmuvCZ{37^?hzd%KlIe0dbjeY z`KYi1ojn^ImsAter(}0NP>dZ!z1+z^_m6LT0I$1My)lVDh{PLKGD0n8M>_ueBW(V5 z8Wj3;EB$$~tWGPiTL%{UrJsQA3t~{1VU4s^f+`4F`O9Ls_wDp>MrQ8z(%HR6F;Fb? zBBhH5a2nP|$m9;&_#uvr=EB2kbh^*|XW|2^x9|X}+_mEe9If<+2H(ld<7>I?KMYkf zI;*C(wg`fpL+Yi1Z0pL#4LWJAy}vPwWRJE>H|$#~-A z0)2WI)G7$S5vsuWa+0$lA8YIFNin$?uA=ilEGB^yi0#JMbj2K)!ek`oQu^pZMU1yR zz@8aV`6)2vDm-d>F#;V6x~4VgGwLZ(HF%nnbb&5$3W09WoV361;Fd{@W6Mg(vppZG zDY)@o2a(gXw5+$j5t3M4gczHWACOD|qpU&Ghr+`bUyf(9KmVzakekhLoCV}~ogAmp za}v5q5=q*$?ifmR_4Qp^tx(w#TOVXqOTTa?i&(c{&TmgSftyw%&(NA{i_AD1z3lJX zvh{PR5g?&f>46p#R2tbjOB~E2=9bvM<=Oa$?!qP8nz$Umbt)KWq^iJeWZU zcM_h=pS`*lxRjB!1SGZL|4VK)yfFbiz$ik$v01Re4L{Hrz|noBm-iPFD6)Sh_9e-g z#7}27lFGn8WXiVUoY2(S**G>>yHI{`ep`N? z2gI{Q*i1w70X{+o(*g088%09)oy{sDv`_X@X}g3v&Mcc<#n(sL;zP-%SF3{K2h~ym zZ?k2>+apKEgzB0^$I4xG(a)yYo)o5EzGS}g>z;O62p=3nObLC?)Czb_m%WL3eDu-O zTwHFlgZ;-`Y7K#9BFSjBJ@xRuE#P-Zj5sTVR0KLN&DbSMaH~Uq<)*D(jXd&f^3br| z^2VGdH1xfA*Oy#yTz$Lj>L32H+hxD`H-SMq(e(Gp>`7?$u1mR0Qpn>vzw9w5lR@Vs zcdlPpx{+Z2*ch8?=lR8##aFCv|2UVuI?#^VX>@-ehnC^CzPtSCx4HTP(t zpoEL4n>`)vw0I9tz1~f>f?Oqx0fur7NR2LOEx&|R3q2RYOsrUojwo`DCMQI+m|PNz zSCNR!1FEf8J}`w0zL!1{)-*_1lg}AyHAsR~LxyuCyMPL-JVZt&y8#YyhW`?cHdFG^36a2KWvm_Ok*4_|cmd{AU-JFBiyUiQdi=aGj|8R$Byb%?{U5#>DBX zw=0W&HcK(uuoyV8dX4jNrq;H#jULBRc3tghSr2(IN&3aEa0K#*F=&8Yx9Wr-Mo6`EuunhUE@YkcZZmtZJcIB zU?Ul}{KAPhcmoG43(*BU5($-xc{C-Kk%ld1MGOQpme7yAGM_%lsmdp@Kpm)E2BzrR z^#ZWexN=ZO9!yzHNE($QCE*KtgvuWSg(l{Rz<1oppsLBHKx#diBQq7Vz$LJ0qom-} z+<5V!f60L+Gx*4uD7Kx_V~&^OnC|XD#9Y8D)El_Wb?2KSe#VM&x;}LUvlnW$zmL=E zVupvUJbO`c8~qW`J{Q!Asn;y_*M6!XiVKF_B|_kjqQ6SbVFC-DW>nN>(_uI z`0Mx6z?eUg=uH4zvsyE&TNIUr9dwp14#B6u>CLabvC@7y^ibVW&l`eWoub*Y2TtM}79upUlY@#qH0Uc9m&P%l zG#Dfk=!!n1ZC@r0C|FuL6j(>B;m7TZdaH+^sywqUZ23Jm>!YR3bIy(7?^CUK+}=K= z@!MHfX?Jvi!ZwTh=tq~l#b#y_kbWb}XM=fgg3ua+#iYGyArnCea>`CW6jaiRK-*-V z1yVePw<8d0P$ern==&ZE&=VSRyzPEJUF~K~iziWFUsKcqOyVndN@LBu+g>GhW8o3{ zGa9$=SxK`c@x$whw?%Qo-FQ3K&=yZP8ZAxzVI^}L>N|#Jn(XFw_n6r;V{&#i(+lvBuMhF>DJjQmoEN*b)I$|=dh|E^#7b01FT6ir*#0_`Jo zVh95ZX+4-p=qU*gY=;Z!cWt_MDG5k?ejlQ)le;eWZ|GCC_tzt6P+mJ+v!uQELig`z zVZ_<8um>Y*Q7(kRS*xGsT7n6OsvM%%e0M!JT2U7^e&trp+wS=&l@SQk8~(|^JrU7p z5E%FtE6qtYBxZSjd`!2XtK_$9_qOzks`)nv0qZTS=%3tBj&{^zB)TdR z4$o$X9Id@WBdCfllEDHg9aYX;7ely4!pH9;gaq%1%Lqf!=C$|mJ|;J%F? z)9Pgr0qy@wr=HH@Q`HJ8zTZLb0jHflmHLN12ao*EyiJSi7nDBC_mUtBHH;=eFtY0M z`P=ydq$ zR2yyaEu)!HGU3wz2cxNETv!tbIV9>60|b0kelQ7)c3P;-p|e7C&;2M~+S>I+I|zZ- zUA&ZBLQDypy>a7cNhVMt3Lw>FAb9CCk&ACK-31_~q`m7k$m>dOcgZTS{X40&LunS$^be2i2o*<5I^;9=<~tK$r85IO zE`;htB+{Qg9qTJ%A`FZQJ)FHMkD>YZ_o6bGCJNz$kKRmun z1i}VGV$OI_$^uilB6e}f_A+-R0wofrQa=wT-6Luw@koKMA8^u{^MBBlo*V1Hz(Z`_ zU#&%u!T~)3!oUR4gYq(=LF&9Gdn$c)HlZN%ID09np`SZ#hq;*liX8yAsT~R7BDO`1 z%jX_M)kUIK1*&8G2*+g5J|e$(umm)An%eR=JFxrhp~ne5!F3tz?F>e1i^>!&h|q)Z z%Hw`t>H=nHP(5S20AIKfvC9n73^Zo^^g6QwYOt{JUj#5~@bE}n*rd5AD0bt3+t5YbbrtJ$dD<|= zCM-PlkRT_dm7hV+#>W?x!;JPwY|tHj(w?FioUJZ$r(a0(kzTq^rL>9`@c0dPJwks; zczTjdYYl6z)K389gY|B}9WpH;{CEJPeTq)aB%fqVH+6>(WJw zqBX1a9HQV57m2+#0IH)s!%Yo4n<>nK)l7GIBwAeS2}LEe(*om2)5o{ru+XVB6fg}` z>%Qtw9=IqvUTs>P;D+`79wVQy%<;BS<@(IY_nmIlE&R5qH#RF9HnUwVccC^!i;0p2qRMR}o zfjsN%Y)>#dx~5RS5^b)aL4KAEraA8sLy#kV}HY zmz%7(**~LF=bDVyzr>(vLyJ#CM#}XS|7)TQjfyvTH6H=;}&5rAG1uDj- zUl3OMb;fYY0v$L^nKtg3P;H%FJm=dC~z%g==2oi$x|lRbqp z$*jlbVpDZTri_CV=gpxdsSE*XpOeM?8+-Q8Uz)cEA_{fFDl z*Fi5(rSO-l&xIOH&YN#V-)bjD9^fhI8AnD&TCF->PPzYuNkB920W{#kwY#3IL|LRH z2ZCA=5@V+5_GHmGl0U4^{Gnk}qGL7J4Lp=D*o&D|snQ&E+616EYy>?;h{=dg&FsmO z77ca@LFEZwV!^Htabl@z#k~1QcOja)fx@hLtG2|VM^tq-X<7pZlA<)C;PD;b)f0j$ zi1ofmi|73bI;I3G1Y$duz@3lC^2aABDJgIFLr`YvHe4z=5Dd@4iK#48Q2uwP&RzH% zUJ6SF4r#d~guE<+R&Y`C!Us`q>YGCwan}WACg0}cq?Zb!4+hq~CBaZzoQa=8Ch$ zDl{y7d}GZHtLD6;3su0E6Q>Tptt7+$1`O*b1!g^9vKIsafAii%{z+FBCv&a*{fUKd zfsNgY>3tJ_OMXwJM`=`i;xOpF_p?`2`r!7{;g8BOReSaBow>5Vbw*+$`iq2xsVT(f zowk7ir4_#h9ag1Uu4$c2wE$Rpor*R0&?JBC_Uj-tp4C3L1*3I^eATiDe96ycT|*N` zPi$mdV*H&l65kAipPnw;b9RLMo-tQ)p;G~GH#}V$*}8nJ1!W@QpA5ZTm_*Ug!pPcx zsIpx1#05{w(;nf@)M-f8h|>KrxVJp;gyePJiXHTs%;68ODPQy2^ixn!rU==3c_Hx5 z9R?=Nu_z`}NXG#`0YGGhe`@EBH7^@=)vT!BK%2NzxXDs?vFZH%YfDugbZc`X+}G+8 zBxK||vtbkzBEEs%U|66Iu+!5ooD4q?Ji7Z-g%L}0^Dm?wm#2|pJ9ES1j%qfj!46prW1B`M%aK96exX4UF^%$e(R zfER`cEp!#B%wmGGzm3T|^T{5g{s*m_jU>Y?f}GUHezs||9I$N0*;>NXX96+;gj$EJ zeWhri=XKYPZgzHdui}%yR8ipg+8QA+kx#07O&l)p&?jYl-=AG8Q!^nAws;?I-LZw) zvWRBoQrq{PAAUKKXw}6aU8+d5fi_$ej%<&FUhwK=PF?w`0Z32Q-mS3%QWFzhE=EKC zL8yL_mg=c9^#JeTB4O)&}#DEUcix;TeerK9Y_g59t#ZWPuFMbd)b< z9)}7CmPAb9F>YpL)C>tY|Agv8U4l|kDc*pKOjX_F!yFG5{cztk#tC<^IzK1Jz~vEW&w{ydE~#x65BS;9A!2fcXjuE%?&j7;Mbfa19x({J~eVww%V|pi6TpZ zXtj}rfoPnAl>w{27Vg9VNfA~(HST+Xi7j6y0ywBg`Duqv_5aAqYp84UcXeq zybZ>p!B{H!{n^ss-!uO2*z!Q;mkefYwoyId%J|6|ZGsEnCH1Qk3i^}}DNvGdDoKXr zfn&!jeB`odKO%D)YHzSJP4a-91IKBJ|M53BA^)Ts-M^?K1G7S`?ORKPRLz$&CwcV{Srm-C*kG zsZQ_52lfk=28T@XaFjZ`MW(;Re81uZQ7sGqK|sM|_+{W$p=L)@D@V7r@d9(i@4Bb$ zxgy1l9Iptlf##RcRLV6a9DXave0;vo z$@s6JSqJrr`#4EO;b1>7vZ_E?cN$d`QDA-9EW;cdq1E^%P4F3B6ip>FA-QHl>HpDm z)lpS;Pgm)bMx;wxK%}Khy1QGtK^m!xpma$$2uOEJx5TA8rAxZMgYWPAgXPlY0`Bvi zGqY#Uo;`iPnVF?ltt^OwY<~1w4OHx3NL}-fjPvt6tK__v~Hcj@nLt>QjD(Z!YDKIlYO<>4x+v`4B9G*wd%!6%!3u3Vc9FS@2eN>+U_#BIs1Pf z%r`vxBVGe4z~M2vm+k2Qos|A}fDi`;dn3PoY(3`(D#OqLN}&DxS;m~R$D60?ugmjj>_rM(k=|}=soNbdF&CE))?2l{t1IKV6{E{;7GaJm3MY~Iq;GgP!mys!8*?MDy zWwJ$b54h=o4wlIA&!)qb7I#t0nY04AS<~{C03u9pkj=~4@xXuUakVW9WVUzOG!_7Z z9e(*QL>s1h|9N!+6q+X;{VyBd-qPrNV64`Dv&Je^C(9naa<2PJmpNqb#%C;!8d(Y# z=k;6ZiLaXsc+bi`S8o&Yjpv<`HDag@FRV~xgnzpOTQ~}L zQ}Z)9e{4rio(T6xpvbvfgpHkMsUItq`t*5gmDg$qJPj>vQfjK$BnM#)FTiD;QH8kX z9zm0nYNZAlW*#1|f>N*Cj#qjCl3e`+EL2jF=fJJ|MEws2kRb_P{o(5JyPh*}TI)hy z&`iK)*Z7#HqCuy~@DfW&Hb;pnjM8SFMrxajqOgczafXx-MW2b*aMP1H)1*(S!gAXC z^EU_zPSSc&&)ddQstzQ)U?RrBXG7l<9Dp{~?c1P~@u8L83)nBlP7SFp;(9MxE-Gw^ z=4;L5t%l>j?&RSu+}Sd~@4Oq~6Rn%in>@(0B#gI;4?S`0fqdxObYiMY+^AZX=+nLq z7|MF{vVZIJDp|S!nl(mraI?Sjl0M#)#6DTOyt=yU?_V}>4WrD6T22$wMLSt?=2Hiwp&Ysh!Q!{pKyCnn)<&`k@!*V?8i7m6__#+HRsE`2xHK|W>!kgY)g#2ks7 zz`aIQ8MWHs{gtc`(m(BpWE=eoK9o4M05uW)cN=eipAieTvHlvP>K3iawIxj6t){Hw*;S96WvCaP}&UlfG6$!kY1br z(XFbCS*byrymiZOARi-O*3i_^>HNeG&Ou|ga@jO;BeSR|TQMh6z=Ib+OW|OS8GSlF zvY_)BP(OhObkFY3o$wmPqS8fJjU$^bd&~y9<6_~e%VWeCBd03Q%;IcTruVcT8ZO7_ z3jDPD?PArR`8cgBBnYJJ>Yg7fX@$fY#5O@j8$c+PJc}r~3@Q&dB4BTHb*hHMFoFI=mxap(|ekb+f?$yqaC#%)IkG_Y4N#BS2 z`nF@ke}F&S4S0Ok;2rO-92-k*epuCLf8pLom#A+tDM-60#Nj4*7avxn`imz5`UxY4 zu7ec~c(R0>X+4&;Pf5-h`yTCfw4 zlJ+o?P-yRRXWy7LX@fzSEBbJ4d6Eek7q@H5y9-fG48oVUZ?LX%%= ztc9R-_q(i(B(Oq(-jVpySy?5~t=#P$5{&n9ZzU6r+tHuCXsVwjrB3I&YPGVmYuqmw zzskf(zpj;&UG*T9aXx)AR=a7m`8`+Tg9uQZdnx1c2WYuVNW_-1Jx3^(tleTqFDc*n z%lN_-^nlOQC{nmz#OxgcFvTc^!%eceX|R!niC1sfNEzjGuTWz(69mqdxOUOqK8Kqa ztI)bAcG>-oZ^1!`Ow%u@Q)zF!zA7wVWHLt#K3v&@p2jwACzzc_u5+_373-HdZw}x+ z3ElViZRVJ01Wtlk%#1my)@f7!#ocE6yGeul*S!(^!yWrf;69QoQ!x!@>&CejM0M4u-@ecI1B{b~mg*^-3j^1VI^xV{KnEtqBG)N;py`SGBO+-9MBMa1{|Xt zh+jEhjLWb%-kez`sPC?U7rF1TGA27}Zh99K^AF%$2AlYux}KES`+NmTL;x2cg{w7< z+&uL9yXQB0iTD=D5)0NV(!sjg)=5*{+6m%y^WE%nD8V9rak~*DY>aL`J|v&{y)IaF zNuI!|#OHYF=CeCgo5jZX{(dQehm*)ES1VK{+$>9ASQ2PlF|+)e1sBCfX^Z>Ce4RZg z?ONM@s~WyQsiBUL1l=JuJyAM_&~Y3ep#Y&t4x9O&0kF6agC#1$W=<>~W$5gxkmx-f zp~^I`tGxevCo}uTI-->3@m>URCtPtKqxW=0(DCQM5awB}$z}HV29MM$CiKvCg85pI zgG>Q31ik;YHA?%|YntVUi#jdM@9R=^ZzA|^c4UXZBZ2$xk$C;)dfa8{emBD3*|Ell z6TANHh1!k_uS*I?wj|0Bn3?YBIcW0CsAguzQ`zweRLSpP?Q+$#(P>OB-OIKF6PZwO zJIp_Re2X3k;&{^{5NPM10A3T&>dye<_CuB78wvkhS=NDD({@5=-ayGId4!M(z52lS ze5vV6p;(;_$Fd3;^VtD5Bw*>l6sw7(h{vubN{8YJG)6PpJc#0ISVbZPAAr0F@Yrec zh*^CcFhpG|nVE9%MxMUo1f?!;2WhFxE+r{As0bt1hG~BdL)%wA2Ma5uk#f2ALyuTp z$DxaWj! zYz-+b#yy3Pq5gF`w{gk?I%(&;xH29qhhe6ORZ3hB2Pi3_5`oN)fEi-OkM#b$dC}gnrsjBZ96_p-2JGYKbYYYN*RvTTT{aRu3YbYzAdJ=*r1IYveNRbQ?+8W( zn?eFvk2MX7ftC%2ii(YfA?y_qS(bW}qr#GNm7z4e@@_}IU;(p{KnA$>F%mfxRE_N6 zd3mpShw(uJDh^c~%u+l_@vptpomzzoRXYw`v_Nv5a3St(chw{A1r|SiBc1GW1DkB= zTjy1J(8_@7StfBLfAj4h{1gS2gkhdlXu?o-m(Gq;AMM2#;C2BSxVnZ$Xz-932`R%O zTRb^lNno~vvsU{e4S|iDhW%?v#Dd^O>8^Y^&z<^(c5LL&{r&yuH65VZoUc9cX%l>y zVwdB!O|1GjqWn`8l%8vSR0{t^(4c=2bV23epzVIS!TkXZL(t_rwZlm#b3`62O`09- zGiZRP$#re7G)e1OWkccM<>nV?d&Q4JA?fwk=U~cP_Uq)6I zg+!5)a{QJDI1wg=l~|T$j-dzhb?Z%}&k#xLGZGElu@+g8a*))Zbn$~fia=pV7?ur8 zM=G-@81O1BC%|GhF-N*-+W}Qrc)a(ZwTsPbmpFM&2(gSpYOfmM53x($pREhotEz&N zlEsD)EzAgGAvv*4uY8#k_J2=jb9+`}!4TmUZnEH_vFX)+`8D36^VT2thZ6OvBXp$k z8YA2Vedn50&RO(@E$@XJYXBg_AMVNZu9OS=&dxaXJvPc2Zf{tv)jeluCVvCb-DDBV+LPUPahIpqDbI+gY}uue^F{y4SHOV5)`viDs{!@@pg zzF_`zQIRqee(3$Ps18=VtZrkhNlrxlTlJ4@2bE;rkE-7abnc{L$UQq0RL)xsQ9Cik zmA+?WZ1wE(84@s@+8UjZPOKKFOf?_34c%E zxp~53jBn)z$RP=1_ijTZz6qW2J}6-a!Bk)dIesI$YW7&?l^HBXiwt*qT#bAhQt4*2 zA3fK-!D(2c<^0&4Ux%2|bO;gt#37eSz$8VmG4vf#fq;CQ^o{*IPPU<^=S9<`F)SxTR`5_O34w;BV>$!BZ@YYh84*bp~Mj_qy+_3G< zLo{OJ4x&kcvQp~cCSBs7vRIzZ0qh`Qv%IxIY`Um69WDsh0Q^*zm;d@5jZ%~?LJ410 zsO8gcMMtB=l0}}j6yIan@6Jl1w#V_2zOM^r5Kitu+_4=v?PzJ~h#fI$ZI42w4`|xBgpIRYo<5Cl8aj|4r1DFtTW$h8_+1_jE?ytt!ku! z0f7=Oz#tz-z}((^NZFC&JJYi>C>py;2secUXa1~wDcRe}12-P8Rlcz7nwpuxi`LaU9OlmW8K~<=MV~0q{C8)9UK-p{EZPyN1q1G&cygDg;pH#WiB~VKh(qKHI!8w_MUX%fEy3(9SDRSD{90b3zVV}vmWQxJ&j)Z%09m`hvFv_R zZ0vRj+V)ukziHqIiI`FxaJ40X zT(v5cT7U+G5-vD0+`yz;Mh2Cv?_+;o-_=RfKY-lyXC~vGXHh<+_waq+^-BZetx^DG z5v1obb8;zjx%8x^%FgR15?|y$bAf%;Z#wq^)FY=7(B_F$ER$p!yJDb6Md2CFX5*8^ z7Gq*&St~7dzB=jk*f{CE8qjF%xY{7l34wekB>4kQ=eLM0PVX0QcEYs|UNdZbHDhQr z96nNHh_|RtzPpAluSADLVsF`C>%pt4ntF)bpsL~hrJCp2%KsI<=4&j>yHi~HzFIfY zs%8Mla=8AOUvE9`e(HbE^DuUF_wM3;B4=oLxB|Pug37E11wNtkg;c-r$SX~^xea`( zFS9@Q^vV_m3j*NcTu|GlyYg)Qx-75hNc?@TLa7*+vYZq14Cal;)?Y~Z9>`~*`4pa; z)#nc!{xm!VL%uKd=8{nV#c*u^;vL%DsF+;5zp`O~HG!az>xgESb7hL>33=stxBZ zw>+ty8i0}86hJ-_LoTAR30DS-_`-0WGh)5GwpM}w0?_b_#ZRB}n<|Y+3Zv9KMWz(d z!0m%D=mCugD_S53J7S<$qnvwVYZL=Z!b40spmJdvCR34x5Z z18aMZT9@Mo_6Yj4u=u4zF8eHOF)T<@jv^DZXtJ>6r*WoAq3TSHGt2GK`>uxRk?dW< zgM`6}DO)(*Ud{Bq)o>IcF4VMrd&RC^JYMCK~$x2B-xkWyf_LAWxovE6mxaE{}gJ_rTIc7M!jcAgT8GG5>qui3CQQ#s@bCYR3hfJ1NQ|E|Qd|(fU;G_OiBlj10ht*9H6we9a#LYxWz+7`-kJ zXu>FCr~x~pd-)quP*hY)zpcN+>^GD4F4K^V>5U--MeIk z%8Mtu7w+1@E%Fu}C8G29{ZpqvDZg%?@{1bfBy|K{s&Qy=@N1en8vt_+2@oKbI6*{d zCP{)0(CFcPpP@IiP&(BmYD>}vU=sV z*qQ5%AZ9+Cw_OWr6-^=qd|rOMU*5XgREZ%?bF345dB1MUdmX)2^=lc3D zuipA?e+jYHNe|YXF>2zzP%6aRzf6^sh0C|+iNy572@_=E1hc>D;FyFMi zsM|#h-Z$hGBDksC&ootJPMoa;Bz&EHuc|CyQ9zU17|7f~EXdWCfi&dV1=~5L5P&?0d}tL@9Z5 z?~52hl^bz>5M(pAfY;l?w9Jl3@M>fVOdY1D(@0_KdmYq#dK3m79)UAck*DsV?e!{# zA0424D|8qV{4S3k(q?MqXr94k^#U6dCER|#Y266G1)x!pP{Df`TLjF)pzQsd zP8&`hfc9cH6A>clxu@41Hjka1;=Csa(d z=BoQsB)FESQr%vK?nTab9{JWADxl~CZc0QWr%RNzT&T0$VaV2UJ+w4e7j#t%w9%E>oq61qA-=sjY z_W^n(*e?7RBz!^HRzXT=7TgV#L2r!+)-*kA7KKA`oh0l;r8-M!Oc&n->f8suM%cNf zZYjBs8$QuU!9hV-uOH8XKk7PoAP5`pnw2{|GraBqr4nH0a_0~J(mw8BbSJjnS^tNT z|Lc}DzpkGOEH_1%yc)zie?KK|-}N)RbPw0*Hv%GONw}O|BOvFJ zhiL#L@O$)q2B>*0ef@ms4l5t0EU2Zvq=?8v*`0WBdL0RhRDt$@b(^)t6}8p`3zB66 z$ABNYcJtoXm;Q%nT+jn`dEMTM!hD5t5N2i{)4W8T+&d&Cxj?QZ_rR?TzjR=!aeM;y z3V}EUOPjIR^ffs@%Yv|nhU;&MO5c*-2e&GrrMsoTJcPi@7NWX~w0c{TW7{G|;@&Lf zLe}?9k`>ykfJ3@8)q4t?r2h+>pqO7iuEMPh`!=}C`D z7B}Y|DkH(`ad~pYA{Y^5@6lX)M+4Mv{&Dm6aG@ckKgkF@rvNiaE)6<_P%A?`>F*Jp zeNzW<65esSomUetnt$`9m4=W7j~~oi(6zz?eVPv$*Zx|g-Ll;Nr{jXTQm!)wC9?#Z zaWC6m+t@miZ_R;Q9=gqUynYW`e!s0hj+7rAQwW@2KSBWGYlt`CF7*wxaAz_Jsf|8M zvSYhUz^S55h$SX!icX@DdxuOe>mUezO2%Le!u`qR=ewsE(6nk74Cp)Vh)%1Pp3y#} zt&xnjJ&vccw*J2+MbjTfgX=JE-#czZ8U~+sN+K8b9m9)cV2WjTpI-fSB)0#;zGb&+yyEmZb7fnp4wB?(n4; z%AZin93q5n<ybTs zEls||A@P=#o$|&|85LnqmFt6L=!Usg=bz*$ujnF&CKI|snbgL1n`S_`_2lyK@TNuF zQBi=vK_&j5S`Uv_AsyE;Hj$Lwi#e^DlV2ep7pWtCJCs!pXTHLdO3zEqP+A06yvvC2 zds!v}FA5OcC5St9W%#4Oj>jb zlI@n8m{>0BG%&E@SOgH_0L)&BU6NcrkMxk`b4-ylq81muW!5}tyzyvs7k^4}{7ib3 z4p7pv*0GOFx81w8o-ZD;HrS%JT`{%|W#vSU$`Tv1H&at63v0Nt4^y8#dBs#He&IlW zgG*;Y{dOE)4tJEp&YFJtbxJIy^7DE7A#Ca8&`I{B)nti}c{{L2v}>FqQ)i~R}kh?8*ewL6KHp+sPJ=g za=zIniD{^YZAvw4r63Z?D2W^Q|He9iOwmCj*roHzlVLl&!L87ndNuu~o zjR82LnQZeW{!YdAIuuOh@HR8`7W?nUya5Yq;-@W3AkB7 zzxOwnE~=*XY>p-etdw1n@>566w7Hs=xD*_v2VW>V&KwMQPOzfAm5T+1;}hR;dGv9) z)rUJmw0JUGxp35?^r^sV;FBs;%~B?%M4}8rY2AwvYxz?Nu2r2yjW$43;2yi8Lt+IvjL2RnjM32ap|mO8`gAf#k^ zBT6jpgT+g?bQ5qcdRt~i6$owQoF0BLb^js^TIc0^liYqAV+swGB->5PWVfV5qfGUF zt{3UBI6p1^kCUKy$|aXT+)MT_I`}Qoz*7RSm+w+NPeMQ(tE#O<5Tek4%YB9%@GMV5 zw5V8_+lqfI{)NDo^AvQwr($J6NoJr9X7|oqc;Uo*qOFZ zWWeYy2SRFk@0?F$ z`DnU6KPejs4kTK{F@rZ`i3)76b)IJ(8Etbmgdrp=l&G(d=M92@#aPgnMZ^oSqjbTW zul2a^cwPHj77PqYnR()(;Hm%FazDI&d6gr0L)BAvxVoO<9;4v*=OY0rNxQQsJBci` z2UYi*n6P+)cAqotNXpUeRVz!C3mzUiyq=O0+~1GlE%&vzAwfFfIq)|T2P-~SWj~Es z$KUWv2>!LnoS-~ZI8%ml?dcU99hxNbE=GJc*%pHc=ZsxF6L1Cn7sP)6#<$~Y^~7Xt ze%U+OMDR+WXgODtsnX}x4JiJViorvMn1J4~$AUSLoJ=e{uI!?iny{MLlr?69&$Nu1 znk;m`mpyOYbp8OS(wu+|8qm-KxDNE4px`y1#|N}EPr1F|dMpk%L_B9K>b#~%!pxmO zZ~FG7xQf?_y7Ds&42`F{ae1j_J0aXo=jxnSd^i)TCCY_{0`dRD%~r=5@kAI8b1ip$ z;_sL#P-QUOrm4}CG)fxGam#hqU{1WXbB>|DS}euwNfyC`phcp`24OwPrH;S*oFZ)L zzwg`}OngN`ve|YYY_I}Wi5vE&r@17POj!-aIlp%DFzK|=QJdbZpXR1G%l(4RZxA-6 zpB3_nrUe*}EVW1ie|+<`;j^3t+fth85<&>pw$A z;wf)ucU2S<#LFK0;e$!W55N%YKT_=|nv11{!Tf?)DPft9nOR?8q``Ts-hGGZ^t6hd z@D0GjqtPL+7&K;T%`m{qYty|60XI_bjov>q>AWXDuMX?lIzbvx@Ue_{bB@l+LJ<`e zy@xP1_{be)Ka(o^qb5G>qUvhmJYv{lLICl}ikA1{{d7oNYx|_I0q(pY>x1#UY&yQP z6{RN|A5ce*s>TP$o9RyHDKaR(dS&k7P3#%2SRqON1*s#7Te?7IM|qTi}^(vfonW%)S`IqQZL-~ik zH*@VWkFDsU{y28LRfJKQ#@G;;!D=Nj5#kU)GRyPbqdT5eWju}^rJ8~kPWlt!*NoVD zJ1mIz(ZDObAmafMOx51~V61DOB!IG45T{r%_g=p%8{4UONjCVP1VmJaTPy8>Ywc8# zl|G)3oQ%6O#G8yA0N=R1E|?C?zwXW;so=naN4aRX#(mwIX*;O{Y;{>xe@b$(59=S; zKBo;$?Ta7Ty4C3_-Mi=pQPwB=X-EyMGY&ht-Jh)rkx68x2r{&?3Zwc!x}S%{jXnIQ z3H%D(Jpd+aZ9yk(;BF0Ob5$s!D;%ywJ>1nFpVgYo6l`qsoH z_h2sj)YU80ktYHvZ|^bC{dhHm+x>X^mf7O*hUKBk{W=flCsRpZqe7>#aiwg|Smxqx z_74~}8BA(At8dvo-xDCE)&$8ABa5iB(&VLnTB*}y;-HkF?fd%plU0fJJK60}3nx`1um7@qY4fPKK$kNx#amyw> zphNg(xdU!f>|O1mmrvHpz>I3JYUJ)Si|+}2GNara;~uCi zsvNGLZsE4DY^mmobH)RjBQf+skH>C$V#kf2*`Tcl%&I7+3xbQ+?eOj$!XdWZz=F^*8YobF#fWMgBo)J!@UJvuR^Z(E)&+P2MhDb!(O=y;2)N@hAFp4zm< zR`<68Ux;U$UgM<|a{DwjF13$8UwI?)DGGf|Uy8v{&5pNnrzXJ2qFNi>?PzImU=0Rr zccGR7n|wR?A9BHq6=Z%w_l_Y$Ehm*vEWwDtEfZI%0nhE1+em$1{X5`e zyapbBwYD6)oJouR)?CUo9sXBP3dKb~+E6y~pph)m3TUqC*5 z7=2TRm%XaqffLni4{7(|E zw77NE24x*7hS|CL+O?TkxzsMa!4o@E+62>qM*0&0p#bV<*oclV5CR*@4%1tgP7?)} z>WE;&C@qCwmRxokyAB)XZ}~KNeJ*G_I`v7%R>6q{CDiXU&wpH4FX?S0P_JW4#|)cG z6*^SdJpNu>@Z2i_Ix+~QERJS^IB!O;t6tYnQ2v|_SclBE`n+e0HU-ADs)do4e#gRx z4O^tr_plR0w%DO?b^stuJ5KMd-cu{Dc4$*O=uM-)Y@RdfF3ZxH7E^Pb0_GBEQx)5@0>F}F;r~m(20OLX1xJn~Q&}Jx9g_(D*NIO2!)7HL; zPPLbn9g57*?Ca@jhDC*z6=fCb1ViUmj;oe8yDD<{t{%!6&i}N`Zj%|2P3q_GU?K~K zduwOwgesOxN*3U3{GESA%nUj+{YmdWUR`|3Sbe{Ij}R#8W99Dto!{%|Ci+J#6-#TE zOo)N0tywS-kAk-enqLLF%x8oRLeY{0N)7(ME^P_J0soXE^RF)%`$1Z~rm-DJ6JbrL z+|#FZt{8Apz(m+v4i0fYKf%V*Do}O;F8um$Vw-G(?jKNgu3$W@V00vu`@gNcCWgd| zNaI*im!rYDpy$a1l{q*%!um%-qKu&NCWtd>FVeRvDjFrS+9IdS16_E-p%ptvM+J*E zM#(fux(PiJ;j&XJ2|9L94GyXiG70)%73)gwy7sL1cA$!n>Bql{AMqxften-f)>ng-OBc6G#0}?mzQ5Jm=jF=kZ{Qbik?pxSIe(lb z?zm`!&;hnCIq0QK>kB@V`s#z1tsqzt6&~t=2+6m@W8uG^-W~fuW@hFZKX2C*4qP_h z@(2hw@qbe5V|XsX9Uqq;ifM#z-NBBPkFkx*@Cm7tyC^pyzpX8!Al)YvTA*+Wf{DMu zb-aPm$P(Ew4^VZog529TiU~aUn=j_9P1#<_787NX$+w|FsiTp6GV?7(IEnIcTy(+Z z=h1i{X{PlpBBBZm9O(->C);q!fHw?AOToXfv9pVTer2>I_=b_T^FXV@G-zyY4gtQw ztO5e^6`Ir;Z=(85`*O#>=ZB86d*}VSjF!%-E>6rY!{U!lkfO$>9;Zj^+}7)u3JU6z z+4UfWY*8W!(YsJceS8OavD`TCU6l-DPjd+3(kB*3mJtO|FdMFRFf}Yp{wW0w20+`8 z)H9Vbff?6r7v85yFep2iRN^}u6zQ83*8zIFepa{{iuTuG|AK=9^FVKv` ze_wc>aW`Rkes?-@x}g#oJ&^3Z(r$2-MRxnC?E%kq_Z+9s;&yRohE9+?R(c(dgKxRr z^==eDN;YOVUy1uA?{ zKyJOK21Z|EhtL1IiDQP@7k0?%tUi}s<;fC~Dh^s2DfygOe>_(58>S})T z-^C%l?|A(Af=mE(*!JX1Ttb%G_S>0f1LzzYk};N(+2%@meRSJTou9j6&$8zmT{ubAAsit3hbV{nKM361-hv6SX7?++FDRrx zgZ%ALK|-;sl5?$zh_BSt*Uz*!g%kYjl+^{6>_i-#{EgPoTGT8k(_EYOJ(!+p@#4yl zH+Ene9y;UeG!fPC$&$vR3;s*(i}`tP9YG)+hcnETwi*Fj&Z0$vBZGDFmtE~B?p5gr z=PF^E*r)a1Y=T1?1A+p$t81xyjV)hTkd`+ zB`}YM$++t3Z8-R)pS!zK{oZD3nl6bnInL06AYV)&SCU5dObkZvodqumHbhK;W>hvr zeejNyW%XDxIP|~-m`;bCzLbCW&RI-Oc7d5Wou{bwpmnoR?4U5wK(#8-e7kzyDE_D2 z3Pbrk2{k2lX%X#Bqm252gr;WH1db#ca7RQlC5k5CW z_#9I`w~FuCqK~oOfxwWfOs_kAFgZX7f!F_DO`d0JVe!S^|2ZHf>)kJiFPFVAu4U8X zH^rZ!BoTXNMFulE6F|W6ap8T@Z<;K|HY{CBVTs&7sDxeEZhE6C8GK z(7Twmfuz_qhT3qBEG)oC$xua03Xw+x()$%PHvL(3gr#O?@K>qEi7_Pcu>9A3ugk(` zwe>y3eQxKM%`GjFq3j;_=T894_msq4}D0x<@kWWLWmE%{!+d9Y?b| zrTH{LQvpdyNo1G)JzZUQNdGd?{PAR)UtFtG^yML7`913w1XFtTI=p_OcAI$Ma7!iO21y&79)5Pw)>CiH7rR9vLX&n4R zN1-UPl7*B@u80yuzFiwGK4=NZMKH_I@mKli?^_+1bN&%j+MF?w^a&;eM8sEs1Y|`^ z_xi(g*mA2MHcR}Trk0}RGY~QTDIIzTYQu}P_uEHghK{!30Jt_l?aRx{`xZJVBfU33 zClL(xH`)@Vl+fTCQmgz>Cz`K1@tVCuxqG&Jetdv$H`rqzBBK7T?4D6mWh_AJtfk*H zMwTJm{*z>$a&-#2?lgMh4%64q8IBn?BRKQ-T{Qvf^ki~4)j8At9laR3vhRlP?(QPb z6-|tdec8K2IBEXaUhQhM4SnU& zuYqBTebS&?hjXB!p<6-KwKu68YQYp3`$2p00tRfm3pLZC#zqDTRBh=<8+7d>fdDR+ zW1*3~Mvev{dhybz0!5^kJ&kS%S$e~auEdDXNQ5yzvvROCz~qSleLhH6pgj(V`FLsg z*mC5eHcfNTjnmcAHUzN_qrn|$N`wN3ShCRaURN_%GB25{<_(}fa0(HD}mN!PPBbe0$ zzp}RAp2&sXsGh(A;pFSQ{hHQp00HVkpD^3ys=?!BTONdVP~Ewudn7>gtE*m;UJ@+A-nkA%90Pk!d>{P`8qFv^yq7emHp$d0i~M z(Z3rvU`P|F4PWeQC9=!YB-jGl=(We2uWcLg8j-*{X!4`r?L5rNL<7|>B<-m6`F>yQ zvg($6OHXYDg>0Tu@zf}+xT19ohKp4VO<^l_u(yAFJZl=z#|m_S_c-SIRoX5p>6~X= zJt+=Lp65M@aPedWUoqikJ0%#CQDqRvgafq4) zofnXAb1dc*eku>@7=HuIRbDEI#UJJDAtq=1gPNHNYrA92`ukZ|s(Un%kKL zikJm`-C}0rs7VVyXXqYh)nFb`X4a70P*$BT+CUY*Sa^8mb>vQRJ5Dd~*j;vP4;HQd zifvYmhAXnT+06-c*qt7}-uLA75w~YU zjTsjTo*N)E@I3qKec4Zov_Sk^pfttU!a}l8DBC*&Wb3eNnEY3sZ{A19tsvf|2;Pu+ zY;G6tzRS2TSa2M?eH4CN5x75tPRp{PcM7Q(krw*nPvuF6BqhDd&#yfNJy=#YKCs4! zBAyNGx%f7K4ab0V^nv~)UuUxEV6$EV$7;S7;2<{8c@fESkmGJOBFNf0^$IDQu6%vx zYi(;;H_o02ECRVDD>QS<$}nKSO=z8?-bCbAqQi7=#gI1A!Ut^l9r)COz;5NFCrJe^ zJ+j(`ZHE|$*~Q+Wv-P8am8(_ux~7(9(YCR%3y!@c3!d|~rffW%ImnJjjuE>iO~4Ok ztMO{lC4g=dhQ8CiV*8pCjcVxYVvK#``P+k~$EnC=)M0(WgJv~&J5Zr|ef>vAz-ut` zm#HUeu;xneX#Z3~$t_*I{%p6#C_W%@E4)`6sh& z)L=WV(Pe*D&2}d~rBmr%?EV zE|YPo@$u79r|TkXBxf3Mg8=xv-;@m$KbFa>Dd_=MyoKt)NQK!@sqD4lR1%)t!&^1NgIr1awO_$pu4px>kF@Dn$LDfkW`yBOL z87CKN`CGwY$^pzMV5GNQ*E51ZH9%S+EEa{xS3F2n^L*B~<^ZG6yh{QzYLhD~5f zqwRja&CJI~&u3edZ0(oaWy?C<;k>~EQB8flq+cN#+u!)?)muA)TzhScP zI#%!Gs%T#{#V&}k^@ACznFePrh!KDRz^orpQ#a$Iu@#Z>G*)s?A=mHYzl?xt`h#6Z zRv#aTcw{>No5T=hq4BFEEu}wM9y%NfjQ9! zBtHkvB3eTe*^xu1_I*h>DF&1ss}a9Wx-P2zN- z70JllgkNstS$P1G$>oxlkD9{73BjY}!HK-a99Y=|dE{!a3`ib2s3Q3~E*3wn%#tz| zzrn}HpK-pmB}kTN(H2c4giL78{xHsew?E?rTVft!Wg83Tn3T)>;OSk*cYe+_+ zN#EyMPk&v0nL{mzD0=xqP|6@LNcg+lE)+el*(dQGE__W;vjpmWfiXg-6;01qwk#@^mu{1(Ub+VcDag6 z^36~zzsok}h`=MUv_>^?;$|KmI|W!10|c-@jmnXbum%3Ix`ar!Qaf))Av9W88-@MN zg6$1fmJFq0mQOqSdTnY1x^z~61NNSU5`4+41VI-lX=B1S)(Iy`c0QLwT)+TL{3UiLlC}7|SyKg5 zWD18x2gbQmexc8bNLd80NOC4?E!l~ANkY0C#N(84!>E812mig%&v7stbN%4^H;EWv zFhCSD#IKc#UK*PzZ$MxDqdQ-=1r-v39T6U%>#!@H4KjXB<#SB%f1u!;{y&<|GOEh$ z@7i>CsdPy<2-4jtC5?1QOE*XeNOv~~2uODb(jeX4CEfk5eg5zB!7!n1{RFel` z%8|bl@yMMvj-Z{nXw8bQ1Nhgwb2H!&iI0z0P*4CPD=$Nn*HR~EUi{4lDzli9dz$Qr z%`Bh_q$}*-y#Nyk@OK9>#}uf-t59g04f^&A8R+np6ypb|A264O^9>&uNE!yf7WVXP z{>StfT4qn-ThP962=MhT-w5p4&4xXI99ifb1h6ExVPLhk_XYFB3r8a{XSu!zj zak${1&Znd_h=j9oluTC1(lXmDLhDsa!SuO^7M*FJuGXCv1Wci+lOrXFlsGIJAi>UF zJ1j#5h!$36mmKkf`32C$fHClwI`nG{%nc%hsDy8(Fou(zY?ihB1!xiLvFx=Xfm5mJ zO~dQmtW_q9FJ(gaRfeAO6hv^)BrO3(JEFI@Q4tlgKZC+3&|wN=|E8+nUo1IKmQypK zQgDGwVSevZD!o%GQ=|?mJ$k~q=sujNRtG)-jb6*QDSStLibWuz&dvtIaZWJ&1boDK zWY83)j{wWp$xc@VR^G1Lk&^jpE7UtM3a^E86Hrk7PBQVcD8@{0B1$*>?CA!ayjB`=FU^M_xUUYbDXjI>;IJ)Im(<%TNSt*^SyStm( z^tLRGO96saW69tL>JPQ-yW*EeuPp_>OsQE#fKwR74X2^1v~uc40rm`>h2 zY2MBDgZDWd^M$Zpi3GiSFOk%lwho91!5&AoL|w~3$LJ=DZIwHjQDQWcG?A;3PO*E6 zOQ6t!pGA(IrntVwWY>;m)Zi14)q#06qy<@V--L{NkP=403}CLw3lr;Cb1Ses_4RM7 zl)JLN)bnp25r~21T3>y)?7yUeIs#;E!L+D{fC#`IVOHqDI#_THSuq*Ax)oFY(^mpN ztL$F*mWF1h?Y}Z~B@op@iBp~a%k~CJb4;ymGXHT?v{Knf+3GFAV*N=sI`^+(n8bFJ zi5Q!iGMV-G5%V)F8ylN3Z4iq|Mb;-5d0K8S*xME=B*i~Xojw#RS2&O$-|Be|mu41- z_0!&tG9KA_gvOjt(Z>h2Y`%c)y?>TmV9e4npjVflbpTY6Y|VbD-*fik%)9Vj7w?(b zkMzkyKY0$~|`M!7!pb zJ08rLJPj6(&0g#Zbm*|uymx9kdi^d|pDC_-X|i814RbWhsv0>$51SubgdaEo<>x3$ zoFg;W{ukcNi7Rmdsb()j;VH?h;>q8~&JK%4WvM7Ik0Jp@xrcp)o@5BV?yWX;j z>k0ZP$~a>SVq}ei1D^5oXE3%?n9P~CtD3hnE{u0SB73Op6=ndgP``;#EL_|#ng6@# z_w44PzoR+s4D%Xztjih*c*Bj>L5AOq@>jLYM&KPLn_ zIA@{DZ`U2{^5FK^FU~dxZL*$_Vx5l9q6rdQ!53|B{4wh~EKty`Dz_~69y!4racd9EQyU`6f1;5K$e&wo~eKq1n#@DG;;*FH~_@^<`1XsgQDaRR2KIeA|h4 zV&CROwZ6y-!bwt~5$A|S)*V4ZP57rs5|Ky=+-E=@A~0$KvcNz!amn&>0v7plg%k2b zdnl6?$}`&wObg`=vqG;$SxxHr;g6O48hn+pdR*W|vCPK8ExYD3kHc5~;F4RqrDSAm z`P?iG&GRT#RaN~4^r$fBK-e~vknQaDmIKjohllP$4u$7*!L4u)Y zM{i4(8_U##jTMA7<NrBkq^!zrSt!a=anUZs7-Yr0xMBr z9?>{2ijdOR6vt>teS)pY;hHM~wd`l*l#Im}tuW$UR+e8t`mxVx@32vK@vq4UlV{l( z_W@%`ggd^s=&K3i1QG&b$eTB$CQimg$^y@LWOx12G8XsZn1w9ZazV^0NH7#4GLQWp zseiY+_VXtxVr5ha-}G`iYZ9gpPjhSOXm2<8?Yeoa2fy;_YxjBJHt^jh&c5IJiuUoG ziFGtyhUUl2jEpW{^ZJ()ShuRr4|LN}igoo}+l)Y3C(fO2{^^td?*Mj$&G9(hW~NZ+p5vwfn_{|R0JqDU{nu!{B-;FRPgPzY+=mK47<(~ zM%GO$kq0&E*kO4%h>MaCFuc#2jo3RtF+2>*F{NHQ0uicg$5y9Xt zgWoUEvuxm5ceO9mZACV>5{E!`k0t=+fyf(AHDol=hM%r4ciCp*pw@A@-;+W-*X{tp z5(hhMQY72~nkkLXB5w+TB9Agy#gQtJ9P1+)Y;N#13@cKejW&9B^{0!_hvpY;DkK;H zbn1V)S$&BYN&wXtS89g{q=*vMtNU+ru#Ku~2QjLcgw-TKoun zh;MyQoLUodS7)o4GGvHBb9o^EcquN+4zk00y}@B)76U^OPyeR{2p5qsm|1bW9diVi z0TI^`H(0nXec3aBNHQi;_2?QCsgb(qn__T8YkyAH0@x3DlNZW0--peB6>QfOIt+B2 zOf5L&V2pyp&`~_OVH+9DB@;}^3;$TvbrXMLW)eeEf%64*T7jxPnLfeAU*OFJdM@9I zP;79#k^FbODSB_7JS+G-m96GzmOE{>e*l1{TR?mFs8>{q9lGfr)8FWlH&k~m8yOB( zBNp^b$OnGhiA!R`r$M*WOoNT%o7L_}o|WO@M-E^LlQZ)N6IuWv1Tc>R4tdaT){0!S zxS(PyZmGW>qQ+c4$RcK!K#ct`C$&SiBQViINu%uG;c731t+w!?|J-f`zR;| z-o;OmBdGzCN1N1ed(*KdJ^Z+YW&}-&zI0ddmBU6y4DDGV>3c#eA5qOhSA5ZGN*U@fx>?5u1QgqCsNPFmEf%^LqY+YjOR40qS|MB!5kkP5q6a z(Mh1}Ufv9+8(9i50>bh2dm%Lta7wW-d_TO;`O4ueHEm%fB9eh10t_7|L0<<_oP#H@ zT>Ib^QE6Q}XPQh!-hVrE<^zh#?~gfPxJCiDZyMgN`sUE*WOI%^f{K-NC#)}v(qezm zk@&B^0H{-I`4vI!=Fo-#WI{pEQM(g1wLk2pQs&qPPRHK&7{>zGF-L0dvK50*?$S$ubiXObly%)$%jd=6zkdOnAKY=5(f1$%{*$&Q zt4Gd5(_aGU2Te^_O8d`ip}cKaO6(&+_$;!LUG9fL)AhE2PK<%j%fD z5D3ia8Ngjn$6h>}>v*BTSh*8IkVZK3c}3s7q-`HjE=nJ~*_2CLKY6T8=*)~av`kY` zE^iZJl#_~Jt}e+~C?UQ!aO&|YT%{8s_D-~9OfIMEPuMZn!kGY9?aGGk@D)%se&M_Z zyXn^C|K`#J?N3McjvG_R*Z&B2pC3+k~NWn!ic~{)_qw)5-e)01K&~ zJ~_nX=CTu0xUbK@dhhx8UVQZtqhZB^=gu1^*Gk~*5AORY>GFD6noLyjqXs?A6O@G? ze*REnxCAHxtYE=1io_~zzcEn{i?+OF_;_u9aT%|yviS3SBZBp8m~*tsVwbK&JzOgP zH+W0?d%pBFofSPTwffOM*v*YbBHD{t@ddPmnYe*bQdp;4!LK;vF*Q19-)`Up{F1@v zkpz&$<`%n+0-W;Y^`b3Q?*FR#+&3e6-aD*8fzyhZ*9mU*21Kd70wVMYm}W6iO4YD z>Ba>sTSIL>n6JIRd=~$==tfnPSWy3gc6IjE(~=!@K*-^Hka-L0$S_UBxA4sgDMe9S zmok42EGZSF$GFgqg4A@3f|yML;0*n-JzO;`Jw+tmBFXt9RiJoNn7z-GqEK1?!(;SB z=L_#!wAX$Hx!I@m-InoLy?g$&B0|15g+BxF(o^I4eWyOjp``b0n1Yuol^Au?KTJ}s zR7+IWkU#Bjxg{*lLFG(++*&(o*pwq$t>fkQiK_H_IzWwcXH}ronrzN z#`87=?aJg{c$0EKe4&W>PLaw=%l$+6Z_k>6_H(w|aKq0BxPAdDQ z8$R|J7PJfXRX!h7p7(~e0mTv-h^`PzlTE7BGq<%34$I76S5-}k_6Fq=?lmz!H9znv_59VA6=wE?T9A>KgDX$HDtDmlN1EWr zbpkFkz`&elsAv^_$14#doA!(}u~1^KGKmX~C)?Q?8a-Vo$zSpv zvXkS@Tzy%7$p9{JpN=O~rs0vz;!iHNkrPokA9dvC(n81JnonocgF5CY)@a|3yE??PmLge^eG4stN6oEtwj>v*-Muq5ahf5jd|xdd^o01MxwZaW*(_aaR4r!Cq=kfq2k9nP)J~#(Eif88kpaB@ z>7>X@JY>cUZ-(tn50=`)pG-3;8H5&QC4&$WmU6pXmDZmN;w8<*x}G5c=a;9)UJIe_ z{!Y3%Xani>hIg%+{)b**CgNE3heiw@uSSS|vS3^eM<#5-MPe&rn(}i%LUjY&%@b1V zuZhNoo&Hy%myYg-_bi9gEwjuYOO7=^#aZG7Dey@g~4Mqs=5cnjHsqdAzZd$<4}7Z_QKQ+4Oa z#?eP~emTR20~#0vj#F{=!Y=uzavgLv9-yo>Gc$uP#JlrO(#1f_&yy^!VSSQz0o^`e zaQDq|gPJA=39LRjrXzz<7CQ?X2?Y!Dh^HE;j8e&|(rK@%#P~}73lLPDgWEH57x@DgG@VZ4&x{}kn<^%2U zlxfa7&5k40T0F}2)7G&=+m>#8)bX+`8N#FBG=!woLl`Zqp8ppAE&G64*Wnw8OG{97 z{)f?Q#Ky+v&!KqPUy+m0b>;Id9A6LE^ikXPe^i8WhaA_sfBrs)DRu{ zxrmVr<8vd(vS(uK8v;4>&>YUXc%$09gY+myk271?3dv*tjxFd(La$;+B#K?QDG^TB}23NNkAMascXu(HBy1mr~Po#3FBV^gMIOU z-uR*NqsM)VG(DaZ=mCF=<~Q7mo7+|#(}y70Dc1BagT*0~PEyJ_KDjacjVj{2|s zbqD7<1-m#xwh zIL^bRh7|K27#UXXxsi19KzNSez?uVm-(tXy9UBi%A86WHTb+aWF^`KXJEFx{MuEB) zq#v73@akFMQ@AkYQaDG#(S*>jbK#ayGsKdgibL;ul8iAGzzw0aWfKj_gIB?>=?ZG! zCgduSA?n2Oat@mzk>hLPZ<(!q%QO*svc+p`v52A!sgu?g-1&0+x)W;C!U_uJueIsa zBI`}p)8?!>(^k@fsuRb~bY>A5@2^pmg`Wh#Ui3cz$a*MQRFqGcagzjJyorek^JPAQ z5M97#i#xP?fEfI`gtnY4U*@r(pKkH5<;BA`=Z-7i7USlJCbw$lKdqel(O10(y~_70 zkjE_o*#?L=wzYzOb4w*kl|AC*{1Bt1^$r6z z7!nTUy|F7K$DN&DIVEjqNM>P?Y&FF*u!R6HPjKzZW%H)_`Q<4BSMY@ zr8rooYp5?;T!CMWF5Jpx4JQ=xCPr!N4dEn~0jgkXe!Wwyz3(PFhpa3MPv_hmTqq_P zkki(*{}LTqL_$U23M(h3R7#*l#% zQe5qcUZ{(K(GQt!4JoW)>-e)~87zF4{Y(P3nZ3D)$GZU6O|8c8LEoUKZt-4S+( z$`MBGQ;745Mae{)V3HH^;uq*0Sb%BSm*iw*z38d{itu1cyRxsJQ=AuAV88+W;e$WQ z*N6O}p5>A)jSrVI4N)XH`*EFL_HUt+O8R%43TS8s3OV&;Jt1`%NJ&BSM;zw2nmSAv z?5@?xG+?n6i+}G)ghub?y6>L)r>HmAWtm))l}Wt6OjxQ z1E%h#LEiMyW`*OpxjtP9FuBdB5-`D!v7Q<&xO3%65q4D)8B|_RfW-^UhAu9d*6-?H zfv5cHzZ0B|ollfvweSAXgPSKETv|G!xYfwc^bTCXEYu{dY zYo2Dw$(PRYUlX%%njFDNTvqSWrbyDir;=+hsno{7O|17ShNjMYlwKuU+1PLhaEG^* zu$kfv$-oAYe)_n!vBoQ8mvGuVv)rk?BSRCPld45XCymJbsb-#he)qK4o4MkqMRM04erf>Qs9;7oF$6m79Ae2nmtQ29ATNcCY`3E2c;kGS3rI5{i+JGW z0ZZ)p7N#ZJsyJ0+Y9_g0O3n)+E*>7o0$j!U?`(`St)4*9f`m_R_FCg@-omUD?4pYd z5zHjln>WP9pxx`ZD-(vWM1JZu_3sMZ@B-`U-r*rtrows|)PAr>lRL_&+i9DFd8ZUTv_tlUQ8LKOHqTtiwb&GP}<77F-cyyw4&Gx4Oyhu)us)c)$k1uST+N zfjaZ}S7T#8@PqZlD+?)74*J>F>OvsnUYN_TXsBN!%>VpnHm)=9Ir=P=#Nw)r9{$6) zI9Fn1laK)GqhP)51Fa7o&H{&w&dYC?h%~+n!shR@RK46~0GrE?}gprzz$4 z%&QgCo8E&}l8ue40|_EbKnYQb6;7(4;LySJbRiePh7=286#u! zb2yP@WZKd${1o%J-?6rrn2Ob0Ujl^h8(y+jA2L^s`>q|i7f8?)VJ+gJ0^TYTX3~V5 zzIjcYW5o}M4&g1rrxaN}*V?4+TWWJh1e93dwrmy2U-=n3NJFm~-rs3*bDRlq@6Y%q zxZMKJQ*L*VJcPe(j#*C+H#O}#RGG5*FrxWw10nfriZ!$Tg@>M%L1OgyW?k))>|&Q4 zTxjZek!Ek>(ITS&V=z)G)3rqr*!grSIoWx8Khr8Z07Bb&?>rcXZ_^O48dBJ5U7}xp zvGPo-^t<{DNP*yC|Gp;S2S1%n`{(PIO|WnnW*)u(Mgvv4M31LicDvR)sH1Cyu!P$z zlZVip$BMmU&)ob`X)&Sr0gwX*8A0kWb9uNN{7mQq!`T9=QdTLrbvR;d-!_{3hYst- zy>{0%GSR4iE)&edr#{&rF(CVL9ccC+p&-*n1aP_l00J~y!!HqF+pA{cD<>ROgDd?? z16Q%R+01ff9-&#*a~(?rphJCD4dA2@JOju;u!=ol-U17Slg1b%Njb1Dska^e`Q}~} zJJ!$@cc^--PGza-Lwljf18L>f4Q1Dwo6Gb^of36-;NiNx?Gygn(0;`XAR8-QC)*Hy zg^!O9nz9*C_S5BVkA-;9pZINqWZI9YuSb%n>-O091}axrGN9;1=uLV0 zG-e%ql7X<#=SzG9M0A_mX>ZRBoN#Zq`cf4J~1LZJnYw|0m*Ll-J!>H8|Sh_C`kTY?#o;3MbL}C9rLo>$e4Hg zb0MHGiRM?_p*-}TyNKt%mnx(WBmBv$Sfhlk>v8)X%P13@5J&ilNRD>_mdxZIF0{A- zrg?=ot2YBF^uWI^yGNKRfivm|J{oJKGpsdyTMEXUEHv)TLAtwv{c zt-fVNxsap(b7h+pD1;1Oj%IJ4Ud}(VGiR;`c+Sx5KfEcJ zI`t;A8q88TvfHx9|EHUr8H5ElzNLyI>5N>V#Q81^ipx-(2OVv-+tJ2(5|X%kJ^Y3{ z9i2W=-5c)A~Lwk9J0DrXx*mk6RMS>gBJp-Vbmid z2-DVAFBT^wCR@!XpGQYeD(XJEd^{PkJAR;v#i0+2d#hc~#OipSvBoQE?r*xHupQInwuU~&|3=$Ek6AN2r(x^$82HlqC!B}Zz*IiTmKm?7t%-YnWTmvF>~qJ1 z{d41u=0`OS`qVfZ^kZn0kqXdGOqWw0PTggm@B(IjZo6*)IC_@#|J0G7aEJq|SWzsX zt^&4Fi8_knWOs~D9|-AiZkxQC4uO+I{i3Mx?y?$(@yiFh5;Q3Epv5)}Y!D9u@u7TF z8UZY7425;a=V5KI+7-SVP)=zQ8hL(t_@IXH9s|6pjjo7`)?he=M4WE(*VNT63JBXX z1YOe3&OYcNiu^|Pp4b;?-^96PX-A_=mjAcXmY!_rl?YxV(DlDR8$-$j)@`>ld`!h@ zm3N|JlREfi;b#}$yI)MUKOhC*s9kF%CQxXg9-4?7{v4aKi}klk1HV9TYR0lMfP?In zmKLwxeJGgR-}62MdTg6Tb7QCKvI;|9uMi*_1tS3n+z9r`EU0w7g;dPvlF0fhTaO+2!z6TLv65&LgqRH=95> zZ0?g*Ljk8pWRIsowB%7e3TBS)$>v|tozN9^mm$&+!bMd<#L+e&oFXVNwN=uJhPBDUnu+~!40MQx)v%>1msbF~< zLNbesD8ZEGP7H7L^~p1m0u)sQQzu^6e=DNB3ghfdb|a&4e~UnuOl6A&2OUo6{FLVS z27I2zibWFRg|TydxLnFNjMW^}?T*+w2^UzJ|KyryU==5S%zRFe&-E;Y5~rd9x}}Ar z;PqhcXmTVViTdIBI$(xh0unH?{vgzH{SR3%F)FgO^e4;5*Q7^Y%B%5?nf7{qj3kv_ z>7}LMA0J$K-n3rrjFgt9Va>OY`<@_EXo1|<;!1C2QoqygFj^|nKujzg%5-v3%qRf| z;aygPwQVxrOjNaGHkXL;advz&gIQ}>KRyoPcXwS8_j;VPcfrw__ z62A^D95)q>W`)P%r z9i8=ym+ipX+fq04<}~xQSa^(0YEf8esrxvuDC!Zyyv>h)eG-})AaU^!=LOC!q~dVA zi4(j*VQu8#TOf~n*~g*Y`R4EeT()vgEe8m-FD#??Z)A zpI&>MuL1ib5w?Ctk+}6*tZsaHez?1?G28*m zo#KQMr}HgY3=;mo^0bE1+}40}A{BCe3*88c!&u7n0dlBOms7!HFtYixY+IS%-w^7kYI$!|FA;9r%x|-K*9R`RtQi_xe4O3@yi10;$e#U&6YVq^i zy}DO6uWcd_nw#5ou%}Ht^WAUJo+P)sK9Yjy^r@#+QVUs6s~k6Y)>Ai$}-K9h7KjRIPBL{w93|5)nuWr$tuI6rz-r+OAZm)^1q;EMjRWJkjQHV4*M12h6h+SQi zKq*xrjh?79dcmd+t6K$#ByKS|n_%KrSvcTh7n{&^S zUwd$`h%8FiA1%mZfSY&d@4FJ`*p%2u5M##553YQ*65)-jq0*X=u4(F{Z-MG5Z)*G}9mcEg`jv@d$X>6-cU&KOpU*x^x_f(4{wxrq$vpH3rF-3km$mwD zrSb-++cAS@nP8PAsIym+9E+pXAi|g7LyhiQqkC2~6?{M`u4y;x>vxj5Z(*YZ&tI>4 zJj2%?Eert-+EvofpFae?kDFvQpFh6Im5kLNhe!5}w$<#v_BtEg)$d+*vOCdmNn+&u zx5vuS@LnE#`z5pz+~6c6gxp8JNlvGvg~f8!3)DGo_mvIT>t@@P84`^zl8{}G=SD1Z zMN8($Je70#1xf8s0Ou~d#^UeUSF%TcV4YdrcJtkJ15(@Vu0o>5is(KRT$9bMi#rF7 z${97Tjk_CDv~tISE&PV6;}NUr{b}MRUly2r?P$VcoO&5rDSC zq)Q>*wI#C13NNDP*Ij8}3!%6KJu164CtCjDvO3;d1%kb%KVS6@bVlwTNX}2<}_XKYf0aCOAuPe=!i29=6d`iv?}f+-MOEA#Tj>T=yla zQX<8_4%~yPY9vh-{NwlHTIUJw7SA>%FcWSUYQXgMi8=Ev89Zx}v$n>izFnjE?~sD# z#~{T8e_+YuM~3e1=#!F@=LLBGe#Im;VQULHc`%|3IEBCew9OkEbvMa3C=e~iCo{5{B+47 zM*0><9sN}F0EwFN6y$|6Ai=}oz{_I!=lNIcr8FxIvdO-&Iyh%0LDqjAf=$5lT52{B ztZ+p5@b4{;K0TeFVn-R%iv`J*1Sv2mE-1uuE1+p~f5>|v$8z#XVZ82jjsBAE`3Bd^ z_$tvQ0vdZAKMq~(;p|ik3l6mRAkD1a7Vw^NShTQ%hShL(NM)#@1CUe-CN#`e(Fz}K z)N{$do)%+Keup{CQVuKnvFzeHL;@40g11+t1UH^7D0|Z+Lr+nPp&9nK1dF2S=nS7I zq$??uPMoml8ch_R?hfOvx zlFkDx?Fon>U{?kgbWo8O9P|g1`Ww_6#mkn8h)O!7H@)n#X8LuwNCl_JFxa$%d34ZN zaln88q-D+v5@8#qcGB-f5VB6h@di7Zo8_?JE^lt~W!T;CuwveiAya(@^r0ePB~QlJ>%<#4Qn=G^ zyjwv#(Ax38V;%QSFZTJ_cfl5M_Nqj)3=a==s47;}Kd+Ro8A>BBCl{Viw_X8a`3>DT z$AQv4@e_esy4i!>XqP7Y)MF4gYp3wV7KjQL7_w}QN^^fOsN>U%Q-+n|!l8tto%%G$ z?-USVzsD{OlnKCMz`<7x(~w6FkU$Az5b1{shQb#m7xNNBqn{~92=K4B1u<#9SSs2E zATj{#B1V*ma!X!^C}B0oQ6LFmt~#CxpqAlEg@am-A>l_P<6hiw;}SVdm18id>%WmB znbd4#j5b~kMXN9Nhm-GBsY&#G3(Md2&^O-oFwio_S|-gBjtNJB6HM}tc|_iyWKL>? z-PpyVrM;C|< zX)sYS`uj5hh?cC<+^&*+u}%$e=Wnk7pm^5Bii_~Z`M>A;^8cT2{^H52?Evf&UJwg4;Dt39)1&XP2{0~lOwL7R#y@I;2ae5LoASW91s4ZM7~hK>d5Ov z4t00GBuXL)%0e@3xF89J<2=?xIp;KHw08;)V?luo36_V38(Q1|^EO#Zscwi5)@yLF z@FIcXbHCt88RN5d*ZE_e%1ZR7HIbkP?>}kT8wFwolB))^Fjz_^ao~Z%CV-TFjx@-E5Txwa>_O_gu9e+cqqcK?P>;_UDitQp4tI;FXZ zPu4?)n8Jgr@}GR7Ihw zxx>f09I4^eCG#jg57x}w<7WIdd{FFw&)Ja=Nbcr8+ zoAfo=b)b|m%V8YL63KhE=L>O0edx3$g(+VxHXH|aux|<%mi=B|fdGvMJA161%osZJ zVBArYAQFs(GTKKs-Rwx)PwZhp@dB(2Ez9N(4l#g`e@!w+7N?jSWT%TAM6HU9`ZnlN zB=Db-z6%)$prJHNQDJ{edBA~G4ozA5_e$TsyV;9XRgRe1nlk?EL;fxfW2~=#=?^3g zNi_{F$;ih>9K|3>K@}WSY_k&r#IIqfl!K=ZEHzpju(TnyiJ=jar#N* zzY*b(V--OG{;Ax+qI^M2LnFLL=wRq0sI&o7P^6J0OQ{&FD$&rA-Vo3K-5&aa_T74U zcvRkAfYpt}H}65T$$nMbc(pxruXf?QcbEy3^hg@O;h(o}#2XkWBDp5*kw=+uibQF~ zBBXWuo9r-vC~WyCh>eD?EiFl`wTbizSYM_1mftD?Z4=qNhM+xJKgxv#eAH%6tS9b= zBMtUVf|^AQ4f;GC9nq<|x)0<3%!jWRDDxgJXNG!b@gsU11k-vK7IbDUP!6Z-iOBQd z0@tpIJh7d>*qRkc4Oy0-t%grBdXC;?p4>W{L0yUMM~N@00hE&fNY7KeTkm{5RM z4cJq-iA_Q&N6B3_?sGQLBjG>EI2>C9b*2wm!JU?xi_nA^y2HT;Z~J&cISl; z485!wCm85)m@}Na@G&th=dGOIC3id_x8Glpo%i@X^3z-sC$wM)UnN=s$}_wu%(B zjxZ_?RQl0!kl`h}HkN>hvv>bK1*(^N(M_))FNf~Xbl#CT&{9q~n<3<@!8k!}X{mlk zzL_@g^CvOu-p(|%O9E5oMG-Qo@2!z(g6mkR3t*vaMeu<{L~jbo5|}o@aDHL6dni=$E@Pwk)|lKBcEx|MVtv;1543T>)dz>vF;l2&vFtfb$b!v zIM@s1P<{2|c!@TAupXGj)5yh#E+j+tHPzK!{ryNhc1z^(1HS;84x%UD8A(5B*0B3Q z)Uo&H^YIhRr2*wN>WzV?EtMmoxE_+D7jMvE^UdWgkne(UPBU$gp21%4k^o8gd0F@K zTwBS~3Ir7i4>hDpcJl{VF%>QtXy6yJN&iQcC0ciboBHjia3FD_0_iu z3xY08U&ToXi3yA;LBKk9x|yRRHU(UwPOt(^chLq77#nw933AbQ3+O7Mn^ft&Qk(>% zB}%e77j!htaZ9c-mrN;Jbo#fR42q!1ui*nV-1v`az}LvlRs4<-4Sc zl0b_<;&m0Z`%s?N9!TfQph;4gu>8`$u}VR0YJfHK=xW2LE-q>M4ZVX;_As+1{mpU`&|Qw>a@!Jx+2Lpq_ol3|Gx> zG9ypvH9fz`Y7~6tX=_Vtb?utavp9)o_j17s>nZD^@M*Ptr~3Vo*f$3^a;0_|PzE9* z{_jWvvPc@+A_wNk!&&>&HQ3N`m(1EXI*63(SQ_YIIjJA!t4#vK!YC?MQg$YKI0YOY z&E{AA{wZd6Sr~Z1W4{NNpsVd7nEvTCx+6DCcHR(!h)(d4f0TwCIcxp=IDm;BqB|2F zQVJ(CiYOV>E~jr~<`_J(N%d2GXTS_?VFU%}j)z|Tjh(>5AQKQ7Wcz@1TM=3+S3S=p zHY=)jhLm3b47VzZnIwz#oMRt%R9y(gCqYqAfQB0;$CBQAtTnuvVP24r^K?)6G7nZ^}=K(zc zOC@e=c&`?#mVj|yb44g`%{YNq%Q)I*-7r^L-bNFNGjn7q-H*~w;BEvz`|X+%|2!B36U)3O6WTb z6q!nHUraYALK|a`?7qqRow)kA<*=x_`^E10JQ}bbwn)~_UPOpfrYBHR%bfle7c<4B zc1L`@;HhpiU#+;3*4EXf3O{;-9WLhInT#`Ahx89>Qh_R1tYtD!kEO=e2^T5*i-qzR z+Z~2YU7_zr6^w42yV=P@7n~{kTurL6nYuKm-r0lVm=1?C%sT{0TB$9;q_;A&G?@dj z>|AM@ufG=l;A`I?Cq|V=`mX+ZGI1#7HsEUovRn`G#cb*DO0#5(+HQQGaBtFptj%l> zn+ptd#pSpfu!cq*Hm8_}1C|90v(5EFn-}YJ56bo#vd$I4z8Lh|Q*DECPOh_Azz7Q8jVrDpmr(z9H#W&97*N-CX8*iSMq87fRO35N|WmRT1bx@vY& zPBhrQYVqu{JU|Hq%g;|Jdz}+YlTuZ;7;da?%G9)+F;fvjeMjs`P_gdC%oEUM)l&YXB9Z*5 zm)%@dZepLy&J-FXCn~A`Idctd+X!ekh$F6edQ~}iUAjnQJh$@JITU@<#)!UT+WKVS z3>SP=D^&lLu;TwMk9;rnb;^ON5IU#iaK6Ivbw?f~y+d8m#MCAsHul3xO4@oKYulfw z<(q-9D%@q|t&avz$dTr#BQ7Azv~~et_RxSik|KL_vR;6IU?)XaPlO@xH-#u)a(4q$ zAf6>oAUW}AoT}@E=By6bN}GZlW)N`!V8&ocV6q!UlJVX#P>kZTBT2ryvGgmMhxFkH z0c&F{7dM(c2g;u>wFQj#B977y6hTYT0^C-;NkF$BYz0>ZIK zVa3H8lZG}9V4Aab_KSrFW2vN@*uMlocGBmpFL7jTr!brOfMi1=jjwe@lWN1@y-Y>v z*;2Q56xV5B_D+Dpsr!Kr_+)3_j=@_?xSEhTC|FPKJ2#8~emY3zRA(5s4&Enp6Fd0@ zPLvf^m=31!pRGr&t?AT@7Xqf2CqNQVI(^XM`VZ0t-~8_!!&+=Ok&rSfOEL?d&Xv>Z zK0xU>Y*NExtD#@Wr0F*K>V2CZU8Cg}Mb>%=>q^!fZTNKib=jo-d9ciq0RW!lf(7al z&79_u!GCmrg;n^DF=q8s^)r`t2@{xbo52*6hW^$QBQM|w(F6Hgpzf-l&K>{pLAR_%$M(XjQiT2(yM@lDr)*^Q34AP^eFzgFgvXW&VoR&3joz%$3z*mZBg?`HgsOpNK}{oANbe?o@m z3P_S=Z^^75(@D$AI<-7x`Uv&k^pXEhXQxQAN)Op}m7fO1(%(pYmere*ika7Ga|4{C z-hn(U!>3OtFaGhg%1>s7}VW?9gmJ7c?LnW$_AVP`af7-crk;1Z-%6Rmtv*!=%a- z|CdXD$R}m!@fBqcF_*GL;t()d09|nGXQTJip`pb|k`W}@a5Gx?FJon^nBxV~k!#~o z#hy+wQvFYiC|eLq2?{7{^eEwLioflSQJITwVAl)+Q-TX6?;qs%*&-(yszFaAJ=ts&Yyj_h>N;$xS^-5sQppGe)LD8Do&$8iq6=6 z&{v1ED}y-REj=eBJATH*03$7dGRZ$vE`!J(t!efEvBK^C&X#2-frn1VIv2ekVe} zSn_MZsN%=$F_t<$i$O;}WQ@ne;$&Jjz)7|^8k#*f(ls0{Q^LrV?h-|oy*AO44M|*( z3YC8Eb&pnPoSNG6ra~{n#As$Spxb2Fu;q6EEWcLkyRW5pknx@Qjgea?s`E@KNrmEQ z)ybM@QRT>m@bl;kYW9m?NB_$;*|TzmUgoay^HYcTE#XiZBcAjR^S`6EuajLeobeJSwyShIrkd~;ImdQFmg8ne0dX9A8clDA^F3SP*)+LSf- z$PQu8Z_04OPbnxvjHs_e0`d^%lu*M^H~zl#Fcy&}snF%5^OdMurUKX@fCtEh1iPJl z&~T$H0bI+l&rSjXPbR@ULA0xD#%a+k`kZ}FId-=;k@~8`3sS802Z{m_NR*ZHIP8GCq|JtFlJS! zrK<}H2FfS@!E<6=AZYh?C-T|m*mg?uY>_l<8a@_WEMa8=uO^uH0#ea5<1E<2fsPj_ z+#xMtW)f)fgRHX`rLY-PJpmOWNtbZnIZfZ|`t0$h9g=gw3t|Z{NqrK41O04%)R$nA zE44#oyUg&3fz0z?zG;oN9_uIX3xZPANup9y6IERMlAE2}YlgTpay2Xui%8jr z<<)fKF`|0bAQ9PMkNSDBtQz}_9f5P45?=P5K_g7OU{`mN)KU)Y%sNw=f7zLV1+na-vlM@UOQ`>;) z>QYX0g1ZuBOk$Gn^mIHmYhI%ba3m^p5|z-Pfh<&Q+BKmC>(wVwNbPvb>j2V<+Rq~G zf7Pn*UJ|JZ+}(=PQAQqe%cN?Tes-BCvH2*76CQ2E@ZFwp*$K(sl+iIND0~?*)#0M8BghKvwssjYGJ`CHotd;~Hylv1ex^yd1a(d4faSX$qgtB7CPU5EI~l|mKE=Q%QYm0pYbiQ_4e zPxn&fp?tyq;GHkLJT7=Ug8q@H?(*&*!57t-1(CS<M~^b03a@<0aXqGiR3)RTU&Sc600C#Oe5`k^NQE)1FFW z$furlF+ge+B;ozsgdDIc9RKf0yz+^V<}&pprt<`A%2=n#*))3Lm`X-gR!BfjsnpVo zl#IIYnMurTT_RD092bt;T!6d{pOLYIN3?a`CC~UeCV(~i`xV#gbqt3XG6qLp)OW?| z&dKAG=TflOhnsQ>2z&vf)M<9mnVjC#`eWvd{6xjVQf1KztF52dG}nu~u?g`>{TAF> zV675;txP=lY+=2ggH)Ud^U)3VG|Up)IGy-)vw#ZVg|9mTkk0)g?3Di*Ci=;rr4tha8XghXFuP5h8zdW0qPH|xIrgl5>~+F$QE=mt8B2H`ads#mp;+i zdFGqU=gv(DkjkoTrkHPNYLzRuN_qI?9T}=z~KT|G1c<%zY$#i z3BY9qI+_qLxC+e)^>itQbhr<&v&u9%Z7V+TDO#U5opjmNiHOIKnORs6vY3c;>(}?@ z&fMu=#zKDP;O*@=E3Vofy1p=i(j;UEt6`m0T2`unUZaryc9_ku;_bKSMEM`ob{LX^ z6B2Jm#<81``ZeSVk`qpOC(rSH!|7Q)D`sQZ{WvmD&eX#eEGu;z>*30f)Wpa4=k+jW-o}#KWW4MFD*@$Gqqks8M z!Gw_gqJgn-;M4d#PF>S55i_e zl6cU6QLWeGMh}yb(=eqefx#42^!T^ik9CKECEV`EsQ;!L@4kfRkf;3&u|t(z(}$uF zo8c|KR-bnnr4Md!^YBSFd`$Caj-xpF`u(fAk%76HE2+xUkuarJbFF83jOZw%WO4KJ zrfm%omW`mY&huRj3qi>Vn8(BO^QEZ$cchR-9_*IGj?ap;*g|OEoDC5_;nQV8l3}Nu z{Bw#2=>3i<%|N4UJNP@t%g^6?GKmZ8gN%CAXEi?}v$?tNY3JF!^?Kr%vk8BGDnS``X3W+k}XR7&pa~%(x!mR8rENuIX6l=*+zBV~_4icMzf7fqxd% z0t-9TK$pU3IK-_=fU~0HagV|BZ~x2K*99XsZ#mdi2G?=rFYSL%>C@sXV1y)oWV^90 z{8_}~%w1vNm3odU8FO^O^Gr5Il-Rd+_anus;}-xNJnIQB?&cV=n(d7GKaQbwjRg&j z4xCr}?Ik4Mxg=kfWpP}xh`0D)znvX(LB7kc{u|(5ygB(7bXe8%nnr>pXfGviXMNCm zvc^_$DpgwCfHrRfx|83ol5gtgR4_lpz9nI^(8T_lHjaqc@5rHaNwhDlcI9J^aIYrD zgp=#pS4C}=0#+bSG|Wh$D?&?a#(mo2x4L%D|2}!bs~<222;0A&zu-cmkk_y0lNy%x z2;@Us)X*I~>01c7hdM;sn$6gPB~Hoxi=f_OkqiMCh>Q}kusTvmDeV8!j4fe&x4^1` z;KRa*J-F{J*XmF^4!>>hf9ci>Fh5(O!I(yuKfa}FaVew}7c;NlG z&UZn9iAXmx;t_aha`j^34u|$Fm62|qJ33NPZJ%#Q>$LDci`HwT$NQ~2Js>w%np*Qj zQ(I@V!K6R(U1f!~vna{qu{Dkid`&a2F7=DG*V)(yhp+G!d7kM`yg#^$3r{&>eSRL> zP}h|=KU?wn*B;HE-J*MBU3l$g3h!fY1^ew$JxIp7IEZN zZF`uHUv>L0k97{zv&zywFeW7>MT(5N<&S|LVQPB$SS(EmAMcN!xC#Q(O}DVpeA-3b zBdkL+Nz;TTM>VFmS6wP6C&%)5s~v8G!2MEA&3@tf=aV?_Xw-Gme(9qc2|lc`6;8Vc zL3O}Wl$DjYUF;2l6A!pc(+v*Y`&7tMR?taLI{XS#1y(I?w5*VGk6uq{;m)!twz|0C7MXEXz=Fa?z_s&eJ=Y)K@F1%ERL<2wOXGb|ZSo-{5xzLV|G8yQsYQ1AxULuZ zuxc})*`?z<0|IyKU8`a10RcE!3ytk~xw%7=bnvs3e7y12{JeuFznm>L{s2CgpeOx4*E){a?& zYIczJ#De!3%6tUjQOB$8Cz#EmkvB|2XVvFipFMkrhu&uiwKGO<4RN2``>9+0M)Z{Z zTl%2W^-m|)>!fZziu_SQVS)bB{S`9O+@6}}HqN~D{Mi!c$Jck_%^&jc$mOfQ&7>)q zIhf+>h%+-y^!JP$3fOWJJx_DmU4ga-1-hMp{_X24s9nBka(&e3yiwYEY}tFd|`#b7aJ+MA?be_kIjB$N*NZj8fm>r8nE;nLD={{901WOpqk zOA--jH|zE9pYh=79)vFnGPXmX+*0sOFgqvpTT0=-MYj(M*m>7T$6<^lky)ks*^#n^ zqPKTe&wR#8b&Qg#eP-?wmEyJ+P zezxs3V7<73EDBFAB$f>Nb=x_T;_d8J#(KD8KbTQ5Tdh)bD16GsV&~h6TX~i~F6QNA zX&X5)mrX@+9z5shHkI?7^ftV?-d2ec>kDAN+TC^0eNP-Gw~!nE|GUaka|f={L3^qx zq<@GwILiI^v*#9(bw8{{za&qj*oup0?DO9XcWFy0QA)g#oU68$@D_Og-VGuen9cO1 zb3%h@Wlt`af-cnT$+8z8)12W2gwZ42sB!f>sGc4k_hdET-f|;-Y1pQ+x}_z$r(2w?yUlQUBjJ$s!F0V~ z;@g*fBpijGnJj1I%WcWCO6V3_qB-!i%XI)GhY|A9URe7pMI|vLS$0P>z<-sx6Qe*$ zB3JYt<|z->;xC(K1Rk(KEe)`9z)|*>@B|atCQg?WaMeo!gfZl=umieOJs^lM#nb#c zr`0QI6k8iS8d)Gp@16QjN?MBO#ee(#n+byW$h$ar>3|9f&W+6Ra{;lMPK5)4iAK$z zewVF{0ITrzR~Zw~yZ3jpF|>~vW)zahcV?43r9|Kxx2o&R^%prbSAT9@O$Qy$B`K2Z z6#Ohxoi5nq>!KWUzdiP27bSS*me5ZEXb+xtC7af^nE0OHHa8OBzilwI--X5X=NFE# z_ipPCU46rx_vV=|cfgy4B>k0pxQ{W;n3V7dhxB~jN3k!J0_k$Y2ThYe;ofi}^+~+U zn98s+dE7nKyhn(seQR}m%16Gb*10}e`S}u4^0|xB zZH8B(Q_2!4DI%wnV|ibIC_kOAW0%6Q++XA-diX=ju$kwZVCO02djj^NuwWGM4RHP> zmP8j$4>KjrJmnOk2Jd}|CaIjlVq{-TaTyR3)K+PZvNuwWq6^%kDq?@t$Y|$a%?s4n zW}yM93)6%-LzdUQ2%TjTmC>^<{r+@=S>rEse)?|l)#&Ja*{P0r)M)&q7f~yxCxLjE z*b^QnR}65a)@2|3ot16vdnD|}>juQY5qp8twXzi8M7@N*CN;Oe)riSzOOEIQb%V;9 z8ePl%lBmQYJK0p|#C3zK{xgiL}%dEEQ;MJ;k^Qk#|#nL-dW*4#hd zCs7|x!_NM~eDW1|A%qDMUra7cf>hd#5&NP8-NR2=Q-)SX_+I&UfJmwY5%e%_T{1@cm9~eTF;I&q!dpg1)@i#5Qr0^$^=w6>OwWx2bS#@M8 zH6bA(JZ+LyOJAGln|nLIR4V-bYm~k!*FP@1miMGgMReyA>c6S>?D;6gk|8zIBCQ`! zbrsK_fkw)}U@m&PnBsprXtIn<`{kW}wVrJA;e{E>(D5@Pqh434z1N(#@YBf@B-LKO z%OZY{h`w>p9kIGxNq>*Cb$kYQo2drPlqijmV>tA_YKv_F#w`(aEo}cemW=PvW`K-c zln-)n>ZVVMKJ2f$7$|LaUdGNU!S@zVAOEafwX(m zm7GxdN*nVYLzF9aWUnY<<#cuGrMB=Z$x`$BOq0yd!)V19qy}Ewi)vSk3C%ukSt(q3 z^T>{be``=!)fQR6nmQQp#-u4+MvC`Vvtd?SLE-zG=?<`)PPN*xRO;TDz)&cyvCxzS zvrCij+U<-g<9TRVVq3!L8isw4NP+jXgkN5pWo zA=Ov0-Ur(w1L64gQ*C*kJ!dt`vmJ3EW(|o^Z9xKsHUp z^WUeGd>n9Ma87*oH1c0tIN2DllGYi%hpNJh&O7+YqGk z6uBr_zY|pWk}(}!3^5W*}!G$zO1_u3m&pnx#57D z*LH7>^L_pTo;!`nga`DVy$7wK#&%F3^Z=vnBmY2#F)44!dsgX>x=sA=d(iX-2m8NCNdI6hL#fJxuk>5f*n8q458}aXYTK8Pd=vDq>pPNDW zc}3c9rw969%-+AA&8*KH{$e7tb?d)^mum9-AmInUSGkseD%w=~|5Fs3J)W=5s?lf79eY!` z@^Pz!MtRkUJwI#FAY44sMm{T2d+(sHsG2M<_NTlFT;P=O-9^+nvn^vYvmlTqe16A{ z#hpPnj3(6a>-4GYLCm!hLR<3YBj*R|US@|Ul~D?;ABpde?^1PhYXaHFVcK1opOz6Q z3tmLe#^(x1)x>3>2{o7R8ZIef-oHAV9T?&k3}+t=jSz$ zU}9y4-lrXV_d0gMxOO6fP9ki4ax}|AEuR6)yL5a#omwwmMGh;%he%fH1;PD3+IvwU zn3``b3pZ_a642F13m0o6E6|A89YVa6d8!LU}>n+$_*p01fvT}B~ffPCXSE~zQ=rRV8 zu#z%&@&`E$uQtQhwTgXH^aIj@_qdDAZZhc5TE1(FCn%G(C6Buuzc4x{_^DK)Jwq*E zUF&yd?)>_Ax&QGYNwdcWv6Hfj+tC1@2v@Aj!Kwy8Gr#{Sap7qRwgS&qT~nZA^qSqg zwm%qnAn|P-besaaKLd7bg4y^B1wMO3fo?fKQ{nrys*O6pG4@&Fcbs_#cw&$62st*Q zXrTr~SS`s^vpH8z`s3AYHw|RR)dn>rE)!?_Zh9v7-)<~N^jt_Qm*Vy^;0*BYt z$II2OOUG$*E63+E^+&$v(t9r3%-J&*VH?=+rKK>!)c~vdq!);t7ApzyMu+jhk4FQ$DwG>@Jeama_Q^bOo$hLbT-cg z_?jDZkb^+WtEKhd54%L2^*M>_s?cZtF^PPyy`&eFY^m%w(DS7-8LJcUqGjYGh3JQE z2c*ihl}xM));wFGt>>?g@%yis+-bp3@T&QjXiqx?b5xx%5PoT9P}2-c>fTFGVZk-^ zar1mgnu@u+Tm0u$z;SDnggri~Zrb@VPRf+XQr|3B7k5$KVD|g(Ya0VguFqPZhGR=G z_eI)=V;=`gTy#rND$iU)>n8DFjP>ix+~r^OPYgTwhJIKiwfh~Lkx;@?j(RRx07Z`# z1FtaF92;ZokY);^J)MCi9*!6Ymi7j}m|F9!z8{k`f~moWknlT0ck0+>o;y9-hhSw= zZ!c5J%ma`bzIYfFe8_0HS5J_h;Z)O3#{I~6sgUN96+rxVyjOPt<8HR}1;_Qn6Bqwb zXSY|Io10QOc7-F7$tz#i1fQ9xWf!W7o}wEV7`$l@OhID(0C^hg+T7REgAHI^<)N*v zkIDjqg23cr!lpM4JVm}dYy+2`28JQ0Wt~?Woy!vUFNNXul3CLK<;!g;yhMoIQL-H7 zAHA(-W|o%sRWHqA#PBhl@#XdHzj^uN<<*bCJXRb{tZ<@FPJ#Q`{?MnkyffeJ52+xQ zJyfJJ;UA3L+rW|K3=7F{n(is<^K9YvA zpC^Hl#El9Dc^~8B;)>6yix~}-P!%FC>*@!w{9)lPy#b>XG|E)!V$q?&nR(KoR;KN% zcDrL%?VqS|ci>b`)NPULIX@|j^Vzw;Vi%fpOPm2A9*e%6=L`%rWIPvmO*?;`-t!L6&kv@0#kIqxAROuKK{e*bZ0>9Vf}+Ucd3@^2TQ$I z^ItJ4O8dFd>9i2ppe7qC6a}^r*GrGnse71q17C|hlZd5swLwI*&N?>X z^6I)T?`kb?ufD3i@9&`lb|ajHa7buN)h@yAvd0YxoQf`LEW3j_eFO19OG~=bfg0O)d%s ztu#LJKjGfU&Q4{&7s6^$Ys~QULCGua@FZMPGJA5B@ig!Zp50}mkWy?L$kK67n~R-^Xgo0_CHJ~4PpF})(W5&=uqHU_9+ zLYL(Dy>wz%!s=GXFd2hkSgYr@)#lmlU-*250=v3Y5;kt;SD4`#yu4!9V!7z0L*FT18b=EzG3=-Is28h;n?d#1;z4qiwUk z4wg5jj4z`pCSTXZL#Nlft zTH_CUgz2wCZ{O`&c;nHbs!S9dx5K^rFC)Dd6t)%mDQz=IaUMxV~dzR zskQ}vFAs|Dy`k8p z%fUnd&iXeJLAj;Oh>w)nteC7v3O31%?~KzbhB4BU*yHu>kffLgMlC(o;+M9$-hVMX zH>bJ}HzuA<>#aPd2@J3Fy`sE53KPQk}ZrT4>F*B?eo4U3}s)xRwN|(?H~W^ClWY9nyy$nZZ-6q zGO%2XPnJtT`{j>DcK7WitxdG6=gziG3i+L}5|1AB9~~XN{Z>9=gH1FEmmU20I@+a@!+!W2QmE-ugttNkYq#*TQ=z34aQkEKt&agJSLv zhslKj%o^`f`SX2askcuard2}wpkw99j#$(SAz+5#hyRk3$zmDgYHwa#3|-U5Z9a&9 zwtSX$FV*&Ks>-807G@RR)gNNy21Wx6WjLQ}P*CQ&1nw8P*k!JcUhq__P8!Z3-Ghm& z=_G{4-<`=$ycd#$1QJ%F0YHXPl>0M>xYLs;|(vfLnt@D*kk)|N$ioLL| z=e9G)0cL2LS=wLZ`ZJzrAAhgu==eUx>qN(=tz=oiTF}uf`}bB)<%1|qbdE1|1Vs*} zteQ;fn9`O79&gyAFlO#nYbo4HbT)?vp+ zsO2ye#^=#4+Cj9u%PD^UZsu8URY(1l^R<@8$+%2kY?3H zS*7tGQ0>1C%{>Rf9-Q@{_R+yp4LTjj^oX|Zh-943ZDdXQIh?DW?-tV6fI=8BCl`)Q zwsn^*>09FbollL|3v;V0CMU$k!8GL=Sb8b_r69HT#-ESEnNO%TF99e6ss*t5Gp8T8{1 zoa%^UOs=Q4K`bnqBNzPOtn0vEYZL%fvVX*yMzfNFT75^V{tiO zoGd60sn%52dB562s&p?L8=Z--=gyaaa*&IGPSo44->EgBkrL>!SSikn;$CtP% zx%61ltf2~c(giY|4;sCUBLi>u+*hFe=Pjdz?_0*RaV}n|8v|G96`zZ2wM!>Zqu?ri z59CZpL?F@93T#snjT!sj+~1W?D-NY$t#IxC7)#Kqsz)}Pf!VC%`>}`);_6-0Kj*ed zKch%zE{pzKWIUoL|K07j37k3(Lax4cUh_WaycAHQ_DSt_JI6D1vVDCJQWY9XI-I3v zhn=(XDOWL9R0E;ToH2BN@9YT)Ygz`kZ2W7~^QeNzPj^=ZP`iq7UOKc0sZvY)qo-G~ z@LuI+#APfgOAMD(?EmtOIouNJRp-uHSIF+e@F=3f!G5RndZcs7E9lq@{)i9Tu<-+$ zDpah7m03YJvEgHk_5)&fvB0g;pl~Q-MFh>0OmzlHz+#8Miz~b) z3RwR#s9p22j}t(@sFj~zHjEbj2;chIjbo3vxQe@aNy;22GKd}?u{_I#-ROU~(CA69 zaZCsm^V{bFa6NPm`hUL*uFeY{mdDzKl z%r*x!Jz}X8I1E50f1sE^XfHS*R<~SvJIl(~H|vE5Wigu6Z#s08)GdBirmW0Ny%WZ$ zsOVcI+I6ic_d$*xW(hqyGf~vH8c)C$tyile_LhJ z{>8wlz4zp524wawAxREGExpV~QQ3=81?XIio_N#K(=Zxz-uWX17ZorYLNl22+GugG zL_HX{bjegMD_+tm*KOT8X35eEM@{&rT3T@%jkYjTXoQtRC)a533#*dhAagW5@{fip z7?{>}b5Ax}$HM~|{s$$tu1mj=jE*Qm7NkKLI%8QG4n4oP_|M@RdTB~VC@%UX>G%m^ zBiuHBXB=nCpu)|=d0}+JcWZcI>Jz;6?y~aGXVZ1Jeu^nD3qr$<#|eL z>-AClA=5{V_v)DWH^USd&Rvvk?EQctg@2oFNPM3cx!o~pz7g??ukycYRaQxGS?qgE z`3R-;Sh`GGnj<(K$JJBZfnwBwo~lq9uSP!JBE&APB(!EdbKH=RBym*;o))FgJZISq}z5D6%? z_H@wh@ws3pyT6NTimxMjG*+U|TK&s*@4{`!R42wCx*Qez)e014LS;-_arIwnG7s$I zMRnobW(*lwCk->dMTz)qSEmuij?3I5%oJdXjY*J(H;8_piONr;-c5l&aw56_y(-7| zB|;vk`SlY%>-{VzB-a;t`w|yk*JA0GJM#(tiBoH2xu<`|^x_BM!3ZUu|LHgI2|auy z*8SxdJ9NGExG2|773pz87XplTQU{l$9)?KL>165OXjI6USo6;-eooq;q$3w5!)WUg zV)<(^);)6b_ZqKFC6u4jVM|*fSeilOgH-VNxXuyf2i#~pDAIn^(9oc+1V$vOW*}tG@eG{d$SwKN6r+_!bh3@f{-F{ zQCAvSbBCE2a{B%4n@Y#|Xtq#E*iRHDm3Yd)NSK&n&)3w|@SsO$2ss&fVT%Dyy4#u+wY z|DgqVyu*}!d4=S(P~wb1{IE>TwE59r)~*HzC;^UG5CYkyrY3p$I6gjp?_f*~X2v7> zZi{{R@NKMmwu+vu7TR+<%{E-Lr`Uv<_RXNYe`9*Da|M-JmmKls3pl=-K0K+^eG<`0 z83FP$^ljK6I9Q8?JpYj*D+5(kM;#kSCu=tyI0st>f6h^D$uI{Iy;$85@FJ$acsIQ1 zsaSCQ)Z=?1UH7Hb1?x4fW#7(1WasJE>&ojtCRZGw(+#SLU7_jQQUBsc#8C*64nFns z41S{41%oG$9buG3;scR*QsD5|9 za*K<9&%GS`hb)`o*SR4wQzuD>%Utb1F~$e?8u%GLFzNW(8$$vEnWdDx3r15?D6oc0 z4)W7!ZdR<+Eu7x0(K)`6s1Hue*SV9ui;Il$?0DgH`59LMi5g0gp{jRsWZpdBb@CHL z+VIsbS%#1prte%sZm>@ZTnKa?8g%vs9r|5|z%k+a=nhK;!j6B82(=7}+qL(HE+(mK zNYi_?tZnR}6tH&HJHR20L7%F*NXb(FFcJ5L(b|WjXf*intorJt`B(2rd(S)o+>ioV z9$>)%bY%+n@Qd$3mvf*x$m5~?$i{&*Dg5W)hgo7h7SKvTaJ^OZ0uE?NZ70iK=EjaH zr&7cr)epJBn$hSPMzS9FTT+tcX~{Ycr9abHqfahYB!(!Q+JZM)zQ_RqTZ4X|Rq?Ou zh&GC3H~M%-&`clyn8gVmnGTw@uA#+9e_H6}TGG%*YUR z>dbJDUawRE`OWk<{m-nY#y(8#AA{5Yolura6`e+ZYofQo;R}KWCWOE(dRgS?-~ba) za1D2YEta&1^&p@Iz6BrSU&9`M(V#-;i>I3;5y~8*&ZsCAR3xBQk+CTk6)_Kk2V6i` z6Ggm1M815yz_08j4le4a*QsqtFl_QmH2166k|C=EmwCAAevpK-L)?oidUC)AD+y>sQTUH z@~Xa`9|Xwp5qx(2vE7!YhVGM-6EVeqtx|J^zgTodIP6Du{{*go*Pd})CR4$QwAG;D=;T2FImr^sY?##I!NP_NCiSlRywoY1=CGfjygA5EC6y8yInQ}I4J?vIr-@Wd}}=$Fg!8M77#ft#Xz}n0HH7Qgdt74c z2+-)i*{VnuD!P-81G6)bWUzwZmbh{0w_>an(#rH_&-9BlrvLsZ(}D$pR8N#AOgEMZ z6w74t4bAMt9ClkowmzIpsp3in`G|HLo(L&Yd{TZ$`#zw)R!spvi#syXovY;uhI)w1 z6MBq}_+3#a$=_!dq>g3D$1x%}`iB{3b65p!`=?&)<=Zl5AZ}k*NO&I^`+A4rK?wUi zFc+JQr|o}NT(8g2sS2f*$jOrtZ>_ex{0_t284R}6XzhWt&pb|lEq>1y=<&ei(QN&k&oE zYEHiZV-7e+T$^JzN_?ss9Lz~?15&yOF6-c`fgK`#;Rd$!@gTzkX%@76`O;}=xtlXq zF^=E6U8#OLIRXiesj*A1INE_|SYsUncOkTFimW9Vq~0!1s#wjIO&GMV__XchIPuo{ zkQb-)?iC_FGOmNsXO8g#t zfQH}Mdj1@Bm1A2ZYV&T4DU(mB{+TiURE{m0NYp>oagV0UiUgtfI}$Wk$CuLRNwUsx zs=fSAscu7^^j9#)7Zs@wfgA1HdR^R9(Zrf@Cs zHBAY%ri5~PT>y$X>6hmxobl%32R~}PbLAn*)-hgEEJ}&U2SOR!vJF24AH}r0frC4} zg1Z8xE!a(EA3qntoCXV@;&&I9`&djWb;P!9TJNTesO0k%TJSfE!naPoswhJ>;@>4Z z|NR(~f>f@Z{JVjXXg6JAP4)0@)5`u5pL)e8+-~+Yn*qIP}1{-T7W6zqM)}G?;}~ zucJ@L2_IU$GV5?2a+CS}IBA^G)-+tH6E#X5uuF_eAyX8$#t4GLe&7=X{}fZRpP)?T zJLrEy6V_vM!D?Yv#OHk(22pJlj=1xIEx)jwSN7ZEZpZyL*QXIt|2~SDWv(7!_|9of zb3IXrxc`|u_Oto6m&EzwNHRE!oc~h}XKx~tjxbB?arp{YFqwx2hvd@e!p0f8r7ERk zD4+O@+>?#9sStGW47$4MWK`v|0(gXID0F7YjP0ws0}PB&U+xOaXednX|HMo){vFfn zx^AQ*eIX=c8_dIaizPx6dWmmiQWue2&!>hAW^ie-r-9_FWZqr})k4s8`yEtRvK*y5 zAqA{G^(x9saO?OmuQ@;>RJY>1Uh2T)-s<3lnc2Ay_2(w~V2sn=JSt?L*Q0b`j z7T|;c{Ka~*|Hk(cN6y-6vff&dR|}w^hFs}S5RJDZMmhBo_1`kSEcmmG&Kbjv{V-I9 z14Ew>?WWNX1CJB`Qw+M>y{I*f7n>~)tcP+f!KR^As#@LF=Feel=Sr~hg&ihQZSLzt zV0im8kBB#Ae+AKpdc)?@^%KX8s+6WG&KHsV3c)|JEHdAbq13%1#*ijkmHETYaOuoj zgd3q4TcaGB|B=(28|~*)i}RslV|}dK=R&E&JI0AqroHtN?gAAhvx*p7)_u4szvlzi zu5sH)`iMZ$rS`Xw5qKQ#^{Khm+J^rH@)i30m=XezM?Z-RQwa53LeR|%CRy@^2*atd zV(f^X_&^rt)q1oMX5j5hE5reM2Z`rmb?<}7wt9%0io>K7X2fQ<* zkm2qI2Tmpp(nX_~ktBlYYzkm%_e`RDewVeynme`?XwWk;=)ys9EqPKp&CG=zTIpOI zY^vv;O@(|G1qS3kRqOcrxj6vD=PN$P4uv0ExbKbYRimg}V$%y~P z!*6e@mU$8SL;E)-_m4OAue=+`RgmwfmP$|kAKc>KVe)k9pEU&9iSaU60}j^4kS4FG znbtd@CRk_R!)VC6@9TB1-c9cPGMq?AkZ*r~jl>vE~NcitE zamP^NILlaHUz)8K&?>dHwPnKDj6}aFaizdnTY(Bz~7Io9|- z_m`-LwDfDY1es8BRQ=w{J&H%=VS16T%JmgSs@;4l%81??2m9#`hpZWo87X&7lP~}x z0d|i_R+~NT^NxDnDk#g8h*y?Vfl??h%f{IJinYl%_>&o;>DMcn6$|5o#Ue>LG6q+F z34_mCj#ruDQ#7u=U7L`V%Nlb^YiXI2lN$ucRH37DOieN03sz!fWIzJMJu@(Hz}p`LEr0 zt>XUO3badw_w%L|#|&r`0AgZSRecTz8h14NB21V4#j_hH}0gNklLueQvcL zN5Td3Bg|VZQVC6m3I<9qZmDjEZ2g)!u&$Onrz0h2Vk${h=zd<_tn&5v>0AAmmI~UG zqmIZ>p>)1vvF7KRir|8yqi@9f2K@A6pV<@eMpWg`&PTDHP%z2dBVC#BBi zJz<05MQD^}k}uJ7ebpB@JMKO*z>Tb-Cq6qTh1qJk_xHetV)S5^9e)M;ke?wHS>kN*`K;|qq@CarQWcI{a%yL z6~Wxavfyd<_0CfmIh5N6o;_Ae^fHoZj55zA8h9}HWa6}#g?edx%xQ1$Y3HZ;W?S5? z+@24y__wJQhf>(;Unf_v-hY(Hiamxh(taMr=!fQjNI0LvVsbivz3NhZ_0-H6J4Fvm zhO{s&`2KxEqR|9s7=SlFavq*$C zL^AaBn5{sq$CI(iX{fc`;*!^mBwaoCxhGA^YKdE8pTa0PU~q&%_lfV83+Ig}?Vq$+ z_D$*qd1x+9|8|5nraOmL_F3spuf_L+*3|s>ylOa+JEG)&JEF*2sHF3uel*=tIT4_D zIHC^$2MwippEV+XqEKYq)~L3YwRlH_4PV8A{Om(2ea4{aQM!hun##spIImRwPi^+b zbH4Mz-T<8= zD8*xzSGwhCC1{ytA$BX8y?PM>A2tXkU+iQ}ZwfrEGG3||G+uf*~mtbDp ztsZc%MUQiI%ky1){P0n0+fEl2vN}E?aNZmQ3Hk!+B$aXZd`4zw#iFP}yhHKJTjK@t zR+bWecB{X~8pRtRQq(#_t-LOnZAR@1|%C z)^PiwHAuYSZM%^8jiSR!bi1g&)BX4LuY}VU3YY;FYYI=zzNjCie9BRoJu^FNWortx z}$75GNE-;(SyVjaCak>iotNaT)Qy=~MYMKTnV z7*4;}aW6G$;Jk(l|r*{HX; zLC$`q-kfwjm->;A2pQ^iJf=qIP)b8iUh9;)Noczl2JEJ1V zHK-^LA3chiJA_OqNS8R>+@v&QDpAhve%=9{?`UTq*3TS|AN5Pm5l*pmT`G?RQl`z% zif#PZZwp4*Xn6oW4T!q{GT@n>-rKQVA#dk5QPmHBZ9-K%$=uyxVW^uQi4&#$oM^>$ z?~`(rYJyG16Q(xR4Euvw;jaU4DDoxI5HjCv z*f>BplOCOp@ak&4$C;9UXTbCcceD(8U98r%^BY?8I6Ta5SMIRKplJc5o0s?1LJ_qk z!ew$+mG|X#_`KfzKj%NL=Mje+LFdsvl!(68&I=m91F@Ck_h;Wgr<$n+?tVR9_Xj4qGzOF)Yl?IUBY+l zWgrt96;?JpKkmNIGr}^|Z0Ptg_6?(AC;b%_Tm%IACizrSUeqg5BA`OgdH1g@`zbx| zLJHBqy&}U;JlN86rDMCKWQvWJq_@LiEdLU{i@Qq=1x3QlMI?XLM!jmn*7KJF1Cxlp zBKG5gR9T`sME5hQmD2jT8CC!M%68h1)6MRt5ejBP`^BfApkq?Wum8euy5}P&+CxQ@ zd|dS|NpiXpS3FYn@ADG|ZM)019Y<+gZp(3F3T0EBUNpeWZnLE;`jU!SY5rG8GUZQ; zK!dINahA5c+@$@F-B$vB%U0-x59R`|4E|;1&R5?R4KvMR>_O{@AYsaklF7O)+!7?q zv*yDW;V~vtG>3%~6}_DWhAkG*%_VOkC&c>6rn@7}ur4k?oyN^1R^j#~C< zny>Ph*0;3Z>sOAxsNV^o8LWvch=gwwDVHuUGoL5WSeu!lurU!b=yb))Q?mSM5P*;c z?M`I*rXK(o$}4Vsx6~{Ghg>$Rxr%Zlqp8DiM+4U{%;F2|C z>i6%(G%c8p@Hf98iGgfh(uwbN=9RZtn!a!li-B*kcZ}KSKxmm1CNbOF~?TbMI z4@fS&RHfq2r;{dB@Sy|7-Om6kdD_nU&ebY)KGg$GQr)j~V%Fp5?%33fU|(yUSspkQ zJP3|ZyXbzt4GuL@I;2tUpCl<$T^0@}$003yais6;51Ha8OApt0DjcR^77pS$Xu(D5 ztUEun)LfRo2`VOs0^tPQD&ww80#%&S*tZqVLg}IlrVCQe8pX-Tbo*}?{cJg|`iKXu z?sCU|>EJiS3-?=<0a*=n+KIAOf-ZOrK}IWupHmR|UmV^K7W z>TT03%;}oM@Sfx~7d3hn$_Tv=Zx<$9+-@%^#c#@CjSYt?_LZf~E%!t%`2Rtrc|MoV zFd2VShSt0Y7lZKbW1(Z=6R&oI_34RaFL8k7r?AQEf*7G ztGq)X)bogoi%07CAvW)_RRkQs1L(!ivxtHoXM8p_9RGKwo8BRy!Vkp{H$5rvpPOh#;FjD-fZv} zSF6@rM21K-h^nu5=wS6G79k3^KiA>JFh=3^WXky(>Te3{V+p?Qbcq}CU*@&9chLL_ zHQooTr*FEux=;kT`9)r>cqH;fycUFi3n@L*M2@bA18FTMRjVs`n#QT_I!G3@`m0K;YDJ@wmC7D1AIR4C`qpV5R7gJRD( zpqv&!hZeu^vA(|d*DrFIq-=VEEuy)(*^glAN?&bM@Xu3zmuCH5T&&atuXl@)mH z+8-mmc9X&1zI_WO=O_kWNtz-H75UyTTZ@z<-?4*HYj^il5WvAK5^w2tdFG)!MyZDd zt^?R^R7-i^MUJ~DLxHl&Cj*c|2 z92ga4AhzrC$l>tp_lh_|UgB)z=Ic7wg%cH;IW;F~MoO^@yb|Oj7?_>rs*^eZxOJ)$&Oty`$flj%WfS-%f)=A(1CsCPn7+pLR_pIvlKg#u+Q~ohzKD zACKlbJqrUjE@kl!ukO2_d05)AiIEV%-Pj7;MihdM+(DPZ6b1$roSkBQ>YMJueAz07 z6Dkhmra~uwP=D{1uirDzEO~S?+@R$__1$`Ng68r2k8@7(|Ju1lS0~|`3}{lzXLTZn zpSK5h273K;(81=rAUjWwi?SDf~L+hb=O)@Y2ki6xOVtzS`op8jy& z=#GWnveN*m4%#!O=yB{&aMJV8m4{7#@ zlQZY`5El^msrC9yMwp3rKmh}$%2pN@Xv3%`RU0j+DCq?2Ub>3}Ny$?kUGL_C)gU1W z>pJ6s(ceLnE1v3Nr1zz;uuw*W&s&V(+mzc%)6N$%W3fZb!NEZoYnt^7fZ6rULP01a z3SZ+zuV)pGopZ`%KHI}SgK>THKGF#f7i12XHDeGCaks;?F{HC#e`RQYQVTNo6CZLh zO%N`W7Rk9Z4NGRfY*Y0Y@3^;mgwT>EcH{)Eh^J>f1q+eAlT$6w4%SC`V9svudG#7*Z24EOMHC4_gvb-04edi$Ffkihm#WFX*50!- zVN=o?U{JNr$l0j?(qnJw32gI106GFe^mBs)0BmT^ClT;PSi>d(CLsMvv@#-kRqo;_ zht~k^>r+UBl&NmxPj#g~i}skZBnpupA?g^_k&?eVe*a?mfEv${VlaR8yCzmCCway& zliNzTuCdW)>2xKk@WvRH_i8`l;|!&{*oO!0-+t~v)9?w^)fSeCDOdy<{O%%aM*q3P zF4lBZX@)_E7J~M;XYqHP)VGJ=)#BFS`d(o@_5Ts|m0?wN(bhCbgOrGrGzSDkO1itd zyHll0x_=FKuPveB|0OXGTgZeWot>)LB&+JVl zkC4O7sAKD&l^e1waT>gtg=5;Cjyq8rko9bJ93Q1a3r$zY!*CYGdnh zAcuv*>O+bhykQiODMs5jQDCt!Mp3O2)|7AcURF%@+c{E+%DL5vz;m!@Q00zHgmX+l z$&9R0n=|e1~Z8`=6aB-uW&&d*BDBST2w>a&tIhDHQW0 z*@&EAt9_XM-Y15kk9T62sxBGN@Oc!pdF_YEbOWXwWhRct8?kqXN+O(QUYi>-VANQs zf8+tughV~Cl{Lud@&2kGFtX_$wI5n6@Vt6)HbP#UzvPT(-gJfXPFLxfG9#0=jI)MU zkl1iq3Sl_LUQNUso5|^xu8Z~yA?HQi&Qk%qlTP*IZoE-&=Yf@5z@Yy2=F;uK8wWCQ ze9!mHw)=R*Sz9>}I(Oeqd((N=X{>}^cv`Tdd#YD_2@ zWCYV$NcBU~9CQu%5lZJ#rERbb4UK*_kgC91zkVBG)tOsdUT@GbmO|wO#vH-cd+O_p zLmN-4EHIy;h9|MkwB$(`$3`4)mGsuoaN*l_Durw!A)!R^T(vkRHcjFZMxKOXnHx@2 zb`M=819YNDmFWXfOsvQ$wu?zy*Yp($Y*n3ICo09{+?Bw*~+-iH$q? z-K7WgXh7e#j;uIl{#uoYzz^O)_ryD>OO4u|*A3^7^h&N}kS-|5;J^T@l7ZIrbwt1z zU-cPPH>_e|e&uRwqHQN8kb_q+Z`FOs^_sQ*- zXFe8u5mysUje+F2aA0KlS2)a8H*x8s4~L)Hxj)t1b8b(0MlW8;^OMaXpdJG!`U3}0 z-G0Raej!^wWT-Z00`~D+JV(LQmeuzxeu*~Yt-iRYz}Msk;HC3ob61d10#3gtMJQb( zMSaFuG6CVUvq*38e8MD@B(l&+Q7-CQ^Nb%!gj$?*GYpHEcZc`B_C855q%X#u8#5N# z(*1jp?X0(ohJaAL&Owj&7PwzxRgx5_F~tF%#TQTRq0z@kX?}&0@`40xhA)fIlBYwG zz!=LdATwi9ER#h+9<4EhiXA|=P%i^StC)cM=XnG!AxlidAeXWolI&Pp=F08kx^14* zzhZh}pm8JzjUz6wU$;~e5AAq+TrVimiU{5L@1kx;1kuG)2UABs%u$hLgvV48Dba|Q z5VtLi{K~zpG_D4a@T{DedBC|;tzDQ6CFum{ zesI=e{@{|vjKb7VpNH4DBZQL=HcO3N0z5X*(5D*rH?KjT$m{a~jkF5vxQe1A~#@dfm)(S)c0 zLp4F&Av)Fz{!s!b=wSc5I#>sR~@O7G}A}zc5O*QU!`KEjb zP-P;S_}%dFlQz<0>9Y=(HywD4$++7)$+d{KT&kY&5S*p-K zp}-xn_~bw8mTcv1q;x@-=cu9C&X}8cszv$ZIz}CaEfT%2ZqE!b^`8M(kvNu8(}EOB zx_MQslk*Sz9?c=|{MkOX*yKo_2J27`qNw3IU<50&#lETUrpNG4_<1DdYa_(e*>}Ry zxPM|3cz&;18GjO`;urkmhZ``-mMCX~y%zp{7cGpO*fHXHJ;TH7psRbB%mSv$eM@Hg zH-9PS$0iM4fdw{E7<#&2&EX&wWC!RpUb?n9q=Rb-)zj@9V?ED zMCD>E!w4E0UvEgxwSYpy@bo7~z@DYghEJuwb3i`fR3_@dL z`y(%pWj;rg^qyYdy-nbJP5bh>z>3`Uxy{9vM4w2&@|P{;5)H3qq(x;s-wozgV=TGE z&KiZqmOyl!bfLm7T>QONUgLIcoB(t&;c{=&g?7}T6HB*oTka(Ih&A>w;lA}Y-&OmI z^N2ToLomrce%*l&#bq~+&In;n)JA`Wtas$;n~ZgiH>I+Vl2xT ziQ#iMLHKZw_n!ZwrVYD(Wt!?ix%Kmr!_V~ruP@4Fz6Gn1oBKwy#C3ByVTWJT*0*9V z_@G@K+uIt7+tQZjxnY2^?|OgdKbwl42K~nPS5mO)8CY-lek$<&6cxxPDI}M%j0n&b z8tn!WsF!f+uAt&^-k#oxF5z4e)sAvW$kLJ#QCPp2(gcx7z+d{bw6rn%hC-bDncci4 zXA5p}xv2v#MKO&FmTnGv@5U3G#4qjf8~sn8A=C0IXhkh756#$4QbS zS%4du(W4KRt-a6hZuHy*n%P!P2=S@lX;m#h*(Q-vt0X}C8(=gem1aeTa`Ce7vK9p+zTlbqyllxaU`6+D1B@@hj zYbeD|L0@qCZ1ehN8TB_1citP9t6qamksNipt&+1YRD| z0LctM8#j<6U%%j_SfVi(76o(A(b1^|QzgK@h$2QEGs`Y86_qcmJOnm0#c)`}t~CW* z8zB6m)LXeIk9Ux6_+0n=QFaZbCCt@@=aZbuOKREQa+Wmh|^)iP0~ zuUVPG4|MXnLc{y2X~Bbg{W@Ml7uhuV+u$-ymowAx7pH!~2*qGwmI|jfz{==DvTe9W z3y$&dKEj_6d5v7}obFRWU>>v($fm`Xpp!#_yMcY_!J?M2A^x|{{TBRrq!LoxF=jvh;{F0ink zKI-pPb)Xi@2QFW&V-Ualx@^AF@9HyWxQfV^81PS&{qzt3Um)XGn3j`i0w6al|MG9I zhflY_U`VFQhIq<<4I&72zvezkfS>qEsZAzvVt04C@)7kKhf_D!>4nZYhI79tch3=y zxXjQ0`23mb5=0zRBsST#~6kw)|nqR+LloZ+i#=zx4#S6*}wa>FQTtZ||C(_Ah%^ zK1iRqFkq?9nuAPTvJ;cv*>ZS8(bCcaB+Nd*0w&QVevaDE6&88pw-!)2hsa#_?zpzD zPUCf&5}rfSq!0}14#v0TEGM|7DBu{~_+t37PbJN;Hc1sPt3yODKPM~V+m9X!r)``R zj%8)5w)hD>`q>)lw7@h(II;cb=L=gyLkmiU-f9 zE;mVHVPgLulV8lpy#8LH9RMQ>+zt3g!@Fs$>z-KGeavE@N`TKUE%n-RBOyF_Ni0Q> z;a1C9E9V`*p-WPxR)F@Mzj&gSt|69lTZvww*O4b#G8uxb8LLHvI`6dRuU$}=L?=c8 z&ls^TVLIm$i+lNv18jvoF)xNF01!L~-`RclneLQbizTt>ZO|T#WbAfuIOUm(O zrJlNz7U~t3gjUU`g)_Rw>W!vOvhHPS=$s@sH#a-(L$yRWT5b_pH@QDsDZS+ixEK*J zzdsbYC%xHkTIoA5#lupFaaH0RiOiQQnGn+@&_hZjQWx&HJFB+f`nbB><_qhOCZ|zt zXI`t3Kc&X7*ZP~HXP;T@cMBGlJWOKOz+kj>_9YW#f7Gq@!okbeuzUs=BMV1AHF`ld zJu~Bw-PccukgML(M4woc&&uLM`!r&noaBA110h>D+eZWrm!VJcNWMu8rY;;G67Yt2 z{f~P|9ioslYj~P4bR!7$^mFu?tAG6Qp*<283#Ey4Au_r9ZrphzekeCe ztJ>5^_fgi}P(otETA8A==C1j=fO!!g+#S_dR&CQ`F ztXSuf8DSI}Vtj~l$@7*EWo}~NLj^y@cIH-AQhmYMaJ*BqpXzLmMQ5E5RoL;w00iSPg16?ET2Sold0%7w0 zj!~q~VdVzRr@WjD#QhwTh0{#^7!|pv0D2BaFapSy03#t74AM>ldS@DGR#8mRmaqJB zu)@@|N=paCljz0+5JaW@Kmy0w>8J?Ym9Gb&Rq)wZjdeIJ^pDQ=X;$XCkgSbeKC$3> zovwe!bLyIaq=%N-^o7Nf@C)DFt#uCx@wY_O)k01vfgY5_JM%F5kV?f;D|peb4Whu| zu$+^o>3o(!Wb?DZ{v{smc70Ba=-wn2)7cGQwIy4o+rl>xlwtL8Z~YZz0w)E?2So&@2n5t^%IKG z6DJ?Y4d@#fBx6FqK1-q|gTJh#lcQr+d*1(Bc<4J%05rJdR{3weq@@b&iyRj!CRqW+ zk3yIwGzKz>y5IS|EHLj|r_@i(CVC^FktTGs<;IIyjBACbvmDq*H;!AG;o*H7K@2c* z@{&%fo3)j$^ZS#IZy`Y)KG#k+-(3RHdzpQzZS)ud9n;g(6Rkcfa?CC)fGDF~hX!%> zDGm8vG3bgaeG71%^HB_bqhDyWTHaY+rUWg_Q5QND7+PQa>i+PG5kjY^hq(Uuw7one zC4YLmssSOgS~70&P)fo&!7FF6#-}t9O{R;YQ?`$1Oe9%(O=BEQ6&P#V@q^5ul7s@D z7_jNl;=gyn*79M)Zl22aX+nq@#Y&KZmgF{nTniIsN?bj5s_e_Y_v?;@$|Els7BHSz)VN&I> zDQTnAP-rl>Qf*613@~`EgWPqdXe99X%^>Rt6uEq+B%|K%$e=zz??R|QJi;;YI}RJJ zcQ+#4_juZV2>Q`Hmb#6oX^`V$-)nCFJaR&Lg$n(IVxm{9WFoQG#XHBs&Tf15kZ~JD zREVqcEv%$b#^?6k>N^W@ij%XmIUfb6btZtr zmc3PuRT%LFeM7@qURhLK0W5>t7(4M znlF#)+L={RRv4dd!w9ovL!ka7tC~mQ9iM>mb_(8%@bH(Zb~U+^Xv8jcU&W8f=MBv&aZMDswY4 zL=dpuHC3+jWA_YSN)41OHV@j~55YH{9v(Gybs+VE6ld=iMKbdz*In9rpc} zNS7rg#FQJQD>T?7PWxfilPY^+f!{ZEL;AsLJ#=(Xy zp~&zUppsa)g``?&xlR=*J$Za8@C@ziq_ktRo9;~7J%NBtUJq7vX3QTH3zhQ=jh0*> z-fDLKvpGp@7g_gCD(g3!EUDFgx6|oY%{lZ_C)600%j}6oVdsKdDSqEIV{ORLU>qqZ z>HSPgFZ(#Md%#uY!1Clf%P#5$s#h9vRyPx-t`#D(xYEIyk7+m`Lk?r~WH3_~sEt1U zZh2bTl`r^MtPIwC3ja)altmF%?aE7KLvX>&rgO)ZcSBkSROOOe6>Db_3sE19csUU- z?fmnfgo2#Pa_Dpkc?f~lwT_@WW}OdvT5>qQvEKoI>sdF|I*3^mpA#l#_+KvokxRCH z%R{?C@zCjdNw!|D$9QeT@v0J`F8g1U{JyyMx|@FmUf7yzCa<)n`O;}>(RB0_P&X`G2LrcE3&mWuDyLaP!7ZoXQ~W8Ku@kj_%9W7uKLBae zhgwNV&~e?;0Uw0@1OVt#=l+j`;OwW>Y`jC7AoQ05T{pPc)gjFgvyTiJc0pnvvS}5} zxH=nfbi-o^h#eXP-x=&SfBhP}{Vw|03o?NoNzGtJo7(0fWu0Te3j$MJt-MjeU;Ddp z9^5!~Ni?%75f)@jU5T!0cFMIy{4Y9VD9kcV`La9fA-Yw_qi$+Pgl2@@PJbgqo?H^> zW$$PTCN^;^IRwbRDoO1x-~E~t>3=f7SmR_c|Cos}9m5o$4`T1K9HnlKqZ8I9`r6S` z3UBEI)Uqr^>;6-UE=YwV4kEy5fA-pM&lflq&c{@~)jKaY$>5AO{B3;e6fvgzl>H2cW0~&f z2ECr-KE#C{)Eaix^cro26n7|F$SVN7&>jxtCH+y;-SmoeOiWDHe!%;V%b}(t-oR7g zVB7HO#jkN&p93k4;N8pL5!m3QJ*015)1XM+a~59Btq?tYe*OKdn5{}%z@}XkfEC9 zW{j27PQ#~iWM;me=p6A3k6Gr_#R9ZxtBI(Je|11nCBQA;a9%2jFBeAtbESMy`mU<4gI=b+ey_;Uz?EFd}xVdYZnNGY`0zm(?iZ0R#yfzQf zf?!s>zs%9zvz(`ZY5hkKh2B@2*oQ=(q@PsN`JOJGlp-Fw<=V9UDQKM8$_|pP5U2&> zkEM}|*A0DSo2aCMT4#DfGVGX%Y&882O;gfpL}UpG2{99Z-#8hQ)Rx#t@0sbiQ?eeu zLtLROx;*ZD+m|!{fbzNFf;N;UWv3rZ+}`L7T}94>agH}v?+D> zVHmbvnw+^pbkR=1I|`W(-&#fWA`LRFR*Bc_zvSaMs=fJ{l{bvVmxio^CmJ%k#NSV0>fFLJ?nN+xPb2o201tC0Y5dx) zs;qoATMgZj!y(XoBSEMAt}40^&Lc;dBBe?o#@RPD)v)tge89P(B6Fwd&1iEp%uL+~CdZk`%dU|7y#JM@88i# zV*csyzSvq{92l~vIK_&D44LYyi0G~Im0pL(|Mli|=flFr5NVm&rNI^7+sDf}{{V_4 z`M+Nzw%2~sJ?{1Q^ozfJsak#~122w#s04;DwM8(s-@RIFzoqy_7iKZ%ij76`zBRH) z-cAo&>SL!V_I?^;U^8gJ5=$`De^e@r5Ny(;lSxoK!uxrk`tJ7$L~XAJQkUsNLVSTH z>B*5CbNOP$eND4hIovF_t^R$2@RjU`nb)2*BII3M*dQjv40IdCPKap8)qJQMaXUxR z?-So-Sm{;HMy1G2S?3ZqfIzcJ!RmJ^1L&GP$dk#4zuyA)lzWTB02Kb`S#3KlY0$Y` zl3Y2$7KO>}jt(b4BxKk}M{5$6df|Yw`*ZETx4#c4YbqvHjg9Oy-ZXp5*i6(h2Rur_ zQm0S)vPC>esso?M9U59&4K+&bo)!LX*Ypk!QSGTNvZHz32If;B5MxJQu?gketFRYH ziLaC%s}beZ!GZxlzPG<8yia3iYs;Pc01KZS%iM2M)u{yDX#|`We74{kd4LA1x1&up z>2DTwf9Fl@n-)z4+r8$9M#_?q6)Fz;VM_hlN9~o+ZSLFe1Sn$r5k~alAYXM?M`J0C znNY%xMSv8#1b`sdPmB}nFKV5lXsa9(z9f~n`BTslO=-KZky%iFwGkjFUFc#yO;0Dz3{d z9?uLn5+afG_w-bOeEOJ5y8vbWTA^N2_6YEAAY?oE@EX=%E?1$sF8E~Fz8dlD7YZn3 z4Q{+8Bk%$}r-jK;B+>FIsP}uVPjYEiz&5!4El=Jm(qe5cZsJD$UA}#v@2iX6iE!ZN z36doX2bWjiyu|p}n5`(FXyV>>DpdO?xBZ#tt-b#1PYLJjTljRjtwNQ1Ju)NJP`A;^ z$;L4hI>L{w0djVShLQ@0tzVYuCyk~QA51yR6Nwd)Fw=X7t3NtByapkPAO{$r9$h2juJpRq&PFI^p@6WuzyxcI`o(ZMaP*)e4qJNSr&H~SRo5BnN z2*BhsVDq{Gp(o|QGN3(ESiqL@P#`M`A^b)jg2aO<&(|z?say& z=GVj9o9>-O(bQ^Izg9h(@2T7^s|1?rXFZ=AW`N7&^PP!x@{OnaLtwGg`%|Xlam`Qq(UA8D8QIRY|$7||& zkI^xWX;IUKwbUdxJL{cvwT#Q`GA{=b0>XJ${2qVyyJ807PEF0%SODbm7o5yEK6Wu{ zaKv;SG!oErHc|<9hD0pPE_+7~SR%Dpn7LWtgs5^efFs;xif-H#_u9lSo{Mw&Za~Rz+s`>S| z6rodL=Z57Xo41C4T${5LupH?k%U+KoYI6nfPIG-y24VFu!J}NkUm( zF`w)-{s<7jjA%&Fdf_-Z_h^byk=NSQE?Mn%^WBdU_Jl@-HhjgC4Gj#wEdY9@iKHH0 z>~z|9aDzA7{wtbU$NPtO!ZGmY?d|RHo+|-Z6Wc`BA&8BX&Kuva57)p73a_(X(wcx< z^6@z$)N1rWh4CIT=aqK0M@YA_aJPrf2nIO@y8+&x5*ip70Ez*=ZcCMXjGeZX&&1{E zd=PzEMn|G`m{;nTFd>=ri$N2!K>rDDh|@w+^H_b8d?XlK3d;5S%9xZ~%q(4y$OJ7r zQTI3D=E3Mb5|wI^Pswj{%eLhz_kpluGTEdCH5TMV@4j2o=O&@lTGxXFRXl3+N46?m;o{!z9>ut3oCVATlkG!jp7fA8sqjvDptFJHS z8$qGN_=l~?j(%O-3HzSS522@O00gJ?II&=D!)@6hb7*hzeVkucqD zfBscPRYezvk|N_{pr4rXk(*g%4%vApqO4+uHP8oW8nB~#IxTt~^8@+KYl$+yGVQItyDlw~beKH2>QRA-eGpd_xbOe?2!XrcLEmFY&P3OyZ$S94X%5vP3F0jG zF?64XMsIcwMN3X^WS0&g(zEEMg;8Sw;gaK{qCF`|#NQOBVWG|)oYKeQ?!%Jt2-KfF zGlU40h;`_@q|`u^&6n)@XYm`<@f(lRE1|hNFckwwccQKirrft%HU6ID>iTK)VE3NB zo^fXM7eLEQL_E+k2?W*c$86_2PglMLUS=O2eZJX)UvA%DxE%c``E1(yI?OJ!xv@PM z5X@^4RO=EGk_)F}hc8SY(D}>^>M?SJT{L8({v^21EtG5Mc=}odTphEO#lM}J)H$8R zezv|@CT3OAAS*^3;xKDr7le!H4hscZGZ*J*rD~tSD2vX^!t{3>It`@?;hkBEs_BK? zN`Uv;TSOIACdP}9;3rlLZRc@!!pfHumJV+%Zp|!alYJ+*V`wCVeWEI@PcMh`pdvqo zyTvt^3Tyl15Q&Yv$-VML>}TF9!2GBg>`SKU5Ntn}3zy33ayNS7AWaG)va<$9=QI=S z{wBy<+Oe4I|MDOZwSSeZVsE%;Cu^rh1Xg?2F(qC93h`WC?>N8me1U5)^S>;{+zlSdJt>v&iA@IKLuwcqQZ^6FX-AOQu4nt%`k~;>!hajiJ z{qZoD+0kEayUgPLK_rmWE(*?uZmO=}N- z(XlP09re2aUr*o#dlEU;aKht6U4fP8e0=z7=-N0$On?&1AkYrH-8z3;z z$m@7y_&IdPUoBP|^B{|3Iwq#^yvb}Kzp{MG`}aFZn+gtWt2}a5opUma@t4f0t2?jU zqfPufp71g}WyE`yI>7+@F4~K2QWO7eefGpzH)j3M^gm z8?s?lOC)Z(mM@O{@5h1}wi6rn=Nrowy7|+yMQQ-4`C<;qPyxd7E%SAVuH^587xtnj@uJU+ZRrK%zwN@=s6* zw`(W}^tgZ4&7bh$s<7FTpc2>)p4VKm_30|9X{TD{DqodiRD8kJTB0kJOiz(iXF9E@ zkY#W9LY#&=dM4HGT!OxG0o=uqq2P|O;0?aWd|8jjtV4u=Yr#O0b4*~dhZ$Xr-HMMg zx5q>pPskXMpbz-G<(K?D@D-e|d?s-sDbaF+=ZW=!IhyuC0^hp@J5`=4nOAzmQQ6YjAoRHn8@Uy|t0LUQg}Y?w_$Ww1BHF_$8D^Amw8fYa}}|M8OaPTv{Y1 zP}(1~dGl^+n+Lx693yW+bzaH!URyEfW4?I7mfukyO09@HBAd;+gw1`QZ6m7wjH)y2 z@C%s~jkR9TCmmjVC1gqI;M5{3L5e-BqK_4*?|!K2v3i~PJlRU3<~6`dxAHDsuORH! zE)RnY*`K3Ku__!}$#il2Qew=c`#fp;3R(LMeaNkbFpJm}e=EI{-0J%@x4d8qAVD8 z6j;GS3i|9&-($hSapXHQS}E_Gq0Jbp-UeK|aI@9B@5l(j{V7&a!7fD3{j4~(kY&eVnEy;G{139G0Wl_>I4==~&fq`2-!1eI( z7z0)oR8tnUg3B5iv59K^-?I}hgE+&vl|VKhN49cpb91CAm;Zb>06ePyU?P3rQj2Hp zmoHI2WSQdHcOU3>CmF@;1oVUsUXZr`3Du}`G1C+lZOel>?KqPvWlqbgLj);`QVoD_ zu!u)LRnH@`x013%&tD7rYTPgw=;o%@I8u~Rt?%CUoDd6$r9ipRjw{%>;`#<{`Vw2n39 zeO2?w7|``2GK(Lf4Vn`N<~PS`P{SaR%iNe<{OQYT?)vQz1?+Mnj0UMHiex|}%u11= z90}n)hl{EIRWQh=6kHHf*L+gwK12Z!z92epG2j68!36XV_cQ$i1%w;fp37ZuAmh1`n1VoJFhV=CYgRiU0o1hb zA@GH##`INX^tm`;AP+v{Gpms8&;}rvCoV5G-G!svA#m zqiz}UpyrC#7pva@iHUafEnQg+Q*+~UNAet5-rqj?z0Udsi^0fXx)#U|bpt3mI@Qmy zC0Z{|FVtGEalf)XsCLb@wc)9$#Mqvmtm4dlzkG4i{HPS}2n|=zSx%N>E0K0kHD$!K z(x)o)2A8EOqW1Je;o;_^*xh5j#^mIr*#Esj!TX!j2SpF9#rH@MZ=*{%n7Y%EFMP{8 z!6*^+SHQ3}EusZBL;v&F)#o}w4fe^1EIeFF8iYFCt_Zom619lu&d%I_ddEYCEa|i; z;NzYP_6=Yk9Fp=acj0stV;@8ujmY%E>cjnPEzzyYBJnW*AR+}J-{J7GX!8rLK$ zSh~G=2|ma8t-P7tF77Ai@aKC6&NQQMV}bN~QeM6KWnl(r&+@Lr`S@mJ0P??24GVBu z8POm|=r&!w@p3@)*U>my$C`0QIZriD)a<;nk2#uiQ96lAhB9OH5C!UsM;r(adTJwMjUmNbc*-fu$|4g{~r4Kl2@cG)MkO_Dzh%aLc?yA)fZ;eLO7S3l0mi{-Tq zz@^(Q`FSI6YUiEz26F9E$!j#0s0Q*!2;?>rIa|Q$*nHhf`rvOff<+y~JSfKFD}e9>)(jqJM+~hA?ofJ~r&#L-(eCwE{(0-a zzC`{Q#FUE$+NT#EfUdTGg@I~87Fxm+({tiK+Iw=s6|lcaiVx?sw)i1G?d}M48DL+T z!(khJ>s{cKds#j~iJm%UQYbhx6b;tXUOybW{e`C5hPIHnGxxbGUEuH8mUtkK6k=6G zZi&*Y9stJ9%Hahk`)D;RlSt{r)F%f$m*`nxt2bKN2A^xiAf>9_qv*orx$-$OnjzY< zae?^f1tsIOm0wMxG(%`hoGm?wCy%!psoc(h{`c@ZIW;`1{+@JKom6zdm_+9V)X0rZ$FPT*`$>wRbR) zvlV_(%`e~6k`MM;%$?;PJvCiuj1_o3dXlW$ktwk-4AZJ)wMQ4wOY!ov0O-1E9rzhf z)_X7f{r(&S&)kul%Y)&8`F{?yC6^dJN`JX7^8`na=9fdPSBIhB)e?|sk<3{PTRkYD zRPHM3kMS}oRrGl`I|;XexJbLwa5BT=pKnIC4vcQI%gf;aje<&0WzrFET#epGMzJ87 zw&jYomfbKxVV6Wbf(fX0odJH(qDIHgrKmwvJ~d1_`kvNT_vcd%mm(?p)OU6}!HdM;i%1XBvGTDek3! zHM_jjmD=!1?3-FXWb4^%|H^{nkS`HoB(Aku7BIa0G#$;V6lL=$aB}gf#k*d#6Wz+$ z;8Q;a0yrz+0!T6bdp1>HUF#^!-HM$(;&7TlSg1|*vV}L1?I1}8`k{fgkhDT&E2(9Z zdJU!7Q(K|n+&5*)P>s#lN3D(J)!M$ z-{#Z5HndwL6ksSVFpz3@SLYbGW}6w1HSz~04=joL0x7@*`8r?t2A`JN;*FPJbjLYN zJkGBmt+DeaOKX75-&n{-#gzmBA6l{dwI8N9?RbhgoyV z;JN_PXk$~;G5An>+#vZdY~+WL6X&I`AaT(PF=xw+n;e9u&o;8DKcijyF>-?43Q;S3 zG6<3B+B!#EXf(^9jo=Z_FYOM`$`rPL{cJ`GKRhE05g6{NN2{SE&l$X8tM09;b~;W3+RqK53-M;?_ucX zM8KIoo1_}b%wx8ci}Q2JE$at-i1YxSn|oxF3e{P5p%Vp{2niuj54Bf(iOT9YQ)uY+ z>Ffm6?l6{8lo*x`j)W-)ec!Uh>o zL?#IMYe5Sy&M%6ujKK6|mhuxPM+^-cln%uz6SRi8ZzxsI{?7}5YCp-JelDs%8Bc=P|%_;qde+)5c#;mT2r)&Yyo)|ke6QN4Y(&420D zkl;_gH9Cu&_*;5qz1=qPUDx%y*+SzH_iIW7TZf?VKGfj<&TZ9hG#W;#3=AR#A(3*M z8|L$-=|IVxs80K2sG%Dtv7f3% zb=Y=cY1)!8PO6btD4S-7hG5EVW$d4jon!;%YF>&vE%c=p^+I2#+0NO$T%)n9SPoD7 zn98MV)r=(C#g93hjML*apMgS=Obv#(sW;`+Xq6Zd5GLNP&NbFQUTpEi1AfQf=Qw{z zTD&SyLl;^HQu^$inW5_zh6fMpUuaEYuT<0FJxiOr*?Tquic^g5E{sd3`GpPzi;AHU4_#ypb&6jRWn zc9BVxz*lvQ8kk<|5XEb$8JoV+;#K0(tM|~yuPv~eL_WtsC~8(;Mf;T^+j{VoJz9PC z0fkZcI)m*mDvdZx z2u5*~l(*V>@LgCx6(ysXS)UCLW7H#dQk-#u+w90YU?=(a-Wi>%rCBy?{|`m!=Q<_U zt^(^l=nvza6aFpPq@NX^ia~Y7{fD}e)^9(z4NWniX1(R0sQ507HECy{)vGR40MC;% z{v@gGqxm#6E2n&7p4-Yvj|BW$fqBM}x3X7BPFzL~gW?SfKej}VnmU0xttex%&;+-d z_@$d2OUpEW^izZ(C>(#NVsefTH__^e;Ap28mv|CH3)Pl}tgdtR7`iNXopIB0iaozW z#<`&h-^$-$N;v8w!m0C6{8je2FVEPbfr%i46_(-$iMfQdOlL?q1uBLG|NkCF{iip3 zU||d-J=#$(tp-PdaG_4Lfe0X_@yv_5CJ0t5ZMuwD11^QMZ5c?Hgcg1*M*JRCW63l` zAw{#^3vpPU)>cx%?=g<$972gwN@>lLxknYP*7lnp=rJk9mmDG^}}w zuK7j4x!l*18cs(Te$2n(C~V)~|5Kn%B>xrR}4X zO{1Fd+Q0Gdv$HQ(U)6{uSWdC0B6|JRjOfP0p1S`XfAC_g{}XT(Flk|2Ssk=h4YPSK zt3oi;lS6Yfl~nlT5-W)Vo{4j3YQQC9PX*JD)hAWEV2}*0?~ZCjTH-;fk{f)L-WDng zt_b*;u3e}!$`kdpwZv{ohRs-%G3#|5-z zX8kkkFT>HqlyfkWSQX1+K{L_;`CCKH;m1#M3|NUA5LjuL)rcRjeQiHdfAhHe_L21j zS+QLK1m};B0>*`h%4|qU2wlD8QS^yn{JoUe>AG~A3yE{tXOVK5wD<-ePDaYD$c;nR6nj{_@_8 z%I>=GSL_26&3SEY09ME4AIda?Mn$a*UVpx?M<<<3CB6CgXAWnR`{YO)KufQJ$hcnwAs#skx%AB&n z{Ap>qMv2-@WGMyDvtcsi!LR&z{8EZ`DDPfF-$%$=rxn30(t$s{VSDrR_*p#RDYoAG zH7h zKvu+=qKMK2#X)kSJ@?M!Qj4j0V(e1u{l89xNX6W~ZpuE0lOgJZJ`H{vIBKE#xUOJ*~AS$q`4B)YQ5zBx_!m-~}knG8;C zJ+o=y5s$Ic_YuV4v3 z^*3Qk4X00;tN%d9128;=>FildQpqrJ0<6jqg%E3U0P3@x#8Lrx-9P_bHoeKzuxw?S zVg%RkVR#MDW#^>t1%0!zaOhuR1%~vQ*d+5<0O|Ry9Ch|Jr~289Um@gfuXA7%gwu>e z>C4@edDOIm*rSm=>JlJlH=C+o{SX_CzQM3lyr(>Pl?l)Y^s5->JG2Kml_E3NJmN%Ek*Zo`xe92*i{2N|eWoX$gKByqV}Rld`gp;01SL3D$#X z#?B0T%w;%=45l2DAVaXu=r2>N^*E^U=n-Zdaw(`{FALG9PYwBdofk+HC*GS4-`4+W zgFy&Tf`)zAh6)NkQKCZsA5&i)RE5^PO$kUyhjdAoNOyN0xAk-9nwgCTkrdu`TlXPGtS&|_St*wwV(AwG8Isoek-IhvCDs+*x$p*Pn(kRa28NytcMt*}tM>+I|6Uw&r!-*|WkXXlO*c-}5zY~t{@-Tz zoG!DHSjyv1tr)XZM(cift--FB@IOZ(VKFal7WqPs$8c1SVp{+bT z6K@upLh81XM;O1#FK_8pF>6?J$5KdfPn;70SnsHSYT^|gUX#&}Ew3zQ4IA%BHn_Cu z%bE9qfk z7RM$eOcYBk|3qGV`SXMJFte9g_zdYgyc|v#u@^3%5ldrnlifO>@ga4ja~46ogs+D} zP3e<r(z>s5A1Dd~nv&0)F^Ge1y~g<>M&wO%MwTk|Vz9zr71r;``7Wsr zA4v5FY;^8(jii!BORHEIfQG^4zmHV=#}V~iQ1MF{M>y+NhV|;K^HX8KR%Iu75nse$ zZ?r55wfKxi2k0sxiCc~)VR}XM@Vq~|gJBVa`2?p+v8J~xquz)~z6=`PjwnM*nLuZM zl|IYk+i>)v&4>WZJLIrGe--qO#MOydSX#@}BHjuREAV>tjGYcDx#GFmS<&Hx3q&0N z!8vFK=qVT)g1?3Kz4q?NvXxrqMLAO||J8RbB)GEl6>#3$I`9$i1U!GXrq?isc2`so zaIB#Ysr3#qMM~-#Q~Ackyv?FBdrHG+?h7_#Vf#eUVmI0YX^)(Yl}dSI)ZNGodc?3d z-E}bb5l25RbgV8>U@~%<(b&V%^`cUK^^V%;Z{$&ra(o;ddXobaWZ_MB__J@BFuQ4i zX#(~uGa({;ciaxl4x&Lb`kum9@Gjs9D2C$a&>j}#anR+t_IG*bYCB3ovN~a-uvyr^*3y3{%se2GDgH4eJ-oFmmQX6G10;9Ocj?)qO?0!CIO+t2E*G z8N@T>>07{`3!Xa{l$2FA2z|dxVK$l|sRR3-kC*xW2UZTY`8eNM9i*!DR5Fa2RN-uW z&X&4ZHDmTQ_j&My#E~twZX+J6=Cr;DLj&2}kNsZS%4n+Gb*S1yQ;bG?+#XDB`2GZ_>5awhzWqFc!Fi zy)*F!a9-6(ik=IKJqJe}};n*%wvPcKIZAbVZj z|7&Fh{i48^ACLjcuO>S$@=!{_aw@&U6zZrlaTzI(0j70f0Nhtp>gmwKXZrlImyT*TB;!^jeL^=2o}*JCT$o9r zrhd6ZC8VzchJdm$hcD}#m45nfAFD$CUmyE-f&yUuskhdIh@P~1X&ly+>E!DVOla_~ z{B{j`!bQ{1>v+Z6kMfso-r_4dQhd@>VlfdVq^$ida9cT&MU_9f#PpcJ z{1bm0%qNGax-PG-Rz|0wtnd=3@7_nb^fj?OB0$dz=B&^6r8GK>Fm$1&{F#3Tz2HB9 z)&NIhfn<02tdmHqc)G`&qf~GRI@HFZaCj1Vzs6Z3|nS)J} zGaPeAESv;@x1*zg)6h#3H6ZoTlv+t0lpx=#hK{k)$36`uDo0mSF_hNZ)H>#$KwUgu zmihgCrnQ0|URkn)ukvR8YrVPCS!e50LPJ5-mGlMw!Y}M*QLrm5>ia1< zIC`Fk|9-Yq>D77qp{*}B+ccPzs&C6?PO!vYU1}b24DeNBnIzvs#OCFur!Cze3F}w% zR0@*xa@c&Gf)f@TN=T= zus5L73i|i|dijZ>iVqF`H`9r=nmIcfJxlS-OducgXsJ>Pd>qR=^gdCb?cn04*ib!O z-EUcymJ=|bDD6XMqN{Bh;xZ8x-$W~k$beLiK4Ke7e=vtPpGHBqL58soO0ktVi~s|C z5C9r}&{jT_CE?zsMx-`+PfN3oQDurg9&M<1-lYFJrmV1Q3P|ke>PRaj5*v{ z@KO_tQ0;yLzYy)2sFa~Ke~;DDBy@Z6Mk0Y`R*O{G+)#p3F?DUOP#JrA5cxCB-6j2Vafaa?4NWsm z>~x@X^`>(>*|@hY%gd04l7-y*Y8`!|j{s^QfLVV8#|Ws6VQE+|W$~Plj$_EQ8wN>6_kqb%?R+SW1u+uD!XZgfF8x9j z`$&NtEN_EQHH67T z6K;v85h7Z-2=+~#PIuJ1e5{O+S5dDM@6=Z(B!d)}dn4I8g0I(n2`q5CLuH*k_iU<7 zImz-9m23tZ6h?3mKO_pxEyH;WiJJb?-}Mzc<-= zN+bCLLO#*@-P(1`(?l8ABMbjAeL#-#55#gN`J^DP5ex8gyCv$j(LAxx)pUC!mSi^? zSCCLNlD=3rldAA4Ey+mK{H=$Fc3ED7p!cCyma5n}iB+0BM|lE^o3FJXe&riE>_57t zopWIn0-}x>)L-_wOPe>{IW0vAr2r=mn|!_oOc$8ApxN))RMVf4aC6VQnL_i_s_mB9 z(UH8e6gaXiQfaQEUVqCI?N1XU>FTwgC&DWkjEl&5-#+Ur!vpz|zD^w?B$tpzRqcMl zAHB~Oo2pwm4MX?_mUevNDZ7IQqwbu4Lco9L!}6++@#Lxw5z}*Q8kj(e=Ls9MdU=&x zO|J%>Hk>$WH&dhPd51NWEI4WtOG{HhRJr_DE@h6?a2$u1`Z2E*lIX+pB(cHkjRx7w z?jjIza&`CeYPIXvH}ai3`*qZh=(=!9aQt0m`pqfrAFfyQS0}DBc6`^5kB@EiVqRrq zd`wME-FDH1&fY7&5-ER{+$1Y~(2e*JM2I%64OV80EjQKLTt$1JqapSoMPSt-_OZzG zXG-hUVqyo%!Xis1A*%<7<|3S)%+ZQ7Gzc(BGNXiqU_;%8u|#OuozLoslu4U ze|eivF&Nh1s%%=@?IeK+19s%^$rt!~mvX_A1Rv?A+Sj44YVD8)v3O%X9aJd=%X^Q~ zD(l%?P{=RNABEL$e-ZT%n$#U)j}hvgT|PuvbTtpblpMObeHgF>+5(mr9tXFy>nV(y zWlZJfb_DZId(5tr%j+^<-G^HlAUuSm$zi};_Hzj4!pqFrWC*GprJ*7F&OueU+0HA+H0Gt~z7i&Nm~AXgMvq`W<7)WCw!Bvx-M_cuGt93Zf$JV`VB!EVDq=8C9K;t_b(>?n z?qj#T%2KMrQ&yj8XwtMsF@4z{FMi#ZEH2CfG&*?cy?V{M~L+9J>5Lr%>hb*=61{HThyMiDy+7IE+WQ+(b(QSH$RF z3}O^nV_8`8L@7fkaF-sc5Nw>H`n?oa3@8zjk#jkYJ9Nu@jtY~V?6AQph2!lz&J1~`^wr!{!oTbx9RSacEOBagJ*Ke0n3%34) zvCvi@|Dot#k|C$D!-1^PBs|wQSGJ&^eFOiNReGuFafe6>WVsdK=2owAi$HW_gSoZS z+keDQj+@fVEh$^Un%L}U$j6oOu`pV{Mt>`$KvUpeTjk!OCq3I_|Ii%q@!gBp5eC>CFwsa4BtkE1Dt={uMfYPz6=XjK~t_c}6EuoRY7mYm8vQk-FVxFcHsE zjv~%bFd0*U{UR5Hav<>-u>ouLLKWcz1x)K^&ZrRQt-Bki_J+9YI`MG~I7bpm z+yIO3@h8?e@s%f;kO&Y#&>=DDtfm$$+q5Z#Oe3X*uVe}3qSN%(!j=C+VVg%UI-u-c zM!kNuXk|!Ohzm4gcH^BVNSs7|^)-_&kg>2ZNG&z7fAq)B$J}i_8mtt6BSNqlBF$>w z-wqL>k#k6cKbzU7npEKer6o&nX~yFt&ZDuEa%ZhSN)2C(c`76~=>#B@c3lJ^GQwe5 zI#I($^WK%Lt~Z|6RW3J$mrO3NIkTw0Uv80J$LTb zYIlcu{yDn9!td`JEUa<#GJh1MGYa{VUgt+^WE4xuaDON?G%#&d5=%75qo0aLsKtMU zT&;Itz^zoPLv!F6oC`-2B2JeZ=V?UrvT)AdUteGmiK=F7$+RgW^p z<+Dq-Mf+NYe)YTMMh+*$>0wfoG>{11yG4!`(J)?Prht~Vj@0lZ9jK^$2OeptO_h<2 zyHCYN^#5@Iw2T|rZBQCpY{U|h(Kke*v)nw>(*K#JdL zexf6nLzXT&b;^VY{0>B29v~t(54luB-*~C%Cmtlwj@p)(ITB*ULiBy^iV5WRh!Ii+ z!n_O}!>KfXaCPTiWUJYzp2z3hV>)C~Wu%FEkD?oAV329UbZpIX1;Wye1Hy2jh4tON zb+vj_v?JGU@A$``(eW+H?q%4P8rb0PKi`WRUody6vDoC?yw2_gM3{?}JIht_^q|jZN#;LdSClgN zU%J5kGHgDya}I9Hx<%$iTPO&1p-nU$>_GCm-Lq7bFbV>+p?}47yGqE154i4Y<3slj z4-2}Q|HeKy8o*M#zd6NcsFlEr{IU>#xW@vbyp>g}DM?d$(BV0Iktf{t_V>2WTwh{c zA2t+(yfU-ou>aK1Qu862a8g_xm1^*+3X7#O&$Lm;etCRO$Si0Z+5)-cmSJx-DcBhp$Y2b5lmB% z^jtEiyHbOX`crb~)$(ssss)_^b&eH-2FcHyWxrX z{5L7FvBub;l+oTnCC8hxk>cEg8xSlR*@9Q$l9Ch@*jV;UA+DhY?hj_&<}Fg?2WyP- z(^l2GW7)WxjW3!%XLroFZq_qoPAGZ9=tDzN=Dxr1eZ<5Xh>ua-^;dGy#@{tl+mGUHb}1)5gwGC6$+X;>ot;_1__O3%qOT|NuK4=jM8 zE{JNhZVaq*bJvE6f1zVt%(Dj9T&U#X!NW-A<_H3aK^j3*lI>zcsaCVxK(GOcnuR#*N^dl#X^t9ROo6>nu^ zWYR?)NVQ;V^yXg9_anz{L{;G0Jf(ru>4_{M^LpK0vh*Aa^U5P)m(Chs+Nc9CZR{%{CIb(aZli1)MwR1SG3KoX9s5pw zMTv~T6vzrnlpr5Y?8ku^dhI!Zlqqu>j*PAe7ixvZ8+E1)sDdeTP2LR`^SAMMmaSoe zw%^2mt+^qrDW_9peWYI2Mk{1YUX5}EFqu46$s-F*1NSRKeTZ$D|y_=-_o)&2wZvkTCL*J^Wc{vqRc^yQ8aT@bi+|fnAVuBunVp zd3Q3`Eq2+2{eJh~+7kc%5u_46WUvF>?;P5Z-W~lzueEWcl>X6y#=eSDQvX zJ0{@c0)a>tA*U^VEBItvZnL0wKdW~!%g?ACSze%{RITa!E%&20rYdVntDsAKX}Fy2 z^7dm8My=f){nNTlHC2+kNiwER_&Et9GeTw`ye%Q&MsGijuTTex*CzT}Chx@1q;y5q zi$EqDR;LYl<1WnoTLiI>7P`Ss>GkHZ!cG;LZGPDj3~_3~QLfV5QO}yK_c)z|G%$C` zs?~xc+F!&OFoh(VLz3Ke`{<)2aMN5FXALF}@U-wW`8q8~)F_>f`)*9(ZRbs$tg?n( zaBK;QegP@)_F&hI%hzZwLbQ*6-?p)6`qk<%E)x>5P7`bMGtFHcsnvc*6FLT;i}Uk? zq%qn3OcRbj5XrW^q=!qsc#4uTrPk3N3O!DnF4=glD^`HSos-j`XU|_zId(%ymW8Rp zl?;_cLG4M?iOfT;P(7%??3Mk2bYxe?k*cT<8*8y=)ar-Hb90S@MbexT@xCdU_$(^M<9gFB|t14yi9Oy9I?7A20 zGrm4maJtBCByfc2yb7j(MB8M{&6$+~S^QP2EE(M&-6?JEy-KVBac)V103{`5kos<# zGqmN5DYfFYV|YMT51OOzy?-x!nT#F+T*Vd709Gu z(@(0w=gKTp(V5#cHeTuTzrg$&V~rW9RV=l#YfxYxnBCx0w|Q7N&8@322#Xt_cmCuW zoZE3?-C@*GbRb4G#5_ucoToEnEmj_8xViB13S^$|?6e9BDCB?tF>dH_)~~K|I=S=s z_4*gG{bFfkc+;VuYM6n%@3EynbaX(9+hJYq)%(f!yPGOT+6PVd*Fks!t&Dju<3;xb z+26}>Mo{%4Q!%-l=a=Z-C)Z`Tk$2Hnx%KJC)~@~DgyV1}H!DquYA5AKN^VN4LZ+5}B1j>9 zEl6{9ER_3oJZocX7{^>a!T0V;P1gucG~t3hx?1-@y)7$FDOizX<9y$!B1HUW+R^r0 zXa0P-=cmTUns{=<>(<1`lRKppcD|Uc$F_4Z4m8mnk@QWu&1EQ)=Js}VO+!mB2xdmY zSeqE!_^^Gp*H`8;pL^mH>2qGxu~GeS+41FepQ+4%@$?s)f2v)!Uki(~liOV-F=a*h zd9fU4?&`B-`RbIg1XiqDH}9)k@g`MzgXuNqaA*3$lKBIhL8_%yM@j@CAt4yMDm$if zNUVn;PF>y6-T1gNK0ZFL?-euo)6L*wi`AQU3?XYXAPUG0Z)uBf{JTkhtv_8o<@#M? z_+=-D@VVPBE3au?I1rjkXd@Lu!doK~lSVAO+xZu3Og~Qr;F~8nCw~fgQj|WJT3OK(#qqF(j{_00O#Y_rvXu zM7jlDZ=}C{&&9Y8uwB_$X6pn7x>2@k1F^mvIQNJC52HL%k`LPsj}H6Ieh1B-t`rjf z{v!I#b_LDNvGNuHi;H~0XuHRU5zB9-ayB-#^gQM91X@hnHy24{NQ{x>Sb41+W}Pok zRLvgDs)_N^D=V6s*Aq@ljN_y3?OtYlzdhgjqkS*OFCg$T`^!+3VSC9UX#G!96f!j9WUHNJuKzaxLdp*BNDlpy{Z4@!~J3!z)&fQXy%`L3@5Ctv!q4D*x5 zvn}~HUr+LM$7BkGBj8%@@cKWJ2(^xL@2FC#nkfx6#Sn)as1WGK(nzH8MrvQ@8S3g% zroN}eMWDeMZ!oD_)u@j!Miw&NQ(_ zpqbCYzR#h_#PcI$-uoDqwi#QEU%}z7RTv@jhc-|Ue=_Srw)nDu8ECegc8`vvkbA)I zG_b)@2#FsPXs!c^N91Sk(GmNO!axxY${i+cKf&=h?8MlcpZ#|D%2q~Yp)3R|@r{c? zn`^u)zmm2L^yhaqd2J}xE-b1zGTa9QsFo~MF9bg)?V+?nHkML}q}S26FIKN4GTzqo zEo@T~{d0NiT4quiR1R2q6v)Vw@nB+Wpem*mtXe_yY9VGYwA-z_j^-ru zE?jC6)(xk;W`|b)C>_-*X%3$tOj6Rk&}-TLs56NSSYA8*fxURMCtbz3_1N$)n~E@xhR-T=*Yn{FBj$(0@$8`N0Tmg<0EF>d5OGYuBS zWFRk?=|f_URHU8$Qi%y?W(q}a@MaSvS9fpu}gV`f}QG}vnQf8wK} zY^hMJ6~|cBj10EErM^ij$2<1_0du|n)Wf?0?%}I$R~B|cv~>c9&Ks`FMsW4@eZr{! z(jYqGwAkpv)MS_FECi(7^#~9>9Y%aHzc5kC&F}dME!sBsmc@QS>U#x9wl>QZTY3yq z{NwLwpBZ!D2A3=VzNRe@cQ_dUtu)mJJ|u!Z(Ca&pD<{|QjBmK@jAw3|B$a}JR6uKhF3)m{P=+xw8}>XYqSfG9f?RE9`e|krr57% zbB@};TWwl*d_>b6yK?#TxW4-obYLZ;H4yV*iks=>(2qewR4U2_!W7dFaktlns&#s- zPJ>nLd_KpVn{THzh}~GnSezz=u74|Z-7~GYbvGk1aJ~=olF1 zbKj{!JgORNij$%Cjv6V_=q13F>Ff)Pbs3skKWg)Ic45gC2L?+n(1L%)<&!9_hCt~= z%=&OAo{KZ@HeAGktm5zth##<)_yF|y_a8I zD)InH1z~sh5K-=Q%Nl`CwrxwNjbUlx57zcce4TqG{ia=H3G`Fcj`^NM8Ck})?s1u! ztIW*I>~DO+LDHhj*@Dn!M^oQ1G`=n2ya>T#5aq6Ssa&*brV{XVZuLq0>uEp2Vh z$Qv~iME89~4^mW8Gz+1`!NECP_!16)Z|6NuaFuOb_|Wa`?fsmZT4{^TRxU2pU<8U! zNT~+QkU7WJxfe$&TH{x2Mr``R!OYNjDu`))cEwTQkOyu}p~S-PQwga;t$}JDN5hn9 z1qH#2AAKLT>$5l1MIIu_pMSqt(SDTl-C3+Yy*;R&N_E@a-8FgZPv`3^w8im44R^96 zsdSdHz~}aIhVvD&W-vZSAu_=wV1#dUMzT9X%gVZkHOwf z#33Ls8iGmyz8xC6!^UK;gy5h4*jk^7RolhZYwFW1LbT9W*1s50DEa5>wVS52)YPAU zb~<}}ER|hOS9lc^6l_-;;-#r``dq+#&~$l-7C&Ws*psZUuP-W_7=&piGDf?Rue+@_ z$r;zosn69h6ZN3bhhyU7!&waC)F$B@kCwkGNCJu90459S2-*@50O5wEhs`z1cX=`?#$SazGPZgr=-wGh9nFQhbyV>L$fubqM@fZ2a$*X4!X!6pBtcP0Qp=`ZIRkNCZV?GBOkn#%8%(-E#RZ-0-YrxI0O~4s!&@y>~ zdR-^l*$91WFL^3EQ~@$68yOSIngmxk?;w#`^)Q)B#IXfw4pssXb=&Enti>SZWNOsB zP)8H9iJf=;Et*%}(ZV8mEz3`f*g|Nx+lfI_tJUV($Y8#R%K75rqQ+uWOS;+4V!bnV zd^otrq=kzez~AgEoH1QzN|#sPo4qaz2^gxO3$Hm8Y10eY*5xX-B%~=xL*V=h#W4}u z5`0O4!rX~u3b^9mBYh z-H-JLl%L8gIMD<%(viLgWT1!`pL1OPiz1n{lwM%iiY_K-F!pV1U<0W$P{K2h=INDU zJ%ep^4b^K5*r|G=8#)&RajeL2fuiL`3>GVp(eFa?;R1M)SSVtc!JGw;e@-_+DDJ1$ zRzCS(9HzbxipQ1Rt4Palv64gHTA$t1Oo(I`8ilu>^9r%)hGF5^4F2prR8CpqAe7{LaH5fC9(eA zw%*+Et-=QLb`juuFlo{K*CpGd6i<+-x4R$X<+q;@bO=2#CXRnchMQU>$y@3^H!!Ep zIlMEk_hPom3QTYNxyh)2wP<74oWSUv`D;c5H3Wf*2s$3YZQC)RM5|!wLC^s&QK6hs zOt^9@er3%edVI;db7FRvn4pUisUOr7cPmLw|IBimzlwfij7 zN2w69b^hla5`3Y?bgEL`vm6!r?XQtbnM%(E^{LeHp}#P{N_k8rXvjw#qj%`oKRy@* z0^f=I?*Dy_c0IjUhF?6@Jcxcn_#GC(rgFanM@tNIw@ELcYfS<>)O0$aQ7`YAoD-yP zHjp7f&-_`8JDzW0b@?TcVHql=Ra0_XrcT=j4L7?5Htcx~De?A_Daw@5S`HT}RF&L( z7-W6Ru)+}4KwBC7_3QL!t}rp14XxGTpOyG!8jQTXyx3WY2 zlG`JU3}I4-3AMhvX`@=`=q%jRSqFt2H@LIYtyQCl_qAM)$HM26LHiY>;cr#w{3pw` zrrCrmyoK*rpN!Ga?WAWuNRAc%KxU?tWq2e1)1j|AyV8JZ3cQRqB4koH_G0BE6ks@1CG%9nFFP3 zPN%CR$k=lY_rsM}n!n`=Kj2E)2`R0|zMD_J(Tg{jzG^|oYl?2`AblPP1D47rO$p9-@#_#@>`n>x6D_}*ksEW$`(Re?87#B z4}_xs{>GyJ`viYJWC5F*GQS}Dh_u<`siqp+boR9fDAZjUC!jnDnimf#DgXMtDl)7* zB`Ks`NY z^i<-g%{!6=HPP_B(|*4tZJ_8nU8gR8CT+6(PcPUen}4VO&q}BNENB!zNq6SM7Zulr z^t*v+A~Vz?zOhkammcJm4%G++y#(7W{+T_qx!rSF>=W)i1tyx)ezu2ny^aX-Kjtob z7~9YM5o9gvy_E`Wt4vvwX~j+TPj40{#U)Xw4ABUDvstaMAKpj%BU6S^VW0*e`yTo6 ztS%ulAoQYCJ2|6+&i&or(Kq;YF5KK)w4U28(JPIdUYq>9figG62Dclc^Ab3L4IR~=p&Uaf(}%QRsV*<`0A7VoPruXZVhw!VwIw~ zVTCNE9g8{3Iu(FUikuHTuuJBxm0)d_Ya`dDTDv0!B@5!J@P|;yb43SURF=&@PmW3c zAoBX}cDXtK-{;yw@e;?4+5BNK1#V@ctWT(zQVURu#9_>loR*!rqj0TJ<%{fwwsLO-bZatWZU*R<+ErmCdWO|{$mEr2} zd!ftl-Bmr2>WkKEVrg&Nnkd&7dQ=>76@7wJ{k9OYWYS#<(Tsno2=`(3CmjvTCn0~k>8>B^( zfH17Gaiw?o=0B6mO@W|{*2?YFOG4og)Nmb6n2=!U8wfS$Zu4hJco^&Idj5|K;HIP< zKG(~(JQvf3+yj@V8UT^Z6-N$Fk*6#uz(Pza``22g$Nu-(0B%fKru#98w?Yl~=O`idUWkzi%4?ZG1J_fD5TkD|7Ln(0+Amd@>+24l$PdxDnlEf1k; zpvT1^|F165B@P4Uo760_Cfh}EOKk#>c}{7k@9Nz^+r+iU{LmSyK8t!#oRtUk@9#oAT*d`K{L5CRmx^XhU6WK}W4 zE^Q}i?)p21(*+;885_DM79WqpADJFTn%67mKkV+vz~}GsjEVz*AWtTMc@UA1{%tsIJYB{GOAjpu#<6!YQLj6Q}g)|B4OLO913briZFjvXqDbJAJXwBqX%Q7UjvhP!B>?3E>>VWVm@qibaN z{b-z-V9*T&FVNd|fteOgPor1$1gaxt^O0QDGPa&Z+X3 z*q7GmY?-$;DckT;n6a_ZDrks^h!@^i)yqS^c2s_`LEY&lTcnj)vp<4fKh5zm7Ux)hDCE&7{+T-*q>|dO=q-SFR zHeAt=aB)i{(my1ogb=oI9+%IcKzWgYd&PkD(~g&-iV6rruR8deue@5MKp#v|HoM8< z5@Mmd01Zish_cM5dXF4p@tm=c!*r|Obouhx@=^DVfQ)9T24%8VK@!|@(N;=43iBu| zLp+WH<1310UDTyEm};s1vc2Y{<2_=5AJ7m8fY*Y5>X~LiZrfg$=06wTyV9pRa})XD zN#kgGJt*aIO1EKcEWUW&db?_VAFoK7|bgzbRT-q$&^;y%cyL zOH53Ry13*J5t-0ol)^+{o-hVY%j<<@iPh`9asHc5l}atp9CEG#p%S1ZfHY!oRb(nB zDi=E$HtWh^{2uB-ax_d=T%t}KjvMi86a6-qiJ=t~r&k%;0Au>v=kYVqg11k^qIJG< zhtZ%LBpBLT%W{?~p5ZV{ZCf6V*m+WaKYp!280yKgo{*B zJT`@Ys&veL^QJFUAzT^L#v3yf#JA+D;JwOq`F0s8qrvER5+AsE(ph!2;`_VFz#pJ; zKmYaFH!i2Q#Ovx{{=GF-s1TJcI0kYcbPRQ<#7!A~Kk##$0UAhtdviK)G~sAvZn9Hn zNh#qXVydwvm+;^Lhkp#N%9a}yD!G8)+Y}e0MAIEB-YZS2S=}g!wWROCfCtWy zylkHA2^FX!U|BqDwp z!@~gTm4Ac69(MvXdb&F*LKxcn71pdN`T6aULLP@e>l5%Zzz=Xjb|y0ZN`CP6?cqm9 zU3g<8gtLpgy0XX8dFp-d+@)n?{vtaUd(-?JnC&%kB2&_b%1()BjP<(t~nV+Ld50*&e&;kH+%`gAmmfW3pvmzR7 z_XvFB!A zQT7i2v1a(}Ju5O2`8Klf^73Xg)}^#hOM=*8wWO!NlwbxbKt=#l{pE^F_BmAk-24mf z)7jJgyrN;t$MyHBEXe?n3ig{6eD1`YK2R949WKtH%#8*obf%4f%#45)!}41&)>caZ z_&;MKxG{>srz0EFYxQBa=0)Ct`14$H$J-4OkXZ5I>@?QtXYaG|t}D`;!wJ8IQSb<{ zrxMd3r!DI(P?9 zf1j0`Q{pPF`vsnxuZ=)^pFYO@N#mw-!sji{e}D|&Ux7RiK*UOxf4PqFH{7Y^dd=rg zqKH>krU26J{yrd_KkkV<6j$Jn3f}K!cUjD@ny`Q1{0jx$VEvpa%`a>D(%;{Y;6U#G z$puWxI$cB9XP&8vO;Vr`w=l#S2uty2ZdbLtQ?m5TRqE^L7@3*=L;)}Py>O>5wxPo= z>cGT4?yT;knX4<4m<}Dvv-9(FThi6xU!y6t%#n8|UD?H1-f2PE_u}ebzQuNx1X7sT z+D6SA^L<-(=oszq=L@u!tgX_N*PCZ&b{Nd=hyFPOfxpon}I%Qi)2;ATO$yN&PQ?Mp% z9T(Vaz9&+EVz4*#i_h@~Om)XCBPl7V?JjwagX2df;?Tv~w@B?LEs1s*kHN@Au_f}A z@`W06A!bzy-08(N=UA(=CTCp0bq*5XYP+Ij6Qb91fn^a(f?25GP+Id7Cl7F6t0cVN zkNpxpU&<~mjZDn&+(9_W6dpM1rAn4h9@B5GF})Kz?zlD*zFf?1do{lfR{!R2d$RI1 zgU?Ix=!<$}gtqaYm|Op+zOG+|DK9pcUg$U31|$;!T4vQ6$%7Dllr5Rr&UohG%4_+P zCisno>qptvROXQgyr;KJ}fnKnU z^V%i=oACN@u@B@o3|qQ*W5RhCST{jzQFJL0~VS@<*oYHnzq27m9*uz~6!};lEw~VV`X^jSdI2G5@IwxVKk^d1gV1@1Lc5 z{}FwMju0yIzEE^Dbo8lswi=He!>Abh?c??V`2JF`<~aKxdZLpxK*3JH7j zfu5HeSjo<>0OL1*30QI?x(hL^-HxA>nw9oycb(BOex1+aTP zPC6rj4e0cAX>-Xa!C-o?R)ZvJf^KQ5I2|ak70`0eESakOMDLFA);Di6gnXd>Pe(fo zjWz_?_u&)2|4jI2MK9Y&hxII+=39H;Vs~9lJPI(6emysUl!AsdAR%Iq{DDwK@R66A zm}heVTSjjNKD(w!KjZRHkOoG%<2TYih=@~ERD3POHvn;ZUWi-j3RUDEJKc2PK|M&Y zvIhNYrB>1@kp2b%t{|g+=XNBS@x~on( z|F5~X{)+N_qlHO9KuH0mk(LsWhM^^-6{NeAkZwjAlt$22J^DaIe1h{lc^+{eU3PsXMH_-@z(L@vc^ zL%w>8nw6kiR%ud-4Lb&~x$htVd>0mOs-R3CO12b&-ikuquE~=*4NSWVIj;YV-9GU< z;<}rBZ73K?1u4w(-rJ`1TeGm-P|+-zq16yQ?M8?m&LM1n*M#q$iE^y>8ELYP<>{7I zHMMkhCVE<~Tc$R;q&BAN071Fu)xVFz(%Ve{WB~}YMlq;pinX?F=c~fGr_HR89XQN; zj|nHSrGA)X(vBNE@-b4?L|0>zQA`hRwAfp0PuJxzwy+2XoE^2_xyfTH;cj4f0T=a& z(=1YX>AQ?3O(A!F&Z~MHt}5D9CUOQ{g=2x+ed0et*Iqj7W^(@ruhram_mgIEd`=Rzq|ft2&_dTE^O|KYlXZ#Zhyx$!5`#5|j}U)vgVCy^jwu~dN? zJTzH``MS|u+Mse{=!+h51c#k3!f#YXuXd_^j?>|$A3l6ZTzkhhLzHY~Dd@aTlKO}1 z(^y-pVAShc7t9yvsY4DwDo86#tUqU8q-HMzCGqmX5En0Cvo4M|91W5ymaA>1m~2t$ z8&R;;Dlxubu#a%{#&@vi(n?^`UHJG<_bR)XJHLP4C3?04^V|n*t;e3;$!X;GKJi;( z8XH0+AQGL<*OLE>Up(c3ARDt+e}TpC02jBl0oXa}KPq1dpR*Tt^}^sqGsDGxot*GR z>KdrZYI-$DYHO3#>PBi5=VQH=U&MC+59i1H(j1^y3xLD>v^K~N-FCR4UjQZ^_U>wIi4xO|pDy^u zpfA2@=&kgzDSf!}RrSsPKQHKB5y+3wGrG}4{&5~VJR0I6K7U2+z4KE1CRMfKBa9P+ zj(A_J{OCe79h`4$WKloNY5hq9;?#ntKR(%V&4j-32hw>W7zZ|5QbiNv2U_9g(;d1*#fk5*;+YR`GH5nHW_w|chB=5k5_L4bIlZLd zx9zB6XR8$k8yZ+CQ})qij%u)w2)b-=j%JAsrT3{G%<4H*Zf9M2>>wbAlC7^Gd}FtV zG~W?@(YzueN%XEeq`NgNTjFihR#zQ-j3M(1N&^H$kwrFpM)baZkIivhi{ zxw{8^ijv5Z8>+aY@wQ2-guE`V<^=iP+=WPbd3yt#Cf^_$tf~phx67VDm2bBoqYh%X zR=q^91HNspG8y0wuJM4j42W_-J9CiIUo zYYz}zmDBiTzHt8PbJnw8+yVP$nd*L`R%%Ico=zi6uJe2-oO-u zVpNJQhKnG-fLhTR9uHwfQPeDFv(YmT*^9=78n$fVOElYmhxr5%*hOVn=;X`o5#O$v z{h&@P6DBGyH`S|o58M-|#TLYwqFN8Gw&2&N?TFgv4&w_mBY*$WI%Io%HM*)bLToZ; z=V}zkC=?7tP?ALAI{cWK#G$%C12>TinXt!NqV_r2-IYUCOG|$pM;;K)9l>uSv)6zp zlDVg6YFnFlArqGqh(YId^oujC3^OZ2si>$SW@V?6l`v8*3ESJV2Qj{P6rhEeavr+w zb+~?jMFYKj&iqY<+E?~Q^$r06fxStj8;7=`?HBcTI3U+|BP%eQP@A(Qr|o9M;c(?E z7mxEH5!g+^7oK7r9d2oywoLIk_06G6d-i@in|%re8YDQFK+qoX@E6?8&W{IHi_h+uS!zPLzw-?T-rbFtB%3U#kW%U&N!=Fayb0i3d4eLb0 zMvg^uSxkXmq1tN9REHFSKv4Qzk5!&SB`HCZ%JQYb=a9&KZ>a}#3r{I2&A~4cJNUh8 zJ^lSrzs)1usc{%!BcRj?GLh#@Hd{zi=ePUa-9Jw7{5i$b#g^dZR@LyY;P>b2N{gx* zIm@=unrdf9xP>?~ubYlU#dbehTZcVD58P>X=PI$FvH&rP=cHhFH#T~%udlz?Wp!E` ze9|fL4ddR`WM{52Fr<9?SD@;%m-jNedwgn{|1ZVe+S!a!X#2={WBgp*5ZBELvIO;1j)+oBW`>XmKvFfYxv~zcb6En|=RfWO~y(24@dHMLd%cw*i78z+rjduzi zq5pBgY1cIanyoR>V?1V+jK6bw%yW&-%wP*8Fa1L0cUVxYd}}&1OVx6Fxs7*T(Wll!}R zN%EZg73jBPXcS9) zh9scpuD#VgGIm>ZUlh9EINREMsaU1p7SExPFSE!#8J9U%mCvwk9p@;Tf>HfT#gfqW z^CLINjxq48s1z|;Uof_;q`*kmG3LR=NQs2GQF{ z_f?JpgEYkCU_IK%%Ep8=zqbf-GpX8qMS|1AOwMTjlDp zpy|GS*^!zLIos)44MRjs+k4AnUy&pW+sEUY# zP6g4qIofY@dI7Z-`^t?KKtHqX|iXCyen>3 z1#u%8a^c_ps^LooG=u&cv6|)A^($mXQ0Y;47MO?~x8`eb*(74778w|y!v-Pp;8?;b zpdYb}Z^?SS%}a`u=`L(1k^+_?f?g*q7e0@>9^ShcHyoU*t`b{OXN_LK;OBI(as#uw zTSt{luQ-6tQC|%!t@IY`5AENq(G0mSc>-3yv4Jm7?JwvgGK8E%;1{8H1Sn5~*!9nI z@TBnlJE&iCn78ykwC=CShh_tdc$2d za0-TK^OqX|Dre}ijN5WF_~OJ%oQ%tGbw(T7uV)1>v|aniFrE!xr6sy>_ZLqL~hx4)A!};x4+2}dMBwBwby_X@|A_SuF!Jwp>9fHx&*1pzjBkrJxf@3q&inG6pY6wT zP<-|ZxISH-+AV=d-v=QN8vU+F9a@p3?HB3o0|mIrsaaXQlW%}-z8`-T@y_%kvOKGy z+5=UkxhrQN?@h#R(QHG{PA9vwv$Lq$1szb0OC2SRfJu;YUSS@L z4v;K=0kl)UO7-efGBWbpwDR;hk3m6nczrwus*$0N4wSCIcOf(v5h(vgv*K%q%7G#vcYyH`&w6pma0R*=WM;f%7><{{B#I`YDPsznxqLQS@s5^eP+QsY>mk}8F;e4mtTk>$!;5? z5dSv!0j8W57sZ`v^FIX|EKu^;>AH}?6F!!_Vjo&LA3(e=sN=rw}o7!>H5#cxy6(mMG$RI)?|HXwJNQNCMW)1{f#M+XvL+{s>+g_doT zIC+MsUI&DIG?C^T`7-s89^3q6LUxC$&-X>CJ+9cm#SGsg>8T0jKzZ0iP;Y0aK6_25 z+{7dQZQ1jt(c7D=)H +Hgz-mwo#+&9;1V`_A~s|yl7T!tsFJm+@POQm7y0~ z+IK;N-;`bRI`*$e;TwN{Ikp`mAqhs;S9f{m%L2Eh?5RvWPT?&!h%?a^{H2(t@$q~) z5*ZJ2Cnvdm%L zcWdQ0zsnDikSpE{EsB`w53fe=Rt?1O{+t!q^q}4Vx`O3N&ZAPTul_kEQL2zm=P|Lq zW-`AZ?nkryv!2Kq?TeGCY)ePSSd~0wR}b>##m%SN>Q!~RJ4DZ<@)m4girrw-UyBDO z;?z4Vc@cze_X#B|A#WJt{r?*7$>aIAvfLho`!-S_logJAacLVnkRTy5v{ed0)2 z^=4#}zLCLmBQ_q#BTV%jJ?gesA6B|z68m@T(BWOD7^1NxHaLTsn}gW z$AR5!qSeOjdX8d9K5kt$@xFXwD+Eyca%WUI!bcH;$A6Sg%fN_e19j14R0N>30T=5wcnILM+S(akC)d zz-+9?l;0M1t12owid3_gi;J?*K*py3b4}o_Hnh?M%O^YU=LXm^PNOK`qU;648wq^N ziV4t0_^KRhnt#>pvLDjB_FuIN)RS3_^F?MDto&VO{dshp+kBX$udBP(HFOv4vs?ft zMVOf#b>Ul8DyM_%$Vz)VPmM*~lZCECZAbk!6n-W4w3J^^$SH=^`|}>sbEijGRs4qU zwpaKgjZc52&*Lo$8L!CPLc(W6^B*cFA~Azs?9Yr73%I&ABiW_-pZFF&wHo-47P46w z^=A=ttiqn~XQ>&gSskV!M#Cyf+M`?)@w-%`zpeGq&ed*7L+A|$Q}0=2Qwv&b_v9n5 zOwPTl!w$?vzJo3lUaRAs>MwqOEh$>%)}G|rhG(a|90%*kE8#sEx!qGIb8C76NS&q?HXoP z_*mnymu-gcJHHM1ok*6b$LA95a*ZEvQ-pm|?lz&fknVK&xwMe&v!lZ)^E#-+wW@|ma#rzdN*)qN=zp!}eh z0TDVAu9+Q37Lu?1+~BBPs+Bu&P;B>RDqz6tn#)P#X*&xv;DAT--S(6$Y zY>5@@FNUgb8t!3zNrH;X%6k+<3frrdI=S2c@N%H<10;cqu3eVr`qQ-Jb}o=t-hZhZ zxiwDPMzbGyBDl1DTVw&-f8D)zE;d`Tu-nTlX=Vo6%qpKvdhIg(<*p0&)ynWG#bGuQ zocpcb+CMyu2fR@zf4)u0%94Y*dbPb~%^vFw{(Y+Q^qa!*l<#=_o)ev92w`jxZCnt& z1U4bQ_8exbd=VJG`&VhE?{Q`zjy#!aIqapVN#_9V9?LqvCe~hEo2I6wexp+`H(vGf zW8kf+LkbKJcRAM{-=q|V69fPf-$Dlu56?KQQptDikI2!4mAGN03+O0wS#q^X9KrC3 zi$T%6?NK1jH7)gKlNJILXzU?$*}k{D?876DE8Pm>Ew^+tTik|YBZ?0$9q>Qoxi#l= zR}Lf1i8AE(kmikT#L;r%d_1GX0Ok0F+}0QLj_Okt8vx(F`O-F6>Tp2fp-!+VKG2s_ z2#8ZXHTMu4-J0fm#JcvHw2~&+B^5=T#6nq;b>+DL=3*vo0*I}PACL}x>52|VVh4N< zL|oYjq@8%Ra?oqVJ4Sx=g1mYqTdND|RuHdavLd%o7rEWEy8Fi$0>P6O9g|MM%w_pP zF_nuAbJfw)LrfUhE$%h?Uh#v&!z&Ni7Fg@UTG~bd)&|;5V>|mt3pF0s6Y&66Rx>K` z=cbFn@Do_76Q}z~E~iC$^o_pGEpS*7QU^iB=4OvKUT4220(M8=P?r*q@laK z{iwbLoaie#GXMLU5D30R<@;e7y&Sa;o7(W)u)|-HX(Q`VL-WPw5@cv`8Ub&{PZP;@ zW@CpIge=pQPxs-f1seC+KttT%9Ijc|ZRTu+cKmAdy<$lo0+R-&$x4Tb9<`je(zYIOowfub_H0ds-`Lu?wU_Rl@@f&C79C2lE(G=?kt;PBj;m@sU% zU?P=fCF`vS?H_Ldm0%9qI>o)Qy1#N*5qRa6AfM52l2iQAO*a{ zZh-?f*3MzK5T*L2w=W)9QdL(cC!YOUQK6Pcf;=R{>x4n2`Tn>7npWvV)MvX|JW<-8 zBf{vz!x(}H)zgG4mFP-*6PAt6=tvZB-=|>D*-lot0b_mUq~rbD2F{y9unhAUKGiETxg?F4imbaMmQqkEr1G@96%rz z7Qz0%aMpbMeZ-?}(rQFF1}{X@2*OZ;M%Ul+)8Yjv6XII`-osNi*eT0V`w}A`<2&}# z{&CF;DWM1NFYF1ttHx-rnAZckC;Iqn4-ExjlS! zNz&&Eqc&;ozqgUrwYrDj(7XCMOW|L^$KCKuu@t>vS7w(_?+{nfhsi1`G%ptFmRc6z zgGB(U3Q#Fr^@W1&0SwjfX&DVjGXTj=ODYb~LqLv~ zZG$nQPoGvKC>3NykHse^CqH`##csoEeQ0kC*hupe`cK;Sk+RP2$`-goLvu;8Me{3{ zGx$PI2i(bAEvf^fQ$HLe2rToIHPtCX=yGVH+cE)c2j;iHj!YY2lAd7$Q^vXA09)X1 z9aj)wS-Le}oU#Kt1~AonxZRGV1Z^zC7cWZaiMp=;VP!ID%gyP6gwGMTkk9}iu>`$O z*$ZuWczL@f@?JOkY@+))TBocvV&;>9WWm%&jMCE57*Xk&!`;j@x}@q!OTvq%NtPA6 zkfP^b>a+XvA+NKb$*~;j^}SPbc!g`*G^Ke^}{a-i5uR8X)VY;@3Shn*EA@O(Vkb`kE-VitQ+j1r4iFAC>!F`3$2;z5?| z--x{OUfgA{xjIF)4j(HUD2;Aj1Vb1rSK`3x6Mk074*n{pd>3hm6D)Oqs;h#w4>Y^D zJv0|C< zI6QVCJmVcelt}5Q386_baqDtB{KP%ELSPIT&Wsblz&Qk_IHopTc$V8*T84?EdtMbJ zYIrI&NhQ_AV1K8@o@<9fz&Hz?DeAu~admTGT`;!uVSyUMrq^z(s)*A@__9{Fj9W}d zR>-L1%m;`*0ga^V8yp);_+?8LEO zvBe;SnTH*E%2O%LV$D4dr-@OSy51Xe@Nc;YQ-R2_m16xuu<1vG47bb&fQ(Sm^0g3|RJ`O5Hy_??=d-=Sk9ma26c=>}pQAqj@L)QaE6XiS2KNT*j0 zE7mH};c#uAO1ot*=&nPAH0)k<6r*R~ir*N5&mFEa*ZO?>>0x+G7WO;~D+fV%j9snn zTSW_ch7mUbw{2IB1sd?;bM6~tta<9WJZm1JLgdCa1ra12iR$(g#t#>!-NvzmPvitLCX^{K60)Y zxB&#wiP=ukYyg^h_P;wWFccqbz%K&L{eb>QNTMl3*@ADs>DIsIlp4<#{6@y$`j$Hk z(?&O-;^xQ^n#s@|P}nZV|0Jce{jOjw)4CD3om%L~NXEF96m5h5=~;82g743rbcRB( zjgnu9i$|4h2T4j4X#8?rz_O;SW)IZv89>bqF`s|sA_8)#nsfje+pofV6HB6 zCbY0NH<(g-DnUB}?RkUNf+M^p|rPhzodD+XX+X4H{<4x~tgQO%| zvMMPiDSk)uDdK9aqDZ?98@_Zf3Z;@MG_qA&zxMCB6*Ue_KS#~S=YQv1mXNa?m>nHl zlMMv(NI=sVEQQLEdf-~F)WegWo3I}C!M&xdJ%X0;NnomUG9T(%?cyVu3T1!0G;kgn z)RBe>YVpNkv&O2+fYB?NN|_YU9ERMF`(9jJyqO!wm;5;c1Pc#9Q7wFW#pPVIV8E6L zCTSPy8XXZ2K%d}36}mC%0^vBw!}q zJJzymP}z}+4wT4Ue9B25O8A=WMt#;j6T-ly|LuO^TiuVjVoQQLWadLp0DA;?#5r`^ zZ^KTr!}bZ;=J;oC*-r&~`b|ImU@D5?ZAx@{HOF&x%ACnV&)V`6f_PNS-y0f6!8iyj z3Q4V6bd!P!0$ymBeL7r`4G9fJoP;po&pKv!8~W{$Iro?n!dzeO5&`7-#7oR}Xyt^= z(2GSzBkk|sCi~ex8%>-%G(}oK7@nUnFA)SpxE4AILl(bx-L$+M%ip5W^?wMTBKo>p zz8$TJWWK5#d?QVCFC-^vg}Mft%W&XPx89a<5MhZ?E>vQf0Tc?LZk6lY*h~ z`aLEZoSD9}&MrbfN?vjHw;jmw5LmZ-Dk6ybdB5@8Uv0#Ii(LulSEM&6m-ET2F%mQhR3tq zRl2L(c>4sEH>-md0kr+Oe?R|Z9p;W;H~4Em6r-{7fk-((E+gREQ1?To;$Y6C2EWZ` zq0!XK3-H^!{&2K*WC65eV5IL`2yVR@K=tE1Mi*6!1lp@MkuYuv*L-CoO3#$1mwBTu-%r z5+=;r0Fv#L^z@;X>Peo!X#*A6N(-G-bk+heQ3wuYa25e)okAPD$B&6HP(jTIBq0_; z`I}A1B3kxWP5RAlkxDR2kU}APb28;~TAl67jb)V#dJUk3t$T0f;vE{Fh54hzCI=KNI z!u+W%StUwWfz%G4w~1(D3E8-_aD(Kv0S*NRTOv->6!0^xY|}!dT8ZDj=L2o=!GGH< z^g^WEC!FTyU*FpYB|bM4(9zgH&DCRmNgj3-F5_x?H_h?FYZedOvEwSGq2lN1O`xL& zWkecK2(Ph_eg&W3sZl=zPh#bO5$!dvnU%5<^~Ua%NY#wuLsrI6CgxNl{nbiM;DV-W z`sova0qn4gn{-hl7u{qF`@^#kiwUE(%Fie0prWIBK zU4<{aK>Pdm1@uCj=Bi-(?x6He`}Xh-2?d?&gILu@{g4g| zGc)vs@%z%l8OF)O!xLbq%eTPsCWjaNh$p4>;bVf+g`k~MZ=e3c>BbUidLFbsx)>9X zIW5~VTwy)dTLDEQULEV>UszTEL*H+hzT{xjRJ}sj*QqMU5=syf#~l$S^^cB)#OZq8 z$T#$!qFpt)U8A|%?DMk)lx0_-(>*->2GOfGInIFwH#zEOQ5C!3(=In$8^1+&c3m@^QA-2RSAI%_%56`j)$U{O@KSu>& zr%{YFm$?tl9blV`{lZ5->Oouc$GI>?<&z`;;l5~kQ?3L7*b3ymvFd3#X7iq+5OWL5 zBqWk4IACOMjvTBs(Z+ogSeXHcG5I0=JhcOqZR~JhmpQXCXQrybmPp|C5Pqif;RGZx zt&Py!l3iSb%(_aPLhyEh_zZ~aHGUOp6dN;dV5&4faX(t{48Z=Q6{^zrYud%7)jy0O zGb*sOXT-+a;?iPPv(NZ*N{hE>O*H zoeMS9&IkI2bIesiw|O%&q4;=+Vax=8J3 zg;u%qYQH*AKEq6Zi=zaz(_oGpCdTcQi=6Blf!cx8cP=K`?j<7*Hx0!AB&PdeQM_6 zK|V)GtyVGv=uluH5{&3m1-e1NvRGCti)UMTU6S7;@Vcc=YrPzxJLM1<6rbY8qufVi zQzEA~jYz=YTWr1kqN%526cD-astv0H@+vFM+{Y(lCK#X+;n;b$)>1iY60a-99AgYC zkTPHXa_VxJ~#3K?2Z85s!S0d|PUF4tPB4^m0`CZMY*6Crchz1TS zzA2`1vMR4Bp!u=T(TP{x>O{ix6TqdhkZ2Ja=(#EC6$TN<(AibBBSrVg|yO`}pz%tRHVEd8*?uV6NcEUGFVjSXC;J z`7A3K6-dDl5E&}X41_!u1!Mq*i_m&eX}07H9MbUc9%-_Zz6_EBIW*giDNRwu6nGCM zeM=wMQs3>47$)GPcUJ8?=gAC@i^(wMD z#;I4+r>G%xOG zIDv;|b`N;HX5Eiul_KsRe84_5 z_#t~r27{Hc&dzFkUbP8t?0D~KD<-$FIQ1Q6?*JA?I04h>3%|V!-kLP3nk^KF7vd46 zn0OLs`eOg1Mf;w@A-^Ii1pZ;t6(|NfT=&$c2#O9wrY@XZ&k;6DcQEWHdi{Cz_^&Ko z*3_bYMb6ZoP-R67VJ9DVoMqYVGG;M48SMn7byG-|X#12ovvM>QLaI^5&MZ^EQey0k ze38uPXqJPR6@!jwk%#qZ;>a%)|LAGFtw>UAs>Q(xYj?tso`bozhJ?;HoWbb+K^^!x z4nNDbn>@1mdgVd^sa7^p9y_)ngxs0J4`ys`YoqSVU2_5zG8l@Y?3(#d1;n0C7erY! z%NK`^)y}fCWzbzrLVEdUNAmP_lfrYWZQI?s2U+OE`42RtZHyTn{Sq@VTz*Bxbg(>wF)47?sI3nUG6Lyz&7#`>nOiQ$t%@HhB8GiZo zo7#?vxagg4BZ!;c@Jx>ckf~pN=(gXrYnDi5{P^PTu}DEx{wSxd%9x@-Zz$?e6@YxL zzUlXW2s^$IU6a}wY-(LHfS;+qJ8xa7trPIQv5S}M4UUbbQQXmg%&&`)(~fuv8WV`o z|ISZJ*mEg0YI5^W)+th)G^#(HykrRHEdQ)!GUa^;*9u?FRDT14!u+5EPb_s6>0@Q2 zh;S70`}T}0Y|5CbOEeDC_&CF_zE=8(<9BzK!nO%zCz1&6qSN^r!JIpoAp_a$3;cnJ zJV-C9f!W=!af_*P_64bxME)et2u-)4rp{2Cw8y^A3;877OE;%_E#0f}ZneIL?rPG> z&vbVvo)eI(v;WMK2q06d`}$M%#kpUY#Ugy||N8vv>tw~{0>GVTYEYdMA5b^`s2l%Kk7{=A)pYfG-pR#nwr1ax zq=0+dUIQvNE5cT{Q4hv{%ghq-f_$8ak(z15h=<6-FU)|Q2tebstPE?!U`wF>hXSPe z6o;i&6B1GO<&XwpD+9iLIaqRi968kUecyj>AW^yN_d%RYX2(}JiBzGzi zV?hLFLxQ6l2SE;9-kf@bEc^VJl(mdIse}D5z7da_kDRLIFlm@;?-hM9wU-RN@YGHF zu1C=V7a=xZ4E_AZ;Yghs7Q}9HL4zj!QU3Y7P?Z-+J3IkRS!q@g8}I2=wd@GJi_e$$ zK~(q){NyxG7iX;Qfs6m6DM{6g-XO0NeNlbJ|&CJY1%BJ9?;3@>{ z3uRv}Y#VGrfE3c*j}x6M>~>IjzvQ4J)KikrpS#q38uTxXG?|WpS&}~UFC(L_M!+N# zeT6s#OD!voI#aFNf>!QQjM2}Q?C57{Dd8Y?->ym0k2gDzie`MUP_kM6Qz>y545B3d zVhbtMWXJzzBP<5%vvKFf!_}M;;NtBfUAs`HoXW0!p8jNaDe!i9a+luKTS3z6PQdQL zkuPMst={e`CwwWu!&oNm@x(UrdlIg~VCREiDSxDWhVVF~6qg@SM@w2wD8Xjhvp&{_ zuut8ZfjY%l;(jDdudi9>{{nflAXG6M&vEpx%h^a5nv7(f{tjcjG(fWoua3P`aDyfIzRaR z>VYz^o*TOlpY1|N)C#RHY|~_c-%UI@5z9I)Nj7-VFlFq)i+t%vlSz621b^i&;OomnyLADP|m~8%kM2Lz2Mi7ZW1zQ5UTh*}*k+6vDjg<(sJpC5BOJ94`^0gy z*w*~%KyRZM8Y+m~G1G52uk%@%e!4aY*y;b+SyktwZnHmGsgXs(wF@qb)Ua|R<^wTd zgHYhW2J-ICZr)56Mv66+O?{~4ar~%5+9QS9#RnF@^3?aYY%Le->ELQQKNrjb8`i-u zp5@DZRn&EH!C`OMq~FC2bQwq_@+U%^>ea_ICeSGPh^v+?G7(i8gOXeYC{7keFzg!j zAFSxUDSjx!APF012$B~S7%og3;0{`?^0>SZ5&BZS%L$5BmM>LE+ge@7G2&GH;s$=_ z>$v;-RU;6O3=hBI54JNk4FKxHBzye?s9jmRWh=$7GEt^ZNyOj;a*4r$N);mSm7a%}F2+36FZ*)H}I_BZd7SG?e=l6$GbJ zvEU7#O|Qh~U)XKKepI?l1#RVoW+< zm}OrtfLUc@{LGTcC5YgJ=of{oBeabPBaMk0k63x?)80#NS_{)}gFxN~iYrP{j~J_L z-=t(Czl$6qMKD}Fz3mDP_lf&?SDRX0pk=FYFc);rpCV4YCI0$WbTHrX1%vn=eVn{9 zx9Iyto;YC2#y8a=zfwLMk1${0?;L+<5S=ttuwV;HXqNS_hmJ#QU~KyBk3c+pE%3wp z3p6s$j6O#%moyH5dl5jbz9#Zq_(X-r_W|n5tr=Ws_mnU&Ju8_3>~Guk8W;Lu;=O<_ z%WJDRdRGttOQFO$h54Wkfatfo7#1e4qmE-N)=9Uv^-d1*DB*r(=isQ+DqnVKx}QFq z$`+TVGcvVz3)wm#Xg@hB2Mj@j*BVZ=D$OF%JV|gI?a84&4dh^4nYZm^(e=Hqo`s!7 zaANH%{XQV=S1i!*dDx_8Z2c+br~{?Phnfo;+c*30@bG=Y(+8eYXwuA9I$;cKKjtH- z`mn>PQ42xs{;g-_rv@9`9g0US8~{cxjy<#dE| Date: Sat, 11 Jul 2020 17:05:48 +0800 Subject: [PATCH 16/19] Create weather2_pro.js --- weather2_pro.js | 1167 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 1167 insertions(+) create mode 100644 weather2_pro.js diff --git a/weather2_pro.js b/weather2_pro.js new file mode 100644 index 00000000..21f643f0 --- /dev/null +++ b/weather2_pro.js @@ -0,0 +1,1167 @@ +/* +可以自由定制显示的天气脚本,想怎样都随你,轻松修改轻松查看 +https://github.com/sazs34/TaskConfig/blob/master/assets/weather_pro.md + */ +let config = { + darksky_api: "4afd82c3bfa217d03c321a5d326a17e8", //从https://darksky.net/dev/ 上申请key填入即可 + aqicn_api: "f324ba395e9b9966c87e0b75ef1406ce8db82b66", //从http://aqicn.org/data-platform/token/#/ 上申请key填入即可 + huweather_apiKey: "48e684443a1c4efdb359497d40306227", //和风天气APIkey,可自行前往 https://dev.heweather.com/ 进行获取(注意key类型选WebApi) + lat_lon: "28.56098577776448,112.378940577069", //请填写经纬度,直接从谷歌地图中获取即可 + lang: "zh", //语言,随意切换为您想要的语言哦(zh/zh-tw/ja/en/fr/...) + log: 0, //调试日志,0为不开启,1为开启,2为开启精简日志 + timeout: 0, //超时时间,单位毫秒(1000毫秒=1秒),一般不推荐修改[为0则不限制超时时间] + show: { + //普通每天的 + template: { + title: `[天气日报] $[city]$[district] • $[summary]`, + subtitle: `$[weatherIcon]$[weather] $[temperatureMin] ~ $[temperatureMax]°C ☔️降雨概率 $[precipProbability]%`, + detail: `🥵空气质量 $[aqi]($[aqiDesc]) 🍃风速$[windSpeed]km/h $[windDir] +🌞紫外线指数 $[uv]($[uvDesc]) 💧湿度$[currentHumidity]% +🌡体感温度 $[apparentTemperatureMin] ~ $[apparentTemperatureMax]°C 💨气压$[atmosphere]pa + +[生活指数] +$[lifeStyle($[icon][$[brf]]$[txt])] + +[天气周报] • $[weeklySummary] +$[daily($[month]月$[day]日 $[temperatureLow]~$[temperatureHigh]°C $[weatherIcon]$[weather])]` + }, + lifestyle: { //此处用于显示各项生活指数,可自行调整顺序,顺序越在前面则显示也会靠前,如果您不想查看某一指数,置为false即可,想看置为true即可 + drsg: true, //穿衣指数, + flu: true, //感冒指数, + comf: true, //舒适度指数, + cw: true, //洗车指数, + sport: false, //运动指数, + trav: false, //旅游指数, + uv: false, //紫外线指数, + air: false, //空气污染扩散条件指数, + ac: false, //空调开启指数, + ag: false, //过敏指数, + gl: false, //太阳镜指数, + mu: false, //化妆指数, + airc: false, //晾晒指数, + ptfc: false, //交通指数, + fsh: false, //钓鱼指数, + spi: false, //防晒指数 + } + } +} + +const provider = { + heweather_now: { + api: `https://free-api.heweather.net/s6/weather/now?location=${config.lat_lon.replace(/\s/g, "").replace(",", ",")}&key=${config.huweather_apiKey}`, + progress: 0, //处理进度:0需处理1已处理2无需处理9报错 + timeoutNumber: 0, //超时处理编号 + data: { + basic: {}, + now: {} + }, + support: ['$[province]', '$[city]', '$[district]', '$[weatherIcon]', '$[weather]', '$[currentTemperature]', '$[currentWindSpeed]', '$[currentWindDir]', '$[currentWindPower]', '$[currentHumidity]', '$[currentAtmosphere]', '$[currentVisibility]'] + }, + heweather_daily: { + api: `https://free-api.heweather.net/s6/weather/forecast?location=${config.lat_lon.replace(/\s/g, "").replace(",", ",")}&key=${config.huweather_apiKey}`, + progress: 0, + timeoutNumber: 0, + data: {}, + support: ['$[temperatureMin]', '$[temperatureMax]', '$[precipProbability]', '$[windSpeed]', '$[windDir]', '$[windPower]', '$[humidity]', '$[atmosphere]', '$[visibility]', '$[uv]', '$[uvDesc]', '$[sunrise]', '$[sunset]', '$[moonrise]', '$[moonset]'] + }, + heweather_air: { + api: `https://free-api.heweather.net/s6/air/now?location=auto_ip&key=${config.huweather_apiKey}`, + progress: 0, + timeoutNumber: 0, + data: {}, + support: [] + }, + heweather_lifestyle: { + api: `https://free-api.heweather.net/s6/weather/lifestyle?location=${config.lat_lon.replace(/\s/g, "").replace(",", ",")}&key=${config.huweather_apiKey}`, + progress: 0, + timeoutNumber: 0, + data: [], + support: ['$[lifeStyle]'] + }, + darksky: { + api: `https://api.darksky.net/forecast/${config.darksky_api}/${config.lat_lon.replace(/\s/g, "").replace(",", ",")}?lang=${config.lang}&units=si`, + progress: 0, + timeoutNumber: 0, + data: { + daily: { + data: [] + }, + hourly: { + data: [] + }, + currently: {} + }, + support: ['$[summary]', '$[weeklySummary]', '$[weatherIcon]', '$[weather]', '$[temperatureMin]', '$[temperatureMax]', '$[apparentTemperatureMin]', '$[apparentTemperatureMax]', '$[precipProbability]', '$[uv]', '$[uvDesc]'] + }, + aqicn: { + api: `https://api.waqi.info/feed/geo:${config.lat_lon.replace(/\s/g, "").replace(",", ",").replace(/,/, ";")}/?token=${config.aqicn_api}`, + progress: 0, + data: {}, + support: ['$[aqiIcon]', '$[aqi]', '$[aqiDesc]', '$[aqiWarning]'] + } +} + +$tool = Tool() +$tool.log.level("error") +weather() + +$tool.done() + +// #region 天气数据获取 +function weather() { + support(); + heweatherNow(); + heweatherDaily(); + darksky(); + aqicn(); + heweatherLifestyle(); +} +//clear-day, partly-cloudy-day, cloudy, clear-night, rain, snow, sleet, wind, fog, or partly-cloudy-night +//☀️🌤⛅️🌥☁️🌦🌧⛈🌩🌨❄️💧💦🌫☔️☂️ ☃️⛄️ +function darksky() { + if (provider.darksky.progress == 2) return; + start("darksky"); + $tool.get({url: provider.darksky.api}, function (error, response, body) { + if (!error) { + try { + let darkObj = JSON.parse(body); + $tool.log.debug(`天气数据获取-A1-${body}`); + if (darkObj.error) { + $tool.notify("DarkApi", "出错啦", darkObj.error); + } + provider.darksky.data.daily = darkObj.daily; + provider.darksky.data.hourly = darkObj.hourly; + provider.darksky.data.currently = darkObj.currently; + $tool.log.debug(`天气数据获取-A2`); + check('darksky', true) + } catch (e) { + $tool.log.error(`天气数据A获取报错${JSON.stringify(e)}`) + } + } else { + $tool.log.error(`天气数据获取-A3-${reason.error}`); + check('darksky', false); + } + + }) +} + +function aqicn() { + if (provider.aqicn.progress == 2) return; + start("aqicn"); + $tool.get({url: provider.aqicn.api}, function (error, response, body) { + if (!error) { + try { + var waqiObj = JSON.parse(body); + if (waqiObj.status == 'error') { + $tool.notify("Aqicn", "出错啦", waqiObj.data); + } else { + $tool.log.debug(`天气数据获取-B1-${body}`); + provider.aqicn.data = { + ...getAqiInfo(waqiObj.data.aqi) + }; + } + check('aqicn', true) + } catch (e) { + $tool.log.error(`天气数据B获取报错${JSON.stringify(e)}`) + } + } else { + $tool.log.error(`天气数据获取-B2-${reason.error}`); + //获取精确数据失败后,直接获取粗略信息即可 + heweatherAir(); + } + }) +} + +function heweatherNow() { + start("heweather_now"); + $tool.get({url: provider.heweather_now.api}, function (error, response, body) { + if (!error) { + try { + $tool.log.debug(`天气数据获取-C1-${body}`); + var heObj = JSON.parse(body); + provider.heweather_now.data.basic = heObj.HeWeather6[0].basic; + provider.heweather_now.data.now = heObj.HeWeather6[0].now; + check('heweather_now', true) + } catch (e) { + $tool.log.error(`天气数据C获取报错${JSON.stringify(e)}`) + } + } else { + $tool.log.error(`天气数据获取-C2-${reason.error}`); + //因为此接口出错率还挺高的,所以即使报错我们也不处理,该返回什么就返回什么好了 + check('heweather_now', false) + } + }) +} + +function heweatherDaily() { + if (provider.heweather_daily.progress == 2) return; + start("heweather_daily"); + $tool.get({url: provider.heweather_daily.api}, function (error, response, body) { + if (!error) { + try { + $tool.log.debug(`天气数据获取-D1-${body}`); + var heObj = JSON.parse(body); + provider.heweather_daily.data = heObj.HeWeather6[0].daily_forecast[0]; + check('heweather_daily', true) + } catch (e) { + $tool.log.error(`天气数据D获取报错${JSON.stringify(e)}`) + } + } else { + $tool.log.error(`天气数据获取-D2-${reason.error}`); + //因为此接口出错率还挺高的,所以即使报错我们也不处理,该返回什么就返回什么好了 + check('heweather_daily', false) + } + }) +} + +function heweatherAir() { + if (provider.heweather_air.progress == 2) return; + start("heweather_air"); + $tool.get({url: provider.heweather_air.api}, function (error, response, body) { + if (!error) { + try { + $tool.log.debug(`天气数据获取F1-${body}`); + var heObj = JSON.parse(body); + provider.heweather_air.data = { + ...getAqiInfo(heObj.HeWeather6[0].air_now_city.aqi) + }; + check('heweather_air', true) + } catch (e) { + $tool.log.error(`天气数据F获取报错${JSON.stringify(e)}`) + } + } else { + $tool.log.error(`天气数据获取-F2-${reason.error}`); + //因为此接口出错率还挺高的,所以即使报错我们也不处理,该返回什么就返回什么好了 + check('heweather_air', false) + } + }) +} + +function heweatherLifestyle() { + if (provider.heweather_lifestyle.progress == 2) return; + start("heweather_lifestyle"); + var needRequest = false; + //判断一下是否全部都是false,全false的话,则不需要请求此接口直接返回渲染的数据了 + for (var item in config.show.lifestyle) { + if (config.show.lifestyle[item]) { + needRequest = true; + break; + } + } + if (needRequest) { + $tool.get({url: provider.heweather_lifestyle.api}, function (error, response, body) { + if (!error) { + try { + $tool.log.debug(`天气数据获取-E1-${body}`); + var heObj = JSON.parse(body); + provider.heweather_lifestyle.data = heObj.HeWeather6[0].lifestyle; + check('heweather_lifestyle', true) + } catch (e) { + $tool.log.error(`天气数据E获取报错${JSON.stringify(e)}`) + } + } else { + $tool.log.error(`天气数据获取-E2-${reason.error}`); + //因为此接口出错率还挺高的,所以即使报错我们也不处理,该返回什么就返回什么好了 + check('heweather_lifestyle', false) + } + }) + } else { + check('heweather_lifestyle', false) + } +} +//#endregion + +// #region 提醒数据组装 +function check(type, result) { + $tool.log.debug(`check-${type}-${result}`); + try { + //支持setTimeout居然不支持clearTimeout,有点难受 + if (provider[type].progress == 1 || provider[type].progress == 9) return; + provider[type].progress = result ? 1 : 9; + var isAllChecked = provider.heweather_now.progress != 0 && provider.heweather_daily.progress != 0 && provider.darksky.progress != 0 && (provider.aqicn.progress != 0 || provider.heweather_air.progress != 0) && provider.heweather_lifestyle.progress != 0; + // var isAllChecked = true + if (isAllChecked) { + $tool.log.debug(`天气数据渲染中[template]`); + try { + renderTemplate(); + } catch (e) { + $tool.log.error(`天气渲染出错-${JSON.stringify(e)}`); + } + } + } catch (lineerror) { + $tool.log.error(`check error: ${lineerror}`) + } +} + +var lineBreak = ` +`; + +function renderTemplate() { + execArrayTemplate(); + const map = { + //省 + province: provider.heweather_now.data.basic.admin_area, + //市 + city: provider.heweather_now.data.basic.parent_city, + //区 + district: provider.heweather_now.data.basic.location || "UNKNOW", + //全天气候变化概述 + summary: `${provider.darksky.data.hourly.summary||""}`, + //一周气候变化概述 + weeklySummary: `${provider.darksky.data.daily.summary||""}`, + //天气图标 + weatherIcon: `${getHeweatherIcon(provider.heweather_now.data.now.cond_code)||getDarkskyWeatherIcon(provider.darksky.data.hourly.icon)}`, + //天气描述(晴/雨/雪等) + weather: `${provider.heweather_now.data.now.cond_txt||getDarkskyWeatherDesc(provider.darksky.data.hourly.icon)}`, + //当前温度 + currentTemperature: `${provider.heweather_now.data.now.tmp}`, + //温度最低值 + temperatureMin: `${Math.round(provider.heweather_daily.data.tmp_min||provider.darksky.data.daily.data.get(0).temperatureMin)}`, + //温度最高值 + temperatureMax: `${Math.round(provider.heweather_daily.data.tmp_max||provider.darksky.data.daily.data.get(0).temperatureMax)}`, + //体感温度最低值 + apparentTemperatureMin: `${Math.round(provider.darksky.data.daily.data.get(0).apparentTemperatureLow)}`, + //体感温度最高值 + apparentTemperatureMax: `${Math.round(provider.darksky.data.daily.data.get(0).apparentTemperatureHigh)}`, + //降雨概率 + precipProbability: `${provider.heweather_daily.data.pop||(Number(provider.darksky.data.daily.data.get(0).precipProbability) * 100).toFixed(0)}`, + //空气质量图标 + aqiIcon: `${provider.aqicn.data.aqiIcon||provider.heweather_air.data.aqiIcon}`, + //空气质量 + aqi: `${provider.aqicn.data.aqi||provider.heweather_air.data.aqi}`, + //空气质量描述 + aqiDesc: `${provider.aqicn.data.aqiDesc||provider.heweather_air.data.aqiDesc}`, + //空气质量警告(提示) + aqiWarning: `${provider.aqicn.data.aqiWarning||provider.heweather_air.data.aqiWarning}`, + //全天风速 + windSpeed: `${provider.heweather_daily.data.wind_spd}`, + //当前风速 + currentWindSpeed: `${provider.heweather_now.data.now.wind_spd}`, + //全天风向 + windDir: `${provider.heweather_daily.data.wind_dir}`, + //当前风向 + currentWindDir: `${provider.heweather_now.data.now.wind_dir}`, + //全天风力 + windPower: `${provider.heweather_daily.data.wind_sc}`, + //当前风力 + currentWindPower: `${provider.heweather_now.data.now.wind_sc}`, + //全天相对湿度 + humidity: `${provider.heweather_daily.data.hum}`, + //当前相对湿度 + currentHumidity: `${provider.heweather_now.data.now.hum}`, + //全天大气压 + atmosphere: `${provider.heweather_daily.data.pres}`, + //当前大气压 + currentAtmosphere: `${provider.heweather_now.data.now.pres}`, + //全天能见度 + visibility: `${provider.heweather_daily.data.vis}`, + //当前能见度 + currentVisibility: `${provider.heweather_now.data.now.vis}`, + //紫外线等级 + uv: `${provider.heweather_daily.data.uv_index||provider.darksky.data.daily.data.get(0).uvIndex}`, + //紫外线描述 + uvDesc: `${getUVDesc(provider.heweather_daily.data.uv_index||provider.darksky.data.daily.data.get(0).uvIndex)}`, + //日出时间 + sunrise: `${provider.heweather_daily.data.sr}`, + //日落时间 + sunset: `${provider.heweather_daily.data.ss}`, + //月出时间 + moonrise: `${provider.heweather_daily.data.mr}`, + //月落时间 + moonset: `${provider.heweather_daily.data.ms}`, + } + var notifyInfo = { + title: execTemplate(config.show.template.title, map), + subtitle: execTemplate(config.show.template.subtitle, map), + detail: execTemplate(config.show.template.detail, map), + }; + $tool.notify(notifyInfo.title, notifyInfo.subtitle, notifyInfo.detail); +} +// #endregion + +// #region 数据处理方法 +function getHeweatherIcon(code) { + var codeMap = { + _100: '☀️', + _101: '☁️', + _102: '☁️', + _103: '⛅️', + _104: '☁️', + _200: '💨', + _201: '🌬', + _202: '🌬', + _203: '🌬', + _204: '🌬', + _205: '🌬', + _206: '💨', + _207: '💨', + _208: '💨', + _209: '🌪', + _210: '🌪', + _211: '🌪', + _212: '🌪', + _213: '🌪', + _300: '🌨', + _301: '🌨', + _302: '⛈', + _303: '⛈', + _304: '⛈', + _305: '💧', + _306: '💦', + _307: '🌧', + _308: '🌧', + _309: '☔️', + _310: '🌧', + _311: '🌧', + _312: '🌧', + _313: '🌧❄️', + _314: '💧', + _315: '💦', + _316: '🌧', + _317: '🌧', + _318: '🌧', + _399: '🌧', + _400: '🌨', + _401: '🌨', + _402: '☃️', + _403: '❄️', + _404: '🌨', + _405: '🌨', + _406: '🌨', + _407: '🌨', + _408: '🌨', + _409: '🌨', + _410: '❄️', + _499: '⛄️', + _500: '🌫', + _501: '🌫', + _502: '🌫', + _503: '🌫', + _504: '🌫', + _505: '🌫', + _506: '🌫', + _507: '🌫', + _508: '🌫', + _509: '🌫', + _510: '🌫', + _511: '🌫', + _512: '🌫', + _513: '🌫', + _514: '🌫', + _515: '🌫', + _900: '🔥', + _901: '⛄️', + _999: '❓', + } + return codeMap[`_${code}`] ? codeMap[`_${code}`] : ""; +} + +function getDarkskyWeatherIcon(icon_text) { + let icon = "❓" + if (icon_text == "clear-day") icon = "☀️"; + if (icon_text == "partly-cloudy-day") icon = "🌤"; + if (icon_text == "cloudy") icon = "☁️"; + if (icon_text == "rain") icon = "🌧"; + if (icon_text == "snow") icon = "☃️"; + if (icon_text == "sleet") icon = "🌨"; + if (icon_text == "wind") "🌬"; + if (icon_text == "fog") icon = "🌫"; + if (icon_text == "partly-cloudy-night") icon = "🌑"; + if (icon_text == "clear-night") icon = "🌑"; + return icon; +} + +function getDarkskyWeatherDesc(icon_text) { + let icon = "未知" + if (icon_text == "clear-day") icon = `晴`; + if (icon_text == "partly-cloudy-day") icon = `晴转多云`; + if (icon_text == "cloudy") icon = `多云`; + if (icon_text == "rain") icon = `雨`; + if (icon_text == "snow") icon = `雪`; + if (icon_text == "sleet") icon = `雨夹雪`; + if (icon_text == "wind") icon = `大风`; + if (icon_text == "fog") icon = `大雾`; + if (icon_text == "partly-cloudy-night") icon = `多云`; + if (icon_text == "clear-night") icon = `晴`; + return icon; +} + +function getCityInfo(name) { + var loc; + try { + var locArr = name.split(/[(),,()]/) + if (locArr.length >= 4) { + loc = locArr[2] + " "; + } else if (locArr.length >= 2) { + loc = locArr[1] + " "; + } else { + loc = ""; //此时会很长,还不如不显示了 + } + } catch (e) { + loc = ''; + $tool.log.error(`获取城市名称失败-${JSON.stringify(e)}`); + } + return loc; +} + +function getAqiInfo(aqi) { + var aqiDesc = ""; + var aqiIcon = ""; + var aqiWarning = ""; + if (aqi > 300) { + aqiIcon = `🟤`; + aqiDesc = `严重污染`; + aqiWarning = "儿童、老人、呼吸系统等疾病患者及一般人群停止户外活动"; + } else if (aqi > 200) { + aqiIcon = `🟣`; + aqiDesc = `重度污染`; + aqiWarning = "儿童、老人、呼吸系统等疾病患者及一般人群停止或减少户外运动"; + } else if (aqi > 150) { + aqiIcon = `🔴`; + aqiDesc = `中度污染`; + aqiWarning = "儿童、老人、呼吸系统等疾病患者及一般人群减少户外活动"; + } else if (aqi > 100) { + aqiIcon = `🟠`; + aqiDesc = `轻度污染`; + aqiWarning = "老人、儿童、呼吸系统等疾病患者减少长时间、高强度的户外活动"; + } else if (aqi > 50) { + aqiIcon = `🟡`; + aqiDesc = `良好`; + aqiWarning = "极少数敏感人群应减少户外活动"; + } else { + aqiIcon = `🟢`; + aqiDesc = `优`; + } + return { + aqi, + aqiIcon, + aqiDesc, + aqiWarning + }; +} + +function getUVDesc(daily_uvIndex) { + var uvDesc = ""; + if (daily_uvIndex >= 10) { + uvDesc = "五级-特别强"; + } else if (daily_uvIndex >= 7) { + uvDesc = "四级-很强"; + } else if (daily_uvIndex >= 5) { + uvDesc = "三级-较强"; + } else if (daily_uvIndex >= 3) { + uvDesc = "二级-较弱"; + } else { + uvDesc = "一级-最弱"; + } + return uvDesc; +} +// #endregion + +// #region 模板相关 +/** + * 用于标识该接口已执行,如果有使用超时设置则此操作是有意义的 + * @param {String} type 具体的接口执行类型 + */ +function start(type) { + if (config.timeout > 0) { + provider[type].timeoutNumber = setTimeout(() => { + check(type, false); + }, config.timeout); + } +} +/** + * 判断哪些接口需要进行处理,减少网络请求 + */ +function support() { + let regex = /\$\[([a-z,A-Z,0-9]*)\]/g; + const template = `${config.show.template.title}${config.show.template.subtitle}${config.show.template.detail}`.match(regex); + provider.heweather_now.progress = template.filter((item, filter) => { + return provider.heweather_now.support.indexOf(item) != -1; + }).length > 0 ? 0 : 2; + provider.heweather_daily.progress = template.filter((item, filter) => { + return provider.heweather_daily.support.indexOf(item) != -1; + }).length > 0 ? 0 : 2; + // provider.heweather_air.progress = template.filter((item, filter) => { + // return provider.heweather_air.support.indexOf(item) != -1; + // }).length > 0 ? 0 : 2; + provider.heweather_lifestyle.progress = template.filter((item, filter) => { + let regexLifestyle = /\$\[(lifeStyle\()+([\s\S]+?)(\))+\]/g; + return regexLifestyle.test(config.show.lifestyle) ? 0 : 2; + }).length > 0 ? 0 : 2; + provider.aqicn.progress = template.filter((item, filter) => { + return provider.aqicn.support.indexOf(item) != -1; + }).length > 0 ? 0 : 2; + provider.darksky.progress = template.filter((item, filter) => { + return provider.darksky.support.indexOf(item) != -1; + }).length > 0 ? 0 : 2; + if (provider.darksky.progress == 2) { + //如果 + let regexDaily = /\$\[(daily\()+([\s\S]+?)(\))+\]/g; + let regexHourly = /\$\[(hourly\()+([\s\S]+?)(\))+\]/g; + provider.darksky.progress = (regexDaily.test(config.show.template.detail) || regexHourly.test(config.show.template.detail)) ? 0 : 2; + } + $tool.log.debug(`h_n:${provider.heweather_now.progress},h_d:${provider.heweather_daily.progress},h_a:${provider.heweather_air.progress},h_l:${provider.heweather_lifestyle.progress},aq:${provider.aqicn.progress},da:${provider.darksky.progress}`) +} +/** + * 用于普通模板的映射 + * @param {String} template 模板内容 + * @param {Object} map 映射内容 + */ +function execTemplate(template, map) { + if (!template) return ""; + let regex = /\$\[([a-z,A-Z,0-9]*)\]/g; + if (regex.test(template)) { + for (item of template.match(regex)) { + item.match(regex); + if (RegExp.$1 && map[RegExp.$1]) { + template = template.replace(item, map[RegExp.$1]); + } else { + template = template.replace(item, ""); + } + } + } + return template; +} + +function execArrayTemplate() { + try { + execTemplateLifestyle(); + execTemplateDaily(); + execTemplateHourly(); + } catch (e) { + $tool.log.error(`${JSON.stringify(e)}`) + } + +} + +function execTemplateLifestyle() { + let regexLifestyle = /\$\[(lifeStyle\()+([\s\S]+?)(\))+\]/g; + if (provider.heweather_lifestyle.data <= 0) { + config.show.template.detail.replace(regexLifestyle, '') + } + let result = []; + if (regexLifestyle.test(config.show.template.detail)) { + let lsMap = { //此处用于显示各项生活指数,可自行调整顺序,顺序越在前面则显示也会靠前,如果您不想查看某一指数,置为false即可,想看置为true即可 + drsg: { + icon: '👔', + type: '穿衣指数' + }, + flu: { + icon: '🤧', + type: '感冒指数' + }, + comf: { + icon: '😊', + type: '舒适度指数' + }, + cw: { + icon: '🚗', + type: '洗车指数' + }, + sport: { + icon: '🏃🏻', + type: '运动指数' + }, + trav: { + icon: '🌴', + type: '旅游指数' + }, + uv: { + icon: '☂️', + type: '紫外线指数' + }, + air: { + icon: '🌫', + type: '空气污染扩散条件指数' + }, + ac: { + icon: '❄️', + type: '空调开启指数' + }, + ag: { + icon: '😷', + type: '过敏指数' + }, + gl: { + icon: '🕶', + type: '太阳镜指数' + }, + mu: { + icon: '💄', + type: '化妆指数' + }, + airc: { + icon: '🧺', + type: '晾晒指数' + }, + ptfc: { + icon: '🚥', + type: '交通指数' + }, + fsh: { + icon: '🎣', + type: '钓鱼指数' + }, + spi: { + icon: '🔆', + type: '防晒指数' + }, + } + config.show.template.detail.match(regexLifestyle); + var rangeTemplate = RegExp.$2; //此处拿到的是要替换的列表显示部分了 + let regex = /\$\[([a-z,A-Z,0-9]*)\]/g; + var template = rangeTemplate.match(regex); + for (life of provider.heweather_lifestyle.data) { + if (!config.show.lifestyle[life.type]) continue; + var singleInfo = rangeTemplate; + for (item of template) { + item.match(regex); + if (RegExp.$1 == "icon") { + singleInfo = singleInfo.replace(item, lsMap[life.type].icon) + } else if (RegExp.$1 == "type") { + singleInfo = singleInfo.replace(item, lsMap[life.type].type) + } else { + singleInfo = singleInfo.replace(item, life[RegExp.$1]) + } + } + result.push(singleInfo); + } + config.show.template.detail = config.show.template.detail.replace(regexLifestyle, result.join(lineBreak)); + } +} + +function execTemplateDaily() { + let regexDaily = /\$\[(daily\()+([\s\S]+?)(\))+\]/g; + if (provider.darksky.data.daily.data.length <= 0) { + config.show.template.detail.replace(regexDaily, '') + } + let result = []; + if (regexDaily.test(config.show.template.detail)) { + config.show.template.detail.match(regexDaily); + var rangeTemplate = RegExp.$2; //此处拿到的是要替换的列表显示部分了 + let regex = /\$\[([a-z,A-Z,0-9]*)\]/g; + var template = rangeTemplate.match(regex); + for (daily of provider.darksky.data.daily.data) { + var singleInfo = rangeTemplate; + for (item of template) { + item.match(regex); + if (RegExp.$1 == "month") { + singleInfo = singleInfo.replace(item, (`${daily["time"]}`).toDateTime().Format("MM")); + } else if (RegExp.$1 == "day") { + singleInfo = singleInfo.replace(item, (`${daily["time"]}`).toDateTime().Format("dd")); + } else if (RegExp.$1 == "weatherIcon") { + singleInfo = singleInfo.replace(item, getDarkskyWeatherIcon(daily.icon)); + } else if (RegExp.$1 == "weather") { + singleInfo = singleInfo.replace(item, getDarkskyWeatherDesc(daily.icon)); + } else if (RegExp.$1 == "uvDesc") { + singleInfo = singleInfo.replace(item, getUVDesc(daily.uvIndex)); + } else if (RegExp.$1 == "cloudCover") { + singleInfo = singleInfo.replace(item, daily.cloudCover * 100); + } else if (RegExp.$1 == "temperatureHigh") { + singleInfo = singleInfo.replace(item, Math.round(daily.temperatureHigh)); + } else if (RegExp.$1 == "temperatureLow") { + singleInfo = singleInfo.replace(item, Math.round(daily.temperatureLow)); + } else if (RegExp.$1 == "apparentTemperatureMax") { + singleInfo = singleInfo.replace(item, Math.round(daily.apparentTemperatureMax)); + } else if (RegExp.$1 == "apparentTemperatureMin") { + singleInfo = singleInfo.replace(item, Math.round(daily.apparentTemperatureMin)); + } else if (RegExp.$1 && daily[RegExp.$1] != undefined) { + singleInfo = singleInfo.replace(item, daily[RegExp.$1]); + } + } + result.push(singleInfo); + } + config.show.template.detail = config.show.template.detail.replace(regexDaily, result.join(lineBreak)); + } +} + +function execTemplateHourly() { + let regexHourly = /\$\[(hourly\()+([\s\S]+?)(\))+\]/g; + if (provider.darksky.data.hourly.data.length <= 0) { + config.show.template.detail.replace(regexHourly, '') + } + let result = []; + if (regexHourly.test(config.show.template.detail)) { + config.show.template.detail.match(regexHourly); + var rangeTemplate = RegExp.$2; //此处拿到的是要替换的列表显示部分了 + let regex = /\$\[([a-z,A-Z,0-9]*)\]/g; + var template = rangeTemplate.match(regex); + for (hourly of provider.darksky.data.hourly.data) { + var singleInfo = rangeTemplate; + for (item of template) { + item.match(regex); + if (RegExp.$1 == "month") { + singleInfo = singleInfo.replace(item, (`${hourly["time"]}`).toDateTime().Format("MM")); + } else if (RegExp.$1 == "day") { + singleInfo = singleInfo.replace(item, (`${hourly["time"]}`).toDateTime().Format("dd")); + } else if (RegExp.$1 == "hour") { + singleInfo = singleInfo.replace(item, (`${hourly["time"]}`).toDateTime().Format("hh")); + } else if (RegExp.$1 == "weatherIcon") { + singleInfo = singleInfo.replace(item, getDarkskyWeatherIcon(hourly.icon)); + } else if (RegExp.$1 == "weather") { + singleInfo = singleInfo.replace(item, getDarkskyWeatherDesc(hourly.icon)); + } else if (RegExp.$1 == "uvDesc") { + singleInfo = singleInfo.replace(item, getUVDesc(hourly.uvIndex)); + } else if (RegExp.$1 == "cloudCover") { + singleInfo = singleInfo.replace(item, hourly.cloudCover * 100); + } else if (RegExp.$1 == "temperature") { + singleInfo = singleInfo.replace(item, Math.round(hourly.temperature)); + } else if (RegExp.$1 == "apparentTemperature") { + singleInfo = singleInfo.replace(item, Math.round(hourly.apparentTemperature)); + } else if (RegExp.$1 && hourly[RegExp.$1] != undefined) { + singleInfo = singleInfo.replace(item, hourly[RegExp.$1]); + } + } + result.push(singleInfo); + } + config.show.template.detail = config.show.template.detail.replace(regexHourly, result.join(lineBreak)); + } +} + +// #endregion + +// #region 扩展方法 +Array.prototype.get = function (index, defaultValue = {}) { + if (index >= 0 && this.length > 0 && this.length >= index + 1) { + return this[index]; + } else { + return defaultValue; + } +} +String.prototype.toDateTime = function () { + var time = parseInt(this + '000'); + return new Date(time); +} +Date.prototype.Format = function (fmt) { + var o = { + "M+": this.getMonth() + 1, //月份 + "d+": this.getDate(), //日 + "h+": this.getHours(), //小时 + "m+": this.getMinutes(), //分 + "s+": this.getSeconds(), //秒 + "q+": Math.floor((this.getMonth() + 3) / 3), //季度 + "S": this.getMilliseconds() //毫秒 + }; + if (/(y+)/.test(fmt)) + fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length)); + for (var k in o) + if (new RegExp("(" + k + ")").test(fmt)) + fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length))); + return fmt; +} +// #endregion + +// https://github.com/yichahucha/surge/blob/master/tool.js +//https://github.com/chavyleung/scripts/blob/master/chavy.js +// 工具方法编写参考了以上脚本,在此感谢 🙏 +function Tool() { + // app + const _isQuanX = typeof $task != "undefined" + const _isSurge = typeof $httpClient != "undefined" + const _isJSBox = typeof $app != "undefined" && $app.info.bundleID == "app.cyan.jsbox" + const _isNode = typeof require == "function" && !_isJSBox + + // environment + const _isRequest = typeof $request != "undefined" + const _isResponse = typeof $response != "undefined" + + const ishttp = _isRequest || _isResponse + + // require Tools + const _requireTools = (() => { + var tools = {} + if (typeof require == "function") { + let request = require('request') + if (request) tools.request = request + let fs = require("fs") + if (fs) tools.fs = fs + } + return tools + })() + + // config + const _nodeStoreName = "prefs.json" + + // custom log + // if you want to add log level, just add to _logLevels + const _log = (() => { + // default log value + let _logLevel = "debug" + + const _logLevels = new Array("trace", "debug", "info", "warn", "error", "fatal") + + // 默认显示日志等级 + let _isShowLevel = true + + // 设置日志等级,返回值为当前等级 + const _setLogLevel = (level = "") => { + if (_logLevels.indexOf(level) > -1) { + _logLevel = level + } + return _logLevel + } + + const showLevel = (isShow) => { + if (typeof isShow == "boolean") { + _isShowLevel = isShow + } + return _isShowLevel + } + + // 过滤低等级日志信息 + const _filterLog = (level, callback) => { + let index = _logLevels.indexOf(level) + let current = _logLevels.indexOf(_setLogLevel()) + if (index > -1) { + if (index >= current) { + callback() + } + } else { + callback() + } + } + + const _setLogFunction = (level) => { + return (message) => { + _filterLog(level, (() => { + if (showLevel()) { + console.log(`<${level}> ${message}`) + } else { + console.log(message) + } + })) + } + } + + let level = _setLogLevel + let log = _filterLog + var logFunc = {level, log, showLevel} + _logLevels.forEach((item) => { + logFunc[item] = _setLogFunction(item) + }) + + return logFunc + }) + + const log = _log() + + // setTimeout + const timeout = (() => { + if (typeof setTimeout != "undefined") { + return setTimeout + } + return (handler, timeout = 0) => { + handler() + } + })() + + // notification + const notify = (title, subtitle, message) => { + if (_isQuanX) { + $notify(title, subtitle, message) + } + if (_isSurge) { + $notification.post(title, subtitle, message) + } + if (_isNode) { + console.log(JSON.stringify({title, subtitle, message})) + } + if (_isJSBox) { + if (subtitle && message) { + $push.schedule({title: title, body: subtitle + "\n" + message}) + } else { + $push.schedule({title: title, body: subtitle + message}) + } + } + } + + // store + const read = (key) => { + if (_isQuanX) return $prefs.valueForKey(key) + if (_isSurge) return $persistentStore.read(key) + if (_isJSBox) return _jsBoxRead(key) + if (_isNode) return _nodeRead(key) + } + + const write = (value, key) => { + if (_isQuanX) return $prefs.setValueForKey(value, key) + if (_isSurge) return $persistentStore.write(value, key) + if (_isJSBox) return _jsBoxWrite(value, key) + if (_isNode) return _nodeWrite(value, key) + } + + const _nodeRead = (key) => { + try { + var data = JSON.parse(_requireTools.fs.readFileSync(_nodeStoreName)) + if (typeof data[key] != "undefined") { + return data[key] + } + } catch (error) { + log.error(error) + } + return "" + } + + const _nodeWrite = (value, key) => { + try { + if (!_requireTools.fs.existsSync(_nodeStoreName)) { + _requireTools.fs.writeFileSync(_nodeStoreName, JSON.stringify({})) + } + var data = JSON.parse(_requireTools.fs.readFileSync(_nodeStoreName)) + data[key] = value + _requireTools.fs.writeFileSync(_nodeStoreName, JSON.stringify(data)) + return true + } catch (error) { + log.error(error) + } + return false + } + + const _jsBoxRead = (key) => { + try { + if (_jsBoxEnvName != "icloud") { + return $prefs.get(key) + } + if (typeof $drive != "undefined") { + let filePath = "Code/" + _nodeStoreName + if ($drive.exists(filePath)) { + let content = $drive.read(filePath) + if (content) { + let data = JSON.parse(content) + if (typeof data[key] != "undefined") { + return data[key] + } + } + } + } + } catch (error) { + log.error(error) + } + return "" + } + + const _jsBoxWrite = (value, key) => { + try { + if (_jsBoxEnvName != "icloud") { + return $prefs.set(key, value) + } + if (typeof $drive != "undefined") { + let filePath = "Code/" + _nodeStoreName + var data = {} + if ($drive.exists(filePath)) { + let content = $drive.read(filePath) + data = JSON.parse(content) + } + data[key] = value + return $drive.write({data: $data({string: JSON.stringify(data)}), path: filePath}) + } + } catch (error) { + log.error(error) + } + return false + } + + const _jsBoxEnvName = (() => { + if (typeof $addin != "undefined") { + if (typeof $addin.current == "undefined") { + // 运行在icloud + return "icloud" + } else { + + let _version = typeof $addin.current.version != "undefined" + let _author = typeof $addin.current.author != "undefined" + let _url = typeof $addin.current.url != "undefined" + let _website = typeof $addin.current.website != "undefined" + if (_version || _author || _url || _website) { + // jsBox 应用 + return "app" + } else { + // jsBox 脚本 + return "script" + } + } + } + return "" + })() + + // http request + const get = (options, callback) => { + if (_isQuanX) { + if (typeof options == "string") options = {url: options} + options["method"] = "GET" + $task.fetch(options).then(response => { + callback(null, _status(response), response.body) + }, reason => callback(reason.error, null, null)) + } + if (_isSurge) $httpClient.get(options, (error, response, body) => { + callback(error, _status(response), body) + }); + if (_isNode) { + _requireTools.request(options, (error, response, body) => { + callback(error, _status(response), body) + }) + } + if (_isJSBox) $http.get(_jsBoxRequest(options, callback)) + } + const post = (options, callback) => { + if (_isQuanX) { + if (typeof options == "string") options = {url: options} + options["method"] = "POST" + $task.fetch(options).then(response => { + callback(null, _status(response), response.body) + }, reason => callback(reason.error, null, null)) + } + if (_isSurge) { + $httpClient.post(options, (error, response, body) => { + callback(error, _status(response), body) + }) + } + if (_isNode) { + _requireTools.request.post(options, (error, response, body) => { + callback(error, _status(response), body) + }) + } + if (_isJSBox) $http.post(_jsBoxRequest(options, callback)) + } + + const _jsBoxRequest = (options, callback) => { + if (typeof options == "string") options = {url: options} + options["header"] = options["headers"] + delete options["headers"] + let body = options["body"] + if (typeof body != "undefined") { + try { + body = JSON.parse(body) + options["body"] = body + } catch (e) { + } + } + options["handler"] = function (resp) { + let error = resp.error + if (error) error = JSON.stringify(resp.error) + let body = resp.data + if (typeof body == "object") body = JSON.stringify(resp.data) + callback(error, _status(resp.response), body) + } + return options + } + + const _status = (response) => { + if (response) { + if (response.status) { + response["statusCode"] = response.status + } else if (response.statusCode) { + response["status"] = response.statusCode + } + } + return response + } + + // done + const done = (value = {}) => { + if (_isQuanX) ishttp ? $done(value) : "" + if (_isSurge) ishttp ? $done(value) : $done() + } + + return {read, write, notify, get, post, ishttp, log, timeout, done} +} From e2b12d44216ad688370a085bd341e1d467c870bf Mon Sep 17 00:00:00 2001 From: MuTu <59136159+githubdulong@users.noreply.github.com> Date: Sat, 11 Jul 2020 17:06:02 +0800 Subject: [PATCH 17/19] Delete cs --- cs | 1 - 1 file changed, 1 deletion(-) delete mode 100644 cs diff --git a/cs b/cs deleted file mode 100644 index 841618ab..00000000 --- a/cs +++ /dev/null @@ -1 +0,0 @@ -cs From f5bf132b1a6779e727d2c2ce864be3f5c84063be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=9C=E9=BE=99?= <261765971@qq.com> Date: Mon, 6 Sep 2021 23:27:33 +0800 Subject: [PATCH 18/19] weather2_pro.js --- weather2_pro.js | 1 + 1 file changed, 1 insertion(+) diff --git a/weather2_pro.js b/weather2_pro.js index 21f643f0..812cbcee 100644 --- a/weather2_pro.js +++ b/weather2_pro.js @@ -1,4 +1,5 @@ /* + 可以自由定制显示的天气脚本,想怎样都随你,轻松修改轻松查看 https://github.com/sazs34/TaskConfig/blob/master/assets/weather_pro.md */ From 2864ead90730c35256885bcd3c7c5d5eac0aeed5 Mon Sep 17 00:00:00 2001 From: MuTu <59136159+githubdulong@users.noreply.github.com> Date: Mon, 6 Sep 2021 23:31:26 +0800 Subject: [PATCH 19/19] Delete weather2_pro.js --- weather2_pro.js | 1168 ----------------------------------------------- 1 file changed, 1168 deletions(-) delete mode 100644 weather2_pro.js diff --git a/weather2_pro.js b/weather2_pro.js deleted file mode 100644 index 812cbcee..00000000 --- a/weather2_pro.js +++ /dev/null @@ -1,1168 +0,0 @@ -/* - -可以自由定制显示的天气脚本,想怎样都随你,轻松修改轻松查看 -https://github.com/sazs34/TaskConfig/blob/master/assets/weather_pro.md - */ -let config = { - darksky_api: "4afd82c3bfa217d03c321a5d326a17e8", //从https://darksky.net/dev/ 上申请key填入即可 - aqicn_api: "f324ba395e9b9966c87e0b75ef1406ce8db82b66", //从http://aqicn.org/data-platform/token/#/ 上申请key填入即可 - huweather_apiKey: "48e684443a1c4efdb359497d40306227", //和风天气APIkey,可自行前往 https://dev.heweather.com/ 进行获取(注意key类型选WebApi) - lat_lon: "28.56098577776448,112.378940577069", //请填写经纬度,直接从谷歌地图中获取即可 - lang: "zh", //语言,随意切换为您想要的语言哦(zh/zh-tw/ja/en/fr/...) - log: 0, //调试日志,0为不开启,1为开启,2为开启精简日志 - timeout: 0, //超时时间,单位毫秒(1000毫秒=1秒),一般不推荐修改[为0则不限制超时时间] - show: { - //普通每天的 - template: { - title: `[天气日报] $[city]$[district] • $[summary]`, - subtitle: `$[weatherIcon]$[weather] $[temperatureMin] ~ $[temperatureMax]°C ☔️降雨概率 $[precipProbability]%`, - detail: `🥵空气质量 $[aqi]($[aqiDesc]) 🍃风速$[windSpeed]km/h $[windDir] -🌞紫外线指数 $[uv]($[uvDesc]) 💧湿度$[currentHumidity]% -🌡体感温度 $[apparentTemperatureMin] ~ $[apparentTemperatureMax]°C 💨气压$[atmosphere]pa - -[生活指数] -$[lifeStyle($[icon][$[brf]]$[txt])] - -[天气周报] • $[weeklySummary] -$[daily($[month]月$[day]日 $[temperatureLow]~$[temperatureHigh]°C $[weatherIcon]$[weather])]` - }, - lifestyle: { //此处用于显示各项生活指数,可自行调整顺序,顺序越在前面则显示也会靠前,如果您不想查看某一指数,置为false即可,想看置为true即可 - drsg: true, //穿衣指数, - flu: true, //感冒指数, - comf: true, //舒适度指数, - cw: true, //洗车指数, - sport: false, //运动指数, - trav: false, //旅游指数, - uv: false, //紫外线指数, - air: false, //空气污染扩散条件指数, - ac: false, //空调开启指数, - ag: false, //过敏指数, - gl: false, //太阳镜指数, - mu: false, //化妆指数, - airc: false, //晾晒指数, - ptfc: false, //交通指数, - fsh: false, //钓鱼指数, - spi: false, //防晒指数 - } - } -} - -const provider = { - heweather_now: { - api: `https://free-api.heweather.net/s6/weather/now?location=${config.lat_lon.replace(/\s/g, "").replace(",", ",")}&key=${config.huweather_apiKey}`, - progress: 0, //处理进度:0需处理1已处理2无需处理9报错 - timeoutNumber: 0, //超时处理编号 - data: { - basic: {}, - now: {} - }, - support: ['$[province]', '$[city]', '$[district]', '$[weatherIcon]', '$[weather]', '$[currentTemperature]', '$[currentWindSpeed]', '$[currentWindDir]', '$[currentWindPower]', '$[currentHumidity]', '$[currentAtmosphere]', '$[currentVisibility]'] - }, - heweather_daily: { - api: `https://free-api.heweather.net/s6/weather/forecast?location=${config.lat_lon.replace(/\s/g, "").replace(",", ",")}&key=${config.huweather_apiKey}`, - progress: 0, - timeoutNumber: 0, - data: {}, - support: ['$[temperatureMin]', '$[temperatureMax]', '$[precipProbability]', '$[windSpeed]', '$[windDir]', '$[windPower]', '$[humidity]', '$[atmosphere]', '$[visibility]', '$[uv]', '$[uvDesc]', '$[sunrise]', '$[sunset]', '$[moonrise]', '$[moonset]'] - }, - heweather_air: { - api: `https://free-api.heweather.net/s6/air/now?location=auto_ip&key=${config.huweather_apiKey}`, - progress: 0, - timeoutNumber: 0, - data: {}, - support: [] - }, - heweather_lifestyle: { - api: `https://free-api.heweather.net/s6/weather/lifestyle?location=${config.lat_lon.replace(/\s/g, "").replace(",", ",")}&key=${config.huweather_apiKey}`, - progress: 0, - timeoutNumber: 0, - data: [], - support: ['$[lifeStyle]'] - }, - darksky: { - api: `https://api.darksky.net/forecast/${config.darksky_api}/${config.lat_lon.replace(/\s/g, "").replace(",", ",")}?lang=${config.lang}&units=si`, - progress: 0, - timeoutNumber: 0, - data: { - daily: { - data: [] - }, - hourly: { - data: [] - }, - currently: {} - }, - support: ['$[summary]', '$[weeklySummary]', '$[weatherIcon]', '$[weather]', '$[temperatureMin]', '$[temperatureMax]', '$[apparentTemperatureMin]', '$[apparentTemperatureMax]', '$[precipProbability]', '$[uv]', '$[uvDesc]'] - }, - aqicn: { - api: `https://api.waqi.info/feed/geo:${config.lat_lon.replace(/\s/g, "").replace(",", ",").replace(/,/, ";")}/?token=${config.aqicn_api}`, - progress: 0, - data: {}, - support: ['$[aqiIcon]', '$[aqi]', '$[aqiDesc]', '$[aqiWarning]'] - } -} - -$tool = Tool() -$tool.log.level("error") -weather() - -$tool.done() - -// #region 天气数据获取 -function weather() { - support(); - heweatherNow(); - heweatherDaily(); - darksky(); - aqicn(); - heweatherLifestyle(); -} -//clear-day, partly-cloudy-day, cloudy, clear-night, rain, snow, sleet, wind, fog, or partly-cloudy-night -//☀️🌤⛅️🌥☁️🌦🌧⛈🌩🌨❄️💧💦🌫☔️☂️ ☃️⛄️ -function darksky() { - if (provider.darksky.progress == 2) return; - start("darksky"); - $tool.get({url: provider.darksky.api}, function (error, response, body) { - if (!error) { - try { - let darkObj = JSON.parse(body); - $tool.log.debug(`天气数据获取-A1-${body}`); - if (darkObj.error) { - $tool.notify("DarkApi", "出错啦", darkObj.error); - } - provider.darksky.data.daily = darkObj.daily; - provider.darksky.data.hourly = darkObj.hourly; - provider.darksky.data.currently = darkObj.currently; - $tool.log.debug(`天气数据获取-A2`); - check('darksky', true) - } catch (e) { - $tool.log.error(`天气数据A获取报错${JSON.stringify(e)}`) - } - } else { - $tool.log.error(`天气数据获取-A3-${reason.error}`); - check('darksky', false); - } - - }) -} - -function aqicn() { - if (provider.aqicn.progress == 2) return; - start("aqicn"); - $tool.get({url: provider.aqicn.api}, function (error, response, body) { - if (!error) { - try { - var waqiObj = JSON.parse(body); - if (waqiObj.status == 'error') { - $tool.notify("Aqicn", "出错啦", waqiObj.data); - } else { - $tool.log.debug(`天气数据获取-B1-${body}`); - provider.aqicn.data = { - ...getAqiInfo(waqiObj.data.aqi) - }; - } - check('aqicn', true) - } catch (e) { - $tool.log.error(`天气数据B获取报错${JSON.stringify(e)}`) - } - } else { - $tool.log.error(`天气数据获取-B2-${reason.error}`); - //获取精确数据失败后,直接获取粗略信息即可 - heweatherAir(); - } - }) -} - -function heweatherNow() { - start("heweather_now"); - $tool.get({url: provider.heweather_now.api}, function (error, response, body) { - if (!error) { - try { - $tool.log.debug(`天气数据获取-C1-${body}`); - var heObj = JSON.parse(body); - provider.heweather_now.data.basic = heObj.HeWeather6[0].basic; - provider.heweather_now.data.now = heObj.HeWeather6[0].now; - check('heweather_now', true) - } catch (e) { - $tool.log.error(`天气数据C获取报错${JSON.stringify(e)}`) - } - } else { - $tool.log.error(`天气数据获取-C2-${reason.error}`); - //因为此接口出错率还挺高的,所以即使报错我们也不处理,该返回什么就返回什么好了 - check('heweather_now', false) - } - }) -} - -function heweatherDaily() { - if (provider.heweather_daily.progress == 2) return; - start("heweather_daily"); - $tool.get({url: provider.heweather_daily.api}, function (error, response, body) { - if (!error) { - try { - $tool.log.debug(`天气数据获取-D1-${body}`); - var heObj = JSON.parse(body); - provider.heweather_daily.data = heObj.HeWeather6[0].daily_forecast[0]; - check('heweather_daily', true) - } catch (e) { - $tool.log.error(`天气数据D获取报错${JSON.stringify(e)}`) - } - } else { - $tool.log.error(`天气数据获取-D2-${reason.error}`); - //因为此接口出错率还挺高的,所以即使报错我们也不处理,该返回什么就返回什么好了 - check('heweather_daily', false) - } - }) -} - -function heweatherAir() { - if (provider.heweather_air.progress == 2) return; - start("heweather_air"); - $tool.get({url: provider.heweather_air.api}, function (error, response, body) { - if (!error) { - try { - $tool.log.debug(`天气数据获取F1-${body}`); - var heObj = JSON.parse(body); - provider.heweather_air.data = { - ...getAqiInfo(heObj.HeWeather6[0].air_now_city.aqi) - }; - check('heweather_air', true) - } catch (e) { - $tool.log.error(`天气数据F获取报错${JSON.stringify(e)}`) - } - } else { - $tool.log.error(`天气数据获取-F2-${reason.error}`); - //因为此接口出错率还挺高的,所以即使报错我们也不处理,该返回什么就返回什么好了 - check('heweather_air', false) - } - }) -} - -function heweatherLifestyle() { - if (provider.heweather_lifestyle.progress == 2) return; - start("heweather_lifestyle"); - var needRequest = false; - //判断一下是否全部都是false,全false的话,则不需要请求此接口直接返回渲染的数据了 - for (var item in config.show.lifestyle) { - if (config.show.lifestyle[item]) { - needRequest = true; - break; - } - } - if (needRequest) { - $tool.get({url: provider.heweather_lifestyle.api}, function (error, response, body) { - if (!error) { - try { - $tool.log.debug(`天气数据获取-E1-${body}`); - var heObj = JSON.parse(body); - provider.heweather_lifestyle.data = heObj.HeWeather6[0].lifestyle; - check('heweather_lifestyle', true) - } catch (e) { - $tool.log.error(`天气数据E获取报错${JSON.stringify(e)}`) - } - } else { - $tool.log.error(`天气数据获取-E2-${reason.error}`); - //因为此接口出错率还挺高的,所以即使报错我们也不处理,该返回什么就返回什么好了 - check('heweather_lifestyle', false) - } - }) - } else { - check('heweather_lifestyle', false) - } -} -//#endregion - -// #region 提醒数据组装 -function check(type, result) { - $tool.log.debug(`check-${type}-${result}`); - try { - //支持setTimeout居然不支持clearTimeout,有点难受 - if (provider[type].progress == 1 || provider[type].progress == 9) return; - provider[type].progress = result ? 1 : 9; - var isAllChecked = provider.heweather_now.progress != 0 && provider.heweather_daily.progress != 0 && provider.darksky.progress != 0 && (provider.aqicn.progress != 0 || provider.heweather_air.progress != 0) && provider.heweather_lifestyle.progress != 0; - // var isAllChecked = true - if (isAllChecked) { - $tool.log.debug(`天气数据渲染中[template]`); - try { - renderTemplate(); - } catch (e) { - $tool.log.error(`天气渲染出错-${JSON.stringify(e)}`); - } - } - } catch (lineerror) { - $tool.log.error(`check error: ${lineerror}`) - } -} - -var lineBreak = ` -`; - -function renderTemplate() { - execArrayTemplate(); - const map = { - //省 - province: provider.heweather_now.data.basic.admin_area, - //市 - city: provider.heweather_now.data.basic.parent_city, - //区 - district: provider.heweather_now.data.basic.location || "UNKNOW", - //全天气候变化概述 - summary: `${provider.darksky.data.hourly.summary||""}`, - //一周气候变化概述 - weeklySummary: `${provider.darksky.data.daily.summary||""}`, - //天气图标 - weatherIcon: `${getHeweatherIcon(provider.heweather_now.data.now.cond_code)||getDarkskyWeatherIcon(provider.darksky.data.hourly.icon)}`, - //天气描述(晴/雨/雪等) - weather: `${provider.heweather_now.data.now.cond_txt||getDarkskyWeatherDesc(provider.darksky.data.hourly.icon)}`, - //当前温度 - currentTemperature: `${provider.heweather_now.data.now.tmp}`, - //温度最低值 - temperatureMin: `${Math.round(provider.heweather_daily.data.tmp_min||provider.darksky.data.daily.data.get(0).temperatureMin)}`, - //温度最高值 - temperatureMax: `${Math.round(provider.heweather_daily.data.tmp_max||provider.darksky.data.daily.data.get(0).temperatureMax)}`, - //体感温度最低值 - apparentTemperatureMin: `${Math.round(provider.darksky.data.daily.data.get(0).apparentTemperatureLow)}`, - //体感温度最高值 - apparentTemperatureMax: `${Math.round(provider.darksky.data.daily.data.get(0).apparentTemperatureHigh)}`, - //降雨概率 - precipProbability: `${provider.heweather_daily.data.pop||(Number(provider.darksky.data.daily.data.get(0).precipProbability) * 100).toFixed(0)}`, - //空气质量图标 - aqiIcon: `${provider.aqicn.data.aqiIcon||provider.heweather_air.data.aqiIcon}`, - //空气质量 - aqi: `${provider.aqicn.data.aqi||provider.heweather_air.data.aqi}`, - //空气质量描述 - aqiDesc: `${provider.aqicn.data.aqiDesc||provider.heweather_air.data.aqiDesc}`, - //空气质量警告(提示) - aqiWarning: `${provider.aqicn.data.aqiWarning||provider.heweather_air.data.aqiWarning}`, - //全天风速 - windSpeed: `${provider.heweather_daily.data.wind_spd}`, - //当前风速 - currentWindSpeed: `${provider.heweather_now.data.now.wind_spd}`, - //全天风向 - windDir: `${provider.heweather_daily.data.wind_dir}`, - //当前风向 - currentWindDir: `${provider.heweather_now.data.now.wind_dir}`, - //全天风力 - windPower: `${provider.heweather_daily.data.wind_sc}`, - //当前风力 - currentWindPower: `${provider.heweather_now.data.now.wind_sc}`, - //全天相对湿度 - humidity: `${provider.heweather_daily.data.hum}`, - //当前相对湿度 - currentHumidity: `${provider.heweather_now.data.now.hum}`, - //全天大气压 - atmosphere: `${provider.heweather_daily.data.pres}`, - //当前大气压 - currentAtmosphere: `${provider.heweather_now.data.now.pres}`, - //全天能见度 - visibility: `${provider.heweather_daily.data.vis}`, - //当前能见度 - currentVisibility: `${provider.heweather_now.data.now.vis}`, - //紫外线等级 - uv: `${provider.heweather_daily.data.uv_index||provider.darksky.data.daily.data.get(0).uvIndex}`, - //紫外线描述 - uvDesc: `${getUVDesc(provider.heweather_daily.data.uv_index||provider.darksky.data.daily.data.get(0).uvIndex)}`, - //日出时间 - sunrise: `${provider.heweather_daily.data.sr}`, - //日落时间 - sunset: `${provider.heweather_daily.data.ss}`, - //月出时间 - moonrise: `${provider.heweather_daily.data.mr}`, - //月落时间 - moonset: `${provider.heweather_daily.data.ms}`, - } - var notifyInfo = { - title: execTemplate(config.show.template.title, map), - subtitle: execTemplate(config.show.template.subtitle, map), - detail: execTemplate(config.show.template.detail, map), - }; - $tool.notify(notifyInfo.title, notifyInfo.subtitle, notifyInfo.detail); -} -// #endregion - -// #region 数据处理方法 -function getHeweatherIcon(code) { - var codeMap = { - _100: '☀️', - _101: '☁️', - _102: '☁️', - _103: '⛅️', - _104: '☁️', - _200: '💨', - _201: '🌬', - _202: '🌬', - _203: '🌬', - _204: '🌬', - _205: '🌬', - _206: '💨', - _207: '💨', - _208: '💨', - _209: '🌪', - _210: '🌪', - _211: '🌪', - _212: '🌪', - _213: '🌪', - _300: '🌨', - _301: '🌨', - _302: '⛈', - _303: '⛈', - _304: '⛈', - _305: '💧', - _306: '💦', - _307: '🌧', - _308: '🌧', - _309: '☔️', - _310: '🌧', - _311: '🌧', - _312: '🌧', - _313: '🌧❄️', - _314: '💧', - _315: '💦', - _316: '🌧', - _317: '🌧', - _318: '🌧', - _399: '🌧', - _400: '🌨', - _401: '🌨', - _402: '☃️', - _403: '❄️', - _404: '🌨', - _405: '🌨', - _406: '🌨', - _407: '🌨', - _408: '🌨', - _409: '🌨', - _410: '❄️', - _499: '⛄️', - _500: '🌫', - _501: '🌫', - _502: '🌫', - _503: '🌫', - _504: '🌫', - _505: '🌫', - _506: '🌫', - _507: '🌫', - _508: '🌫', - _509: '🌫', - _510: '🌫', - _511: '🌫', - _512: '🌫', - _513: '🌫', - _514: '🌫', - _515: '🌫', - _900: '🔥', - _901: '⛄️', - _999: '❓', - } - return codeMap[`_${code}`] ? codeMap[`_${code}`] : ""; -} - -function getDarkskyWeatherIcon(icon_text) { - let icon = "❓" - if (icon_text == "clear-day") icon = "☀️"; - if (icon_text == "partly-cloudy-day") icon = "🌤"; - if (icon_text == "cloudy") icon = "☁️"; - if (icon_text == "rain") icon = "🌧"; - if (icon_text == "snow") icon = "☃️"; - if (icon_text == "sleet") icon = "🌨"; - if (icon_text == "wind") "🌬"; - if (icon_text == "fog") icon = "🌫"; - if (icon_text == "partly-cloudy-night") icon = "🌑"; - if (icon_text == "clear-night") icon = "🌑"; - return icon; -} - -function getDarkskyWeatherDesc(icon_text) { - let icon = "未知" - if (icon_text == "clear-day") icon = `晴`; - if (icon_text == "partly-cloudy-day") icon = `晴转多云`; - if (icon_text == "cloudy") icon = `多云`; - if (icon_text == "rain") icon = `雨`; - if (icon_text == "snow") icon = `雪`; - if (icon_text == "sleet") icon = `雨夹雪`; - if (icon_text == "wind") icon = `大风`; - if (icon_text == "fog") icon = `大雾`; - if (icon_text == "partly-cloudy-night") icon = `多云`; - if (icon_text == "clear-night") icon = `晴`; - return icon; -} - -function getCityInfo(name) { - var loc; - try { - var locArr = name.split(/[(),,()]/) - if (locArr.length >= 4) { - loc = locArr[2] + " "; - } else if (locArr.length >= 2) { - loc = locArr[1] + " "; - } else { - loc = ""; //此时会很长,还不如不显示了 - } - } catch (e) { - loc = ''; - $tool.log.error(`获取城市名称失败-${JSON.stringify(e)}`); - } - return loc; -} - -function getAqiInfo(aqi) { - var aqiDesc = ""; - var aqiIcon = ""; - var aqiWarning = ""; - if (aqi > 300) { - aqiIcon = `🟤`; - aqiDesc = `严重污染`; - aqiWarning = "儿童、老人、呼吸系统等疾病患者及一般人群停止户外活动"; - } else if (aqi > 200) { - aqiIcon = `🟣`; - aqiDesc = `重度污染`; - aqiWarning = "儿童、老人、呼吸系统等疾病患者及一般人群停止或减少户外运动"; - } else if (aqi > 150) { - aqiIcon = `🔴`; - aqiDesc = `中度污染`; - aqiWarning = "儿童、老人、呼吸系统等疾病患者及一般人群减少户外活动"; - } else if (aqi > 100) { - aqiIcon = `🟠`; - aqiDesc = `轻度污染`; - aqiWarning = "老人、儿童、呼吸系统等疾病患者减少长时间、高强度的户外活动"; - } else if (aqi > 50) { - aqiIcon = `🟡`; - aqiDesc = `良好`; - aqiWarning = "极少数敏感人群应减少户外活动"; - } else { - aqiIcon = `🟢`; - aqiDesc = `优`; - } - return { - aqi, - aqiIcon, - aqiDesc, - aqiWarning - }; -} - -function getUVDesc(daily_uvIndex) { - var uvDesc = ""; - if (daily_uvIndex >= 10) { - uvDesc = "五级-特别强"; - } else if (daily_uvIndex >= 7) { - uvDesc = "四级-很强"; - } else if (daily_uvIndex >= 5) { - uvDesc = "三级-较强"; - } else if (daily_uvIndex >= 3) { - uvDesc = "二级-较弱"; - } else { - uvDesc = "一级-最弱"; - } - return uvDesc; -} -// #endregion - -// #region 模板相关 -/** - * 用于标识该接口已执行,如果有使用超时设置则此操作是有意义的 - * @param {String} type 具体的接口执行类型 - */ -function start(type) { - if (config.timeout > 0) { - provider[type].timeoutNumber = setTimeout(() => { - check(type, false); - }, config.timeout); - } -} -/** - * 判断哪些接口需要进行处理,减少网络请求 - */ -function support() { - let regex = /\$\[([a-z,A-Z,0-9]*)\]/g; - const template = `${config.show.template.title}${config.show.template.subtitle}${config.show.template.detail}`.match(regex); - provider.heweather_now.progress = template.filter((item, filter) => { - return provider.heweather_now.support.indexOf(item) != -1; - }).length > 0 ? 0 : 2; - provider.heweather_daily.progress = template.filter((item, filter) => { - return provider.heweather_daily.support.indexOf(item) != -1; - }).length > 0 ? 0 : 2; - // provider.heweather_air.progress = template.filter((item, filter) => { - // return provider.heweather_air.support.indexOf(item) != -1; - // }).length > 0 ? 0 : 2; - provider.heweather_lifestyle.progress = template.filter((item, filter) => { - let regexLifestyle = /\$\[(lifeStyle\()+([\s\S]+?)(\))+\]/g; - return regexLifestyle.test(config.show.lifestyle) ? 0 : 2; - }).length > 0 ? 0 : 2; - provider.aqicn.progress = template.filter((item, filter) => { - return provider.aqicn.support.indexOf(item) != -1; - }).length > 0 ? 0 : 2; - provider.darksky.progress = template.filter((item, filter) => { - return provider.darksky.support.indexOf(item) != -1; - }).length > 0 ? 0 : 2; - if (provider.darksky.progress == 2) { - //如果 - let regexDaily = /\$\[(daily\()+([\s\S]+?)(\))+\]/g; - let regexHourly = /\$\[(hourly\()+([\s\S]+?)(\))+\]/g; - provider.darksky.progress = (regexDaily.test(config.show.template.detail) || regexHourly.test(config.show.template.detail)) ? 0 : 2; - } - $tool.log.debug(`h_n:${provider.heweather_now.progress},h_d:${provider.heweather_daily.progress},h_a:${provider.heweather_air.progress},h_l:${provider.heweather_lifestyle.progress},aq:${provider.aqicn.progress},da:${provider.darksky.progress}`) -} -/** - * 用于普通模板的映射 - * @param {String} template 模板内容 - * @param {Object} map 映射内容 - */ -function execTemplate(template, map) { - if (!template) return ""; - let regex = /\$\[([a-z,A-Z,0-9]*)\]/g; - if (regex.test(template)) { - for (item of template.match(regex)) { - item.match(regex); - if (RegExp.$1 && map[RegExp.$1]) { - template = template.replace(item, map[RegExp.$1]); - } else { - template = template.replace(item, ""); - } - } - } - return template; -} - -function execArrayTemplate() { - try { - execTemplateLifestyle(); - execTemplateDaily(); - execTemplateHourly(); - } catch (e) { - $tool.log.error(`${JSON.stringify(e)}`) - } - -} - -function execTemplateLifestyle() { - let regexLifestyle = /\$\[(lifeStyle\()+([\s\S]+?)(\))+\]/g; - if (provider.heweather_lifestyle.data <= 0) { - config.show.template.detail.replace(regexLifestyle, '') - } - let result = []; - if (regexLifestyle.test(config.show.template.detail)) { - let lsMap = { //此处用于显示各项生活指数,可自行调整顺序,顺序越在前面则显示也会靠前,如果您不想查看某一指数,置为false即可,想看置为true即可 - drsg: { - icon: '👔', - type: '穿衣指数' - }, - flu: { - icon: '🤧', - type: '感冒指数' - }, - comf: { - icon: '😊', - type: '舒适度指数' - }, - cw: { - icon: '🚗', - type: '洗车指数' - }, - sport: { - icon: '🏃🏻', - type: '运动指数' - }, - trav: { - icon: '🌴', - type: '旅游指数' - }, - uv: { - icon: '☂️', - type: '紫外线指数' - }, - air: { - icon: '🌫', - type: '空气污染扩散条件指数' - }, - ac: { - icon: '❄️', - type: '空调开启指数' - }, - ag: { - icon: '😷', - type: '过敏指数' - }, - gl: { - icon: '🕶', - type: '太阳镜指数' - }, - mu: { - icon: '💄', - type: '化妆指数' - }, - airc: { - icon: '🧺', - type: '晾晒指数' - }, - ptfc: { - icon: '🚥', - type: '交通指数' - }, - fsh: { - icon: '🎣', - type: '钓鱼指数' - }, - spi: { - icon: '🔆', - type: '防晒指数' - }, - } - config.show.template.detail.match(regexLifestyle); - var rangeTemplate = RegExp.$2; //此处拿到的是要替换的列表显示部分了 - let regex = /\$\[([a-z,A-Z,0-9]*)\]/g; - var template = rangeTemplate.match(regex); - for (life of provider.heweather_lifestyle.data) { - if (!config.show.lifestyle[life.type]) continue; - var singleInfo = rangeTemplate; - for (item of template) { - item.match(regex); - if (RegExp.$1 == "icon") { - singleInfo = singleInfo.replace(item, lsMap[life.type].icon) - } else if (RegExp.$1 == "type") { - singleInfo = singleInfo.replace(item, lsMap[life.type].type) - } else { - singleInfo = singleInfo.replace(item, life[RegExp.$1]) - } - } - result.push(singleInfo); - } - config.show.template.detail = config.show.template.detail.replace(regexLifestyle, result.join(lineBreak)); - } -} - -function execTemplateDaily() { - let regexDaily = /\$\[(daily\()+([\s\S]+?)(\))+\]/g; - if (provider.darksky.data.daily.data.length <= 0) { - config.show.template.detail.replace(regexDaily, '') - } - let result = []; - if (regexDaily.test(config.show.template.detail)) { - config.show.template.detail.match(regexDaily); - var rangeTemplate = RegExp.$2; //此处拿到的是要替换的列表显示部分了 - let regex = /\$\[([a-z,A-Z,0-9]*)\]/g; - var template = rangeTemplate.match(regex); - for (daily of provider.darksky.data.daily.data) { - var singleInfo = rangeTemplate; - for (item of template) { - item.match(regex); - if (RegExp.$1 == "month") { - singleInfo = singleInfo.replace(item, (`${daily["time"]}`).toDateTime().Format("MM")); - } else if (RegExp.$1 == "day") { - singleInfo = singleInfo.replace(item, (`${daily["time"]}`).toDateTime().Format("dd")); - } else if (RegExp.$1 == "weatherIcon") { - singleInfo = singleInfo.replace(item, getDarkskyWeatherIcon(daily.icon)); - } else if (RegExp.$1 == "weather") { - singleInfo = singleInfo.replace(item, getDarkskyWeatherDesc(daily.icon)); - } else if (RegExp.$1 == "uvDesc") { - singleInfo = singleInfo.replace(item, getUVDesc(daily.uvIndex)); - } else if (RegExp.$1 == "cloudCover") { - singleInfo = singleInfo.replace(item, daily.cloudCover * 100); - } else if (RegExp.$1 == "temperatureHigh") { - singleInfo = singleInfo.replace(item, Math.round(daily.temperatureHigh)); - } else if (RegExp.$1 == "temperatureLow") { - singleInfo = singleInfo.replace(item, Math.round(daily.temperatureLow)); - } else if (RegExp.$1 == "apparentTemperatureMax") { - singleInfo = singleInfo.replace(item, Math.round(daily.apparentTemperatureMax)); - } else if (RegExp.$1 == "apparentTemperatureMin") { - singleInfo = singleInfo.replace(item, Math.round(daily.apparentTemperatureMin)); - } else if (RegExp.$1 && daily[RegExp.$1] != undefined) { - singleInfo = singleInfo.replace(item, daily[RegExp.$1]); - } - } - result.push(singleInfo); - } - config.show.template.detail = config.show.template.detail.replace(regexDaily, result.join(lineBreak)); - } -} - -function execTemplateHourly() { - let regexHourly = /\$\[(hourly\()+([\s\S]+?)(\))+\]/g; - if (provider.darksky.data.hourly.data.length <= 0) { - config.show.template.detail.replace(regexHourly, '') - } - let result = []; - if (regexHourly.test(config.show.template.detail)) { - config.show.template.detail.match(regexHourly); - var rangeTemplate = RegExp.$2; //此处拿到的是要替换的列表显示部分了 - let regex = /\$\[([a-z,A-Z,0-9]*)\]/g; - var template = rangeTemplate.match(regex); - for (hourly of provider.darksky.data.hourly.data) { - var singleInfo = rangeTemplate; - for (item of template) { - item.match(regex); - if (RegExp.$1 == "month") { - singleInfo = singleInfo.replace(item, (`${hourly["time"]}`).toDateTime().Format("MM")); - } else if (RegExp.$1 == "day") { - singleInfo = singleInfo.replace(item, (`${hourly["time"]}`).toDateTime().Format("dd")); - } else if (RegExp.$1 == "hour") { - singleInfo = singleInfo.replace(item, (`${hourly["time"]}`).toDateTime().Format("hh")); - } else if (RegExp.$1 == "weatherIcon") { - singleInfo = singleInfo.replace(item, getDarkskyWeatherIcon(hourly.icon)); - } else if (RegExp.$1 == "weather") { - singleInfo = singleInfo.replace(item, getDarkskyWeatherDesc(hourly.icon)); - } else if (RegExp.$1 == "uvDesc") { - singleInfo = singleInfo.replace(item, getUVDesc(hourly.uvIndex)); - } else if (RegExp.$1 == "cloudCover") { - singleInfo = singleInfo.replace(item, hourly.cloudCover * 100); - } else if (RegExp.$1 == "temperature") { - singleInfo = singleInfo.replace(item, Math.round(hourly.temperature)); - } else if (RegExp.$1 == "apparentTemperature") { - singleInfo = singleInfo.replace(item, Math.round(hourly.apparentTemperature)); - } else if (RegExp.$1 && hourly[RegExp.$1] != undefined) { - singleInfo = singleInfo.replace(item, hourly[RegExp.$1]); - } - } - result.push(singleInfo); - } - config.show.template.detail = config.show.template.detail.replace(regexHourly, result.join(lineBreak)); - } -} - -// #endregion - -// #region 扩展方法 -Array.prototype.get = function (index, defaultValue = {}) { - if (index >= 0 && this.length > 0 && this.length >= index + 1) { - return this[index]; - } else { - return defaultValue; - } -} -String.prototype.toDateTime = function () { - var time = parseInt(this + '000'); - return new Date(time); -} -Date.prototype.Format = function (fmt) { - var o = { - "M+": this.getMonth() + 1, //月份 - "d+": this.getDate(), //日 - "h+": this.getHours(), //小时 - "m+": this.getMinutes(), //分 - "s+": this.getSeconds(), //秒 - "q+": Math.floor((this.getMonth() + 3) / 3), //季度 - "S": this.getMilliseconds() //毫秒 - }; - if (/(y+)/.test(fmt)) - fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length)); - for (var k in o) - if (new RegExp("(" + k + ")").test(fmt)) - fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length))); - return fmt; -} -// #endregion - -// https://github.com/yichahucha/surge/blob/master/tool.js -//https://github.com/chavyleung/scripts/blob/master/chavy.js -// 工具方法编写参考了以上脚本,在此感谢 🙏 -function Tool() { - // app - const _isQuanX = typeof $task != "undefined" - const _isSurge = typeof $httpClient != "undefined" - const _isJSBox = typeof $app != "undefined" && $app.info.bundleID == "app.cyan.jsbox" - const _isNode = typeof require == "function" && !_isJSBox - - // environment - const _isRequest = typeof $request != "undefined" - const _isResponse = typeof $response != "undefined" - - const ishttp = _isRequest || _isResponse - - // require Tools - const _requireTools = (() => { - var tools = {} - if (typeof require == "function") { - let request = require('request') - if (request) tools.request = request - let fs = require("fs") - if (fs) tools.fs = fs - } - return tools - })() - - // config - const _nodeStoreName = "prefs.json" - - // custom log - // if you want to add log level, just add to _logLevels - const _log = (() => { - // default log value - let _logLevel = "debug" - - const _logLevels = new Array("trace", "debug", "info", "warn", "error", "fatal") - - // 默认显示日志等级 - let _isShowLevel = true - - // 设置日志等级,返回值为当前等级 - const _setLogLevel = (level = "") => { - if (_logLevels.indexOf(level) > -1) { - _logLevel = level - } - return _logLevel - } - - const showLevel = (isShow) => { - if (typeof isShow == "boolean") { - _isShowLevel = isShow - } - return _isShowLevel - } - - // 过滤低等级日志信息 - const _filterLog = (level, callback) => { - let index = _logLevels.indexOf(level) - let current = _logLevels.indexOf(_setLogLevel()) - if (index > -1) { - if (index >= current) { - callback() - } - } else { - callback() - } - } - - const _setLogFunction = (level) => { - return (message) => { - _filterLog(level, (() => { - if (showLevel()) { - console.log(`<${level}> ${message}`) - } else { - console.log(message) - } - })) - } - } - - let level = _setLogLevel - let log = _filterLog - var logFunc = {level, log, showLevel} - _logLevels.forEach((item) => { - logFunc[item] = _setLogFunction(item) - }) - - return logFunc - }) - - const log = _log() - - // setTimeout - const timeout = (() => { - if (typeof setTimeout != "undefined") { - return setTimeout - } - return (handler, timeout = 0) => { - handler() - } - })() - - // notification - const notify = (title, subtitle, message) => { - if (_isQuanX) { - $notify(title, subtitle, message) - } - if (_isSurge) { - $notification.post(title, subtitle, message) - } - if (_isNode) { - console.log(JSON.stringify({title, subtitle, message})) - } - if (_isJSBox) { - if (subtitle && message) { - $push.schedule({title: title, body: subtitle + "\n" + message}) - } else { - $push.schedule({title: title, body: subtitle + message}) - } - } - } - - // store - const read = (key) => { - if (_isQuanX) return $prefs.valueForKey(key) - if (_isSurge) return $persistentStore.read(key) - if (_isJSBox) return _jsBoxRead(key) - if (_isNode) return _nodeRead(key) - } - - const write = (value, key) => { - if (_isQuanX) return $prefs.setValueForKey(value, key) - if (_isSurge) return $persistentStore.write(value, key) - if (_isJSBox) return _jsBoxWrite(value, key) - if (_isNode) return _nodeWrite(value, key) - } - - const _nodeRead = (key) => { - try { - var data = JSON.parse(_requireTools.fs.readFileSync(_nodeStoreName)) - if (typeof data[key] != "undefined") { - return data[key] - } - } catch (error) { - log.error(error) - } - return "" - } - - const _nodeWrite = (value, key) => { - try { - if (!_requireTools.fs.existsSync(_nodeStoreName)) { - _requireTools.fs.writeFileSync(_nodeStoreName, JSON.stringify({})) - } - var data = JSON.parse(_requireTools.fs.readFileSync(_nodeStoreName)) - data[key] = value - _requireTools.fs.writeFileSync(_nodeStoreName, JSON.stringify(data)) - return true - } catch (error) { - log.error(error) - } - return false - } - - const _jsBoxRead = (key) => { - try { - if (_jsBoxEnvName != "icloud") { - return $prefs.get(key) - } - if (typeof $drive != "undefined") { - let filePath = "Code/" + _nodeStoreName - if ($drive.exists(filePath)) { - let content = $drive.read(filePath) - if (content) { - let data = JSON.parse(content) - if (typeof data[key] != "undefined") { - return data[key] - } - } - } - } - } catch (error) { - log.error(error) - } - return "" - } - - const _jsBoxWrite = (value, key) => { - try { - if (_jsBoxEnvName != "icloud") { - return $prefs.set(key, value) - } - if (typeof $drive != "undefined") { - let filePath = "Code/" + _nodeStoreName - var data = {} - if ($drive.exists(filePath)) { - let content = $drive.read(filePath) - data = JSON.parse(content) - } - data[key] = value - return $drive.write({data: $data({string: JSON.stringify(data)}), path: filePath}) - } - } catch (error) { - log.error(error) - } - return false - } - - const _jsBoxEnvName = (() => { - if (typeof $addin != "undefined") { - if (typeof $addin.current == "undefined") { - // 运行在icloud - return "icloud" - } else { - - let _version = typeof $addin.current.version != "undefined" - let _author = typeof $addin.current.author != "undefined" - let _url = typeof $addin.current.url != "undefined" - let _website = typeof $addin.current.website != "undefined" - if (_version || _author || _url || _website) { - // jsBox 应用 - return "app" - } else { - // jsBox 脚本 - return "script" - } - } - } - return "" - })() - - // http request - const get = (options, callback) => { - if (_isQuanX) { - if (typeof options == "string") options = {url: options} - options["method"] = "GET" - $task.fetch(options).then(response => { - callback(null, _status(response), response.body) - }, reason => callback(reason.error, null, null)) - } - if (_isSurge) $httpClient.get(options, (error, response, body) => { - callback(error, _status(response), body) - }); - if (_isNode) { - _requireTools.request(options, (error, response, body) => { - callback(error, _status(response), body) - }) - } - if (_isJSBox) $http.get(_jsBoxRequest(options, callback)) - } - const post = (options, callback) => { - if (_isQuanX) { - if (typeof options == "string") options = {url: options} - options["method"] = "POST" - $task.fetch(options).then(response => { - callback(null, _status(response), response.body) - }, reason => callback(reason.error, null, null)) - } - if (_isSurge) { - $httpClient.post(options, (error, response, body) => { - callback(error, _status(response), body) - }) - } - if (_isNode) { - _requireTools.request.post(options, (error, response, body) => { - callback(error, _status(response), body) - }) - } - if (_isJSBox) $http.post(_jsBoxRequest(options, callback)) - } - - const _jsBoxRequest = (options, callback) => { - if (typeof options == "string") options = {url: options} - options["header"] = options["headers"] - delete options["headers"] - let body = options["body"] - if (typeof body != "undefined") { - try { - body = JSON.parse(body) - options["body"] = body - } catch (e) { - } - } - options["handler"] = function (resp) { - let error = resp.error - if (error) error = JSON.stringify(resp.error) - let body = resp.data - if (typeof body == "object") body = JSON.stringify(resp.data) - callback(error, _status(resp.response), body) - } - return options - } - - const _status = (response) => { - if (response) { - if (response.status) { - response["statusCode"] = response.status - } else if (response.statusCode) { - response["status"] = response.statusCode - } - } - return response - } - - // done - const done = (value = {}) => { - if (_isQuanX) ishttp ? $done(value) : "" - if (_isSurge) ishttp ? $done(value) : $done() - } - - return {read, write, notify, get, post, ishttp, log, timeout, done} -}