2D lid-driven cavity flow simulation using GPU-CUDA with a high-order finite difference scheme
El alto paralelismo y el bajo costo de las unidades de procesamiento gráfico (GPU) han atraído el interés de científicos e ingenieros que requieren una alta potencia computacional con una modesta inversión. Este trabajo explora el uso de una GPU en la solución del problema de flujo de la cavidad 2D...
- Autores:
-
Franco Guzmán, Ediguer Enrique
Barrera Cárdenas, Helver Mauricio
Laín Beatove, Santiago
- Tipo de recurso:
- Article of journal
- Fecha de publicación:
- 2014
- Institución:
- Universidad Autónoma de Occidente
- Repositorio:
- RED: Repositorio Educativo Digital UAO
- Idioma:
- eng
- OAI Identifier:
- oai:red.uao.edu.co:10614/11908
- Acceso en línea:
- http://red.uao.edu.co//handle/10614/11908
- Palabra clave:
- Análisis numérico
Numerical analysis
Navier-Stokes equations
Lid driven cavity flow
GPU
CUDA
- Rights
- openAccess
- License
- Derechos Reservados - Universidad Autónoma de Occidente
id |
REPOUAO2_a445a53bec1371cda2842c96af3672d9 |
---|---|
oai_identifier_str |
oai:red.uao.edu.co:10614/11908 |
network_acronym_str |
REPOUAO2 |
network_name_str |
RED: Repositorio Educativo Digital UAO |
repository_id_str |
|
dc.title.eng.fl_str_mv |
2D lid-driven cavity flow simulation using GPU-CUDA with a high-order finite difference scheme |
title |
2D lid-driven cavity flow simulation using GPU-CUDA with a high-order finite difference scheme |
spellingShingle |
2D lid-driven cavity flow simulation using GPU-CUDA with a high-order finite difference scheme Análisis numérico Numerical analysis Navier-Stokes equations Lid driven cavity flow GPU CUDA |
title_short |
2D lid-driven cavity flow simulation using GPU-CUDA with a high-order finite difference scheme |
title_full |
2D lid-driven cavity flow simulation using GPU-CUDA with a high-order finite difference scheme |
title_fullStr |
2D lid-driven cavity flow simulation using GPU-CUDA with a high-order finite difference scheme |
title_full_unstemmed |
2D lid-driven cavity flow simulation using GPU-CUDA with a high-order finite difference scheme |
title_sort |
2D lid-driven cavity flow simulation using GPU-CUDA with a high-order finite difference scheme |
dc.creator.fl_str_mv |
Franco Guzmán, Ediguer Enrique Barrera Cárdenas, Helver Mauricio Laín Beatove, Santiago |
dc.contributor.author.none.fl_str_mv |
Franco Guzmán, Ediguer Enrique Barrera Cárdenas, Helver Mauricio Laín Beatove, Santiago |
dc.subject.armarc.spa.fl_str_mv |
Análisis numérico |
topic |
Análisis numérico Numerical analysis Navier-Stokes equations Lid driven cavity flow GPU CUDA |
dc.subject.armarc.eng.fl_str_mv |
Numerical analysis |
dc.subject.proposal.eng.fl_str_mv |
Navier-Stokes equations |
dc.subject.proposal.none.fl_str_mv |
Lid driven cavity flow GPU CUDA |
description |
El alto paralelismo y el bajo costo de las unidades de procesamiento gráfico (GPU) han atraído el interés de científicos e ingenieros que requieren una alta potencia computacional con una modesta inversión. Este trabajo explora el uso de una GPU en la solución del problema de flujo de la cavidad 2D impulsada por la tapa utilizando la formulación de presión-velocidad para números de Reynolds hasta 10,000 y pasando a un esquema de diferencias finitas de cuarto orden para la discretización espacial. Los resultados mostraron una buena concordancia con los reportados en la literatura. El solucionador se implementó tanto en la CPU como en la GPU para comparar su rendimiento, con lo cual este último fue setenta veces más rápido. |
publishDate |
2014 |
dc.date.issued.spa.fl_str_mv |
2014-10 |
dc.date.accessioned.none.fl_str_mv |
2020-02-17T18:16:45Z |
dc.date.available.none.fl_str_mv |
2020-02-17T18:16:45Z |
dc.type.spa.fl_str_mv |
Artículo de revista |
dc.type.coar.fl_str_mv |
http://purl.org/coar/resource_type/c_2df8fbb1 |
dc.type.coarversion.fl_str_mv |
http://purl.org/coar/version/c_970fb48d4fbd8a85 |
dc.type.coar.eng.fl_str_mv |
http://purl.org/coar/resource_type/c_6501 |
dc.type.content.eng.fl_str_mv |
Text |
dc.type.driver.eng.fl_str_mv |
info:eu-repo/semantics/article |
dc.type.redcol.eng.fl_str_mv |
http://purl.org/redcol/resource_type/ARTREF |
dc.type.version.eng.fl_str_mv |
info:eu-repo/semantics/publishedVersion |
format |
http://purl.org/coar/resource_type/c_6501 |
status_str |
publishedVersion |
dc.identifier.uri.none.fl_str_mv |
http://red.uao.edu.co//handle/10614/11908 |
url |
http://red.uao.edu.co//handle/10614/11908 |
dc.language.iso.eng.fl_str_mv |
eng |
language |
eng |
dc.relation.eng.fl_str_mv |
Journal of the Brazilian Society of Mechanical Sciences and Engineering. (2014); páginas 1329-1338 |
dc.relation.citationvolume.none.fl_str_mv |
37 |
dc.relation.cites.spa.fl_str_mv |
Franco, E.E., Barrera, H.M. & Laín, S. 2D lid-driven cavity flow simulation using GPU-CUDA with a high-order finite difference scheme. J Braz. Soc. Mech. Sci. Eng. 37, 1329–1338 . http://red.uao.edu.co//handle/10614/11908 |
dc.relation.ispartofjournal.eng.fl_str_mv |
Journal of the Brazilian Society of Mechanical Sciences and Engineering |
dc.relation.references.none.fl_str_mv |
NVIDIA’s (2009) Next Generation CUDA Compute Architecture: Fermi. Technical Report V1.1, NVIDIA Corporation. Bell, N., & M. Garland 2008. Efficient Sparse Matrix-Vector Multiplication on CUDA. Technical Report NVR-2008-004, NVIDIA Corporation. Cardoso, N., & P. Bicudo 2009.Time dependent simulation of the Lid Driven Cavity at high Reynolds number. arXiv:0809.3098 [physics.flu-dyn]. Chapra, S. C., & R. P Canale 1995. M´etodos num´ericos para ingenieros. McGrawHill/Interamericana Editores S.A. de C.V., Mexico, 6th edition. Chorin, Alexandre Joel 1968. Numerical solution of the Navier-Stokes equations. Mathematics of Computation, 22:745–762. Courtecuisse, H., & J. Alard. Parallel Dense Gauss-Seidel Algorithm on Many-Core Processors. In Proceedings of the 11th IEEE International Conference on High Performance Computing and Comunications. [Erturk, 2009] Erturk, E. 2009. Discussions on driven cavity flow. International Journal for Numerical Methods in Fluids, 60:275–294. Erturk, E., T. C. Corke, & C. G¨ok¸c¨ol 2005. Numerical solution of 2-D steady incompressible driven cavity flow at high Reynolds number. International Journal for Numerical Methods in Fluids, 48:747–774. [Frezzotti et al., 2011] Frezzotti, A., G. P. Ghiroldi, & L. Gibelli 2011. Solving model kinetic equations on GPUs.Computers & Fluids, 50:136–146. Ghia, U., K. N. Ghia, & C. T. Shin 1982. High-Re Solutions for Incompressible Flow Using the Navier-Stokes Equations and a Multigrid Method. Journal of Computational Physics, 48:387–411. Markall, G. R., A. Slemmer, D. A.Ham, P. H. J. Kelly, C. D. Cantwell, & S. J. Sherwin 2013. Finite element assembly strategies on multi-core and many-core architectures. International Journal for Numerical Methods in Fluids, 71(1):80–97. Moreland, K., & E. Angel 2003.The FFT on a GPU. In Proceedings of the ACM SIGGRAPH/EUROGRAPHICS conference on Graphics hardware, HWWS ’03, pages 112–119, Aire-la-Ville, Switzerland, Switzerland. Eurographics Association. Patankar, S. V. 1980. Numerical Heat Transfer and Fluid Flow. Mc Graw Hill, USA. Seibold, B. 2008. A compact and fast Matlab code solving the incompressible Navier-Stokes equations on rectangular domains (mit18086 navierstokes.m). Massachusetts Institute of Technology. Vanka, S. P. 2013. 2012 Freeman Scholar Lecture: Computational Fluid Dynamics on Graphics Processing Units. Journal of Fluids Engineering, 135(6):23. Versteeg, H. K., & W. Malalasekera 1995. An introduction to computational fluid dynamics. Addyson Wesley Longman Limited,Essex, England. Zheng, L., H. Zhang, T. Gerya, M. Knepley, D. A. Yuen, & Y. Shi 2013. Implementation of a multigrid solver on a GPU for Stokes equations with strongly variable viscosity based on Matlab and CUDA. International Journal of High Performance Computing Applications, 28(1):50–60. |
dc.rights.spa.fl_str_mv |
Derechos Reservados - Universidad Autónoma de Occidente |
dc.rights.coar.fl_str_mv |
http://purl.org/coar/access_right/c_abf2 |
dc.rights.uri.eng.fl_str_mv |
https://creativecommons.org/licenses/by-nc-nd/4.0/ |
dc.rights.accessrights.eng.fl_str_mv |
info:eu-repo/semantics/openAccess |
dc.rights.creativecommons.spa.fl_str_mv |
Atribución-NoComercial-SinDerivadas 4.0 Internacional (CC BY-NC-ND 4.0) |
rights_invalid_str_mv |
Derechos Reservados - Universidad Autónoma de Occidente https://creativecommons.org/licenses/by-nc-nd/4.0/ Atribución-NoComercial-SinDerivadas 4.0 Internacional (CC BY-NC-ND 4.0) http://purl.org/coar/access_right/c_abf2 |
eu_rights_str_mv |
openAccess |
dc.format.eng.fl_str_mv |
application/pdf |
dc.format.extent.spa.fl_str_mv |
8 páginas |
dc.coverage.spatial.none.fl_str_mv |
Universidad Autónoma de Occidente. Calle 25 115-85. Km 2 vía Cali-Jamundí |
dc.publisher.eng.fl_str_mv |
Springer |
institution |
Universidad Autónoma de Occidente |
bitstream.url.fl_str_mv |
https://red.uao.edu.co/bitstreams/67049321-fc4e-4252-84ff-beac98cec167/download https://red.uao.edu.co/bitstreams/084f4853-17a9-45af-8d31-a3f8651e5acb/download https://red.uao.edu.co/bitstreams/940d78d3-7c7a-4280-9321-6478d661308a/download https://red.uao.edu.co/bitstreams/e956a760-2ed6-46fd-b32a-cdd863e5eb56/download https://red.uao.edu.co/bitstreams/898374cb-a0fc-4875-939e-e556b80fb485/download |
bitstream.checksum.fl_str_mv |
4460e5956bc1d1639be9ae6146a50347 20b5ba22b1117f71589c7318baa2c560 7894de0a54f405b85f76692a1063680f 98cc8762dbfc08e8b4aa3f4b1836cebd 571131080fb1ac2bff38bf7f3dbfe976 |
bitstream.checksumAlgorithm.fl_str_mv |
MD5 MD5 MD5 MD5 MD5 |
repository.name.fl_str_mv |
Repositorio Digital Universidad Autonoma de Occidente |
repository.mail.fl_str_mv |
repositorio@uao.edu.co |
_version_ |
1814260124454223872 |
spelling |
Franco Guzmán, Ediguer Enriquevirtual::1048-1Barrera Cárdenas, Helver Mauriciovirtual::1047-1Laín Beatove, Santiagovirtual::1049-1Universidad Autónoma de Occidente. Calle 25 115-85. Km 2 vía Cali-Jamundí2020-02-17T18:16:45Z2020-02-17T18:16:45Z2014-10http://red.uao.edu.co//handle/10614/11908El alto paralelismo y el bajo costo de las unidades de procesamiento gráfico (GPU) han atraído el interés de científicos e ingenieros que requieren una alta potencia computacional con una modesta inversión. Este trabajo explora el uso de una GPU en la solución del problema de flujo de la cavidad 2D impulsada por la tapa utilizando la formulación de presión-velocidad para números de Reynolds hasta 10,000 y pasando a un esquema de diferencias finitas de cuarto orden para la discretización espacial. Los resultados mostraron una buena concordancia con los reportados en la literatura. El solucionador se implementó tanto en la CPU como en la GPU para comparar su rendimiento, con lo cual este último fue setenta veces más rápido.The high parallelism and low cost of the graphic processing units (GPUs) have attracted the interest of scientists and engineers requiring high computational power with a modest investment. This work explores the use of a GPU in the solution of the 2D lid-driven cavity flow problem using the pressure–velocity formulation for Reynolds numbers up to 10,000 and turning to a 4th order finite difference scheme for spatial discretization. Results showed good agreement with those reported in the literature. The solver was implemented in both the CPU and the GPU in order to compare their performance, whereupon the latter was seventy times fasterapplication/pdf8 páginasengSpringerJournal of the Brazilian Society of Mechanical Sciences and Engineering. (2014); páginas 1329-133837Franco, E.E., Barrera, H.M. & Laín, S. 2D lid-driven cavity flow simulation using GPU-CUDA with a high-order finite difference scheme. J Braz. Soc. Mech. Sci. Eng. 37, 1329–1338 . http://red.uao.edu.co//handle/10614/11908Journal of the Brazilian Society of Mechanical Sciences and EngineeringNVIDIA’s (2009) Next Generation CUDA Compute Architecture: Fermi. Technical Report V1.1, NVIDIA Corporation.Bell, N., & M. Garland 2008. Efficient Sparse Matrix-Vector Multiplication on CUDA. Technical Report NVR-2008-004, NVIDIA Corporation.Cardoso, N., & P. Bicudo 2009.Time dependent simulation of the Lid Driven Cavity at high Reynolds number. arXiv:0809.3098 [physics.flu-dyn].Chapra, S. C., & R. P Canale 1995. M´etodos num´ericos para ingenieros. McGrawHill/Interamericana Editores S.A. de C.V., Mexico, 6th edition.Chorin, Alexandre Joel 1968. Numerical solution of the Navier-Stokes equations. Mathematics of Computation, 22:745–762.Courtecuisse, H., & J. Alard. Parallel Dense Gauss-Seidel Algorithm on Many-Core Processors. In Proceedings of the 11th IEEE International Conference on High Performance Computing and Comunications.[Erturk, 2009] Erturk, E. 2009. Discussions on driven cavity flow. International Journal for Numerical Methods in Fluids, 60:275–294.Erturk, E., T. C. Corke, & C. G¨ok¸c¨ol 2005. Numerical solution of 2-D steady incompressible driven cavity flow at high Reynolds number. International Journal for Numerical Methods in Fluids, 48:747–774.[Frezzotti et al., 2011] Frezzotti, A., G. P. Ghiroldi, & L. Gibelli 2011. Solving model kinetic equations on GPUs.Computers & Fluids, 50:136–146.Ghia, U., K. N. Ghia, & C. T. Shin 1982. High-Re Solutions for Incompressible Flow Using the Navier-Stokes Equations and a Multigrid Method. Journal of Computational Physics, 48:387–411.Markall, G. R., A. Slemmer, D. A.Ham, P. H. J. Kelly, C. D. Cantwell, & S. J. Sherwin 2013. Finite element assembly strategies on multi-core and many-core architectures. International Journal for Numerical Methods in Fluids, 71(1):80–97.Moreland, K., & E. Angel 2003.The FFT on a GPU. In Proceedings of the ACM SIGGRAPH/EUROGRAPHICS conference on Graphics hardware, HWWS ’03, pages 112–119, Aire-la-Ville, Switzerland, Switzerland. Eurographics Association.Patankar, S. V. 1980. Numerical Heat Transfer and Fluid Flow. Mc Graw Hill, USA.Seibold, B. 2008. A compact and fast Matlab code solving the incompressible Navier-Stokes equations on rectangular domains (mit18086 navierstokes.m). Massachusetts Institute of Technology.Vanka, S. P. 2013. 2012 Freeman Scholar Lecture: Computational Fluid Dynamics on Graphics Processing Units. Journal of Fluids Engineering, 135(6):23.Versteeg, H. K., & W. Malalasekera 1995. An introduction to computational fluid dynamics. Addyson Wesley Longman Limited,Essex, England.Zheng, L., H. Zhang, T. Gerya, M. Knepley, D. A. Yuen, & Y. Shi 2013. Implementation of a multigrid solver on a GPU for Stokes equations with strongly variable viscosity based on Matlab and CUDA. International Journal of High Performance Computing Applications, 28(1):50–60.Derechos Reservados - Universidad Autónoma de Occidentehttps://creativecommons.org/licenses/by-nc-nd/4.0/info:eu-repo/semantics/openAccessAtribución-NoComercial-SinDerivadas 4.0 Internacional (CC BY-NC-ND 4.0)http://purl.org/coar/access_right/c_abf22D lid-driven cavity flow simulation using GPU-CUDA with a high-order finite difference schemeArtículo de revistahttp://purl.org/coar/resource_type/c_6501http://purl.org/coar/resource_type/c_2df8fbb1Textinfo:eu-repo/semantics/articlehttp://purl.org/redcol/resource_type/ARTREFinfo:eu-repo/semantics/publishedVersionhttp://purl.org/coar/version/c_970fb48d4fbd8a85Análisis numéricoNumerical analysisNavier-Stokes equationsLid driven cavity flowGPUCUDAPublicationff78380a-274b-4973-8760-dee857b38a0dvirtual::1048-1f608b27f-3b11-4041-b07e-40e9f8a7d0cdvirtual::1047-1082b0926-3385-4188-9c6a-bbbed7484a95virtual::1049-1f608b27f-3b11-4041-b07e-40e9f8a7d0cdvirtual::1047-1ff78380a-274b-4973-8760-dee857b38a0dvirtual::1048-1082b0926-3385-4188-9c6a-bbbed7484a95virtual::1049-1https://scholar.google.com/citations?user=4paPIoAAAAAJ&hl=esvirtual::1048-1https://scholar.google.com/citations?hl=de&view_op=list_works&gmla=AP6z3OYgyKNV4SXIsrFCLfeZy4UIrIrbyXxywRNV-C1ZKnpTkio8g9aklz0hJAg7XS_UPdAknPgql5zu89xaKLcx9QI3sN69O6biQQvlg3a_jR_o01ufqXtkz9H6gA&user=u7z3_5IAAAAJvirtual::1047-1https://scholar.google.com/citations?user=g-iBdUkAAAAJ&hl=esvirtual::1049-10000-0001-7518-704Xvirtual::1048-10000-0002-6968-1508virtual::1047-10000-0002-0269-2608virtual::1049-1https://scienti.minciencias.gov.co/cvlac/visualizador/generarCurriculoCv.do?cod_rh=0001243730virtual::1048-1https://scienti.minciencias.gov.co/cvlac/visualizador/generarCurriculoCv.do?cod_rh=0001391726virtual::1047-1https://scienti.minciencias.gov.co/cvlac/visualizador/generarCurriculoCv.do?cod_rh=0000262129virtual::1049-1CC-LICENSElicense_rdflicense_rdfapplication/rdf+xml; charset=utf-8805https://red.uao.edu.co/bitstreams/67049321-fc4e-4252-84ff-beac98cec167/download4460e5956bc1d1639be9ae6146a50347MD52LICENSElicense.txtlicense.txttext/plain; charset=utf-81665https://red.uao.edu.co/bitstreams/084f4853-17a9-45af-8d31-a3f8651e5acb/download20b5ba22b1117f71589c7318baa2c560MD53ORIGINALA0302_2D lid-driven cavity flow simulation using GPU-CUDA with a high order finite difference scheme.pdfA0302_2D lid-driven cavity flow simulation using GPU-CUDA with a high order finite difference scheme.pdfTexto completo del artículoapplication/pdf1919205https://red.uao.edu.co/bitstreams/940d78d3-7c7a-4280-9321-6478d661308a/download7894de0a54f405b85f76692a1063680fMD54TEXTA0302_2D lid-driven cavity flow simulation using GPU-CUDA with a high order finite difference scheme.pdf.txtA0302_2D lid-driven cavity flow simulation using GPU-CUDA with a high order finite difference scheme.pdf.txtExtracted texttext/plain30762https://red.uao.edu.co/bitstreams/e956a760-2ed6-46fd-b32a-cdd863e5eb56/download98cc8762dbfc08e8b4aa3f4b1836cebdMD55THUMBNAILA0302_2D lid-driven cavity flow simulation using GPU-CUDA with a high order finite difference scheme.pdf.jpgA0302_2D lid-driven cavity flow simulation using GPU-CUDA with a high order finite difference scheme.pdf.jpgGenerated Thumbnailimage/jpeg13699https://red.uao.edu.co/bitstreams/898374cb-a0fc-4875-939e-e556b80fb485/download571131080fb1ac2bff38bf7f3dbfe976MD5610614/11908oai:red.uao.edu.co:10614/119082024-03-01 09:45:10.24https://creativecommons.org/licenses/by-nc-nd/4.0/Derechos Reservados - Universidad Autónoma de Occidenteopen.accesshttps://red.uao.edu.coRepositorio Digital Universidad Autonoma de Occidenterepositorio@uao.edu.coRUwgQVVUT1IgYXV0b3JpemEgYSBsYSBVbml2ZXJzaWRhZCBBdXTDs25vbWEgZGUgT2NjaWRlbnRlLCBkZSBmb3JtYSBpbmRlZmluaWRhLCBwYXJhIHF1ZSBlbiBsb3MgdMOpcm1pbm9zIGVzdGFibGVjaWRvcyBlbiBsYSBMZXkgMjMgZGUgMTk4MiwgbGEgTGV5IDQ0IGRlIDE5OTMsIGxhIERlY2lzacOzbiBhbmRpbmEgMzUxIGRlIDE5OTMsIGVsIERlY3JldG8gNDYwIGRlIDE5OTUgeSBkZW3DoXMgbGV5ZXMgeSBqdXJpc3BydWRlbmNpYSB2aWdlbnRlIGFsIHJlc3BlY3RvLCBoYWdhIHB1YmxpY2FjacOzbiBkZSBlc3RlIGNvbiBmaW5lcyBlZHVjYXRpdm9zLiBQQVJBR1JBRk86IEVzdGEgYXV0b3JpemFjacOzbiBhZGVtw6FzIGRlIHNlciB2w6FsaWRhIHBhcmEgbGFzIGZhY3VsdGFkZXMgeSBkZXJlY2hvcyBkZSB1c28gc29icmUgbGEgb2JyYSBlbiBmb3JtYXRvIG8gc29wb3J0ZSBtYXRlcmlhbCwgdGFtYmnDqW4gcGFyYSBmb3JtYXRvIGRpZ2l0YWwsIGVsZWN0csOzbmljbywgdmlydHVhbCwgcGFyYSB1c29zIGVuIHJlZCwgSW50ZXJuZXQsIGV4dHJhbmV0LCBpbnRyYW5ldCwgYmlibGlvdGVjYSBkaWdpdGFsIHkgZGVtw6FzIHBhcmEgY3VhbHF1aWVyIGZvcm1hdG8gY29ub2NpZG8gbyBwb3IgY29ub2Nlci4gRUwgQVVUT1IsIGV4cHJlc2EgcXVlIGVsIGRvY3VtZW50byAodHJhYmFqbyBkZSBncmFkbywgcGFzYW50w61hLCBjYXNvcyBvIHRlc2lzKSBvYmpldG8gZGUgbGEgcHJlc2VudGUgYXV0b3JpemFjacOzbiBlcyBvcmlnaW5hbCB5IGxhIGVsYWJvcsOzIHNpbiBxdWVicmFudGFyIG5pIHN1cGxhbnRhciBsb3MgZGVyZWNob3MgZGUgYXV0b3IgZGUgdGVyY2Vyb3MsIHkgZGUgdGFsIGZvcm1hLCBlbCBkb2N1bWVudG8gKHRyYWJham8gZGUgZ3JhZG8sIHBhc2FudMOtYSwgY2Fzb3MgbyB0ZXNpcykgZXMgZGUgc3UgZXhjbHVzaXZhIGF1dG9yw61hIHkgdGllbmUgbGEgdGl0dWxhcmlkYWQgc29icmUgw6lzdGUuIFBBUkFHUkFGTzogZW4gY2FzbyBkZSBwcmVzZW50YXJzZSBhbGd1bmEgcmVjbGFtYWNpw7NuIG8gYWNjacOzbiBwb3IgcGFydGUgZGUgdW4gdGVyY2VybywgcmVmZXJlbnRlIGEgbG9zIGRlcmVjaG9zIGRlIGF1dG9yIHNvYnJlIGVsIGRvY3VtZW50byAoVHJhYmFqbyBkZSBncmFkbywgUGFzYW50w61hLCBjYXNvcyBvIHRlc2lzKSBlbiBjdWVzdGnDs24sIEVMIEFVVE9SLCBhc3VtaXLDoSBsYSByZXNwb25zYWJpbGlkYWQgdG90YWwsIHkgc2FsZHLDoSBlbiBkZWZlbnNhIGRlIGxvcyBkZXJlY2hvcyBhcXXDrSBhdXRvcml6YWRvczsgcGFyYSB0b2RvcyBsb3MgZWZlY3RvcywgbGEgVW5pdmVyc2lkYWQgIEF1dMOzbm9tYSBkZSBPY2NpZGVudGUgYWN0w7phIGNvbW8gdW4gdGVyY2VybyBkZSBidWVuYSBmZS4gVG9kYSBwZXJzb25hIHF1ZSBjb25zdWx0ZSB5YSBzZWEgZW4gbGEgYmlibGlvdGVjYSBvIGVuIG1lZGlvIGVsZWN0csOzbmljbyBwb2Ryw6EgY29waWFyIGFwYXJ0ZXMgZGVsIHRleHRvIGNpdGFuZG8gc2llbXByZSBsYSBmdWVudGUsIGVzIGRlY2lyIGVsIHTDrXR1bG8gZGVsIHRyYWJham8geSBlbCBhdXRvci4gRXN0YSBhdXRvcml6YWNpw7NuIG5vIGltcGxpY2EgcmVudW5jaWEgYSBsYSBmYWN1bHRhZCBxdWUgdGllbmUgRUwgQVVUT1IgZGUgcHVibGljYXIgdG90YWwgbyBwYXJjaWFsbWVudGUgbGEgb2JyYS4K |