Inclusión al proyecto Aixt de una placa de la marca Sipeed de la serie M0sense para la transcompilación de su código fuente desde un lenguaje basado en V a lenguaje C
El proyecto Aixt es una estructura de programación para microcontroladores que utiliza una sintaxis de lenguaje moderno y se centra en dispositivos de bajos recursos. Dicho proyecto está compuesto por 3 componentes principales: El lenguaje de programación Aixt basado en la sintaxis del lenguaje V [1...
- Autores:
-
Gracia Ovalle , Yahir Eduardo
- Tipo de recurso:
- Trabajo de grado de pregrado
- Fecha de publicación:
- 2024
- Institución:
- Universidad Distrital Francisco José de Caldas
- Repositorio:
- RIUD: repositorio U. Distrital
- Idioma:
- spa
- OAI Identifier:
- oai:repository.udistrital.edu.co:11349/93307
- Acceso en línea:
- http://hdl.handle.net/11349/93307
- Palabra clave:
- Sipeed
M0sense
Lenguaje C
Transcompilador
Compilador
Ingeniería Eléctrica por Ciclos Propedéuticos -- Tesis y disertaciones académicas
Microcontroladores en IoT
Proyecto Aixt
Lenguaje de Programación Aixt
Sipeed
M0sense
C language
Transcompiler
Compiler
- Rights
- License
- Abierto (Texto Completo)
id |
UDISTRITA2_2910f28d001792d70d5a8895cea47e28 |
---|---|
oai_identifier_str |
oai:repository.udistrital.edu.co:11349/93307 |
network_acronym_str |
UDISTRITA2 |
network_name_str |
RIUD: repositorio U. Distrital |
repository_id_str |
|
dc.title.none.fl_str_mv |
Inclusión al proyecto Aixt de una placa de la marca Sipeed de la serie M0sense para la transcompilación de su código fuente desde un lenguaje basado en V a lenguaje C |
dc.title.titleenglish.none.fl_str_mv |
Inclusion in the Aixt project of a Sipeed board of the M0sense series for the transcompilation of its source code from a V-based language to C language. |
title |
Inclusión al proyecto Aixt de una placa de la marca Sipeed de la serie M0sense para la transcompilación de su código fuente desde un lenguaje basado en V a lenguaje C |
spellingShingle |
Inclusión al proyecto Aixt de una placa de la marca Sipeed de la serie M0sense para la transcompilación de su código fuente desde un lenguaje basado en V a lenguaje C Sipeed M0sense Lenguaje C Transcompilador Compilador Ingeniería Eléctrica por Ciclos Propedéuticos -- Tesis y disertaciones académicas Microcontroladores en IoT Proyecto Aixt Lenguaje de Programación Aixt Sipeed M0sense C language Transcompiler Compiler |
title_short |
Inclusión al proyecto Aixt de una placa de la marca Sipeed de la serie M0sense para la transcompilación de su código fuente desde un lenguaje basado en V a lenguaje C |
title_full |
Inclusión al proyecto Aixt de una placa de la marca Sipeed de la serie M0sense para la transcompilación de su código fuente desde un lenguaje basado en V a lenguaje C |
title_fullStr |
Inclusión al proyecto Aixt de una placa de la marca Sipeed de la serie M0sense para la transcompilación de su código fuente desde un lenguaje basado en V a lenguaje C |
title_full_unstemmed |
Inclusión al proyecto Aixt de una placa de la marca Sipeed de la serie M0sense para la transcompilación de su código fuente desde un lenguaje basado en V a lenguaje C |
title_sort |
Inclusión al proyecto Aixt de una placa de la marca Sipeed de la serie M0sense para la transcompilación de su código fuente desde un lenguaje basado en V a lenguaje C |
dc.creator.fl_str_mv |
Gracia Ovalle , Yahir Eduardo |
dc.contributor.advisor.none.fl_str_mv |
Martínez Santa, Fernando |
dc.contributor.author.none.fl_str_mv |
Gracia Ovalle , Yahir Eduardo |
dc.contributor.orcid.none.fl_str_mv |
Martínez Santa, Fernando [0000-0001-6309-2908] |
dc.subject.none.fl_str_mv |
Sipeed M0sense Lenguaje C Transcompilador Compilador |
topic |
Sipeed M0sense Lenguaje C Transcompilador Compilador Ingeniería Eléctrica por Ciclos Propedéuticos -- Tesis y disertaciones académicas Microcontroladores en IoT Proyecto Aixt Lenguaje de Programación Aixt Sipeed M0sense C language Transcompiler Compiler |
dc.subject.lemb.none.fl_str_mv |
Ingeniería Eléctrica por Ciclos Propedéuticos -- Tesis y disertaciones académicas Microcontroladores en IoT Proyecto Aixt Lenguaje de Programación Aixt |
dc.subject.keyword.none.fl_str_mv |
Sipeed M0sense C language Transcompiler Compiler |
description |
El proyecto Aixt es una estructura de programación para microcontroladores que utiliza una sintaxis de lenguaje moderno y se centra en dispositivos de bajos recursos. Dicho proyecto está compuesto por 3 componentes principales: El lenguaje de programación Aixt basado en la sintaxis del lenguaje V [1], El transcompilador de Aixt a C, que traduce el código fuente de lenguaje Aixt a lenguaje C para el compilador de C nativo específico de cada microcontrolador y la API (Application Programming Interface) de Aixt, que facilita la programación al estandarizar para todos una placa soportados la configuración y las funciones de entrada y salida de datos [2]. El lenguaje Aixt se puede considerar como un subconjunto del lenguaje V, implementando gran parte de su sintaxis, pero dejando fuera las características de programación que serían costosas de implementar en microcontroladores en términos de espacio de memoria. La idea del proyecto Aixt nació, en el 2022 con las pretensiones del proyecto Sokae [3] de establecer un punto medio entre las estructura de programación y lenguaje de los proyectos Arduino (Basado en C) [4] y Microphyton (basado en Python) [5], “la estructura de programación está compuesta de tres componentes principales: un lenguaje basado en la sintaxis de Rust, un transcopilador que convierte el código fuente escrito en Rust a lenguaje C, y una API.” [6]. A diferencia del proyecto Sokae que usa como base el lenguaje de programación Rust, el proyecto Aixt usa el lenguaje V el cual tiene una sintaxis más sencilla y por está más acorde con el enfoque minimalista del proyecto. Este proyecto abordará una importante necesidad en el mercado tecnológico, debido a que actualmente existe una gran demanda de soluciones que permitan la migración de aplicaciones de un lenguaje a otro de manera eficiente y efectiva. El proyecto consistirá en darle soporte a la serie de una placa M0sense para integrarse al proyecto Aixt, esto se realizará implementando una API en C incluyendo las funciones básicas de funcionamiento de una placa soportadas por el proyecto Aixt y un archivo de configuración que permita al transcompilador hacer una traducción efectiva entre los dos lenguajes. El proyecto permitirá realizar código fuente en lenguaje Aixt que sea correctamente compilado a la serie PIC16F de manera automática, sin tener que realizar cambios manuales que puedan resultar tediosos y costosos en términos de tiempo y recursos. Aixt está optimizado para funcionar eficientemente en dispositivos con recursos limitados como los es una placa de la serie M0sense, lo que lo hace adecuado para aplicaciones que requieren una solución eficiente en términos de recursos. Este proyecto representa una oportunidad de aplicar conocimientos y habilidades adquiridos durante la formación en Ingeniería Eléctrica y contribuirá con soluciones innovadoras al mercado tecnológico. Se ha planificado que el presente proyecto sea desarrollado en un máximo de 4 meses y para ello se han asignado un total de 384 horas de trabajo para esta pasantía. Este tiempo se distribuirá de manera eficiente para lograr los objetivos propuestos dentro del plazo establecido. |
publishDate |
2024 |
dc.date.created.none.fl_str_mv |
2024-11-06 |
dc.date.accessioned.none.fl_str_mv |
2025-03-05T21:09:04Z |
dc.date.available.none.fl_str_mv |
2025-03-05T21:09:04Z |
dc.type.none.fl_str_mv |
bachelorThesis |
dc.type.degree.none.fl_str_mv |
Pasantía |
dc.type.driver.none.fl_str_mv |
info:eu-repo/semantics/bachelorThesis |
dc.type.coar.none.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/93307 |
url |
http://hdl.handle.net/11349/93307 |
dc.language.iso.none.fl_str_mv |
spa |
language |
spa |
dc.relation.references.none.fl_str_mv |
[1] S. O. R. F. H. S. Fernando Martínez Santa, «Microcontrollers Programming Framework based on a V-like programming Language,» (IJACSA) International Journal of Advanced Computer Science and Aplications, vol. 13, nº 12, p. 8, 2022. [2] F. Martínez Santa, «Aixt,» 2022. [En línea]. Available: https://gitlab.com/fermarsan/aixt-project. [Último acceso: 27 Febrero 2023]. [3] F. Martínez Santa, «Sokae Project,» Noviembre 2022. [En línea]. Available: https://gitlab.com/fermarsan/sokae-project. [Último acceso: 4 Marzo 2023]. [4] Arduino, «Arduino,» 2023. [En línea]. Available: https://www.arduino.cc/. [Último acceso: 10 Agosto 2023]. [5] MicroPython, «MicroPython,» [En línea]. Available: https://micropython.org/. [Último acceso: 12 Agosto 2023]. [6] F. Martinez Santa y S. Orjuela Rivera, «Rust-like Programming Language for Low-resource,» Research India Publications, vol. 17, nº ISSN 0973- 5321, pp. 599-614, 2022. [7] M0sense, «M0sense,» 2023. [En línea]. Available:https://wiki.sipeed.com/[Último acceso: 12 Agosto 2024]. |
dc.rights.coar.fl_str_mv |
http://purl.org/coar/access_right/c_abf2 |
dc.rights.acceso.none.fl_str_mv |
Abierto (Texto Completo) |
rights_invalid_str_mv |
Abierto (Texto Completo) http://purl.org/coar/access_right/c_abf2 |
dc.format.mimetype.none.fl_str_mv |
pdf |
dc.publisher.none.fl_str_mv |
Universidad Distrital Francisco José de Caldas |
publisher.none.fl_str_mv |
Universidad Distrital Francisco José de Caldas |
institution |
Universidad Distrital Francisco José de Caldas |
bitstream.url.fl_str_mv |
https://repository.udistrital.edu.co/bitstreams/a3f84505-f488-4ba0-b68c-812147e3c846/download https://repository.udistrital.edu.co/bitstreams/8a47c189-f937-4c61-a37d-684aa15a8cc1/download https://repository.udistrital.edu.co/bitstreams/12dabb0b-a167-41ec-8cfc-0e25160e5526/download |
bitstream.checksum.fl_str_mv |
4d2d8755ca4ff147a705e12164be692c 555db31c3c63fcfbb7922cfc61267918 997daf6c648c962d566d7b082dac908d |
bitstream.checksumAlgorithm.fl_str_mv |
MD5 MD5 MD5 |
repository.name.fl_str_mv |
Repositorio Universidad Distrital |
repository.mail.fl_str_mv |
repositorio@udistrital.edu.co |
_version_ |
1837007268160208896 |
spelling |
Martínez Santa, FernandoGracia Ovalle , Yahir EduardoMartínez Santa, Fernando [0000-0001-6309-2908]2025-03-05T21:09:04Z2025-03-05T21:09:04Z2024-11-06http://hdl.handle.net/11349/93307El proyecto Aixt es una estructura de programación para microcontroladores que utiliza una sintaxis de lenguaje moderno y se centra en dispositivos de bajos recursos. Dicho proyecto está compuesto por 3 componentes principales: El lenguaje de programación Aixt basado en la sintaxis del lenguaje V [1], El transcompilador de Aixt a C, que traduce el código fuente de lenguaje Aixt a lenguaje C para el compilador de C nativo específico de cada microcontrolador y la API (Application Programming Interface) de Aixt, que facilita la programación al estandarizar para todos una placa soportados la configuración y las funciones de entrada y salida de datos [2]. El lenguaje Aixt se puede considerar como un subconjunto del lenguaje V, implementando gran parte de su sintaxis, pero dejando fuera las características de programación que serían costosas de implementar en microcontroladores en términos de espacio de memoria. La idea del proyecto Aixt nació, en el 2022 con las pretensiones del proyecto Sokae [3] de establecer un punto medio entre las estructura de programación y lenguaje de los proyectos Arduino (Basado en C) [4] y Microphyton (basado en Python) [5], “la estructura de programación está compuesta de tres componentes principales: un lenguaje basado en la sintaxis de Rust, un transcopilador que convierte el código fuente escrito en Rust a lenguaje C, y una API.” [6]. A diferencia del proyecto Sokae que usa como base el lenguaje de programación Rust, el proyecto Aixt usa el lenguaje V el cual tiene una sintaxis más sencilla y por está más acorde con el enfoque minimalista del proyecto. Este proyecto abordará una importante necesidad en el mercado tecnológico, debido a que actualmente existe una gran demanda de soluciones que permitan la migración de aplicaciones de un lenguaje a otro de manera eficiente y efectiva. El proyecto consistirá en darle soporte a la serie de una placa M0sense para integrarse al proyecto Aixt, esto se realizará implementando una API en C incluyendo las funciones básicas de funcionamiento de una placa soportadas por el proyecto Aixt y un archivo de configuración que permita al transcompilador hacer una traducción efectiva entre los dos lenguajes. El proyecto permitirá realizar código fuente en lenguaje Aixt que sea correctamente compilado a la serie PIC16F de manera automática, sin tener que realizar cambios manuales que puedan resultar tediosos y costosos en términos de tiempo y recursos. Aixt está optimizado para funcionar eficientemente en dispositivos con recursos limitados como los es una placa de la serie M0sense, lo que lo hace adecuado para aplicaciones que requieren una solución eficiente en términos de recursos. Este proyecto representa una oportunidad de aplicar conocimientos y habilidades adquiridos durante la formación en Ingeniería Eléctrica y contribuirá con soluciones innovadoras al mercado tecnológico. Se ha planificado que el presente proyecto sea desarrollado en un máximo de 4 meses y para ello se han asignado un total de 384 horas de trabajo para esta pasantía. Este tiempo se distribuirá de manera eficiente para lograr los objetivos propuestos dentro del plazo establecido.The Aixt project is a programming framework for microcontrollers that uses a modern language syntax and focuses on low-resource devices. It consists of 3 main components: the Aixt programming language based on the V language syntax [1], the Aixt to C transcompiler, which translates the Aixt language source code into C language for the native C compiler specific to each microcontroller, and the Aixt API (Application Programming Interface), which facilitates programming by standardizing the configuration and data input and output functions for all supported boards [2]. The Aixt language can be considered as a subset of the V language, implementing much of its syntax, but leaving out programming features that would be expensive to implement on microcontrollers in terms of memory space. The idea of the Aixt project was born, in 2022 with the claims of the Sokae project [3] to establish a middle ground between the programming structure and language of the Arduino (C-based) [4] and Microphyton (Python-based) [5] projects, “the programming structure is composed of three main components: a language based on Rust syntax, a transcopiler that converts source code written in Rust to C language, and an API.” [6]. Unlike the Sokae project which uses the Rust programming language as a base, the Aixt project uses the V language which has a simpler syntax and is more in line with the minimalist approach of the project. This project will address an important need in the technology market, because there is currently a great demand for solutions that allow the migration of applications from one language to another efficiently and effectively. The project will consist in giving support to the series of a M0sense board to be integrated to the Aixt project, this will be done by implementing an API in C including the basic functions of a board supported by the Aixt project and a configuration file that allows the transcompiler to make an effective translation between the two languages. The project will allow source code in Aixt language to be correctly compiled to the PIC16F series automatically, without having to make manual changes that can be tedious and costly in terms of time and resources. Aixt is optimized to run efficiently on resource-constrained devices such as an M0sense series board, making it suitable for applications that require a resource-efficient solution. This project represents an opportunity to apply knowledge and skills acquired during the training in Electrical Engineering and will contribute with innovative solutions to the technological market. This project is planned to be developed in a maximum of 4 months and for this purpose a total of 384 working hours have been allocated for this internship. This time will be distributed efficiently to achieve the proposed objectives within the established time frame.pdfspaUniversidad Distrital Francisco José de CaldasSipeedM0senseLenguaje CTranscompiladorCompiladorIngeniería Eléctrica por Ciclos Propedéuticos -- Tesis y disertaciones académicasMicrocontroladores en IoTProyecto AixtLenguaje de Programación AixtSipeedM0senseC languageTranscompilerCompilerInclusión al proyecto Aixt de una placa de la marca Sipeed de la serie M0sense para la transcompilación de su código fuente desde un lenguaje basado en V a lenguaje CInclusion in the Aixt project of a Sipeed board of the M0sense series for the transcompilation of its source code from a V-based language to C language.bachelorThesisPasantíainfo:eu-repo/semantics/bachelorThesishttp://purl.org/coar/resource_type/c_7a1fAbierto (Texto Completo)http://purl.org/coar/access_right/c_abf2[1] S. O. R. F. H. S. Fernando Martínez Santa, «Microcontrollers Programming Framework based on a V-like programming Language,» (IJACSA) International Journal of Advanced Computer Science and Aplications, vol. 13, nº 12, p. 8, 2022.[2] F. Martínez Santa, «Aixt,» 2022. [En línea]. Available: https://gitlab.com/fermarsan/aixt-project. [Último acceso: 27 Febrero 2023].[3] F. Martínez Santa, «Sokae Project,» Noviembre 2022. [En línea]. Available: https://gitlab.com/fermarsan/sokae-project. [Último acceso: 4 Marzo 2023].[4] Arduino, «Arduino,» 2023. [En línea]. Available: https://www.arduino.cc/. [Último acceso: 10 Agosto 2023].[5] MicroPython, «MicroPython,» [En línea]. Available: https://micropython.org/. [Último acceso: 12 Agosto 2023].[6] F. Martinez Santa y S. Orjuela Rivera, «Rust-like Programming Language for Low-resource,» Research India Publications, vol. 17, nº ISSN 0973- 5321, pp. 599-614, 2022.[7] M0sense, «M0sense,» 2023. [En línea]. Available:https://wiki.sipeed.com/[Último acceso: 12 Agosto 2024].ORIGINALGraciaOvalleYahirEduardo2024.PDFGraciaOvalleYahirEduardo2024.PDFTrabajo de Gradoapplication/pdf2257259https://repository.udistrital.edu.co/bitstreams/a3f84505-f488-4ba0-b68c-812147e3c846/download4d2d8755ca4ff147a705e12164be692cMD51Licencia de Uso y Publicación.pdfLicencia de Uso y Publicación.pdfapplication/pdf810267https://repository.udistrital.edu.co/bitstreams/8a47c189-f937-4c61-a37d-684aa15a8cc1/download555db31c3c63fcfbb7922cfc61267918MD53LICENSElicense.txtlicense.txttext/plain; charset=utf-87167https://repository.udistrital.edu.co/bitstreams/12dabb0b-a167-41ec-8cfc-0e25160e5526/download997daf6c648c962d566d7b082dac908dMD5211349/93307oai:repository.udistrital.edu.co:11349/933072025-03-06 14:39:49.743open.accesshttps://repository.udistrital.edu.coRepositorio Universidad Distritalrepositorio@udistrital.edu.coTElDRU5DSUEgWSBBVVRPUklaQUNJw5NOIEVTUEVDSUFMIFBBUkEgUFVCTElDQVIgWSBQRVJNSVRJUiBMQSBDT05TVUxUQSBZIFVTTyBERSBDT05URU5JRE9TIEVOIEVMIFJFUE9TSVRPUklPIElOU1RJVFVDSU9OQUwgREUgTEEgVU5JVkVSU0lEQUQgRElTVFJJVEFMCgpUw6lybWlub3MgeSBjb25kaWNpb25lcyBkZSB1c28gcGFyYSBwdWJsaWNhY2nDs24gZGUgb2JyYXMgZW4gZWwgUmVwb3NpdG9yaW8gSW5zdGl0dWNpb25hbCBkZSBsYSBVbml2ZXJzaWRhZCBEaXN0cml0YWwgRnJhbmNpc2NvIEpvc8OpIGRlIENhbGRhcyAoUklVRCkKCkNvbW8gdGl0dWxhcihlcykgZGVsKG9zKSBkZXJlY2hvKHMpIGRlIGF1dG9yLCBjb25maWVybyAoZXJpbW9zKSBhIGxhIFVuaXZlcnNpZGFkIERpc3RyaXRhbCBGcmFuY2lzY28gSm9zw6kgZGUgQ2FsZGFzIChlbiBhZGVsYW50ZSwgTEEgVU5JVkVSU0lEQUQpIHVuYSBsaWNlbmNpYSBwYXJhIHVzbyBubyBleGNsdXNpdmEsIGxpbWl0YWRhIHkgZ3JhdHVpdGEgc29icmUgbGEgb2JyYSBxdWUgaW50ZWdyYXLDoSBlbCBSZXBvc2l0b3JpbyBJbnN0aXR1Y2lvbmFsIChlbiBhZGVsYW50ZSwgUklVRCksIGRlIGFjdWVyZG8gYSBsYXMgc2lndWllbnRlcyByZWdsYXMsIGxhcyBjdWFsZXMgZGVjbGFybyAoYW1vcykgY29ub2NlciB5IGFjZXB0YXI6CgphKQlFc3RhcsOhIHZpZ2VudGUgYSBwYXJ0aXIgZGUgbGEgZmVjaGEgZW4gcXVlIHNlIGluY2x1eWEgZW4gZWwgUklVRCB5IGhhc3RhIHBvciB1biBwbGF6byBkZSBkaWV6ICgxMCkgQcOxb3MsIHByb3Jyb2dhYmxlIGluZGVmaW5pZGFtZW50ZSBwb3IgZWwgdGllbXBvIHF1ZSBkdXJlIGVsIGRlcmVjaG8gUGF0cmltb25pYWwgZGVsIGF1dG9yOyBsYSBjdWFsIHBvZHLDoSBkYXJzZSBwb3IgdGVybWluYWRhIHByZXZpYSBzb2xpY2l0dWQgYSBMQSBVTklWRVJTSURBRCBwb3IgZXNjcml0byBjb24gdW5hIGFudGVsYWNpw7NuIGRlIGRvcyAoMikgbWVzZXMgYW50ZXMgZGVsIHZlbmNpbWllbnRvIGRlbCBwbGF6byBpbmljaWFsIG8gZWwgZGUgc3UocykgcHLDs3Jyb2dhKHMpLgoKYikJTEEgVU5JVkVSU0lEQUQgcG9kcsOhIHB1YmxpY2FyIGxhIG9icmEgZW4gbGFzIGRpc3RpbnRhcyB2ZXJzaW9uZXMgcmVxdWVyaWRhcyBwb3IgZWwgUklVRCAoZGlnaXRhbCwgaW1wcmVzbywgZWxlY3Ryw7NuaWNvIHUgb3RybyBtZWRpbyBjb25vY2lkbyBvIHBvciBjb25vY2VyKSBMQSBVTklWRVJTSURBRCBubyBzZXLDoSByZXNwb25zYWJsZSBlbiBlbCBldmVudG8gcXVlIGVsIGRvY3VtZW50byBhcGFyZXpjYSByZWZlcmVuY2lhZG8gZW4gbW90b3JlcyBkZSBiw7pzcXVlZGEgbyByZXBvc2l0b3Jpb3MgZGlmZXJlbnRlcyBhbCBSSVVELCB1bmEgdmV6IGVsKG9zKSBhdXRvcihlcykgc29saWNpdGVuIHN1IGVsaW1pbmFjacOzbiBkZWwgUklVRCwgZGFkbyBxdWUgbGEgbWlzbWEgc2Vyw6EgcHVibGljYWRhIGVuIEludGVybmV0LgoKYykJTGEgYXV0b3JpemFjacOzbiBzZSBoYWNlIGEgdMOtdHVsbyBncmF0dWl0bywgcG9yIGxvIHRhbnRvLCBsb3MgYXV0b3JlcyByZW51bmNpYW4gYSByZWNpYmlyIGJlbmVmaWNpbyBhbGd1bm8gcG9yIGxhIHB1YmxpY2FjacOzbiwgZGlzdHJpYnVjacOzbiwgY29tdW5pY2FjacOzbiBww7pibGljYSB5IGN1YWxxdWllciBvdHJvIHVzbyBxdWUgc2UgaGFnYSBlbiBsb3MgdMOpcm1pbm9zIGRlIGxhIHByZXNlbnRlIGxpY2VuY2lhIHkgZGUgbGEgbGljZW5jaWEgZGUgdXNvIGNvbiBxdWUgc2UgcHVibGljYSAoQ3JlYXRpdmUgQ29tbW9ucykuCgpkKQlMb3MgY29udGVuaWRvcyBwdWJsaWNhZG9zIGVuIGVsIFJJVUQgc29uIG9icmEocykgb3JpZ2luYWwoZXMpIHNvYnJlIGxhIGN1YWwoZXMpIGVsKG9zKSBhdXRvcihlcykgY29tbyB0aXR1bGFyZXMgZGUgbG9zIGRlcmVjaG9zIGRlIGF1dG9yLCBhc3VtZW4gdG90YWwgcmVzcG9uc2FiaWxpZGFkIHBvciBlbCBjb250ZW5pZG8gZGUgc3Ugb2JyYSBhbnRlIExBIFVOSVZFUlNJREFEIHkgYW50ZSB0ZXJjZXJvcy4gRW4gdG9kbyBjYXNvIExBIFVOSVZFUlNJREFEIHNlIGNvbXByb21ldGUgYSBpbmRpY2FyIHNpZW1wcmUgbGEgYXV0b3LDrWEgaW5jbHV5ZW5kbyBlbCBub21icmUgZGVsIGF1dG9yIHkgbGEgZmVjaGEgZGUgcHVibGljYWNpw7NuLgoKZSkJTEEgVU5JVkVSU0lEQUQgcG9kcsOhIGluY2x1aXIgbGEgb2JyYSBlbiBsb3Mgw61uZGljZXMgeSBidXNjYWRvcmVzIHF1ZSBlc3RpbWVuIG5lY2VzYXJpb3MgcGFyYSBtYXhpbWl6YXIgbGEgdmlzaWJpbGlkYWQgZWwgdXNvIHkgZWwgaW1wYWN0byBkZSBsYSBwcm9kdWNjacOzbiBjaWVudMOtZmljYSwgYXJ0w61zdGljYSB5IGFjYWTDqW1pY2EgZW4gbGEgY29tdW5pZGFkIGxvY2FsLCBuYWNpb25hbCBvIGludGVybmFjaW9uYWwuCgoKZikJTEEgVU5JVkVSU0lEQUQgcG9kcsOhIGNvbnZlcnRpciBsYSBvYnJhIGEgY3VhbHF1aWVyIG1lZGlvIG8gZm9ybWF0byBjb24gZWwgZmluIGRlIHN1IHByZXNlcnZhY2nDs24gZW4gZWwgdGllbXBvIHF1ZSBsYSBwcmVzZW50ZSBsaWNlbmNpYSB5IGxhIGRlIHN1cyBwcsOzcnJvZ2FzLgoKCkNvbiBiYXNlIGVuIGxvIGFudGVyaW9yIGF1dG9yaXpvKGFtb3MpLCBhIGZhdm9yIGRlbCBSSVVEIHkgZGUgc3VzIHVzdWFyaW9zLCBsYSBwdWJsaWNhY2nDs24geSBjb25zdWx0YSBkZSBsYSBzaWd1aWVudGUgb2JyYToKClRpdHVsbwoKQXV0b3IgICAgICAgQXBlbGxpZG9zICAgICAgICAgTm9tYnJlcwoKMQoKMgoKMwoKCmcpCUF1dG9yaXpvKGFtb3MpLCBxdWUgbGEgb2JyYSBzZWEgcHVlc3RhIGEgZGlzcG9zaWNpw7NuIGRlbCBww7pibGljbyBlbiBsb3MgdMOpcm1pbm9zIGVzdGFibGVjaWRvcyBlbiBsb3MgbGl0ZXJhbGVzIGFudGVyaW9yZXMsIGJham8gbG9zIGzDrW1pdGVzIGRlZmluaWRvcyBwb3IgTEEgVU5JVkVSU0lEQUQsIGVuIGxhcyDigJxDb25kaWNpb25lcyBkZSB1c28gZGUgZXN0cmljdG8gY3VtcGxpbWllbnRv4oCdIGRlIGxvcyByZWN1cnNvcyBwdWJsaWNhZG9zIGVuIGVsIFJJVUQsIGN1eW8gdGV4dG8gY29tcGxldG8gc2UgcHVlZGUgY29uc3VsdGFyIGVuIGh0dHA6Ly9yZXBvc2l0b3J5LnVkaXN0cml0YWwuZWR1LmNvLwoKaCkJQ29ub3pjbyhjZW1vcykgeSBhY2VwdG8oYW1vcykgcXVlIG90b3JnbyhhbW9zKSB1bmEgbGljZW5jaWEgZXNwZWNpYWwgcGFyYSBwdWJsaWNhY2nDs24gZGUgb2JyYXMgZW4gZWwgUmVwb3NpdG9yaW8gSW5zdGl0dWNpb25hbCBkZSBsYSBVbml2ZXJzaWRhZCBEaXN0cml0YWwgRnJhbmNpc2NvIEpvc8OpIGRlIENhbGRhcywgbGljZW5jaWEgICBkZSBsYSBjdWFsIGhlIChoZW1vcykgb2J0ZW5pZG8gdW5hIGNvcGlhLgoKaSkJTWFuaWZpZXN0byhhbW9zKSBtaSAobnVlc3RybykgdG90YWwgYWN1ZXJkbyBjb24gbGFzIGNvbmRpY2lvbmVzIGRlIHVzbyB5IHB1YmxpY2FjacOzbiBlbiBlbCBSZXBvc2l0b3JpbyBJbnN0aXR1Y2lvbmFsIGRlIGxhIFVuaXZlcnNpZGFkIERpc3RyaXRhbCBGcmFuY2lzY28gSm9zw6kgZGUgQ2FsZGFzIHF1ZSBzZSBkZXNjcmliZW4geSBleHBsaWNhbiBlbiBlbCBwcmVzZW50ZSBkb2N1bWVudG8uCgpqKQlDb25vemNvKGNlbW9zKSBsYSBub3JtYXRpdmlkYWQgaW50ZXJuYSBkZSAgTEEgVU5JVkVSU0lEQUQ7IGVuIGNvbmNyZXRvLCBlbCBBY3VlcmRvIDAwNCBkZSAyMDEyIGRlbCBDU1UsIEFjdWVyZG8gMDIzIGRlIDIwMTIgZGVsIENTVSBzb2JyZSBQb2zDrXRpY2EgRWRpdG9yaWFsLCBBY3VlcmRvIDAyNiAgZGVsIDMxIGRlIGp1bGlvIGRlIDIwMTIgc29icmUgZWwgcHJvY2VkaW1pZW50byBwYXJhIGxhIHB1YmxpY2FjacOzbiBkZSB0ZXNpcyBkZSBwb3N0Z3JhZG8gZGUgbG9zIGVzdHVkaWFudGVzIGRlIGxhIFVuaXZlcnNpZGFkIERpc3RyaXRhbCBGcmFuY2lzY28gSm9zw6kgZGUgQ2FsZGFzLCAgQWN1ZXJkbyAwMzAgZGVsIDAzIGRlIGRpY2llbWJyZSBkZSAyMDEzIHBvciBtZWRpbyBkZWwgY3VhbCBzZSBjcmVhIGVsIFJlcG9zaXRvcmlvIEluc3RpdHVjaW9uYWwgZGUgbGEgVW5pdmVyc2lkYWQgRGlzdHJpdGFsIEZyYW5jaXNjbyBKb3PDqSBkZSBDYWxkYXMsIEFjdWVyZG8gMDM4IGRlIDIwMTUgMjAxNSDigJxwb3IgZWwgY3VhbCBzZSBtb2RpZmljYSBlbCBBY3VlcmRvIDAzMSBkZSAyMDE0IGRlIDIwMTQgcXVlIHJlZ2xhbWVudGEgZWwgdHJhYmFqbyBkZSBncmFkbyBwYXJhIGxvcyBlc3R1ZGlhbnRlcyBkZSBwcmVncmFkbyBkZSBsYSBVbml2ZXJzaWRhZCBEaXN0cml0YWwgRnJhbmNpc2NvIEpvc8OpIGRlIENhbGRhcyB5IHNlIGRpY3RhbiBvdHJhcyBkaXJlY3RyaWNlc+KAnSB5IGxhcyBkZW3DoXMgbm9ybWFzIGNvbmNvcmRhbnRlIHkgY29tcGxlbWVudGFyaWFzIHF1ZSByaWdlbiBhbCByZXNwZWN0bywgZXNwZWNpYWxtZW50ZSBsYSBsZXkgMjMgZGUgMTk4MiwgbGEgbGV5IDQ0IGRlIDE5OTMgeSBsYSBkZWNpc2nDs24gQW5kaW5hIDM1MSBkZSAxOTkzLiBFc3RvcyBkb2N1bWVudG9zIHBvZHLDoW4gc2VyIGNvbnN1bHRhZG9zIHkgZGVzY2FyZ2Fkb3MgZW4gZWwgcG9ydGFsIHdlYiBkZSBsYSBiaWJsaW90ZWNhIGh0dHA6Ly9zaXN0ZW1hZGViaWJsaW90ZWNhcy51ZGlzdHJpdGFsLmVkdS5jby8KCmspCUFjZXB0byhhbW9zKSBxdWUgTEEgVU5JVkVSU0lEQUQgbm8gc2UgcmVzcG9uc2FiaWxpemEgcG9yIGxhcyBpbmZyYWNjaW9uZXMgYSBsYSBwcm9waWVkYWQgaW50ZWxlY3R1YWwgbyBEZXJlY2hvcyBkZSBBdXRvciBjYXVzYWRhcyBwb3IgbG9zIHRpdHVsYXJlcyBkZSBsYSBwcmVzZW50ZSBMaWNlbmNpYSB5IGRlY2xhcmFtb3MgcXVlIG1hbnRlbmRyw6kgKGVtb3MpIGluZGVtbmUgYSBMQSBVTklWRVJTSURBRCBwb3IgbGFzIHJlY2xhbWFjaW9uZXMgbGVnYWxlcyBkZSBjdWFscXVpZXIgdGlwbyBxdWUgbGxlZ2FyZW4gYSBwcmVzZW50YXJzZSBwb3IgdmlvbGFjacOzbiBkZSBkZXJlY2hvcyBhIGxhIHByb3BpZWRhZCBpbnRlbGVjdHVhbCBvIGRlIEF1dG9yIHJlbGFjaW9uYWRvcyBjb24gbG9zIGRvY3VtZW50b3MgcmVnaXN0cmFkb3MgZW4gZWwgUklVRC4KCmwpCUVsIChsb3MpIGF1dG9yKGVzKSBtYW5pZmllc3RhKG1vcykgcXVlIGxhIG9icmEgb2JqZXRvIGRlIGxhIHByZXNlbnRlIGF1dG9yaXphY2nDs24gZXMgb3JpZ2luYWwsIGRlIGV4Y2x1c2l2YSBhdXRvcsOtYSwgeSBzZSByZWFsaXrDsyBzaW4gdmlvbGFyIG8gdXN1cnBhciBkZXJlY2hvcyBkZSBhdXRvciBkZSB0ZXJjZXJvczsgZGUgdGFsIHN1ZXJ0ZSwgZW4gY2FzbyBkZSBwcmVzZW50YXJzZSBjdWFscXVpZXIgcmVjbGFtYWNpw7NuIG8gYWNjacOzbiBwb3IgcGFydGUgZGUgdW4gdGVyY2VybyBlbiBjdWFudG8gYSBsb3MgZGVyZWNob3MgZGUgYXV0b3Igc29icmUgbGEgb2JyYSwgZWwgKGxvcykgZXN0dWRpYW50ZShzKSDigJMgYXV0b3IoZXMpIGFzdW1pcsOhKG4pIHRvZGEgbGEgcmVzcG9uc2FiaWxpZGFkIHkgc2FsZHLDoShuKSBlbiBkZWZlbnNhIGRlIGxvcyBkZXJlY2hvcyBhcXXDrSBhdXRvcml6YWRvcy4gUGFyYSB0b2RvcyBsb3MgZWZlY3RvcywgTEEgVU5JVkVSU0lEQUQgYWN0w7phIGNvbW8gdW4gdGVyY2VybyBkZSBidWVuYSBmZS4KCgptKQlFbCAobG9zKSBhdXRvcihlcykgbWFuaWZpZXN0YShtb3MpIHF1ZSBjb25vemNvKGNlbW9zKSBsYSBhdXRvbm9tw61hIHkgbG9zIGRlcmVjaG9zLCBxdWUgcG9zZWUobW9zKSBzb2JyZSBsYSBvYnJhIHksIGNvbW8gdGFsLCBlcyAoc29tb3MpIHJlc3BvbnNhYmxlKHMpIGRlbCBhbGNhbmNlIGp1csOtZGljbyB5IGxlZ2FsLCBkZSBlc2NvZ2VyIGxhIG9wY2nDs24gZGUgbGEgcHVibGljYWNpw7NuIG8gZGUgcmVzdHJpY2Npw7NuIGRlIGxhIHB1YmxpY2FjacOzbiBkZWwgZG9jdW1lbnRvIHJlZ2lzdHJhZG8gZW4gZWwgUklVRC4KCgoKCgoKU0kgRUwgRE9DVU1FTlRPIFNFIEJBU0EgRU4gVU4gVFJBQkFKTyBRVUUgSEEgU0lETyBQQVRST0NJTkFETyBPIEFQT1lBRE8gUE9SIFVOQSBBR0VOQ0lBIE8gVU5BIE9SR0FOSVpBQ0nDk04sIENPTiBFWENFUENJw5NOIERFIExBIFVOSVZFUlNJREFEIERJU1RSSVRBTCBGUkFOQ0lTQ08gSk9TRSBERSBDQUxEQVMsIExPUyBBVVRPUkVTIEdBUkFOVElaQU4gUVVFIFNFIEhBIENVTVBMSURPIENPTiBMT1MKREVSRUNIT1MgWSBPQkxJR0FDSU9ORVMgUkVRVUVSSURPUyBQT1IgRUwgUkVTUEVDVElWTyBDT05UUkFUTyBPIEFDVUVSRE8uCgoKCgoKCgoKCgoKCgoKCgoKCgoKCkVuIGNvbnN0YW5jaWEgZGUgbG8gYW50ZXJpb3IsIGZpcm1vKGFtb3MpIGVsIHByZXNlbnRlIGRvY3VtZW50bywgZW4gbGEgY2l1ZGFkIGRlIEJvZ290w6EsIEQuQy4sIGEgbG9zCgoKRklSTUEgREUgTE9TIFRJVFVMQVJFUyBERSBERVJFQ0hPUyBERSBBVVRPUgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fICAgQy5DLiBOby4gX19fX19fX19fX19fX19fX19fCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18gICBDLkMuIE5vLiBfX19fX19fX19fX19fX19fX18KCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXyAgIEMuQy4gTm8uIF9fX19fX19fX19fX19fX19fXwoKCgpDb3JyZW8gRWxlY3Ryw7NuaWNvIEluc3RpdHVjaW9uYWwgZGVsIChkZSBsb3MpIEF1dG9yKGVzKToKCkF1dG9yCSAgICAgIENvcnJlbyBFbGVjdHLDs25pY28KCjEKCjIKCjMKCk5vbWJyZSBkZSBEaXJlY3RvcihlcykgZGUgR3JhZG86CgoxCgoyCgozCgpOb21icmUgRmFjdWx0YWQgeSBQcm95ZWN0byBDdXJyaWN1bGFyOgoKRmFjdWx0YWQJUHJveWVjdG8gQ3VycmljdWxhcgoKCgoKCgoKCk5vdGE6IEVuIGNhc28gcXVlIG5vIGVzdMOpIGRlIGFjdWVyZG8gY29uIGxhcyBjb25kaWNpb25lcyBkZSBsYSBwcmVzZW50ZSBsaWNlbmNpYSwgeSBtYW5pZmllc3RlIGFsZ3VuYSByZXN0cmljY2nDs24gc29icmUgbGEgb2JyYSwganVzdGlmaXF1ZSBsb3MgbW90aXZvcyBwb3IgbG9zIGN1YWxlcyBlbCBkb2N1bWVudG8geSBzdXMgYW5leG9zIG5vIHB1ZWRlbiBzZXIgcHVibGljYWRvcyBlbiBlbCBSZXBvc2l0b3JpbyBJbnN0aXR1Y2lvbmFsIGRlIGxhIFVuaXZlcnNpZGFkIERpc3RyaXRhbCBGcmFuY2lzY28gSm9zw6kgZGUgQ2FsZGFzIFJJVUQuCgoKU2kgcmVxdWllcmUgbcOhcyBlc3BhY2lvLCBwdWVkZSBhbmV4YXIgdW5hIGNvcGlhIHNpbWlsYXIgYSBlc3RhIGhvamEK |