提交 63912424 编写于 作者: ibizdev's avatar ibizdev

lxm1993 发布系统代码 [TrainSys,网页端]

上级 8a03918d
......@@ -11,13 +11,14 @@
"lint:style": "stylelint 'src/**/*.scss'"
},
"dependencies": {
"@ibiz-template/command": "^0.0.1-alpha.13",
"@ibiz-template/controller": "^0.0.1-alpha.15",
"@ibiz-template/core": "^0.0.1-alpha.13",
"@ibiz-template/model": "^0.0.1-alpha.15",
"@ibiz-template/runtime": "^0.0.1-alpha.15",
"@ibiz-template/service": "^0.0.1-alpha.15",
"@ibiz-template/vue-util": "^0.0.1-alpha.15",
"@ibiz-template/command": "0.0.1-alpha.13",
"@ibiz-template/controller": "0.0.1-alpha.16",
"@ibiz-template/core": "0.0.1-alpha.16",
"@ibiz-template/model": "0.0.1-alpha.16",
"@ibiz-template/runtime": "0.0.1-alpha.16",
"@ibiz-template/service": "0.0.1-alpha.16",
"@ibiz-template/vue-util": "0.0.1-alpha.16",
"dayjs": "^1.11.5",
"ionicons": "^6.0.3",
"lodash-es": "^4.17.21",
"pinia": "^2.0.22",
......@@ -28,8 +29,7 @@
"systemjs": "^6.13.0",
"view-design": "^4.7.0",
"vue": "^2.7.10",
"vue-router": "^3.6.4",
"dayjs": "^1.11.5"
"vue-router": "^3.6.4"
},
"devDependencies": {
"@commitlint/cli": "^17.1.2",
......
......@@ -3,13 +3,13 @@ lockfileVersion: 5.4
specifiers:
'@commitlint/cli': ^17.1.2
'@commitlint/config-conventional': ^17.1.0
'@ibiz-template/command': ^0.0.1-alpha.13
'@ibiz-template/controller': ^0.0.1-alpha.15
'@ibiz-template/core': ^0.0.1-alpha.13
'@ibiz-template/model': ^0.0.1-alpha.15
'@ibiz-template/runtime': ^0.0.1-alpha.15
'@ibiz-template/service': ^0.0.1-alpha.15
'@ibiz-template/vue-util': ^0.0.1-alpha.15
'@ibiz-template/command': 0.0.1-alpha.13
'@ibiz-template/controller': 0.0.1-alpha.16
'@ibiz-template/core': 0.0.1-alpha.16
'@ibiz-template/model': 0.0.1-alpha.16
'@ibiz-template/runtime': 0.0.1-alpha.16
'@ibiz-template/service': 0.0.1-alpha.16
'@ibiz-template/vue-util': 0.0.1-alpha.16
'@types/lodash-es': ^4.17.6
'@types/node': ^18.8.3
'@types/qs': ^6.9.7
......@@ -60,12 +60,12 @@ specifiers:
dependencies:
'@ibiz-template/command': 0.0.1-alpha.13
'@ibiz-template/controller': 0.0.1-alpha.15_wvyibvgvo5rqntlnslu6kgeaua
'@ibiz-template/core': 0.0.1-alpha.13_amgpmzcbvys7f63sicqtedd4k4
'@ibiz-template/model': 0.0.1-alpha.15_amgpmzcbvys7f63sicqtedd4k4
'@ibiz-template/runtime': 0.0.1-alpha.15_xicyfd2scxwdlnm3nwj35lmm6u
'@ibiz-template/service': 0.0.1-alpha.15_ugamdxggotwkp4sabiqjh6vek4
'@ibiz-template/vue-util': 0.0.1-alpha.15_pvqgesrhqd5s4uqltz7hjmff4u
'@ibiz-template/controller': 0.0.1-alpha.16_3vyzyqdsfjj2uuejjjk5alwidq
'@ibiz-template/core': 0.0.1-alpha.16_amgpmzcbvys7f63sicqtedd4k4
'@ibiz-template/model': 0.0.1-alpha.16_amgpmzcbvys7f63sicqtedd4k4
'@ibiz-template/runtime': 0.0.1-alpha.16_hfpvjyl7tcjqp2uqrwytqjd3dq
'@ibiz-template/service': 0.0.1-alpha.16_olo3fw5kxwfldkalipgpgtirfq
'@ibiz-template/vue-util': 0.0.1-alpha.16_d55f7qedagx7tksktpnydpksnu
dayjs: 1.11.5
ionicons: 6.0.3
lodash-es: 4.17.21
......@@ -661,8 +661,8 @@ packages:
resolution: {integrity: sha512-IUD6x29nmmxdL8XbGGfBAEYlPO/+E8qHd/TI2ncgaaBFcF6M4ih7xga8l1oYuSdr+xx4mlXkAbzQFOqAQWm21g==}
dev: false
/@ibiz-template/controller/0.0.1-alpha.15_wvyibvgvo5rqntlnslu6kgeaua:
resolution: {integrity: sha512-UpujB323mASgEkCb5poRfguYnU9dWqEryCWg8/lsmBUmR/I72NUEDHwbk9dZSMJsEThxoTmVC31aXqmMbORi7g==}
/@ibiz-template/controller/0.0.1-alpha.16_3vyzyqdsfjj2uuejjjk5alwidq:
resolution: {integrity: sha512-6ES/q892/Gm+TKKOH519PV3JyBpCQMP5Hpk/qO2iYdFC5GZJFSLbD/tz9IO8YcIPA32u4bkV8otxiV7q/S+L7A==}
peerDependencies:
'@ibiz-template/core': ^0.0.1-alpha.2
'@ibiz-template/model': ^0.0.1-alpha.2
......@@ -671,18 +671,18 @@ packages:
lodash-es: ^4.17.21
qx-util: ^0.4.1
dependencies:
'@ibiz-template/core': 0.0.1-alpha.13_amgpmzcbvys7f63sicqtedd4k4
'@ibiz-template/model': 0.0.1-alpha.15_amgpmzcbvys7f63sicqtedd4k4
'@ibiz-template/runtime': 0.0.1-alpha.15_xicyfd2scxwdlnm3nwj35lmm6u
'@ibiz-template/service': 0.0.1-alpha.15_ugamdxggotwkp4sabiqjh6vek4
'@ibiz-template/core': 0.0.1-alpha.16_amgpmzcbvys7f63sicqtedd4k4
'@ibiz-template/model': 0.0.1-alpha.16_amgpmzcbvys7f63sicqtedd4k4
'@ibiz-template/runtime': 0.0.1-alpha.16_hfpvjyl7tcjqp2uqrwytqjd3dq
'@ibiz-template/service': 0.0.1-alpha.16_olo3fw5kxwfldkalipgpgtirfq
async-validator: 4.2.5
dayjs: 1.11.5
lodash-es: 4.17.21
qx-util: 0.4.1
dev: false
/@ibiz-template/core/0.0.1-alpha.13_amgpmzcbvys7f63sicqtedd4k4:
resolution: {integrity: sha512-7Vg4mWrty/aVlM63oEgMjMcYIY1lSkczb+Z6KCdkzZlfTp2LZJlNIJ4ZVw0XR0ctykDxUh91uBJNb47RgEdxQQ==}
/@ibiz-template/core/0.0.1-alpha.16_amgpmzcbvys7f63sicqtedd4k4:
resolution: {integrity: sha512-Wt1J6hUmMopF9MfXj2tMTFoNiNnhYsEL78Jjmj4f2ZPVZd5+EDBk4ricGfw5aNNB74TPoqrX/vvpIVGEAlngGA==}
peerDependencies:
lodash-es: ^4.17.21
qx-util: ^0.4.1
......@@ -696,8 +696,8 @@ packages:
- debug
dev: false
/@ibiz-template/model/0.0.1-alpha.15_amgpmzcbvys7f63sicqtedd4k4:
resolution: {integrity: sha512-ZQWSvPa+W9ecDLi3P7UcBqKCPy0rdZCmXoJiZ+pbZVpO01Xdk5BwSzuTEl8Pgz2ciIP15a25M8G8YjziZ35lhg==}
/@ibiz-template/model/0.0.1-alpha.16_amgpmzcbvys7f63sicqtedd4k4:
resolution: {integrity: sha512-QlrUeXkU9UaN6A/k2v9ElGw0n8lzD8pS/OFbc5SFcyXj9iTdKQk/wWk4qVRXKWhDOCzhAixTwxn7k+Z3bLtPAA==}
peerDependencies:
lodash-es: ^4.17.21
qx-util: ^0.4.1
......@@ -708,8 +708,8 @@ packages:
qx-util: 0.4.1
dev: false
/@ibiz-template/runtime/0.0.1-alpha.15_xicyfd2scxwdlnm3nwj35lmm6u:
resolution: {integrity: sha512-fFM8vDoyIC1eoSSfJYypwZ2aCJej6Fh4jFuIPRxZd2iEatgn+CPgAL+k5EQGFTe7qs36I4bkqV9EXZWSl/1Ocg==}
/@ibiz-template/runtime/0.0.1-alpha.16_hfpvjyl7tcjqp2uqrwytqjd3dq:
resolution: {integrity: sha512-it9CF4XEUEY5hWeiHwnMw3tW3v3IK7fxiWmRJADItUn5fs+rZnzfh/6pOKY2duj2o1yUnUzbSFrjw8owOOhx8Q==}
peerDependencies:
'@ibiz-template/core': ^0.0.1-alpha.2
'@ibiz-template/model': ^0.0.1-alpha.2
......@@ -717,28 +717,28 @@ packages:
qx-util: ^0.4.1
dependencies:
'@ibiz-template/command': 0.0.1-alpha.13
'@ibiz-template/core': 0.0.1-alpha.13_amgpmzcbvys7f63sicqtedd4k4
'@ibiz-template/model': 0.0.1-alpha.15_amgpmzcbvys7f63sicqtedd4k4
'@ibiz-template/service': 0.0.1-alpha.15_ugamdxggotwkp4sabiqjh6vek4
'@ibiz-template/core': 0.0.1-alpha.16_amgpmzcbvys7f63sicqtedd4k4
'@ibiz-template/model': 0.0.1-alpha.16_amgpmzcbvys7f63sicqtedd4k4
'@ibiz-template/service': 0.0.1-alpha.16_olo3fw5kxwfldkalipgpgtirfq
qx-util: 0.4.1
dev: false
/@ibiz-template/service/0.0.1-alpha.15_ugamdxggotwkp4sabiqjh6vek4:
resolution: {integrity: sha512-5kqvYh9bDddSNLDHb2ceDL+V0+cDd3oG3gK12RH2kyKXagP9DTRgfYbOHOmOe7eGhPolPndUDgkeP4Sbgn/N4g==}
/@ibiz-template/service/0.0.1-alpha.16_olo3fw5kxwfldkalipgpgtirfq:
resolution: {integrity: sha512-GJSk3lnvRYbylq8/di9MG6nPhVSaAR7S2GRInF0Uzj0mpqOVDr61YkdTBIvtCn1nZTSuXlu5NbfBxAhLmBaN1w==}
peerDependencies:
'@ibiz-template/core': ^0.0.1-alpha.2
'@ibiz-template/model': ^0.0.1-alpha.2
qx-util: ^0.4.1
ramda: ^0.28.0
dependencies:
'@ibiz-template/core': 0.0.1-alpha.13_amgpmzcbvys7f63sicqtedd4k4
'@ibiz-template/model': 0.0.1-alpha.15_amgpmzcbvys7f63sicqtedd4k4
'@ibiz-template/core': 0.0.1-alpha.16_amgpmzcbvys7f63sicqtedd4k4
'@ibiz-template/model': 0.0.1-alpha.16_amgpmzcbvys7f63sicqtedd4k4
qx-util: 0.4.1
ramda: 0.28.0
dev: false
/@ibiz-template/vue-util/0.0.1-alpha.15_pvqgesrhqd5s4uqltz7hjmff4u:
resolution: {integrity: sha512-eg5f/Act0cn1mRGFQz+G5kIjVSrHwqKv188EHS02y/zaa47ZTKEp69bSrWFcTK7gqR7kQIEjEDGguFw5KyGLAQ==}
/@ibiz-template/vue-util/0.0.1-alpha.16_d55f7qedagx7tksktpnydpksnu:
resolution: {integrity: sha512-xxtPlFhfyOXrH6k1rgGVNuVm9NEM96JR06Tly9cbxp4bdldsbO6+tRzk9n6DDcsbyrSacnIkUy6rHm2gXKvOPg==}
peerDependencies:
'@ibiz-template/controller': '>=0.0.1-alpha.2'
'@ibiz-template/core': '>=0.0.1-alpha.2'
......@@ -748,9 +748,9 @@ packages:
vue: ^2.7.10
vue-router: ^3.6.4
dependencies:
'@ibiz-template/controller': 0.0.1-alpha.15_wvyibvgvo5rqntlnslu6kgeaua
'@ibiz-template/core': 0.0.1-alpha.13_amgpmzcbvys7f63sicqtedd4k4
'@ibiz-template/model': 0.0.1-alpha.15_amgpmzcbvys7f63sicqtedd4k4
'@ibiz-template/controller': 0.0.1-alpha.16_3vyzyqdsfjj2uuejjjk5alwidq
'@ibiz-template/core': 0.0.1-alpha.16_amgpmzcbvys7f63sicqtedd4k4
'@ibiz-template/model': 0.0.1-alpha.16_amgpmzcbvys7f63sicqtedd4k4
qs: 6.11.0
qx-util: 0.4.1
vue: 2.7.10
......@@ -1478,7 +1478,7 @@ packages:
/axios/0.27.2:
resolution: {integrity: sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==}
dependencies:
follow-redirects: 1.15.1
follow-redirects: 1.15.2
form-data: 4.0.0
transitivePeerDependencies:
- debug
......@@ -2571,8 +2571,8 @@ packages:
resolution: {integrity: sha512-0sQoMh9s0BYsm+12Huy/rkKxVu4R1+r96YX5cG44rHV0pQ6iC3Q+mkoMFaGWObMFYQxCVT+ssG1ksneA2MI9KQ==}
dev: true
/follow-redirects/1.15.1:
resolution: {integrity: sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA==}
/follow-redirects/1.15.2:
resolution: {integrity: sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==}
engines: {node: '>=4.0'}
peerDependencies:
debug: '*'
......
var BaseUrl = '';
if (window.Environment && window.Environment.BaseUrl) {
BaseUrl = "/"+window.Environment.BaseUrl;
}
function getQueryVariable(variable) {
var query = location.search.substring(1);
var vars = query.split('&');
for (var i = 0; i < vars.length; i++) {
var pair = vars[i].split('=');
if (pair[0] == variable) {
return pair[1];
}
}
return false;
}
function getRequest(method, url, params) {
var config = { credentials: 'include' };
config.method = method;
if (params) {
if (method === 'POST') {
config.headers = { Accept: 'application/json', 'Content-Type': 'application/json;charset=utf-8' };
config.body = JSON.stringify(params);
}
}
return new Request(url, config);
}
function post(url, params) {
return fetch(this.getRequest('POST', url, params));
}
function setCookie(name, value, day, isDomain, path) {
if (day == null) {
day = 0;
}
if (isDomain == null) {
isDomain = false;
}
if (path == null) {
path = '/';
}
var domain = '';
// 设置cookie到主域下
if (isDomain) {
// 是否为ip正则
const regExpr = /^(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)\.(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)\.(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)\.(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)$/;
// 为ip时忽略
if (!regExpr.test(location.hostname)) {
const host = location.hostname;
if (host.indexOf('.') !== host.lastIndexOf('.')) {
domain = ';domain=' + host.substring(host.indexOf('.'), host.length);
}
}
}
if (day !== 0) {
//当设置的时间等于0时,不设置expires属性,cookie在浏览器关闭后删除
const expires = day * 24 * 60 * 60 * 1000;
const date = new Date(new Date().getTime() + expires);
document.cookie = name + '=' + escape(value) + ';path=' + path + ';expires=' + date.toUTCString() + domain;
} else {
document.cookie = name + '=' + escape(value) + ';path=' + path + domain;
}
}
function clearCookie(cookieName, isDomain) {
this.setCookie(cookieName, '', -1, isDomain);
}
window.onload = function() {
var infoEl = document.getElementById('redirect-info');
var errInfoEl = document.getElementById('redirect-error');
// 显示错误信息
var showError = function(info) {
errInfoEl.textContent = info;
infoEl.style.display = 'none';
errInfoEl.style.display = 'block';
};
var load = function() {
try {
var ticket = getQueryVariable('ticket');
if (!ticket) {
showError('「ticket」信息获取失败,请稍后重试!');
return;
}
var ru = getQueryVariable('RU');
if (ru) {
ru = decodeURIComponent(ru);
}
post(BaseUrl+'/v7/login', {
password: ticket,
loginname: location.origin + location.pathname + location.hash + '?RU=' + encodeURIComponent(ru),
})
.then(function(res) {
return new Promise(resolve => {
res.json().then(data =>
resolve({
ok: res.ok,
status: res.status,
data,
}),
);
});
})
.then(function(res) {
var data = res.data;
if (res.ok) {
var token = data.token;
if (token == null || token == '') {
showError('token信息获取失败,请稍后重试!');
return;
}
clearCookie('access_token', true);
setCookie('access_token', token, 0, true);
window.location.href = ru;
} else {
if (data.message) {
showError('登录失败,' + data.message);
} else {
showError('登录失败, 发生未知错误请稍后重试!');
}
}
})
.catch(function(err) {
showError('登录失败请稍后重试!');
console.error(err);
});
} catch (err) {
showError('登录失败请稍后重试!');
console.error(err);
}
};
var redirectInfoActionEl = document.getElementById('redirect-info-action');
redirectInfoActionEl.onclick = function() {
load();
};
load();
};
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>登录跳转</title>
<link rel="icon" href="./favicon.ico">
</head>
<style>
html,
body,
div {
padding: 0;
margin: 0;
}
@keyframes loading-rotate {
100% {
transform: rotate(1turn);
}
}
.redirect-container {
width: 100vw;
height: 100vh;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
}
.redirect-info {
display: flex;
}
.redirect-info .info-icon {
display: flex;
justify-content: center;
align-items: center;
margin-right: 10px;
}
.info-icon svg {
animation: loading-rotate 1.5s ease infinite;
}
.redirect-info,
.redirect-error {
font-size: 32px;
font-weight: 400;
}
.redirect-error {
color: red;
display: none;
padding: 0px 30px;
}
.info-action {
font-size: 14px;
padding-top: 20px;
padding-left: 10px;
}
</style>
<body>
<div id="redirect-container" class="redirect-container">
<div id="redirect-img" class="redirect-img">
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABB4AAAHHCAYAAAAYr5tzAAAAAXNSR0IArs4c6QAAQABJREFUeAHs3QecVOW9+P9n6nZgd9mlLF16URAUxYq9REGMqzEJCoooKgkoyb353f8Nufd/c383IFEElCggxOQmJAJGY2IsqLFSRHrvbQtb2F6m/L7PuDPM7s7uzu7OzE75nJfjnDnteZ73GXbO+Z6nKMWEAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCDQPgFD+3ZnbwQQQAABBBBAAIFACKxatSre4XBYnE6n61VTU2M1GAwWObbFbrfr+ZKnnnrquK+0li9fPlS26aXXyTGcvrYxmUyFTzzxxDZf61auXJkh6WXIulpJv1a/u+eTk5Nr4uPja++7775ayYPPY/s6JssQQAABBBBwC5jdM7wjgAACCCCAAAIIBF5AbuSNy5YtS+zfv3/tHXfcUe0rhZdffnlcRUVFj4brZF/XIqPRqCRwYJfPJ3zd/MvyVHkl6I1lfcPDuD7LeoN++dq/vLx8hKSR4mvH0tJSpV9Lly49L+s/8bXN2rVrradPn07MysqqyM7OrvG1DcsQQAABBGJXgMBD7J57So4AAggggAACARLQN/RSayC5qqoqyWw2J0ntgySpeZAkN/NJEnRwBQSOHDlilxv0d+XG3N4wWdm/SpbpoISnpoEEGvQNvKcGQlxcXKGvoIE+1syZM7/8zW9+40qnpKTEFXno1q2bXuWZpNZCVVP7S/pfy4aZ8rLINu4aFq7aFu5lUpaapgIX+fn5V1mt1mR5V0uWLNEBkgpxqJB9K/S8lKUyNTW1gKCEiDAhgAACMSjgOyQegxAUGQEEEEAAAQQQaKuABBculhvsvk3tr2++5cY9f9asWTua2iaSl0ttiIESsMiSMiRKWZt6sFX25JNPbozkcpJ3BBBAAIG2CTT1w9C2o7EXAgggECECulpwUVGRubq6Wh7KmeVhnMkhT+Nq9uzZUzt//nxbhBSDbCKAQJAF1qxZkyR/J1JtNlsXqcFgHj58+K6JEyc2+hthsVhKZZtSqelQKX9PyuXvirReKK+Q5eVSC6BC/q44gpzVDj28BBQOSQb0S0lZrZ07d06USdfASJS+IxLFI6G2trZAr284yd9jkxhdK4GLeHmVSICmRKxLxa5EPEulNoeuBcKEAAIIIBDBAtR4iOCTR9YRQKBtAvJkcqw8kevZ1N5y4SvXvI5C6cTti6a2YTkCCESfgA5InjlzJlWaDHSR0uk+E/S7bm7gmeTvw6dSa6HIs4CZdguIs0FqTFwjtp19HUyWV8qrRAIRhx599NFCX9uwDAEEEEAgvAWo8RDe54fcIYBAKwX0Bexrr73WWZ6wmeUp2Tlfu8sFbLW8dFtlu7zb9LtsZ5Rgg1Weyum2zboGRII8tTP6ekr5yiuvdJMnd0myT1FeXt55X9v4SpdlCCAQvgJ6VIeCgoLxcnOrO2D0zmi1PIEvlr8VRfI34hxBB2+awMyLrQb/5J133ok7dOhQJ+nLopNYd5LlKfKeIucjQb/k766u+eAz8CDrZXNG3AjMGeEoCCCAQOAFqPEQeFOOiAACIRZYtGhRQlJSUoYEDDLk4lMPB+d6QikdqX30yCOPlLY2O7rarwwb52jqIlaezN3mTkMCFJKsvVhuVs7Jzcm5U6dOFROIaK042yMQGgH5t2mWV6NmEjr1V199NU0ClpfKv3v9dL1I7nGLpXPGIukMsTI0uSMVXwI6oCC11JKkFkpSZWVl8ezZsxuNCiLDkHaRdVfJtjowoWujFMl80blz53Rg2Of59pUWyxBAAAEEgidA4CF4thwZAQSCKKCfTkq7627yNEwHGpK9k9I3DhIEOCM1HvbJfMDbVUuP7elSM6KXBBzSGqYtF7u69kSBBEL2T5s2rdg7X8wjgEBoBfRNqwQK0+TvQKYECXVwsrP8bTj6xBNP7AptTkgtmAJyjpPl/F4p5zfeOx051/IVcOrgc5GsOyfN587Kd6FedRbv7ZlHAAEEEAieAIGH4NlyZAQQCJKAXGR2l0Nf5j68XEja5FUgHbvlS4dmeVOnTi13rwv2++LFi6VWcJx+UtpVLnK7SnquIIjMn5Kbm23BTp/jI4BAfQF5+h0v/x4z9UsHG+TG09OsVNdQkr8Tu+UG9Hj9vfgUDQI6ACHlSJXAcBc577qPDt1kw/tad7N0gpkTDWWlDAgggECkCXh+jCMt4+QXAQRiV0B6Si+W3uJPy0VlhQQcpDP0/KKOat5QV+33rJwN/VL6pqeioqJL3759fXY+t3HjRvOBAwcyZASNYqpwx+53mJIHR+Dll1++RP799dFHl+Cfkr8RerZM5vPlPS8tLa1A/t3pWklMUSggQYUyKZZ+ndTFk98Fc9euXTvL74QOQsRJkzifo2q8/vrrnQoLCzPke1IsxyiS7QNeU07nhwkBBBCIZQHvKHAsO1B2BBAIIwGpRdBJLhD7yFOr8hkzZhwNo6y1OytyYzRIqvwO1QeSi9sSecuRp7A50izkfLsPzgEQiHGB5cuXj5cbzHR56Y5l8+RGMk/+bVXEOAvFb0FAms+Nl7/HmXozHXSQV7HUlCiUfj4KExISCuU7xHCeLRiyGgEEEGhJgMBDS0KsRwCBkAjIkymjdOTWQxLrJxd8uu8E/cSyXJorfBiSDIQoEbkxSpSbouFS3TtTLm5N7mRlXndolyNlzjl79mxhR9XgcOeHdwTCTUD+3RhWrFiRKjeDnR5//PET8u+Fp9LhdpIiND+6iYYEuvvLb0+6vFIaFkOWlcr6Y/J7dKzhOj4jgAACCPgnQODBPye2QgCBIAnUjUjRV9pj95WbbqtORm4obFIr4JT0Yn44Wp9W6pEzzpw501XK2E1uqHSfFXFuYil/iQzZ97H7M+8IxLKArgEltYKy5N9FlvxbSdAWciO49emnnz4Tyy6UPTgCEvS1ZmVlpcooGelS80430dD9RcjPU/QFwoMjyFERQAAB3wL08eDbhaUIIBBkAXnyb5GLuUskwNBDnv672mO7nyrl5uaekou/qB4Cra6dea4w54rDzpdeeklf3OoARHdxqAkyP4dHIKwF6moG6UBDlvx7cD2BlnkdlKyUIMQp6SNF/9thQiDgAvLbo//+uv4264PrILEMy9kpPT29qqnE9PdVaqpVUVOtKSGWI4AAAvJgEQQEEECgIwTcI1PIzYR+lHRWbi6OSU/zPjv+6oj8hWOamuqVV14ZKO9VMpRorq/x7MMx3+QJAX8F5LttWLZs2TjZXgfh3FOtBBzOyN+I09LxX6HMMxyiW4b3DheQGjkZEgy7Qv9dlu/mUWmScZw+ITr8tJABBBAIQwECD2F4UsgSArEiIE+Juvbu3bv0jjvuqI6VMrennK+++mqaBByu8jpGgTTVOFtaWpozd+7cSq/lzCIQkQL66XJBQcFNcgNnkkBDrlR1P3X69Ol8niRH5OmMiUzLdzZBvrPjvWrm2CUIcVKGdj4SyqGdYwKbQiKAQEQLEHiI6NNH5hFAINYEpMZDL7nAzZIO9jLk5szzN1xmi+Vi96w8bTsTrf1ixNq5jtXy6iFnZYhcJ8Nexuo3IPLKrWvqyIhFGfI+QF4ZXiXIkc9HqM3nJcIsAgjErIDnojVmBSg4AggERUCeUJpllIqhcpPcMy4ubsujjz5aGJSEYvSguo8MaaLSTTrl7CHVfDOkrwzXCBkSgHAkJyd/xJO2GP1ihHmxdS0n+c72k+9pZ/nbsFmaC+khZZkQiBqBus5QB8h3XPdRYtQFk7/RJ2Qklu1RU0gKggACCLRBgM4l24DGLggg0LyAPJXvJk/kR8mNRYLcHDurqqoIcjZP1uq1dW2IT8mOuiNOc48ePTLEvIdc7FqPHDnCmPOtFmWHYAnoGgy7du3qLX8L+klHssnyrjuJdMj31XVTFqx0OS4CHSFQF0z7RgIQe6UGWj/5vvdxByA6Ij+kiQACCISLADcD4XImyAcCUSAgF1pxcqE1Ui6yeuriyPt5aaO9XW6Sz0dB8SK+CNJp3xB58maVgJAMHJJ7jnbzEX9Kw7oAK1asSJFAQz8JMPSWQIOrRo5kuFrmjyckJByfNm1ak6MEhHXByBwCCCCAAAIItFqAwEOrydgBAQR8CUgV6j5ykzFc1lnk5tYu1an3P/3000fkJoMe6H2BhXiZBIEMMmTnbfLuqukm50UPV5onzWDOynnLpxf2EJ+QKE9O2rvroXL7eBWzQAJex6QTvhwCXl4qzCKAAAIIIBAjAgQeYuREU0wEgiWge6EvLCy8XG4yuuo0pMZDnrztpIPDYIm3/bhr1qxJKisr6yXnqodU/01xH0mCEXpI03MSjMiRmhAnuDF0y/DeVgEZLvdq+Vp1ku/VKQluHX3kkUdK23os9kMgGgXqRnC5QspWIf9OdhH8jcazTJkQQMBbgD4evDWYRwCBVgvIUI6JOuggF041srO+eDrd6oOwQ0gE6jqc3C+J7V+wYEFSp06dustTaP1Kk5tE3SN7hvQVoavEHw5JhkgkagVkVIrPdeEIYkXtKaZg7RQoKirSfZwk67+/8hua9utf/3rrnDlzitt5WHZHAAEEwlaAGg9he2rIGAKRI6Dbcg8YMKBy4sSJuvo+U4QJyJM3q9wodpML4C5Wq/UwtVUi7AR2QHalRkOy1JDJkmZVOfJ9oQ+XDjgHJBn5AroWWklJyVj5t9RZAr+65tmeWbNmHYn8klECBBBAoLEAgYfGJixBAAEEEGggIDeaw+Qms78EJwp1nxBJSUl5VJ9vgBQDH6Uvl87Sf8sguUHqoYsr3wmGCYyB804Rgyeg4w3SJ8pw+dvavy6VHGmy+A1NL4JnzpERQKBjBAg8dIw7qSKAAAIRJSA3nBfVdR7qybc8pauUD3ly4ZwnNSb0KBnUePHoRNfMkiVL0iXYMEjOdYYumZx7h3wf9HCu+2T4wOroKi2lQSD0AvI3toc0uRgt/8bMdX9bt0rth6LQ54QUEUAAgeAIEHgIjitHRSDqBPSTTilUH6mKf5Bh8KLu9PpVIN0kIycnJ1NuQDPlSXeGPKGzunfUN6JywXzkySef3OtexnvkCzz//PPdZEjcQVKSVF0aOcd2eTsuNV4O83dAizAhEDgB+Z3VfSaNlX9nXfTfVBl29gP+nQXOlyMhgEDHCtC5ZMf6kzoCESGggw5yMTRBP4mRatYFkukzwc74L1evS49zGJc6Hc5rnUZVJlHSF595ePISuRhjeM5g4zdx/OzsbN2BqH7KfUq+C3p4zi4yn6lf+kJZ3l03p/LOFAUCcn6zJLh0aV1RauXf3tGMjIyjdd+DKCghRUAgvAR0/zpSc+wz6eR3sOSs8/Hjx6lFFl6niNwggEA7BKjx0A48dkUgFgQWL17cSZ5uT5CyWuT9rFwYbQ32zf/StRuTK8qLTihnoxvZArPJ+MCchya/Hwv2kVTGjRs3mj/++GOHr1EM6jqvvETKUyuvAmm/XKAvsCOpfLGYV+llX3c2OlzOV+7Zs2eP05QmFr8FlBkBBBBAAIHACBB4CIwjR0EgKgX0aBUVFRUTpGq9VV65Mm3xdWMZ6MIvXLnuTanWcHdTx5XAxyZlt2Y/++idx5vahuXhI1B3A3uNd47kHFbKq0C+V7oGzTkCEd46zCOAAAIIIIAAAtElQOAhus4npUEgYAJ6mK/S0tKr5IBxcoOY/8QTT2ySd0fAEmjiQIte+/MIh8O006mcBrkpVQ/eeZ0qq6hUH23aqYpLyy/sJU0uDE7nCmNy99lzsyfoTg6ZwlhAB7GkM8JMqbqfLq80yarFO7vSVKNCvl9fSR8RZd7LmQ+8gAQPjX369EkvKyvrKf03dJdmVDZx/1D8acYUeG6OiAACCCCAAAIiQB8PfA0QQKCRgO7gSsYWnyA3InGysqBr166bQxF00BmxO03rpQs7V1B0zLABqntX3XVAF9W/Vze1Zdch9dWO/aqmVpq9Sh8Dcpf0qKM85wcLV6yb8+wjU17W+zOFp0Dd0JulkrvDun+I3/zmN53khjdd5tNlWbp8vxJlXn/ffAYe5DtpkVoRuqkGUxsExNb4wgsvZEigQQ+D2b2yslI3nVISBNJDYvo0b0My7IIAAggggAACCPgUoMaDTxYWIhC7AvqmcOnSpTfoG0GpcVAozSu+ClXb7udWbrjfoRx/0PqJ8XHqkXtvVnHWeg/GVXlltfpkyy615/BJ3cO+50QZlPO0ZP2+eY9M+cKzkJmIENDfuV/84hempr5nEnQYJbUl+slNco30OVAshTrvftFEo/lTLH20xEmwYbgYd5eX98OGMvk3fkZcz8pwmCXNH4W1CCCAAAIIIIBA+wQIPLTPj70RiDoB6QjQlJeXd710KFcxZMiQzRMnTgxJr9q6c8KtR4uKJJSQrFFvmTBGXTykX5O+OeeK1Ydf7VBn8nQXAe7JVVX8Y0t8ygM/fvCmXPdS3iNbQAIPfeQGebiUon4U6tti1coT+/NyU31WmgMdi+ySBj73MjKFDtiM0keWQEOJzJ+VIfrO1tVACXyCHBEBBBBAAAEEEPAhQODBBwqLEIh1Af0EWqYL1QlCALJg1frnpArDXJ1URlpnNfXuG+RGqeWE9x45KTUgdqvS8nrdPDhMSr2QdHGfn84cN47q+S0zRsQWugmQDOfaRWridJbvp+slN9JWnXn57JCA2d98dX6q96utrU2QfSvmzJlTFervdqBx9b9PaaqSIA4p0lylkxw/UQIzp5566invKJwrWR1ILCgo6J6UlFQ8depUr05SAp0rjocAAggggAACCDQt4MdlfdM7swYBBBAIhMAv176TYSmrypFjGfXx7r/9GtW7e1e/D11rs6tNOw+ozbsOKpvMuye5wSxXDuPMZx+Z9Dv3Mt6jS2DRokUJcXFxOghRPWvWrCJfpXvxxRdvlZt0T4BCbtwrdI0e2db7pUfWCMsglR7SVvLbVQcaJNDSSV4pUl6JrV2YZN0pqfGx7cIS5hBAAAEEEEAAgfAR8G7vGT65IicIIBBTAtaKqv+V6hWuoMPgflmtCjpoKIvZpK4aM0yNGtxPfSyjX+w/dtrlJzeYScpgf33hqnX/YY4z3fPjByftiCnYGCjs3LlzdVWXetVdGhZbbsoPy416D3kl1tWQSJYaAq4mPV7b6qDFp16fPbNSY6KHfJeSpUmHTWpN2OQYdgkE2KTvBJsMN2uTwIetub4m9CgSffv2tcq2ZtnfLPuZZB+z5MEseTNJrQWzfM731fxB0rbIdtdJ+kq2c+VJyqHfq2VZqfR5UaLfBw8efMaTYWYQQACBNgosfueduOqc6rlGg+ESp9FhcSjzqnlT73pH/u4EfVSrNmaZ3RBAIEIEqPEQISeKbCIQrQLPr3rjMpsMo+h0KINZetmfNuUm1Tk5sV3FPZVb4Or/Ia9A90NYN+mmI07H27aqqof+ddb3fT4Zd2/Ke/QKSBDAnJaWlihBhEQdiNAvKa3uSDVHggcnGpa8rqnC7RJsaPb3Uo539vHHH9/ScH8ddJBRYSbWpdNwtffnIhnSsqnAx1AJOljlpQMNpampqSXZ2dk13jszjwACCLRX4NerN9xktzvekQcB9frTMShDmcNgnP6TaZP+1N402B8BBGJXoNkLqdhloeQIxI7A66+/3qm8vDxJbrrOdkSpF6xcf1LGxuyl077ikiHq6kt1H4KBmXYcOKY+3bpHVVRVew4of/TsUrfiv/ok3vMf2dmGC+0yPFswg0B9ARnlpbssSZXgg1R0MJsliGDS81LTQNcatOjP8n5Smnrsr7+nHvXVaZBaC1dI0CBFghs2+WyX7W3y2TWvl+mX1II48+ijjxY23J/PCCCAQCgEFq/cMLzG4NghlavqNeOql7bBcNBqskz50dTv7Kq3nA8IIICAHwIEHvxAYhMEolVAV+OWG6gb5GXNz89/V57OhvQp6oJV62Yop/qN9k1OjJfhM29xNZsIpHdNrU19vm2v2rb3iLI76tUUPW8yW344d+pdbwUyPY6FAAIIIIBApAksXLnuhNR06N1SvqX2g1NeG5KTk6bNzL5ZD23MhAACCPglQODBLyY2QiA6BZYsWTJCnr4OkNIVSDXvz0NZylWrNsYXKBk+06nidbp3XDtODb+oxWueNmexqKRMbZT+H46c1H1YXpiMRsNOu9N+70+mfffghaXMIYAAAgggEBsC3g8B3CW+dPhFSnfcvOvgcV1zy73Y8y7BBxlq2/iLZ6bd/Uu5jqgX1fdsxAwCCCDgJUDgwQuDWQRiSUCqjydLFe/rpbaDQWqPfyJNLUL65OK5Vet+43CqGdq8R0aa+v53rgsJ/7HTeRKA2KEKiks96eknONL84g8JiV0eezJ7YplnBTMIIIAAAghEsYDuTLImt6rY/RBAF7V/r27q3psnuEqdX3je1WfSyZxzvhUMhiKnMvzgJ9Mmv+N7A5YigAAC3wq4epEHAwEEYlJgmA46SKd4J0IddFj8+hu6T4dHtbo8KVE3jL84ZCegX1amemjyja404+NcIyxKaw+nwelwfq+yrKjwuZUbntXt8kOWIRJCAAEEEECggwRqc6te9A46yAMJNfHyUZ7cZKR1dg1xfdfEy313/Ox0psoP6F8XrFy37de/e1vXoGRCAAEEfApwce2ThYUIRLfA4sWLO0nA4Tp52fv06fPBHXfccaH3xRAU/bnXNnwhQY8rdFIjBvZRt18zNgSpNk6isrpGffr1HrVTOqF0SPULz2RQ+cppfmDe9Ls/9CxjBgEEEEAAgSgSWLT6rSy7vfaEFMnzIHLsiIH1Ag/exZURL9SmXQfU5p0Hle4/qdFklDi+w/hbZU6YNW/qreWN1rMAAQRiWsDzhyamFSg8AjEmEBcXN1AXWZ7snwh10GHBb9+6XtIdr9O3Wszq2nEj9GyHTAlS4+HmK0erqXffoPr0yLiQB6fKMBjs7+sASV3tjAvrmEMAAQQQQCAKBGSQnT9LMTz3AgnxcWrC6KFNlsxkMqorLxmqpk+5WQ2TPpl0jcV6kwyLrZRjqsFeoWsPzqb2YD0dPiAQ8wIN/mLEvAcACES9wIIFC5ISExNvkOqUzvT09A+ys7MrQ1VofRGy6LUNOQ6nM1Onec3YEWr8xYNDlXyL6Rw8fkZ9vHmXKi698KDGaJAnOEq9mqZSZ0+bNrGqxYOwAQIIIIAAAmEusGjNuuscdsNG7+DALRPGqIuH9PM752fzC139P5zNL/K5j/T9kGt0GLOffXTSJz43YCECCMSUAIGHmDrdFBYBpWQIzYtsNttwsTgpI1l8E0oT3X+CQzkW6DQ7pySp6ffcpPQTlNZOdmmQurU4Vx0sK1YnK7/tJDLBZFaDklPVJZ27qqz45NYe0rO9rkq6ZfdB9dWOA/WrkhqUDjrMnjdtyiuejZlBAAEEEEAgwgR0sOG519bnyE+p6yGAzr7uy0HX/mtYicGfou06dEJ9unW3KqtoHJuXWhGSjPNzk9Fy/9yH7jrtz/HYBgEEolOAwEN0nldKhUCTAqtWrYovKyvrV1BQcGT+/Pk1TW4Y4BUL1rybZLCVS+/XyqIPPemG8WpQ356tSqXG4VC/P7VPvXX2sCqubbpbinGp3dUPeg9Vozp1bdXxvTcur6xSn2zZrfYcPtlgKDHDKZPJfK9cQG3y3p55BBBAAAEEIkHA+yGAO7/3336N6t297b+ZeujNL7fvU1t3H1Y2u919WO93h8FgfMnazfrM7BD3K+WdCeYRQKDjBAg8dJw9KSMQUwILX1v/ez1yhC607k8h+7arW1X+/WVF6j/2falyqi40g2juALrt6X1Zg9QjfUcpc1se4dQd/Oy5IrXxyx3qjFQpdU8G6UDL6TD833nT7/mZexnvCCCAAAIIhLuA6yGA9MEgtR6+HdZJMjy4X5a6W0atCMR0vqxChqzeqQ5J08UmJmneaXxy3vTJq5pYz2IEEIhSAQIPUXpiKRYC4STwq1V/HiRPOvYr6XhKBwSmTrpBZaR28juL35zPV/+25zNVaffRi3YLR7kqPUvNH3blhd6zWti+qdW65oOuAVFWcaFLDGndcf3cqVM+bmofliOAAAIIIBBOAt4PAXS+zCaTmjblJt9DZbYj4yfO5quNX+1Q+UUlPo9iNDhPmA1xU3708He2+tyAhQggEHUCrW9cHXUEFAgBBIItYDKY3tBBB52O7riqNUGH/JpKNX/vF20KOuj0Pis4rZYc3qZn2zUNlx68H7n3ZnXJkP6e4zgcxh97PjCDAAIIIIBAGAssenXtQOlv4QHvLI4bOTDgQQd9fF2zceqkG9VNMnKUHi2j4eRwGvrUqprNC1e+8feFy3/f9jYeDQ/MZwQQCFsBAg9he2rIGALRIbBozVt3ORzOUbo08TJ85dWX6n4t/Z/+58BmVWprX1cUf8k5onaXFvifaBNbWswm1SMzzbPWaVCeqqqehcwggAACCCAQhgJOs2Wd+yGAzl5yYryMLDUkaDnVrRxHD+2vHpWg/aXDL1Iymla9tJzyQEJGvrhVWRNyFq7+y39v3LjRXG8DPiCAQFQJ1P8LEFVFozAIINDRAmvXOk12W+1v3fnQ44MnSPDB32lPaaHaVpzX7OZp1ng1Ib2n66VHtvA1SVtW9cqxnb5WtWqZ7jDrs6/3ePYxOwwrPB+YQQABBBBAIEwFFrz2xp3uhwDuLF47bqTSAfVgT3FWi7ph/MXqock3qH5Z3RolJ7/RJqfd9i9bjxYXLly94buNNmABAghEhYDvq/SoKBqFQAABt4AeOmvZsmWXWK3W8zNmzDjqXh7s9xMV6/9d0uis00nvkqJGDxvQqiQ35p9sdvsf9Bkmo1cMUxbp7VFP1Q67WnRoq3o/70Sj/XaeP6fOSMeUPeOTGq3zd4EeYrO0/Ns+HgxOw9k50yet83dftkMAAQQQQKAjBOQawCjDZ74uo0p5ph4ZaUo3IQzllN45RX33lgnq8Mkc9dHmnarofFm95KUZSIqyO/+0cNWGfVanunf29MkXIv31tuQDAghEogA1HiLxrJFnBFopsGLFilTZpXdtbW2vVu7a5s3/e9nvUqVK5/9xH+D6y0cpYytHl/jmfNO1He7o3l9N6zPCE3TQ6cQZTepfB1+uxnTxDE3uTt71vqkop97n1nzQAYctuw7W7SJhB4OBpzKtAWRbBBBAAIEOEXhu9fqfS8W/Lu7EdSfPugZCR00X9e6upk2+SV132Uila0M0nGTYqKHVBseu51Zt+PPi19/xvyfqhgfiMwIIhJUAgYewOh1kBoHgCFRXV7s7JjgfnBQaH9UcH79anq646nAOkIuM/j6qVzbe68IS/WTmZGXphQUN5qb0HNRgyYWP2VmDL3zwmjte4bt3ba9NmpzVT2f0OOXfTs5Pnpk++fMmN2YFAggggAACYSDw7UMAQ72hn3VNhx4Z+nlEx01Go0FdNlKGvJb+H0YN7qeHvKqfGen8weF03FtTU13wq9UbfqZrbdTfgE8IIBBpAvwjjrQzRn4RaJuA6wpDfriL2rZ76/ZatOqvowzK+B29l0k6k5ootR1aOxXIaBa1DkeTu/VNbPohSM/4ZJ/7na+t9rm8pYWncwvU/qOn3Zs5LPGd7nd/4B0BBBBAAIFwFfj2IYDT07TaajGra8aOCJvsJsqIF7deNUb98K6Jqle3xoNbSPMLs8Hu+C9pKpK/cOWfbw2bjJMRBBBotQCBh1aTsQMCESngCjykpKQUhiL3dmf1erlYcD2+GCM9Wad28h0IaC4vJS2MZFFYU9Xk7uckaOFrsjToUdvXNr6WfShjkbsneUqz+McP3pTr/sw7AggggAAC4Sjwwpq3R7ofArjzp0ex0KNZhNuUmd5ZPXDHNeo711+uOiUnNsqeNBVJcyrj3597bd2WBWv+cmFc60ZbsgABBMJVgMBDuJ4Z8oVAgAQWL16sB9COk2qMtqlTp5YH6LBNHmbhije/Lysv0hvoJxl6JIu2TNUygkRz01tnDze5+m+5vvvPzIxrfDHT5EHqVuw8cEzlFhS7PkkopaJ34uCftrQP6xFAAAEEEOhoAZvN5nkIoPPSOSVJjRsxsKOz1Wz6Q/tnqelTblZXjZGOo82eihqefaQi5Fij3X544ar1ry1/663W/6h7jsQMAgiEWoDAQ6jFSQ+BEAvIuNnu6gb1u48OQj6Wb9liUUbHcvehrx47XOlqnW2ZbDLAd3PTH0/vVx/4GPVi7ekDPke10McanpLe3CEbrauptalPvYbPNBkNM7OzR9Q02pAFCCCAAAIIhJGAfgjgUI56UYbrpTNHkyn8L/3Nkscr5aHF9Ck3qWEDGveJ7ZCRuqTp6EOl+bbCBSvffCqM2MkKAgg0I9C2O4JmDsgqBBAIOwFX4EFqPAQ98FC+48T/SKeQrvEqM9M6q4ulw6i2TlYZoaK5Sff/8Mv9X6k3zx5SY7t0UzUylOZXMmrF0XLf/WemmK1NjnbRVDqff7NPlVfW9QthMBx95qF7Xm9qW5YjgAACCCAQDgL6IUDpjpMve+eld/cMNahvT+9FYT+fkpSg7rzuMjVm2EVKN3nMOVe/mypp0ik1Ou0vLly17mcOg/O+nzx872dhXygyiEAMCxB4iOGTT9FjRiAkgYcF697NtBeX/8itesMV7Ruqq6XAgzud3SUFSr9amu7qMUDFtxDM8D5GcUm52ranrjmHweC0xBkne69nHgEEEEAAgXAUqHsI4K7t6Boxor2/ya0t557SArX+zGFVabepy9O6q9u79as3/HVrjtczM0394K7r1a6Dx9U/t+6RBwL1+3iS/h96GJXxnwtWrf/UbHbcP+eH955tzfHZFgEEQiMQ/vWtQuNAKghErYDFYinV/TvIKy+ohSyu+KMc3/U3ZUi/LJ+9U7cm/SRT4OKi3eOT1AO9WtfXxMZNO5S9blQNGeXrrz9+cNKFHiZbUxC2RQABBBBAIEQCrocASnkeAuhkLx7ST2WkNj0SVKCztluCDs/s/ER9mH9CfVF4Rr1w6Gs1beu76p8FntGh2pTkyEF91aPfvVldPmpwoyYj0vTCoJzOa2y1xlPPrV7/4tq1u61tSoSdEEAgaAINBs0NWjocGAEEOlBA/yDLJK0ggjM998obVzhMxs+VjGRhNpvU9Htu8tkrdWtSr5Gb/ts/X9eaXXxuq5tYLBh1rRqU1MXnel8Lj53OU3/+x7c1NiXoYDfabZlzH80OyYggvvLDMgQQQAABBPwRWLBy/Ub5Lb7evW2c1SI367eohLjQ3Ic7lFPN2Pa+OtZEs8fRXTLVkwMuUQMSO7uz2Kb34tJy9dGmnerQCd+VG+QpSIUyGp945uHJa9qUADshgEDABajxEHBSDohA+AkEM+igS+swmV7TQQc9f9nIQe0OOujjWGXoy4R21nrIiEtQz426rlVBBwnSqI1yMeOenEbDLwk6uDV4RwABBBAIV4FFq9+6XPJ2nXf+9OgQoQo66HT/cvZIk0EHvf6b4jz1xDcfqPelNkR7pi4yQsfkG69Q9916terqozaHdE+d6HA4Vi98bf2RxavfGdOetNgXAQQCI0DgITCOHAWBmBVYtPbzBKnfOFgDJCXEu6pABgoj3ZrQ5kONS+2ulo+5WV2U1LqnKtv2HlEFxSXfpmswnO+bMPkXbc4EOyKAAAIIIBAiAYe9RqoJfvsQQCeZ1jlFjR42IESpK1Vqq1WrT+xuMT2b1Gh8XppflNjaP0hU354Z6qFJN6gbr7jEZ4DF6XD2r3ZUb33utQ1/W/Tq2rQWM8cGCCAQNAECD0Gj5cAIxIZAL9XZLj1L1zXbcipd/TFQk+6bobVTJ4tV/WTwZep/RlytOkszi9ZMldU1So9k4ZlkuK7sbIPd85kZBBBAAAEEwlBg4Yp1jzuVIcs7axPHj1JGaS8YqkkHHUpq/Qsm6E4nD5cXByRrUqtTRr4YoB6RJiX63WhsUGZpbiq1H25zGs0n/2fNumEBSZSDIIBAqwUIPLSajB0QQMBbIDt7RI30Jn1IL9NDT/72Lx+q97/YrvRNfHunHvGJfh/CIk0zvps1SK0ee5u6NbOv3/t5b/jZ13tVlSffhl3zpk9503s98wgggAACCISbwKpVG+OdRvVr73wN6N1d9c/q5r0oqPPHK0qkmUXdSFB+pKSDBb0SUvzY0v9N4qU/C13z4aFJN6q+PTMb7aibX5hshm2L33lHhuFkQgCBUAsErtv4UOec9BBAIGwEjHHmW53VNdul98pkh8Opvtl3RO07ekpNkLalY4b2dw3l1ZbMdo9rucaDDjjcIoGGH/QepjLj/A9UNMzPuaIStePAUddigzI4DSbrvQ234TMCCCCAAALhJlDgLHpR8hTvzpdJfhcnXj7K/TEk70uPbFd26SPJ32li114qox3NKZtLJ71LivT9cJU6LB1Pbty8SxWXlHk2lxqacbVnq/9VFsz3LGQGAQRCIkCNh5AwkwgCHSOgR7N46aWXrlq+fHlQr0DmfP87RxKSU3sYDcY/6pt2XVpdc+DDL7er1zZ8oPQoEW2Z+iQ2/TQkyWxR2b2GqN+Nu0PNHTi2XUEHnbcPv9qhdNDENRkNf3zmoTsPfPuB/yOAAAIIIBCeAs+tfLe3VB54xDt3Y4ZfpFI7JXsvCur85zJk5tbiXL/TiDOZ1GP9L/Z7+7ZueFGfHq5RtkbJMJzek9PgvNH7M/MIIBAaAWo8hMaZVBDoEIE//elPFmnXmCYvfQd/YaiGIOTmyeyJ+pHCA79a9ef/z6jM651OxwidTEFxqWtoyot691DXXz6yVRdDfRM7NcrpAOks8u4eF6mbpZZDvNHUaH1bFhw8fkadOJvv2lU6yqxNSOw8oy3HYR8EEEAAAQRCKeA0VPxZKhp4OjVIjI9TE0YPDXgWPj53Su0rK5SmjP1UP6/fZpsk/tLRHa1K74GsIUGr7dAwI7q/h4x0GU774HHPKmnm0fRTDc9WzCCAQKAFCDwEWpTjIRBGAnv27LFlZGRIR0vGkP1b/8m07x4UgpELVq6bJG0sViun0zWsxOGTZ6XmQ666VJ7EXCkXRVZLy1nqEZ8sw2qalG5Ocb1Uy7ytWz81PCU9oMJ26V37Y6mK6Z6kksj/qQuiuBfxjgACCCCAQNgJLFj5lxuUsl/mnbGrxw736/fVe5+W5otrq9V/7v9Kfs6d6o3TB9VdEvx/uM8IlSI1D984c1CdqbzQlKGlY+kmkQ/0CnxgpKl0a212tWnH/nqr7Qb1br0FfEAAgZAIeCKkIUmNRBBAIOQCy5Ytu1MuFowSgHgnOzs7pCM0rF3rNB0ve/MXBoPjX+R6xVM9ISkhTl196Qg1anD96o++cDYV5ahLOmeouADVbmiYxlc7Dqh/bvUM/3Xu2Wn3ZMrTkLo2Fw235jMCCCCAAAIdL6CbUi5ctV63Y+zqzk1mWmc1VYaWDPSkR6C4+8s3lUN+yN1TiowadXXXLPVh/glVbff/0uLfhl6hdP8OoZr+uXWP+so78GBUzni7qdfTj0w6E6o8kA4CCHwrQB8PfBMQiHIBuYm26SLm5OS0XMUgwBZ6KMp50yf/m9Fuk5t59VepAeG6atGjX7z72ddqzV82qlO5Bc2menlq96AFHXQ+3BckOthgtRoeIOjQ7OlgJQIIIIBAGAgsXLn+WcmGJ+igs3TDFcHpNyHBZFYNmz6W2mrU33KOtiroMLJT15AGHc6XVaitu12DbnnOmFMZf0/QwcPBDAIhFSDwEFJuEkMg9ALyVMT1KCIuLs5T4yDUuZj7aHbhs9OmfMcSZxwtAYgj7vTzCorVH975RL390WZVUl7pXhyy90+27FI1ta64jFQhVZt+9IN7PghZ4iSEAAIIIIBAGwSWrt2YLLHy//LedUi/LNWrW704hPfqds8PT0lr1zGM8uP/1IDR7TpGa3f+aNNOZfOqjSHVvGsNxoSZrT0O2yOAQGAECDwExpGjIBC2Ana71JGUKSkpKeQ1Hhqi/PjBSTskAHGRwWCe6jSoCvd6PfTmqnXvqc+37at3keBeH4z3nHNFas/hk65DS99TMgR64n3BSIdjIoAAAgggEEiBqvLzr0p/khb3Mc1mk7ruspHuj82+19gcavPBPLX7RGGz2zVcOayd/SvdKn00DUqWTh5DNJ04e076k6zfmsJpMPxk3tRby0OUBZJBAIEGAgQeGoDwEYFoEzCbzbW6TMXFxZ6LlI4u47PT7v5t51F9upgMphckLw6dH90B1Off7FUr3nhP7TtyKuhZ1MNn6o6y9CRvK56Zfuu3UYigp0wCCCCAAAIItE1ARo4aJL9d2d57XzZykOqUnOi9yOf8sbxS9d1f/U3NWflPNfOljerBRf9QX+7P8bltw4XD2lHjIVE6oXykr3+BkYbptuWz/mnfuKn+SBtS4SLv2Ycn62sOJgQQ6CABAg8dBE+yCIRKQEa0cNV4MMkUqjT9SWfmuHG1c6dN+rElvlNPuSD4RKlv+38olSYXb3+8Wf3+r5+onHPF/hyq1dvsPXJSncn79mmPpF2Vbkh9utUHYQcEEEAAAQRCLGBwmtY5ldQZrJtSkhLU5aMGuz82+e6Qm/Gf/+9XqrC0yrPNifxS9exrn6l58iosq/Ys9zWj+3jQAYS2TPf0GKhSLXFt2bVN+2zff1TlF5737Kv7bpL+qbPpw8lDwgwCHSJA4KFD2EkUgdAJSFOLfEmtWgIQZaFL1f+UfvzgTbnS/OI6qXZwlXQ+6akXeSavQP3u7Y/U3z/9WlVIJ5CBmnTNik+2eEaxUMps/tG0aRMvXIkFKiGOgwACCCCAQAAFXMNUK2e9qgPXjhuhLNLUoqXpL5uOqMM5F27Gvbf/Qmo9PPHSR0o3w2hq0pGOIcmpTa1udvn28/kqvyY0/ThV19RKs8299fJjUIYv5k6d8nG9hXxAAIGQC3gipiFPmQQRQAABHwKLVm2Y5XA6FsnDGc/jEavFoq64ZIgaO+IiZTK2L1766dd71Zfb97lSlq4dTj87/d5ePrLBIgQQQAABBMJGwDU8dfmGAgnSd3ZnqmdmmnrwzuvcH5t8L6uqVfcvfFedL28+iP+L741XN17c9E/iyuO71e9O1r+pbzLRBiviZWSM+3sNUQ9kDVHWdv6ONzh0vY8bpRnl1j2HvZc54qzOvrN/cG/w23B6p8o8Agg0EmjfFXyjw7EAAQQQaJ/A3GmTlxmTu6caTGqle/jNmtpaqaWwSzqgfF8dOnG2zQmUyNBaW3YfrNvf4DTY1XfbfDB2RAABBBBAIEQCxys3/Nw76CDNBtQN4/0bPnPl+3tbDDroYtRIjcDmpvb081Al/VyvlsDFw1//XZ2sLG0umTavKzxfqrbtO1pvf6PRuZygQz0SPiDQYQIEHjqMnoQRQKApgbnZEyqffWjKIwa7tb9Ukdzq3q64tFxt+OBL9ad3P1Pnilt/4fLx5l3KVndhJdW9Nj4z494v3cfmHQEEEEAAgXAUWPTq2jSDw/kz77yNGNhHde/actOH49KPw7ov69UA8D6MZz7BalZXDunh+exrpj2BB/fxcqsq1Pozh9wfA/q+UYbPdDguNBfRfThZMhPmBDQRDoYAAm0WIPDQZjp2RACBYAs8++idx5+dfs84s8l4s6RV4E7v+Jk8tebND9QHX25XVdU17sXNvp/KPaf2Hzvt3sbh7JL4PfcH3hFAAAEEEAhXAYfJvEZGavB05GC1mNU1Y0f4ld1X39sjw1RfuBlvaqcfXj9EdUmyNrXatbyLdBDZPT6p2W1aWplstqpruzbdnKOl/Ztaf/hkjjp6KrfeapPR9OTsO+5ovn1JvT34gAACwRQwB/PgHBsBBBAIhMCchya/L8OHZSx6/a2fOG22/5QLMItDuujetveI2itDb141ZpgaPbS/tMxoutuaD7+8MLSWXL29MHfKrXmByBvHQAABBBBAIFgCz//+zYtrqx13yMDPniTGXzxEJSV4ukHyLG84U1Urw1Tv86954t2X92+4u8/Pw2VYzZyqcp/rmlrYWQIWV6b1UFenZ6lxqd2UxRDY554OuSjQNRq9J7kaODnnoUkrvZcxjwACHStA4KFj/UkdAQT8FKgbBut/Vrz55rKiAvtKGUzsXrkOM+gaD7rmw3Zp1zlx/CjVt2dmoyPu2H9M5dUNrSVNN8qSLu7900YbsQABBBBAAIEwE7BV29fr3zp3trqkJKlxIwe6Pzb7XlFtU9USfPBn+tnrX6q5d49WA3t4+q70uduwlHT1Yf5Jn+u8F2bEJUqgoacr2HBx5wwV2FCDd0pKfb37sNL9O7gniWs4zU7nve7PvCOAQHgIEHgIj/NALhAIqsArr7zSrbq6eqzJZNryxBNPRPST/kcmTdJXF/c9/9s3h9hsznVOp2O4xjtXXOLq+2Fgnx7q+stHKX1xpqeaWpv69Os9rnnX/4zqsZnjxtVeWMAcAggggAAC4Sfw3Or1P3DYnQO8c6Z/3/wd3Sk1KU4lxVtUuYxq0dK049g5NX3JB+o74/qpx24Z2WSzi+b6eeidkKKu7prlCjYMbePQmy3ls+H6iqoa9UXdSFWedQ7D+z+ePmWz5zMzCCAQFgIEHsLiNJAJBIIrUFVVlWg0GnX70Cx5RXTgwS314x9O2i/zI15YveGeWofzNWmK0Umv06NeHD2dq8YOH+gaglMHHSqqvm3iaVTGQ888PPl/3cfgHQEEEEAAgXAUWL5li+X8zhPLPVUdJJN9emQoHVz3d9KtD793zSCl+3nwZ9JNGP+y6aj6cMcpNe3GYeq7EwZKkMM7B0oNloBCz/hkdaaqzHVI/Vk3odABh74SeAj19OnW3aq6pl5gxVGTHPf9UOeD9BBAoGUBAg8tG7EFAhEvYLVaC202m7Lb7WkRX5gGBfjRQ5PXy/jmfzlR+eZ/KLvjp9IK1mSXjrQ27Tygtu4+JIu+7VRLmlg4DQbLlAa78xEBBBBAAIGwEyjfeXqBwakS3RkzSgDA3+Ez3fvo9x9cN1SdPFem3t12wntxs/NlUkPixb/uUG9KEGL2nRerK4Z092xvkmjG0tE3qB3n811BiExpUtFRk25CufPg8XrJO42GhT/LviO/3kI+IIBAWAjUD2OGRZbIBAIIBFpAagMYli5derv0kyA35fZ/zJ49Oyp7ef7l6nXpcU7j69LR1K0y3nm9v29Gk2HJMw/d83SgbTkeAggggAACgRRYsO7dTFVcrnuF9HSNMHroAHXTlZe0OZm3txxTy9/drYrKqlp9DB140AGIPhmhr9HQXGb/8Ld/qlM55zybGAzG0rH9OqdNnDjR5lnIDAIIhI2A5w9a2OSIjCCAQMAF6jpmLNIHjouLi7paD26wnz00pUCaUtweZ4wbK1GHT2V5pbzOGS3mfyHo4FbiHQEEEEAgrAXOV+gOkD3X6PFxVnX1pcPalWXdd8Mfnr1VPXDNYCVDVLfqWF/uz1FTX3jfVQtC14YIh2n/0dP1gg46T1JDZAZBh3A4O+QBAd8CNLXw7cJSBKJOQPp4KJSaD13llSqF8298rQhVmP3QHdsk69dEaPbJNgIIIIBADAsYnI77vQayUBNGD1U6+NDeKSnOrJ66Y5SaJENnLpamFF/4OdSmTtcmTRj/+OlBV5ONGbeMUHdd1l816P6hvdnze3+dl0+21B8+U+I0+5+ZPvmPfh+EDRFAIOQCrQt5hjx7JIgAAoESkFoPrhoP0djPQ6CMOA4CCCCAAAIdLiBtBrzzkNop2ftju+d7d01WCx6aoJ6bdrXqm+nql9nvYxaXV6sF679W0198X207eqGZQ3MHKKmoUeUytGegps27DqjzZRWew+k+nExGG8NnekSYQSA8BXQv90wIIBADAnfffXeNw+EYKDUe4h9++OHDf/rTn6QfRiYEEEAAAQQQCCeBWyY/cL/kR49C5ZoOnzyrdCyie0aq1DKo132Re5M2vfdKT1aTxw9QnZOsas/JIlVjs/t9nMKyavW3rcfVkdxSNax3mkpJsDTat0KCDT/97efqVxKo+MM/D6qDZ86rIVldVKfEttfeKKuoUm9/tFnJ9YwnPYNJrX/m4XuXeBYwgwACYSlA4CEsTwuZQiDwAm+//bbj9ttv7ylNLuJqamrOyueo7GAy8HIcEQEEEEAAgdAJ3Hbv/QecDvWwO0U9OtPxM3lq35FTqlNyokrrHLhOHnUgY4QEDnTTiYoamwQHiqVvZnfKLb8fyytxDcFZXWtXI/qk1+s/4j/Xblaf7v22Zad0+qyO55eqDV8dVeVVNjW6f0ajoTpbTk2p9z7/RuUWFHs2ldoOtpSklKve/tNvuabxqDCDQHgKEHgIz/NCrhAIisCUKVN0Z4v2nJyc0x999NGFxwVBSY2DIoAAAggggEBrBd5d/8fjt05+oL/sN9p736qaWrXv6Cl1Oq9AdUvvohIT4rxXt2s+3mJSE4b2UNeOyFInZPjNs0Xlfh/P7nCq7cfOqXekBkRqcpwa2KOz+kaaYSz9285Gx9ABiF0nCtTWw/nq9rF9W1WD40xeodq4aUe9YxqU6eezf3DHe/UW8gEBBMJSIHD1tcKyeGQKAQQQQAABBBBAAIHIE3hu9ZtznQ77r+RevdGDQqP07HjJkP7qqjHDAtLxZEOdj3efUUvf2aHOFPofgHAfo5/0G1Eow3bqvh2am37xvfHqxot7Ndjd++gAAEAASURBVLdJvXWvv/WRyjnn6q7q2+UGVfTsw/d0lT6seJBST4oPCISnQKM/ZOGZTXKFAAIIIIAAAggggEDsCPxjwx++uO2ue5c4zeZRUuqB8vI8MNTNIfRN+I4Dx5XZbFbdu3aRfiA8q9uN1C8zRU2+YoCKt5jV3lOFqlZGkvB30h1Q6qYXLU0j+6arkdI8w59p16ET6pt9R+pt6jQYv3v1mGEH6i3kAwIIhK1A4P5ChW0RyRgCCCCAAAIIIIAAApEr8Pzv37zYVm1fLwGHAb5Kkd6lk5p4+SjVLyvT1+p2LSsorVIv/32X+vu2E9L/Qys6gGgmVR0kWf2jm9SAbi2PqlFrs6lX33hPlUvHkl7TN/OmTxnj9ZlZBBAIcwECD2F+gsgeAggggAACCCCAAAJa4LnXNky1Ox0vGZwq0ZfIwD491PWXjVJdOiX5Wt2uZXtPFann3/pG7T5R2K7j6J1vGdNH/Xv2ZX4d55Mtu9WmnRcqNkiHmE6j1TJwzve/U78KhF9HYyMEEOgoAQIPHSVPuggggAACCCCAAAIItFJg7drd1hPlBxZK7YMnZVdjw91NJqMaO3yguuKSIcoqTSUCPb0rNR9ekhoQ50p0f9Wtn+KtZvWHZ25VXTvFt7jz+dJytWr9B8pm9266YVwzb/rkh1rcmQ0QQCCsBAg8hNXpIDMIhEZg+fLlFrvdPqCqqurE3Llz23blEJqskgoCCCCAAAII+BB4/vfvd6utLv2TcqqrlXI2uqZPklEvrh47Qo0a1NfH3u1bVCV9OPz2o/3qD/884Fd/Dt6pPXrzCPXwDUO9FzU5v+HDr9Sh42e81jtrOmVYU2fedVeF10JmEUAgAgQaRUkjIM9kEQEE2ingcDgy5UnJ4Pj4+OHtPBS7I4AAAggggEAHCPz4wZty502751rpeOEq6VnS++7clZvyymr17qdfq9/+ZaM6nVsQ0Bzq4Tdn3Dxc/W7uLer6kf6PTNE9NUk9eO1gv/Jy4mx+g6CDrt5hmkfQwS8+NkIg7AQaRUfDLodkCAEEAi4gNR4SJfhwg7wK8/PzN82fP98W8EQ4IAIIIIAAAgiETGDByjefMij7Qun+Mc5XokMH9FLXjRupUpISfK1u17JtR8+pxW9tVwfPFjd7nP988Ao1cVRWs9volboPyzVvfqDyi0o82xqMxpxnH57cw7OAGQQQiCgBajxE1OkiswgERmDmzJkVRqPxSwk8nM3KyuodmKNyFAQQQAABBBDoKIF50yctMSZ3T5URI16TGhBy615/2nfklFq57j31+Tf7GvSZUH+7tnwa07+rWvn0jWrePZeqLkk+4x7qnisu8ivooNPfvv9o/aCDLo/RdF9b8sY+CCAQHgLUeAiP80AuEAi5gNR66GGz2cbJBUplXl7eh1Lrwf9BukOeWxJEAAEEEEAAAX8FFr76174Gc/UbDoca62sfXevhustGqqH9/W8m4es4vpaVVdWq9V8eUe9tP6mKyqpV15R4NXn8AHX35f0lHuJrj/rLqmtq1at//oeqrK7xrJDdPn12+pRrPAuYQQCBiBPw459/xJWJDCOAgB8C0seDYdmyZdfLpslms3m71II44cdubIIAAggggAACESLw69UbbrLZHX+Q7Kb7ynJWt3R1w/iLVbf0Lr5Wd8iyD7/aob7ec9grbYMj3mns/fQjkxr1Y+G1EbMIIBDmAjS1CPMTRPYQCJaA1HRwWq3Wg/r4MsLFYAlE8PcgWNgcFwEEEEAAgQ4QmPPQ5PefnXZPhlKGn0ltg9qGWdCdTr7+1kfq3c+2qQrpjLKjp4LzpeqbfUfrZUOuV14i6FCPhA8IRKQANxoRedrINAKBEXj00UdPS18PpRJ0SHjppZf6BeaoHAUBBBBAAAEEwkVAP2iYN/2e/05NM6UbDcY3lEEG4PSa5BpA7TxwTL36xntq866DyuGot9pry+DPbpTaDtL/1IWEpDmotZv1mQsLmEMAgUgVIPAQqWeOfCMQAAF9MSLNLPbqQ8mFR98AHJJDIIAAAggggEAYCjwyaVLpM9Mmf9diNg2TGwDXb793Nmtqa9XHm3eplevfV4dP5nivCsm8TvPY6bx6aRmVY9bsO+7o+KoY9XLFBwQQaIsAfTy0RY19EIgygcWLF19ksViqnnjiidNRVjSKgwACCCCAAAINBE6VONO/2rrj346fOPqk3e6wNFjt+ti3Z6ar/4f0Lim+Vgd0ma5lsUoCHkUlZReOazAcnzftnn4XFjCHAAKRLEDgIZLPHnlHAAEEEEAAAQQQQMBPgYO5zivtDvWMNLeYLC0sTPJS+w7sUUeOHJD2F42bWBiNBjV66AA1YcwwFW/1GZ/wM+XmN9NNPHRtC/dkMCqnyZQ4bs4Pb/vavYx3BBCIbAECD5F9/sg9AggggAACCCCAAAJNCkhTStP+HDXFaVBzJbZwha8Nq2tq1Pbtm1XuuTyJSTSeEuKsruDD6KF6SExfWzTex98lFVXVaoX0L6GH0XRP6WnpRVdfee2jgzLVBknPq9MH9xa8I4BApAkE9i9HpJWe/CKAAAIIIIAAAgggEKUC+3Oc90s9hv8rNRv6+VPE8yXn1eavv1BVlZU+N++a2klNvPxi1benDJQRoEmPqKE7t3RPOrBx08TbVVxcnAQ51GEJmPx0WDfDG+71vCOAQGQKEHiIzPNGrhFAAAEEEEAAAQQQ8ClwKM850OZQr0jA4XqfG7Sw8NSp42rn7u3K7rD73HJg357q+stGqi4pST7X+7swt6DYNZynHlnDPQ28aIgaOni4++O37wb1vty0PDa0u+Fo/RV8QgCBSBEg8BApZ4p8IhBCgWXLlqXKRUB6RkbG0ezsbN9XHSHMD0khgAACCCCAgH8C+3OdU6WvxqXSrCLZvz18b6U7fNy9d6c6fuKIbHAhMODe2mQyqrHDB6orRw9RFrPZvbhV7//7zifqdG6BZx8ZaUvdetN3fDbnkNoPJTIax+ODuxv+17MDMwggEDECDKcZMaeKjCIQUoEBktqwwsLCkSFNlcQQQAABBBBAoE0C8sDAsDfHucjhUKvbG3TQGdAdS44acbG66YbbVFqX9EZ5ktEw1KadB9Srf35P7Tp0otH6lhbsO3q6XtBBb3/JqLE+gw56nVSK6GR3qt/vy3VK0xFpgMGEAAIRJUDgIaJOF5lFIDQC1dXVh3VnTna7vc+SJUv6hiZVUkEAAQQQQACBtgjIjbhxf656XQIOc9qyf3P7xMfFqwlXXqsmjL/G1e9Cw23LK6vU3/+51dVk4kxeYcPVPj/bJGjxyZYLo1jojZKTU1SP7j19bu+90OlQPz2Qp1YSfPBWYR6B8BcgWhj+54gcItAhAi+++GJ/o9E4sq436c9nzZpV1CEZIVEEEEAAAQQQaFZAOpFcLC0jnm52owCtPHr8sNq7b5dySNUKX9OwAb3VteNGqJSkBF+rXcs+/2af+nzbXq/1TnXdNTerFAk++DvJTczCoT0M8/zdnu0QQKBjBQg8dKw/qSMQ1gISfBgnwYce8lShSi4wPpk9e3Z1WGeYzCGAAAIIIBBjAvvznA9JH5CvhbLYUiNS7dy1XZ0+c9xH7w/K1efD5aMGqctGDVZm6QvCeyotr1Qr172nam0XupDq0S1Ljb30cu/N/JqX1iDfG9Ld8Ae/NmYjBBDoUIH6fwk6NCskjgAC4SZgtVq3S57KpNZDvMlkGku1xnA7Q+QHAQQQQCCWBfblO3tK04MXQm0g1wRq9CWXquuvu1V17tylUfK1Npv6TGo06ADDfunLwXvSTSy8gw56+MxLLr7UexO/56WWx5JDOc5Mv3dgQwQQ6DABajx0GD0JIxAZAmvWrEkqLS29RnJrkQuNw48//vieyMg5uUQAAQQQQCC6BaQzyRelysFTHV3KvPxc9c2OLaqmpsZnVnp16+pqfqH7g3jzw6/qbaOHztRDaLZ1kqeozw3pYXi2rfuzHwIIhEaAwENonEkFgYgWWLx4cYbFYhkvzS0MUr3yHzS5iOjTSeYRQAABBKJA4GiRs0t1lTojA1023ZlCiMt54NB+dejwXun/ofHwm76yYrVY1S033elrlf/LDKos3ah6ZGYayvzfiS0RQCDUAjS1CLU46SEQgQISaMiXoMMWyfqhp59+2vfjjAgsF1lGAAEEEEAgUgUk6HBzOAUdtOPggUPULTd+R3V3jU7RQvBBVo8Z0/p+HRqdL6dKLnSoGxotZwECCISVADUewup0kBkEEEAAAQQQQAABBFoWCOVIFi3npvEWZaWlavPXX6nyitLGK2XJ8KEj1YD+g3yua+1CuaFhhIvWorE9AiEWMIc4PZJDAAEEEEAAAQQQQACBdgpIa4asdh4iqLsnp6SoidfdpHLzctShI/vV+eJipYxGlZyYqEYOH63S0tIDlr7TEN4WASsoB0IgggUIPETwySPrCCCAAAIIIIAAArEpIE/541tozBAWMN0yuyv9CvIUH+Tjc3gEEGinAIGHdgKyOwKxLDB//nxjRkZGptlsLpg5c2ZtLFtQdgQQQAABBEIqYFC5MqIFkwgYnGLBhAACYS1A4CGsTw+ZQyC8BbKysjJk6KzLbDZbkdPp/FzG4naEd47JHQIIIIAAAtEhIDUedhJ3+PZcGoxqZ7DO6ooVK1IqKir6Wa3Ww/KQpSJY6XBcBKJdgFEtov0MUz4EgiggI10USrChUpJIffHFF0cFMSkOjQACCCCAAAJeAgaz+rvXx5ielSBM0Cxqa2u7G43GfjKc+ITly5cnxjQ0hUegHQIEHtqBx64IxLqAbl5RXV29Rdd0MJlMfZYsWdI31k0oPwIIIIAAAqEQGNzVsFduuP8ZirTCOQ2DQX0wuJvhSLDyOGTIkKMSeCiUmp0JEoS4as2aNUnBSovjIhDNAgQeovnsUjYEQiAwZ86cYvkx3lGX1Ch5GtA5BMmSBAIIIIAAAjEvYDKq/z/WEUwm9Z/BNJg4caJt6NChX+nggzxoiZdmFxOWLl2aHMw0OTYC0ShA4CEazyplQiDEAk8++eRJ+TE+Li+DNL8YI4EI/raE+ByQHAIIIIBA7AkM6mb4hzzxfz32Sv5tiaXsKwZlGD4Odvl18CE3N/crSadAmlzoETQIPgQbneNHnQA3B1F3SikQAh0jkJeXt0eeBpRL4CFFaj0M7ZhckCoCCCCAAAKxJRAXp56WJhf7Y6vUUlqD2q1Mak6oyi0jedny8/M3SXoF8oqTF8GHUOGTTlQIEHiIitNIIRDoeAH9gyw1HbbpnMjTgIt0L9AdnytygAACCCCAQHQL9E81FMvoFrfJjXhOdJf0Qukk0HLKYlG3D80wlF5YGvw5fa0jw4h/Jdc75yS1OIvFQt9WwWcnhSgRIPAQJSeSYiAQDgKzZs0qMpvNe6TWQ01VVRWjfIXDSSEPCCCAAAJRLzCsh+GYxaiukaYHh6O+sEodkCDLtQPTDSc7oqzZ2dn2zMzMTXK9s71Lly5B69SyI8pGmggEU0AChkwIIIAAAggggAACCCAQ6QKHcpyZtU61VspxXaSXxWf+Der9lET1QK9OBt3cgQkBBCJIgMBDBJ0ssooAAggggAACCCCAQHMCuoPn/bnqZ1Lt8N+VU1ma2zaC1tXITcu/D+mufiX9WFOjMoJOHFlFwC1A4MEtwTsCCCCAAAIIIIAAAlEicOCcc5jDpl50OtWNkVwkuVl512JWsy/KMByI5HKQdwRiXYA+HmL9G0D5EUAAAQQQQAABBKJOYHBXw96h3Q03KaOr48n3IqmA0leFUwIOfzca1E1Dexhui5Sgw9q1axOkxgkPdiPpy0ZeQybAP4yQUZMQAggggAACCCCAAAIdI7A3xzlKLvznSA2I70sOrB2Ti+ZTlfxVSceRr5ss6teD0g17mt86vNa++uqradXV1VeZTKYTjz/++Pbwyh25QaDjBajx0PHngBwgENUCL7/88vDly5dfyhOAqD7NFA4BBBBAIMwFhnU37JQaENPjTaqv1IKYJ9n9WG7ybR2ebYOqlRoOG41G9YzZoPpKHmdEWtBBG3bq1KlS+p9wyJDifeS6p2uHu5IBBMJMgMBDmJ0QsoNAtAnU1tZm2my2rN/85jfp0VY2yoMAAggggECkCfTPNOQM62ZYKENwXh8fpzKkOcMDUtPgt/I6F6qySKAhT9JaLWlmmy2qqwQbbhjSzbBoYHeDXh6RkwyzWSnDiR/UmZfrnlG6k8+ILAiZRiBIAuYgHZfDIoAAAi4Bq9WaIz/AKVL9MEsWhOyiBn4EEEAAAQQQaF6gf6qhWLb4o37pG+XD+WqAzaFGyLARIyQoMEKWj5CRMYbK57jmj+R7rRxDN53YJ2t3y/xuOc5uk0HtHpipjkTj6BRPPvnkoWXLlunrneRXXnlloLzTIabvrwZLY1BA/gYwIYAAAsETWLFiRUpVVdX1kkJtfn7+P+bPn+8IXmocGQEEEEAAAQQCKSABCdPhQtXTWaM6SRONTtI2o5PBIfMGeZd5CSbIf6pU/l8iz/hL5KlmiXLIy6rOD0xTZ3Tzg0DmJ9yPtWTJknQp8wRd7uTk5I+mTp1aHu55Jn8IhEKAwEMolEkDgRgXePHFF683Go0pUvth04wZM3JjnIPiI4AAAggggEAUCyxdunS0FK+3BG3OPfXUU19EcVEpGgJ+C9D2yG8qNkQAgbYKSA/PZ/W+0tyCzpbaish+CCCAAAIIIBARAhkZGXvkgUuN1Hrounjx4l4RkWkyiUCQBQg8BBmYwyOAgKuTpULtID/CaXgggAACCCCAAALRLCAdTdZIR5Ou4UAtFkvfaC4rZUPAXwECD/5KsR0CCLRZYNSoUUV6Z4n8d167dq2pzQdiRwQQQAABBBBAIAIEpKPJk9LUYocMr6k712RCIOYF6OMh5r8CACAQGgHpbOlaHXiQ16ezZs1yBSJCkzKpIIAAAggggAACCCCAQEcKMJxmR+qTNgIxJCABhwPS10MveS+LoWJTVAQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAIELAtLRpEE62E64sIQ5BGJLgN7lY+t8U1oEEEAAAQQQQAABBBAIsUBmZubAioqK8XfeeWfJO++8Q39XIfYnuY4XYDjNjj8H5AABBBBAAAEEEEAAAQSiWMBoNNp08aTmQ/8oLiZFQ6BJAQIPTdKwAgEEAi0gEf44XdUw0MfleAgggAACCCCAQDgLSODhtIzs5ZBX1+XLlyeGc17JGwLBECDwEAxVjokAAo0E9I/s8ePHb3755ZdHN1rJAgQQQAABBBBAIIoFZs6cWetwOM7qItrt9t5RXFSKhoBPAQIPPllYiAACQRDoLD+4uraDJQjH5pAIIIAAAggggEBYC1gslhN1GexNDdCwPlVkLggCBB6CgMohEUCgsYBE9109OdtstsrGa1mCAAIIIIAAAghEt8Bjjz1WIAGHCnklrFq1qmt0l5bSIVBfgMBDfQ8+IYBAkASktoMr8CBtHAk8BMmYwyKAAAIIIIBA+ApI/w5Oyd1JncOqqqo+4ZtTcoZA4AUIPATelCMigIAPAbPZTODBhwuLEEAAAQQQQCB2BGpqalyBBylx97Vr11pjp+SUNNYFCDzE+jeA8iMQIgGp8dBFJ2W1WktClCTJIIAAAggggAACYSUwd+7cSpPJdFZqPxik0236vQqrs0NmgilA4CGYuhwbAQRcAosWLUrQ7RnlN9Y2ffr0MlgQQAABBBBAAIFYFUhLS9smTU8/nDdvXnmsGlDu2BMwx16RKTECCIRaQHpxTq1Ls6iufWOos0B6CCCAAAIIIIBAWAhkZ2fbJSMVYZEZMoFAiASo8RAiaJJBIJYFpEphii6/NLcojGUHyo4AAggggAACCCCAQCwKUOMhFs86ZUYgxAJxcXFnZBhNa2pq6rEQJ01yCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIBAKwUMrdyezRFAAAEEEEAAAQQQQAABBNopsGTJknQ5xHgZ+eubp59++kw7D8fuCIS1AJ1LhvXpIXMIIIAAAggggAACCCAQjQLSB5YeatwkQ2tmRWP5KBMC3gIEHrw1mEcAAQQQQAABBBBAAAEEQiBQU1NTXJeMe9jxEKRKEgh0jABNLTrGnVQRiHoBXX1QIvgjpaA7Zs2aVRT1BaaACCCAAAIIIIBAKwSkiYVh2bJlt8ouloyMjPezs7MrW7E7myIQUQLUeIio00VmEYgMgfnz5xtNJtMl8oPaSaoQJkZGrsklAggggAACCCAQOgG5RnLKy1XrITc3l1oPoaMnpQ4QIPDQAegkiUC0C2RmZvZzOBxJUs4y+SE9G+3lpXwIIIAAAggggEAbBVy1QiUAQeChjYDsFhkCBB4i4zyRSwQiRkBqO1ilpsNgnWGr1bpHPjsiJvNkFAEEEEAAAQQQCKGABBxcgQepKdolhMmSFAIhFyDwEHJyEkQgugW6d+8+TEpokeDDuRkzZuRGd2kpHQIIIIAAAggg0HYBqRnqamoh101ddFPVth+JPREIbwG+3OF9fsgdAhEl8Pzzz3ez2+19JHrvSEhI2BVRmSezCCCAAAIIIIBAiAUk2FAjnXGXS+DB2Lt3b91MlQmBqBQwR2WpKBQCCIRcQDexsFgsl+iEpbrgvkceeaQ05JkgQQQQQAABBBBAIMIEJPCwV7LcPSUlpSLCsk52EfBbgOE0/aZiQwQQaE7g5ZdfHi61HS6SH8/Cxx9//HOp9eBsbnvWIYAAAggggAACCCCAQGwI0NQiNs4zpUQg6AISaCiTV3FZWdk3BB2Czk0CCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCAQIwIy7BOd08bIuaaYCCCAAAIIIBBcAX1d9frrr3cKbiocHYGOE+DGoePsSRmBiBRYunRpsmT8Mhm9ouaJJ574LCILQaYRQAABBBBAAIEwEli2bNkQCT4Mtlqtm2bMmJEbRlkjKwgERIBRLQLCyEEQiA2Bl156KVNKerW8kuXH0R4bpaaUCCCAAAIIIIBAcAUcDodZp1BTU5MS3JQ4OgIdI+D6gndM0qSKAAKRIqCr/y1fvnyg3W4fWpfnnK5du34dKfknnwgggAACCCCAQDgLyFDk1Tp/JpPJGs75JG8ItFWAwENb5dgPgRgRWLt2rUlqOoyW4ENPXWSLxbJfqgAelB9IZ4wQUEwEEEAAAQQQQCCoAmazucZmsyl5yEPgIajSHLyjBGhq0VHypItABAgsXrw4Lj8//0oddJBAg023O3zssccOEHSIgJNHFhFAAAEEEEAgYgQk6FCjMyt9aBF4iJizRkZbI0DgoTVabItADAnMnz/fKNX9JkiRUyXQUCk/iJ/R2VEMfQEoKgIIIIAAAgiETCAuLs4VeJC+Hgg8hEydhEIpQOAhlNqkhUAECfz85z9XUtNBAu/GwoSEhE9nz55dEkHZJ6sIIIAAAggggEDECFRXV1PjIWLOFhltiwB9PLRFjX0QiAEBqeXgkMDDhzSriIGTTRERQAABBBBAoEMFMjIyaqR5q37oE9ehGSFxBIIkQI2HIMFyWASiQYCgQzScRcqAAAIIIIAAAuEucN9999VK0MEp114m/Rbu+SV/CLRWgMBDa8XYHgEEEEAAAQQQQAABBBAIoEDdw56dEnTYw4OfAMJyKAQQQACB8BFYvnx55yVLlqSHT47ICQIIIIAAAggggAACCESLADUeouVMUg4E2iggQYeuMmb01bL7eKr2tRGR3RBAAAEEEEAAAQQQQKBJAQIPTdKwAoHoF1i1alWX2trayyXgYDSbzceo2hf955wSIoAAAggggAACCCAQagECD6EWJz0EwkRgxYoVKVVVVeN1J0YyZOapmTNn7g2TrJENBBBAAAEEEEAAAQQQiCIBAg9RdDIpCgL+CqxduzahsrLyCofDYZXaDnm5ubnbqe3grx7bIYAAAggggAACCCCAQGsEGKqlNVpsi0AUCCxevDjOZDJNkKIkS02HwvT09C+zs7PtUVA0ioAAAggggAACCESsgL5Gk8zHzZ49uyRiC0HGEWhCgBoPTcCwGIFoFJCaDibpy+FyKVuy1HAokcDDJoIO0XimKRMCCCCAAAIIRJqAxWIZJ69r5XrNGml5J78ItCRgbmkD1iOAQPQIFBUVpUrTii7yqkhMTPxq2rRptdFTOkqCAAIIIIAAAghEroA8FEqUkcYMp06dMkVuKcg5Ar4FqPHg24WlCESlwGOPPVYgtRy+lr4dPpWgQ1VUFpJCIYAAAggggAACESgg12euh8JJSUm2CMw+WUagWQFqPDTLw0oEokugrgPJ09FVKkqDAAIIIIAAAghEvoDUSHXdm8mDIpuMNhb5BaIECHgJUOPBC4NZBBBAAAEEEEAAAQQQQCDUArofLp2mPCRy1D0oCnUWSA+BoAoQeAgqLwdHAAEEEEAAAQQQQAABBJoXyMnJcdV2kKADzSyap2JthAoQeIjQE0e2EfBHYPny5Z3dEXR/tmcbBBBAAAEEEEAAgdALxMXFuWo8SHMLhjgPPT8phkCAwEMIkEkCgY4QWLZs2QCbzXatjGQxqCPSJ00EEEAAAQQQQAAB/wSqq6up8eAfFVtFqACBhwg9cWQbgeYEVqxYkSLrh+ltpIfkwua2ZR0CCCCAAAIIIIBAxwpIjQdDXQ4Y6rxjTwWpB0mAUS2CBMthEegogfnz5xsrKyvHSBtBo8lkOvH444/ndVReSDdyBJzO1em2Sttgh93e16mcmcpgNCqnw2FURrsyOmXOaTaYDCet9vjPDClT+U5FzqklpwgggAACESAgI1mUSG3VQzLseX4EZJcsItBqAQIPrSZjBwT+X3vnAR9Xca79OVvVrS6544YN7qZjk2BKKIEAISjlEhLTjDGQ5AtOz71O7g0kMSFcxwUXMOGShJgewJhgcDAQmsEFZAPGvcjqVllJ2858z6y1ssqutCvtSufsPse/49OmvPOflbTznHfeMTaBwsLCcZgfOAjCQ/P48eNLjW0trRtIAvicWNyuVXfiFcstHpf7VFwH37YIiA4B03SB4/FTIf1SeLRmb0vDij87M8Tdmja3biDtZ90kQAIkQAIkkCgEWley2Jko7WE7SKAzAU616EyE1yRgYgJQynPwhysQ0wFTLLbMnj2bkZFN3J/xNt3TtPIrQsoHIDhM7CA6dFOxlMKOxzd7XGKDlIEpPd2k5iMSIAESIAESIAESIAESEILCAz8FJJAgBNTqFRg8ToPgoGGKxe477rijOkGaxmbEgYCUq3Ph1PDl3hYNAeJ0j8v/Vykfy+ptGcxHAiRAAiRAAiRAAiSQHAQoPCRHP7OVSUCgoqJiApqZgb0xNzf30yRoMpvYCwJSrrV6XCvmeRr1Xch+cy+KaMsCoesKT6PrcEvDygfdjaumtD3gCQmQAAmQAAmQAAmQAAm0I0DhoR0MnpKAmQnAyyEb0yx0m832YUlJCdeANnNnxsl2b/PqL3hctR/ouliGAJK5sahGBsQuORfhJ7e5G1Y8JVtWj41FuSyDBEiABEiABEiABEggcQicCCSWOG1iS0ggKQlgqoWjtrbWNnfu3KakBMBGhyUg5Tqnu+nQIqHLO8MmitEDTRNqGbAHHOk5v9C0Ek+MimUxJEACJEACJJDQBFScLrxEcvN7XEJ3c1I3jsJDUnc/G08CJJDoBNzuVacIj74WngmT+rOtECC2SJvtmykpN3HaT3+CZ10kQAIkQAKmI7BmzZqUlpaWizCFse72229/w3QNoMEkEAEBTrWIABKTkAAJkIAZCbgbV3xLeOTW/hYdFCsEn5yueX2bvY2rLjYjO9pMAiRAAiRAAv1FwOfzDVLBwbFzNbL+gs56+p0AhYd+R84KSYAESCD+BFoaV/xACO0xxHJwxL+20DWo+A+6kC+4G1aWhE7BuyRAAiRAAiRAAn6/P7hCVD1pkECiEqDwkKg9y3aRAAkkLQF4OvxeSHE/XDYHfDodbHAITf6lxbXysqTtEDacBEiABEiABLohAE+HgPCAIOEUHrrhxEfmJkDhwdz9R+uTmMDy5ctPWrly5UQjDC6TuBsM13R3w6r/wTSHBUYyDPbYNF2u9bhWTzeSXbSFBEiABEiABIxAAN/lAsIDViaj8GCEDqENcSFA4SEuWFkoCcSXwIoVK9JQwyS45o164okn+HMcX9ymKd3TuOI7Uug/N6LBatqF1P1/l/LRdCPaR5tIgARIgARIYCAIYFUyK+rNsFgsMicnp3EgbGCdJNAfBDhg6Q/KrIMEYkwAyvg4FYQIxR4uKSnxx7h4FmdCAt7m1V+AZ8EqI5sO8WGcu7H5ASPbSNtIgARIgARIoD8JHD58OFPVh+91Ln6n60/yrKu/CVB46G/irI8E+kgAyngqhIfhqhj8kdrVx+KYPQEIKC8CeL/8GQN7u9Gbg/mrN3maVp1tdDtpHwmQAAmQAAn0BwGHwxEQHhjfoT9os46BJEDhYSDps24S6AWBioqKtFZvh4Pz58+nS14vGCZaFq+r5b8RTPIkM7RLxSSRuvxfM9hKG0mABEiABEigHwg4VR1Wq/VYP9TFKkhgwAhQeBgw9KyYBHpH4I477qhG8KFNt99++/belcBciUTA41oxA54Od5mpTRAfzvQ2rr7UTDbTVhIgARIgARKIBwF8p9uPfRviO+yLR/kskwSMQmDAl1ozCgjaQQIkQAJmJOBuWPmkFPJa09muaa+lZNx6oenspsEkQAIkQAIkQAIkQAJRE6DwEDUyZiABEiABYxCQzatGefxyFzwIVERsU22YyyodFm2ElnbLIVMZTmNJgARIgARIgARIgASiJsCpFlEjYwYSIAESMAYBr1+/y4yig6KnYj24dVliDJK0ggRIgARIgARIgARIIJ4EKDzEky7LJgESIIE4EtCFMN8Ui3Y84HL39XaXPCUBEiABEiABEiABEkhQApxqkaAdy2aRAAkkNgG3e8UE6RE7zd5Kp2Yp1jJuKTd7O2g/CZAACZAACZAACZBAeAK28I/4hARIgARIwKgENI92MYJKGtW8iO1ya/IMJH4h4gxMSAIkQAIkQAIJQODRRx9Nr6+vH5+VlfXpDTfc4EqAJrEJJNAtAU616BYPH5IACZCAMQlITagBu+k3TZenm74RbAAJkAAJkAAJREnA5XKdjEDLQ3EsiDIrk5OAKQlQeDBlt9FoEiCBZCcAX4fhCcJgaoK0g80gARIgARIggYgIIMCyBXuxSpyenl4ZUSYmIgGTE6DwYPIOpPkkQAJJSkDKEQnRck1LFAElIbqDjSABEiABEog/gdWrVxdAeLDB46Ge0yziz5s1GIMAhQdj9AOtIAESIIGICcjGVUX4sjIs4gxGTihllpHNo20kQAIkQAIkEGsCPp9viCrTYrEciXXZLI8EjEqAwoNRe4Z2kQAJkEAYAm4p/xtvShxhHpvtdqGUD3N+q9l6jfaSAAmQAAn0ikD7aRZpaWkUHnpFkZnMSIDCgxl7jTaTAAkkLQEpVwzSNPHtRAGAWBWD3C7fvYnSHraDBEiABEiABLojwGkW3dHhs0QmQOEhkXuXbSMBEkg4Ah6X5XK8LUlJpIZpQn5TykfTE6lNbAsJkAAJkAAJhCLAaRahqPBeMhCg8JAMvcw2kgAJJAQB6XpoiBT6LQnRmHaNkFKk+VpauKxmOyY8JQESIAESSFgChaplfr+/LGFbyIaRQAgCFB5CQOEtEiABEjAagRbXyis8um+HkGK20WyLhT1+v/i7u3HV9bEoi2WQAAmQAAmQgFEJwGuxDEEl986fP7/RqDbSLhKIBwEtHoWyTBIgARIggdgR8DStOlvq+hvwDLBFWiq+2Ai3W4oWt1+0tKhzddSFx6vjHEcP7nnUURc+n9ol3r5IIaUmEENC2FCT02kVDoclcK3+WFggVWM1DRzVLgNHdW21Hr9ntSIfzm023LNZcC6E3a4JJ8pwoCx1VNfdbch+iT1j7j+7S8NnJEACJEACJEACJEAC5iIQ8ZdYczWL1pIACZBA4hCwa7ajHuH9T8RCyMDwHyN+6YFA0GzR9EYpLQ0v/bPytvKKlplKWFACQ3PgqBsSgBI10tNs7h/OG32mxS5ydU0fIjQxCp4cp0qhzUSwyUtgOIUHQ/YejSIBEiABEiABEiCB3hGg8NA7bsxFAiRAAv1GQEudsw+VhV354fFliwbvP1Q7s98M6kNFcMQQDmHf4sy9ZXuoYrBqR36o+7xHAiRAAiRAAiRAAiRgXgKM8WDevqPlJEACJBAgMO2kwf82E4pTh+a/Fc5eTZtbFe4Z75MACZAACZAACZAACZiTAIUHc/YbrSYBEiCBNgLjLxv6rtNuq2+7YeATFeHhrDHDNhjYRJpGAiRAAiRAAiRAAiQQYwIUHmIMlMWRAAmQQH8T0LTZvlMH563v73p7U9/JxfkNucNy/tWbvMxDAiRAAiRAAmYjgGDPlgcffHDqkiVLRprNdtpLArEkQOEhljRZFgmQAAkMEIHJw4ueGqCqo6p25vhh67RRs1uiysTEJEACJEACJGBSAsuXLz/J7/ePwBKag03aBJpNAjEhQOEhJhhZCAmQAAkMLIFxRXnjU+zGjhdcPChdjCnMHT2wpFg7CZAACZAACfQPgY0bN9qw7PQ4VZvdbt/bP7WyFhIwJgEKD8bsF1pFAiRAAlERwJuUk04dYuwFIWafcpJqU0FUDWNiEiABEiABEjApgZ07d47Rdd2Bv9E1t9xyS7lJm0GzSSAmBIz9eiwmTWQhJEACoQgsfuSZMR4pL8azC4TURuBYKS2WBxd896oXQ6XnPYMT0GTd5OGF4sP9R8XYwhzxeUWtoQwempMpJg0rhE2SX7wM1TM0hgRIgARIIB4EFi9e7IToMAYeD8rbYWc86mCZJGAmAhQezNRbtJUE+kBgyZ+fzmuW2oUQGS7ShLzYrcuTThQnA6ea1L/8h0eemf/D716z/MQznpmDgLZ5bGGuUAP8G2ZNFQ++tlkcOdZoGNMvnTym1RZtk2GMoiEkQAIkQAIkECcCEBxOxm6Ft0P5zTffXBOnalgsCZiGAIUH03QVDSWB6AisWbMxpUY7NlNCaMBb5oub/XI6jpheJfEPm6ZVa1K8qmlyg0Vo7/uxNILU9fulFPeuWPvKX+eWXFwXXY1MPaAErLZ3LFIX3zp7krBaNHHVjPFixcYPhY4OHehNCSKj4YUhNKHDuIcH2h7WTwIkQAIkQALxJLBixYo0r9c7UtXhcDjo7RBP2CzbNAQoPJimq2goCXRPAMs1aQ888uxUH0QGTYiLq0XtLIxDU5XQENg00aIJ7S0ptFeU2PDD71y9BUq83q7UrfeteebLKOfChqbGy3H/b+2e8dTgBLQpF+2RW15al52eovpODMvNEmeMHiLe3X14QC3HZ1FcOqXN2+FBbcolnwyoQaycBEiABEiABOJMAFMsxuM7lgZvh0M33XRTQ5yrY/EkYAoCFB5M0U00kgRCE7jvLy+OlF7PRZqUF/1hzbMXwZchEF1QSQ34eycx6NuCkw24eiVPZL0xZ86JZQzv/m7XMpFjPcrAdAwBLwkKD10JGfyOJu5F3wWEB2XplyaNFqWHKsSIvGxR3dgkyutdcW/AcAge3545RVgwp/W46KWJVAf+1GhapbBm/CLuBrACEiABEiABEhhgAniJk4HdD+Hh0wE2hdWTgGEIUHgwTFfQEBLomcAf1zyTLS3abF2XSmS4WLrdgSWajvs0wJdBiP0QHDYgjsMr0ml99e5vXVnVc6ntUtitrwivrnwklPDAzWQEtGmXvSm3rHsWHXi1Ml0tr3n51HEiI8UustNSxLJXPxAtXl/cWjUybxDiS0wJ1NuhEjXFQmhztCnnGSviZQcjeUECJEACJEACsSGQn5//7qFDh6x33HFHc2xKZCkkYH4C6pUUNxIgAYMSWLF5s73h48PnCKFfLODVADPPwJR9a9BciAzHoKhvhDPfBruwvvK9OVfuCj7rzRFlaZhuoVYdKLDbrRO+/+2rqNT3BuQA5pEfbSgSXs/HMKFtbU30q/KAEZ+WVYvH/v1Rh7gPI/KyxKxxI8QrpXtEZUNTB8snDSsQHx+q7HDPbrWI8cV5YtrIIvHC1l3iWJM78HzaiCLx1dNPCcSX6JBBXVi0H0IUub/Lfd4gARIgARIgARIgARJICgL0eEiKbmYjzURg0aMvTNJ038UYLF7U8NHBL+KY3ma/JjwYP74V8Giwaa+MSLlqc0mJ5m973scTDE7lfQ8/swHeFN/0+wNCB4WHPjLt7+za5IvK5daXboXXw1MQqwLishId1DZ+cJ64bMpY8eK24/rUGaOGiCunnxwQC04Zki/e/Oyg2Lhzr/D4dXH2mKFixkmDA8KDmjYxuiBHTIW4MHFogXDaj2tfB2vqA3kumTRGzDx5eOimatpSig6h0fAuCZAACZAACZAACSQLAXo8JEtPs52GJfCnvz03xOOWF2H6xMVCw2BfiuL2xuKHVL29fkVYMX1CS9u04IZL4jpRf9Ejz84Ruv4wXpE/t2DONQGX/fb28NwcBOSH6/4Tlv4qlLXvfH5YZKY6AiJC5+d18GDYeqBMfGH8SFHrcotPyqrElOGFmK7h6JxUVMFDwuX2iJH52V2etd5YIqZfdpcStMIl4H0SIAESIAESIAESIIHEJ0DhIfH7mC00IIGHnnsus6ZavwM/gNfDu+DU9ibi5TKWIdA2aBaxIUV3bJg/58tH2z+P9/kfHn52uC70A6inbmTGNXmx9KiIt+0svyMBrHLxGLwe/qPj3X660rRF2vTLftRPtbEaEiABEiABEhgwAvBOhcZOkX3AOoAVm4IAhQdTdBONTCQCS9duzGhy1b4Oz4YZx9ulNeAH8XUEjXxFs4kNd19/9Y6Bbu+ih5/BkodyvM0qzv3Bd7769kDbw/p7RwDhP2xia8uTEB+u6l0Jvcrlh7fMXRAdlvUqNzORAAmQAAmQgIkILF26tBiiw3QsobkDwST3m8h0mkoC/UqAMR76FTcrIwEhmlx185XoAM+GUs1ivXPGiKw3Zs+eHb+lBnoBHaL9BsQjHK/rmgpoSeGhFwyNkEXTZvvkrnVfFw3aExCSroQnjfAKi/AhPqkfH0A/znXcU+uhqF3HPZwEtkB0iOAECdxue48TOA+soBK4GciJdLgtskVTLUSHbyKmw8tGaD9tIAESIAESIIF4ElixYsUgeDvM8Pv9VogPWMGJGwmQQDgCFB7CkeF9EogTAQzUZqvxnNSsP777O1dtjFM1fSrWIsUriFg5H39BL0ZB/92nwph5YAmMvcyz7aOPdtqkfoFXWNODWkJYo5SCENwiOVdpW9NlWrJ+Pm7yDIoOQX48kgAJkAAJJCyBNWvWpLhcrjMhOFgtFsuhefPmHUzYxrJhJBADApYYlMEiSIAEoiMQCA5p0WVGdNn6L3V6Rua/1AtxTcqz1dSQ/quZNcWawNbtpfN0qf3IE4no0MfKG3XHrWqeax+LYXYSIAESIAESMDSBtWvXWpubm8+A6JAC0aHmtttu22Zog2kcCRiAAIUHA3QCTUguAnBSf0+1WNfEhUZt+dySi+swfnwPb8ftTU31XzSqnbSrewJbS0unI3jpfd2nit1T1DVty/bSb8SuRJZEAiRAAiRAAsYioAT2qqqqaThmY2/yer2bOc3CWH1Ea4xJgFMtjNkvtCqBCbTGT1Cz6lX8BMNumsDynUKeo0ldTbd40bCG0rCQBHbu3JnX7PE/g4epIRPE7+a9e/fufWbUqFEt0VSxt1Zm+33NP4ckd5omtVz4TeyHMr5NCutjYwpSPoumLKYlARIgARIggXgRWL58+ckQHIZAbPClpKS8d9NNN7njVRfLJYFEIkCPh0TqTbbFFAR++J2rtyAAXzX+aI1a/MgzY4xqtEUTG47bZmyBxKj8BtIufLbsLV7fU4gkMrL/7ZAjaxtcEBCi23Svu0BI/W4Et0QMFDkVK3F8RZfyl1L4P9pd0XQv2mSNrkSmJgESIAESIIHYEkAwyXz8PTpZlQrh4QOIDg2xrYGlkUDiEqDwkLh9y5YZlIByx8MKAa8q8zxSKm8CQ27pk4e9g8n6jVjdYuIf/2/9YEMamcBGYTWKLPnRhiJZWuqItplbPypdiX4buCkyUv54+/adk6Oxe0xhyi58jbscsUVwbLdJ6ZBC/8me6qaV7e7ylARIgARIgAT6nYDP57NZrVY/4jp8hGCSFf1uACskARMToPBg4s6j6eYloKZbKOsR78Gw0y3mnn66F/NBXld2wgXesHYq+xJhwxsUi9zy0vnYV8kt63aLBlEnvJ6jwnOgBvcekaXrcyNp54fbS3+Csr4bSdo4prH7hf/xI0eOpEVSB+y17alu/NLYwvSXRuenT9Is4icQIRrb55W6vHFPVdOd7e/xnARIgARIgAT6k8D8+fOPzp079yWIDvv6s17WRQKJQIDCQyL0IttgOgK61dY6jUFcoAacxm2A9kqrbYb1zDAuu8gsUx4Ncsv6m8XWlz7B9IKN2G+GIjW6LbeU6bj3HeGWG+WRzd0O5OHpUILYIfe05R3AE3yuTz1aWfswjj2ucrGvpvl03S9e3l3pem9PTfOVo/PS73NatAnwfqhp3wQp9V8fqZf57e/xnARIgARIgAT6kwA8VxF7mxsJkEC0BBhcMlpiTE8CMSCw4Iav7F205pndGFCO+cMjz5+GIt+PQbExL8KiWTf4pQ/lMs5DrOEGBKet678Nj4b/wedgWM/lyyniaNV/Ih28Abpu27aVnoeYCI9GMtDvmjted/Svb/motBI23dXdF7WTclM/3F3ZtAfpzhB++eTuqqaDEFCeFFKrx2evzdMD00eyW1qa5sLa38TLYpZLApESUD9rf/zjH1OysrJS4XrdNGfOnJABVR988MFxfr+/IFgu8gUGLXDVlsgnERFf4Lzy9ttv3xNM0/molu4rKSnxd77PaxIgARIgARIwC4Ee30SZpSG0kwTMRuC+Nc8uxxvc2zTN8vO751xtiLfUoRjet+bpI/iaPNhqsU36f9/9SmmoNLwXHQG5bf15QtcXw7NhWlQ5NUzAyBAF2rjLO0TQnrfstfHj8u3/Pn98dtsgPapy45wYngtrs9LTbh0zZkxduKr2HWse5ffq/8KYbES4NMfva7vHFKSNh5DBQVj3oPg0RgTuv//+1PT09AKPx5Nms9lSdV1PxecvDXsKzgPfo3DeDOEg6MnWoeYlS5ZcqNJ3uNnpAgJEy2233Rb0MOvwdOnSpbNwI0fVgWMjjo2YZ+7Cz0pjcXFx43XXXdeCe3wD24EaL0igbwSU2FdXVze4ubm58q677urwN7dvJTM3CSQvAXo8JG/fs+UDTKB1Wc3bEMlfxU8wrPAA0UF9Gb5BSr+abkHhoQ+fGwwUNLFt/T0QHX4E0SH6KTZSZIoWmwrauDloxgU/f37oRwdrXtp+QOSOyk8RI/NSgo8Mc8RnqKSusXnWlm0fL1r+TsvKlXNPb+ps3EnZqXt31zSfJ3w6Aq/KsZ2fn7iWY9w73r4ZcS++iXsueIscQDyITcizQZtxeeWJdDwjgdgQcDqdZ2OgnwGvBPzo6oFCldOC2rG5lSAA4eBIuNqqqqreyM/Pz7Tb7QGRwu12axkZGUIdVR6IGVpDQwO8e8Jujag7WwkeSJGKeguULWqrrKwUiLLvX7x48T4MjnYEbvI/EiCBPhHAz1RaTU3N6fBUGoSCdmPnz1afiDIzCRwnQOGBnwQSGCACqXb7ay63B99itXNXPP982twrr+wyGBsg0zpUiy/VG/BF9wZ8zVYCyQMdHvIiOgJb1y/BaOX26DJ1Si1l25vTS3757HmNPs8TEDGKVKq1H5SLBV8a2SmDUS7lkD3VzX8s3XvwpzN/9sydb91zzdrOlo3JTT1wsKrpfI8uP8CQLtCmzmnUdXnB5OoRh9+YgXZnHn8ub8OxWW596X9FSuY92oRZXN7sOBj+H4bAunXrnAcPHszFNIdcDOJz8XtOLy8vf3fhwoVqblmHDYOPXRAW8lsFhmYIBs3Z2dlNKSkpLZFMf0CZHhRY3aHQKC4QzG4rytheUFCQ5nA40iFAZOB3cmDHeTrsc6INaoAUclu2bFmOegDxoz4Se0MWwpskkCQEVq1aVQTvpulorh0/Z034ed+fJE1nM0kg7gQCanvca2EFJEACIQnct+aZd/GH7UyrZr3s/825an3IRAN8Uy2l6fM2HcEvi8bMKSNyA6tdDLBNZqwe0yuuFX79yb7a3qxbz35hz5c2/9+OZ35Q65b34vPTQUD+xhlFYubY7L5WE5f8D75+WJQeOb5YBQZxywdP/+qdT5R0nDIB4WGoW8p9EGg6tKu9QWme+qcHV2z9avt7beeaeBfTUb6E6SjdvUFuS86T5CCA6QoZ8CzIxUA9Dy3OUQP29i3HtWfSpEmvzp49u4vw0D6dEc83btxoO//88/34meoy3UK9uYW3xoXKbogT+HUhG3A8hnvH4IFxrKysrAGixnE3DiM2jjaRQD8RwM+GtnLlyvH42RinqsTPSTn2LVjBwttPJrAaEkh4AtG7+iY8EjaQBPqTwPFlNfXj0y26rfjWzZvt5256/KpZb6y99Dq51tpt4hg+/MG3Ly3DHP1SfKPNcH106OwYFp1cRfnlf/a1wY2aQ3xmG3zbmh3Pba1p0Rd1Fh1U+f/YVikaW4wX/mB3ZXOb6KDshO3zyrY89eyVC59v8+BQ9/ENb6gSHey+ZpHiCR0SIt1VFlp0CBQszhKN4i/qlBsJKAIYfI/AYTYGFFMhMAxTogM+f37sVRisfwaPgXeqq6tNKTqo9imxJJTooJ5BWGiBt8ZuDKAa0G4Nbc5Ce0cg/RTw+EJhYeFlKoYEgmQaU61UjeBGAnEmgKlKTvyeUFOqAqIDqtuJmCvvU3SIM3gWn3QEwr5RSjoSbDAJDAABKdRylfJnUpMqfkLY7fzNz+d/1PT5yxiQzfBLvzi8Sdt67ltr5/x7ZsnWsJkieLBWSsee8oZLLJq+40dF2WoeY8it1c6JfhGw842QiXgzLAG5/Y0c4WuYEjZBBA+ahEPsthQKXWjfnTIsQ7z5+bGQuZowe+fJD8vFd88dEvL5QNz061L8/f2jXarGFPkratyeF57fvPmKK08/HvchU6burNOaDqY1Vw/Pr9sjvLYU0ZBWJJqdg7DIhUVkuspFFvZuN5SLGBDna9Mv+1e36fgwKQhg0O3GoFtNv2nEILwGrtM13//+9+vCDdYTCUqrN4Oan74D57Zhw4ZlwY08GxxUzAi1K8+PHEzhUMvUhvylArECqLp6UyQSJ7YleQlAdMjC5/8sCHIqWKwH5x9AcKjCFKfkhcKWk0CcCHCqRZzAslgSiITA2rWljv2Nn9XCoyBVWtOKF9xwSUXnfOpL38w3/v4KjgF32bbnGl4Oa9qCt8/7xv+23Yvi5L76+nxvk3wb5Y4NfKmUYrlNy/rRgmLN1bmYRY8892Wh+19APIq3F9x4zbmdn/O6ewJy+8tfED7/692nCv/UI6ziU2ux8LXGo/zkqEss3XgofAY8uWnWEDFteGsIhG5Txv/hKzuq4YlRFbIih80ifv+1sa8W5+VcOXz4cBW1X2AZlTTLwf2ri6p2qACSvds0bS2Eh6/3LjNzmYGA+t340EMP5SBOg1LZ8jFw2HvHHXfsN4PtRrERb3ntsCUt3JSL5cuXDwXX6fgbof4u1IJ5bWpqas2NN96oVtfoMrXDKO2iHSQQKQH8DEyGp8NJEChrELflg3DL4kZaHtPCzBwpAAA270lEQVSRAAmEJ0DhITwbPiGBfiGwaM3TLyFI3qVWzfIf/2/O1X/tXOmsNx6/AW+M/9z5ftu1pj2Rn5b+3edPjy445T1Hj72Geme3lRM40XZY7Zav/Tg/c2f7+0vXbsxobqytEZqwZKZn5s0tuTi0D3z7TDxvIyC3vXSh8B+fVtN2M8ITeDiIzyx446+p8cHxTXkQ/Ozp3aLJG35KRUaKVfz8slFCHQdyO1rnEYv+uV94fKGnkZ86OF3MO38YTNSenz5l4jUYzAQaJbe9nC78/uMBIXrTAE2rgPAQNkBlb4pknoEnEBQb8GZyMPYh6i1l0Cp8dj7DkpafBq957DsBCA+FYHw62Hb4RYJrFQujtnWvAHd1zo0ETEdATbPAlgvxrZzxTkzXfTTYZAQY48FkHUZzE48AvsBtUK0KFefhfLnRpkv5625bLeV11U2uTTPffC5i3/rfltV9uavooGqRp+o+/7v3VNRd3r7O+SWzG+Fs+w5c460NrsZOYkX7lDwPScAvy0Lej+DmAUtuB9FBZbFaNDFpWIfYeF1KUnEe/vZ+D1MSuuSK7Y1mry5WvnE4rOigahtfHAzxIK/ctn3HiqAF2tRLXNBcet8AKQvljldHBsvj0dwE8FYybcmSJRMRj+AiTJWYCS+H0Up0wO/PZogRe3B8k6JD7Pt43rx5FVgOdL3ii70U+xHsirkNewH2k7HPWrRoUfe/kGJvGkskgZgQwDK0bkytKKPoEBOcLIQEuiXAGA/d4uFDEog/AZtmecUr8JJX0y7qXJt309Fr4cva4+AJX/xOk/6md2e++eSlb836Wmnncjpf493zws73gtcQFzI1XfwD4sT3fjJ40NLgfaiUryDfeRAnlJ3PBu/zGAGBTKwD3ghXZSmj+nJermWKWi04MO9Yz6QhGeK9vd0v3LD9UINY/3GVuHSSmr7d/9ujbx8RlQ2ebisenX+ifbrQb9q6/ePD06ZM+q/WTI/j+L1uC+juodufg8f7u0vCZ+YgAFfoGRjwqv7Er0qtGd4OZXCNPsI37fHvv9YBWdC7IVDhmjVrUhobG9UypIE+cblcgWlSna2BYJSPmBKZmDdfc+utt9YjPf6kcSMBEiABEkhGAloyNpptJgEjEYBooP3hkWeOYsBfaLdbJ3z/21e1uQqfu+lvr+L+BZHai1gRmIMrrnj7i9/8d7g8v690zfD5vB+Ee97hvqb9z8+KB/1S3fvDmn+crUvf2/ji+Nndc64Z3yEdL3okgGCHT0N4uKbHhK0J6rRUsccSXjBQQSR/8vQuFNlziTfOHCKmj+i/eA+YCSL+9t5R8c6eum6Ns1s1sehrJ8ODo2MyDCi/PW3yxMek3GwXWyvATVzRMUXEV+drMy5/PeLUTGhYAsrlH5+LXHg5lOMt/DEOYA3bVR0MW7Zs2UX4G5eqbuLoV/PoIRrVYCnPmpycnNqSkpLA1KoOmXhBAjEm0DplaAJ+bxxB0MjPY1w8iyMBEoiQQKevexHmYjISIIGYEVBfoLFqRGC6hdert61uMevNtSNwP6ppDSgoB68DN5yz6e+XhDPQ7/N+K9yzLvel/MW9ZXVLlTgyPP3K9/G8Ducn/+HhZ4d3Scsb3RPQxP91n+DEU5dwir2WvBM3QpylOSxieE7b9PYQKU7ceuzdo2JnWZeYoScSxPBMxZ945K0jPYoOqsoRuSldRAd1H5+x1Vs+/nimpp3uFY6R16rPtLof9WY5Hi8i6nzM0O8E1FSKVatWjVJv0kNVrlz+4Q79ifJwoOgQipAx72H1jK0QGw7hZ7oJ/WbFsQDH8fBgOaeioiKwlCf6nbFYjNl9prdKxW/AFK0ZELvOwuduEPYTLnambx0bQALmI0DhwXx9RosTkAB+ELGsJlyIjy9XGWghYj58DSOw6L2SAm+X5D8gPlzdGRW+9FlQ4jc63+/uWgp5+28r6h++7jqsZqhpGwNptRMCSXd5+awdgamXPoce/qTdnZCnjRqWzbTm4yV/z10/AYEZI9lUYMcVmw6Lt8IswRlJGZGkqWnyYbWNg2LLQbVyYc/bqPzAi9AuCfE5dSIY5zOlpaUjtIkTPcJiubdLokhuaKIykmRMM3AElCs+3kaeiYHohXDJn4T4DaMHzhrWHGsCallCiEZbsNrIq2lpaa9gAPgBhIi9+Fuipl2oX3I56PuRsa6X5ZEABK1h8Kw5Hx+zoRDAlGfNTnwWPyIZEiCBgSPAGA8Dx541k0AbAbvducHtaVGTl8/fuHGjbfbs2T54L3y1LUG0J1I68I3uiZmv/+36t774zb8Hs/+2uv40jGiHBq8jPUpdfve35fV2p8XyKlydr4YeouI8PBxpfqYLzEvX5bZ1P0I4j3+E4qFWr6jS0sURSw66KLJtQlGa+GdpdUSJlSfC4wg2ub+mRVwxpUBkxXi1i3f31oknP6gQLQgoGel2Un7Il9uB7GBQ4PHJZw8ePDhTVH0cmZLRuWKHPfQanp3T8bpfCSBmgK2oqGgYBqGjMOjMUJVjcKBjPzJixIjd/WoMK+s3Aq3LFB5BhWoXEJ3UUj2DIDaF/Pm+//77U7G84VQIkS02m60Gy3hW33DDDf3juqUM5GZKAsp7CoZPhpBZqBoA0aGqoaFh+4IFC1yYZmHKNtFoEkgUAj2/UkuUlrIdJGBwAveteXonxIYJFmGZ+cw4205db6yEt0GHJcyibYImND+8KP4jKD789uixn2H8+Ztoywmmt9bV/8Py781fwXUl4jwUYaAQ6Rg5WETSHxHr4Ql4snxNgfBihbpKkSGOWdKEW6iuju5Xsg+defcTu4QSFaLZHDaLuGB8jjhnzCCRm35imc5oylBpVb0f7G8Qr31SIw4fc0ebXSy8crTIy+i+fnzG/jpNO/JH4fWpqT4Rb3UZQ0RVztgfjS3IWBRxJiaMK4G1a9c64F4/Dm+8R2AwGXzx4cb5PogQ+1V0+bgawMJNRUB5w6gpGZ2MduOzUgNBolodGbCyE50kv8TUimH4/TIFfzfUH1Qv9lKIDQeTHAubTwKGIRDdt1zDmE1DSCBxCOBLt3V3pRj16qbX7q+vr7ty+PAR75YPzfA+XrllVixa2V58uPfosY0QN87vS7n2V99wCY83Xdhsoxfc8JW9fSkrGfPKrevnCF1/uAZTTQ8hILxf69uMt9+v3y8O1sJbppdbcZZDnIoVMoZmO0Vuhg1ChEMMgjeEWrKz8+bGlI06TKfYW90sPitvEp8gbkQ9lu3szeaE+HHfdeMiymq36L+a5D38XxElRqJjGUNFdfYY9RrdY7HJM0fnZGyLNC/TxY8AlsKchtKD8WFqlct9eXk5l7GLH3LTl/zQQw9lwiOiAJ+VXPytzIPY4OjUKCVW/RuDy8ZO93mZhATwO2Y2mp2Bz0nZmDFjPrr88sspZibh54BNNi6B4BsH41pIy0ggwQjgy5NjV6U42+8XF2Jod8EnR8WZaKJj/LhTxfsfvC1cjU1nlWHFglhtx70mtL9c+PbzWHddOxeh+/pUtHQ40jWPV1j9esBFuk+FJVlm9L0mtqy/5QCmU1RrscGnAjT2RXg4Wu8RR+truvSEEh7UrlaesGAqdrPHL5SHRay2IRA6It28uuXnjVrqsQzZnB0uT4sjU7ixN6bmixZnazL8rEmfdg/yfDlcPt7vPwJ4C7kfPwNuuECX/eAHPzjWfzWzJrMSuOmmm9Q0DLXvUW3AwDJDCRBwnw8IERAkHPg8hVVv1bQe7D6Vl1tSEHgfv2fsd955p1r+lRsJkIDBCHR9pWUwA2kOCSQKgV3l8hzICbdi7IYwjSK9c7vgUipe3vBiwNn+rXE2UeYPOe21c7aIr/PT8n3nDDuj92KjxyOs+w8Jy+f7hLDbddewK5wLZ2v8QhdxD0DygeiwW8tdWY+lMmO1vY0lK/+KVSvMts0amy2+fkbkwextmnSf4itz2hAko+um+fYMm9kkhSWr6zM4PtjsU8bkOj8K9Yz3SIAEEpOAWs0Ag1AV06gRQkUN4hMphbWW3hGJ2d9sFQmQgPEJ9H4QYvy20UISGHAC6g33Z5XiBl0XC+ClPrE7gxA8S2Rn54jaWgQLbED8rBgv+pSdkhXdzztcMiw1dUKrrhFaFfaG456s+CIn5eDCByg6dNebXZ/JLRuzP9cy72nQIn/T37WUrndGRLikZtecA3unILP72A6drfNJzbnXmifG+SvxqJPnhSZ2Q134lZD6XzvnU9dS916GA4WHUHBieO+BBx4ocjqdY1GkF9Hj34th0SyKBKImgL9VauWMwfg7nAHRQbmYjVCFYBUVD66PqYCVWGnjCANWRo12wDIgTkxqZWXlSehXHUvrfjpghrBiEiCBXhGIbiDSqyqYiQSSk8BnR+VZn5aLxYipoKZSRLQV5BUGhIfCJosoS4vddAtVeU5KWC/1Ntu0unqIDLXCooSGY/CEbudar1lt0j8o86glO/2/Fpx/5qq2TDzpkYAs3Zix25f5lwbhzO8xcZQJoh3AR1l83JL3Jqhlo3CKPRAf8nWXyJTN7UJxyl1jCtL+9nll41xoEl/sYrSudSv6dUnPG1ERaA0COAGZcjC3WkWRr4uqACYmgTgQgGfD55hmsaewsHCQmpoBr8JcVKM+o04MXAshPhTW19crMeLVOFTPImNIAL9jBnm93jHV1dVDUKzy1sbKX/Iz9GMnFTqGlbIoEiCBmBOg8BBzpCyQBIT45Kj8BWSDX0N0iGo6U35+gfjs851CCQ+x3nJSuwoPWhMGb0pkqIbYgF14VRDo45tmgWdDZqZLpqduE6kpTxTlDlt9w9RiLmUWBBTFca8v83f1wnl5FFkiTqpWqMhwWkWjO9QUhIiL6feEuWnReTwEDawTqaLOkhr4wbJj2kW6dItC2RAIUmGR1l/qwr8pmDZ4RIiKpuA5j7EjsHr16lwE/puAAV2eKhXz7T3YP8/JydkXu1pYEgn0ngCEB6Xgq/n+at+tSlLLLUJ8yMFpDrweQsYaUd6KSHcKBrZWDHjr09PT67A3lJSUmOsXrWqwiTesUlGAPhqD3zEF6AvEZQ4Im2WI60HRwcT9StOTlwCFh+Tte7Y8DgTwZcX6SblYDsHhlt4Un52dK3QE9MvE+D8VX2+a1YJQMdhS7anCaXUKFRRS1CiPhtrjgkNzc8fS01I9Mj1jl0h1vOjIzlj6vdMnHuiYgFfREijb9WHB0WbHzVhCM9qsEadXg3izCQ856X3786NoIuqI8GB1kDpL2rXbt++8b3Rh6hu7K1xPIKDqde3haVJ7rf01z/tGQL19RAkTIDoUtpbkxRvl3ePHj987e/Zsxn3pG17mjjOBuXPnKiFS7YfDVfXII4844RGBpXHU4jhQLpuaREtLi0RwSxf+ztfZ7Xbl1VOH5Tyr+dY9HMXe3wfnYnAdD9ZZ2AMF4Xg4NTV1V2vA0d4XzpwkQAIDRqBv3/wGzGxWTALGJIAVKn4Jy3olOqgWqdUD3BkOkVrvFgVNVnEgs28vV6x415PntohRDXZhK3tfaHWdAlYiSKTIyjwk0lL+JZ0ZK3/0hUlvGZOsea0qb3F+Q8ouS8DFtEFqGcwD6n2eibY0R4xUNbQZM4LSpfA/te3o0emjC9K+vbuqqQ6uRnNacawclZ/6lInQGNpUfPnXMEf+XByxSo70w8NhN0SHPRjMnXCXMnQLaBwJ9Exgzpw5LRDYNqk37ficZ2EQPAhv21WciAycZ+D+UFUKAljuwuETdc4tNgTuv/9+FX35DHBXBXohAB1A7Jh9rYJRbCphKSRAAgNCgMLDgGBnpYlIYFeZnIhXfT/ta9sy83KFr74sMN2iN8JDtlsThc2WwJ7XYhFKfBBCLWWN3WoRNgSwzMaUjmF5xWJ4ds7jE4q1/+irzcwfngC+PF0R/mlsnqTYYzeIj41F3ZeCj2Fgqc7uU0X3FF4O4/Tyyu9rxcW/Qc5b9kp5Z0aVsBcUaJ3UtujKZeqOBNTbXQy2dkNw0AoKCvbC9dzTMQWvSCAxCGCgG/BqCLYGgQ2tLpcrE/sgeDxkYUCc7nA4qoLP2x/XrFmT3djYeBZ+XnTszWqHcNGCn5tmCHXNyNuSn5/v4s9Pe2rHz7HUbsvKlSt34MqLaVuHOb2lKyPeIQGzEohq/rlZG0m7SaA/CCCuw+MQ6L/e17p215aJne+8I1psUqwb2fN3+jSfJgogNBQ1KcHBKhydnCS8qXaRXzREFBcMEaNyCoVNjfrabRa7OGV8vsY3Nu2YxOoUooNty/aP61Fe7NbPDGGcWk5TLatpli0NQsnvvjY25ubiD1rltCmTBuNLfqefgphXxQJJgARIICyBZcuWqSCW5+B3UU+q8PsIgtllPWQIFymY2jEWZdggUki88cepLlGerq7VEZV7TznllANmmt6EKRQZEF/y8bcxT7UHgT+3UVgI+zHiAxJIOAL0eEi4LmWDBooAnALPj0XdY3IGi634yUyBoDDIYxF1joDLQlvRdgypCuDJoAJQFuKY4emoH3rtmsiA18TI/GFiZNEw4XQ42vKGOpH+gN0UHkLB6eO9rTt2TEIRcRUdlIlWxAUx02bp6at4LxuDn8GCraWlZyM7pwz1kmEwmwocicGNl/Opg0R4JIHICWCpx1oEtlw/ePDgFASnTMUgOxWeDikIlBg4x89WihKm4TkR8u0CvCqKkGaUqhH5BKZ2dKgceQPXpaWlSmTd3+EhLuCVlIcB/vRWgcKN9C04d8OOFnhptDQ3N7shZrjiOX1h0aJF6SkpKYNQXxbqVbuKcK0UlIC5sE/PyMgoxQWF4gAR/kcCiU+AwkPi9zFb2E8EsKhT9vGvAn2v0JKH2G3ldWJqpVVsxwKMNvydVtMniiA2ZONrCoLltVXis2rClpUuhhcOFaOKhous9My2Z5GcKLsjScc00ROQPhH71/ohzPC3fgkN8ciQt1o8HcW0WBqJEAQUHvoA9NFHH03HEoOTVOBIDAzUKjav9aE4ZiWBpCXQuqJGMJBlVBzgBXEQ4oEXg3YbhAssMSUtECDajhi8W3DPX1VVVRaqYIgKNogVKUinviykqzRBsQIrQrSJGYjX8u68efMqOpexbt0654EDB0ao+yjDrwQMdQymg4CiyvWWlZWVt7Yz+ChwhO0jkWeKuugkmrhxXwXkrMbvl4rLL79czQPlRgIkkCQEKDwkSUezmfEnANFBvXU4ORY1nXfK6eJfNa+KfHg0XHCo49QI9TXCn5EiBhcUiZOKh4vCQQWIut37WpFV2c0tDgQ0IYfFSozqzryaRnPF9fMhGqTabXHw1LDo+uDuWPFZaAJq/np5efk4zEsfg0EB4txq6hXrp6FT8y4JkEA8CeDnT6mzR3pbxy233FKO4JgvQ7hIwcBfeRk4MdBX3hcp8LJwKlEC10pNUMJIl02JDpjSMSH4IChaBK+DYgI8OjbjXhfxA8JHC9I0oAwV36Ieng91mDpSD0GlMVgGjyRAAslHgMJD8vU5WxwvApp4Ssi+B5dU5uWnZonzz71AbNr5PgJNuhCXwSZyERRyVNEIMTR/MK5j5KuuCVdqqng5XkiSvVw4pgzHZyLuW6XJhAcF5FiTV+RjBZc4bPY4lJnQRWKAMhhvTidiIJKqBhg4HsIAZcddd93Ft5EJ3fNsXCITaF1pRqnSUQfYzc3N3V9ZWan+etnx+8CK3wdWCBZtb0EgWEh4YHjg8VAdiqESPnBf7dxIgARIoI0AhYc2FDwhgb4RQAipe4VPXI+/1MP7VtLx3Plpg8RXT7soFkWFLQPeDj8fPkirCZuAD/pEAHwHx0l3UF8mAwPsJkxbqMUg3mzbgRp3XIQHabF0CdRmNjb9Za+ag52VlTUJbyYLVZ3qzSTekH50880383dCf3UC6yEBAxJoXW3jcwOaRpNIgARMTIDCg4k7j6Ybi8AELNv3SYW8FQ6SL+ClYYxcEuLaxk3ji8Sf4lpDkheOeANwV4+t9IDBYY20iAuELh9H0RM+PFCPubvmA72vqlnMGBFdPJKIWik5dSgiTkiUnp4+A6JDNj5TPrhEf3LHHXfsw7kJP02RtpjpSIAESIAESIAEBopAm9vUQBnAekkgkQhMKNTWaxbxFYEpDIZulyZezNHE5RhkxC/Kn6EB9I9x8HiI+XxWTWi/mTFp0jYhNRUNXLy3V63Wab5t8/4G4Y/Dp8+m6VvMR2NgLIar9H7suyE+vHbnnXfupegwMP3AWkmABEiABEggGQjQ4yEZeplt7FcC4wu1dZ9UyvOxQNTjeBM9pl8r76EyBKFUQ73F8HS4G4OMtgjVPWTj494TiLUA1SQz0x4+bo6sfHtPndgLzwEzbg0tPrHtYIOYMTKmXg9NkyZN+syMPAbCZswBPzAQ9bJOEiABEiABEiCB5CNAj4fk63O2uB8IYNrFZgzuT8Ub75/A+yHmb7172YRNFos4bUKx9gOKDr0kGHU2/VjUWbrLoIn/mz5qVKDMygaP9uQHXVZB6y634Z5tORhjbw1NbONn23DdTINIgARIgARIgARIQNDjgR8CEogTAQyAPCj6d3sr5J9b/GIeRIgbMXl6WJyqC1ksPBz8qPMlBJxYcXKx9kLIRLwZNwIWq7bdr3ogNluz02q5J1jUyjfK0j2+OMxVCFbQD8cdZU3CCz52K346YrDhZ47TLNpxxGoVdkyjUKtV5GJ/Bx4OIZfOa5eFpyRAAiRAAiRAAiQQFwIUHuKClYWSwAkCowo1FWX/v7BM3a93HRWX+jVxPcK3XYjhaMGJVLE7U2IDgg5+KCzieazCuWZcnnYodqWzpGgI+J3Od0QTZCfR92CjFk27b+LEiW2u8UfrWwIrEURjj9HSKuFkZ1mjmDIsNtMtNCE3Ga2NA2XP4sWLC7AE3jSIMSn0AhmoXmC9JEACJEACJEACQQIUHoIkeCSBOBNo/fL/Iqp5ESKE9mmFmAyB4ALs52I6xnjEgxiLZ2nRmAGRQb1OP4JdzWvfjn2j3SH+NSZXq8M5twEmMGPcuMoPt3/8Lyw7cWFfTEFAyV2F+bm/bV+GJrXhMtD97e+a73zboZgJDz6ZkfGy+QjE1uKFCxfaBg8efAo8HU5SJeP3zjGsWLFl/vz59HaILWqWRgIkQAIkQAIkEAUBCg9RwGJSEogVAQwGlGCghAK1P6DKVWLE7hoxzOcRY7EyRjZuqdfAGVIXGRAmHDhvbF0loQG5G/EO/XCWLnYVF2uxDmCIqrjFioDVIv7X7xe9Fh7wWWnUrNo1Q4YMaRs4qs/KeT97alQC6A6i9HDTPl0XfsQf6VMgVohw/wzGv4hV35mtnNWrV+e2tLRMh+iQhs+ItNlsn2J6xeetv2/M1hzaSwIkQAIkQAIkkEAEYjOxNoGAsCkkQAIkEGsCW7Z//DLGgV+KtlwMGN0YkF83ddKk59vnveDnT410++W+9vfMfH7HhcMXTijOsEN9mwdOub1pC8S6mdMnT/53b/ImQp6lS5eegnYorynl5VCflZW15frrr69PhLaxDSRAAiRAAiRAAuYnwFUtzN+HbAEJkIDBCVhF5jcwGtwZlZmaVg1Ph4s6iw6qDLe0nBpVWQZPjGU1R0+fPPEX+TmDhiEI4k2YWvJeNCbD2+EvySw6IIjkIPAKiA44fj5v3rw3KDpE8wliWhIgARIgARIggXgToPAQb8IsnwRIIOkJTJkysnZQeuo5eBP9Z+w9LXPhR5pVTqs2adrEiW+GgmeR+uRQ9816b/sh11nK9uHDhzdPmzzx4elTJ51l02xTwOEBuOVVdt8ubb3Darmx+zSJ/bSsrKwBniLbPR7PG4jlsBPczL3cSWJ3F1tHAiRAAiRAAklJgFMtkrLb2WgSIIGBIlBaWjrCrYvrNF1OgQ0qrkE2YnjUIbjoUfxCftVh015ov3pFKDtn/fSpv2Cg+a1Qz8x5T5N3XzI695rZ0491th/ttG3fvuOLuia/DMXmdE1KLEkLHwdN7rBYLX+aOnHi+s55eE0CJEACJEACJEACJGAsAgwuaaz+oDUkQAIJTqBVVPhDX5qJAfiMvuQ3Xl6pbTtw7HTYtaGzbXh778O9V1v3zo95TQIkQAIkQAIkQAIkYAICFB5M0Ek0kQRIgASCBL7yu+cyq495Tw5eJ8pxy+GGM9GWLsJDorSvr+2A54e2cuXK0V6vd1BhYeG2kpISf1/LZH4SIAESIAESIAES6C8CFB76izTrIQESIIEYEKhp0E/DMpoJF5+nusF7RgzwJGQRa9eudSxfvnwGxIcCq9UqXS7XDjSUwkNC9jYbRQIkQAIkQAKJSYDCQ2L2K1tFAiSQqAR8MhCIMdGahxgXyuOBWycCy5Yty6mqqjoNokMqVvzw4PGWOXPmtHRKxksSIAESIAESIAESMDSBhHtrZmjaNI4ESIAE+khACv2cPhZh0OxyyPV/XD/YoMYNiFmrVq0apev6TCU6wIDa5ubmTVgqs2JAjGGlJEACJEACJEACJNAHAvR46AM8ZiUBEiCB/iegQXjoaUXO/rcqFjXuq2pUASafj0VZZi5j48aNtp07d07F8phDEFxTwNNhb3l5+Y6FCxdymUwzdyxtJwESIAESIIEkJkDhIYk7n00ngd4QWLFiRZrP58u6/fbbyzEoSswRcG/A9EOeL/ziyXF+nyzsh6oGpAqpW5JeeIC4YIHooLwcsrD7sW+dP3/+kQHpEFZKAiRAAiRAAiRAAjEiwKkWMQLJYkggWQhgIHQq2nrGkiVLTkPQO2uytNsI7dT9lllGsCN+NkglPHATwo6fszoIe5vuvPNOig78RJAACZAACZAACZieAD0eTN+FbAAJ9C8BeDvshet3AfbBCHqXum7duvcuv/xyd/9akay1yfMSueWalDMSuX2RtE1Np4Do8Cq9iSKhxTQkQAIkQAIkQAJmIUCPB7P0FO0kAYMQuOOOO6qdTuebGBg1Y4CUvW/fvvMWL16cZRDzEtsMKRLa4wHzdoovXvjckMTuxJ5bR9GhZ0ZMQQIkQAIkQAIkYC4CFB7M1V+0lgQMQeCmm25qgOfDGzCmFuKDWuZv1gMPPFBkCOMS1IgvLXy6UAo5LpLmXTY5X/z66nHi6umFwmrRIslimDQtHt90wxhDQ0iABEiABEiABEiABGJCgMJDTDCyEBJIPgJ33XWXu6Cg4G2bzXYYb2itdrv9TLX8X/KR6J8Wu9yRezvsrWwWQ7Od4sqpheLb55jLgUBKkRTCA2Kk5C1dunQW9uL++QSxFhIgARIgARIgARIYOAIUHgaOPWsmAdMTKCkp8c+dO/dDCA+fqcZg+b9JWPVikOkbZsQGSD3iaRaflrtEXbMv0IpZY3NEdprdiC0KaROEh2khHyTQTYgNw9EcLIsqcqxWa2YCNY1NIQESIAESIAESIIGQBCg8hMTCmyRAAtEQwNKan+q6/gHyHMTeFE1epo2QgKYFhIdxhWkBT4bucmHwLjbvqwsk0TDTYvoIE41tNTm1u7aZ/dmyZcvGow3TINZpmKK0F8Ld52ZvE+0nARIgARIgARIggZ4ImGvyb0+t4XMSIAESSEACVy58Pq3W7alDPA3bTy8fDQ8Gm/jxkwEnk7CtnTA4Qyy45KTA851lLnHfy3vDpjXWA02m52Vk/nPBJS5j2dU3a9TSs7W1tVMRG2WoKglC3cdYKtMsndK3xjM3CZAACZAACZBA0hOgx0PSfwQIgARIwOgE6j2es5TooOwsynKK/AyHGF2Q2q3ZSN/2/OSiNJGRYpbVk6XWfKxpYpvxCXCCVV+clZWV5yjRAf3ih6fDuxQdEqBj2QQSIAESIAESIIGICVB4iBgVE5IACfSWAOI+5KvBV2/zJ3s+n34isOSRYy0BHGeOyg6LZQymY9x03rC252pli7G4Z5ZN6jJhhId169Y51aovYJ+D2RXN8HR4c968eRVm6QvaSQIkQAIkQAIkQAKxIEDhIRYUWQYJkEBYAqtXr87Fm95zEERv9p/+9CdzLbEQtlX9/ECTgfgOqtYtB+oDlZ87JhueDyeCRhYPcoqrphWK31wzTvwM0zHy0k88UxmsKtiDSTY4a5xiElN7NPPgwYO5EBzS4OlQl5qa+iZWgznegT3mZAISIAESIAESIAESSBwC5vkmmjjM2RISSCoCGHBZVq5ceQbEh0LVcLz9PYT9YwTV8yYViF42Fvy0WT99GpEiZSBCpBIUfn+dik8oRI3LK0qPNIqRealiRG5K2BoaWnziZ0/vEk0ef9g0Bnvw3Fu//drVBrOpV+ao/lu+fHk2vBzqIEDovSqEmUiABEiABEiABEjA5AQoPJi8A2k+CZiFAAZfJ2Hgdarf78fLd60ZHhBbIT5UmcX+gbLzK797bkh1rfdw+/p/ecUYcVJ+9zEegun3VzeLR98+IvZVNQdvGf+oaR+/de+1k41vKC0kARIgARIgARIgARKIhACnWkRCiWlIgAT6TABvfPdBdNgE0eEY3gKnqukXDz744Kkq2n+fC0/gAmrq/aM7N++NXbWdb4W9fvy9o+YSHQItkSPCNogPSIAESIAESIAESIAETEeAwoPpuowGk4B5CcyfP7+xoqLiLYgPn2G6hYQQMaampmYmxYdu+lSKkMJDMNZDNzkDj3LSzbKaRbuWSJF12cJ1We3uGP5UTalYtmxZDj/Lhu8qGkgCJEACJEACJDAABEz4jXQAKLFKEiCBmBFYuHChmuf+KQZpFRAfpiPKf6bL5VKREE0TgCBmMCIqSHYRHvy6FEteOxCYbpGTZheHalvEpZPyxfnjc7uUOCo/Tby7ByEiTLY1e1qU18PHZjBbiQ7w3pmG4zAsm/k5bN5pBrtpIwmQAAmQAAmQAAn0FwEKD/1FmvWQAAl0IHD77bfXYqC28YknnrCXlJR4OjzkxQkCITwegg9V3IZ94njshr+8c0RUNnjEtacVC6ye2badNy5bvLi9UqgAk2oDc+FuaRbNTY0iO7dAwPukLW00J16vRzQ1NojUtHThcIYPbBlNme3TeoU2HNeGFx6UhwNEtBmwtRhs/RDTjrZvB89JgARIgARIgARIgASEoPDATwEJkMCAEcCgV6Jyig7d9YCUY7p7HHwGJwix/uMqMTwnRZyNpTaDW4rdKr5xRrFYuekghIJ64cIOL5PAY3VEkM9g0qiOfp8vIF4oAcNms4n0jEEiNT0jqjK6S2yB90B3z43wbMWKFXZ4OJwBW/KweyE6vKsENSPYRhtIgARIgARIgARIwEgEGOPBSL1BW0iABNoILF26tBgDuxGYmpHsv6e6TLUIQtJ1P0QEpd2c2N7ec+zEReuZEiJGZ3pFQ/2xNtFBPdL9x70gumSI4IaqO7ghUKioO1YtqsqPBLwpgvfDHVVe2Sp+hEsjhSwK98wI9/HZTEO7Z8GWPIg3LYhX8m+KDkboGdpAAiRAAiRAAiRgRAL0eDBir9AmEiABNSVgMgZ2KUVFRWMxyNuJpTfLkg3LwhWb017Zu684XLsb6+tEk6tBWOFxYLM7hNViE5tx7Zk9QjhsJ/QaHdMrLpk2TLzzWRm4nigNg2Whgmv0ZmsvPATz+3xeUVtdEbDH6UwVFosVuyb8EBmU0OCD0OHzeCB++MWgnDxM0wjvIYEJIIYVHvB5HITP5llotxNeDg25ubnvYrrQ8TkvQRg8kgAJkAAJkAAJkAAJtBGg8NCGgickQAJGImC327dgcDcZ0wEysJ8OD4hquPSXQoAwX6TEXoI97K0a1V1Wv98beKymPahdbU3YSw/WiJx0p9i2r0ps318d2JvcXb0bQokHgUIi+E/3H5+uESqpsqXJ1xDqUds9n7erPW0PcQKBxJDCw/33358KweZcmKj+flZDeHgfosPxjmjfAJ6TAAmQAAmQAAmQAAm0EaDw0IaCJyRAAkYiAIGhCtMsXs/LyxsJweFkiA95ECK+sHz58kMpKSk758yZ02Ike+NhS12jN+w0C1UfeISsduHf34d3QXhhIJhJxXjo7dYX0ULV6e9xmocs6K1t8cyXnp6ueTweHYLDQUyt2I44Jb2HGE9DWTYJkAAJkAAJkAAJGIhA78KZG6gBNIUESCDxCcC13Y6pF+Mw0B6NgZ6GOfV+XO+YN2/evkRu/aW/eu47Dc3eR8K1sfzIgcAqFeGe93Q/PSNLZA7K6SlZyOc1VeXC4+699mN3OEVeQdhZJFhtQ2x/896vTQ1ZOW+SAAmQAAmQAAmQAAmYisCJScCmMpvGkgAJJBMBeD94b7vtth3Nzc0bITqUwdXdin1cojNobPalh2sjhJc+iQ6q3L54LfTFWyKiuqU4sTRHOAi8TwIkQAIkQAIkQAIkYAoCnGphim6ikSRAAorAggULXDhsfuyxx7Lq6uoS3sVdalpah2iQ7T4GUva9+SroZG+3vtavhJPuNy2z++fxfbp27Vrr/v37U1o/c/GtjKWTAAmQAAmQAAmQQIIToPCQ4B3M5pFAIhK4/vrr6xOxXZ3bZBF6Wjh5ocdxe+fCQlz3tKRliCxtt/qSN1BID7oD/DlS2irr5xPEERlaU1NzalpaWsrixYtfv+uuu5Li89bPmFkdCZAACZAACZBAEhGg8JBEnc2mkkAyEEA8CLUM52C09SAGjnvNHIRSSng8iNAjdAQ3jEF3hi47koL7Knz0ZD9iPPgjsSOWaR566KHMlpYWtZJKXmu5tRAg1EIh3EiABEiABEiABEiABPpAgMJDH+AxKwmQgPEItK4y4IRlY10u1xi8vT6cmZm524xeEhh8p4cb4KOdAvEusDpE78fn4cruj1612nr686N1vx5nDI3cuHGjrbS0dDxWq1DLl2oQRTzYd956660Hwbn36kwMbWRRJEACJEACJEACJGBmArF4ZWbm9tN2EiCBBCOAwWIpBotvqiCUOGp4ez0M8SC+uGTJknMeeOCBIsQWMM1qPrAVHg/hN0uPg/fwedUTC8SLXm99yKrqtFrtPVXdL8KDmlaxY8eOC/BRGY3PioalW/eVl5dvREDTA7hH0aGnXuJzEiABEiABEiABEoiAQB+/OkZQA5OQAAmQwAARwLSLNAwmR8MrYAQGkdZWMxoxuHwXA0vDu9DP+ulTf4P48I1w+OqP1YomV+/DD6Skpons3IJwxXd7v/LoYXhb+LpN093D7Jw8kZKWET6Jpr391r3Xnhs+Qd+f4PMxAtNygkt21uJz8RE+F3V9L5klkAAJkAAJkAAJkAAJtCfQk69r+7Q8JwESIAFTEWgVFz7GAPNTDDBHYhA/CgKEGu0Owm544QGv27v1eLA74DWg1vno5Wa3O3qZUwi73d4n4cHmULNhut0OdPs0Bg+9Xq8LnjE1mFZxkNMqYgCURZAACZAACZAACZBAGAL0eAgDhrdJgAQSj8DChQstBQUFafPnz280Q+tm/fTJDYjDcGE4W/0+n6gsPxzucZf7VqtN2DHgV7vNZhdOJwb/vZxuAU8S4fG4hd/rCRy9Ho/Q9cjiTSCIgigaPLyLfe1vQCD6/Zv3Xvvj9vd4TgIkQAIkQAIkQAIkYE4C9HgwZ7/RahIggV4QgPCgVqcMKTrAG0JbunTpdLjbW3Behnn+5Ujf+7kEvbCvcxZ4PHTrkqACNBYUDQ0M/NWg//gSl+3DEiAAJQQGlQ7tEhZLcLZJ55qiv1arUqSkpAqBPb01u7LB5/UKv88rfAh6qbVfkUOzQOOwILaDRTicEayUqWl99niAp4sdAslQ9KezoqJiF/oz3Oqk0QNgDhIgARIgARIgARIggYgJUHiIGBUTkgAJJDKBX/3qV1pRUVEB4kGowf7g4uJi/7Jly8rhin8kJyenoqSkJLLX+bGF1NxTcUpUSMVuhE0JGw4nxI1IhIUeDNaE/nkPScI+Xr16da7b7R4BwWEIhIeA2gJPF+UaElJ0ClsQH5AACZAACZAACZAACcSEAKdaxAQjCyEBEkgEAosXL3ampqYOwbKKQ9GenGCb4Pbvw34UUxMO3XjjjZXB+/E+YqrFU5hq8dV412PE8rUU58g3F14ZsdcDvBkcQ7GpWB4QGzKDbYJwVAUxaS+m1xwN3uORBEiABEiABEiABEigfwlQeOhf3qyNBEjAJATgpp+GQewQ9dYcooMKRhnc3u+vQeysnzz1ZynkDcGKk+WIsBONb9xzbRa4t583ErL56B8NS6VOgsCgPBwCS0RDePBgKsiBzMzMAzfccEMfwm+GrJI3SYAESIAESIAESIAEoiRgDP/cKI1mchIgARKIN4HWFTGUu//njz76aHp9fb2KFZDlcDh6v35ltEZbMDUgCaMSSKHtjER0UDj/9Kc/ObDChvJyQBatEt4NB6qrq48ynkO0HzamJwESIAESIAESIIH4EaDwED+2LJkESCBBCLS+Nf+su+YsX758Ega/Q5CmFgPgaryBr8YSjfWRDqBDli2TMyaBRcgd7XmsWbMmEI1yzpw5Le3vq/O77rrL/dBDD70O7xR/q1jUOQmvSYAESIAESIAESIAEBpgAp1oMcAewehIggcQggKkZkzH4Pal9ayA6+CBG1CghQu3z5s07Fo0Qcd5Pn/xPXYpftS8zGc5tFvGjbwyv/KvX682HN0MeGKZDyPGD3SsQF7zJwIBtJAESIAESIAESIIFEIhCYD5tIDWJbSIAESGAgCGBA/BGWrHwVdW/FfhDTMpqw2zBYLsT1KTif9eCDD54RjW0IcJCUqzCcnNlkg9gwQ8VtUKIDGGJ1Tv8ReJAM6PKm0fQd05IACZAACZAACZAACZwgwKkWJ1jwjARIgAT6RKDV1b8JhRxUBd1///2pCHCYh0Gz2nNxSz0LuWFFjWF4u29DUMRGxJFoDEwrkBqEhx7jK4Ysz7w3NTkq3b0LIk4FPEg6eIogqKd5m0XLSYAESIAESIAESCCJCXCqRRJ3PptOAiRgDAIqhkFTU9PF7a2Bh4R/U3XO2Yebnb9sfz/Rz7GixV6saDEmmikpic6E7SMBEiABEiABEiABsxOgx4PZe5D2kwAJmJ6A8m5YunSpmqKRB4+HdBwzMMXAcUqBQ8v1ZwivrgsfJhkEjn4pvNh9CP7g8+u4J44fcS8xNu0Dig6J0ZNsBQmQAAmQAAmQAAkECdDjIUiCRxIgARIwEIG1a9c6MvLyhqc7nWdhmkaK3+dzZmRmlqekpjZ0NrO5qSm7prp6grrvFydC90gsManjGt4TGMtbfHZnyt60jJxaj98f+N3v1/2aX1ihXHidjfW1o6Xud/pRgMWiWbx+v8Vi1Sw68kL3ENKva5a09H3CkVqFbMgnhAXle3Ehfb4s6XGN01TaQP2aF6W4hWZxQx/B0erWbPYWabGHnWoSbJMm5M7vfXXmx8FrHkmABEiABEiABEiABMxPgMKD+fuQLSABEkhyAgsXLrQNGTJkNFaBSENARuXJZkd8BLs6QnGwQ0kIeLfBi2Ib4iQE4k+0R7ZkyZI8pDu3/b3252pFCWw+xJ7Ydsstt5S3fxY8x6oegxCXQUdMi6aSkhKlS3AjARIgARIgARIgARIggQABCg/8IJAACZBAEhCAOGHBDt+F0FtrnAlbQUGB/+jRo/rkyZP9r7/+ut5dntAl8S4JkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkEDkBP4/XMFdK+fxKLsAAAAASUVORK5CYII=" alt="等待跳转" />
</div>
<span id="redirect-info" class="redirect-info">
<span class="info-icon"
><svg
t="1609733331542"
class="icon"
viewBox="0 0 1024 1024"
version="1.1"
xmlns="http://www.w3.org/2000/svg"
p-id="2552"
width="32"
height="32"
>
<path
d="M843.307 742.24c0 3.217 2.607 5.824 5.824 5.824s5.824-2.607 5.824-5.824a5.823 5.823 0 0 0-5.824-5.824 5.823 5.823 0 0 0-5.824 5.824zM714.731 874.912c0 6.398 5.186 11.584 11.584 11.584s11.584-5.186 11.584-11.584-5.186-11.584-11.584-11.584-11.584 5.186-11.584 11.584zM541.419 943.2c0 9.614 7.794 17.408 17.408 17.408s17.408-7.794 17.408-17.408-7.794-17.408-17.408-17.408-17.408 7.794-17.408 17.408z m-186.56-9.152c0 12.795 10.373 23.168 23.168 23.168s23.168-10.373 23.168-23.168-10.373-23.168-23.168-23.168-23.168 10.373-23.168 23.168zM189.355 849.12c0 16.012 12.98 28.992 28.992 28.992s28.992-12.98 28.992-28.992-12.98-28.992-28.992-28.992-28.992 12.98-28.992 28.992zM74.731 704.736c0 19.228 15.588 34.816 34.816 34.816s34.816-15.588 34.816-34.816-15.588-34.816-34.816-34.816-34.816 15.588-34.816 34.816z m-43.008-177.28c0 22.41 18.166 40.576 40.576 40.576s40.576-18.166 40.576-40.576-18.166-40.576-40.576-40.576-40.576 18.166-40.576 40.576z m35.392-176.128c0 25.626 20.774 46.4 46.4 46.4s46.4-20.774 46.4-46.4c0-25.626-20.774-46.4-46.4-46.4-25.626 0-46.4 20.774-46.4 46.4z m106.176-142.016c0 28.843 23.381 52.224 52.224 52.224s52.224-23.381 52.224-52.224c0-28.843-23.381-52.224-52.224-52.224-28.843 0-52.224 23.381-52.224 52.224z m155.904-81.344c0 32.024 25.96 57.984 57.984 57.984s57.984-25.96 57.984-57.984-25.96-57.984-57.984-57.984-57.984 25.96-57.984 57.984z m175.104-5.056c0 35.24 28.568 63.808 63.808 63.808s63.808-28.568 63.808-63.808c0-35.24-28.568-63.808-63.808-63.808-35.24 0-63.808 28.568-63.808 63.808z m160.32 72.128c0 38.421 31.147 69.568 69.568 69.568s69.568-31.147 69.568-69.568-31.147-69.568-69.568-69.568-69.568 31.147-69.568 69.568z m113.92 135.488c0 41.638 33.754 75.392 75.392 75.392s75.392-33.754 75.392-75.392-33.754-75.392-75.392-75.392-75.392 33.754-75.392 75.392z m45.312 175.488c0 44.854 36.362 81.216 81.216 81.216s81.216-36.362 81.216-81.216c0-44.854-36.362-81.216-81.216-81.216-44.854 0-81.216 36.362-81.216 81.216z"
fill=""
p-id="2553"
></path>
</svg>
</span>
<span class="info-label">跳转中,请稍等!</span>
<span class="info-action">若未跳转请<a id='redirect-info-action' href="javascript:void(0);">手动</a>跳转</span>
</span>
<span id="redirect-error" class="redirect-error"></span>
</div>
<script src="./environments/environment.js"></script>
<script src="./assets/js/cas-login.js"></script>
</body>
</html>
......@@ -4,6 +4,7 @@ export async function attachEnvironmentConfig(): Promise<void> {
ibiz.env.baseUrl = env.BaseUrl;
ibiz.env.remoteModelUrl = env.remoteDynaPath;
ibiz.env.dcSystem = env.mockDcSystemId;
ibiz.env.casLoginUrl = env.casLoginUrl;
if (env.AppTitle) {
document.title = env.AppTitle;
}
......
import { MDViewController, ViewController } from '@ibiz-template/controller';
import { useNamespace } from '@ibiz-template/vue-util';
import { defineComponent, PropType } from 'vue';
import '@/styles/components/layout/view-base/view-base.scss';
export const ViewBase = defineComponent({
props: {
......@@ -34,13 +35,23 @@ export const ViewBase = defineComponent({
isLoading={c.viewLoading.isLoading}
scopedSlots={{
caption: () => {
if (c.complete && c.model.source.getPSSysImage()) {
return [
<app-icon icon={c.model.source.getPSSysImage()}></app-icon>,
c.caption,
];
}
return c.caption;
return (
<div class={this.ns.b('caption')}>
{c.complete && c.model.source.getPSSysImage() ? (
[
<app-icon
class={this.ns.be('caption', 'icon')}
icon={c.model.source.getPSSysImage()}
></app-icon>,
<span class={this.ns.be('caption', 'text')}>
{c.caption}
</span>,
]
) : (
<span class={this.ns.be('caption', 'text')}>{c.caption}</span>
)}
</div>
);
},
toolbar: () => {
if (c.complete && c.model.toolbar) {
......
......@@ -4,6 +4,7 @@ import {
IRouteViewData,
parseRouteViewData,
useRoute,
useRouter,
} from '@ibiz-template/vue-util';
import { Route } from 'vue-router';
import { getViewComponentName } from '@/util';
......@@ -19,6 +20,7 @@ export default defineComponent({
setup(props, ctx) {
const { proxy } = getCurrentInstance()!;
const route = useRoute(proxy) as Route;
const router = useRouter(proxy);
const viewData = ref<IRouteViewData>({});
const isLoaded = ref(false);
const viewComponentName = ref('');
......@@ -28,7 +30,11 @@ export default defineComponent({
const appModel = service.app;
if (appModel) {
// 获取视图
viewData.value = parseRouteViewData(appModel, route, props.level);
try {
viewData.value = parseRouteViewData(appModel, route, props.level);
} catch (error) {
router.push(`/${route.params.view1}/404`);
}
// 确定视图组件
viewComponentName.value = getViewComponentName(
viewData.value.viewType!,
......
......@@ -78,25 +78,27 @@ export const GridControl = defineComponent({
// 绘制作用域插槽,绘制行编辑开启开关
const columnSlots: IData = {
rowEdit: ({ index }: IData) => {
return (
<i-button
icon='md-settings'
on-click={async (event: MouseEvent) => {
event.stopPropagation();
const rowController = this.c.rows[index];
await this.c.toggleRowEdit(rowController);
}}
nativeOn-dblclick={(e: MouseEvent) => {
e.stopPropagation();
}}
></i-button>
);
if (this.c.rows[index]) {
return (
<i-button
icon='md-settings'
on-click={async (event: MouseEvent) => {
event.stopPropagation();
const rowController = this.c.rows[index];
await this.c.toggleRowEdit(rowController);
}}
nativeOn-dblclick={(e: MouseEvent) => {
e.stopPropagation();
}}
></i-button>
);
}
},
};
// 属性列自定义
this.c.model.fieldColumns.forEach(item => {
columnSlots[item.codeName] = ({ row, index }: IData) => {
if (this.c.rows.length > 0) {
if (this.c.rows[index]) {
return (
<grid-column
key={row.srfkey + item.codeName}
......@@ -111,7 +113,7 @@ export const GridControl = defineComponent({
// 操作列自定义
this.c.model.uaColumns.forEach(item => {
columnSlots[item.codeName] = ({ row, index }: IData) => {
if (this.c.rows.length > 0) {
if (this.c.rows[index]) {
return (
<grid-ua-column
key={row.srfkey + item.codeName}
......
import { OrgData } from '@ibiz-template/core';
import { ModelUtil } from '@ibiz-template/model';
import { handleUnauthorized } from '../handle-unauthorized/handle-unauthorized';
import { UnauthorizedHandler } from '../unauthorized-handler/unauthorized-handler';
/**
* 初始化模型
......@@ -12,13 +12,9 @@ import { handleUnauthorized } from '../handle-unauthorized/handle-unauthorized';
async function loadModel(): Promise<void> {
await ModelUtil.create(async modelPath => {
const url = `${ibiz.env.remoteModelUrl}${modelPath}`;
try {
const res = await ibiz.net.get(url);
if (res.ok) {
return res.data as IModel;
}
} catch (error) {
console.log(error);
const res = await ibiz.net.get(url);
if (res.ok) {
return res.data as IModel;
}
return {};
});
......@@ -71,7 +67,7 @@ async function appInit(): Promise<void> {
} catch (error) {
const { response, message } = error as IData;
if (response.status === 401) {
await handleUnauthorized();
await UnauthorizedHandler.handle();
}
console.log(`应用参数初始化失败:${message}`);
}
......
export { AuthGuard } from './auth-guard/auth-guard';
export { handleUnauthorized } from './handle-unauthorized/handle-unauthorized';
export { UnauthorizedHandler } from './unauthorized-handler/unauthorized-handler';
import qs from 'qs';
import { UrlHelper } from '@ibiz-template/core';
import router from '@/router';
/**
* 没有权限的处理器
*
* @author lxm
* @date 2022-10-11 14:10:10
* @export
* @class UnauthorizedHandler
*/
export class UnauthorizedHandler {
/**
* cas登录处理
*
* @author lxm
* @date 2022-10-11 14:10:35
* @protected
* @static
* @returns {*} {Promise<void>}
*/
protected static async casLogin(): Promise<void> {
// 登录后返回来的登录的地址
const backUrl = `${UrlHelper.appBase}/cas-login.html${qs.stringify(
{
RU: UrlHelper.fullPath,
},
{ addQueryPrefix: true },
)}`;
// 要跳转的cas的登录页和参数
const targetUrl =
ibiz.env.casLoginUrl +
qs.stringify(
{
service: backUrl,
},
{ addQueryPrefix: true },
);
// 跳转cas登录地址
window.location.href = targetUrl;
}
/**
* 普通登录处理
*
* @author lxm
* @date 2022-10-11 14:10:24
* @protected
* @static
* @returns {*} {Promise<void>}
*/
protected static async normalLogin(): Promise<void> {
const ru = window.location.hash.replace('#', '');
router.push({ path: '/login', query: { ru } });
}
/**
* 没有权限处理
*
* @author lxm
* @date 2022-10-11 14:10:50
* @static
* @returns {*} {Promise<void>}
*/
static async handle(): Promise<void> {
if (ibiz.env.casLoginUrl) {
await this.casLogin();
} else {
this.normalLogin();
}
}
}
......@@ -61,6 +61,11 @@ const router = new Router({
},
component: RouterShell,
children: [
{
path: '404',
name: '404View',
component: () => import('../views/404-view/404-view'),
},
{
path: ':view2([^=/]+)/:params2([^/]+=[^/]+)?',
props: {
......
@include b(view) {
@include set-component-css-var('view', $view);
@include b(view-caption) {
@include utils-ellipsis;
@include e(icon) {
display: inline-block;
margin: getCssVar('view-caption-icon', 'margin');
vertical-align: middle;
}
}
}
......@@ -32,7 +32,6 @@
@include flex(row, space-between);
}
@include e(caption) {
@include utils-ellipsis;
@include flex(row, flex-start, center);
max-width: getCssVar('view-layout-header', 'caption-max-width');
......@@ -40,12 +39,6 @@
font-size: getCssVar('view-layout-header', 'caption-font-size');
font-weight: getCssVar('view-layout-header', 'caption-font-weight');
color: getCssVar('view-layout-header', 'caption-color');
> img {
display: inline-block;
margin-right: 10px;
vertical-align: middle;
}
}
}
}
......@@ -90,6 +83,7 @@
padding: getCssVar('view-layout-drawer-header', 'padding');
}
@include b(view-layout-content) {
min-height: getCssVar('view-layout-drawer-content', 'min-height');
padding: getCssVar('view-layout-drawer-content', 'padding');
}
}
......@@ -108,6 +102,7 @@
padding: getCssVar('view-layout-modal-header', 'padding');
}
@include b(view-layout-content) {
min-height: getCssVar('view-layout-modal-content', 'min-height');
padding: getCssVar('view-layout-modal-content', 'padding');
}
}
......
@include b(404-view) {
@include flex(row, center, center);
width: 100%;
height: 100%;
background-color: #fff;
@include b(404-view-text) {
@include e(text1) {
margin-bottom: 20px;
}
}
}
......@@ -2,6 +2,12 @@
@include set-component-css-var('grid-ua-column', $grid-ua-column);
.ivu-btn {
color: getCssVar('grid-ua-column', 'btn-color');
background-color: getCssVar('grid-ua-column', 'btn-bg-color');
box-shadow: none;
&:hover {
color: getCssVar('grid-ua-column', 'btn-hover-color');
}
}
}
......@@ -278,7 +278,7 @@ $skeleton: map.merge(
'bg-color': rgb(190 190 190 / 20%),
// 骨架屏元素背景颜色
'transition-color': rgb(129 129 129 / 24%)
// 骨架屏元素动画效果过渡颜色,,,,,,,,,,,
// 骨架屏元素动画效果过渡颜色,,,,,,,,,,,,,,
),
$skeleton
);
......@@ -495,7 +495,16 @@ $form-druipart: map.merge(
/* 表单 end */
/* 暂时保留,后期修改 End */
/* 视图base start */
$view: () !default;
$view: map.merge(
(
'caption-icon-margin': 0 10px 0 0,
),
$view
);
/* 视图base end */
/* 视图布局 start */
$view-layout: () !default;
......@@ -549,6 +558,7 @@ $view-layout-drawer-content: () !default;
$view-layout-drawer-content: map.merge(
(
'padding': 0,
'min-height': 0,
),
$view-layout-drawer-content
);
......@@ -566,6 +576,7 @@ $view-layout-modal-content: () !default;
$view-layout-modal-content: map.merge(
(
'padding': 0,
'min-height': 0,
),
$view-layout-modal-content
);
......@@ -639,6 +650,8 @@ $grid-ua-column: () !default;
$grid-ua-column: map.merge(
(
'btn-bg-color': transparent,
'btn-hover-color': #2d8cf0,
'btn-color': #515a6e,
),
$grid-ua-column
);
......
import { HttpError, RuntimeError } from '@ibiz-template/core';
import { DefectModelError, UnsupportedModelError } from '@ibiz-template/model';
import { handleUnauthorized } from '@/guard';
import { UnauthorizedHandler } from '@/guard';
/**
* 事件处理工具
......@@ -32,7 +32,7 @@ export class ErrorHandler {
duration: 10,
});
if (err.status === 401) {
handleUnauthorized();
UnauthorizedHandler.handle();
}
} else if (err instanceof RuntimeError) {
ibiz.message.error(err.message);
......
import { defineComponent } from 'vue';
import { useNamespace, useRoute, useRouter } from '@ibiz-template/vue-util';
import { computed, defineComponent, getCurrentInstance, onMounted } from 'vue';
import '@/styles/components/views/404-view/404-view.scss';
import { Route } from 'vue-router';
export default defineComponent({
setup() {
const ns = useNamespace('404-view');
const { proxy } = getCurrentInstance()!;
const router = useRouter(proxy);
const route = useRoute(proxy) as Route;
const gotoIndexView = () => {
router.push('/');
};
onMounted(() => {
setTimeout(() => {
const el = document.querySelector('.app-loading-x') as HTMLDivElement;
if (el) {
el.style.display = 'none';
}
}, 300);
});
const isView1 = computed(() => {
return !route.params.view1;
});
return { ns, isView1, gotoIndexView };
},
render() {
return <div>404</div>;
return (
<div class={this.ns.b()}>
<img class={this.ns.b('img')} src='./assets/img/404.png' />
<div class={this.ns.b('text')}>
<div class={this.ns.be('text', 'text1')}>
抱歉,您访问的页面不存在!
</div>
{this.isView1 ? (
<div class={this.ns.be('text', 'text2')}>
您要找的页面不存在,请返回
<a on-click={this.gotoIndexView}>首页</a>
继续浏览
</div>
) : null}
</div>
</div>
);
},
});
......@@ -2,10 +2,10 @@ import { useRouter } from '@ibiz-template/vue-util';
import Vue, { ref, watch } from 'vue';
export const getView2Value = (item: IParams) => {
return (
(item.params.view2 ? `/${item.params.view2}` : '') +
(item.params.params2 ? `/${item.params.params2}` : '')
);
return item.params.view2
? (item.params.view2 ? `/${item.params.view2}` : '') +
(item.params.params2 ? `/${item.params.params2}` : '')
: '404';
};
export const getView1Value = (item: IParams) => {
......@@ -42,7 +42,7 @@ export function useIndexRouteManage(proxy: Vue) {
() => proxy.$route,
(newVal, oldVal) => {
// 只处理有二级路由,只有首页的时候不需要
if (newVal !== oldVal && newVal.params.view2) {
if (newVal !== oldVal) {
currentKey.value = getView2Value(newVal);
indexPath.value = getView1Value(newVal);
// 更新或新建对应key的全路由信息,主要是三级路由变更时会用
......
pnpm up --latest "@ibiz-template/vue-util" "@ibiz-template/service" "@ibiz-template/runtime" "@ibiz-template/model" "@ibiz-template/core" "@ibiz-template/command" "@ibiz-template/controller"
\ No newline at end of file
......@@ -485,52 +485,52 @@
resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45"
integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==
"@ibiz-template/command@^0.0.1-alpha.13":
"@ibiz-template/command@0.0.1-alpha.13", "@ibiz-template/command@^0.0.1-alpha.13":
version "0.0.1-alpha.13"
resolved "https://registry.yarnpkg.com/@ibiz-template/command/-/command-0.0.1-alpha.13.tgz#e8f07fede7fbfd3aa22eeec80ad66acf6c914d1e"
integrity sha512-IUD6x29nmmxdL8XbGGfBAEYlPO/+E8qHd/TI2ncgaaBFcF6M4ih7xga8l1oYuSdr+xx4mlXkAbzQFOqAQWm21g==
"@ibiz-template/controller@^0.0.1-alpha.15":
version "0.0.1-alpha.15"
resolved "https://registry.yarnpkg.com/@ibiz-template/controller/-/controller-0.0.1-alpha.15.tgz#ff01696798854fa02a66e0c32b687d9bfae97d60"
integrity sha512-UpujB323mASgEkCb5poRfguYnU9dWqEryCWg8/lsmBUmR/I72NUEDHwbk9dZSMJsEThxoTmVC31aXqmMbORi7g==
"@ibiz-template/controller@0.0.1-alpha.16":
version "0.0.1-alpha.16"
resolved "https://registry.yarnpkg.com/@ibiz-template/controller/-/controller-0.0.1-alpha.16.tgz#74399a69bcda3edad17a101bad1ea05e193b1f83"
integrity sha512-6ES/q892/Gm+TKKOH519PV3JyBpCQMP5Hpk/qO2iYdFC5GZJFSLbD/tz9IO8YcIPA32u4bkV8otxiV7q/S+L7A==
dependencies:
async-validator "^4.2.5"
dayjs "^1.11.5"
"@ibiz-template/core@^0.0.1-alpha.13":
version "0.0.1-alpha.13"
resolved "https://registry.yarnpkg.com/@ibiz-template/core/-/core-0.0.1-alpha.13.tgz#ce2d742fe4b703d0aba3c1836e72f88cf50e0d0a"
integrity sha512-7Vg4mWrty/aVlM63oEgMjMcYIY1lSkczb+Z6KCdkzZlfTp2LZJlNIJ4ZVw0XR0ctykDxUh91uBJNb47RgEdxQQ==
"@ibiz-template/core@0.0.1-alpha.16":
version "0.0.1-alpha.16"
resolved "https://registry.yarnpkg.com/@ibiz-template/core/-/core-0.0.1-alpha.16.tgz#d75a6cbf368ecfb7fbcf3ffd83d33e75b5ddd763"
integrity sha512-Wt1J6hUmMopF9MfXj2tMTFoNiNnhYsEL78Jjmj4f2ZPVZd5+EDBk4ricGfw5aNNB74TPoqrX/vvpIVGEAlngGA==
dependencies:
axios "^0.27.2"
pluralize "^8.0.0"
qs "^6.11.0"
"@ibiz-template/model@^0.0.1-alpha.15":
version "0.0.1-alpha.15"
resolved "https://registry.yarnpkg.com/@ibiz-template/model/-/model-0.0.1-alpha.15.tgz#c06aa42fc653e125b72e42a0650ac380ee3fd19e"
integrity sha512-ZQWSvPa+W9ecDLi3P7UcBqKCPy0rdZCmXoJiZ+pbZVpO01Xdk5BwSzuTEl8Pgz2ciIP15a25M8G8YjziZ35lhg==
"@ibiz-template/model@0.0.1-alpha.16":
version "0.0.1-alpha.16"
resolved "https://registry.yarnpkg.com/@ibiz-template/model/-/model-0.0.1-alpha.16.tgz#ad70fbb16ceeda471da5c98cc69c921279a6346f"
integrity sha512-QlrUeXkU9UaN6A/k2v9ElGw0n8lzD8pS/OFbc5SFcyXj9iTdKQk/wWk4qVRXKWhDOCzhAixTwxn7k+Z3bLtPAA==
dependencies:
"@ibiz/dynamic-model-api" "^2.0.5"
pluralize "^8.0.0"
"@ibiz-template/runtime@^0.0.1-alpha.15":
version "0.0.1-alpha.15"
resolved "https://registry.yarnpkg.com/@ibiz-template/runtime/-/runtime-0.0.1-alpha.15.tgz#333f9fb247424e0d864370e3ec24f8d6acaa756e"
integrity sha512-fFM8vDoyIC1eoSSfJYypwZ2aCJej6Fh4jFuIPRxZd2iEatgn+CPgAL+k5EQGFTe7qs36I4bkqV9EXZWSl/1Ocg==
"@ibiz-template/runtime@0.0.1-alpha.16":
version "0.0.1-alpha.16"
resolved "https://registry.yarnpkg.com/@ibiz-template/runtime/-/runtime-0.0.1-alpha.16.tgz#8a17272a4f415215dad181b602555c62260b948e"
integrity sha512-it9CF4XEUEY5hWeiHwnMw3tW3v3IK7fxiWmRJADItUn5fs+rZnzfh/6pOKY2duj2o1yUnUzbSFrjw8owOOhx8Q==
dependencies:
"@ibiz-template/command" "^0.0.1-alpha.13"
"@ibiz-template/service@^0.0.1-alpha.15":
version "0.0.1-alpha.15"
resolved "https://registry.yarnpkg.com/@ibiz-template/service/-/service-0.0.1-alpha.15.tgz#4965b905e50b323fedc16db28714885b51e0dfb6"
integrity sha512-5kqvYh9bDddSNLDHb2ceDL+V0+cDd3oG3gK12RH2kyKXagP9DTRgfYbOHOmOe7eGhPolPndUDgkeP4Sbgn/N4g==
"@ibiz-template/service@0.0.1-alpha.16":
version "0.0.1-alpha.16"
resolved "https://registry.yarnpkg.com/@ibiz-template/service/-/service-0.0.1-alpha.16.tgz#4217b273f9a068caf573dffbb8abc873c9faae15"
integrity sha512-GJSk3lnvRYbylq8/di9MG6nPhVSaAR7S2GRInF0Uzj0mpqOVDr61YkdTBIvtCn1nZTSuXlu5NbfBxAhLmBaN1w==
"@ibiz-template/vue-util@^0.0.1-alpha.15":
version "0.0.1-alpha.15"
resolved "https://registry.yarnpkg.com/@ibiz-template/vue-util/-/vue-util-0.0.1-alpha.15.tgz#d2b6ab2ed6363869bc7fdadcc342f51e76b3637b"
integrity sha512-eg5f/Act0cn1mRGFQz+G5kIjVSrHwqKv188EHS02y/zaa47ZTKEp69bSrWFcTK7gqR7kQIEjEDGguFw5KyGLAQ==
"@ibiz-template/vue-util@0.0.1-alpha.16":
version "0.0.1-alpha.16"
resolved "https://registry.yarnpkg.com/@ibiz-template/vue-util/-/vue-util-0.0.1-alpha.16.tgz#11965e9726d7e76b62e3c1764ed348f6faf723db"
integrity sha512-xxtPlFhfyOXrH6k1rgGVNuVm9NEM96JR06Tly9cbxp4bdldsbO6+tRzk9n6DDcsbyrSacnIkUy6rHm2gXKvOPg==
"@ibiz/dynamic-model-api@^2.0.5":
version "2.0.5"
......
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册