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...
- 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_ |
1814111231261278208 |
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 |