/* Estilos modernos para botones - ELYON YIREH Academic */

/* Estilos generales para botones modernos */
.btn-modern {
  transition: all 0.3s ease;
  border-radius: 4px;
  position: relative;
  overflow: hidden;
  font-weight: 500;
  letter-spacing: 0.5px;
  box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
  border: none;
}

/* Efecto hover para botones */
.btn-modern:hover {
  transform: translateY(-2px);
  box-shadow: 0 7px 14px rgba(0, 0, 0, 0.15);
}

.btn-modern:active {
  transform: translateY(1px);
  box-shadow: 0 3px 5px rgba(0, 0, 0, 0.1);
}

/* Estilos específicos para el botón de ingreso */
.btn-login {
  background: linear-gradient(135deg, #00bca4, #008fe2);
  color: white;
  font-size: 16px;
  padding: 12px 24px;
  width: 100%;
  position: relative;
  z-index: 1;
}

.btn-login:before {
  content: "";
  position: absolute;
  top: 0;
  left: -100%;
  width: 100%;
  height: 100%;
  background: linear-gradient(135deg, #008fe2, #00bca4);
  transition: all 0.6s ease-in-out;
  z-index: -1;
}

.btn-login:hover:before {
  left: 0;
}

/* Estilos para el botón de recuperar contraseña */
.btn-forgot-password {
  background: transparent;
  color: #008fe2;
  border: 1px solid #008fe2;
  padding: 8px 16px;
  margin-top: 15px;
  transition: all 0.3s ease;
}

.btn-forgot-password:hover {
  background: rgba(0, 143, 226, 0.1);
  color: #00bca4;
  border-color: #00bca4;
}

/* Animación de pulso para el botón de recuperar contraseña */
@keyframes pulse {
  0% {
    box-shadow: 0 0 0 0 rgba(0, 143, 226, 0.4);
  }
  70% {
    box-shadow: 0 0 0 10px rgba(0, 143, 226, 0);
  }
  100% {
    box-shadow: 0 0 0 0 rgba(0, 143, 226, 0);
  }
}

.btn-forgot-password:focus {
  animation: pulse 1.5s infinite;
}

/* Mejoras en el contenedor de login */
.modern-login-box {
  border-radius: 20px !important;
  overflow: hidden;
  box-shadow: 0 5px 15px rgba(0, 0, 0, 0.1);
  transition: all 0.3s ease;
  border: 1px solid rgba(0, 143, 226, 0.3) !important;
}

.modern-login-box:hover {
  box-shadow: 0 8px 25px rgba(0, 143, 226, 0.2);
}

.modern-login-header {
  padding: 20px;
  text-align: center;
  background: white;
  border-radius: 20px 20px 0 0;
}

.modern-login-body {
  background: linear-gradient(135deg, #f5f7fa, #e4e8eb) !important;
  padding: 25px 20px;
  border-radius: 0 0 20px 20px;
}

/* Estilos mejorados para los campos de entrada */
.modern-input-group {
  margin-bottom: 20px !important;
  border-radius: 6px !important;
  overflow: hidden;
  box-shadow: 0 3px 10px rgba(0, 0, 0, 0.08) !important;
  border: 1px solid rgba(0, 188, 164, 0.2) !important;
  transition: all 0.3s ease !important;
  position: relative;
  padding: 0 !important;
  animation: fadeInUp 0.5s ease-out;
}

.modern-input-group:hover {
  box-shadow: 0 5px 15px rgba(0, 143, 226, 0.15) !important;
  transform: translateY(-1px);
}

.modern-input-group:focus-within {
  box-shadow: 0 5px 20px rgba(0, 143, 226, 0.2) !important;
  border-color: rgba(0, 188, 164, 0.5) !important;
  transform: translateY(-2px);
}

.modern-input {
  border: none !important;
  padding: 15px 20px !important;
  height: auto !important;
  font-size: 15px !important;
  background-color: white !important;
  color: #495057 !important;
  transition: all 0.3s ease !important;
  font-weight: 400 !important;
  letter-spacing: 0.3px !important;
}

.modern-input:focus {
  background-color: white !important;
  box-shadow: none !important;
  outline: none !important;
}

.modern-input:-ms-input-placeholder {
  color: #adb5bd !important;
  font-weight: 300 !important;
  transition: all 0.3s ease !important;
}

.modern-input::placeholder {
  color: #adb5bd !important;
  font-weight: 300 !important;
  transition: all 0.3s ease !important;
}

.modern-input:focus:-ms-input-placeholder {
  opacity: 0.7 !important;
  transform: translateX(5px);
}

.modern-input:focus::placeholder {
  opacity: 0.7 !important;
  transform: translateX(5px);
}

.modern-input-icon {
  background: linear-gradient(135deg, #00bca4, #008fe2) !important;
  border: none !important;
  color: white !important;
  width: 50px !important;
  text-align: center !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
}

.modern-input-icon i {
  font-size: 18px !important;
}

/* Animación para los iconos de los campos */
@keyframes iconPulse {
  0% {
    transform: scale(1);
  }
  50% {
    transform: scale(1.1);
  }
  100% {
    transform: scale(1);
  }
}

.modern-input-group:focus-within .modern-input-icon i {
  animation: iconPulse 1s infinite;
}

/* Estilo para mensajes de error de validación */
.validation.text-danger {
  font-size: 12px;
  margin-top: 5px;
  display: block;
  transition: all 0.3s ease;
  opacity: 0.9;
  padding-left: 10px;
  color: inherit;
  font-weight: normal;
  text-shadow: none;
  background-color: transparent;
  border-radius: 0;
  padding-left: 10px;
  margin-bottom: 0;
}

/* Estilos para etiquetas flotantes */
.floating-label {
  position: relative;
  margin-bottom: 20px;
  width: 100%;
}

.floating-label input {
  width: 100%;
  padding: 18px 15px 10px;
  border: none;
  border-radius: 4px;
  outline: none;
  box-shadow: none;
  font-size: 15px;
  transition: all 0.3s ease;
  background-color: white !important;
}

.floating-label label {
  position: absolute;
  top: 17px;
  left: 15px;
  font-size: 15px;
  color: #008fe2;
  pointer-events: none;
  transition: all 0.3s ease;
  z-index: 100;
  background-color: rgba(255, 255, 255, 0.9);
  padding: 0 5px;
  font-weight: 500;
  text-shadow: 0px 0px 3px rgba(255, 255, 255, 0.7);
  border-radius: 3px;
  box-shadow: 0 0 5px rgba(255, 255, 255, 0.8);
}

.floating-label input:focus ~ label,
.floating-label input:not(:placeholder-shown) ~ label {
  top: 5px;
  left: 15px;
  font-size: 12px;
  color: #00bca4;
  font-weight: 600;
  background-color: transparent;
}

/* Efecto de enfoque para los campos de entrada */
.input-focus-effect {
  position: absolute;
  bottom: 0;
  left: 0;
  width: 0;
  height: 2px;
  background: linear-gradient(90deg, #00bca4, #008fe2);
  transition: all 0.3s ease;
}

.modern-input:focus ~ .input-focus-effect {
  width: 100%;
}

/* Mejoras para la visualización de contraseña */
.password-toggle {
  position: absolute;
  right: 60px;
  top: 50%;
  transform: translateY(-50%);
  cursor: pointer;
  z-index: 10;
  color: #adb5bd;
  transition: all 0.3s ease;
}

.password-toggle:hover {
  color: #00bca4;
}

/* Animación de entrada para los campos */
@keyframes fadeInUp {
  from {
    opacity: 0;
    transform: translateY(10px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

.modern-input-group {
  animation: fadeInUp 0.5s ease-out;
  margin-bottom: 5px !important;
}

/* Contenedor para los campos de entrada modernos */
.modern-input-container {
  margin-bottom: 20px;
  position: relative;
}

/* Estilos para destacar las etiquetas */
.modern-input-container label {
  background-color: rgba(255, 255, 255, 0.9);
  padding: 0 6px;
  border-radius: 3px;
  box-shadow: 0 0 5px rgba(255, 255, 255, 0.8);
  font-weight: 600;
  color: #008fe2;
}

/* Animación para las etiquetas */
@keyframes labelPulse {
  0% {
    opacity: 0.8;
  }
  50% {
    opacity: 1;
  }
  100% {
    opacity: 0.8;
  }
}

.floating-label input:focus ~ label {
  animation: labelPulse 2s infinite;
}

/* Animaciones para el logo */
@keyframes logoEntrance {
  0% {
    opacity: 0;
    transform: scale(0.8) translateY(-20px);
  }
  50% {
    opacity: 1;
    transform: scale(1.05) translateY(0);
  }
  70% {
    transform: scale(0.95);
  }
  100% {
    opacity: 1;
    transform: scale(1);
  }
}

@keyframes logoPulse {
  0% {
    transform: scale(1);
    filter: drop-shadow(0 0 0px rgba(0, 143, 226, 0.5));
  }
  50% {
    transform: scale(1.03);
    filter: drop-shadow(0 0 8px rgba(0, 143, 226, 0.7));
  }
  100% {
    transform: scale(1);
    filter: drop-shadow(0 0 0px rgba(0, 143, 226, 0.5));
  }
}

.animated-logo {
  animation: logoEntrance 1.2s ease-out forwards, logoPulse 3s ease-in-out 1.2s infinite;
  transform-origin: center;
}

/* Efecto hover para el logo */
.animated-logo:hover {
  animation: none;
  transform: scale(1.05);
  filter: drop-shadow(0 0 10px rgba(0, 143, 226, 0.8));
  transition: all 0.3s ease;
}

/*# sourceMappingURL=data:application/json;base64,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ZiwwQkFBMEI7Q0FDM0I7O0FBRUQ7RUFDRSxlQUFlO0NBQ2hCOztBQUVELDBDQUEwQztBQUMxQztFQUNFO0lBQ0UsV0FBVztJQUNYLDRCQUE0QjtHQUM3QjtFQUNEO0lBQ0UsV0FBVztJQUNYLHlCQUF5QjtHQUMxQjtDQUNGOztBQUVEO0VBQ0Usa0NBQWtDO0VBQ2xDLDhCQUE4QjtDQUMvQjs7QUFFRCxvREFBb0Q7QUFDcEQ7RUFDRSxvQkFBb0I7RUFDcEIsbUJBQW1CO0NBQ3BCOztBQUVELHlDQUF5QztBQUN6QztFQUNFLDJDQUEyQztFQUMzQyxlQUFlO0VBQ2YsbUJBQW1CO0VBQ25CLDZDQUE2QztFQUM3QyxpQkFBaUI7RUFDakIsZUFBZTtDQUNoQjs7QUFFRCxrQ0FBa0M7QUFDbEM7RUFDRTtJQUNFLGFBQWE7R0FDZDtFQUNEO0lBQ0UsV0FBVztHQUNaO0VBQ0Q7SUFDRSxhQUFhO0dBQ2Q7Q0FDRjs7QUFFRDtFQUNFLGtDQUFrQztDQUNuQzs7QUFFRCw4QkFBOEI7QUFDOUI7RUFDRTtJQUNFLFdBQVc7SUFDWCx3Q0FBd0M7R0FDekM7RUFDRDtJQUNFLFdBQVc7SUFDWCxxQ0FBcUM7R0FDdEM7RUFDRDtJQUNFLHVCQUF1QjtHQUN4QjtFQUNEO0lBQ0UsV0FBVztJQUNYLG9CQUFvQjtHQUNyQjtDQUNGOztBQUVEO0VBQ0U7SUFDRSxvQkFBb0I7SUFDcEIsb0RBQW9EO0dBQ3JEO0VBQ0Q7SUFDRSx1QkFBdUI7SUFDdkIsb0RBQW9EO0dBQ3JEO0VBQ0Q7SUFDRSxvQkFBb0I7SUFDcEIsb0RBQW9EO0dBQ3JEO0NBQ0Y7O0FBRUQ7RUFDRSx1RkFBdUY7RUFDdkYseUJBQXlCO0NBQzFCOztBQUVELCtCQUErQjtBQUMvQjtFQUNFLGdCQUFnQjtFQUNoQix1QkFBdUI7RUFDdkIscURBQXFEO0VBQ3JELDBCQUEwQjtDQUMzQiIsImZpbGUiOiJtb2Rlcm4tYnV0dG9ucy5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBFc3RpbG9zIG1vZGVybm9zIHBhcmEgYm90b25lcyAtIEVMWU9OIFlJUkVIIEFjYWRlbWljICovXG5cbi8qIEVzdGlsb3MgZ2VuZXJhbGVzIHBhcmEgYm90b25lcyBtb2Rlcm5vcyAqL1xuLmJ0bi1tb2Rlcm4ge1xuICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlO1xuICBib3JkZXItcmFkaXVzOiA0cHg7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgbGV0dGVyLXNwYWNpbmc6IDAuNXB4O1xuICBib3gtc2hhZG93OiAwIDRweCA2cHggcmdiYSgwLCAwLCAwLCAwLjEpO1xuICBib3JkZXI6IG5vbmU7XG59XG5cbi8qIEVmZWN0byBob3ZlciBwYXJhIGJvdG9uZXMgKi9cbi5idG4tbW9kZXJuOmhvdmVyIHtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0ycHgpO1xuICBib3gtc2hhZG93OiAwIDdweCAxNHB4IHJnYmEoMCwgMCwgMCwgMC4xNSk7XG59XG5cbi5idG4tbW9kZXJuOmFjdGl2ZSB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgxcHgpO1xuICBib3gtc2hhZG93OiAwIDNweCA1cHggcmdiYSgwLCAwLCAwLCAwLjEpO1xufVxuXG4vKiBFc3RpbG9zIGVzcGVjw61maWNvcyBwYXJhIGVsIGJvdMOzbiBkZSBpbmdyZXNvICovXG4uYnRuLWxvZ2luIHtcbiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgIzAwYmNhNCwgIzAwOGZlMik7XG4gIGNvbG9yOiB3aGl0ZTtcbiAgZm9udC1zaXplOiAxNnB4O1xuICBwYWRkaW5nOiAxMnB4IDI0cHg7XG4gIHdpZHRoOiAxMDAlO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHotaW5kZXg6IDE7XG59XG5cbi5idG4tbG9naW46YmVmb3JlIHtcbiAgY29udGVudDogXCJcIjtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIGxlZnQ6IC0xMDAlO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAjMDA4ZmUyLCAjMDBiY2E0KTtcbiAgdHJhbnNpdGlvbjogYWxsIDAuNnMgZWFzZS1pbi1vdXQ7XG4gIHotaW5kZXg6IC0xO1xufVxuXG4uYnRuLWxvZ2luOmhvdmVyOmJlZm9yZSB7XG4gIGxlZnQ6IDA7XG59XG5cbi8qIEVzdGlsb3MgcGFyYSBlbCBib3TDs24gZGUgcmVjdXBlcmFyIGNvbnRyYXNlw7FhICovXG4uYnRuLWZvcmdvdC1wYXNzd29yZCB7XG4gIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICBjb2xvcjogIzAwOGZlMjtcbiAgYm9yZGVyOiAxcHggc29saWQgIzAwOGZlMjtcbiAgcGFkZGluZzogOHB4IDE2cHg7XG4gIG1hcmdpbi10b3A6IDE1cHg7XG4gIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7XG59XG5cbi5idG4tZm9yZ290LXBhc3N3b3JkOmhvdmVyIHtcbiAgYmFja2dyb3VuZDogcmdiYSgwLCAxNDMsIDIyNiwgMC4xKTtcbiAgY29sb3I6ICMwMGJjYTQ7XG4gIGJvcmRlci1jb2xvcjogIzAwYmNhNDtcbn1cblxuLyogQW5pbWFjacOzbiBkZSBwdWxzbyBwYXJhIGVsIGJvdMOzbiBkZSByZWN1cGVyYXIgY29udHJhc2XDsWEgKi9cbkBrZXlmcmFtZXMgcHVsc2Uge1xuICAwJSB7XG4gICAgYm94LXNoYWRvdzogMCAwIDAgMCByZ2JhKDAsIDE0MywgMjI2LCAwLjQpO1xuICB9XG4gIDcwJSB7XG4gICAgYm94LXNoYWRvdzogMCAwIDAgMTBweCByZ2JhKDAsIDE0MywgMjI2LCAwKTtcbiAgfVxuICAxMDAlIHtcbiAgICBib3gtc2hhZG93OiAwIDAgMCAwIHJnYmEoMCwgMTQzLCAyMjYsIDApO1xuICB9XG59XG5cbi5idG4tZm9yZ290LXBhc3N3b3JkOmZvY3VzIHtcbiAgYW5pbWF0aW9uOiBwdWxzZSAxLjVzIGluZmluaXRlO1xufVxuXG4vKiBNZWpvcmFzIGVuIGVsIGNvbnRlbmVkb3IgZGUgbG9naW4gKi9cbi5tb2Rlcm4tbG9naW4tYm94IHtcbiAgYm9yZGVyLXJhZGl1czogMjBweCAhaW1wb3J0YW50O1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBib3gtc2hhZG93OiAwIDVweCAxNXB4IHJnYmEoMCwgMCwgMCwgMC4xKTtcbiAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTtcbiAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgwLCAxNDMsIDIyNiwgMC4zKSAhaW1wb3J0YW50O1xufVxuXG4ubW9kZXJuLWxvZ2luLWJveDpob3ZlciB7XG4gIGJveC1zaGFkb3c6IDAgOHB4IDI1cHggcmdiYSgwLCAxNDMsIDIyNiwgMC4yKTtcbn1cblxuLm1vZGVybi1sb2dpbi1oZWFkZXIge1xuICBwYWRkaW5nOiAyMHB4O1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIGJhY2tncm91bmQ6IHdoaXRlO1xuICBib3JkZXItcmFkaXVzOiAyMHB4IDIwcHggMCAwO1xufVxuXG4ubW9kZXJuLWxvZ2luLWJvZHkge1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAjZjVmN2ZhLCAjZTRlOGViKSAhaW1wb3J0YW50O1xuICBwYWRkaW5nOiAyNXB4IDIwcHg7XG4gIGJvcmRlci1yYWRpdXM6IDAgMCAyMHB4IDIwcHg7XG59XG5cbi8qIEVzdGlsb3MgbWVqb3JhZG9zIHBhcmEgbG9zIGNhbXBvcyBkZSBlbnRyYWRhICovXG4ubW9kZXJuLWlucHV0LWdyb3VwIHtcbiAgbWFyZ2luLWJvdHRvbTogMjBweCAhaW1wb3J0YW50O1xuICBib3JkZXItcmFkaXVzOiA2cHggIWltcG9ydGFudDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgYm94LXNoYWRvdzogMCAzcHggMTBweCByZ2JhKDAsIDAsIDAsIDAuMDgpICFpbXBvcnRhbnQ7XG4gIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMCwgMTg4LCAxNjQsIDAuMikgIWltcG9ydGFudDtcbiAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZSAhaW1wb3J0YW50O1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHBhZGRpbmc6IDAgIWltcG9ydGFudDtcbiAgYW5pbWF0aW9uOiBmYWRlSW5VcCAwLjVzIGVhc2Utb3V0O1xufVxuXG4ubW9kZXJuLWlucHV0LWdyb3VwOmhvdmVyIHtcbiAgYm94LXNoYWRvdzogMCA1cHggMTVweCByZ2JhKDAsIDE0MywgMjI2LCAwLjE1KSAhaW1wb3J0YW50O1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTFweCk7XG59XG5cbi5tb2Rlcm4taW5wdXQtZ3JvdXA6Zm9jdXMtd2l0aGluIHtcbiAgYm94LXNoYWRvdzogMCA1cHggMjBweCByZ2JhKDAsIDE0MywgMjI2LCAwLjIpICFpbXBvcnRhbnQ7XG4gIGJvcmRlci1jb2xvcjogcmdiYSgwLCAxODgsIDE2NCwgMC41KSAhaW1wb3J0YW50O1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTJweCk7XG59XG5cbi5tb2Rlcm4taW5wdXQge1xuICBib3JkZXI6IG5vbmUgIWltcG9ydGFudDtcbiAgcGFkZGluZzogMTVweCAyMHB4ICFpbXBvcnRhbnQ7XG4gIGhlaWdodDogYXV0byAhaW1wb3J0YW50O1xuICBmb250LXNpemU6IDE1cHggIWltcG9ydGFudDtcbiAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGUgIWltcG9ydGFudDtcbiAgY29sb3I6ICM0OTUwNTcgIWltcG9ydGFudDtcbiAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZSAhaW1wb3J0YW50O1xuICBmb250LXdlaWdodDogNDAwICFpbXBvcnRhbnQ7XG4gIGxldHRlci1zcGFjaW5nOiAwLjNweCAhaW1wb3J0YW50O1xufVxuXG4ubW9kZXJuLWlucHV0OmZvY3VzIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGUgIWltcG9ydGFudDtcbiAgYm94LXNoYWRvdzogbm9uZSAhaW1wb3J0YW50O1xuICBvdXRsaW5lOiBub25lICFpbXBvcnRhbnQ7XG59XG5cbi5tb2Rlcm4taW5wdXQ6OnBsYWNlaG9sZGVyIHtcbiAgY29sb3I6ICNhZGI1YmQgIWltcG9ydGFudDtcbiAgZm9udC13ZWlnaHQ6IDMwMCAhaW1wb3J0YW50O1xuICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlICFpbXBvcnRhbnQ7XG59XG5cbi5tb2Rlcm4taW5wdXQ6Zm9jdXM6OnBsYWNlaG9sZGVyIHtcbiAgb3BhY2l0eTogMC43ICFpbXBvcnRhbnQ7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCg1cHgpO1xufVxuXG4ubW9kZXJuLWlucHV0LWljb24ge1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAjMDBiY2E0LCAjMDA4ZmUyKSAhaW1wb3J0YW50O1xuICBib3JkZXI6IG5vbmUgIWltcG9ydGFudDtcbiAgY29sb3I6IHdoaXRlICFpbXBvcnRhbnQ7XG4gIHdpZHRoOiA1MHB4ICFpbXBvcnRhbnQ7XG4gIHRleHQtYWxpZ246IGNlbnRlciAhaW1wb3J0YW50O1xuICBkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXIgIWltcG9ydGFudDtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXIgIWltcG9ydGFudDtcbn1cblxuLm1vZGVybi1pbnB1dC1pY29uIGkge1xuICBmb250LXNpemU6IDE4cHggIWltcG9ydGFudDtcbn1cblxuLyogQW5pbWFjacOzbiBwYXJhIGxvcyBpY29ub3MgZGUgbG9zIGNhbXBvcyAqL1xuQGtleWZyYW1lcyBpY29uUHVsc2Uge1xuICAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZSgxKTtcbiAgfVxuICA1MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGUoMS4xKTtcbiAgfVxuICAxMDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDEpO1xuICB9XG59XG5cbi5tb2Rlcm4taW5wdXQtZ3JvdXA6Zm9jdXMtd2l0aGluIC5tb2Rlcm4taW5wdXQtaWNvbiBpIHtcbiAgYW5pbWF0aW9uOiBpY29uUHVsc2UgMXMgaW5maW5pdGU7XG59XG5cbi8qIEVzdGlsbyBwYXJhIG1lbnNhamVzIGRlIGVycm9yIGRlIHZhbGlkYWNpw7NuICovXG4udmFsaWRhdGlvbi50ZXh0LWRhbmdlciB7XG4gIGZvbnQtc2l6ZTogMTJweDtcbiAgbWFyZ2luLXRvcDogNXB4O1xuICBkaXNwbGF5OiBibG9jaztcbiAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTtcbiAgb3BhY2l0eTogMC45O1xuICBwYWRkaW5nLWxlZnQ6IDEwcHg7XG4gIGNvbG9yOiBpbmhlcml0O1xuICBmb250LXdlaWdodDogbm9ybWFsO1xuICB0ZXh0LXNoYWRvdzogbm9uZTtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIGJvcmRlci1yYWRpdXM6IDA7XG4gIHBhZGRpbmctbGVmdDogMTBweDtcbiAgbWFyZ2luLWJvdHRvbTogMDtcbn1cblxuLyogRXN0aWxvcyBwYXJhIGV0aXF1ZXRhcyBmbG90YW50ZXMgKi9cbi5mbG9hdGluZy1sYWJlbCB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgbWFyZ2luLWJvdHRvbTogMjBweDtcbiAgd2lkdGg6IDEwMCU7XG59XG5cbi5mbG9hdGluZy1sYWJlbCBpbnB1dCB7XG4gIHdpZHRoOiAxMDAlO1xuICBwYWRkaW5nOiAxOHB4IDE1cHggMTBweDtcbiAgYm9yZGVyOiBub25lO1xuICBib3JkZXItcmFkaXVzOiA0cHg7XG4gIG91dGxpbmU6IG5vbmU7XG4gIGJveC1zaGFkb3c6IG5vbmU7XG4gIGZvbnQtc2l6ZTogMTVweDtcbiAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTtcbiAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGUgIWltcG9ydGFudDtcbn1cblxuLmZsb2F0aW5nLWxhYmVsIGxhYmVsIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDE3cHg7XG4gIGxlZnQ6IDE1cHg7XG4gIGZvbnQtc2l6ZTogMTVweDtcbiAgY29sb3I6ICMwMDhmZTI7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlO1xuICB6LWluZGV4OiAxMDA7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC45KTtcbiAgcGFkZGluZzogMCA1cHg7XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG4gIHRleHQtc2hhZG93OiAwcHggMHB4IDNweCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNyk7XG4gIGJvcmRlci1yYWRpdXM6IDNweDtcbiAgYm94LXNoYWRvdzogMCAwIDVweCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOCk7XG59XG5cbi5mbG9hdGluZy1sYWJlbCBpbnB1dDpmb2N1cyB+IGxhYmVsLFxuLmZsb2F0aW5nLWxhYmVsIGlucHV0Om5vdCg6cGxhY2Vob2xkZXItc2hvd24pIH4gbGFiZWwge1xuICB0b3A6IDVweDtcbiAgbGVmdDogMTVweDtcbiAgZm9udC1zaXplOiAxMnB4O1xuICBjb2xvcjogIzAwYmNhNDtcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG59XG5cbi8qIEVmZWN0byBkZSBlbmZvcXVlIHBhcmEgbG9zIGNhbXBvcyBkZSBlbnRyYWRhICovXG4uaW5wdXQtZm9jdXMtZWZmZWN0IHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBib3R0b206IDA7XG4gIGxlZnQ6IDA7XG4gIHdpZHRoOiAwO1xuICBoZWlnaHQ6IDJweDtcbiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDkwZGVnLCAjMDBiY2E0LCAjMDA4ZmUyKTtcbiAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTtcbn1cblxuLm1vZGVybi1pbnB1dDpmb2N1cyB+IC5pbnB1dC1mb2N1cy1lZmZlY3Qge1xuICB3aWR0aDogMTAwJTtcbn1cblxuLyogTWVqb3JhcyBwYXJhIGxhIHZpc3VhbGl6YWNpw7NuIGRlIGNvbnRyYXNlw7FhICovXG4ucGFzc3dvcmQtdG9nZ2xlIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICByaWdodDogNjBweDtcbiAgdG9wOiA1MCU7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICB6LWluZGV4OiAxMDtcbiAgY29sb3I6ICNhZGI1YmQ7XG4gIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7XG59XG5cbi5wYXNzd29yZC10b2dnbGU6aG92ZXIge1xuICBjb2xvcjogIzAwYmNhNDtcbn1cblxuLyogQW5pbWFjacOzbiBkZSBlbnRyYWRhIHBhcmEgbG9zIGNhbXBvcyAqL1xuQGtleWZyYW1lcyBmYWRlSW5VcCB7XG4gIGZyb20ge1xuICAgIG9wYWNpdHk6IDA7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwcHgpO1xuICB9XG4gIHRvIHtcbiAgICBvcGFjaXR5OiAxO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTtcbiAgfVxufVxuXG4ubW9kZXJuLWlucHV0LWdyb3VwIHtcbiAgYW5pbWF0aW9uOiBmYWRlSW5VcCAwLjVzIGVhc2Utb3V0O1xuICBtYXJnaW4tYm90dG9tOiA1cHggIWltcG9ydGFudDtcbn1cblxuLyogQ29udGVuZWRvciBwYXJhIGxvcyBjYW1wb3MgZGUgZW50cmFkYSBtb2Rlcm5vcyAqL1xuLm1vZGVybi1pbnB1dC1jb250YWluZXIge1xuICBtYXJnaW4tYm90dG9tOiAyMHB4O1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG5cbi8qIEVzdGlsb3MgcGFyYSBkZXN0YWNhciBsYXMgZXRpcXVldGFzICovXG4ubW9kZXJuLWlucHV0LWNvbnRhaW5lciBsYWJlbCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC45KTtcbiAgcGFkZGluZzogMCA2cHg7XG4gIGJvcmRlci1yYWRpdXM6IDNweDtcbiAgYm94LXNoYWRvdzogMCAwIDVweCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOCk7XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG4gIGNvbG9yOiAjMDA4ZmUyO1xufVxuXG4vKiBBbmltYWNpw7NuIHBhcmEgbGFzIGV0aXF1ZXRhcyAqL1xuQGtleWZyYW1lcyBsYWJlbFB1bHNlIHtcbiAgMCUge1xuICAgIG9wYWNpdHk6IDAuODtcbiAgfVxuICA1MCUge1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cbiAgMTAwJSB7XG4gICAgb3BhY2l0eTogMC44O1xuICB9XG59XG5cbi5mbG9hdGluZy1sYWJlbCBpbnB1dDpmb2N1cyB+IGxhYmVsIHtcbiAgYW5pbWF0aW9uOiBsYWJlbFB1bHNlIDJzIGluZmluaXRlO1xufVxuXG4vKiBBbmltYWNpb25lcyBwYXJhIGVsIGxvZ28gKi9cbkBrZXlmcmFtZXMgbG9nb0VudHJhbmNlIHtcbiAgMCUge1xuICAgIG9wYWNpdHk6IDA7XG4gICAgdHJhbnNmb3JtOiBzY2FsZSgwLjgpIHRyYW5zbGF0ZVkoLTIwcHgpO1xuICB9XG4gIDUwJSB7XG4gICAgb3BhY2l0eTogMTtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMDUpIHRyYW5zbGF0ZVkoMCk7XG4gIH1cbiAgNzAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDAuOTUpO1xuICB9XG4gIDEwMCUge1xuICAgIG9wYWNpdHk6IDE7XG4gICAgdHJhbnNmb3JtOiBzY2FsZSgxKTtcbiAgfVxufVxuXG5Aa2V5ZnJhbWVzIGxvZ29QdWxzZSB7XG4gIDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDEpO1xuICAgIGZpbHRlcjogZHJvcC1zaGFkb3coMCAwIDBweCByZ2JhKDAsIDE0MywgMjI2LCAwLjUpKTtcbiAgfVxuICA1MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGUoMS4wMyk7XG4gICAgZmlsdGVyOiBkcm9wLXNoYWRvdygwIDAgOHB4IHJnYmEoMCwgMTQzLCAyMjYsIDAuNykpO1xuICB9XG4gIDEwMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7XG4gICAgZmlsdGVyOiBkcm9wLXNoYWRvdygwIDAgMHB4IHJnYmEoMCwgMTQzLCAyMjYsIDAuNSkpO1xuICB9XG59XG5cbi5hbmltYXRlZC1sb2dvIHtcbiAgYW5pbWF0aW9uOiBsb2dvRW50cmFuY2UgMS4ycyBlYXNlLW91dCBmb3J3YXJkcywgbG9nb1B1bHNlIDNzIGVhc2UtaW4tb3V0IDEuMnMgaW5maW5pdGU7XG4gIHRyYW5zZm9ybS1vcmlnaW46IGNlbnRlcjtcbn1cblxuLyogRWZlY3RvIGhvdmVyIHBhcmEgZWwgbG9nbyAqL1xuLmFuaW1hdGVkLWxvZ286aG92ZXIge1xuICBhbmltYXRpb246IG5vbmU7XG4gIHRyYW5zZm9ybTogc2NhbGUoMS4wNSk7XG4gIGZpbHRlcjogZHJvcC1zaGFkb3coMCAwIDEwcHggcmdiYSgwLCAxNDMsIDIyNiwgMC44KSk7XG4gIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7XG59XG4iXX0= */