big file storage

This commit is contained in:
Nathan Rashleigh committed 2026-09-18 23:22:55 +10:00
1 parent 91fe0211d4
commit 9b11a4ded6
1265 files changed
+149376 -58

No files matched your search

+35
View File
@@ -12,6 +12,41 @@
*.tif filter=lfs diff=lfs merge=lfs -text
*.tiff filter=lfs diff=lfs merge=lfs -text
*.ico filter=lfs diff=lfs merge=lfs -text
*.icns filter=lfs diff=lfs merge=lfs -text
*.tga filter=lfs diff=lfs merge=lfs -text
# Fonts
*.woff filter=lfs diff=lfs merge=lfs -text
*.woff2 filter=lfs diff=lfs merge=lfs -text
*.ttf filter=lfs diff=lfs merge=lfs -text
*.otf filter=lfs diff=lfs merge=lfs -text
*.eot filter=lfs diff=lfs merge=lfs -text
# Office
*.docx filter=lfs diff=lfs merge=lfs -text
*.xlsx filter=lfs diff=lfs merge=lfs -text
*.pptx filter=lfs diff=lfs merge=lfs -text
*.odt filter=lfs diff=lfs merge=lfs -text
*.ods filter=lfs diff=lfs merge=lfs -text
*.odp filter=lfs diff=lfs merge=lfs -text
# 3D / CAD
*.stl filter=lfs diff=lfs merge=lfs -text
*.stp filter=lfs diff=lfs merge=lfs -text
*.step filter=lfs diff=lfs merge=lfs -text
*.3mf filter=lfs diff=lfs merge=lfs -text
*.fbx filter=lfs diff=lfs merge=lfs -text
*.blend filter=lfs diff=lfs merge=lfs -text
# Misc binary
*.bin filter=lfs diff=lfs merge=lfs -text
# Krita / raster art
*.kra filter=lfs diff=lfs merge=lfs -text
*.krz filter=lfs diff=lfs merge=lfs -text
*.ora filter=lfs diff=lfs merge=lfs -text
*.psd filter=lfs diff=lfs merge=lfs -text
*.xcf filter=lfs diff=lfs merge=lfs -text
# Audio / video
*.mp3 filter=lfs diff=lfs merge=lfs -text
+7
View File
@@ -1 +1,8 @@
.obsidian/workspace.json
.trash
# Rust build output
target/
# mdbook rendered output
bleak/book/
+4
View File
@@ -0,0 +1,4 @@
[
"obsidian-livesync",
"obsidian-excalidraw-plugin"
]
+4 -2
View File
@@ -26,6 +26,8 @@
"workspaces": false,
"file-recovery": true,
"publish": false,
"sync": true,
"webviewer": false
"sync": false,
"webviewer": false,
"footnotes": false,
"bases": true
}
+1 -1
View File
@@ -17,6 +17,6 @@
"repelStrength": 10,
"linkStrength": 1,
"linkDistance": 250,
"scale": 1,
"scale": 0.7077346155458414,
"close": true
}
+11 -1
View File
@@ -1 +1,11 @@
{}
{
"editor:insert-wikilink": [
{
"modifiers": [
"Mod"
],
"key": "L"
}
],
"editor:toggle-checklist-status": []
}
File diff suppressed because it is too large. Load diff
+10
View File
@@ -0,0 +1,10 @@
"use strict";var obsidian_module=require("obsidian"),view=require("@codemirror/view"),commands=require("@codemirror/commands"),lr=require("@lezer/lr"),language=require("@codemirror/language"),state=require("@codemirror/state");;const INITIAL_TIMESTAMP=Date.now();var LZString=function(){var r=String.fromCharCode,o="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",n="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-$",e={};function t(r,o){if(!e[r]){e[r]={};for(var n=0;n<r.length;n++)e[r][r.charAt(n)]=n}return e[r][o]}var i={compressToBase64:function(r){if(null==r)return"";var n=i._compress(r,6,function(r){return o.charAt(r)});switch(n.length%4){default:case 0:return n;case 1:return n+"===";case 2:return n+"==";case 3:return n+"="}},decompressFromBase64:function(r){return null==r?"":""==r?null:i._decompress(r.length,32,function(n){return t(o,r.charAt(n))})},compressToUTF16:function(o){return null==o?"":i._compress(o,15,function(o){return r(o+32)})+" "},decompressFromUTF16:function(r){return null==r?"":""==r?null:i._decompress(r.length,16384,function(o){return r.charCodeAt(o)-32})},compressToUint8Array:function(r){for(var o=i.compress(r),n=new Uint8Array(2*o.length),e=0,t=o.length;e<t;e++){var s=o.charCodeAt(e);n[2*e]=s>>>8,n[2*e+1]=s%256}return n},decompressFromUint8Array:function(o){if(null==o)return i.decompress(o);for(var n=new Array(o.length/2),e=0,t=n.length;e<t;e++)n[e]=256*o[2*e]+o[2*e+1];var s=[];return n.forEach(function(o){s.push(r(o))}),i.decompress(s.join(""))},compressToEncodedURIComponent:function(r){return null==r?"":i._compress(r,6,function(r){return n.charAt(r)})},decompressFromEncodedURIComponent:function(r){return null==r?"":""==r?null:(r=r.replace(/ /g,"+"),i._decompress(r.length,32,function(o){return t(n,r.charAt(o))}))},compress:function(o){return i._compress(o,16,function(o){return r(o)})},_compress:function(r,o,n){if(null==r)return"";var e,t,i,s={},u={},a="",p="",c="",l=2,f=3,h=2,d=[],m=0,v=0;for(i=0;i<r.length;i+=1)if(a=r.charAt(i),Object.prototype.hasOwnProperty.call(s,a)||(s[a]=f++,u[a]=!0),p=c+a,Object.prototype.hasOwnProperty.call(s,p))c=p;else{if(Object.prototype.hasOwnProperty.call(u,c)){if(c.charCodeAt(0)<256){for(e=0;e<h;e++)m<<=1,v==o-1?(v=0,d.push(n(m)),m=0):v++;for(t=c.charCodeAt(0),e=0;e<8;e++)m=m<<1|1&t,v==o-1?(v=0,d.push(n(m)),m=0):v++,t>>=1}else{for(t=1,e=0;e<h;e++)m=m<<1|t,v==o-1?(v=0,d.push(n(m)),m=0):v++,t=0;for(t=c.charCodeAt(0),e=0;e<16;e++)m=m<<1|1&t,v==o-1?(v=0,d.push(n(m)),m=0):v++,t>>=1}0==--l&&(l=Math.pow(2,h),h++),delete u[c]}else for(t=s[c],e=0;e<h;e++)m=m<<1|1&t,v==o-1?(v=0,d.push(n(m)),m=0):v++,t>>=1;0==--l&&(l=Math.pow(2,h),h++),s[p]=f++,c=String(a)}if(""!==c){if(Object.prototype.hasOwnProperty.call(u,c)){if(c.charCodeAt(0)<256){for(e=0;e<h;e++)m<<=1,v==o-1?(v=0,d.push(n(m)),m=0):v++;for(t=c.charCodeAt(0),e=0;e<8;e++)m=m<<1|1&t,v==o-1?(v=0,d.push(n(m)),m=0):v++,t>>=1}else{for(t=1,e=0;e<h;e++)m=m<<1|t,v==o-1?(v=0,d.push(n(m)),m=0):v++,t=0;for(t=c.charCodeAt(0),e=0;e<16;e++)m=m<<1|1&t,v==o-1?(v=0,d.push(n(m)),m=0):v++,t>>=1}0==--l&&(l=Math.pow(2,h),h++),delete u[c]}else for(t=s[c],e=0;e<h;e++)m=m<<1|1&t,v==o-1?(v=0,d.push(n(m)),m=0):v++,t>>=1;0==--l&&(l=Math.pow(2,h),h++)}for(t=2,e=0;e<h;e++)m=m<<1|1&t,v==o-1?(v=0,d.push(n(m)),m=0):v++,t>>=1;for(;;){if(m<<=1,v==o-1){d.push(n(m));break}v++}return d.join("")},decompress:function(r){return null==r?"":""==r?null:i._decompress(r.length,32768,function(o){return r.charCodeAt(o)})},_decompress:function(o,n,e){var t,i,s,u,a,p,c,l=[],f=4,h=4,d=3,m="",v=[],g={val:e(0),position:n,index:1};for(t=0;t<3;t+=1)l[t]=t;for(s=0,a=Math.pow(2,2),p=1;p!=a;)u=g.val&g.position,g.position>>=1,0==g.position&&(g.position=n,g.val=e(g.index++)),s|=(u>0?1:0)*p,p<<=1;switch(s){case 0:for(s=0,a=Math.pow(2,8),p=1;p!=a;)u=g.val&g.position,g.position>>=1,0==g.position&&(g.position=n,g.val=e(g.index++)),s|=(u>0?1:0)*p,p<<=1;c=r(s);break;case 1:for(s=0,a=Math.pow(2,16),p=1;p!=a;)u=g.val&g.position,g.position>>=1,0==g.position&&(g.position=n,g.val=e(g.index++)),s|=(u>0?1:0)*p,p<<=1;c=r(s);break;case 2:return""}for(l[3]=c,i=c,v.push(c);;){if(g.index>o)return"";for(s=0,a=Math.pow(2,d),p=1;p!=a;)u=g.val&g.position,g.position>>=1,0==g.position&&(g.position=n,g.val=e(g.index++)),s|=(u>0?1:0)*p,p<<=1;switch(c=s){case 0:for(s=0,a=Math.pow(2,8),p=1;p!=a;)u=g.val&g.position,g.position>>=1,0==g.position&&(g.position=n,g.val=e(g.index++)),s|=(u>0?1:0)*p,p<<=1;l[h++]=r(s),c=h-1,f--;break;case 1:for(s=0,a=Math.pow(2,16),p=1;p!=a;)u=g.val&g.position,g.position>>=1,0==g.position&&(g.position=n,g.val=e(g.index++)),s|=(u>0?1:0)*p,p<<=1;l[h++]=r(s),c=h-1,f--;break;case 2:return v.join("")}if(0==f&&(f=Math.pow(2,d),d++),l[c])m=l[c];else{if(c!==h)return null;m=i+i.charAt(0)}v.push(m),l[h++]=i+m.charAt(0),i=m,0==--f&&(f=Math.pow(2,d),d++)}}};return i}();"function"==typeof define&&define.amd?define(function(){return LZString}):"undefined"!=typeof module&&null!=module?module.exports=LZString:"undefined"!=typeof angular&&null!=angular&&Line truncated
let REACT_PACKAGES = `!function(){var e,t;e=this,t=function(e){function M(e){return null!==e&&"object"==typeof e&&"function"==typeof(e=te&&e[te]||e["@@iterator"])?e:null}function t(e,t,n){this.props=e,this.context=t,this.refs=oe,this.updater=n||ne}function n(){}function r(e,t,n){this.props=e,this.context=t,this.refs=oe,this.updater=n||ne}function o(e,t,n){var r,o={},u=null,a=null;if(null!=t)for(r in void 0!==t.ref&&(a=t.ref),void 0!==t.key&&(u=""+t.key),t)ae.call(t,r)&&!ie.hasOwnProperty(r)&&(o[r]=t[r]);var i=arguments.length-2;if(1===i)o.children=n;else if(1<i){for(var l=Array(i),c=0;c<i;c++)l[c]=arguments[c+2];o.children=l}if(e&&e.defaultProps)for(r in i=e.defaultProps)void 0===o[r]&&(o[r]=i[r]);return{$$typeof:g,type:e,key:u,ref:a,props:o,_owner:w.current}}function D(e,t){return{$$typeof:g,type:e.type,key:t,ref:e.ref,props:e.props,_owner:e._owner}}function c(e){return"object"==typeof e&&null!==e&&e.$$typeof===g}function U(e){var t={"=":"=0",":":"=2"};return"$"+e.replace(/[=:]/g,function(e){return t[e]})}function f(e,t){return"object"==typeof e&&null!==e&&null!=e.key?U(""+e.key):t.toString(36)}function s(e,t,n,r,o){var u=!1;if(null===(e="undefined"!==(i=typeof e)&&"boolean"!==i?e:null))u=!0;else switch(i){case"string":case"number":u=!0;break;case"object":switch(e.$$typeof){case g:case H:u=!0}}if(u)return o=o(u=e),e=""===r?"."+f(u,0):r,ue(o)?(n="",s(o,t,n=null!=e?e.replace(le,"$&/")+"/":n,"",function(e){return e})):null!=o&&(c(o)&&(o=D(o,n+(!o.key||u&&u.key===o.key?"":(""+o.key).replace(le,"$&/")+"/")+e)),t.push(o)),1;if(u=0,r=""===r?".":r+":",ue(e))for(var a=0;a<e.length;a++){var i,l=r+f(i=e[a],a);u+=s(i,t,n,l,o)}else if("function"==typeof(l=M(e)))for(e=l.call(e),a=0;!(i=e.next()).done;)u+=s(i=i.value,t,n,l=r+f(i,a++),o);else if("object"===i)throw t=String(e),Error("Objects are not valid as a React child (found: "+("[object Object]"===t?"object with keys {"+Object.keys(e).join(", ")+"}":t)+"). If you meant to render a collection of children, use an array instead.");return u}function u(e,t,n){var r;return null==e||(r=0,s(e,e=[],"","",function(e){return t.call(n,e,r++)})),e}function V(t){var e;if(-1===t._status&&((e=(e=t._result)()).then(function(e){0!==t._status&&-1!==t._status||(t._status=1,t._result=e)},function(e){0!==t._status&&-1!==t._status||(t._status=2,t._result=e)}),-1===t._status)&&(t._status=0,t._result=e),1===t._status)return t._result.default;throw t._result}function a(e,t){var n=e.length;for(e.push(t);0<n;){var r=n-1>>>1,o=e[r];if(!(0<p(o,t)))break;e[r]=t,e[n]=o,n=r}}function i(e){return 0===e.length?null:e[0]}function l(e){if(0===e.length)return null;var t=e[0],n=e.pop();if(n!==t){e[0]=n;for(var r=0,o=e.length,u=o>>>1;r<u;){var a=2*(r+1)-1,i=e[a],l=a+1,c=e[l];if(p(i,n)<0)r=l<o&&p(c,i)<0?(e[r]=c,e[l]=n,l):(e[r]=i,e[a]=n,a);else{if(!(l<o&&p(c,n)<0))break;e[r]=c,e[l]=n,r=l}}}return t}function p(e,t){var n=e.sortIndex-t.sortIndex;return 0!==n?n:e.id-t.id}function y(e){for(var t=i(E);null!==t;){if(null===t.callback)l(E);else{if(!(t.startTime<=e))break;l(E),t.sortIndex=t.expirationTime,a(C,t)}t=i(E)}}function d(e){var t;j=!1,y(e),I||(null!==i(C)?(I=!0,m(b)):null!==(t=i(E))&&_(d,t.startTime-e))}function b(e,t){I=!1,j&&(j=!1,se(L),L=-1),$=!0;var n=P;try{for(y(t),R=i(C);null!==R&&(!(R.expirationTime>t)||e&&!q());){var r,o=R.callback;"function"==typeof o?(R.callback=null,P=R.priorityLevel,r=o(R.expirationTime<=t),t=v(),"function"==typeof r?R.callback=r:R===i(C)&&l(C),y(t)):l(C),R=i(C)}var u,a=null!==R||(null!==(u=i(E))&&_(d,u.startTime-t),!1);return a}finally{R=null,P=n,$=!1}}function q(){return!(v()-de<ye)}function m(e){O=e,T||(T=!0,be())}function _(e,t){L=fe(function(){e(v())},t)}function A(e){throw Error("act(...) is not supported in production builds of React.")}var N,h,B,v,z,g=Symbol.for("react.element"),H=Symbol.for("react.portal"),W=Symbol.for("react.fragment"),Y=Symbol.for("react.strict_mode"),G=Symbol.for("react.profiler"),J=Symbol.for("react.provider"),K=Symbol.for("react.context"),Q=Symbol.for("react.forward_ref"),X=Symbol.for("react.suspense"),Z=Symbol.for("react.memo"),ee=Symbol.for("react.lazy"),te=Symbol.iterator,ne={isMounted:function(e){return!1},enqueueForceUpdate:function(e,t,n){},enqueueReplaceState:function(e,t,n,r){},enqueueSetState:function(e,t,n,r){}},re=Object.assign,oe={},k=(t.prototype.isReactComponent={},t.prototype.setState=function(e,t){if("object"!=typeof e&&"function"!=typeof e&&null!=e)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,t,"setState")},t.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")},n.prototype=t.prototype,r.prototype=new n),ue=(k.constructor=r,re(k,t.prototype),k.isPureReactComponent=!0,Array.isArray),ae=Object.prototype.hasOwnProperty,w={current:null},ie={key:!0,ref:!0,__self:!0,__source:!0},le=/\\/+/g,S={current:null},x={transition:null},C=(v="object"==typeof performance&&"function"==typeof p Line truncated
const unpackExcalidraw = () => LZString.decompressFromBase64("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 truncated
let {react, reactDOM } = new Function(`${REACT_PACKAGES}; return {react: React, reactDOM: ReactDOM};`)();
let excalidrawLib = {};
const loadMathjaxToSVG = () => new Function(`${LZString.decompressFromBase64("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 truncated
const PLUGIN_LANGUAGES = {"ru": "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 truncated
const PLUGIN_VERSION="2.23.12";function _interopNamespaceDefault(e){var t=Object.create(null);return e&&Object.keys(e).forEach(function(i){if("default"!==i){var n=Object.getOwnPropertyDescriptor(e,i);Object.defineProperty(t,i,n.get?n:{enumerable:!0,get:function(){return e[i]}})}}),t.default=e,Object.freeze(t)}var obsidian_module__namespace=_interopNamespaceDefault(obsidian_module),React__namespace=_interopNamespaceDefault(React);let urlAlphabet="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict",random$3=e=>crypto.getRandomValues(new Uint8Array(e)),customRandom=(e,t,i)=>{let n=256-256%e.length;if(256===n){let n=e.length-1;return(a=t)=>{if(!a)return"";let s="";for(;;){let t=i(a),r=a;for(;r--;)if(s+=e[t[r]&n],s.length>=a)return s}}}let a=Math.ceil(409.6*t/n);return(s=t)=>{if(!s)return"";let r="";for(;;){let t=i(a),o=a;for(;o--;)if(t[o]<n&&(r+=e[t[o]%e.length],r.length>=s))return r}}},customAlphabet=(e,t=21)=>customRandom(e,0|t,random$3),nanoid$1=(e=21)=>{let t="",i=crypto.getRandomValues(new Uint8Array(e|=0));for(;e--;)t+=urlAlphabet[63&i[e]];return t};class ErrorHandler{static instance;errorLog=[];errorNoticeTimeout=1e4;maxLogEntries=100;constructor(){}static getInstance(){return ErrorHandler.instance||(ErrorHandler.instance=new ErrorHandler),ErrorHandler.instance}handleError(e,t,i=!0,n){const a="string"==typeof e?new Error(e):e;if(console.error(`[Excalidraw Error] in ${t}:`,a),this.errorLog.push({error:a,context:t,timestamp:Date.now()}),this.errorLog.length>this.maxLogEntries&&(this.errorLog=this.errorLog.slice(this.errorLog.length-this.maxLogEntries)),i){const e=this.formatErrorForUser(a,t);new obsidian_module.Notice(e,n||this.errorNoticeTimeout)}}safeEval(e,t,i,n){try{return i.eval.call(i,e)}catch(e){if(this.handleError(e,`SafeEval in ${t}`),void 0!==n)return n;throw e}}wrapWithTryCatch(e,t,i){try{return e()}catch(e){if(this.handleError(e,t),void 0!==i)return i;throw e}}formatErrorForUser(e,t){let i=e.message;return i.includes("Cannot read properties of undefined")?i="A required object was not available. This might be due to a plugin loading issue.":i.includes("is not a function")?i="A required function was not available. This might be due to a plugin version mismatch.":i.length>100&&(i=`${i.substring(0,100)}...`),`Excalidraw Error: ${i} (in ${t})`}getErrorLog(){return[...this.errorLog]}clearErrorLog(){this.errorLog=[]}}const errorHandler=ErrorHandler.getInstance(),UrlPurpose={AI_API:"AI API Endpoint (User Opt-in)",TASKBONE:"Taskbone OCR Endpoint",SUPPORT:"Support link, contact, or Ko-Fi button",DOCS:"Background information in Settings or Code Suggester",RELEASE_LOG:"Referencing issues, changes, or contributors in release log",VIDEO:"Supporting video tutorial or thumbnail",APP_LOGIC:"Internal application logic (embeddables, UI renders, asset fetching)",TRANSLATION:"One-time support message translation"},defineUrl=(e,t)=>({url:e,purpose:t}),URL_REGISTRY={RAW_GITHUBUSERCONTENT_COM_ZSVICZIAN_OBSIDIAN_EXCALIDRAW_PLUGIN_MASTER_EA_SCRIPTS_DIRECTORY_INFO_JSON:defineUrl("https://raw.githubusercontent.com/zsviczian/obsidian-excalidraw-plugin/master/ea-scripts/directory-info.json",UrlPurpose.APP_LOGIC),API_GITHUB_COM_REPOS_ZSVICZIAN_OBSIDIAN_EXCALIDRAW_PLUGIN_RELEASES:defineUrl("https://api.github.com/repos/zsviczian/obsidian-excalidraw-plugin/releases?per_page=15&page=1",UrlPurpose.APP_LOGIC),GITHUB_COM_ZSVICZIAN_OBSIDIAN_EXCALIDRAW_PLUGIN_ISSUES:defineUrl("https://github.com/zsviczian/obsidian-excalidraw-plugin/issues",UrlPurpose.DOCS),API_OPENAI_COM_V1:defineUrl("https://api.openai.com/v1",UrlPurpose.AI_API),API_ANTHROPIC_COM_V1:defineUrl("https://api.anthropic.com/v1",UrlPurpose.AI_API),GENERATIVELANGUAGE_GOOGLEAPIS_COM_V1BETA:defineUrl("https://generativelanguage.googleapis.com/v1beta",UrlPurpose.AI_API),API_X_AI_V1:defineUrl("https://api.x.ai/v1",UrlPurpose.AI_API),API_OPENAI_COM_V1_CHAT_COMPLETIONS:defineUrl("https://api.openai.com/v1/chat/completions",UrlPurpose.AI_API),API_OPENAI_COM_V1_IMAGES_GENERATIONS:defineUrl("https://api.openai.com/v1/images/generations",UrlPurpose.AI_API),API_OPENAI_COM_V1_IMAGES_EDITS:defineUrl("https://api.openai.com/v1/images/edits",UrlPurpose.AI_API),API_OPENAI_COM_V1_IMAGES_VARIATIONS:defineUrl("https://api.openai.com/v1/images/variations",UrlPurpose.AI_API),NOTEBOOKLM_GOOGLE_COM_NOTEBOOK_42D76A2F_C11D_4002_9286_1683C43D0AB0:defineUrl("https://notebooklm.google.com/notebook/42d76a2f-c11d-4002-9286-1683c43d0ab0",UrlPurpose.DOCS),COMMUNITY_SKETCH_YOUR_MIND_COM_EM:defineUrl("https://community.sketch-your-mind.com/em",UrlPurpose.SUPPORT),KO_FI_COM_ZSOLT:defineUrl("https://ko-fi.com/zsolt",UrlPurpose.SUPPORT),CDN_KO_FI_COM_CDN_KOFI3_PNG:defineUrl("https://cdn.ko-fi.com/cdn/kofi3.png?v=3",UrlPurpose.SUPPORT),COMMUNITY_SKETCH_YOUR_MIND_COM_WIKI:defineUrl("https://community.sketch-your-mind.com/wiki",UrlPurpose.SUPPORT),WWW_YOUTUBE_COM_VISUALPKM:defineUrl("https://www.youtube.com/@visualPKM",UrlPurpose.SUPPORT),COMMUNITY_SKETCH_YOUR_MIND_COM_EE:defineUrl("https://commu Line truncated
/* nosourcemap */
@@ -0,0 +1,12 @@
{
"id": "obsidian-excalidraw-plugin",
"name": "Excalidraw",
"version": "2.23.12",
"minAppVersion": "1.8.7",
"description": "Sketch Your Mind. Edit and view Excalidraw drawings. Enter the world of 4D Visual PKM.",
"author": "Zsolt Viczian",
"authorUrl": "https://excalidraw-obsidian.online",
"fundingUrl": "https://ko-fi.com/zsolt",
"helpUrl": "https://github.com/zsviczian/obsidian-excalidraw-plugin#readme",
"isDesktopOnly": false
}
@@ -0,0 +1 @@
@font-face{font-family:Assistant;font-weight:400;src:url(https://unpkg.com/@zsviczian/excalidraw@0.17.6-2/dist/excalidraw-assets/Assistant-Regular.woff2) format("woff2");style:normal;display:swap}@font-face{font-family:Assistant;font-weight:500;src:url(https://unpkg.com/@zsviczian/excalidraw@0.17.6-2/dist/excalidraw-assets/Assistant-Medium.woff2) format("woff2");style:normal;display:swap}@font-face{font-family:Assistant;font-weight:600;src:url(https://unpkg.com/@zsviczian/excalidraw@0.17.6-2/dist/excalidraw-assets/Assistant-SemiBold.woff2) format("woff2");style:normal;display:swap}@font-face{font-family:Assistant;font-weight:700;src:url(https://unpkg.com/@zsviczian/excalidraw@0.17.6-2/dist/excalidraw-assets/Assistant-Bold.woff2) format("woff2");style:normal;display:swap}.excalidraw .github-corner{display:none}.excalidraw .context-menu-option-separator{margin:4px!important}.excalidraw .context-menu-option{box-shadow:none}.excalidraw .popover{background-color:transparent!important;border:0!important;overflow-y:auto!important;padding:0!important;position:fixed!important}.excalidraw .disable-zen-mode--visible{color:var(--text-primary-color)}.excalidraw .Island .scrollbar{--scrollbar-thumb-bg:silver}.excalidraw .ToolIcon__icon img{height:1rem}.ToolIcon button,.excalidraw button{box-shadow:none;justify-content:normal}.excalidraw{--default-button-size:2rem!important;--default-icon-size:1rem!important;--lg-button-size:1.8rem!important;--lg-icon-size:1rem!important;--editor-container-padding:var(--size-4-2)}.excalidraw .tray-zoom{height:var(--default-button-size);padding-bottom:.05rem;padding-top:.05rem;pointer-events:auto}.excalidraw.excalidraw-container.theme--dark{background-color:#121212;color:#fff}.excalidraw .color-picker-content{max-height:10rem;overflow-y:auto}.excalidraw .ToolIcon__keybinding{font-size:.45rem!important}.excalidraw label.color-input-container>input{max-width:5rem}.excalidraw .App-mobile-menu .panelColumn,.excalidraw .App-toolbar-content .dropdown-menu,.excalidraw .selected-shape-actions .panelColumn{max-height:70vh;overflow-y:auto}.excalidraw .App-mobile-menu{width:12.5rem!important}.excalidraw .panelColumn .buttonList{max-width:13rem}.excalidraw input[type=color]{height:1.65rem;width:1.65rem}.excalidraw input[type=color]::-webkit-color-swatch{height:1.65rem}.excalidraw input[type=color]::-webkit-color-swatch-wrapper{padding:0}.excalidraw :where(.mobile-misc-tools-container,.tray-misc-tools-container) .sidebar-trigger{background-color:unset;border-radius:0;box-shadow:none;--lg-button-size:var(--button-height,var(--default-button-size))}.excalidraw :where(.mobile-misc-tools-container,.tray-misc-tools-container) .sidebar-trigger:hover{background-color:var(--button-hover-bg)}.excalidraw :where(.mobile-misc-tools-container,.tray-misc-tools-container) .sidebar-trigger:active{background-color:var(--button-hover-bg);border:1px solid var(--button-active-border);box-shadow:none}.excalidraw .welcome-screen-center__logo svg{width:5rem!important}.excalidraw .Modal{background-color:initial;border:initial;height:auto;max-height:none;max-width:none;width:auto}.excalidraw .ttd-dialog-content textarea,.excalidraw input,.excalidraw textarea.ttd-dialog-input{caret-color:var(--excalidraw-caret-color)!important}.excalidraw .color-picker-content input[type=color]{filter:var(--theme-filter)}.excalidraw .ExcTextField__input input::placeholder{color:var(--select-highlight-color)}.excalidraw textarea::placeholder{color:var(--color-gray-50)}.excalidraw .ToolIcon_type_button{color:var(--text-primary-color)}.excalidraw .picker-content{grid-gap:.2rem!important}.excalidraw .picker-content button.picker-option{height:1.85rem!important;width:1.85rem!important}.excalidraw .picker{padding:.2rem!important}.excalidraw .context-menu{height:-webkit-fit-content;height:-moz-fit-content;height:fit-content}.excalidraw .App-bottom-bar .App-toolbar{justify-content:start}.excalidraw-left-handed .excalidraw .App-bottom-bar{justify-content:flex-end!important;left:auto!important;right:0!important;transform:none!important}.excalidraw-left-handed .excalidraw .App-bottom-bar .App-toolbar{justify-content:end}.excalidraw .excalidraw-ui-top-right.library-and-pen,.excalidraw.excalidraw--mobile .excalidraw-ui-top-right{align-items:center;flex-direction:row;flex-wrap:wrap;gap:var(--size-4-1);justify-content:center}.excalidraw .excalidraw-ui-top-right.library-and-pen .ToolIcon__penMode{margin:auto}.excalidraw :is(.mobile-misc-tools-container,.tray-misc-tools-container){margin-right:unset}.excalidraw :is(.mobile-misc-tools-container,.tray-misc-tools-container).layer-ui__wrapper__top-right--compact{gap:0}.excalidraw .FixedSideContainer_side_top{padding-top:0!important}.excalidraw .ToolIcon.ToolIcon__penMode{height:-webkit-fit-content;height:-moz-fit-content;height:fit-content}.excalidraw svg.svg-icon{color:var(--icon-fill-color)}.excalidraw input[type=radio]:active,.excalidraw input[type=radio]:checked,.excalidraw input[type=radio]:focus,.excalidraw Line truncated
+164
View File
@@ -0,0 +1,164 @@
{
"remoteType": "",
"useCustomRequestHandler": false,
"couchDB_URI": "",
"couchDB_USER": "",
"couchDB_PASSWORD": "",
"couchDB_DBNAME": "",
"liveSync": false,
"syncOnSave": false,
"syncOnStart": false,
"savingDelay": 200,
"lessInformationInLog": false,
"gcDelay": 0,
"versionUpFlash": "",
"minimumChunkSize": 20,
"longLineThreshold": 250,
"showVerboseLog": false,
"suspendFileWatching": false,
"trashInsteadDelete": true,
"periodicReplication": false,
"periodicReplicationInterval": 60,
"syncOnFileOpen": false,
"encrypt": true,
"passphrase": "",
"usePathObfuscation": true,
"doNotDeleteFolder": false,
"resolveConflictsByNewerFile": false,
"batchSave": false,
"batchSaveMinimumDelay": 5,
"batchSaveMaximumDelay": 60,
"deviceAndVaultName": "",
"usePluginSettings": false,
"showOwnPlugins": false,
"showStatusOnEditor": false,
"showStatusOnStatusbar": true,
"showOnlyIconsOnEditor": false,
"hideFileWarningNotice": false,
"usePluginSync": false,
"autoSweepPlugins": false,
"autoSweepPluginsPeriodic": false,
"notifyPluginOrSettingUpdated": false,
"checkIntegrityOnSave": false,
"batch_size": 25,
"batches_limit": 25,
"useHistory": true,
"disableRequestURI": true,
"skipOlderFilesOnSync": true,
"checkConflictOnlyOnOpen": false,
"showMergeDialogOnlyOnActive": false,
"syncInternalFiles": false,
"syncInternalFilesBeforeReplication": false,
"syncInternalFilesIgnorePatterns": "\\/node_modules\\/, \\/\\.git\\/, \\/obsidian-livesync\\/",
"syncInternalFilesTargetPatterns": "",
"syncInternalFilesInterval": 60,
"additionalSuffixOfDatabaseName": "f1ade7c0d39e389e",
"ignoreVersionCheck": false,
"lastReadUpdates": 25,
"deleteMetadataOfDeletedFiles": false,
"syncIgnoreRegEx": "",
"syncOnlyRegEx": "",
"customChunkSize": 60,
"readChunksOnline": true,
"watchInternalFileChanges": true,
"automaticallyDeleteMetadataOfDeletedFiles": 0,
"disableMarkdownAutoMerge": false,
"writeDocumentsIfConflicted": false,
"useDynamicIterationCount": false,
"syncAfterMerge": false,
"configPassphraseStore": "",
"encryptedPassphrase": "%$0Bn++WIBZ2BOvFO88xcBMWI0lFP8oyUEWm8NmaQcasMPFuFPKjzlKdrygBybfwWNqHRg9ksc2fKwXCtuos+LZKBld2NAaLVDZgQcn43fMazRA4NSQJKLyrdzUdZfbOQE36A64d+GXkgDguJ6tQ==",
"encryptedCouchDBConnection": "%$0Bn++WIBZ2BOvFO88xcBMWI0lFP8oyUEWm8NmaQcasMx5zEn8+oHlz2OSUO1+Fu+m/kVsHFE23tEN9vd+9T9vd4mB1wFxFTHhNY8PGEGZcSwmZR70OkFbaS4/shFa6zDV5GbsoJ2nGsYZx+R9i6V1xxWXNBcwrFGogtsqpccSU7FOKjUGz3bnwLPmgjTUCrkEEC4VU+Z3jauAyqfVsxKIgr/ApltJWz2Re92ATNnt606NACbtuDHe9phriQwg9XchMHAwn2GGJ1hy4uwB6ooqaPXjNkLZP98cO7Wv4pkRo6XDquhNeUZpp6Cl8SwSYBRhxqkAa+cPOF/npT6fw5CfoIF6gHJQdE1LpUOQtg/WoeDIzm8Joh91aiicPI1H4Cg7FTEJNNsUVxHp2v8S3p8DuWrK4amvHKsRR85O/NMu5OMuqOSEgoMnpI2rmUhCqNe4lznk1q2nk9vG44hyw26LK46nn7JM5ZOXgVKIwv4Znaxpde0pSx7t3y69ud9xdFChsRdZv37Twe91MM055/JyIBi1NqSu3UTGeCuG1wh2GUdiRA5/LsnBc3mNCWtFIDP0LYP4wxHHrd7AE2yHqPktFVpX5hNHb+oW5m6nPhPgLNzJkWdR/5OaARbJpJh6ZjedLV4houh3GLIqqnOAVKWTECxH2aBffGGXI/NqXMnmTHteD8=",
"permitEmptyPassphrase": false,
"useIndexedDBAdapter": true,
"useTimeouts": false,
"writeLogToTheFile": false,
"doNotPaceReplication": false,
"hashCacheMaxCount": 300,
"hashCacheMaxAmount": 50,
"concurrencyOfReadChunksOnline": 30,
"minimumIntervalOfReadChunksOnline": 25,
"hashAlg": "xxhash64",
"suspendParseReplicationResult": false,
"doNotSuspendOnFetching": false,
"useIgnoreFiles": false,
"ignoreFiles": ".gitignore",
"syncOnEditorSave": false,
"pluginSyncExtendedSetting": {},
"syncMaxSizeInMB": 50,
"settingSyncFile": "",
"writeCredentialsForSettingSync": false,
"notifyAllSettingSyncFile": false,
"isConfigured": true,
"settingVersion": 10,
"enableCompression": false,
"accessKey": "",
"bucket": "",
"endpoint": "",
"region": "",
"secretKey": "",
"useEden": false,
"maxChunksInEden": 10,
"maxTotalLengthInEden": 1024,
"maxAgeInEden": 10,
"disableCheckingConfigMismatch": false,
"displayLanguage": "def",
"enableChunkSplitterV2": false,
"disableWorkerForGeneratingChunks": false,
"processSmallFilesInUIThread": false,
"notifyThresholdOfRemoteStorageSize": 5285,
"usePluginSyncV2": true,
"usePluginEtc": false,
"handleFilenameCaseSensitive": false,
"doNotUseFixedRevisionForChunks": true,
"showLongerLogInsideEditor": false,
"sendChunksBulk": false,
"sendChunksBulkMaxSize": 1,
"useSegmenter": true,
"useAdvancedMode": false,
"usePowerUserMode": false,
"useEdgeCaseMode": false,
"enableDebugTools": false,
"suppressNotifyHiddenFilesChange": false,
"syncMinimumInterval": 2000,
"P2P_Enabled": false,
"P2P_AutoAccepting": 0,
"P2P_AppID": "self-hosted-livesync",
"P2P_roomID": "",
"P2P_passphrase": "",
"P2P_relays": "wss://exp-relay.vrtmrz.net/",
"P2P_AutoBroadcast": false,
"P2P_AutoStart": false,
"P2P_AutoSyncPeers": "",
"P2P_AutoWatchPeers": "",
"P2P_SyncOnReplication": "",
"P2P_RebuildFrom": "",
"P2P_AutoAcceptingPeers": "",
"P2P_AutoDenyingPeers": "",
"P2P_IsHeadless": false,
"P2P_DevicePeerName": "",
"P2P_turnServers": "",
"P2P_turnUsername": "",
"P2P_turnCredential": "",
"doctorProcessedVersion": "0.25.0",
"bucketCustomHeaders": "",
"couchDB_CustomHeaders": "",
"useJWT": false,
"jwtAlgorithm": "",
"jwtKey": "",
"jwtKid": "",
"jwtSub": "",
"jwtExpDuration": 5,
"useRequestAPI": false,
"bucketPrefix": "",
"chunkSplitterVersion": "v3-rabin-karp",
"E2EEAlgorithm": "v2",
"processSizeMismatchedFiles": false,
"forcePathStyle": true,
"syncInternalFileOverwritePatterns": "",
"useOnlyLocalChunk": false,
"configPassphrase": "",
"preset": "",
"syncMode": "ONEVENTS",
"dummy": 0
}
+19
View File
@@ -0,0 +1,19 @@
/*
THIS IS A GENERATED/BUNDLED FILE BY ESBUILD AND TERSER
if you want to view the source, please visit the github repository of this plugin
*/
"use strict";function Logger(message,level,key3){_logger(message,level,key3)}function __logger(message,baseLevel,flagsOrKey,key3){let level=baseLevel;"string"==typeof flagsOrKey?key3=flagsOrKey:void 0!==flagsOrKey&&(level|=flagsOrKey);_logger(message,level,key3)}function info(message,flagsOrKey,key3){__logger(message,LEVEL_INFO,flagsOrKey,key3)}function isMetaEntry(entry){return"children"in entry}function statusDisplay(status){return status?"EXPERIMENTAL"==status?" (Experimental)":"ALPHA"==status?" (Alpha)":"BETA"==status?" (Beta)":` (${status})`:""}function confName(key3,alt=""){var _a8,_b5;return key3 in configurationNames?`${null==(_a8=configurationNames[key3])?void 0:_a8.name}${statusDisplay(null==(_b5=configurationNames[key3])?void 0:_b5.status)}`:`${alt||""}`}function numeric(str){return isNaN(str)?str.charCodeAt(0):parseInt(str,10)}function escapeBraces(str){return str.replace(slashPattern,escSlash).replace(openPattern,escOpen).replace(closePattern,escClose).replace(commaPattern,escComma).replace(periodPattern,escPeriod)}function unescapeBraces(str){return str.replace(escSlashPattern,"\\").replace(escOpenPattern,"{").replace(escClosePattern,"}").replace(escCommaPattern,",").replace(escPeriodPattern,".")}function parseCommaParts(str){if(!str)return[""];const parts=[],m3=balanced("{","}",str);if(!m3)return str.split(",");const{pre,body,post}=m3,p4=pre.split(",");p4[p4.length-1]+="{"+body+"}";const postParts=parseCommaParts(post);if(post.length){p4[p4.length-1]+=postParts.shift();p4.push.apply(p4,postParts)}parts.push.apply(parts,p4);return parts}function expand(str){if(!str)return[];"{}"===str.slice(0,2)&&(str="\\{\\}"+str.slice(2));return expand_(escapeBraces(str),!0).map(unescapeBraces)}function embrace(str){return"{"+str+"}"}function isPadded(el){return/^-?0\d/.test(el)}function lte(i2,y2){return i2<=y2}function gte(i2,y2){return i2>=y2}function expand_(str,isTop){const expansions=[],m3=balanced("{","}",str);if(!m3)return[str];const pre=m3.pre,post=m3.post.length?expand_(m3.post,!1):[""];if(/\$$/.test(m3.pre))for(let k2=0;k2<post.length;k2++){const expansion=pre+"{"+m3.body+"}"+post[k2];expansions.push(expansion)}else{const isNumericSequence=/^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(m3.body),isAlphaSequence=/^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(m3.body),isSequence=isNumericSequence||isAlphaSequence,isOptions=m3.body.indexOf(",")>=0;if(!isSequence&&!isOptions)return m3.post.match(/,(?!,).*\}/)?expand_(str=m3.pre+"{"+m3.body+escClose+m3.post):[str];let n3,N3;if(isSequence)n3=m3.body.split(/\.\./);else{n3=parseCommaParts(m3.body);if(1===n3.length&&void 0!==n3[0]){n3=expand_(n3[0],!1).map(embrace);if(1===n3.length)return post.map((p4=>m3.pre+n3[0]+p4))}}if(isSequence&&void 0!==n3[0]&&void 0!==n3[1]){const x2=numeric(n3[0]),y2=numeric(n3[1]),width=Math.max(n3[0].length,n3[1].length);let incr=3===n3.length&&void 0!==n3[2]?Math.abs(numeric(n3[2])):1,test=lte;if(y2<x2){incr*=-1;test=gte}const pad2=n3.some(isPadded);N3=[];for(let i2=x2;test(i2,y2);i2+=incr){let c3;if(isAlphaSequence){c3=String.fromCharCode(i2);"\\"===c3&&(c3="")}else{c3=String(i2);if(pad2){const need=width-c3.length;if(need>0){const z2=new Array(need+1).join("0");c3=i2<0?"-"+z2+c3.slice(1):z2+c3}}}N3.push(c3)}}else{N3=[];for(let j2=0;j2<n3.length;j2++)N3.push.apply(N3,expand_(n3[j2],!1))}for(let j2=0;j2<N3.length;j2++)for(let k2=0;k2<post.length;k2++){const expansion=pre+N3[j2]+post[k2];(!isTop||isSequence||expansion)&&expansions.push(expansion)}}return expansions}async function getWebCrypto(){if(webcrypto)return webcrypto;if(globalThis.crypto)return webcrypto=globalThis.crypto;{const module2=await import("crypto");return webcrypto=module2.webcrypto}}function base64ToArrayBufferNative(base64){if(0===base64.length)return new ArrayBuffer(0);try{if("string"==typeof base64)return Uint8Array.fromBase64(base64).buffer;const bufItems=base64.map((e3=>Uint8Array.fromBase64(e3).buffer)),len=bufItems.reduce(((p4,c3)=>p4+c3.byteLength),0),joinedArray=new Uint8Array(len);let offset=0;bufItems.forEach((e3=>{joinedArray.set(new Uint8Array(e3),offset);offset+=e3.byteLength}));return joinedArray.buffer}catch(ex){Logger("Base64 Decode error",LOG_LEVEL_VERBOSE);Logger(ex,LOG_LEVEL_VERBOSE);return new ArrayBuffer(0)}}function base64ToArrayBufferInternalBrowser(base64){try{const binary_string=globalThis.atob(base64),len=binary_string.length,bytes=new Uint8Array(len);for(let i2=0;i2<len;i2++)bytes[i2]=binary_string.charCodeAt(i2);return bytes.buffer}catch(ex){Logger("Base64 Decode error",LOG_LEVEL_VERBOSE);Logger(ex,LOG_LEVEL_VERBOSE);return new ArrayBuffer(0)}}function arrayBufferToBase64internalBrowser(buffer){return new Promise(((res2,rej)=>{const blob=new Blob([buffer],{type:"application/octet-binary"}),reader=new FileReader;reader.onload=function(evt){var _a8,_b5;const dataURI=(null==(_b5=null==(_a8=evt.target)?void 0:_a8.result)?void 0:_b5.toString())||"";if(0!=buffer.byteLength&&(""==dataURI||"data:"==dataURI))return rej(new TypeError("Could not parse tLine truncated
/*! Bundled license information:
octagonal-wheels/dist/encoding/encodeobject.js:
(* istanbul ignore if -- @preserve *)
@noble/secp256k1/index.js:
(*! noble-secp256k1 - MIT License (c) 2019 Paul Miller (paulmillr.com) *)
octagonal-wheels/dist/encryption/hkdf.js:
(* istanbul ignore if -- @preserve *)
(* istanbul ignore next -- @preserve *)
*/__export(main_exports,{default:()=>ObsidianLiveSyncPlugin});module.exports=__toCommonJS(main_exports);LOG_LEVEL_DEBUG=-1;LEVEL_INFO=LOG_LEVEL_INFO=32;LEVEL_NOTICE=LOG_LEVEL_NOTICE=64;LOG_LEVEL_VERBOSE=16;defaultLoggerEnv_minLogLevel=LOG_LEVEL_INFO;_logger=function defaultLogger2(message,level=LEVEL_INFO,key3){if(level<defaultLoggerEnv_minLogLevel)return;const newMessage=`${(new Date).toLocaleString()}\t${level}\t${"string"==typeof message?message:message instanceof Error?`${message.name}:${message.message}`:JSON.stringify(message,null,2)}`;1&level?console.debug(newMessage):4&level?console.warn(newMessage):8&level?console.error(newMessage):2&level?console.info(newMessage):console.log(newMessage);message instanceof Error&&console.dir(message.stack)};RESULT_TIMED_OUT=Symbol("timed out");Symbol("NotFound");CANCELLED=Symbol("cancelled");AUTO_MERGED=Symbol("auto_merged");NOT_CONFLICTED=Symbol("not_conflicted");MISSING_OR_ERROR=Symbol("missing_or_error");LEAVE_TO_SUBSEQUENT=Symbol("leave_to_subsequent_proc");Symbol("infinity");MILESTONE_DOCID="_local/obsydian_livesync_milestone";NODEINFO_DOCID="_local/obsydian_livesync_nodeinfo";MODE_SELECTIVE=0;MODE_AUTOMATIC=1;MODE_PAUSED=2;MODE_SHINY=3;REMOTE_COUCHDB=RemoteTypes_REMOTE_COUCHDB="";REMOTE_MINIO=RemoteTypes_REMOTE_MINIO="MINIO";REMOTE_P2P=RemoteTypes_REMOTE_P2P="ONLY_P2P";AutoAccepting=(AutoAccepting2=>{AutoAccepting2[AutoAccepting2.NONE=0]="NONE";AutoAccepting2[AutoAccepting2.ALL=1]="ALL";return AutoAccepting2})(AutoAccepting||{});P2P_DEFAULT_SETTINGS={P2P_Enabled:!1,P2P_AutoAccepting:0,P2P_AppID:"self-hosted-livesync",P2P_roomID:"",P2P_passphrase:"",P2P_relays:"wss://exp-relay.vrtmrz.net/",P2P_AutoBroadcast:!1,P2P_AutoStart:!1,P2P_AutoSyncPeers:"",P2P_AutoWatchPeers:"",P2P_SyncOnReplication:"",P2P_RebuildFrom:"",P2P_AutoAcceptingPeers:"",P2P_AutoDenyingPeers:"",P2P_IsHeadless:!1,P2P_DevicePeerName:"",P2P_turnServers:"",P2P_turnUsername:"",P2P_turnCredential:""};E2EEAlgorithmNames={"":"V1: Legacy",v2:"V2: AES-256-GCM With HKDF",forceV1:"Force-V1: Force Legacy (Not recommended)"};E2EEAlgorithms={V1:"",V2:"v2",ForceV1:"forceV1"};ChunkAlgorithmNames={v1:"V1: Legacy",v2:"V2: Simple (Default)","v2-segmenter":"V2.5: Lexical chunks","v3-rabin-karp":"V3: Fine deduplication"};DEFAULT_SETTINGS={remoteType:REMOTE_COUCHDB,useCustomRequestHandler:!1,couchDB_URI:"",couchDB_USER:"",couchDB_PASSWORD:"",couchDB_DBNAME:"",liveSync:!1,syncOnSave:!1,syncOnStart:!1,savingDelay:200,lessInformationInLog:!1,gcDelay:300,versionUpFlash:"",minimumChunkSize:20,longLineThreshold:250,showVerboseLog:!1,suspendFileWatching:!1,trashInsteadDelete:!0,periodicReplication:!1,periodicReplicationInterval:60,syncOnFileOpen:!1,encrypt:!1,passphrase:"",usePathObfuscation:!1,doNotDeleteFolder:!1,resolveConflictsByNewerFile:!1,batchSave:!1,batchSaveMinimumDelay:5,batchSaveMaximumDelay:60,deviceAndVaultName:"",usePluginSettings:!1,showOwnPlugins:!1,showStatusOnEditor:!0,showStatusOnStatusbar:!0,showOnlyIconsOnEditor:!1,hideFileWarningNotice:!1,usePluginSync:!1,autoSweepPlugins:!1,autoSweepPluginsPeriodic:!1,notifyPluginOrSettingUpdated:!1,checkIntegrityOnSave:!1,batch_size:25,batches_limit:25,useHistory:!1,disableRequestURI:!1,skipOlderFilesOnSync:!0,checkConflictOnlyOnOpen:!1,showMergeDialogOnlyOnActive:!1,syncInternalFiles:!1,syncInternalFilesBeforeReplication:!1,syncInternalFilesIgnorePatterns:"\\/node_modules\\/, \\/\\.git\\/, \\/obsidian-livesync\\/",syncInternalFilesTargetPatterns:"",syncInternalFilesInterval:60,additionalSuffixOfDatabaseName:"",ignoreVersionCheck:!1,lastReadUpdates:0,deleteMetadataOfDeletedFiles:!1,syncIgnoreRegEx:"",syncOnlyRegEx:"",customChunkSize:0,readChunksOnline:!0,watchInternalFileChanges:!0,automaticallyDeleteMetadataOfDeletedFiles:0,disableMarkdownAutoMerge:!1,writeDocumentsIfConflicted:!1,useDynamicIterationCount:!1,syncAfterMerge:!1,configPassphraseStore:"",encryptedPassphrase:"",encryptedCouchDBConnection:"",permitEmptyPassphrase:!1,useIndexedDBAdapter:!1,useTimeouts:!1,writeLogToTheFile:!1,doNotPaceReplication:!1,hashCacheMaxCount:300,hashCacheMaxAmount:50,concurrencyOfReadChunksOnline:40,minimumIntervalOfReadChunksOnline:50,hashAlg:"xxhash64",suspendParseReplicationResult:!1,doNotSuspendOnFetching:!1,useIgnoreFiles:!1,ignoreFiles:".gitignore",syncOnEditorSave:!1,pluginSyncExtendedSetting:{},syncMaxSizeInMB:50,settingSyncFile:"",writeCredentialsForSettingSync:!1,notifyAllSettingSyncFile:!1,isConfigured:void 0,settingVersion:10,enableCompression:!1,accessKey:"",bucket:"",endpoint:"",region:"auto",secretKey:"",useEden:!1,maxChunksInEden:10,maxTotalLengthInEden:1024,maxAgeInEden:10,disableCheckingConfigMismatch:!1,displayLanguage:"",enableChunkSplitterV2:!1,disableWorkerForGeneratingChunks:!1,processSmallFilesInUIThread:!1,notifyThresholdOfRemoteStorageSize:-1,usePluginSyncV2:!1,usePluginEtc:!1,handleFilenameCaseSensitive:void 0,doNotUseFixedRevisionForChunks:!0,showLongerLogInsideEditor:!1,sendChunksBulk:!1,sendChunksBulkMaxSize:1,useSegmenter:!1,useAdvancedMode:!1,usePLine truncated
/* nosourcemap */
+10
View File
@@ -0,0 +1,10 @@
{
"id": "obsidian-livesync",
"name": "Self-hosted LiveSync",
"version": "0.25.34",
"minAppVersion": "0.9.12",
"description": "Community implementation of self-hosted livesync. Reflect your vault changes to some other devices immediately. Please make sure to disable other synchronize solutions to avoid content corruption or duplication.",
"author": "vorotamoroz",
"authorUrl": "https://github.com/vrtmrz",
"isDesktopOnly": false
}
+481
View File
@@ -0,0 +1,481 @@
.added {
color: var(--text-on-accent);
background-color: var(--text-accent);
}
.normal {
color: var(--text-normal);
}
.deleted {
color: var(--text-on-accent);
background-color: var(--text-muted);
}
.conflict-dev-name {
display: inline-block;
min-width: 5em;
}
.op-scrollable {
overflow-y: scroll;
/* min-height: 280px; */
max-height: 280px;
user-select: text;
-webkit-user-select: text;
}
.op-pre {
white-space: pre-wrap;
}
.op-warn {
border: 1px solid salmon;
padding: 2px;
border-radius: 4px;
}
.op-warn::before {
content: "Warning";
font-weight: bold;
color: salmon;
position: relative;
display: block;
}
.op-warn-info {
border: 1px solid rgb(255, 209, 81);
padding: 2px;
border-radius: 4px;
}
.op-warn-info::before {
content: "Notice";
font-weight: bold;
color: rgb(255, 209, 81);
position: relative;
display: block;
}
.syncstatusbar {
-webkit-filter: grayscale(100%);
filter: grayscale(100%);
}
.tcenter {
text-align: center;
}
.sls-plugins-wrap {
display: flex;
flex-grow: 1;
max-height: 50vh;
overflow-y: scroll;
}
.sls-plugins-tbl {
border: 1px solid var(--background-modifier-border);
width: 100%;
max-height: 80%;
}
.divider th {
border-top: 1px solid var(--background-modifier-border);
}
.sls-header-button {
margin-left: 2em;
}
.sls-hidden {
display: none;
}
:root {
--sls-log-text: "";
}
.sls-troubleshoot-preview {
max-width: max-content;
}
.sls-troubleshoot-preview img {
max-width: 100%;
}
.sls-setting-tab {
display: none;
}
div.sls-setting-menu-btn {
color: var(--text-normal);
background-color: var(--background-secondary-alt);
border-radius: 8px;
padding: 6px 10px;
cursor: pointer;
margin-right: 2px;
font-family: "Inter", sans-serif;
outline: none;
user-select: none;
flex-grow: 1;
text-align: center;
flex-shrink: 1;
}
.sls-setting-label.selected {
/* order: 1; */
flex-grow: 1;
/* width: 100%; */
}
.sls-setting-tab:hover~div.sls-setting-menu-btn,
.sls-setting-label.selected .sls-setting-tab:checked~div.sls-setting-menu-btn {
background-color: var(--interactive-accent);
color: var(--text-on-accent);
}
.sls-setting-menu-wrapper {
display: flex;
flex-direction: column;
flex-grow: 1;
position: sticky;
top: 0;
backdrop-filter: blur(15px);
padding: 4px;
border-radius: 10px;
z-index: 10;
}
.sls-setting-menu {
display: flex;
flex-direction: row;
overflow-x: auto;
}
body {
--sls-col-transparent: transparent;
--sls-col-warn: rgba(var(--background-modifier-error-rgb), 0.1);
--sls-col-warn-stripe1: var(--sls-col-transparent);
--sls-col-warn-stripe2: var(--sls-col-warn);
}
.sls-setting-menu-buttons {
border: 1px solid var(--sls-col-warn);
padding: 2px;
margin: 1px;
border-radius: 4px;
background-image: linear-gradient(-45deg,
var(--sls-col-warn-stripe1) 25%, var(--sls-col-warn-stripe2) 25%, var(--sls-col-warn-stripe2) 50%,
var(--sls-col-warn-stripe1) 50%, var(--sls-col-warn-stripe1) 75%, var(--sls-col-warn-stripe2) 75%, var(--sls-col-warn-stripe2));
background-size: 30px 30px;
display: flex;
flex-direction: row;
justify-content: flex-end;
padding: 0.5em 0.25em;
justify-content: center;
align-items: center;
/* transition: background-position 1s; */
animation: sls-scroll-warn 1s linear 0s infinite;
}
@keyframes sls-scroll-warn {
0% {
background-position: 0 0;
}
100% {
background-position: 30px 0;
}
}
.sls-setting-menu-buttons label {
margin-right: auto;
flex-grow: 1;
color: var(--text-warning);
}
.sls-setting-label {
flex-grow: 1;
display: inline-flex;
justify-content: center;
}
.setting-collapsed {
display: none;
}
.sls-plugins-tbl-buttons {
text-align: right;
}
.sls-plugins-tbl-buttons button {
flex-grow: 0;
padding: 6px 10px;
}
.sls-plugins-tbl-device-head {
background-color: var(--background-secondary-alt);
color: var(--text-accent);
}
.op-flex {
display: flex;
}
.op-flex input {
display: inline-flex;
flex-grow: 1;
margin-bottom: 8px;
}
.op-info {
display: inline-flex;
flex-grow: 1;
border-bottom: 1px solid var(--background-modifier-border);
width: 100%;
margin-bottom: 4px;
padding-bottom: 4px;
}
.history-added {
color: var(--text-on-accent);
background-color: var(--text-accent);
}
.history-normal {
color: var(--text-normal);
}
.history-deleted {
color: var(--text-on-accent);
background-color: var(--text-muted);
text-decoration: line-through;
}
.ob-btn-config-fix label {
margin-right: 40px;
}
.ob-btn-config-info {
border: 1px solid salmon;
padding: 2px;
margin: 1px;
border-radius: 4px;
}
.ob-btn-config-head {
padding: 2px;
margin: 1px;
border-radius: 4px;
}
.isWizard .wizardHidden {
display: none;
}
.sls-setting:not(.isWizard) .wizardOnly {
display: none;
}
.sls-item-dirty::before {
content: "✏";
}
.sls-item-dirty-help::after {
content: " ❓";
}
.sls-item-invalid-value {
background-color: rgba(var(--background-modifier-error-rgb), 0.3) !important;
}
.sls-setting-disabled input[type=text],
.sls-setting-disabled input[type=number],
.sls-setting-disabled input[type=password] {
filter: brightness(80%);
color: var(--text-muted);
}
.sls-setting-hidden {
display: none;
}
.sls-setting-obsolete {
background-image: linear-gradient(-45deg,
var(--sls-col-warn-stripe1) 25%, var(--sls-col-warn-stripe2) 25%, var(--sls-col-warn-stripe2) 50%,
var(--sls-col-warn-stripe1) 50%, var(--sls-col-warn-stripe1) 75%, var(--sls-col-warn-stripe2) 75%, var(--sls-col-warn-stripe2));
background-image: linear-gradient(-45deg,
transparent 25%, rgba(var(--background-secondary), 0.1) 25%, rgba(var(--background-secondary), 0.1) 50%, transparent 50%, transparent 75%, rgba(var(--background-secondary), 0.1) 75%, rgba(var(--background-secondary), 0.1));
background-size: 60px 60px;
}
.password-input>.setting-item-control>input {
-webkit-text-security: disc;
}
span.ls-mark-cr::after {
user-select: none;
content: "↲";
color: var(--text-muted);
font-size: 0.8em;
}
.deleted span.ls-mark-cr::after {
color: var(--text-on-accent);
}
.ls-imgdiff-wrap {
display: flex;
justify-content: center;
align-items: center;
}
.ls-imgdiff-wrap .overlay {
position: relative;
}
.ls-imgdiff-wrap .overlay .img-base {
position: relative;
top: 0;
left: 0;
}
.ls-imgdiff-wrap .overlay .img-overlay {
-webkit-filter: invert(100%) opacity(50%);
filter: invert(100%) opacity(50%);
position: absolute;
top: 0;
left: 0;
animation: ls-blink-diff 0.5s cubic-bezier(0.4, 0, 1, 1) infinite alternate;
}
@keyframes ls-blink-diff {
0% {
opacity: 0;
}
50% {
opacity: 0;
}
100% {
opacity: 1;
}
}
.livesync-status {
user-select: none;
pointer-events: none;
height: auto;
min-height: 1em;
position: absolute;
background-color: transparent;
width: 100%;
padding: 10px;
padding-right: 16px;
top: var(--header-height);
z-index: calc(var(--layer-cover) + 1);
font-variant-numeric: tabular-nums;
tab-size: 4;
text-align: right;
white-space: pre-wrap;
display: inline-block;
color: var(--text-normal);
font-size: 80%;
}
div.workspace-leaf-content[data-type=bases] .livesync-status {
top: calc(var(--bases-header-height) + var(--header-height));
padding: 5px;
padding-right: 18px;
}
.is-mobile div.workspace-leaf-content[data-type=bases] .livesync-status {
top: calc(var(--bases-header-height) + var(--view-header-height));
padding: 6px;
padding-right: 18px;
}
.livesync-status div {
opacity: 0.6;
-webkit-filter: grayscale(100%);
filter: grayscale(100%);
}
.livesync-status .livesync-status-loghistory {
text-align: left;
opacity: 0.4;
}
.livesync-status div.livesync-status-messagearea:empty {
display: none;
}
.livesync-status div.livesync-status-messagearea:not(:empty) {
opacity: 0.6;
color: var(--text-on-accent);
border: 1px solid var(--background-modifier-error);
background-color: rgba(var(--background-modifier-error-rgb), 0.2);
-webkit-filter: unset;
filter: unset;
width: fit-content;
margin-left: auto;
}
.menu-setting-poweruser-disabled .sls-setting-poweruser {
display: none;
}
.menu-setting-advanced-disabled .sls-setting-advanced {
display: none;
}
.menu-setting-edgecase-disabled .sls-setting-edgecase {
display: none;
}
.sls-setting-panel-title {
position: sticky;
font-size: medium;
top: 2.5em;
background-color: var(--background-secondary-alt);
border-radius: 10px;
padding: 0.5em 1.0em;
}
.active-pane .sls-setting-panel-title {
border: 1px solid var(--interactive-accent);
}
.sls-dialogue-note-wrapper {
display: flex;
justify-content: flex-end;
align-items: center;
}
.sls-dialogue-note-countdown {
font-size: 0.8em;
}
.sls-qr {
display: flex;
justify-content: center;
align-items: center;
max-width: max-content;
}
.sls-keypair pre {
max-width: 100%;
overflow-x: auto;
white-space: pre-wrap;
word-break: break-all;
}
BIN
View File
Binary file not shown.
+2236
View File
File diff suppressed because it is too large. Load diff
+82
View File
@@ -0,0 +1,82 @@
## commute
the burned out shells of ruined cars line the street while you are given a parking ticket for overstay in your own driveway.
_television screens, mattresses, broken glass cabinets line the street_
your electronic vehicle measures its speed in kilometres per hour as whole integers even though it runs on a 64bit platform.
it increases its speed from 59km/h to its new set point of 60km/h. there is a heavy clunk as the battery surges, overshooting its target to 62.1779103879933km/h and your meagre savings are obliterated by an automatically enforced speeding ticket unleashed upon you from a medium-altitude long-endurance unmanned aircraft traffic surveillance platform.
you drive on and the drivers you share the road with are completely insane
every one of them out of their mind in some way. video games, gambling, drugs, or pornography adorns the dashboard displays of enormous trucks, with heavy duty wheels they crush all in their path.
the troubled youth joyride whatever they can get their hands on.
they knock on the ports of the ignition systems with their low energy frequency hopping spread spectrum phreaking boxes.
snow encrusted demons on motorcycles, they frequently lose it on the ice and slam into parked cars, erupting into a lithium hellfire.
acid rains from the sky.
the air is filled with sulphur and an infernal smell clings to the icy slurry that covers the roads.
_more about the air_
the people cower in their crumbling plasterboard homes, or in a megalithic brutalist block of units, with crisscrossed walkways to its neighbours: a data centre with a backup natural gas generator that is always running, and a slaughterhouse.
we get to the entrance. there's some kind of error getting in.
"the organisation has changed something," states the gruff exmilitary watchman from his pillbox guardpost, "they say the last system was too simple."
there is a lot of shuffling in and out of the post. a brusque call is made to a service provider. lastly, a blood sample is given. identity confirmed, the heavy steel gate lowers and we pull into a carpark at the base of the building.
snow falls on the courtyard outside [[the_facility]].
one of _nine hundred and thirty eight_, the name of this firm: `growtein garden` is milled into the steel face of the building.
its edges are sharpened to cut the ropes of attackers attempting to abseil down from the roof onto to the floor to ceiling glass windows of the board room below it.
on the snow below the board room, the severed wings of bats and birds that have tried to nest in the logo alcove. they are drawn by the warm exhaust being vented from inside, their warm blood melts the snow they rest on.
we enter the building. back in the guard booth our photos and personal details appear on a monitor.
in the corporate headquarters they appear among scores of others in the bottom right 16th of a panoramic operations centre, briefly, before being added to a chain of times and locations that stretches all the way back to birth.
the corporation amasses gargantuan troves of personal information on everyone that comes into contact with it. everything from medical records and genetic data to crass itemisations of sexual liaisons.
a copy is immediately exfiltrated by an advanced persistent threat's worm festering in the state manager of the neural network powered facial recognition subsystem. they list it on a deep web market in a bundle with 2 million others.
the corporation's automated scraper of the market buys a copy and adds it to the training data of the facial recognition subsystem.
i sit down at my desk. the headphones are still tangled from the morning report.
i glance at my todo list. a remarkable tool, one of unquestionable utility. it should be a comfort, a girder upon which to build a productive and satisfying day of labour for the mutual benefit of both the self and the greater whole.
... but it has become corrupted. in times such as these, where productivity is being deleveraged, for every item crossed off, 2.28 will have been appended. this is the economy under the management of the todo list that only gets longer.
it senses my presence.
...
### the todo list that only gets longer
taunts you
ink like the tar of a lifetime smoking cigarettes oozes out of its mouth as it speaks
the universe is playing against you. every time you play this card increase the number of items on it by 2
get another notebook? i can't. that would mean believing that an inanimate notebook has the power of speech. making an economical decision based on the subjective experience of something out of reality.
## desk
i can't separate the facility that sucks and the one that rules
because they are the same place.
the office.
---
sharp steel signage milled into the building
same way that anti ergonomic benches aggrieve ordinary people, skateboarders and the homeless, the sign was designed to prevent people scaling the walls but also cuts the talons off birds that attempt to perch on it, feeding them bloody arms of a different sort
---
spotify changed its ui again
- smart shuffle
- stops playing the album to play music video
what to do in the face of so many minor inconveniences
- driving in the morning to [[the_facility]]
_where the fuck i am_
is it competitive dog barking
are there really monstrous lovecraftian hounds stalking the countryside
well for one thing it's fucking cold
like driving in antarctica. but then it will get warm,
which is not very pleasant because the air is full of sulphur and extremely humid
so there is a constant icy sludge and a foul smell
there is junk all over the place, not just at home
-18
View File
@@ -1,18 +0,0 @@
- driving in the morning to deliver <<thing>>
part of duties
competitive dog barking
parking fines
speeding tickets
organisation changed something
they say our system is too simple
spotify changed its ui again
- smart shuffle
what to do in the face of so many minor inconveniences
medical transport officer
monitoring organs being transported
-14
View File
@@ -1,14 +0,0 @@
- the facility
- the technician
- the routine
- the engineer
another two members spread across the city / country ?
** THE TROIKA **
- the business
- the manager
- the estimator
- the cleaner
+17 -1
View File
@@ -1,3 +1,6 @@
dystopian nightmare black comedy
crystallise
## setting
DMC on stan lee:
@@ -17,10 +20,19 @@ growtein garden
## struggles
### noise
drilling at night
dogs
garbage trucks (some kind of weekly disturbance that recurs)
### incompetence
offshore team that can't/won't do anything themselves
have to figure out what kind of stupidity they are doing
given clear instructions and errors will just ask for somebody to fix for them
### dystopia 2025
opsec
rent increase notice with a beautiful blue beach picture on the front ![[Pasted image 20251029090819.png]]
### psychomedia
unnamed overseas villain trying to destroy the food
@@ -44,6 +56,7 @@ dostoyevsky going to the gallows
serge
aaron
alex
when jt leaves in the evening for the night shift
## style
@@ -51,3 +64,6 @@ alex
barnacles in the sink
holes in people
parasites
ahab's splintered brow and features
the sails
captain's eyebrows themselves, splintered timber
+2
View File
@@ -0,0 +1,2 @@
#### jake
bgbl, hgbl, gold, NDIA
Binary file not shown.
File diff suppressed because it is too large. Load diff
Binary file not shown.
+4
View File
@@ -0,0 +1,4 @@
### JSON / Protobuf / Whatever
## Controls
- Allow mRIDs to be updated
Binary file not shown.
@@ -0,0 +1,207 @@
---
excalidraw-plugin: parsed
tags: [excalidraw]
---
==⚠ Switch to EXCALIDRAW VIEW in the MORE OPTIONS menu of this document. ⚠== You can decompress Drawing data with the command palette: 'Decompress current Excalidraw file'. For more info check in plugin settings under 'Saving'
# Excalidraw Data
## Text Elements
Device
Debug ^fd7Tc6Kt
Resource Tree ^DawCTW7R
MUP ^JjFzgK2n
FSA ^kzQDYtJR
NMI ^5t8rQ56W
DERP ^kyRiQkwJ
mrid
values
time ^m02Mc0wj
mrid
values
time ^QkKOFhIG
mrid
values
time ^j5BrWMIY
Control Plane ^q1p1MHte
Control
History ^ScgFIALW
all present? ^AZucXgmM
mrid
values
time ^6slA3AYg
mrid
values
time ^7UWAnjjt
mrid
values
time ^pEfXAAAO
Data Plane ^q9BP3syi
last posted
^gKlBXkJj
%%
## Drawing
```compressed-json
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
```
%%
Binary file not shown.
Binary file not shown.
File diff suppressed because it is too large. Load diff
+4
View File
@@ -0,0 +1,4 @@
- Device Resource Tree
- Control History
Binary file not shown.
Binary file not shown.
Binary file not shown.
+6923
View File
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
+49
View File
@@ -0,0 +1,49 @@
## 61968 Common Functions
### DER Group Formation and Management Functions
| Function | Description | Chapter Reference |
| -------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------- |
| **DER Group Creation** | **This function allows a software entity to define a logical group of DER and to exchange the definition of this group with other applications or businesses. The purpose of grouping is subsequent monitoring and management at the group level.** | **Chapter 6** |
| **DER Group Member Query** | **This function allows one entity to inquire from another to learn the current members of a DER Group.** | **Chapter 9** |
| **DER Group Deletion** | **This function deletes a previously created group** | **Chapter 10** |
| **DER Group Maintenance** | **This set of functions provides the ability to add, update, or delete members from a group.** | **Chapter 11** |
### DER Group Capabilities and Monitoring Functions
| Function | Description | Chapter Reference |
| ----------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------- |
| **Status Monitoring of DER Groups** | **This function allows the exchange of real-time status information for DER groups. This function addresses dynamic data, including present value and the present range of adjustability (i.e. the min/max dispatchable range of manageable parameters).** | **Chapter 13** |
| Capability of DER Groups | This function allows the exchange of information indicative of the installed capability of a DER group in terms of the grid- supportive services that it is capable of supporting. This data is generally static, changing only as equipment changes are made, not varying in real time. | Chapter 12 |
| DER Group Output Forecasting | This function allows the exchange of forecast information regarding the availability of real and reactive power from DER groups. Note: This function does not relate to how forecasts are determined (e.g. weather data, sky-viewing cameras, etc.) but only to how such information might be exchanged between entities. | Chapter 14 |
| **DER Group Historical Meter Data** | **This function allows for exchange of interval meter data that is indicative of the aggregate production of a group of DER.** | **Chapter 15** |
### DER Group Limitation and Operational Boundary Functions
| Function | Description | Chapter Reference |
| --- | --- | --- |
| **DER Group Maximum Real Power Limiting** | **This function sets limits on the aggregate power generated and/or absorbed by DER groups** | **Chapter 16** |
| DER Group Ramp Rate Limit Control | This function sets limits on the rate at which DER group real and reactive power levels may rise and fall | Chapter 17 |
| DER Group Phase Balance Limiting | This function sets limits on the phase imbalance for real and reactive power of DER groups | Chapter 18 |
### DER Group Control Functions
| Function | Description | Chapter Reference |
| ----------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------- |
| **Real Power Dispatch of DER Groups** | **This function allows the dispatch of real power to/from DER groups.** | **Chapter 19** |
| DER Group Curve Settings | This function manages curve functions (e.g. volt-var control, watt-frequency control) for DER groups. | Chapter 22 |
| Regulation Function | This function allows DER Groups to provide Regulation services to system operators and balancing authorities. | Chapter 24 |
| Schedules for DER Services | As an alternative to real-time requests, this function allows the exchange of schedules for DER group services, such as the Real Power Dispatch function. | Integrated into Each Function |
| Ride-Through Service | This function allows event ride-through characteristics to be changed for a group of DER. | |
| Energy Price-Based Management | This function enables DER groups to be provided with energy price information and to be configured to provide services based on price. | Chapter 25 |
| Service Cost-Based Management and Bidding | This function (or data-exchange addition to other functions) enables queries regarding the availability of DER services on a cost-basis and also the offer/provision of services based on a cost. | Chapter 26 |
| Voltage Regulation Settings | This function allows for adjustment of a target voltage regulating setting of a group of DER. This could be used, for example, in coordination with a conservation voltage reduction system. | Chapter 21 |
| Connect/Disconnect Control | This function allows for remotely turning groups of systems on or off. Potential uses include maintenance, disabling of malfunctioning equipment, and anti-islanding. | Chapter 28 |
### Potential Additional/Future Functions
| Function | Description | Chapter Reference |
| --------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------- |
| Fast Up-Down Regulation Services | This function allows groups of DER to be rapidly dispatched (e.g. 4 seconds update rate) both up and down in real power in order to help regulate the system. | |
| Dynamic System Voltage Stabilization Services | This function allows groups of DER to provide real and/or reactive power in response to the rate of change (dV/dt) of the service voltage amplitude at each DER. The behaviors would resist voltage fluctuations. | |
| DER Group Mode Management | This function notifies groups of DER of changes to circuit configuration and other conditions that may merit a change in inverter modes. | |
+17
View File
@@ -0,0 +1,17 @@
# CIM
## Overview
### primer document
outlines all the parts of the CIM and the thinking behind it
[[3002032389_Common Information Model Primer_ Eleventh Edition.PDF]]
### common functions document from EPRI
outlines pretty much everything we'll be expected to do and how, tables below summarise them and I have highlighted the ones particularly important to us
[[3002008215_Common Functions For DER Group Management, Third Edition.PDF]]
[[61968 Common Functions]]
### test cases
[[Test Cases - 61968-5]]
### the rest of the CIM
[[Summary of CIM]]
### tech choices
[[tech choices]]
@@ -0,0 +1,259 @@
---
excalidraw-plugin: parsed
tags: [excalidraw]
---
==⚠ Switch to EXCALIDRAW VIEW in the MORE OPTIONS menu of this document. ⚠== You can decompress Drawing data with the command palette: 'Decompress current Excalidraw file'. For more info check in plugin settings under 'Saving'
# Excalidraw Data
## Text Elements
FlexGW ^qODGWIb6
DERAPI ^21P88HbJ
<cim:PowerTransformer rdf:ID="_f1769d7c-9aeb-11e5-91da-b8763fd99c5f">
<cim:Equipment.EquipmentContainer rdf:resource="#_f17695d8-9aeb-11e5-91da-b8763fd99c5f"/>
<cim:Equipment.normallyInService>true</cim:Equipment.normallyInService>
<cim:IdentifiedObject.description>3244 3245 0 &apos;1 &apos;</cim:IdentifiedObject.description>
<cim:IdentifiedObject.name>HOGASEN T1</cim:IdentifiedObject.name>
<cim:IdentifiedObject.mRID>f1769d7c-9aeb-11e5-91da-b8763fd99c5f</cim:IdentifiedObject.mRID>
</cim:PowerTransformer> ^FiCk1zd9
RDF - CIM-XML ^6q4zx41g
<?xml version="1.0" encoding="UTF-8"?>
<!--Sample XML file generated by XMLSpy v2015 rel. 4 sp1 (x64) (http://www.altova.com)-->
<tns:CreateDERGroups xmlns="http://iec.ch/TC57/2017/DERGroups#" xmlns:msg="http://iec.ch/TC57/2011/schema/message" xmlns:tns="http://iec.ch/TC57/2017/DERGroupsMessage" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:n1="http://www.altova.com/samplexml/other-namespace" xsi:schemaLocation="http://iec.ch/TC57/2017/DERGroupsMessage DERGroupsMessage.xsd">
<tns:Header>
<msg:Verb>create</msg:Verb>
<msg:Noun>DERGroups</msg:Noun>
<msg:Timestamp>2017-05-31T13:55:27-06:00</msg:Timestamp>
<msg:MessageID>bc9b3eaa-bdc0-4d61-9577-0c78515fee65</msg:MessageID>
<msg:CorrelationID>bb9a2075-e2e1-43ba-a234- e5d800bfff6e</msg:CorrelationID>
</tns:Header>
<tns:Payload>
<DERGroups>
<EndDeviceGroup>
<mRID>a20c559c-dda3-41e5-98b7-41afeb63ae5b</mRID>
<description>DER Group 1</description>
<DERFunction>
<connectDisconnect>true</connectDisconnect>
<frequencyWattCurveFunction>false</frequencyWattCurveFunction>
<maxRealPowerLimiting>false</maxRealPowerLimiting>
<rampRateControl>false</rampRateControl>
<reactivePowerDispatch>false</reactivePowerDispatch>
<realPowerDispatch>true</realPowerDispatch>
<voltageRegulation>false</voltageRegulation>
<voltVarCurveFunction>false</voltVarCurveFunction>
<voltWattCurveFunction>false</voltWattCurveFunction>
</DERFunction>
<EndDevices>
<mRID>23cbd502-128a-4c4e-b7cd-5eaf6d9ae275</mRID>
</EndDevices>
<EndDevices>
<mRID>7fc50292-2e8a-4e9c-80ae-9105f50ce3ea</mRID>
</EndDevices>
<EndDevices>
<mRID>63d092b7-baed-4bfe-ad97-5709f2ce4ec9</mRID>
</EndDevices>
<Names>
<name>DG1</name>
</Names>
<version>
<date>2017-05-31T13:55:01-06:00</date>
<major>1</major>
<minor>0</minor>
<revision>0</revision>
</version>
</EndDeviceGroup>
</DERGroups>
</tns:Payload>
</tns:CreateDERGroups> ^J5oZLxyB
61968-100 - SOAP ^A9TrshcK
<MirrorUsagePoint href="/mup/99a76667cac86b060bffdccd180bd102ff98f5e9/upt/62633866316438622d65306400055436">
<mRID>62633866316438622d65306400055436</mRID>
<description>SiteReading</description>
<roleFlags>03</roleFlags>
<serviceCategoryKind>0</serviceCategoryKind>
<status>1</status>
<deviceLFDI>9CDC4D1C68B2BF69E2BAEABF74F06F7200055436</deviceLFDI>
<MirrorMeterReading>
<mRID>31353431666461372d65613600055436</mRID>
<ReadingType>
<accumulationBehaviour>0</accumulationBehaviour>
<commodity>1</commodity>
<dataQualifier>2</dataQualifier>
<flowDirection>1</flowDirection>
<kind>37</kind>
<powerOfTenMultiplier>0</powerOfTenMultiplier>
<uom>38</uom>
</ReadingType>
</MirrorMeterReading>
<MirrorMeterReading>
<mRID>63643463643962392d65626600055436</mRID>
<ReadingType>
<accumulationBehaviour>0</accumulationBehaviour>
<commodity>1</commodity>
<dataQualifier>2</dataQualifier>
<flowDirection>1</flowDirection>
<kind>37</kind>
<powerOfTenMultiplier>0</powerOfTenMultiplier>
<uom>63</uom>
</ReadingType>
</MirrorMeterReading>
<MirrorMeterReading>
<mRID>39393662393834302d63396300055436</mRID>
<ReadingType>
<accumulationBehaviour>0</accumulationBehaviour>
<commodity>1</commodity>
<dataQualifier>2</dataQualifier>
<flowDirection>1</flowDirection>
<kind>37</kind>
<powerOfTenMultiplier>0</powerOfTenMultiplier>
<uom>29</uom>
</ReadingType>
</MirrorMeterReading>
<postRate>300</postRate>
</MirrorUsagePoint> ^pnLJsiKn
2030.5 - XML (SOAPish) ^WiPlKBwF
SPAQL ^ym38VtAo
Question
How do we get from CIM-XML -> ^BpmF2kCX
61968-5 Actual Functions
61968-10 Test of -5
61970 CIM itself (data shape)
^HCTtnxVH
%%
## Drawing
```compressed-json
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
```
%%
Binary file not shown.
+32
View File
@@ -0,0 +1,32 @@
## Summary of CIM
| | **CIM Profile Description** |
| ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| IEC 61968-1 | This Part of the IEC 61968 International Standard identifies and establishes recommendations for standard interfaces based on an Interface Reference Model (IRM). Subsequent clauses of this standard are based on each interface identified in the IRM. This set of standards is limited to the definition of interfaces. They provide for interoperability among different computer systems, platforms, and languages. Methods and technologies used to implement functionality conforming to these interfaces are recommended in IEC 61968-100. |
| IEC 61968-3 | This part of the IEC 61968 International Standard specifies the information content of a set of message types that can be used to supervise main substation topology (breaker and switch state) and control equipment status. It also provides the means for handling network connectivity and loading conditions. Finally, it makes it possible for utilities to locate customer telephone complaints and supervise the location of field crews. |
| IEC 61968-4 | This Part of IEC 61968 International Standard specifies the information content of a set of message types that can be used to support many of the business functions related to records and asset management. |
| **IEC 61968-5** | **This Part of IEC 61968 International Standard specifies a set of functions that are needed for enterprise integration of DERMS functions. These exchanges are most likely between a DERMS and a DMS. However, an enterprise integration standard leveraging IEC 61968-100:2013 for application integration, there are no technical limitation for systems with which a DERMS might exchange information.** |
| IEC 61968-6 | This Part of IEC 61968 International Standard specifies the information content of a set of message types that can be used to support business functions related to Maintenance and Construction. Typical uses of the message types defined in Part 6 include planned maintenance, unplanned maintenance, conditional maintenance, and work management |
| IEC 61968-7 | This Part of IEC 61968 International Standard specifies the information content of a set of message types that can be used to support business functions related to engineering design. |
| IEC 61968-8 | This Part of IEC 61968 International Standard specifies the information content of a set of message types that can be used to support many of the business functions related to customer support. |
| **IEC 61968-9** | **This Part of IEC 61968 International Standard specifies the information content of a set of message types that can be used to support many of the business functions related to meter reading and control.** |
| IEC 61968-13 | This part of IEC 61968 specifies profiles that can be used to exchange Network Models in a Utility or between a Utility and external applications to the utility. This standard provides a list of profiles which allow to model balanced and unbalanced distribution networks in order to conduct network analysis (Power flow calculation). |
| **IEC 61968-100** | **This document specifies an implementation profile for the application of the other parts of IEC 61968 using common integration technologies, including JMS and web services. This International Standard also provides guidance with respect to the use of Enterprise Service Bus (ESB) technologies.** |
| IEC 61970-452 | This document contains a subset of classes, class attributes, and associations from the CIM UML necessary to describe a static transmission network model. This document defines a Core Equipment Profile, an Operation Profile, and a Short Circuit Profile. |
| IEC 61970-453 | This document contains a subset of classes, class attributes, and associations from the CIM UML necessary to exchange schematic information between systems. This document defines a Diagram Layout Profile. |
| IEC 61970-456 | This document contains a subset of classes, class attributes, and associations from the CIM UML necessary to describe the steady state of a power system network. This document defines a State Variables Profile and a Topology Profile. |
| IEC 61970-457 | This international standard specifies a standard interface for exchanging dynamic model information needed to support the analysis of the steady state stability (small-signal stability) and/or transient stability of a power system or parts of it. The schema(s) for expressing the dynamic model information shall be derived directly from the CIM.<br><br>The scope of this standard includes only the dynamic model information that needs to be exchanged as part of a dynamic study, namely the type, description and parameters of each control equipment associated with a piece of power system equipment included in the steady state solution of a complete power system network model. |
| IEC 61970-458 | This international standard specifies a standard interface to support the models and objects required for power generation information exchanges. The scope of information exchange includes all generation processes such as bulk and distributed resources, including processes generating by-products such as heat or steam. The scope of information exchange is focused on Generation specific applications such as scheduling, optimization, operation and maintenance of the Generation resources. |
| IEC 61970-459 | This international standard specifies a framework for network model exchange including description of network model parts, boundaries between network model parts, complete power flow cases and responsible authorities. The boundaries act as a frame where network model parts fit. A network model part, boundary or power flow case is described by additional meta-data such as source, author, study time, description, development of time (audit trail) etc. This additional meta-data is described in the framework information model and will be part of the IEC 61970 300 series documents. |
| IEC 61970-460 | This international standard specifies a standard interface for exchanging incremental network models of proposed changes to IEC 61970 network models used for network analysis. These incremental network models of proposed changes are called IEC 61970 Projects, or in this document, simply ‘Projects’.<br><br>The scope of this document shall include models for all types of changes that impact IEC 61970 network model datasets. The initial version of this specification, however, focuses on Projects that define plans for new construction activity in the power grid.<br><br>The exchanges which are in scope here, (i.e. the proposed change) are datasets of long-term interest which are a fundamental component used by various parties in the construction of network analysis cases for many different purposes. |
| IEC 62325-351 | This part of IEC 62325 provides the European style market profile specifications that support the European style design electricity markets. These electricity markets are based on the European regulations, and on the concepts of third-party access and zonal market. |
| IEC 62325-450 | This document provides the modelling rules necessary to ensure that Contextual Models derived from the CIM for information exchanges between electricity market actors participating in various market business processes are in conformity with the CIM model. |
| IEC 62325-451-1 | This document provides for the European style market profile the generic technical and application acknowledgement document that can be used in all European style market processes. |
| IEC 62325-451-2 | This document provides for the European style market profile the time-based scheduling process. These market processes are based on the European regulations, and on the concepts of third-party access and zonal market. |
| IEC 62325-451-3 | This document provides for the European style market profile the transmission capacity allocation business process based on either explicit or implicit auction that can be used throughout a European style market. |
| IEC 62325-451-4 | This document provides for the European style market profile the settlement and reconciliation business process that can be used throughout a European style market. |
| IEC 62325-451-5 | This document provides for the European style market profile the problem statement and status request business processes that can be used throughout a European style market. |
| IEC 62325-451-6 | This document provides for the European style market profile the publication (or transparency) information exchanges to submit either to a data aggregator or to an electronic publication platform the necessary information to be published about the electricity market. |
| IEC 62325-451-7 | This document provides, for the European style market profile, the necessary information to be exchanged between Balancing Service Providers, Transmission System Operators and a Common Merit Order List about the Electricity Balancing market. |
| IEC 62325-451-8 | Based on the European style market profile, IEC 62325-351, this document specifies a package for the HVDC Scheduling business processes and the associated document’s contextual models, assembly models and XML schema for use within European style markets. |
| IEC 62325-451-10 | Based on the European style market contextual model (IEC 62325-351), this particular part of IEC 62325 series specifies a UML package for the Energy Consumption Data business process and its associated document contextual model, assembly model and XML schema for use within the European style electricity markets. |
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
+43
View File
@@ -0,0 +1,43 @@
# tech choices
## overview
the CIM itself is not prescriptive about how we should build interfaces, but most of the existing tooling is built around java.
## Data
### RDF
this is the main format used to store the huge graph of objects that make up the grid. you can see it in use in the [nordic 44 repo](https://github.com/statnett/Nordic44/tree/main/instances/Grid/jsonld)
comes in a bunch of flavours, this is heavily used in europe, even in the transport sector.
**schenider will love it if we start working with this.**
- `cimxml` – *IEC 61970-600-1*
XML text format, we will in all likelihood encounter this
- `jsonld` – *IEC 61970-553*
JSON Linked Data. also available and promoted by IEC but not as widespread
looking forward, this seems like a great tech to look into to store a graph of the network so we can extend the data the DERMS has / gives us with our own knowledge of the network. for example which DER are connected to which substation
### XML
the test script uses plain old xml as SOAP+HTTP as a sort of reference implementation.
without knowing much about our interface to gridsite / energisa they will likely want to use this as our interface.
conceivably would could do a whole SOAP+JSON+HTTP thing if we can get buyin from energisa, that would help reduce the appeal of java
### WSDL / XSD
when we actually get the models from IEC there are a bunch of tools we can use to codegen classes for whatever lang
https://github.com/cimug-org/CIMTool
IEC has a section about JSON schemas as well as XML. we can conceivably
## java
it might actually be worth it for us to just bite the bullet and build some java services. prabhu has some experience with it and so do i, while i'm away might be a good use of time to do some quick investigations and see how it feels.
https://github.com/apache/jena
apache db specifically for storing and querying RDF
aws has their own hosted version of this
## rust
most of my POC has been in rust because i think we can use its [into](https://doc.rust-lang.org/rust-by-example/conversion/try_from_try_into.html) traits to convert to and from different representations, it's super fast, the type system is really powerful etc etc.
there are some cool tools (alpha) like [camel](https://github.com/IkoAfianando/rust-camel) that use native java bridges to abstract away all the apache stuff and let you write rust business logic
reality is we might have to build a bunch of stuff ourselves if we don't want to use java/apache type tools, my preference would be to do it in rust because we can use them to write very high quality and fast code, as opposed to trying to strongarm them into making half decent python code
## python
Binary file not shown.
@@ -0,0 +1,520 @@
---
excalidraw-plugin: parsed
tags: [excalidraw]
---
==⚠ Switch to EXCALIDRAW VIEW in the MORE OPTIONS menu of this document. ⚠== You can decompress Drawing data with the command palette: 'Decompress current Excalidraw file'. For more info check in plugin settings under 'Saving'
# Excalidraw Data
## Text Elements
Endeavour Energy
OnPrem ^TZOpvYhn
Grid Services Function ^nBvz3ZY3
Control
Plane ^ZQiR55Id
Data
Plane ^KtepeddS
IEEE
2030.5
API ^Ve4qM9j2
Direct Connect
Gateway #2 ^Rd1FXm5K
Direct Connect
Gateway #1 ^PpAXIeBZ
Endeavour
Energy
Resources ^cmg9mwuU
Switchdin
Resources ^7NATbqjn
PEGA ^RagtwAr9
OEM
Aggregator ^B3wUvcNa
Direct
DER ^b4O8Vzk5
mTLS - 2030.5 ^IDGJX1vz
In-Band Registration ^UYUc8R4q
Aggregated
DER ^gvMvwOro
Aggregated
DER ^npyd27XH
Aggregated
DER ^p5oyvWxv
POST /rg
NMI ^LQDcsYo7
DER
Resources ^UFiNwytY
Out of Band
Registration ^1UPMkHI2
AWS - EE VPC ^W0Sxvxq2
All Telemetry ^PY8jPJTV
Connectivity Test Initiation ^ZQbXPF00
POST - https://control.test.gsf.ee.switchdin.com/devices ^daOPoDHL
Registration Telemetry ^0v971B19
AFAIK we will not need to have an outgoing DirectConnect
PEGA is hosted inside AWS, we can use VPC peering or equivalent
to ensure traffic stays within AWS ^sOkf9qwe
ntr note ^r4jOZwBC
??? ^BcuniuRp
Endeavour
DMZ ^NVW6zGGB
Azure - Sydney
australiaeast ^csZwP5Ox
AWS - Sydney
ap-southeast-2 ^A6dYfZtN
APIM ^GOWIft0S
CPE
Azure East
Palo Alto ^UPqqvSoy
tunnel 1 ^EcCFeeWg
tunnel 2 ^F1wtro17
3.107.218.87 ^DvVLAsFh
13.211.101.233 ^Z4wLztyg
20.193.18.21 ^Sccu7elb
Virtual
Gateway ^0nhbtkkG
Customer
Gateway
AZ East ^Le7kStB1
Site to Site
VPN ^Fg8HFlE1
All Telemetry ^KTds5Frr
ECS Cluster - GSF ^rj96ZNlF
Data
Plane ^VzKbzRoV
IEEE
2030.5
API ^8Vq4bD3d
AWS - Sydney
ap-southeast-2
GSF VPC ^45ZAIgkj
Virtual
Gateway ^hcuxFET2
Customer
Gateway
AZ East ^JVSwD8Io
Site to Site
VPN ^RXZ1jWlh
## Embedded Files
b349e50b739d4c56c2d754eb30a3aa30bfae1a32: [[Pasted Image 20250130163208_699.png]]
420189ea9558db76400455b1ca5fe1afb557ce2c: [[Pasted Image 20250130163129_690.png]]
%%
## Drawing
```compressed-json
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=
```
%%
File diff suppressed because it is too large. Load diff
Binary file not shown.
+5
View File
@@ -0,0 +1,5 @@
- just need to supply public subnets
- bgp gateway ip
- will be added to direct connect route table to go thru to ee azure
provision cert for pega
Binary file not shown.
Binary file not shown.
+7
View File
@@ -0,0 +1,7 @@
Why?
- helping OEMs write shit clients
- supply our own bulletproof client with all the TLS setup
- isn't this the droplet?
- struggling to connect with DSOs
- data plane is ok
- probably want eventstream too
@@ -0,0 +1,5 @@
- control plane should show data type documentation
- on sitect override all controls with empty control list
- for established devices that already have a schedule
- default control aggressive setgradw
- active control aggressive ramptms
Binary file not shown.
+18
View File
@@ -0,0 +1,18 @@
- 4 hour schedules
- 30 min controls
- rolling window
1200 - [ 1: 10000, 2: 9000, 3: 9000, 4: 9000, 5: 9000, 6: 9000, 7: 9000, 8: 8000 ]
1230 - [ 2: 9000, 3: 10000, 4: 11000, 5: 9000, 6: 8000, 7: 8000, 8: 8000, 9: 8000 ]
- [x] ditch pex
- [ ] aggregator validate client
- [ ] traceid in haproxy
- [ ] tracestate lfdi / fp
- [x] filter health check and metrics
- [x] traces
### Data Plane API Types
- [ ] link up with analytics events
- [ ]
+35
View File
@@ -0,0 +1,35 @@
### DERCapability Subscriber
```
2024-11-19T05:01:15 {"url": "/SW_API/device/61F852F042A80ED07B1C5843FB2FEEE3576AE7F3/capabilities", "data": "DnspDerCapability(cloud_event_time=datetime.datetime(2024, 11, 19, 5, 0, 44, 223089, tzinfo=TzInfo(UTC)), device_id='61F852F042A80ED07B1C5843FB2FEEE3576AE7F3', modesSupported='50004c', rtgMaxA=200.0, rtgMaxAh=None, rtgMaxVar=60000.0, rtgMaxVarNeg=-60000.0, rtgMaxW=60000.0, rtgMaxVA=40000.0, rtgMaxChargeRateW=None, rtgMaxDischargeRateW=None, type='4')", "result": "", "status": 200, "event": "HTTP Interface Upstream response", "level": "info", "timestamp": "2024-11-19T05:01:15.181205Z"}
```
### ConnectionPoint Subscriber
```
2024-11-19T05:01:14 {"url": "/SW_API/device/reg", "cp": "DnspConnectionPoint(cloud_event_time=datetime.datetime(2024, 11, 19, 5, 0, 43, 828546, tzinfo=TzInfo(UTC)), device_id='61f852f042a80ed07b1c5843fb2feee3576ae7f3', nmi='99999999999')", "result": "", "status": 200, "event": "EE CP response", "level": "info", "timestamp": "2024-11-19T05:01:14.094909Z"}
```
### DERSettings
```
2024-11-19T05:01:15 {"url": "/SW_API/device/61F852F042A80ED07B1C5843FB2FEEE3576AE7F3/settings", "data": "DnspDerSettings(cloud_event_time=datetime.datetime(2024, 11, 19, 5, 0, 44, 129529, tzinfo=TzInfo(UTC)), device_id='61F852F042A80ED07B1C5843FB2FEEE3576AE7F3', setMaxW=60000.0, setMaxVar=60000.0, setMaxVarNeg=-60000.0, setMaxVA=40000.0, setMaxChargeRateW=None, setMaxDischargeRateW=None)", "result": "", "status": 200, "event": "HTTP Interface Upstream response", "level": "info", "timestamp": "2024-11-19T05:01:15.495178Z"}
```
### DERStatus
```
2024-11-19T05:01:15 {"url": "/SW_API/devices/61F852F042A80ED07B1C5843FB2FEEE3576AE7F3/messages/events", "data": "DnspDerStatus(cloud_event_time=datetime.datetime(2024, 11, 19, 5, 0, 44, 333282, tzinfo=TzInfo(UTC)), device_id='61F852F042A80ED07B1C5843FB2FEEE3576AE7F3', der_status=[DERStatusItem(alarmStatus=[StringStatusItem(value='00', timestamp='1731992444')], stateOfChargeStatus=None, connectStatus=None, inverterStatus=[IntegerStatusItem(value=4, timestamp='1731992444')], operationalModeStatus=[IntegerStatusItem(value=2, timestamp='1731992444')], storConnectStatus=None, genConnectStatus=[StringStatusItem(value='03', timestamp='1731992444')])])", "result": "", "status": 200, "event": "HTTP Interface Upstream response", "level": "info", "timestamp": "2024-11-19T05:01:15.074144Z"}
```
### EndDevice
```
2024-11-19T05:01:09 {"url": "/SW_API/device/reg", "cp": "DnspEndDevice(cloud_event_time=datetime.datetime(2024, 11, 19, 5, 0, 38, 9109, tzinfo=TzInfo(UTC)), device_id='61f852f042a80ed07b1c5843fb2feee3576ae7f3', aggregator='61F852F042A80ED07B1C5843FB2FEEE3576AE7F3AF32D5953EAB2CDDD6ECC9AD')", "result": "", "status": 200, "event": "EE Edev response", "level": "info", "timestamp": "2024-11-19T05:01:09.360123Z"}
```
### MUP
```
2024-11-19T05:01:09 {"url": "/SW_API/devices/61F852F042A80ED07B1C5843FB2FEEE3576AE7F3/messages/events", "data": "DnspMup(cloud_event_time=datetime.datetime(2024, 11, 19, 5, 0, 38, 386601, tzinfo=TzInfo(UTC)), device_id='61F852F042A80ED07B1C5843FB2FEEE3576AE7F3', mirror_meter_reading=[MirrorMeterReading(data_name=4, data_qualifier='2', uom='63', phase='0', role_flag='0x3', reading=[Reading(value=200.0, end=1731992438, duration=0)])])", "result": "", "status": 200, "event": "HTTP Interface Upstream response", "level": "info", "timestamp": "2024-11-19T05:01:09.295091Z"}
```
### RSPS
```
2024-11-19T05:11:57 {"mrid": "328d3025a04421f5a4ed672888888888", "lfdi": "61F852F042A80ED07B1C5843FB2FEEE3576AE7F3", "status": 2, "xml": "<DERControlResponse xsi:schemaLocation=\"urn:ieee:std:2030.5:ns sep.xsd\" xmlns=\"urn:ieee:std:2030.5:ns\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:csipaus=\"https://csipaus.org/ns\" >\n <createdDateTime>1731993117</createdDateTime>\n <endDeviceLFDI>61F852F042A80ED07B1C5843FB2FEEE3576AE7F3</endDeviceLFDI>\n <status>2</status>\n <subject>328d3025a04421f5a4ed672888888888</subject>\n</DERControlResponse>\n", "event": "ControlResponse", "level": "info", "timestamp": "2024-11-19T05:11:57.869048Z"}
2024-11-19T05:11:58 {"res": "<ClientResponse(https://eederc.dev.endeavourenergy.com.au/SW_API/controls) [200 OK]>\n<CIMultiDictProxy('Content-Length': '0', 'x-ms-middleware-request-id': '00000000-0000-0000-0000-000000000000', 'Request-Context': 'appId=', 'Date': 'Tue, 19 Nov 2024 05:11:57 GMT')>\n", "text": "", "event": "RSPS post successful", "level": "info", "timestamp": "2024-11-19T05:11:58.057141Z"}
```
+38
View File
@@ -0,0 +1,38 @@
## prod
### DER
US SERCA
`endeavour-energy-gsf-prod.switchdin.com`
AU SERCA
`der.endeavour-energy-gsf-prod.switchdin.com`
probably just add an entry for both.
you may want to add one for
`nepki.endeavour-energy-gsf-prod.switchdin.com`
or similar so we can run them all in parallel
### Control Plane
`control.endeavour-energy-gsf-prod.switchdin.com`
### Docs (Optional)
`docs.endeavour-energy-gsf-prod.switchdin.com`
## test
### DER
`test.gsf.ee.switchdin.com`
### Control Plane
`control.test.gsf.ee.switchdin.com`
### Docs (Optional)
`docs.test.gsf.ee.switchdin.com`
File renamed without changes.
@@ -0,0 +1,968 @@
---
excalidraw-plugin: parsed
tags: [excalidraw]
---
==⚠ Switch to EXCALIDRAW VIEW in the MORE OPTIONS menu of this document. ⚠== You can decompress Drawing data with the command palette: 'Decompress current Excalidraw file'. For more info check in plugin settings under 'Saving'
# Excalidraw Data
## Text Elements
Low Cost Solutions ^SDX6nwEV
Type A - Discrete
In this model for each deployment we run
all required services.
No code changes, high scaling, high baseline cost. ^7hNY97Qe
Redpanda ^RoCyhRLC
Valkey ^rCpi49fO
2030p5 ^TrUXfngC
Control ^Tm3slxYD
Data ^1zm0lqDZ
Lake ^1M5Fc72N
Tempo ^tpT8rmzD
Grafana ^tM7OVayt
OTel ^umbLfDoa
HAProxy ^Oty3Qr8Q
Sentinel ^q2YR8jjQ
Infra ^XI2X5xLX
GSF ^k6Xdc6V4
Monitor ^do3s2dg5
Tier 1&2 Deployments
- Full Monitoring
- Full HA
- Single Tenant
- 10000s of devices ^SzH7my3a
ap-southeast-2a ^lxM0c7xD
ap-southeast-2b ^qH0Zor00
ap-southeast-2c ^szJfeqad
Redpanda ^13B0qFjC
Redpanda ^GnO2xBIx
Redpanda ^k0WgsguX
Valkey ^MCPFchbH
Valkey ^QmIi3OaR
Valkey ^PYyEFxzh
Sentinel ^tP1TohFl
Tempo ^R5JMtVJp
Grafana ^iw1H703t
OTel ^oTYVx33i
2030p5 ^LVaBhvg0
Control ^BEEHDlxE
Data ^KODZlt74
Lake ^VzrVGBpY
HAProxy ^XQRYrVLd
Prometheus ^BowV0lA1
Prometheus ^o494yn1K
Namespaces ^3VMCUXy6
Type B - Shared
In this model we have one big cluster where tenants
share
We separate GSF deployments and give them their own Valkey
but we monitor them together and use the same Event Broker
as these are the main drivers of baseline cost and HA requirements.
Because our T1 & T2 K8s deployments can support 7000+ devices
this simply scales down baseline costs and simplifies maintenance and
monitoring overheads at the cost of increased risk.
Some minor code changes required to separate and ACL topics. ^FTMrFGmb
Redpanda ^4WPInonA
& ^SdZTQ8it
Monitor ^im5Fae0b
Redpanda ^lTUuhTwg
Redpanda ^nbfUA8Ow
Redpanda ^KsqwBg8f
Tempo ^LsK43nJG
Prometheus ^W8pr3ls5
Grafana ^vRCBD2cB
OTel ^TvLqvfiT
2030p5 ^ndZiu2iP
Control ^NqQherWU
Data ^aUbJzslv
Lake ^P2vimex3
HAProxy ^0hdj4HFa
- Full Monitoring
- Full HA
- Multiple Tenants
- 10000s of devices ^wo9FFmfh
ap-southeast-2a ^hdAPlvtW
ap-southeast-2b ^SakZ0KHP
ap-southeast-2c ^aZFwTATq
Redpanda ^yfSrxVMZ
Valkey ^P6zl4uPu
Sentinel ^XGnvM6Uy
Tempo ^aQtWkT3V
Grafana ^FaMX6PcO
Prometheus ^2REHvgyg
OTel ^V7olqSp7
2030p5 ^a4Mb2HZm
Control ^Yd8FH94O
Data ^jEGiRqTc
Lake ^xjNm6b1a
HAProxy ^Cnoc1ZR8
Infra ^8gmHAdXY
Barbados ^1UfpzRmt
Monitor ^GAbhGicV
Namespaces ^QtqpJXaG
2030p5 ^PWRO2dd7
Control ^BzBSKWFR
Data ^zHvdbBlc
Lake ^uVLJqu7H
HAProxy ^SR5Djhom
Sadales
Tīkls ^j0AKJeSJ
Valkey ^uKrrPBIC
Sentinel ^xQ8LcX91
2030p5 ^C8DJ48xK
Control ^saVrBJP0
Data ^6XfD0x5U
Lake ^xhwgSGIG
HAProxy ^2BnOUdBH
Valkey ^U1HgZbYa
Sentinel ^qQZmLe9Z
Sentinel ^LG1A3R8d
Valkey ^AmXFctYJ
K8s Cluster ^PpcdvNtB
Type C - Solo Yolo
In this model we relax true HA requirements to really drive cost down.
Roughly equivalent to the binpacking strategy
Everything is run on a single node with NVME attached storage
We aggressively snapshot this node's disks using EBS snapshots that are automatically available region wide.
We configure an AutoScalingGroup that ensures 1 of these instances is running at all times in our ap-se2 region.
Instead of using EKS we leverage k3s and its ability to store cluster state in S3
In the case of a node/AZ failure
- the ASG provisions a new node in a different AZ
- this node uses a secret key stored in SecretsManager to access the stored cluster state in S3
- as the cluster is restored it will reroute route53 and load balancer targets to itself
Possible Downtime:
<5m for instance bootstrap and cluster initialisation
<15m data loss since last snapshot
^JbTROVHR
Redpanda ^Fom1p8WI
Valkey ^yo3G8QRi
Tempo ^4OGdnH3W
Grafana ^7ZhDTPeJ
Prometheus ^Lv9dfc2j
OTel ^Qd1C3Jdr
2030p5 ^IsE20XAk
Control ^duFxbfyL
Data ^QQHBwrTC
Lake ^EJZbCtyW
HAProxy ^TB3XD90Y
Infra ^ofY8Y1WT
GSF ^VMSvmo6D
Monitor ^QQz5v4Xb
GSF K8s Node - ap-southeast-2a ^QNHWVjrY
Namespaces ^YYY1wDQt
Redpanda ^zBQl5fYx
Valkey ^VdU6Tqqn
Tempo ^dLI8xZ4n
Grafana ^UzEkH2WN
Prometheus ^DPpO2OMV
OTel ^tWjYMHS2
2030p5 ^K9srqSsK
Control ^VY4DOk1K
Data ^UT0KKeIz
Lake ^tjYOFXeG
HAProxy ^th06olLv
k3s ^zykPaird
s3 ^gkHUDbja
cluster state ^JbxAtExy
Redpanda ^IuOtFKKE
Valkey ^FK4xxRxy
Tempo ^SkSUhtKo
Grafana ^7DY3knnJ
Prometheus ^QO7q1fXu
OTel ^9OkdCbwW
2030p5 ^zfZkzprg
Control ^hdPQNlEo
Data ^Ras65nSt
Lake ^MGlMnSGo
HAProxy ^x1CyikJN
GSF K8s Node - ap-southeast-2b ^HHAWLQjM
k3s ^febr3F9m
AZ / Node Failure ^jXf2F050
restore ^tZYlKr0w
EBS Snapshot ^CLYuOPnX
%%
## Drawing
```compressed-json
N4KAkARALgngDgUwgLgAQQQDwMYEMA2AlgCYBOuA7hADTgQBuCpAzoQPYB2KqATLZMzYBXUtiRoIACyhQ4zZAHoFAc0JRJQgEYA6bGwC2CgF7N6hbEcK4OCtptbErHALRY8RMpWdx8Q1TdIEfARcZgRmBShcZQUebQBObR4aOiCEfQQOKGZuAG1wMFAwYogSbggAZQARAA0ANg4KAFEANRTiyFhEcqgsKHaSzG5nAGYARkSAdgAOABZ46fjZkemR
ngBWWfX+EphhnlmABm1ZusP19fiJupH4yfjtgsgKEnVuMenpk9vPw5HJsaHeL/R4dKQIQjKaTcDY7SDWZTBbiHOEQZhQUhsADWCAAwmx8GxSOUAMRjBDk8kDSCaXDYLHKTFCDjEfGE4kSDHWZhwXCBLLUiAAM0I+HwFVgSIkgg8gvRmJxAHVXpIYaj5diEBKYFL0DKyqimVCOOEcmgxqi2LzsGo9ubDiinhBGcI4ABJYhm1C5AC6qKF5AyHu4HCE
YtRhBZWHKuEOgqZLJNzC9ofDTrCCGI702s1mHyuqMYLHYXDQecLTFYnAAcpwxO9bodJrNJjx4vEI8wqmlelm0EKCGFUZphCymsEMlkU2H8KihHBiLhe+9JusJuseNNDmM6mMLU6iBwsSGZ6jCfTM9wB/gh07eph+hIADJsCiofHo1AVAlCKAlnKGpQAAqfTlC+b4flAX4/n+nAAU6QqcFAFSEEY4i8I6YKIVkABiuD6KKdqoKCJT3lAACCRDKKW6
DBEK/QVqQf7uJRkI0dAVqCnoWS4JGTDBmgqazk6RKQpGBAgQ+YGvu+bCft+viwRw8Fgrgv5sAASuEqHoRiQgIGefEABIQlCj6oGMSTrAUAC+OxFCUZQSJMkjVgAmncACKSCol06HQKBqJDGgow8JZ0zXP80zrIsIxriRkBEc4YxrNoa5hTw4xNlc251KiLzEG8ZaTJM2h7vEdSLEsYxHHUsJOpIpnQua9WqRwiLoZhJQajibJEqSlIUj5Tq0vSLr
MqyBL9Zy5DKby/IMQhoripK/n6lm6oYpqyqFaqaB8OmW04tqupogSBpOkakhJl6+5gladK2u8DqouN7qenkfoIYGCACagQkRlGwXoLgYzxqOxA3SeaZghmfaoCMLZ1PEBy7oxVY0ZuszoyWtYcPW5opcj2URZ23bBMu/aDgZI0Q+O6SZNk0PCWC86LpTFmruuiMPAsB1goex6CaeB5sBe8PXreYJkeUQHwAgqDkagzioFUhDMNggS9AAOhwutuhw
qDqOrqD6GwxBBKgiGkKgITYJIqAWz4bAwJOUEUArpDMrrBD4KggQAI5CIQgTEKgYSkGYYjMNouu1qgegWwnkgIuE1CoJIkIOxrBCRso6eZ1CqC0mEh4K3o6LaPGwGgRIcuIIryuq+rmsIDrescAbRuZ8wpvm5b1u23SDtO4SruM6gHv+97HC+/7CBByHmbh0wUfhLHHDx4n5cp+1acZ1n4fuHnBeHyXQR8QnclQFX/pIShaEwl1kDYVAeEEfgREJ
QFD6sdR5R0UWmCIszECB/3YlATiqJuJRD4qQP6AMRKkDErPfAklzIQHrgrJWKs1Yay1ggXW+tDbG17mbC2ftB52xHggZ248siT09jPOegdg6hxXpHcw6845sCvkne2qdmCnyLjnQ8+cD5F3PmXK+ldBRqUgVpVgj80B6RpgLYyTVzKWQ2LZeyTonLoAAFKaCAhpAA8i0IyGlBR+R6IFJ0wMRh1FmHEJsDoDg1RmA6SYqIkqnBGAkFGxNnHONOOsE
Y+UVTPQeCcS4PBNzxTqt/RqWdzIbm/giXUz80RHTxFNDk6AyRDSpMOOkDIEyTXZD0WaPI+SM0FCKMUJ01rnQ2odBUCAdpFV4JtDpzTyjrXBn4a6pp3iWmtE9e02S3oei9L6f0P0EEizBJGC2wMICgwAOJDMTKM4WMNuoIEvOadYTZcwxUuDjTgMJ4n8xKEWDGeMCa8A+G2HgziIn6K7D2Y5VtqbDjphORm04DmQDZkuX5YwuYPGbBudseUDyRiFv
9ZZJRzw4glv8u8td0BYPfE3BSvC3JTSIZ3EhPc+4UMYfPfAuBMBGy9grIyStWFLzdr3SB89fYwEdsgxgMioLEFfBwDeusNLCChJ/W2i96AEAnpy9QCtNCRmtFiPO4cuS9GUDy3WTQiwwGNu1VAJsvaG04KgXA4c87BH+v3SeagHbVhaAAWSaBamQw9l7oiJNEQhHBFQK2iIyU0hBGBSuYLPOQkg2BQVIbai2AByXujhmBYl7kIVgRqmgACEKjh0j
cwaN2Ru5LgtYEC16l9BLnMNyi1srRS4E0DawIqhzUFQQBvANV8OAimUCIQNhtyLqQqMfdqmymRwBLVBTIzB+29zGKgNgQpu7hAVpGdE1ho7Gt7qajg6rS1zz/BkXukZF0iAtXAZwYQeDz1bSK0lBt0QhDDku1AGb1VNAANJ5qnsEIsvrUBYhGL3awYc1AgeVUQWARteHevLdgXwT6bYbt6Maw2FQRjEJXQnUICtX2Wo4P3BQ5EABafzRT9tQLrVA
NGm6KsVhUTZqA4CYjMBjED/0EBvkI0nU9lrHBCiFEwCepHqO0ZVnGnjCsM3hAtSvVuUEcQ8rg8vU9FQEAKeYM66wvqbacrpNHDljUNVEmXghjNvRkNRFQ2pzDhtxMWqM+XRDlnt3zxU2B92y155MlQ75hA4SLUslQISXAYdaS0vxkwI2fJlBtw5bw8DQQhSkoAApyVYE2hWVRhVHoQMgXWAAedY+grZEjQxuqLxc2AxvlLgSdoGE4uei5GNQVgiD
MGrZwIrYwSuOyXJawkyYrVVdpZ+CN9XC0xtJbrauFB0Gy3lvilWhLUDEsJA+8lJtyGWynoEWl9LVGoGZfPRegR2Uwa5WKHlZBQ3l2vo7YVoqODiuGVKhewdZXBAYQq4zyqOCqvVXVrVOqOB6qYAazORqTXMkXYbS1maOrxoVi8dQqAnWuvdVEe2XrIHkDi7rLtQbAjJju+GgtRbu4myk0mx26s01vsR6gHNeaJtRtq1OstgbK3VvcFK3A9baVZdv
SWe1FtO33Z7ZCSj1hFbDtHcocdrpOczrnRZRdy7FVhAq1EKLJ6d3Mj3Uag9YojaEGPWhs9Nt6tXoQDeltJZnuPt6GFjXjOP3fupX+pgAGgMgeC+Bi1kHbSXZU01iz0WUNrvQ3Zru9G8Da/w8j4jZGBwUfLWJmjEnjPkUY8x1j6t/xyZNNxu1fG6eCeEww0T9ms9U97lJxnsmEcaa1oBhAym8eqfQ63+L2nZ5xb07wgzppsMefD0hjVELLcYcz03U
I2HzOT5NeELvnn7Wm8CP5/2wheiBca6F8LBBN3RaiKQOLxbOVJfwClju6XSfC5yxQLI5v8tFb64PdduuxDVdq1yBrwWS+rmrWf4ucnWSkPWfW7Mg2GWI2P+Y2UEbOU2UAM2XAd8WQD86EPA2Sr878hE3A38ZE4CACCA9EgoICNa+AxBnIUCToMCvEJo8C8MiC90yC/gEkOKmCS2uIBKU0a2JKHcceFKO2fse2QQdKDK+kx2LKH2bKwKl2gQtat2/
KFcgqT2pKr2kqPKshX28qvC9G/2gORqwOCA2qVGYO+qhqygbmpqcOcmiONqjeqOjqLqbqS42OjUYccGvqhOgaygwapOYaymFOMa9eyOtOKaDO76Waua+ak2RaRmB65a8iBgvOtaAuvEQuzaphou7aEu3avaMug68uucY6E6KuykauC6r6Wu0elWW6MOHARu1hJufseWJ6Zq56Nu16IunATuykLuL6y60R1hX6P6Cs3u+OCsfuQWnmEGooIenKYeQ
Bke1m0eX4se5K5cuGbuBGRGpG5GvgGetedGOeeeLGbAbGReBGXGyOlu/GhAleC0isJGc+2e1OdqMmHGYQCm7enepmYGPemm/euml2I+w29G4+KxVm0+tmbxjmi+zWNsK+4+agG+fsW+u+nsWJ++wWh+xcx+UWemsW8Wl21+t+us9+mWNqT+L+GQBWHAxWpWn+AxJ+v+2Q/+sxE+wBe6oBHWXWHchWvWpW0BIWsBma8BoQiBIRKBHcs2qIKRiiOk3
AqihkJoJkqS7wVkuiBQDkkABiEAOEQEzqpAOEmy+gmgNi8sdiUkQUDYlwZUYSwIiM0w9wHYToSUKUpU2B0UvWEUyw8Q5wdyzwUSaAdQzYZUdQlUkw24UKHwq4qIKSZk3A/wcQywO4iwkwcUDw7yCp7UWSvSmofUBSEARSg0goo05SEMxZ1S3I809S/oy0/S0orScouSXSe0PS7SmozZeorZhoEqIyyYYyIkEysAz00yE6syn0Cy+Ev0zBqK+pQMM
YYwbQA5E0UM+yLMhykK8w4Z0UDo38DyJYDYawVym8dY6EgI6wUZDwKU7pKy3yFMvyksaiJQI4E09M7KzMc4C4EK8MUKa4DwywhwLiTiapyKLBaKYsGKV4WK0snBeK2aBKKcocm2YRIh1KKc/KnASqkI3J0WFAjU5avQs8U4ushadS5hpKXaYQ800+myFQOEjstCY8F2jWqg/KiqpWiqIci6z+qALQBASmusmgv41KZsvJ5W3FMGF+xFXJMmY+c5z
OjADC2aHSpAPsTm2uVF9GVap6yhlYbuUil8qhXJJ2rK52wK2g1FHA2aGmakie56QEC6AAZKgEBDep+tMMmqxS7BdngIbLOnAHAESFBDGQ6AANQsVrzMC6xxqsD6A+DKbuCyZCoCUmUmgCr+5eHm4+CPGECyb6VZCZBsmNa6ySVqCiRGqXFMCNRhYgaxrGZmWvqRity4ZhzIKprPbfgZCmyRjlbbzJyCKnZsLLxLG0J8jT6NbkS4hPgwZwDmAxxzY
LZ1xLbIUraoWZjoVxqYVTzYV4ZZXKrWHQmTzEUKykXWDZAUVbW2W+Erz0WoaMXMWjz+XyEcV3Yro8UpI2zCqCXCUd6iXiVTyVV45fWyVtzyWNaKWQnKXg5qUaVaUro6UkXGbFW8p3YsDGW4bSJmWNYWWyFWVTg2Wkr2V4CKXCA2wuWoDuWeWoDeW+V0IBWy7BWhVMSoARWHDRUWyxXxUUqJXJVHxyrJp/WZX3bog5VWpJVEAihFUMGXVVblUcCg3
VXWG1WkD1WejuqL4PatX4yKFhCdX049UGAKwESEY2xDUCJ7w7qE3jWwaTXkCoYzVzULVLW3wIT3zKnmiJDTA3CHCZRbAbBzBenoFvz4T4FoCEF9DUG0SkFAL3JMCgJUFUQQK0Fgj0FwJLKgoQCiTsFoKIXrUoV1LEA7XCH9yiEKwHVw54UnVIlnXCZGylXkXKS3WoG0WO0MVMUsVM3vXBacUXWNTfUQi/UCVCX4AiUcBiXuxm2cBVV6ZD0Q2KrW7
BYw3GadZ9Xw1QTqWaiaWzzaWBqo1m0MEY0PLY2lymUPb40yFnYMzE22Vk2OV4bOVuUeVeU+U91sXyGBXhzzhs3hUOhc0xVcJxVZD815XhqpUi0ZU42X0S1ckC0y2FVkLy3N0/5K0q3II1VFia2NU62fh63tWG3+zG2kq9Vm0DWW12rW1xa2231hwTWPUDphyzXzWQKLXYDLUKnqRKnKKSFvmQBlwanJnmjanFB2S6n6LwwQCfpCieSaBuT6BuS3A
IaSAwA4T0hugACqRkhwygVp3QEggQ2AuuHUgowMzg8Ssw2gcUMZIwjYsZYUnyYIREe4lka4LYLYzYyMTi9wkSu07wO42g4ZAIIwTYUZMwvW2MDUmi3AZweZZjaA2SPUeSVSEgJICAfwKUYMpSY0FSNZM0dZdSAojZTSq0Ay/Z3ZSooZXZsMuSvZZ0so65xoeyFk4yj045Uyr0U5H0aA8y30c52d25S5ayMYPA2y65uyw5aAepnQ1paAIwTwEjsMR
y8M2BKwcUZwfw55BByw55TyV5twHwa4TY386s5MbcL58F75gKd9TMfTTwhQjzczhj6AMscIjk0j4quIMAkgGkT4uIEAjzNkTwX0rMf5HMgF3MHwfwtwEFP5os4scFN4CAOpxQeppQXzbAPzfzALBj/k7zDi+wYwcQ7Ycw7yQIrYrpWZvi7wbY2g24njJUpwwIlU/j3SwICQlwVwa4u4KUm4d0JQSZzUvAGS+ZnUhZvU+SpImT4w4wFZZS40LIBTb
zNS9ZJTS0ZTOoLSTTVTnSNTwZOSfS5TLZurYIV0m5bTo5HTrjL0ToMyvT3oYLJQAYgzC5Odqy0YEguAPAa5l0EMlrUFAgqzcTKwdwKUQIOzZYKM+zl5E5wIKMcUZMPymKKLAKn5QKU4CL4L7MkK0K4SML9jD5aKSK2b0FSLVMab2KUkEgWkxAvILIuAK1nBdbDbi4DSXtfD2BYdeBn8BBvkMdqd5QYgJVxIjEydsdEABExAxASI0CSEDB/E0jsj8
jijyj8Qqj6jmjOjejgoed4kBdNb6ArboGTb3DCi2kfDqpiK6psTojOi4jeiKy0jLQJGJGQE2ALQOAOEQoygWIzgio5EhwT4yg0wbA2a+L5Qxjpjc7RLCzzYlkAI24TYnw4SiMtL+0/wSQcwa4O4dU7Y247LnZe4dQwTJUEbkwETEUmwiZd7qA8TTomSErerKrpZsr2TCreT1Z0rhTc0xTCdL8TZJrfZZr3U7ZBrkrWownjTF05rg5lrgrkAD0Non
TFkdrYIDrcyzrL8iy7rwzpQy53rvrEz/rG5rTsz0A8zCMSz6oIbUdqwEbMKUb9HlHsbUWMIHwIFMZinpQT5lzqbUsNzGbdzcyjzsz+p0jOEBgYwcA0wiobo1IpEVnP8/QwLoLv5ubAF+buY24ZL8LW5Z4MFVzKLaLTzz75QUX+gMXcXCXvkyXhLYIjiq4AShw0ZvWlU1H0wGHor1jMwWwJH+HgZPnBUHLASvMPLO4e4awpMMTmp+0YriTqAyTuSr
HGTWT8ruTVZE0rHXIfHC0DSQn2rFTonAg4nAT+0knDTgyzTQ5t07TKntrk5ro05fT2nwounZbIzXrIMvrfrcnZn0zKKOdcMdLpwGwgIe4zndU0TwClYuMcbaAkTBwYFPiXyFzHMr56bY4mb9zQP+n4KkL2XRwEwCw+XePhXFbfyVbCFR7EAJ7jbzbtP9P7bYdmBT8PbEdfbUdA7v8Q7EgI7lm5BSdlBk707s7w0GdC7WdL7b7H7X72AP7f7AHQHI
HYHEHlobBB7q1x7mYbbZ7jHPDl7ukjKapCAwjIr2i1kj7kj5XEg+AFAzAygFQRk0w+gygAcNQsw0wWINUbon6ioiof3SXrzEA0HTH5j7wXv1jft9w2BSwlwW4MPuwMIJUSQfL7yCwvpqPYII3xHQTITFHVHUTtHc39H2S4fSTknq37HG3I0ir+TPHqrRT+3pTK0R3prsnYnHSHZaoerV3lT/3LTgPPnynkyanT384L3Trs5QYengMozRnioOykM5
njzlnrzizHQyzO5AFJLdw8SlyTox51yiPkbR/cPNYCPFkYTO4LYqHybz5AXAjEAH52PIXeQYXzzmL5QMAQoFQpAmAF1CRkS4vMCWoENLh0De4E882QFcJO2CCSGtBYn3CAOimK5hBSuGLA0r/3/6ADnUwAuriHwa6DBI+FUJIO8g3CukveifYtolBhBLBtAlHPcBn1Q5QoiO3ATluN16yTd+WM3MEMK3MitQSgFfJblX0b5sd1uOTOvlx225iDdu
tSFvpqzb6nRruerHvhdz77ScVBg/W7iOXuhjlHu3TZ7o636ZYQPuBXfRIZx+41Bl+gbRcmiDs6oBpg8SYEBMFYHn9iwJ/ejusGz6J0PBF5dzj7UWDkC1wPg/Un5wx7XMaQtzb8uYJzb/kVwsA24O2HeSIDS2sQ8trBUraBdOgLbXXqe0Z4YJme+vLCJ2ywI4EkIvbL+Dzwoh890AAvJgELyYgi9ahU7EgOLy4hS9GCf0FAQ7yd4u83eHvL3j71mB
+8A+QfJTpr1QTa86eeQhnue00hG8VSJvG9mbzo6W8MBUjcoJgADg8AnwcAIyCjCfA4R8AmcQ4J+kmB251gRkdYJByMYaYYOEvYgSFDbDaJNm/we8ojEOBzBuuq4dYAkGbBAgXB9jJxIa1z6BNSOBfMJpR33LF9ZuIjMvgkwLIscxBa3OVpILBCVklWlSaaE3z24NlFB/fE7ka22gScNB7fETp30gAWtWmI/fQROUMGT9jBb3V1rP2QGet1kPrfAa
ZymZegLOtiBZjZ3TAODxgG4dZhcCh4rA3Ozyfcg6ChFnNwhaA5/q/2IBflgUH/DoGVw1Hf8JAKUbNIcADg4QAAVoCw+agCbSqXDUSC0gEZd4h5ofNuMC3BFsyeQbFAUVyf4bDbe6AXUfqKNEmi7w9XexI132D3BtA1LAOs6TqC8tcwPwrMicABHtg5W9jOqGwLQAcDuWXAvltNx878CYQC3JEXUw6TV8JBnHLbsq1kFqt+OB3LVsoIH5d8SR53Wp
nWOOiaDaxVI+TjSPu5j9AQE/d6Fpxn7zk2RlgjZDwDaT/ceRyAkHvaC3B7htwggyAMfxogxQEUsPPwQcwbAEdooiMUIb53R6KiseKonHiCnx4QsYB0LR0XCxvaQU7BqAp/tUPKBFCCh942YSz09oYFvaGEDnh/CqHVsahbEYdozAaHjtmhf4iQGL1g6S8eI0vLYTsL2EHDdhxw04ecMuHXC92kwjgkz2fHFChBhvJRMb30im9zeWiMRmAG36YCX2
boGoPoBMYtAsQhiKoJoADgwBUsswNgAHEOCGIKAo44Pv5DD7isI+5of4McEjFOM7g3gg4AcG66ockgSMG4O2D3AuJQRNTEjmR1CbhMYRNHOESKwY5tRFuy3QsSiJr7oj3y9fbjmk1xHyD8RWEQ7jWKJEpM1BjY07sa3JEycuJbY4ZAp07GqduxDI3sTOQGasj0hX3DkSOPGGh8A2q/LUfyOs5b9bOebOKCR0yjbiFx3AR0VKPQj2NEpoFLYA/387
ItshL/aIWqIeYajwu2o2iEBC0ZCBJAQECgPo1NHr8wBUkCAcUCgEnisuiQ3mDcGXElsjwyAm8XlNRbW90Wmwu3hVKqk1S6p/owgYGKeHX8nBDLQEM2FXBbNby3XQMnECWlRkkh8k+JCmNQBpi5JvLKbgKxL7wi5xGyPiZX2RFmTxBaIksViJ24ViFBVk6sTq0pHEjqmDYw1ik0JHvTqRw/TyQYPtY9M+x/kgcYFIM4L8fujwtyeOIhmTjOYftElu
cD8buCMY3AVcNkgXFri7RfwSMRVDbA5SIh1PILm/xiHk8nQ0A9qdzE6ngVLxfUt0QNLvG1tMJj4lmfW3yGs93x3bV8eHS/H9sfxk7eoWO3cETsWhYEmGRAEzpdDyJlE6ibRPomMTmJrE9iZxNQkoJ0JhQ1mfMN4Z4Tn+QjNYcRNIkjT0AmAMYEYA/aGjqwTQCoPoE2TjMjAn6KoLcCxBChUstw9ALxLMZ2kFmAST4NgUjHeDTmKwKMj8LOAMszgc
UI4JjL+A0CIAYIwmBCPI5Qii+GkvgXR20lCDLpIg66TiNukcdNuD08sc30skutrJb01yR9P1ZfTLuLYokf9Lu7WsHu9I4GUYNBmmC3Wg4qGcOKFA2CIp0sKzpvyGk793gKMG8luMyjOckOaU0eRuCjKtcEyaPFNkzNpjBdyZ+QEqV/wNKbIOAZiHgJgGzRughg9UqKSlyBaWj0ulMtqQkLPGws45SAiGf1KyGDSSJT7T5uUB3l7yD5R8j2WfJ9mo
Atg0khefYyzLeCnB3U2gYj1T43k/gmwU5rKLjkJz9pY3dMUdJ4HZi6O504QXpKLIGTixhchvjdLkHqsBOwocucd3el2TSRBYnsnXL+ntiAZTcrsepxKCac/JHcgKRTJWRDifWqoSZiv0B4uiEZNwGqAm0I5oyTyYZbwTPMJhXAqBfLImXuNXlkyipXCkoFTJvkPAHRd850deMZnPzmZOvDmXMMug1wMJxil8SULfFdtyhuETnt+Jp6/j/4/PACSL
JXFiyQJ6ACWR0Mgkyyth5sy2dbNtn2zNkjs52fEFdnuyNeGsw9lrIsVYT4QOE98de3US3tS+6w4eWRPKBYhPI1YZ1GuCrRuQYybAQ0UKCaBAQgIhozQAAH04Av8r2eBNmk7gYklHBYC4lOBZlUykkxYDYyLbxkKBw3JSfn2TlqTImacoVhnPL7ZycFUrG6aiILlSDSx2IkssQsrGt9fplcqhTXLJE2T6F7kjsUwq8ksLIAbC17v2KGbz9vuw4yQC
ZzHECLeRa/KKUPNflCjfkwkiqIGXODOdXSR5C/v4OeQTA1gt5ZxPKN3G3jlFB49/sVI6ClSDSU9IUFo3IjTAzEVAE+QGKakXzrRV8zLporgGXAupuinOk/Kp7oDMlJsiAPCsRXIrUVU0xqaQuBhQomwZULGKch4Deddw38IiIGVI6rAjmPyk6U6CQUHSJumYgVenNL5YLploguZYZPumEK85qy56WXNekULNlZ3bpN9PqZ0LK5Dc3QSUFH5HKexU
/EwS6zMFqKgpYzSQKFIqS2DgeDguYM6T9qH8Vx6MtAE4J87Yyr+PjHlksDjnnNl5BiiFaqKzYQyNFdojqfirpmpKrxRK/RSSuf4yx2ZevNmUYuTVcybFn4yOsRGqFCzXFjQjxc4q8VtDGlkAaWUu2yW5L8lYwQpcUtKXlLKlNSupdEvzrTCHxOsxYSomWGpLVh6So2W/Ii7lAEA1S6pUBFxC4Bql+gGoFmTqCKhpgqWCgEICMiGigIUS2lVB3uHh
9/5IChlojDzDhlGWMUQ1kREo7HBKOoCh0J8HuBRqSgSC5SZCNGXUck+kAHMWGSmW6TpVec+ZbXwxEmSZBRCp6aXME4qqO+aq7vtQqbFSdnJWgkoLqvNCAyW5GnEGewtNWdyIZ7IsZoQD7mA8+Rg8wUSs1+QPBwy4ZeYB6r+UpSA6Mi0VuMFXARQfO/qx/ivIxGFSQ13oT/hqIHUSAsQhwRUMoEd5CBrBaK6aRiq36Xy4hhPRIYWwvHRqGZlPV8h6
PfmcbuNvGvtAJrXWcgZpkARxF7xsbAgA6WwUCpuFzIekMZMwNPueq+GulWWe04VRmOOm8CJlEqvMcxxoWzLP1sqghaZIVUAaNWL0pQRXLbJgbtlLmyDbsp1UMLG5egm1ghtYVIazlYMi5RYO7k+tDRWGo8bFPhifCrGUKZxr4NdUc0velG8YNgTbBAg6NCo8FUxrXmqKXRYazmBJvPH3y0h5q10bJsiFnyk1nM0xfNlyHxKO21isoZmq57ZrBZLQ
4WfmuAmFrWhM7EtVLM6HlqJAQ6kdWOonVTqnEs6+dYuuXWrrWCMS1tdrIN4XtcJSw/CSsMIlakH2Ly4aZ6IwC4hFQOEGAM6nDqSBNANQMxHACgDhkjAmgIwDSoHkh8GlkshlWSwSDxJAVCfUCr1kkmBkGWRwORdCO5YQL45QypOapOhFjKn14IUvpnPhBSrc5JZL9UZJpC/qyx/6kuT5uVV+bVVAW+sRqtrlQbWxYU/ZYwsi3Nyumrcxke3JQ2cK
XR6GozoaOtXhTsNjy3DTFNeXwwIoZwOYHVFI1+D2B4ZSjXVF5UXBxFj5MFYxtJmQr15bGrUQaU/TMAA4FAbNKB17mCa6V58kTVirE2nitFtMxHQ/Oa3Eq5NZK67XroN1G7pgJutTW8w00QBgY2BQENhy+GMsL1oc4zamKZVwK4dUZBHdZpQWHTuBWY06SK0lXvq8dMrfBYsqLmk68R5OoDZTpA3U7PptOnZf5pu4eTDlQMxDW3OQ06dUNzW3nT92
PD8LbV+nBGRMAFYHk2VznK4Ia09UBCAFISQzV8qXkMbA1lWlRSxpq3Xzw1NMyNXbqa0ujHdbWxNams63mszFcStNbzLZ77RbFfMrNdHV56eKpZeaoCSxHFnFrJZZapgoOtu33bHteEZ7a9ve2fbvtv2/VWhNiVPjet7ao7Z2pO3dqzt97K3pds1Ecb0A1SpoCRi0ZAQ2AmyasBpFIA8AKg9AHgORCgDVKzELiSuafIB38SEYDAsKMCGWDNgnBFwf
4N1xnELSYoWZUrfFD2l3qRlaOx9UnvMjY6Lpqe4LUWLukea/1XmsnaQsaT56KRoGmnZ2U1VOTQtQyIfhFv1V0i2dVejnTXve516edPCngPgFS3cAcNG/PDSPJ9pLAwom4mXXlrqi96/lOMiyEcDCR/AmwiiirRruDW48N5MKredI1IC4hFq8wIUGYhAENTzR5u8RqJvUXT66tt8p0fTMflxqndoBrJUY08OEBvDvhggWbq3VxB/aooxGCSw8Scq6
WpUeKK6TCYTdv4SCmKKGO5abBeVbSkEKwdzGIjnNEG7gwsp/XSCSd/BnPYIfIUF7JO9kiQ7Qvp31zwteqpTvIfH4+TjVzIs1WoaS0jAtD8MhwdcAiifAb+znMBZRo+BQpFgeYMrWrrH2OHDxyA2rVCy0WSbGtvUqI61pJk5Dae49JTCmogC3GO8fW5CNzL32VCBZji3NaO3G3n7j93i+dr4vm0QGoDMBuAwgaQMoG0DGBrAyOPVktrOCjxvYL/uS
VdqepPa+ERktiPkrZgTQDSIrjcguUmg2AapalmqUVATEWjeIIYl3D1KN1fErddSysh/A8wrXL4S2G66ZREg5wZpe8hcTcqk2gq5HSpML7qSMdL6hEYx1x1cG8FPBzPfKpWXebOjwGkQ4XurnF7gtGy6QzoLg0V7otJy2LdP3i1z9EtVy3AGEwF0A8HlkUkXcPODaQpfgywFlt8pJaUbsCrXEOs6XsPq6ohVWljS4au067pGMANgCME2TTBPIGkTD
aboCPNSwArUnFTPphRhIVgXXSIw7uiPUx5N4BiAMGdDPhnIzv8ogZppTLcqyoMUFGOtNbBbAMdREDYKRwuA8nnEJWm4CUZqZlHoo7YSo0WzmA1HNJAgpzciA/X473NcpzzQqYENVjhDLk1U70bp1SGy9BylncwqNVMjzlxp7hTMcJ2M64ZzWtvV4luA3k1wU8+XRIsv796SWWZTYwki9N7GfTE+3HlPoTNhGkzkYlM4Sv05L6rj7W9AIifuO/n01
A23me8e54jbj9Y2s/WAgv3Tar9c2m/RIBxN4nNkBJsYESZJNkmKTVJmk82q14ImAaSJg7QsL/38MCJhsi7cbOu11AA4mgGADUBaAVB62RgIQHUGZQ4RUsdwapZshuEpH11JjTdXBwwhXBQxbJtk3uQqjdc1wAScgzeV3Cc0Y2gphsYwdR2pyxTky+o4ObT3pMhQXw7AA6DlVjnayHRyc5qZ6PgbHJ/R+c6ZxkPDHc6ox7yezt8lxaOF4M+vTwrWB
zHUAOh9KXobtNZc8wFA/rt3tOCUbLNWZP2n6vK3emCpvp5w9ruu2pY6gRgfALMCECpYhAfh0+TLFjPxnbRz5uAVcCjKpDzj6Zy46SqxNxWErSVlK2le4vqbbS/FjKKeuaUVQ91QIGswQXGAMtwk0lxlQ6Dks582zXwDs8BSqM9nF54qs6QOaunSm5lWl6YDpbjC8G2j45wy+su1UznTLVc4y5Ze1NWslzhq8Y6uaNNdzTTiMdy0IocHYEqzYktGK
eZojrT1jC8qo/YxvPxr9xThtLdipyvHG8reHQqzGo/MZmvzK+h43hb/Og2AL7PIC/Yo+OkRB2YF0/aLIm3sR/jdBWC90MovUXaL9FuAIxeYvkRWL7Fzi3CZws3HwbBF3Wcdv1kaJe1ZF/tWVLp64BNkGkN0E+HqBEgtGmgTAHAEwCeRqlQoFoBUtpO8X6T/Fr0tY1a69YDg/wG/ieZcbsDvBSQIrTMEygbgJg2429cMqUuinajr6tS1NcaMojZr8
1vS3weWsWTc9ZC5U9OZMtBaINW17QeXr2uV6Yt1exy1zucvTGTrswW5TBsF1Wm/tXl0XfhvhgzBQ7eHEw5IrU4STbrlhhPojAFbhXdjr1oNQcehUBnrt5ESdRoygBuRDE6V9FRaIt0tSbR4m9cLVBjLZS0zi+wG6VfIsKb0AmdmoNndzuFmfdDKo4KS284ksi2eYArWHv2kRlLzbKpwXFCIPq2Br5Rzs1727MkHkkmCyaznOmufqjbulxa8soMvm
2lTU56DWZaL3iG5zpe7a47bkNRaFDLtpQ27dr3c67BDejZIjAtM7nzrkKQ8wHRvLthu9qMl1fD371woljXekfblNvNRX7zH1q3dTOAoLzQK38e3dXZKsJrcLE9J44BG62k3EH+FqxS8YzVQ3+ZIFz46NoRvuKkb5QFGxBNgR+La2jN5m6zbqDs3Ob3N3m/zcFvYWphCDu48iavaonBG1NjE32pt712IABscUFUCfBVBcQI4uAGYhGDKBqwpAZwGY
nIj0AtGQth4fgbj7uNR7MZC5OVG67LA/h6zeJK6QOBrh7NIZBS5rZFPo6dbEpnSfmINtzK1bYwbAMkDXuPSJzq1gY5QvVX72S9VOhc8zpPus6xj9liY2ueOsci4o7lzyymW8v2DfkiMW4FmRKg5b5xZG1MTeXWP2NryqwbcfRsAfJ3x9mu1Rf6bAP8OhAn6UgKQFSyHy/R7G/w7VcLtBHLdIRp899e2kFX3zFPTIfGqzP02ynFTqp26BqfcSAj/8
hqycGWDRRoo8UD4Do43AMC/gBjq6xsb2ntmKj09n4LPascp7bHu91Jp+ocdOOTbS1jeyQqMtrWbb6pu2+c6PuLmAny5g65zqvse2b7rluoGdbsF7ndwVwf4A8G72AhKN4SEra1zCgvXMeKdqFc1qOP2i5J7Tqu3orgeGKQbaDsG8i4hu77BtDi2G0fsm3gXEbvxybSQ5KDX7uhgj6oCI7Ef1tJH0j2R/I8UfE2WHqDth+TY7XEXTtpFkA3XezMkY
WgHATABQFmD4B9An6JoG6GzRuRUsuIYlKaXIhPhlHfFoMQJJjKhiNjQcseaIsoNTc0oLiIEGsD665hEdGtlHRY5YN9m4mb6nZ1XNW4HPnHo502yc7WUEjrnwW2cz4+6M3P/HIx0+0E8UMOXDTTlhLRuZOt1AH79y7Q8Lt0NB39DAC0RU6rjnJT7Qk8mO1fxSgbgnETg4faroDX5P9jEL4p7CukZaMxgRkZQCRgUYJLhn9TwIyROCNgpQj316wyEm
ScoCF98LrpzEc5f03C3xb0t25ASV1PvddVhV9f3bCEHiNpycsylFTNy3CYHVgzTq+Hu5ggr8l7pKs6nsjXNnpr+bnrcXt2P9n4bQ5y4+LkrXHXHj0Q3vd74amnXvtpnbIc9eBO7LPrkJ0dbQ2uXJg7zu1XmzZUh7wkH9xHX3ueRunHr3gpt7k+Jn5TlR71w43W+y6gVG3HTxFm2+X2sOkHXW6Yf+e32vGMXMN6404vYi4vCH+L5G5fp8VkOgTEAb
l7y/5eCvhXor8V5K6JA4QZX9LzWeUHQ+qQklHDgA2iaAMWReH6d+m00CqAkYqgFQSiT8wqCHBWAn6OoJAdgBsA87NVz2XSe9n8XLGKMMqAHXDJLAqo4ZHcJJLZX/Cg6un8NsCAYPmOU52tzd9Y6zmcHd3w5jPS0aWWuPj3vm+2xBpdeXvT3Wp4+3e/ufBPDr/r9c45FcvTBIn4bwO7adifww4kgIeO0lNScc1tmSb887uE+B5giDoLtrRB9TusbN
5tTg0s6lxCpYNGz2oyPnaE0NPq3TT2ty0/tGnH4PAsGuy/I7cFeivJXzQGV8U9/zVP7yAJBMFh2S3NmUzySYAs8ZzyAQJnpt6UcGtrP13vZ8a8noXszK9n9n2U456z3tHN7Zzrzxc+8eeeLLDt2575/2v+fHnKh6+x61cs+3YZob+Y78hvLJmvevy2XVIqne5bv7AK0BUVpcGZevz2XiF4+a+t1eGtDXjIUoscWseyb6+lBxgjY8utShkNjB8BeG
14P4b3xiCynT+PEeATpHuC+gEE/CfRP+gcT5J8IDSfZPwZhT0gl23If0H2Ew7Sia49cO0lPD2m3w+zOkBQzuALEM6niA1ByIbkZgB5CMhGQXgmAZ1Klk90B2eLKjrdccC95QP4y5wajs9f7urBSOWMTMojDAVJf+rZjo1xZ8sdWf2D2Coc+nrW/GTWj693jlt/ccHf3PG1n6Ve7clWWdTTtvU86ANMmqnnAb4LzMc/RhfrTEbyLwjLZXIwZxkPW6
xjJijrGg6ifTYDk4itAP/vWuvL4GfKCeR9AboQgCMDMS4BrE0Zyt1lZLvW6C2IPuF7Grgc9ODSmf7P7n/z+t3B3s0h0mG1jnq+FgjLRHURE3EMC5gWvrYPuZWcze13M9+bw5omvbvlvTR79Zb6c9HvbfJ7+37s489XOdv7r29zZa9cPvz7vr73+d+eeXeZjyR7kbd93P2rMnftJwXG4S8AhzDq4q/sY6WB1RE/SdsFwU8g+hroP9WnRRX4BsIufx
kPqi6oetPs8Y76H4tg4H6Oavg7o+eLpBZY+0FiR6LsePqHxc+PPnz4C+QvvEAi+YvhL5S+H+jT6MuKHux4M+nHlTYs+FvHx5gG9NkBAcAIwIYhGAJGOsCGITQPEAUA6wCRjVgioPgAcAhopMCkAXItL53Cwtip5DuRbFq5bSRRq6SAikklhzq+mMkjBfC4yqY7dIilsa6wiC3mwbmuDRrs7T+W5piLym9rkqp56bnsv6O+Wqmv6HeHrpv73uxyp7
6u2fru7a++Fqt6wjAnkIH6CB0UiH4XWs4srq+k3yiC7JezyDlwfAfLKCpZub/jm6p+rhvl7SMqWG5AwATQDhCYARgHwpf8GVuAKYqxdp9al2JxuX7SaFxoh4lczuvw5xBCQUkEpBjfvSopklULEiiigIJGKAg0UJJIXAvSuGSnICgdFAY603pPbDWo/mNbj+i3pP5m+6TCObreBgTb6nOdvofbOuZgZIbTB17q767Wdzid6PuAXo4FBezgSDAjAF
QO+6t6F1iSyOm1hs955azLJRqnAjKjhw7G4QVl7MaD5nYJQu3/hEb5BxVoUH5SwNnD5UiG+oAFMuGDmAE8ySPtDa4OWLrh7/iMAQR5wBBLtj6o2gJsgE0BdAQwFMBLAWwEcBXATwF8BAgfgHwmhAXT6JKJAXrIkWNNhy502BpKljog1SswBaMeAAgDOoPADhDKAXAZICpYqWNMDfocriLZDu8SMcBLGgIt4I1QKchq7WMgIIHThs/upcCtm+vsKa
G+JrhoFmuQwRpaFIowbP4beZtpMGL+8waYG22uziYGM6iwbSJb+tgacoOBPvhsGQyJ1iG6WsUTgKKRuPlu8DchigZDpR+YZEsCFaBwS2CgUIHkn7Zud5oU5+msVvw47CbkBpDTAhooaJuBhfgO6VeVolkFgOuKtopPBPUv9adOiotX7SMAYUGEhhYYV7rdeHIXmCxIt5NFA5GsKJQYdWZwMKG3+24GKF7Sq4DpoJim4LuBZihrOKbbO2gZa4ymzR
kqHjB5kqqGuezvlXIr+Wob2GwaSwcd7O2+pvYF7+LIgf76ct9rgCzAuwelrvAyMKuDYEldl/aeCkYvF73+/em8iRQibpm6j6XocA4+hdwTnQPB4RlJoJhMmq8HwOtPOpgv4JoJobIO0wneF/gD4aAGYeEAUNqH6IIS4pghvggWpEeCATj5IB3QqSEYGFIVSE0hdIQyFMhLITsHMOLHhIAvhfEI+HMuRFikrce7LimHlAxABwF+8GkAK7zghiLiBV
AnkBQCeQkgMoBPgzqNgBshIgbNK3I6Rl8Kss3iJ0HiW+fCSwRMzESJZmeBvg+rqBAwZoFyhS9vjor2C1ra7HOEwQ649hFgQ76ahm1oOFDGbvssGjhdgRfZGh+/k4GmhHInmDuBFbp4GgGNoS1AS2hju/aOhanKuHveZ5gCosslApsBXBB4REHehH/rl7RB6fhIA1AO8vQDOodQFow4h+kWfLF+2QaX5tOyYr/5Jh7osUHZmnkRwDeRvkTiH9u2YQ
xFS20ks1x7kyvuJaIwZUJxH7qiwDxHLunZNWFJCwIHWHoKjYfPbCRdnqSBiRRztb5dh0kRTrahWypc4DhskS747WeoTYErmZ3pOFaRM4S4jzhYunSyBk5yFsBNu8buPybhjyFfyocqMGPK/e4HrcGgOzTkD4dS+VmFHPBsDteGIuyEW+FPhnBLtFBA74Vg4AhODij7AhXxoLwY+ovFCGkOIEdIy4R1YPhGERcAMRGkR5EZRHURtEQhFf6SEYzAoR
ciBx74hbLoSHYREgBwBWq8QIaIcAn6CRj+EkwFUAtACAFuA4Q+opIBzhXXngajOtyL0reCCwHyFsqNLP3YTOafJlBtgHyJcDxOvEZKH8RSgZjrwiJvlKZVR6TNa61Rzngv4yRS/n2GzB5luqE6hHUfBpn2Y4epEThUxi85JaLiOaH9y+kc8rb8RkQjBtKthj+7mR15Hf7TR55jYa6OKuo5CehTkUeEuRebm4ZbCnkNMBPg2ADUBXA5XmbpBRMYYm
Y/WsLptGtuyYVFH02PNqbHmxlsV15FmvujcguIhngk5AgWzAKbTuACi0GUcZMc1bZkVMQVHR+NYSVFIyDYVs5LewwYUisxh7tnocxjUb2HNRe3qv5cxQ4Z1F+eqwT1Fixh/qabLAg0cHYEEdwHYypuznBDzjRFhg/4d23dpGILRSoktFQetXmtG/WoPoIxNeO0f9F7RwAbeFDxR0Wi7gBp0ZAGgWOLgQ7/hRDqBK3RRLmjbSMEMS0BQxMMXDHKAC
MUjEoxaMRjHU+WIRgiHRqEcQGEWjPmQHomFAWz78eBpDwBCALQORBCgHAKlifoZiIqDOA1YNmgUAYwMmDEA2aCRgF+WYVjGi2yMF8CRiUfLyaiiiwGtJRkGngNzzA03Bm43qQpverMGAkc+qqWkprZ46BKImnESRdUdACKm23lzE5xF7nnF8xBcYLHeuO/k+6BeYTjGCOmekWaJWhXgc/b9c4dvXG9YjcVuEAq7YACBIwEwO3FvWOXobExB5QAHC
eQJGPoBPgCAPEAYhHgYFGZBcZiX7gOcCmApNB4UQh7OxZVv6FSJMiXIkKJiUd7EMqE3kkDEGflncAPAuRqmKrAwTLGRRkiCZuDIJygYVF/CxUdNz1hArOVGOalUbgn2O+7ja5jB+llJFGBlttvYM6ZCeoL7elCUpHDh1gUXG0JawcaEMJ3rBM6VxUbqDr7kz/lwkpQlGq2CtcN5ORzCJ4LuTKA+OQeokzAmiY7GV+20QAF/R94ePEjxx8WPGnx8P
v1qI+7SfvpfhUAWj5XRsAZj6QhQEdCG4+3QvfGPxz8a/Hvxn8d/G/xzAP/GAJzHr9HoAJ8YDF4hlNgSGs+RIez702+gDhBGA0wNUrOohUM6hmIzgMQBbAbAVozMAfLuRB0RM2n7r3kafPE4RQZyPMBrSsYgs6iK2vl7wbRKCRKFoJyllY6MxOCa2EBJAIAe4EJ7Md2FZxbUdzHyRTvnClUJupkLFqRu/pMaqG4seXGhmzCf26yxC4Yq7WJ/wDcD1
xmUG94pOvCehAcqMZFLoOReTnrEp+RTn6HZmT4JshjA5ECMBBhrkgFGZWyidlYVJsOkdJ9xLWteFgx6AKynspnKdMA4GBdqo69YiQOtJ/AMZGcCAUa0tDqAu3ydWZ+0ikg2JFR8Ap4llRScX4lgpe7hClBJHYSEn1RYSUIZNRXjuQmtR+cXEmFxKwUkklxmKWXE6RIwFLGCKHzgsblQGwG2DlgKsRMDkpDAE3HnmDqtkbIwJSe/45e5SaX6Cpk3M
KmfmbwQdGtJ9xqskTx/wV0nI+34ZdGASAyTdHDJd0VBKgS+yYcnHJUAKcnnJlyesDXJtyUsnPh6aew7AxgBlhEuxBpDImTAQgBUAUALQIQBVAyMG6BwA+gORA1AUAHsJ1AbSSwlKewgQ8kpkuYV7zAUvybp7Vma0nuBxitwOciOJpnjHGJyNMegl0x4piCkWuKTLoFsx8/jCnGB2cXanRJFCb47r+1lgaqqRhoaLHup04Twq5guKU8oxOe5psCJs
+Md8qnI6xiVCUcKwGyphBjkTcHRWoXGn7XaUAKlhjAsBpIDHCVsTGZ8pqibGH1eWiY15V+HadIwIZSGWwAoZ06cYlt21QXEAks/pCsD9e6XmtKbg/wlulbAO6VN41MeqbWEJx3iUanYJp6StxthM/kTpW+0KQ1HXpcKVEkOSCkUilOp1Cdv7Cx6KaE4vuEsaF7N6rTE/YAUCvh4i/O5kRFBqxH3lSmx8CdpBn0p0GSA5dxq0eeFnGiYdokOGOHuU
CZpzSXZnNpGHidE5pgIedE4e+aW4rzxhHsQ5LxpaivHEOT4N2m9p/aYOnxAw6aOnjpk6aRn7sDLi0mNJpGYqQsuGEcz5XxREjfFUBBpG5A5+QEE+CaATQORDn4mWMwBGAnkFADjMJGKpqKJICUO6WMqUFuDvIDjim57kHJh1Y/KvITuDgZLZtTGAplnjKG62PGS2FnpKIjwBCg8QAgBfp6cZt5Xp4SbamBaLUZJmOpN7k+m2WBoV74YpF3h+kSx1
3tuan+loQZFyxUXoEzeCNGh0pcJysWuH/KhzJcCxeDQTGmRBTKXBn8OsgEBDTApAPoBGAVQGhlF+GGcFFqJxPFSzbiMDk7GRRuidmYvZb2R9lfZXseRnPC5wPYlHAKwFsD+yUchybzANjL8IAgnWeArBx/yd0h1QSQG6SVQjWQCA/K3GTY5DZfGXMqjZ42ZNlQpl6SJmzZN6fNm5xDqbEnLZykSOEe+r6RtlThlyjpHepy0fLHnI5wIeRcJZ5IEH
oQnQbYY8s92c5Fxp9wV/5l224IDnJpA8fUm4o6QKFT3GIEElRsAx0YBZTxPSTPF4ec8RSkARvmcWnLxMId0LZZIwLln5ZhWbxqEA9gKVnlZmyJVmNpiFFrn65LaRskgxWyWKkQA7kJQCbIioCMD6AFQJ5BVAVQMwDVKjQA6B1AhoipABRNWbNLS2ASFAmch8Yj5xEQtjMExjRcUCTD3Aoenr4qB5nrTEqWWOloHqWIkaSA05E2QfHBJdrqEmAaTO
WJm3pEmYilLZuoTJlrZ44bzl9Rn6S0A7ZNqtLEzp+KUNECSnZhFTHBkdlRl/u4ac8idBYTCsAXZOsa/4mZx4bBluR12rMBmImyJDBGQIwEvzhhSiUXYqJf2birBBeXDhlg+oOS17SM++YfkcAx+aflZhJiSmQnqJwCIqws7yGYZNueedWE1QaHKcj3AlmqXl45nZATlsq8KOApxkZOVZ7NhteczGFIDeXTnN5kkValt5NqczliG9qYtns5veSik0
JcmXQnrBqSSDCzALQILkTi3gQkjcJWmZdl0sziA9ZJO2WudKge4Pg9mT6iud3Fl2xPLfk1Jf/nUkQ+dcD7k65EhVmlvGbmXmnQB/SeCGDJgEe0LARpaegAh5FAGHkR5UeTHlx5Cea1zJ5XubTy652uX7n/6l8Tx6Ymj+eUCfo2AG6AjAFADACNorNrhGUQZAMwAaQQEPgCzGmMcp7zp5oFHw2MujssDOIcZG4IhxmzDurOIq4HcBtBTiOKHl5fEY
elV5DMTXn62/iZ+roFTeRakt52BRba4FHeSzkEF3eUQUCxJBbJlop5BSkmKZ5ce/l3KFoeF7RO1oUdmEwEUGeqIFzBQJKgUlGvHygUXdnLn6xoicyn02uAGVmKgWIEBBep32RGFVuUYZfm2xuVkkLzyGOsDm1JOidYXesYxRMVTFMOU37FmJyBumbAGUEuntKEuREWxi4SNEWXAZ6pcUJF0BXECwFFUPAWk5/QZgm+Jg2SgUZF+OlkUXpGcTNkFF
pCZ3l9GzYlJkc58Sc+nc562QpkuWEsVVnXuj9r6nP2zEam7axFKXlpUZumdZHoQgZBVBTcTBRvnXBf3p3Gf+/BTboVQZwCsUtuaxTZnfmmCFIUOZ4hXrkG5nSS/AVCshb0mzxf4ebkLxRalbn+ZNucux2FDhU4WaALhSRhuFLAJ4XeFRhRggmFvuWhEXxmydfHbJt8dIyYAThTSFYgkwDUCGihwM6gaQ6wPgAOgmyBPQ8AzqPcmA6wwJNxlQYTJV
BfCIIMyxHq0ftYz/pNwHuQeI49gClMGQKcb5pFO7l8X15Y2Y3m/F02YzkAlfMeJnAlIWqUU+eCSS6lkFySZpEmh/UUYlj5QukH4RehkS0XX82BCdnjA9cRZr5JYoUTC6+BJVBlElMGeqK75/DgaWGIj2i0CGITamkGypNsStEVJcYReHM+Vmbhmip+GfeJMB9ZY2WVB+BslD2MCQGsA8hB5Eu4hxJUK4h7kPMNDzhFUBXEwPFROc8X9K5OTZ68Z+
ktTlBlGBTkVYFRCW45qhD6TMEIp5gT3llF7vqik850JZ7Y6RYWpaZ0FvyE4KtgkYtk4FlkBWiV6Z7AisAAi2TAMWMpvBaeFK5uQT/7CFEUZFbA2cpZIVMl0hVh5AhHmfIUFpihUWkqFIyfdFbCGpTwBalOpXqUGlRpYcAmlWIGaUylssPSVnxFNuYVKl6WSqWZZy7J5CMAQgBQBCgFAIaKzAFANUq6iqWG2DYAmAJNLVZfhZaUnIDoAwKquZwJcC
J53Sn7KZQJPM4gB0e4cuX7pvWUb79Z1njjqgpw2buW052RYJlz+fxWGVdGKprt7FFF5TGVHecZS+lQlz7jCXlxeATd4NFGZU0VsJAFKhxzAAidf4veFkBsA8J6sQCqaekcjMCJ2hJYtGVladiU4spzAJ+jLAHAIYjXePKRkEX5/KSFG26auXhlg59Nk+BRVMVXFXDl/8pLalQ1iSEzjA3CUTEhxQ3DYyyV8KB3aKVriSuWE5cBSTkblSBcnHyhpZ
D8VTZKoYZVW2O9vCkLZJRaeULBV5SpGQlA+XeVYpOkakH1FqmYiVrM7of8BecpKWEyumEtlQKIJgFcSWQuoFXioVQ16l2VXh3BbZmMlphQyWa5cFc5mG5rmWdFyFfSShXeZEIcoUzaxLgxVMVLFWxUcVXFSMDZoPFRuz8VZFcdXyllFclmcOzbuQG0VQefEDOozAFuC8uIwFlWnJhiAHwu8s1qQq4GQlSOWfAZUKsAHAAdE4i7qMCf3ayVNjOcA/
AUKEHSUsPWd6V9ZgkbKEfF6RSanfFe5bpUv8xOoQmKqOBUZXW2qgjzEgll5bGUQlN5dZX0JNRTpGkZaZf7Yyxv6fsHvIftGyZz5ngjVB/J35ViWjyr5lmSJsG1WFWuR6ds9nOokwBYi4ABqNMXn5jTtGFtlCaSrmbgQOVSUiF6xcSEEZetQbVG1uxVUEhQNQZQItmT3sPaAFMINppbgcAm0Xk1dwFWFfA5wMkKcRpwFHwpFgwXTX+lDNYGU6VIZV
1XWpnNb1WRlB9oNXtR/NatndRyhr1HJlPClxYn+LegSn7S8wNxHOqVkTRA1QfdpdmWGLpH1yyimtaZkkl5mRA5QoVtWlWiFwIR/LkAA4LPD3G46LgD91fbq/B/BMhddUclpuVyVhpTQj5mLxfJbNoCl5QJDXQ1hwLDXw1ZiIjWKgyNV8KkKsWYhHoAQ9SPVrJ58aQE0V52nRVxGx7C0D5U9ADADZoMAC0DKAqWIqAkYzAPEDvaqWBiAWl+Bn+WlQ
yxkNz/pEPN1z55pzDuBx8KMnsx7pFkBXnJFwKX6VT+I2UzVJ1hgRzU9VkSUCUZ1brpYEb+AtaQWVFiZfnWUFGyKcjKZxdePl4pUtbuS38VwIBkqxlYZLlPw7lfAImOO4iFUdxWtWInuR6AJMAkYkgFUArqCAFT61O6QcJqm18xebX/ZghaTx35/celUbFvDfw2CNqWMI15V/FmGylQ7eqcj+0uUCVCgNEZN4K8skDd4LQNZeYVGh13LBlAhIUdZu
UaV25bgraVwZZ1VoN+RanWYNRRXels5mdfzHZ1+obnWX2SZSQ24ApyKPl+2z5e1IbA5wZ/ZV12YFuAK6FwK0ohMzddvlmZAqTI2hpqxbbU0lwNsfU6Yg9X3X5N8FZ+GYuSFbdVeZ3JfPW8l6FSWnkON9XfUP1T9S/Vv1H9V/U/1P0dMJ5NA9WYWsubaaDF9lEgM6gjAqWAHC9Y1SrMDZoswFVy4ARgBUAlZmgLcBAJglXOnCVFkIroJA+HLJU7gr
YEIn92cUH8KnA/tG2CUC6zpTVa2qlTTUDZFOZ8Xx16TB1X05BlSnUYNtklg2uuxlY+mc5llaNUixg+QXVJapyLQUzMjRawlZlofkjJe8MZFNHz59YWcFTOUKJHIpNBscMUGkeEM6j1AqWNgDH+ojS2W/ZCxa07woFJV3V21OySi24AaLXUAYtWLQlV7FPseaDOIXwGyoFVMfFUld+X+aSxbS4Yic28qIdZ1bh1vJvS3RiLVcalaVmRSg0uNreW43
PNnjp41d5ZlT43Ip15QQ23lNlfeUxga4BknyxyMNsZRkEdgrUJ8GTrCgS2MTWEKb5FZS3VbVpJXlbLFRLTk2cEXTX27kAMPr3XD1RTRdUslwoGyWT1JuaCEKF91UoWW5NTdbmjJ0jEM0jNYzRM1TNYwDM1zNX2os3/VR9YU3dNCpefUB5ypUHlmIWIPEC4gpwEKBGARkIYgVAboEBAVAFQD5WSJ5qTOmh86Nf/I3k3wPWGJsftA0FxytZmEzSSET
JlAcq0cqxkKWGwDYw6trXA8DhiS5W8WpFwrVTmitideK15FW9nNn4FXjYQXyt0meUX95PzeNUeparRW27ZjlR4GT5VccZEzAZwB8j1xG4FC0q1dovhwKSZjWWXGZZrak3hV+buUDZor4C0CHAVBITrUtkYTW4QAZ4e3Wq5cjSKnEtqpY+3Ptr7eRBbmYja7X0ccQHALOC4Yq2CBkftGjmlQ3jOGQdtUTE2Ddt5eX15WN06hLq1QdjRwYONrmozWT
tDzaGVPNESS80ytUZdqEKtI1YLVjVKrRNVqtzNeLURN3AKcCHk47r5Xz5c8usZFJ04nAKItCuSBWWtAOZ3X/tKaTeEYIqWJiAZAiqBmj3GsnabQKdKeayUdJ6LiU3YeKXJ5k/GD1QG1PVAWRIAZtWbTm15tBbUW0ltZbZ5CbtB9cskQAynfJ2NQinT00pZoNWlmX1QeTInRVuANmjqlYwNWCHAmAIaLKAZiDhDVAJWG86+FKzfgY1VaUAs6vJHiP
JKgNtbblAhFhMZcDWGDBr21OIu4AO2sqVwNuLHpiDSnHtVYrWR3J16DZR3Stc7bK1zBi7WCXOpVlYx3C1tlRyI5g36TaagtCxsCIUsOHPXHzywVnuBJOMLQA5genDea3cN12k+D0A8QMQBCgTjilpn5vKUlWYZdsTfmyNEFdZkDSQeTN1zdC3TwBLdH+bDkAKAdOAmtcgktRyqpezRcW38IIiVCZd3RTA2au8qSjC4dt/K1wEdpvm1Ukg9zZgVs1
xCVME+N6dW81c1uDStn+NDznnWlxW2aaaVGGrdmUrhLiNFCXmA3TH5MNhMIu7zyRmeN0iJAPnwVt1OYLlybdl4QUGHVtJY52Q0CAC52nVDnXJ1U9NPb8EfhRuaU06dyFRU2z1FuQvWBt/JcG2BZPnX50wAAXUF0hdYXRF36AUXYfEk2MnfT2qdp9VRW9NmEf00ZVBpGYhGQM7FVI1AvgM4BCAxAFiBmI1YEYDYAcABpABwsrtF2y+otkk5pQI9q/
aFdZxcnwLMmwCcCnM5HM2CnAoabeo5d/bcjAFdw7fTFaSJXT91/dB5QD3HlnMRGWvNMSQ13EFirRUXKtrXaq3esmwGE1PlQLU5Ugth2QjLzAeMa2BHmKsfuSx+YGXCjBV5ZaFWTdyLdIw8AGkE0BGQ9ANqgCVGfTMWtlNXoT1LFhLZJ1NeQedX2199fTACN9lbZ/l2iIYpVAwd4GfcDSKN3ZZCBkq4G736unvUMrYdyQu93yViOk2GtVdeXc3ld/
3cJkUds7ee7ztA1Tg1DVfjV1FQ9gTcQ0i1LHYC1n+kKE2D8sdwGfydFaza5wY9LyAs58srpMJ349onW30EtT3Vt09l5PcDaU9cvftG08oA851qdHrRp2TxV1dPGo+nJb62VN+ndz2Gdy9cZ3q9xAJr3a9uvfr2G9xvab3m9UvXFnlAkA9T3QDSWehEg1Bssr2KNUst4W/M2IE4K1AQgBOqzAyEGMCkAdQOrzAJ1baAl/CZNc4gowYUMN3nSXKhul
wd3Kgkila2Xe4k+9g7S8JFdWCdc301IrSR3ONFXa40zteBQf11dvMTH3DVXOQx2rtTHeu3J9RddNXplO7dQ278PLPWHGts9eiUtZb/cN1hMQZPn37hN7eX13t2tRFX02bAPMCzAMABwBjAAfst2JVEjclVqJHZZZkHVD+fbXlAgQ0sAhDYQ+o1DucZITlJOQ3EYb1B9GV8Bwo9wMC4HkBYM90pQZZsv1puH3Wv0VRsdUg1ON+5XpXKh2gyQmR91H
dg3vN4PZ834N8fULUUFV/cn2S9Vg0LnZlMLHfz8s8tdXVBD6xs/5IyHZt/1lJBPe2XYZgA/flQVnBOQOM9MGl8ESAmw9ANj1zPfAPG5iA9PXIDnPTyVTaPPUvV89/PIwPRoWICwM1AbA/oAcDFQFwM8D8bXT0qdUA/L3A1TPu52WFlAdfUQAcAFUBmICACGYwAuINgCbIzIYQABwJSriDrAmABCO/1+Va+URy4knywlQUlf3aAgRwMTX2M5Bhd0O
h5jXSzyDeXb71Dtyg9XljtO5RO2aDO/Qzl79ug2qas5C7cf1Z1FlT0Mrt8mWYOw97XcG6ddwft115s+/LmWT9z/Zwlv9DWaBTAgko9e249pSY9nVl2ZrOosYIwDeCWDTfSbVVeZta33tlqVZ30KNiQxIDqjnPlqPpDTSryqRkDZpJWukR7XiMoyQlkSPhIJI3cWBMS/W91VDq/V91MxAZVv2kdTI481Vd+/WyOmV9XZyO+N3IznXn9GkZf1tdarW
+4qZPqR+5Zc8RQe2lDUo++UzD/ugfxBpXg0qOxpP/ceKWtB5rtXz6RVltHADGw7L0/D4AzL3fDFA8yWadLPdp1EE7PXp3+taAzBYYD6AKCPgjkI9COwj0wPCOIjyI6iMdNtY02NbDuIWfWtpSvYHkDN6AFowIAn6JgCtA1YLgC4g5WUxKHdGkMQDVKGkJ+hDOlbWnn7FazdYyfKJGo4kXAPlWHLy+bpZGJh1IdDqmJFB6T6VqVJ6ZTn0jGg40Ms1
QmcyOhjrI/2EcjnQyf0xjkPad7Q976fzlqt5DcMNhuTfbu1RuHdc4lqupKek6uD5JQ/34lJrRw149UQTrXZmhAD/FGQdjAJwftsxV+0/tZfuBWk9LwYB30V5QKRNFuFE1aMXjnnEkBAggcX5ZfOkfjOWp8u1TYYJ8dGTA2maYdSjAR1ArdHX9mdI440Mj/4/oGWpR5S56wpgJe0Og9vVXR3GDSrX0PVFiY8n2p9CJWmMcdYUF8JmGurdXUeI6xri
XxIV6qX3eDE3b4PxpMQysMMT1Y7a2089rQU0utSbUz0uZ6nd0ms9HY+U1djaFegM3DK42uMbjLQFuM7jPAHuOGiB40eMnjnwz5OudNA9w5pty4/HIUAzqNmj4ATQJ0g8giEIQBugRFeRCbIhouQBojotuAq9+4CtFCZiCo5AqOCPSok5wdxKS2BvjefEkWfjlzepWEdP4wpN/jzNcpO5Fqk5nGiZGk7V00dikY1195ATfGMw9cE8n3hDFDdYOS1z
RW3oSWhMc4L1xLiFZOWGEDa8g0pOPeT1AVMVk9nZm9ABpC4g2aFUA8A2ALwPYtFXtRPVe37dtXljBKsaO9lKvdIx3TD009MvTHE7S0WQUugyxPFnStkZ6aa0kyqZSbYIk7RFvUxjKWNfLTY1zAsk3UZ1DpXb93b9ofbv3AThRXNMdDYPRBNWBPI8tNvpm2WtMgw6wFS0OVM1aZOI8VAvE6dlTg/PlHAkw5YaByzYAHJ0pRYzwUnhpY3/1z6NresP
eTibQ607DCbX5Oj1CPq2NHDIU3DZIDd1SgPdj1TZFOYVEgBQD5ThU8VOKgpU2wDlTlU9VO1TU41LPyzvw9QP/DtA0uMAzP/IqBQAYwFoAjAn6E+BughiL1iKgPFXOr3xksmjUxdozkCAMCi7tp7hsbEYTVtZmOSRxdZuOXVXKVVNRc0jtgffJPEdCdYyOEzQE5K3VdZ7uGOH9crVGM6TXzSYN8jifcx3J9N/ftkoT8sSSyRqmmfXH2Moaf+5Xkjo
rHzT2CwyqPETvThaRPgQoDljlug/ZEN6jkjQaMW1HdV/1/TTE8CNCAfcwPNsAfbhB2qOgCrjVuI8Uv8AAgaOYkAggHWTcA45Ho2WCkc5UFYmTOGztjNbuuM8H0EzTQ52FTT/xe41UdpM1pMM6Jc1TNxjNM3zkmmHIkMPwlp/mplPw5UACB59Tc+hyuDLiKQbxFgs5dObVrk9fmW1U86sPyN3dUdXoAZiCBBi1ssxADoLTSQFOXVQU7mlT1PrerPn
DVTZcPazahTmbOzrsws0ezXsz7N+zPFfpCfDOC4llAx/uX00Oz9A1ADzAjssQBGAhiMQDHJqWDUD0ARkDwC5KUAIb11TQ7nmDVhtGl1LE5Iiil2lQIKkSPF55JWc1qBR6SoNblI0xnOBjWc7fMqT7NbnNhjoE0f3gTXI5TOxj0Exf2rT38zGB1Qwo5mVZ9wosTnjyqvlKMtgx01fwrhhjg6LQLNJVdM75PczX7EAYwLiB0BZAMbUrdUQ2t25WG3Z
k021kFc/JB5nkBEtRLgixz3Lz/8kdOWQPExlBEwI9jYkIwwBYXlgFCwCXkGuNTKcDZR/CQsAxQ5836OaV47WNOoNErToMkzeg/NOglsffR16TLXf0OGTIMM4gI9bej85tgpjae1TDX5ZzNntVhvEhxQawITJjdMC1rVwL63Rk0SzQDsDasL9xvsvFNbY4hVs9YU9dFQWVw89U9AvC5+j8Lgi8IuiL4i5IvSLlsxgiHLybQuOpZgIxlnAjfPiMAm9
WjPgA4QpALmiTAMAHFzpYbw4cCvTqefwMZDQSKGLcqh6qyp1xezal1OILYNcVxFbcWUP9T1NanNCRV85v1oFN8wBP6V5HcTOzTPS2TPaTS7XH28jVRUE0DDoywhN/z27dtMuVZrsEJ3ZKsUunrGqwOtIhpL/gRPKjvoTdP02LQJMAEgAcBUBwAyY82XvTLfV9Nlj//ZSVVjIOTt25Tkq9Kuyr8q4olD9FkATKRkibIJKLuFBjd2SWGKzEU3F8RXt
J1LJ8+AVNLbShfOis6cyt6ZzSk6zVEzZiyBM810ZYYOn9iSQmVuptM44vesdQMZP/zs1ewLMsSYnkm8r3wuAt9FnQa8XsNZfc5MuRmy4sWqrOy4eF7LGCwcsFrRy8rPtjqs6cMkLFBGQuEuvPTrPoAfywCtArIKxUBgrEK2wBQrMKxMIEBby0WsfLHC4uM5TjsxIA6MCAGynrAKViMBT0uAIaKEA1SjQXrAWINUq1cfA8HP8WPi/F339R006qlLM
RcEzHMmUGyaB0gyl6XnN0oYNPfjNzeoMer4016s5zXS1SsFz+g7zXmVNi1BPFxME6GuBuP89XPAtB2aXUZkPMNUZLVWMkvlUpYUBuC6OF08EubVU3fw5sAQEG5Bfs9jFGYKr1sbi1SNWGXkEeTGq2ku5TcGwhuYASG2DPAwOjQwKx8iwKh1S6rLVApaNe62EzksWRnavHzJPI6sCrWMy0tEd7q4YuergEyGM+r3Sw+u9LfNZBNn9diytOwTYayDB
6rbK8zN7BkKDuF3AT3qSnnSrcyuByjlmhzNcFUGxstLDIUe5P7VZPV5PdruC9sNOtxnT2t4L7rbgTsl3rb+FnDla6gNazvY1FMQAw66Ovjrk69OuzrLQPOuLrLC+Zv0+8432tfL7aYOvoAholoyeQMAIYgIAOEJHkcAhwEYBwAJpPpCSARgM4BGAMi00rIwpHACJHAivkUYau+fEsv39jWVHxaLUoRgkB9hK6oNx1l61xvXrPGxSt8b96xYtFzVi
9GMvrIm2+v2L4m5+sxgkwJGvsrE+bYPtWjAi2BeLsTScj/2ddcm6FGl/gk5dzYq6qPUB9AE+ABw9ACKBAQsSyPNzF0Q9fn1B8Urmvtupo7iirb625ttEbK4KlDbgmZJJXK6Xwhq5ZR2RlCKcRNUImtkjR8/UunzTq2xtCtRK6gVldQY9nO8bd620PPz0fcXN0rAy70NDLBk0n2SbN/QAtTI2TvkvHtAQTNv96d/BsCgKwq+muET1Wjpv/ZB254NY
b1JZLNGbmC6ZtoL/m0FPj1CFe5mnLasxz32bms+QtObtaxADhbkW9FuxbFQPFuJbyWwgCpb6W35vGbc4wr1ud9swOv0D1Jt/WHAJGDwPOomAFoxmIuEfoCTA2aGYjq730cuuW9tWZq6RyUZA1kowWwFmOO9CMMsAMsl5tj32Mnc7isfj+K1Vu01NW/UPL22lqvZaDnS60PA9UffemQ7i08u3UzvzcE2srTM1tPDbO0wsbkxF5qcxTyYCxjs2RK4S
isehprT4NIt4qwaRAQpAFow1Az8coCnjVE0qu0TeW4sDr5+m4xMJDJLdIxZ7Oe3nunjZGTS0WM6nqJIWTPi+EiIL5u04jHAwHnhwk1LpJh1uJJwHJWUcElsZ7sb+i5xuFINUVO33z3VXnPrW55ZGPtbb87YvdbYmx+t++ppvEDjLDgjeR8hwgzx3rhBNQnvpSpe/14uJaa05P47wFaLMCpF6lopHbSHrTzrMhwHADajnwVTsQAL+2/stjcAwQvWb
Jw8QvM7wvFWt+Z1wxzuy7UAPLuK7yu6rvSJGu1ruTAOuztpHx5QN/vv7GyOwvUVqbeDW5TmgGowkRFQBpDc+jxDAAjCo4/gARrZiEYlBzeu+nkFhP+VuIggStTmYcd7tXyZtgHysTw1Lx69osur562oNtL1Ue7viRwY01ug7Pu5pMQ7y+1Du6TMO6YMVz5gyDBLALi85WijAFI/1vdw3d8qy2VdSdNq2IcjzCLb108tsGkboMwBNA2BPz5N6KG+h
mrdV+VsvE9yS+qtk7OG6FsCOFh1YfkQNh/qsndf5S1wow5wAWyNg24kRC/JQRW8jwoSwLlBVhBzcPsNBvjLs1qVyBYIe/jwh3NYe7Yh5V3NbYO9SsvzgxgHv0rQe2u0CjMYAsA77L5QpU5QAk5NuOC6O3odX8mK00s+MxhyMPF72y9POGbaB7YY/7DY90dhMvR261Kz/+162AHtmxWsgHDm2zuIBlC/gdQjInsQdqoQoGQdugFB1QdGJdndMLoHN
s4qU4HnnblPBmIoC0CDpxpKSZmIygDwDVgRkEJiTAQEBge0H8rrNLJQLfjJaUc/tQjqhHKUmOXksEldp5VQh87A14rKc07tXNeixetCHmliIcdL07d7tRjIPdIfkz1i3g2r7rqe+tfzfW96zxAg25Q0/pke/aalabpgnPzLNEInwAubpiEKkjio+ssV9Ge9IxPgQlNmiSA9faIc6jcS6PN7bdsbEOP7RQe4f0nvnUyfKALJ8PON7VpSsAMCmTjmR
38Ju58duqa4BEe/HVAp2axHQ+/Cgj7RMBN7j74J2keQnGR0KdkrzQ17tA9cJ77veN/u/0tyHDK0Q0OLGJ8oeI70a2GT1BLZjivP9NGvx0NLYoq0dpNum5hvl7nk+Tv9Hr+xgeOtWxz0cYHBw4FMwDwU6WvYu5a8Adz1Ux9WvgHlC4ceEAxx3UCnHmBhcdXHNx3cefD2x5lN2z2U7gfuHMAEBCaAioDUBPtqMXUBuQtZ9miu8mgHUCfoWjDhCZbnE
6yppQFLIAw4l6vrAl9ek3MqnvImjgCeqBFWzou0j/2wGNT7UJzPumLEh8adSHfuzIeFH0O5achr6J5vscic3aoeZ9pdYkfTq8a8/0fK6xnWbLLYVp6f3tRseDG4RhAEIA8AhANtqsnO2zRPfTRo0gsAdle0B3XnJGLef3nj58KeQdg3mWbI5t/GFa557AluC7rMlsC77q4ouJNxHqpwkdj7f2y7t4z0+57swnRp+1vwnS54icdbyJ6+uonPWxvub
BGyPEBi14TXd7wwECUEhQonlXloiDIGXcBzAQR7jtX7oqyLMJL+LeLOdH/pxID5ntPQJcWbwx5GeELNm3UJm5pCwmdgHVyxICln5Z5WdsA1Z7WduQ9ZxaRNnLZ3mehnOxym2cL0uydsQAhiGwAtAqWFUCgUFAIqCaAEZnUAaQeJsQAe89lG2fgzpUExmGGnB5eZm7bU7urKum4J8I6ZpzF0GoJyc6esErzu2CepHo0+kfG2s54D0nlC5+Du4XtKy
ucWnxR/yN0zGyHckpjEtRHucrbqjRlHNVkxjIk9ytVdkrgnWYGT2RF534MPtdcPoDAY+AJgBuQ0ObYc/Z9h3i0weyJU25ZNqS9065TQEHVfMADV01eXbCzMcC+XTYLHxHMXwuBcLMBOUVqrARwP5erggV7qlch8AjcBRQ0g3PbvFqFz93oXWRy0NYXeFzhemny5+aelzgywofDL8OxsgdrW7TJt7ny4U0tbz5kUFXrGe4GQZrAu6YWPUnLk4TvwL
nV9yepptPPiBZAmIJTvTCoN1tCkZ4Z/guiXABxdGdj5y/AGXLRnUYjGXpl+ZeWX1l7ZfKA9l5WeSymx5wRQ34NzpefLAIyFv0D8I25BighwC0DYAYwFiA1A2AIYirbdZZgALdMqf9pwr6eXcABI5wV1IVheYM20cdSrsitWJ+/JLojncDQNOhXoJ/Y0T7q3PtfA74h7CfYXJp2BN4XK+4RfBraJ0PlJakzTue/rU+Y4KiKods6e1HP3jKNvlMkkE
uRWIS1WVhLD0UIBJBmgMsfEDb06httX6G44ck8zh92VrDbh/QPYDrt+7cjXCsaQJF5Y9jq5FJOjpjVfCGwBLdvligVWFrX8KCAp5RSSJqcRXBi9Oe6n0J7Pssj/G61tL7Wt7IcXX8h+XPXXlcyDD1nFR+LrecJ6oft3W9RyVeWGl6gP62MVV1mv1uHR++dSdiLiTcEg9xkPcw3is3/vw3ox4jdnLhaRcsULdTaUABwNN0aX03jN8zes3T4Ozec3n
w6Pdk3QWxTd0DBl5GJGA8QOfgwA1x86gkVhAEBCLUWIC0CGidQPQBOXjiIIO2MnB7mCP94g+wIksP+faV38oSHp727KlSFcgnQ0993ErpZMrfGLk03Odq3x1xreWLZd8lcV3a53rd/NpptmjYn4e1Q14nAFFHLWNV7SVcpSMzjKM7gN5AnZVXMG9mbZoTQLX1VADV00Dbb4jeydcXwPvRO+n2G71fuHND3Q8MP4d2UZ6acrPvMz9He21MVmGzX/c
HtuYIA8fbiXoivp3m18C7bXE/pOe3Ned9FcYXhd5Su5HAmzSuvz5d+/Oibn8/rcYPdpyzOGrJBlbVsNE0VuAtzIG0/C/C48qI+X7Qs/LkljrD48Ecz3V9t27LxN0hCk3fRxIC73xayMcID090zvhTc9+zuULx96ffaoF91fc33hAHfcP3T968vlAwT72vYHel8Wf0DSQU0Cv7W4zwC5o2aFqVCAmAJgD0AFQE+DEA/54lHnj4M80qlQuNTo0h05B
lRsWRiHPE7tgkdQcCv9sj6OeV5CDW6tK3M55o+wPR12nUIPbW0g/nXhj2vvGP6DxyLZoj5TuY1zI23lcK+IFIVe2JzdydNnqnftGlrLWmzSemH0jNWCSJxFIqBKOEQ8w+7bHj7PoVjQN814GXFzxRFMA1z+HdxkCqcjIVXUcj3qUGYdYrYBkT/u0r9PSlXI9VQu1Yo9Z3KF+Fe1bEJ+o+ZHKt9kfzn6t4uenXsz0YMoPqV4oelH3rIVP13kfHePt
KZkUeetg/KyGl0bkG/bewL/15ydvnpO9k18X6AJk/Q+kN/4/D3IT5PdhPZTRE/I3Qyajd9jhpBuOFPPrCU9lPFT1U81PdT0Tcg3nL2wvrJ2T/2u5PBlzAAjAkgDwDCunkJgCkANQCEDKAuAEBDxA6uyRj0AzgM/cNg8votIhIUukCqhpeeavNKpGwLyy9d5W0M++lIz4bZjPB14adxX6LwleYvSV3M8onut8RcbnpF9uNG3tc6MPzANGvjLfKjgy
psiVG4a2CrLP1yc++DVD/Tbmy+gK+0BwQnkw+ftn08Xv37Ze6DUB3yCzPPkqub/m+FvLtfgadZ8j4jCj9GfCAWgNBOacipkDZhtcO9icwAqJAyMAS0gUjiZ91wvCt1qeRXOpxo++vmF/6/wPGL5rfBv2L/M9EX6+xG/aRMYM1eITVFwQQxkGfEdOJvPM7NspQT3vwnd39L4ktlvXVyks+Pea5wRVAA2PcaPvUQL/vZpoT8cPhPsZ5E8o3892R7qv
mr9q+6v+r9EBGvJr3w3mvnwy+99uVA7sc5P+x+4eYAHFc4CFKEi1UDEAzQOsAjglgJsj0AaBLruPHF47DqkcXjNypuh2UDo5KuSTicVrAIctLdAnID8V1evM1j68ovh1/O9TPi74g/Lvga/GWEN65yY8ciVQKx2UXHlj+sxvofjq7eMEtgWUum4C51nI9311SeZv6e2c8Z+nkEZDfxpAKOpFvH0/qPKrhPUkvPP6Sxp9afOnw295Le/Bs30tftDR
mSixMZjVsqLpEsC0fTqnauDv61x8itcvo+O/DTk77neQPrH9A+HlEzxx8eNgb0u/6PyD6u9hv674J9bvoe/depjsmxocOiboTMsTkMy7zOnI8ArP0Xvv/ek1OHzz4i7Qfz70+/cvVm1Pd8v37wK+PV0TwvdIfFACh+4AbkGh8YfTQFh9sAOH3h9Qf5X1k+K9wW4fdV7dmbMCKgbkFYgjAU6hwBVARgFxWEA2BNWAwAOfpa90tiQKe8bX1q0UNtWm
zyDqrACd1orh+7r/A2evqj3VtIvepxNMhfsVxH2SHEX9x9RfIbzrf8faD8E1VAWD9lc4PuVxDP+IIQdNuW3Y7yfuR8t/sN2ODmm7S9cNlfTYVmIQnvgBQAzYLp9F7303psVv8Q5qvuHb8TD9w/zNbkv1WAdMExkx8qd7UzAzQWmTjXV/pcWeXSOg2Lo5Q7+SUjvPn8kcb9AOySBQP+p3fOhfN3/Fd5HCJzx/CbQa89/hv8X96yIxRL6mIQZSi/Re
R2Q3Pkk+VZhmxeuPgxe48OHixcj/ePQA10cSApX4E/oAWv0McT3lX7y+M7NX7Pe/v9X2R4VAo3+N8aQk35MDTfs32MDzfhwIt/Lf6T5r99fQNbbMWFlNwZd4CSBnUDvaQgCKCpYT9c4DfxOEG6DYAmgOaUW9hH408OcDLFlqFJXUtHblVziNxPxkSM9Rok7/b4M/HfX40H0QPLP0F9s/Ji9d/qTOjyXcGDZpyu+hvAv3F9LPW76s97Z4nxs8QzuZ
emTvJKsff35JcozCjH7yn+D+nPTtzGAc29AYNdpPLV831ob48zEOMvHD64dcP9A7gCj/JgPgAT/vhyKfmgftC6WAgyQk4K5grd6we2JiHDdvwdl5lzDufwTJ5/0/+Hb5/gPzP6z+XfYfWpMzTFf36u0dBj7X8J91d0ocbI9D6L+wNDYC5cWqrEnZ6AW3Nu6NHDrhumQ84D/ZPx0vAr4pVHi793dXJiFHX7u/EzbTCXX7CXfX6etQ36hTfl4m/QV5
/vZAK+/d5AB/IP4h/MP4R/KP69fV94FnL35DfL87oAOm5bgciDBmb2y4AasAtnEYBYgQP7c2ICBc3HiQ83C8YHAL4BxQHTIS6bhJ7VI/4W7QQbx8Z8YJsQ95APYK6VbJj6nfRF6BffO4xXcPrl/W77c/RK4PfGv5Pfb/5w7Gu4bIRh5ZXJCY2DXB4pkRYC9YSYZy6DHTJvQ1biSGKBX+Sh6Q/HUT5KDRitgasAI/af4GfO/aA3Xi5B3Ay5jAbwHY
AXwHh3LGBCWXTwV2bXxOcPZoE5LVov2RQGH/JBSW7EqCdmdwaRHI56M/Zj5u7LQHjPMv6v/PQG6PfI57KR75dbNd6LPYJqtnSwG7vOlqi5B0SH/CaLNWHop41N7ry/X66ZrS971ua97FfDXIQAJ8Dc+SWTBnTggjAnEBvvCep4AstZAHH95EAs37IBFgGHANgGBDTZCcA7gG8AoUD8AyuRyvDBCTAyWSwfXS4qvBD70DZgCKgIwCHAadZ7JR3gVA
ciB1AZ7RugegBmkasB1PB47shWaRHTaxguIOeQ9PMBKUfY4CRxIFzwCOmKGuB3bAnNQG7XQv6P/G9Yg7OB6cfO74zPXn6dbfn4mAplYjLDZA4QET5p9MT7ITVv5e8A4LyjDL72gYOpv9MKBcwLxA0vOAEQ/Wk7lAJoCGIUtw7jGAB1FJ853PF85idPu5MvHq7HbYb4SABkFMg2ACsggC6xdIAGhiUKxuAzcAVXOO5fASOpfXXqxT2O1YBILIFaKd
xAVmPIGDTFI4IvbU7nfAu4c/XQFc/coE8/QwG8fZrpXXUwG//XAA4QRL5sdRoFqcVVwpQfMpd/MSyuDUQFa+VqYuPHoEidW/YJpLkHz/Zl6+PWniHA+4zBgir64Az97VfeYG1fAzpLA7oQXAq4E3AnCB3Ah4FPAl4HwGWV6f6aYShg/r6S7Is5nAgy5aMdiSMnX1gR/KoBuQe7RNfNFpAQFoA4QG54EfT4FEfasJIwGGa+9ZHjbfRwRineYCRpFs
A9PfRrKAk9aqA3RYTvHO6T7TQEzvNj5+vTn4BvfQFBvE0F8/Pj7oghMY3XK0HvfKwEcrdQ62hQSRfCdWrd6d7YNHc8wQ8USQQLDwF0giQAtAIwCkAEfLZoOABuQfwHe3Gf4Ybdh4o/AzZo/egbngy8GbIa8G3giz78WXDgg6QFy5lEAoADc3ZTOQJDdgt0heMJUGkbbIFqg8mJxydfoFA0SLF/J/7erNF4LvJEGl3FEEEXaoGxfWoHMrLEFmPFL4
pkOBRuhct5tA1YC2TFISExdkzHPQf5/XBAFuTH07PgivYsvYYGjAkMHsQsMF2KKr5G/KMGEAur4zHBe6FgwxDFgloClg8sEwASsE1AasG1gz4bZgj35wfU4HAGIPIVSI0TmIJS5v7Gbr0AcdKGiDcafoMYCMzep7CA8GZOMFy4hIIECq2VfKlLOwFpQB0Q96BSR1QAfbgiCEGMfIcF+fEcGjPIoGzvLR45HMoGV/J9YBrecFmgqu4Wg/F4gwHCBN
/IbaffDcF2iPdT4cfv5EPASStA+x4BFEUSVQHEongtT67DHgBmADIAEbO8HxLZX71uRoKDdEIGL/Ay48VXKFYAHwrHdTf4vIWMQRQcYCKxFZZKfMR6hzLJh2A8SQpCJyFlgZUFukN0bhiOCHZ3bUFTvXUHaAl/7t5Frbv/BaZVAtEH6TDEHLg1DINA2/prMA4IlaPcAOAgSRJHfcEAqGBQuIbHr5fH0FE7CybsGNX6B3e95BgziG09eSFdJOnZad
E5b4A436oVKJ6CQsjyqQ5KZmIDSHrALSE6QvSEGQuSFXQhSEnAwb5cLAy5CAAiLVKMg6eQFm469CoDrANyCeQeLZzqLSArfZWCZQAJDRFJGCvlKQL2fCIqW7dXyK6FDhtFePYQvXP6y3UB4CHEaEBfIv5eQicFzvKcHoQmcGRfAo6zQhcHzQpcFmAxmzRvVv4fAZuaUxZu5gApwEpQ0VjpuW1a0QmkFD/fwaq9WACuBUgDhmAqEsPIqEdXUvY3vF
w4Bg8qF8gtBYywzyBywzMIb/SDqWMXrAJACzQ4wiHQ0pDt6WQJMSEwqpLZaFa7dICKBlQUEHDdZqr5A9QE6gscHIvYL7P/aaaTQt/6L7Kv5nXIwE4Quv54QzEG4ATrybTEYah+JYDMsUOwFlMqo7QtubT2XGpsNMH4Sw+iFHQgG4qwwYGoAiADMoZTrqle4z5wzECFwriFRnB6FzA8Y5xnLnqObV6HIBcGGzASGGzAaGGGIWGHwwxGFfCVLAow13
7oAYuFsAUuE5grKZg1fMGawiABYgdRhQAaYBQAQPiyJasAXAfADTAH5iKgapQ1AZDbLNOg4XjaWxpka4DCDIxrLSHRzIwexKySEngQtQpJHfcmFQg+F6u7JCG0wr2GoQhEHhfJmH3fFmFBwuaGw7BaGcwoyA4gtZ4t/GwFR0DKRBCdN61HIBaFaXGrP+Cbb4TPHYcXUJZSw6vbZoSb5VAQMjfgyf66je55Kw2ARGfMqG8gpgGYIeBE1ARBGHAZBH
6wv+qYyMsxkGJo7hiOO5aNC7p0NbTzKpAE4Owknh3kBAqprBCFuw0aEewi75wg1W6TPR+FGggwEvw00HfNEKEfwy0Eu8AAEhCNLx27KUa5lE84ziQ5oX7NOGHhB26t1Qr5+3HOE91CQB9wgeHsvTgjaIhKKw3SzbhglWYxnPiHPQ0351w7oTjwnCCTw6eEtAWeHzwxeEsgleFrwzELS9coD6Ive7KvEGH6XUeFPgb5hsATyDwGIwA7gcs5UWdqCa
AUgDIjVGFqeZUHEaUDLZGegz92QMh+yHTL2RYBapSfsF8HYZ7sI6mGwgxraovB+FPzJ+HIgucGogtmHvwjmFiI1cHp9awFffYbpjRD8rBpd97EnE6awFOqAS2O27pw1T7D/DyIRmNyCXgmp4KwtBHtXTx5xDF8GhA0eE1AfpGDIwQEjOHryUcBP6fASzSeIPmD0ZS2FpIuRabGUsr9vRhFOwlhHKPGOrQgh/7IQ7hGFI3hHFI/hGzgwRFBQ4RGMr
KpFhQjZBGQQiGl1bHZEjRaRcJTcD8rMeTjAL5yHQh55gVeML+gnkFP7DBCeI7X55w8iAFwgxHj3FpEG/CMG8QquELAgSGqFBe7+I7FiBI4JGhIxUDhI5QCRI6JE9wyFHQorxEDfA+6gw0eHXHXV52AAOAtAZwAltXEAZoUGDrAKACGiOiSow4pbMqcMRXAHswOiQF5jlKJhLGB1RLiHqGAnFyGDgic7HIqc6cIvUElA32F+Q6aF9LV+EVI80GiIx
5HhwyKE4nLrpuLGhoExRqGkpapKJw8ER+WXxjdAlT5DFU8HMAyQDEAdipGQPCDDIjkFizJ55YIzMy5TQ4BWom1F2on8EZDNfLlGZZGLANooFhQF6nIYJiVGD4BCo2z57SPZGdmZ2EdFTUFM/KVE0w8cF3w29ZFImrolIzCFlI7CFvwlVEPI9K7hwii64gpHYYQGMhksVNYTRPfiYlUq5NAkqqkGakHKI+AGZwhl5IA7kF3vPWLA2cFG09DtHYAuF
HGI6M4/hCS4z1FnYRTWMHSMSlGYgBiS0o+lGMo3rAsotlGEortEBbCXZDwjzrKQ3KY1AN0A8AGoDIjVmzh3UKABILKBvIWz7EpGR7m7Kz4ZSYnIWQ9xCozKOjHAJqFP+KUFKPYaHXw83zthZNHwgi5Fpoq5HMwyoFKo4KH3I606bnGMBLrHd4rQ9qziA9NybQhGDKbYWGrI8a41HSBHsXYsaLDBiGPgoFHMQv06BgjBAGwV1j3GbDEWzPX49o7iG
zA0xF28eOjIonoDp0INq1rF0T7A8oB4YmD5YHUlFS7VV6jwpdBuQaYBuQMYCKgLbZeo9PJNmMSqVQJdLZ5DkwtBIUL6uWMhBHDcArOW9EnwxXRbXJ9F4zRUJvonhFhfS5H+Q/1bV/IRFlzf9G9bQDHesVY4SIxqGuCf3oTRZjIgZA/4qg01F0Q3oEoY325CFFtHq/ViH0Y3DE9ofDHdomYEIox6EkEMgjRgmghNlWppAmGjGZgzgjOY+gEX1VdHu
HaYDKAfQDMoYgA1AIhFUTfKq3AHlQS2BMSS6ZLp7NUSpwdbVwdI/VzSYmxiyYh9GwvV2GSotR75yATIl/GB6yo8Mryo/2EBQzTG3I7TFWnXTGRvN0A1I0DFuqTcQXAWNGJQgfSL5SlIcdP8rjycAGegs1FK/UZGPPX6bIA//y5w0LG09ObHuY+nY3VSbSAIcjF+YyxEmhWjESABbGLov4YMA8lE4I0b6pYA2CcATK61QwC5gUBgQkcW3rklCiH92
ZwBlGAxw0ZDy5bgFg5CqOPQiqOzQYKHa5XwxTEOeOmE+QtCGIg9NEBwrF5aYy64iI3NESbDZBugF5Em3bZFR8KqDOcFwaA/Lf4VQOxhZA/5HoI7mDNcGKA+cM6FVvDX6r6ExS6I8xRb6RbH3QhnZeY0jE+Y/iEUY/zFUYtQpBYrtbf6cnG7Yz37hY3jw/LclRYgOoA1AYgDYAYNzY/WVL/yUKAHNN0oH8XmDNzFLpTANYAbQ3kwwoHZFU/bpC5hR
O67VBYBjySJgKYva6nIgpHsfBmHA4r9HPwn9Hg4yu46Yki6bvb1giNaTbJfUuqFdAOh29Zzjx2BXS5cR0zmrDN7WY70EAouBTBA6bEoLWkrPUQepMUaYFLYohY040hRDoloTsMDbHICLbFH1YPFhYvY4RYt8HOoFAxmwOoDbvRLEaNeSr2Jd4Tcou8hOlMsDRQeLrxkblEQ8Zkx2rS3jp3DXHY7NhpsI0rFnfaVHjQn2E1Yw0HqYj/7RfL/7swgD
GRvQxCbtW0EdYiGYgKICgczUzEJwiAGY7CyEZQIBEIYhX4qIi1qGfP0HoYzh5tou1oJ42nqB4suFiXMY5x0WnHmIybTR41FGBYuwRx4iACb4weGFnYeHJ4gy4aQciCkRQ4D0AKFHxYgOBDNPABavQ14oqdlEqpNKDS6R0xatCfo6OOKAl4hdxujXkznwx3aXw4cFUw0cFkgQJIyonQGlAtvEKooTblIv9HNYi3EzhQxA1QkDHrPP+FWGd1ROqElL
mRaI6FaV0gLXCSqZQ3pFUFZ1CaAHgBGQaRL2okt6vndaKqwyt4fnV8EGXWcI0EugkME3jGcTMwyOwpsBAAxlpufYmLhIBliziPrigE1grwXFU7o4pC4anO/7+jMrGwEs1LwEiaGt46cFG40pE3I1Al3I9AkbvTAm/zMPZRwhYzAueIr+1b5R4TVpF+LUOycmf3pKIhlINo73GhRVgmo/TDEBnQY6k4jBBCXW6GHDD94mI/tEn6QdGTHVnaJnWS7H
sO/GeQB/FP4tyAv4kYBv4z9Af49/SdrVA78XbS6J4+D7X40eHdpWEZCgegDuQCkJNADQBCAbNA7A1LBAQZgA7ZD4H0REQE1QbRCvlXTQl5LGCAvOpa4cXrxuIFkyeld8bAPcVGjtXJEwE/BLeQ/UGIErQnt4maG/o/QkCfBv5W4m0GifXAn1IsJhjRWQYqxJxgK6VYAS6PsEe47pHmorKGsvaYBVAQxBe8TAAbTT252HQqETY4CiHgijTOonk70D
XEAHEo4nTAE4nRA60pXAMWw3ATpSlLeoLi2JgT+0CuwfI2QnC3eQmj7RQklY37E/dIYkA4kYlyopAl1YjTGBw03GoPQX4zEkGCGIbfbLQotFaeQEQgLYNK6HCfHPIMRQ8sCBGjYz3HjYn26JLa4l/WdwkXQnwkZEwS70kinHHLKnGVwgdF2bUInDomPHOQIQB5EgomC+LRjFEoQClE8omVEnbKn43wni7PbGc4qwoGXNgCiLQgDTAIyCaAYgAyJI
UDqlQRotARipAQJoD2VIyErrDIZpvH/FKxKlhgJUpYkGIBSgvWx7NTcAmQgtyH3/BNFQk5THnI1TGfo8YmKopEm4vH/5qo4iLcwvAlNPfmbjyXcFZfK/hxrbVIGo2fFeg3NyeA9ABuQYgDTAHCAHCffKME/T60TVwnGfXKaxk+MmJkwyE4/A0mjeKgRbGeJBTY83bVmMOatWeloWaLCayPJVxQvDb6Z3c6T14iEmF/R0mVYq74IE2EljE5AnPrLN
HKoyHE94y3Fok+oGRw9jpNAkqCodSyK9Y5i6umM4CaOAsawA+tHabWzHZrFgkaI1BYQANl4YAvx5g3Ll4EYjzGBE3Tq+Y2uFH45AJykswCKk5Umqk9UnVgrUk6kne4KvElG5gq/Fc4q+rkqYMKSANyCSAbAAVAB+I8gAHCspa4FCuf/iow8k6hiXxjoTLdJyfcqoAgBP5h1V+wwKRwbgg3onjnfokN4jQGqExxybtFCEpoj9H5zN0koEnsloE6Yn
BNXKrLQhYkxQiGZXqawzbQ3rFMCIWEDYt1SJ5TqEp7EVZIY7uawIgZC4AFoAgrQxCpYIU6F7AIGlvHxiIdW4m12Ay6dYLinZoHil6nXMkMRM7qEGAtibGUOyfANaSY1DcCwUl14zkxBRsZNO7QvIKqPopQmtLd2HoUyFLDE6rGPzV0ldkwKF6EprFEU/CG4AQxARwkDFFot7YEyal65JOil+VK8gwKf9Lg8LHGXEuBRCUysZsEge5DAjckf7Dl7b
kse6wDQjHlwlkkkYtkkTHeM5hEmS5o3CABvkj8lfkn8lwAP8mbIACnfoDnqn4sKmYHJV5MYvMHZEnBHMAGgpMSJXYUAXABhYX/i+ATZBsAZwD4AHgDCgvUkbwuP6AKbwQbhVLxEjB16DY0qDpkbJz5WRxg8HHokqA5ClpzAYlWuOAnN4h+ZStXCmWUhrHWUiHHm4wwk8KQxDAYm3EffXE5ffaXRUZWj6flOx70UjCD2A5xITk0kk7EqMkWoznZNA
TZCEAU3ofsZMljzQIEpVFckiUl56jww0T3Ux6kBwZ6l8EuP4hiQpJ+keKRxQ2ZxXjB0Q/OHcBjUy/60/RxK2lBn5xoxCEDQOanFA9smaExmHaEjNG6EgilTEl752UwxCGQgfHOUhRFgJC/blo1rgeUn8q76IexOqZilQI1ik37FwkwuIgl+4msa08LAGbkzmnoA2nb+Enl6eY1knBE9klJUzknHkuMFVU1LA1UuqnEABqk8k5qmtU9qmn4rmmSkj
nFJ458lB5WLgc2OiwjAapTYAIyBsAT9A8ATQBVKcdQ8AZwD17Gon+FDCBfCTqxIceYB9PcYDtg/EaygvMBOCHypFsOC4DPGW4QEu0nKExvHGUzClnI/XEGgzsnwkjvGswwikE0sOE8U30lffQzRAAmjJcJZx7OAqJi9eMmIM0xDHCzGBE1XdAB84geZBdOtIvUjk5XvZVKEPZfEL/bBHMTCQD50sy6YAIumA0v3QQ6LVw3kKQJvdEW72gSMQJAN2
kH8YETWJOGnX/RGm3/cElQE59EsxNGmmUjGnmUpanh0iYkekj+bB7Qml6wnakjkxwQvFKozJ0ytEnTeeTS2AAniwhcnmtHu4weMuluEiZG0k8oAq00PhYLS+mGIkS7wo/clI3OnE9jLkn9jaYDa0jDB60g2lG0k2m0gapTm0+vbK03mnFUwLbeIslG+InBEBwaH5mITyAGAfAABwPlyBdTyBAQZQCfoXABwxaAZW01ZqRQTs63AZLGlhSuptTc0l
mGEJiIJDpHXo0VFIU/g4F/Zn4tkrCnvol0kz0/qo6Ek3GNYtakGEoX5okpZor02pHrg7VHwwHsHauXarnZPZ7JuEIQXALsGOTOfHQbaMm+6K2QS9TQBRtYuks0j6ns0z87V002RyMuoAKMpeYi40WzwCf4QBpToJGGWuolk0TFFk5lissYrRQQlUEDQ3IHwQ2oaoUoym0M4OmTg0OlY0vCndkiHrBwxcH9kzAl1gpyn2nRwRbADxj1zc7Jb05Nzp
eUfolovykUk/FoqMhzHnQ1fGXQqYEQom6F80iM730vtEHkp+lHkjCqULSBlgjGBn6AOBkIMw4BIMlBloM3jQAwlJkX4/bHgM9RkUqT+qpbCoBNAZgDOACiLOIbNBcYw0RtYoCBDk9eGx/BlQdnUHSGaJwR9+Dp63ZMSq7/cAqbiFP6kwn2m2kiVFNkmhkT06ElmUxakL7Jhk40lhmrUs3HsM1EkbIRGpx08iklVch7ecUlI1QfJKj9bkxe0+clOE
2kF7E33SSAWqSMYNrFKM7HEQOXRzCU1RkcE0eGYAZ5lO8TZBvMxunZgMU75hYBb4jD65Bo6xjg8SliZ8QFx2wzsiZA/qE5A9UH2Mn7Gj0vGbOMvXGuM0YnuM5amIk1hl7M2ykx0uEomE1ekcqbhIB0EkHeVSCmGo+bguCEjR1o+5mH0voEweL5lBUmklJMg4GAw7mk8smplMkktYVw+KnC0xKk1w6Y7i01eJNM2ZqtM9pmSATpndM3pn9MtxGkDZ
8C8s1WmKQnxEsYnBFlKZQDOob2aeQSYD4AbNAfZXkCHAFqlqMXM4x/BsGNPO/hauIoZulRpEynABRZRLGBUCbKALlbol9TMVFTU6rbLMh0mrMp0kh0vFmG4jxlWUvGk2U6OnLgwxAOteYm/wr76ocLFZEnctGJ3WybOwuMiUE9ilBPQjAM3QBKh7fin3gt6n/ZWwwocdMnuHXEA5ssYB5sr557kbDjCDXcDAkkh4hxfri9+XMC/ASino4yNGWQJh
G4cF4qHIuSYzUvBKBs1snewhanz7EyqFzbZmPlSOn40lEnEUjVG24k26FGaqDnvVYlssVwbhkNYBdvOwz70llkZw73GI5ViKrk2koLo8Kl6IqFElwmFHRUvclZMx+n74lFF5Mhe66s/VljAQ1nGs01mxgC1mlnDA6n409nAMpdGX4ldEa03Kaq7WRKkADSD60gODVgMxB+RJ8CG6NrHkQKdbAU7xAY5LHKOiTYwDUwmCZQNKAuUh0BTcF67e0hj5
9E6amOMjhGB09Qkt46embM9kbG46dmTEyNlzswmljAuNn4gv0l1QDlTuqQ6YkwgknoQbzg8wR0GZs3Olf7bNC7yLRj/xRylsg4t4pk7aosmMPz44296OYyZE4I4p6ic8TnRA1+zZRIOTK2E3YwAtqbySApa4c2MjvCLtmOw6NEHI7XHNk4dl0MlTEG4vhFhslakRsthkks6Nm6kkmmBMoxrkPbkyHTFxCumMcle8RKQxMh8HrdIUKMCY9ntoi9n9
whKLjA2nh/s2+k4AojGC0kVn4eP1pi0x9lkeUDlMACDlGQKDkwcmABwcw+SbIRDlHdFA7uIrRERcnRHs4zVlgM7VkNMsYBaMHYFGADSD6AVGq6M71GLIrcQO4/mZbswvGhxPRxHTVhqiKdIE1MdTwXADGaR1X7Yj09yHQE2alqE+alz7cxYEssHFEs5En1/YikD9JL6mE35A+kNLzIwaDFeVPfakEh2nx8TOlSMxcmNo5cl4cU+ksQjwkSAbNB8g
WkBCoaAbRcjBB3c0gAPcuSAh4ynHLY9iCrYw8kcQBnE1rJnEn44LG08V7nvcygaMYx8lAcmUmjw4VwPDICCbICgBsAciBugIwB+RegDMAeDbbBbND+M2Fb6kppQJ8ZVw0ZCOay1Dp7pQXpTMmaIo6uddmEcn1lUMlGnTvT2Ejs++E4U6jkRjUHFYQrxnZo3fxr8OADKAEYDkQQgBXoTQDxAFHm82apRLqDgDwGIDiBGRekx05QDfrVjlffKpLkbf
EmgAqcSS/BZaKneyaolK6kH0rN4yM1+rmIEcTEAKTbEIxH5idexgJ3akln0qunAjI3l7yGdhm8hvaAXL5zjOHGr4jZaRbE83ZwoUCmU8t0KssBfq6pBC4gk9U7UU0B5agseljQ9GkaEqjkTsx9YIkpbm7MlbnFOEEb88wXnC80XlugcXmS86XlxgL9pQ4m06HMqarcMwfGZdGcmbiAsrl05wEa4gqxJ03dlb5GzHnc+txW892lhczggSkq+mf7Tv
lxcmKnb4r95mIlLkvQyVk2FJoDw8xHnI81Hno8zHnKMCoA48rS4DHDA7HA8m7MYkeE4IsxCTAOagcAIwDrAZ1CcBKejbxUQCHANgA8AOACWka1m1Exp5mJWjT4xZsAz9MkEhxDxhW7PDkf3CApHrCakDg31lhXTFk642+HM87CkMMtnmTsjnmZornm9k41S889PlC85gAi8sXnDqXPnVgGXkF83xmbU1xHksnhk5XcinlQXTwI08XL9Yzymg8OwG
WQwTlXndADZoIwC5of3g4QLhnm8gSkyc1vm7ST6lB5cgWUCu7Q0Cl3mNvfmbzOc4AQJbZ4UvfuwFsNKARUGupVLXEqp3eR66U+sn9snGakcvJG648lbOk2zlqYxbmc87oZd48cKQCgXnQC2AXZ8+AXQxPPmy8ko55owxCEAdrHOUzYBNmfdQ7PQAH4CmmkWQHL7gbfroN829pN8g9kMCm3nXc8+lBPe8kQooqm98m9nCsoInJcjWapcgLHIBDflb
8nfl78xUAH8vgI6WE/ln8u8mRUh8nLo75Yvk67Te8asDKAbwCaADFDrbTyDsYylibILRjvA5LgNPBlTksUMSGaUURKpDmZfwGqBp8Hib8wqSZB8j/nZIk76yCmAn5IhQXBsjsn4s2enuk5bnUzTQUZ8mAVZ8nPn6CxAX58z6aF8vTFok1M7HMvhnPQX5H3AEjQXM4MkRpf/I/AQ/6OExvm7EqgkQAPNr0AYgCaAQqbIHSTl6fV6nF7dwVls+gZHC
k4VnCr54OjArGVQeJzALKckCCjqwnqCq7OkFoUD04d5D0gH7I0wdksfP/nWcxQVuM0NkqC0AVqC4wFe+EYXaC8YV6CqXlTCwwVpXaHH2U4rml8otHANQNLWCklh0snjmLhEURh1EbG7ClwVe4j5mbAG4WfUkr5AM57kX0oBn+C0PHiXUVnVwi4bhE1KmZC7IVn8vIX0AAoVbgO4DFCjMEs4t350A2pnSkoEbkqQ0S2FdYABwPVCtUx+6eRFoDZoX
EA1AMIBVAU4l48zqlA6cOQPdDlR2leSo9cp/n9cWFC4cN0bjU71mUMnJGdCzyFJo//n0MpQUWUgYX4UsAVR08Kpp8rQWZ8uAUS8yYVICmYUoCpLSGIQ0TtYsilLC0/gPdEBSa86uphMcJn96JxCfKZXySMyMlETLNnoAB+Kb3IOCTACTm0CwtnXCujaMCn5lKchpkZiwxBZinMUcC/Kr8JMgTauZjJ1mMnkdWO8hmijaG2laxkos2CHHnAykcbO0
VM88EW9CzGlQil0WeM2EXeM+EVaiPnleisYU+ihAX+i/T6zC3vH86AAF0XF0iAuSDERsYDanUlNyySCkEnclMUE7Jckt8gsUeCjDFeC8VLqsrvlZg88XMir7lh4hKnsi0A6L1CImc7WUXyi+gCKi7SGbIFUVqijUVai1Imlcs8UCsyrnAw6rlr8hpn0AETmTABEY0BMxDafQ/L1AZwBNATAAiOPwEX862meIL4A4jZDjh+DtrGi8oY6uWx57kbmZ
aU3g5jnenkgiwoH2ivsW4svoWDirZkgC3Glui2dl+DT0WjCnQUTClEWzi16nzigcmHMnw6l8sMV/rAgkZQbP7q8qww3E1HFrNBa6eLXcVjY1MVCcog7rAKoCGiaND6Ad5n+U5YBHi24UGXBSVKSlSU1s0gRkNLZjyKLYyZRbvbAgAiXNWMOomcntkxo1hEOM/1kqE7oUGnemGQiuznQihiUji7nkQC8cVQC70W6C30UcS6YVziwMWmmQxBYgMwWB
M7Zru0mqDJQryr1EjcUEC2a5kM+4BWY66nIY5vnZcGkVFi08VEoy9lFw8rlXszBxw3TJmBC7Jn3smMEv0hgAQSqCW7yWCVxYuoAISpCVVAFCUkDQ+q5SyLkpCwDlpCoPK6lciCfoaLYVAa3EigpLF+0Lli1QB2nUaL5ECChjI14wjTkIqskQvB2FaeFwSr9Bsl0cYDLkSm+GUSlxkuSkNluSocXhsxiUMc5iUTi1iVIigKUGC5AUtYniX2Uu+4AA
/xbuhFWyrGAjn0s2Bp2QoFRdI/XmuCqkUaS63nt828JhYYWjmEICCAAakAsQDeAM0oDLggL3BdYKDLwZfsNYUQEK4qUETfuTkz/uS/TmcWkSVklDLZMLDKwZRDLMiUpDgOe4chUMBgRxMoB7jq1ynjhOVGMsrYNvuBsRMX8JwmEBQ/bpo5yGRGRiejFB0osCA7JRiypuVHzAdkYsHRTZzXJcoKDpQ5yjpU5yo2ZzDfxRtzV6fUS3kI49kcXTFnAe
O5UOAi1nBWntKRepKEFtbU1YSCigbJwRnUHPQ8cPcZjZVJQOeteLmSd9zvMRHiOSVHjKMYDy6mpjL/xRABzZfPROpXUyaucCNPIJ5Ad+fQBZgDUBz+edi/6iCooZkSMRVDzLQGpBcpdL5cNoQ20qwr8TOzA6ozgDzLpBZfNbRcg0gdkGzqJQOL9pXRL6sYSzk+Z6TQoXmjvKPdLlfFjNZEeZELkPysS0W35PpXuzvpepKl8QTj2CTdz0AO7LTZRC
iu5f1At8QjdIweHi1sW8xHZUmdnZcDzRRZ3KTZX3KJRerSYeTgjCufgcHqZ+wvnsliyoK2AVgPf1GWT7V4OIkBEpO0pJCTXFLRRjIk5Q8AU5VJ905a6tNpVesKOWOyFueLKi5Y5ziWdLLLQZ+gIpeY9LrDcVMceZENZRJLJuIBCM2ZrKM1trLYmdC5ySsBDgUa2jQUeUBe5Rz0GRYM1p5ZbLEZSyKd8SgIyMX9zD8Wly8fC7LVWVPKLZZ7LJRdzj
rtObh1gHhBMmMHLiEflVRufYlWrPZEXPuPiZAc4Bw5GzMdxbl1XyonKFpMnLuZWP45blfLM5Q0MGtj0Lc5XHzuag/Kk+U/KU+XLzlwZ+g4cXu19pITEknMjjifuAtwMqhxQfrrE9heSSguYsVccWw025SFTc4bAqzZYgrPudbLbxWgq98UPzj9JgqwhVpFT8UYrCZVqzQJcCMKgHm1JgPoB1Xjoz3pqLiXhGlALgLhxQgsBRxLHUtxyTmRmTAHR3
+eIYjYeVBCjLB4esaA9QmdfKWYsUhJZFRLdpTRL85TRzmGXRz56UY8pFZzCPbtiLIpa8kzViSTTMX98iRQEUuYMr4KlXrym5SArtFa05VfgpzEmdAq64IVQbYGMBXKDehuwL3QW6CrAcIDOBUALAq84LrABlUMrmUGMqvwNagFYCBAyKLKQVYN2IHQL3BX0DzQQGDrkOlRZBularA/KPQhrqC4BUAIMrTcCMr2oFMqjlX7BJlQcqUIOKwPKM3QFl
ePxllW7g1ldHBTFUKzkZZOxUZeVL1sSPyIZKfigIJsqulT0rdleygzlUMqTlcoBQVabhLlStgZlbcr5lVMqllZJ4nlQgBYqAQq55VKLrtEjz4gDhBYtkKAS+cNLcfoApSwn8T3idXKQ4qOVXEIyxAVJsY37F6zVakILRBSep+Zj4kMTLYF7SSoTBoCUgY+ZRyNmfHzBNsOLwSuoKc0SFKORPScAAflcpdOGTRJXl9XBgmLT3jsKNFRSKtFUWzr8r
8ipJv9KMEOMrjlYgrRlQcrzldIQplc6gwwH+AfALMq7laAxFlYAwkVasqUVesqIUVqq/YOCrIVRcryIIarjVYQBTVXCqrqBaqHldarl0M8rwgK8qAibezj9J8qrFQfjR5REScFW1KHVcMqdVacq9VRMrXVQcqjVbD8PVTag5ld6qEVVaqVlf6rbVS8rHFSBLyqQ0yyznTd/lhuNPIM4BnUJ5B9koHwgMDwBfOjEjYxd3T4pK28YoGLl+7AhwI5Ck
jAKNWYQAUgo2wGNwRQs3MJAd9iJrHEBwMsroVwqWFEdOyqA6ZyrUlTtLAcamjGGVkqp2d54hhQvSjBRiLo/sOSMBdFDwxYasGzCVoCGaJK18g9ZuxGEwC2IFyVVZydmlfrKoFXcSDLqsAnwEUozEJIBWgEKB+5oaJq1BFsZuloxZZZgzG3uIDu6ftCHQDlwK8Wr5oKUUYNjBZN4oIiy6BEOrb/COqqMmOqRWI6Y0oCkiikjl9zYUkrU4ikrb5fNz
fVmIrVBYKq4RZUiRVTGBnUIry6kVgLY5E4xcwALCwyCnSYMV2CWTIojFVVrLlVamSPlFSwtJaPCeAFAA9AOwAcIDUBqnjUAjAFAANIBUSbkg2UA4Oyi4gJ8BpmbOJrGtutbgIitCQfTTMVpErENYEhkNSmZUNUnEJ1WQZWVLB5NPAzz8NeWQ5uUXcpoSRqYRWRrRxRRrrpTOEWpTgT42VgK8VInlYpXlo10m/1wkNChw2DerUyfergqV30DjswBU
sNYBFQDmh9AEh8DRCs83IM6hnADhB34l/jB7B1x1atuCXQSHEwrNhwqzJMsqliKjB1Xpru7AZqxVINMMNZJVNmJjJH+qGk51WhSF1YRqbNX7CC5YnzSNU10mJaHDlwU6hFhaXVBOlmQlAS6cFpZUrRWApUJ3EFrXzkuEppdlK7eeSoagKONcAJMBwJZEDEQFtSjALiATSp5B4gIGFUYVuzKql1JWwBFQu7p2r1NbQYYWH5zicntJitfwlStUpryt
bwqA0jYwTNQ7jOOkZp+Ffs4CNdZrtHrVjWtRHT6OVLLGOWHDiaSxzaNYeqfSLAU8+tYLJKj39X7IOrG5Zor0pS4SQtVyyXUe4c3QFFtcQEKAA4C5A9XmYg3QJIAnwDABDRMQAUMriA5kUIEdRaPJXSEkB6idI8oyH8i1fIfDZRLCg+1fzMrtRwJh1WVq68XRxKtVhq2gpSwHtnhrSyI1qvtb5C4Sb9q56Zuq8lduqi+bgALEL1r4cf5qJvLHttMn
1ZXpcjJMuq8lkxbJL9xRlKOpFNr/bijqn1aPCGrs6hDgJEDMAJniCVbVlNwINYOkSxcwXv71j1Flj3Qlqkghrrzb1Gn8vnLEqPerzKVHu9r8dCLruVXfLiNRLrBhcXKt1eiLZdXU83OeY98Oa7r3cbUcVwsFYo5FlBU1uSKuNYjqqRVydaRUMDuiLvh6qOiBLGDLNP9vnrfwIXqoAMXqg1QLSH6aGr0FWjKbFYzjx5TnRT8WXrFUFKQq9YWrV+cW
rgRlaioUWv9p4avLPknWYUYJ0E3GB08r/FkNqjs/5zggwYvdUKslidGRL5ZHysWZ9rg9URri7u5KdmRIqS5aqi80alhZFahNdwOQJGlkxqEYGrznAc+NesDiNtdWSSs9f5SfptID9FSgDNESDBL0IIBy9SEAi9Q2r7jG3qK9Z3rdySgqB+UPKMFZGq0btGr7On/qv9ZXqf9V3qyqcTL6BgHBdGCRgiQEzyZKSIC9HPB1NxGchEnH28ZAUO8E/nGR
jikUNWhcRw0/qzKIWrHwH+cCKA9QNA19ZPTY+byrRFWHrXRZ5LwBfszgmsvT0BYPiwoBxy44eZEv3CtUtFNsYQARnrgFdxqkfkxDn9TNjX9Rsh39QXroDZYwKFXyyYwPIbP9R3rjadXqSpe8qWhGGqQhQ7KAeWPLj8S3qQeRggoDRoblDRqzgJd3qEDdpLufCRgzhEZBShd4rQEtTqYaeHEVwijJ9PAy0cyG8c7ejTzSYeQbS0ZQaKzDSN/dQ5L5
1fQa1mVPSmDWeUWDQKqOtcdKutZzDPIIfr5Ym/ZWIvBjRJRpLXTPUSjduWYJtSqtm0ZArFOTlLzDd/rLDReLOCOUaYDZUarZW8qbZSAaG9WAa+xhAbphDUalDWiqsibYbR4SVlDEEJgA4GFhw7kSMsamvlcGbgyfOZ2q8fr15pmUO9lgOQym3nRcpAhJVfdcvr40RyqojTnL0lXnKxZfEbDpWwb3Raty7KewLY9URCwyAhxPiZSdeseICeigZpao
FkaxDdftOLtnrkdbby2lW/qr0AoaNDecKz2bTwOjc9MtDb2jSpbob69V8qR5YYao1RPKsZXIbPjeobv9T8b/2VKT0VUQr+HGgycIPNhyIEBB5NSCyDDM08AQP7Q9vmIyZAuo4ImIu4LGQsabgOvKqlqyYLBfErGyT/zmyZsbhZRCK9pbsa11fRLt9ZLLn5YDrlwRpA0jYj0VUpf4brM/1VbAromoRLZOCpxrxDffrQFRGonUTNr3jTCaP9e3r4Tb
/q1DSqaYDQib6jcGrgTXXrLFfobrFS0aopm0bqjeqb/9QCa4DU+T55Q0z1gMoAoAHdMuviYBDxiVBRSkBA3USRUMtqhLVmqMAgmEtJOOvMaa4iSSv4AxlFpFkCg5KedrNHKd/8gnx7gKe9LmVZ5xti2rn/DF55hkLqyyENAmtd9rxdeybC5eIquTZIqZdXMKNkPBE91XiDQdaXUPkJ8J0kKsZpta9Kjdp0EE3kAqnjW0dJDU+DpDf9N6Bm5BDgB1
9AEriAo2hwB4gKlZsAMsB0sORBGKuyjtfI6QsmI25D2j8J3kFf8UZJHItjOj1ZHneQ0+PjIVkVkYXVvioI5OQ9yDHG81efVqnGUya0lcurWeXyq9Hh5KHNV5KODXZSeMaWaBJSbdOzJTF2FcQSylcLDfVJLiSSY8boEV6d/sluyJyvxqcEV6lCvDnsYAMYTKxap4OVD/l+lKBQUZM48W2i5cN5f1x4pDEVSDU/AmIhP1KYiTkWVehr1jZEarNevr
mtT9qczW1r7NYkaAdUcaw4bjzuDUWiJuB8on+rUdlqthNw2HupdOXUqEdbrqXCQcAe9PJyH1aUbuWeUAtxsehrQIGqIUcJbwgKJaEZbANpAdobGjbvi7ZaLSDDRjKoTa7KJLbUgC1bPLujdabgRipcxgBQBSIi1yXDaIEi8vYk55MRpfks6y8ao6RzJhVdsjK1DlceIY8fppTRuR9L+BWpVLqUeayOUHqGDTyrx2cwbSLX9rclQs98lZaCtGO/Kz
jftJ/ZBsSsjeWjhTa9K7+fs0IlYUbF8UV9c9bnD1LVJb7jJla6QGJa9frJagTToa9TYpbxWY3qnZcYb9OKficrZpagYSvz4DTpbyVGVkA4K9EagFzCcTbA1QKCGjomrzDU5To5baQO1uZkKEjDEScB1c5bsoK5acLVY5PLf7SGtSeal1TCSdjc6K9jRLKDjZ1rQrWqitGPya29JuJickjJ64i9KRtXn0gATJ8mzb+bVEYgD5TQkzCcaxDqrXlbvC
UJa5yBpa7rX4S+GAVaEubXqVsaCbw1WnQITeAbVLbgrg8o9asrZaboeRir+HJfcjAIaJWUkYAhQNowtGPn4sQPoADLRQAk8nxLK2mXARyjTKUzDEUZxNNcd5cgpmVIe04+FFBDNHatBQtChyajZ8rHNQyHSXNacWdsaRFXEbArZLqI9dLqo9UWbOKUbceAK38PkLRkyXrUcNpRJLvgQpty6T+amac8aH9VE0N5cezQqJGATDsUBinGABn4MUBDgI
8xtOGABFbc4BcwOvKgKJTaqBKaJVbRqIfQF+0ECPiB9AARAZAJmB0sHLaJxGfgoANmhVkHnBkBJkB/4o7b2oLba+QBRAKnK+BNaM7aWQIVlMQERRn0MzAg8kKAsQADgSMAgBIkXyYjINWAoAM/g/gFWqsReja+IKHKiVTMAuss1wRsbWYPgIitD1FswFgE4h2LRkDybbra1KVTarPDTaNjYRbfLSHrN9XZqrzRRbuTVRblwSPkubTzDUYGyZd/vX
FrHsLCJvAmKmkdsSvpQ0rb1YktW5S0rrrUA5ZbUtsFbc8xlbUra1bR8xNbdrbjjHrblKXPa1bSbapSGbaLbb2BrbQKB4ZHbaHbSyAnbRDIXbcfbHAO7bD7Z7aA7T7bg7Wfb/bd7ag7UMatyOm0+KlRIxgHsJZgFxgeAKREA4JibmAPbkMGclwMbUliR3IdqYZvFK2aebtevFUKitAHIE7lJiYGivaKbeXb9bZXaLNcLq6bUIqGbbEa5IstbH5fmb
d9dxKZwjQV27XgTLrIyoeqWfrXBCedCkmepO/kPb6lRIaijZdaSja0qvzNPb5bRra57QbbF7Y8xl7aXb+vGg717expDbZAIt7eiAd7WoA97SbMD7buYj7W7b9GA/bXbSfar7Qo6b7U/bfbSo7b7c/a9OEHlNAM4AKABI4NIJIB5HGUzqwJ5AhANMBH8a7J6AJ6aswqA7VPBisf8QeY8ahh1deVyo+vBSwOkTzKxmeQzskOKYMpOUZLLbeQuZQwqv
LdTCfLdEbGDf5ambezzcze1qlppHq8Xnmj2qQPj9stza8CQsAjRZ0ooeL4tzzFjlW3uHyxbdnS/zbGFsdkuIZbXI7uHYrb57eI79Rjw6xHaaJgnZ0EY+GE73Ks8o4zJI6oANI7LbbU8anR7amIBfbT7c1pz7Uo6hnV7bA7do6xnY/bpnffa8eKHbyIHiipaZMBchXzZDRHiA1/soAqgFAA0EL/InHaIFv8V28w0VEx8TRyZc7aXtwFL1Z1fMXaam
IE66OK07KjERpfep07MHemauVbXaN9bZqCHXmbVrUkb1rWk7QxT+ssnQmzDzFbUd2VKM1dSNruEpepRualLh7Sw7Ureoj0rSUAuHTAi6nXw6jbUvbeHc8wnnaE7XneNtN7Z9NTbQYBd7VbbBndfbhnRM6VHSM71HUIo7bbo6ZnS6IXbUy6FnUJAg8ugYzEAqTqwKYQqgNwMeAKEMcAJ+h9RGOkDnanaksS0E7xu3tKYgP5SlrA6R7LDNJdAGk9pA
87S+Pi72nYS6InTNbjzTXaYnX5b75b86knYHsUnV6S0nTRr9IqC6sBSQYHVMdrn+lYy3+gmwMVok0UrYaNI1HrLQtTIbIAOi7Hbk06NRPU7+HRqJMXXi76ss87oRGfKiXUbaenX07ZHTbaqXfbaaXbM7VHZfblHRo6mIGy6X7Um6M3fo6+riYghAPEAUGYqBJAMlNMAPRYKACMAhQJAYkVOK6TQJjbwyAXlristci2Ll0dHNhyEBNRxVbOTEENb7
JjYdzBI6qbs0NeZAq7QRaMzaLqgcZkqEnWRbG7ck62bak6MRWSy5ZfuqopFa7D1d2JXkjGb9rQC5cscjlb9WlKuLdnquzpC6rre3LDwj67wqsG6xHYG6OgIraxykNxhDaEgbsli6JHSS7t7WS6ZHRS643Wm6E3Wo7U3Sy6WQHS7f3R85GXVo72XXYJWXSB7M3Ry7cps/Fs0DUAKAPgcmgDAAjAIqBZgE2tcQIQAtGHslhcSHxDnenlCefksmzNq5
UVo/yafhVAoHB71eYXtJb3blxwkP27H3Rg60zdE6tjWebABReaKgTkqpdSFbCzZG9PIuQ746TFLBHrrzy0SYyRtTzAzuvUTXXb6C0rQqbOHTU6MXbi7L3di6BHSG7e3fe7zkJ5cVbcS79PqS7zbe+6BnZ+6GXZ7aAPX7bk3aM7DPem6IPSaFwPfM7IPTOAg8ocBXtKSZn8PQB5WZ+hnUDhAsyM0AeAHDEaLYlFcPZxNR7HGJuTB71soO2DMuvj9b
dlwJCukNyGxNR6+3Q+7KfuKZh3bNa9Xcx6FrYzb8Hczbw9TvrTXaXL53Ra6Z0iu6/1utI3kLApj2idTEpftIg5AtdE9RGSddczTs9bTIPXUbr8pGe6/Bhe7/XVe7Z7exo4vWp6B3U+6WpNG633f0797eZBzPd+6U3SZ7jPfG7s3SZ7Zva/bcpvRZ32CbE1AF89BBYmxp1DRlkeh08HsYNZsmA7jldOXVj5QEUbGNywuse1w1pXzLInYMTsHc5KWP
U6LV1ZO6grZx6agYC6MRamVRPliSqkrAUTMQl51XOSDZROQIfnJJ6Yhroq+LZ67/ccDZXKPcZoff3KeIdTiFLcPL0ZT8rmtKfjYfVpaiZQ1a4rHABsAMQACifbah9VyZFroRow2I0EfhHM43haXsqBA94rtX8AJCbcAwNtuDM7lNb8LSl7R3URaszWHSjXeRaZ3Vx72bZG9Y2YWjAmaRDmLrUqJoiJLnAS8I+biKIQfaqrBJNC6K6erDBLRIAGaO
+AkSPcZVfbiB1fRPE3rbFT5LRYqSrRcMyrUYbsFf9a2pZr7tfRj6nFT3ryVBUohQMQB+0pI5nAG5AOLDhBazkKBjWZsh3ZrtqJKnbS8wFmIHac6yihgkBaNM0otWhqCc/gszXIUsyGTcz8lMcyb+xRl6NQtz7p3Sa6jHmvxPxf3MsAloxFQJ+gKQBUB/7Z5A4AEeNmbEMArpRgSeFJUaMne5rV3c3NiUpC1nTNGLLDInd0vtQa6vXfq2KUJyKBZ5
B8AOsAhQG5Bj5Cgi2TiMjZTeuAT1PuQruSeLZtddpu/b37+/YP7KFdnigmC1ZzJj2YndeRpZQaH7stk/5iJaNwuWPHpRVNzqrvTq6yOfH7Tzel68Hcn6svawbrzewaYEWfj7EWNkjIDn68/WMAC/WObi/bZcf5OX6NqUloETacbXkVkwcuHqjXrnMtnAUUMA5H4FTreLaWzZa1x/RnaNVazi19CoaOtCTiXrcVLCrfr7ghVJdkqY+LUqXb6HfYQA
nfS77NkG763IB77MHt77CUW2orfUWqejTgjHgfEB31dgA7tAHARgKmdvbNRqA4KQAxgJU9dtQCJMNZRxI6kHIgRW1NY+GHMr/KsLzJUg7aedaKOhREa0KWf75resy4nZl6nvSzacven6tRJn6n/S/78/YX7P/aX60RXO7ZdQuzdqVqi/1gKxNUjSzeYGcE7GGtVmWZxaZ7WmKHjMQAtGOmcA4AHB8PmcTWrhcTR/TChD2ggGmBVqs3Ax4GvA8MbW
lPF1HIQf9PhOXTu/AHpRAUjNfVGvlyGau5eghs4eFRHzWfUZSlA/Tb7vaLKlrdf6Ejbz6agRn7H/dn7c/foGP/SX7v/QGLnNTwpmOUL649U58xGb3avKt84L1WrYnwaU63HjKbGlfmx4A3diZPcDdYfFD4UAz+Yxg+kyMA+9aQ1QQCwTRKysFejZJAEwHPyawH2Ay0BOAy0BuA7wH1/iqy2pR8FETWrTtLWDbszKoAhAExJyIMgZ9StmgXtLgBnA
EKAdelUBEgj76N0puJaxa2qIFTICyCcEwdMuNtGwFukbSdH6UKQoGjKSH00vSoHDXUUH9jbf7DjanydAxUHX/e/6i/TUGy/XUGK/UlpXOSDreGYJL/fRVA8YodMRsTXzduSAGmHU4HuHUJziAJ7NniSRhZgN4GLhRbzCeoMHJ/SvjUdcHcqQ5gAaQ3SHrdXxj1NUGQ8OdGRw/M6zyNljUDgp0oUkc6EYGjAU1yk1U6TfZLY/QmiwQwn7hFZf6+ql
CGVrTCHOtWUGs/c/7Kg2/6DAyiHjA2a6MRetyAA/DjlUmch8wN5y4xQCpqWPv8G/dAGyneda1EkyHEAwDVYKidVBWTqairXMHvrRVKUfc6BbzhcGrgxpAbg61b7g48Hng4SiYKiDbupblMhAIHKNIHUAzEMhBnADUBRFszdl4coAmgJoARwPwG/Yk1CUdqsKNrt0pLYeRxKNryZlFbIHJqWRLaDfVtMzWLqufWqHCHf87KLXCHygzqHEQ/qGv/ai
HgpfUGktPirF3WWbsQybcikitIaWXRcCnQCo+lJk4yRVKbmzb66hOVowjAGPzxFoqBXNfSG6BXAHAg0MHj3VJ0g8kuGVw21T1w9yHN4YwJ8flXL91uW9u/AsBxQaTlDmhWH0LYjx0ZlJN+WrY0uxYrcs5ULLz/RCHQ9U2G/nRqGkjVqHdA7qGkQ4YHag72H0Q6aY0BYOHnKSUs+TB6Dy0Q90Vqgz6h2o4GlVX0HR7d9YXQ6i61yRlMN8dLNATTMH
dTT6GDTYsDKpfGGagImHkwxUBUw+mGWA9UoswzmHAansH7OnhHarfvcbDVj7+HJ+hqwEzZ2AIQBGQvxpUzk0A3ILiAKAEZBPIIQAF/dqLBmbYC4ElE1YWJmQnXd0o0yGfLFZSstjvd5UKRvUFFBoV0bRSCGyOYqHvwzEbVA1f71A9l6iHR/MgIwiGqg8iHuw4aG8vbLrk7YOHHzXIrYvP5yY4WuLJnPx1KYu+Vd3Yi65JaQKIAFUBUsBI4eAGYhq
NWpL/Az1THrMyHK6ayGDLiFGwoxFHQpOgbwZn+UJ1byEO2nlElcdeGFUmpHvRkWSzPF6MnPpVBqhhZzmfkZHlAyZHIQ+ZGb/U3aU+dZGOw7ZGwIz2GuJZRrvWGjaYI5FKM7fKMjHD3bbmSNqsYENxgfQ6Heg/u7/KdhHhg9J0yBnWNmxhCi9hoRG9feYrsA5HiLEf6GeI3xGTZoJHV4S0ARI2JGJI1JHPhotGYw979R4WqhPIGNlqnkpdmAPoAgI
FiBVtvFxDgBbAuo0BqGTCGICRXWFkejlx8bVeoGBDcAFI+HNy6YhTqw/pH5QyoSqo3kGL/aZHVQ3VHig2n6Fnk1G9A3qHqg/ZGf/RwyNkAWif4UryTmXIoxMTQ6Nibkbcum0FZw6ntpTZ36go9PDDRIlqjIKW0oo/0HYBFNHdw2Fr3DlTGaY3TH2rUcxrGEkI5hjjkeubRpnkoDGP7sDHalkxsGlmfNnVhVGFQ6StjI7E7ao8ALEnTz6EY6UHtA+
2HkY6BGDQ+jGDmfhAK5V+5PGNGLNwSIyI0mMyiNCU65w2daF8RUkmY+w7J7TlL3lvdazNmLtIzndCzFayLVo/bL1o4sHpGBdGroy+AkwXdGHo0+Anoy9HRdoq8QGaVSrTScH6bBQBmuf7wXIJ5BlAMaRx1FUA/mLiA6gJ7MKxW9GNGu71sovupieJvN8bc1ZQKXYDsauXVstfMyiOV/z5bvzK0LvIK7vdDH5YwnznvazbEY6rHtQ+rGuw0YGtY8E
0uQy5Ga/a8jUNc1Nk2X97vPkIbM+KnKZJR37nA0JzP0PEBmAKQAZVlFV6Y5hGBg9uG4o0r6Eo7Dy54wvG5moBqqZaeG0/rCgEkLyERPTIC+YL0oS42sAy45pGmwfEdQSeHz6TTXHf+dtKoYz+H67Sn7OTS2Hm7W2H24yBHO4+BH2o32HTTMxHaLcL7QFFChomV39w+ZL7E7ondBoxxb0IxNHoo9bHFfQbKRg54Sgzlgse+cgqbxW7HJLmtGyI/6G
Y41AA445IAE40nHqlCnH7punG3QBWLxSYySgJXVbI4yibszEKAn2gHAjAAHBnAP8q5rJwwubM3DFJXHbdtYUYqhY6YS8mm8OnkXHieGBsKzOZMdNUnNP+TWGDI3IKwRdVG5Y7+G4Y9CGGo8MK248BHOw6jGu42iHf/aaZDDdX6cY6u72gk6pMVudlbBQss7+YKLGsiQLxEmeC3ILMAwRj7xfxQWy/AwzGx/WvGgLQ0yWgK4n3E2kNOY8KHb/CtK+
WMWSxHg7CchoT8pJh7rtKRIK6yfJj3w/58uhXXH2fm/GfnX+HjXUUcrI7ombIyjG7I4YmII8YmORNibSzTiKiw9EVxw+283+sss3cRptzYzAHynXbEUE+2aOaRggiqfArWXj4LADbgnUFe7GlLZ7HbFdIw2E6xJOE9wmFSdgA+E3AABE81L96qYaMnn0n2I6AzOI1HGDSJwDB0uiByIDGzXYBrsRmhFCDaoHMyhcZDgYNwdvgMqk/SGR98bb8B/o
wkhyxorVAQ8Ry/WeDGA6U5LMkzVGNEwrGp3Z/GAI62GkY3/GDEwAm3vbLq4FViHMBYerTRWR6L9X96IMherL1NRwEXcw7Ao84mVxm6bP0Hn7UecvHaJu0mJ7Se7p/fw4YDGcIsUw47F/bIs5Rv+CPkLP1u7NZCbwykJNxLzAnk8g6PPgCLvPsPSaDcon0k6onX418n34zkmlY3kmtA2CB4Q81Gik61GHI3vqMRU9zPvYEy7yO0FgFqSkI/TYSf7I
/1uxCJKeg4r8MI7im/EzhHaSpfSek8FGmRTgnXY4Mn8Ex7HCE17GYwNWBtkxRA9k+rtvqgaJiAMcnaAQxiSqVDzYw+4chQEBB10VYhjetcc3IJnYA4CSZDRM6hpgBwBneVnGKU0Ex/am0p2CrLlO1ZyxJnJyF/EPMA2/Y5bnIXIH8/u86Pk6X8+U9knNE+qHtE/kmRU2rGgU8UmQU9x6bpaQozE+Wb4cb6Re7NereVrV6VUwCp8wICICtmNGtUxT
G0U9ABqY2F19XvFURQQyGrY7qnpo0HkWUW5AB0yOtw7tzNM8psBgPIHIoWWr4N0uICU026VV2bI9kWTBDBoZ2LJudd6exVwjeU+on+U4Wnmw/8nv44Cn9ExWm2o6CmObdVZKk4Ey4+EpqJnPiKQig9ZyaTyFZfW0mx08zGvXbSU0mVUbkmZLJtTTXrZg09DfQ8/T/Q96nfUxBz9hP36g0yGmw0xGnqmUcDIeakKzozgiKAHNRp1jAAtGHAAmTnAB
xsvcA7pqlgmgJMBlWWeMzk9UEGhWyoOlHjV7AVKquVHAlw/Mhw0vIepnk1XGwHif6VEy/GcHfkHWTYUGz0/+Hi08KmSgKKmO48Cnb01WmZwrsHuDa5Go3F9cVbPAny0SHJbJgUljmi2nNU/Pjs3gaR1AK1wCQDN0cU9tU8U/xaOHaJTR4fpmaHPgAjM5zGAYwtIgVPHYhuOv7bEoKFqjhZpkcuQyo0cwi+2VLHHJRkm80yemC0z8nm45oHW46Wnf
49emJU93G7KSkTuo3HresCnCpVapmHLc4Dd1PiorbqSHEEw17Jo7+mbYwSnFTX+zDU7FyTUw0aVo+anhk5anRk+UBsM0+BcM/hnCM8Rn4gKRnyM5Rnc6EsmyucSjTo4wCGmdWA0w2qg9+fslQOFowNDDQS3QLuASML3Go03h6elP76Zw7fxD/sepB7Ak5ryC58SOCs44Ej1Z6daWFqNFs4u6fP13VBJickox7bvZ8mgsy1qBU6n6hU+FnxM2Wmos
5rGjExjG6UArq5FaID95jq4rCUbHpREuJ/UcqntM9IzbqZrA3IItR1gNpCWgEIBUw86g3IJsg+ApshPIIaVjanyBA7ZcKS6VhGPFke78s3uHcprkojIIHwapgliTw+lG3AVZAplhBlsmB08syNB0wyYxqurIK1ZHl9cVTq0orarv8XVivrISadnAswa7vk03GNA5ZGxM5AAJM+Wnos49ntY1FzZU3HrnSAndpbeZESDExc99shrv07lZTMxD7Okx
/Ju6Kr7awEnAVYP8aS9Z011cx/RNcwrBtc2abFDbAb+k6angDYj7QDb9bWjWb7WI/rne4Ibn58CbmNDW6nw4x6nMMw0ylgCF0/6XfiD8kZAefEKAUrMwAguggBClVRn8eUR8L1Bp5PGNzMbiu2DgKH4rOQs1MpArWac/q20mzEpqcwBAs9wbwrWwN3SPeVbVksduID03gkOc1Vj80xdnhM7knVzjomIs3omWow9nSk09myU/xL+4yOH+YRuEDY6i
lnAX349zdA72/Xu7p40P6NNPw4jADAAsQJFqQ4FmBgWB8whOeKA4ADhBGylAB7qTUBLHfWwkefoA48iRgh04lEkc6+AUc97ihA8TlxkZ4LCU9mZx85PneIKQBydTMU8lu6FsosLduWCVE5mWI8agqm5YdMcVZxHtJw5I5Cj5Yf7B3Rx1sg95by822TzsyRbq84Kna8yWnbs5FnG82jGRcyQ1NAEzzTQ25Gr1DhwZfT/LqaQssMyEbslwv5GUU0gm
fEwEHYo66H0AH7h7jBQWdfYjo5LeVmQiZVmH2dVmJAN7nlAL7mwRpsgA886gg86SFQ8+Hn2s5PKx4cBgujZj6Nk3ScNtqQByIGYhDRNjrmAIpKmgMxJkwxByLTfWDL+ecmqWFf81bPbTJjTOVodMCpk0+TFPgyDHFE2DGn44X9cg/xmG49zn+VVomSg7hC1+GYguE5oBDdJMBJI1UBX8pGZzEG6Ab8M6hMNDFnMQcgWA6C9nUJk4wNjCCo/nE37k
3OjiY+J2mss5nqe0zw0BHEIBkwzhBMUxYCR8+yCmCVuHZ+mnnUE4+qLMzgi3QEkW34KkXZ0wIHRclzKZ+v1G1fLbSw/foWyPd26CbZwI0FInpUkx5D+MnoE1E1znT0yFnec1/HGo1qIHC84AnC9mgXCwOl3C49S8dd4XfC4gX8IQEXv4VGs49TEU3AdIjajqIS/5csiIWrLmu0/Pij6YzG2gnxq9U8DYaAw7HicZYp0A0YiiI96GIM6RHGC03qyP
DN0AwJIXpC5MBZC08GFC1JqnHAibT8ccXGExxH6raIWM/JxZnAP+wzENUpFQPoBnAOiTcQIx5ZOnUBcQJnHTk5HnwZr8kYWSssQuQmIiTsep1PCEVG2g1kHRnSqFE+0Ls02mbzC/XGsk1XmeixZG+i3XmSgIMXhi6MW3C1YgJi14WhQD4XJUyQ6hxAEWILbWnhw25GPlJ8onBVKMrJeSCLzMljZ9dsWAc48yUi7MAKnhpAKubmLvEyvG9i9kXDdW
8bjdTgjpS7KX5S5BbZFrFApzeAVUYJk5rIaHNA+Ubszumeoh/D0EuzBkG/dUciuU+ekx3SuqgBTzmqSxen+i2CA6S84XXC+MXPC1MX2Sx1H0AAEW5iU0HIrYHJOTOsxZPtaGqUjhqtFJPGh8xLbkE/sWcix0micUi4fguMG0y0QFzi3fTMA3QWRaeKzORcK8gkesBgS3I4wSxCWoSzCXuBvCXPhgcHl+X8XmE+kL+HA/c+/ZMAGQQfqWgJ+hXstk
KoAEBAhAFiANIL57ps42CgCRC02lMHRKyZJJTNAPbJuD8jBdVWHjC/IG3k2hTIYxYXySxAXKS/VHbCyHD7C44WvS2MWmS76XWS9MXm8wcyAi2di3NeYm7cQcF3EMqny0YeZ+OpxFzgIpsJSw8yDhRUAsQBUAtGNIBP0CAmvE4rDcsyqX/Ey4rPy9+WSEyAmdS18Dw4j8HIxEunUsVDo/hGFZJAXOXHw1B0Gqk8UZQ7aWB2bWGSVtnKlQ7g6YYydd
v0Rx6W4yrGPS3uWRi96XDy5MXjy/6WgE+sgAi/XtUC6hMyCef8rjaJKomJOH0IAP4Huqch4ddlmEy8QWeqUBXDi97lzqicW6SuJXsy/Fzlo3gn6CwWWUqcK8Wy0KA2yzxSaCl2Wosc4Bey/2XBy58Now7QH1kywnXYrwHIzL4BqlFHa/2ORA7KCMAjIDuMqgNtSI85Tqi8V3Tl0tuBYxUcxrIQ7D6HV1ZJuAz7OM0only6CGZY50W67cFmXS1uXl
Y3YWBixRWGSz6WaK2yW/CzdcAi8C6ryybccjPvwvI5T9U6REw+uKP0nEwkWEYsoxw7bFVjM1kWxJKqWz85vGcEYVWeAU0QhpZBWiPlJIOiTSbtfKmtrwwUMNwj5X62uzLnwwQ8ZJn5mA6auWyS5XmNy+FX4Y9dmyK7SWYq1RWPC/FWTy4AnIIwxWHQA5X4s5FaI2JHUFFCrFKBHIjQrOdNFc2jmRK9NHEXGxGMyydWpgxcXZK2an5KxyLFK85szZ
JgBTK2wMLK1iArK/AjbK1AB7K+lMCI91mDsQ0yJekh8ipp/a6gJYcTWR5BDiW9pPA6jCJGaGJUODXEfSNHoVI1jUAyDpk4gSOdvepSNdI/71ICaYXKo8FXj010Wwq9YWi09uXX0ruWhi/uXGS7NWWSwlWZi/4WHQLLKeS5CnLA/FI8OmuKz5TMMS0Qec4ywFH4i9dpPIBvzRmkKAnhqVXGQ0mWKq1P6qqw0z+a5BKxgELWH0+SmvgZ2ZAkBmQuYN
SqodIO8ezPjEhztd1vaSVGV+hymHtcAXqYUNWzswTWKS2NWbC5FWdy9FXya5RWDy1TW/S4lWzAQEXd1QEzzHhCzXyiADy0UErsJk1NpxNzXCCzlnEy4dW/05D7pxk515o7T0To+bmys3JX8yzdW8A8K9/qwK4mgEDWQa0ox4gODW4AJDXCUdHXVkxHHQbUZWDSNMANIBL4Ytk45CAOxVEPdUokgkazeRajDTkHj9fhJ3pQSdutOWP1x3aUpGUev5
WTC6XmBFfWHx3WybIC1dnoC/znsFtNX7a8yXHa7TWkqw6BgdbiCFM3XNiYJICGFd7XcYerr9miEFKrq+XJYUJymA1iBWQE4XhQf+WR/UJWv5cmX8U1jn3DvvXD6xZd+Hn8BQ6rupsdkEcJ9QHo7yJ3XvtgSWB9F9sWNs0tWi9NzPw9xs1yyNXszcPW/k6Jmbs5ABPS3bXKa1PXaK07Xf/gEWuDatXma2R6lTirESoitVUYN1iFVWTH5w06HcVOfX
xayyHDZbTx7YxmXyG+dWcy5cWsAxVmFK4nXnNiXWy6xox7zlXWYADXXMAHXXchaHHhC9b76Aw0yI0GqSRgDuNzSDQUbgEBASMObEKAPrV5azJGbWecmY+FMyhznIFYEi6U6M66RNjMTx5ExQzQY0uWcawmjc0xXnwC6A3Ny+NXR65A3x67bXYq9RXqa/NW706RcAiyWbLy3Wm5FQ5xvGLtm8SbYmq0bwAW3sqktM80nHQ9VcgozDaSMFiBEtufgR
a6OmQ65jmWY3cKhQKE3wm+ty0owo3Maj85bXUsBFripTXEOo2MkVo3lTsCSiNPfH0WeEbAq2RzDG2AWza6NWia+emIG5NWoGxPXYG0eWaa6eWkCw6Atrd4Ed4SmtckhV67BRMBOkSaj9q6vHom7kWBLYqbO+YansE9eygDYPK7xUj7Cy85tBGwRsRG/oAxG/blJG3B6ZGwvzAzrw26A1xHszEaqOJKFHuMTDFRACXWlgHbgSMJ/ivTbF1qxTu7hu
kA0E82n9mIn1xlbOyoe63o2+6xRLexSFXvnebXqmyJmSa2OLyK1Y2Zq3A3mmwtWyk+UAAiwu7GaweqB40GRZJG0H0SnWYZfvWE+QsimyQznSgo1ajUsLkoipn+Xh05uHRa8M2Uy78ycETi28W00AIK8k2CCA7iginfzKjAN4VKe4xMyO5VXyjEdxJjpTkk/pT90zxnuU3xnhq8Y3Gw2A2SK2Fm6m5Y36S6C2mm3Y2ZM5yWHQB96QywPH7CYBtViX
TnXpRSx2ghlCd6/uyqRUQ2yC+uSVkxmW/BaVmvQ7Q3rqw+KhXs5sDmxQAjmzQFynNgAzm9/bvPVc3WpfZ0iqfWW1k/8Wi69Iw9GGwBnUHABs0MW0tGcW7X1auQkRvlkaDoiWnK8RAaoMcB7+kkhtjMkJPK/L4PGAY5OIpkGjC0SWz1sl6jKeU3R2b82qm5ebwG4C2NBTbXJW5PXpW3RXFq1C2HQFX6IU3C2Tbu8KFKslm/vZkHL9Vuy8tt7zB8zz
Xh872niDswBIxBwAJQJE3S/Hq3gg+4d+24O3h2+1aQhJJZSwqcwtwF5y1fHcAuWDFLvEp8SATqR62U6O8ahsf7DKWU2As0Y3KmyY2La8TWra6TWy2xTW4q7Y2q25C2JAAEWzA6vSA5OO4TmOOG03Bk4g9Cj0GFf9mzuUfmxa/q2DU9fTjU1M2Bk5bm2RXM3bqxztfW/63A2xUBg21DbOMS0Bw21AZXUzs3DK02XszDQ448sQBgxa+rRxvWcOAEBB
6AKK4q0nJmOqbJGo6LG3xnM+WOzMfqfhJywLBUFU1VQC8skaRLe63y3D0wPWnS2x7jQSPWUrjAX6myC2K23NXb2xjGAi5iGF6+3m5FT85KWAJyGGi2nL9dhbD2vxW4i722Ei86gTSs6gh201SR286H/2+O36Bhp38AFp3GMNS394+DMQhDyo7AQtUvEJdT4gwUsOlLFAmrISKM071DoIaqDd08qnH4582tpd838a6FW/m0W3RW3zmLG9A3rGw7X4
GzPXnaw6ABw8xXNWlT6pbGuKurMFZ9+IHUVO+TGg62fX9O0dWhgYBnDU4BnQM7QW462KyE65a2Odlh3qlDh2EO/h3w00R2SO86gyO6fjAMx62C656n6Bjz47zm5Ad6voBEILMBw/h9XMAEckKgND8oa4k5jYRt7qzL8lYEqRwfnLn1N5aAp3m8SWcK03iOfQ2H+hR/Hgu9SWBOxK2r2zY3p6y03Ziw6AsY839Uq25GSahFBYy4dNvmerrqVZIiCC
5i2Fw0FGzZD8xknoYhjwyfWHUVE3yq8BXyVM92lvrRJjww1XkS78IC8q83weBKHyqnYlLNHN2twAt2YGt5ne2S7DOU6U3eM353gG0K31u5dni2+e2gW1NWhO402ROwg3HkQEXe43F3Y3g90hCbCm4pQ7Szgr28CRQHWHuwQ2f0yS3L6y/q1yUVmsFiVmQOxbmZm+B2/ufM2Odh12eAF12jID13Ahv12qgIN3U8SN350QVK0O162MOyMUnwJIA/gE
0BZ1lZd8AIYghHPoBPIGcBBcaN28JVKdqRcQYO6RzQIyMj1YCrmB9zNo3pLOvLE8vTrcaljXMFPtmPeodmZxMdnlux87F1f52C2ye3/mzXn+O2PWwu1K3Ce1F3EGw6BTE/W29qeRTN2b6R8ON3oFfb3mLQ71YGewJWsW72mgcyDmwcxDmagFDmYc6QA4cwjmz8vvmqALPmZGcQBDXuEBZgFapotbMBrZCGYSIqFQFGIjmn7YfndW+m5MZD93rtCL
5yIIqAnwJ5BQ06UXXgz8oyHvzM1W2IHUoOo3AXBsXT1UgppuIEhRJBcg05QNW2fZ879XQF3C2+x6N1aRWoq8C3y2wT2b20T30rgEWa0+Lm1qxXZnxlAGRTevWRtWSb5Kkrif26yyDxQMGUOtxyRm+ZmZoxIBnqPTQDc3ahjc7CaNTZ0aIUd/2Nc3/2L0AAPzTXUaTW2BniIz9yvrTcX6cSpaTDQIWQB7/2tc+APlTZAP5e42XdulUBs0A8A3QIHx
qwNWBP0K/lCQAHB4RpIk+C8OWLO9kxxTk0TfgJHJSlonmcaqBkFJP14FjRnnkeo+oLMbnnQHvnnDDNInl2YeaOO2XnUvfhWBMxkqh66Y3LaxNXd+3j39+9e39uxC2xOw6AyO7C3o+4er93v7IKaQl4yVerq2wS297u2n3Hu72mhMJEiRgDhATXsMi580FGF80vn3tKvn183ABN89vnd86fIS+7MVbB72nWbPEA/Oq+BFwEgc5SWYguy4aJxgBQB8
2ZW1PByOnR27OUIdF33+HOYPOfFYPVJTO28OBIG0LbcgRJcxmGWkAtXseWZalUgpf85yYxyQAWWfe86mPRIPLC90XT2zU2S2yLEya4oO9u5F2Du3TWguhXKEW0mIaHQPnW09iU4XW7TjB6p3BK0qXfEyz2zM7bHlfeQWhCxCiqC/laaC7mXiu/eLpLgw2OdiI58B+sBCB3FMSB2QPWJJQPPIHwXT8bMP86x7mes8CNbo5xSKAOFHTgC0Av1fEBPI
ORAnHFBz8ANUTkuI4B8IJwBK5I4hCupVUuZWTE8cSubT0VE0rduHE03Amxy4/28aZYu3coJsYN01s5TNItd5KtYlz/hUPQC/m3iLX72gu9v2xW7hD7GzxLkC1uYNB1ZwivSbcP7v/KdwzRT2DKnSW3lukR9vlXrtPYPl804OMli4ODAG4OW+8jmy+7dTfB/4POJItq9AK9pQh+EPIh3vnW+zEPnQ3EOvHqz2TRqPC/2M/76JIaIvFakZV1rYZCcs
xlPgMfrco6eReuM1xFUulDUKzeGjgr70kmk0srHPUFQxKP1L/EUMPGHHIfO3QbxB7LHj28K2ZB2e25ByHDcR7fZkC9gSilc0GvSAkcCY19mryEWSeWHxXBm4zH/amyZ9W4A77jFGOJ4sXighmFYu3h4gQAUV3UFXoacA5OxjfZCbkB9CaYxwZWFe0HkGR44PNkGvnmR64PqlDvnf5J4P787GI+QqcwpbEADnWUNaC8lbyjGgkhrCbepHSC/YupAm
OoHFs51NdWYMpG+Ut4SiP7Rz830R06PahwC2ce05rq2/e3QKHx7rXUWx5KuxaJomWiYMQe0ooCdbYixl3hhzqnWVCeiYm/+m2vcU4OvR0AGnWPM/XR0Bu2cxkdGmm4qRhOTigJyZYkBpK2VL15Kc1p7XqTp7yXfp75HeN7pvUOHIAGkA3YN0IWC2wX/c4Hng87wXEuB61sAIp0kmBIStpCrYOzA/XLah8xnQPVgOOuUZ1q7F5OTMBQYnOM6f3WuD
AJzjw4wVWgWgJcOsDMG5bh/cPHh9WBnh9BPEILBOvQM4A42/7p9/tI8cG+0C1+Ia86lKIw8OFb2o0pTmLzL+lgPTZ7pGFWOnQNZ677Zm6NkK33UQEEARwB7A1GcCNjEJgB0DIhKEojS2ywFQZHId4wwkLHc8RolnvgIRoa4pKryGejCTgJyYspPmAxouUOTs6OOfe+OPMeyK2sRyF3XvbK3u5MgWgzmf3S6qBl/URd2Buhk4yHlVBnHo/2dW7ln0
kceKSG+gnbhhHgYSL0B7jKdQo8L/tdff3zee2mOCEz9akB5VaOs3UJ66MlOfq/UzgRpn3CAKDnaLDn28+7Dn4c6RkPB3JPV1n6QpzaP0AIR6Drwy1wvSLOSyUjITZHnAJgmHKwAQHCggjk25xTNeOeqbyEO/Oxy3+7aP0mA62HQIJguO+eaArS5O/HNiO3Rx5OrlMgXuS1H2iRzza8S0R7VjKerwAwNr/NXOTu24HXnDKjmX+9q4u2+/2Jh21pjx
8p7mnRvalPUG7nmD1ORFO8IBp+QZTRMlBOxyPsJvK9jevLMAPx29wvx3p7RvZM7/xxZwgJ4zBuhH1magANnqwENm36aNnNAONmq2VyHWSkxPhgMcBYvGMyChz8o0vKEITlBhP9oH4rAchpS4LQcB8J/+7E3VDOSJ+JPle6r31ez36te9UAde3r3jCZjO4J0tx6liHJcSomxa5dxOSZ/YLCck0tsnO3NaoCJPNHWJO5vZZ6YwHVOwQApPXwNW9rtI
aJc9rSFRcrOnGsjb0r1ICpN5TNdTbu4kVctfqfgHJIqPUbD5Rt85FAsv2EzUbWYCTNPDgHNPHSwtP4nc6O6h9OPhVfRWa28GWTJqGWvOAKwz9RL7WNUpqQRH9mAm+NHMuyMOYUKFZZavq2DiAoB0cHag8IOngxgVgt454nOk4MnOjiCBnx7qlOB5Yiirc80abc8aa7c9MJ0507ms5/2hsB4XXFewaRuR5gAAh3yPgh4KP9LYl9ap8jm8lilF65pM
52ggFY8RrgyRQxk3tmuQJNI1opQKUulGWATCrHF3swISPsB/MRpZ1aIO5lA7OnZ6t3B60Jm3Z1OPXRz4yvZ3OO7rmT2EZHjEx7OxXKaV42Tpjo1yOMs5tW83LkE3EOTpzdOCs7J65bfJ7Hp4p7qvJePigGPOFrnlE3ti26np+/PFbV/PnPpPO/5+xpRgOHJS0RAlhK6cBgZ2eBX3bp6RvZS6v3ZDO1+NDOsgKROLh1cOqJ0+A7hw8OeAE8P4qmQo
URj+PzIIraDOd1jI5JEyyowbaTgNVVprqY1I5GFAuvVzOvQMrb0J7xOluNTPTPeo66Z3cxuhGsOCB0QPth0ZByB3sPw84JxiF+DPwqkrbaF4mxgmZN2w/E+pigAUtR+j1Mu9o5C+nswuYJ9zO2FzxPkQFLOLPTLOdHXLPvWArOSgErOlJ/vcRQMQv1MNFiiCzkhPbeYdZVhph2sCZ6nF4gAbQAQAQ7blMoACRgabuU5DgHFmtJwPpLnW6YcneSV8
bY6CMYVMtWrBDo7xtl1CqgGQUI/6iJnHZPPeyvPdSQ6ON+xiOt+8tO3JziO1p0tWmKz5OTbhOUdedXyEvDf3eh2ZMACjQZQx2P6gqnWF9WyTgu8PcYWl6ZgUp/MOaG+YqMpxamspyj6TTbTx2l4EBq5212DLrwDNAAgA7ucM04AAX7CADAB8F00AJfIh6yOzQOFG1GaHRkVpaoOSOZAUENiamQ08ZJsxGHRC8RjVq0DzASL5jVxmPrhITbPnWFQi
h3Z3nRkv5p6x7Fp5vOA+zi9cvVKmi+cgWrdX3HTu1G5Cum4whzqsYz5yGT2W7l86R1nje03NQ3IEkXUsBwBrBJyPHmRX3cAFX2a+00A6+1S3hG1UAm+wTmAotEOiW1bGO+6fHSW8WLgRjCu4VwivZ00EIYa3WFE+LPlTJUJYE2Fp4C+Lv7xDHM4u3lJMyGnpTd2/CJprfu3qYU8vnZy8vXZ5OP3lzF9Vp/z68R92alxfaVJ1U6CpRse9+9CPsHRv
iHr5yPbcUxLp95vq2WcF+AZSPcZdV3zt4iDGhOl9M2C53z20ZQL3KFhMupl2aZQo3MuFl/KLllzABGu7lOIAIav9V4VPvZeSoUV2iuWgLX36+9ivcV5WOzFxeM+K1yYXSLbq3K/za2pjJYCse8IWocxc2V+1YMcq3SRBi4I6l1Z4YpQwJ9+BsYw/C9rHl4u3V5186nJ7RKse5t23S8Q6Ayy/xDgG1mD5wsY91GGSdl+UrCtC+2c+hi2TB0z2lcx3
3BbaHXyevdOXp6/POvc9Pr3Qp6NRIsiUZHHLmIr89mF4rbxCcwdAERmvRHsUAJ1+VWsoJ1CgQLOvXp/ujlpIuuRRMuuwANmuUpbkN81yuFYFweB4F9+OpF8gvaZ6gv6Z9kotALauZlw6vFl86u5MxIuP3fI66nbIv93rjbuxL5XTRA52O2sxc/SDRolgFovGJzou0J3oukmFwuUF1qI0F1ABuhLgBGZyMA1ey0ANe6zOqgOzPzdZzOiF5+vSF3Pb
epz1NEmowIflOPjigCxPOrLgyQmDxbaNLD2QDI07tF6wvoN8LOGnVn1RJ9JOrPXM6uN/LOO55JP8AIpPfkG51rF5mBbFxhGN0ExB3Fy4uvFyo7pN54vNDAt73DuRMItvEAoAPFtipiZByAHcPiAA1KftD76IyA5x2giEhryLcmHYc2BDDs4Iw2PR86eex2BVzATSS6bXslxOP/e1AXA+3z6TAxzaRxD7OTuy43FM7JUJRjSzZyrH5AgwXwXrG50d
MzIy2AKlgshW4GKABU0Pu5kXGQ/FBUcgZ3ZSTFu8blox4t8MbKoMfNnM8jwghNYS8o9JJLN4OrS9rHp9/Z9j0FCv2cg/9jwQyA2XN5iO8l1t3Z3UaHZdSOIIrX+sD2v1Ovazf5oE8LCwoHH4YWHWiIt84TdWylu6YqSucpT8XfjZvpkA1Q2ZK2lPzV0Mn6G2V3KFiputtepvuzasJtNxks9N3Fnvi/tpjhxhnTh+So/gEaQtGCRhJgIQA1thSA3I
DUAmgIqSeALQ8gl1G2KOwApsajmvE+NcB+WJEuj18fqc+pZo7+It3s2+87HN5znnN85O3l25uPl61vHI15v0YkEX5YuIDlpGLDn+uedXBrZ2ImOmmlEaNu3yy4GM2k+AAupg8fjYlvpOXAGjvTRDx0yBysQETuv4psgETcEuo6mWYd0kIG3thq5w5I1keLTQYY4fqOPsbZpqt//WBZQTpnlw97nS65u+O7DuPN21uEdz5uS6mlWxRO70z9dRxae0
8UvSP5G8d0/29dWP7Kd8161SzFPTi7rmetGziFt33z85wj6LV/MGrVwvdztxVIrtzduA4HduHt09uXt58MZt4cGqueh2g8s6gjAE+A3PdFvBnDCMKgOM03IBwBf7a+BnI2suCCCm4uWLHIijMVpGx3yEf8vv8YFNlpmwCDveFZTDhd+Duj25Duy10tOPmpWvPlxyWktId05d5qiRRoeq/ymYYcvt3p4rTC7wNXzdFFfvTNdwbzbqTAAhANWBBzVA
Bkw7p3CG7ruEh9mYO913vv6r3u0hy2BiaomKtjIGjDJxAvicsxkVcgtUKt00WE9Pdqsg2Du6t1UP1yzkveO9j3t593jd5z9wQxRXKz3jwKz9dyp+OrY9Scg8bPQq3ub52fWB96JWycfNugM3Nu0A6bukZWa346xa3iAd0Ifd37vjZcdjhxsHvZgKHvw92xU3d0dvfi562cB3gcNMBLyYANgB4gM4A1tkyFDEBDmOAHVBSzgZuxuKEgzDMBRHBlyp
xCe71mzLYw3yhnuKYTm3T/Zvusl773Gt7kvC97U2Cl1KuZwqGYUq35u65lbyu9t3btMgp2YMdxEbJwi679/sKXAxUAHiUpdTkmp0yd1cKTMxNu1VirnlJ+SoxD2BwcIJIeIg3j9YlaypUvM3uoKdogD/vyYTsm9qIXmkHrS9UYsKzIL7S+0XRdwUHHvdDvJdxKud57OOtgp+KlxanKplgeYp5FlWYMaPq2nQ5bcdyDUdi2yzGY3If9WwcHDUwcHC
uwsOrq9/vlh2tuF7pMviTEZBED8gfUD6lh0D84BMD4lN7zSVyAbXWX0M11LPc8CN31RxijANWBMADYirLlvUY42MXM4ID2o90Xj6WGKXDNKEEL9q4wjDCH6j55M4qzAsao/S8nv+fo2VCTnuKm3nuJ3XYe99+Y33JywfXLGYhy99g9NB3+tUyLOJqoH84NhbtCO5mcgNdwEfJSwcKtGDU9U0JnY0iz4Gp/nmKTM4/vqd+4ddj56AXq/oBDj1Cuvg
ZM59l7lB7JvAm2j04gTgCj1R9TQZxJJaWhrKYfRrGsaN9xb56txj3892MeK10wfJV55vI3rn5OtySOBdYd9tMjGQfI++V4Uy3utj7+3dW2ce+16mWwj1gsIj9AOUx2B2Vt6V3f99Ixij25BSj+UeoAJUeOJARA3C7Ufay5MGPd9Yb8x7lN8AIaIjACE0NIIK4sQFwFoVuNlSCPQTyQg3XJ3D/kKWBHNYCpQZOQrZChAwnx1pAr7M22x2Pm0vO3ND
Qexx5z6od2KuYdw4eD904e77Ixgkd4j0xqdUddwQlLem/7JYzZxy0T/8NIt7dTcQMjFrQcwBvU33u2k1ifDxx2aDLvaf4yT5RnT2kP63e8I1bMEzC+niMyUjupZTxrjBoT8fZvH0EATySW1T45ONT6CetT/YehVX2TD9/qf2m3E5ProCpu88gooywQRZom2zua8IekXVbG3Tw/ODFbIbcT5/t8T9z3Y69EeSuz/uR0QAgOT1yeeT3yf8B0cghQEK
foBqfi8j+6mTt79XgRgNs+0ojFJAOjqeFloxv4s/6jIBwBcQNWA2529v5Gxx0QgjDXwNluLqWK1lfaDs0iYM4lduZpGyYb7SY/QMeA6UMe0R4mfRj8mfxj+5vJj1CebpUcB2D7yXUJqe93VHiH/Aj02FlnHxeQriSh7SWfUUwkXcQIcAKgBEoNgADzpDxdPGY+cFJbIPv6bIBfgLyRV1gIYamd5dYcGSxcijL/KYHQrZUyFNxCYfuflTh4lSoonE
hd39igT1vuGt5qeJd9eepd7eeZd5G8jgJmf4YCBur1AqvajkUNL9+1kPD9aedx7AHGQ1BeZA9ifWIfZkJK0JfpK2bv4fULTiT02fKpSOfjji0BxzwahZgFOfxIzow5zwufPhiJerDUwma50HlLGNclcAPGTFQF7Bw8mMBs0PQBU66/Ehkdc2a2lR3uZp27yq87TA0uvKo+N4gXPgEbI/ZXGAqyefFA/Gf0e46OKL01vGD/UO0z3qfZwtMACvQ225
FeGxjHIkqhS4xaYXVzBHIf97fz+ifd60FHXFe/FQwCr2XT0rnyz1Nvz8/TZ0rzEKqpNJTzO8RtrStZPitP+viwhuliNCxdQve+3ZCQRfOMjpkat9QfSL7QfS15efKL+Cegr+tSns/MAlxcroCOGmmP7GaecC5QJ1fEdSuL/g3LY6O3cr1KOw66PEEshmknMp6GYB1cXB+QgOoM1amJALpfOsAZejL+MBTL+ZePZnsC3VxpfmT1pexl6PCcUX2aKg
B+S6gLQnoRhQAsCZzZNkLxovR45X3t5vLIaeZDed3lW1fJBcmoT8AyCW6ERUYefFmcCGUezASTaxDu6D/5eGD10Mi93DuvlxzbZgA77DT9taFKpsY+D3FLbkLH5aPXzd2K/4ebT9seXA3MAcIB8AWA6kP0i1JyZD3AGQj2lvR4RTeqb+CXhjZ9uU3AZo3TO2DMyMq4E2Iimwbz/nVyo1UZLEj3Da+87Yb7nv4b0mfur65OWt9Lv4d3RfGg77PXkf
ejiDLUmY19UuBJLaVj40IeUr+FPkE4zecu7nD9KxJXTb6JfP93mXGz7EfST+UBbr2/6Hr09fsAC9eRgG9ePr3pWKKtAfWu4UfyVIQBlGDN1pgHSArhJHaNIIYgX6gt0n4oufubkiXzk0XGeJkkhIkwhbhosqDbSuC0QCuDf0azpG/emEaSOZYf+68Kuxdzx2BEVRedTzOO72/TNKoJjeHBL71tjJXyC+ipmPzR4tULeFv9bz0iXAwSBnUL+WNII7
Psr1hH5r+MPH5/kWGmR3eu7z3f2rXG8cZzzL0OmTnqr68J3TA2z078VGKht6Myo0jTxb2mbJb8Mfpb11eAr0jeIT44fy76Q0I1gACEOhAlUT9mN+L4danaXBaiTiTfuL60mcr2R89d5VXSG42MI67ONX97NGZxtJaipRdWltxbvJLzbfmzxIA/b3DV6AIHfsAMHeEAKHfw79gBI78dG5ox/eWuycOhz+SomgE6hlALoxLdb0AWgPQBX2vQAA4HUA
EACRVsj3I3VCxx1dqsq5bXkEdsjAKE+vB8gJKodqpVYqePXkt2874pNBFYK2/LzLfd7xTMVpwfens1cIq77uRF3G0VV6396/LD0VaDLKJSY1m4/z7zXYNpgAXKI79Pr+Bej8/3eFD2S3h70o+HfusxZ04XbmVGAU9z5aHZ90JIGH5OuZgACcJJlY1pJm+HeW/ZvVuJvfzz2t2eH4je+H/kvIT7RebpRsOK5f7UdMv1u4pUkJgrEY0i8nrfSbxifJ
oxo+WvZ/25ZifVgB99WY66a2rb0sPcA3EeyPOg/n6lg/dnQgBcH/g/CH8Q+eAKQ+/xQDazq5deGy9pfcpo1z6CfgPLt7xHaQJshDEBuBJVoYhysg3Wv3EPtbyKyYRBt8Ts101C3adcVNjBQfsa1NPcK1+H1Ty4+d724+kTh4+BH9rH4fqRSpO6hN/0v27Us622EoVrfvKoUkOlLry77zNfdM4DNvKBQAkDQgAin2o/MT0/eYLwaR6AIc/jn0U+ge
8Rsr1Vf9zLRd091Bq4HSBd3+n+GxKwxC97VsxtGlqxtx++vuN73jXfLyMfpB1eeerx7Pgr4ffFtbMfNuQBR7++XUDp2s+Ax8S83uhErPpfI/I57imon/ruYn9gsadp/fHY1FTf79Q3Lq0Se6GySfgH+gAqnyRganxwFNkPU/Gn76xJgC0/bOm6vKG2U+YDxU/3DvEEEACNmagL1gXr/IxJAM1y6J38Bc9sInWuPM5LinG82lD0OiD4O9W4jk6c+j
kWWH3n9Qd2ma82yzyRV2oGwT3LfkbwrfUb5G8+fMI/XKts02gumm2gVUvsq+AoWWMTfb963eRD0JzsCHbhXovQACWxwKxR4Q2jbwJeyV+SpXX6fzWbmZ3jLfQcDPH3TkzL8I3+1ypU+EwIB7bvC1X2xkQ+YU2w+cU27S9DfOOwXebD+LveH9M/5bzRfFbzdL5EuKqNcb3ZYrQl47AT0Ugx7ppNj+E+td0fnfX+6fVc+kTF+fcZJm6S/Ft+buJL5S
+pL/6G+XwK+hX4YgRX2K+jSpN9dSfQnW316vnFeSp+XO0oagDVgaI313EEQL5sAJ5BnUIqBNJ0ufyH0XisotyY/G/s0HLzEgBzrGKExMN5WO6w/NX573tXwALC768uIXwa/977qeYX7B6zX0/BcSmQZxH+0Hrp73milqExiz06+bqY8z8AH7xjHRL5Sd4S2TjxTuLn0zecEcB/P0KB+MWtSva2tEcgXIGlrp64witMEwZLCe/pA1Y+uWxncUk/Y/
uxd68eU6C/t7+C/Zb81vDXwW/jXzdKAEkuKPTEjkqewxcwA8LDeQq3TNq8le63wbeH99B/jb7Ibuk1gtjW3Wekn4sOIOysPKFrO+DgPO+21lracIMu+3IKu/13wlFCqYa3NL+U/rrzgjV4TwBDEORA2AF4XvIkrsjIFegnwIhf/mXUet39bS9yJY0JbBWFmTKb2CRaotSvZvKHOODfej1xms97XHSP1w+wXxvP731R/H32Xens7UBX326oP7nQ0k
W/Pkz4eAt8ZDChJTUnYsX+SGgo8QARgL+ACTDIBe7wMHcXy/eh78CMUv2l+gIBl+Z23hzbIXQ1ZKixdGxyrZmVIEcXP3Kx/hXT9ARbyv0315fc24e2t751eKP7m/8LjM+n38F+FWyrf4cfppM+H+UCysi/NxSGkSN+oqEvwB/tU6ce+P36+cpYB3P9jfSCT1EeKX+a2gH5VLtP7p/9P2v9nUEZ+TP2Z/XIKh2p3zb7rtLlTNkFItqwF4U4yZwx6b
usBFQCYxMAHyA2nxGQGfSWiYFK1YpT2FBTOXzPR9QmmFy1m3M91QfUe0emyPx1+/P5R/Ar1C++r9rHRNaF+B3lRxgPFwkKl6dTo5DHwti1x/775ede08Z3KQhGsSMFwazn5E/5v02/FD/SPnUPj+Pcsg3glwWwuQul5nVv7oHP6Geh3n9+pQexWMgX1Cd03YzWr6D/rD4JnbD/5/of/vugv3D/+vwsXQy7JITmOW+4pRJ76k6rzAydNeLY7sWdd6
T+Kz2z2AM+eL8u1eLVv90uxP/z3IO5QsLv1d+bv3NZKqZA/Hv1ABnvwVS3V8138j17Lp39dpvAKpctMJCAxI9D8ZgHAB4m/vIO9wZuHisO8MOrRlAXvSwGgjdsmfUmIhn37SHHyR+BW05vyP5D+uv9rdHNZ7OQr0ZAYW1tPK94AGRBse/MJtgXvG7D2vambHpv9x+270JzlAHABYRoaITIMKPl5t6+2k42/1f9KOcEeX/K/9X+ct9DoH6z5VljUj
BWiVo1pf1fveVJpGEe7ZLYz1e+2v84/154L+of3vfer7eaw4fQTBr5XLl2UqmuK8NFxrUlf5yYl+eL1bGG/3lfCs3L2IUVz2O32JfiMUEKe35t//Q87/s0K7/89hQAPf9MAvfyRgff7I3in21K/2cg/Bz0VPfb+bqgILb9P0Ju/Q303hYjQcOU6yRfcDyHxtVDp3eUTucqBgmQBOMDZ6lh91JfVTRzZzRk0HJ3B/C89Ovymfbr9832YPO88ZwlZS
JcVOQlsYbYx9pwiLc8xcuhriITolfxaTLtc+7yv8JXE9/1fvWWAAVW2VXpUv6H6VQ5UwVXjVCFVE1ShVZNUYVRuVTNUsgGzVQBhc1WAYGq0My3+VaLBAVR2VPpV9lVjVJ1VeAJdVKZVrlSRwIQD7lURVMQCA1R/vF2N6zzA7XpcGC0QHAZdS50QoFgCgVTkAn1V9VUUA2NVoVWmVQQC7lREAx5UbVVRVU79+G2BGOAAcKhjjYIZyIBaACNZDEHmS
WYAsQCMgL2YNIEjTSz9VmkJBRDhH+gG1alknBA1ceJBMNRPjfidw+QHVDnV9NTu1I/1x1Se1F14XtRnVEcd2fRLXDACE/ywApP8bzWc5TmFeIwR/JXxw4joufJ1V/x9oBeRNHG/bR18S/w1XOb8qaWfvCWt1SwaZN0BcAE/QZPJXAlzaSx0FeC0ZJuxBTmi1EU8DgGkkQOhculZMCZlsjG+AG14pQTEmWR5rtU51DIDAC3m4YzUcgOnVczV7JwKA
9ft4/yn/RP9P/nI1FP8YXwPyKoDCjHd6Hg8XTip3V6Ue9hPUB/sWgOx/Wa9nQ2y/LoDcv3JUEoUjADsAQJFGd1KvDjp9/ixqcjZmlET4SJdprkIMClgwMmo+L+tb+FM5Ca8sgSRmXn8bvTQAnz8jgJzfEoDTgOT/aF8nsyCRQa8PEHteSDFjwUx3cj4QRFrfV4CVfyTMNX9GAIN3JU0vjQqNNU0IB1NzKAcRP3WvfX0DANKtI01qMRMAv40Xc0ZA
1wC9mwE8fQBUsEIASn9x0n4eU94oZkLtBZx9NAhAuYANmjy2CgRbdThAyk0ljXNDWk1zDwzldh9A9VRHHV9b31FXaf93HxwAzx9C3xnCDSBYTzkVeHRFriVxcX0T5z7tO0pBtzCfSkCgj1V/DoD9W3+Nf/0sFk9ApaN/7yFpTkCjfW5AoHlsx1dlH0DBQIBLeCxcAGcQO4NNSShqe082BhIwFfNyIEwAIh8ffXRyJqEyo1HsX3VuuFfMW8NqRV+S
dC9IzW0QaPRRBTjNF1ZEzVcvCDIWhVPVEZ8sHTRAuP8If2OArEDO8TOA3EDtYwqAcK95jxHDO/gwkE/fUwxKRxgxf2RUYGv1Fu9WgNLPOa8HVB2XWkCvqRwRXAAKJDdAIVw90FnTSECM7Vg8W3UE/GLCQSxYxUH0BjV001vUbmN4BHMlZqx/jzSXHUC7RwOA4E9uH0mfXfdIXxF/c4DVB37xEpdXs0O1euYEIxHjfJIG3DcrTF8Zv3sXHVNbSjiv
Rv9FrwwQe4xTV1A7XntAH1SfW29pQDInCidrh2onPBcCF0+GUZcfb2IVe4cWgBGAaB9bj0Jzc5M6MxjzKxJ/OTA2KcsHilo+DjlgXAYVfcC44iPAgVpMg3FMfldiP2XnItdMl3GfSf9MQJvAh99Z/3KA8PtneXrXSFAgVGnUeyYncXWfXvNOK1uQZ0CZrypAww8w/HXjNBN8XxAg6gszVwAfc/9IIOpfKWRSAGBzUqds+0hzaHMqpyL7V1tphGQg
07drtAPGEjA8BCMgOAAWgDMQIqYo7SNeDmxJgCkWGqdkuAknWRYiyR/yEQYStD78Z2kjmEIMTRxSeVaUazQGoUXTUChfSDxxaedoKVEGTt0LN2YiQtdZpyYghM8Jn0wAtiCAvw4gl+VieyBAWVdRAXjsbzVoWiVXZ5AvEEaWOTssf3Eg10Do515CWwJpwNRAAddR1yHXM8ct12qgyjd7JkRWYBZWfz2+UChaoP9db6cfvzeOQmEMSm18OoA2oI6A
Pm5yjGnUIKCCjEU4eqDEOFy3ZxIeoOYyfqDP5wCg4aCnvD9IMaCwAFGAMKD5cQvMEChFgHPXAWBL1zBnJBc/x1vXBDd712ggzBdKJxuHHBcaJ3wXOidCF0g3VhcgiiigOMhx+j00BKBiZw4XS2FnBA3CA9ZeYQfHfDcSF19dGRdC7WRyZaQTdhI0clIVbVoXORZo9EXbDsxcwA/HQ7ICJ0m9fdVEN34XPAdBFy2HUgcRF12HTwN9hwYnMWBuZyo3
cdxAjhTcCgQr4wgUV6C4mCw/NndN5go4BOYP1z+g6Rd5fGSEbXwF0wsxLqcNRDGAOGDNoGlnXjdjFyMXEGBQ1wwAQTdlZ3hgETcpIzE3Uwh/zxtOZJwxOE9tf6ClbVNEFaDOoMmg6cRDNF6g55h1bUAnFkA5YMGglHou9kWgkKDnmEVgiaCwyVnEEewZoPY0Y20AgUk3JDdmAGcXBTdIrBdteTdXF39fF3REAB58XPAyTE8MIQAxIx4WLEAtSkQl
ENd+N2cg2dw1KQuAaXRVgG+JNeVJAm+cPMZxJQhePENQKWk+EqB4Cia/cyB/fXsSKUFhBh2aYFc0zSFXNeduOzvfI0C832o/XACvHw9HVYEGPyR6KlUe7TGvbxsA5GsMIKD/3zHA2b84A3h0ecsFvz1iSqDuvXag/+dGnVPHSjcnkmpYCBp1mCiOLp11bX7gsABLdn81WNtDDCQ4VqCR127ggaCu6RR2Gck6ZQPHYoAp4PeEWHQIFm7EIGcF4I/n
MAAE4JXgia4U4O+nQSRdzUceBdNNPDHgob0EF1jdX8cgPSM9Q6DFZ2OgvUAYIKwXc6DcF1oneic0J1ug5EBxnE3mfqcJKnI2G/tyYIWYCoZdwF25NfJ3QjJg36Dr12/XQu0eqWFuQFQ4+CJnGRdcOAQUVNtYKXiATmDJJxpnQickYNfg4YFUYI2HIRcMYNEXbGDxF2Y3bGchBWBUaI5OV0dMVjc3oN/gsWD6YL8GGRc2NX3eCgCc83ABZRcI5AbN
YIJbkD6gqN0dpk43PR1ZZz5g2Scg4PMXIWDLF1AZUTdiAHE3BR9Ngmlg07hZYOkXeWDDYM3ggRJWrEZacDV1YPqkF21tYOXghapV4NPgrRDLVh0Q2eDd4PVgpVZrYKdg2TdDwkdg22CPF2dgxf5wADBYOQ1ZlzWIKwFoACHofyBFwFIAPiUGAEKoQ3Ql1RZ+QTBIkIGAKWQRAAWgN0BegEjyNCk84KJcWJCYZwSQu7k4oIToGJCKnDSQ9IAcIAy9
bJC4kISQiUBFzkKQ3JDEkPXVHYAykPQXBJDNCGGqapCkNwSQt7RCLgaQ+JC8kLW/VpCEkKi4GS1upE6Q9IB0EA+VL60+kMSQ7mDxEPSEYZCmgB43MZD+YOkQ4ZDdHSwQQdRZEOiQ/BACQHwAawQQoE8SLVxh8Q0bcRkqkJWQsUBbwSjoPxVUyHVHcyUkxBIgQ4UasFUlHhkGAAIAZhZ4JzdGcQFSuGGQ17AdzF2yaJDGQBIAXQDPfC+Q3oAOFwuQ
z5ChFn7gSZDG0GCABwwfkLqiDFgn2nwAdww8UVwAAAAKCkF04CRQ+qF04G72AABKQUAtID7QWlASyHPwWkBEUOWqHxsUQGJQtFC0oExQ55DYJxyQjAhckDe0JSBlon38LSAowCwYVN0MWFKoLLARYJBqBDAPVX3uWeAMgH3uXfAMbXMKZ5C7AE2dExhbYMjQY2ULYBBQjlD1dA2QExg7sFgMYe4bkNPkUuB7hBPIaBALMAMABZC8XzgXHZMFUMYA
JVDFN0WdRpxlmEtsQNUZmBBYGyAgAA==
```
%%
Binary file not shown.
+56
View File
@@ -0,0 +1,56 @@
- Benefits
- simplifies and automates HA
- EKS control planes are [multi AZ by default](https://docs.aws.amazon.com/eks/latest/userguide/disaster-recovery-resiliency.html)
- self healing
- requires no developer interaction
- can still use managed services
- rds
- redis
- can deploy a second redis for event streaming if redpanda not suitable
- reduces number of AWS accounts
- cost savings, see below
- cloud agnostic
- security improvements
- no need for devs to SSH into machines to debug
- flux for gitops
- allows for easy deployments of new OEMs
- maintains single tenancy with namespaces
- Cost
- Last Month's Bill:
### PROD
**Total USD 1,079.60**
$0.0146/hr t2.micro USD 10.51
$0.20/hr c5a.xlarge USD 144.00
c5a.xlarge Compute Savings Plans USD 144.00
$0.80/hr c5a.4xlarge USD 576.00
$1.60/hr c5a.8xlarge Instance Hour 1,440 Hrs USD 2,304.00
c5a.8xlarge Compute Savings Plans 1,131.817 Hrs
### DANDIS
**Total USD 1,020.67**
$0.0238 per t3a.small USD 51.38
$0.0475 per t3a.medium USD 34.15
$0.0695 per r6gd.medium USD 50.04
$0.20 per c5a.xlarge USD 431.60
c5a.xlarge Compute Savings Plans USD 431.60
$0.432 per m6a.2xlarge USD 311.04
$0.80 per c5a.4xlarge USD 575.20
c5a.4xlarge Compute Savings Plans USD 1.14
- [EC2 Cost Estimate](https://calculator.aws/#/estimate?%20id=0180036d04e86d221898455f124054dc18922ca5&id=883b6de14b680f78f87f3fffd07b1b99455abd73)
- utilises servers more
- DANDIS m6a.2xlarge running at ~10% cpu usually
- autoscaling
- fargate possible but annoying
- EKS
- dev + prod all we need
- flat $0.10/hr per cluster
- 2 Clusters x 0.10 USD per hour x 730 hours per month = 146.00 USD
- less than a single c5a.xlarge
3 of which in DANDIS account doing nothing
- In prod instances max 27% cpu across the last week
![[Pasted image 20240706155630.png]]
- DANDIS Instance Utilisation
![[Pasted image 20240706165010.png]]
+1
View File
@@ -0,0 +1 @@
{}
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Loaded 100 of 1265 files, more files were not shown because too many files have changed in this diff. Show more