Sistema de conteo automático de flujo de personas por medio de visión artificial
Un problema típico en una ciudad tan poblada como lo es Bogotá es la densidad de personas que concurren a sitios de carácter público, muchos sitios carecen de sistemas de control de aforo de personas, debido al costo de implementación y mantenimiento, por ello se pensó en una solución a partir de di...
- Autores:
- Tipo de recurso:
- Trabajo de grado de pregrado
- Fecha de publicación:
- 2016
- Institución:
- Universidad Distrital Francisco José de Caldas
- Repositorio:
- RIUD: repositorio U. Distrital
- Idioma:
- spa
- OAI Identifier:
- oai:repository.udistrital.edu.co:11349/23597
- Acceso en línea:
- http://hdl.handle.net/11349/23597
- Palabra clave:
- Procesamiento digital
visión artificial
Detección de peatones
OpenCV
Ingeniería en Control - Tesis y Disertaciones Académicas
Visión artificial
Procesamiento digital de imágenes
Visión por computador.
digital processing
artificial vision
Pedestrian Detection
OpenCV
- Rights
- License
- Atribución-NoComercial-SinDerivadas 4.0 Internacional
id |
UDISTRITA2_955b3bda18c508238428ad6a2093eb77 |
---|---|
oai_identifier_str |
oai:repository.udistrital.edu.co:11349/23597 |
network_acronym_str |
UDISTRITA2 |
network_name_str |
RIUD: repositorio U. Distrital |
repository_id_str |
|
dc.title.spa.fl_str_mv |
Sistema de conteo automático de flujo de personas por medio de visión artificial |
dc.title.titleenglish.spa.fl_str_mv |
Automatic system for people flow counting through artificial vision |
title |
Sistema de conteo automático de flujo de personas por medio de visión artificial |
spellingShingle |
Sistema de conteo automático de flujo de personas por medio de visión artificial Procesamiento digital visión artificial Detección de peatones OpenCV Ingeniería en Control - Tesis y Disertaciones Académicas Visión artificial Procesamiento digital de imágenes Visión por computador. digital processing artificial vision Pedestrian Detection OpenCV |
title_short |
Sistema de conteo automático de flujo de personas por medio de visión artificial |
title_full |
Sistema de conteo automático de flujo de personas por medio de visión artificial |
title_fullStr |
Sistema de conteo automático de flujo de personas por medio de visión artificial |
title_full_unstemmed |
Sistema de conteo automático de flujo de personas por medio de visión artificial |
title_sort |
Sistema de conteo automático de flujo de personas por medio de visión artificial |
dc.contributor.advisor.spa.fl_str_mv |
Pérez Pereira, Miguel Ricardo |
dc.subject.spa.fl_str_mv |
Procesamiento digital visión artificial Detección de peatones OpenCV |
topic |
Procesamiento digital visión artificial Detección de peatones OpenCV Ingeniería en Control - Tesis y Disertaciones Académicas Visión artificial Procesamiento digital de imágenes Visión por computador. digital processing artificial vision Pedestrian Detection OpenCV |
dc.subject.lemb.spa.fl_str_mv |
Ingeniería en Control - Tesis y Disertaciones Académicas Visión artificial Procesamiento digital de imágenes Visión por computador. |
dc.subject.keyword.spa.fl_str_mv |
digital processing artificial vision Pedestrian Detection OpenCV |
description |
Un problema típico en una ciudad tan poblada como lo es Bogotá es la densidad de personas que concurren a sitios de carácter público, muchos sitios carecen de sistemas de control de aforo de personas, debido al costo de implementación y mantenimiento, por ello se pensó en una solución a partir de dispositivos no mecánicos. Desde el área del Procesamiento digital de señales y Visión artificial se propuso implementar un contador de personas versátil, capaz de trabajar en tiempo real, y sobre cualquier tipo de fuente de video, basado en soluciones de código abierto de tal forma que no haya restricción de ningún tipo a la hora de usar, modificar, o comercializar la solución. Se implementaron dos algoritmos diferentes para identificación de peatones, los algoritmos fueron programados sobre Python y librerías OpenCV donde mediante pruebas de desempeño se identificó el algoritmo más óptimo en cuanto a uso de recursos de hardware y precisión para realizar un conteo de personas sobre un entorno real controlado. Al final se tiene como resultado dos algoritmos de identificación que se pueden llevar a otras aplicaciones como seguridad y vigilancia sobre múltiples plataformas gracias al lenguaje de programación el cual puede ser portado fácilmente sin restricciones de ningún tipo. |
publishDate |
2016 |
dc.date.created.spa.fl_str_mv |
2016-06-15 |
dc.date.accessioned.none.fl_str_mv |
2020-05-05T16:42:59Z |
dc.date.available.none.fl_str_mv |
2020-05-05T16:42:59Z |
dc.type.degree.spa.fl_str_mv |
Creación o Interpretació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/23597 |
url |
http://hdl.handle.net/11349/23597 |
dc.language.iso.spa.fl_str_mv |
spa |
language |
spa |
dc.rights.*.fl_str_mv |
Atribución-NoComercial-SinDerivadas 4.0 Internacional |
dc.rights.coar.fl_str_mv |
http://purl.org/coar/access_right/c_abf2 |
dc.rights.uri.*.fl_str_mv |
http://creativecommons.org/licenses/by-nc-nd/4.0/ |
dc.rights.acceso.spa.fl_str_mv |
Abierto (Texto Completo) |
rights_invalid_str_mv |
Atribución-NoComercial-SinDerivadas 4.0 Internacional http://creativecommons.org/licenses/by-nc-nd/4.0/ Abierto (Texto Completo) http://purl.org/coar/access_right/c_abf2 |
dc.format.mimetype.spa.fl_str_mv |
pdf |
institution |
Universidad Distrital Francisco José de Caldas |
bitstream.url.fl_str_mv |
http://repository.udistrital.edu.co/bitstream/11349/23597/7/GarciaPiraguaAndresMauricio2016.pdf.jpg http://repository.udistrital.edu.co/bitstream/11349/23597/3/license_url http://repository.udistrital.edu.co/bitstream/11349/23597/4/license_text http://repository.udistrital.edu.co/bitstream/11349/23597/5/license_rdf http://repository.udistrital.edu.co/bitstream/11349/23597/6/license.txt http://repository.udistrital.edu.co/bitstream/11349/23597/1/GarciaPiraguaAndresMauricio2016.mp4 http://repository.udistrital.edu.co/bitstream/11349/23597/2/GarciaPiraguaAndresMauricio2016.pdf |
bitstream.checksum.fl_str_mv |
71e05fedce77354b9333edde8369022c 4afdbb8c545fd630ea7db775da747b2f ef48816a10f2d45f2e2fee2f478e2faf 9da0b6dfac957114c6a7714714b86306 b204d61d4cc8bf0ee3a2b0e84c5755dd 60edef151a207036f201f72d3556d57d 156d1b7b5bb214b16fd449c13c4f15bb |
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_ |
1818102589699391488 |
spelling |
Pérez Pereira, Miguel RicardoMoreno Gómez, William AlexanderGarcía Piragua, Andrés Mauricio2020-05-05T16:42:59Z2020-05-05T16:42:59Z2016-06-15http://hdl.handle.net/11349/23597Un problema típico en una ciudad tan poblada como lo es Bogotá es la densidad de personas que concurren a sitios de carácter público, muchos sitios carecen de sistemas de control de aforo de personas, debido al costo de implementación y mantenimiento, por ello se pensó en una solución a partir de dispositivos no mecánicos. Desde el área del Procesamiento digital de señales y Visión artificial se propuso implementar un contador de personas versátil, capaz de trabajar en tiempo real, y sobre cualquier tipo de fuente de video, basado en soluciones de código abierto de tal forma que no haya restricción de ningún tipo a la hora de usar, modificar, o comercializar la solución. Se implementaron dos algoritmos diferentes para identificación de peatones, los algoritmos fueron programados sobre Python y librerías OpenCV donde mediante pruebas de desempeño se identificó el algoritmo más óptimo en cuanto a uso de recursos de hardware y precisión para realizar un conteo de personas sobre un entorno real controlado. Al final se tiene como resultado dos algoritmos de identificación que se pueden llevar a otras aplicaciones como seguridad y vigilancia sobre múltiples plataformas gracias al lenguaje de programación el cual puede ser portado fácilmente sin restricciones de ningún tipo.A typical problem in such populated as it is Bogotá city is the density of people attending sites public, many sites lack control systems capacity of people because the cost of implementation and maintenance, so think of a solution from non-mechanical devices. Since the area of digital signal processing and artificial vision we set to implement a versatile counter, able to work in real time, and any type of video source, based on open source solutions so that there is no restriction to use, modify, or implement in market the solution. Two different algorithms for identifying pedestrians were implemented, the algorithms are programmed in Python and libraries OpenCV where by performance tests the most optimal algorithm identified regarding use of hardware resources and precision for a count of people on a real environment checked. Eventually results in two identification algorithms that can lead to other applications such as security and surveillance on multiple platforms thanks to the programming language that can be easily ported without any restrictionspdfspaAtribución-NoComercial-SinDerivadas 4.0 Internacionalhttp://creativecommons.org/licenses/by-nc-nd/4.0/Abierto (Texto Completo)http://purl.org/coar/access_right/c_abf2Procesamiento digitalvisión artificialDetección de peatonesOpenCVIngeniería en Control - Tesis y Disertaciones AcadémicasVisión artificialProcesamiento digital de imágenesVisión por computador.digital processingartificial visionPedestrian DetectionOpenCVSistema de conteo automático de flujo de personas por medio de visión artificialAutomatic system for people flow counting through artificial visionCreación o Interpretacióninfo:eu-repo/semantics/bachelorThesishttp://purl.org/coar/resource_type/c_7a1fTHUMBNAILGarciaPiraguaAndresMauricio2016.pdf.jpgGarciaPiraguaAndresMauricio2016.pdf.jpgIM Thumbnailimage/jpeg7921http://repository.udistrital.edu.co/bitstream/11349/23597/7/GarciaPiraguaAndresMauricio2016.pdf.jpg71e05fedce77354b9333edde8369022cMD57open accessCC-LICENSElicense_urllicense_urltext/plain; charset=utf-849http://repository.udistrital.edu.co/bitstream/11349/23597/3/license_url4afdbb8c545fd630ea7db775da747b2fMD53open accesslicense_textlicense_texttext/html; charset=utf-822064http://repository.udistrital.edu.co/bitstream/11349/23597/4/license_textef48816a10f2d45f2e2fee2f478e2fafMD54open accesslicense_rdflicense_rdfapplication/rdf+xml; charset=utf-823148http://repository.udistrital.edu.co/bitstream/11349/23597/5/license_rdf9da0b6dfac957114c6a7714714b86306MD55metadata only accessLICENSElicense.txtlicense.txttext/plain; charset=utf-85896http://repository.udistrital.edu.co/bitstream/11349/23597/6/license.txtb204d61d4cc8bf0ee3a2b0e84c5755ddMD56open accessORIGINALGarciaPiraguaAndresMauricio2016.mp4GarciaPiraguaAndresMauricio2016.mp4Anexoapplication/octet-stream4252101http://repository.udistrital.edu.co/bitstream/11349/23597/1/GarciaPiraguaAndresMauricio2016.mp460edef151a207036f201f72d3556d57dMD51open accessGarciaPiraguaAndresMauricio2016.pdfGarciaPiraguaAndresMauricio2016.pdfTrabajo de gradoapplication/pdf2808406http://repository.udistrital.edu.co/bitstream/11349/23597/2/GarciaPiraguaAndresMauricio2016.pdf156d1b7b5bb214b16fd449c13c4f15bbMD52open access11349/23597oai:repository.udistrital.edu.co:11349/235972023-06-09 16:13:30.748open accessRepositorio Institucional Universidad Distrital - RIUDrepositorio@udistrital.edu.coTElDRU5DSUEgWSBBVVRPUklaQUNJw5NOIEVTUEVDSUFMIFBBUkEgUFVCTElDQVIgWSBQRVJNSVRJUiBMQSBDT05TVUxUQSBZIFVTTyAgREUgQ09OVEVOSURPUyBFTiBFTCBSRVBPU0lUT1JJTyBJTlNUSVRVQ0lPTkFMIERFIExBIFVOSVZFUlNJREFEIERJU1RSSVRBTApUw6lybWlub3MgeSBjb25kaWNpb25lcyBkZSB1c28gIHBhcmEgcHVibGljYWNpw7NuIGRlIG9icmFzIGVuIGVsIFJlcG9zaXRvcmlvIEluc3RpdHVjaW9uYWwgZGUgbGEgVW5pdmVyc2lkYWQgRGlzdHJpdGFsIEZyYW5jaXNjbyBKb3PDqSBkZSBDYWxkYXMgUklVRC4KCkNvbW8gdGl0dWxhcihlcykgZGVsKG9zKSBkZXJlY2hvKHMpIGRlIGF1dG9yLCAgY29uZmllcm8gKGVyaW1vcykgYSBsYSBVbml2ZXJzaWRhZCBEaXN0cml0YWwgRnJhbmNpc2NvIEpvc8OpIGRlIENhbGRhcyB1bmEgbGljZW5jaWEgcGFyYSB1c28gIG5vIGV4Y2x1c2l2YSwgbGltaXRhZGEgeSBncmF0dWl0YSBzb2JyZSBsYSBvYnJhIHF1ZSAgaW50ZWdyYXLDoSAgZWwgUmVwb3NpdG9yaW8gSW5zdGl0dWNpb25hbCBkZSBhY3VlcmRvIGEgbGFzIHNpZ3VpZW50ZXMgcmVnbGFzLCAgbGFzIGN1YWxlcyBkZWNsYXJvIChhbW9zKSBjb25vY2VyIHkgYWNlcHRhcjoKCmEpIEVzdGFyw6EgdmlnZW50ZSBhIHBhcnRpciBkZSBsYSBmZWNoYSAgZW4gcXVlIHNlIGluY2x1eWEgIGVuIGVsIFJlcG9zaXRvcmlvIEluc3RpdHVjaW9uYWwgeSBoYXN0YSAgcG9yIHVuIHBsYXpvIGRlICBkaWV6ICgxMCkgIEHDsW9zLCAgcHJvcnJvZ2FibGUgIGluZGVmaW5pZGFtZW50ZSBwb3IgZWwgdGllbXBvIHF1ZSBkdXJlIGVsIGRlcmVjaG8gUGF0cmltb25pYWwgZGVsIGF1dG9yOyAgbGEgY3VhbCBwb2Ryw6EgICBkYXJzZSAgcG9yIHRlcm1pbmFkYSAgcHJldmlhICBzb2xpY2l0dWQgICBhIGxhIFVuaXZlcnNpZGFkIHBvciBlc2NyaXRvIGNvbiB1bmEgYW50ZWxhY2nDs24gZGUgZG9zICgyKSBtZXNlcyBhbnRlcyBkZWwgdmVuY2ltaWVudG8gZGVsIHBsYXpvICBpbmljaWFsIG8gZWwgZGUgc3UocykgcHLDs3Jyb2dhKHMpLiAgCgpiKSBMYSBVbml2ZXJzaWRhZCBEaXN0cml0YWwgRnJhbmNpc2NvIEpvc8OpIGRlIENhbGRhcyBwb2Ryw6EgIHB1YmxpY2FyIGxhIG9icmEgZW4gbGFzIGRpc3RpbnRhcyB2ZXJzaW9uZXMgcmVxdWVyaWRhcyAoZGlnaXRhbCwgaW1wcmVzbywgZWxlY3Ryw7NuaWNvIHUgb3RybyBtZWRpbyBjb25vY2lkbyBvIHBvciBjb25vY2VyKSAgcG9yIGVsIFJlcG9zaXRvcmlvIEluc3RpdHVjaW9uYWwsICBMYSBVbml2ZXJzaWRhZCBubyBzZXLDoSByZXNwb25zYWJsZSBlbiBlbCBldmVudG8gcXVlIGVsICBkb2N1bWVudG8gYXBhcmV6Y2EgcmVmZXJlbmNpYWRvIGVuIG1vdG9yZXMgZGUgYsO6c3F1ZWRhIG8gcmVwb3NpdG9yaW9zICBkaWZlcmVudGVzIGFsIFJlcG9zaXRvcmlvIEluc3RpdHVjaW9uYWwsIHVuYSB2ZXogZWwob3MpIGF1dG9yKGVzKSAgc29saWNpdGVuIHN1IGVsaW1pbmFjacOzbiBkZWwgUmVwb3NpdG9yaW8gZGUgbGEgVW5pdmVyc2lkYWQsIGRhZG8gcXVlICBsYSBtaXNtYSBzZXLDoSBwdWJsaWNhZGEgZW4gIEludGVybmV0LiAKCmMpIExhIGF1dG9yaXphY2nDs24gc2UgaGFjZSBhIHTDrXR1bG8gZ3JhdHVpdG8sIHBvciBsbyB0YW50bywgbG9zIGF1dG9yZXMgcmVudW5jaWFuIGEgcmVjaWJpciBiZW5lZmljaW8gYWxndW5vIHBvciBsYSBwdWJsaWNhY2nDs24sIGRpc3RyaWJ1Y2nDs24sIGNvbXVuaWNhY2nDs24gIHDDumJsaWNhIHkgY3VhbHF1aWVyIG90cm8gdXNvIHF1ZSBzZSBoYWdhIGVuIGxvcyB0w6lybWlub3MgZGUgbGEgcHJlc2VudGUgbGljZW5jaWEgeSBkZSBsYSBsaWNlbmNpYSAgZGUgdXNvIGNvbiBxdWUgc2UgcHVibGljYSAoQ3JlYXRpdmUgQ29tbW9ucykuCgpkKSBMb3MgY29udGVuaWRvcyBwdWJsaWNhZG9zIGVuIGVsIFJlcG9zaXRvcmlvIEluc3RpdHVjaW9uYWwgc29uICBvYnJhKHMpIG9yaWdpbmFsKGVzKSBzb2JyZSBsYSAgY3VhbChlcykgIGVsKG9zKSBhdXRvcihlcykgY29tbyB0aXR1bGFyZXMgZGUgbG9zICBkZXJlY2hvcyBkZSBhdXRvciwgYXN1bWVuIHRvdGFsIHJlc3BvbnNhYmlsaWRhZCBwb3IgZWwgY29udGVuaWRvIGRlIHN1IG9icmEgYW50ZSBsYSBVbml2ZXJzaWRhZCBEaXN0cml0YWwgRnJhbmNpc2NvIEpvc8OpIGRlIENhbGRhcyB5IGFudGUgdGVyY2Vyb3MuIEVuIHRvZG8gY2FzbyBsYSBVbml2ZXJzaWRhZCBGcmFuY2lzY28gSm9zw6kgZGUgQ2FsZGFzIHNlIGNvbXByb21ldGUgYSBpbmRpY2FyIHNpZW1wcmUgbGEgYXV0b3LDrWEgaW5jbHV5ZW5kbyBlbCBub21icmUgZGVsIGF1dG9yIHkgbGEgZmVjaGEgZGUgcHVibGljYWNpw7NuLgoKZSkgTGEgIFVuaXZlcnNpZGFkIERpc3RyaXRhbCBGcmFuY2lzY28gSm9zw6kgZGUgQ2FsZGFzIHBvZHLDoSAgaW5jbHVpciBsYSBvYnJhIGVuIGxvcyDDrW5kaWNlcyB5IGJ1c2NhZG9yZXMgcXVlIGVzdGltZW4gbmVjZXNhcmlvcyBwYXJhIG1heGltaXphciBsYSB2aXNpYmlsaWRhZCBlbCB1c28geSBlbCBpbXBhY3RvIGRlIGxhIHByb2R1Y2Npw7NuIGNpZW50w61maWNhLCBhcnTDrXN0aWNhIHkgYWNhZMOpbWljYSBlbiBsYSBjb211bmlkYWQgbG9jYWwsIG5hY2lvbmFsIG8gaW50ZXJuYWNpb25hbC4gCgpmKSBMYSBVbml2ZXJzaWRhZCBEaXN0cml0YWwgRnJhbmNpc2NvIEpvc8OpIGRlIENhbGRhcyBwb2Ryw6EgY29udmVydGlyIGxhIG9icmEgIGEgY3VhbHF1aWVyIG1lZGlvIG8gZm9ybWF0byBjb24gZWwgZmluICBkZSBzdSBwcmVzZXJ2YWNpw7NuIGVuIGVsIHRpZW1wbyBxdWUgbGEgcHJlc2VudGUgbGljZW5jaWEgeSBsYSBkZSBzdXMgcHLDs3Jyb2dhcy4KQ29uIGJhc2UgZW4gbG8gYW50ZXJpb3IgYXV0b3JpesOzIGxhIHB1YmxpY2FjacOzbiB5IGNvbnN1bHRhIGRlIGxhIG9icmEgIHRpdHVsYWRhIF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KCiBBIGZhdm9yIGRlbCAgUmVwb3NpdG9yaW8gSW5zdGl0dWNpb25hbCBkZSBsYSBVbml2ZXJzaWRhZCBEaXN0cml0YWwgRnJhbmNpc2NvIEpvc8OpIGRlIENhbGRhcyB5ICBkZSBzdXMgdXN1YXJpb3MsICAgY3V5byhzKSAgYXV0b3IoZXMpIHNvbjogCkF1dG9yCUFwZWxsaWRvcwlOb21icmVzCjEJCQoyCQkKMwkJCgphKSBBdXRvcml6byBxdWUgbGEgb2JyYSBzZWEgcHVlc3RhIGEgZGlzcG9zaWNpw7NuIGRlbCBww7pibGljbyBlbiBsb3MgdMOpcm1pbm9zIGF1dG9yaXphZG9zIGVuIGxvcyBsaXRlcmFsZXMgYW50ZXJpb3JlcywgIGJham8gbG9zIGzDrW1pdGVzIGRlZmluaWRvcyBwb3IgbGEgVW5pdmVyc2lkYWQgRGlzdHJpdGFsIEZyYW5jaXNjbyBKb3PDqSBkZSBDYWxkYXMgZW4gbGFzIOKAnENvbmRpY2lvbmVzIGRlIHVzbyBkZSBlc3RyaWN0byBjdW1wbGltaWVudG/igJ0gZGUgbG9zIHJlY3Vyc29zIHB1YmxpY2Fkb3MgZW4gUmVwb3NpdG9yaW8gSW5zdGl0dWNpb25hbCBSSVVELCBjdXlvIHRleHRvIGNvbXBsZXRvIHNlIHB1ZWRlIGNvbnN1bHRhciBlbiBodHRwOi8vcmVwb3NpdG9yeS51ZGlzdHJpdGFsLmVkdS5jby8KCmIpIENvbm96Y28geSBhY2VwdG8gcXVlIG90b3JnbyB1bmEgbGljZW5jaWEgZXNwZWNpYWwgcGFyYSBwdWJsaWNhY2nDs24gZGUgb2JyYXMgZW4gZWwgUmVwb3NpdG9yaW8gSW5zdGl0dWNpb25hbCBkZSBsYSBVbml2ZXJzaWRhZCBEaXN0cml0YWwgRnJhbmNpc2NvIEpvc8OpIGRlIENhbGRhcywgbGljZW5jaWEgICBkZSBsYSBjdWFsIGhlIG9idGVuaWRvIHVuYSBjb3BpYS4KCmMpICBNYW5pZmllc3RvIG1pIHRvdGFsIGFjdWVyZG8gY29uIGxhcyBjb25kaWNpb25lcyBkZSB1c28geSBwdWJsaWNhY2nDs24gZW4gZWwgUmVwb3NpdG9yaW8gSW5zdGl0dWNpb25hbCBkZSBsYSBVbml2ZXJzaWRhZCBEaXN0cml0YWwgRnJhbmNpc2NvIEpvc8OpIGRlIENhbGRhcyBxdWUgc2UgZGVzY3JpYmVuIHkgZXhwbGljYW4gZW4gZWwgcHJlc2VudGUgZG9jdW1lbnRvLgoKZykgUXVlIGNvbm96Y28gICBsYSBub3JtYXRpdmlkYWQgaW50ZXJuYSBkZSBsYSBVbml2ZXJzaWRhZCBEaXN0cml0YWwgRnJhbmNpc2NvIEpvc8OpIGRlIENhbGRhcyByZWxhdGl2byBhIHByb3BpZWRhZCAgaW50ZWxlY3R1YWwgcmVndWxhZGEgcG9yIGVsIEFjdWVyZG8gMDA0IGRlIDIwMTIgZGVsIENTVSwgQWN1ZXJkbyAwMjMgZGUgMjAxMiBkZWwgQ1NVIHNvYnJlIFBvbMOtdGljYSBFZGl0b3JpYWwsIEFjdWVyZG8gMDI2ICBkZWwgMzEgZGUganVsaW8gZGUgMjAxMiBzb2JyZSBlbCBwcm9jZWRpbWllbnRvIHBhcmEgbGEgcHVibGljYWNpw7NuIGRlIHRlc2lzIGRlIHBvc3RncmFkbyBkZSBsb3MgZXN0dWRpYW50ZXMgZGUgbGEgVW5pdmVyc2lkYWQgRGlzdHJpdGFsIEZyYW5jaXNjbyBKb3PDqSBkZSBDYWxkYXMsICBBY3VlcmRvIDAzMCBkZWwgMDMgZGUgZGljaWVtYnJlIGRlIDIwMTMgcG9yIG1lZGlvIGRlbCBjdWFsIHNlIGNyZWEgZWwgUmVwb3NpdG9yaW8gSW5zdGl0dWNpb25hbCBkZSBsYSBVbml2ZXJzaWRhZCBEaXN0cml0YWwgRnJhbmNpc2NvIEpvc8OpIGRlIENhbGRhcyB5IGxhcyBkZW3DoXMgbm9ybWFzIGNvbmNvcmRhbnRlIHkgY29tcGxlbWVudGFyaWFzIHF1ZSByaWdlbiBhbCByZXNwZWN0by4gRXN0b3MgZG9jdW1lbnRvcyBwb2Ryw6FuIHNlciBjb25zdWx0YWRvcyB5IGRlc2NhcmdhZG9zIGVuIGVsIHBvcnRhbCB3ZWIgZGUgbGEgYmlibGlvdGVjYSBodHRwOi8vc2lzdGVtYWRlYmlibGlvdGVjYXMudWRpc3RyaXRhbC5lZHUuY28vICAKClNJIEVMIERPQ1VNRU5UTyBTRSBCQVNBIEVOIFVOIFRSQUJBSk8gUVVFIEhBIFNJRE8gUEFUUk9DSU5BRE8gTyBBUE9ZQURPIFBPUiBVTkEgQUdFTkNJQSBPIFVOQSBPUkdBTklaQUNJw5NOLCBDT04gRVhDRVBDScOTTiBERSBMQSBVTklWRVJTSURBRCBESVNUUklUQUwgRlJBTkNJU0NPIEpPU0UgREUgQ0FMREFTLCBMT1MgQVVUT1JFUyBHQVJBTlRJWkFOIFFVRSBTRSBIQSBDVU1QTElETyBDT04gTE9TIApERVJFQ0hPUyBZIE9CTElHQUNJT05FUyBSRVFVRVJJRE9TIFBPUiBFTCBSRVNQRUNUSVZPIENPTlRSQVRPIE8gQUNVRVJETy4KRW4gY29uc3RhbmNpYSBkZSBsbyBhbnRlcmlvciwgZmlybW8gKGFtb3MpIGVsIHByZXNlbnRlIGRvY3VtZW50byBhIGxvcyAKCkZJUk1BIERFIExPUyBUSVRVTEFSRVMgREUgREVSRUNIT1MgREUgQVVUT1IKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXyAgIEMuQy4gTm8uIF9fX19fX19fX19fX19fX19fXwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18gICBDLkMuIE5vLiBfX19fX19fX19fX19fX19fX18KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fICAgQy5DLiBOby4gX19fX19fX19fX19fX19fX19fCgpDb3JyZW8gRWxlY3Ryw7NuaWNvIEluc3RpdHVjaW9uYWwgZGVsIEF1dG9yIChlcyk6CkF1dG9yCUNvcnJlbyBFbGVjdHLDs25pY28gCjEJCjIJCjMJCgpOb3RhOiBFbiBjYXNvIHF1ZSBubyBlc3TDqSBkZSBhY3VlcmRvIGNvbiBsYXMgY29uZGljaW9uZXMgZGUgbGEgcHJlc2VudGUgbGljZW5jaWEsIGp1c3RpZmlxdWUgbG9zIG1vdGl2b3MgcG9yIGxvcyBjdWFsZXMgZWwgZG9jdW1lbnRvIHkgc3VzIGFuZXhvcyBubyBwdWVkZW4gc2VyIHB1YmxpY2Fkb3MgZW4gZWwgUmVwb3NpdG9yaW8gSW5zdGl0dWNpb25hbCBkZSBsYSBVbml2ZXJzaWRhZCBEaXN0cml0YWwgRnJhbmNpc2NvIEpvc8OpIGRlIENhbGRhcyBSSVVECg== |