Diseño de un prototipo web de recolección y validación de datos empleados para detectar enfermedades en las hojas de plantas medicinales a través de procesamiento de imágenes mediante redes neuronales convulsiónales caso de estudio: caléndula (Cercospora) y albahaca (Colletotrichum Gloeosporioides)

En el campo de visión por computadora, las redes neuronales convolucionales y el apoyo de los recursos de procesamiento como Google Colab o computadores con ram de 24 o 32 GB, han permitido aplicar modelos para predecir la clasificación de una imagen determinada. En el trabajo actual se utilizaron m...

Full description

Autores:
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/29604
Acceso en línea:
http://hdl.handle.net/11349/29604
Palabra clave:
Arquitectura Web
Prototipo Web
Redes Neuronales Convolucionales
Clasificación de Imágenes
Plantas Enfermas
Plantas Sanas
Especialización en Ingeniería de Software - Tesis y Disertaciones Académicas
Sistemas automáticos de recolección de datos
Procesamiento de imágenes
Gráficas por computador
Plantas medicinales - Análisis de información
Web Prototype
Convolutional Neural Networks
Image Classification
Deep Learning
Diseased Plants
Healthy Plants
Rights
License
Atribución-NoComercial 2.5 Colombia
id UDISTRITA2_1fecf9ee5b2e8ae20cc4c4dff70d2928
oai_identifier_str oai:repository.udistrital.edu.co:11349/29604
network_acronym_str UDISTRITA2
network_name_str RIUD: repositorio U. Distrital
repository_id_str
dc.title.spa.fl_str_mv Diseño de un prototipo web de recolección y validación de datos empleados para detectar enfermedades en las hojas de plantas medicinales a través de procesamiento de imágenes mediante redes neuronales convulsiónales caso de estudio: caléndula (Cercospora) y albahaca (Colletotrichum Gloeosporioides)
dc.title.titleenglish.spa.fl_str_mv Design of a web prototype for the collection and validation of data used to detect diseases in the leaves of medicinal plants with image processing through convolutional neuronal networks. Case study: Calendula and Basil (Cercospora / Colletotrichum Gloeosporioides)
title Diseño de un prototipo web de recolección y validación de datos empleados para detectar enfermedades en las hojas de plantas medicinales a través de procesamiento de imágenes mediante redes neuronales convulsiónales caso de estudio: caléndula (Cercospora) y albahaca (Colletotrichum Gloeosporioides)
spellingShingle Diseño de un prototipo web de recolección y validación de datos empleados para detectar enfermedades en las hojas de plantas medicinales a través de procesamiento de imágenes mediante redes neuronales convulsiónales caso de estudio: caléndula (Cercospora) y albahaca (Colletotrichum Gloeosporioides)
Arquitectura Web
Prototipo Web
Redes Neuronales Convolucionales
Clasificación de Imágenes
Plantas Enfermas
Plantas Sanas
Especialización en Ingeniería de Software - Tesis y Disertaciones Académicas
Sistemas automáticos de recolección de datos
Procesamiento de imágenes
Gráficas por computador
Plantas medicinales - Análisis de información
Web Prototype
Convolutional Neural Networks
Image Classification
Deep Learning
Diseased Plants
Healthy Plants
title_short Diseño de un prototipo web de recolección y validación de datos empleados para detectar enfermedades en las hojas de plantas medicinales a través de procesamiento de imágenes mediante redes neuronales convulsiónales caso de estudio: caléndula (Cercospora) y albahaca (Colletotrichum Gloeosporioides)
title_full Diseño de un prototipo web de recolección y validación de datos empleados para detectar enfermedades en las hojas de plantas medicinales a través de procesamiento de imágenes mediante redes neuronales convulsiónales caso de estudio: caléndula (Cercospora) y albahaca (Colletotrichum Gloeosporioides)
title_fullStr Diseño de un prototipo web de recolección y validación de datos empleados para detectar enfermedades en las hojas de plantas medicinales a través de procesamiento de imágenes mediante redes neuronales convulsiónales caso de estudio: caléndula (Cercospora) y albahaca (Colletotrichum Gloeosporioides)
title_full_unstemmed Diseño de un prototipo web de recolección y validación de datos empleados para detectar enfermedades en las hojas de plantas medicinales a través de procesamiento de imágenes mediante redes neuronales convulsiónales caso de estudio: caléndula (Cercospora) y albahaca (Colletotrichum Gloeosporioides)
title_sort Diseño de un prototipo web de recolección y validación de datos empleados para detectar enfermedades en las hojas de plantas medicinales a través de procesamiento de imágenes mediante redes neuronales convulsiónales caso de estudio: caléndula (Cercospora) y albahaca (Colletotrichum Gloeosporioides)
dc.contributor.advisor.none.fl_str_mv Daza Corredor, Alejandro Paolo
dc.subject.spa.fl_str_mv Arquitectura Web
Prototipo Web
Redes Neuronales Convolucionales
Clasificación de Imágenes
Plantas Enfermas
Plantas Sanas
topic Arquitectura Web
Prototipo Web
Redes Neuronales Convolucionales
Clasificación de Imágenes
Plantas Enfermas
Plantas Sanas
Especialización en Ingeniería de Software - Tesis y Disertaciones Académicas
Sistemas automáticos de recolección de datos
Procesamiento de imágenes
Gráficas por computador
Plantas medicinales - Análisis de información
Web Prototype
Convolutional Neural Networks
Image Classification
Deep Learning
Diseased Plants
Healthy Plants
dc.subject.lemb.spa.fl_str_mv Especialización en Ingeniería de Software - Tesis y Disertaciones Académicas
Sistemas automáticos de recolección de datos
Procesamiento de imágenes
Gráficas por computador
Plantas medicinales - Análisis de información
dc.subject.keyword.spa.fl_str_mv Web Prototype
Convolutional Neural Networks
Image Classification
Deep Learning
Diseased Plants
Healthy Plants
description En el campo de visión por computadora, las redes neuronales convolucionales y el apoyo de los recursos de procesamiento como Google Colab o computadores con ram de 24 o 32 GB, han permitido aplicar modelos para predecir la clasificación de una imagen determinada. En el trabajo actual se utilizaron modelos previamente entrenados que sirvieron para que el prototipo funcional de recolección de imágenes medicinales, desarrollado con django,python y javascript, tuviera implı́cito un filtro autómatico que sugiriera si es por ejemplo una planta o no, que además presentara si ésta se encuentra enferma o sana, según la imagen almacenada. Estas validaciones automáticas se utilizan principalmente para construir datasets de entrenamiento posteriores, con temas similares o que involucren plantas u hojas de plantas y su respectivo aprovechamiento y análisis. Este trabajo contiene la aplicación de estos modelos dentro del prototipo web, asegurando accesibilidad a los datos almacenados, sin embargo no descarga la evaluación manual o del usuario, que es muy importante también, pues los modelos a veces quedan sobreajustados.
publishDate 2021
dc.date.created.none.fl_str_mv 2021-11-26
dc.date.accessioned.none.fl_str_mv 2022-07-07T15:01:44Z
dc.date.available.none.fl_str_mv 2022-07-07T15:01:44Z
dc.type.degree.spa.fl_str_mv Investigación-Innovación
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/29604
url http://hdl.handle.net/11349/29604
dc.language.iso.spa.fl_str_mv spa
language spa
dc.rights.*.fl_str_mv Atribución-NoComercial 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-nc/2.5/co/
dc.rights.acceso.spa.fl_str_mv Abierto (Texto Completo)
rights_invalid_str_mv Atribución-NoComercial 2.5 Colombia
http://creativecommons.org/licenses/by-nc/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/29604/1/Beltr%c3%a1nBeltr%c3%a1nN%c3%a9storCamilo2021.pdf
http://repository.udistrital.edu.co/bitstream/11349/29604/2/Licencia%20de%20uso%20y%20publicacion.pdf
http://repository.udistrital.edu.co/bitstream/11349/29604/3/license_rdf
http://repository.udistrital.edu.co/bitstream/11349/29604/4/license.txt
http://repository.udistrital.edu.co/bitstream/11349/29604/5/Beltr%c3%a1nBeltr%c3%a1nN%c3%a9storCamilo2021.pdf.jpg
http://repository.udistrital.edu.co/bitstream/11349/29604/6/Licencia%20de%20uso%20y%20publicacion.pdf.jpg
bitstream.checksum.fl_str_mv f21ca1b7b2103f7fd3ee942bd94f7721
06f3ba90592a814e199b011694da4cb8
40513e59b5d1327fcca263d3c2a2e44a
997daf6c648c962d566d7b082dac908d
d554a7ea158adc24bf2b1c6c33e82fc4
d681a686f8d725041afd6e2b9bce40d9
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_ 1814111189037219840
spelling Daza Corredor, Alejandro PaoloRodríguez Mojica, Edda CamilaBeltrán Beltrán, Néstor Camilo2022-07-07T15:01:44Z2022-07-07T15:01:44Z2021-11-26http://hdl.handle.net/11349/29604En el campo de visión por computadora, las redes neuronales convolucionales y el apoyo de los recursos de procesamiento como Google Colab o computadores con ram de 24 o 32 GB, han permitido aplicar modelos para predecir la clasificación de una imagen determinada. En el trabajo actual se utilizaron modelos previamente entrenados que sirvieron para que el prototipo funcional de recolección de imágenes medicinales, desarrollado con django,python y javascript, tuviera implı́cito un filtro autómatico que sugiriera si es por ejemplo una planta o no, que además presentara si ésta se encuentra enferma o sana, según la imagen almacenada. Estas validaciones automáticas se utilizan principalmente para construir datasets de entrenamiento posteriores, con temas similares o que involucren plantas u hojas de plantas y su respectivo aprovechamiento y análisis. Este trabajo contiene la aplicación de estos modelos dentro del prototipo web, asegurando accesibilidad a los datos almacenados, sin embargo no descarga la evaluación manual o del usuario, que es muy importante también, pues los modelos a veces quedan sobreajustados.In the field of computer vision, Convolutional Neural Networks (CNN) and the support of processing resources such Google Colab or computers with 24 or 32 GB ram, have made possible it to apply models to predict the classification of a given image. In the current document, previously trained models were used in the created web prototype for suggesting that an image contains a plant or not, and whether it shows a diseased or healthy plant. These automatic validations are mainly used to build subsequent training datasets, with similar topics or involving plants or plant leaves and their respective use and analysis. The web prototype was built with django, python and javascript. This work contains the application of these models within the web prototype, ensuring accessibility to the stored data, however it does not download the manual or user evaluation, which is also very important, since the models are sometimes over-adjusted.pdfspaAtribución-NoComercial 2.5 Colombiahttp://creativecommons.org/licenses/by-nc/2.5/co/Abierto (Texto Completo)http://purl.org/coar/access_right/c_abf2Arquitectura WebPrototipo WebRedes Neuronales ConvolucionalesClasificación de ImágenesPlantas EnfermasPlantas SanasEspecialización en Ingeniería de Software - Tesis y Disertaciones AcadémicasSistemas automáticos de recolección de datosProcesamiento de imágenesGráficas por computadorPlantas medicinales - Análisis de informaciónWeb PrototypeConvolutional Neural NetworksImage ClassificationDeep LearningDiseased PlantsHealthy PlantsDiseño de un prototipo web de recolección y validación de datos empleados para detectar enfermedades en las hojas de plantas medicinales a través de procesamiento de imágenes mediante redes neuronales convulsiónales caso de estudio: caléndula (Cercospora) y albahaca (Colletotrichum Gloeosporioides)Design of a web prototype for the collection and validation of data used to detect diseases in the leaves of medicinal plants with image processing through convolutional neuronal networks. Case study: Calendula and Basil (Cercospora / Colletotrichum Gloeosporioides)Investigación-Innovacióninfo:eu-repo/semantics/bachelorThesishttp://purl.org/coar/resource_type/c_7a1fORIGINALBeltránBeltránNéstorCamilo2021.pdfBeltránBeltránNéstorCamilo2021.pdfapplication/pdf5947988http://repository.udistrital.edu.co/bitstream/11349/29604/1/Beltr%c3%a1nBeltr%c3%a1nN%c3%a9storCamilo2021.pdff21ca1b7b2103f7fd3ee942bd94f7721MD51open accessLicencia de uso y publicacion.pdfLicencia de uso y publicacion.pdfapplication/pdf760680http://repository.udistrital.edu.co/bitstream/11349/29604/2/Licencia%20de%20uso%20y%20publicacion.pdf06f3ba90592a814e199b011694da4cb8MD52metadata only accessCC-LICENSElicense_rdflicense_rdfapplication/rdf+xml; charset=utf-8920http://repository.udistrital.edu.co/bitstream/11349/29604/3/license_rdf40513e59b5d1327fcca263d3c2a2e44aMD53open accessLICENSElicense.txtlicense.txttext/plain; charset=utf-87167http://repository.udistrital.edu.co/bitstream/11349/29604/4/license.txt997daf6c648c962d566d7b082dac908dMD54open accessTHUMBNAILBeltránBeltránNéstorCamilo2021.pdf.jpgBeltránBeltránNéstorCamilo2021.pdf.jpgIM Thumbnailimage/jpeg6913http://repository.udistrital.edu.co/bitstream/11349/29604/5/Beltr%c3%a1nBeltr%c3%a1nN%c3%a9storCamilo2021.pdf.jpgd554a7ea158adc24bf2b1c6c33e82fc4MD55open accessLicencia de uso y publicacion.pdf.jpgLicencia de uso y publicacion.pdf.jpgIM Thumbnailimage/jpeg13369http://repository.udistrital.edu.co/bitstream/11349/29604/6/Licencia%20de%20uso%20y%20publicacion.pdf.jpgd681a686f8d725041afd6e2b9bce40d9MD56open access11349/29604oai:repository.udistrital.edu.co:11349/296042023-06-13 14:59:34.487open accessRepositorio Institucional Universidad Distrital - RIUDrepositorio@udistrital.edu.coTElDRU5DSUEgWSBBVVRPUklaQUNJw5NOIEVTUEVDSUFMIFBBUkEgUFVCTElDQVIgWSBQRVJNSVRJUiBMQSBDT05TVUxUQSBZIFVTTyBERSBDT05URU5JRE9TIEVOIEVMIFJFUE9TSVRPUklPIElOU1RJVFVDSU9OQUwgREUgTEEgVU5JVkVSU0lEQUQgRElTVFJJVEFMCgpUw6lybWlub3MgeSBjb25kaWNpb25lcyBkZSB1c28gcGFyYSBwdWJsaWNhY2nDs24gZGUgb2JyYXMgZW4gZWwgUmVwb3NpdG9yaW8gSW5zdGl0dWNpb25hbCBkZSBsYSBVbml2ZXJzaWRhZCBEaXN0cml0YWwgRnJhbmNpc2NvIEpvc8OpIGRlIENhbGRhcyAoUklVRCkKCkNvbW8gdGl0dWxhcihlcykgZGVsKG9zKSBkZXJlY2hvKHMpIGRlIGF1dG9yLCBjb25maWVybyAoZXJpbW9zKSBhIGxhIFVuaXZlcnNpZGFkIERpc3RyaXRhbCBGcmFuY2lzY28gSm9zw6kgZGUgQ2FsZGFzIChlbiBhZGVsYW50ZSwgTEEgVU5JVkVSU0lEQUQpIHVuYSBsaWNlbmNpYSBwYXJhIHVzbyBubyBleGNsdXNpdmEsIGxpbWl0YWRhIHkgZ3JhdHVpdGEgc29icmUgbGEgb2JyYSBxdWUgaW50ZWdyYXLDoSBlbCBSZXBvc2l0b3JpbyBJbnN0aXR1Y2lvbmFsIChlbiBhZGVsYW50ZSwgUklVRCksIGRlIGFjdWVyZG8gYSBsYXMgc2lndWllbnRlcyByZWdsYXMsIGxhcyBjdWFsZXMgZGVjbGFybyAoYW1vcykgY29ub2NlciB5IGFjZXB0YXI6CgphKQlFc3RhcsOhIHZpZ2VudGUgYSBwYXJ0aXIgZGUgbGEgZmVjaGEgZW4gcXVlIHNlIGluY2x1eWEgZW4gZWwgUklVRCB5IGhhc3RhIHBvciB1biBwbGF6byBkZSBkaWV6ICgxMCkgQcOxb3MsIHByb3Jyb2dhYmxlIGluZGVmaW5pZGFtZW50ZSBwb3IgZWwgdGllbXBvIHF1ZSBkdXJlIGVsIGRlcmVjaG8gUGF0cmltb25pYWwgZGVsIGF1dG9yOyBsYSBjdWFsIHBvZHLDoSBkYXJzZSBwb3IgdGVybWluYWRhIHByZXZpYSBzb2xpY2l0dWQgYSBMQSBVTklWRVJTSURBRCBwb3IgZXNjcml0byBjb24gdW5hIGFudGVsYWNpw7NuIGRlIGRvcyAoMikgbWVzZXMgYW50ZXMgZGVsIHZlbmNpbWllbnRvIGRlbCBwbGF6byBpbmljaWFsIG8gZWwgZGUgc3UocykgcHLDs3Jyb2dhKHMpLgoKYikJTEEgVU5JVkVSU0lEQUQgcG9kcsOhIHB1YmxpY2FyIGxhIG9icmEgZW4gbGFzIGRpc3RpbnRhcyB2ZXJzaW9uZXMgcmVxdWVyaWRhcyBwb3IgZWwgUklVRCAoZGlnaXRhbCwgaW1wcmVzbywgZWxlY3Ryw7NuaWNvIHUgb3RybyBtZWRpbyBjb25vY2lkbyBvIHBvciBjb25vY2VyKSBMQSBVTklWRVJTSURBRCBubyBzZXLDoSByZXNwb25zYWJsZSBlbiBlbCBldmVudG8gcXVlIGVsIGRvY3VtZW50byBhcGFyZXpjYSByZWZlcmVuY2lhZG8gZW4gbW90b3JlcyBkZSBiw7pzcXVlZGEgbyByZXBvc2l0b3Jpb3MgZGlmZXJlbnRlcyBhbCBSSVVELCB1bmEgdmV6IGVsKG9zKSBhdXRvcihlcykgc29saWNpdGVuIHN1IGVsaW1pbmFjacOzbiBkZWwgUklVRCwgZGFkbyBxdWUgbGEgbWlzbWEgc2Vyw6EgcHVibGljYWRhIGVuIEludGVybmV0LgoKYykJTGEgYXV0b3JpemFjacOzbiBzZSBoYWNlIGEgdMOtdHVsbyBncmF0dWl0bywgcG9yIGxvIHRhbnRvLCBsb3MgYXV0b3JlcyByZW51bmNpYW4gYSByZWNpYmlyIGJlbmVmaWNpbyBhbGd1bm8gcG9yIGxhIHB1YmxpY2FjacOzbiwgZGlzdHJpYnVjacOzbiwgY29tdW5pY2FjacOzbiBww7pibGljYSB5IGN1YWxxdWllciBvdHJvIHVzbyBxdWUgc2UgaGFnYSBlbiBsb3MgdMOpcm1pbm9zIGRlIGxhIHByZXNlbnRlIGxpY2VuY2lhIHkgZGUgbGEgbGljZW5jaWEgZGUgdXNvIGNvbiBxdWUgc2UgcHVibGljYSAoQ3JlYXRpdmUgQ29tbW9ucykuCgpkKQlMb3MgY29udGVuaWRvcyBwdWJsaWNhZG9zIGVuIGVsIFJJVUQgc29uIG9icmEocykgb3JpZ2luYWwoZXMpIHNvYnJlIGxhIGN1YWwoZXMpIGVsKG9zKSBhdXRvcihlcykgY29tbyB0aXR1bGFyZXMgZGUgbG9zIGRlcmVjaG9zIGRlIGF1dG9yLCBhc3VtZW4gdG90YWwgcmVzcG9uc2FiaWxpZGFkIHBvciBlbCBjb250ZW5pZG8gZGUgc3Ugb2JyYSBhbnRlIExBIFVOSVZFUlNJREFEIHkgYW50ZSB0ZXJjZXJvcy4gRW4gdG9kbyBjYXNvIExBIFVOSVZFUlNJREFEIHNlIGNvbXByb21ldGUgYSBpbmRpY2FyIHNpZW1wcmUgbGEgYXV0b3LDrWEgaW5jbHV5ZW5kbyBlbCBub21icmUgZGVsIGF1dG9yIHkgbGEgZmVjaGEgZGUgcHVibGljYWNpw7NuLgoKZSkJTEEgVU5JVkVSU0lEQUQgcG9kcsOhIGluY2x1aXIgbGEgb2JyYSBlbiBsb3Mgw61uZGljZXMgeSBidXNjYWRvcmVzIHF1ZSBlc3RpbWVuIG5lY2VzYXJpb3MgcGFyYSBtYXhpbWl6YXIgbGEgdmlzaWJpbGlkYWQgZWwgdXNvIHkgZWwgaW1wYWN0byBkZSBsYSBwcm9kdWNjacOzbiBjaWVudMOtZmljYSwgYXJ0w61zdGljYSB5IGFjYWTDqW1pY2EgZW4gbGEgY29tdW5pZGFkIGxvY2FsLCBuYWNpb25hbCBvIGludGVybmFjaW9uYWwuCgoKZikJTEEgVU5JVkVSU0lEQUQgcG9kcsOhIGNvbnZlcnRpciBsYSBvYnJhIGEgY3VhbHF1aWVyIG1lZGlvIG8gZm9ybWF0byBjb24gZWwgZmluIGRlIHN1IHByZXNlcnZhY2nDs24gZW4gZWwgdGllbXBvIHF1ZSBsYSBwcmVzZW50ZSBsaWNlbmNpYSB5IGxhIGRlIHN1cyBwcsOzcnJvZ2FzLgoKCkNvbiBiYXNlIGVuIGxvIGFudGVyaW9yIGF1dG9yaXpvKGFtb3MpLCBhIGZhdm9yIGRlbCBSSVVEIHkgZGUgc3VzIHVzdWFyaW9zLCBsYSBwdWJsaWNhY2nDs24geSBjb25zdWx0YSBkZSBsYSBzaWd1aWVudGUgb2JyYToKClRpdHVsbwoKQXV0b3IgICAgICAgQXBlbGxpZG9zICAgICAgICAgTm9tYnJlcwoKMQoKMgoKMwoKCmcpCUF1dG9yaXpvKGFtb3MpLCBxdWUgbGEgb2JyYSBzZWEgcHVlc3RhIGEgZGlzcG9zaWNpw7NuIGRlbCBww7pibGljbyBlbiBsb3MgdMOpcm1pbm9zIGVzdGFibGVjaWRvcyBlbiBsb3MgbGl0ZXJhbGVzIGFudGVyaW9yZXMsIGJham8gbG9zIGzDrW1pdGVzIGRlZmluaWRvcyBwb3IgTEEgVU5JVkVSU0lEQUQsIGVuIGxhcyDigJxDb25kaWNpb25lcyBkZSB1c28gZGUgZXN0cmljdG8gY3VtcGxpbWllbnRv4oCdIGRlIGxvcyByZWN1cnNvcyBwdWJsaWNhZG9zIGVuIGVsIFJJVUQsIGN1eW8gdGV4dG8gY29tcGxldG8gc2UgcHVlZGUgY29uc3VsdGFyIGVuIGh0dHA6Ly9yZXBvc2l0b3J5LnVkaXN0cml0YWwuZWR1LmNvLwoKaCkJQ29ub3pjbyhjZW1vcykgeSBhY2VwdG8oYW1vcykgcXVlIG90b3JnbyhhbW9zKSB1bmEgbGljZW5jaWEgZXNwZWNpYWwgcGFyYSBwdWJsaWNhY2nDs24gZGUgb2JyYXMgZW4gZWwgUmVwb3NpdG9yaW8gSW5zdGl0dWNpb25hbCBkZSBsYSBVbml2ZXJzaWRhZCBEaXN0cml0YWwgRnJhbmNpc2NvIEpvc8OpIGRlIENhbGRhcywgbGljZW5jaWEgICBkZSBsYSBjdWFsIGhlIChoZW1vcykgb2J0ZW5pZG8gdW5hIGNvcGlhLgoKaSkJTWFuaWZpZXN0byhhbW9zKSBtaSAobnVlc3RybykgdG90YWwgYWN1ZXJkbyBjb24gbGFzIGNvbmRpY2lvbmVzIGRlIHVzbyB5IHB1YmxpY2FjacOzbiBlbiBlbCBSZXBvc2l0b3JpbyBJbnN0aXR1Y2lvbmFsIGRlIGxhIFVuaXZlcnNpZGFkIERpc3RyaXRhbCBGcmFuY2lzY28gSm9zw6kgZGUgQ2FsZGFzIHF1ZSBzZSBkZXNjcmliZW4geSBleHBsaWNhbiBlbiBlbCBwcmVzZW50ZSBkb2N1bWVudG8uCgpqKQlDb25vemNvKGNlbW9zKSBsYSBub3JtYXRpdmlkYWQgaW50ZXJuYSBkZSAgTEEgVU5JVkVSU0lEQUQ7IGVuIGNvbmNyZXRvLCBlbCBBY3VlcmRvIDAwNCBkZSAyMDEyIGRlbCBDU1UsIEFjdWVyZG8gMDIzIGRlIDIwMTIgZGVsIENTVSBzb2JyZSBQb2zDrXRpY2EgRWRpdG9yaWFsLCBBY3VlcmRvIDAyNiAgZGVsIDMxIGRlIGp1bGlvIGRlIDIwMTIgc29icmUgZWwgcHJvY2VkaW1pZW50byBwYXJhIGxhIHB1YmxpY2FjacOzbiBkZSB0ZXNpcyBkZSBwb3N0Z3JhZG8gZGUgbG9zIGVzdHVkaWFudGVzIGRlIGxhIFVuaXZlcnNpZGFkIERpc3RyaXRhbCBGcmFuY2lzY28gSm9zw6kgZGUgQ2FsZGFzLCAgQWN1ZXJkbyAwMzAgZGVsIDAzIGRlIGRpY2llbWJyZSBkZSAyMDEzIHBvciBtZWRpbyBkZWwgY3VhbCBzZSBjcmVhIGVsIFJlcG9zaXRvcmlvIEluc3RpdHVjaW9uYWwgZGUgbGEgVW5pdmVyc2lkYWQgRGlzdHJpdGFsIEZyYW5jaXNjbyBKb3PDqSBkZSBDYWxkYXMsIEFjdWVyZG8gMDM4IGRlIDIwMTUgMjAxNSDigJxwb3IgZWwgY3VhbCBzZSBtb2RpZmljYSBlbCBBY3VlcmRvIDAzMSBkZSAyMDE0IGRlIDIwMTQgcXVlIHJlZ2xhbWVudGEgZWwgdHJhYmFqbyBkZSBncmFkbyBwYXJhIGxvcyBlc3R1ZGlhbnRlcyBkZSBwcmVncmFkbyBkZSBsYSBVbml2ZXJzaWRhZCBEaXN0cml0YWwgRnJhbmNpc2NvIEpvc8OpIGRlIENhbGRhcyB5IHNlIGRpY3RhbiBvdHJhcyBkaXJlY3RyaWNlc+KAnSB5IGxhcyBkZW3DoXMgbm9ybWFzIGNvbmNvcmRhbnRlIHkgY29tcGxlbWVudGFyaWFzIHF1ZSByaWdlbiBhbCByZXNwZWN0bywgZXNwZWNpYWxtZW50ZSBsYSBsZXkgMjMgZGUgMTk4MiwgbGEgbGV5IDQ0IGRlIDE5OTMgeSBsYSBkZWNpc2nDs24gQW5kaW5hIDM1MSBkZSAxOTkzLiBFc3RvcyBkb2N1bWVudG9zIHBvZHLDoW4gc2VyIGNvbnN1bHRhZG9zIHkgZGVzY2FyZ2Fkb3MgZW4gZWwgcG9ydGFsIHdlYiBkZSBsYSBiaWJsaW90ZWNhIGh0dHA6Ly9zaXN0ZW1hZGViaWJsaW90ZWNhcy51ZGlzdHJpdGFsLmVkdS5jby8KCmspCUFjZXB0byhhbW9zKSBxdWUgTEEgVU5JVkVSU0lEQUQgbm8gc2UgcmVzcG9uc2FiaWxpemEgcG9yIGxhcyBpbmZyYWNjaW9uZXMgYSBsYSBwcm9waWVkYWQgaW50ZWxlY3R1YWwgbyBEZXJlY2hvcyBkZSBBdXRvciBjYXVzYWRhcyBwb3IgbG9zIHRpdHVsYXJlcyBkZSBsYSBwcmVzZW50ZSBMaWNlbmNpYSB5IGRlY2xhcmFtb3MgcXVlIG1hbnRlbmRyw6kgKGVtb3MpIGluZGVtbmUgYSBMQSBVTklWRVJTSURBRCBwb3IgbGFzIHJlY2xhbWFjaW9uZXMgbGVnYWxlcyBkZSBjdWFscXVpZXIgdGlwbyBxdWUgbGxlZ2FyZW4gYSBwcmVzZW50YXJzZSBwb3IgdmlvbGFjacOzbiBkZSBkZXJlY2hvcyBhIGxhIHByb3BpZWRhZCBpbnRlbGVjdHVhbCBvIGRlIEF1dG9yIHJlbGFjaW9uYWRvcyBjb24gbG9zIGRvY3VtZW50b3MgcmVnaXN0cmFkb3MgZW4gZWwgUklVRC4KCmwpCUVsIChsb3MpIGF1dG9yKGVzKSBtYW5pZmllc3RhKG1vcykgcXVlIGxhIG9icmEgb2JqZXRvIGRlIGxhIHByZXNlbnRlIGF1dG9yaXphY2nDs24gZXMgb3JpZ2luYWwsIGRlIGV4Y2x1c2l2YSBhdXRvcsOtYSwgeSBzZSByZWFsaXrDsyBzaW4gdmlvbGFyIG8gdXN1cnBhciBkZXJlY2hvcyBkZSBhdXRvciBkZSB0ZXJjZXJvczsgZGUgdGFsIHN1ZXJ0ZSwgZW4gY2FzbyBkZSBwcmVzZW50YXJzZSBjdWFscXVpZXIgcmVjbGFtYWNpw7NuIG8gYWNjacOzbiBwb3IgcGFydGUgZGUgdW4gdGVyY2VybyBlbiBjdWFudG8gYSBsb3MgZGVyZWNob3MgZGUgYXV0b3Igc29icmUgbGEgb2JyYSwgZWwgKGxvcykgZXN0dWRpYW50ZShzKSDigJMgYXV0b3IoZXMpIGFzdW1pcsOhKG4pIHRvZGEgbGEgcmVzcG9uc2FiaWxpZGFkIHkgc2FsZHLDoShuKSBlbiBkZWZlbnNhIGRlIGxvcyBkZXJlY2hvcyBhcXXDrSBhdXRvcml6YWRvcy4gUGFyYSB0b2RvcyBsb3MgZWZlY3RvcywgTEEgVU5JVkVSU0lEQUQgYWN0w7phIGNvbW8gdW4gdGVyY2VybyBkZSBidWVuYSBmZS4KCgptKQlFbCAobG9zKSBhdXRvcihlcykgbWFuaWZpZXN0YShtb3MpIHF1ZSBjb25vemNvKGNlbW9zKSBsYSBhdXRvbm9tw61hIHkgbG9zIGRlcmVjaG9zLCBxdWUgcG9zZWUobW9zKSBzb2JyZSBsYSBvYnJhIHksIGNvbW8gdGFsLCBlcyAoc29tb3MpIHJlc3BvbnNhYmxlKHMpIGRlbCBhbGNhbmNlIGp1csOtZGljbyB5IGxlZ2FsLCBkZSBlc2NvZ2VyIGxhIG9wY2nDs24gZGUgbGEgcHVibGljYWNpw7NuIG8gZGUgcmVzdHJpY2Npw7NuIGRlIGxhIHB1YmxpY2FjacOzbiBkZWwgZG9jdW1lbnRvIHJlZ2lzdHJhZG8gZW4gZWwgUklVRC4KCgoKCgoKU0kgRUwgRE9DVU1FTlRPIFNFIEJBU0EgRU4gVU4gVFJBQkFKTyBRVUUgSEEgU0lETyBQQVRST0NJTkFETyBPIEFQT1lBRE8gUE9SIFVOQSBBR0VOQ0lBIE8gVU5BIE9SR0FOSVpBQ0nDk04sIENPTiBFWENFUENJw5NOIERFIExBIFVOSVZFUlNJREFEIERJU1RSSVRBTCBGUkFOQ0lTQ08gSk9TRSBERSBDQUxEQVMsIExPUyBBVVRPUkVTIEdBUkFOVElaQU4gUVVFIFNFIEhBIENVTVBMSURPIENPTiBMT1MKREVSRUNIT1MgWSBPQkxJR0FDSU9ORVMgUkVRVUVSSURPUyBQT1IgRUwgUkVTUEVDVElWTyBDT05UUkFUTyBPIEFDVUVSRE8uCgoKCgoKCgoKCgoKCgoKCgoKCgoKCkVuIGNvbnN0YW5jaWEgZGUgbG8gYW50ZXJpb3IsIGZpcm1vKGFtb3MpIGVsIHByZXNlbnRlIGRvY3VtZW50bywgZW4gbGEgY2l1ZGFkIGRlIEJvZ290w6EsIEQuQy4sIGEgbG9zCgoKRklSTUEgREUgTE9TIFRJVFVMQVJFUyBERSBERVJFQ0hPUyBERSBBVVRPUgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fICAgQy5DLiBOby4gX19fX19fX19fX19fX19fX19fCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18gICBDLkMuIE5vLiBfX19fX19fX19fX19fX19fX18KCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXyAgIEMuQy4gTm8uIF9fX19fX19fX19fX19fX19fXwoKCgpDb3JyZW8gRWxlY3Ryw7NuaWNvIEluc3RpdHVjaW9uYWwgZGVsIChkZSBsb3MpIEF1dG9yKGVzKToKCkF1dG9yCSAgICAgIENvcnJlbyBFbGVjdHLDs25pY28KCjEKCjIKCjMKCk5vbWJyZSBkZSBEaXJlY3RvcihlcykgZGUgR3JhZG86CgoxCgoyCgozCgpOb21icmUgRmFjdWx0YWQgeSBQcm95ZWN0byBDdXJyaWN1bGFyOgoKRmFjdWx0YWQJUHJveWVjdG8gQ3VycmljdWxhcgoKCgoKCgoKCk5vdGE6IEVuIGNhc28gcXVlIG5vIGVzdMOpIGRlIGFjdWVyZG8gY29uIGxhcyBjb25kaWNpb25lcyBkZSBsYSBwcmVzZW50ZSBsaWNlbmNpYSwgeSBtYW5pZmllc3RlIGFsZ3VuYSByZXN0cmljY2nDs24gc29icmUgbGEgb2JyYSwganVzdGlmaXF1ZSBsb3MgbW90aXZvcyBwb3IgbG9zIGN1YWxlcyBlbCBkb2N1bWVudG8geSBzdXMgYW5leG9zIG5vIHB1ZWRlbiBzZXIgcHVibGljYWRvcyBlbiBlbCBSZXBvc2l0b3JpbyBJbnN0aXR1Y2lvbmFsIGRlIGxhIFVuaXZlcnNpZGFkIERpc3RyaXRhbCBGcmFuY2lzY28gSm9zw6kgZGUgQ2FsZGFzIFJJVUQuCgoKU2kgcmVxdWllcmUgbcOhcyBlc3BhY2lvLCBwdWVkZSBhbmV4YXIgdW5hIGNvcGlhIHNpbWlsYXIgYSBlc3RhIGhvamEK