diff --git a/.babelrc b/.babelrc
new file mode 100644
index 0000000..6e7c232
--- /dev/null
+++ b/.babelrc
@@ -0,0 +1 @@
+{ "plugins": ["@babel/plugin-transform-modules-commonjs"]}
diff --git a/.eslintrc b/.eslintrc
new file mode 100644
index 0000000..c625455
--- /dev/null
+++ b/.eslintrc
@@ -0,0 +1,14 @@
+{
+ "env": {
+ "browser": true
+ },
+ "parserOptions": {
+ "ecmaVersion": 2018,
+ "sourceType": "module"
+ },
+ "extends": "eslint:recommended",
+ "rules": {
+ "no-console": "warn"
+ }
+ }
+
\ No newline at end of file
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..3c3629e
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+node_modules
diff --git a/.vscode/settings.json b/.vscode/settings.json
new file mode 100644
index 0000000..84304e2
--- /dev/null
+++ b/.vscode/settings.json
@@ -0,0 +1,3 @@
+{
+ "debug.node.autoAttach": "on"
+}
\ No newline at end of file
diff --git a/README.md b/README.md
index 53772c7..652f9b6 100644
--- a/README.md
+++ b/README.md
@@ -4,12 +4,9 @@
* [1. Preámbulo](#1-preámbulo)
* [2. Resumen del proyecto](#2-resumen-del-proyecto)
-* [3. Objetivos de aprendizaje](#3-objetivos-de-aprendizaje)
-* [4. Consideraciones generales](#4-consideraciones-generales)
-* [5. Criterios de aceptación mínimos del proyecto](#5-criterios-de-aceptación-mínimos-del-proyecto)
-* [6. Hacker edition](#6-hacker-edition)
-* [7. Consideraciones técnicas](#7-consideraciones-técnicas)
-* [8. Pistas, tips y lecturas complementarias](#8-pistas-tips-y-lecturas-complementarias)
+* [3. Uso de la app](#3-Uso-de-la-App)
+* [4. Prototipo de papel](#4-Prototipo-de-papel)
+* [5. Prototipo Balsamiq](#5-Prototipo-Balsamiq)
***
@@ -40,300 +37,85 @@ comunicación por sí mismos; el cifrado César sí puede formar parte de sistem
más complejos de codificación, como el cifrado Vigenère, e incluso tiene
aplicación en el sistema ROT13.
-## 2. Resumen del proyecto
+## 2. EL PROYECTO
-¿Qué tengo que hacer exactamente? En este proyecto crearás una aplicación
+En este proyecto crearé una aplicación
web que servirá para que el usuario pueda cifrar y descifrar un texto indicando
un desplazamiento específico de caracteres (_offset_).
-La temática es libre. Tú debes pensar en qué situaciones de la vida real se
-necesitaría cifrar un mensaje y pensar en cómo debe ser esa experiencia de uso
-(qué pantallas, explicaciones, mensajes, colores, ¿marca?) etc. Algunas ideas de
-ejemplo:
+La temática es kids, una web disfrazada de juego para:
-* Crear claves seguras para el email.
-* Encriptar/cifrar una tarjeta de crédito.
-* Herramienta de mensajería interna de una organización de derechos humanos en
- una zona de conflicto.
-* Mensajería secreta para parejas.
+* Mensajería secreta para niños que sufren cualquier tipo de abuso o maltrato infantil.
-## 3. Objetivos de aprendizaje
+
-Aprenderás a construir una aplicación web que interactuará
-con lx usuarix final a través del navegador, utilizando HTML, CSS y JavaScript
-como tecnologías.
+# CRIPTOMANÍA KIDS
-### HTML y CSS
+En criptografía, el cifrado César, también conocido como cifrado por desplazamiento, código de César o desplazamiento de César, es una de las técnicas decodificación más simples y más usadas. Es un tipo de cifrado por sustitución en el que una letra en el texto original es reemplazada por otra letra que se encuentra un número fijo de posiciones más adelante en el alfabeto.
-* [ ] [Uso de HTML semántico.](https://developer.mozilla.org/en-US/docs/Glossary/Semantics#Semantics_in_HTML)
-* [ ] Uso de selectores de CSS.
-* [ ] Construir tu aplicación respetando el diseño realizado (maquetación).
+## 3. ¿Cómo usar la app Criptomanía-Kids
-### DOM
+### INSTRUCCIONES DE USO:
-* [ ] Uso de selectores del DOM.
-* [ ] Manejo de eventos del DOM.
-* [ ] [Manipulación dinámica del DOM.](https://developer.mozilla.org/es/docs/Referencia_DOM_de_Gecko/Introducci%C3%B3n)
-(appendChild |createElement | createTextNode| innerHTML | textContent | etc.)
+*El primer paso es buscar Criptomanía-Kids, una vez encontrada, se procede según lo que el usuario desea a:*
-### JavaScript
+1.PASOS PARA CIFRAR
+- Escribe lo que deseas cifar.
+- Elige tu número favorito
+- Dale click en el botón "JUGAR CIFRAR"
+- Verás el mensaje cifrado
+- Darle al botón enviar
-* [ ] Manipulación de strings.
-* [ ] Uso de condicionales (if-else | switch | operador ternario)
-* [ ] Uso de bucles (for | for..in | for..of | while)
-* [ ] Uso de funciones (parámetros | argumentos | valor de retorno)
-* [ ] Declaración correcta de variables (const & let)
-
-### Testing
-
-* [ ] [Testeo unitario.](https://jestjs.io/docs/es-ES/getting-started)
-
-### Estructura del código y guía de estilo
-
-* [ ] Organizar y dividir el código en módulos (Modularización)
-* [ ] Uso de identificadores descriptivos (Nomenclatura | Semántica)
-* [ ] Uso de linter (ESLINT)
-
-### Git y GitHub
-
-* [ ] Uso de comandos de git (add | commit | pull | status | push)
-* [ ] Manejo de repositorios de GitHub (clone | fork | gh-pages)
-
-### UX
-
-* [ ] Diseñar la aplicación pensando y entendiendo al usuario.
-* [ ] Crear prototipos para obtener feedback e iterar.
-* [ ] Aplicar los principios de diseño visual (contraste, alineación, jerarquía)
-
-## 4. Consideraciones generales
-
-* El equipo de coaches te dará un tiempo sugerido e indicaciones sobre si trabajar
- sola o en equipo. Recuerda que cada una aprende a diferente ritmo.
-* El proyecto será entregado subiendo tu código a GitHub (commit/push) y la
- interfaz será desplegada usando GitHub pages. Si no sabes lo que es GitHub, no
- te preocupes, lo aprenderás durante este proyecto.
-
-## 5. Criterios de aceptación mínimos del proyecto
-
-Usa este alfabeto simple (solamente mayúsculas y sin ñ):
-
-* A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
-
-### Definición del producto
-
-En el README.md, cuéntanos cómo pensaste en los usuarios y cuál fue tu proceso
-para definir el producto final a nivel de experiencia y de interfaz.
-
-* Quiénes son los principales usuarios de producto.
-* Cuáles son los objetivos de estos usuarios en relación con tu producto.
-* Cómo crees que el producto que estás creando está resolviendo sus problemas.
-
-### Interfaz de usuario (UI)
-
-La interfaz debe permitir al usuario:
-
-* Elegir un desplazamiento (_offset_) indicando cuántas posiciones queremos que
- el cifrado desplace cada caracter.
-* Insertar un mensaje (texto) que queremos cifrar.
-* Ver el resultado del mensaje cifrado.
-* Insertar un mensaje (texto) a descifrar.
-* Ver el resultado del mensaje descifrado.
-
-### Scripts / Archivos
-
-##### `README.md`
-
-Debe contener lo siguiente:
-
-* Un título con el nombre de tu proyecto.
-* Explicar cómo descargar, instalar y ejecutar la aplicación
- así como una introducción.
-* Un resumen de 1 o 2 líneas de qué se trata tu proyecto.
-* La imagen final de tu proyecto.
-* Investigación UX:
- 1. Explicar quiénes son los usuarios y los objetivos en relación con el
- producto.
- 2. Explicar cómo el producto soluciona los problemas/necesidades de dichos
- usuarios.
- 3. Luego colocarás la foto de tu primer prototipo en papel.
- 4. Agregar un resumen del feedback recibido indicando las mejoras a realizar.
- 5. Imagen del prototipo final.
-
-##### `src/index.html`
-
- Este es el punto de entrada a tu aplicación. Este archivo
- debe contener tu _markup_ (HTML) e incluir el CSS y JavaScript necesario.
+2.PASOS PARA DESCIFRAR
+- Escribe lo que deseas descifar.
+- Elige tu número favorito
+- Dale click en el botón "JUGAR DESCIFRAR"
+- Verás el mensaje descifrado
+- Darle al botón enviar
-##### `src/cipher.js`
- Acá debes implementar el objeto `cipher`, el cual ya está
- _exportado_ en el _boilerplate_. Este objeto (`cipher`) debe contener dos
- métodos:
- - `cipher.encode(offset, string)`: `offset` es el número de posiciones que
- queremos mover a la derecha en el alfabeto y `string` el mensaje (texto)
- que queremos cifrar.
- - `cipher.decode(offset, string)`: `offset` es el número de posiciones que
- queremos mover a la izquierda en el alfabeto y `string` el mensaje
- (texto) que queremos descifrar.
-##### `src/index.js`
- Acá debes escuchar eventos del DOM, invocar `cipher.encode()`
- o `cipher.decode()` según sea necesario y actualizar el resultado en la UI.
-##### `test/cipher.spec.js`
- Este archivo contiene algunos tests de ejemplo y acá
- tendrás que implementar los tests para `cipher.encode()` y `cipher.decode()`.
-
-## 6. Hacker edition
-
-Las secciones llamadas _Hacker Edition_ son **opcionales**. Si **terminaste**
-con todo lo anterior y te queda tiempo, intenta completarlas. Así podrás
-profundizar y/o ejercitar más sobre los objetivos de aprendizaje del proyecto.
-
-La descripción general de este proyecto no menciona qué pasaría con las letras
-minúsculas y otros caracteres (como espacios, puntuación, ñ, ...). El
-boilerplate incluye algunos tests (comentados en principio) que puedes usar como
-punto de partida para implementar el soporte para estos casos.
-
-Tampoco se menciona qué pasaría si el offset fuera negativo. Como parte del
-hacker edition te invitamos a explorar también esta caso por tu cuenta.
-
-## 7. Consideraciones técnicas
-
-La lógica del proyecto debe estar implementada completamente en JavaScript. En
-este proyecto NO está permitido usar librerías o frameworks, solo JavaScript puro
-también conocido como Vanilla JavaScript.
-
-No se debe utilizar la _pseudo-variable_ `this`.
-
-Los tests unitarios deben cubrir un mínimo del 70% de _statements_, _functions_
-y _lines_, y un mínimo del 50% de _branches_. El _boilerplate_ ya contiene el
-setup y configuración necesaria para ejecutar los tests (pruebas) así como _code
-coverage_ para ver el nivel de cobertura de los tests usando el comando `npm
-test`.
-
-El _boilerplate_ incluye tests (pruebas) de ejemplo como punto de partida.
-
-Para comenzar este proyecto tendrás que hacer un _fork_ y _clonar_ este
-repositorio que contiene el _boilerplate_.
-
-El _boilerplate_ contiene una estructura de archivos como punto de partida así
-como toda la configuración de dependencias y tests de ejemplo:
-
-```text
-./
-├── .babelrc
-├── .editorconfig
-├── .eslintrc
-├── .gitignore
-├── README.md
-├── package.json
-├── src
-│ ├── cipher.js
-│ ├── index.html
-│ ├── index.js
-│ └── style.css
-└── test
- ├── .eslintrc
- └── cipher.spec.js
-```
-
-El _boilerplate_ incluye tareas que ejecutan [eslint](https://eslint.org/) y
-[htmlhint](https://github.com/yaniswang/HTMLHint) para verificar el `HTML` y
-`JavaScript` con respecto a una guías de estilos. Ambas tareas se ejecutan
-automáticamente antes de ejecutar las pruebas (tests) cuando usamos el comando
-`npm run test`. En el caso de `JavaScript` estamos usando un archivo de
-configuración de `eslint` que se llama `.eslintrc` que contiene un mínimo de
-información sobre el parser que usar (qué version de JavaScript/ECMAScript), el
-entorno (browser en este caso) y las [reglas recomendadas (`"eslint:recommended"`)](https://eslint.org/docs/rules/).
-En cuanto a reglas/guías de estilo en sí,
-usaremos las recomendaciones _por defecto_ de tanto `eslint` como `htmlhint`.
-
-***
-## 8. Pistas, tips y lecturas complementarias
+El siguiente proyecto ha sido pensado para poner un alto a los actos de violencia, en contra de los niños, la
+idea es que sea lo más parecido a un juego, para evitar ser descubierto. La iniciativa puede ser planteada al
+gobierno, aunque hoy en día el código césar no es tan seguro, se podría implementar al proyecto símbología para
+darle mayor seguridad.
-### Primeros pasos
+>Los principales usuarios son niñ@s que sufren cualquier tipo de violencia/agresión, tanto para su persona como en sus casas.
-1. Antes que nada, asegúrate de tener un :pencil: editor de texto en
- condiciones, algo como [Atom](https://atom.io/) o
- [Code](https://code.visualstudio.com/).
-2. Para ejecutar los comandos a continuación necesitarás una :shell:
- [UNIX Shell](https://github.com/Laboratoria/bootcamp/tree/master/topics/shell),
- que es un programita que interpreta líneas de comando (command-line
- interpreter) así como tener [git](https://github.com/Laboratoria/bootcamp/tree/master/topics/scm/01-git)
- instalado. Si usas un sistema operativo "UNIX-like", como GNU/Linux o MacOS,
- ya tienes una _shell_ (terminal) instalada por defecto (y probablemente `git`
- también). Si usas Windows puedes usar la versión completa de [Cmder](https://cmder.net/)
- que incluye [Git bash](https://git-scm.com/download/win) y si tienes Windows 10
- o superior puedes usar [Windows Subsystem for Linux](https://docs.microsoft.com/en-us/windows/wsl/install-win10).
-3. Una de las integrantes del equipo debe realizar un :fork_and_knife:
- [fork](https://help.github.com/articles/fork-a-repo/) del repo de tu cohort,
- tus _coaches_ te compartirán un _link_ a un repo y te darán acceso de lectura
- en ese repo. La otra integrante del equipo deber hacer un fork **del
- repositorio de su compañera** y
- [configurar](https://gist.github.com/BCasal/026e4c7f5c71418485c1) un `remote`
- hacia el mismo.
-4. :arrow_down: [Clona](https://help.github.com/articles/cloning-a-repository/)
- tu _fork_ a tu computadora (copia local).
-5. 📦 Instala las dependencias del proyecto con el comando `npm install`. Esto
- asume que has instalado [Node.js](https://nodejs.org/) (que incluye [npm](https://docs.npmjs.com/)).
-6. Si todo ha ido bien, deberías poder ejecutar las :traffic_light:
- pruebas unitarias (unit tests) con el comando `npm test`.
-7. Para ver la interfaz de tu programa en el navegador, usa el comando
- `npm start` para arrancar el servidor web y dirígete a
- `http://localhost:5000` en tu navegador.
-8. A codear se ha dicho! :rocket:
+>A través de una app, disfrazada de juego infantil, los niños podrán enviar mensajes de ayudar para salvaguardar su bienestar,
+encriptando sus mensajes para evitar ser descubiertos por su agresor.
+Ministerio de protección del niño, niña y adolescente)
-### Recursos y temas relacionados
+#### El producto soluciona los problemas/necesidades de dichos usuarios, considerando lo sgte:
+- Canalizar mensajes de ayuda.
+- Disminuir la violencia en los hogares.
+- Brindar ayuda psicológica y evitar futuros actos de violencia.
-A continuación un video de Michelle que te lleva a través de la fórmula
-matemática del Cifrado César y un par de cosas más que debes saber para
-resolver este proyecto. ¡Escúchala con detenimiento y sigue sus consejos! :)
+## 4.PROTOTIPO DE PAPEL
+Mi primer prototio en papel, teniendo en cuenta las historias de usuario
-[](https://www.youtube.com/watch?v=zd8eVrXhs7Y)
+
-[Link](https://www.youtube.com/watch?v=zd8eVrXhs7Y)
-También una metodología para empezar a desarrollar tareas con JavaScript:
+El feedback en cuanto al proyecto:
+* Mis compañeras de squad indican que les agrada la idea y el objetivo del uso de la app cipher.
+* Una de las coach: Génesis, opinó que le gusta la idea, y que ella trabaja en proyectos para niños.
+* En mi primer demo, las chicas opinaron que les gustó el fondo y los colores.
+* En un 2do demo me sugirieron colocar los botones entre el cuadro de inicio de texto y el cuadro de resultados, ya que estaban ubicados en la parte inferior.
+Me gustó recibir feedback, siento que ayudó mucho a la mejora del proyecto.
-[](https://www.youtube.com/watch?v=lYfEmhLmu7A)
+***En casa testee el proyecto con mi hijo, al cual le gustó y dijo que parecía un juego***
-[Link](https://www.youtube.com/watch?v=lYfEmhLmu7A)
+## 5. PROTOTIPO BALSAMIQ
-Terminal y shell de UNIX:
-
-[](https://www.youtube.com/playlist?list=PLiAEe0-R7u8nGH5TEHfSTeDNIvjZFe_Yd)
-
-[Link](https://www.youtube.com/playlist?list=PLiAEe0-R7u8nGH5TEHfSTeDNIvjZFe_Yd)
-
-Control de versiones y trabajo colaborativo con Git y GitHub:
-
-[](https://www.youtube.com/playlist?list=PLiAEe0-R7u8k9o3PbT3_QdyoBW_RX8rnV)
-
-[Link](https://www.youtube.com/playlist?list=PLiAEe0-R7u8nGH5TEHfSTeDNIvjZFe_Yd)
-
-Diseño de experiencia de usuario (User Experience Design):
-
-* Ideación
-* Prototipado (sketching)
-* Testeo e Iteración
-
-Desarrollo Front-end:
+Imagen del prototipo final.
+
+Este es el prototipo final de mi proyecto, realizado en balsamiq
-* Valores
-* Tipos
-* Variables
-* Control de flujo
-* Tests unitarios
-* [Aprende más sobre `charCodeAt()`](https://developer.mozilla.org/es/docs/Web/JavaScript/Referencia/Objetos_globales/String/charCodeAt)
-* [Aprende más sobre `String.fromCharCode()`](https://developer.mozilla.org/es/docs/Web/JavaScript/Referencia/Objetos_globales/String/fromCharCode)
-* [Aprende más sobre `ASCII`](http://conceptodefinicion.de/ascii/)
-* [Documentación de NPM](https://docs.npmjs.com/)
+
-Organización del Trabajo:
+Este es el prototipo final de mi proyecto, realizado en balsamiq
+
-* [Metodologías Ágiles](https://www.youtube.com/watch?v=v3fLx7VHxGM)
-* [Scrum en menos de 2 minutos](https://www.youtube.com/watch?v=TRcReyRYIMg)
-* [Scrum en Detalle](https://www.youtube.com/watch?v=nOlwF3HRrAY&t=297s). No
- esperamos que hagas todo eso desde este proyecto. Iremos profundizando poco a
- poco a lo largo del -_bootcamp_.
-* [Guía para Cifrado César](https://docs.google.com/presentation/d/e/2PACX-1vTQ7-8LZDHrT4Y6AOBN72Nkfz1eJAeseBHpcHX8BSq0aFCFoZmuMjluMeyFNgK9ISKxTz0H03yGfJiT/pub?start=false&loop=false&delayms=60000)
+## EL FLUJO DEL PROYECTO
+
diff --git a/coverage/clover.xml b/coverage/clover.xml
new file mode 100644
index 0000000..3c75a0b
--- /dev/null
+++ b/coverage/clover.xml
@@ -0,0 +1,30 @@
+
+
+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +
+| 1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 | + +1x + +9x + +1x + +1x + +1x + +26x + + +26x + +26x + +26x + + + + + + + +1x + + + +1x + +1x + +1x + +1x + +26x + + +26x + +26x + +26x + + + + + + + +1x + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + | /*import { escapeSelector } from "jquery";*/
+
+const cipher = {
+ encode: function (offset,string){
+ string = string.toUpperCase();
+ //console.log(offset, string);
+ let resultado = new Array();
+ //guardando valor posicion codigo ascci
+ let posicion = new Array();
+ // recorrer la cadena con un FOR
+ for (let i=0; i<string.length; i++){
+ // obtener el número ASCII de la letra con chartCodeAt()
+ posicion.push(string.charCodeAt(i));
+ //console.log() del elelemnto en la posicion i
+ //console.log(posicion[i]);
+ Eif (posicion[i] != 32){
+ // aplicar la fórmula de cifrado de la letra
+ posicion[i]=((posicion[i]-65+offset)%26)+65;
+ // convertir el resultado de la fórmula en letra con fromCartCode()
+ resultado[i]=String.fromCharCode(posicion[i]);
+ } else {
+ resultado[i]=" ";
+ }
+
+ }
+ // guardar letra cifrada en variable resultado.
+ //console.log(resultado);
+ return resultado.join("");
+ },
+
+ decode: function (offset,string){
+ string = string.toUpperCase();
+ //console.log(offset, string);
+ let resultado = new Array();
+ //guardando valor posicion codigo ascci
+ let posicion = new Array();
+ // recorrer la cadena con un FOR
+ for (let i=0; i<string.length; i++){
+ // obtener el número ASCII de la letra con chartCodeAt()
+ posicion.push(string.charCodeAt(i));
+ //console.log() del elelemnto en la posicion i
+ //console.log(posicion[i]);
+ Eif (posicion[i] !=32){
+ // aplicar la fórmula de descifrado de la letra
+ posicion[i]=(((posicion[i]-65-offset)%26+26)%26)+65;
+ // convertir el resultado de la fórmula en letra con fromCartCode()
+ resultado[i]=String.fromCharCode(posicion[i]);
+ } else {
+ resultado [i]=" ";
+ }
+
+ }
+ // guardar letra cifrada en variable resultado.
+ //console.log(resultado);
+ return resultado.join("");
+ }
+};
+export default cipher;
+
+//estructura de objetos, que va a guardar encode y decode
+// export default cipher;
+//- `cipher.encode(offset, string)`: `offset` es el número de posiciones que
+//queremos mover a la derecha en el alfabeto y `string` el mensaje (texto)
+//que queremos cifrar
+//- `cipher.decode(offset, string)`: `offset` es el número de posiciones que
+//queremos mover a la izquierda en el alfabeto y `string` el mensaje
+//(texto) que queremos descifrar.
+//colocar su funcionalidad disponible para todo el proyecto, traes la funcionalidad al index.js
+
+/* RESUMEN DEL VIDEO DE MICHELL
+ALFABETO 1-POSICIÓN NORMAL
+A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
+0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
+
+Fórmula 1 Michell: (posicionLetra+desplazamiento)%tamañoAlfabeto
+
+ASCII
+A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
+65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90
+
+ASCII
+((códigoLetraAscci-codigoPrimeraLetraAscci+desplazamiento1abc)%tamañoAlfabeto)+65 */
+/*El 65 al final es el código de la primera letra, es para obtener el código ASCII
+ejm:
+(75+65+5)
+*/
+
+//Función cifrado: cipher.encode(offset, string) |
+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +
+| File | ++ | Statements | ++ | Branches | ++ | Functions | ++ | Lines | ++ |
|---|---|---|---|---|---|---|---|---|---|
| cipher.js | +
+
+ |
+ 91.3% | +21/23 | +50% | +2/4 | +100% | +2/2 | +90.48% | +19/21 | +