Prototipo generador de código fuente para aplicaciones de servicios. Caso de estudio: proceso de alquiler de libros de una biblioteca

La cuarta revolución industrial ha llevado a una constante evolución tecnológica encaminando a las organizaciones a buscar una continua mejora, adaptando su negocio al mercado moderno y a la competitividad por medio de la innovación, para esto las organizaciones tienen el desafío de crear sistemas,...

Full description

Autores:
Prieto Rodriguez, Camilo Alberto
Madrid Caballero, Diego Alejandro
Tipo de recurso:
Trabajo de grado de pregrado
Fecha de publicación:
2021
Institución:
Universidad Distrital Francisco José de Caldas
Repositorio:
RIUD: repositorio U. Distrital
Idioma:
spa
OAI Identifier:
oai:repository.udistrital.edu.co:11349/29569
Acceso en línea:
http://hdl.handle.net/11349/29569
Palabra clave:
Arquitectura
Estándar
Patrón
Software
Especialización en Ingeniería de Software - Tesis y Disertaciones Académicas
Arquitectura de computadores
Desarrollo de programas para computador
Procesamiento de datos
Architecture
Standard
Pattern
Software
Rights
License
Atribución-NoComercial-SinDerivadas 2.5 Colombia
id UDISTRITA2_56a40f85bc197e1ff1df072d49622383
oai_identifier_str oai:repository.udistrital.edu.co:11349/29569
network_acronym_str UDISTRITA2
network_name_str RIUD: repositorio U. Distrital
repository_id_str
dc.title.spa.fl_str_mv Prototipo generador de código fuente para aplicaciones de servicios. Caso de estudio: proceso de alquiler de libros de una biblioteca
dc.title.titleenglish.spa.fl_str_mv Prototype of a Source Code Generator for Service Applications. Case of Study: Library Rental Process.
title Prototipo generador de código fuente para aplicaciones de servicios. Caso de estudio: proceso de alquiler de libros de una biblioteca
spellingShingle Prototipo generador de código fuente para aplicaciones de servicios. Caso de estudio: proceso de alquiler de libros de una biblioteca
Arquitectura
Estándar
Patrón
Software
Especialización en Ingeniería de Software - Tesis y Disertaciones Académicas
Arquitectura de computadores
Desarrollo de programas para computador
Procesamiento de datos
Architecture
Standard
Pattern
Software
title_short Prototipo generador de código fuente para aplicaciones de servicios. Caso de estudio: proceso de alquiler de libros de una biblioteca
title_full Prototipo generador de código fuente para aplicaciones de servicios. Caso de estudio: proceso de alquiler de libros de una biblioteca
title_fullStr Prototipo generador de código fuente para aplicaciones de servicios. Caso de estudio: proceso de alquiler de libros de una biblioteca
title_full_unstemmed Prototipo generador de código fuente para aplicaciones de servicios. Caso de estudio: proceso de alquiler de libros de una biblioteca
title_sort Prototipo generador de código fuente para aplicaciones de servicios. Caso de estudio: proceso de alquiler de libros de una biblioteca
dc.creator.fl_str_mv Prieto Rodriguez, Camilo Alberto
Madrid Caballero, Diego Alejandro
dc.contributor.advisor.none.fl_str_mv Romero Villalobos, Oswaldo Alberto
dc.contributor.author.none.fl_str_mv Prieto Rodriguez, Camilo Alberto
Madrid Caballero, Diego Alejandro
dc.subject.spa.fl_str_mv Arquitectura
Estándar
Patrón
Software
topic Arquitectura
Estándar
Patrón
Software
Especialización en Ingeniería de Software - Tesis y Disertaciones Académicas
Arquitectura de computadores
Desarrollo de programas para computador
Procesamiento de datos
Architecture
Standard
Pattern
Software
dc.subject.lemb.spa.fl_str_mv Especialización en Ingeniería de Software - Tesis y Disertaciones Académicas
Arquitectura de computadores
Desarrollo de programas para computador
Procesamiento de datos
dc.subject.keyword.spa.fl_str_mv Architecture
Standard
Pattern
Software
description La cuarta revolución industrial ha llevado a una constante evolución tecnológica encaminando a las organizaciones a buscar una continua mejora, adaptando su negocio al mercado moderno y a la competitividad por medio de la innovación, para esto las organizaciones tienen el desafío de crear sistemas, cada vez más grandes y complejos, en corto tiempo y sin sobrepasar los costos. Al contar con diferentes tecnologías y arquitecturas, las organizaciones tienen dificultades para madurar y estandarizar sus procesos de desarrollo de software, debido a esto se invierte una elevada cantidad de tiempo y esfuerzo en los detalles de implementación y en menor medida a otros aspectos relevantes como la calidad y la lógica de negocio. Actualmente, en la industria de desarrollo de software, no se encuentran herramientas capaces de generar una estructura completa de código basada en una arquitectura definida y con implementación de buenas prácticas. Existen herramientas capaces de aportar un código genérico que, si bien promueven una reducción de esfuerzo para el desarrollador, de éste depende la estructura de la arquitectura y la implementación de buenas prácticas y estándares de la organización. En el presente documento se muestra cómo, a través de arquitecturas modernas y la investigación de buenas prácticas de desarrollo, se puede proponer un prototipo de generador de código para Servicios REST a partir del lenguaje de definición de datos. Así mismo, se da especial importancia al proceso de creación del modelo de base de datos, ya que de éste depende, en gran medida, el resultado exitoso del proyecto. Lo anterior, con el fin de apoyar a las organizaciones, en sus diferentes áreas, para la creación de proyectos. Adicionalmente, se expone el proceso de investigación y metodología para ejecutar el proyecto, así como el uso de la arquitectura y las herramientas necesarias para la construcción de los artefactos que la componen.
publishDate 2021
dc.date.created.none.fl_str_mv 2021-11-25
dc.date.accessioned.none.fl_str_mv 2022-07-05T21:20:38Z
dc.date.available.none.fl_str_mv 2022-07-05T21:20:38Z
dc.type.degree.spa.fl_str_mv Monografía
dc.type.driver.spa.fl_str_mv info:eu-repo/semantics/bachelorThesis
dc.type.coar.spa.fl_str_mv http://purl.org/coar/resource_type/c_7a1f
format http://purl.org/coar/resource_type/c_7a1f
dc.identifier.uri.none.fl_str_mv http://hdl.handle.net/11349/29569
url http://hdl.handle.net/11349/29569
dc.language.iso.spa.fl_str_mv spa
language spa
dc.rights.*.fl_str_mv Atribución-NoComercial-SinDerivadas 2.5 Colombia
dc.rights.coar.fl_str_mv http://purl.org/coar/access_right/c_16ec
dc.rights.uri.*.fl_str_mv http://creativecommons.org/licenses/by-nc-nd/2.5/co/
dc.rights.acceso.spa.fl_str_mv Restringido (Solo Referencia)
rights_invalid_str_mv Atribución-NoComercial-SinDerivadas 2.5 Colombia
http://creativecommons.org/licenses/by-nc-nd/2.5/co/
Restringido (Solo Referencia)
http://purl.org/coar/access_right/c_16ec
dc.format.mimetype.spa.fl_str_mv pdf
institution Universidad Distrital Francisco José de Caldas
bitstream.url.fl_str_mv https://repository.udistrital.edu.co/bitstreams/f2388eed-827d-402d-b4aa-f666fdb7f4cc/download
https://repository.udistrital.edu.co/bitstreams/81f384a3-73b9-4213-a063-2e4bf079fc2f/download
https://repository.udistrital.edu.co/bitstreams/d240ddd5-a917-4740-937f-c33d515e918f/download
https://repository.udistrital.edu.co/bitstreams/433fc3df-98f3-48be-afa7-fea06ad81c35/download
https://repository.udistrital.edu.co/bitstreams/0312b9d7-70d9-4967-9297-b03192c52f64/download
https://repository.udistrital.edu.co/bitstreams/0c496706-5d66-49c4-b856-50a31f006307/download
https://repository.udistrital.edu.co/bitstreams/129ee1d4-abb3-415a-b766-7deca980e9c7/download
bitstream.checksum.fl_str_mv 4d8af44ac7c1e7aaa6c37db8894188ee
624e291329de286e530313acb97c6b29
b7057916d076c6b85e31725b6c1851a3
217700a34da79ed616c2feb68d4c5e06
997daf6c648c962d566d7b082dac908d
59bbb55c35b01fd67a5fb744ab306308
50582d5cfcfbcc1e7712a860f4cb1611
bitstream.checksumAlgorithm.fl_str_mv MD5
MD5
MD5
MD5
MD5
MD5
MD5
repository.name.fl_str_mv Repositorio Universidad Distrital
repository.mail.fl_str_mv repositorio@udistrital.edu.co
_version_ 1828165469319725056
spelling Romero Villalobos, Oswaldo AlbertoPrieto Rodriguez, Camilo AlbertoMadrid Caballero, Diego Alejandro2022-07-05T21:20:38Z2022-07-05T21:20:38Z2021-11-25http://hdl.handle.net/11349/29569La cuarta revolución industrial ha llevado a una constante evolución tecnológica encaminando a las organizaciones a buscar una continua mejora, adaptando su negocio al mercado moderno y a la competitividad por medio de la innovación, para esto las organizaciones tienen el desafío de crear sistemas, cada vez más grandes y complejos, en corto tiempo y sin sobrepasar los costos. Al contar con diferentes tecnologías y arquitecturas, las organizaciones tienen dificultades para madurar y estandarizar sus procesos de desarrollo de software, debido a esto se invierte una elevada cantidad de tiempo y esfuerzo en los detalles de implementación y en menor medida a otros aspectos relevantes como la calidad y la lógica de negocio. Actualmente, en la industria de desarrollo de software, no se encuentran herramientas capaces de generar una estructura completa de código basada en una arquitectura definida y con implementación de buenas prácticas. Existen herramientas capaces de aportar un código genérico que, si bien promueven una reducción de esfuerzo para el desarrollador, de éste depende la estructura de la arquitectura y la implementación de buenas prácticas y estándares de la organización. En el presente documento se muestra cómo, a través de arquitecturas modernas y la investigación de buenas prácticas de desarrollo, se puede proponer un prototipo de generador de código para Servicios REST a partir del lenguaje de definición de datos. Así mismo, se da especial importancia al proceso de creación del modelo de base de datos, ya que de éste depende, en gran medida, el resultado exitoso del proyecto. Lo anterior, con el fin de apoyar a las organizaciones, en sus diferentes áreas, para la creación de proyectos. Adicionalmente, se expone el proceso de investigación y metodología para ejecutar el proyecto, así como el uso de la arquitectura y las herramientas necesarias para la construcción de los artefactos que la componen.The fourth industrial revolution has led to a constant technological evolution, leading organizations to look for continuous improvement, adapting their business to the modern market and competitiveness through innovation. Organizations have the challenge of creating bigger and more complex systems in a short time and without exceeding costs. With different technologies and architectures, organizations have difficulty in maturing and standardizing their processes of software development. Due to this, a lot of effort is invested in the details of implementation and, to a lesser extent, in other relevant aspects such as the quality and the logic of the business. Currently, in the software development industry, there are no tools capable of generating a complete code structure based on a defined architecture and with the implementation of best practices. There are tools capable of providing a generic code that, although they save a lot of effort to the developer, it depends on him/her to ensure the correct structure of the architecture and the implementation of best practices and standards of the organization. This document shows how, through modern architectures and research of good development practices, it is possible to propose a prototype code generator for REST Services from data definition language. Likewise, special importance is given to the process of creating the database model, since the successful outcome of the project depends on this to a great extent. The above, in order to support organizations, in their different areas, for the creation of projects. Additionally, the research process and methodology are exposed along with the use of the architecture and the tools necessary for the construction of the artifacts that compose it.pdfspaAtribución-NoComercial-SinDerivadas 2.5 Colombiahttp://creativecommons.org/licenses/by-nc-nd/2.5/co/Restringido (Solo Referencia)http://purl.org/coar/access_right/c_16ecArquitecturaEstándarPatrónSoftwareEspecialización en Ingeniería de Software - Tesis y Disertaciones AcadémicasArquitectura de computadoresDesarrollo de programas para computadorProcesamiento de datosArchitectureStandardPatternSoftwarePrototipo generador de código fuente para aplicaciones de servicios. Caso de estudio: proceso de alquiler de libros de una bibliotecaPrototype of a Source Code Generator for Service Applications. Case of Study: Library Rental Process.Monografíainfo:eu-repo/semantics/bachelorThesishttp://purl.org/coar/resource_type/c_7a1fORIGINALPrietoRodriguezCamiloAlberto2021.pdfPrietoRodriguezCamiloAlberto2021.pdfapplication/pdf9277949https://repository.udistrital.edu.co/bitstreams/f2388eed-827d-402d-b4aa-f666fdb7f4cc/download4d8af44ac7c1e7aaa6c37db8894188eeMD51PrietoRodriguezCamiloAlberto2021Anexos.zipPrietoRodriguezCamiloAlberto2021Anexos.zipapplication/zip12578791https://repository.udistrital.edu.co/bitstreams/81f384a3-73b9-4213-a063-2e4bf079fc2f/download624e291329de286e530313acb97c6b29MD52Licencia de uso y publicacion.pdfLicencia de uso y publicacion.pdfapplication/pdf275103https://repository.udistrital.edu.co/bitstreams/d240ddd5-a917-4740-937f-c33d515e918f/downloadb7057916d076c6b85e31725b6c1851a3MD53CC-LICENSElicense_rdflicense_rdfapplication/rdf+xml; charset=utf-8811https://repository.udistrital.edu.co/bitstreams/433fc3df-98f3-48be-afa7-fea06ad81c35/download217700a34da79ed616c2feb68d4c5e06MD54LICENSElicense.txtlicense.txttext/plain; charset=utf-87167https://repository.udistrital.edu.co/bitstreams/0312b9d7-70d9-4967-9297-b03192c52f64/download997daf6c648c962d566d7b082dac908dMD55THUMBNAILPrietoRodriguezCamiloAlberto2021.pdf.jpgPrietoRodriguezCamiloAlberto2021.pdf.jpgIM Thumbnailimage/jpeg6600https://repository.udistrital.edu.co/bitstreams/0c496706-5d66-49c4-b856-50a31f006307/download59bbb55c35b01fd67a5fb744ab306308MD56Licencia de uso y publicacion.pdf.jpgLicencia de uso y publicacion.pdf.jpgIM Thumbnailimage/jpeg13324https://repository.udistrital.edu.co/bitstreams/129ee1d4-abb3-415a-b766-7deca980e9c7/download50582d5cfcfbcc1e7712a860f4cb1611MD5711349/29569oai:repository.udistrital.edu.co:11349/295692023-06-13 14:59:05.027http://creativecommons.org/licenses/by-nc-nd/2.5/co/Atribución-NoComercial-SinDerivadas 2.5 Colombiaopen.accesshttps://repository.udistrital.edu.coRepositorio Universidad Distritalrepositorio@udistrital.edu.coTElDRU5DSUEgWSBBVVRPUklaQUNJw5NOIEVTUEVDSUFMIFBBUkEgUFVCTElDQVIgWSBQRVJNSVRJUiBMQSBDT05TVUxUQSBZIFVTTyBERSBDT05URU5JRE9TIEVOIEVMIFJFUE9TSVRPUklPIElOU1RJVFVDSU9OQUwgREUgTEEgVU5JVkVSU0lEQUQgRElTVFJJVEFMCgpUw6lybWlub3MgeSBjb25kaWNpb25lcyBkZSB1c28gcGFyYSBwdWJsaWNhY2nDs24gZGUgb2JyYXMgZW4gZWwgUmVwb3NpdG9yaW8gSW5zdGl0dWNpb25hbCBkZSBsYSBVbml2ZXJzaWRhZCBEaXN0cml0YWwgRnJhbmNpc2NvIEpvc8OpIGRlIENhbGRhcyAoUklVRCkKCkNvbW8gdGl0dWxhcihlcykgZGVsKG9zKSBkZXJlY2hvKHMpIGRlIGF1dG9yLCBjb25maWVybyAoZXJpbW9zKSBhIGxhIFVuaXZlcnNpZGFkIERpc3RyaXRhbCBGcmFuY2lzY28gSm9zw6kgZGUgQ2FsZGFzIChlbiBhZGVsYW50ZSwgTEEgVU5JVkVSU0lEQUQpIHVuYSBsaWNlbmNpYSBwYXJhIHVzbyBubyBleGNsdXNpdmEsIGxpbWl0YWRhIHkgZ3JhdHVpdGEgc29icmUgbGEgb2JyYSBxdWUgaW50ZWdyYXLDoSBlbCBSZXBvc2l0b3JpbyBJbnN0aXR1Y2lvbmFsIChlbiBhZGVsYW50ZSwgUklVRCksIGRlIGFjdWVyZG8gYSBsYXMgc2lndWllbnRlcyByZWdsYXMsIGxhcyBjdWFsZXMgZGVjbGFybyAoYW1vcykgY29ub2NlciB5IGFjZXB0YXI6CgphKQlFc3RhcsOhIHZpZ2VudGUgYSBwYXJ0aXIgZGUgbGEgZmVjaGEgZW4gcXVlIHNlIGluY2x1eWEgZW4gZWwgUklVRCB5IGhhc3RhIHBvciB1biBwbGF6byBkZSBkaWV6ICgxMCkgQcOxb3MsIHByb3Jyb2dhYmxlIGluZGVmaW5pZGFtZW50ZSBwb3IgZWwgdGllbXBvIHF1ZSBkdXJlIGVsIGRlcmVjaG8gUGF0cmltb25pYWwgZGVsIGF1dG9yOyBsYSBjdWFsIHBvZHLDoSBkYXJzZSBwb3IgdGVybWluYWRhIHByZXZpYSBzb2xpY2l0dWQgYSBMQSBVTklWRVJTSURBRCBwb3IgZXNjcml0byBjb24gdW5hIGFudGVsYWNpw7NuIGRlIGRvcyAoMikgbWVzZXMgYW50ZXMgZGVsIHZlbmNpbWllbnRvIGRlbCBwbGF6byBpbmljaWFsIG8gZWwgZGUgc3UocykgcHLDs3Jyb2dhKHMpLgoKYikJTEEgVU5JVkVSU0lEQUQgcG9kcsOhIHB1YmxpY2FyIGxhIG9icmEgZW4gbGFzIGRpc3RpbnRhcyB2ZXJzaW9uZXMgcmVxdWVyaWRhcyBwb3IgZWwgUklVRCAoZGlnaXRhbCwgaW1wcmVzbywgZWxlY3Ryw7NuaWNvIHUgb3RybyBtZWRpbyBjb25vY2lkbyBvIHBvciBjb25vY2VyKSBMQSBVTklWRVJTSURBRCBubyBzZXLDoSByZXNwb25zYWJsZSBlbiBlbCBldmVudG8gcXVlIGVsIGRvY3VtZW50byBhcGFyZXpjYSByZWZlcmVuY2lhZG8gZW4gbW90b3JlcyBkZSBiw7pzcXVlZGEgbyByZXBvc2l0b3Jpb3MgZGlmZXJlbnRlcyBhbCBSSVVELCB1bmEgdmV6IGVsKG9zKSBhdXRvcihlcykgc29saWNpdGVuIHN1IGVsaW1pbmFjacOzbiBkZWwgUklVRCwgZGFkbyBxdWUgbGEgbWlzbWEgc2Vyw6EgcHVibGljYWRhIGVuIEludGVybmV0LgoKYykJTGEgYXV0b3JpemFjacOzbiBzZSBoYWNlIGEgdMOtdHVsbyBncmF0dWl0bywgcG9yIGxvIHRhbnRvLCBsb3MgYXV0b3JlcyByZW51bmNpYW4gYSByZWNpYmlyIGJlbmVmaWNpbyBhbGd1bm8gcG9yIGxhIHB1YmxpY2FjacOzbiwgZGlzdHJpYnVjacOzbiwgY29tdW5pY2FjacOzbiBww7pibGljYSB5IGN1YWxxdWllciBvdHJvIHVzbyBxdWUgc2UgaGFnYSBlbiBsb3MgdMOpcm1pbm9zIGRlIGxhIHByZXNlbnRlIGxpY2VuY2lhIHkgZGUgbGEgbGljZW5jaWEgZGUgdXNvIGNvbiBxdWUgc2UgcHVibGljYSAoQ3JlYXRpdmUgQ29tbW9ucykuCgpkKQlMb3MgY29udGVuaWRvcyBwdWJsaWNhZG9zIGVuIGVsIFJJVUQgc29uIG9icmEocykgb3JpZ2luYWwoZXMpIHNvYnJlIGxhIGN1YWwoZXMpIGVsKG9zKSBhdXRvcihlcykgY29tbyB0aXR1bGFyZXMgZGUgbG9zIGRlcmVjaG9zIGRlIGF1dG9yLCBhc3VtZW4gdG90YWwgcmVzcG9uc2FiaWxpZGFkIHBvciBlbCBjb250ZW5pZG8gZGUgc3Ugb2JyYSBhbnRlIExBIFVOSVZFUlNJREFEIHkgYW50ZSB0ZXJjZXJvcy4gRW4gdG9kbyBjYXNvIExBIFVOSVZFUlNJREFEIHNlIGNvbXByb21ldGUgYSBpbmRpY2FyIHNpZW1wcmUgbGEgYXV0b3LDrWEgaW5jbHV5ZW5kbyBlbCBub21icmUgZGVsIGF1dG9yIHkgbGEgZmVjaGEgZGUgcHVibGljYWNpw7NuLgoKZSkJTEEgVU5JVkVSU0lEQUQgcG9kcsOhIGluY2x1aXIgbGEgb2JyYSBlbiBsb3Mgw61uZGljZXMgeSBidXNjYWRvcmVzIHF1ZSBlc3RpbWVuIG5lY2VzYXJpb3MgcGFyYSBtYXhpbWl6YXIgbGEgdmlzaWJpbGlkYWQgZWwgdXNvIHkgZWwgaW1wYWN0byBkZSBsYSBwcm9kdWNjacOzbiBjaWVudMOtZmljYSwgYXJ0w61zdGljYSB5IGFjYWTDqW1pY2EgZW4gbGEgY29tdW5pZGFkIGxvY2FsLCBuYWNpb25hbCBvIGludGVybmFjaW9uYWwuCgoKZikJTEEgVU5JVkVSU0lEQUQgcG9kcsOhIGNvbnZlcnRpciBsYSBvYnJhIGEgY3VhbHF1aWVyIG1lZGlvIG8gZm9ybWF0byBjb24gZWwgZmluIGRlIHN1IHByZXNlcnZhY2nDs24gZW4gZWwgdGllbXBvIHF1ZSBsYSBwcmVzZW50ZSBsaWNlbmNpYSB5IGxhIGRlIHN1cyBwcsOzcnJvZ2FzLgoKCkNvbiBiYXNlIGVuIGxvIGFudGVyaW9yIGF1dG9yaXpvKGFtb3MpLCBhIGZhdm9yIGRlbCBSSVVEIHkgZGUgc3VzIHVzdWFyaW9zLCBsYSBwdWJsaWNhY2nDs24geSBjb25zdWx0YSBkZSBsYSBzaWd1aWVudGUgb2JyYToKClRpdHVsbwoKQXV0b3IgICAgICAgQXBlbGxpZG9zICAgICAgICAgTm9tYnJlcwoKMQoKMgoKMwoKCmcpCUF1dG9yaXpvKGFtb3MpLCBxdWUgbGEgb2JyYSBzZWEgcHVlc3RhIGEgZGlzcG9zaWNpw7NuIGRlbCBww7pibGljbyBlbiBsb3MgdMOpcm1pbm9zIGVzdGFibGVjaWRvcyBlbiBsb3MgbGl0ZXJhbGVzIGFudGVyaW9yZXMsIGJham8gbG9zIGzDrW1pdGVzIGRlZmluaWRvcyBwb3IgTEEgVU5JVkVSU0lEQUQsIGVuIGxhcyDigJxDb25kaWNpb25lcyBkZSB1c28gZGUgZXN0cmljdG8gY3VtcGxpbWllbnRv4oCdIGRlIGxvcyByZWN1cnNvcyBwdWJsaWNhZG9zIGVuIGVsIFJJVUQsIGN1eW8gdGV4dG8gY29tcGxldG8gc2UgcHVlZGUgY29uc3VsdGFyIGVuIGh0dHA6Ly9yZXBvc2l0b3J5LnVkaXN0cml0YWwuZWR1LmNvLwoKaCkJQ29ub3pjbyhjZW1vcykgeSBhY2VwdG8oYW1vcykgcXVlIG90b3JnbyhhbW9zKSB1bmEgbGljZW5jaWEgZXNwZWNpYWwgcGFyYSBwdWJsaWNhY2nDs24gZGUgb2JyYXMgZW4gZWwgUmVwb3NpdG9yaW8gSW5zdGl0dWNpb25hbCBkZSBsYSBVbml2ZXJzaWRhZCBEaXN0cml0YWwgRnJhbmNpc2NvIEpvc8OpIGRlIENhbGRhcywgbGljZW5jaWEgICBkZSBsYSBjdWFsIGhlIChoZW1vcykgb2J0ZW5pZG8gdW5hIGNvcGlhLgoKaSkJTWFuaWZpZXN0byhhbW9zKSBtaSAobnVlc3RybykgdG90YWwgYWN1ZXJkbyBjb24gbGFzIGNvbmRpY2lvbmVzIGRlIHVzbyB5IHB1YmxpY2FjacOzbiBlbiBlbCBSZXBvc2l0b3JpbyBJbnN0aXR1Y2lvbmFsIGRlIGxhIFVuaXZlcnNpZGFkIERpc3RyaXRhbCBGcmFuY2lzY28gSm9zw6kgZGUgQ2FsZGFzIHF1ZSBzZSBkZXNjcmliZW4geSBleHBsaWNhbiBlbiBlbCBwcmVzZW50ZSBkb2N1bWVudG8uCgpqKQlDb25vemNvKGNlbW9zKSBsYSBub3JtYXRpdmlkYWQgaW50ZXJuYSBkZSAgTEEgVU5JVkVSU0lEQUQ7IGVuIGNvbmNyZXRvLCBlbCBBY3VlcmRvIDAwNCBkZSAyMDEyIGRlbCBDU1UsIEFjdWVyZG8gMDIzIGRlIDIwMTIgZGVsIENTVSBzb2JyZSBQb2zDrXRpY2EgRWRpdG9yaWFsLCBBY3VlcmRvIDAyNiAgZGVsIDMxIGRlIGp1bGlvIGRlIDIwMTIgc29icmUgZWwgcHJvY2VkaW1pZW50byBwYXJhIGxhIHB1YmxpY2FjacOzbiBkZSB0ZXNpcyBkZSBwb3N0Z3JhZG8gZGUgbG9zIGVzdHVkaWFudGVzIGRlIGxhIFVuaXZlcnNpZGFkIERpc3RyaXRhbCBGcmFuY2lzY28gSm9zw6kgZGUgQ2FsZGFzLCAgQWN1ZXJkbyAwMzAgZGVsIDAzIGRlIGRpY2llbWJyZSBkZSAyMDEzIHBvciBtZWRpbyBkZWwgY3VhbCBzZSBjcmVhIGVsIFJlcG9zaXRvcmlvIEluc3RpdHVjaW9uYWwgZGUgbGEgVW5pdmVyc2lkYWQgRGlzdHJpdGFsIEZyYW5jaXNjbyBKb3PDqSBkZSBDYWxkYXMsIEFjdWVyZG8gMDM4IGRlIDIwMTUgMjAxNSDigJxwb3IgZWwgY3VhbCBzZSBtb2RpZmljYSBlbCBBY3VlcmRvIDAzMSBkZSAyMDE0IGRlIDIwMTQgcXVlIHJlZ2xhbWVudGEgZWwgdHJhYmFqbyBkZSBncmFkbyBwYXJhIGxvcyBlc3R1ZGlhbnRlcyBkZSBwcmVncmFkbyBkZSBsYSBVbml2ZXJzaWRhZCBEaXN0cml0YWwgRnJhbmNpc2NvIEpvc8OpIGRlIENhbGRhcyB5IHNlIGRpY3RhbiBvdHJhcyBkaXJlY3RyaWNlc+KAnSB5IGxhcyBkZW3DoXMgbm9ybWFzIGNvbmNvcmRhbnRlIHkgY29tcGxlbWVudGFyaWFzIHF1ZSByaWdlbiBhbCByZXNwZWN0bywgZXNwZWNpYWxtZW50ZSBsYSBsZXkgMjMgZGUgMTk4MiwgbGEgbGV5IDQ0IGRlIDE5OTMgeSBsYSBkZWNpc2nDs24gQW5kaW5hIDM1MSBkZSAxOTkzLiBFc3RvcyBkb2N1bWVudG9zIHBvZHLDoW4gc2VyIGNvbnN1bHRhZG9zIHkgZGVzY2FyZ2Fkb3MgZW4gZWwgcG9ydGFsIHdlYiBkZSBsYSBiaWJsaW90ZWNhIGh0dHA6Ly9zaXN0ZW1hZGViaWJsaW90ZWNhcy51ZGlzdHJpdGFsLmVkdS5jby8KCmspCUFjZXB0byhhbW9zKSBxdWUgTEEgVU5JVkVSU0lEQUQgbm8gc2UgcmVzcG9uc2FiaWxpemEgcG9yIGxhcyBpbmZyYWNjaW9uZXMgYSBsYSBwcm9waWVkYWQgaW50ZWxlY3R1YWwgbyBEZXJlY2hvcyBkZSBBdXRvciBjYXVzYWRhcyBwb3IgbG9zIHRpdHVsYXJlcyBkZSBsYSBwcmVzZW50ZSBMaWNlbmNpYSB5IGRlY2xhcmFtb3MgcXVlIG1hbnRlbmRyw6kgKGVtb3MpIGluZGVtbmUgYSBMQSBVTklWRVJTSURBRCBwb3IgbGFzIHJlY2xhbWFjaW9uZXMgbGVnYWxlcyBkZSBjdWFscXVpZXIgdGlwbyBxdWUgbGxlZ2FyZW4gYSBwcmVzZW50YXJzZSBwb3IgdmlvbGFjacOzbiBkZSBkZXJlY2hvcyBhIGxhIHByb3BpZWRhZCBpbnRlbGVjdHVhbCBvIGRlIEF1dG9yIHJlbGFjaW9uYWRvcyBjb24gbG9zIGRvY3VtZW50b3MgcmVnaXN0cmFkb3MgZW4gZWwgUklVRC4KCmwpCUVsIChsb3MpIGF1dG9yKGVzKSBtYW5pZmllc3RhKG1vcykgcXVlIGxhIG9icmEgb2JqZXRvIGRlIGxhIHByZXNlbnRlIGF1dG9yaXphY2nDs24gZXMgb3JpZ2luYWwsIGRlIGV4Y2x1c2l2YSBhdXRvcsOtYSwgeSBzZSByZWFsaXrDsyBzaW4gdmlvbGFyIG8gdXN1cnBhciBkZXJlY2hvcyBkZSBhdXRvciBkZSB0ZXJjZXJvczsgZGUgdGFsIHN1ZXJ0ZSwgZW4gY2FzbyBkZSBwcmVzZW50YXJzZSBjdWFscXVpZXIgcmVjbGFtYWNpw7NuIG8gYWNjacOzbiBwb3IgcGFydGUgZGUgdW4gdGVyY2VybyBlbiBjdWFudG8gYSBsb3MgZGVyZWNob3MgZGUgYXV0b3Igc29icmUgbGEgb2JyYSwgZWwgKGxvcykgZXN0dWRpYW50ZShzKSDigJMgYXV0b3IoZXMpIGFzdW1pcsOhKG4pIHRvZGEgbGEgcmVzcG9uc2FiaWxpZGFkIHkgc2FsZHLDoShuKSBlbiBkZWZlbnNhIGRlIGxvcyBkZXJlY2hvcyBhcXXDrSBhdXRvcml6YWRvcy4gUGFyYSB0b2RvcyBsb3MgZWZlY3RvcywgTEEgVU5JVkVSU0lEQUQgYWN0w7phIGNvbW8gdW4gdGVyY2VybyBkZSBidWVuYSBmZS4KCgptKQlFbCAobG9zKSBhdXRvcihlcykgbWFuaWZpZXN0YShtb3MpIHF1ZSBjb25vemNvKGNlbW9zKSBsYSBhdXRvbm9tw61hIHkgbG9zIGRlcmVjaG9zLCBxdWUgcG9zZWUobW9zKSBzb2JyZSBsYSBvYnJhIHksIGNvbW8gdGFsLCBlcyAoc29tb3MpIHJlc3BvbnNhYmxlKHMpIGRlbCBhbGNhbmNlIGp1csOtZGljbyB5IGxlZ2FsLCBkZSBlc2NvZ2VyIGxhIG9wY2nDs24gZGUgbGEgcHVibGljYWNpw7NuIG8gZGUgcmVzdHJpY2Npw7NuIGRlIGxhIHB1YmxpY2FjacOzbiBkZWwgZG9jdW1lbnRvIHJlZ2lzdHJhZG8gZW4gZWwgUklVRC4KCgoKCgoKU0kgRUwgRE9DVU1FTlRPIFNFIEJBU0EgRU4gVU4gVFJBQkFKTyBRVUUgSEEgU0lETyBQQVRST0NJTkFETyBPIEFQT1lBRE8gUE9SIFVOQSBBR0VOQ0lBIE8gVU5BIE9SR0FOSVpBQ0nDk04sIENPTiBFWENFUENJw5NOIERFIExBIFVOSVZFUlNJREFEIERJU1RSSVRBTCBGUkFOQ0lTQ08gSk9TRSBERSBDQUxEQVMsIExPUyBBVVRPUkVTIEdBUkFOVElaQU4gUVVFIFNFIEhBIENVTVBMSURPIENPTiBMT1MKREVSRUNIT1MgWSBPQkxJR0FDSU9ORVMgUkVRVUVSSURPUyBQT1IgRUwgUkVTUEVDVElWTyBDT05UUkFUTyBPIEFDVUVSRE8uCgoKCgoKCgoKCgoKCgoKCgoKCgoKCkVuIGNvbnN0YW5jaWEgZGUgbG8gYW50ZXJpb3IsIGZpcm1vKGFtb3MpIGVsIHByZXNlbnRlIGRvY3VtZW50bywgZW4gbGEgY2l1ZGFkIGRlIEJvZ290w6EsIEQuQy4sIGEgbG9zCgoKRklSTUEgREUgTE9TIFRJVFVMQVJFUyBERSBERVJFQ0hPUyBERSBBVVRPUgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fICAgQy5DLiBOby4gX19fX19fX19fX19fX19fX19fCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18gICBDLkMuIE5vLiBfX19fX19fX19fX19fX19fX18KCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXyAgIEMuQy4gTm8uIF9fX19fX19fX19fX19fX19fXwoKCgpDb3JyZW8gRWxlY3Ryw7NuaWNvIEluc3RpdHVjaW9uYWwgZGVsIChkZSBsb3MpIEF1dG9yKGVzKToKCkF1dG9yCSAgICAgIENvcnJlbyBFbGVjdHLDs25pY28KCjEKCjIKCjMKCk5vbWJyZSBkZSBEaXJlY3RvcihlcykgZGUgR3JhZG86CgoxCgoyCgozCgpOb21icmUgRmFjdWx0YWQgeSBQcm95ZWN0byBDdXJyaWN1bGFyOgoKRmFjdWx0YWQJUHJveWVjdG8gQ3VycmljdWxhcgoKCgoKCgoKCk5vdGE6IEVuIGNhc28gcXVlIG5vIGVzdMOpIGRlIGFjdWVyZG8gY29uIGxhcyBjb25kaWNpb25lcyBkZSBsYSBwcmVzZW50ZSBsaWNlbmNpYSwgeSBtYW5pZmllc3RlIGFsZ3VuYSByZXN0cmljY2nDs24gc29icmUgbGEgb2JyYSwganVzdGlmaXF1ZSBsb3MgbW90aXZvcyBwb3IgbG9zIGN1YWxlcyBlbCBkb2N1bWVudG8geSBzdXMgYW5leG9zIG5vIHB1ZWRlbiBzZXIgcHVibGljYWRvcyBlbiBlbCBSZXBvc2l0b3JpbyBJbnN0aXR1Y2lvbmFsIGRlIGxhIFVuaXZlcnNpZGFkIERpc3RyaXRhbCBGcmFuY2lzY28gSm9zw6kgZGUgQ2FsZGFzIFJJVUQuCgoKU2kgcmVxdWllcmUgbcOhcyBlc3BhY2lvLCBwdWVkZSBhbmV4YXIgdW5hIGNvcGlhIHNpbWlsYXIgYSBlc3RhIGhvamEK