principles
Version:
A List of Principles
84 lines (47 loc) • 41.5 kB
Markdown
+++
Categories = ["Code Quality"]
Description = ""
Tags = ["documentation"]
title = "Documentation should be close to the code"
+++
Documentation, in all forms, should be as close as it can be to the code.
## Why
* More productive teams. The further away documentation is from code, the more *friction* is created in understanding the code.
* Documentation will have a higher chance of being accurate and up to date. As it is readily accessible by developers to read write to.
* Documentation will be accurate to the version being used. Documentation checked into source control (e.g. git) with the code, will be in sync with the version currently checked out.
## How
* Keep the documentation with the source code.
* Use tools to generate external documentation from within the project rather than creating external wikis.
## Content
The goal is to bring the documentation as close to the code as it can be whilst maintaining a grouping that makes sense.
Below are specific examples of how this can be achieved, starting close to the code and getting further away.
### Editor
**Use IDE features**
By using an editor with code completion, parameter info, quick info and member lists. It provides the closest documentation by assisting a developer during the writing of code. Using an IDE with the ability to do that and also using a language which makes that functionality easier (such as a static language) can both be helpful.
An example of Visual Studio Code's Intellisense: (https://code.visualstudio.com/docs/editor/intellisense)
<img src="data:image/gif;base64,R0lGODlhCQMxAfcRAB4eHigoKNPT03J2YGak3ARejsu+plBuhAQ1Vh4wPRJAXgRjk8jDhC1khx4dNlKTviciHR0dHR4eJh8gHh4iKB4lNygeHTEfIDYmHT0zHywtMCwyLCsyNzYrKDAtNTUzKTU1OR4oRR0pWhsxRBI8XBwyZiMsRSIvUCQ1SyU3VTs6QiQ9ZiI7cDhEOxdFYytGSoNtTCpFWzlESDVIUzVTVMi4eSVLaCpRbS5UcjJOZzNQZDVadD1heFAtG0csI0o1KEI7N1U2KFk7MmQyHWY3Jkc7UklCK0pJOU9QPllEJ1ZJNlRSOWRIK2hIOWxUJmpVOHVEKHdGMndYNntrPEZGR0tNUUtWSUpVWFVLR1ZVRlZWWFFXaFJjWEdjakRlfE9xf1ZrZFNqdVVwa1p2dWpUS2hQfGRhSGRoU29xVXZmRnlmVGVlZ21tcGV1aGZ4c39nYAV0qyZNgydXhytXlTNMiDNViDxXlDBdrTNoizxmkiR4ozhmoTRktTx0ozp6v0pqhEFtlEtxiEpzlFh1iUx7qHVYi2h9jW2FeTeApz6FzUuKrUeFtlOFqVmJtmiIiWqElHKOg3WLmnaTh3mRnW+Cp2uUqXiMq3uUoX2SsXiir0WIykeP1EiU1lCPw1uTxlKa12Kc0Hay0nC6+3bL+4BMLopLMo1VOJNWN4FuP6VcPo1bRYVqXYh2R55jTJBnWJR5TJd6UYxsZI53ZpZ1ZaldQrVwUaV7ast+VIJgnJBor59ywaV1yZiHUoWLbZqDaZeif6yRV7CPcLqkccuAV8yKZsaMc8+Qbc6QdcStZ8y0a9G+dtDDfpCRkomZppStkoOpt4iyroe0uJytuKmmnaW6lrimh7y7ibCxsY60x72+wLTFnbfLo5bL14nJ6IPM94bW/pHN6JjT6Znb/bbByMWzjsfLmtfLhNTNktnRj9vXmcTPocTCvsjXp9LFrdLJt9vcp8fHyMjO0cnR09PNwdTSx+Df4Pv7+5Sjrh4cRyJIdo+gq4eSd3FyWXZ2eDRWZjVVayH/C05FVFNDQVBFMi4wAwEAAAAh+QQEDgD/ACwAAAAACQMxAQAI/wAjCBxIsKDBgwY5UKFiAaHDhxAjSjyIYoeGiRgzatzIseNGN++ceBSIiV6QgmSOmRrJ0iOFY8MKVohXraXNmzhz6tzJs6fPn0CDCu0Y4IqWoxCG9sz3aYbSp1A1crF20uMIeTVRqoza8mXMgpZMch1LtqzZs2jTqmWpIQsIGVqSAq1gQ0eMCQMr5NOBIm+KACt29B0ooa4NDgIroJDzSfDfiDoGfUEcAUUOyhFsOOWgwwSPQTIIcg5gI5AXuRX+DOpSsLQXHQQl7BjkJbTOFkconOG3ZCAIfvx+ENR95sMR4RGOGBl45IPAAEeiyxX4YYkFK/zMNIygO3vBAwLSGP9MuXJ4kyZMBvpAHiHAjw4ROrw/j4FgBx8SlDSpGv+8j9j6NfHfQAGc10R9A3llkA4C+LLWgxBGKOGEFFZYEFzT9bQCJ590qIhALHDY4R8CMaVJh5/AFoEDiaD4CWJMudjUQxUQIM6N4lARQT7iRNPQHuJcEgEeON7oxkBEhoKjJJl5g2M0cn1S5JERhCBKkVY8pMJCXFIBAkTOoKPNO2SKdAiZZPIiEAdjoplMBBKw82YENLwDi0BtoCnSQCBVg+YrEcigDpo1IBjBM/T0MN5WvgVzzKO11KfGMaXAOcsxREQQyzHFPErMgJoOY8ujxwwRQUqkVtqeo48ao2gEIHT/+ugtw8FkkAPykGPhrrz26uuvwCKE4U8hcOJJDBSs0MeKxqYQgh8zMtUJCilw8kCJn+BBQQh1BBBBBSYw1pkJEGkSJAc7fANOQ4uI44gN33CTFJHhzGCDk84NeaMjMQAyhgOjiAOGCe06EkEJPaKAwh+sRdDAuSkw0oJDJAhg8cUC6PqQM++YY8YR+yRxxTs1JNECNe8kEQHHvHzA8ZtxzlknoO2BHBJBIKUDwxFtpCHBNumkEcCZwAw0jjvbEQQCGexJEAwxUQSQ0ilw2kJMEFMLtGmkWBxTy0CbEkPED6r0UITXPnRwqaJTQ9ABGa/GYgwREABRnkAUkNHEQUcn/x3s34AHLvjgOQ3rk7gFlfCJFwIpTiJTKvLxSVJM4YFXQUw5BZED34izBQ88gCJOlhJc6aRtRB4iECECC0QkkwM9nAnoPMR7cI+YuS7OJBkiVMEawAe/RhZgvpPeQByzYoYZZ8ISpzkNofAOzHIKNDPON/P5Ds0CcfGOMMubwY45RrcjERVeC6F+MF91UAwxXm+36atWy48pQZuWon7WU/ut6dwawQY9/Ee4AhrwgAj8m+F6cocXYS5FAnEAJwSxoxlFoIFJCcEmOrSIHRAkcxERQeeKJA4uCGQEnaOSvsAgEDmIg0pEYuFA+kBCcYTDAg64kji6UYkNnHCE3XAEAf9Z4ox0+K1NaHoHMEbwDmQIJGZwqh6dtoe9PQkEJFaMQJ6S+A4jCuRoEskCqUhFjO10jRiv0lQZBTKpuK1xIKMa4zFSAatOEaMWURhI145xR/5AJBsDTKAgB0nIQp5lgTxpYO4qqCIJUhCEF5xcYnCwBw6pqIKae4gIo1EBDXjyIgIBUo+2E8MWvlB3WZqhOMLwSQ1QIIJ/aISToDGQEQQCFCl0SAjGAY9e+jIrDnEG+QhCjXT4IADIDIAFmDgnKEJxityLABaxl0YtvmMKyUTmQARYTYR0DQoQCCcEknYpSoHtjas4Rty+MpBZoFGc43wOGVzRKSgM5ANkqMUxXBX/EQmMwwCGDKhAB0rQliByJ3GAIEEc17hPPM6CGCyICDgRiIGwwIIPAVg4epeZeDVCHI/QHSRW1zp9pdKUk8joKG6YOHE8Q5fXiKlMryELMA0TecYryPMa8oLpwWkbyhAIGKiovSyCpJreK9pBDCGAJ0TkbHRclCqsVpVNmSoC9dMaOwXyhvs5BARzXJQ9IWIDAQSjoGhNq1rRCgIQVEELQAABR29SAQ7tIAU4IAScWqSDFZwoNJCM6BwAYYMU7EGhB/vEInJgA1AihHXR6MIOGNENC1QgYFTI4ej0tUo8fGOjqCQIwECqgz8QgEn5wMYgdMA6bKwuE695gLt0IswL/73jHGnIwgC0IRJmvCMYWUDZnDgGizOwg4oSOMMZfvEOXpyhN9J8RzV/1twsnMEZSo1ACszaz1GpIghNcAUtYBW/WA2jPlsLwqS+ptWCgJUYTRACGWxhKjK0Ir7pJIVAbPFdIYyqm0tt6loHTOACD04CRjkKUnyCghN1iIKVcbBCAyvJOIjoE4Tw1kDmICLbIEQC7cIRNixgLtVFAIUbJVI3cHRSIp1UICjQ4Y3GEAEXjFAc4NBRBER5I2zkCye1LcgVjkumc6iMAyjrok8jUAU0WQO5RHbTFaXr3iSTKZrYmIehHBKAcvKxFBR42qu69rVYEAN+XjNULGhVkCPIiv+PbBtjLbbj5WJQDSL+NMAQDcznPvt5rSlAgWPhlILH9JNag+aIBmigg0QbJIYx0MEiHRKDGMwgQ5HOZGLq8oKnUGAJxylIFrIQAClGYAPKaQlulNC7HAhgFhORjw/2fM4L/CAItI7ND3wAqvbcutftCUIQtuwQ8JDhz8hOtrKXXZZSEvSZQ6nCEXRi5lw/BQTEY7a2t83tbnvkYTIcKLT/Vm1vm/vc6E63utfN7na7+93wjre8503vetv73vjOt773ze9++/vfAA+4wAdO8IIb/OAIT7jCF87whjv84RCPuMTX0gykDeQE8nDQxDfO8YIGgApHcUvgKuLoeDMI1gT/KQl7Os7ylh9QBVrwklGAADhI1rsZ9Fh5BFytcZf7/Od/C4BcKKAFLMylLnfJy14G862/BIbpcDIMZRTDGMdo2CEp8AJtNFyYFrhmIJzxDGh4kgV+qAFBH1DCj6Nz6iV0YDdKIEh1rpOd7XTHDAWhAj/QYJ0E7eYMKw9BrgziT4sD/fCI7xWCs62hC38oAiFCEYkqKOFGtghFMJIRRg/COhyFIzT4uHGP5kVCFR5EIV1aCK2RjKZzLIcKJGuIGH4bgaEmkXt9+lOgBkWmQgnEt7qPAAfKkcQ0ekEANTUIJgSgssQ7//kQ0oAWpt2TYh0rWcuSoCecBS2nSIta1sKW/7a45S1wicsE5HoIHh4xAw0AiZahB6kGPHFKetkLXw7BBsYuBmCctowL7KAMDUE0MjA+9TFU6aAEMgA0r5IzO9MzPxM0Q6NE30IyP7ABZyAe1sQLGNACvZBGTHVsBsFUGgh9JniCXFEUcXE4iNVQjJNYDxU5klQ5l/NBm/cQEqADXuAFo8ANERB63NAQItAj+mJirBNuBrEFwhM8e1YBHcMFy8Mxr8Ix5ZAOzTdUamJNqDBl0eQ94LM843NiJPNjU8YLBMRUTmUQYSAAaoCCbviGQEEBbwUfPqFID9RIE4RJAhFRGsRBHjQQNvcQdOAkOOKDoRcNT9SDK2RKpjcSPf/FRdnDAcfFPUM1BdZjJ1OWRVuUREYkARzzDuUQDBkgEAVIJgzACgSBhgHWhnDYiq7YEhIAcmSYSA5kg3j4SBAlSd9CSZYEiDd4EBIQMKykAYp4iBGkiM7mQo1IEM3gS760Dv0XAT0FDNl0dV3Qe9tRiQIxMjRzVASRJ9iUTU90Br1AfHMCKwPAXNc0EGu4CgdBCQJwPK84j/QoERIAF7PIEwl1SQ01eQxFYb0zURUFIr9oEMYYASRgO6HHUgiDiEQyUhFwhA4RCTMVU9NAbHnxDstAQAVoDvtAgbUHkiBhidGFVCD5YUDjP3WSXdt1VgYhQBhZjzI5kzCHBW3VVj7/UVeNgVd6JQF85VefAFi5mBSDVViHdUmKs1iN5RCjFQY7cCWG2DmZoANXwkJE0lmfNVcdIQnfQwZcsA8MwB1jkgSe+A5SEJLvAAMAmA4NSGWEsQ3VdV1FQwPkwBt5ElQRcAjBYAZZkDwEgQ3uQGwpIA8uOZOGaZhwoWBakAXWNhINhiIQ9pgdoiIAGQEWhiIZRhAc1iEedhB0AEQKqS4jdAkNoWIslhMU8JFo4kRcmYWSmA4YMFTE10VnOWXdBAJWRkWPWGRxl5dJJAxb9gdsWBCPIAB7c5jImZxCEWiDJgGFdnU4iGgjUQE6oGmHyBkeBmmSxhMboARLAJ0HUYkt/5AF+YgQq5YhR5AFfUcgSJAFOgcn2aBneUETylmf9klQB0kQzmYW2sgVILCCT6QF5XmfBFqgggMwiFgQ4IYW3kOSBvqgEBqhEjqhFFqhFnqhGJqhGrqhHNqhHvqhIBqiIjqiJFqiJnqiKJqiMqkBILeYX6KiMBqjBcYBWRBXb0VzMpqjOopWCGZ0O/qjQDpIFHAFPhqkRnqkf9NWbzWgSNqkTroWCHYUWACeT1qlVooWHFB0V7qlXFoWB9WlYBqmPPFWWimmZnqmE0EFcaUBcFGkaPqmcAoRiXkUVEClcXqneCoByYSnfNqnfvqngBqogjqohFqohnqoiJqoirqojP/aqI7qc9UYqZI6qZQaU5R6qZiaqZq6qZzaqZ76qaAaqqI6qqRaqqZ6qqiaqqq6qqzaqq76qrAaq7KqTYEDq5Y6q7iaq7q6q7zaq776q8AarMI6rMTqq4JDqzwRU4+6rIeJrDuhrMwarQlHAarXE86qE9AqrdpKcIlZpixxrTmRrds6rv4mfSDnrSOBTFm3dU9kA15nGmDXGZ/RmQchruR6r/g2pEcAc+jqEQHQeTfyeT8oelDCWTiyjARhr/i6sPPGr/xqrXnAfu4nDvDXOY8wf/VnQ/cnDkyqsAz7se0WAHAVAQ/LE8iUgztYjPEihESYOiSFhAXhsSA7s+cmAVX/wJgkqwWNSRR1QIg3EpUJGow+mIynhBAyS7NIu21Ep5hHgaM6QYyr5Ekqm6AAM7QlpYxPtBAvGgFHm7Rem2wScJMgAHJAYKctYQLfkKAJGZUM2bLiAJESuXMWU5hd+7V2m2wluxNQ65RQObDiMJVVyVlh4FmgJbfcJRB1e7eKy2d5qxMBYAegGZXgMJqluUOnKRCudrhcew2L27kCh0zUaZ1pi51IIjCRNmkxy7meu7r9Bq4Dm6D6WVIRkbisW7vu5roIahALKhG0a7u+m26uexO9+7vE2222eg3FmrzKu7zM27zO+7zQG73Su6vH+qq3Or3Ym73au73c273e+73Y/6ttqTe+5Fu+5nu+6Ju+6ru+7Nu+7vu+8Bu/8ju/9Fu/9nu/+Ju/+ru//Lu/gEoFCBDAAjzABFzABnzACJzACrzADNzADvzAEBzBEjzBFFzBFnzBGJzBGrzBHNzBHlzAOhDCIjzCIaxjfgrAH5zCKrzCLNzCLvzCMBzDMjzDNGzAJHzDOmDCfYrCNdzDPvzDQBzEQjzERFzEBIzDJKzDfMrDBzwCHDACRhzFUTwI9+ACUvzAg9AMVvzCO9DFNmDAN/DFH4wDW3zFZrzCSDzCSoynTEzATuwFoPAHT1zDPGAIZyzFLnAPdhzFN+AFDpzHe8zAPNAMk0DBCnAPiBzIA/98D4VMwS7wB2JMwDdwDwdwxwP8yJFsyRScxiK8xnfaxgHsxKbVCKwlCnIMxTLcDAJwA5pMxFTMylNcxQ4cCfegAA1My/eQyREMyAYcCYNQwZNcyQVsA5ewA62MAMF8zAbsAgsAB868AGU8wJxcwv/rxhzwB6LQCDOQTCpACKIgCHPcwDtgAy4wCIMQyV5gCINQxl0swOOMAC6wA/cgAH/Qzu5szpkczwigGn6szBzcDM0gyfHsBTggyQrgAl7AAyQgwDtozAJ8AwNd0ANsAzsYzS7AyjvgBcZ80Y9wDztwA7AM0QMs0gHMA/fQzwt8D81wD38gwDZAzgk90het0QT/fMiKjAAvTc4F3MdeEMkDzQO2HMB9fA+DANJlnNPRjAAZ7QVBjdMwzdSOjNE0HcAI7QWwDM9XfdFC7QVEbdQCTAINbdAIrdAPfQMLvcA/3dQ2wMo84AVbvNaXrMsBXADODAd6UNcFAMLT7MlxysOinM3bXI0q4AmiQAAa4MDxcA3wYDHyEMDzbDHw4NC8RNUCENCqvH9ifNkW88sBrMrXcDGc7c8YbANEPdKIfNqhPcm4fA+RgNMrjcitjcynjcihTcWnzQMCTMWr/RmzjchWDNDuXNpUfQ+PwMDyzNWXIMCvjchaDM+9XdwCbNMEfNqNLMAdfdtK3dusPMm93dKy/43IwhzA163SsLzSr93cEqzb2M3VqB3Af+DRAUzL3z3b3n0Dyw3dsr3asZ3HLL3A8jzbsEzLy/3FVOzQCADcBEzXzqwI0qAIeH3Ee13NAawBBCAKoKACgt0IorDhonDYDbzY19DW94AATCUNNjAIAgAPATzZ8FzZ8LwDqqzRsIzi0nADOzAOArDFqgwPg7ADkYDSom3Bx23aHu0Cl3APIU3bNjAbCHDkbt3Rv8zdO2DkSI4AXB0JLmADK73FVNwMPHADPZ7lhuDRLx3ABS7eubzIAb3AY24DtKzjekwCVGzHh8zSCtDRuB3A0j3Rqj3AVPwILlDOuA3mGK3SAWwDJv99zpk81OHN1YAuz2u+0obgAmPu3RHc5V8e5uTtAittzFzt0PKN04le5s7dDDugAJUu1ErO5AhQ55aOwISe3WtOy4BOxb+cx7Etz6FN1XUNB31QCYjQ69E8zTks4QgAAhwuCoQAAgGgAhqe7B3uwL1EwJ8txvNszCzuAi7e2QKQydkgAIPwB3+gypxN7kHOwUP+0MQdwLqu6rE93LFNAoY+ydDd7iut0bNx0mYO3wRMxRbN2q3OyASM4AoM3Fzdzyut3AF9yMmN0+uu53pswACv8Ads4ztw5Ooe3qYd3m+O5qyc8M590w585gJs0t7d7p8e3yOu6hrP1YbQxfLcyH3/XsCREAl5vsAWj/EI0PEIMPEd39FJ3cy9Huy9vgDSHOF/ysPIDu3PDu3R/uHXQMAsjgDF6cfZvu0H3u0DvNj7B92qLNfnXsHpzvLDvcfJrO6hDdxnz8vLfdre7e8FDPcD/OYHP/BrnsA4QNw3YNKxTfDyvec9/+6Av8jvHvjD3PYrL9san/HKnfjvbcwIPvhYLMsC/N55zsspv/OJf/b73ttrzvkSrOW9rfICPPEmf8iFH8C9DgcM7uC9fvSczNdwqvROX/sb7uEMDA93v+LxYN0C4MfZoOItfvdfv/UqHuiBrtwCEPYbnPe7PsneTdrQPclAPsmBrPb97fDFDdwk/9D9Z40AVGzAch/cf6DzhL/Atj3bnX33GA/4Ex/yEl/47y/AtPwHVhzqig/GlNz4lQ8Q93YgaNYMAQIF9wwdRODChg2GESUeHHRPopd7PA66uPcIAcaBCCJZPHjj3oGIFXeQYEmCoUkvE2XOFHnvj4uaB0cyvBeJYUGMMSOWgFO0qCJpiowWjajD6VOoTqlEoFrV6lWsWbVu5drV61ewYcWOJVvW7Fm0WqkwBCHK7Vu4cD1poDkRnsGI0gSEvLYXwTV4B70IwCvSL8O+ECc2E1DX8WPIkSVPpnlvUkSTPhHssFnyntCDCS9tvGcw80HOfxBMuodzYkWZFRVHLKhQIv/nQY+bCdyx45FAgq0PFkRY2vNCnpol9qR9T4FE4sNJNryXe6JJlDrvKR4JMXpC5DWFP4YdETfq6h+BB2fI0brgztc/T3QBVHfh3dqTM6yYf+JSOJBSaqmmojJwqrQSVHBBBht08EEIx1rrIA1AietCULbgIAHJ7pJoEAGu+SMSAbIZjrA/xiGMPwGkGWQQlwIpcRAvHoFHMcYo03FHHnuU6DfXEDCpuh12UwwmiUYaZIeRYhpySSM3K623P5pxrbyLOvICNAQquucGiQzZzjEbmENvod0iweG33BIicreQpKMRJxd44KE0Ow/6Y0rfYhrpjxt+mw6B0rZUbAceKnr/hIeB7rxkh/6Gwws8hkYazzEsf/qsyC+lfFTMQQv1AseTbvAiEtWEnE8iN7Or689A7yFpp4PMRKBM2yZaYCkBl1qgQAOhQjBCYos19lhkkwVrQgQSAMELAi4UJUMORqDMQ+gE0HYcMIWER9u+CkNAL20VMyQebQUYx7UcfXT3XXglMuk9k3aTNVVVNYrIhUtkzbVef/HFyN9mnuty0IgEvbTeiWylCSN8CTWoIHs1S8je9CKywV6NBvZ3PS9lHWhjWWuLyONULf2YIoLZnTRX8YKsK9OSMAZNUJMZQvkgkv3V1yR9I3Iz4pl6zvm3/TTtViIXeE1qKZmDjWpYZau2//pqrLPeitmDEuAA2rcy1MDaeBvyIujQepOMBEZlLvttuHeMpGDPbtrBbZpuuPslm1zYW94b8J4MYokO6LRH4m5YGjy/BZ+MBMUlwmHpHv2mPG6ZcNjB4Jcud0zx2d6efO3oZCrAqF6LKkAiqYXV+nXYY5d9Qa4ZSkADLzzZYmyadkj3dwECw3x44ounTAEcXFLVVR6xG96GKp1j2nPKSmeIUuOzdwzjj+/BQXvwH6tx1ZlOL0oPo1ZnvXWpZnf/ffjjj6D2iG4nmyYXItF/f/09Cv9/AD4vPj0qE9HKhhF9oK1slxAXT8ITQPB54UUTnKDjIGg8jnTkMS7YVVEWIP849rVPfiMkYQmLRb8LplCFK2RhC134QhjG0DEh1AHVTHhDHOYwLCiUYQ99+EMgBlGIQzQeDW2oQyQmEYk8JGITnfhEKEZRiuEzohKteMUbMnGKW+RiF734RSdWEYtjJOPsqKABNKZRjWtkYxvd+EY4xlGOc6RjHe14RzzmUY975GMf/fhHQAZSkIMkZCHZSAVEJlKRiSxjIx15tTMaUpKTpGQlLXlJTGZSk5vkZCfbuEhQIvKRoyQlsSLpSVSmUpWrZGUrXflKWK4xlKAsZS1tmaBTFnINu1yDGkHASy3EUpjDJGYxjXnMVc5ykbdkZjN3CMevgeIPIMhjX4KnRhX/pIsZyORmN735TXCGU5mKdGY5zYmVXKqRA38gQCN0QAhRTPOOIAABPOCxRhBQQQDbDGc//flPgAa0kONk5DkNWs50agAEfxBFI2YQAIiqAJ6CoCYbtdCPfvRyjdm45xqzyU+BhlSkIyVpQAkqyoOm9Ja5XGdDHwpRmKrAE6IgAButCa6KopGjbPxoSX36U6AGlZUnPaJKjVrGXEYLFCqAaUQbARc2MqMfVFABM/apxp169KpC5WpXvfpVPxL1qGN15Cnb8hZCgCAAKnhqXNr4yzWwYas67Sg25wpWvOZVr3gVK1n9ikWzXqitF4rqt7SJ1bqmsad7ZWxjHSvSvv5V/7JLTONZpUVYu8JjDfm8a1btCtLHhla0oyVmZCd7WhMG9rJxmYsatbDVNdwVMDlFYz2vQVrc5la3njQtan0bv1xaaLXT0pAsg7fLb4HWqlLdXRr7ItWE7la606WuHnv7W+zKLpfPihaGittGq4LrriqwJmi1YNh+VFe962UvHK+bXfhmLaFf6y5x5UiFNVShvfvlb3/r+N74BlhZ0UVj7prrXwQnWMF0BLCAHXzCBUdYwhO+70kffOFkEZjCG+ZwfxuMYRArSMMdJnGJpfvhEKfYLCM2cYtd7FgUq1jGz3xxjW0MYwvPWMdnYfGNffzjkcZ4x0NGJ5CNfOSSCpnIS/+eXxw9gGQoR7m0OWZyldXyRhUUYhe5UIEl8bvLLktZzGNWo5KtrOPoZnkXuCiClgsRZkn2I10aJXOdo2zmM8s4nSDQMptj6mY4FxIEcqaznQ0NZDznOcW59EAudrGFpsK0CFumbRovmtHKagG//TgwFbSgAjZMdY2EtnQwLa3fQ6eaw4lWNIi3u+VdFMIDTVWBo3dRaQ3cNETUfK1htypnXxea1Gjsi6mzeVtVJ1vCrG71hV9dhCLkQhdl0IAHyhDrSeMaulW96msFsAYqFFsDwNbCeeGR02FrILb8lHN6lf1uExe12UN+NkSjnQt8FyEA2X7rLuW6zdcie93jFoD/u61K53RrwJ7UnC28Hd5hec8bzb7chb5hWohcSPrWhf0dwLeqz23KubntTmPCD/5a0D5c5QuOuMT1THGLQ7QMhdB4pbOpWc56nJ9VuOqwSY7GhOvzGlY19cqNnuCWu3zRMG/qzGu+RpSjceABR+O/CW4INBK95N9eY1/seXSwIzjpSnf1GvHNVJnTPAAaKIMuKq1Pza4huRrwNjPkLgD9AnsNwM5pwDFa0djeNeyDV+/Yye5sfGq5DLN2OgjyDd50PZfuwUuXu4GtLXgUPevpyum3ekx40IfW8Id3cHTv3eZCbCHWuE4jflGNRpTj95Qi18Jm5yj00Od+uqMnfYAJ/2xtWD8aj1EfNdfnqIJ+9KXQume+aHnfe/iOWAW44HIeia/GhMOx7s3n/mifD33sfr7745fy98HvW/GTX/1GNv/5T5v+9cffxu13v2ThL3/8x7v+S89//49M//0jq/vzPwKMMAAMwKMawAJcQP86QARUqRGLJnn6p4tiPQa8wElywAc8KAJbp3Z6p3iyQGSyKgXEQBPEIw3cwHNKqIVyqZiaKNa7tOXTNOQTtarrh08ztXKztDPSgipgAzYYNDZwLYw6pXKrwTDzNMZYg3LrO4zSvBOMwjxKQRVEKHViKIeKtLWaqZrqut+5hs4DDM4DgZv6OoXrqJ7yNcPCOg0IL/9tcTd7Mix4OCM3TJdI0jV3k0I9tCMqrMJmSqppQbuYGixRiKqp4jaQ+pZrqD1mAIHlcsRr0oCs6imOqgJ7ssTbkrNr8LRsEIAz6kRmoAKrSi9PO7lICjhEwrQ9XMXb80Pfqyy4SKu1IkS36Le4mquFU6OGO0O6QiNKvK2duobb6ouMWoNRlMRz0wCQSyMSdK1dY0VobEVXjD5YjAtafAuOOyw0ggdkSyMzRMZe1IBfzLVhvCdfSxesm8S5asbKksNGjEZ4PKRppMbaGi63yqzNWsZtTLlvzCrA8MWryoZhLMczpCeDDMfFakNPxKd+YIa5i0eIVMZ5zC7VskdRaC3/S4MtXEy5vjijmyO2ZBw4gSTHXLunjmQjdQQprXurb4zIaOzDiSSl4LJHajGuuHtIhUs5TUy+SFyuNZC8kRTGklS3ENklh/xENJyrnewHavpJHLSqbnRJaITJmHyk7QIb7+IAN3JDydvHqMI8M6QCw5I8oSzLjuoHNWS4pAQpMrRDdfO1TZRKeKTKqmyk+cJK+4oj16sjEOiybwSBHaQjwNQ0Pqo9KJTLVaTLuiQjDTMwQiLDjFouxJzMTVLMxQSsTaonbRJByuzMQbLMy7SiEvSjfOJMzzxNQALN0Eyi0URN1yyt1fyr1nxN2nwl1YzNHJrN2txNVbpN3Mwi3gxO/3Dyzd8sId0UTuTEJOIszhFisSdLTuhEpeVkTuDCMi2rPjjaggNjIxDYgvsDt+hMzumkzvdJsz5rs1gLtDVqyTWKrTw8PsELz9ocT/I0o8Rbs5hTszdrI89io588TDhKSPncTfqsz9hhNEeDNC2ctFzANY6igr/LtCZsPS34JRwssyKMzwF1zQI10Nd5NUeTNVqzNQf9nTmsusrbOl9zt/PCPA3d0NPsUA+VL5iLtmmrtmsrBH7bqH2CRH4CzGMEuuCpvRDZxm8LtxeF0c6U0RmFJKbbN3zLt33bOB4Ns1yUuoLbOnebLeIbOCWlTSZt0qqpt4vLOHujUsRyLgHIKf/33DqN6otf2qrr+1LUDFMxzbAnTbun26i6gtM0alMhfdM19dI5pVPPtNM7PRYy1dMzLdFIaklAJThBBcwiJbiUM1TKRNREhTA1OjuYcrq1a7sSvQZjhC02WC426KVh89PnurtLxVTE1NRNjZA9UzzGoznHy4UiaCPAGMuK0rVrkjNT81OxFK9XhVWplNVZfRDTy7dCSL3Vg6PB5KNfAlBkjdVlraXfuzZb285r/Vb3ytZSkj7qU09wPVd5FNdROk50/VZlVVcRa1d5nUJ4tcp5vdf/qteywld+1Ut9tct+DdhP+lekEliDbT2CZUwne0xgKjNeMteDPcF3TViy0DD/NcNOQMombQEtOdOW5YtYiaVYzOSp8wS0QMo5hjQ+kJXCiRVZGqus8/yz9HwjCOW0yto7G1Ss+My+lcXAlnXZr0DQR9PCKW1QyDssFThH0BLQQO1ZlgVaJQLRWJu1mCJR/xxS5NsmMlwDFdCCkwTIS+VZp13An4Varng2G6U24NNRNFVTAP2yg9PZsFXZsb3AsjXbK6usirO3KNXVKcU1P/UlYKUzppXUujXBu8XbItPbmAsAjNtTXVzT4gtFEDAElS1csT3c/ktcxbWKRQ0AUP1bNlrCNWJH5WvHqGxazWVAzu1cqvjc0N1RZ4SHyNym5dKC8Cq058pZv2PK1SXA/9Z13XTyVEZlO7dro7vbWIW6qb7YzhbNUmbkvN/1v+Dt3FrdhcUDXVx9PDcazEDTgi0wzemNwupV3GbV1WdVvUIQ3/E9VNcFzjYCvm5tX+gsX7wlV4ylX+G0X7NlV/113/c1zv+FVf6FWv8d4MksYKA9YASWSwV2WQZuYJd8YJGNYAmGSAqmWAuOI7hiQocFswsmvwxO2Aj0AmliXzrS2LvqWLoNYeYbYYLtQHZyJ3iaQNLUx8rKXBcmPBj+VxbEwpdaKxh0o5o9MAvNWbBlo+yrWc0DTBWA0CDc4WTrYX1lKSDWQpmiqaNV3qTtuM9SYrpl4bkKuMiTYlWj4noFxP+lijS2gqr2xNqGXF6u9dqFTOLiozOeyzwk1ai6Y0QzTjU0hteKFAVZbON7jNy3NcrL3VmV9cm9k9NK/eMzDmABrkdrvCybklzBBR7CZWQ6A9ZKLVRJtrNAVtdBtsdMrjQ5o1zL7eS5/WQBqFCDrKjXes9RJmVKJqFTXi2MTCPSVSPTVVnbAmM6i1uLgt5VpIq1+9JSFteZHK6ahLrgqV2FZAbc9djIha6MvIa/gztOSz4WRWY9DIAIsIcIWGYYbeZsvcr6gotoRl5f01rmFQDnRS9glt7nPS7YE2cpDAAtsIdrkABmzuXmZCP6Chtv7d4jdK3w9aNys9ZVhCh7EAD/mNIAiJJPdV7WxtSdnpVoc64Kcr7o+iVo+dlgWIWoCLgGc1bpCNAWkBZPkq7O8SVnqlgDeyBDc7aHnFYrmI7p8pzpcoYHqtBpoi5qKhBo5MzoWTVpOoWoepjoci7qotYCkQ5Opd5Upv5ScqYCqWYGe/Dqf7YHKkBnq/bpn55elLZpov5nttbpc+5ps9au9oUpeCBqm27ra3jrpI5r+5zrCAABAdBprwZripYAsubNq07UEj5hPPol3QRfuUTplpZqe9ACvd5rvj5QN/JAGg5BOxJlPGJPPapA+ZNsoh7qcz5sxM5szcanK46oIZ4j0L6j/twjdow/lK49qlHt1Wbt/w+9QhdkYy4kYoxqLpS7qBksQlkq7jTKKsA8JZyFs8CkuzNSwm+b0PWjaWWmad4mUN/+7TRSKkF0KjcuXS/uNW1UyBTdPG3cqbbc0nTJvG1cS/X+naweM6Ktasz+bqwZ5EK+xqvNvKydvCP9li7TRE5cyNgS8DhGRvKCXgRfcGpKSWW8Zia871sWPf6mUUuGi2usRS+EQuKz3GAiRkVOL3Hj09MltjoWNwrfPAzPcA3fcCftcItMZWlmt1hWOOARAKwLXKxKl6K7UlJ7cYWMcRmHMRqvcYWySLfoZRavNOIjtYWb5ShHyYILnoriqIoitX8Ux3Ws4yTXvyUfUzUSrv/VemdfbuEp57qvVaNfTlOoZPFh3fGG81KFhOgxX7YyN/PKwkt3/q5jpl1j1LmmjS1SNcYT7TVqBsdcy1K5ItU5r+afVMoQidA9X7U+HzCDxkuxiaPk7bZfMz60jG/Ai2eQRKNipcP4jqRiDZG5akttQfJM/6rEvtONTug38t45Gsw9W+j78mBfmu5ar7FbF1NaL/bxO/YmTXZl5z5mn1Fnf/YX3nQ8pfYltXZkmXZsD71o91Bu73Ye1nZFFfcEJndjCXdzB7tvN1DnzMxdej2F8s51vzN059Q2uliINaTnBa1IrXf2u3dTyveSndlKsio2IMw/XUSAR7J2r8/r9bP/iDJZ4rbZNKoC5Vb1Ct27oiu3YlP4wazQNQq1HIS9jjdCqsp4ulP5htethydPoVXQSGNQ1qtDfrJ5IV1RI/ViDZCrN6ysMuwoM0xIbvQ1aqpDW2557xN4WqW4EKXaiLLaN2Zwj8u8Fj0jckN0jf/4SAJSZH5Eq+ooI1dERhy0EElwdVf6YXp56kRbaVPbHJVdty0+y8vSn9vFR8e1SN1FMxz7ZFTTYgxStV96pmfWJ703KZX7K79nHew54wNyIP9TZO5HsafvbUzdc9QWNhx85yt8w2fcpnrcRsVxxt/nkHt8Tc77q81Dyk91ME9Efjw3K+d8wvd8BoFdtRPdNYpz/yF1N8tNr1VN/cjH0jw8yY8syabcSC9Me9pfe9tvENyH3IwkdGbYJriLK88zXNVffKk71X1KVYLjZq/bPLvrypx840Q/yuaf8eeP107lsk9VO+NlvVDnp+TVLCGt85zC+0cHCAECBcDToIGZQHgKDVKBJ/CaAGYGNcCTONFgP4cJQVzs6PEjyJAiR5IsafIkypQqV7Js6fIlzJgyZ9IkSSUCzpw6d/Ls6fMn0KBChxItavQo0qRKlzL1SaUjiEK7yngIUKZQABC5chUJCUKLFhUXQaxZw7GmBhBiFxr8quWk26do59Kta/cu3rx69/KlebMp4MCCBxMubPjwUbkdi/9sLVKo0JZdhc72BQniWr81CC1W7uz5M+jQokeTfvkXMerUqlezbk1UcUcPZXbl2rVrS+m2GiNSzu37N/DgwoeXPu36OPLkypf/hO1RBa5cYoGDoNKbOPbs2rdz7z7ROPPw4seTZ+rcO/r06tezby8TfPn48ueXP+/+Pv78+vcDh0//P4ABomYffwUaeCCCCarkn4ANOvigUQQqOCGFFVrIHoMQarjhhhJe+CGIIYr4WYYcmngifR6OuCKLLbq4Uokoyjjjch5y4AUof1z3Io89+lhhjDQKOWRqBHLwBwGN6ECIKDr++CSUUeIXJJFVWgnYeSD8IUojMwTwpQpMCrL/o5RlmnlmcVequeZgsB3JpZdfyqmCJ6IQABIV/fSD20RV6KkYFWGx0Y9cgVKmghZkorkoo2VSySakke4EGwGigKKCnGA2IgqnonyE0EAWgSqQRf0QNNAaGqwR0UQQvdUorLFC+aiktbKpGAidikIICAGosKmunna0Kjxh9SORFgSB5dBTpharhUIcRauBCgJcIyu22bpIq63dVolrsFyGy6lHrnZkaj8YCZAuugYhlOq7GrSrLb31Wsitt/nOCO6445YrwHUIvZqsRKby2S4V1mpwDTyK2vswxO7hqy/FHPLbr66e/BuwAAOzamqq8q5rEESrchYxyimvN3HFLTsI/xsoGHMKyhYceNSMACFPNK8hI5tqiLsdG0Ss0CobffR2LLu89H+wgeBFpeHSbPNHycKTGTMSJQzPGmwwKzLXzlLmUEFIm312f0yrva9HN0ZtKZ8irbGbRXMnFLKzCb0aNNBo+/03aEqvPXh4EnrhSdwkuTVdW2VRZrAWZnUEkYqAW375TIITvjlylaMFskdsIHQt5qWbXpPmnKu+muc1gd5RNta2fjrttX+U+uq5Hza77b37nhvuugsvGO+/G398ZcEPv/xSxSP/PPR0Kc889RFGfz32fE1fPfdBOZ89+OGXtH335fP0vfjpq/+d+e0bpqIHKq3ReuQ6o0RWWXvvVX+F4xdRsYXDtAfA9RGQfe47YGAkpAKpSOck1TpZSCAikACCpFqk6kie9GcQrz1EgygZlf0Qgr6VaIFQnxLACAtYO/IhsHv2WeAucOEYyTBOJA8kyRYE0AywsKQ6rLoIwTqCkIow42o9hMc1wNIbZlyDgjR5nRCbqEICsrCFOwkIACH5BAUPAA8ALGIATwAIAAMAgx4eHi8cHC8mJjUaGkQjIUogHogWFJQTEKAPDKwLCs8FBdcFBeMFA+0CAPAAAAAAAAQRcAAQlFuDFcKSQIzhNMdjGhEAIfkEBQ8AcQAsagA9AAMCLACGA0duA0lxA26iA3SrBDhbBDxgBEhvBHGmBjZYCDRRCDdZCzpaED5dEnaoFUJgGUVjGjBCHHupHUhlHh4eHninIEpmI3eiJE1pJlBqJnqlKCgoKlJtLDM8LS0xLjA0LlVwMDI2MFZwMTQ7MTVAMU9jMoCpM1lyNDpHNDtINn+nN0FROEFSOV12O194PWF5PYGlP1BoQlhvQmR8RUVFRmh+R2SAR2iAR4mtSGaESGl/S22NS4utTGyBTXCRT3CEU3GFU36mVX+oVnSIV4SwWXaKWYm3Woy6XHiLXZLDYHuOYJjLY36QY57SZoCRZ6bhaKbfaanja4SUbZOqbrf3b4eYcIeXcIeYcbz+c4mZeI6ce5CefZKggpWihpiliZqmjJ2pmKavm6+8nquzoq21pbC4qrS6r7i9s7q/trzBub/Du8DEwMTHwsbJxcnLyszOzc/Qz9DRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB/+AGhpxhIWGh4iJiouMjY6PkJGSk5SVlpeYmZqbnJ2en6Chk4KipaanqKmqq6ytrq+wlROztLW2t7i5uru8vb6/wMHCw8TFxsfIycrLzM3Oz9DR0tPU1dbX2Nna29zd3t/g4eLj5OXm5+jp6uvs7e7v8PHy8/T19vf4+fr7/P3+/wADChxIsKDBgwgTKlzIsKHDhxAjSpxIsaLFixgzatzIsaPHjyBDihxJsqTJkyhTqlzJsqXLlzBjypxJ0yOpWDhz6tzJs6fPn0BHDQpKtKjRo0iTKoU1o6nTp1CjSp1KtarVq1izat3KtavXr2DDih1LtqzZs2jTqv26tK3bt3D/48plRaKu3bt1Z8zdy7ev379w8QomoRew4cOIEysGNRhv4UUQOEBIsLhyHCJxHPQl8kWzqgUsWrS4kGgD6VAKPjywPLfx3ceIIstQokMy5VculixgHWr1kqIbcux+tDpJJBddtGz6nUj5JQc8Th/aABe69L0ICBBY5Nou7EKRa8QxAiOIk9qTXXGJg4E3KCFxqBM9EkdCJCyS8Me5PmmB70RZYHaJfIlcsAULbhG4VwBxCDCAAHEAkEh3eR0SGQ5OGLFCIScA4UQPkkViwgUPEHGEdDIkccRqhIRgQiEj1odgHDywwMJwcYRwxImGSPAiD0fI4N4iX3RhyAIbOGCC/wwfHEmdBDK4wAAhC8ggw4tUJrlkk4ZcYCWLhDhA3ZIvihlFHCxssMECCmxgXyFJFuJCHEI6spsXNBZyAYlR4rjBAxtcmQhzhVSw55uGBCqDdA6wEGUhSAp5hJqe7bdnpYQsWSchl1qJiZhxkFnIA1YSKOZwoEYax6RxEsKAlVhmWV+UUxKiZq2NNPpooWu6IAOLFWyAQCES8BfHsAMM0EAGDSQbx3aGUEgYeBxgWIQKiKCAxBVxdBDJG2W4QQgcCwxbiBszqtEGIat9EYeRh5wGLyECxrFeGYXAN2S8qyZ6CH22xpFFIQNf4C4hWOymYL+EAEzInA0LLKfDo8bxxf8Xw72obxyrnekIgjnEsUUh65GsGaZxeGwIoYc4R2UThsw5I5zxIcJDwImo/IV86x3cmSX0DfwwnYYAfDOW+CFps60Hp2wudUJLnBkhNzcyM874NU0aZjMicHEiyQ6wQxg7hI2ItI95e4USIxyCwhBXxA2Ft5CIO4avcSzwmxgX/BAHG7upwQa7FnNsgrs5mCAffWJgYIIa9RGynhs/mIDFpvsS0kIcNPiLpgMjy7f4BSzQN3IODsDst3wsgF6zkFg8cMF6ntH3hQsYVO7ABb+NWAEhfs945u+GzMvIbxVUwbHkcSzBAGbGFXIzFXFAXAjL+0FtCHxRPFDinBtMusD/i14gsMAFc554gZ+Ycx4HFQ8gWL69zTtgXNWU2I677ha7uV4I7kNa3s6Xvj3tRjNfeNH9cHai0h0Cf4sI35rINyz8RMEBfqOPfayQqThsjBABCNsAUiCFEoiQQYVAWyFEMIW4XQEIIojD21woN7o9wg1uwFEcyLAfQoABTXEQHOGatp7roOEyPODBegS0Hr9lLhGbwxx1PPYiJ1JHP2GKg36mtJ4pdtBv65GBjehTJ/pcLWKIWh4HCeEyyeGpEV7Dk5DqtJ7hfI0QI+uhygiBPYIZ4mI6hJONRjachXmuEPhh0ZmoU8flRS9/QJRTnkLVr84JsJCIENISbIQg51wR/xELwAIWrNeIDQwyb1pcXgUJMTDNnCmNhBAhBV4QAREeQoWEYCENr2CEXdYwEm7AlyHUkENCwExIQlweEXtYiHUdwmNFfCIUiUYzYjUPZ/5yGBfwpCD7/KZp0osYmAqhwUPgxwFzPMQX3siIJkVhA3PSzzb9OBzm7CZqfFRE1O6JiNkdApOKWNh6zHU0e7HzmpWgzzhvBjHN/MaSCENlzQ7hxOJh8xL+PFIqcSS0OVUNn886gAjHVjZbppBCj9GlL305N2CCM4hvGM6ZhISGwSmTZMwkRBsA54CeVqqR0jxEk+pVs6r9Dmav8xehusDNSR7VYl5YAAOmiiv6BLJfsP/cHA8IqVEsLuKDVDJoIbiKUH5msY+shJTUDIEfHjgglBI1ZDVxOpyCzvN6hdidsRRhVUN0DmKrOSYlN3pR4IWKqgzAZPsm0da3Jo2wac3bF7iQTkMUQIRiIxtmoRUHXMZBpSulIRJs6Ag3vFQMOSLEGChphmIKqWn4AWAhzJBTQwA1qGpt4yfjoNWALTaPmuliKnmbJ+WMk5wSNYTf+LOArz3yi44wEifPhKD1rKa57CwZdQi1G68aAp8vdSMhvCZR+4C1sPg5TXrFiteIRs4RfS0EggQ0X6JhyUjDMa8hhARBmi3WARdbLCLuSt7uJjdqtksuIQjgoLCRVIQHiBb/SgvRASaE1oVMiIEHJGHaQ8DnDDzAzxELxwUeQK5pjDsCEabkgzik4QcyiAIbTnNb3BpzeTirHJ5OQ5324ecIlotDyOSj4x5WlwUm4IEX3hTf/b7PSjgS0MKMQ7xFkAaLL/rNerDwgTN98AghWE+s6Adj+0jABXPiApp3czMumMAETRDSwHiwAY8NZzdfsNJpQuACv0XBBQia0xZMAEbxtne4sOSrgptLJxa4qz0AHLQ9w5rnRUnWVjLAQtV6jIk51zmsj40sM59riJFq1mwS7g5sQCCklWbYA+lx6YALoQbROZO2TVsAaglBvCW8gdYsqrGNqVNR6rATf9QhJcfy/4hQY4eTECErxLyaDCmVgYmR/xwuIzqHPzzb644JKwQ7ibofeM2pc4fA0gdfZDBCTDa50Z6kd1GpzTfdNZ/uTXQiqM2epsXbY+/GUbyNWrKh1UzZhuhvgXzWyDNx1LYTPUQIHXzqZKGQEJ6NA2U8IIMnYDgGHYj1JqCE8DdHggGA1reNzdk06vDgASFAWQRNgCiXwxxlSGqVJfhbGkxsM+eHWIIDQnBcSjBATThawAfWlImhy7UUSh+zrZgOCQyYBhRKp7ojGPDuRVD8BqhOtWu+o/FuyQAJIBd5uhWxhpX/5AO1evok5L6JC9ggvByj+yPuHfTKFFyovKnSmdCdiHDtJKsBFmjWAJ51ywkngjIhv40iJJCFylu+8nt0u09Io/BJcF4U6Eb4JrZw0LCiFTA0+IHqV/8DIRQ9MZ7JfCIMEIdkRfjiYm8M2TXP+9773j2cnZDjf0/84hufNxk/vvKXz/y4JL/50I++9HsirUAAACH5BAUPAAIALGECUwAMADQAgSlKYURERgAAAAAAAAIihI+py+0Po5y02ouzfqH7D4biSJbmiabqyrbuC8fyTNdkAQAh+QQFDwACACxhAlMADAA0AIEfRV4/P0EAAAAAAAACIoSPqcvtD6OctNqLs36h+w+G4kiW5omm6sq27gvH8kzXZAEAIfkEBQ8AUAAsagA9AAMCSgCGFkBcLS0wLTM7LjA0MC81MTI1MTVAMjQ7NC05NDpHNDtIN0FROEFSOTk7OzRDPT1BP1BoQlhvQzhNQ2R8RERER0dKR2SASGaESkpMSz1XS22NTXCRTk5RUlJUU36mVVVYVX+oV4SwWFhaWYm3Woy6XV1gXZLDX0pwYJjLYWFjY57SZWVoZ6bhaKbfaanja2ttbVKCbm5xbrf3cXFycbz+claIcleHdVmMenp8fl2WgWCcg4OEhmKhh4eIiYmKj2etk5OUlmy2mm+8mpqbonPFpnbKpqamqHfMra6sr3rVsn3ZtLS1urq7vr/AxMTFy8zOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB/+ASEhQhIWGh4iJiouMjY6PkJGSk5SVlpeYmZqbnJ2en6Chk4KipaanqKmqq6ytrq+wlaSxtLW2t7i5uru8o4O9wMHCw8TFxrCzx8rLzM3Oz7fJ0NPU1dbX19LY29zd3t+q2uDj5OXm51Di6Ovs7e7B6u/y8/T1ofH2+fr7/If4/QADCjT3b6DBgwifFUzIsKFDXQsfSpxI8VTEihgzaqR0caPHjyDT/QpJsmTIjiZTqgyIcqXLl/NawpxJsxyFmzhz6tzJs6fPn0CDCh1KtKjRo0iTKl3KtKnTp1CjSp1KNWnNq1jBAdjKtetWClnDiq3mtSwAsGPTqj1m1itaRgL/1sqd66pt17eJBEwgFJeuSgB+cdnlitdQ30OHA58DrNjc4K+IEufdtDdVZYCXDQHODGUC50KfO4cmNFpS6UijPzM2/Xnv6s6UPL8mPWG2Jc6eIZXOjWhzJteJTmd6fNYwpACTnixS3rie7XPC5xF/i/x4JOawV2GP7pF7r9W2n6Pyrkx8b2PTCx04tF5R9UdPsGMlzykz/fOa9p42D4W/wfvlPfZWe4+854h8hSAIYEML4qIfKvz5l4uE+VDoSHqEEOiIgY0gqEiDJIEIjYXDkPibJyJe8iAmGEKhYSMcMuKhjKRllZmJI3qCYyc73mZaI7uVKGAhMW4yYydNZLdR/4qx0RaLhfd5xxuLogA4pSGt4UdMi1AUwOQhRzanYzE98lKmmegNichnRZ54yJkHwfnKl5HIWY6d3HBpSACVtdmIE2vhCYugF4pJmY5qumfoooxComejkEbayKOSVmppf4leqqmklG7qaXPTBSDqqKSWauqpqKaq6qqsturqq7DGKuustNZq66245qrrrrz26uuvpjYg7LDECksBsMgmq+yyzDbr7LPQRivttKgWa20Dx1Kr7bbcduvtt+CGK26w1xKbLbApvPDCCqQWoO4LHYwr77z01mvvvd2Wa66qA0yAggYHzMoEIU6Q+kAhQ+Cr8MIMN+zww/oOe26pAlgABf8JEIDAAsCxFlCAEwW3WwEUCT9s8skop6zyrxEba+oBF7BAAgOFJOABCxsEbOoHM0CRgqlNhGwwySsXbfTRSBfdMrakChDzCAsgooAJNEBhqhGGMNEAqUGbenDJSYct9thkc7v0xFDQgIIBhygQAg1wu2DqDjhg8AAQUPTAtdCjfl3234AHLniuZ496gAxw0+DBem4nHvepDazwQgxEj9p1qX4PrvnmnHNeuKiHO04DCaI/XuoO8oEdwOVDq97567DHrvLnAYReeulyD+1ECg1gULmorPf9u+zEF288vbTbfrvjJpQqAhQ7iLrC8Es8UUCpBTyBxPHcd+89tbQHoML/8omrEMEApfq++wvKqY73EFCUQOrAPdT9/f34569r+F6mXbr56DuVDwqxhOE94Beq6wCgoDAD/TnwgRBUVfhE1a8WlC8CrKJACjgQwQ568IOvmiCpJmACDILwhChMYQhbNjEVuvCFMKwWC2NIwxrCUIQ2zKEO9YfDHfrwh8XrIRCHSMTBCbGISExi0o6oxCY60WRMJMATp0hF5M0QVQ6owRF44ABmYeBdD6iiGMdYKhw6wAZE0EEGblCEG3QxWTgoxM/ISMcqTvAAMEijBArhgBwQwY3JakAc51jHQjYxfAQIghJOkAgJFEEI19tZzwh5ABFoMH6jooAIHkA5DJRqQpCj6sAHSNUBDhrylDUM3wGI8AMiwAABhnAAD5JwBJ2RCmuF0FoAnocdIIgqjth5AalAKSqsxSsAB2MCKpd5w5YFAgAh+QQFDwC4ACxqAD0ADAL0AIcAcb8Ac8MAfdUAgt0Ag+AAiusAj/QAkPUAlP0BWZUBYaQBZKkBbLYCQmwCRnMCT4QCVY4CVpADOFsDO2ADSXEDbqIDdKsENVYESG8EXo4EY5MEcaYGNlgHOFcINFEIN1kMOlkRPl0SQF4SdqgUFBQVQmAZRWMaMEIcSGUce6kdLlYeHDoeHh4eJCkeMD0eeKcgSmciNUYjIykjTWkjd6IlO0omLiwmUGsmeqUnQ1MoKCgoRWMqUm0rKh0rPmIrYIUsMzwtLTEtSV0uMDQuVnAwVnAxNDsxNUAxaIwyMjMyWXIygKk0Okc0O0g2f6c3QVE4QVI5OTk5XXY5bqQ7X3g7YHc8caI9YHk9gaU+TVE/UGhCSUtCWG9CZHtDdKhEdbJFRUVGaH5GaYJHZIBHia1IZoRIaH9Ie8FIfLhJZ3VKaHRLa4FLbY1Li61NcJFOjM1Pc4dPfqlQboRTcYZTfqZVZV9Vf6hWdIhXhLBYbGZZdopZibdajLpbeItdksNgfI5gmMtjntJkfpBlgJFmfHpmiZFmpNxnpuFopt9pqeNrg5Rsk6lut/dvh5hwh5dwh5hxvP5zippzlJN0ud15jp15y/h7kJ59kqB9xvOClaODzvuGmKWJmqaMnamM2P+NzfWPoKuQn6uQyuSU2v6Vo66Z0+ua2/6br7yenp6eqrKirrWkpKSrtLuur62vuL6xur+4v8S7u7u7wcXAwMDT09Pu7u7y8vL///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAI/wB1CBwosJVBgggTKlzIsKHDhxAjSpxIsaLFixgzatzIsaPHjyBDihRpsNXIkyhTqlzJsqXLlzBjyrTIoqbNmiVv6tzJs6fPn0CDCh1KtKjRo0iTKl3KtKnTp1CjSp1KlWrOqlizat3KtavXr2DDih379CrZs2jTql3Ltq3bt03Nwp1Lt67du3jzjvUBR40MITbk6h1MuLDhw4jTThllytQnU3kEJ55MubLly5VVeCqVZYcmyJIxix5NurTprUhMEarpBbTB07Bjy55Ne+cXyDVTR35du7fv38DzWsHNQnfo4MiTK19O9YcpSTXfuG7FvLr169iFrqhkqlAcxrupZ/8fT7588hyYGk+abr69+/enY7QYXuc4/Pv4889FsyiNGE2l9GCffgQWaKBXZzBmiihbsDDggRBGKCFTLdRQg00PTqjhhhzetFBJM4Uo4ogklmjiiSim2BGIKrbo4oswxijjjDL1BMaNOOao44489ujjj0AGKeSQRBZp5JFIJqnkkkw26eSTUEYp5ZRUJmnjBVhmqeWWXHbp5ZdghinmmGSWaeaZaKap5ppstunmm3DGKeecdNbJJQh45qknnmBcaeefgAYq6KCEFmrooYgmqmiXezYKQp88gbHopJRWaumlmGaq6aaMOqonpDtJCuYJQJzgwaaWZMJpmpdYYigKVMT/KgKXHxBhgp0lFAHCqmnOQMoaXJpBCg+8wlnrrWu2WmyYnn7qZ5ekdgEIG6WeCmcRgqCw5hWkdMFrF96Sye0VZUaSCbBqikHKukpwyQMpcrA5wxoldNkHKdpSCu6bkYSyq5YgdBLJsl1KES6Z78a7LSnkcsqBBBJ82WyeoOok6pakjmEIH1rYcQi1pr4pCC0Ho3lJJ/9ymgknZQZ8CZklrKvqmiCsQUq7W85wiRRshnFzl2tQEkKlK7vpax9cdkEKzwRvGQkpKYupM9NqurwpBRpUYEEFGjTQ6cQV33QxlqSWcQgfUAzEBB2HuFEqlxIkEIEEDTTAQZZr/DHHvyZI/3EJLYJIIcWsZvr6h5Yl8BDCFV0gi2XiFyjRBc4XmAAusY8rzrjjWBp8xd1ZzgADCIzPcMEMPGzSCQ88mJ740JmDfsG9poupNCekOM6DCTxMnuXrm2/pM+VYzmB8vQB7DvvpjCvxb+J6/Mr6vyEYP4PsF5DeBRVa7g5DF5+LWQK4JaDgeAjgUo666qzXjiXry4d5x7BcXgJ19yZ8Hz6WIXiOfAg8uEEXUNC786VvSzDgQb7EBy4p/CuBlBgW637HAw4QwXfFO16WACiCImDwceQzn5Zop6YZxO9NHMiABSwwAhyMYIUZiBjAJvaoZ5XtEHt4QkKa4AdIGCIIW2pAAf8QgAADENEBp4MFLZYoC9MpYolQJNmZlNYwLNlsXeui2r0iuC5yKQ2LSLvAFbHINBNkAouZcFwmMtEJLJpgE1hcF8uUQIowXkARpHAft8Iwpqf5LFwxi6MirBjHpWlpeN3DosKKh7t1+esC88PiJm41RiwSAUv3WtcCzYjGW8WskaQYGJhm0EZStFEQ7yslKRRxNzjGkWWPWxe6xHTGqF0gBKFEHClAKUpfxdFb3Cokyi7AA1WyMktPg2WYvrguSmDpaYX8l82g+StiKjJL3FLlHYpXylNqaY/Msp44QfA0QVwSTipcYRtO0YYVWiADW6JhDSOVpSAYAhKAOAJCmoD/B0j4MxFA1FIAiDjQI17AFbRQRAn+QItUVE4JlqBFH5RQBDSRMEs+4wTqOjHM2ZnyCjeYgxJitjoUnLGiGd3oMC3xKxD4bJBYOmMmisCDPogABTDYhEZngDyO7koEpHhZlt51OGYFFaiiBOqvRNAIhl0gpcXs6FN/1j2lLTJgLeVBJHbVhTnMQAQ2Q6UIZjC/LhgvSyLgAR4XiEc9iOBeYl1XGEwQQcx5iaVmEEE5L0BSJYjgD9XEqU41iCWlzjJMoZhZIreJVrnSlX4mEIRfiwk1KpDiDnMghR5sxoO+/rWaz9zlmM7IAxAoYQ5YMsEMnmY8x/msW/NqWO/glSXL/67uBp0Ixd3wqldSoHKopCjqlyqJxclBcxNrINyaKOBOCzhhEUtoLgVmCLZnGYER/oQEHYygA35m958BxRIHDoAABlwgAUdUAi1esYb2KvFfIyuZme61wKmGa344uxfVLsAtdNERaX/EEn59dQklCK6WMc0dl4qmpczyTGkli9lvwSQF2trvp0Et3irtK2CqTpV476Nt5+rIKANX2JlYQiSX6Jsl0WKJoxwAKorH9SVcothXqFRa4ARHClfFVJlZImckqhgmUqA4kYu8gIyxROPiCW6tllWCZa9QhJvpWHAV9vEF9BAJmIbpjO7T0tNs6bPDAneRllUYYE1gYw1PmP+vvg3TDMBFZ/I9bg1nXKUtzaSB5r4ACylorgao26yw2eRi1/0uJPigaPBqSQJEhMAFHHDENUQRivmKr5pYjFFSVPQCEMakgvHmVDij0mefhjAdC0kK5DF4S69ObS4vnMhBiEkQpDADD3DNM6D+FgRGnmqqu9VpEFtzkaHekhRUGewUe3iE+IqlKC8wZl9jacpfetdvrZ3ZQm4iS7FWU4/dRQrUNva32DYBS+MIq5vRkabd6nYcv42mbgsszGMWnqe7lLDaEtujvIuzkgUeYlu3CQV4jHaaJLCB5q6znc0ltKcMXRNEY7fRjQboo4mYgEkf0Qy0iEQJRl6ClGk6TTb/I56Kk32vqPmsYSYgha1X3i06ziEEOA9ByjJxZC2Fm9o3IziW6GjmLjE7ztbOXrBpfjAVIzlLyQ4yR/0KglAc2enQzhdSkQm1pFv2YDCYgeN8ZXBu3yznOgc3kNWkOuxVbsPnvjax76UHNtM3yu9Swru6evac75lMRJjDulOW70MqfEv9lnu46Ev2wgqd6MvchOQnvwmegaAL6x7ymibQXAs8vPMyzB4NKc4Ci2O80X4IL5aGOIAJFNQBPKCFKrzUB1oUHfDlNjy67nXOlmupwnoYcfDLLGoi+GrasO55lijRCS5VuI12xVJmP51tUjgCyz4F6sy0PdXdk+KcoDYk/+JFHDm4/y64Gj6y0ozt0QXCOHscHTi6/61ULQOb3nTMMWi5xHwulYCj8vUluAYDXKI6WuJ1xFZ49tNuencze6c0t3dHnSBUZQJYdoVrZHZ4T6d4ooYC9zd0Qjd9YSIFkVCCJhgJNxBJnTAHnLNwWuNOn+dOGyBxjkJ6FxMEgXB62RUIXDAELrAlCkBEQogASJQKtNAJXcUJrIA3tMAKeqAH9UUmnUBvzrY0StNRvid13bJspHADU2WFprQrjuBbRSAFf3BkPNcleNQH26MlbaRYWaJTHRAmmVVFeFQEStUHRXBG7fJaBhOGwJUJYdAFd1MEV5BZinAFTHNGf9A7mf+AJ6YkBUpwRkdGR5RgZ6RzBXgUBldgOoA1CEqwhvLHgQPXbFiCa4rQBd6EVXLQO5EwS2vYho5HfmECeVuSWXaFgN6Ca3qwa5qEdw7YLazoirOUTKO1BgYGR8qVWYIAPp0WhYaIiIp4AV/XgReAiqoodHKoJiW4X2BCWm3kS1HTZzDIToJGg41ig1niAknQBffUaDw4BCHDJQtQAAUAAAYVM1EEZJ0ARURGJjYDfj7jSp3gPlmYJbiFRWbgbARZOyGQcOsiXGnIJSa1LlToUWZWZRHoc62GTZcFVKAUfFPVkFsiB1i0K9R0kpVDTZswh8xEiVqCa+tCLIEUR6gUAtT/pAi7gkvz1zCB1HMgkHAR9FswkGddlCUVSQpUaFhlsjJuF3MTxpNyRy5vhEX2YwJ0RATvopVOVZRxVEWP4GJfFkeHVQLrRgoy5DNRmJLrAgIV1jAsFpTNRHAaSSgnFQrD0pZawlzlCHErNF1BNnrPcgEe4AJD0AWIsINcEATzyCUOkAARE4QI4DXFowRV8Hc0IzCdRlO6MiYgQAR+tZk80JlawjulxSYR1IKR0AknZCa+liuu5WmjiZllkkBh1kFhVkJKkJtoonMwQGII2Tp2UmEByGlhMj1lcgPCuSaJQwS0WSe+CZzUxpqE0gVrYALtVQLtxSXp5HmnQAbuBE/o/7gn6rglhRkEXeAHi9mYXfIAQ4gABDAovFNsbYJ1cnIFgOVlCBmFZ5J0hsd+TWMmJNgFUhBB1DcoCnQnRIA8AQooA1qg+4YlN8CflCIB6TQCNPBC7xR6WCJP5ckl58meXuIAAmAARhQAlGko69cmK1onMtWCbwJsb4YlLdqgaaIEoIBFG2mjPComOKqjTYMB5LgBGgCY8SSY9NSjSrqkPFo+z8mkUIo4HsijHHonSBoqUZqlWrqlXNqlTeOhNlIlYjqmZFqmZnqmaJqmarqmbNqmStIhcBqncjqndFqndnqneJqnerqnfNqnfvqngBqogjqohFqohnqoiJqoirqojP/aqI76qJAaqZI6qZRaqZZ6qZiaqZq6qZzaqZ76qaAaqqI6qqRaqqZ6qqiaqqq6qqzaqq76qrAaq7I6q7Raq7Z6q7iaq7q6q7zaq776q8AarMI6rMRarMZ6rMiarMq6rMzarM76rNAardI6rdRardZ6rdiardq6rdzard76reAaruI6ruRaruZ6ruiaruq6ruzaru76rvAar/I6r/Rar/Z6r/iar/q6r/zar/76rwAbsAI7sARbsAZ7sAibsAq7sAzbsA77sBAbsRI7sRRbsRZ7sRibsRq7sRzbsR77sSAbsiI7siRbsiZ7siibsiq7sizbsi77sjAbszI7szRbszb/e7M4m7M6u7M827M++7NAG7RCO7REW7RGe7RIm7RKu7RM27RO+7RQG7VSO7VUW7VWe7VYm7Vau7Vc27VeS7MkcAu2gAo6sAq2cAtfe6hJMAu1EAtJkLaImgS38LZwe6hhW7eIerd4a6h6u7eE2rd+K6iAG7h/Gra3gLaEG6iDm7h9uriMu6eO+7h5GrmSe6dyS7eVq6dRwLZum7l4GrZjW7Zn67mkW7qme7qom7qqu7qs27qu+7qwG7uyO7u0W7u2e7u4m7u6u7u827u++7vAG7zCO7zEW7zGe7zIm7zKu7zM27zO+7zQG73SO73UW73We73Ym73au73c273e+73gLBu+4ju+5Fu+5nu+6Ju+6ru+7Nu+7vu+8Bu/8ju/9Fu/9nu/+Ju/+ru/dREQACH5BAUPAAEALGkCUwAMABQAgAQ2VgAAAAINhI+py+0Po5y02otzKwAh+QQFDwACACxiAE8ACAADAAAIDgABCBwoMIDBgwgTBggIACH5BAUPAAIALHIAPQADABUAAAgUAAMIHAigoMGDCBMqXMgw4cCBAQEAIfkEBTsARAAscgA9AAQCKwCGHDVoHSRWHSxoHh0zHh4eHh4tHiMyHiZAIS47JCwoJj9gKDpXKU14Kis4KztEKz49K1KGLEdYLV6OME1gMFiMM1RnND5CNkVLNlZtN12VOF2TOkMzP2ByQUQ6QlBNRUo9Roi0R4WySVVJSm6BTXGFT2l2UHGFUHWVUniMWHWFWaPjXKjpXnyAY3+AZHl8Zr32acL3co6FcrjqdZWJep+oe9D+fZ6afaStfcXxiLvBidH2idL6i9n/kM7qkczllNz/mtbwmtnrmtv+rq+tAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB/+ARIKDhIWDQ4iGiouMjY6PkJGSk5SVlpeYmZqbnJ2en6ChoqOIQ6OnqKmqq6ytrq+wsbJEBLW2t7i2pbm8vb6/wMHCw8TFxsfIycrLzM3Oz9DR0tPU1bvV2Nna29zd3t/g4eLjwAcoHrfX5Ovs7e7v8PHy874CPzPpiPT7/P3+/wADTltAwoSFWgMmUPhxY8KEBwTUCZxIsaLFixirhfghpGMLAgA4duyIT2LGkyhTqlzJT4KQHBcUyBDSoUAECD9oRIiQIKI+lkCDCh1KtNkKISw4cAAhxEUte/h0/SxKtarVqyphjBwZ4+m9fEOwih1Ltiy8F0EaIFiLwBZUsGbN48qdS/eZCiEfeAXgYQNu3b+AAwtm8MNHCQwncIhAWANIihHoTAqeTLlyUQ07RvbYYCuDjo5dJVseTbp0RQMVJjgAJtq069ewJ7aOTbu2bXazb+vezXta7t7Ag++uVGqW8ePIkytfzry5c+KJnkufTr269evYOwnfzr279+/gw4sfT768+fPo06tfz769+/fw48ufT7++/fv48+vfz7+///8ABijggAQWaOCBCCao4IIMNujggxBGKOGEFFZo4YUYZqjhhhx26OGHIAoUCAAh+QQFDwA3ACyEAD0ADwAVAIUcLV0eHTYeHh4eHi0eOm4fNmwjHh4lIx0lN04lT3onU3woIx0oKCgoMDEtZIczMyozZp4zaow1Vmc4bJs/RDBEdbZGTj1GUj9KVElLWExLhcFPXlNPhc9WaWFXl9xXmdxYbGZco+Necm9idnhlfnhpvPRsh31siolyxPVzyfp7mZyEqquG0/6N2P2Qxc2U3P+Wzt6WzuGZ1eeZ3P6a2vSb2Oyur60AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGiECGcDi02YhIopEoaDqdxuczFDM0ja2TVDEjQW0e2mMq/iZmJiegtXoaBymYVeCYjdw2wWdGaVZmG3gCfx1+MxiCETMghhmCf4wCEzMighwzF00ELyqCJTULTiUyB18FnE8QM4VXNhozFk8BKC5zRixtUggSpQJGEg1SwlHCw3lOSUVHyUhLQ0EAIfkEBS0A/AAsagAOAAwBRACHGyQbGzVFHCQjHCUsHStdHS5BHS82HTJoHTNaHh0yHh09Hh4eHh4jHh4rHiQyHixiHyw8ICUqICY3IDBHID1wIS07IT9YIh4eIi1FIi1IIkp5IyopIzNPIzRQJC4kJS4zJVGMJiQcJjtWKDc8LCobLE5uLSQcLS0wLS4kLUE/LUpjLVuZLlJlME9tMjI1MkmBMyobMy8gM0ZNM2CNNEpTNE+PNFZmNU5ZNVVrNVh2NjY5NlhpNzkqNzs4N0A8OE9aOTk7OUE9OUVBOVlzOk5PPT1APmOgQHGvQmN0Q19aRD0pRERERGh+RSshRVNORkZIRkg1Rkk4RmVvRzcdR2FZSUg1SUlLSmZwS4a0S5bXTDwgTE47TF5bTGl+TU1QTj8uTllTT29nT3GGUHGFUUUtUWlgUWp2UZvYUlJVVFpTVlZZV0MhV1I6V1hFWVlcW21qXEkkXEs0XZ7OXl5gX0QnX3NoYHeMYWFkYlEwYlE4YmFLY3iRZHVqZI6bZUopZYWaZmZpZ1UqaHxzaVk1ampsam5XaouQa2dLa2hKbGE/bYambm5wbsT5b63ncIBtcIZ0cXJZcY5/cnJ0cnZgdHhfdLzsdMv9dWxNdZqkdnZ4dolydpezeWw7eaGse3t8e83+fNH+fn6AfpaxgoKDgtb+hNj/haG6hbK5hnVahoaIhs/4h7K1iIiIiKC3iKeRiLK1iLOvibW7jdb+jsjjjtj/j35Jj4+RkX1ekZGTkc3uk9r/lNDrlYBJlnxPlsvWls3cl4lrl5eYl9X4mMzXmNTlmYpXmoZlmpqbmtjzmtz/m3pRnbfIn5+goJVpoqKjpLyZpqaoqMSfqb7Kq8POrK2sr5Var6+wsI5Ys7OztJd6tpZbt7e4uLmJuMyjuqSLu7u8vMebvaJqvtKmv7/AwKmHwczSwc+kw8PDybt+yr+kytLTy8vLzNWk0Mi20ce00suP0s2W086909PT1NLG1t2o19mm29WW29vb29yo3Nyl5ubm6OjoAAAAAAAAAAAAAAAACP8AFwgcSLCgwYMHlyhcyLChw4cQI0qcSLGixYsYM2rcyLGjQoQgQyJccqKkyZMoU6YEorKly5cwY8qcSbOmzZs4c85cIrJnT5I6UbIMSrSo0aNIkyLl6bNpQqRDlUqdSrWq1ZhMnWoVCNRo1Ktgw4odSzPrVqddi34ly7at26pmz/pMS3Tt27t489aMK1ckXZRWvqmZaVev4cOHmU7I8aFvyL8mvcjbd8+NzMKIM2smy5TfGRqOQUI+4ebePULrKsfEnNSTPMubk1KTRy0otXM6NC9xwAHEmSEcOkQQKYLJGCQbBDZQkUKFmCsDId+5t87LiSKpYbtkbZNQJpU61mH/iw1zkac7NGeP1+lG3ijdGs7Inw8a5JFk+JPtErKAXylhuuB3SggLQHZbV0ucEwxM3NU0mwspZSIPIeS9dI48x9DECjYZBvXNOhAitlsGvuGQAQYizdDHDRUYoQss/ZGSjCEVyJGMIAWq5MJaQIS4XUtFSCLJElZ05cIimVBYkhdqYPOaGoOZ9KGPJ6jhhg5IdlUEIULCtoQbXkiChhWZoGHSEpIkGdQTaRICFBpqXOgMlCZZqYMbmQCyJJRqIKiGFWwuctITmQzpRpQljSKPnicxacVMbnRpUhFuFHFHJuidcOcTJrnghl2dfdZUAzgggcQnvsT4ywULEKBLLDke/1WYF+vII0+tHaJxoa3YsDSbrcCGCIQ81py0hK213vooGsDaSo0LrjVrK6eSJCvPN5yWtMg332jnUirSQrhrs3OUVOu4kpzwqzzrnRAtsLWdgIa1tj5aUnusoDTbOTJ90+yzJxAiz7j5FnGtSa55klKo9Yn0gir5JZMqP6S8opwlw8TqlUpOelLEbB1euAgQrMiDywlPoOEkGmhkS5o8+U4KrDW2pvIyNaMcYysgrp3j7zkXSmKFrefg4izCtmbqUni0eeIMiCc4g02t4mFj5gnJirdOurhMzS7SA+/6qL+0AWvvdbTpO7BMuAi9hDPypCvwOnPMCzUz8lztL6gCef/WMEgNMIKMGRVIYMnEFQuUACipjoaTXQavx2yGgMjjDCCYr8NvSQ+i1N57Mrt3woUne+rJKIq659oxtrinsyfg5m1F6kBF661KBls+hwtFnORvhybV+g2EQHSlHthW3GGrG0OLbrQ8Z2PdbkmsUOPMTFsSouh7AoMejDwkzWGyvBiqxBQFZ/zQE8UWL4AALYgTw+oBuqyisVopTV6SwRlKKC3U6pIHlV5ms9ClaxzlexewRrE6o43CgTqTFvRKAgRAycRJwDqZSRAIPHOJLiXHK0m0PJW09sgDPZKol0mGNT2btK5Z3ItbSYyWrXOAqGTlWphAHnAGLLSgBI1BSAL/LDG4IVRCYjFKRidw0IhkvOF+dUmJZDrEvxOkUBJAyGKPTNK5QVnuJLk7YPmo5olF2IqBGHKgGnm1jTb26iYkI5s8vlMSDqKkVqBTW7tGaMI7mFBPKZxgSZilwZuogV2f+lzAZHgCo9lLUajZnA4FsoIsyEcGIamBLPAzC1IgLhe0wA8mWEUXIPzpJKaE0J0IQYiroXIlaztB5TKkvAWpRGd2ARoYbSXGDOGKfKpLo3scqKh12ItQJqnWOm6nEiUV4ULAQ+D1ToJHlYTQXbYi4QmHRZsnYPBsV0TJ01rYTEZKKIbpaqQgj3WhPKKELz6BAA5uQBD2jWAHmORKo06n/zTShMIFOjidJE6npBXe0nKSgGZJ/IWLOSzCGcAr2TGEdJKSaSeMJ7DjrnCRLDQeY42jOJatvnEhSUarny1Zxzqc8atQmASDKr1aNU2CGmup1A18TNoJItiss9FsLfuKifiwMYdqiU5g6XSkSaBhq9HAUy4Ug1VBuuKGUUgiFP2kaFWvpr20FAYITGVX+VCGwTOeCaY+OhbwMPq7KiXLhsE8RskeKA+XxulfYGNmSsbFrt4NclyZmmlJBCbBOYyQWSfU1DFU+it7Da2DnIslTHjqJHTOUJCLjJf5QkMQBYDCflOlKXrO06lQWGYJagiRGkbhshOwJouSKeQJmJTamf8oFSYumINeXWKlT+mEUswTyx1G5oIIAkVnrcVJ8pL7kpIVdJKcfYxJcuMupT1hFNHTwRM84QkqFYYQ1JAEIZyEUpvoYA4kaZ4E18ve9rr3vfCNr3zf+40lWWcsOL3VAI0VXb+khLT3+qdJ5oC6UbiSgiq5Q9YUVqEGt+QO4zqG48BitGW+5Kn91SdKAGzFdJZkCV5Aw+layxoi7dfBKE7xOzMsmv9mygWmVQkQRvHcBqn4xjg+E4tH4uKSXNdeA50ujV+Z4yIbmb87NshfAOwGAZOGxk+wgiQMTOQjWxnHGM7wkjNFUZPcocAxrvKVx+zgLPfXcTC+nQ6sYIX92pj/zHDGi5mj67gf0+TNcc4zW+bMWcfpwAsnbgme9UxosPA5NBMutKKxnGQlL/rRVz60YxIN6UrHRtJ9gQyIPUddS3v6LZiWC2T8dbZR6AOyn051WEJ9FshIRh6AxoU+3qjqWq+60aFVCWKxsQ9a2/rXcME1QRw3tH04I9DATnZRWL2VCXthFMhWtrRzwmytUHra2D5KtdGS7W5bZdtNuba3x20TcM+F3OjWtrCjk+52B8XcP3G3vG+yBH7Y+974zre+882Kfvvb3+Ket8Drve+CG5wfrPCAwhfuAVYEXODyhrdAWAGAilscAA73iMY3zvGOe/zjIP94hile8Va0wwQY/6cGNdQBDIuzYt0wj7nMZ05zXA+AEnkgCMltII9bVLx61BDFPLTw85ob/ehIT3rNC0APbei84qaYxxR+rnIWyMMYRVe61rfOdaUHARKIMEEUYjCQHkACEl8QCAO2AAZ6hGMLW1DCAigeAHWQw+UqF8A03BECjHf974AP/I7DgI/CwwMfnBDIIwqPj3zwYgEBYDzjnU5xKcgDFXinBgA2IQ84+F3woA+96ENiAHbYIw5CMAfiF5AEfKCDDD54Rj7owAAoOMHtUKgCDOYOgD3IIxGZ7708LvH50Rv/+IIvAz56IRA+rN4V+KiFHvSgCXwoQyBMd/pAKO77QQTfDMMvPv/yx09+pDs/8QtQfuKjIfnCXwP7TX9694Nvh/C/vPz4z3/Mzy8Q9S/gGfbQBCgwgCjAKguQfU8HfphHdZqnCPIQCOKnfxI4gZxFBfhQDQIRCc+XD35wEA7ADto3cQBgAfKQDcG3DPMAAxFIgSzYgj7RAN2QD8XgCPSwekSAD/BwCW0wCeAQCGonDvaACoXABrwHAMsQDyqYctQgAupggivoglAYhQQRBODQeNywegvABezAePCwBgOhhe5XhF0Qfkr4B/KAB1knhWq4hgvAAyFQB1i4AALABnEnEiQ3ANKQDigHdOXgDS7HhoDogoLQDIdQCKa3e1tBcgAwAmlAAkpkCAY88IeBOIkSKAj1UHjvEAdyoYgXB3QX94SUGIrGBwA8wAOOwYnB14miuIrHd3CuyG8Mt3BAF4us8Iq2eIu4mIu6uIu82Iu++IvAGIy6+G/EqHLEWIvCmIzKuIzM2IzOuIwBAQAh+QQFLQAGACyNAEAAAgASAIIZNDobJRsbJSceNU0kLiSIiIgAAAAAAAADDFhTwd7wyQaKkKSUBAAh+QQFLAATACyNAEAA9QCpAIQbJRsbJSMeHh4mPFYnJRs0Kho1NydPWFRQa3NjVS1keJF0bE2eucqur620ln3L0tLT1NPU0cDU0skAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF/2DTPBNgTmiqrmzrvnAsz3Rt33iu7604SSUAb0gsGo/IpFLlgwSX0Kh0Sq2KAiiCsMrter9gkdC5BZvP6LRNrIAsyuq4fP4VI9xwun7PJ4oneH2Cg4QyfxAJeYWLjHtiDBEFio2UlWYiAw8OJ5adnl1NT5+jpEo+QZOlqqs1IgcGJqmss7QrYrGytbqst7G7v7unwMO6wsTHyMnKy8zNzs/Q0dLT1NXW19jZ2tvc3d7f4OHi4+Tl5ufo6err7O3u7/Dx8vP09fb3+Pn6+/z9/v8AAwocSLCgwYMIEypcyLChw4cQI0qcSLGixYsYM2rcyLGjx48gQ4ocSbKkyZMoU4uqXMmypcuXMGPKnEmzps2bOHPq3Mmzp8+fQIMKHUq0qNGjSJMqXcq0qdOnUKNKnUq1qtWrWLNq3cq1q9evYMOKHUu2rNmzaNOqXcu2rdu3cOPKnUu3rt27ePPq3cu3r9+/gAMLtiagsOHCYg8LIGu4LGLHiyGbfcw48tjDkjNXnmz5MuWwikErLhwCACH5BAUeAAYALI0AQAACABIAghk0OhslGxslJx41TSQuJIiIiAAAAAAAAAMMWFPB3vDJBoqQpJQEADs=
" />
### Comments
**Explains purpose of the code and can be used for generated documentation**
Commented code, that explains the purpose of the code, is a natural application of this principle and what developers will naturally do.
The commented code can also be used to generate accurate documentation. This prevents the need for a separate file to document the API. Additionally, because it is next to the code it will more often be seen, referred to and monitored (e.g. a code review). Which increases the chance it will be kept up to date.
### Unit tests
**Should be next to the files being tested**
Unit tests act as examples of how the code being tested can be used. These examples act as some of the best documentation available. The test should be next to the file being tested. It also provides additional benefit of being able to see which files have already got tests.
### Scaffold components
**Sit next to the component**
[//]: # "Explain scaffolded better"
Scaffolded components, are components which are loaded separately from an application. They act as examples of how the component can be used. As with unit tests, they act as some of the best documentation available. It explicitly shows the dependencies, how the component works and what options are available for configuring the component.
### Integration tests
**Sit within the module or application**
Integration tests (http://softwaretestingfundamentals.com/integration-testing/), test the interaction of more than one module often using a tool such as selenium or cypress. Integration tests that relate to a single module, should exist next to that module if the module can be run standalone. Integration tests more commonly test the interaction of multiple modules interacting together and should be grouped with the application itself.
### General documentation
**Be within the codebase**
General documentation, should be next to the code. A common implementation is README.md files in markdown format. They should exist within the applicable logical grouping within a code base (e.g. a module or app folder that it is most relevant to). It is common to see README.md files at the top level of a project, but they can exist at any level. The top level README.md can act as an index which references or links to other README.md files within folders below.
### External documentation
**Should be generated from the project.**
External documentation, used for communicating to people external of your team, should exist within the applicable logical grouping within a code base (e.g. a module or app folder that it is most relevant to) and can be exported to an external wiki, rather than an external wiki edited away from the code base.
<!--## Terms
**Scaffolded components** - Components that can be loaded or bootstrapped within the application. They contain all the code required to bootstrap themselves with and are-->
## Contributors
<a class="contributor" alt="Adam Craven" href="https://github.com/adamcraven"><img src="https://github.com/adamcraven.png?size=80" width="40"></a>