Solución de cifrado de bajo coste computacional en la transmisión de datos sobre un prototipo IoT
Contexto: El rápido desarrollo de la tecnología informática en la actualidad a menudo resulta en el uso indebido de esta tecnología en actos delictivos. Uno de los casos más comunes es el rastreo de datos contenidos en redes de internet de las cosas, en el que manipulan o se acceden a datos privados...
- Autores:
- Tipo de recurso:
- Trabajo de grado de pregrado
- Fecha de publicación:
- 2022
- Institución:
- Universidad Distrital Francisco José de Caldas
- Repositorio:
- RIUD: repositorio U. Distrital
- Idioma:
- spa
- OAI Identifier:
- oai:repository.udistrital.edu.co:11349/29883
- Acceso en línea:
- http://hdl.handle.net/11349/29883
- Palabra clave:
- Internet de las cosas,
Arduino
Cifrado simétrico
Método XXTEA
Ingeniería Telemática - Tesis y Disertaciones Académicas
Sistemas de transmisión de datos
Sistemas de transmisión de datos - Medidas de seguridad
Internet de las cosas
Tecnología informàtica
Arduino (Controladores programables)
Internet of Things
Symmetric Encryption
XXTEA method
Arduino.
- Rights
- License
- Atribución 2.5 Colombia
id |
UDISTRITA2_fe98c75474ed567244f4205d9d3d1a9e |
---|---|
oai_identifier_str |
oai:repository.udistrital.edu.co:11349/29883 |
network_acronym_str |
UDISTRITA2 |
network_name_str |
RIUD: repositorio U. Distrital |
repository_id_str |
|
dc.title.spa.fl_str_mv |
Solución de cifrado de bajo coste computacional en la transmisión de datos sobre un prototipo IoT |
dc.title.titleenglish.spa.fl_str_mv |
Low computational cost encryption solution in data transmission over an IoT prototype |
title |
Solución de cifrado de bajo coste computacional en la transmisión de datos sobre un prototipo IoT |
spellingShingle |
Solución de cifrado de bajo coste computacional en la transmisión de datos sobre un prototipo IoT Internet de las cosas, Arduino Cifrado simétrico Método XXTEA Ingeniería Telemática - Tesis y Disertaciones Académicas Sistemas de transmisión de datos Sistemas de transmisión de datos - Medidas de seguridad Internet de las cosas Tecnología informàtica Arduino (Controladores programables) Internet of Things Symmetric Encryption XXTEA method Arduino. |
title_short |
Solución de cifrado de bajo coste computacional en la transmisión de datos sobre un prototipo IoT |
title_full |
Solución de cifrado de bajo coste computacional en la transmisión de datos sobre un prototipo IoT |
title_fullStr |
Solución de cifrado de bajo coste computacional en la transmisión de datos sobre un prototipo IoT |
title_full_unstemmed |
Solución de cifrado de bajo coste computacional en la transmisión de datos sobre un prototipo IoT |
title_sort |
Solución de cifrado de bajo coste computacional en la transmisión de datos sobre un prototipo IoT |
dc.contributor.advisor.none.fl_str_mv |
Wanumen Silva, Luis Felipe |
dc.subject.spa.fl_str_mv |
Internet de las cosas, Arduino Cifrado simétrico Método XXTEA |
topic |
Internet de las cosas, Arduino Cifrado simétrico Método XXTEA Ingeniería Telemática - Tesis y Disertaciones Académicas Sistemas de transmisión de datos Sistemas de transmisión de datos - Medidas de seguridad Internet de las cosas Tecnología informàtica Arduino (Controladores programables) Internet of Things Symmetric Encryption XXTEA method Arduino. |
dc.subject.lemb.spa.fl_str_mv |
Ingeniería Telemática - Tesis y Disertaciones Académicas Sistemas de transmisión de datos Sistemas de transmisión de datos - Medidas de seguridad Internet de las cosas Tecnología informàtica Arduino (Controladores programables) |
dc.subject.keyword.spa.fl_str_mv |
Internet of Things Symmetric Encryption XXTEA method Arduino. |
description |
Contexto: El rápido desarrollo de la tecnología informática en la actualidad a menudo resulta en el uso indebido de esta tecnología en actos delictivos. Uno de los casos más comunes es el rastreo de datos contenidos en redes de internet de las cosas, en el que manipulan o se acceden a datos privados; dicha situación, crea la necesidad de fortalecer la seguridad informática en escenarios como los ya mencionados; para la conveniencia de los usuarios en el uso de tecnología informática, esto se puede conseguir mediante cifrado simétrico. Este cifrado, sobre los datos transmitidos por la red, se realiza mediante el método XXTEA. XXTEA es un algoritmo de encriptación simple pero poderoso basado en iteraciones de Feistel. El cifrado y el descifrado se llevan a cabo en un prototipo de IoT, hecho en una placa Arduino, que se comunica con un servidor gratuito a través de WiFi y se analizarán los resultados de consumo del algoritmo. Metodología: Se usa una placa de desarrollo Arduino MEGA-2560, en la cual se instala sensor de ultra sonido, el HC-SR04 al que también se le incorpora el ESP8266 v1, un módulo sencillo de WiFi para enviar datos cifrados con XXTEA y en claro a través de una comunicación inalámbrica del estándar 802.11(WiFi). Este prototipo se conecta a un servidor local del software Blynk, que a su vez permite ver los datos en un móvil conectado en la misma red. En el envió de mensajes del prototipo se ha analizado su consumo y se ha validado el envío de la información con Wireshark a través de la red. Resultados: El tamaño de los datos cifrados fue de 13 a 15 Bytes, al descifrar resulta de 24 Bytes a 32 Bytes. En consecuencia, al cifrar y descifrar el espacio ocupado en la memoria flash es de 22284 bytes, 8% del espacio de almacenamiento total. El uso de la SRAM de la placa de desarrollo implementando el algoritmo de cifrado es 1402 bytes 17% del total y por último, el tiempo que se tarda el algoritmo cifrando, al realizar más de 200 operaciones de cifrado, dio como resultado 1741 microsegundos y el descifrado con una muestra igual al cifrado, se tardó un promedio de 2752 microsegundos. Al realizar la captura de paquetes con Wireshark en el proceso ya mencionado, se evidenció el cifrado de los datos de forma efectiva. Conclusiones: El algoritmo de cifrado XXTEA ha demostrado que puede reforzar la seguridad en la capa de aplicación para dispositivos IoT, como se demuestra en la implementación de este prototipo |
publishDate |
2022 |
dc.date.accessioned.none.fl_str_mv |
2022-07-26T17:03:26Z |
dc.date.available.none.fl_str_mv |
2022-07-26T17:03:26Z |
dc.date.created.none.fl_str_mv |
2022-02-02 |
dc.type.degree.spa.fl_str_mv |
Producción Académica |
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/29883 |
url |
http://hdl.handle.net/11349/29883 |
dc.language.iso.spa.fl_str_mv |
spa |
language |
spa |
dc.rights.*.fl_str_mv |
Atribución 2.5 Colombia |
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/2.5/co/ |
dc.rights.acceso.spa.fl_str_mv |
Abierto (Texto Completo) |
rights_invalid_str_mv |
Atribución 2.5 Colombia http://creativecommons.org/licenses/by/2.5/co/ 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 |
http://repository.udistrital.edu.co/bitstream/11349/29883/1/CalderonNovoaAndresFelipe2022.pdf http://repository.udistrital.edu.co/bitstream/11349/29883/2/Licencia-de-Uso-PublicacionV2-2016.pdf http://repository.udistrital.edu.co/bitstream/11349/29883/3/license_rdf http://repository.udistrital.edu.co/bitstream/11349/29883/4/license.txt http://repository.udistrital.edu.co/bitstream/11349/29883/5/CalderonNovoaAndresFelipe2022.pdf.jpg http://repository.udistrital.edu.co/bitstream/11349/29883/6/Licencia-de-Uso-PublicacionV2-2016.pdf.jpg |
bitstream.checksum.fl_str_mv |
0efa63f64ff81d37fc634a5f2012b7ab 99ef3f1bc25fa4e538d5736380de6f36 1608e658af296c3febc577e957e919bf 997daf6c648c962d566d7b082dac908d 9fd554dbb067c9b910ea04fb1feb7a45 41b9cae6d056a08378cca5cd3c848a4a |
bitstream.checksumAlgorithm.fl_str_mv |
MD5 MD5 MD5 MD5 MD5 MD5 |
repository.name.fl_str_mv |
Repositorio Institucional Universidad Distrital - RIUD |
repository.mail.fl_str_mv |
repositorio@udistrital.edu.co |
_version_ |
1803712678298910720 |
spelling |
Wanumen Silva, Luis FelipeCalderón Novoa, Andrés FelipeYepes Carreño, Julián David2022-07-26T17:03:26Z2022-07-26T17:03:26Z2022-02-02http://hdl.handle.net/11349/29883Contexto: El rápido desarrollo de la tecnología informática en la actualidad a menudo resulta en el uso indebido de esta tecnología en actos delictivos. Uno de los casos más comunes es el rastreo de datos contenidos en redes de internet de las cosas, en el que manipulan o se acceden a datos privados; dicha situación, crea la necesidad de fortalecer la seguridad informática en escenarios como los ya mencionados; para la conveniencia de los usuarios en el uso de tecnología informática, esto se puede conseguir mediante cifrado simétrico. Este cifrado, sobre los datos transmitidos por la red, se realiza mediante el método XXTEA. XXTEA es un algoritmo de encriptación simple pero poderoso basado en iteraciones de Feistel. El cifrado y el descifrado se llevan a cabo en un prototipo de IoT, hecho en una placa Arduino, que se comunica con un servidor gratuito a través de WiFi y se analizarán los resultados de consumo del algoritmo. Metodología: Se usa una placa de desarrollo Arduino MEGA-2560, en la cual se instala sensor de ultra sonido, el HC-SR04 al que también se le incorpora el ESP8266 v1, un módulo sencillo de WiFi para enviar datos cifrados con XXTEA y en claro a través de una comunicación inalámbrica del estándar 802.11(WiFi). Este prototipo se conecta a un servidor local del software Blynk, que a su vez permite ver los datos en un móvil conectado en la misma red. En el envió de mensajes del prototipo se ha analizado su consumo y se ha validado el envío de la información con Wireshark a través de la red. Resultados: El tamaño de los datos cifrados fue de 13 a 15 Bytes, al descifrar resulta de 24 Bytes a 32 Bytes. En consecuencia, al cifrar y descifrar el espacio ocupado en la memoria flash es de 22284 bytes, 8% del espacio de almacenamiento total. El uso de la SRAM de la placa de desarrollo implementando el algoritmo de cifrado es 1402 bytes 17% del total y por último, el tiempo que se tarda el algoritmo cifrando, al realizar más de 200 operaciones de cifrado, dio como resultado 1741 microsegundos y el descifrado con una muestra igual al cifrado, se tardó un promedio de 2752 microsegundos. Al realizar la captura de paquetes con Wireshark en el proceso ya mencionado, se evidenció el cifrado de los datos de forma efectiva. Conclusiones: El algoritmo de cifrado XXTEA ha demostrado que puede reforzar la seguridad en la capa de aplicación para dispositivos IoT, como se demuestra en la implementación de este prototipoContext: The rapid development of computer technology today often results in the misuse of this technology in criminal acts. One of the most common cases is the tracking of data in the Internet of Things networks, in which they manipulate or access private data; This situation creates the need to strengthen computer security in scenarios such as those already mentioned for the convenience of users in using computer technology, this can be achieved through symmetric encryption. This encryption, on the data transmitted by the network, is done using the XXTEA method. XXTEA is a simple but powerful encryption algorithm based on iterations of Feistel. Encryption and decryption are carried out on an IoT prototype, made on an Arduino board, which communicates with a free server via Wi-Fi and the intake results of the algorithm will be analyzed. Methodology: It uses a development board Arduino MEGA-2560, in which was installed a sensor ultrasound, the HC-SR04 which was also incorporated to the ESP8266 v1, a simple module Wi-Fi to send data encrypted with XXTEA and in clear through a wireless communication of the 802.11 standard ( Wi-Fi ). This prototype connects to a local Blynk software server, which allows data to be viewed on a mobile connected to the same network. In the sending of the intake prototype, it has been analyzed and validated by sending the information through the Wireshark network. Results: The size of the encrypted data was from 13 to 15 Bytes, when decrypting it results from 24 Bytes to 32 Bytes. In consequence to encrypt and decrypt the space, occupied in flash memory is 22284 bytes, 8% of the SPAT io total storage. The use SRAM development board implementing the encryption algorithm is 1402 bytes 17% of the total and finally the time it takes the algorithm encrypting, for the makeover 200 encryption operations, it gave results 1741 microseconds and decryption with a sample equal to the encryption; it took an average of 2752 microseconds. By performing the packet capture with Wireshark in the aforementioned process, the encryption of the data was evidenced effectively. Conclusions: The XXTEA encryption algorithm has shown that it can enforce application-layer security for IoT devices, as shown in the implementation of this prototype.pdfspaAtribución 2.5 Colombiahttp://creativecommons.org/licenses/by/2.5/co/Abierto (Texto Completo)http://purl.org/coar/access_right/c_abf2Internet de las cosas,ArduinoCifrado simétricoMétodo XXTEAIngeniería Telemática - Tesis y Disertaciones AcadémicasSistemas de transmisión de datosSistemas de transmisión de datos - Medidas de seguridadInternet de las cosasTecnología informàticaArduino (Controladores programables)Internet of ThingsSymmetric EncryptionXXTEA methodArduino.Solución de cifrado de bajo coste computacional en la transmisión de datos sobre un prototipo IoTLow computational cost encryption solution in data transmission over an IoT prototypeProducción Académicainfo:eu-repo/semantics/bachelorThesishttp://purl.org/coar/resource_type/c_7a1fORIGINALCalderonNovoaAndresFelipe2022.pdfCalderonNovoaAndresFelipe2022.pdfapplication/pdf1009865http://repository.udistrital.edu.co/bitstream/11349/29883/1/CalderonNovoaAndresFelipe2022.pdf0efa63f64ff81d37fc634a5f2012b7abMD51open accessLicencia-de-Uso-PublicacionV2-2016.pdfLicencia-de-Uso-PublicacionV2-2016.pdfapplication/pdf585217http://repository.udistrital.edu.co/bitstream/11349/29883/2/Licencia-de-Uso-PublicacionV2-2016.pdf99ef3f1bc25fa4e538d5736380de6f36MD52metadata only accessCC-LICENSElicense_rdflicense_rdfapplication/rdf+xml; charset=utf-8914http://repository.udistrital.edu.co/bitstream/11349/29883/3/license_rdf1608e658af296c3febc577e957e919bfMD53open accessLICENSElicense.txtlicense.txttext/plain; charset=utf-87167http://repository.udistrital.edu.co/bitstream/11349/29883/4/license.txt997daf6c648c962d566d7b082dac908dMD54open accessTHUMBNAILCalderonNovoaAndresFelipe2022.pdf.jpgCalderonNovoaAndresFelipe2022.pdf.jpgIM Thumbnailimage/jpeg10921http://repository.udistrital.edu.co/bitstream/11349/29883/5/CalderonNovoaAndresFelipe2022.pdf.jpg9fd554dbb067c9b910ea04fb1feb7a45MD55open accessLicencia-de-Uso-PublicacionV2-2016.pdf.jpgLicencia-de-Uso-PublicacionV2-2016.pdf.jpgIM Thumbnailimage/jpeg13239http://repository.udistrital.edu.co/bitstream/11349/29883/6/Licencia-de-Uso-PublicacionV2-2016.pdf.jpg41b9cae6d056a08378cca5cd3c848a4aMD56open access11349/29883oai:repository.udistrital.edu.co:11349/298832023-06-13 14:35:33.372open accessRepositorio Institucional Universidad Distrital - RIUDrepositorio@udistrital.edu.coTElDRU5DSUEgWSBBVVRPUklaQUNJw5NOIEVTUEVDSUFMIFBBUkEgUFVCTElDQVIgWSBQRVJNSVRJUiBMQSBDT05TVUxUQSBZIFVTTyBERSBDT05URU5JRE9TIEVOIEVMIFJFUE9TSVRPUklPIElOU1RJVFVDSU9OQUwgREUgTEEgVU5JVkVSU0lEQUQgRElTVFJJVEFMCgpUw6lybWlub3MgeSBjb25kaWNpb25lcyBkZSB1c28gcGFyYSBwdWJsaWNhY2nDs24gZGUgb2JyYXMgZW4gZWwgUmVwb3NpdG9yaW8gSW5zdGl0dWNpb25hbCBkZSBsYSBVbml2ZXJzaWRhZCBEaXN0cml0YWwgRnJhbmNpc2NvIEpvc8OpIGRlIENhbGRhcyAoUklVRCkKCkNvbW8gdGl0dWxhcihlcykgZGVsKG9zKSBkZXJlY2hvKHMpIGRlIGF1dG9yLCBjb25maWVybyAoZXJpbW9zKSBhIGxhIFVuaXZlcnNpZGFkIERpc3RyaXRhbCBGcmFuY2lzY28gSm9zw6kgZGUgQ2FsZGFzIChlbiBhZGVsYW50ZSwgTEEgVU5JVkVSU0lEQUQpIHVuYSBsaWNlbmNpYSBwYXJhIHVzbyBubyBleGNsdXNpdmEsIGxpbWl0YWRhIHkgZ3JhdHVpdGEgc29icmUgbGEgb2JyYSBxdWUgaW50ZWdyYXLDoSBlbCBSZXBvc2l0b3JpbyBJbnN0aXR1Y2lvbmFsIChlbiBhZGVsYW50ZSwgUklVRCksIGRlIGFjdWVyZG8gYSBsYXMgc2lndWllbnRlcyByZWdsYXMsIGxhcyBjdWFsZXMgZGVjbGFybyAoYW1vcykgY29ub2NlciB5IGFjZXB0YXI6CgphKQlFc3RhcsOhIHZpZ2VudGUgYSBwYXJ0aXIgZGUgbGEgZmVjaGEgZW4gcXVlIHNlIGluY2x1eWEgZW4gZWwgUklVRCB5IGhhc3RhIHBvciB1biBwbGF6byBkZSBkaWV6ICgxMCkgQcOxb3MsIHByb3Jyb2dhYmxlIGluZGVmaW5pZGFtZW50ZSBwb3IgZWwgdGllbXBvIHF1ZSBkdXJlIGVsIGRlcmVjaG8gUGF0cmltb25pYWwgZGVsIGF1dG9yOyBsYSBjdWFsIHBvZHLDoSBkYXJzZSBwb3IgdGVybWluYWRhIHByZXZpYSBzb2xpY2l0dWQgYSBMQSBVTklWRVJTSURBRCBwb3IgZXNjcml0byBjb24gdW5hIGFudGVsYWNpw7NuIGRlIGRvcyAoMikgbWVzZXMgYW50ZXMgZGVsIHZlbmNpbWllbnRvIGRlbCBwbGF6byBpbmljaWFsIG8gZWwgZGUgc3UocykgcHLDs3Jyb2dhKHMpLgoKYikJTEEgVU5JVkVSU0lEQUQgcG9kcsOhIHB1YmxpY2FyIGxhIG9icmEgZW4gbGFzIGRpc3RpbnRhcyB2ZXJzaW9uZXMgcmVxdWVyaWRhcyBwb3IgZWwgUklVRCAoZGlnaXRhbCwgaW1wcmVzbywgZWxlY3Ryw7NuaWNvIHUgb3RybyBtZWRpbyBjb25vY2lkbyBvIHBvciBjb25vY2VyKSBMQSBVTklWRVJTSURBRCBubyBzZXLDoSByZXNwb25zYWJsZSBlbiBlbCBldmVudG8gcXVlIGVsIGRvY3VtZW50byBhcGFyZXpjYSByZWZlcmVuY2lhZG8gZW4gbW90b3JlcyBkZSBiw7pzcXVlZGEgbyByZXBvc2l0b3Jpb3MgZGlmZXJlbnRlcyBhbCBSSVVELCB1bmEgdmV6IGVsKG9zKSBhdXRvcihlcykgc29saWNpdGVuIHN1IGVsaW1pbmFjacOzbiBkZWwgUklVRCwgZGFkbyBxdWUgbGEgbWlzbWEgc2Vyw6EgcHVibGljYWRhIGVuIEludGVybmV0LgoKYykJTGEgYXV0b3JpemFjacOzbiBzZSBoYWNlIGEgdMOtdHVsbyBncmF0dWl0bywgcG9yIGxvIHRhbnRvLCBsb3MgYXV0b3JlcyByZW51bmNpYW4gYSByZWNpYmlyIGJlbmVmaWNpbyBhbGd1bm8gcG9yIGxhIHB1YmxpY2FjacOzbiwgZGlzdHJpYnVjacOzbiwgY29tdW5pY2FjacOzbiBww7pibGljYSB5IGN1YWxxdWllciBvdHJvIHVzbyBxdWUgc2UgaGFnYSBlbiBsb3MgdMOpcm1pbm9zIGRlIGxhIHByZXNlbnRlIGxpY2VuY2lhIHkgZGUgbGEgbGljZW5jaWEgZGUgdXNvIGNvbiBxdWUgc2UgcHVibGljYSAoQ3JlYXRpdmUgQ29tbW9ucykuCgpkKQlMb3MgY29udGVuaWRvcyBwdWJsaWNhZG9zIGVuIGVsIFJJVUQgc29uIG9icmEocykgb3JpZ2luYWwoZXMpIHNvYnJlIGxhIGN1YWwoZXMpIGVsKG9zKSBhdXRvcihlcykgY29tbyB0aXR1bGFyZXMgZGUgbG9zIGRlcmVjaG9zIGRlIGF1dG9yLCBhc3VtZW4gdG90YWwgcmVzcG9uc2FiaWxpZGFkIHBvciBlbCBjb250ZW5pZG8gZGUgc3Ugb2JyYSBhbnRlIExBIFVOSVZFUlNJREFEIHkgYW50ZSB0ZXJjZXJvcy4gRW4gdG9kbyBjYXNvIExBIFVOSVZFUlNJREFEIHNlIGNvbXByb21ldGUgYSBpbmRpY2FyIHNpZW1wcmUgbGEgYXV0b3LDrWEgaW5jbHV5ZW5kbyBlbCBub21icmUgZGVsIGF1dG9yIHkgbGEgZmVjaGEgZGUgcHVibGljYWNpw7NuLgoKZSkJTEEgVU5JVkVSU0lEQUQgcG9kcsOhIGluY2x1aXIgbGEgb2JyYSBlbiBsb3Mgw61uZGljZXMgeSBidXNjYWRvcmVzIHF1ZSBlc3RpbWVuIG5lY2VzYXJpb3MgcGFyYSBtYXhpbWl6YXIgbGEgdmlzaWJpbGlkYWQgZWwgdXNvIHkgZWwgaW1wYWN0byBkZSBsYSBwcm9kdWNjacOzbiBjaWVudMOtZmljYSwgYXJ0w61zdGljYSB5IGFjYWTDqW1pY2EgZW4gbGEgY29tdW5pZGFkIGxvY2FsLCBuYWNpb25hbCBvIGludGVybmFjaW9uYWwuCgoKZikJTEEgVU5JVkVSU0lEQUQgcG9kcsOhIGNvbnZlcnRpciBsYSBvYnJhIGEgY3VhbHF1aWVyIG1lZGlvIG8gZm9ybWF0byBjb24gZWwgZmluIGRlIHN1IHByZXNlcnZhY2nDs24gZW4gZWwgdGllbXBvIHF1ZSBsYSBwcmVzZW50ZSBsaWNlbmNpYSB5IGxhIGRlIHN1cyBwcsOzcnJvZ2FzLgoKCkNvbiBiYXNlIGVuIGxvIGFudGVyaW9yIGF1dG9yaXpvKGFtb3MpLCBhIGZhdm9yIGRlbCBSSVVEIHkgZGUgc3VzIHVzdWFyaW9zLCBsYSBwdWJsaWNhY2nDs24geSBjb25zdWx0YSBkZSBsYSBzaWd1aWVudGUgb2JyYToKClRpdHVsbwoKQXV0b3IgICAgICAgQXBlbGxpZG9zICAgICAgICAgTm9tYnJlcwoKMQoKMgoKMwoKCmcpCUF1dG9yaXpvKGFtb3MpLCBxdWUgbGEgb2JyYSBzZWEgcHVlc3RhIGEgZGlzcG9zaWNpw7NuIGRlbCBww7pibGljbyBlbiBsb3MgdMOpcm1pbm9zIGVzdGFibGVjaWRvcyBlbiBsb3MgbGl0ZXJhbGVzIGFudGVyaW9yZXMsIGJham8gbG9zIGzDrW1pdGVzIGRlZmluaWRvcyBwb3IgTEEgVU5JVkVSU0lEQUQsIGVuIGxhcyDigJxDb25kaWNpb25lcyBkZSB1c28gZGUgZXN0cmljdG8gY3VtcGxpbWllbnRv4oCdIGRlIGxvcyByZWN1cnNvcyBwdWJsaWNhZG9zIGVuIGVsIFJJVUQsIGN1eW8gdGV4dG8gY29tcGxldG8gc2UgcHVlZGUgY29uc3VsdGFyIGVuIGh0dHA6Ly9yZXBvc2l0b3J5LnVkaXN0cml0YWwuZWR1LmNvLwoKaCkJQ29ub3pjbyhjZW1vcykgeSBhY2VwdG8oYW1vcykgcXVlIG90b3JnbyhhbW9zKSB1bmEgbGljZW5jaWEgZXNwZWNpYWwgcGFyYSBwdWJsaWNhY2nDs24gZGUgb2JyYXMgZW4gZWwgUmVwb3NpdG9yaW8gSW5zdGl0dWNpb25hbCBkZSBsYSBVbml2ZXJzaWRhZCBEaXN0cml0YWwgRnJhbmNpc2NvIEpvc8OpIGRlIENhbGRhcywgbGljZW5jaWEgICBkZSBsYSBjdWFsIGhlIChoZW1vcykgb2J0ZW5pZG8gdW5hIGNvcGlhLgoKaSkJTWFuaWZpZXN0byhhbW9zKSBtaSAobnVlc3RybykgdG90YWwgYWN1ZXJkbyBjb24gbGFzIGNvbmRpY2lvbmVzIGRlIHVzbyB5IHB1YmxpY2FjacOzbiBlbiBlbCBSZXBvc2l0b3JpbyBJbnN0aXR1Y2lvbmFsIGRlIGxhIFVuaXZlcnNpZGFkIERpc3RyaXRhbCBGcmFuY2lzY28gSm9zw6kgZGUgQ2FsZGFzIHF1ZSBzZSBkZXNjcmliZW4geSBleHBsaWNhbiBlbiBlbCBwcmVzZW50ZSBkb2N1bWVudG8uCgpqKQlDb25vemNvKGNlbW9zKSBsYSBub3JtYXRpdmlkYWQgaW50ZXJuYSBkZSAgTEEgVU5JVkVSU0lEQUQ7IGVuIGNvbmNyZXRvLCBlbCBBY3VlcmRvIDAwNCBkZSAyMDEyIGRlbCBDU1UsIEFjdWVyZG8gMDIzIGRlIDIwMTIgZGVsIENTVSBzb2JyZSBQb2zDrXRpY2EgRWRpdG9yaWFsLCBBY3VlcmRvIDAyNiAgZGVsIDMxIGRlIGp1bGlvIGRlIDIwMTIgc29icmUgZWwgcHJvY2VkaW1pZW50byBwYXJhIGxhIHB1YmxpY2FjacOzbiBkZSB0ZXNpcyBkZSBwb3N0Z3JhZG8gZGUgbG9zIGVzdHVkaWFudGVzIGRlIGxhIFVuaXZlcnNpZGFkIERpc3RyaXRhbCBGcmFuY2lzY28gSm9zw6kgZGUgQ2FsZGFzLCAgQWN1ZXJkbyAwMzAgZGVsIDAzIGRlIGRpY2llbWJyZSBkZSAyMDEzIHBvciBtZWRpbyBkZWwgY3VhbCBzZSBjcmVhIGVsIFJlcG9zaXRvcmlvIEluc3RpdHVjaW9uYWwgZGUgbGEgVW5pdmVyc2lkYWQgRGlzdHJpdGFsIEZyYW5jaXNjbyBKb3PDqSBkZSBDYWxkYXMsIEFjdWVyZG8gMDM4IGRlIDIwMTUgMjAxNSDigJxwb3IgZWwgY3VhbCBzZSBtb2RpZmljYSBlbCBBY3VlcmRvIDAzMSBkZSAyMDE0IGRlIDIwMTQgcXVlIHJlZ2xhbWVudGEgZWwgdHJhYmFqbyBkZSBncmFkbyBwYXJhIGxvcyBlc3R1ZGlhbnRlcyBkZSBwcmVncmFkbyBkZSBsYSBVbml2ZXJzaWRhZCBEaXN0cml0YWwgRnJhbmNpc2NvIEpvc8OpIGRlIENhbGRhcyB5IHNlIGRpY3RhbiBvdHJhcyBkaXJlY3RyaWNlc+KAnSB5IGxhcyBkZW3DoXMgbm9ybWFzIGNvbmNvcmRhbnRlIHkgY29tcGxlbWVudGFyaWFzIHF1ZSByaWdlbiBhbCByZXNwZWN0bywgZXNwZWNpYWxtZW50ZSBsYSBsZXkgMjMgZGUgMTk4MiwgbGEgbGV5IDQ0IGRlIDE5OTMgeSBsYSBkZWNpc2nDs24gQW5kaW5hIDM1MSBkZSAxOTkzLiBFc3RvcyBkb2N1bWVudG9zIHBvZHLDoW4gc2VyIGNvbnN1bHRhZG9zIHkgZGVzY2FyZ2Fkb3MgZW4gZWwgcG9ydGFsIHdlYiBkZSBsYSBiaWJsaW90ZWNhIGh0dHA6Ly9zaXN0ZW1hZGViaWJsaW90ZWNhcy51ZGlzdHJpdGFsLmVkdS5jby8KCmspCUFjZXB0byhhbW9zKSBxdWUgTEEgVU5JVkVSU0lEQUQgbm8gc2UgcmVzcG9uc2FiaWxpemEgcG9yIGxhcyBpbmZyYWNjaW9uZXMgYSBsYSBwcm9waWVkYWQgaW50ZWxlY3R1YWwgbyBEZXJlY2hvcyBkZSBBdXRvciBjYXVzYWRhcyBwb3IgbG9zIHRpdHVsYXJlcyBkZSBsYSBwcmVzZW50ZSBMaWNlbmNpYSB5IGRlY2xhcmFtb3MgcXVlIG1hbnRlbmRyw6kgKGVtb3MpIGluZGVtbmUgYSBMQSBVTklWRVJTSURBRCBwb3IgbGFzIHJlY2xhbWFjaW9uZXMgbGVnYWxlcyBkZSBjdWFscXVpZXIgdGlwbyBxdWUgbGxlZ2FyZW4gYSBwcmVzZW50YXJzZSBwb3IgdmlvbGFjacOzbiBkZSBkZXJlY2hvcyBhIGxhIHByb3BpZWRhZCBpbnRlbGVjdHVhbCBvIGRlIEF1dG9yIHJlbGFjaW9uYWRvcyBjb24gbG9zIGRvY3VtZW50b3MgcmVnaXN0cmFkb3MgZW4gZWwgUklVRC4KCmwpCUVsIChsb3MpIGF1dG9yKGVzKSBtYW5pZmllc3RhKG1vcykgcXVlIGxhIG9icmEgb2JqZXRvIGRlIGxhIHByZXNlbnRlIGF1dG9yaXphY2nDs24gZXMgb3JpZ2luYWwsIGRlIGV4Y2x1c2l2YSBhdXRvcsOtYSwgeSBzZSByZWFsaXrDsyBzaW4gdmlvbGFyIG8gdXN1cnBhciBkZXJlY2hvcyBkZSBhdXRvciBkZSB0ZXJjZXJvczsgZGUgdGFsIHN1ZXJ0ZSwgZW4gY2FzbyBkZSBwcmVzZW50YXJzZSBjdWFscXVpZXIgcmVjbGFtYWNpw7NuIG8gYWNjacOzbiBwb3IgcGFydGUgZGUgdW4gdGVyY2VybyBlbiBjdWFudG8gYSBsb3MgZGVyZWNob3MgZGUgYXV0b3Igc29icmUgbGEgb2JyYSwgZWwgKGxvcykgZXN0dWRpYW50ZShzKSDigJMgYXV0b3IoZXMpIGFzdW1pcsOhKG4pIHRvZGEgbGEgcmVzcG9uc2FiaWxpZGFkIHkgc2FsZHLDoShuKSBlbiBkZWZlbnNhIGRlIGxvcyBkZXJlY2hvcyBhcXXDrSBhdXRvcml6YWRvcy4gUGFyYSB0b2RvcyBsb3MgZWZlY3RvcywgTEEgVU5JVkVSU0lEQUQgYWN0w7phIGNvbW8gdW4gdGVyY2VybyBkZSBidWVuYSBmZS4KCgptKQlFbCAobG9zKSBhdXRvcihlcykgbWFuaWZpZXN0YShtb3MpIHF1ZSBjb25vemNvKGNlbW9zKSBsYSBhdXRvbm9tw61hIHkgbG9zIGRlcmVjaG9zLCBxdWUgcG9zZWUobW9zKSBzb2JyZSBsYSBvYnJhIHksIGNvbW8gdGFsLCBlcyAoc29tb3MpIHJlc3BvbnNhYmxlKHMpIGRlbCBhbGNhbmNlIGp1csOtZGljbyB5IGxlZ2FsLCBkZSBlc2NvZ2VyIGxhIG9wY2nDs24gZGUgbGEgcHVibGljYWNpw7NuIG8gZGUgcmVzdHJpY2Npw7NuIGRlIGxhIHB1YmxpY2FjacOzbiBkZWwgZG9jdW1lbnRvIHJlZ2lzdHJhZG8gZW4gZWwgUklVRC4KCgoKCgoKU0kgRUwgRE9DVU1FTlRPIFNFIEJBU0EgRU4gVU4gVFJBQkFKTyBRVUUgSEEgU0lETyBQQVRST0NJTkFETyBPIEFQT1lBRE8gUE9SIFVOQSBBR0VOQ0lBIE8gVU5BIE9SR0FOSVpBQ0nDk04sIENPTiBFWENFUENJw5NOIERFIExBIFVOSVZFUlNJREFEIERJU1RSSVRBTCBGUkFOQ0lTQ08gSk9TRSBERSBDQUxEQVMsIExPUyBBVVRPUkVTIEdBUkFOVElaQU4gUVVFIFNFIEhBIENVTVBMSURPIENPTiBMT1MKREVSRUNIT1MgWSBPQkxJR0FDSU9ORVMgUkVRVUVSSURPUyBQT1IgRUwgUkVTUEVDVElWTyBDT05UUkFUTyBPIEFDVUVSRE8uCgoKCgoKCgoKCgoKCgoKCgoKCgoKCkVuIGNvbnN0YW5jaWEgZGUgbG8gYW50ZXJpb3IsIGZpcm1vKGFtb3MpIGVsIHByZXNlbnRlIGRvY3VtZW50bywgZW4gbGEgY2l1ZGFkIGRlIEJvZ290w6EsIEQuQy4sIGEgbG9zCgoKRklSTUEgREUgTE9TIFRJVFVMQVJFUyBERSBERVJFQ0hPUyBERSBBVVRPUgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fICAgQy5DLiBOby4gX19fX19fX19fX19fX19fX19fCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18gICBDLkMuIE5vLiBfX19fX19fX19fX19fX19fX18KCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXyAgIEMuQy4gTm8uIF9fX19fX19fX19fX19fX19fXwoKCgpDb3JyZW8gRWxlY3Ryw7NuaWNvIEluc3RpdHVjaW9uYWwgZGVsIChkZSBsb3MpIEF1dG9yKGVzKToKCkF1dG9yCSAgICAgIENvcnJlbyBFbGVjdHLDs25pY28KCjEKCjIKCjMKCk5vbWJyZSBkZSBEaXJlY3RvcihlcykgZGUgR3JhZG86CgoxCgoyCgozCgpOb21icmUgRmFjdWx0YWQgeSBQcm95ZWN0byBDdXJyaWN1bGFyOgoKRmFjdWx0YWQJUHJveWVjdG8gQ3VycmljdWxhcgoKCgoKCgoKCk5vdGE6IEVuIGNhc28gcXVlIG5vIGVzdMOpIGRlIGFjdWVyZG8gY29uIGxhcyBjb25kaWNpb25lcyBkZSBsYSBwcmVzZW50ZSBsaWNlbmNpYSwgeSBtYW5pZmllc3RlIGFsZ3VuYSByZXN0cmljY2nDs24gc29icmUgbGEgb2JyYSwganVzdGlmaXF1ZSBsb3MgbW90aXZvcyBwb3IgbG9zIGN1YWxlcyBlbCBkb2N1bWVudG8geSBzdXMgYW5leG9zIG5vIHB1ZWRlbiBzZXIgcHVibGljYWRvcyBlbiBlbCBSZXBvc2l0b3JpbyBJbnN0aXR1Y2lvbmFsIGRlIGxhIFVuaXZlcnNpZGFkIERpc3RyaXRhbCBGcmFuY2lzY28gSm9zw6kgZGUgQ2FsZGFzIFJJVUQuCgoKU2kgcmVxdWllcmUgbcOhcyBlc3BhY2lvLCBwdWVkZSBhbmV4YXIgdW5hIGNvcGlhIHNpbWlsYXIgYSBlc3RhIGhvamEK |