Estudio de la escalabilidad en diferentes arquitecturas para el problema de Lattice – Boltzmann

Una de las problemáticas que se tiene actualmente en la mecánica de fluidos computacional conocido en sus siglas en inglés como CFD (Computational Fluid Dynamics) son los altos tiempos de ejecución de cada uno de los procesos y la cantidad de recursos computacionales que se requieren. Uno de los pro...

Full description

Autores:
Vargas Torres, María Alejandra
Tipo de recurso:
Trabajo de grado de pregrado
Fecha de publicación:
2023
Institución:
Universidad de los Andes
Repositorio:
Séneca: repositorio Uniandes
Idioma:
spa
OAI Identifier:
oai:repositorio.uniandes.edu.co:1992/73450
Acceso en línea:
https://hdl.handle.net/1992/73450
Palabra clave:
Lattice Boltzmann
Cavity Flow
Mathematica
Python
CFD
HPC
Paralelización
Diferencias Finitas
Ingeniería
Rights
openAccess
License
Attribution-NonCommercial 4.0 International
id UNIANDES2_401c8702aaca26aaf85e5a3daf8351cf
oai_identifier_str oai:repositorio.uniandes.edu.co:1992/73450
network_acronym_str UNIANDES2
network_name_str Séneca: repositorio Uniandes
repository_id_str
dc.title.spa.fl_str_mv Estudio de la escalabilidad en diferentes arquitecturas para el problema de Lattice – Boltzmann
title Estudio de la escalabilidad en diferentes arquitecturas para el problema de Lattice – Boltzmann
spellingShingle Estudio de la escalabilidad en diferentes arquitecturas para el problema de Lattice – Boltzmann
Lattice Boltzmann
Cavity Flow
Mathematica
Python
CFD
HPC
Paralelización
Diferencias Finitas
Ingeniería
title_short Estudio de la escalabilidad en diferentes arquitecturas para el problema de Lattice – Boltzmann
title_full Estudio de la escalabilidad en diferentes arquitecturas para el problema de Lattice – Boltzmann
title_fullStr Estudio de la escalabilidad en diferentes arquitecturas para el problema de Lattice – Boltzmann
title_full_unstemmed Estudio de la escalabilidad en diferentes arquitecturas para el problema de Lattice – Boltzmann
title_sort Estudio de la escalabilidad en diferentes arquitecturas para el problema de Lattice – Boltzmann
dc.creator.fl_str_mv Vargas Torres, María Alejandra
dc.contributor.advisor.none.fl_str_mv Castro Barrera, Harold Enrique
Toro Gómez, José Rafael
dc.contributor.author.none.fl_str_mv Vargas Torres, María Alejandra
dc.contributor.researchgroup.none.fl_str_mv Facultad de Ingeniería::Grupo de Mecánica Computacional
dc.subject.keyword.eng.fl_str_mv Lattice Boltzmann
Cavity Flow
Mathematica
Python
CFD
HPC
topic Lattice Boltzmann
Cavity Flow
Mathematica
Python
CFD
HPC
Paralelización
Diferencias Finitas
Ingeniería
dc.subject.keyword.spa.fl_str_mv Paralelización
Diferencias Finitas
dc.subject.themes.none.fl_str_mv Ingeniería
description Una de las problemáticas que se tiene actualmente en la mecánica de fluidos computacional conocido en sus siglas en inglés como CFD (Computational Fluid Dynamics) son los altos tiempos de ejecución de cada uno de los procesos y la cantidad de recursos computacionales que se requieren. Uno de los problemas que tienen estas características es el Cavity Flow, para su estudio se utilizó el método Lattice Boltzmann con sus aproximaciones de vorticidad y velocidad, ambas son altamente paralelizables, teniendo así que se buscó mejorar los tiempos de ejecución y a su vez, en la evaluación de la escalabilidad de la solución para diferentes contextos. Con la aproximación con la vorticidad se pudo comprobar que una estrategia viable para realizar la paralelización es dividir el dominio de estudio, teniendo que para algunas configuraciones se evidencia una mejora en los tiempos de ejecución. Mientras que con la velocidad se requiere buscar nuevas metodologías ya que la forma de abordar la paralelización no arrojó ninguna mejora. Finalmente, comparando las implementaciones en Python y Mathematica se encontró que para la velocidad se obtuvo una mejora de tiempos con el primer lenguaje, esto pudo ser resultado de las optimizaciones que tiene implementadas la librería numpy al realizar sus operaciones. Para el de vorticidad, la implementación en Python en la que se afecta cada elemento por separado suele ser más lento que la implementación que se encuentra en Mathematica.
publishDate 2023
dc.date.issued.none.fl_str_mv 2023-12-12
dc.date.accessioned.none.fl_str_mv 2024-01-25T13:17:11Z
dc.date.available.none.fl_str_mv 2024-01-25T13:17:11Z
dc.type.none.fl_str_mv Trabajo de grado - Pregrado
dc.type.driver.none.fl_str_mv info:eu-repo/semantics/bachelorThesis
dc.type.version.none.fl_str_mv info:eu-repo/semantics/acceptedVersion
dc.type.coar.none.fl_str_mv http://purl.org/coar/resource_type/c_7a1f
dc.type.content.none.fl_str_mv Text
dc.type.redcol.none.fl_str_mv http://purl.org/redcol/resource_type/TP
format http://purl.org/coar/resource_type/c_7a1f
status_str acceptedVersion
dc.identifier.uri.none.fl_str_mv https://hdl.handle.net/1992/73450
dc.identifier.instname.none.fl_str_mv instname:Universidad de los Andes
dc.identifier.reponame.none.fl_str_mv reponame:Repositorio Institucional Séneca
dc.identifier.repourl.none.fl_str_mv repourl:https://repositorio.uniandes.edu.co/
url https://hdl.handle.net/1992/73450
identifier_str_mv instname:Universidad de los Andes
reponame:Repositorio Institucional Séneca
repourl:https://repositorio.uniandes.edu.co/
dc.language.iso.none.fl_str_mv spa
language spa
dc.relation.references.none.fl_str_mv I. Kissami, «High Performance Computational Fluid Dynamics on Clusters and Clouds : the ADAPT Experience,» Université Sorbonne Paris, Paris, 2017.
C. Körner, T. Pohl, U. Rüde, N. Thürey y T. Zeiser, «Parallel Lattice Boltzmann Methods for CFD Applications,» Lecture Notes in Computational Science and Engineering, 2006.
M. BOUBAKER, «Numerical simulation using Lattice Boltzmann,» KTH, 2021.
A. Carrasco Boix, «Application of the Lattice Boltzmann Method to Issues of Coolant Flows in Nuclear Power Reactors,» TUM, 2013.
P. Mora, G. Morra y D. Yuen A., «A concise python implementation of the lattice Boltzmann method on HPC for geo-fluid flow,» Geophysical Journal International, vol. 220, nº 1, pp. 682-702, 2019.
G. Amati y F. Massaioli, «Serial and parallel issues for a lattice boltzmann method code: a performance point of view,» de Parallel CFD, Italia, 2004.
S. Pédraza Rodriguez, «Análisis de transientes en cavidades cuadradas y profundas para diferentes números de Re mediante LBM,» Univesidad de los Andes, Bogotá D.C., 2010.
S. Chen, J. Tölke y M. Krafczyk, «A new method for the numerical solution of vorticity–streamfunction formulations,» Comput. Methods Appl. Mech. Engrg., vol. 198, nº 2, pp. 367-376, 2008.
S. Cheng, «A large-eddy-based lattice Boltzmann model for turbulent flow simulation,» Applied Mathematics and Computation , vol. 215, nº 2, pp. 591-598, 2009.
J.R. Toro Gomez, «Código vorticidad Lattice Boltzmann, Mathematica»
J.R. Toro Gomez, «Código velocidad Lattice Boltzmann, Mathematica»
dc.rights.en.fl_str_mv Attribution-NonCommercial 4.0 International
dc.rights.uri.none.fl_str_mv http://creativecommons.org/licenses/by-nc/4.0/
dc.rights.accessrights.none.fl_str_mv info:eu-repo/semantics/openAccess
dc.rights.coar.none.fl_str_mv http://purl.org/coar/access_right/c_abf2
rights_invalid_str_mv Attribution-NonCommercial 4.0 International
http://creativecommons.org/licenses/by-nc/4.0/
http://purl.org/coar/access_right/c_abf2
eu_rights_str_mv openAccess
dc.format.extent.none.fl_str_mv 44 páginas
dc.format.mimetype.none.fl_str_mv application/pdf
dc.publisher.none.fl_str_mv Universidad de los Andes
dc.publisher.program.none.fl_str_mv Ingeniería de Sistemas y Computación
dc.publisher.faculty.none.fl_str_mv Facultad de Ingeniería
dc.publisher.department.none.fl_str_mv Departamento de Ingeniería Sistemas y Computación
publisher.none.fl_str_mv Universidad de los Andes
institution Universidad de los Andes
bitstream.url.fl_str_mv https://repositorio.uniandes.edu.co/bitstreams/7fb5443b-2818-4046-8c84-c2fda0da5911/download
https://repositorio.uniandes.edu.co/bitstreams/f3674d7a-dfc8-4051-b554-77645ba09b34/download
https://repositorio.uniandes.edu.co/bitstreams/453b4e6c-a3b6-4928-9305-698532de0209/download
https://repositorio.uniandes.edu.co/bitstreams/833988b6-7e07-489d-ab09-58cae1cf5dc6/download
https://repositorio.uniandes.edu.co/bitstreams/6299648c-c095-404c-9214-273b456612f9/download
https://repositorio.uniandes.edu.co/bitstreams/f3174ca0-a660-4c1c-94fa-99b76d5af55d/download
https://repositorio.uniandes.edu.co/bitstreams/89c62de6-5d5d-4a74-aae9-f9add2cfd8b8/download
https://repositorio.uniandes.edu.co/bitstreams/45112f54-5fbc-4e44-a54b-eaf69aca0087/download
bitstream.checksum.fl_str_mv 7a39a5e57e59594e7c0cd571d68e223a
cde5433a69657208b3c2db24b63e4e9e
24013099e9e6abb1575dc6ce0855efd5
ae9e573a68e7f92501b6913cc846c39f
7f2bcd93cfe278808cce2a9ff5a04ff8
1a2f99e5518d3eddf98cf87f1e094e68
b582c5d3e193fa1719232961d1d8ffe6
e09bd9cd341af2a276fdc5ff80f798f3
bitstream.checksumAlgorithm.fl_str_mv MD5
MD5
MD5
MD5
MD5
MD5
MD5
MD5
repository.name.fl_str_mv Repositorio institucional Séneca
repository.mail.fl_str_mv adminrepositorio@uniandes.edu.co
_version_ 1812134065554325504
spelling Castro Barrera, Harold Enriquevirtual::133-1Toro Gómez, José Rafaelvirtual::134-1Vargas Torres, María AlejandraFacultad de Ingeniería::Grupo de Mecánica Computacional2024-01-25T13:17:11Z2024-01-25T13:17:11Z2023-12-12https://hdl.handle.net/1992/73450instname:Universidad de los Andesreponame:Repositorio Institucional Sénecarepourl:https://repositorio.uniandes.edu.co/Una de las problemáticas que se tiene actualmente en la mecánica de fluidos computacional conocido en sus siglas en inglés como CFD (Computational Fluid Dynamics) son los altos tiempos de ejecución de cada uno de los procesos y la cantidad de recursos computacionales que se requieren. Uno de los problemas que tienen estas características es el Cavity Flow, para su estudio se utilizó el método Lattice Boltzmann con sus aproximaciones de vorticidad y velocidad, ambas son altamente paralelizables, teniendo así que se buscó mejorar los tiempos de ejecución y a su vez, en la evaluación de la escalabilidad de la solución para diferentes contextos. Con la aproximación con la vorticidad se pudo comprobar que una estrategia viable para realizar la paralelización es dividir el dominio de estudio, teniendo que para algunas configuraciones se evidencia una mejora en los tiempos de ejecución. Mientras que con la velocidad se requiere buscar nuevas metodologías ya que la forma de abordar la paralelización no arrojó ninguna mejora. Finalmente, comparando las implementaciones en Python y Mathematica se encontró que para la velocidad se obtuvo una mejora de tiempos con el primer lenguaje, esto pudo ser resultado de las optimizaciones que tiene implementadas la librería numpy al realizar sus operaciones. Para el de vorticidad, la implementación en Python en la que se afecta cada elemento por separado suele ser más lento que la implementación que se encuentra en Mathematica.Ingeniero de Sistemas y ComputaciónPregradoMecánica de Fluidos44 páginasapplication/pdfspaUniversidad de los AndesIngeniería de Sistemas y ComputaciónFacultad de IngenieríaDepartamento de Ingeniería Sistemas y ComputaciónAttribution-NonCommercial 4.0 Internationalhttp://creativecommons.org/licenses/by-nc/4.0/info:eu-repo/semantics/openAccesshttp://purl.org/coar/access_right/c_abf2Estudio de la escalabilidad en diferentes arquitecturas para el problema de Lattice – BoltzmannTrabajo de grado - Pregradoinfo:eu-repo/semantics/bachelorThesisinfo:eu-repo/semantics/acceptedVersionhttp://purl.org/coar/resource_type/c_7a1fTexthttp://purl.org/redcol/resource_type/TPLattice BoltzmannCavity FlowMathematicaPythonCFDHPCParalelizaciónDiferencias FinitasIngenieríaI. Kissami, «High Performance Computational Fluid Dynamics on Clusters and Clouds : the ADAPT Experience,» Université Sorbonne Paris, Paris, 2017.C. Körner, T. Pohl, U. Rüde, N. Thürey y T. Zeiser, «Parallel Lattice Boltzmann Methods for CFD Applications,» Lecture Notes in Computational Science and Engineering, 2006.M. BOUBAKER, «Numerical simulation using Lattice Boltzmann,» KTH, 2021.A. Carrasco Boix, «Application of the Lattice Boltzmann Method to Issues of Coolant Flows in Nuclear Power Reactors,» TUM, 2013.P. Mora, G. Morra y D. Yuen A., «A concise python implementation of the lattice Boltzmann method on HPC for geo-fluid flow,» Geophysical Journal International, vol. 220, nº 1, pp. 682-702, 2019.G. Amati y F. Massaioli, «Serial and parallel issues for a lattice boltzmann method code: a performance point of view,» de Parallel CFD, Italia, 2004.S. Pédraza Rodriguez, «Análisis de transientes en cavidades cuadradas y profundas para diferentes números de Re mediante LBM,» Univesidad de los Andes, Bogotá D.C., 2010.S. Chen, J. Tölke y M. Krafczyk, «A new method for the numerical solution of vorticity–streamfunction formulations,» Comput. Methods Appl. Mech. Engrg., vol. 198, nº 2, pp. 367-376, 2008.S. Cheng, «A large-eddy-based lattice Boltzmann model for turbulent flow simulation,» Applied Mathematics and Computation , vol. 215, nº 2, pp. 591-598, 2009.J.R. Toro Gomez, «Código vorticidad Lattice Boltzmann, Mathematica»J.R. Toro Gomez, «Código velocidad Lattice Boltzmann, Mathematica»201123148Publicationhttps://scholar.google.es/citations?user=YYKMZ3UAAAAJvirtual::133-1https://scholar.google.es/citations?user=Za3EdHEAAAAJvirtual::134-10000-0002-7586-9419virtual::133-10000-0002-0169-4193virtual::134-1https://scienti.minciencias.gov.co/cvlac/visualizador/generarCurriculoCv.do?cod_rh=0000487457virtual::133-1https://scienti.minciencias.gov.co/cvlac/visualizador/generarCurriculoCv.do?cod_rh=0001369468virtual::134-1a8994168-982a-4fa4-a34f-6f053597957avirtual::133-105b34f47-a7b2-4a0f-a2a8-645709433eb1virtual::134-1a8994168-982a-4fa4-a34f-6f053597957avirtual::133-105b34f47-a7b2-4a0f-a2a8-645709433eb1virtual::134-1ORIGINALEstudio de la escalabilidad en diferentes arquitecturas para el problema de Lattice – Boltzmann.pdfEstudio de la escalabilidad en diferentes arquitecturas para el problema de Lattice – Boltzmann.pdfapplication/pdf2600806https://repositorio.uniandes.edu.co/bitstreams/7fb5443b-2818-4046-8c84-c2fda0da5911/download7a39a5e57e59594e7c0cd571d68e223aMD53Formato Autorización.pdfFormato Autorización.pdfHIDEapplication/pdf5175195https://repositorio.uniandes.edu.co/bitstreams/f3674d7a-dfc8-4051-b554-77645ba09b34/downloadcde5433a69657208b3c2db24b63e4e9eMD52CC-LICENSElicense_rdflicense_rdfapplication/rdf+xml; charset=utf-8914https://repositorio.uniandes.edu.co/bitstreams/453b4e6c-a3b6-4928-9305-698532de0209/download24013099e9e6abb1575dc6ce0855efd5MD54LICENSElicense.txtlicense.txttext/plain; charset=utf-82535https://repositorio.uniandes.edu.co/bitstreams/833988b6-7e07-489d-ab09-58cae1cf5dc6/downloadae9e573a68e7f92501b6913cc846c39fMD55TEXTEstudio de la escalabilidad en diferentes arquitecturas para el problema de Lattice – Boltzmann.pdf.txtEstudio de la escalabilidad en diferentes arquitecturas para el problema de Lattice – Boltzmann.pdf.txtExtracted texttext/plain68394https://repositorio.uniandes.edu.co/bitstreams/6299648c-c095-404c-9214-273b456612f9/download7f2bcd93cfe278808cce2a9ff5a04ff8MD56Formato Autorización.pdf.txtFormato Autorización.pdf.txtExtracted texttext/plain103https://repositorio.uniandes.edu.co/bitstreams/f3174ca0-a660-4c1c-94fa-99b76d5af55d/download1a2f99e5518d3eddf98cf87f1e094e68MD58THUMBNAILEstudio de la escalabilidad en diferentes arquitecturas para el problema de Lattice – Boltzmann.pdf.jpgEstudio de la escalabilidad en diferentes arquitecturas para el problema de Lattice – Boltzmann.pdf.jpgGenerated Thumbnailimage/jpeg8547https://repositorio.uniandes.edu.co/bitstreams/89c62de6-5d5d-4a74-aae9-f9add2cfd8b8/downloadb582c5d3e193fa1719232961d1d8ffe6MD57Formato Autorización.pdf.jpgFormato Autorización.pdf.jpgGenerated Thumbnailimage/jpeg10927https://repositorio.uniandes.edu.co/bitstreams/45112f54-5fbc-4e44-a54b-eaf69aca0087/downloade09bd9cd341af2a276fdc5ff80f798f3MD591992/73450oai:repositorio.uniandes.edu.co:1992/734502024-02-16 15:36:21.146http://creativecommons.org/licenses/by-nc/4.0/Attribution-NonCommercial 4.0 Internationalopen.accesshttps://repositorio.uniandes.edu.coRepositorio institucional Sénecaadminrepositorio@uniandes.edu.coPGgzPjxzdHJvbmc+RGVzY2FyZ28gZGUgUmVzcG9uc2FiaWxpZGFkIC0gTGljZW5jaWEgZGUgQXV0b3JpemFjacOzbjwvc3Ryb25nPjwvaDM+CjxwPjxzdHJvbmc+UG9yIGZhdm9yIGxlZXIgYXRlbnRhbWVudGUgZXN0ZSBkb2N1bWVudG8gcXVlIHBlcm1pdGUgYWwgUmVwb3NpdG9yaW8gSW5zdGl0dWNpb25hbCBTw6luZWNhIHJlcHJvZHVjaXIgeSBkaXN0cmlidWlyIGxvcyByZWN1cnNvcyBkZSBpbmZvcm1hY2nDs24gZGVwb3NpdGFkb3MgbWVkaWFudGUgbGEgYXV0b3JpemFjacOzbiBkZSBsb3Mgc2lndWllbnRlcyB0w6lybWlub3M6PC9zdHJvbmc+PC9wPgo8cD5Db25jZWRhIGxhIGxpY2VuY2lhIGRlIGRlcMOzc2l0byBlc3TDoW5kYXIgc2VsZWNjaW9uYW5kbyBsYSBvcGNpw7NuIDxzdHJvbmc+J0FjZXB0YXIgbG9zIHTDqXJtaW5vcyBhbnRlcmlvcm1lbnRlIGRlc2NyaXRvcyc8L3N0cm9uZz4geSBjb250aW51YXIgZWwgcHJvY2VzbyBkZSBlbnbDrW8gbWVkaWFudGUgZWwgYm90w7NuIDxzdHJvbmc+J1NpZ3VpZW50ZScuPC9zdHJvbmc+PC9wPgo8aHI+CjxwPllvLCBlbiBtaSBjYWxpZGFkIGRlIGF1dG9yIGRlbCB0cmFiYWpvIGRlIHRlc2lzLCBtb25vZ3JhZsOtYSBvIHRyYWJham8gZGUgZ3JhZG8sIGhhZ28gZW50cmVnYSBkZWwgZWplbXBsYXIgcmVzcGVjdGl2byB5IGRlIHN1cyBhbmV4b3MgZGUgc2VyIGVsIGNhc28sIGVuIGZvcm1hdG8gZGlnaXRhbCB5L28gZWxlY3Ryw7NuaWNvIHkgYXV0b3Jpem8gYSBsYSBVbml2ZXJzaWRhZCBkZSBsb3MgQW5kZXMgcGFyYSBxdWUgcmVhbGljZSBsYSBwdWJsaWNhY2nDs24gZW4gZWwgU2lzdGVtYSBkZSBCaWJsaW90ZWNhcyBvIGVuIGN1YWxxdWllciBvdHJvIHNpc3RlbWEgbyBiYXNlIGRlIGRhdG9zIHByb3BpbyBvIGFqZW5vIGEgbGEgVW5pdmVyc2lkYWQgeSBwYXJhIHF1ZSBlbiBsb3MgdMOpcm1pbm9zIGVzdGFibGVjaWRvcyBlbiBsYSBMZXkgMjMgZGUgMTk4MiwgTGV5IDQ0IGRlIDE5OTMsIERlY2lzacOzbiBBbmRpbmEgMzUxIGRlIDE5OTMsIERlY3JldG8gNDYwIGRlIDE5OTUgeSBkZW3DoXMgbm9ybWFzIGdlbmVyYWxlcyBzb2JyZSBsYSBtYXRlcmlhLCB1dGlsaWNlIGVuIHRvZGFzIHN1cyBmb3JtYXMsIGxvcyBkZXJlY2hvcyBwYXRyaW1vbmlhbGVzIGRlIHJlcHJvZHVjY2nDs24sIGNvbXVuaWNhY2nDs24gcMO6YmxpY2EsIHRyYW5zZm9ybWFjacOzbiB5IGRpc3RyaWJ1Y2nDs24gKGFscXVpbGVyLCBwcsOpc3RhbW8gcMO6YmxpY28gZSBpbXBvcnRhY2nDs24pIHF1ZSBtZSBjb3JyZXNwb25kZW4gY29tbyBjcmVhZG9yIGRlIGxhIG9icmEgb2JqZXRvIGRlbCBwcmVzZW50ZSBkb2N1bWVudG8uPC9wPgo8cD5MYSBwcmVzZW50ZSBhdXRvcml6YWNpw7NuIHNlIGVtaXRlIGVuIGNhbGlkYWQgZGUgYXV0b3IgZGUgbGEgb2JyYSBvYmpldG8gZGVsIHByZXNlbnRlIGRvY3VtZW50byB5IG5vIGNvcnJlc3BvbmRlIGEgY2VzacOzbiBkZSBkZXJlY2hvcywgc2lubyBhIGxhIGF1dG9yaXphY2nDs24gZGUgdXNvIGFjYWTDqW1pY28gZGUgY29uZm9ybWlkYWQgY29uIGxvIGFudGVyaW9ybWVudGUgc2XDsWFsYWRvLiBMYSBwcmVzZW50ZSBhdXRvcml6YWNpw7NuIHNlIGhhY2UgZXh0ZW5zaXZhIG5vIHNvbG8gYSBsYXMgZmFjdWx0YWRlcyB5IGRlcmVjaG9zIGRlIHVzbyBzb2JyZSBsYSBvYnJhIGVuIGZvcm1hdG8gbyBzb3BvcnRlIG1hdGVyaWFsLCBzaW5vIHRhbWJpw6luIHBhcmEgZm9ybWF0byBlbGVjdHLDs25pY28sIHkgZW4gZ2VuZXJhbCBwYXJhIGN1YWxxdWllciBmb3JtYXRvIGNvbm9jaWRvIG8gcG9yIGNvbm9jZXIuPC9wPgo8cD5FbCBhdXRvciwgbWFuaWZpZXN0YSBxdWUgbGEgb2JyYSBvYmpldG8gZGUgbGEgcHJlc2VudGUgYXV0b3JpemFjacOzbiBlcyBvcmlnaW5hbCB5IGxhIHJlYWxpesOzIHNpbiB2aW9sYXIgbyB1c3VycGFyIGRlcmVjaG9zIGRlIGF1dG9yIGRlIHRlcmNlcm9zLCBwb3IgbG8gdGFudG8sIGxhIG9icmEgZXMgZGUgc3UgZXhjbHVzaXZhIGF1dG9yw61hIHkgdGllbmUgbGEgdGl0dWxhcmlkYWQgc29icmUgbGEgbWlzbWEuPC9wPgo8cD5FbiBjYXNvIGRlIHByZXNlbnRhcnNlIGN1YWxxdWllciByZWNsYW1hY2nDs24gbyBhY2Npw7NuIHBvciBwYXJ0ZSBkZSB1biB0ZXJjZXJvIGVuIGN1YW50byBhIGxvcyBkZXJlY2hvcyBkZSBhdXRvciBzb2JyZSBsYSBvYnJhIGVuIGN1ZXN0acOzbiwgZWwgYXV0b3IgYXN1bWlyw6EgdG9kYSBsYSByZXNwb25zYWJpbGlkYWQsIHkgc2FsZHLDoSBkZSBkZWZlbnNhIGRlIGxvcyBkZXJlY2hvcyBhcXXDrSBhdXRvcml6YWRvcywgcGFyYSB0b2RvcyBsb3MgZWZlY3RvcyBsYSBVbml2ZXJzaWRhZCBhY3TDumEgY29tbyB1biB0ZXJjZXJvIGRlIGJ1ZW5hIGZlLjwvcD4KPHA+U2kgdGllbmUgYWxndW5hIGR1ZGEgc29icmUgbGEgbGljZW5jaWEsIHBvciBmYXZvciwgY29udGFjdGUgY29uIGVsIDxhIGhyZWY9Im1haWx0bzpiaWJsaW90ZWNhQHVuaWFuZGVzLmVkdS5jbyIgdGFyZ2V0PSJfYmxhbmsiPkFkbWluaXN0cmFkb3IgZGVsIFNpc3RlbWEuPC9hPjwvcD4K