Propuesta de modelo de arquitectura distribuida en microservicios para la gestión de prestaciones de salud en la empresa Conexia sede Bogotá.

Las aplicaciones monolíticas que conocemos hoy día nacieron en los mainframes; computadoras grandes y potentes capaces de procesar una gran cantidad de datos. Para muchas empresas en el mundo, este ha sido el método tradicional para desarrollar soluciones de software que resuelven problemas en difer...

Full description

Autores:
Ramírez Carvajal, Diego Alexander
Salazar Álvarez, Juan David
Tipo de recurso:
Trabajo de grado de pregrado
Fecha de publicación:
2020
Institución:
Universidad Cooperativa de Colombia
Repositorio:
Repositorio UCC
Idioma:
OAI Identifier:
oai:repository.ucc.edu.co:20.500.12494/16081
Acceso en línea:
https://hdl.handle.net/20.500.12494/16081
Palabra clave:
Arquitectura de software
Microservicios
Spring cloud
Software architecture
Microservices
Spring cloud
Rights
openAccess
License
Atribución – No comercial – Sin Derivar
id COOPER2_d437861b3edf4eb19040188021c6434c
oai_identifier_str oai:repository.ucc.edu.co:20.500.12494/16081
network_acronym_str COOPER2
network_name_str Repositorio UCC
repository_id_str
dc.title.spa.fl_str_mv Propuesta de modelo de arquitectura distribuida en microservicios para la gestión de prestaciones de salud en la empresa Conexia sede Bogotá.
title Propuesta de modelo de arquitectura distribuida en microservicios para la gestión de prestaciones de salud en la empresa Conexia sede Bogotá.
spellingShingle Propuesta de modelo de arquitectura distribuida en microservicios para la gestión de prestaciones de salud en la empresa Conexia sede Bogotá.
Arquitectura de software
Microservicios
Spring cloud
Software architecture
Microservices
Spring cloud
title_short Propuesta de modelo de arquitectura distribuida en microservicios para la gestión de prestaciones de salud en la empresa Conexia sede Bogotá.
title_full Propuesta de modelo de arquitectura distribuida en microservicios para la gestión de prestaciones de salud en la empresa Conexia sede Bogotá.
title_fullStr Propuesta de modelo de arquitectura distribuida en microservicios para la gestión de prestaciones de salud en la empresa Conexia sede Bogotá.
title_full_unstemmed Propuesta de modelo de arquitectura distribuida en microservicios para la gestión de prestaciones de salud en la empresa Conexia sede Bogotá.
title_sort Propuesta de modelo de arquitectura distribuida en microservicios para la gestión de prestaciones de salud en la empresa Conexia sede Bogotá.
dc.creator.fl_str_mv Ramírez Carvajal, Diego Alexander
Salazar Álvarez, Juan David
dc.contributor.advisor.none.fl_str_mv Pahuena López, Fabio Iván
dc.contributor.author.none.fl_str_mv Ramírez Carvajal, Diego Alexander
Salazar Álvarez, Juan David
dc.subject.spa.fl_str_mv Arquitectura de software
Microservicios
Spring cloud
topic Arquitectura de software
Microservicios
Spring cloud
Software architecture
Microservices
Spring cloud
dc.subject.other.spa.fl_str_mv Software architecture
Microservices
Spring cloud
description Las aplicaciones monolíticas que conocemos hoy día nacieron en los mainframes; computadoras grandes y potentes capaces de procesar una gran cantidad de datos. Para muchas empresas en el mundo, este ha sido el método tradicional para desarrollar soluciones de software que resuelven problemas en diferentes mercados, las aplicaciones monolíticas se construyen bajo una una sola base de código y se ejecutan en un solo proceso, son fáciles de mantener y desplegar en ambientes productivos. Sin embargo, una vez la aplicación crece la arquitectura comienza a deteriorarse, lo cual no solo impacta en el rendimiento y el consumo de recursos, sino también en el equipo de desarrollo y la entrega continua de valor a los clientes y usuarios. Este trabajo de grado bajo la modalidad de análisis sistemático de literatura de un estudio de caso, propone la implementación de una arquitectura de microservicios para ofrecer una alternativa a las arquitecturas monoliticas.
publishDate 2020
dc.date.accessioned.none.fl_str_mv 2020-01-20T13:21:51Z
dc.date.available.none.fl_str_mv 2020-01-20T13:21:51Z
dc.date.issued.none.fl_str_mv 2020-01-17
dc.type.none.fl_str_mv Trabajo de grado - Pregrado
dc.type.coar.none.fl_str_mv http://purl.org/coar/resource_type/c_7a1f
dc.type.driver.none.fl_str_mv info:eu-repo/semantics/bachelorThesis
dc.type.version.none.fl_str_mv info:eu-repo/semantics/acceptedVersion
format http://purl.org/coar/resource_type/c_7a1f
status_str acceptedVersion
dc.identifier.uri.none.fl_str_mv https://hdl.handle.net/20.500.12494/16081
dc.identifier.bibliographicCitation.spa.fl_str_mv Ramírez Carvajal, D. A. y Salazar Alvarez, J. D. Propuesta de modelo de arquitectura distribuida en microservicios para la gestión de prestaciones de salud en la empresa Conexia sede Bogotá Tic en la escuela (tesis de pregrado). Universidad Cooperativa de Colombia, Bogotá.
url https://hdl.handle.net/20.500.12494/16081
identifier_str_mv Ramírez Carvajal, D. A. y Salazar Alvarez, J. D. Propuesta de modelo de arquitectura distribuida en microservicios para la gestión de prestaciones de salud en la empresa Conexia sede Bogotá Tic en la escuela (tesis de pregrado). Universidad Cooperativa de Colombia, Bogotá.
dc.relation.references.spa.fl_str_mv Amazon Web Services, Inc. (2019). Amazon AWS. Obtenido de https://aws.amazon.com/es/relational-database/
Axios. (s.f.). Axios . Obtenido de https://github.com/axios/axios
Blancarte, O. (4 de 12 de 2018). Oscar Blancarte Software Arquitect. Obtenido de https://www.oscarblancarteblog.com/2018/12/04/circuit-breaker-pattern/
Clements, P. (1996). A Survey of Architecture Description Languages. Alemania: Carnegie Mellon University.
Gabriel, J. &. (2002). Networkworld. Obtenido de https://www.networkworld.es
Lewis, J. (25 de 03 de 2014). Martin Fowler. Obtenido de https://martinfowler.com/articles/microservices.html#CharacteristicsOfAMicroserviceArchitecture
OpenJS Foundation. (22 de 10 de 2019). Node Js. Obtenido de https://nodejs.org
Pivotal Software. (2019). Obtenido de https://spring.io/projects/spring-cloud-gateway
Pivotal Software. (2019). Spring Cloud Config Server Documentation. Obtenido de https://cloud.spring.io/spring-cloud-config/reference/html/
Pivotal Software. (2019). Spring Cloud Netflix Documentation. Obtenido de https://spring.io/projects/spring-cloud-netflix
Pivotal Software. (09 de 2019). Spring Framework. Obtenido de https://spring.io/projects/spring-framework
Richarson. (2018). Microservices Patterns. Manning Ed
Sanchéz, L. y. (2003). Metodologías Ágiles en el desarrollo de software. (pág. 1). Alicante: Grupo ISSI.
ScrumStudy. (2016). A Guide to the Scrum Body Of Knowledge . Avondale, Arizona: ScrumStudy.
You, E. (s.f.). Vue Js. Obtenido de https://vuejs.org/v2/guide/
dc.rights.license.none.fl_str_mv Atribución – No comercial – Sin Derivar
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 Atribución – No comercial – Sin Derivar
http://purl.org/coar/access_right/c_abf2
eu_rights_str_mv openAccess
dc.publisher.spa.fl_str_mv Universidad Cooperativa de Colombia, Facultad de Ingenierías, Ingeniería de Sistemas, Bogotá
dc.publisher.program.spa.fl_str_mv Ingeniería de Sistemas
dc.publisher.place.spa.fl_str_mv Bogotá
institution Universidad Cooperativa de Colombia
bitstream.url.fl_str_mv https://repository.ucc.edu.co/bitstreams/d8a14a19-9301-4cbc-9230-7f782d072151/download
https://repository.ucc.edu.co/bitstreams/65cd52b6-c6e1-414d-85a2-89bd3547cc2d/download
https://repository.ucc.edu.co/bitstreams/745f2852-c99d-482f-bc33-c30539f38aff/download
https://repository.ucc.edu.co/bitstreams/572f07d2-ae19-4e5b-aff0-29bcaed1cb54/download
https://repository.ucc.edu.co/bitstreams/9773c2f9-a707-46bb-a671-d94e9c6b2162/download
https://repository.ucc.edu.co/bitstreams/c4647f8a-cc82-4c3b-bf73-562206aa5494/download
https://repository.ucc.edu.co/bitstreams/6708c77d-07b4-48c4-a049-c30027da6bf0/download
https://repository.ucc.edu.co/bitstreams/3824de01-5ada-4f75-9345-478c149d9c82/download
https://repository.ucc.edu.co/bitstreams/faa185f8-207b-4780-bb16-9b3302effbc1/download
https://repository.ucc.edu.co/bitstreams/73571bd9-60f8-4a32-afb1-eb6fd67e0f90/download
bitstream.checksum.fl_str_mv 5910cd955a543f917fb745713904f3e0
482aa5c95e85681ac2c9b4990bbbe12f
6ccd995a71586ed2a5773fe0056e846e
3bce4f7ab09dfc588f126e1e36e98a45
6598a4c99d27525bb7fd9f8a53b66a55
679487eae8cd1460d1ffcc488337272d
0cc2da295fe4b8876a4716959d044319
47b84146c6b6cb57efbb58cf3565ee22
1429ba63b6afd7c45a330f23d1328d1d
6d93d3216dc4a7f5df47d4876fbec4d3
bitstream.checksumAlgorithm.fl_str_mv MD5
MD5
MD5
MD5
MD5
MD5
MD5
MD5
MD5
MD5
repository.name.fl_str_mv Repositorio Institucional Universidad Cooperativa de Colombia
repository.mail.fl_str_mv bdigital@metabiblioteca.com
_version_ 1808789364457603072
spelling Pahuena López, Fabio IvánRamírez Carvajal, Diego AlexanderSalazar Álvarez, Juan David2020-01-20T13:21:51Z2020-01-20T13:21:51Z2020-01-17https://hdl.handle.net/20.500.12494/16081Ramírez Carvajal, D. A. y Salazar Alvarez, J. D. Propuesta de modelo de arquitectura distribuida en microservicios para la gestión de prestaciones de salud en la empresa Conexia sede Bogotá Tic en la escuela (tesis de pregrado). Universidad Cooperativa de Colombia, Bogotá.Las aplicaciones monolíticas que conocemos hoy día nacieron en los mainframes; computadoras grandes y potentes capaces de procesar una gran cantidad de datos. Para muchas empresas en el mundo, este ha sido el método tradicional para desarrollar soluciones de software que resuelven problemas en diferentes mercados, las aplicaciones monolíticas se construyen bajo una una sola base de código y se ejecutan en un solo proceso, son fáciles de mantener y desplegar en ambientes productivos. Sin embargo, una vez la aplicación crece la arquitectura comienza a deteriorarse, lo cual no solo impacta en el rendimiento y el consumo de recursos, sino también en el equipo de desarrollo y la entrega continua de valor a los clientes y usuarios. Este trabajo de grado bajo la modalidad de análisis sistemático de literatura de un estudio de caso, propone la implementación de una arquitectura de microservicios para ofrecer una alternativa a las arquitecturas monoliticas.The monolithic applications we know today were born in the mainframes; Large computers and powerful processing modifiers a lot of data. For many companies in the world, this has been the traditional method to develop software solutions that solve problems in different markets, monolithic applications are built under a single code base and run in a single process, are easy to maintain and deploy In productive environments. However, once the application grows, the architecture begins to deteriorate, which not only impacts on performance and resource consumption, but also on the development team and the continuous delivery of value to customers and users. This degree work under the systematic analysis of literature of a case study proposes the implementation of a microservice architecture to offer an alternative to monolithic architectures.Agradecimientos -- Dedicatoria -- 1.CAPITULO I: INTRODUCCIÓN -- 1.1. Planteamiento del problema -- 1.2. Objetivos -- 1.2.1. Objetivo general -- 1.2.2. Objetivos específicos -- 1.3. Justificación -- 2. CAPITULO II: MARCO TEÓRICO -- 2.2. Antecedentes -- 2.3. Marco conceptual -- 2.3.1. Arquitectura de software -- 2.3.2. Microservicios -- 2.3.3. Arquitectura monolítica -- 2.3.4. Spring Framework -- 2.3.5. Base de datos relacional -- 2.3.6. Metodología Ágil -- 2.3.7. Node JS -- 2.3.8. Vue JS -- 2.3.9. Postman -- 2.3.10. Bulma CSS -- 2.3.11. Axios 2.4. Marco Legal -- 3. CAPITULO III: DESARROLLO INGENIERIL -- 3.1. Especificación de requerimientos de la arquitectura -- 3.2. Metodología --3.2.1. Equipo Scrum --3.2.2. Backlog del producto -- 3.2.2.1. Historias de Usuario -- 3.2.3. Definición de Sprint --3.2.4. Eventos de Scrum -- 3.2.4.1. Sprint Planning3.2.4.2. Daily Standup -- 3.2.4.3. Reunión retrospectiva del sprint -- 3.3. Casos de uso -- 3.3.1. Caso de uso usuario línea de frente -- 3.3.2. Caso de uso registro de solicitud de servicios --3.4. Modelo de arquitectura e Infraestructura -- 3.5. Componentes -- 3.5.1. Servidor de configuración -- 3.5.2. Servidor Gateway -- 3.5.3. Servicio de descubrimiento Eureka --3.5.4. Circuit breaker -- 3.5.5. Seguimiento distribuido -- 3.5.6. Capa de servicios -- 3.5.7. Bases de datos -- 3.5.8. Servicios externos -- 3.6. Montaje de componentes -- 3.6.1. Creación de proyectos con Spring Initializer -- 3.7. Dependencias utilizadas -- 3.7.1. Spring Security -- 3.7.2. Spring data JPA -- 3.8. Configuración base de datos PostgreSQL -- 3.9. Montaje de servicio de configuración centralizada -- 3.9.1. Habilitar el servidor de configuración -- 3.9.2. Propiedades de configuración -- 3.9.3. Configuración repositorio Git -- 3.10. Montaje del servicio de descubrimiento -- 3.10.1. Habilitar el servidor de descubrimiento -- 3.10.2. Propiedades de configuración -- 3.11. Montaje del servidor Gateway -- 3.11.1. Habilitar el servidor Gateway -- 3.11.2 Propiedades de configuración -- 3.11.3. Inicializar datos del servicio -- 3.11.4. Implementación de autenticación con JWT -- 3.12. Montaje capa de servicios -- 3.12.1. Inicializar datos del servicio -- 3.12.2. Habilitar microservicio -- 3.12.3. Propiedades de configuración -- 3.13.1. Habilitar el tablero de mando del circuit breaker -- 3.14. Ejecución de los servicios -- 3.14.1. Ejecutar servicio de configuración -- 3.14.2. Ejecutar servidor de descubrimiento -- 3.14.3. Ejecutar servicio Gateway -- 3.14.4. Autenticación de usuarios -- 3.14.5. Ejecutar microservicios -- 3.14.6. Consulta de métodos -- 3.14.7. Tablero de mando del patrón circuit breaker -- 3.15. DISEÑO DEL CLIENTE WEB -- 3.15.1. Login -- 3.15.2. Página de bienvenida -- 3.15.3. Página para cargue de solicitud -- 3.15.4. Registro de la solicitud -- 3.15.5. Ver solicitudes registradas3.16. Comparativo entre arquitecturas --4. CAPITULO IV: CONCLUSIONES -- Bibliografía -- 5. ANEXOS -- 5.1. Guía para creación de proyectos con Spring Initializr --5.1.1. Entorno --5.1.2 Creación del Proyecto -- 5.1.3. Generar artefacto -- 5.1.4. Trabajando en el entorno de desarrollo.diegoa.ramirez@campusucc.edu.cojuan.salazaral@campusucc.edu.coUniversidad Cooperativa de Colombia, Facultad de Ingenierías, Ingeniería de Sistemas, BogotáIngeniería de SistemasBogotáArquitectura de softwareMicroserviciosSpring cloudSoftware architectureMicroservicesSpring cloudPropuesta de modelo de arquitectura distribuida en microservicios para la gestión de prestaciones de salud en la empresa Conexia sede Bogotá.Trabajo de grado - Pregradohttp://purl.org/coar/resource_type/c_7a1finfo:eu-repo/semantics/bachelorThesisinfo:eu-repo/semantics/acceptedVersionAtribución – No comercial – Sin Derivarinfo:eu-repo/semantics/openAccesshttp://purl.org/coar/access_right/c_abf2Amazon Web Services, Inc. (2019). Amazon AWS. Obtenido de https://aws.amazon.com/es/relational-database/Axios. (s.f.). Axios . Obtenido de https://github.com/axios/axiosBlancarte, O. (4 de 12 de 2018). Oscar Blancarte Software Arquitect. Obtenido de https://www.oscarblancarteblog.com/2018/12/04/circuit-breaker-pattern/Clements, P. (1996). A Survey of Architecture Description Languages. Alemania: Carnegie Mellon University.Gabriel, J. &. (2002). Networkworld. Obtenido de https://www.networkworld.esLewis, J. (25 de 03 de 2014). Martin Fowler. Obtenido de https://martinfowler.com/articles/microservices.html#CharacteristicsOfAMicroserviceArchitectureOpenJS Foundation. (22 de 10 de 2019). Node Js. Obtenido de https://nodejs.orgPivotal Software. (2019). Obtenido de https://spring.io/projects/spring-cloud-gatewayPivotal Software. (2019). Spring Cloud Config Server Documentation. Obtenido de https://cloud.spring.io/spring-cloud-config/reference/html/Pivotal Software. (2019). Spring Cloud Netflix Documentation. Obtenido de https://spring.io/projects/spring-cloud-netflixPivotal Software. (09 de 2019). Spring Framework. Obtenido de https://spring.io/projects/spring-frameworkRicharson. (2018). Microservices Patterns. Manning EdSanchéz, L. y. (2003). Metodologías Ágiles en el desarrollo de software. (pág. 1). Alicante: Grupo ISSI.ScrumStudy. (2016). A Guide to the Scrum Body Of Knowledge . Avondale, Arizona: ScrumStudy.You, E. (s.f.). Vue Js. Obtenido de https://vuejs.org/v2/guide/PublicationORIGINAL2020_Propuesta_Arquitectura_Microservicios.pdf2020_Propuesta_Arquitectura_Microservicios.pdfTrabajo de grado completoapplication/pdf1537819https://repository.ucc.edu.co/bitstreams/d8a14a19-9301-4cbc-9230-7f782d072151/download5910cd955a543f917fb745713904f3e0MD512020_Propuesta_Arquitectura_Microservicios-Anexo1.pdf2020_Propuesta_Arquitectura_Microservicios-Anexo1.pdfapplication/pdf141370https://repository.ucc.edu.co/bitstreams/65cd52b6-c6e1-414d-85a2-89bd3547cc2d/download482aa5c95e85681ac2c9b4990bbbe12fMD522020_Propuesta_Arquitectura_Microservicios-FormatoLicenciadeUsoObra.pdf2020_Propuesta_Arquitectura_Microservicios-FormatoLicenciadeUsoObra.pdfLicencia de uso de obraapplication/pdf288265https://repository.ucc.edu.co/bitstreams/745f2852-c99d-482f-bc33-c30539f38aff/download6ccd995a71586ed2a5773fe0056e846eMD53LICENSElicense.txtlicense.txttext/plain; charset=utf-84334https://repository.ucc.edu.co/bitstreams/572f07d2-ae19-4e5b-aff0-29bcaed1cb54/download3bce4f7ab09dfc588f126e1e36e98a45MD54THUMBNAIL2020_Propuesta_Arquitectura_Microservicios.pdf.jpg2020_Propuesta_Arquitectura_Microservicios.pdf.jpgGenerated Thumbnailimage/jpeg2529https://repository.ucc.edu.co/bitstreams/9773c2f9-a707-46bb-a671-d94e9c6b2162/download6598a4c99d27525bb7fd9f8a53b66a55MD552020_Propuesta_Arquitectura_Microservicios-Anexo1.pdf.jpg2020_Propuesta_Arquitectura_Microservicios-Anexo1.pdf.jpgGenerated Thumbnailimage/jpeg4364https://repository.ucc.edu.co/bitstreams/c4647f8a-cc82-4c3b-bf73-562206aa5494/download679487eae8cd1460d1ffcc488337272dMD562020_Propuesta_Arquitectura_Microservicios-FormatoLicenciadeUsoObra.pdf.jpg2020_Propuesta_Arquitectura_Microservicios-FormatoLicenciadeUsoObra.pdf.jpgGenerated Thumbnailimage/jpeg4783https://repository.ucc.edu.co/bitstreams/6708c77d-07b4-48c4-a049-c30027da6bf0/download0cc2da295fe4b8876a4716959d044319MD57TEXT2020_Propuesta_Arquitectura_Microservicios.pdf.txt2020_Propuesta_Arquitectura_Microservicios.pdf.txtExtracted texttext/plain94654https://repository.ucc.edu.co/bitstreams/3824de01-5ada-4f75-9345-478c149d9c82/download47b84146c6b6cb57efbb58cf3565ee22MD582020_Propuesta_Arquitectura_Microservicios-Anexo1.pdf.txt2020_Propuesta_Arquitectura_Microservicios-Anexo1.pdf.txtExtracted texttext/plain2328https://repository.ucc.edu.co/bitstreams/faa185f8-207b-4780-bb16-9b3302effbc1/download1429ba63b6afd7c45a330f23d1328d1dMD592020_Propuesta_Arquitectura_Microservicios-FormatoLicenciadeUsoObra.pdf.txt2020_Propuesta_Arquitectura_Microservicios-FormatoLicenciadeUsoObra.pdf.txtExtracted texttext/plain6https://repository.ucc.edu.co/bitstreams/73571bd9-60f8-4a32-afb1-eb6fd67e0f90/download6d93d3216dc4a7f5df47d4876fbec4d3MD51020.500.12494/16081oai:repository.ucc.edu.co:20.500.12494/160812024-08-10 22:16:46.966open.accesshttps://repository.ucc.edu.coRepositorio Institucional Universidad Cooperativa de Colombiabdigital@metabiblioteca.comVU5JVkVSU0lEQUQgQ09PUEVSQVRJVkEgREUgQ09MT01CSUEKUkVQT1NJVE9SSU9TIElOU1RJVFVDSU9OQUxFUwpMSUNFTkNJQSBERSBVU08KClBvciBtZWRpbyBkZWwgcHJlc2VudGUgZG9jdW1lbnRvLCBlbCBBdXRvcihlcyksIG1heW9yIChlcykgZGUgZWRhZCwgcXVpZW4gZW4gYWRlbGFudGUgc2UgZGVub21pbmFyw6EgZWwgQVVUT1IsIGNvbmZpZXJlIGEgbGEgVU5JVkVSU0lEQUQgQ09PUEVSQVRJVkEgREUgQ09MT01CSUEsIGNvbiBOSVQuIDg2MC0wMjk5MjQtNywgdW5hIExJQ0VOQ0lBIERFIFVTTyBkZSBvYnJhLCBiYWpvIGxhcyBzaWd1aWVudGVzIGNvbmRpY2lvbmVzLgoKQ0zDgVVTVUxBUwoKUFJJTUVSQS4gT2JqZXRvLiBFTCBBVVRPUiBwb3IgZXN0ZSBhY3RvIGF1dG9yaXphIGxhIHV0aWxpemFjacOzbiBkZSBsYSBvYnJhLCBkZSBjb25mb3JtaWRhZCBjb24gbG8gZXN0aXB1bGFkbyBhIGNvbnRpbnVhY2nDs246IAoKKGEpIFBhcmEgZWZlY3RvcyBkZSBsYSBwcmVzZW50ZSBsaWNlbmNpYSBzZSBhdXRvcml6YSBsYSByZXByb2R1Y2Npw7NuIGRlIGxhIG9icmEgYW50ZXJpb3JtZW50ZSBjaXRhZGEsIGxhIGN1YWwgc2UgYWxvamFyw6EgZW4gZm9ybWF0byBkaWdpdGFsIGVuIGxhcyBwbGF0YWZvcm1hcyBvIHJlcG9zaXRvcmlvcyBhZG1pbmlzdHJhZG9zIHBvciBsYSBVTklWRVJTSURBRCBvIGVuIG90cm8gdGlwbyBkZSByZXBvc2l0b3Jpb3MgZXh0ZXJub3MgbyBww6FnaW5hcyB3ZWIgZXNjb2dpZG9zIHBvciBsYSBVTklWRVJTSURBRCwgcGFyYSBmaW5lcyBkZSBkaWZ1c2nDs24geSBkaXZ1bGdhY2nDs24uIEFkaWNpb25hbG1lbnRlLCBzZSBhdXRvcml6YSBhIHF1ZSBsb3MgdXN1YXJpb3MgaW50ZXJub3MgeSBleHRlcm5vcyBkZSBkaWNoYXMgcGxhdGFmb3JtYXMgbyByZXBvc2l0b3Jpb3MgcmVwcm9kdXpjYW4gbyBkZXNjYXJndWVuIGxhIG9icmEsIHNpbiDDoW5pbW8gZGUgbHVjcm8sIHBhcmEgZmluZXMgcHJpdmFkb3MsIGVkdWNhdGl2b3MgbyBhY2Fkw6ltaWNvczsgc2llbXByZSB5IGN1YW5kbyBubyBzZSB2aW9sZW4gYWN1ZXJkb3MgY29uIGVkaXRvcmVzLCBwZXJpb2RvcyBkZSBlbWJhcmdvIG8gYWN1ZXJkb3MgZGUgY29uZmlkZW5jaWFsaWRhZCBxdWUgYXBsaXF1ZW4uCgooYikgU2UgYXV0b3JpemEgbGEgY29tdW5pY2FjacOzbiBww7pibGljYSB5IGxhIHB1ZXN0YSBhIGRpc3Bvc2ljacOzbiBkZSBsYSBvYnJhIG1lbmNpb25hZGEsIGVuIGFjY2VzbyBhYmllcnRvLCBwYXJhIHN1IHV0aWxpemFjacOzbiBlbiBsYXMgcGxhdGFmb3JtYXMgbyByZXBvc2l0b3Jpb3MgYWRtaW5pc3RyYWRvcyBwb3IgbGEgVU5JVkVSU0lEQUQuCgooYykgTG8gYW50ZXJpb3IgZXN0YXLDoSBzdWpldG8gYSBsYXMgZGVmaW5pY2lvbmVzIGNvbnRlbmlkYXMgZW4gbGEgRGVjaXNpw7NuIEFuZGluYSAzNTEgZGUgMTk5MyB5IGxhIExleSAyMyBkZSAxOTgyLgoKClNFR1VOREEuIE9yaWdpbmFsaWRhZCB5IHJlY2xhbWFjaW9uZXMuIEVsIEFVVE9SIGRlY2xhcmEgcXVlIGxhIE9CUkEgZXMgb3JpZ2luYWwgeSBxdWUgZXMgZGUgc3UgY3JlYWNpw7NuIGV4Y2x1c2l2YSwgbm8gZXhpc3RpZW5kbyBpbXBlZGltZW50byBkZSBjdWFscXVpZXIgbmF0dXJhbGV6YSAoZW1iYXJnb3MsIHVzbyBkZSBtYXRlcmlhbCBwcm90ZWdpZG8gcG9yIGRlcmVjaG9zIGRlIGF1dG9yKSBwYXJhIGxhIGNvbmNlc2nDs24gZGUgbG9zIGRlcmVjaG9zIHByZXZpc3RvcyBlbiBlc3RlIGFjdWVyZG8uIEVsIEFVVE9SIHJlc3BvbmRlcsOhIHBvciBjdWFscXVpZXIgYWNjacOzbiBkZSByZWl2aW5kaWNhY2nDs24sIHBsYWdpbyB1IG90cmEgY2xhc2UgZGUgcmVjbGFtYWNpw7NuIHF1ZSBhbCByZXNwZWN0byBwdWRpZXJhIHNvYnJldmVuaXIuCgpURVJDRVJBLiBDb250cmFwcmVzdGFjacOzbi4gRWwgQVVUT1IgYXV0b3JpemEgYSBxdWUgc3Ugb2JyYSBzZWEgdXRpbGl6YWRhIGRlIGNvbmZvcm1pZGFkIGNvbiBsYSBjbMOhdXN1bGEgUFJJTUVSQSBkZSBmb3JtYSBncmF0dWl0YSwgZXMgZGVjaXIsIHF1ZSBsYSB1dGlsaXphY2nDs24gZGUgbGEgbWlzbWEgbm8gZ2VuZXJhIG5pbmfDum4gcGFnbyBvIHJlZ2Fsw61hcyBlbiBmYXZvciBkZSBlc3RlLgoKQ1VBUlRBLiBUaXR1bGFyaWRhZCBkZSBkZXJlY2hvcy4gRWwgcHJlc2VudGUgY29udHJhdG8gbm8gdHJhbnNmaWVyZSBsYSB0aXR1bGFyaWRhZCBkZSBsb3MgZGVyZWNob3MgcGF0cmltb25pYWxlcyBzb2JyZSBsYXMgb2JyYXMgYW50ZXJpb3JtZW50ZSBtZW5jaW9uYWRhcyBhIGxhIFVOSVZFUlNJREFELiDDmm5pY2FtZW50ZSBoYWNlIHJlbGFjacOzbiBhIHVuYSBsaWNlbmNpYSBubyBleGNsdXNpdmEgZW4gbG9zIHTDqXJtaW5vcyB5IGNvbmRpY2lvbmVzIGFudGVyaW9ybWVudGUgcGFjdGFkb3MuCgpRVUlOVEEuIENyw6lkaXRvcy4gTGEgVU5JVkVSU0lEQUQgc2UgY29tcHJvbWV0ZSBhIGRhciBhbCBBVVRPUiwgZWwgcmVjb25vY2ltaWVudG8gZGVudHJvIGNhZGEgZm9ybWEgZGUgdXRpbGl6YWNpw7NuIGVuIGxhIG9icmEuIExvcyBjcsOpZGl0b3MgZGViZW4gZmlndXJhciBlbiBjYWRhIHVubyBkZSBsb3MgZm9ybWF0b3MgbyByZWdpc3Ryb3MgZGUgcHVibGljYWNpw7NuLiBObyBjb25zdGl0dWlyw6EgdW5hIHZpb2xhY2nDs24gYSBsb3MgZGVyZWNob3MgbW9yYWxlcyBkZWwgYXV0b3IgbGEgbm8gcmVwcm9kdWNjacOzbiwgY29tdW5pY2FjacOzbiBvIGRlbcOhcyB1dGlsaXphY2lvbmVzIGRlIGxhIG9icmEuIExhIHV0aWxpemFjacOzbiBvIG5vIGRlIGxhIG9icmEsIGFzw60gY29tbyBzdSBmb3JtYSBkZSB1dGlsaXphY2nDs24gc2Vyw6EgZmFjdWx0YWQgZXhjbHVzaXZhIGRlIGxhIFVOSVZFUlNJREFELgogClNFWFRBLiBEdXJhY2nDs24geSB0ZXJyaXRvcmlvLiBMYSBwcmVzZW50ZSBsaWNlbmNpYSBkZSB1c28gcXVlIHNlIG90b3JnYSBhIGZhdm9yIGRlIGxhIFVOSVZFUlNJREFEIHRlbmRyw6EgdW5hIGR1cmFjacOzbiBlcXVpdmFsZW50ZSBhbCB0w6lybWlubyBkZSBwcm90ZWNjacOzbiBsZWdhbCBkZSBsYSBvYnJhIHkgcGFyYSB0b2RvcyBsb3MgcGHDrXNlcyBkZWwgbXVuZG8uCgpTw4lQVElNQS4gVXNvIGRlIENyZWF0aXZlIENvbW1vbnMuIEVsIEFVVE9SIGF1dG9yaXphcsOhIGxhIGRpZnVzacOzbiBkZSBzdSBjb250ZW5pZG8gYmFqbyB1bmEgbGljZW5jaWEgQ3JlYXRpdmUgQ29tbW9ucyBhdHJpYnVjacOzbiA0LjAgaW50ZXJuYWNpb25hbCwgcXVlIGRlYmVyw6EgaW5jbHVpcnNlIGVuIGVsIGNvbnRlbmlkby4gCgpPQ1RBVkEuIERlcmVjaG8gZGUgZXhjbHVzacOzbi4gQ2FkYSBhdXRvciBwdWVkZSBpbmRpY2FyIGVuIGVsIG1vbWVudG8gZGUgZGVww7NzaXRvIGRlbCBjb250ZW5pZG8gcXVlIGVsIHRleHRvIGNvbXBsZXRvIGRlIGxhIHByb2R1Y2Npw7NuIGFjYWTDqW1pY2EgbyBjaWVudMOtZmljYSBubyBlc3RlIGNvbiBhY2Nlc28gYWJpZXJ0byBlbiBlbCBSZXBvc2l0b3JpbyBJbnN0aXR1Y2lvbmFsIHBvciBtb3Rpdm9zIGRlIGNvbmZpZGVuY2lhbGlkYWQsIHBvcnF1ZSBzZSBlbmN1ZW50cmUgZW4gdsOtYXMgZGUgb2J0ZW5lciB1biBkZXJlY2hvIGRlIHByb3BpZWRhZCBpbmR1c3RyaWFsIG8gZXhpc3RpciBhY3VlcmRvcyBwcmV2aW9zIGNvbiB0ZXJjZXJvcyAoZWRpdG9yaWFsZXMsIHJldmlzdGFzIGNpZW50w61maWNhcywgb3RyYXMgaW5zdGl0dWNpb25lcykuIEVsIGF1dG9yIHNlIGNvbXByb21ldGUgYSBkZXBvc2l0YXIgbG9zIG1ldGFkYXRvcyBlIGluZm9ybWFyIGVsIHRpZW1wbyBkZSBlbWJhcmdvIGR1cmFudGUgZWwgY3VhbCBlbCB0ZXh0byBjb21wbGV0byB0ZW5kcsOhIGFjY2VzbyByZXN0cmluZ2lkby4gCgpOT1ZFTkEuIEVsIEFVVE9SIGFsIGFjZXB0YXIgZXN0YSBsaWNlbmNpYSBhZHVjZSBxdWUgZXN0YSBwcm9kdWNjacOzbiBzZSBkZXNhcnJvbGzDsyBlbiBlbCBwZXJpb2RvIGVuIHF1ZSBzZSBlbmN1ZW50cmEgY29uIHbDrW5jdWxvcyBjb24gTGEgVW5pdmVyc2lkYWQuCgpEw4lDSU1BLiBOb3JtYXMgYXBsaWNhYmxlcy4gUGFyYSBsYSBpbnRlcnByZXRhY2nDs24geSBjdW1wbGltaWVudG8gZGVsIHByZXNlbnRlIGFjdWVyZG8gbGFzIHBhcnRlcyBzZSBzb21ldGVuIGEgbGEgRGVjaXNpw7NuIEFuZGluYSAzNTEgZGUgMTk5MywgbGEgTGV5IDIzIGRlIDE5ODIgeSBkZW3DoXMgbm9ybWFzIGFwbGljYWJsZXMgZGUgQ29sb21iaWEuIEFkZW3DoXMsIGEgbGFzIG5vcm1hcyBJbnN0aXR1Y2lvbmFsZXMgcXVlIGFwbGlxdWVuLgoKTGEgcHJlc2VudGUgbGljZW5jaWEgc2UgYXV0b3JpemEgZW4gbGEgZmVjaGEgZGUgcHVibGljYWNpw7NuIGVuIGxvcyByZXBvc2l0b3Jpb3MgaW5zdGl0dWNpb25hbGVzLgo=