Aplicación de redes neuronales en el proceso de inspección de calidad del Aguacate Hass para exportación

El aguacate Hass es considerada en los últimos años, una de las frutas tropicales con mayor prospectiva de crecimiento en exportación a nivel mundial gracias a sus múltiples beneficios y usos. El éxito del intercambio comercial depende en gran medida del cumplimiento de estándares físicos de calidad...

Full description

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/31792
Acceso en línea:
http://hdl.handle.net/11349/31792
Palabra clave:
Aguacate Hass
Calidad
Inspección
Red neuronal
Ingeniería Industrial -- Tesis y disertaciones académicas
Aguacate Hass
Exportación de frutas
Redes neuronales convolucionales
Inspección de calidad
Hass Avocado
Quality
Inspection
Neural network
Rights
License
CC0 1.0 Universal
id UDISTRITA2_cbe62b9a38f020e90a18f010107a4d51
oai_identifier_str oai:repository.udistrital.edu.co:11349/31792
network_acronym_str UDISTRITA2
network_name_str RIUD: repositorio U. Distrital
repository_id_str
dc.title.spa.fl_str_mv Aplicación de redes neuronales en el proceso de inspección de calidad del Aguacate Hass para exportación
dc.title.titleenglish.spa.fl_str_mv Application of neural networks in the quality inspection process of Hass Avocado for export
title Aplicación de redes neuronales en el proceso de inspección de calidad del Aguacate Hass para exportación
spellingShingle Aplicación de redes neuronales en el proceso de inspección de calidad del Aguacate Hass para exportación
Aguacate Hass
Calidad
Inspección
Red neuronal
Ingeniería Industrial -- Tesis y disertaciones académicas
Aguacate Hass
Exportación de frutas
Redes neuronales convolucionales
Inspección de calidad
Hass Avocado
Quality
Inspection
Neural network
title_short Aplicación de redes neuronales en el proceso de inspección de calidad del Aguacate Hass para exportación
title_full Aplicación de redes neuronales en el proceso de inspección de calidad del Aguacate Hass para exportación
title_fullStr Aplicación de redes neuronales en el proceso de inspección de calidad del Aguacate Hass para exportación
title_full_unstemmed Aplicación de redes neuronales en el proceso de inspección de calidad del Aguacate Hass para exportación
title_sort Aplicación de redes neuronales en el proceso de inspección de calidad del Aguacate Hass para exportación
dc.contributor.advisor.none.fl_str_mv Toledo Bueno, Carlos Augusto
dc.contributor.orcid.none.fl_str_mv Toledo Bueno, Carlos Augusto [0000-0002-6437-092X]
dc.subject.spa.fl_str_mv Aguacate Hass
Calidad
Inspección
Red neuronal
topic Aguacate Hass
Calidad
Inspección
Red neuronal
Ingeniería Industrial -- Tesis y disertaciones académicas
Aguacate Hass
Exportación de frutas
Redes neuronales convolucionales
Inspección de calidad
Hass Avocado
Quality
Inspection
Neural network
dc.subject.lemb.none.fl_str_mv Ingeniería Industrial -- Tesis y disertaciones académicas
Aguacate Hass
Exportación de frutas
Redes neuronales convolucionales
Inspección de calidad
dc.subject.keyword.spa.fl_str_mv Hass Avocado
Quality
Inspection
Neural network
description El aguacate Hass es considerada en los últimos años, una de las frutas tropicales con mayor prospectiva de crecimiento en exportación a nivel mundial gracias a sus múltiples beneficios y usos. El éxito del intercambio comercial depende en gran medida del cumplimiento de estándares físicos de calidad, los cuales son verificados en planta mediante inspección visual por medio de operadores humanos los cuales, uno a uno identifica el cumplimiento de conformidades basándose en su experticia y conocimiento. Sin embargo, al ser el proceso dependiente de operadores humanos, es susceptible a mayor gasto de recurso producto de omisiones en la verificación de unidades, mayor tiempo de clasificación y en caso tal de incurrir en incumplimientos en la calidad de la carga, la suspensión del intercambio comercial. Es por ello, que en la presente investigación se evalúa la aplicación y uso de tres (3) redes neuronales convolucionales de aprendizaje supervisado (CNN no profunda, Inception Learning de Google y la ResNet 50) como mecanismos de inspección y clasificación por computadora. Esto dado que hoy día, la inteligencia Artificial, especialmente las Redes Neuronales son un método útil y práctico para automatizar o mejorar tareas que antes, por medio de tecnologías convencionales no era posible y ahora sí, gracias a la analogía del aprendizaje humano. En el enfoque propuesto, en cada una de las arquitecturas se utiliza la función de activación ReLU, Batch Normalization para reducir el sesgo y variabilidad de la información. Así mismo se utiliza Glorot como esquema de inicialización y la precisión como métrica de desempeño de las redes. En cuanto al banco de datos, se realiza una muestra fotográfica de 320 imágenes de unidades aptas y 325 de unidades no aptas para exportación, las cuales con el fin de robustecer el volumen de los datos fueron sometidas a Data Augmentation, mediante Python y la conocida api Keras, lográndose un banco total de 1.177 fotos de unidades aptas y 1.273 fotos de unidades no aptas. Así mismo para las fases de entrenamiento, validación y test, se utilizó la técnica 60-40. Los resultados demuestran que el modelo propuesto de ResNet50 logra con un 95% de precisión la clasificación de las unidades. Valor superior con respecto a la CNN simple y la Inception Learning de Google
publishDate 2022
dc.date.created.none.fl_str_mv 2022-11-16
dc.date.accessioned.none.fl_str_mv 2023-07-14T19:39:32Z
dc.date.available.none.fl_str_mv 2023-07-14T19:39:32Z
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/31792
url http://hdl.handle.net/11349/31792
dc.language.iso.spa.fl_str_mv spa
language spa
dc.rights.*.fl_str_mv CC0 1.0 Universal
dc.rights.coar.fl_str_mv http://purl.org/coar/access_right/c_16ec
dc.rights.uri.*.fl_str_mv http://creativecommons.org/publicdomain/zero/1.0/
dc.rights.acceso.spa.fl_str_mv Restringido (Solo Referencia)
rights_invalid_str_mv CC0 1.0 Universal
http://creativecommons.org/publicdomain/zero/1.0/
Restringido (Solo Referencia)
http://purl.org/coar/access_right/c_16ec
dc.format.mimetype.spa.fl_str_mv pdf
institution Universidad Distrital Francisco José de Caldas
bitstream.url.fl_str_mv http://repository.udistrital.edu.co/bitstream/11349/31792/1/TrianaValderramaMerlyKarina2022.pdf
http://repository.udistrital.edu.co/bitstream/11349/31792/2/TrianaValderramaMerlyKarina2022_Anexos.zip
http://repository.udistrital.edu.co/bitstream/11349/31792/3/TrianaValderramaMerlyKarinaLicencia%20de%20uso%20y%20publicacion.pdf
http://repository.udistrital.edu.co/bitstream/11349/31792/4/license_rdf
http://repository.udistrital.edu.co/bitstream/11349/31792/5/license.txt
http://repository.udistrital.edu.co/bitstream/11349/31792/6/TrianaValderramaMerlyKarina2022.pdf.jpg
http://repository.udistrital.edu.co/bitstream/11349/31792/7/TrianaValderramaMerlyKarinaLicencia%20de%20uso%20y%20publicacion.pdf.jpg
bitstream.checksum.fl_str_mv 371a5a8083663702f724bc15bec7b00f
d68737955ecbfdfb91f63abeaa1ddc17
4e6bb15a2c3872459cdef7d72434757a
42fd4ad1e89814f5e4a476b409eb708c
997daf6c648c962d566d7b082dac908d
25eea97c665f81de3b2bc4627f058a67
055751df1b192db5edfcacc85a88b696
bitstream.checksumAlgorithm.fl_str_mv MD5
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_ 1803712547485908992
spelling Toledo Bueno, Carlos Augustowill be generated::orcid::0000-0002-6437-092X600Toledo Bueno, Carlos Augusto [0000-0002-6437-092X]Triana Valderrama, Merly KarinaZuleta Varon, Camilo Andres2023-07-14T19:39:32Z2023-07-14T19:39:32Z2022-11-16http://hdl.handle.net/11349/31792El aguacate Hass es considerada en los últimos años, una de las frutas tropicales con mayor prospectiva de crecimiento en exportación a nivel mundial gracias a sus múltiples beneficios y usos. El éxito del intercambio comercial depende en gran medida del cumplimiento de estándares físicos de calidad, los cuales son verificados en planta mediante inspección visual por medio de operadores humanos los cuales, uno a uno identifica el cumplimiento de conformidades basándose en su experticia y conocimiento. Sin embargo, al ser el proceso dependiente de operadores humanos, es susceptible a mayor gasto de recurso producto de omisiones en la verificación de unidades, mayor tiempo de clasificación y en caso tal de incurrir en incumplimientos en la calidad de la carga, la suspensión del intercambio comercial. Es por ello, que en la presente investigación se evalúa la aplicación y uso de tres (3) redes neuronales convolucionales de aprendizaje supervisado (CNN no profunda, Inception Learning de Google y la ResNet 50) como mecanismos de inspección y clasificación por computadora. Esto dado que hoy día, la inteligencia Artificial, especialmente las Redes Neuronales son un método útil y práctico para automatizar o mejorar tareas que antes, por medio de tecnologías convencionales no era posible y ahora sí, gracias a la analogía del aprendizaje humano. En el enfoque propuesto, en cada una de las arquitecturas se utiliza la función de activación ReLU, Batch Normalization para reducir el sesgo y variabilidad de la información. Así mismo se utiliza Glorot como esquema de inicialización y la precisión como métrica de desempeño de las redes. En cuanto al banco de datos, se realiza una muestra fotográfica de 320 imágenes de unidades aptas y 325 de unidades no aptas para exportación, las cuales con el fin de robustecer el volumen de los datos fueron sometidas a Data Augmentation, mediante Python y la conocida api Keras, lográndose un banco total de 1.177 fotos de unidades aptas y 1.273 fotos de unidades no aptas. Así mismo para las fases de entrenamiento, validación y test, se utilizó la técnica 60-40. Los resultados demuestran que el modelo propuesto de ResNet50 logra con un 95% de precisión la clasificación de las unidades. Valor superior con respecto a la CNN simple y la Inception Learning de GoogleThe Hass avocado is considered in recent years, one of the tropical fruits with the greatest prospect of growth in exports worldwide thanks to its multiple benefits and uses. The success of commercial exchange depends to a large extent on compliance with physical quality standards, which are verified at the plant through visual inspection by human operators who, one by one, severely identify compliance with their expertise and knowledge. However, since the process depends on human operators, it is susceptible to higher resource costs as a result of omissions in the verification of units, longer classification time and, in the event of incurring in breaches in the quality of the load, the suspension of the commercial exchange. For this reason, this research evaluates the application and use of three (3) supervised learning convolutional neural networks (shallow CNN, Google's Inception Learning and ResNet 50) as inspection and classification mechanisms by computer. This given that today, Artificial Intelligence, especially Neural Networks, are a useful and practical method to automate or improve tasks that were previously not possible through conventional technologies and now are, thanks to the analogy of human learning. In the proposed approach, in each of the architectures, the ReLU activation function, Batch Normalization, is used to reduce bias and increase information. Likewise, Glorot is used as an initialization scheme and precision as a network performance metric. Regarding the data bank, a photographic sample of 320 images of suitable units and 325 of units not suitable for export is made, which in order to strengthen the volume of the data were subjected to Data Augmentation, through Python and the well-known api Keras, achieving a total bank of 1,177 photos of suitable units and 1,273 photos of unsuitable units. Likewise, for the training, validation and test phases, the 60-40 technique was extracted. The results show that the proposed ResNet50 model achieves the classification of the units with 95% accuracy. Superior value with respect to simple CNN and Google's Inception LearningpdfspaCC0 1.0 Universalhttp://creativecommons.org/publicdomain/zero/1.0/Restringido (Solo Referencia)http://purl.org/coar/access_right/c_16ecAguacate HassCalidadInspecciónRed neuronalIngeniería Industrial -- Tesis y disertaciones académicasAguacate HassExportación de frutasRedes neuronales convolucionalesInspección de calidadHass AvocadoQualityInspectionNeural networkAplicación de redes neuronales en el proceso de inspección de calidad del Aguacate Hass para exportaciónApplication of neural networks in the quality inspection process of Hass Avocado for exportbachelorThesisMonografíainfo:eu-repo/semantics/bachelorThesishttp://purl.org/coar/resource_type/c_7a1fORIGINALTrianaValderramaMerlyKarina2022.pdfTrianaValderramaMerlyKarina2022.pdfTrabajo de gradoapplication/pdf13858152http://repository.udistrital.edu.co/bitstream/11349/31792/1/TrianaValderramaMerlyKarina2022.pdf371a5a8083663702f724bc15bec7b00fMD51open accessTrianaValderramaMerlyKarina2022_Anexos.zipTrianaValderramaMerlyKarina2022_Anexos.zipAnexosapplication/zip10484295http://repository.udistrital.edu.co/bitstream/11349/31792/2/TrianaValderramaMerlyKarina2022_Anexos.zipd68737955ecbfdfb91f63abeaa1ddc17MD52open accessTrianaValderramaMerlyKarinaLicencia de uso y publicacion.pdfTrianaValderramaMerlyKarinaLicencia de uso y publicacion.pdfLicencia de uso y publicaciónapplication/pdf215610http://repository.udistrital.edu.co/bitstream/11349/31792/3/TrianaValderramaMerlyKarinaLicencia%20de%20uso%20y%20publicacion.pdf4e6bb15a2c3872459cdef7d72434757aMD53metadata only accessCC-LICENSElicense_rdflicense_rdfapplication/rdf+xml; charset=utf-8701http://repository.udistrital.edu.co/bitstream/11349/31792/4/license_rdf42fd4ad1e89814f5e4a476b409eb708cMD54open accessLICENSElicense.txtlicense.txttext/plain; charset=utf-87167http://repository.udistrital.edu.co/bitstream/11349/31792/5/license.txt997daf6c648c962d566d7b082dac908dMD55open accessTHUMBNAILTrianaValderramaMerlyKarina2022.pdf.jpgTrianaValderramaMerlyKarina2022.pdf.jpgIM Thumbnailimage/jpeg7425http://repository.udistrital.edu.co/bitstream/11349/31792/6/TrianaValderramaMerlyKarina2022.pdf.jpg25eea97c665f81de3b2bc4627f058a67MD56open accessTrianaValderramaMerlyKarinaLicencia de uso y publicacion.pdf.jpgTrianaValderramaMerlyKarinaLicencia de uso y publicacion.pdf.jpgIM Thumbnailimage/jpeg13041http://repository.udistrital.edu.co/bitstream/11349/31792/7/TrianaValderramaMerlyKarinaLicencia%20de%20uso%20y%20publicacion.pdf.jpg055751df1b192db5edfcacc85a88b696MD57open access11349/31792oai:repository.udistrital.edu.co:11349/317922024-04-04 15:57:43.233open accessRepositorio Institucional Universidad Distrital - RIUDrepositorio@udistrital.edu.coTElDRU5DSUEgWSBBVVRPUklaQUNJw5NOIEVTUEVDSUFMIFBBUkEgUFVCTElDQVIgWSBQRVJNSVRJUiBMQSBDT05TVUxUQSBZIFVTTyBERSBDT05URU5JRE9TIEVOIEVMIFJFUE9TSVRPUklPIElOU1RJVFVDSU9OQUwgREUgTEEgVU5JVkVSU0lEQUQgRElTVFJJVEFMCgpUw6lybWlub3MgeSBjb25kaWNpb25lcyBkZSB1c28gcGFyYSBwdWJsaWNhY2nDs24gZGUgb2JyYXMgZW4gZWwgUmVwb3NpdG9yaW8gSW5zdGl0dWNpb25hbCBkZSBsYSBVbml2ZXJzaWRhZCBEaXN0cml0YWwgRnJhbmNpc2NvIEpvc8OpIGRlIENhbGRhcyAoUklVRCkKCkNvbW8gdGl0dWxhcihlcykgZGVsKG9zKSBkZXJlY2hvKHMpIGRlIGF1dG9yLCBjb25maWVybyAoZXJpbW9zKSBhIGxhIFVuaXZlcnNpZGFkIERpc3RyaXRhbCBGcmFuY2lzY28gSm9zw6kgZGUgQ2FsZGFzIChlbiBhZGVsYW50ZSwgTEEgVU5JVkVSU0lEQUQpIHVuYSBsaWNlbmNpYSBwYXJhIHVzbyBubyBleGNsdXNpdmEsIGxpbWl0YWRhIHkgZ3JhdHVpdGEgc29icmUgbGEgb2JyYSBxdWUgaW50ZWdyYXLDoSBlbCBSZXBvc2l0b3JpbyBJbnN0aXR1Y2lvbmFsIChlbiBhZGVsYW50ZSwgUklVRCksIGRlIGFjdWVyZG8gYSBsYXMgc2lndWllbnRlcyByZWdsYXMsIGxhcyBjdWFsZXMgZGVjbGFybyAoYW1vcykgY29ub2NlciB5IGFjZXB0YXI6CgphKQlFc3RhcsOhIHZpZ2VudGUgYSBwYXJ0aXIgZGUgbGEgZmVjaGEgZW4gcXVlIHNlIGluY2x1eWEgZW4gZWwgUklVRCB5IGhhc3RhIHBvciB1biBwbGF6byBkZSBkaWV6ICgxMCkgQcOxb3MsIHByb3Jyb2dhYmxlIGluZGVmaW5pZGFtZW50ZSBwb3IgZWwgdGllbXBvIHF1ZSBkdXJlIGVsIGRlcmVjaG8gUGF0cmltb25pYWwgZGVsIGF1dG9yOyBsYSBjdWFsIHBvZHLDoSBkYXJzZSBwb3IgdGVybWluYWRhIHByZXZpYSBzb2xpY2l0dWQgYSBMQSBVTklWRVJTSURBRCBwb3IgZXNjcml0byBjb24gdW5hIGFudGVsYWNpw7NuIGRlIGRvcyAoMikgbWVzZXMgYW50ZXMgZGVsIHZlbmNpbWllbnRvIGRlbCBwbGF6byBpbmljaWFsIG8gZWwgZGUgc3UocykgcHLDs3Jyb2dhKHMpLgoKYikJTEEgVU5JVkVSU0lEQUQgcG9kcsOhIHB1YmxpY2FyIGxhIG9icmEgZW4gbGFzIGRpc3RpbnRhcyB2ZXJzaW9uZXMgcmVxdWVyaWRhcyBwb3IgZWwgUklVRCAoZGlnaXRhbCwgaW1wcmVzbywgZWxlY3Ryw7NuaWNvIHUgb3RybyBtZWRpbyBjb25vY2lkbyBvIHBvciBjb25vY2VyKSBMQSBVTklWRVJTSURBRCBubyBzZXLDoSByZXNwb25zYWJsZSBlbiBlbCBldmVudG8gcXVlIGVsIGRvY3VtZW50byBhcGFyZXpjYSByZWZlcmVuY2lhZG8gZW4gbW90b3JlcyBkZSBiw7pzcXVlZGEgbyByZXBvc2l0b3Jpb3MgZGlmZXJlbnRlcyBhbCBSSVVELCB1bmEgdmV6IGVsKG9zKSBhdXRvcihlcykgc29saWNpdGVuIHN1IGVsaW1pbmFjacOzbiBkZWwgUklVRCwgZGFkbyBxdWUgbGEgbWlzbWEgc2Vyw6EgcHVibGljYWRhIGVuIEludGVybmV0LgoKYykJTGEgYXV0b3JpemFjacOzbiBzZSBoYWNlIGEgdMOtdHVsbyBncmF0dWl0bywgcG9yIGxvIHRhbnRvLCBsb3MgYXV0b3JlcyByZW51bmNpYW4gYSByZWNpYmlyIGJlbmVmaWNpbyBhbGd1bm8gcG9yIGxhIHB1YmxpY2FjacOzbiwgZGlzdHJpYnVjacOzbiwgY29tdW5pY2FjacOzbiBww7pibGljYSB5IGN1YWxxdWllciBvdHJvIHVzbyBxdWUgc2UgaGFnYSBlbiBsb3MgdMOpcm1pbm9zIGRlIGxhIHByZXNlbnRlIGxpY2VuY2lhIHkgZGUgbGEgbGljZW5jaWEgZGUgdXNvIGNvbiBxdWUgc2UgcHVibGljYSAoQ3JlYXRpdmUgQ29tbW9ucykuCgpkKQlMb3MgY29udGVuaWRvcyBwdWJsaWNhZG9zIGVuIGVsIFJJVUQgc29uIG9icmEocykgb3JpZ2luYWwoZXMpIHNvYnJlIGxhIGN1YWwoZXMpIGVsKG9zKSBhdXRvcihlcykgY29tbyB0aXR1bGFyZXMgZGUgbG9zIGRlcmVjaG9zIGRlIGF1dG9yLCBhc3VtZW4gdG90YWwgcmVzcG9uc2FiaWxpZGFkIHBvciBlbCBjb250ZW5pZG8gZGUgc3Ugb2JyYSBhbnRlIExBIFVOSVZFUlNJREFEIHkgYW50ZSB0ZXJjZXJvcy4gRW4gdG9kbyBjYXNvIExBIFVOSVZFUlNJREFEIHNlIGNvbXByb21ldGUgYSBpbmRpY2FyIHNpZW1wcmUgbGEgYXV0b3LDrWEgaW5jbHV5ZW5kbyBlbCBub21icmUgZGVsIGF1dG9yIHkgbGEgZmVjaGEgZGUgcHVibGljYWNpw7NuLgoKZSkJTEEgVU5JVkVSU0lEQUQgcG9kcsOhIGluY2x1aXIgbGEgb2JyYSBlbiBsb3Mgw61uZGljZXMgeSBidXNjYWRvcmVzIHF1ZSBlc3RpbWVuIG5lY2VzYXJpb3MgcGFyYSBtYXhpbWl6YXIgbGEgdmlzaWJpbGlkYWQgZWwgdXNvIHkgZWwgaW1wYWN0byBkZSBsYSBwcm9kdWNjacOzbiBjaWVudMOtZmljYSwgYXJ0w61zdGljYSB5IGFjYWTDqW1pY2EgZW4gbGEgY29tdW5pZGFkIGxvY2FsLCBuYWNpb25hbCBvIGludGVybmFjaW9uYWwuCgoKZikJTEEgVU5JVkVSU0lEQUQgcG9kcsOhIGNvbnZlcnRpciBsYSBvYnJhIGEgY3VhbHF1aWVyIG1lZGlvIG8gZm9ybWF0byBjb24gZWwgZmluIGRlIHN1IHByZXNlcnZhY2nDs24gZW4gZWwgdGllbXBvIHF1ZSBsYSBwcmVzZW50ZSBsaWNlbmNpYSB5IGxhIGRlIHN1cyBwcsOzcnJvZ2FzLgoKCkNvbiBiYXNlIGVuIGxvIGFudGVyaW9yIGF1dG9yaXpvKGFtb3MpLCBhIGZhdm9yIGRlbCBSSVVEIHkgZGUgc3VzIHVzdWFyaW9zLCBsYSBwdWJsaWNhY2nDs24geSBjb25zdWx0YSBkZSBsYSBzaWd1aWVudGUgb2JyYToKClRpdHVsbwoKQXV0b3IgICAgICAgQXBlbGxpZG9zICAgICAgICAgTm9tYnJlcwoKMQoKMgoKMwoKCmcpCUF1dG9yaXpvKGFtb3MpLCBxdWUgbGEgb2JyYSBzZWEgcHVlc3RhIGEgZGlzcG9zaWNpw7NuIGRlbCBww7pibGljbyBlbiBsb3MgdMOpcm1pbm9zIGVzdGFibGVjaWRvcyBlbiBsb3MgbGl0ZXJhbGVzIGFudGVyaW9yZXMsIGJham8gbG9zIGzDrW1pdGVzIGRlZmluaWRvcyBwb3IgTEEgVU5JVkVSU0lEQUQsIGVuIGxhcyDigJxDb25kaWNpb25lcyBkZSB1c28gZGUgZXN0cmljdG8gY3VtcGxpbWllbnRv4oCdIGRlIGxvcyByZWN1cnNvcyBwdWJsaWNhZG9zIGVuIGVsIFJJVUQsIGN1eW8gdGV4dG8gY29tcGxldG8gc2UgcHVlZGUgY29uc3VsdGFyIGVuIGh0dHA6Ly9yZXBvc2l0b3J5LnVkaXN0cml0YWwuZWR1LmNvLwoKaCkJQ29ub3pjbyhjZW1vcykgeSBhY2VwdG8oYW1vcykgcXVlIG90b3JnbyhhbW9zKSB1bmEgbGljZW5jaWEgZXNwZWNpYWwgcGFyYSBwdWJsaWNhY2nDs24gZGUgb2JyYXMgZW4gZWwgUmVwb3NpdG9yaW8gSW5zdGl0dWNpb25hbCBkZSBsYSBVbml2ZXJzaWRhZCBEaXN0cml0YWwgRnJhbmNpc2NvIEpvc8OpIGRlIENhbGRhcywgbGljZW5jaWEgICBkZSBsYSBjdWFsIGhlIChoZW1vcykgb2J0ZW5pZG8gdW5hIGNvcGlhLgoKaSkJTWFuaWZpZXN0byhhbW9zKSBtaSAobnVlc3RybykgdG90YWwgYWN1ZXJkbyBjb24gbGFzIGNvbmRpY2lvbmVzIGRlIHVzbyB5IHB1YmxpY2FjacOzbiBlbiBlbCBSZXBvc2l0b3JpbyBJbnN0aXR1Y2lvbmFsIGRlIGxhIFVuaXZlcnNpZGFkIERpc3RyaXRhbCBGcmFuY2lzY28gSm9zw6kgZGUgQ2FsZGFzIHF1ZSBzZSBkZXNjcmliZW4geSBleHBsaWNhbiBlbiBlbCBwcmVzZW50ZSBkb2N1bWVudG8uCgpqKQlDb25vemNvKGNlbW9zKSBsYSBub3JtYXRpdmlkYWQgaW50ZXJuYSBkZSAgTEEgVU5JVkVSU0lEQUQ7IGVuIGNvbmNyZXRvLCBlbCBBY3VlcmRvIDAwNCBkZSAyMDEyIGRlbCBDU1UsIEFjdWVyZG8gMDIzIGRlIDIwMTIgZGVsIENTVSBzb2JyZSBQb2zDrXRpY2EgRWRpdG9yaWFsLCBBY3VlcmRvIDAyNiAgZGVsIDMxIGRlIGp1bGlvIGRlIDIwMTIgc29icmUgZWwgcHJvY2VkaW1pZW50byBwYXJhIGxhIHB1YmxpY2FjacOzbiBkZSB0ZXNpcyBkZSBwb3N0Z3JhZG8gZGUgbG9zIGVzdHVkaWFudGVzIGRlIGxhIFVuaXZlcnNpZGFkIERpc3RyaXRhbCBGcmFuY2lzY28gSm9zw6kgZGUgQ2FsZGFzLCAgQWN1ZXJkbyAwMzAgZGVsIDAzIGRlIGRpY2llbWJyZSBkZSAyMDEzIHBvciBtZWRpbyBkZWwgY3VhbCBzZSBjcmVhIGVsIFJlcG9zaXRvcmlvIEluc3RpdHVjaW9uYWwgZGUgbGEgVW5pdmVyc2lkYWQgRGlzdHJpdGFsIEZyYW5jaXNjbyBKb3PDqSBkZSBDYWxkYXMsIEFjdWVyZG8gMDM4IGRlIDIwMTUgMjAxNSDigJxwb3IgZWwgY3VhbCBzZSBtb2RpZmljYSBlbCBBY3VlcmRvIDAzMSBkZSAyMDE0IGRlIDIwMTQgcXVlIHJlZ2xhbWVudGEgZWwgdHJhYmFqbyBkZSBncmFkbyBwYXJhIGxvcyBlc3R1ZGlhbnRlcyBkZSBwcmVncmFkbyBkZSBsYSBVbml2ZXJzaWRhZCBEaXN0cml0YWwgRnJhbmNpc2NvIEpvc8OpIGRlIENhbGRhcyB5IHNlIGRpY3RhbiBvdHJhcyBkaXJlY3RyaWNlc+KAnSB5IGxhcyBkZW3DoXMgbm9ybWFzIGNvbmNvcmRhbnRlIHkgY29tcGxlbWVudGFyaWFzIHF1ZSByaWdlbiBhbCByZXNwZWN0bywgZXNwZWNpYWxtZW50ZSBsYSBsZXkgMjMgZGUgMTk4MiwgbGEgbGV5IDQ0IGRlIDE5OTMgeSBsYSBkZWNpc2nDs24gQW5kaW5hIDM1MSBkZSAxOTkzLiBFc3RvcyBkb2N1bWVudG9zIHBvZHLDoW4gc2VyIGNvbnN1bHRhZG9zIHkgZGVzY2FyZ2Fkb3MgZW4gZWwgcG9ydGFsIHdlYiBkZSBsYSBiaWJsaW90ZWNhIGh0dHA6Ly9zaXN0ZW1hZGViaWJsaW90ZWNhcy51ZGlzdHJpdGFsLmVkdS5jby8KCmspCUFjZXB0byhhbW9zKSBxdWUgTEEgVU5JVkVSU0lEQUQgbm8gc2UgcmVzcG9uc2FiaWxpemEgcG9yIGxhcyBpbmZyYWNjaW9uZXMgYSBsYSBwcm9waWVkYWQgaW50ZWxlY3R1YWwgbyBEZXJlY2hvcyBkZSBBdXRvciBjYXVzYWRhcyBwb3IgbG9zIHRpdHVsYXJlcyBkZSBsYSBwcmVzZW50ZSBMaWNlbmNpYSB5IGRlY2xhcmFtb3MgcXVlIG1hbnRlbmRyw6kgKGVtb3MpIGluZGVtbmUgYSBMQSBVTklWRVJTSURBRCBwb3IgbGFzIHJlY2xhbWFjaW9uZXMgbGVnYWxlcyBkZSBjdWFscXVpZXIgdGlwbyBxdWUgbGxlZ2FyZW4gYSBwcmVzZW50YXJzZSBwb3IgdmlvbGFjacOzbiBkZSBkZXJlY2hvcyBhIGxhIHByb3BpZWRhZCBpbnRlbGVjdHVhbCBvIGRlIEF1dG9yIHJlbGFjaW9uYWRvcyBjb24gbG9zIGRvY3VtZW50b3MgcmVnaXN0cmFkb3MgZW4gZWwgUklVRC4KCmwpCUVsIChsb3MpIGF1dG9yKGVzKSBtYW5pZmllc3RhKG1vcykgcXVlIGxhIG9icmEgb2JqZXRvIGRlIGxhIHByZXNlbnRlIGF1dG9yaXphY2nDs24gZXMgb3JpZ2luYWwsIGRlIGV4Y2x1c2l2YSBhdXRvcsOtYSwgeSBzZSByZWFsaXrDsyBzaW4gdmlvbGFyIG8gdXN1cnBhciBkZXJlY2hvcyBkZSBhdXRvciBkZSB0ZXJjZXJvczsgZGUgdGFsIHN1ZXJ0ZSwgZW4gY2FzbyBkZSBwcmVzZW50YXJzZSBjdWFscXVpZXIgcmVjbGFtYWNpw7NuIG8gYWNjacOzbiBwb3IgcGFydGUgZGUgdW4gdGVyY2VybyBlbiBjdWFudG8gYSBsb3MgZGVyZWNob3MgZGUgYXV0b3Igc29icmUgbGEgb2JyYSwgZWwgKGxvcykgZXN0dWRpYW50ZShzKSDigJMgYXV0b3IoZXMpIGFzdW1pcsOhKG4pIHRvZGEgbGEgcmVzcG9uc2FiaWxpZGFkIHkgc2FsZHLDoShuKSBlbiBkZWZlbnNhIGRlIGxvcyBkZXJlY2hvcyBhcXXDrSBhdXRvcml6YWRvcy4gUGFyYSB0b2RvcyBsb3MgZWZlY3RvcywgTEEgVU5JVkVSU0lEQUQgYWN0w7phIGNvbW8gdW4gdGVyY2VybyBkZSBidWVuYSBmZS4KCgptKQlFbCAobG9zKSBhdXRvcihlcykgbWFuaWZpZXN0YShtb3MpIHF1ZSBjb25vemNvKGNlbW9zKSBsYSBhdXRvbm9tw61hIHkgbG9zIGRlcmVjaG9zLCBxdWUgcG9zZWUobW9zKSBzb2JyZSBsYSBvYnJhIHksIGNvbW8gdGFsLCBlcyAoc29tb3MpIHJlc3BvbnNhYmxlKHMpIGRlbCBhbGNhbmNlIGp1csOtZGljbyB5IGxlZ2FsLCBkZSBlc2NvZ2VyIGxhIG9wY2nDs24gZGUgbGEgcHVibGljYWNpw7NuIG8gZGUgcmVzdHJpY2Npw7NuIGRlIGxhIHB1YmxpY2FjacOzbiBkZWwgZG9jdW1lbnRvIHJlZ2lzdHJhZG8gZW4gZWwgUklVRC4KCgoKCgoKU0kgRUwgRE9DVU1FTlRPIFNFIEJBU0EgRU4gVU4gVFJBQkFKTyBRVUUgSEEgU0lETyBQQVRST0NJTkFETyBPIEFQT1lBRE8gUE9SIFVOQSBBR0VOQ0lBIE8gVU5BIE9SR0FOSVpBQ0nDk04sIENPTiBFWENFUENJw5NOIERFIExBIFVOSVZFUlNJREFEIERJU1RSSVRBTCBGUkFOQ0lTQ08gSk9TRSBERSBDQUxEQVMsIExPUyBBVVRPUkVTIEdBUkFOVElaQU4gUVVFIFNFIEhBIENVTVBMSURPIENPTiBMT1MKREVSRUNIT1MgWSBPQkxJR0FDSU9ORVMgUkVRVUVSSURPUyBQT1IgRUwgUkVTUEVDVElWTyBDT05UUkFUTyBPIEFDVUVSRE8uCgoKCgoKCgoKCgoKCgoKCgoKCgoKCkVuIGNvbnN0YW5jaWEgZGUgbG8gYW50ZXJpb3IsIGZpcm1vKGFtb3MpIGVsIHByZXNlbnRlIGRvY3VtZW50bywgZW4gbGEgY2l1ZGFkIGRlIEJvZ290w6EsIEQuQy4sIGEgbG9zCgoKRklSTUEgREUgTE9TIFRJVFVMQVJFUyBERSBERVJFQ0hPUyBERSBBVVRPUgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fICAgQy5DLiBOby4gX19fX19fX19fX19fX19fX19fCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18gICBDLkMuIE5vLiBfX19fX19fX19fX19fX19fX18KCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXyAgIEMuQy4gTm8uIF9fX19fX19fX19fX19fX19fXwoKCgpDb3JyZW8gRWxlY3Ryw7NuaWNvIEluc3RpdHVjaW9uYWwgZGVsIChkZSBsb3MpIEF1dG9yKGVzKToKCkF1dG9yCSAgICAgIENvcnJlbyBFbGVjdHLDs25pY28KCjEKCjIKCjMKCk5vbWJyZSBkZSBEaXJlY3RvcihlcykgZGUgR3JhZG86CgoxCgoyCgozCgpOb21icmUgRmFjdWx0YWQgeSBQcm95ZWN0byBDdXJyaWN1bGFyOgoKRmFjdWx0YWQJUHJveWVjdG8gQ3VycmljdWxhcgoKCgoKCgoKCk5vdGE6IEVuIGNhc28gcXVlIG5vIGVzdMOpIGRlIGFjdWVyZG8gY29uIGxhcyBjb25kaWNpb25lcyBkZSBsYSBwcmVzZW50ZSBsaWNlbmNpYSwgeSBtYW5pZmllc3RlIGFsZ3VuYSByZXN0cmljY2nDs24gc29icmUgbGEgb2JyYSwganVzdGlmaXF1ZSBsb3MgbW90aXZvcyBwb3IgbG9zIGN1YWxlcyBlbCBkb2N1bWVudG8geSBzdXMgYW5leG9zIG5vIHB1ZWRlbiBzZXIgcHVibGljYWRvcyBlbiBlbCBSZXBvc2l0b3JpbyBJbnN0aXR1Y2lvbmFsIGRlIGxhIFVuaXZlcnNpZGFkIERpc3RyaXRhbCBGcmFuY2lzY28gSm9zw6kgZGUgQ2FsZGFzIFJJVUQuCgoKU2kgcmVxdWllcmUgbcOhcyBlc3BhY2lvLCBwdWVkZSBhbmV4YXIgdW5hIGNvcGlhIHNpbWlsYXIgYSBlc3RhIGhvamEK