An Event Based programming language for Runtime Monitoring and Dynamic Instrumentation of Concurrent and Distributed Programs

In this paper we introduce EKETAL, an event based programming language for runtime monitoring and dynamic instrumentation of distributed and concurrent applications. We argue that development, maintenance and evolution of distributed applications can be greatly improved by such a language. To suppor...

Full description

Autores:
Benavides, Luis Daniel
Durán, David
Pimienta, Camilo
Arboleda, Hugo
Tipo de recurso:
Work document
Fecha de publicación:
2016
Institución:
Escuela Colombiana de Ingeniería Julio Garavito
Repositorio:
Repositorio Institucional ECI
Idioma:
eng
OAI Identifier:
oai:repositorio.escuelaing.edu.co:001/3177
Acceso en línea:
https://repositorio.escuelaing.edu.co/handle/001/3177
https://repositorio.escuelaing.edu.co/
Palabra clave:
Eketal (Lenguaje de programación para computadores)
Software de aplicación
Application software
Desarrollo de software
Computer software - Development
Eketal (Computer programming language)
Debugging
Testing
Event patterns
Runtime monitoring
Event based languages
Distributed applications
Datarace error
Depuración
Pruebas
Patrones de eventos
Monitoreo de tiempo de ejecución
Lenguajes basados ​​en eventos
Aplicaciones distribuidas
Error de carrera de datos
Rights
openAccess
License
http://purl.org/coar/access_right/c_abf2
id ESCUELAIG2_e0ede650d45c5e061e68d54d42b7fc09
oai_identifier_str oai:repositorio.escuelaing.edu.co:001/3177
network_acronym_str ESCUELAIG2
network_name_str Repositorio Institucional ECI
repository_id_str
dc.title.eng.fl_str_mv An Event Based programming language for Runtime Monitoring and Dynamic Instrumentation of Concurrent and Distributed Programs
title An Event Based programming language for Runtime Monitoring and Dynamic Instrumentation of Concurrent and Distributed Programs
spellingShingle An Event Based programming language for Runtime Monitoring and Dynamic Instrumentation of Concurrent and Distributed Programs
Eketal (Lenguaje de programación para computadores)
Software de aplicación
Application software
Desarrollo de software
Computer software - Development
Eketal (Computer programming language)
Debugging
Testing
Event patterns
Runtime monitoring
Event based languages
Distributed applications
Datarace error
Depuración
Pruebas
Patrones de eventos
Monitoreo de tiempo de ejecución
Lenguajes basados ​​en eventos
Aplicaciones distribuidas
Error de carrera de datos
title_short An Event Based programming language for Runtime Monitoring and Dynamic Instrumentation of Concurrent and Distributed Programs
title_full An Event Based programming language for Runtime Monitoring and Dynamic Instrumentation of Concurrent and Distributed Programs
title_fullStr An Event Based programming language for Runtime Monitoring and Dynamic Instrumentation of Concurrent and Distributed Programs
title_full_unstemmed An Event Based programming language for Runtime Monitoring and Dynamic Instrumentation of Concurrent and Distributed Programs
title_sort An Event Based programming language for Runtime Monitoring and Dynamic Instrumentation of Concurrent and Distributed Programs
dc.creator.fl_str_mv Benavides, Luis Daniel
Durán, David
Pimienta, Camilo
Arboleda, Hugo
dc.contributor.author.none.fl_str_mv Benavides, Luis Daniel
Durán, David
Pimienta, Camilo
Arboleda, Hugo
dc.contributor.researchgroup.spa.fl_str_mv CTG - Informática
dc.subject.armarc.none.fl_str_mv Eketal (Lenguaje de programación para computadores)
Software de aplicación
Application software
Desarrollo de software
Computer software - Development
Eketal (Computer programming language)
topic Eketal (Lenguaje de programación para computadores)
Software de aplicación
Application software
Desarrollo de software
Computer software - Development
Eketal (Computer programming language)
Debugging
Testing
Event patterns
Runtime monitoring
Event based languages
Distributed applications
Datarace error
Depuración
Pruebas
Patrones de eventos
Monitoreo de tiempo de ejecución
Lenguajes basados ​​en eventos
Aplicaciones distribuidas
Error de carrera de datos
dc.subject.proposal.eng.fl_str_mv Debugging
Testing
Event patterns
Runtime monitoring
Event based languages
Distributed applications
Datarace error
dc.subject.proposal.spa.fl_str_mv Depuración
Pruebas
Patrones de eventos
Monitoreo de tiempo de ejecución
Lenguajes basados ​​en eventos
Aplicaciones distribuidas
Error de carrera de datos
description In this paper we introduce EKETAL, an event based programming language for runtime monitoring and dynamic instrumentation of distributed and concurrent applications. We argue that development, maintenance and evolution of distributed applications can be greatly improved by such a language. To support this claim, we first present the programming model and corresponding compiler implementation (compiler generates distributed AspectJ’s code), then we present micro-benchmarks of the runtime infrastructure and a qualitative study of the usage of the language for debugging and testing liveness and datarace problems found in BigData middleware.
publishDate 2016
dc.date.issued.none.fl_str_mv 2016
dc.date.accessioned.none.fl_str_mv 2024-07-16T22:02:04Z
dc.date.available.none.fl_str_mv 2024-07-16T22:02:04Z
dc.type.spa.fl_str_mv Documento de trabajo
dc.type.coarversion.fl_str_mv http://purl.org/coar/version/c_970fb48d4fbd8a85
dc.type.version.spa.fl_str_mv info:eu-repo/semantics/publishedVersion
dc.type.coar.spa.fl_str_mv http://purl.org/coar/resource_type/c_8042
dc.type.content.spa.fl_str_mv Text
dc.type.driver.spa.fl_str_mv info:eu-repo/semantics/workingPaper
format http://purl.org/coar/resource_type/c_8042
status_str publishedVersion
dc.identifier.uri.none.fl_str_mv https://repositorio.escuelaing.edu.co/handle/001/3177
dc.identifier.instname.spa.fl_str_mv Universidad Escuela Colombiana de Ingeniería Julio Garavito
dc.identifier.reponame.spa.fl_str_mv Repositorio Digital
dc.identifier.repourl.spa.fl_str_mv https://repositorio.escuelaing.edu.co/
url https://repositorio.escuelaing.edu.co/handle/001/3177
https://repositorio.escuelaing.edu.co/
identifier_str_mv Universidad Escuela Colombiana de Ingeniería Julio Garavito
Repositorio Digital
dc.language.iso.spa.fl_str_mv eng
language eng
dc.relation.references.spa.fl_str_mv J.-R. Abrial. Modeling in Event-B: System and Software Engineering. Cambridge University Press, New York, NY, USA, 1st edition, 2010.
L. D. Benavides Navarro, R. Douence, and M. S¨ udholt. Debugging and testing middleware with aspect-based control-flow and causal patterns. In In Proc. of the 9th Int. Middleware Conference, Leuven, Belgium, Dec. 2008. Springer-Verlag.
N. Benton, L. Cardelli, and C. Fournet. Modern concurrency abstractions for c#. In Proc. of the 16th European Conference on Object-Oriented Programming, ECOOP ’02, pages 415–440, London, UK, UK, 2002. Springer-Verlag.
M. Butler and S. Hallerstede. The rodin formal modeling tool. In Proc. of the 2007th Int. Conference on Formal Methods in Industry, FACS-FMI’07, pages 2–2, Swinton, UK, UK, 2007. British Computer Society
F. Chen and G. Ro¸ su. Mop: An efficient and generic runtime verification framework. SIGPLAN Not., 42(10):569–588, Oct. 2007.
C. Colombo, G. J. Pace, and G. Schneider. Larva — safer monitoring of real-time java programs (tool paper). In Seventh IEEE International Conference on Software Engineering and Formal Methods (SEFM), pages 33–37. IEEE Computer Society, November 2009.
A. Demers, J. Gehrke, M. Hong, M. Riedewald, and W. White. Towards expressive publish/subscribe systems. In Proc. of the 10th Int. Conf. on Advances in Database Technology, EDBT’06, pages 627–644, Berlin, Heidelberg, 2006. Springer-Verlag.
M. Eriksen. Effective http://twitter.github.io/effectivescala/. scala, 2012. Available:
P. Eugster and K. Jayaram. Eventjava: An extension of java for event correlation. In S. Drossopoulou, editor, ECOOP 2009– Object-Oriented Prog., volume 5653 of Lec. Notes in Computer Science, pages 570–594. Springer Berlin Heidelberg, 2009.
C. Fournet and G. Gonthier. The reflexive cham and the join-calculus. In Proc. of the 23rd ACM SIGPLAN-SIGACT Symp. on Principles of Programming Languages, POPL ’96, pages 372–385, New York, NY, USA, 1996. ACM.
W. Inc. Whatsapp open https://www.whatsapp.com/opensource/. source, 2016. Available
K. R. Jayaram and P. Eugster. Scalable efficient composite event detection. In Proc. of the 12th Int. Conf. on Coordination Models and Languages, COORDINATION’10, pages 168–182, Berlin, Heidelberg, 2010. Springer-Verlag.
Jgroups home page. latest visit on June 2015, 2011.
G. Kiczales, E. Hilsdale, J. Hugunin, M. Kersten, J. Palm, and W. G. Griswold. An overview of aspectj. In Proc. of the 15th European Conf. on Object-Oriented Prog., ECOOP ’01, pages 327–353, London, UK, 2001. Springer-Verlag.
P. Leger, E. Tanter, and H. Fukuda. An expressive stateful aspect language. Sci. Comput. Program., 102(C):108–141, May 2015.
Q. Luo and G. Rosu. EnforceMOP: a runtime property enforcement system for multithreaded programs. In the 2013 International Symposium, pages 156–166, New York, New York, USA, 2013. ACM Press.
F. Mattern. Virtual time and global states of distributed systems. In Proc. of the Int. Workshop on Parallel and distributed Algorithms, Chateau de Bonas, France, October 1988.
A. Møller. dk.brics.automaton– finite-state automata and regular expressions for Java. latest visit on May 2011, 2010.
V. Rivera and N. Cata˜ no. Translating event-b to jml-specified java programs. In Proc. of the 29th Annual ACM Symp. on Applied Computing, SAC ’14, pages 1264–1271, New York, NY, USA, 2014. ACM.
K. Serebryany and T. Iskhodzhanov. Threadsanitizer: Data race detection in practice. In Proc. of the Workshop on Binary Instrumentation and Applications, WBIA ’09, pages 62–71, New York, NY, USA, 2009. ACM.
J. C. TreeCache. A structured, replicated, transactional cache. user documentation., 2013. Available: http://docs.jboss.org/jbosscache/1.4.0/TreeCache/.
Y. Zhuang and S. Chiba. Method slots: Supporting methods, events, and advices by a single language construct. In Proc. of the 12th Annual Int. Conf. on Aspectoriented Software Development, AOSD ’13, pages 197–208, N.Y., USA, 2013. ACM.
dc.rights.coar.fl_str_mv http://purl.org/coar/access_right/c_abf2
dc.rights.accessrights.spa.fl_str_mv info:eu-repo/semantics/openAccess
eu_rights_str_mv openAccess
rights_invalid_str_mv http://purl.org/coar/access_right/c_abf2
dc.format.extent.spa.fl_str_mv 17 páginas
dc.format.mimetype.spa.fl_str_mv application/pdf
dc.publisher.spa.fl_str_mv Universidad Escuela Colombiana de Ingeniería Julio Garavito
Universidad Icesi
dc.publisher.place.spa.fl_str_mv Bogotá (Colombia)
dc.source.spa.fl_str_mv http://ldbn.is.escuelaing.edu.co/workingpapers/Distributed_Debugging_of_Liveness_and_Datarace_Errors_Using_an_Event_Based_Language.pdf
institution Escuela Colombiana de Ingeniería Julio Garavito
bitstream.url.fl_str_mv https://repositorio.escuelaing.edu.co/bitstream/001/3177/4/An%20event%20based%20programming%20language%20for%20runtime%20monitoring%20and%20dynamic%20instrumentation%20of%20concurrent%20and%20distributed%20programs.pdf.txt
https://repositorio.escuelaing.edu.co/bitstream/001/3177/3/Portada%20An%20event%20based%20programming%20lenguage%20for%20runtime%20monitoring%20and%20dynamic%20instrumentation%20of%20concurrent%20and%20distributed%20programs.PNG
https://repositorio.escuelaing.edu.co/bitstream/001/3177/5/An%20event%20based%20programming%20language%20for%20runtime%20monitoring%20and%20dynamic%20instrumentation%20of%20concurrent%20and%20distributed%20programs.pdf.jpg
https://repositorio.escuelaing.edu.co/bitstream/001/3177/2/license.txt
https://repositorio.escuelaing.edu.co/bitstream/001/3177/1/An%20event%20based%20programming%20language%20for%20runtime%20monitoring%20and%20dynamic%20instrumentation%20of%20concurrent%20and%20distributed%20programs.pdf
bitstream.checksum.fl_str_mv 5fb55b7b690dc7167d2d40a188315086
b433fe057b305cfe3c5253a9ec6220f3
7deec4222d6641e7f273631d42a9020d
5a7ca94c2e5326ee169f979d71d0f06e
c82d7cc9d7e54292076807053dcf19f0
bitstream.checksumAlgorithm.fl_str_mv MD5
MD5
MD5
MD5
MD5
repository.name.fl_str_mv Repositorio Escuela Colombiana de Ingeniería Julio Garavito
repository.mail.fl_str_mv repositorio.eci@escuelaing.edu.co
_version_ 1814355615147884544
spelling Benavides, Luis Daniel668af73942f5b7ca6c267f71cc9cdcebDurán, David2199ee1705cf501a9c6086111bfec47fPimienta, Camiloedee336840ceb732be273e88017718c5Arboleda, Hugof8462780e6dbe96346932fa9632d2bf3CTG - Informática2024-07-16T22:02:04Z2024-07-16T22:02:04Z2016https://repositorio.escuelaing.edu.co/handle/001/3177Universidad Escuela Colombiana de Ingeniería Julio GaravitoRepositorio Digitalhttps://repositorio.escuelaing.edu.co/In this paper we introduce EKETAL, an event based programming language for runtime monitoring and dynamic instrumentation of distributed and concurrent applications. We argue that development, maintenance and evolution of distributed applications can be greatly improved by such a language. To support this claim, we first present the programming model and corresponding compiler implementation (compiler generates distributed AspectJ’s code), then we present micro-benchmarks of the runtime infrastructure and a qualitative study of the usage of the language for debugging and testing liveness and datarace problems found in BigData middleware.En este artículo presentamos EKETAL, un lenguaje de programación basado en eventos para monitoreo en tiempo de ejecución e instrumentación dinámica de aplicaciones distribuidas y concurrentes. Sostenemos que dicho lenguaje puede mejorar enormemente el desarrollo, el mantenimiento y la evolución de aplicaciones distribuidas. Para respaldar esta afirmación, primero presentamos el modelo de programación y la implementación del compilador correspondiente (el compilador genera el código de AspectJ distribuido), luego presentamos micro puntos de referencia de la infraestructura de tiempo de ejecución y un estudio cualitativo del uso del lenguaje para depurar y probar la vida y la carrera de datos. Problemas encontrados en el middleware BigData.17 páginasapplication/pdfengUniversidad Escuela Colombiana de Ingeniería Julio GaravitoUniversidad IcesiBogotá (Colombia)http://ldbn.is.escuelaing.edu.co/workingpapers/Distributed_Debugging_of_Liveness_and_Datarace_Errors_Using_an_Event_Based_Language.pdfAn Event Based programming language for Runtime Monitoring and Dynamic Instrumentation of Concurrent and Distributed ProgramsDocumento de trabajoinfo:eu-repo/semantics/publishedVersionhttp://purl.org/coar/resource_type/c_8042Textinfo:eu-repo/semantics/workingPaperhttp://purl.org/coar/version/c_970fb48d4fbd8a85J.-R. Abrial. Modeling in Event-B: System and Software Engineering. Cambridge University Press, New York, NY, USA, 1st edition, 2010.L. D. Benavides Navarro, R. Douence, and M. S¨ udholt. Debugging and testing middleware with aspect-based control-flow and causal patterns. In In Proc. of the 9th Int. Middleware Conference, Leuven, Belgium, Dec. 2008. Springer-Verlag.N. Benton, L. Cardelli, and C. Fournet. Modern concurrency abstractions for c#. In Proc. of the 16th European Conference on Object-Oriented Programming, ECOOP ’02, pages 415–440, London, UK, UK, 2002. Springer-Verlag.M. Butler and S. Hallerstede. The rodin formal modeling tool. In Proc. of the 2007th Int. Conference on Formal Methods in Industry, FACS-FMI’07, pages 2–2, Swinton, UK, UK, 2007. British Computer SocietyF. Chen and G. Ro¸ su. Mop: An efficient and generic runtime verification framework. SIGPLAN Not., 42(10):569–588, Oct. 2007.C. Colombo, G. J. Pace, and G. Schneider. Larva — safer monitoring of real-time java programs (tool paper). In Seventh IEEE International Conference on Software Engineering and Formal Methods (SEFM), pages 33–37. IEEE Computer Society, November 2009.A. Demers, J. Gehrke, M. Hong, M. Riedewald, and W. White. Towards expressive publish/subscribe systems. In Proc. of the 10th Int. Conf. on Advances in Database Technology, EDBT’06, pages 627–644, Berlin, Heidelberg, 2006. Springer-Verlag.M. Eriksen. Effective http://twitter.github.io/effectivescala/. scala, 2012. Available:P. Eugster and K. Jayaram. Eventjava: An extension of java for event correlation. In S. Drossopoulou, editor, ECOOP 2009– Object-Oriented Prog., volume 5653 of Lec. Notes in Computer Science, pages 570–594. Springer Berlin Heidelberg, 2009.C. Fournet and G. Gonthier. The reflexive cham and the join-calculus. In Proc. of the 23rd ACM SIGPLAN-SIGACT Symp. on Principles of Programming Languages, POPL ’96, pages 372–385, New York, NY, USA, 1996. ACM.W. Inc. Whatsapp open https://www.whatsapp.com/opensource/. source, 2016. AvailableK. R. Jayaram and P. Eugster. Scalable efficient composite event detection. In Proc. of the 12th Int. Conf. on Coordination Models and Languages, COORDINATION’10, pages 168–182, Berlin, Heidelberg, 2010. Springer-Verlag.Jgroups home page. latest visit on June 2015, 2011.G. Kiczales, E. Hilsdale, J. Hugunin, M. Kersten, J. Palm, and W. G. Griswold. An overview of aspectj. In Proc. of the 15th European Conf. on Object-Oriented Prog., ECOOP ’01, pages 327–353, London, UK, 2001. Springer-Verlag.P. Leger, E. Tanter, and H. Fukuda. An expressive stateful aspect language. Sci. Comput. Program., 102(C):108–141, May 2015.Q. Luo and G. Rosu. EnforceMOP: a runtime property enforcement system for multithreaded programs. In the 2013 International Symposium, pages 156–166, New York, New York, USA, 2013. ACM Press.F. Mattern. Virtual time and global states of distributed systems. In Proc. of the Int. Workshop on Parallel and distributed Algorithms, Chateau de Bonas, France, October 1988.A. Møller. dk.brics.automaton– finite-state automata and regular expressions for Java. latest visit on May 2011, 2010.V. Rivera and N. Cata˜ no. Translating event-b to jml-specified java programs. In Proc. of the 29th Annual ACM Symp. on Applied Computing, SAC ’14, pages 1264–1271, New York, NY, USA, 2014. ACM.K. Serebryany and T. Iskhodzhanov. Threadsanitizer: Data race detection in practice. In Proc. of the Workshop on Binary Instrumentation and Applications, WBIA ’09, pages 62–71, New York, NY, USA, 2009. ACM.J. C. TreeCache. A structured, replicated, transactional cache. user documentation., 2013. Available: http://docs.jboss.org/jbosscache/1.4.0/TreeCache/.Y. Zhuang and S. Chiba. Method slots: Supporting methods, events, and advices by a single language construct. In Proc. of the 12th Annual Int. Conf. on Aspectoriented Software Development, AOSD ’13, pages 197–208, N.Y., USA, 2013. ACM.info:eu-repo/semantics/openAccesshttp://purl.org/coar/access_right/c_abf2Eketal (Lenguaje de programación para computadores)Software de aplicaciónApplication softwareDesarrollo de softwareComputer software - DevelopmentEketal (Computer programming language)DebuggingTestingEvent patternsRuntime monitoringEvent based languagesDistributed applicationsDatarace errorDepuraciónPruebasPatrones de eventosMonitoreo de tiempo de ejecuciónLenguajes basados ​​en eventosAplicaciones distribuidasError de carrera de datosTEXTAn event based programming language for runtime monitoring and dynamic instrumentation of concurrent and distributed programs.pdf.txtAn event based programming language for runtime monitoring and dynamic instrumentation of concurrent and distributed programs.pdf.txtExtracted texttext/plain42885https://repositorio.escuelaing.edu.co/bitstream/001/3177/4/An%20event%20based%20programming%20language%20for%20runtime%20monitoring%20and%20dynamic%20instrumentation%20of%20concurrent%20and%20distributed%20programs.pdf.txt5fb55b7b690dc7167d2d40a188315086MD54open accessTHUMBNAILPortada An event based programming lenguage for runtime monitoring and dynamic instrumentation of concurrent and distributed programs.PNGPortada An event based programming lenguage for runtime monitoring and dynamic instrumentation of concurrent and distributed programs.PNGimage/png153051https://repositorio.escuelaing.edu.co/bitstream/001/3177/3/Portada%20An%20event%20based%20programming%20lenguage%20for%20runtime%20monitoring%20and%20dynamic%20instrumentation%20of%20concurrent%20and%20distributed%20programs.PNGb433fe057b305cfe3c5253a9ec6220f3MD53open accessAn event based programming language for runtime monitoring and dynamic instrumentation of concurrent and distributed programs.pdf.jpgAn event based programming language for runtime monitoring and dynamic instrumentation of concurrent and distributed programs.pdf.jpgGenerated Thumbnailimage/jpeg10306https://repositorio.escuelaing.edu.co/bitstream/001/3177/5/An%20event%20based%20programming%20language%20for%20runtime%20monitoring%20and%20dynamic%20instrumentation%20of%20concurrent%20and%20distributed%20programs.pdf.jpg7deec4222d6641e7f273631d42a9020dMD55open accessLICENSElicense.txtlicense.txttext/plain; charset=utf-81881https://repositorio.escuelaing.edu.co/bitstream/001/3177/2/license.txt5a7ca94c2e5326ee169f979d71d0f06eMD52open accessORIGINALAn event based programming language for runtime monitoring and dynamic instrumentation of concurrent and distributed programs.pdfAn event based programming language for runtime monitoring and dynamic instrumentation of concurrent and distributed programs.pdfapplication/pdf373172https://repositorio.escuelaing.edu.co/bitstream/001/3177/1/An%20event%20based%20programming%20language%20for%20runtime%20monitoring%20and%20dynamic%20instrumentation%20of%20concurrent%20and%20distributed%20programs.pdfc82d7cc9d7e54292076807053dcf19f0MD51metadata only access001/3177oai:repositorio.escuelaing.edu.co:001/31772024-08-06 16:19:33.104metadata only accessRepositorio Escuela Colombiana de Ingeniería Julio Garavitorepositorio.eci@escuelaing.edu.coU0kgVVNURUQgSEFDRSBQQVJURSBERUwgR1JVUE8gREUgUEFSRVMgRVZBTFVBRE9SRVMgREUgTEEgQ09MRUNDScOTTiAiUEVFUiBSRVZJRVciLCBPTUlUQSBFU1RBIExJQ0VOQ0lBLgoKQXV0b3Jpem8gYSBsYSBFc2N1ZWxhIENvbG9tYmlhbmEgZGUgSW5nZW5pZXLDrWEgSnVsaW8gR2FyYXZpdG8gcGFyYSBwdWJsaWNhciBlbCB0cmFiYWpvIGRlIGdyYWRvLCBhcnTDrWN1bG8sIHZpZGVvLCAKY29uZmVyZW5jaWEsIGxpYnJvLCBpbWFnZW4sIGZvdG9ncmFmw61hLCBhdWRpbywgcHJlc2VudGFjacOzbiB1IG90cm8gKGVuICAgIGFkZWxhbnRlIGRvY3VtZW50bykgcXVlIGVuIGxhIGZlY2hhIAplbnRyZWdvIGVuIGZvcm1hdG8gZGlnaXRhbCwgeSBsZSBwZXJtaXRvIGRlIGZvcm1hIGluZGVmaW5pZGEgcXVlIGxvIHB1YmxpcXVlIGVuIGVsIHJlcG9zaXRvcmlvIGluc3RpdHVjaW9uYWwsIAplbiBsb3MgdMOpcm1pbm9zIGVzdGFibGVjaWRvcyBlbiBsYSBMZXkgMjMgZGUgMTk4MiwgbGEgTGV5IDQ0IGRlIDE5OTMsIHkgZGVtw6FzIGxleWVzIHkganVyaXNwcnVkZW5jaWEgdmlnZW50ZQphbCByZXNwZWN0bywgcGFyYSBmaW5lcyBlZHVjYXRpdm9zIHkgbm8gbHVjcmF0aXZvcy4gRXN0YSBhdXRvcml6YWNpw7NuIGVzIHbDoWxpZGEgcGFyYSBsYXMgZmFjdWx0YWRlcyB5IGRlcmVjaG9zIGRlIAp1c28gc29icmUgbGEgb2JyYSBlbiBmb3JtYXRvIGRpZ2l0YWwsIGVsZWN0csOzbmljbywgdmlydHVhbDsgeSBwYXJhIHVzb3MgZW4gcmVkZXMsIGludGVybmV0LCBleHRyYW5ldCwgeSBjdWFscXVpZXIgCmZvcm1hdG8gbyBtZWRpbyBjb25vY2lkbyBvIHBvciBjb25vY2VyLgpFbiBtaSBjYWxpZGFkIGRlIGF1dG9yLCBleHByZXNvIHF1ZSBlbCBkb2N1bWVudG8gb2JqZXRvIGRlIGxhIHByZXNlbnRlIGF1dG9yaXphY2nDs24gZXMgb3JpZ2luYWwgeSBsbyBlbGFib3LDqSBzaW4gCnF1ZWJyYW50YXIgbmkgc3VwbGFudGFyIGxvcyBkZXJlY2hvcyBkZSBhdXRvciBkZSB0ZXJjZXJvcy4gUG9yIGxvIHRhbnRvLCBlcyBkZSBtaSBleGNsdXNpdmEgYXV0b3LDrWEgeSwgZW4gY29uc2VjdWVuY2lhLCAKdGVuZ28gbGEgdGl0dWxhcmlkYWQgc29icmUgw6lsLiBFbiBjYXNvIGRlIHF1ZWphIG8gYWNjacOzbiBwb3IgcGFydGUgZGUgdW4gdGVyY2VybyByZWZlcmVudGUgYSBsb3MgZGVyZWNob3MgZGUgYXV0b3Igc29icmUgCmVsIGRvY3VtZW50byBlbiBjdWVzdGnDs24sIGFzdW1pcsOpIGxhIHJlc3BvbnNhYmlsaWRhZCB0b3RhbCB5IHNhbGRyw6kgZW4gZGVmZW5zYSBkZSBsb3MgZGVyZWNob3MgYXF1w60gYXV0b3JpemFkb3MuIEVzdG8gCnNpZ25pZmljYSBxdWUsIHBhcmEgdG9kb3MgbG9zIGVmZWN0b3MsIGxhIEVzY3VlbGEgYWN0w7phIGNvbW8gdW4gdGVyY2VybyBkZSBidWVuYSBmZS4KVG9kYSBwZXJzb25hIHF1ZSBjb25zdWx0ZSBlbCBSZXBvc2l0b3JpbyBJbnN0aXR1Y2lvbmFsIGRlIGxhIEVzY3VlbGEsIGVsIENhdMOhbG9nbyBlbiBsw61uZWEgdSBvdHJvIG1lZGlvIGVsZWN0csOzbmljbywgCnBvZHLDoSBjb3BpYXIgYXBhcnRlcyBkZWwgdGV4dG8sIGNvbiBlbCBjb21wcm9taXNvIGRlIGNpdGFyIHNpZW1wcmUgbGEgZnVlbnRlLCBsYSBjdWFsIGluY2x1eWUgZWwgdMOtdHVsbyBkZWwgdHJhYmFqbyB5IGVsIAphdXRvci5Fc3RhIGF1dG9yaXphY2nDs24gbm8gaW1wbGljYSByZW51bmNpYSBhIGxhIGZhY3VsdGFkIHF1ZSB0ZW5nbyBkZSBwdWJsaWNhciB0b3RhbCBvIHBhcmNpYWxtZW50ZSBsYSBvYnJhIGVuIG90cm9zIAptZWRpb3MuRXN0YSBhdXRvcml6YWNpw7NuIGVzdMOhIHJlc3BhbGRhZGEgcG9yIGxhcyBmaXJtYXMgZGVsIChsb3MpIGF1dG9yKGVzKSBkZWwgZG9jdW1lbnRvLiAKU8OtIGF1dG9yaXpvIChhbWJvcykK