135 lines
12 KiB
Markdown
135 lines
12 KiB
Markdown
---
|
|
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
|
|
零拷贝 vs 传统 I/O ^title
|
|
|
|
传统 I/O「4次拷贝, 4次切换」 ^pPR2Zi0q
|
|
|
|
磁盘 ^r8UcNJoO
|
|
|
|
内核缓冲 ^lOhSI8AQ
|
|
|
|
用户缓冲 ^ExFxKHzC
|
|
|
|
Socket缓冲 ^GFkKE7aE
|
|
|
|
网卡 ^nic-text
|
|
|
|
① DMA ^label1
|
|
|
|
② CPU ^label2
|
|
|
|
③ CPU ^label3
|
|
|
|
④ DMA ^label4
|
|
|
|
零拷贝「2次拷贝, 2次切换」 ^IIlpdTRV
|
|
|
|
磁盘 ^P64EyGfA
|
|
|
|
内核缓冲 ^gSiJQa7m
|
|
|
|
网卡 ^OdYyV6Ec
|
|
|
|
① DMA ^label5
|
|
|
|
② DMA ^label6
|
|
|
|
优势: 减少2次CPU拷贝, 减少2次上下文切换 ^A7Gs02Kh
|
|
|
|
%%
|
|
## Drawing
|
|
```compressed-json
|
|
N4KAkARALgngDgUwgLgAQQQDwMYEMA2AlgCYBOuA7hADTgQBuCpAzoQPYB2KqATLZMzYBXUtiRoIACyhQ4zZAHoFAc0JRJQgEYA6bGwC2CgF7N6hbEcK4OCtptbErHALRY8RMpWdx8Q1TdIEfARcZgRmBShcZQUebR4ABm0ANho6IIR9BA4oZm4AbXAwUDBSiBJuaDVgtNLIWERKqCwoWrLMbgBmAFYE/jKYbkT+yAoSdSHu7u0ATgAWAHYZ5IXu
|
|
|
|
nhn15IAOLZGpBEJlaS7uvetlGrQ+ooEoUjYAawQAYTZ8NlJKgGIARgQ5hK4ABmbUgmlw2AeynuQg4xFe70+Eju1mYcFwgRyoIgQMI+HwAGVYJd0IIPNjmHdHggAOrjSRDPaU+5PIkwEkQMkVPYwo4ccJ5NA/PZsdHYNSDIUJa51CDQ4RwACSxEFqHyAF0ecI4fzmKqOEJ8UyEAhiNxhTcGExWJxGZbCMwACIZZpmtBAghhPaabXEACiwSyOVVGr2
|
|
|
|
QjgxFwrvNCwW6wBix+SdOlqIHAe3ANRtTbEhpu4HvwXstzUwrQkgDe0wDvRoBcWNQ9GYqEABPKAfb9UIqFAB5bFAzhQAmEIziXi7S29nIAMVw+jxktQKdlpagAEEiMouBIxDkmNjGKQoOYCKvDhv0DPiMQans9DlcIR+aRlZnDfgRaRDveCAAVFqVat1htmzbDtuzOIQoDYAAlcJB2HO4hAQPY0wQAAJA4jnLVAfniBcyj3G0OAAOU4MRuC2H4eB
|
|
|
|
+OZuhmBJkj2e9iCwSpcASHtyCyJ80CzV9LUkUIfzLAAZe8M3dT1EMtcgKEEzCIAgIoAF9+hKMoKmRchHAPTgCGcH0Oj2BphwgQJsCiDgLiQPYOjQXo9jnH5pT2MZiAmWynL49DjjQAEZTKc4ST824WReN4Pm+BAEk6H5ouxcFIXlWF4TCpF0C+IEgQQTosp7PFCWJYyuTNJkqSeOlXIZNA+EtZlqTZDkiuxXlJF1VULVlUUIQlLogrlGElRVApNS
|
|
|
|
k31Wu4VSyiMrobmUmqTTdXg9nw9hT2q2UHWdYJo3EotJNlH0koDTJslyIawwjKN8yFWN4wSRNkyQ0Tn2zWV3jzBbC2LWVls4YiOFItAFnIqK5h4LZ6PtOFmIkXAfnY6cEC41AeL2fjmFkkT0wLCSlJU+0FogOAAAVIJ4AAtQgEgAR2xKbkV/azzTsy0HOGS0XLc1BoqSH4Zj57okwWH4tlWVGvMwngFm0XDIAC4detqp4EXCiQvmwDZcB4XA4ohK
|
|
|
|
EYThZXUugcgODRDETty/F6sKt5uRq0raXpO1ZUVhBrcqRqtT8FqBXNEUxW6qVesSgaQ2G2V9eIMbuJfY0rq5pbrRW521KdF148+vaygOuEjqDU60FDS1w0jbasJu+Y7qFh7UyemOXrKN6ng+iTDN/CRW3bLtABgGOZAEJrWtqFQfvAHAlQAjY0AWAYez7AchyGNaynHKApxnfA5xl6AWmPddKi3ZpPkT/dD3wbfTwgc9Lysy0byie8mCRlHLQ+D8
|
|
|
|
OG/dv0E7kDe4Hmsh9HyfsS4HAlBGCc80DwSzpAZCaFDjeSwjhQ+BE/oA1QFsToCQZhrGFgxKGNl0Ca3hpxBaj9ZRowxnXVAmceSUFkpUBSpRZqlAmuUAmjhmAPD0mwAyJZ4DGVMuZSy2I8GOV6g5LYvUOaVSwmzUh4tuDM1lHLbgCsHaG2+N0bACxsAeh1glSOajVbEASAgTQGVLb5XZDbckJUQrlU5gvYKdUCoe1tsVEa3to5YX9l1WA5oPKyhD
|
|
|
|
sqMOXsdS+zQBNeovDpp1EYWUMI8c5iIOTlVBiactoZ1bpaHO/pAwnWCcXC6ZcfgVwTNXH4G80xiWRrHHM71sa7SSb9Eiw5imdDjDMOMyQHHlFwSxTohDEbEJqaQgSLRMZVMzrjIozD1LoFIFsAAqtgQiAApNgoEeGNHpmWIR5p0H2XNLRZyTsfK9UkHIqqG8lFXBsdSAxaVOjJDmECTRui9a+nucbVE6JMStD2LiK2ziJCe3trYk5i1QVOMsS46x
|
|
|
|
7i+RhK8U/AOvig57ECYNQu4cyiR08SQuJ815GNNWqkzaCAy5UKyb6POeSzoFNLvHYp7TSlJnKY9LG9deKvVzM3epX1JrvwgIAQY9AAbbtPHIs9hwyMXn2Fes5CUli3muM+e8dyHwPO4U+lQL5Xmvn2O8D4H7DLKM/fwb8dkSBFYA4B0FWBgNQBAtlqELnwJ4BvH6RFmnmjQcsJYyQEjdMYtDfBcwBmGobpAMhYyKEUojjQgV9CwCxJmQTJ4pB+T4
|
|
|
|
E4dwxcUSJD8KUYzVFLMhjiOORVc0UqI3OoUf5CygVblKxSt8IENFIqaDeYlA2jbVYZWIFsXAWxzHu2Ba4ikDs7FSO6a7IdpIR1e3hXqP2SKfEOX8WUdF+SI6jQRRE6AOauYzTjgtCG30k62hSfaNJZKMkNMpYdXJwZaWyhLpdBajLbr3VZbXdl1Tw0QCbtevlkB3XIOHHMdBrq/VzGPWpXpMNuihqGb+yNwlo04wYXjdaBN8CdkkASRUWxlwAEVa
|
|
|
|
Z7s3jsgtWFHIHKqkc9m4K4xi1gRLOIVza3y3raFREEUVgLGlO2/RXb0AolNj8i2/y8rTs5LOyFZVwWTodpJkFm6PEIvasa5FK7g79SCY+7FW6F0csPdwBYRKU6QA2unFuN79pUvvQXNUWLIDPqKSUquLKKkULxVA7lAHIFkbkoAUMVAAcFoAZH9ABNimK/ssEvX/JldOOVtk25lk1ZuE6qrLR7nVUeJVWqSCX2xDffV99EOcuNe+U1+BaESGC+Fq
|
|
|
|
1EEbXRfAaQBCjqYEYXNAgjLp6PX/WHN0VYPBHnJG6KOdasH8GpH+RxQZz1SsRtGSh79MbsVxvNegBNSb8aVCEGEUgmaSNbLmQgMy+bLTCNXZAOcnQS10bLUKCt+wmPyN6tc1AKiQqfK+DwIEMx/ghu9LrDtyUuOq00N9ngmg23icBdC4dsKXZjrkxxxT0nlPzrat48UKKsIXb6gqHTmKQlR23TcSJh3OgHrmvHUbeFutmfKJe8lmSbN3uOg+wndK
|
|
|
|
X0xiZW5mur1PNGu83UnagGrQsBWiB4tAs5g+pp+Z8bEBcALAQ7N1GC2oDjN5QgKZTCtsSD9JgCcmAADSKEjDPAO8ZJcuyhRUaLWgTotHZSSOM9085T2qosbOGx5RHHPsQ77dlfjHzBNfJE+bLE0OLENVR3ExHd2IUI5Cij+HemVMGcRR1DTfitP44xQ5onuLBecgJWgGYpnz3rUZ7570tm2f2aLk+wpDLXMfo89+rzf6fNWdF9biQgAKV0AOxGtX
|
|
|
|
Yvisa1hOXOI4ur3XkllcOXUvbgPl1o+GqF9njyzq2UhW76PhK2+F+Zq5JD5H5aIB9XQFwWa356BzrsKuqJZL+7bSAQrDojgpieDFcDqmwjMNc2pB1dNcRc/NpIqt1sddig9cZ08woB9tDJSM80fcKNrtRFi0JFwUKIzkq0XsfcbkZNOMVY0otFOhcB8wAc9EQ8Qc0ojFTEzEo8U87Yk9qRx16cp0gUZ1U9IBmpPE1NIBOosdNM0VtN89G809QkM8
|
|
|
|
d06Z90YkjMpQK9E9U5SUmdrNs46984N0yhnMW8ec282UqlO9/0e8/NgNPVAY5gtgZheYthuhElIZP8WIZgVdDM+IgDUNdpIDk1KgABxCcB4Y3P0BYXAP0S3JoBmM7LoJ3AYIYKI0YcFZYeIciH1H4ZIdBGw+YRjdrT3aWb3QRfA5ghtagiAL4boIEToYgbAf7LJQHATIo4TM2X5QdDgqTLgzkePexZHZopTNPdHRdLPZdHPYQvPTQ7g/TfUYveJV
|
|
|
|
9PgsXAienCzdJYw2vVnDQ3TJzZvV9VvMpdvAw4vIwrXOfSoAkHzKAU/WUJeCVGLMcafBLecOfFLdAFVZfE9VfbLE8XLC8LfMoHfA1ffJ+crT8SrAVI42A04/ya1S/bgB1L9J1D3F1N1brJ/LmXjWwxIf1D/INRXZcZwn9AA5DDXdw0XMA+NTw6AiADgcweAzZPhY7ART4yAPBVA6jCfDAhPLAzIuBatWWPAt7P3UPL4SKaKWKCg95JKT7DKdWdWJ
|
|
|
|
o2HTgpguPMFBPeTZPLo2PUY9PDHJdQQwYy0ddVYkyMY8aUnXdcnSnF2UvaRBQgNavRY29XOOzEYiAbQjY3QrY/Q1XWpHlEAx/Mw4eFIhYMDTknpBwmGAAIWxM7zxOAMoTQ0TQwzUgJnJOwGcGtwQMO38xt2HlxwcliIgBd1OXZIllYzyJ5IIM+3Vi1i1mD1FND3qNE0jzHAk2VNaNdlYMrzlKhRj1aJ4NU0x0Dhx1z3DAJwL3cQkPGN/UmL2QtJJ
|
|
|
|
Us32JtJyXr3tMdO53fRdK/R2N/T2M9IVTWwgEAEV/QAQ2VIsLiqpeol5ZU155VFxFU3jF995dwmAssT519z5N8r5t89Vd9/8D8KtwDdyDywIL9bUr8WtoS2s4F794TxcmletzRkhikbCwMeAA0FdcALdf8iE3SRl0Yo0ltmcVsZJiT0NplSSMR7gKA4YUzjISK2AqAKMUi0Cqp9lbtOZsDYSARci60Sy+TeYhZsAeBKzO06iTYGixN6yYcOzZTHF
|
|
|
|
ZMFTOjpSWiJK9S1S+j1MBjC0AkRD7ScUSc6gydJUTT8UGU7DnjZjWzzMrSZyWdbT5zdTFzrpnT3NXSXCuVhcozVDIA4A2B7wG9SdChtKwAgpSgEhSdHMwAfLtL/KwAAQgqbhHM/1QgoBXh9AZwZBTQiYPKsRHK48MQoBgzGJ7xlAMKyhshiAcq4Q8qCrbgsrlxSBSLzlcBfjZQiqqqaqQgCYqKaKV8kFvSphUiAQMj7CMTcBHQwzi8IyCTtdCLdd
|
|
|
|
MNKh8BcBNAghyKqSwjyMIjroN45weA2KmKpF+tZgBYZhxEaIEgthEhop8yhhcCiz3s7kuKOkfheL+LgciCw9hK6yziGzZLujJLHZpKCDGC3E0cfYM9piBDeyREhiBzRCYrNKM9O9xyhQILjLFDTLlCa9ZzqV2chym96UnTlz7LVzyqu9nLlt6gBVAADElQEdAAFksTR8os7UUjaazzZ8tz59rz0BgggQ/kV8Hz7jnyPjXyvj3yfiCaTUASfzyaqa
|
|
|
|
aaz9wTALITr9Ws79OsjKJdvTkwRYrDFhDKYMgz8EQi0KZsMr5ssLFsJlcLuDVs5INtYzzNWrqrqK+KKKWI7b2rZQ8FEL6KuYEgN5czpEWKsjUA/V2L2NOKij+SeM+NhSgdPkayI8ua3qxKrF5LmykdfrGz5KuygaezscwbtT1LdTobVQpC90eA9KBAzSGaOrkkkaGcUbrSLK5yViOcsaudbLca+dG4Bd1zu9zKyh3LPKQxvLSc/KRgAqgqR7Qq6g
|
|
|
|
2Sh6/Uoq6gYqZrKQEqkrXRUrPKCbKQsqSrHALICaiqt6yrDa2jKrnbar6rCq4QmrqLT6nbSK7zIKesUEBZkhn7eZ9r0Sv9cAJxhqkM3CcKPCJqoCpqJAZq5r8AHbFrtk472ghhA77cuYHsfaphtBoprCsDBZhZRZPJYSHtXsrrCinqw7YwI7qjKCqzBLvlY6pTxL/q2ypKOjU6PqVSFLeihQs6hDc7hj879TD64by5JyL1a6e6wR1CaUm6tD1ilz
|
|
|
|
K49D8bD6NyXLe8BVABDElQGeCJgWUPPHwrrOOuPPMSxZt5o5qgaA3vOPl5u1QFsgG+OKxFv+NfkBO3OUdUfUf/JAVlqa2Av535FAswnAq9OgqlFSN4wok6C1vlx1sV28O/txN/tNtcpMgtroRJKAfwWdv6UdphmdvTPdqZMd29swIe3d39tgcUW5LwcIKNkId4zYkjtqKepjsaIYLTpoa+pbOrvYMYc7OEBYcz2Us1NUrXTzrEdVJHINO0qNN0tk
|
|
|
|
Kp1fUn3dTmLMs3PrvRobxipsvLjsvbqgU7oALkeJsJjSq8u0onoCpHr8rHsHt8qnt8ucBnu0vVGiqQjiqXrUBXv2fXqiH3H3p3sPr3tyq+ZxJKmPuarqt3ovpPpapvuorvs6v8fLh6E6WuyQvCdwBQiibV2NvxL/rCCSbjOmtmqCDSYgaE3CNdpgY9pCZZM5iQZQf2rQeKQwY3kKbgRwdKd5NDoQHDuqZIZFIErqaEtrKMZxHeuodHXlPoYKLdia
|
|
|
|
aai6cBvVP6L6b7PBtDi4aSiLzHPLvL0rrPWrvmKvTrrUOWNEcxvEexskeZQ2b/S2aQm7oWf5W3MACMSFRtRjR+m6DSAU8+LXR24/Rp8wxu+nmp88xgrIW6xw+0Wuxn8h1pxurVx8fKEzxmE/23xzVh+lpVpYbHYNE/qj+xUVF1w9FyM3Zok7cq2oi5JxXZ2qo7NVMtq9MuYTa2Udam7Z3cFP2uBetmtS61lgh7iu68B/aGoqg3lihhp0S6PRO5pt
|
|
|
|
o0VidGS4VudGVpS/g7PfpyAHUoZhSkZ8JQ06QkuyZ00+OB7WZkymu6cm14Rg1jGsQtYk11uqRlczxtc7Z61+RvzPui985sKk5wK258eoe8K5wSK25+51MR5gwZelK15nh957K35/K75uET52D/5+2QFq+8FuD4gS+iga+jJ2+vxlBKwpYGKaiUJwMgalZXNzC8hTF8amM0tnF4BvF/AStyaUjZMla4eKYJkjail7aqWTBawr22iY6qKaYxliWC6j
|
|
|
|
i8Vz7Ht+6mpwdo2epkS+OsdmFJO9o6dhh2duFed1hjU0G3HVdo14Z4nGGiYs0yifhqvQR09iAbJJZhciRm9s1z9e9gmnZs2tMiQQAYxIKbqbnWWlXWp9JwPXmbLzksfWEBOa/XTGA2Xyg3bwPyz7+DbGj9KgfPJbo2Gs7U42O6vHFaH9k3ES6XYwKIZdJ9A0P7jcKOyhRrqPqF8Li3sWbbKghx7g9A4AYBKSq3qSTtkD2PhsPac7m2E9ehW3MJfI
|
|
|
|
g7fcQ6CHvtfs62HrPtiBOgfte0qHx2RWWCU7xW/qpXFLdO5XezGK1LOG12C7RnuvokAGy793ulD3tX5nn2ljLLG6jOHTHO1m26XPcuH2rWiaPPTCYWYpugerfTyvkKhJqujaqPYmsWAGvCJBFRFR8AIwvxIIAA1UIyB9MoGQbhBuTEWHCR3FYMGAWYHgr2RbBqWQsyT2h8p74APXAIPOTshod8PEd5TnbjjVpxU9s9bud3gthrU47iGjS7hpDvdh
|
|
|
|
aQbSzpQk9x7tGu06y97t9W9vG1z2Rp93ZvvdAf8buHgH+IePX8eKeWmo83gbpd1mfC8211mneG89LZ4/1tmvm/La8YNvfGxw/exuSHXvXweXgPuI3zLiE9xm/O+bxjrcn2ne+or1Ip+yiLpd+liSmyHwA/Nsa+rn8ktya+j9ANhB4HgLrlj1MpAwRCjVYQbptsoH2y5mrnAyb/I2nz7DRLRHRZnnlipoxExeg0dzngg7nmdvn7TgXvT7OgzwZ17s
|
|
|
|
7zdsZ6QinXd/SyXkju7y06zuXxZhXtd1Z5X5z7YtzjX/7hE1WgWQbZYBPrNliQiFP2rmHmjzbMtomJ5P0GAbwoEKWi7rHsvyvy7Q5Hj7gdtytbB6nsHSk58lHkzyV5G30eoKc+WlDRph0zU5Ts2CCmSVvz27Ij92GwvJVqdzF6w1zOCNKusv1l67M7O6/V7pv02Kq9vuu/P7nEy15CpRUJvcfA9gt43EN4S4Xmo8Wi5r4negbV3gl2FqhsUuXvSo
|
|
|
|
JahcZZcgKofPLrCSTbK0oKKCJMBsHEQWEAyFXFiBsjOLTZPyebaHkI3iYNdLaTXFhJUFTTpoC++kTHkdl66l92O5fHJgGWr4FM6+Z+FltNwqbNpfsCQKHFyyjp8ke0faH/D32QF98tutPXvgDWH4HdR+/ZTARPzF5F1jSc/a7pL0C5L8pyCxHQcQKsob8le5A81pUioEelV+UfaFnIOSD7VjqQMRConxhhExL+MTLXAYNmRygBwKyQjErn0DmC0y
|
|
|
|
ZfYptEQdzdC4iCeBjFg39qIUciTgzti4O4xENOW/bUhu3yaDQD2ei8IVoP3Fb99NOKwnojpx6aLsVKCrDhiL2VYbtxe8/IYCZmTZzMV+RAkRhexWbZD1mX3TZh3l2J78aBAqGrBFgYH01J8zAz1qwKvK28HiaWJ4lH0d4AjnedJCAFY3d4CDPeP5d4UHzcb2p5aIFfLngNkHDh0EcYGKINhI4qCYYxGfWpoMo7YVr+GfAirR2z7NcJACZUwVwg6E
|
|
|
|
l8IReCfahXx/73Yxuz2evsWWAFssROQpLwbU1cEvIZgkpWAVp1WHBCvqoQzYeEN6b6cohg5S9uuxM6F0t2e6WfldxLz7sZmdOI9jqxUKi4MhL3RUWQPuE791e1A0XADzkHJhQYlhP0lUPwSQRahafajg0IJidhiAAATRgBo9kgfobAB0LY4ksg4g3bMj7T/6PZhhgAqbtyIIZllNY2sCAdHQWFKclhCdVThO2To/VtugQsIagIiHoCBmJ3GISqwR
|
|
|
|
Q4D92GrGQcSgEaECPOhow1saLuGfczRxwoXAUM14Cp9y/nc6ozRC5W8Sa4XJ3hwLVQxduBcXXgbfH4GtiIAYbVLhIC7GiDg+SIjxrlwTZgUlaRQlWoDxSKoN1gYPJFgSGdHaCbORbfQXD2IrO14M6TFJrh3Y7AwuOR3Kvi2zOq24JOQAxvjdR4p9ts4A7FnlAOHapi3WywjMRtzoZSJOgA/ECSgMzpoCheRYg4VgNLGSFVRh2HdhqN4aPjjG99C4
|
|
|
|
bWLib1ibh50a9h9xV65DLW7pVGrKFfYHM6gRzYer+zOaHNf2JzJMF+znpAdXoIHRKs83A5r1IOm9GDiC2KoCS+J+4TDth2nGNUwWwLHDpCzw6Sp/UMUYpPGAdGK4vwR4kkfUPPFlsQGQQK8YS06F3jI+X/KqJg2G6Us+Oe1A6kJxOqidnUzLcYbGIqYydvxYIX8XMI0gATXqaYlTnDngGbdsxIQ3MdKPzGyjIhirBUVDWwFmd44p1c4bqIe5XDz2
|
|
|
|
yzQiS3WInb8HK049zq8O3IS0/OnwgLr2Mt56MwuNvM+L6xHFcCwRPA3VHwJDbTjZxQgiQLlNf5gkAKsbZEfG3D5CgNxWE4ocOBFhTBikfVMbEi2cZjgNBSXVPseMKHm09BiTLSTn3LakVJs+kmthRhFhks7BmBPoZGLAr2SaeX1aTrdVk78j5O8wzyQKwBQ+SZSmY9Tl0Egm+SJ2GdWVqFMLErtx+ioyfqgDiETN0JZpToLdx1H3dLhdY64clM5w
|
|
|
|
uZTRGUwwi8NFxUSB6jE3yuFVYmlBgqtEuiic2cBYFZ6qMh5ovVA7cTiAq9dKtOI3ofNhJEk+DhTNhpQcxJaHSmRhykm21bxVYxEpRGCYUQpg+4gahj0JGTSr+mkikYA0Wk6T8AK0t/kS2WrBjUAGwD2mDFZHzgLJAnQ6sJ1ikU9hhb4mMR+NDrOSFu1ZFMV5KAnpjHpoE76mK0ClwCnp0rGUTsPlZDd4J0Qz6VFLVYxSIJcU4GbhINFgyHORErfr
|
|
|
|
zgeEWsnhXdC0X5loHKMMu+UmCoVJYF3EIuUXCqa8Sqnjiapk4uqZ3gak/lw5eU6Wm1Oy4dTVxXUuEnJO4BWERs4iOCipNwA0h1JJtHQaePmlCz4e6AOavyFxBwEzB14kyDSVOzSyqmTJMDArIm5DCOSmshvodL5Kzc/ses0OmDiBAQ5PBHPIKS0wlGTteeUEofiFNtlyjwpkNQvFpQlnqihZiQroIvyBkEC0hNnfCeDObqQzmx0M54SHOLnHkukj
|
|
|
|
kcGIiwGoAANGuRi2v5ujKgy4BYN4WYD+pjcDITuUGOgbmEPadbBWT0GSDaBpQRPOMDYXKRdIGWdkr3GMIOmrz8GFTBnkz1Ol/jzpbPQCYK2Nk3TTZawnMZbN27dNgaS7PYRgIil7zTOLshaD0Gl7I1PZfmK+T7NSl+zpGavTKbDNDkCpAAGPKAB+pTQCAB5xUACIOnrycZ+85FevQAFBygAaDlAA4abjxuxQob4To1C7W92BQIzgYnLPjVS3ytU6
|
|
|
|
EfVMEE/lJFMi+RX3EUW/xUAyivuOoq0VjwER7UlcY8LXE+MepMxLcSgjmBwUWUlQs/jDE9HfyC2HneuRIA2zgBw4iuOAHACJCXRzu0Ac5FkGmpPZ+gDAQgAgAoDBk3JkAptBlHKVtBIRIgX5IqGaD6AiQH2LiggD+B/BKl2AapSdFqWZBilsw0pR5JIVeSql1VTpXUonDASTZeS9pcMpyBdL6ld01skMpqV1KGla8iZUUEWUjLMgkEa2SFI2UzK6
|
|
|
|
lnYBhfbL2VQBZlE4fRVbxOVnKZ4jAvyFcrqWyQDGkXKBvcsyBpLRJTMgqq8v0B+hQWQLZmbJPWVTKllmQTDl+EQK+g2lHS/ZZkAnDTZtlJIPFJyGwD3B8QX8tAM4EogIK1gsYXoFsF8i8xcIyK1FfgCiVCgQl0sCwgkF4whNXUoMSPhACMBsADA53IDAQAQgdYREksdUbEm+XbKkJqoJUZUuhAkBTeSKkVcQCJAIA4AlyiVZTTYBMRfls1YIHqz6
|
|
|
|
gkB7kzCYMm8AJikBlA4IAABSUQTMvAYpAb1NVvZpYAASmxDQRlAhoDEJUF1UGrBsfQXgPsjdWuqkg3Qa1ZAROUrKnghy7SKbC+VAh4VRVJgAfW+mWhsgyq+ODl0sZEAZVIfPYK/GyXJqn44EZCHLR8XnwMQqaQiAjGzV+Z9AeapgEqs0Aqqi1vquwAACsaSzAAkK/DgDyrFVr8CtRRNlhmRCAjAL8MyvwCsrxmHsDIF2ttDXgdsEEfQOCsOwwzH5
|
|
|
|
40gwASGHVBqdBC9FcF2p7V9rZsvqthLGteDbgywlNbIEIE0mMIyF4QcaIpBACKQgAA==
|
|
```
|
|
%% |