A framework for self healing systems
Today’s software systems face significant challenges in maintaining stability in the face of unforeseen disruptions, resulting in substantial costs. Existing self-healing solutions primarily target known or anticipated failures, leaving systems vulnerable to unforeseen states. This project presents...
- Autores:
-
Cerino Pulido, Javier
- Tipo de recurso:
- Trabajo de grado de pregrado
- Fecha de publicación:
- 2024
- Institución:
- Universidad de los Andes
- Repositorio:
- Séneca: repositorio Uniandes
- Idioma:
- eng
- OAI Identifier:
- oai:repositorio.uniandes.edu.co:1992/75425
- Acceso en línea:
- https://hdl.handle.net/1992/75425
- Palabra clave:
- Self Healing
Framework
Dynamic
Reinforcement Learning
Scala
Ingeniería
- Rights
- openAccess
- License
- Attribution-NonCommercial-ShareAlike 4.0 International
id |
UNIANDES2_496ead05c4ee7d234ef9924cc106d0c4 |
---|---|
oai_identifier_str |
oai:repositorio.uniandes.edu.co:1992/75425 |
network_acronym_str |
UNIANDES2 |
network_name_str |
Séneca: repositorio Uniandes |
repository_id_str |
|
dc.title.eng.fl_str_mv |
A framework for self healing systems |
title |
A framework for self healing systems |
spellingShingle |
A framework for self healing systems Self Healing Framework Dynamic Reinforcement Learning Scala Ingeniería |
title_short |
A framework for self healing systems |
title_full |
A framework for self healing systems |
title_fullStr |
A framework for self healing systems |
title_full_unstemmed |
A framework for self healing systems |
title_sort |
A framework for self healing systems |
dc.creator.fl_str_mv |
Cerino Pulido, Javier |
dc.contributor.advisor.none.fl_str_mv |
Cardozo Álvarez, Nicolás Sanabria Ardila, Mateo |
dc.contributor.author.none.fl_str_mv |
Cerino Pulido, Javier |
dc.contributor.jury.none.fl_str_mv |
Cardozo Álvarez, Nicolás |
dc.subject.keyword.none.fl_str_mv |
Self Healing Framework Dynamic Reinforcement Learning Scala |
topic |
Self Healing Framework Dynamic Reinforcement Learning Scala Ingeniería |
dc.subject.themes.spa.fl_str_mv |
Ingeniería |
description |
Today’s software systems face significant challenges in maintaining stability in the face of unforeseen disruptions, resulting in substantial costs. Existing self-healing solutions primarily target known or anticipated failures, leaving systems vulnerable to unforeseen states. This project presents a modular framework for dynamic self-healing systems capable of addressing unforeseen error states through adaptive recovery strategies. By integrating continuous monitoring with Reinforcement Learning (RL), the framework detects disruptions based on a few predicates and learns corrective actions to restore system stability. The framework uses the foundations of Context-Oriented Programming (COP) for dynamic adaptation and employs the Scala programming language along with the REScala library to improve reactivity. Validation was performed using two case studies programmed in this project using already existing REScala application references: a graphical design application and a productivity task management system, demonstrating the framework’s ability to adapt to diverse reactive environments. This project lays the foundation for building more resilient self-healing systems that autonomously learn recovery strategies, reducing the reliance on predefined error handling mechanisms. The modularity and scalability of the framework aim to simplify integration across multiple domains, ensuring robustness and flexibility in reactive software systems. |
publishDate |
2024 |
dc.date.issued.none.fl_str_mv |
2024-12-16 |
dc.date.accessioned.none.fl_str_mv |
2025-01-15T14:55:34Z |
dc.date.available.none.fl_str_mv |
2025-01-15T14:55:34Z |
dc.type.none.fl_str_mv |
Trabajo de grado - Pregrado |
dc.type.driver.none.fl_str_mv |
info:eu-repo/semantics/bachelorThesis |
dc.type.version.none.fl_str_mv |
info:eu-repo/semantics/acceptedVersion |
dc.type.coar.none.fl_str_mv |
http://purl.org/coar/resource_type/c_7a1f |
dc.type.content.none.fl_str_mv |
Text |
dc.type.redcol.none.fl_str_mv |
http://purl.org/redcol/resource_type/TP |
format |
http://purl.org/coar/resource_type/c_7a1f |
status_str |
acceptedVersion |
dc.identifier.uri.none.fl_str_mv |
https://hdl.handle.net/1992/75425 |
dc.identifier.instname.none.fl_str_mv |
instname:Universidad de los Andes |
dc.identifier.reponame.none.fl_str_mv |
reponame:Repositorio Institucional Séneca |
dc.identifier.repourl.none.fl_str_mv |
repourl:https://repositorio.uniandes.edu.co/ |
url |
https://hdl.handle.net/1992/75425 |
identifier_str_mv |
instname:Universidad de los Andes reponame:Repositorio Institucional Séneca repourl:https://repositorio.uniandes.edu.co/ |
dc.language.iso.none.fl_str_mv |
eng |
language |
eng |
dc.relation.references.none.fl_str_mv |
Eugene Burmako. Unification of compile-time and runtime metaprogramming in Scala. Technical report, EPFL, 2017. URL https://infoscience.epfl.ch/entities/publication/392deeaa-2885-4fbb-979e-fccb8ebec360. Nicolás Cardozo and Ivana Dusparic. Auto-COP: Adaptation Generation in Context- Oriented Programming using Reinforcement Learning Options, 2023. URL https://arxiv.org/abs/2103.06757. _eprint: 2103.06757. Nicolás Cardozo, Sebastián González, Kim Mens, Ragnhild Van Der Straeten, and Theo D’Hondt. Modeling and Analyzing Self-Adaptive Systems with Context Petri Nets. In Proceedings - 2013 International Symposium on Theoretical Aspects of Software Engineering, TASE 2013, pages 191 – 198, July 2013. DOI 10.1109/TASE.2013.33. Nicolás Cardozo, Sebastián González, Kim Mens, Ragnhild Van Der Straeten, Jorge Vallejos, and Theo D’Hondt. Semantics for consistent activation in context-oriented systems. Information and Software Technology, 58:71–94, 2015. ISSN 0950-5849. DOI https://doi.org/10.1016/j.infsof.2014.10.002. URL https://www.sciencedirect.com/science/article/pii/S0950584914002134. C. Cavaness. What Is a Framework? - Programming Jakarta Struts [Book]. URL https://www.oreilly.com/library/view/programming-jakarta-struts/0596003285/ch01s06.html. ISBN: 9780596003289. Lyn Dupré. BUGS in Writing: A Guide to Debugging Your Prose. Revised edition, 1998. ISBN 0-201-37921-X. Mira Mezini. Showcases - REScalaREScala. URL https://www.rescala-lang.com/showcases.html. Heather Miller, Eugene Burmako, and Philipp Haller. Overview Reflection, . URL https://docs.scala-lang.org/overviews/reflection/overview.html. Heather Miller, Eugene Burmako, and Philipp Haller. Scala Reflection Library 2.13.0-scala.reflect.api, . URL https://www.scala-lang.org/api/2.13.0/scala-reflect/scala/reflect/api/index.html. Harald Psaier and Schahram Dustdar. A survey on self-healing systems: Approaches and systems. Computing, 91:43–73, August 2011. DOI 10.1007/s00607-010-0107-y. Guido Salva, Pascal Weisenburger, and Simon Sprankel. RESwing, October 2014. URL https://github.com/guidosalva/RESwing/tree/master. Mateo Sanabria, Ivana Dusaric, and Nicolás Cardozo. Learning Recovery Strategies for Dynamic Self-healing in Reactive Systems. In Proceedings of the 19th International Symposium on Software Engineering for Adaptive and Self-Managing Systems, SEAMS’24, pages 133–142, New York, NY, USA, 2024. Association for Computing Machinery. ISBN 9798400705854. DOI 10.1145/3643915.3644097. URL https://doi-org.ezproxy.uniandes.edu.co/10.1145/3643915.3644097. event-place: Lisbon, AA, Portugal. William Strunk and E.B. White. The Elements of Style. Longman, fourth edition, 2000. ISBN 0-205-30902-X. |
dc.rights.en.fl_str_mv |
Attribution-NonCommercial-ShareAlike 4.0 International |
dc.rights.uri.none.fl_str_mv |
http://creativecommons.org/licenses/by-nc-sa/4.0/ |
dc.rights.accessrights.none.fl_str_mv |
info:eu-repo/semantics/openAccess |
dc.rights.coar.none.fl_str_mv |
http://purl.org/coar/access_right/c_abf2 |
rights_invalid_str_mv |
Attribution-NonCommercial-ShareAlike 4.0 International http://creativecommons.org/licenses/by-nc-sa/4.0/ http://purl.org/coar/access_right/c_abf2 |
eu_rights_str_mv |
openAccess |
dc.format.extent.none.fl_str_mv |
74 páginas |
dc.format.mimetype.none.fl_str_mv |
application/pdf |
dc.publisher.none.fl_str_mv |
Universidad de los Andes |
dc.publisher.program.none.fl_str_mv |
Ingeniería de Sistemas y Computación |
dc.publisher.faculty.none.fl_str_mv |
Facultad de Ingeniería |
dc.publisher.department.none.fl_str_mv |
Departamento de Ingeniería de Sistemas y Computación |
publisher.none.fl_str_mv |
Universidad de los Andes |
institution |
Universidad de los Andes |
bitstream.url.fl_str_mv |
https://repositorio.uniandes.edu.co/bitstreams/d96c319f-d70a-4408-aace-da928f17b746/download https://repositorio.uniandes.edu.co/bitstreams/9e59aabe-31fe-46f4-99ca-bad5c30237a4/download https://repositorio.uniandes.edu.co/bitstreams/bf6d2383-30fa-45b4-95e6-4b4b95aa23dd/download https://repositorio.uniandes.edu.co/bitstreams/0c93afa6-6695-4dd6-a67b-b8505ddabc48/download https://repositorio.uniandes.edu.co/bitstreams/27155d79-8be1-49e0-a862-15aef76efc06/download https://repositorio.uniandes.edu.co/bitstreams/37c71097-7b91-46c1-924e-03ba3431bab4/download https://repositorio.uniandes.edu.co/bitstreams/b3de7835-0bc8-4ed0-ae01-d7fc30a476d7/download https://repositorio.uniandes.edu.co/bitstreams/b7c424b7-f6cd-4a5f-993f-b26b67e9fb37/download |
bitstream.checksum.fl_str_mv |
015e7b059d6a67b3c3842b352bcaf9b9 61ed574df2d3630d299f4cc858ff7a95 934f4ca17e109e0a05eaeaba504d7ce4 ae9e573a68e7f92501b6913cc846c39f fd46a6f33b7077ecf0be70c47b3986bc b085fb584fd7a3ee68cbcc57f26d4f6a 4989ac85465817731b4a6ebbcd82f603 4bbab0371b07ef2d52f6bcc159930886 |
bitstream.checksumAlgorithm.fl_str_mv |
MD5 MD5 MD5 MD5 MD5 MD5 MD5 MD5 |
repository.name.fl_str_mv |
Repositorio institucional Séneca |
repository.mail.fl_str_mv |
adminrepositorio@uniandes.edu.co |
_version_ |
1831927727776595968 |
spelling |
Cardozo Álvarez, Nicolásvirtual::21849-1Sanabria Ardila, MateoCerino Pulido, JavierCardozo Álvarez, Nicolásvirtual::21850-12025-01-15T14:55:34Z2025-01-15T14:55:34Z2024-12-16https://hdl.handle.net/1992/75425instname:Universidad de los Andesreponame:Repositorio Institucional Sénecarepourl:https://repositorio.uniandes.edu.co/Today’s software systems face significant challenges in maintaining stability in the face of unforeseen disruptions, resulting in substantial costs. Existing self-healing solutions primarily target known or anticipated failures, leaving systems vulnerable to unforeseen states. This project presents a modular framework for dynamic self-healing systems capable of addressing unforeseen error states through adaptive recovery strategies. By integrating continuous monitoring with Reinforcement Learning (RL), the framework detects disruptions based on a few predicates and learns corrective actions to restore system stability. The framework uses the foundations of Context-Oriented Programming (COP) for dynamic adaptation and employs the Scala programming language along with the REScala library to improve reactivity. Validation was performed using two case studies programmed in this project using already existing REScala application references: a graphical design application and a productivity task management system, demonstrating the framework’s ability to adapt to diverse reactive environments. This project lays the foundation for building more resilient self-healing systems that autonomously learn recovery strategies, reducing the reliance on predefined error handling mechanisms. The modularity and scalability of the framework aim to simplify integration across multiple domains, ensuring robustness and flexibility in reactive software systems.Pregrado74 páginasapplication/pdfengUniversidad de los AndesIngeniería de Sistemas y ComputaciónFacultad de IngenieríaDepartamento de Ingeniería de Sistemas y ComputaciónAttribution-NonCommercial-ShareAlike 4.0 Internationalhttp://creativecommons.org/licenses/by-nc-sa/4.0/info:eu-repo/semantics/openAccesshttp://purl.org/coar/access_right/c_abf2A framework for self healing systemsTrabajo de grado - Pregradoinfo:eu-repo/semantics/bachelorThesisinfo:eu-repo/semantics/acceptedVersionhttp://purl.org/coar/resource_type/c_7a1fTexthttp://purl.org/redcol/resource_type/TPSelf HealingFrameworkDynamicReinforcement LearningScalaIngenieríaEugene Burmako. Unification of compile-time and runtime metaprogramming in Scala. Technical report, EPFL, 2017. URL https://infoscience.epfl.ch/entities/publication/392deeaa-2885-4fbb-979e-fccb8ebec360.Nicolás Cardozo and Ivana Dusparic. Auto-COP: Adaptation Generation in Context- Oriented Programming using Reinforcement Learning Options, 2023. URL https://arxiv.org/abs/2103.06757. _eprint: 2103.06757.Nicolás Cardozo, Sebastián González, Kim Mens, Ragnhild Van Der Straeten, and Theo D’Hondt. Modeling and Analyzing Self-Adaptive Systems with Context Petri Nets. In Proceedings - 2013 International Symposium on Theoretical Aspects of Software Engineering, TASE 2013, pages 191 – 198, July 2013. DOI 10.1109/TASE.2013.33.Nicolás Cardozo, Sebastián González, Kim Mens, Ragnhild Van Der Straeten, Jorge Vallejos, and Theo D’Hondt. Semantics for consistent activation in context-oriented systems. Information and Software Technology, 58:71–94, 2015. ISSN 0950-5849. DOI https://doi.org/10.1016/j.infsof.2014.10.002. URL https://www.sciencedirect.com/science/article/pii/S0950584914002134.C. Cavaness. What Is a Framework? - Programming Jakarta Struts [Book]. URL https://www.oreilly.com/library/view/programming-jakarta-struts/0596003285/ch01s06.html. ISBN: 9780596003289.Lyn Dupré. BUGS in Writing: A Guide to Debugging Your Prose. Revised edition, 1998. ISBN 0-201-37921-X.Mira Mezini. Showcases - REScalaREScala. URL https://www.rescala-lang.com/showcases.html.Heather Miller, Eugene Burmako, and Philipp Haller. Overview Reflection, . URL https://docs.scala-lang.org/overviews/reflection/overview.html.Heather Miller, Eugene Burmako, and Philipp Haller. Scala Reflection Library 2.13.0-scala.reflect.api, . URL https://www.scala-lang.org/api/2.13.0/scala-reflect/scala/reflect/api/index.html.Harald Psaier and Schahram Dustdar. A survey on self-healing systems: Approaches and systems. Computing, 91:43–73, August 2011. DOI 10.1007/s00607-010-0107-y.Guido Salva, Pascal Weisenburger, and Simon Sprankel. RESwing, October 2014. URL https://github.com/guidosalva/RESwing/tree/master.Mateo Sanabria, Ivana Dusaric, and Nicolás Cardozo. Learning Recovery Strategies for Dynamic Self-healing in Reactive Systems. In Proceedings of the 19th International Symposium on Software Engineering for Adaptive and Self-Managing Systems, SEAMS’24, pages 133–142, New York, NY, USA, 2024. Association for Computing Machinery. ISBN 9798400705854. DOI 10.1145/3643915.3644097. URL https://doi-org.ezproxy.uniandes.edu.co/10.1145/3643915.3644097. event-place: Lisbon, AA, Portugal.William Strunk and E.B. White. The Elements of Style. Longman, fourth edition, 2000. ISBN 0-205-30902-X.202020873Publicationhttps://scholar.google.es/citations?user=3iTzjQsAAAAJvirtual::21849-1https://scholar.google.es/citations?user=3iTzjQsAAAAJvirtual::21850-10000-0002-1094-9952virtual::21849-10000-0002-1094-9952virtual::21850-1a77ff528-fc33-44d6-9022-814f81ef407avirtual::21849-1a77ff528-fc33-44d6-9022-814f81ef407avirtual::21849-1a77ff528-fc33-44d6-9022-814f81ef407avirtual::21850-1a77ff528-fc33-44d6-9022-814f81ef407avirtual::21850-1ORIGINALA framework for self healing systems.pdfA framework for self healing systems.pdfapplication/pdf847101https://repositorio.uniandes.edu.co/bitstreams/d96c319f-d70a-4408-aace-da928f17b746/download015e7b059d6a67b3c3842b352bcaf9b9MD51autorizacion tesis.pdfautorizacion tesis.pdfHIDEapplication/pdf323007https://repositorio.uniandes.edu.co/bitstreams/9e59aabe-31fe-46f4-99ca-bad5c30237a4/download61ed574df2d3630d299f4cc858ff7a95MD52CC-LICENSElicense_rdflicense_rdfapplication/rdf+xml; charset=utf-81031https://repositorio.uniandes.edu.co/bitstreams/bf6d2383-30fa-45b4-95e6-4b4b95aa23dd/download934f4ca17e109e0a05eaeaba504d7ce4MD53LICENSElicense.txtlicense.txttext/plain; charset=utf-82535https://repositorio.uniandes.edu.co/bitstreams/0c93afa6-6695-4dd6-a67b-b8505ddabc48/downloadae9e573a68e7f92501b6913cc846c39fMD54TEXTA framework for self healing systems.pdf.txtA framework for self healing systems.pdf.txtExtracted texttext/plain100287https://repositorio.uniandes.edu.co/bitstreams/27155d79-8be1-49e0-a862-15aef76efc06/downloadfd46a6f33b7077ecf0be70c47b3986bcMD55autorizacion tesis.pdf.txtautorizacion tesis.pdf.txtExtracted texttext/plain1944https://repositorio.uniandes.edu.co/bitstreams/37c71097-7b91-46c1-924e-03ba3431bab4/downloadb085fb584fd7a3ee68cbcc57f26d4f6aMD57THUMBNAILA framework for self healing systems.pdf.jpgA framework for self healing systems.pdf.jpgGenerated Thumbnailimage/jpeg6689https://repositorio.uniandes.edu.co/bitstreams/b3de7835-0bc8-4ed0-ae01-d7fc30a476d7/download4989ac85465817731b4a6ebbcd82f603MD56autorizacion tesis.pdf.jpgautorizacion tesis.pdf.jpgGenerated Thumbnailimage/jpeg11074https://repositorio.uniandes.edu.co/bitstreams/b7c424b7-f6cd-4a5f-993f-b26b67e9fb37/download4bbab0371b07ef2d52f6bcc159930886MD581992/75425oai:repositorio.uniandes.edu.co:1992/754252025-03-05 10:02:25.341http://creativecommons.org/licenses/by-nc-sa/4.0/Attribution-NonCommercial-ShareAlike 4.0 Internationalopen.accesshttps://repositorio.uniandes.edu.coRepositorio institucional Sénecaadminrepositorio@uniandes.edu.coPGgzPjxzdHJvbmc+RGVzY2FyZ28gZGUgUmVzcG9uc2FiaWxpZGFkIC0gTGljZW5jaWEgZGUgQXV0b3JpemFjacOzbjwvc3Ryb25nPjwvaDM+CjxwPjxzdHJvbmc+UG9yIGZhdm9yIGxlZXIgYXRlbnRhbWVudGUgZXN0ZSBkb2N1bWVudG8gcXVlIHBlcm1pdGUgYWwgUmVwb3NpdG9yaW8gSW5zdGl0dWNpb25hbCBTw6luZWNhIHJlcHJvZHVjaXIgeSBkaXN0cmlidWlyIGxvcyByZWN1cnNvcyBkZSBpbmZvcm1hY2nDs24gZGVwb3NpdGFkb3MgbWVkaWFudGUgbGEgYXV0b3JpemFjacOzbiBkZSBsb3Mgc2lndWllbnRlcyB0w6lybWlub3M6PC9zdHJvbmc+PC9wPgo8cD5Db25jZWRhIGxhIGxpY2VuY2lhIGRlIGRlcMOzc2l0byBlc3TDoW5kYXIgc2VsZWNjaW9uYW5kbyBsYSBvcGNpw7NuIDxzdHJvbmc+J0FjZXB0YXIgbG9zIHTDqXJtaW5vcyBhbnRlcmlvcm1lbnRlIGRlc2NyaXRvcyc8L3N0cm9uZz4geSBjb250aW51YXIgZWwgcHJvY2VzbyBkZSBlbnbDrW8gbWVkaWFudGUgZWwgYm90w7NuIDxzdHJvbmc+J1NpZ3VpZW50ZScuPC9zdHJvbmc+PC9wPgo8aHI+CjxwPllvLCBlbiBtaSBjYWxpZGFkIGRlIGF1dG9yIGRlbCB0cmFiYWpvIGRlIHRlc2lzLCBtb25vZ3JhZsOtYSBvIHRyYWJham8gZGUgZ3JhZG8sIGhhZ28gZW50cmVnYSBkZWwgZWplbXBsYXIgcmVzcGVjdGl2byB5IGRlIHN1cyBhbmV4b3MgZGUgc2VyIGVsIGNhc28sIGVuIGZvcm1hdG8gZGlnaXRhbCB5L28gZWxlY3Ryw7NuaWNvIHkgYXV0b3Jpem8gYSBsYSBVbml2ZXJzaWRhZCBkZSBsb3MgQW5kZXMgcGFyYSBxdWUgcmVhbGljZSBsYSBwdWJsaWNhY2nDs24gZW4gZWwgU2lzdGVtYSBkZSBCaWJsaW90ZWNhcyBvIGVuIGN1YWxxdWllciBvdHJvIHNpc3RlbWEgbyBiYXNlIGRlIGRhdG9zIHByb3BpbyBvIGFqZW5vIGEgbGEgVW5pdmVyc2lkYWQgeSBwYXJhIHF1ZSBlbiBsb3MgdMOpcm1pbm9zIGVzdGFibGVjaWRvcyBlbiBsYSBMZXkgMjMgZGUgMTk4MiwgTGV5IDQ0IGRlIDE5OTMsIERlY2lzacOzbiBBbmRpbmEgMzUxIGRlIDE5OTMsIERlY3JldG8gNDYwIGRlIDE5OTUgeSBkZW3DoXMgbm9ybWFzIGdlbmVyYWxlcyBzb2JyZSBsYSBtYXRlcmlhLCB1dGlsaWNlIGVuIHRvZGFzIHN1cyBmb3JtYXMsIGxvcyBkZXJlY2hvcyBwYXRyaW1vbmlhbGVzIGRlIHJlcHJvZHVjY2nDs24sIGNvbXVuaWNhY2nDs24gcMO6YmxpY2EsIHRyYW5zZm9ybWFjacOzbiB5IGRpc3RyaWJ1Y2nDs24gKGFscXVpbGVyLCBwcsOpc3RhbW8gcMO6YmxpY28gZSBpbXBvcnRhY2nDs24pIHF1ZSBtZSBjb3JyZXNwb25kZW4gY29tbyBjcmVhZG9yIGRlIGxhIG9icmEgb2JqZXRvIGRlbCBwcmVzZW50ZSBkb2N1bWVudG8uPC9wPgo8cD5MYSBwcmVzZW50ZSBhdXRvcml6YWNpw7NuIHNlIGVtaXRlIGVuIGNhbGlkYWQgZGUgYXV0b3IgZGUgbGEgb2JyYSBvYmpldG8gZGVsIHByZXNlbnRlIGRvY3VtZW50byB5IG5vIGNvcnJlc3BvbmRlIGEgY2VzacOzbiBkZSBkZXJlY2hvcywgc2lubyBhIGxhIGF1dG9yaXphY2nDs24gZGUgdXNvIGFjYWTDqW1pY28gZGUgY29uZm9ybWlkYWQgY29uIGxvIGFudGVyaW9ybWVudGUgc2XDsWFsYWRvLiBMYSBwcmVzZW50ZSBhdXRvcml6YWNpw7NuIHNlIGhhY2UgZXh0ZW5zaXZhIG5vIHNvbG8gYSBsYXMgZmFjdWx0YWRlcyB5IGRlcmVjaG9zIGRlIHVzbyBzb2JyZSBsYSBvYnJhIGVuIGZvcm1hdG8gbyBzb3BvcnRlIG1hdGVyaWFsLCBzaW5vIHRhbWJpw6luIHBhcmEgZm9ybWF0byBlbGVjdHLDs25pY28sIHkgZW4gZ2VuZXJhbCBwYXJhIGN1YWxxdWllciBmb3JtYXRvIGNvbm9jaWRvIG8gcG9yIGNvbm9jZXIuPC9wPgo8cD5FbCBhdXRvciwgbWFuaWZpZXN0YSBxdWUgbGEgb2JyYSBvYmpldG8gZGUgbGEgcHJlc2VudGUgYXV0b3JpemFjacOzbiBlcyBvcmlnaW5hbCB5IGxhIHJlYWxpesOzIHNpbiB2aW9sYXIgbyB1c3VycGFyIGRlcmVjaG9zIGRlIGF1dG9yIGRlIHRlcmNlcm9zLCBwb3IgbG8gdGFudG8sIGxhIG9icmEgZXMgZGUgc3UgZXhjbHVzaXZhIGF1dG9yw61hIHkgdGllbmUgbGEgdGl0dWxhcmlkYWQgc29icmUgbGEgbWlzbWEuPC9wPgo8cD5FbiBjYXNvIGRlIHByZXNlbnRhcnNlIGN1YWxxdWllciByZWNsYW1hY2nDs24gbyBhY2Npw7NuIHBvciBwYXJ0ZSBkZSB1biB0ZXJjZXJvIGVuIGN1YW50byBhIGxvcyBkZXJlY2hvcyBkZSBhdXRvciBzb2JyZSBsYSBvYnJhIGVuIGN1ZXN0acOzbiwgZWwgYXV0b3IgYXN1bWlyw6EgdG9kYSBsYSByZXNwb25zYWJpbGlkYWQsIHkgc2FsZHLDoSBkZSBkZWZlbnNhIGRlIGxvcyBkZXJlY2hvcyBhcXXDrSBhdXRvcml6YWRvcywgcGFyYSB0b2RvcyBsb3MgZWZlY3RvcyBsYSBVbml2ZXJzaWRhZCBhY3TDumEgY29tbyB1biB0ZXJjZXJvIGRlIGJ1ZW5hIGZlLjwvcD4KPHA+U2kgdGllbmUgYWxndW5hIGR1ZGEgc29icmUgbGEgbGljZW5jaWEsIHBvciBmYXZvciwgY29udGFjdGUgY29uIGVsIDxhIGhyZWY9Im1haWx0bzpiaWJsaW90ZWNhQHVuaWFuZGVzLmVkdS5jbyIgdGFyZ2V0PSJfYmxhbmsiPkFkbWluaXN0cmFkb3IgZGVsIFNpc3RlbWEuPC9hPjwvcD4K |