Simulación del ataque CSRF por medio de una aplicación web con enfoque explicativo
En el presente documento se expone el desarrollo de una simulación que ayuda a entender lo que sucede a nivel de red y protocolos cuando se ejecuta un ataque CSRF. A través del uso de tecnologías como Java, JavaScript, HTML, Angular, Spring Boot y GitHub se construyó una página web con funcionalidad...
- Autores:
-
González Ruiz, Anderson Alexander
Rodríguez Angarita, July Paola
- 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/92838
- Acceso en línea:
- http://hdl.handle.net/11349/92838
- Palabra clave:
- CSRF
Autenticación
Atacante
Sesión
Vulnerabilidad
Seguridad web
Ingeniería en Telecomunicaciones -- Tesis y disertaciones académicas
Seguridad en computadores
Métodos de simulación
Cifrado de datos (Informática)
Aplicaciones web
CSRF
Authentication
Hacker
Session
Vulnerability
Web security
- Rights
- License
- Attribution-NonCommercial-NoDerivatives 4.0 Internacional
id |
UDISTRITA2_d63396c80b88d1161d73a5328889cda6 |
---|---|
oai_identifier_str |
oai:repository.udistrital.edu.co:11349/92838 |
network_acronym_str |
UDISTRITA2 |
network_name_str |
RIUD: repositorio U. Distrital |
repository_id_str |
|
dc.title.spa.fl_str_mv |
Simulación del ataque CSRF por medio de una aplicación web con enfoque explicativo |
dc.title.titleenglish.spa.fl_str_mv |
Simulation of a CSRF attack through a web application with an explanatory focus |
title |
Simulación del ataque CSRF por medio de una aplicación web con enfoque explicativo |
spellingShingle |
Simulación del ataque CSRF por medio de una aplicación web con enfoque explicativo CSRF Autenticación Atacante Sesión Vulnerabilidad Seguridad web Ingeniería en Telecomunicaciones -- Tesis y disertaciones académicas Seguridad en computadores Métodos de simulación Cifrado de datos (Informática) Aplicaciones web CSRF Authentication Hacker Session Vulnerability Web security |
title_short |
Simulación del ataque CSRF por medio de una aplicación web con enfoque explicativo |
title_full |
Simulación del ataque CSRF por medio de una aplicación web con enfoque explicativo |
title_fullStr |
Simulación del ataque CSRF por medio de una aplicación web con enfoque explicativo |
title_full_unstemmed |
Simulación del ataque CSRF por medio de una aplicación web con enfoque explicativo |
title_sort |
Simulación del ataque CSRF por medio de una aplicación web con enfoque explicativo |
dc.creator.fl_str_mv |
González Ruiz, Anderson Alexander Rodríguez Angarita, July Paola |
dc.contributor.advisor.none.fl_str_mv |
Jacinto Gómez, Edwar |
dc.contributor.author.none.fl_str_mv |
González Ruiz, Anderson Alexander Rodríguez Angarita, July Paola |
dc.contributor.orcid.none.fl_str_mv |
Jacinto Gómez,Edwar [0000-0003-4038-8137] |
dc.subject.spa.fl_str_mv |
CSRF Autenticación Atacante Sesión Vulnerabilidad Seguridad web |
topic |
CSRF Autenticación Atacante Sesión Vulnerabilidad Seguridad web Ingeniería en Telecomunicaciones -- Tesis y disertaciones académicas Seguridad en computadores Métodos de simulación Cifrado de datos (Informática) Aplicaciones web CSRF Authentication Hacker Session Vulnerability Web security |
dc.subject.lemb.none.fl_str_mv |
Ingeniería en Telecomunicaciones -- Tesis y disertaciones académicas Seguridad en computadores Métodos de simulación Cifrado de datos (Informática) Aplicaciones web |
dc.subject.keyword.spa.fl_str_mv |
CSRF Authentication Hacker Session Vulnerability Web security |
description |
En el presente documento se expone el desarrollo de una simulación que ayuda a entender lo que sucede a nivel de red y protocolos cuando se ejecuta un ataque CSRF. A través del uso de tecnologías como Java, JavaScript, HTML, Angular, Spring Boot y GitHub se construyó una página web con funcionalidades similares a un portal bancario que permite configurar distintos niveles de seguridad, también se programó una aplicación en JavaScript vanilla desde la que se explica paso a paso cómo hacer el ataque lo cual permite al usuario tener la noción de las afectaciones que podría experimentar y saber cómo prevenirlas. Con esta proyecto se logró explicar de manera sencilla el impacto que puede causar la vulnerabilidad CSRF, también es de ayuda para crear conciencia a la hora de navegar en internet y se disminuyen las probabilidades de ser víctima de este tipo de ataque ya que se educa sobre las medidas de protección necesarias y buenas prácticas. |
publishDate |
2024 |
dc.date.created.none.fl_str_mv |
2024-05-20 |
dc.date.accessioned.none.fl_str_mv |
2025-02-20T17:49:21Z |
dc.date.available.none.fl_str_mv |
2025-02-20T17:49:21Z |
dc.type.spa.fl_str_mv |
bachelorThesis |
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/92838 |
url |
http://hdl.handle.net/11349/92838 |
dc.language.iso.spa.fl_str_mv |
spa |
language |
spa |
dc.relation.references.none.fl_str_mv |
International Telecommunication Union (2021) Measuring digital development Facts and figures 2021. Geneva: ITU Publications. [Online]. Available: https://www.itu.int/en/ITU-D/Statistics/Documents/facts/FactsFigures2021.pdf Unión Internacional de Telecomunicaciones. Función de la UIT en el fomento de la confianza en la utilización de las TIC (2021 Junio) [Online]. Available: https://www.itu.int/es/Pages/default.aspx C. Tomé López. Fuego griego (2016 Noviembre 8) [Online]. Available: https://culturacientifica.com/2016/11/08/fuego-griego/ KirstenS, D. Wichers, Davisnw, P. Petefish, A. Weidman, M. Brooks, A. Mir, Dc, D. h3lix, J. Manico, R. Gilbert, Tgondrom, P. Krawczyk, Brandt, A. V. Minhaz, K. Lorenzo, A. Smith, C. Schelin, A. Elias-Bachrach, Sarciszewski, kingthorin, B. Spatafora. Cross Site Request Forgery (CSRF) [Online]. Available: https://owasp.org/www-community/attacks/csrf R. Auger (2010 Abril 4) The Cross-Site Request Forgery (CSRF/XSRF) FAQ [Online]. Available: https://www.cgisecurity.com/csrf-faq.html E. Saad, R. Mitchell, R. Rehim, V. Drake. (2021 Diciembre 30) OWASP Web Security Testing Guide [Online]. Available: https://github.com/OWASP/wstg A. Ramrami, I. Albert. OWASP CSRFGuard [Online]. Available: https://owasp.org/www-project-csrfguard/ Minhaz, K. Wall, A. Naderi, J. Manico, A. Dahiya. OWASP CSRF Protector Project [Online]. Available: https://github.com/mebjas/CSRF-Protector-PHP J. Garson. CSRF Falsificando peticiones (2016 Abril) [Online]. Available: https://owasp.org/www-pdf-archive//CSRF_falsificando_peticiones.pdf A. Sarosi, Tutorial de Ataque CSRF y CSRF Tokens en Node.js [Online]. [4tomik], 26 de marzo de 2021. Available: https://www.youtube.com/watch?v=C9dvkIndTLA&list=PLsDn3GZhjpu-N6icEViDMjeZlJoWi6Jex& index=15 Cisco. What are cookies? What are the differences between them (session vs. persistent)? (2018 Julio 17) [Online]. Available: https://www.cisco.com/c/en/us/support/docs/security/web-security-appliance/117925-technote-csc-00. html Kaspersky Lab. What are Cookies? [Online]. Available: https://www.kaspersky.com/resource-center/definitions/cookies D. Johansson. Bypassing CSRF Protections, A Double Defeat of the Double-Submit Cookie Pattern [Online]. Available: https://owasp.org/www-pdf-archive/David_Johansson-Double_Defeat_of_Double-Submit_Cookie.pdf IBM MQ. Identificación y autenticación (2021 Abril 20) [Online]. Available: https://www.ibm.com/docs/es/ibm-mq/7.5?topic=ssfksj-7-5-0-com-ibm-mq-sec-doc-q009740--htm E. Kiriakos Piazza. Autenticación basada en Cookies de sesión vs Tokens [Online]. Available: https://platzi.com/tutoriales/1461-django-avanzado/7201-autenticacion-basada-en-cookies-de-sesion-v s-tokens/ |
dc.rights.*.fl_str_mv |
Attribution-NonCommercial-NoDerivatives 4.0 Internacional Attribution-NonCommercial-NoDerivatives 4.0 Internacional |
dc.rights.coar.fl_str_mv |
http://purl.org/coar/access_right/c_abf2 |
dc.rights.uri.*.fl_str_mv |
http://creativecommons.org/licenses/by-nc-nd/4.0/ |
dc.rights.acceso.spa.fl_str_mv |
Abierto (Texto Completo) |
rights_invalid_str_mv |
Attribution-NonCommercial-NoDerivatives 4.0 Internacional http://creativecommons.org/licenses/by-nc-nd/4.0/ Abierto (Texto Completo) http://purl.org/coar/access_right/c_abf2 |
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/514cc199-fa2f-4a05-9847-744b5dc5a725/download https://repository.udistrital.edu.co/bitstreams/e518336a-3829-48fc-9d5f-d09e7e4ff984/download https://repository.udistrital.edu.co/bitstreams/aa181c2e-6470-4057-8030-b2d0aa8709e9/download https://repository.udistrital.edu.co/bitstreams/8fbc7013-cafa-44b1-9540-0a4ed7551bf0/download https://repository.udistrital.edu.co/bitstreams/bb522c77-ce34-4575-921a-27fa27067d8a/download |
bitstream.checksum.fl_str_mv |
92cbe85a63681c8295ca58b458e47676 06ba942e9c4997530b905c7b9a58ae5d 6c4ae9f0e188cd9ff706969e8d7abfa2 4460e5956bc1d1639be9ae6146a50347 997daf6c648c962d566d7b082dac908d |
bitstream.checksumAlgorithm.fl_str_mv |
MD5 MD5 MD5 MD5 MD5 |
repository.name.fl_str_mv |
Repositorio Universidad Distrital |
repository.mail.fl_str_mv |
repositorio@udistrital.edu.co |
_version_ |
1837007180790759424 |
spelling |
Jacinto Gómez, EdwarGonzález Ruiz, Anderson AlexanderRodríguez Angarita, July PaolaJacinto Gómez,Edwar [0000-0003-4038-8137]2025-02-20T17:49:21Z2025-02-20T17:49:21Z2024-05-20http://hdl.handle.net/11349/92838En el presente documento se expone el desarrollo de una simulación que ayuda a entender lo que sucede a nivel de red y protocolos cuando se ejecuta un ataque CSRF. A través del uso de tecnologías como Java, JavaScript, HTML, Angular, Spring Boot y GitHub se construyó una página web con funcionalidades similares a un portal bancario que permite configurar distintos niveles de seguridad, también se programó una aplicación en JavaScript vanilla desde la que se explica paso a paso cómo hacer el ataque lo cual permite al usuario tener la noción de las afectaciones que podría experimentar y saber cómo prevenirlas. Con esta proyecto se logró explicar de manera sencilla el impacto que puede causar la vulnerabilidad CSRF, también es de ayuda para crear conciencia a la hora de navegar en internet y se disminuyen las probabilidades de ser víctima de este tipo de ataque ya que se educa sobre las medidas de protección necesarias y buenas prácticas.This document presents the development of a simulation that helps understand what happens at the network and protocol level when a CSRF attack is executed. Using technologies such as Java, JavaScript, HTML, Angular, Spring Boot, and GitHub, a web page with functionalities similar to a banking portal was built, allowing different levels of security to be configured. Additionally, a vanilla JavaScript application was programmed to explain step-by-step how to carry out the attack, enabling users to understand the potential impacts and how to prevent them. This project successfully explains in a simple manner the impact that the CSRF vulnerability can have, helps raise awareness when browsing the internet, and reduces the likelihood of falling victim to this type of attack by educating users on the necessary protective measures and best practices.pdfspaAttribution-NonCommercial-NoDerivatives 4.0 InternacionalAttribution-NonCommercial-NoDerivatives 4.0 Internacionalhttp://creativecommons.org/licenses/by-nc-nd/4.0/Abierto (Texto Completo)http://purl.org/coar/access_right/c_abf2CSRFAutenticaciónAtacanteSesiónVulnerabilidadSeguridad webIngeniería en Telecomunicaciones -- Tesis y disertaciones académicasSeguridad en computadoresMétodos de simulaciónCifrado de datos (Informática)Aplicaciones webCSRFAuthenticationHackerSessionVulnerabilityWeb securitySimulación del ataque CSRF por medio de una aplicación web con enfoque explicativoSimulation of a CSRF attack through a web application with an explanatory focusbachelorThesisMonografíainfo:eu-repo/semantics/bachelorThesishttp://purl.org/coar/resource_type/c_7a1fInternational Telecommunication Union (2021) Measuring digital development Facts and figures 2021. Geneva: ITU Publications. [Online]. Available: https://www.itu.int/en/ITU-D/Statistics/Documents/facts/FactsFigures2021.pdfUnión Internacional de Telecomunicaciones. Función de la UIT en el fomento de la confianza en la utilización de las TIC (2021 Junio) [Online]. Available: https://www.itu.int/es/Pages/default.aspxC. Tomé López. Fuego griego (2016 Noviembre 8) [Online]. Available: https://culturacientifica.com/2016/11/08/fuego-griego/KirstenS, D. Wichers, Davisnw, P. Petefish, A. Weidman, M. Brooks, A. Mir, Dc, D. h3lix, J. Manico, R. Gilbert, Tgondrom, P. Krawczyk, Brandt, A. V. Minhaz, K. Lorenzo, A. Smith, C. Schelin, A. Elias-Bachrach, Sarciszewski, kingthorin, B. Spatafora. Cross Site Request Forgery (CSRF) [Online]. Available: https://owasp.org/www-community/attacks/csrfR. Auger (2010 Abril 4) The Cross-Site Request Forgery (CSRF/XSRF) FAQ [Online]. Available: https://www.cgisecurity.com/csrf-faq.htmlE. Saad, R. Mitchell, R. Rehim, V. Drake. (2021 Diciembre 30) OWASP Web Security Testing Guide [Online]. Available: https://github.com/OWASP/wstgA. Ramrami, I. Albert. OWASP CSRFGuard [Online]. Available: https://owasp.org/www-project-csrfguard/Minhaz, K. Wall, A. Naderi, J. Manico, A. Dahiya. OWASP CSRF Protector Project [Online]. Available: https://github.com/mebjas/CSRF-Protector-PHPJ. Garson. CSRF Falsificando peticiones (2016 Abril) [Online]. Available: https://owasp.org/www-pdf-archive//CSRF_falsificando_peticiones.pdfA. Sarosi, Tutorial de Ataque CSRF y CSRF Tokens en Node.js [Online]. [4tomik], 26 de marzo de 2021. Available: https://www.youtube.com/watch?v=C9dvkIndTLA&list=PLsDn3GZhjpu-N6icEViDMjeZlJoWi6Jex& index=15Cisco. What are cookies? What are the differences between them (session vs. persistent)? (2018 Julio 17) [Online]. Available: https://www.cisco.com/c/en/us/support/docs/security/web-security-appliance/117925-technote-csc-00. htmlKaspersky Lab. What are Cookies? [Online]. Available: https://www.kaspersky.com/resource-center/definitions/cookiesD. Johansson. Bypassing CSRF Protections, A Double Defeat of the Double-Submit Cookie Pattern [Online]. Available: https://owasp.org/www-pdf-archive/David_Johansson-Double_Defeat_of_Double-Submit_Cookie.pdfIBM MQ. Identificación y autenticación (2021 Abril 20) [Online]. Available: https://www.ibm.com/docs/es/ibm-mq/7.5?topic=ssfksj-7-5-0-com-ibm-mq-sec-doc-q009740--htmE. Kiriakos Piazza. Autenticación basada en Cookies de sesión vs Tokens [Online]. Available: https://platzi.com/tutoriales/1461-django-avanzado/7201-autenticacion-basada-en-cookies-de-sesion-v s-tokens/ORIGINALTrabajo de gradoTrabajo de gradoTrabajo de gradoapplication/pdf3892550https://repository.udistrital.edu.co/bitstreams/514cc199-fa2f-4a05-9847-744b5dc5a725/download92cbe85a63681c8295ca58b458e47676MD51AnexosAnexosAnexosapplication/zip3409022https://repository.udistrital.edu.co/bitstreams/e518336a-3829-48fc-9d5f-d09e7e4ff984/download06ba942e9c4997530b905c7b9a58ae5dMD52Licencia de uso y autorizaciónLicencia de uso y autorizaciónLicenciaapplication/pdf346077https://repository.udistrital.edu.co/bitstreams/aa181c2e-6470-4057-8030-b2d0aa8709e9/download6c4ae9f0e188cd9ff706969e8d7abfa2MD56CC-LICENSElicense_rdflicense_rdfapplication/rdf+xml; charset=utf-8805https://repository.udistrital.edu.co/bitstreams/8fbc7013-cafa-44b1-9540-0a4ed7551bf0/download4460e5956bc1d1639be9ae6146a50347MD57LICENSElicense.txtlicense.txttext/plain; charset=utf-87167https://repository.udistrital.edu.co/bitstreams/bb522c77-ce34-4575-921a-27fa27067d8a/download997daf6c648c962d566d7b082dac908dMD5811349/92838oai:repository.udistrital.edu.co:11349/928382025-02-20 12:52:31.063http://creativecommons.org/licenses/by-nc-nd/4.0/Attribution-NonCommercial-NoDerivatives 4.0 Internacionalopen.accesshttps://repository.udistrital.edu.coRepositorio Universidad Distritalrepositorio@udistrital.edu.coTElDRU5DSUEgWSBBVVRPUklaQUNJw5NOIEVTUEVDSUFMIFBBUkEgUFVCTElDQVIgWSBQRVJNSVRJUiBMQSBDT05TVUxUQSBZIFVTTyBERSBDT05URU5JRE9TIEVOIEVMIFJFUE9TSVRPUklPIElOU1RJVFVDSU9OQUwgREUgTEEgVU5JVkVSU0lEQUQgRElTVFJJVEFMCgpUw6lybWlub3MgeSBjb25kaWNpb25lcyBkZSB1c28gcGFyYSBwdWJsaWNhY2nDs24gZGUgb2JyYXMgZW4gZWwgUmVwb3NpdG9yaW8gSW5zdGl0dWNpb25hbCBkZSBsYSBVbml2ZXJzaWRhZCBEaXN0cml0YWwgRnJhbmNpc2NvIEpvc8OpIGRlIENhbGRhcyAoUklVRCkKCkNvbW8gdGl0dWxhcihlcykgZGVsKG9zKSBkZXJlY2hvKHMpIGRlIGF1dG9yLCBjb25maWVybyAoZXJpbW9zKSBhIGxhIFVuaXZlcnNpZGFkIERpc3RyaXRhbCBGcmFuY2lzY28gSm9zw6kgZGUgQ2FsZGFzIChlbiBhZGVsYW50ZSwgTEEgVU5JVkVSU0lEQUQpIHVuYSBsaWNlbmNpYSBwYXJhIHVzbyBubyBleGNsdXNpdmEsIGxpbWl0YWRhIHkgZ3JhdHVpdGEgc29icmUgbGEgb2JyYSBxdWUgaW50ZWdyYXLDoSBlbCBSZXBvc2l0b3JpbyBJbnN0aXR1Y2lvbmFsIChlbiBhZGVsYW50ZSwgUklVRCksIGRlIGFjdWVyZG8gYSBsYXMgc2lndWllbnRlcyByZWdsYXMsIGxhcyBjdWFsZXMgZGVjbGFybyAoYW1vcykgY29ub2NlciB5IGFjZXB0YXI6CgphKQlFc3RhcsOhIHZpZ2VudGUgYSBwYXJ0aXIgZGUgbGEgZmVjaGEgZW4gcXVlIHNlIGluY2x1eWEgZW4gZWwgUklVRCB5IGhhc3RhIHBvciB1biBwbGF6byBkZSBkaWV6ICgxMCkgQcOxb3MsIHByb3Jyb2dhYmxlIGluZGVmaW5pZGFtZW50ZSBwb3IgZWwgdGllbXBvIHF1ZSBkdXJlIGVsIGRlcmVjaG8gUGF0cmltb25pYWwgZGVsIGF1dG9yOyBsYSBjdWFsIHBvZHLDoSBkYXJzZSBwb3IgdGVybWluYWRhIHByZXZpYSBzb2xpY2l0dWQgYSBMQSBVTklWRVJTSURBRCBwb3IgZXNjcml0byBjb24gdW5hIGFudGVsYWNpw7NuIGRlIGRvcyAoMikgbWVzZXMgYW50ZXMgZGVsIHZlbmNpbWllbnRvIGRlbCBwbGF6byBpbmljaWFsIG8gZWwgZGUgc3UocykgcHLDs3Jyb2dhKHMpLgoKYikJTEEgVU5JVkVSU0lEQUQgcG9kcsOhIHB1YmxpY2FyIGxhIG9icmEgZW4gbGFzIGRpc3RpbnRhcyB2ZXJzaW9uZXMgcmVxdWVyaWRhcyBwb3IgZWwgUklVRCAoZGlnaXRhbCwgaW1wcmVzbywgZWxlY3Ryw7NuaWNvIHUgb3RybyBtZWRpbyBjb25vY2lkbyBvIHBvciBjb25vY2VyKSBMQSBVTklWRVJTSURBRCBubyBzZXLDoSByZXNwb25zYWJsZSBlbiBlbCBldmVudG8gcXVlIGVsIGRvY3VtZW50byBhcGFyZXpjYSByZWZlcmVuY2lhZG8gZW4gbW90b3JlcyBkZSBiw7pzcXVlZGEgbyByZXBvc2l0b3Jpb3MgZGlmZXJlbnRlcyBhbCBSSVVELCB1bmEgdmV6IGVsKG9zKSBhdXRvcihlcykgc29saWNpdGVuIHN1IGVsaW1pbmFjacOzbiBkZWwgUklVRCwgZGFkbyBxdWUgbGEgbWlzbWEgc2Vyw6EgcHVibGljYWRhIGVuIEludGVybmV0LgoKYykJTGEgYXV0b3JpemFjacOzbiBzZSBoYWNlIGEgdMOtdHVsbyBncmF0dWl0bywgcG9yIGxvIHRhbnRvLCBsb3MgYXV0b3JlcyByZW51bmNpYW4gYSByZWNpYmlyIGJlbmVmaWNpbyBhbGd1bm8gcG9yIGxhIHB1YmxpY2FjacOzbiwgZGlzdHJpYnVjacOzbiwgY29tdW5pY2FjacOzbiBww7pibGljYSB5IGN1YWxxdWllciBvdHJvIHVzbyBxdWUgc2UgaGFnYSBlbiBsb3MgdMOpcm1pbm9zIGRlIGxhIHByZXNlbnRlIGxpY2VuY2lhIHkgZGUgbGEgbGljZW5jaWEgZGUgdXNvIGNvbiBxdWUgc2UgcHVibGljYSAoQ3JlYXRpdmUgQ29tbW9ucykuCgpkKQlMb3MgY29udGVuaWRvcyBwdWJsaWNhZG9zIGVuIGVsIFJJVUQgc29uIG9icmEocykgb3JpZ2luYWwoZXMpIHNvYnJlIGxhIGN1YWwoZXMpIGVsKG9zKSBhdXRvcihlcykgY29tbyB0aXR1bGFyZXMgZGUgbG9zIGRlcmVjaG9zIGRlIGF1dG9yLCBhc3VtZW4gdG90YWwgcmVzcG9uc2FiaWxpZGFkIHBvciBlbCBjb250ZW5pZG8gZGUgc3Ugb2JyYSBhbnRlIExBIFVOSVZFUlNJREFEIHkgYW50ZSB0ZXJjZXJvcy4gRW4gdG9kbyBjYXNvIExBIFVOSVZFUlNJREFEIHNlIGNvbXByb21ldGUgYSBpbmRpY2FyIHNpZW1wcmUgbGEgYXV0b3LDrWEgaW5jbHV5ZW5kbyBlbCBub21icmUgZGVsIGF1dG9yIHkgbGEgZmVjaGEgZGUgcHVibGljYWNpw7NuLgoKZSkJTEEgVU5JVkVSU0lEQUQgcG9kcsOhIGluY2x1aXIgbGEgb2JyYSBlbiBsb3Mgw61uZGljZXMgeSBidXNjYWRvcmVzIHF1ZSBlc3RpbWVuIG5lY2VzYXJpb3MgcGFyYSBtYXhpbWl6YXIgbGEgdmlzaWJpbGlkYWQgZWwgdXNvIHkgZWwgaW1wYWN0byBkZSBsYSBwcm9kdWNjacOzbiBjaWVudMOtZmljYSwgYXJ0w61zdGljYSB5IGFjYWTDqW1pY2EgZW4gbGEgY29tdW5pZGFkIGxvY2FsLCBuYWNpb25hbCBvIGludGVybmFjaW9uYWwuCgoKZikJTEEgVU5JVkVSU0lEQUQgcG9kcsOhIGNvbnZlcnRpciBsYSBvYnJhIGEgY3VhbHF1aWVyIG1lZGlvIG8gZm9ybWF0byBjb24gZWwgZmluIGRlIHN1IHByZXNlcnZhY2nDs24gZW4gZWwgdGllbXBvIHF1ZSBsYSBwcmVzZW50ZSBsaWNlbmNpYSB5IGxhIGRlIHN1cyBwcsOzcnJvZ2FzLgoKCkNvbiBiYXNlIGVuIGxvIGFudGVyaW9yIGF1dG9yaXpvKGFtb3MpLCBhIGZhdm9yIGRlbCBSSVVEIHkgZGUgc3VzIHVzdWFyaW9zLCBsYSBwdWJsaWNhY2nDs24geSBjb25zdWx0YSBkZSBsYSBzaWd1aWVudGUgb2JyYToKClRpdHVsbwoKQXV0b3IgICAgICAgQXBlbGxpZG9zICAgICAgICAgTm9tYnJlcwoKMQoKMgoKMwoKCmcpCUF1dG9yaXpvKGFtb3MpLCBxdWUgbGEgb2JyYSBzZWEgcHVlc3RhIGEgZGlzcG9zaWNpw7NuIGRlbCBww7pibGljbyBlbiBsb3MgdMOpcm1pbm9zIGVzdGFibGVjaWRvcyBlbiBsb3MgbGl0ZXJhbGVzIGFudGVyaW9yZXMsIGJham8gbG9zIGzDrW1pdGVzIGRlZmluaWRvcyBwb3IgTEEgVU5JVkVSU0lEQUQsIGVuIGxhcyDigJxDb25kaWNpb25lcyBkZSB1c28gZGUgZXN0cmljdG8gY3VtcGxpbWllbnRv4oCdIGRlIGxvcyByZWN1cnNvcyBwdWJsaWNhZG9zIGVuIGVsIFJJVUQsIGN1eW8gdGV4dG8gY29tcGxldG8gc2UgcHVlZGUgY29uc3VsdGFyIGVuIGh0dHA6Ly9yZXBvc2l0b3J5LnVkaXN0cml0YWwuZWR1LmNvLwoKaCkJQ29ub3pjbyhjZW1vcykgeSBhY2VwdG8oYW1vcykgcXVlIG90b3JnbyhhbW9zKSB1bmEgbGljZW5jaWEgZXNwZWNpYWwgcGFyYSBwdWJsaWNhY2nDs24gZGUgb2JyYXMgZW4gZWwgUmVwb3NpdG9yaW8gSW5zdGl0dWNpb25hbCBkZSBsYSBVbml2ZXJzaWRhZCBEaXN0cml0YWwgRnJhbmNpc2NvIEpvc8OpIGRlIENhbGRhcywgbGljZW5jaWEgICBkZSBsYSBjdWFsIGhlIChoZW1vcykgb2J0ZW5pZG8gdW5hIGNvcGlhLgoKaSkJTWFuaWZpZXN0byhhbW9zKSBtaSAobnVlc3RybykgdG90YWwgYWN1ZXJkbyBjb24gbGFzIGNvbmRpY2lvbmVzIGRlIHVzbyB5IHB1YmxpY2FjacOzbiBlbiBlbCBSZXBvc2l0b3JpbyBJbnN0aXR1Y2lvbmFsIGRlIGxhIFVuaXZlcnNpZGFkIERpc3RyaXRhbCBGcmFuY2lzY28gSm9zw6kgZGUgQ2FsZGFzIHF1ZSBzZSBkZXNjcmliZW4geSBleHBsaWNhbiBlbiBlbCBwcmVzZW50ZSBkb2N1bWVudG8uCgpqKQlDb25vemNvKGNlbW9zKSBsYSBub3JtYXRpdmlkYWQgaW50ZXJuYSBkZSAgTEEgVU5JVkVSU0lEQUQ7IGVuIGNvbmNyZXRvLCBlbCBBY3VlcmRvIDAwNCBkZSAyMDEyIGRlbCBDU1UsIEFjdWVyZG8gMDIzIGRlIDIwMTIgZGVsIENTVSBzb2JyZSBQb2zDrXRpY2EgRWRpdG9yaWFsLCBBY3VlcmRvIDAyNiAgZGVsIDMxIGRlIGp1bGlvIGRlIDIwMTIgc29icmUgZWwgcHJvY2VkaW1pZW50byBwYXJhIGxhIHB1YmxpY2FjacOzbiBkZSB0ZXNpcyBkZSBwb3N0Z3JhZG8gZGUgbG9zIGVzdHVkaWFudGVzIGRlIGxhIFVuaXZlcnNpZGFkIERpc3RyaXRhbCBGcmFuY2lzY28gSm9zw6kgZGUgQ2FsZGFzLCAgQWN1ZXJkbyAwMzAgZGVsIDAzIGRlIGRpY2llbWJyZSBkZSAyMDEzIHBvciBtZWRpbyBkZWwgY3VhbCBzZSBjcmVhIGVsIFJlcG9zaXRvcmlvIEluc3RpdHVjaW9uYWwgZGUgbGEgVW5pdmVyc2lkYWQgRGlzdHJpdGFsIEZyYW5jaXNjbyBKb3PDqSBkZSBDYWxkYXMsIEFjdWVyZG8gMDM4IGRlIDIwMTUgMjAxNSDigJxwb3IgZWwgY3VhbCBzZSBtb2RpZmljYSBlbCBBY3VlcmRvIDAzMSBkZSAyMDE0IGRlIDIwMTQgcXVlIHJlZ2xhbWVudGEgZWwgdHJhYmFqbyBkZSBncmFkbyBwYXJhIGxvcyBlc3R1ZGlhbnRlcyBkZSBwcmVncmFkbyBkZSBsYSBVbml2ZXJzaWRhZCBEaXN0cml0YWwgRnJhbmNpc2NvIEpvc8OpIGRlIENhbGRhcyB5IHNlIGRpY3RhbiBvdHJhcyBkaXJlY3RyaWNlc+KAnSB5IGxhcyBkZW3DoXMgbm9ybWFzIGNvbmNvcmRhbnRlIHkgY29tcGxlbWVudGFyaWFzIHF1ZSByaWdlbiBhbCByZXNwZWN0bywgZXNwZWNpYWxtZW50ZSBsYSBsZXkgMjMgZGUgMTk4MiwgbGEgbGV5IDQ0IGRlIDE5OTMgeSBsYSBkZWNpc2nDs24gQW5kaW5hIDM1MSBkZSAxOTkzLiBFc3RvcyBkb2N1bWVudG9zIHBvZHLDoW4gc2VyIGNvbnN1bHRhZG9zIHkgZGVzY2FyZ2Fkb3MgZW4gZWwgcG9ydGFsIHdlYiBkZSBsYSBiaWJsaW90ZWNhIGh0dHA6Ly9zaXN0ZW1hZGViaWJsaW90ZWNhcy51ZGlzdHJpdGFsLmVkdS5jby8KCmspCUFjZXB0byhhbW9zKSBxdWUgTEEgVU5JVkVSU0lEQUQgbm8gc2UgcmVzcG9uc2FiaWxpemEgcG9yIGxhcyBpbmZyYWNjaW9uZXMgYSBsYSBwcm9waWVkYWQgaW50ZWxlY3R1YWwgbyBEZXJlY2hvcyBkZSBBdXRvciBjYXVzYWRhcyBwb3IgbG9zIHRpdHVsYXJlcyBkZSBsYSBwcmVzZW50ZSBMaWNlbmNpYSB5IGRlY2xhcmFtb3MgcXVlIG1hbnRlbmRyw6kgKGVtb3MpIGluZGVtbmUgYSBMQSBVTklWRVJTSURBRCBwb3IgbGFzIHJlY2xhbWFjaW9uZXMgbGVnYWxlcyBkZSBjdWFscXVpZXIgdGlwbyBxdWUgbGxlZ2FyZW4gYSBwcmVzZW50YXJzZSBwb3IgdmlvbGFjacOzbiBkZSBkZXJlY2hvcyBhIGxhIHByb3BpZWRhZCBpbnRlbGVjdHVhbCBvIGRlIEF1dG9yIHJlbGFjaW9uYWRvcyBjb24gbG9zIGRvY3VtZW50b3MgcmVnaXN0cmFkb3MgZW4gZWwgUklVRC4KCmwpCUVsIChsb3MpIGF1dG9yKGVzKSBtYW5pZmllc3RhKG1vcykgcXVlIGxhIG9icmEgb2JqZXRvIGRlIGxhIHByZXNlbnRlIGF1dG9yaXphY2nDs24gZXMgb3JpZ2luYWwsIGRlIGV4Y2x1c2l2YSBhdXRvcsOtYSwgeSBzZSByZWFsaXrDsyBzaW4gdmlvbGFyIG8gdXN1cnBhciBkZXJlY2hvcyBkZSBhdXRvciBkZSB0ZXJjZXJvczsgZGUgdGFsIHN1ZXJ0ZSwgZW4gY2FzbyBkZSBwcmVzZW50YXJzZSBjdWFscXVpZXIgcmVjbGFtYWNpw7NuIG8gYWNjacOzbiBwb3IgcGFydGUgZGUgdW4gdGVyY2VybyBlbiBjdWFudG8gYSBsb3MgZGVyZWNob3MgZGUgYXV0b3Igc29icmUgbGEgb2JyYSwgZWwgKGxvcykgZXN0dWRpYW50ZShzKSDigJMgYXV0b3IoZXMpIGFzdW1pcsOhKG4pIHRvZGEgbGEgcmVzcG9uc2FiaWxpZGFkIHkgc2FsZHLDoShuKSBlbiBkZWZlbnNhIGRlIGxvcyBkZXJlY2hvcyBhcXXDrSBhdXRvcml6YWRvcy4gUGFyYSB0b2RvcyBsb3MgZWZlY3RvcywgTEEgVU5JVkVSU0lEQUQgYWN0w7phIGNvbW8gdW4gdGVyY2VybyBkZSBidWVuYSBmZS4KCgptKQlFbCAobG9zKSBhdXRvcihlcykgbWFuaWZpZXN0YShtb3MpIHF1ZSBjb25vemNvKGNlbW9zKSBsYSBhdXRvbm9tw61hIHkgbG9zIGRlcmVjaG9zLCBxdWUgcG9zZWUobW9zKSBzb2JyZSBsYSBvYnJhIHksIGNvbW8gdGFsLCBlcyAoc29tb3MpIHJlc3BvbnNhYmxlKHMpIGRlbCBhbGNhbmNlIGp1csOtZGljbyB5IGxlZ2FsLCBkZSBlc2NvZ2VyIGxhIG9wY2nDs24gZGUgbGEgcHVibGljYWNpw7NuIG8gZGUgcmVzdHJpY2Npw7NuIGRlIGxhIHB1YmxpY2FjacOzbiBkZWwgZG9jdW1lbnRvIHJlZ2lzdHJhZG8gZW4gZWwgUklVRC4KCgoKCgoKU0kgRUwgRE9DVU1FTlRPIFNFIEJBU0EgRU4gVU4gVFJBQkFKTyBRVUUgSEEgU0lETyBQQVRST0NJTkFETyBPIEFQT1lBRE8gUE9SIFVOQSBBR0VOQ0lBIE8gVU5BIE9SR0FOSVpBQ0nDk04sIENPTiBFWENFUENJw5NOIERFIExBIFVOSVZFUlNJREFEIERJU1RSSVRBTCBGUkFOQ0lTQ08gSk9TRSBERSBDQUxEQVMsIExPUyBBVVRPUkVTIEdBUkFOVElaQU4gUVVFIFNFIEhBIENVTVBMSURPIENPTiBMT1MKREVSRUNIT1MgWSBPQkxJR0FDSU9ORVMgUkVRVUVSSURPUyBQT1IgRUwgUkVTUEVDVElWTyBDT05UUkFUTyBPIEFDVUVSRE8uCgoKCgoKCgoKCgoKCgoKCgoKCgoKCkVuIGNvbnN0YW5jaWEgZGUgbG8gYW50ZXJpb3IsIGZpcm1vKGFtb3MpIGVsIHByZXNlbnRlIGRvY3VtZW50bywgZW4gbGEgY2l1ZGFkIGRlIEJvZ290w6EsIEQuQy4sIGEgbG9zCgoKRklSTUEgREUgTE9TIFRJVFVMQVJFUyBERSBERVJFQ0hPUyBERSBBVVRPUgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fICAgQy5DLiBOby4gX19fX19fX19fX19fX19fX19fCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18gICBDLkMuIE5vLiBfX19fX19fX19fX19fX19fX18KCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXyAgIEMuQy4gTm8uIF9fX19fX19fX19fX19fX19fXwoKCgpDb3JyZW8gRWxlY3Ryw7NuaWNvIEluc3RpdHVjaW9uYWwgZGVsIChkZSBsb3MpIEF1dG9yKGVzKToKCkF1dG9yCSAgICAgIENvcnJlbyBFbGVjdHLDs25pY28KCjEKCjIKCjMKCk5vbWJyZSBkZSBEaXJlY3RvcihlcykgZGUgR3JhZG86CgoxCgoyCgozCgpOb21icmUgRmFjdWx0YWQgeSBQcm95ZWN0byBDdXJyaWN1bGFyOgoKRmFjdWx0YWQJUHJveWVjdG8gQ3VycmljdWxhcgoKCgoKCgoKCk5vdGE6IEVuIGNhc28gcXVlIG5vIGVzdMOpIGRlIGFjdWVyZG8gY29uIGxhcyBjb25kaWNpb25lcyBkZSBsYSBwcmVzZW50ZSBsaWNlbmNpYSwgeSBtYW5pZmllc3RlIGFsZ3VuYSByZXN0cmljY2nDs24gc29icmUgbGEgb2JyYSwganVzdGlmaXF1ZSBsb3MgbW90aXZvcyBwb3IgbG9zIGN1YWxlcyBlbCBkb2N1bWVudG8geSBzdXMgYW5leG9zIG5vIHB1ZWRlbiBzZXIgcHVibGljYWRvcyBlbiBlbCBSZXBvc2l0b3JpbyBJbnN0aXR1Y2lvbmFsIGRlIGxhIFVuaXZlcnNpZGFkIERpc3RyaXRhbCBGcmFuY2lzY28gSm9zw6kgZGUgQ2FsZGFzIFJJVUQuCgoKU2kgcmVxdWllcmUgbcOhcyBlc3BhY2lvLCBwdWVkZSBhbmV4YXIgdW5hIGNvcGlhIHNpbWlsYXIgYSBlc3RhIGhvamEK |