An elementary and unified approach to program correctness
We present through the algorithmic language DHL (Dijkstra-Hehner language), a practical approach to a simple first order theory based on calculational logic, unifying Hoare and Dijkstra’s iterative style of programming with Hehner’s recursive predicative programming theory, getting the “best of the...
- Autores:
-
Bohórquez, Jaime
- Tipo de recurso:
- Article of journal
- Fecha de publicación:
- 2009
- Institución:
- Escuela Colombiana de Ingeniería Julio Garavito
- Repositorio:
- Repositorio Institucional ECI
- Idioma:
- eng
- OAI Identifier:
- oai:repositorio.escuelaing.edu.co:001/1904
- Acceso en línea:
- https://repositorio.escuelaing.edu.co/handle/001/1904
- Palabra clave:
- Teoría de la Programación
Metodología de programación
Algoritmos
Theory of Programming
Programming Methodology
DHL
Algorithms
- Rights
- closedAccess
- License
- http://purl.org/coar/access_right/c_14cb
id |
ESCUELAIG2_b7594c907947f6e227262842c5356306 |
---|---|
oai_identifier_str |
oai:repositorio.escuelaing.edu.co:001/1904 |
network_acronym_str |
ESCUELAIG2 |
network_name_str |
Repositorio Institucional ECI |
repository_id_str |
|
dc.title.eng.fl_str_mv |
An elementary and unified approach to program correctness |
title |
An elementary and unified approach to program correctness |
spellingShingle |
An elementary and unified approach to program correctness Teoría de la Programación Metodología de programación Algoritmos Theory of Programming Programming Methodology DHL Algorithms |
title_short |
An elementary and unified approach to program correctness |
title_full |
An elementary and unified approach to program correctness |
title_fullStr |
An elementary and unified approach to program correctness |
title_full_unstemmed |
An elementary and unified approach to program correctness |
title_sort |
An elementary and unified approach to program correctness |
dc.creator.fl_str_mv |
Bohórquez, Jaime |
dc.contributor.author.none.fl_str_mv |
Bohórquez, Jaime |
dc.contributor.researchgroup.spa.fl_str_mv |
Informática |
dc.subject.armarc.spa.fl_str_mv |
Teoría de la Programación Metodología de programación Algoritmos |
topic |
Teoría de la Programación Metodología de programación Algoritmos Theory of Programming Programming Methodology DHL Algorithms |
dc.subject.proposal.eng.fl_str_mv |
Theory of Programming Programming Methodology DHL Algorithms |
description |
We present through the algorithmic language DHL (Dijkstra-Hehner language), a practical approach to a simple first order theory based on calculational logic, unifying Hoare and Dijkstra’s iterative style of programming with Hehner’s recursive predicative programming theory, getting the “best of the two worlds” and without having to recur in any way to higher-order approaches such as predicate transformers, Hoare logic, fixed-point or relational theory. |
publishDate |
2009 |
dc.date.issued.none.fl_str_mv |
2009 |
dc.date.accessioned.none.fl_str_mv |
2021-12-04T16:38:27Z |
dc.date.available.none.fl_str_mv |
2021-12-04T16:38:27Z |
dc.type.spa.fl_str_mv |
Artículo de revista |
dc.type.coar.fl_str_mv |
http://purl.org/coar/resource_type/c_2df8fbb1 |
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_6501 |
dc.type.content.spa.fl_str_mv |
Text |
dc.type.driver.spa.fl_str_mv |
info:eu-repo/semantics/article |
dc.type.redcol.spa.fl_str_mv |
http://purl.org/redcol/resource_type/ART |
format |
http://purl.org/coar/resource_type/c_6501 |
status_str |
publishedVersion |
dc.identifier.issn.none.fl_str_mv |
1433299X |
dc.identifier.uri.none.fl_str_mv |
https://repositorio.escuelaing.edu.co/handle/001/1904 |
identifier_str_mv |
1433299X |
url |
https://repositorio.escuelaing.edu.co/handle/001/1904 |
dc.language.iso.spa.fl_str_mv |
eng |
language |
eng |
dc.relation.citationendpage.spa.fl_str_mv |
627 |
dc.relation.citationstartpage.spa.fl_str_mv |
611 |
dc.relation.citationvolume.spa.fl_str_mv |
22 |
dc.relation.indexed.spa.fl_str_mv |
N/A |
dc.relation.ispartofjournal.eng.fl_str_mv |
Formal Aspects of Computing |
dc.relation.references.spa.fl_str_mv |
Back RJR (1978) On the Correctness of Refinement Steps in Program Development. PhD thesis, University of Helsinki. Also available as report A-1978-5 Back RJR (1980) Correctness preserving program refinements: proof theory and applications, volume 131 of Mathematical Center Tracts. Mathematical Centre, Amsterdam Backhouse R (2003) Program Construction: Calculating Implementations from Specifications. Wiley, New York Backhouse R, Fokkinga M (2001) The associativity of equivalence and the towers of Hanoi problem. Inf Process Lett 77(2–4): 71–76 Backhouse R, Michaelis D (2006) Exercises in quantifier manipulation. In: Uustalu T (eds) MPC, volume 4014 of Lecture Notes in Computer Science. Springer, Berlin, pp 69–81 Bohórquez JA (2007) An inductive theorem on the correctness of general recursive programs. Logic Journal of the IGPL 15(5–6): 373–399 Bohórquez JA (2008) Intuitionistic logic according to Dijkstra’s calculus of equational deduction. Notre Dame J Form Log 49(4): 361–384 Dijkstra EW, Feijen WHJ (1988) Een Methode van Programmeren. Academic Service, Den Haag, 1984. Also available as A Method of Programming. Addison-Wesley, Reading Dijkstra EW (1968) Go to statement considered harmful. Commun ACM 11(3): 147–148 Dijkstra EW (1975) Guarded commands, nondeterminacy and formal derivation of programs. Commun ACM 18(8): 453–457 Dijkstra EW (1976) A discipline of programming. Prentice-Hall Inc., Englewood Cliffs. With a foreword by C.A.R. Hoare, Prentice-Hall Series in Automatic Computation Dijkstra EW (1994) How computing science created a new mathematical style. EWD 1073 in The writings of Edsger W. Dijkstra, 2000. http://www.cs.utexas.edu/users/EWD Dijkstra EW, Scholten CS (1990) Predicate calculus and program semantics. Springer, Berlin Dromey RG (1982) How to solve it by computer. Prentice Hall, Englewood Cliffs Floyd RW (1967) Assigning meanings to programs. In: Proceedings of the symposium on applied mathematics, American Mathematical Society XIX:19–32 Feijen WHJ, van Gasteren AJM (1996) Programming, proving, and calculation. In: Neville Dean C, Hinchey MG (eds) Teaching and learning formal methods. Academic Press, New York Gries D (1981) The science of programming. Springer, Berlin Gries D, Schneider FB (1993) A logical approach to discrete math. Texts and Monographs in Computer Science. Springer, Berlin Hehner ECR (1976) DO considered OD: a contribution to the programming calculus. Technical Report CSRG-75, University of Toronto, Computer Systems Research Group, Toronto Hehner ECR (1984) Predicative programming. I, II. Commun ACM 27(2):134–143, 144–151 Hehner ECR (1989) Termination is timing. In: MPC: International conference on mathematics of program construction. LNCS, Springer, Berlin Hehner ECR (1990) A practical theory of programming. Sci Comput Program 14(2–3): 133–158 Hehner ECR (2004) From boolean algebra to unified algebra. MATHINT: The Mathematical Intelligencer 26 Hehner ECR (2004) A practical theory of programming, 2nd edn. Springer, New York Hehner ECR (2005) Specified blocks. In: Meyer B, Woodcock J (eds) VSTTE, volume 4171 of Lecture Notes in Computer Science. Springer, Berlin, pp 384–391 Hehner ECR (2006) Retrospective and prospective for unifying theories of programming. In: Dunne S, Stoddart B (eds) UTP, volume 4010 of Lecture Notes in Computer Science. Springer, Berlin, pp 1–17 Hehner ECR (2007) Unified algebra. Int J Math Sci (WASET) 1(1):20–37 (electronic) Hoare CAR, Jifeng H (1987) The weakest prespecification. Inf Process Lett 24(2): 127–132 Hoare CAR, Jifeng H (1998) Unifying theories of programming. Prentice Hall, London Hoare CAR (1969) An axiomatic basis for computer programming. Commun Assoc Comput Mach 12(10): 576–583 Hoare CAR (1983) An axiomatic basis for computer programming (reprint). Commun ACM 26(1): 53–56 Hoare CAR (1984) Programs are predicates. Philos Trans Roy Soc Lond Ser A 312(1522): 475–489 Hoare CAR (1992) Programs are predicates. In: Proceedings of the international conference on fifth generation computer systems, pp 211–218, ICOT, Japan, 1992. Association for Computing Machinery Kaldewaij A (1990) Programming: the derivation of algorithms. International Series in Computer Science. Prentice-Hall, Englewood Cliffs Lifschitz V (2001) On calculational proofs. Ann Pure Appl Logic 113(1–3): 207–224 Manna Z (1974) Mathematical theory of computation. McGraw-Hill, New York Manna Z (1980) Lectures on the logic of computer programming. Philadelphia, PA. With contributions by N. Dershowitz and R. Waldinger Morgan C (1990) Programming from specifications. Prentice Hall, Englewood Cliffs Morris JM (1990) Programs from specifications. In: Dijkstra EW (eds) Formal development of programs and proofs. Addison-Wesley, Reading Martin AJ, Rem M (1984) A presentation of the fibonacci algorithm. IPL: Inf Process Lett 19 van de Snepscheut Jan LA (1993) What computing is all about. Texts and monographs in computer science. Springer, New-York van Gasteren AJM (1990) On the shape of mathematical arguments, volume 445 of Lecture Notes in Computer Science. Springer, Berlin van Gasteren AJM, Bijlsma A (1998) An extension of the program derivation format. In: Gries D, Roever WP (eds) PROCOMET, volume 125 of IFIP conference proceedings. Chapman & Hall, London, pp 167–185 Wirth N (1971) Program development by stepwise refinement. Commun ACM 14: 221–227 |
dc.rights.coar.fl_str_mv |
http://purl.org/coar/access_right/c_14cb |
dc.rights.accessrights.spa.fl_str_mv |
info:eu-repo/semantics/closedAccess |
eu_rights_str_mv |
closedAccess |
rights_invalid_str_mv |
http://purl.org/coar/access_right/c_14cb |
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 |
Springer |
dc.source.spa.fl_str_mv |
https://link.springer.com/article/10.1007%2Fs00165-009-0137-4 |
institution |
Escuela Colombiana de Ingeniería Julio Garavito |
bitstream.url.fl_str_mv |
https://repositorio.escuelaing.edu.co/bitstream/001/1904/5/An%20elementary%20and%20unified%20approach%20to%20program%20correctness.pdf.txt https://repositorio.escuelaing.edu.co/bitstream/001/1904/4/An%20elementary%20and%20unified%20approach%20to%20program%20correctness.png https://repositorio.escuelaing.edu.co/bitstream/001/1904/6/An%20elementary%20and%20unified%20approach%20to%20program%20correctness.pdf.jpg https://repositorio.escuelaing.edu.co/bitstream/001/1904/3/An%20elementary%20and%20unified%20approach%20to%20program%20correctness.pdf https://repositorio.escuelaing.edu.co/bitstream/001/1904/2/license.txt |
bitstream.checksum.fl_str_mv |
43f942d0fdd4a3be8b286be3f6c8537e 457309e21962f6542f9bfc41f4cecb9c 42614a1fddf876edc8a3fd779d8a9605 0509aa741b3938c420c441bf46551a25 5a7ca94c2e5326ee169f979d71d0f06e |
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_ |
1814355628199510016 |
spelling |
Bohórquez, Jaime34ca64f10c7c3bbadec92bdb453a4170600Informática2021-12-04T16:38:27Z2021-12-04T16:38:27Z20091433299Xhttps://repositorio.escuelaing.edu.co/handle/001/1904We present through the algorithmic language DHL (Dijkstra-Hehner language), a practical approach to a simple first order theory based on calculational logic, unifying Hoare and Dijkstra’s iterative style of programming with Hehner’s recursive predicative programming theory, getting the “best of the two worlds” and without having to recur in any way to higher-order approaches such as predicate transformers, Hoare logic, fixed-point or relational theory.Presentamos a través del lenguaje algorítmico DHL (Dijkstra-Hehner language), una aproximación práctica a una teoría simple de primer orden basada en lógica de cálculo, unificando el estilo iterativo de programación de Hoare y Dijkstra con la teoría recursiva de programación predicativa de Hehner, obteniendo “lo mejor de los dos”. mundos” y sin tener que recurrir en modo alguno a enfoques de orden superior como los transformadores de predicados, la lógica de Hoare, el punto fijo o la teoría relacional.17 páginas.application/pdfengSpringerhttps://link.springer.com/article/10.1007%2Fs00165-009-0137-4An elementary and unified approach to program correctnessArtículo de revistainfo:eu-repo/semantics/publishedVersionhttp://purl.org/coar/resource_type/c_6501http://purl.org/coar/resource_type/c_2df8fbb1Textinfo:eu-repo/semantics/articlehttp://purl.org/redcol/resource_type/ARThttp://purl.org/coar/version/c_970fb48d4fbd8a8562761122N/AFormal Aspects of ComputingBack RJR (1978) On the Correctness of Refinement Steps in Program Development. PhD thesis, University of Helsinki. Also available as report A-1978-5Back RJR (1980) Correctness preserving program refinements: proof theory and applications, volume 131 of Mathematical Center Tracts. Mathematical Centre, AmsterdamBackhouse R (2003) Program Construction: Calculating Implementations from Specifications. Wiley, New YorkBackhouse R, Fokkinga M (2001) The associativity of equivalence and the towers of Hanoi problem. Inf Process Lett 77(2–4): 71–76Backhouse R, Michaelis D (2006) Exercises in quantifier manipulation. In: Uustalu T (eds) MPC, volume 4014 of Lecture Notes in Computer Science. Springer, Berlin, pp 69–81Bohórquez JA (2007) An inductive theorem on the correctness of general recursive programs. Logic Journal of the IGPL 15(5–6): 373–399Bohórquez JA (2008) Intuitionistic logic according to Dijkstra’s calculus of equational deduction. Notre Dame J Form Log 49(4): 361–384Dijkstra EW, Feijen WHJ (1988) Een Methode van Programmeren. Academic Service, Den Haag, 1984. Also available as A Method of Programming. Addison-Wesley, ReadingDijkstra EW (1968) Go to statement considered harmful. Commun ACM 11(3): 147–148Dijkstra EW (1975) Guarded commands, nondeterminacy and formal derivation of programs. Commun ACM 18(8): 453–457Dijkstra EW (1976) A discipline of programming. Prentice-Hall Inc., Englewood Cliffs. With a foreword by C.A.R. Hoare, Prentice-Hall Series in Automatic ComputationDijkstra EW (1994) How computing science created a new mathematical style. EWD 1073 in The writings of Edsger W. Dijkstra, 2000. http://www.cs.utexas.edu/users/EWDDijkstra EW, Scholten CS (1990) Predicate calculus and program semantics. Springer, BerlinDromey RG (1982) How to solve it by computer. Prentice Hall, Englewood CliffsFloyd RW (1967) Assigning meanings to programs. In: Proceedings of the symposium on applied mathematics, American Mathematical Society XIX:19–32Feijen WHJ, van Gasteren AJM (1996) Programming, proving, and calculation. In: Neville Dean C, Hinchey MG (eds) Teaching and learning formal methods. Academic Press, New YorkGries D (1981) The science of programming. Springer, BerlinGries D, Schneider FB (1993) A logical approach to discrete math. Texts and Monographs in Computer Science. Springer, BerlinHehner ECR (1976) DO considered OD: a contribution to the programming calculus. Technical Report CSRG-75, University of Toronto, Computer Systems Research Group, TorontoHehner ECR (1984) Predicative programming. I, II. Commun ACM 27(2):134–143, 144–151Hehner ECR (1989) Termination is timing. In: MPC: International conference on mathematics of program construction. LNCS, Springer, BerlinHehner ECR (1990) A practical theory of programming. Sci Comput Program 14(2–3): 133–158Hehner ECR (2004) From boolean algebra to unified algebra. MATHINT: The Mathematical Intelligencer 26Hehner ECR (2004) A practical theory of programming, 2nd edn. Springer, New YorkHehner ECR (2005) Specified blocks. In: Meyer B, Woodcock J (eds) VSTTE, volume 4171 of Lecture Notes in Computer Science. Springer, Berlin, pp 384–391Hehner ECR (2006) Retrospective and prospective for unifying theories of programming. In: Dunne S, Stoddart B (eds) UTP, volume 4010 of Lecture Notes in Computer Science. Springer, Berlin, pp 1–17Hehner ECR (2007) Unified algebra. Int J Math Sci (WASET) 1(1):20–37 (electronic)Hoare CAR, Jifeng H (1987) The weakest prespecification. Inf Process Lett 24(2): 127–132Hoare CAR, Jifeng H (1998) Unifying theories of programming. Prentice Hall, LondonHoare CAR (1969) An axiomatic basis for computer programming. Commun Assoc Comput Mach 12(10): 576–583Hoare CAR (1983) An axiomatic basis for computer programming (reprint). Commun ACM 26(1): 53–56Hoare CAR (1984) Programs are predicates. Philos Trans Roy Soc Lond Ser A 312(1522): 475–489Hoare CAR (1992) Programs are predicates. In: Proceedings of the international conference on fifth generation computer systems, pp 211–218, ICOT, Japan, 1992. Association for Computing MachineryKaldewaij A (1990) Programming: the derivation of algorithms. International Series in Computer Science. Prentice-Hall, Englewood CliffsLifschitz V (2001) On calculational proofs. Ann Pure Appl Logic 113(1–3): 207–224Manna Z (1974) Mathematical theory of computation. McGraw-Hill, New YorkManna Z (1980) Lectures on the logic of computer programming. Philadelphia, PA. With contributions by N. Dershowitz and R. WaldingerMorgan C (1990) Programming from specifications. Prentice Hall, Englewood CliffsMorris JM (1990) Programs from specifications. In: Dijkstra EW (eds) Formal development of programs and proofs. Addison-Wesley, ReadingMartin AJ, Rem M (1984) A presentation of the fibonacci algorithm. IPL: Inf Process Lett 19van de Snepscheut Jan LA (1993) What computing is all about. Texts and monographs in computer science. Springer, New-Yorkvan Gasteren AJM (1990) On the shape of mathematical arguments, volume 445 of Lecture Notes in Computer Science. Springer, Berlinvan Gasteren AJM, Bijlsma A (1998) An extension of the program derivation format. In: Gries D, Roever WP (eds) PROCOMET, volume 125 of IFIP conference proceedings. Chapman & Hall, London, pp 167–185Wirth N (1971) Program development by stepwise refinement. Commun ACM 14: 221–227info:eu-repo/semantics/closedAccesshttp://purl.org/coar/access_right/c_14cbTeoría de la ProgramaciónMetodología de programaciónAlgoritmosTheory of ProgrammingProgramming MethodologyDHLAlgorithmsTEXTAn elementary and unified approach to program correctness.pdf.txtAn elementary and unified approach to program correctness.pdf.txtExtracted texttext/plain55446https://repositorio.escuelaing.edu.co/bitstream/001/1904/5/An%20elementary%20and%20unified%20approach%20to%20program%20correctness.pdf.txt43f942d0fdd4a3be8b286be3f6c8537eMD55metadata only accessTHUMBNAILAn elementary and unified approach to program correctness.pngAn elementary and unified approach to program correctness.pngimage/png128453https://repositorio.escuelaing.edu.co/bitstream/001/1904/4/An%20elementary%20and%20unified%20approach%20to%20program%20correctness.png457309e21962f6542f9bfc41f4cecb9cMD54open accessAn elementary and unified approach to program correctness.pdf.jpgAn elementary and unified approach to program correctness.pdf.jpgGenerated Thumbnailimage/jpeg12013https://repositorio.escuelaing.edu.co/bitstream/001/1904/6/An%20elementary%20and%20unified%20approach%20to%20program%20correctness.pdf.jpg42614a1fddf876edc8a3fd779d8a9605MD56metadata only accessORIGINALAn elementary and unified approach to program correctness.pdfAn elementary and unified approach to program correctness.pdfArtículo de revistaapplication/pdf211632https://repositorio.escuelaing.edu.co/bitstream/001/1904/3/An%20elementary%20and%20unified%20approach%20to%20program%20correctness.pdf0509aa741b3938c420c441bf46551a25MD53metadata only accessLICENSElicense.txtlicense.txttext/plain; charset=utf-81881https://repositorio.escuelaing.edu.co/bitstream/001/1904/2/license.txt5a7ca94c2e5326ee169f979d71d0f06eMD52open access001/1904oai:repositorio.escuelaing.edu.co:001/19042022-11-22 03:01:10.369metadata only accessRepositorio Escuela Colombiana de Ingeniería Julio Garavitorepositorio.eci@escuelaing.edu.coU0kgVVNURUQgSEFDRSBQQVJURSBERUwgR1JVUE8gREUgUEFSRVMgRVZBTFVBRE9SRVMgREUgTEEgQ09MRUNDScOTTiAiUEVFUiBSRVZJRVciLCBPTUlUQSBFU1RBIExJQ0VOQ0lBLgoKQXV0b3Jpem8gYSBsYSBFc2N1ZWxhIENvbG9tYmlhbmEgZGUgSW5nZW5pZXLDrWEgSnVsaW8gR2FyYXZpdG8gcGFyYSBwdWJsaWNhciBlbCB0cmFiYWpvIGRlIGdyYWRvLCBhcnTDrWN1bG8sIHZpZGVvLCAKY29uZmVyZW5jaWEsIGxpYnJvLCBpbWFnZW4sIGZvdG9ncmFmw61hLCBhdWRpbywgcHJlc2VudGFjacOzbiB1IG90cm8gKGVuICAgIGFkZWxhbnRlIGRvY3VtZW50bykgcXVlIGVuIGxhIGZlY2hhIAplbnRyZWdvIGVuIGZvcm1hdG8gZGlnaXRhbCwgeSBsZSBwZXJtaXRvIGRlIGZvcm1hIGluZGVmaW5pZGEgcXVlIGxvIHB1YmxpcXVlIGVuIGVsIHJlcG9zaXRvcmlvIGluc3RpdHVjaW9uYWwsIAplbiBsb3MgdMOpcm1pbm9zIGVzdGFibGVjaWRvcyBlbiBsYSBMZXkgMjMgZGUgMTk4MiwgbGEgTGV5IDQ0IGRlIDE5OTMsIHkgZGVtw6FzIGxleWVzIHkganVyaXNwcnVkZW5jaWEgdmlnZW50ZQphbCByZXNwZWN0bywgcGFyYSBmaW5lcyBlZHVjYXRpdm9zIHkgbm8gbHVjcmF0aXZvcy4gRXN0YSBhdXRvcml6YWNpw7NuIGVzIHbDoWxpZGEgcGFyYSBsYXMgZmFjdWx0YWRlcyB5IGRlcmVjaG9zIGRlIAp1c28gc29icmUgbGEgb2JyYSBlbiBmb3JtYXRvIGRpZ2l0YWwsIGVsZWN0csOzbmljbywgdmlydHVhbDsgeSBwYXJhIHVzb3MgZW4gcmVkZXMsIGludGVybmV0LCBleHRyYW5ldCwgeSBjdWFscXVpZXIgCmZvcm1hdG8gbyBtZWRpbyBjb25vY2lkbyBvIHBvciBjb25vY2VyLgpFbiBtaSBjYWxpZGFkIGRlIGF1dG9yLCBleHByZXNvIHF1ZSBlbCBkb2N1bWVudG8gb2JqZXRvIGRlIGxhIHByZXNlbnRlIGF1dG9yaXphY2nDs24gZXMgb3JpZ2luYWwgeSBsbyBlbGFib3LDqSBzaW4gCnF1ZWJyYW50YXIgbmkgc3VwbGFudGFyIGxvcyBkZXJlY2hvcyBkZSBhdXRvciBkZSB0ZXJjZXJvcy4gUG9yIGxvIHRhbnRvLCBlcyBkZSBtaSBleGNsdXNpdmEgYXV0b3LDrWEgeSwgZW4gY29uc2VjdWVuY2lhLCAKdGVuZ28gbGEgdGl0dWxhcmlkYWQgc29icmUgw6lsLiBFbiBjYXNvIGRlIHF1ZWphIG8gYWNjacOzbiBwb3IgcGFydGUgZGUgdW4gdGVyY2VybyByZWZlcmVudGUgYSBsb3MgZGVyZWNob3MgZGUgYXV0b3Igc29icmUgCmVsIGRvY3VtZW50byBlbiBjdWVzdGnDs24sIGFzdW1pcsOpIGxhIHJlc3BvbnNhYmlsaWRhZCB0b3RhbCB5IHNhbGRyw6kgZW4gZGVmZW5zYSBkZSBsb3MgZGVyZWNob3MgYXF1w60gYXV0b3JpemFkb3MuIEVzdG8gCnNpZ25pZmljYSBxdWUsIHBhcmEgdG9kb3MgbG9zIGVmZWN0b3MsIGxhIEVzY3VlbGEgYWN0w7phIGNvbW8gdW4gdGVyY2VybyBkZSBidWVuYSBmZS4KVG9kYSBwZXJzb25hIHF1ZSBjb25zdWx0ZSBlbCBSZXBvc2l0b3JpbyBJbnN0aXR1Y2lvbmFsIGRlIGxhIEVzY3VlbGEsIGVsIENhdMOhbG9nbyBlbiBsw61uZWEgdSBvdHJvIG1lZGlvIGVsZWN0csOzbmljbywgCnBvZHLDoSBjb3BpYXIgYXBhcnRlcyBkZWwgdGV4dG8sIGNvbiBlbCBjb21wcm9taXNvIGRlIGNpdGFyIHNpZW1wcmUgbGEgZnVlbnRlLCBsYSBjdWFsIGluY2x1eWUgZWwgdMOtdHVsbyBkZWwgdHJhYmFqbyB5IGVsIAphdXRvci5Fc3RhIGF1dG9yaXphY2nDs24gbm8gaW1wbGljYSByZW51bmNpYSBhIGxhIGZhY3VsdGFkIHF1ZSB0ZW5nbyBkZSBwdWJsaWNhciB0b3RhbCBvIHBhcmNpYWxtZW50ZSBsYSBvYnJhIGVuIG90cm9zIAptZWRpb3MuRXN0YSBhdXRvcml6YWNpw7NuIGVzdMOhIHJlc3BhbGRhZGEgcG9yIGxhcyBmaXJtYXMgZGVsIChsb3MpIGF1dG9yKGVzKSBkZWwgZG9jdW1lbnRvLiAKU8OtIGF1dG9yaXpvIChhbWJvcykK |