/*!***************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[4].oneOf[1].use[1]!./node_modules/resolve-url-loader/index.js??ruleSet[1].rules[4].oneOf[1].use[2]!./node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[4].oneOf[1].use[3]!./assets/styles/app.scss ***!
  \***************************************************************************************************************************************************************************************************************************************************************************/
body, html {
  height: 100%;
  margin: 0%;
  padding: 0%;
}

body {
  background-image: url(/build/images/home.80e6f4cf.jpg);
  background-size: cover;
  background-repeat: no-repeat;
}
body div.icons {
  position: absolute;
  bottom: 20%;
}
body div.icons a {
  color: 0;
}
body div.icons .fab {
  width: 4vw;
  margin-top: 2vh;
  border-radius: 10px;
}
body nav.nav-bar ul#navMenu {
  justify-content: center;
}
body nav.nav-bar ul#navMenu li:not(:first-child) {
  opacity: 0;
  animation: navlink 700ms ease-in 1 normal forwards;
}
@keyframes navlink {
  0% {
    opacity: 0;
    transform: scale(0);
  }
  90% {
    opacity: 1;
    transform: scale(1.3);
  }
  100% {
    opacity: 1;
    transform: scale(1);
  }
}
body nav.nav-bar ul#navMenu li:first-child {
  text-align: center;
}
body nav.nav-bar ul#navMenu li a {
  font-size: 1.4vw;
}
body nav.nav-bar ul#navMenu li .logo {
  max-width: 40%;
  height: auto;
  border-radius: 20%;
  animation: logo 12s linear 2s infinite alternate none;
}
@keyframes logo {
  0% {
    transform: rotateY(0deg) rotateX(0deg);
  }
  25% {
    transform: rotateY(360deg) rotateX(0deg);
  }
  50% {
    transform: rotateY(360deg) rotateX(360deg);
  }
  100% {
    transform: rotateY(0deg) rotateX(0deg);
  }
}
body nav.nav-bar ul#navMenu li .flag {
  max-width: 40%;
  height: auto;
  margin-left: 15%;
}
body nav.nav-bar #menuHamburger {
  position: absolute;
  color: white;
  top: 1%;
  left: 1%;
  visibility: hidden;
}
body nav.nav-bar #menuHamburger i {
  font-size: 7vw;
}
body nav.nav-bar #menuHamburger:hover {
  cursor: pointer;
}
body nav.nav-bar a {
  font-family: Silkscreen;
  font-weight: bold;
  font-size: larger;
}
body nav.nav-bar li:not(:last-child):hover a {
  background-color: grey;
  border-radius: 20px;
  color: white;
  -webkit-border-radius: 20px;
  -moz-border-radius: 20px;
  -ms-border-radius: 20px;
  -o-border-radius: 20px;
}
body div.home {
  position: relative;
  top: 15%;
  margin-left: 1%;
}
body div.home div.doors {
  position: relative;
  display: grid;
  grid-template-columns: auto auto;
  width: 25%;
  margin-left: 23%;
  background-image: url(/build/images/eiffelday.4befc02f.jpg);
  background-size: cover;
  background-repeat: no-repeat;
  color: blue;
  animation: doors 10s linear 12s infinite alternate forwards;
}
@keyframes doors {
  from {
    background-image: url(/build/images/eiffelday.4befc02f.jpg);
    color: blue;
  }
  to {
    background-image: url(/build/images/eiffelmoon.acac0fbe.jpg);
    color: white;
  }
}
body div.home div.doors .door {
  width: 100%;
  height: auto;
  border: 1px solid gray;
  box-shadow: 10px 10px 8px 0 rgba(0, 0, 0, 0.4);
}
body div.home div.doors .door1 {
  animation: door1 5s linear 1 normal forwards;
  -webkit-animation: door1 5s linear 1 normal forwards;
}
@keyframes door1 {
  from {
    transform: perspective(500px) rotateY(0deg);
    transform-origin: 0% 0%;
    -webkit-transform: perspective(500px) rotateY(0deg);
    -moz-transform: perspective(500px) rotateY(0deg);
    -ms-transform: perspective(500px) rotateY(0deg);
    -o-transform: perspective(500px) rotateY(0deg);
  }
  to {
    transform: perspective(500px) rotateY(-170deg);
    transform-origin: 0% 0%;
    -webkit-transform: perspective(500px) rotateY(-170deg);
    -moz-transform: perspective(500px) rotateY(-170deg);
    -ms-transform: perspective(500px) rotateY(-170deg);
    -o-transform: perspective(500px) rotateY(-170deg);
  }
}
body div.home div.doors .door2 {
  animation: door2 5s linear 1 normal forwards;
  -webkit-animation: door2 5s linear 1 normal forwards;
}
@keyframes door2 {
  from {
    transform: perspective(500px) rotateY(0deg);
    transform-origin: 100% 0%;
    -webkit-transform: perspective(500px) rotateY(0deg);
    -moz-transform: perspective(500px) rotateY(0deg);
    -ms-transform: perspective(500px) rotateY(0deg);
    -o-transform: perspective(500px) rotateY(0deg);
  }
  to {
    transform: perspective(500px) rotateY(170deg);
    transform-origin: 100% 0%;
    -webkit-transform: perspective(500px) rotateY(170deg);
    -moz-transform: perspective(500px) rotateY(170deg);
    -ms-transform: perspective(500px) rotateY(170deg);
    -o-transform: perspective(500px) rotateY(170deg);
  }
}
body div.home div.doors .myphoto {
  position: absolute;
  max-width: 40%;
  height: auto;
  opacity: 0;
  animation: myphoto 3s linear 6s forwards;
}
@keyframes myphoto {
  0% {
    opacity: 0;
  }
  25% {
    opacity: 0.25;
  }
  50% {
    opacity: 0.5;
  }
  75% {
    opacity: 0.75;
  }
  100% {
    opacity: 1;
  }
}
body div.home div.doors .welcomeMessage {
  display: inline-block;
  font-family: fantasy;
  font-size: 2vw;
  position: absolute;
  bottom: 30%;
  left: 15%;
  transform: rotateX(25deg);
}
body div.home div.doors .welcomeMessage .message1 {
  opacity: 0;
  position: relative;
  animation: Message1 2s linear 10s 1 forwards;
  -webkit-animation: Message1 2s linear 10s 1 forwards;
  text-shadow: 1px 1px 1px #051646, 1px 2px 1px #051646, 1px 3px 1px #051646, 1px 4px 1px #051646, 1px 5px 1px #051646, 1px 18px 6px rgba(16, 16, 16, 0.4), 1px 22px 10px rgba(16, 16, 16, 0.2), 1px 25px 35px rgba(16, 16, 16, 0.2), 1px 30px 60px rgba(16, 16, 16, 0.4);
}
@keyframes Message1 {
  0% {
    opacity: 0;
    right: 200px;
  }
  25% {
    opacity: 0.25;
    right: 150px;
  }
  50% {
    opacity: 0.5;
    right: 100px;
  }
  75% {
    opacity: 0.75;
    right: 50px;
  }
  100% {
    opacity: 1;
    right: 0px;
  }
}
body div.home div.doors .welcomeMessage .message2 {
  opacity: 0;
  position: relative;
  animation: Message2 2s linear 10s 1 forwards;
  -webkit-animation: Message2 2s linear 10s 1 forwards;
  text-shadow: 1px 1px 1px #051646, 1px 2px 1px #051646, 1px 3px 1px #051646, 1px 4px 1px #051646, 1px 5px 1px #051646, 1px 18px 6px rgba(16, 16, 16, 0.4), 1px 22px 10px rgba(16, 16, 16, 0.2), 1px 25px 35px rgba(16, 16, 16, 0.2), 1px 30px 60px rgba(16, 16, 16, 0.4);
}
@keyframes Message2 {
  0% {
    opacity: 0;
    left: 200px;
  }
  25% {
    opacity: 0.25;
    left: 150px;
  }
  50% {
    opacity: 0.5;
    left: 100px;
  }
  75% {
    opacity: 0.75;
    left: 50px;
  }
  100% {
    opacity: 1;
    left: 0px;
  }
}
body div.home div.wrapper {
  overflow-x: hidden;
  width: 42%;
  margin-left: 14%;
  margin-top: 1%;
  color: blue;
  font-size: 1.5rem;
}
body div.home div.wrapper #pageSlogan {
  opacity: 0;
  animation: sloganAnimation 6s linear 5s infinite normal forwards;
  -webkit-animation: sloganAnimation 6s linear 5s infinite normal forwards;
}
@keyframes sloganAnimation {
  from {
    opacity: 1;
    transform: translateX(800px);
    -webkit-transform: translateX(800px);
    -moz-transform: translateX(800px);
    -ms-transform: translateX(800px);
    -o-transform: translateX(800px);
  }
  to {
    opacity: 1;
    transform: translateX(-300px);
    -webkit-transform: translateX(-300px);
    -moz-transform: translateX(-300px);
    -ms-transform: translateX(-300px);
    -o-transform: translateX(-300px);
  }
}
body .pageProjects {
  position: relative;
  top: 8%;
  margin-left: 1%;
}
body .pageProjects .typewriter {
  width: 50%;
  text-align: center;
  margin-left: 10%;
  margin-bottom: 1%;
}
body .pageProjects .typewriter h4 {
  margin: auto auto;
  font-family: Audiowide;
  font-size: 1.5vw;
  color: blue;
  overflow: hidden;
  border-right: 0.15em solid orange;
  white-space: nowrap;
  letter-spacing: 0.15em;
  animation: typing 5s steps(40, end) forwards, blink-caret 0.5s step-end infinite;
  -webkit-animation: typing 5s steps(40, end) forwards, blink-caret 0.5s step-end infinite;
}
@keyframes typing {
  from {
    width: 0%;
  }
  to {
    width: 30%;
  }
}
@keyframes blink-caret {
  from {
    border-color: transparent;
  }
  50% {
    border-color: orange;
  }
  to {
    border-color: transparent;
  }
}
body .pageProjects .carousel {
  width: 50%;
  margin-left: 10%;
}
body .pageProjects .carousel .carousel-indicators {
  top: 100%;
  filter: invert(100%);
  -webkit-filter: invert(100%);
}
body .pageProjects .carousel .projects {
  position: relative;
  display: grid;
  grid-template-columns: auto auto;
  font-size: 1vw;
}
body .pageProjects .carousel .projects .project .projectName {
  text-align: center;
  color: blueviolet;
  font-family: cursive;
}
body .pageProjects .carousel .projects .project .projectPhoto img {
  display: block;
  width: 100%;
}
body .pageProjects .carousel .projects .project p {
  margin-bottom: 0%;
}
body .pageProjects .carousel .projects .project .suite a, body .pageProjects .carousel .projects .project .reduire a {
  visibility: hidden;
  position: absolute;
}
body .pageProjects .carousel .projects .project .projectLink {
  font-family: cursive;
}
body .pageProjects .carousel .carousel-control-next, body .pageProjects .carousel .carousel-control-prev {
  filter: invert(100%);
  opacity: 1;
  width: 5%;
  -webkit-filter: invert(100%);
}

.about {
  margin: 0%;
  padding: 0%;
  background-image: none;
  background-color: rgb(209, 213, 216);
}
.about .aboutMe {
  position: relative;
  top: 8%;
  margin-left: 2%;
}
.about .aboutMe .screen {
  margin-right: 25%;
  margin-left: 25%;
  padding: 2%;
  background-color: white;
  border: 18px solid black;
  border-radius: 15px 15px 0 0;
  -webkit-border-radius: 15px 15px 0 0;
  -moz-border-radius: 15px 15px 0 0;
  -ms-border-radius: 15px 15px 0 0;
  -o-border-radius: 15px 15px 0 0;
}
.about .aboutMe .screen .myPhoto {
  position: relative;
}
.about .aboutMe .screen .myPhoto img {
  width: 7vw;
  height: auto;
  opacity: 0;
  animation: myphoto 4s linear 1s 1 normal forwards;
  -webkit-animation: myphoto 4s linear 1s 1 normal forwards;
}
@keyframes myphoto {
  from {
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}
.about .aboutMe .screen .myPhoto .overlay {
  position: absolute;
  top: 0;
  width: 150px;
  height: 150px;
  background-color: white;
  animation: overlay 4s linear 1s 1 normal forwards;
  -webkit-animation: overlay 4s linear 1s 1 normal forwards;
}
@keyframes overlay {
  0% {
    opacity: 1;
    transform: translateX(0px);
    -webkit-transform: translateX(0px);
    -moz-transform: translateX(0px);
    -ms-transform: translateX(0px);
    -o-transform: translateX(0px);
  }
  99% {
    opacity: 1;
    transform: translateX(155px);
    -webkit-transform: translateX(155px);
    -moz-transform: translateX(155px);
    -ms-transform: translateX(155px);
    -o-transform: translateX(155px);
  }
  100% {
    opacity: 0;
    transform: translateX(160px);
    -webkit-transform: translateX(160px);
    -moz-transform: translateX(160px);
    -ms-transform: translateX(160px);
    -o-transform: translateX(160px);
  }
}
.about .aboutMe .screen .typewriting {
  margin-top: 0.5%;
}
.about .aboutMe .screen .typewriting .lignes {
  margin: 0%;
  font-family: Audiowide;
  font-size: 1.5vw;
  color: blue;
  overflow: hidden;
  border-right: 0.15em solid transparent;
  white-space: nowrap;
  padding: auto 0;
  letter-spacing: 0.15em;
  visibility: hidden;
}
.about .aboutMe .screen .typewriting .ligne-1 {
  animation: type 5s steps(40, end) 5s forwards, blinking 0.5s 15 backwards;
  -webkit-animation: type 5s steps(40, end) 5s forwards, blinking 0.5s 15 backwards;
}
.about .aboutMe .screen .typewriting .ligne-2 {
  animation: type 5s steps(40, end) 10s forwards, blinking 0.5s 25 backwards;
  -webkit-animation: type 5s steps(40, end) 10s forwards, blinking 0.5s 25 backwards;
}
.about .aboutMe .screen .typewriting .ligne-3 {
  animation: type 5s steps(40, end) 15s forwards, blinking 0.5s 39 backwards;
  -webkit-animation: type 5s steps(40, end) 15s forwards, blinking 0.5s 39 backwards;
}
.about .aboutMe .screen .typewriting .ligne-4 {
  animation: type 5s steps(40, end) 20s forwards, blinking 0.5s 49 backwards;
  -webkit-animation: type 5s steps(40, end) 20s forwards, blinking 0.5s 49 backwards;
}
.about .aboutMe .screen .typewriting button {
  margin-top: 0.5%;
  font-family: Audiowide;
  font-size: 1.3vw;
  color: white;
  visibility: hidden;
  animation: type 5s steps(40, end) 25s forwards;
  -webkit-animation: type 5s steps(40, end) 25s forwards;
}
@keyframes type {
  from {
    width: 0;
    visibility: hidden;
  }
  to {
    width: 100%;
    visibility: visible;
  }
}
@keyframes blinking {
  from {
    border-color: transparent;
  }
  50% {
    border-color: orange;
  }
  to {
    border-color: transparent;
  }
}
.about .aboutMe .screen-below {
  margin-right: 25%;
  margin-left: 25%;
  padding: 1%;
  background-color: #b9bdbe;
  border: 5px solid #b9bdbe;
  border-radius: 0 0 15px 15px;
  -webkit-border-radius: 0 0 15px 15px;
  -moz-border-radius: 0 0 15px 15px;
  -ms-border-radius: 0 0 15px 15px;
  -o-border-radius: 0 0 15px 15px;
  box-shadow: rgba(0, 0, 0, 0.3) 0px 19px 38px, rgba(0, 0, 0, 0.22) 0px 19px 12px;
}
.about .aboutMe .screen-leg {
  position: relative;
  perspective: 80px;
}
.about .aboutMe .screen-leg .leg-1 {
  position: absolute;
  right: 46%;
  left: 46%;
  top: 10%;
  padding: 1%;
  background-color: #b9bdbe;
  border-bottom: 1px solid linear-gradient(grey, black, grey);
  transform-style: preserve-3d;
  transform: rotateX(15deg);
  -webkit-transform: rotateX(15deg);
  -moz-transform: rotateX(15deg);
  -ms-transform: rotateX(15deg);
  -o-transform: rotateX(15deg);
}
.about .aboutMe .screen-leg .leg-2 {
  position: absolute;
  right: 45%;
  left: 45%;
  top: 70%;
  padding: 1.5%;
  background-color: #b9bdbe;
  border-top: 1px solid gray;
  border-bottom: 3px solid lightgray;
  border-radius: 0 0 15px 15px;
  -webkit-border-radius: 0 0 15px 15px;
  -moz-border-radius: 0 0 15px 15px;
  -ms-border-radius: 0 0 15px 15px;
  -o-border-radius: 0 0 15px 15px;
  transform-style: preserve-3d;
  transform: rotateX(60deg);
  -webkit-transform: rotateX(60deg);
  -moz-transform: rotateX(60deg);
  -ms-transform: rotateX(60deg);
  -o-transform: rotateX(60deg);
  box-shadow: rgba(0, 0, 0, 0.55) 0px 4px 8px;
}
.about .aboutMe .keyboard {
  position: relative;
  perspective: 80px;
}
.about .aboutMe .keyboard .clavier {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  width: 30%;
  margin-top: 3.5%;
  margin-right: auto;
  margin-left: auto;
  padding: 0.3%;
  background-color: #b9bdbe;
  border: 1px solid gray;
  border-bottom: 4px solid gray;
  border-radius: 10px;
  -webkit-border-radius: 10px;
  -moz-border-radius: 10px;
  -ms-border-radius: 10px;
  -o-border-radius: 10px;
  transform-style: preserve-3d;
  transform: rotateX(15deg);
  -webkit-transform: rotateX(15deg);
  -moz-transform: rotateX(15deg);
  -ms-transform: rotateX(15deg);
  -o-transform: rotateX(15deg);
}
.about .aboutMe .keyboard .clavier .digits, .about .aboutMe .keyboard .clavier .letters {
  border: 1px solid gray;
  border-bottom: 4px solid gray;
  width: 7%;
  height: 7%;
  margin: 1%;
  margin-bottom: 0.3%;
  text-align: center;
}
.about .aboutMe .keyboard .clavier #letter8 {
  animation: click 0.29s ease 5s 1 normal backwards;
  -webkit-animation: click 0.29s ease 5s 1 normal backwards;
}
.about .aboutMe .keyboard .clavier #letter9 {
  animation: click 0.29s ease 5.29s 1 normal backwards;
  -webkit-animation: click 0.29s ease 5.29s 1 normal backwards;
}
.about .aboutMe .keyboard .clavier #letter13 {
  animation: click 0.29s ease 5.58s 1 normal backwards;
  -webkit-animation: click 0.29s ease 5.58s 1 normal backwards;
}
.about .aboutMe .keyboard .clavier #letter25 {
  animation: click 0.29s ease 5.87s 1 normal backwards;
  -webkit-animation: click 0.29s ease 5.87s 1 normal backwards;
}
.about .aboutMe .keyboard .clavier #letter14 {
  animation: click 0.29s ease 6.16s 1 normal backwards;
  -webkit-animation: click 0.29s ease 6.16s 1 normal backwards;
}
.about .aboutMe .keyboard .clavier #letter1 {
  animation: click 0.29s ease 6.45s 1 normal backwards;
  -webkit-animation: click 0.29s ease 6.45s 1 normal backwards;
}
.about .aboutMe .keyboard .clavier #letter13 {
  animation: click 0.29s ease 6.74s 1 normal backwards;
  -webkit-animation: click 0.29s ease 6.74s 1 normal backwards;
}
.about .aboutMe .keyboard .clavier #letter5 {
  animation: click 0.29s ease 7.03s 1 normal backwards;
  -webkit-animation: click 0.29s ease 7.03s 1 normal backwards;
}
.about .aboutMe .keyboard .clavier #letter9 {
  animation: click 0.29s ease 7.32s 1 normal backwards;
  -webkit-animation: click 0.29s ease 7.32s 1 normal backwards;
}
.about .aboutMe .keyboard .clavier #letter19 {
  animation: click 0.29s ease 7.61s 1 normal backwards;
  -webkit-animation: click 0.29s ease 7.61s 1 normal backwards;
}
.about .aboutMe .keyboard .clavier #letter14 {
  animation: click 0.29s ease 7.9s 1 normal backwards;
  -webkit-animation: click 0.29s ease 7.9s 1 normal backwards;
}
.about .aboutMe .keyboard .clavier #letter9 {
  animation: click 0.29s ease 8.19s 1 normal backwards;
  -webkit-animation: click 0.29s ease 8.19s 1 normal backwards;
}
.about .aboutMe .keyboard .clavier #letter10 {
  animation: click 0.29s ease 8.48s 1 normal backwards;
  -webkit-animation: click 0.29s ease 8.48s 1 normal backwards;
}
.about .aboutMe .keyboard .clavier #letter1 {
  animation: click 0.29s ease 8.77s 1 normal backwards;
  -webkit-animation: click 0.29s ease 8.77s 1 normal backwards;
}
.about .aboutMe .keyboard .clavier #letter20 {
  animation: click 0.29s ease 9.06s 1 normal backwards;
  -webkit-animation: click 0.29s ease 9.06s 1 normal backwards;
}
.about .aboutMe .keyboard .clavier #letter9 {
  animation: click 0.29s ease 9.35s 1 normal backwards;
  -webkit-animation: click 0.29s ease 9.35s 1 normal backwards;
}
.about .aboutMe .keyboard .clavier #letter1 {
  animation: click 0.29s ease 9.64s 1 normal backwards;
  -webkit-animation: click 0.29s ease 9.64s 1 normal backwards;
}
.about .aboutMe .keyboard .clavier #letter13 {
  animation: click 0.29s ease 9.93s 1 normal backwards;
  -webkit-animation: click 0.29s ease 9.93s 1 normal backwards;
}
.about .aboutMe .keyboard .clavier #letter1 {
  animation: click 0.29s ease 10.22s 1 normal backwards;
  -webkit-animation: click 0.29s ease 10.22s 1 normal backwards;
}
.about .aboutMe .keyboard .clavier #letter23 {
  animation: click 0.29s ease 10.51s 1 normal backwards;
  -webkit-animation: click 0.29s ease 10.51s 1 normal backwards;
}
.about .aboutMe .keyboard .clavier #letter5 {
  animation: click 0.29s ease 10.8s 1 normal backwards;
  -webkit-animation: click 0.29s ease 10.8s 1 normal backwards;
}
.about .aboutMe .keyboard .clavier #letter2 {
  animation: click 0.29s ease 11.09s 1 normal backwards;
  -webkit-animation: click 0.29s ease 11.09s 1 normal backwards;
}
.about .aboutMe .keyboard .clavier #letter4 {
  animation: click 0.29s ease 11.38s 1 normal backwards;
  -webkit-animation: click 0.29s ease 11.38s 1 normal backwards;
}
.about .aboutMe .keyboard .clavier #letter5 {
  animation: click 0.29s ease 11.67s 1 normal backwards;
  -webkit-animation: click 0.29s ease 11.67s 1 normal backwards;
}
.about .aboutMe .keyboard .clavier #letter22 {
  animation: click 0.29s ease 11.96s 1 normal backwards;
  -webkit-animation: click 0.29s ease 11.96s 1 normal backwards;
}
.about .aboutMe .keyboard .clavier #letter5 {
  animation: click 0.29s ease 12.25s 1 normal backwards;
  -webkit-animation: click 0.29s ease 12.25s 1 normal backwards;
}
.about .aboutMe .keyboard .clavier #letter12 {
  animation: click 0.29s ease 12.54s 1 normal backwards;
  -webkit-animation: click 0.29s ease 12.54s 1 normal backwards;
}
.about .aboutMe .keyboard .clavier #letter15 {
  animation: click 0.29s ease 12.83s 1 normal backwards;
  -webkit-animation: click 0.29s ease 12.83s 1 normal backwards;
}
.about .aboutMe .keyboard .clavier #letter16 {
  animation: click 0.29s ease 13.12s 1 normal backwards;
  -webkit-animation: click 0.29s ease 13.12s 1 normal backwards;
}
.about .aboutMe .keyboard .clavier #letter16 {
  animation: click 0.29s ease 13.41s 1 normal backwards;
  -webkit-animation: click 0.29s ease 13.41s 1 normal backwards;
}
.about .aboutMe .keyboard .clavier #letter5 {
  animation: click 0.29s ease 13.7s 1 normal backwards;
  -webkit-animation: click 0.29s ease 13.7s 1 normal backwards;
}
.about .aboutMe .keyboard .clavier #letter18 {
  animation: click 0.29s ease 13.99s 1 normal backwards;
  -webkit-animation: click 0.29s ease 13.99s 1 normal backwards;
}
.about .aboutMe .keyboard .clavier #letter23 {
  animation: click 0.29s ease 14.28s 1 normal backwards;
  -webkit-animation: click 0.29s ease 14.28s 1 normal backwards;
}
.about .aboutMe .keyboard .clavier #letter1 {
  animation: click 0.29s ease 14.57s 1 normal backwards;
  -webkit-animation: click 0.29s ease 14.57s 1 normal backwards;
}
.about .aboutMe .keyboard .clavier #letter14 {
  animation: click 0.29s ease 14.86s 1 normal backwards;
  -webkit-animation: click 0.29s ease 14.86s 1 normal backwards;
}
.about .aboutMe .keyboard .clavier #letter20 {
  animation: click 0.29s ease 15.15s 1 normal backwards;
  -webkit-animation: click 0.29s ease 15.15s 1 normal backwards;
}
.about .aboutMe .keyboard .clavier #letter20 {
  animation: click 0.29s ease 15.44s 1 normal backwards;
  -webkit-animation: click 0.29s ease 15.44s 1 normal backwards;
}
.about .aboutMe .keyboard .clavier #letter15 {
  animation: click 0.29s ease 15.73s 1 normal backwards;
  -webkit-animation: click 0.29s ease 15.73s 1 normal backwards;
}
.about .aboutMe .keyboard .clavier #letter11 {
  animation: click 0.29s ease 16.02s 1 normal backwards;
  -webkit-animation: click 0.29s ease 16.02s 1 normal backwards;
}
.about .aboutMe .keyboard .clavier #letter14 {
  animation: click 0.29s ease 16.31s 1 normal backwards;
  -webkit-animation: click 0.29s ease 16.31s 1 normal backwards;
}
.about .aboutMe .keyboard .clavier #letter15 {
  animation: click 0.29s ease 16.6s 1 normal backwards;
  -webkit-animation: click 0.29s ease 16.6s 1 normal backwards;
}
.about .aboutMe .keyboard .clavier #letter23 {
  animation: click 0.29s ease 16.89s 1 normal backwards;
  -webkit-animation: click 0.29s ease 16.89s 1 normal backwards;
}
.about .aboutMe .keyboard .clavier #letter13 {
  animation: click 0.29s ease 17.18s 1 normal backwards;
  -webkit-animation: click 0.29s ease 17.18s 1 normal backwards;
}
.about .aboutMe .keyboard .clavier #letter15 {
  animation: click 0.29s ease 17.47s 1 normal backwards;
  -webkit-animation: click 0.29s ease 17.47s 1 normal backwards;
}
.about .aboutMe .keyboard .clavier #letter18 {
  animation: click 0.29s ease 17.76s 1 normal backwards;
  -webkit-animation: click 0.29s ease 17.76s 1 normal backwards;
}
.about .aboutMe .keyboard .clavier #letter5 {
  animation: click 0.29s ease 18.05s 1 normal backwards;
  -webkit-animation: click 0.29s ease 18.05s 1 normal backwards;
}
.about .aboutMe .keyboard .clavier #letter1 {
  animation: click 0.29s ease 18.34s 1 normal backwards;
  -webkit-animation: click 0.29s ease 18.34s 1 normal backwards;
}
.about .aboutMe .keyboard .clavier #letter2 {
  animation: click 0.29s ease 18.63s 1 normal backwards;
  -webkit-animation: click 0.29s ease 18.63s 1 normal backwards;
}
.about .aboutMe .keyboard .clavier #letter15 {
  animation: click 0.29s ease 18.92s 1 normal backwards;
  -webkit-animation: click 0.29s ease 18.92s 1 normal backwards;
}
.about .aboutMe .keyboard .clavier #letter21 {
  animation: click 0.29s ease 19.21s 1 normal backwards;
  -webkit-animation: click 0.29s ease 19.21s 1 normal backwards;
}
.about .aboutMe .keyboard .clavier #letter20 {
  animation: click 0.29s ease 19.5s 1 normal backwards;
  -webkit-animation: click 0.29s ease 19.5s 1 normal backwards;
}
.about .aboutMe .keyboard .clavier #letter13 {
  animation: click 0.29s ease 19.79s 1 normal backwards;
  -webkit-animation: click 0.29s ease 19.79s 1 normal backwards;
}
.about .aboutMe .keyboard .clavier #letter5 {
  animation: click 0.29s ease 20.08s 1 normal backwards;
  -webkit-animation: click 0.29s ease 20.08s 1 normal backwards;
}
.about .aboutMe .keyboard .clavier #letter4 {
  animation: click 0.29s ease 20.37s 1 normal backwards;
  -webkit-animation: click 0.29s ease 20.37s 1 normal backwards;
}
.about .aboutMe .keyboard .clavier #letter15 {
  animation: click 0.29s ease 20.66s 1 normal backwards;
  -webkit-animation: click 0.29s ease 20.66s 1 normal backwards;
}
.about .aboutMe .keyboard .clavier #letter23 {
  animation: click 0.29s ease 20.95s 1 normal backwards;
  -webkit-animation: click 0.29s ease 20.95s 1 normal backwards;
}
.about .aboutMe .keyboard .clavier #letter14 {
  animation: click 0.29s ease 21.24s 1 normal backwards;
  -webkit-animation: click 0.29s ease 21.24s 1 normal backwards;
}
.about .aboutMe .keyboard .clavier #letter12 {
  animation: click 0.29s ease 21.53s 1 normal backwards;
  -webkit-animation: click 0.29s ease 21.53s 1 normal backwards;
}
.about .aboutMe .keyboard .clavier #letter15 {
  animation: click 0.29s ease 21.82s 1 normal backwards;
  -webkit-animation: click 0.29s ease 21.82s 1 normal backwards;
}
.about .aboutMe .keyboard .clavier #letter1 {
  animation: click 0.29s ease 22.11s 1 normal backwards;
  -webkit-animation: click 0.29s ease 22.11s 1 normal backwards;
}
.about .aboutMe .keyboard .clavier #letter4 {
  animation: click 0.29s ease 22.4s 1 normal backwards;
  -webkit-animation: click 0.29s ease 22.4s 1 normal backwards;
}
.about .aboutMe .keyboard .clavier #letter13 {
  animation: click 0.29s ease 22.69s 1 normal backwards;
  -webkit-animation: click 0.29s ease 22.69s 1 normal backwards;
}
.about .aboutMe .keyboard .clavier #letter25 {
  animation: click 0.29s ease 22.98s 1 normal backwards;
  -webkit-animation: click 0.29s ease 22.98s 1 normal backwards;
}
.about .aboutMe .keyboard .clavier #letter3 {
  animation: click 0.29s ease 23.27s 1 normal backwards;
  -webkit-animation: click 0.29s ease 23.27s 1 normal backwards;
}
.about .aboutMe .keyboard .clavier #letter22 {
  animation: click 0.29s ease 23.56s 1 normal backwards;
  -webkit-animation: click 0.29s ease 23.56s 1 normal backwards;
}
.about .aboutMe .keyboard .clavier #letter2 {
  animation: click 0.29s ease 23.85s 1 normal backwards;
  -webkit-animation: click 0.29s ease 23.85s 1 normal backwards;
}
.about .aboutMe .keyboard .clavier #letter5 {
  animation: click 0.29s ease 24.14s 1 normal backwards;
  -webkit-animation: click 0.29s ease 24.14s 1 normal backwards;
}
.about .aboutMe .keyboard .clavier #letter12 {
  animation: click 0.29s ease 24.43s 1 normal backwards;
  -webkit-animation: click 0.29s ease 24.43s 1 normal backwards;
}
.about .aboutMe .keyboard .clavier #letter15 {
  animation: click 0.29s ease 24.72s 1 normal backwards;
  -webkit-animation: click 0.29s ease 24.72s 1 normal backwards;
}
.about .aboutMe .keyboard .clavier #letter23 {
  animation: click 0.29s ease 25.01s 1 normal backwards;
  -webkit-animation: click 0.29s ease 25.01s 1 normal backwards;
}
@keyframes click {
  from {
    border-bottom: 4px solid gray;
  }
  to {
    border-bottom: 0.5px solid gray;
    background-color: blue;
  }
}

.contact {
  margin: 0%;
  padding: 0%;
  background-image: radial-gradient(circle 1224px at 10.6% 8.8%, rgb(255, 255, 255) 0%, rgb(153, 202, 251) 100.2%);
  background-size: cover;
  background-repeat: no-repeat;
}
.contact .contactForm {
  position: relative;
  margin-left: 1%;
}
.contact .contactForm form {
  margin: 10% 20%;
}
.contact .contactForm form h2 {
  margin-bottom: 2%;
}
.contact .contactForm form input, .contact .contactForm form textarea, .contact .contactForm form button {
  padding: 1%;
}
.contact .contactForm form textarea {
  resize: none;
}

@media only screen and (max-width: 1600px) {
  body .pageProjects .typewriter {
    width: 55%;
    margin-left: 8%;
    margin-bottom: 2%;
  }
  body .pageProjects .carousel {
    width: 55%;
    margin-left: 8%;
  }
  body .pageProjects .carousel .projects {
    font-size: 1.2vw;
  }
}
@media only screen and (max-width: 1400px) {
  body {
    background-image: url(/build/images/home1.4d97da61.jpg);
    background-size: cover;
    background-repeat: no-repeat;
  }
  body .icons .fab {
    background-color: white;
  }
  body .nav-bar #navMenu li a {
    font-size: 1.7vw;
  }
  body .home {
    top: 20%;
  }
  body .home .doors {
    width: 30%;
    margin-left: 35%;
  }
  body .home .doors .welcomeMessage {
    bottom: 20%;
  }
  body .home .wrapper {
    width: 54%;
    margin-left: 22%;
    color: cadetblue;
    font-size: 1.4rem;
  }
  body .pageProjects .typewriter {
    width: 65%;
  }
  body .pageProjects .typewriter h4 {
    font-size: 2vw;
    color: lightseagreen;
  }
  body .pageProjects .carousel {
    width: 65%;
  }
  body .pageProjects .carousel .carousel-indicators {
    filter: invert(0%);
    -webkit-filter: invert(0%);
  }
  body .pageProjects .carousel .projects {
    color: lightseagreen;
    font-size: 1.5vw;
  }
  body .pageProjects .carousel .projects .project .projectName {
    color: lightseagreen;
  }
}
@media only screen and (max-width: 1200px) {
  body .nav-bar #navMenu li a {
    font-size: 2vw;
  }
  body .pageProjects .typewriter {
    width: 75%;
  }
  body .pageProjects .typewriter h4 {
    font-size: 2.3vw;
  }
  body .pageProjects .carousel {
    width: 75%;
  }
  body .pageProjects .carousel .projects {
    font-size: 1.8vw;
  }
}
@media only screen and (max-width: 1000px) {
  body .nav-bar #navMenu li a {
    font-size: 2.5vw;
  }
  body .home .doors {
    width: 40%;
  }
  body .home .doors .welcomeMessage {
    font-size: 3vw;
  }
  body .home .wrapper {
    margin-top: 2%;
    width: 80%;
    margin-left: 15%;
    font-size: 1.4rem;
  }
  body .pageProjects .typewriter {
    width: 85%;
    margin-bottom: 3%;
  }
  body .pageProjects .typewriter h4 {
    font-size: 2.5vw;
  }
  body .pageProjects .carousel {
    width: 85%;
  }
  body .pageProjects .carousel .projects {
    font-size: 2vw;
  }
  body .pageProjects .carousel .projects .project .projectName {
    font-size: 2.5vw;
  }
}
@media only screen and (max-width: 800px) {
  body .nav-bar #navMenu {
    display: block;
    margin-top: 5%;
  }
  body .nav-bar #navMenu li:not(:first-child) {
    width: 30%;
    visibility: hidden;
  }
  body .nav-bar #navMenu li:first-child {
    position: absolute;
    left: 70%;
    top: 2%;
  }
  body .nav-bar #navMenu li:hover a {
    background-color: blue;
  }
  body .nav-bar #menuHamburger {
    visibility: visible;
  }
  body .home {
    top: 10%;
  }
  body .pageProjects {
    top: 2%;
  }
  body .pageProjects .typewriter {
    width: 90%;
  }
  body .pageProjects .typewriter h4 {
    font-size: 2.9vw;
  }
  body .pageProjects .carousel {
    width: 90%;
  }
  body .pageProjects .carousel .projects {
    font-size: 2.3vw;
  }
  body .pageProjects .carousel .projects .project .projectName {
    font-size: 2.7vw;
  }
}
@media only screen and (max-width: 700px) {
  body {
    background-image: url(/build/images/home2.f96bd43b.jpg);
    background-size: cover;
    background-repeat: no-repeat;
  }
  body .nav-bar #navMenu li:hover a {
    background-image: linear-gradient(to right top, #093241, #00616f, #00937b, #00c361);
  }
  body .nav-bar #navMenu li:not(:first-child) {
    background-color: black;
  }
  body .home .doors .welcomeMessage {
    bottom: 10%;
  }
  body .home .doors .welcomeMessage .message1, body .home .doors .welcomeMessage .message2 {
    text-shadow: 0 1px 0 #ccc, 0 2px 0 #c9c9c9, 0 3px 0 #bbb, 0 4px 0 #b9b9b9, 0 5px 0 #aaa, 0 6px 1px rgba(0, 0, 0, 0.1), 0 0 5px rgba(0, 0, 0, 0.1), 0 1px 3px rgba(0, 0, 0, 0.3), 0 3px 5px rgba(0, 0, 0, 0.2), 0 5px 10px rgba(0, 0, 0, 0.25), 0 10px 10px rgba(0, 0, 0, 0.2), 0 20px 20px rgba(0, 0, 0, 0.15);
  }
}
@media only screen and (max-width: 600px) {
  body {
    background-image: url(/build/images/home3.69633926.jpg);
    background-size: cover;
    background-repeat: no-repeat;
  }
  body .nav-bar #navMenu li:hover a {
    background: rgb(2, 0, 36);
    background: linear-gradient(90deg, rgb(2, 0, 36) 0%, rgb(46, 44, 77) 47%);
  }
  body .pageProjects .carousel .projects {
    font-size: 2.5vw;
  }
}

/*# sourceMappingURL=data:application/json;charset=utf-8;base64,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RUk7RUFDQTtBQW1DeEI7QUF0Q29CO0VBRUk7RUFDQTtBQXVDeEI7QUExQ29CO0VBRUk7RUFDQTtBQTJDeEI7QUE5Q29CO0VBRUk7RUFDQTtBQStDeEI7QUFsRG9CO0VBRUk7RUFDQTtBQW1EeEI7QUF0RG9CO0VBRUk7RUFDQTtBQXVEeEI7QUExRG9CO0VBRUk7RUFDQTtBQTJEeEI7QUE5RG9CO0VBRUk7RUFDQTtBQStEeEI7QUFsRW9CO0VBRUk7RUFDQTtBQW1FeEI7QUF0RW9CO0VBRUk7RUFDQTtBQXVFeEI7QUExRW9CO0VBRUk7RUFDQTtBQTJFeEI7QUE5RW9CO0VBRUk7RUFDQTtBQStFeEI7QUFsRm9CO0VBRUk7RUFDQTtBQW1GeEI7QUF0Rm9CO0VBRUk7RUFDQTtBQXVGeEI7QUExRm9CO0VBRUk7RUFDQTtBQTJGeEI7QUE5Rm9CO0VBRUk7RUFDQTtBQStGeEI7QUFsR29CO0VBRUk7RUFDQTtBQW1HeEI7QUF0R29CO0VBRUk7RUFDQTtBQXVHeEI7QUExR29CO0VBRUk7RUFDQTtBQTJHeEI7QUE5R29CO0VBRUk7RUFDQTtBQStHeEI7QUFsSG9CO0VBRUk7RUFDQTtBQW1IeEI7QUF0SG9CO0VBRUk7RUFDQTtBQXVIeEI7QUExSG9CO0VBRUk7RUFDQTtBQTJIeEI7QUE5SG9CO0VBRUk7RUFDQTtBQStIeEI7QUFsSW9CO0VBRUk7RUFDQTtBQW1JeEI7QUF0SW9CO0VBRUk7RUFDQTtBQXVJeEI7QUExSW9CO0VBRUk7RUFDQTtBQTJJeEI7QUE5SW9CO0VBRUk7RUFDQTtBQStJeEI7QUFsSm9CO0VBRUk7RUFDQTtBQW1KeEI7QUF0Sm9CO0VBRUk7RUFDQTtBQXVKeEI7QUExSm9CO0VBRUk7RUFDQTtBQTJKeEI7QUE5Sm9CO0VBRUk7RUFDQTtBQStKeEI7QUFsS29CO0VBRUk7RUFDQTtBQW1LeEI7QUF0S29CO0VBRUk7RUFDQTtBQXVLeEI7QUExS29CO0VBRUk7RUFDQTtBQTJLeEI7QUE5S29CO0VBRUk7RUFDQTtBQStLeEI7QUFsTG9CO0VBRUk7RUFDQTtBQW1MeEI7QUF0TG9CO0VBRUk7RUFDQTtBQXVM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LCBodG1sIFxue1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBtYXJnaW46IDAlO1xuICAgIHBhZGRpbmc6IDAlO1xufVxuXG5ib2R5IFxue1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybChcIi9wdWJsaWMvaW1hZ2VzL2hvbWUuanBnXCIpO1xuICAgIGJhY2tncm91bmQtc2l6ZTogY292ZXI7XG4gICAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcblxuICAgIC8vIGxpbmtlZGluLCBnaXRodWIgYW5kIHdoYXRzYXBwIGljb25zIGZvciBhbGwgcGFnZXNcbiAgICBkaXYuaWNvbnMgXG4gICAge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGJvdHRvbTogMjAlO1xuXG4gICAgICAgIGEge1xuICAgICAgICAgICAgY29sb3I6IDA7XG4gICAgICAgIH1cblxuICAgICAgICAuZmFiIHtcbiAgICAgICAgICAgIHdpZHRoOiA0dnc7XG4gICAgICAgICAgICBtYXJnaW4tdG9wOiAydmg7XG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiAxMHB4O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gdGVtcGxhdGUgYmFzZS5odG1sLnR3aWdcbiAgICBuYXYubmF2LWJhciBcbiAgICB7XG4gICAgICAgIHVsI25hdk1lbnUgXG4gICAgICAgIHtcbiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICAgICAgXG4gICAgICAgICAgICBsaSBcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAmOm5vdCg6Zmlyc3QtY2hpbGQpIHtcbiAgICAgICAgICAgICAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgICAgICAgICAgICAgYW5pbWF0aW9uOiBuYXZsaW5rIDcwMG1zIGVhc2UtaW4gMSBub3JtYWwgZm9yd2FyZHMgO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIEBrZXlmcmFtZXMgbmF2bGluayB7XG4gICAgICAgICAgICAgICAgICAgIDAlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDkwJSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxLjMpOyBcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAxMDAlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSAgICBcblxuICAgICAgICAgICAgICAgICY6Zmlyc3QtY2hpbGQge1xuICAgICAgICAgICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgYSB7XG4gICAgICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMS40dnc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIC5sb2dvIHtcbiAgICAgICAgICAgICAgICAgICAgbWF4LXdpZHRoOiA0MCU7XG4gICAgICAgICAgICAgICAgICAgIGhlaWdodDogYXV0bztcbiAgICAgICAgICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMjAlO1xuICAgICAgICAgICAgICAgICAgICBhbmltYXRpb246IGxvZ28gMTJzIGxpbmVhciAycyBpbmZpbml0ZSBhbHRlcm5hdGUgbm9uZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgQGtleWZyYW1lcyBsb2dvIHtcbiAgICAgICAgICAgICAgICAgICAgMCUgeyB0cmFuc2Zvcm06IHJvdGF0ZVkoMGRlZykgcm90YXRlWCgwZGVnKTsgIH1cbiAgICAgICAgICAgICAgICAgICAgMjUlIHt0cmFuc2Zvcm06IHJvdGF0ZVkoMzYwZGVnKSByb3RhdGVYKDBkZWcpO31cbiAgICAgICAgICAgICAgICAgICAgNTAlIHt0cmFuc2Zvcm06IHJvdGF0ZVkoMzYwZGVnKSByb3RhdGVYKDM2MGRlZyk7fVxuICAgICAgICAgICAgICAgICAgICAxMDAlIHt0cmFuc2Zvcm06IHJvdGF0ZVkoMGRlZykgcm90YXRlWCgwZGVnKTt9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLmZsYWcge1xuICAgICAgICAgICAgICAgICAgICBtYXgtd2lkdGg6IDQwJTtcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBhdXRvOyAgICBcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDE1JTsgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgICNtZW51SGFtYnVyZ2VyIHtcbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgIGNvbG9yOiB3aGl0ZTtcbiAgICAgICAgICAgIHRvcDogMSU7XG4gICAgICAgICAgICBsZWZ0OiAxJTtcbiAgICAgICAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcblxuICAgICAgICAgICAgaSB7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiA3dnc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAjbWVudUhhbWJ1cmdlcjpob3ZlciB7XG4gICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgIH1cbiAgICBcblxuICAgICAgICBhIHtcbiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiBTaWxrc2NyZWVuO1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgICAgICAgICBmb250LXNpemU6IGxhcmdlcjtcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgbGk6bm90KDpsYXN0LWNoaWxkKTpob3ZlciBhIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGdyZXk7XG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiAyMHB4O1xuICAgICAgICAgICAgY29sb3I6IHdoaXRlO1xuICAgICAgICAgICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAyMHB4O1xuICAgICAgICAgICAgLW1vei1ib3JkZXItcmFkaXVzOiAyMHB4O1xuICAgICAgICAgICAgLW1zLWJvcmRlci1yYWRpdXM6IDIwcHg7XG4gICAgICAgICAgICAtby1ib3JkZXItcmFkaXVzOiAyMHB4O1xuICAgICAgICB9XG4gICAgfSAgICBcblxuICAgIC8vIHRlbXBsYXRlIGluZGV4Lmh0bWwudHdpZ1xuICAgIGRpdi5ob21lIFxuICAgIHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICB0b3A6IDE1JTtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDElO1xuXG4gICAgICAgIGRpdi5kb29yc1xuICAgICAgICB7XG4gICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBhdXRvIGF1dG87XG4gICAgICAgICAgICB3aWR0aDogMjUlO1xuICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDIzJTtcbiAgICAgICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybChcIi9wdWJsaWMvaW1hZ2VzL2VpZmZlbGRheS5qcGdcIik7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyO1xuICAgICAgICAgICAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgICAgICAgICAgIGNvbG9yOiBibHVlO1xuICAgICAgICAgICAgYW5pbWF0aW9uOiBkb29ycyAxMHMgbGluZWFyIDEycyBpbmZpbml0ZSBhbHRlcm5hdGUgZm9yd2FyZHM7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIEBrZXlmcmFtZXMgZG9vcnMge1xuICAgICAgICAgICAgICAgIGZyb20ge2JhY2tncm91bmQtaW1hZ2U6IHVybChcIi9wdWJsaWMvaW1hZ2VzL2VpZmZlbGRheS5qcGdcIik7IGNvbG9yOiBibHVlO31cbiAgICAgICAgICAgICAgICB0byB7YmFja2dyb3VuZC1pbWFnZTogdXJsKFwiL3B1YmxpYy9pbWFnZXMvZWlmZmVsbW9vbi5qcGdcIik7IGNvbG9yOiB3aGl0ZTt9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIC5kb29yIHtcbiAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IGF1dG87XG4gICAgICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgZ3JheTtcbiAgICAgICAgICAgICAgICBib3gtc2hhZG93OiAxMHB4IDEwcHggOHB4IDAgcmdiYSgwLCAwLCAwLCAwLjQpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAuZG9vcjEge1xuICAgICAgICAgICAgICAgIGFuaW1hdGlvbjogZG9vcjEgNXMgbGluZWFyIDEgbm9ybWFsIGZvcndhcmRzO1xuICAgICAgICAgICAgICAgIC13ZWJraXQtYW5pbWF0aW9uOiBkb29yMSA1cyBsaW5lYXIgMSBub3JtYWwgZm9yd2FyZHM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIEBrZXlmcmFtZXMgZG9vcjEge1xuICAgICAgICAgICAgICAgIGZyb20geyB0cmFuc2Zvcm06IHBlcnNwZWN0aXZlKDUwMHB4KSByb3RhdGVZKDBkZWcpOyB0cmFuc2Zvcm0tb3JpZ2luOiAwJSAwJTsgLXdlYmtpdC10cmFuc2Zvcm06IHBlcnNwZWN0aXZlKDUwMHB4KSByb3RhdGVZKDBkZWcpOyAtbW96LXRyYW5zZm9ybTogcGVyc3BlY3RpdmUoNTAwcHgpIHJvdGF0ZVkoMGRlZyk7IC1tcy10cmFuc2Zvcm06IHBlcnNwZWN0aXZlKDUwMHB4KSByb3RhdGVZKDBkZWcpOyAtby10cmFuc2Zvcm06IHBlcnNwZWN0aXZlKDUwMHB4KSByb3RhdGVZKDBkZWcpOyB9XG4gICAgICAgICAgICAgICAgdG8geyB0cmFuc2Zvcm06IHBlcnNwZWN0aXZlKDUwMHB4KSByb3RhdGVZKC0xNzBkZWcpOyB0cmFuc2Zvcm0tb3JpZ2luOiAwJSAwJTsgLXdlYmtpdC10cmFuc2Zvcm06IHBlcnNwZWN0aXZlKDUwMHB4KSByb3RhdGVZKC0xNzBkZWcpOyAtbW96LXRyYW5zZm9ybTogcGVyc3BlY3RpdmUoNTAwcHgpIHJvdGF0ZVkoLTE3MGRlZyk7IC1tcy10cmFuc2Zvcm06IHBlcnNwZWN0aXZlKDUwMHB4KSByb3RhdGVZKC0xNzBkZWcpOyAtby10cmFuc2Zvcm06IHBlcnNwZWN0aXZlKDUwMHB4KSByb3RhdGVZKC0xNzBkZWcpOyB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5kb29yMiB7XG4gICAgICAgICAgICAgICAgYW5pbWF0aW9uOiBkb29yMiA1cyBsaW5lYXIgMSBub3JtYWwgZm9yd2FyZHM7XG4gICAgICAgICAgICAgICAgLXdlYmtpdC1hbmltYXRpb246IGRvb3IyIDVzIGxpbmVhciAxIG5vcm1hbCBmb3J3YXJkcztcbiAgICAgICAgICAgIH1cbiAgICAgXG4gICAgICAgICAgICBAa2V5ZnJhbWVzIGRvb3IyIHtcbiAgICAgICAgICAgICAgICAgZnJvbSB7IHRyYW5zZm9ybTogcGVyc3BlY3RpdmUoNTAwcHgpIHJvdGF0ZVkoMGRlZyk7IHRyYW5zZm9ybS1vcmlnaW46IDEwMCUgMCU7IC13ZWJraXQtdHJhbnNmb3JtOiBwZXJzcGVjdGl2ZSg1MDBweCkgcm90YXRlWSgwZGVnKTsgLW1vei10cmFuc2Zvcm06IHBlcnNwZWN0aXZlKDUwMHB4KSByb3RhdGVZKDBkZWcpOyAtbXMtdHJhbnNmb3JtOiBwZXJzcGVjdGl2ZSg1MDBweCkgcm90YXRlWSgwZGVnKTsgLW8tdHJhbnNmb3JtOiBwZXJzcGVjdGl2ZSg1MDBweCkgcm90YXRlWSgwZGVnKTsgfVxuICAgICAgICAgICAgICAgICB0byB7IHRyYW5zZm9ybTogcGVyc3BlY3RpdmUoNTAwcHgpIHJvdGF0ZVkoMTcwZGVnKTsgdHJhbnNmb3JtLW9yaWdpbjogMTAwJSAwJTsgLXdlYmtpdC10cmFuc2Zvcm06IHBlcnNwZWN0aXZlKDUwMHB4KSByb3RhdGVZKDE3MGRlZyk7IC1tb3otdHJhbnNmb3JtOiBwZXJzcGVjdGl2ZSg1MDBweCkgcm90YXRlWSgxNzBkZWcpOyAtbXMtdHJhbnNmb3JtOiBwZXJzcGVjdGl2ZSg1MDBweCkgcm90YXRlWSgxNzBkZWcpOyAtby10cmFuc2Zvcm06IHBlcnNwZWN0aXZlKDUwMHB4KSByb3RhdGVZKDE3MGRlZyk7IH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLm15cGhvdG8ge1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgICAgICBtYXgtd2lkdGg6IDQwJTtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IGF1dG87XG4gICAgICAgICAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgICAgICAgICBhbmltYXRpb246IG15cGhvdG8gM3MgbGluZWFyIDZzIGZvcndhcmRzO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBAa2V5ZnJhbWVzIG15cGhvdG8ge1xuICAgICAgICAgICAgICAgIDAlIHtvcGFjaXR5OjA7fVxuICAgICAgICAgICAgICAgIDI1JSB7b3BhY2l0eTowLjI1O31cbiAgICAgICAgICAgICAgICA1MCUge29wYWNpdHk6MC41O31cbiAgICAgICAgICAgICAgICA3NSUge29wYWNpdHk6MC43NTt9XG4gICAgICAgICAgICAgICAgMTAwJSB7b3BhY2l0eToxO31cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLndlbGNvbWVNZXNzYWdlIFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgICAgICAgICBmb250LWZhbWlseTogZmFudGFzeTtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IDJ2dztcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICAgICAgYm90dG9tOiAzMCU7XG4gICAgICAgICAgICAgICAgbGVmdDogMTUlO1xuICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlWCgyNWRlZyk7XG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgLm1lc3NhZ2UxIHtcbiAgICAgICAgICAgICAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgICAgICAgICAgICBhbmltYXRpb246IE1lc3NhZ2UxIDJzIGxpbmVhciAxMHMgMSBmb3J3YXJkcztcbiAgICAgICAgICAgICAgICAgICAgLXdlYmtpdC1hbmltYXRpb246IE1lc3NhZ2UxIDJzIGxpbmVhciAxMHMgMSBmb3J3YXJkcztcbiAgICAgICAgICAgICAgICAgICAgdGV4dC1zaGFkb3c6IDFweCAxcHggMXB4ICMwNTE2NDYsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDFweCAycHggMXB4ICMwNTE2NDYsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDFweCAzcHggMXB4ICMwNTE2NDYsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDFweCA0cHggMXB4ICMwNTE2NDYsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDFweCA1cHggMXB4ICMwNTE2NDYsXG4gICAgICAgICAgICAgICAgICAgICAgICAxcHggMThweCA2cHggcmdiYSgxNiwxNiwxNiwwLjQpLFxuICAgICAgICAgICAgICAgICAgICAgICAgMXB4IDIycHggMTBweCByZ2JhKDE2LDE2LDE2LDAuMiksXG4gICAgICAgICAgICAgICAgICAgICAgICAxcHggMjVweCAzNXB4IHJnYmEoMTYsMTYsMTYsMC4yKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIDFweCAzMHB4IDYwcHggcmdiYSgxNiwxNiwxNiwwLjQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICBcbiAgICAgICAgICAgICAgICBAa2V5ZnJhbWVzIE1lc3NhZ2UxIHtcbiAgICAgICAgICAgICAgICAgICAgMCUge29wYWNpdHk6MDsgcmlnaHQ6MjAwcHg7fVxuICAgICAgICAgICAgICAgICAgICAyNSUge29wYWNpdHk6MC4yNTsgcmlnaHQ6MTUwcHg7fVxuICAgICAgICAgICAgICAgICAgICA1MCUge29wYWNpdHk6MC41OyByaWdodDoxMDBweDt9XG4gICAgICAgICAgICAgICAgICAgIDc1JSB7b3BhY2l0eTowLjc1OyByaWdodDo1MHB4O31cbiAgICAgICAgICAgICAgICAgICAgMTAwJSB7b3BhY2l0eToxOyByaWdodDowcHg7fVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAubWVzc2FnZTIge1xuICAgICAgICAgICAgICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICAgICAgICAgIGFuaW1hdGlvbjogTWVzc2FnZTIgMnMgbGluZWFyIDEwcyAxIGZvcndhcmRzO1xuICAgICAgICAgICAgICAgICAgICAtd2Via2l0LWFuaW1hdGlvbjogTWVzc2FnZTIgMnMgbGluZWFyIDEwcyAxIGZvcndhcmRzO1xuICAgICAgICAgICAgICAgICAgICB0ZXh0LXNoYWRvdzogMXB4IDFweCAxcHggIzA1MTY0NixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMXB4IDJweCAxcHggIzA1MTY0NixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMXB4IDNweCAxcHggIzA1MTY0NixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMXB4IDRweCAxcHggIzA1MTY0NixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMXB4IDVweCAxcHggIzA1MTY0NixcbiAgICAgICAgICAgICAgICAgICAgICAgIDFweCAxOHB4IDZweCByZ2JhKDE2LDE2LDE2LDAuNCksXG4gICAgICAgICAgICAgICAgICAgICAgICAxcHggMjJweCAxMHB4IHJnYmEoMTYsMTYsMTYsMC4yKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIDFweCAyNXB4IDM1cHggcmdiYSgxNiwxNiwxNiwwLjIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgMXB4IDMwcHggNjBweCByZ2JhKDE2LDE2LDE2LDAuNCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIEBrZXlmcmFtZXMgTWVzc2FnZTIge1xuICAgICAgICAgICAgICAgICAgICAwJSB7b3BhY2l0eTowOyBsZWZ0OjIwMHB4O31cbiAgICAgICAgICAgICAgICAgICAgMjUlIHtvcGFjaXR5OjAuMjU7IGxlZnQ6MTUwcHg7fVxuICAgICAgICAgICAgICAgICAgICA1MCUge29wYWNpdHk6MC41OyBsZWZ0OjEwMHB4O31cbiAgICAgICAgICAgICAgICAgICAgNzUlIHtvcGFjaXR5OjAuNzU7IGxlZnQ6NTBweDt9XG4gICAgICAgICAgICAgICAgICAgIDEwMCUge29wYWNpdHk6MTsgbGVmdDowcHg7fVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSAgXG5cbiAgICAgICAgZGl2LndyYXBwZXIgXG4gICAgICAgIHtcbiAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjtcbiAgICAgICAgICAgIHdpZHRoOiA0MiU7XG4gICAgICAgICAgICBtYXJnaW4tbGVmdDogMTQlO1xuICAgICAgICAgICAgbWFyZ2luLXRvcDogMSU7XG4gICAgICAgICAgICBjb2xvcjogYmx1ZTtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMS41cmVtO1xuICAgICAgICAgICAgXG4gICAgICAgICAgICAjcGFnZVNsb2dhbiB7XG4gICAgICAgICAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgICAgICAgICBhbmltYXRpb246IHNsb2dhbkFuaW1hdGlvbiA2cyBsaW5lYXIgNXMgaW5maW5pdGUgbm9ybWFsIGZvcndhcmRzO1xuICAgICAgICAgICAgICAgIC13ZWJraXQtYW5pbWF0aW9uOiBzbG9nYW5BbmltYXRpb24gNnMgbGluZWFyIDVzIGluZmluaXRlIG5vcm1hbCBmb3J3YXJkcztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIFxuICAgICAgICAgICAgQGtleWZyYW1lcyBzbG9nYW5BbmltYXRpb24ge1xuICAgICAgICAgICAgICAgIGZyb20ge1xuICAgICAgICAgICAgICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoODAwcHgpO1xuICAgICAgICAgICAgICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCg4MDBweCk7XG4gICAgICAgICAgICAgICAgICAgIC1tb3otdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDgwMHB4KTtcbiAgICAgICAgICAgICAgICAgICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWCg4MDBweCk7XG4gICAgICAgICAgICAgICAgICAgIC1vLXRyYW5zZm9ybTogdHJhbnNsYXRlWCg4MDBweCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRvIHtcbiAgICAgICAgICAgICAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0zMDBweCk7XG4gICAgICAgICAgICAgICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0zMDBweCk7XG4gICAgICAgICAgICAgICAgICAgIC1tb3otdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0zMDBweCk7XG4gICAgICAgICAgICAgICAgICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTMwMHB4KTtcbiAgICAgICAgICAgICAgICAgICAgLW8tdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0zMDBweCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSAgXG5cbiAgICAvLyBwcm9qZWN0cy5odG1sLnR3aWdcbiAgICAucGFnZVByb2plY3RzIFxuICAgIHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICB0b3A6IDglO1xuICAgICAgICBtYXJnaW4tbGVmdDogMSU7XG5cbiAgICAgICAgLnR5cGV3cml0ZXIgXG4gICAgICAgIHtcbiAgICAgICAgICAgIHdpZHRoOiA1MCU7XG4gICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgICAgICBtYXJnaW4tbGVmdDogMTAlO1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMSU7XG5cbiAgICAgICAgICAgIGg0IHtcbiAgICAgICAgICAgICAgICBtYXJnaW46IGF1dG8gYXV0bztcbiAgICAgICAgICAgICAgICBmb250LWZhbWlseTogQXVkaW93aWRlO1xuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMS41dnc7XG4gICAgICAgICAgICAgICAgY29sb3I6IGJsdWU7XG4gICAgICAgICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgICAgICAgICBib3JkZXItcmlnaHQ6IC4xNWVtIHNvbGlkIG9yYW5nZTtcbiAgICAgICAgICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgICAgICAgICAgIGxldHRlci1zcGFjaW5nOiAuMTVlbTtcbiAgICAgICAgICAgICAgICBhbmltYXRpb246IHR5cGluZyA1cyBzdGVwcyg0MCwgZW5kKSBmb3J3YXJkcywgYmxpbmstY2FyZXQgLjVzIHN0ZXAtZW5kIGluZmluaXRlO1xuICAgICAgICAgICAgICAgIC13ZWJraXQtYW5pbWF0aW9uOiB0eXBpbmcgNXMgc3RlcHMoNDAsIGVuZCkgZm9yd2FyZHMsIGJsaW5rLWNhcmV0IC41cyBzdGVwLWVuZCBpbmZpbml0ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgICAgICBAa2V5ZnJhbWVzIHR5cGluZyB7XG4gICAgICAgICAgICAgICAgZnJvbSB7d2lkdGg6IDAlO31cbiAgICAgICAgICAgICAgICB0byB7d2lkdGg6IDMwJTt9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIEBrZXlmcmFtZXMgYmxpbmstY2FyZXQge1xuICAgICAgICAgICAgICAgIGZyb20ge2JvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7fVxuICAgICAgICAgICAgICAgIDUwJSB7Ym9yZGVyLWNvbG9yOiBvcmFuZ2U7fVxuICAgICAgICAgICAgICAgIHRvIHtib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O31cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgLmNhcm91c2VsIFxuICAgICAgICB7XG4gICAgICAgICAgICB3aWR0aDogNTAlO1xuICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDEwJTtcblxuICAgICAgICAgICAgLmNhcm91c2VsLWluZGljYXRvcnMge1xuICAgICAgICAgICAgICAgIHRvcDogMTAwJTtcbiAgICAgICAgICAgICAgICBmaWx0ZXI6IGludmVydCgxMDAlKTtcbiAgICAgICAgICAgICAgICAtd2Via2l0LWZpbHRlcjogaW52ZXJ0KDEwMCUpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAucHJvamVjdHMge1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogYXV0byBhdXRvO1xuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMXZ3O1xuXG4gICAgICAgICAgICAgICAgLnByb2plY3Qge1xuICAgICAgICAgICAgICAgICAgICAucHJvamVjdE5hbWUge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6Ymx1ZXZpb2xldDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OiBjdXJzaXZlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgLnByb2plY3RQaG90byB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpbWcge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAwJTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAuc3VpdGUgYSwgLnJlZHVpcmUgYSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgLnByb2plY3RMaW5rIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OiBjdXJzaXZlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAuY2Fyb3VzZWwtY29udHJvbC1uZXh0LCAuY2Fyb3VzZWwtY29udHJvbC1wcmV2IHtcbiAgICAgICAgICAgICAgICBmaWx0ZXI6IGludmVydCgxMDAlKTtcbiAgICAgICAgICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICAgICAgICAgIHdpZHRoOiA1JTtcbiAgICAgICAgICAgICAgICAtd2Via2l0LWZpbHRlcjogaW52ZXJ0KDEwMCUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG5cbi8vIHRlbXBsYXRlIGFib3V0Lmh0bWwudHdpZ1xuLmFib3V0IFxue1xuICAgIG1hcmdpbjogMCU7XG4gICAgcGFkZGluZzogMCU7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDIwOSwyMTMsMjE2LDI1NSk7XG4gICBcbiAgICAuYWJvdXRNZSBcbiAgICB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgdG9wOiA4JTtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDIlO1xuXG4gICAgICAgIC5zY3JlZW4gXG4gICAgICAgIHtcbiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMjUlO1xuICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDI1JTtcbiAgICAgICAgICAgIHBhZGRpbmc6IDIlO1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG4gICAgICAgICAgICBib3JkZXI6IDE4cHggc29saWQgYmxhY2s7XG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiAxNXB4IDE1cHggMCAwO1xuICAgICAgICAgICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAxNXB4IDE1cHggMCAwO1xuICAgICAgICAgICAgLW1vei1ib3JkZXItcmFkaXVzOiAxNXB4IDE1cHggMCAwO1xuICAgICAgICAgICAgLW1zLWJvcmRlci1yYWRpdXM6IDE1cHggMTVweCAwIDA7XG4gICAgICAgICAgICAtby1ib3JkZXItcmFkaXVzOiAxNXB4IDE1cHggMCAwO1xuICAgICAgICAgICAgXG4gICAgICAgICAgICAubXlQaG90b1xuICAgICAgICAgICAgeyBcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICAgICAgICAgICAgICBpbWcge1xuICAgICAgICAgICAgICAgICAgIHdpZHRoOiA3dnc7XG4gICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBhdXRvO1xuICAgICAgICAgICAgICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgICAgICAgICAgICAgYW5pbWF0aW9uOiBteXBob3RvIDRzIGxpbmVhciAxcyAxIG5vcm1hbCBmb3J3YXJkcztcbiAgICAgICAgICAgICAgICAgICAtd2Via2l0LWFuaW1hdGlvbjogbXlwaG90byA0cyBsaW5lYXIgMXMgMSBub3JtYWwgZm9yd2FyZHM7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgQGtleWZyYW1lcyBteXBob3RvIHtcbiAgICAgICAgICAgICAgICAgICAgZnJvbSB7b3BhY2l0eTogMDt9XG4gICAgICAgICAgICAgICAgICAgIHRvIHtvcGFjaXR5OiAxO31cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAub3ZlcmxheSB7XG4gICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgICAgICAgICAgdG9wOiAwO1xuICAgICAgICAgICAgICAgICAgICB3aWR0aDogMTUwcHg7XG4gICAgICAgICAgICAgICAgICAgIGhlaWdodDogMTUwcHg7XG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xuICAgICAgICAgICAgICAgICAgICBhbmltYXRpb246IG92ZXJsYXkgNHMgbGluZWFyIDFzIDEgbm9ybWFsIGZvcndhcmRzO1xuICAgICAgICAgICAgICAgICAgICAtd2Via2l0LWFuaW1hdGlvbjogb3ZlcmxheSA0cyBsaW5lYXIgMXMgMSBub3JtYWwgZm9yd2FyZHM7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgQGtleWZyYW1lcyBvdmVybGF5IHtcbiAgICAgICAgICAgICAgICAgICAgMCUge1xuICAgICAgICAgICAgICAgICAgICAgICAgb3BhY2l0eToxO1xuICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtOnRyYW5zbGF0ZVgoMHB4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZVgoMHB4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIC1tb3otdHJhbnNmb3JtOnRyYW5zbGF0ZVgoMHB4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIC1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWCgwcHgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgLW8tdHJhbnNmb3JtOnRyYW5zbGF0ZVgoMHB4KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA5OSUge1xuICAgICAgICAgICAgICAgICAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybTp0cmFuc2xhdGVYKDE1NXB4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZVgoMTU1cHgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgLW1vei10cmFuc2Zvcm06dHJhbnNsYXRlWCgxNTVweCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAtbXMtdHJhbnNmb3JtOnRyYW5zbGF0ZVgoMTU1cHgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgLW8tdHJhbnNmb3JtOnRyYW5zbGF0ZVgoMTU1cHgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDEwMCUge1xuICAgICAgICAgICAgICAgICAgICAgICAgb3BhY2l0eTowO1xuICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtOnRyYW5zbGF0ZVgoMTYwcHgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlWCgxNjBweCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAtbW96LXRyYW5zZm9ybTp0cmFuc2xhdGVYKDE2MHB4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIC1tcy10cmFuc2Zvcm06dHJhbnNsYXRlWCgxNjBweCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAtby10cmFuc2Zvcm06dHJhbnNsYXRlWCgxNjBweCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC50eXBld3JpdGluZyBcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiAwLjUlO1xuXG4gICAgICAgICAgICAgICAgLmxpZ25lcyB7XG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbjogMCU7XG4gICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OiBBdWRpb3dpZGU7XG4gICAgICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMS41dnc7XG4gICAgICAgICAgICAgICAgICAgIGNvbG9yOiBibHVlO1xuICAgICAgICAgICAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICAgICAgICAgICAgICBib3JkZXItcmlnaHQ6IC4xNWVtIHNvbGlkIHRyYW5zcGFyZW50O1xuICAgICAgICAgICAgICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiBhdXRvIDA7XG4gICAgICAgICAgICAgICAgICAgIGxldHRlci1zcGFjaW5nOiAuMTVlbTtcbiAgICAgICAgICAgICAgICAgICAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICAgICAgICAgICAgICAgIH1cbiAgICBcbiAgICAgICAgICAgICAgICAubGlnbmUtMSB7XG4gICAgICAgICAgICAgICAgICAgIGFuaW1hdGlvbjogdHlwZSA1cyBzdGVwcyg0MCwgZW5kKSA1cyBmb3J3YXJkcywgYmxpbmtpbmcgLjVzIDE1IGJhY2t3YXJkcztcbiAgICAgICAgICAgICAgICAgICAgLXdlYmtpdC1hbmltYXRpb246IHR5cGUgNXMgc3RlcHMoNDAsIGVuZCkgNXMgZm9yd2FyZHMsIGJsaW5raW5nIC41cyAxNSBiYWNrd2FyZHM7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgICAgICAgICAubGlnbmUtMiB7XG4gICAgICAgICAgICAgICAgICAgIGFuaW1hdGlvbjogdHlwZSA1cyBzdGVwcyg0MCwgZW5kKSAxMHMgZm9yd2FyZHMsIGJsaW5raW5nIC41cyAyNSBiYWNrd2FyZHM7XG4gICAgICAgICAgICAgICAgICAgIC13ZWJraXQtYW5pbWF0aW9uOiB0eXBlIDVzIHN0ZXBzKDQwLCBlbmQpIDEwcyBmb3J3YXJkcywgYmxpbmtpbmcgLjVzIDI1IGJhY2t3YXJkczsgIFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgICAgICAgICAgLmxpZ25lLTMge1xuICAgICAgICAgICAgICAgICAgICBhbmltYXRpb246IHR5cGUgNXMgc3RlcHMoNDAsIGVuZCkgMTVzIGZvcndhcmRzLCBibGlua2luZyAuNXMgMzkgYmFja3dhcmRzO1xuICAgICAgICAgICAgICAgICAgICAtd2Via2l0LWFuaW1hdGlvbjogdHlwZSA1cyBzdGVwcyg0MCwgZW5kKSAxNXMgZm9yd2FyZHMsIGJsaW5raW5nIC41cyAzOSBiYWNrd2FyZHM7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLmxpZ25lLTQge1xuICAgICAgICAgICAgICAgICAgICBhbmltYXRpb246IHR5cGUgNXMgc3RlcHMoNDAsIGVuZCkgMjBzIGZvcndhcmRzLCBibGlua2luZyAuNXMgNDkgYmFja3dhcmRzO1xuICAgICAgICAgICAgICAgICAgICAtd2Via2l0LWFuaW1hdGlvbjogdHlwZSA1cyBzdGVwcyg0MCwgZW5kKSAyMHMgZm9yd2FyZHMsIGJsaW5raW5nIC41cyA0OSBiYWNrd2FyZHM7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIGJ1dHRvbiB7XG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IDAuNSU7XG4gICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OiBBdWRpb3dpZGU7XG4gICAgICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMS4zdnc7XG4gICAgICAgICAgICAgICAgICAgIGNvbG9yOiB3aGl0ZTtcbiAgICAgICAgICAgICAgICAgICAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICAgICAgICAgICAgICAgICAgICBhbmltYXRpb246IHR5cGUgNXMgc3RlcHMoNDAsIGVuZCkgMjVzIGZvcndhcmRzO1xuICAgICAgICAgICAgICAgICAgICAtd2Via2l0LWFuaW1hdGlvbjogdHlwZSA1cyBzdGVwcyg0MCwgZW5kKSAyNXMgZm9yd2FyZHM7XG4gICAgICAgICAgICAgICAgfVxuICAgIFxuICAgICAgICAgICAgICAgIEBrZXlmcmFtZXMgdHlwZSB7XG4gICAgICAgICAgICAgICAgICAgIGZyb20ge3dpZHRoOjA7IHZpc2liaWxpdHk6IGhpZGRlbjt9XG4gICAgICAgICAgICAgICAgICAgIHRvIHt3aWR0aDogMTAwJTsgdmlzaWJpbGl0eTogdmlzaWJsZTt9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIEBrZXlmcmFtZXMgYmxpbmtpbmcge1xuICAgICAgICAgICAgICAgICAgICBmcm9tIHtib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O31cbiAgICAgICAgICAgICAgICAgICAgNTAlIHtib3JkZXItY29sb3I6IG9yYW5nZTt9XG4gICAgICAgICAgICAgICAgICAgIHRvIHtib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O31cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAuc2NyZWVuLWJlbG93IHtcbiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMjUlO1xuICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDI1JTtcbiAgICAgICAgICAgIHBhZGRpbmc6IDElO1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2I5YmRiZTtcbiAgICAgICAgICAgIGJvcmRlcjogNXB4IHNvbGlkICNiOWJkYmU7O1xuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMCAwIDE1cHggMTVweDtcbiAgICAgICAgICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogMCAwIDE1cHggMTVweDtcbiAgICAgICAgICAgIC1tb3otYm9yZGVyLXJhZGl1czogMCAwIDE1cHggMTVweDtcbiAgICAgICAgICAgIC1tcy1ib3JkZXItcmFkaXVzOiAwIDAgMTVweCAxNXB4O1xuICAgICAgICAgICAgLW8tYm9yZGVyLXJhZGl1czogMCAwIDE1cHggMTVweDtcbiAgICAgICAgICAgIGJveC1zaGFkb3c6IHJnYmEoMCwgMCwgMCwgMC4zKSAwcHggMTlweCAzOHB4LCBcbiAgICAgICAgICAgICAgICAgICAgICAgIHJnYmEoMCwgMCwgMCwgMC4yMikgMHB4IDE5cHggMTJweDtcbiAgICAgICAgfVxuXG4gICAgICAgIC5zY3JlZW4tbGVnIHtcbiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgIHBlcnNwZWN0aXZlOiA4MHB4O1xuXG4gICAgICAgICAgICAubGVnLTEge1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgICAgICByaWdodDogNDYlO1xuICAgICAgICAgICAgICAgIGxlZnQ6IDQ2JTtcbiAgICAgICAgICAgICAgICB0b3A6IDEwJTtcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiAxJTtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjYjliZGJlO1xuICAgICAgICAgICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCBsaW5lYXItZ3JhZGllbnQoZ3JleSwgYmxhY2ssIGdyZXkpO1xuICAgICAgICAgICAgICAgIHRyYW5zZm9ybS1zdHlsZTogcHJlc2VydmUtM2Q7XG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGVYKDE1ZGVnKTtcbiAgICAgICAgICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlWCgxNWRlZyk7XG4gICAgICAgICAgICAgICAgLW1vei10cmFuc2Zvcm06IHJvdGF0ZVgoMTVkZWcpO1xuICAgICAgICAgICAgICAgIC1tcy10cmFuc2Zvcm06IHJvdGF0ZVgoMTVkZWcpO1xuICAgICAgICAgICAgICAgIC1vLXRyYW5zZm9ybTogcm90YXRlWCgxNWRlZyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5sZWctMiB7XG4gICAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgICAgIHJpZ2h0OiA0NSU7XG4gICAgICAgICAgICAgICAgbGVmdDogNDUlO1xuICAgICAgICAgICAgICAgIHRvcDogNzAlO1xuICAgICAgICAgICAgICAgIHBhZGRpbmc6IDEuNSU7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2I5YmRiZTtcbiAgICAgICAgICAgICAgICBib3JkZXItdG9wOiAxcHggc29saWQgZ3JheTtcbiAgICAgICAgICAgICAgICBib3JkZXItYm90dG9tOiAzcHggc29saWQgbGlnaHRncmF5O1xuICAgICAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDAgMCAxNXB4IDE1cHg7XG4gICAgICAgICAgICAgICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAwIDAgMTVweCAxNXB4O1xuICAgICAgICAgICAgICAgIC1tb3otYm9yZGVyLXJhZGl1czogMCAwIDE1cHggMTVweDtcbiAgICAgICAgICAgICAgICAtbXMtYm9yZGVyLXJhZGl1czogMCAwIDE1cHggMTVweDtcbiAgICAgICAgICAgICAgICAtby1ib3JkZXItcmFkaXVzOiAwIDAgMTVweCAxNXB4O1xuICAgICAgICAgICAgICAgIHRyYW5zZm9ybS1zdHlsZTogcHJlc2VydmUtM2Q7XG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGVYKDYwZGVnKTtcbiAgICAgICAgICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlWCg2MGRlZyk7XG4gICAgICAgICAgICAgICAgLW1vei10cmFuc2Zvcm06IHJvdGF0ZVgoNjBkZWcpO1xuICAgICAgICAgICAgICAgIC1tcy10cmFuc2Zvcm06IHJvdGF0ZVgoNjBkZWcpO1xuICAgICAgICAgICAgICAgIC1vLXRyYW5zZm9ybTogcm90YXRlWCg2MGRlZyk7XG4gICAgICAgICAgICAgICAgYm94LXNoYWRvdzogcmdiYSgwLCAwLCAwLCAwLjU1KSAwcHggNHB4IDhweCwgXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAua2V5Ym9hcmQgXG4gICAgICAgIHtcbiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgIHBlcnNwZWN0aXZlOiA4MHB4O1xuXG4gICAgICAgICAgICAuY2xhdmllciBcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICAgICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgICAgICAgICB3aWR0aDogMzAlO1xuICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IDMuNSU7XG4gICAgICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xuICAgICAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICAgICAgICAgICAgICAgIHBhZGRpbmc6IDAuMyU7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2I5YmRiZTtcbiAgICAgICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCBncmF5O1xuICAgICAgICAgICAgICAgIGJvcmRlci1ib3R0b206IDRweCBzb2xpZCBncmF5O1xuICAgICAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDEwcHg7XG4gICAgICAgICAgICAgICAgICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogMTBweDtcbiAgICAgICAgICAgICAgICAgICAgLW1vei1ib3JkZXItcmFkaXVzOiAxMHB4O1xuICAgICAgICAgICAgICAgICAgICAtbXMtYm9yZGVyLXJhZGl1czogMTBweDtcbiAgICAgICAgICAgICAgICAgICAgLW8tYm9yZGVyLXJhZGl1czogMTBweDtcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm0tc3R5bGU6IHByZXNlcnZlLTNkO1xuICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlWCgxNWRlZyk7XG4gICAgICAgICAgICAgICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGVYKDE1ZGVnKTtcbiAgICAgICAgICAgICAgICAgICAgLW1vei10cmFuc2Zvcm06IHJvdGF0ZVgoMTVkZWcpO1xuICAgICAgICAgICAgICAgICAgICAtbXMtdHJhbnNmb3JtOiByb3RhdGVYKDE1ZGVnKTtcbiAgICAgICAgICAgICAgICAgICAgLW8tdHJhbnNmb3JtOiByb3RhdGVYKDE1ZGVnKTtcblxuICAgICAgICAgICAgICAgIC5kaWdpdHMsIC5sZXR0ZXJzIHtcbiAgICAgICAgICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgZ3JheTtcbiAgICAgICAgICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogNHB4IHNvbGlkIGdyYXk7XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiA3JTtcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiA3JTtcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luOiAxJTtcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMC4zJTtcbiAgICAgICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgIFxuICAgICAgICAgICAgICAgICRkZWxheTogNTtcbiAgICAgICAgICAgICAgICAkbXlBcnJheTogOCwgOSwgMTMsIDI1LCAxNCwgMSwgMTMsIDUsIDksIDE5LCAxNCwgOSwgMTAsIDEsIDIwLCA5LCAxLCAxMywgMSwgMjMsIDUsIDIsIDQsIDUsIDIyLCA1LCAxMiwgMTUsIDE2LCAxNiwgNSwgMTgsIDIzLCAxLCAxNCwgMjAsIDIwLCAxNSwgMTEsIDE0LCAxNSwgMjMsIDEzLCAxNSwgMTgsIDUsIDEsIDIsIDE1LCAyMSwgMjAsIDEzLCA1LCA0LCAxNSwgMjMsIDE0LCAxMiwgMTUsIDEsIDQsIDEzLCAyNSwgMywgMjIsIDIsIDUsIDEyLCAxNSwgMjM7XG4gICAgXG4gICAgICAgICAgICAgICAgQGVhY2ggJGkgaW4gJG15QXJyYXkgXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAjbGV0dGVyI3skaX0gXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFuaW1hdGlvbjogY2xpY2sgMC4yOXMgZWFzZSAjeyRkZWxheX1zIDEgbm9ybWFsIGJhY2t3YXJkcztcbiAgICAgICAgICAgICAgICAgICAgICAgIC13ZWJraXQtYW5pbWF0aW9uOiBjbGljayAwLjI5cyBlYXNlICN7JGRlbGF5fXMgMSBub3JtYWwgYmFja3dhcmRzO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgXG4gICAgICAgICAgICAgICAgICAgICRkZWxheTokZGVsYXkrMC4yOTtcbiAgICAgICAgICAgICAgICB9XG4gICAgXG4gICAgICAgICAgICAgICAgQGtleWZyYW1lcyBjbGljayB7XG4gICAgICAgICAgICAgICAgICAgIGZyb20geyBib3JkZXItYm90dG9tOiA0cHggc29saWQgZ3JheTt9XG4gICAgICAgICAgICAgICAgICAgIHRvIHsgYm9yZGVyLWJvdHRvbTogMC41cHggc29saWQgZ3JheTsgYmFja2dyb3VuZC1jb2xvcjogYmx1ZTt9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG5cbi8vIHRlbXBsYXRlIGNvbnRhY3QuaHRtbC50d2lnXG4uY29udGFjdCBcbntcbiAgICBtYXJnaW46IDAlO1xuICAgIHBhZGRpbmc6IDAlO1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IHJhZGlhbC1ncmFkaWVudCggY2lyY2xlIDEyMjRweCBhdCAxMC42JSA4LjglLCAgcmdiYSgyNTUsMjU1LDI1NSwxKSAwJSwgcmdiYSgxNTMsMjAyLDI1MSwxKSAxMDAuMiUgKTtcbiAgICBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyO1xuICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG5cbiAgICAuY29udGFjdEZvcm0ge1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAxJTtcblxuICAgICAgICBmb3JtIHtcbiAgICAgICAgICAgIG1hcmdpbjogMTAlIDIwJTtcblxuICAgICAgICAgICAgaDIge1xuICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDIlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgXG4gICAgICAgICAgICBpbnB1dCwgdGV4dGFyZWEsIGJ1dHRvbiB7XG4gICAgICAgICAgICAgICAgcGFkZGluZzogMSU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRleHRhcmVhIHtcbiAgICAgICAgICAgICAgICByZXNpemU6IG5vbmU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cblxuXG4vLyBSRVNQT05TSVZFIERFU0lHTlxuQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAxNjAwcHgpIFxue1xuICAgIGJvZHkgXG4gICAge1xuICAgICAgICAvLyB0ZW1wbGF0ZSBwcm9qZWN0cy5odG1sLnR3aWdcbiAgICAgICAgLnBhZ2VQcm9qZWN0cyB7XG4gICAgICAgICAgICAudHlwZXdyaXRlciB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDU1JTtcbiAgICAgICAgICAgICAgICBtYXJnaW4tbGVmdDogOCU7XG4gICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMiU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5jYXJvdXNlbCB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDU1JTtcbiAgICAgICAgICAgICAgICBtYXJnaW4tbGVmdDogOCU7XG5cbiAgICAgICAgICAgICAgICAucHJvamVjdHMge1xuICAgICAgICAgICAgICAgICAgICBmb250LXNpemU6IDEuMnZ3O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0gIFxufVxuXG5AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDE0MDBweCkgXG57XG4gICAgYm9keSBcbiAgICB7XG4gICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybChcIi9wdWJsaWMvaW1hZ2VzL2hvbWUxLmpwZ1wiKTtcbiAgICAgICAgYmFja2dyb3VuZC1zaXplOiBjb3ZlcjtcbiAgICAgICAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcblxuICAgICAgICAuaWNvbnMge1xuICAgICAgICAgICAgLmZhYiB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyB0ZW1wbGF0ZSBiYXNlLmh0bWwudHdpZ1xuICAgICAgICAubmF2LWJhciB7XG4gICAgICAgICAgICAjbmF2TWVudSB7XG4gICAgICAgICAgICAgICAgbGkge1xuICAgICAgICAgICAgICAgICAgICBhIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMS43dnc7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyB0ZW1wbGF0ZSBpbmRleC5odG1sLnR3aWdcbiAgICAgICAgLmhvbWUge1xuICAgICAgICAgICAgdG9wOiAyMCU7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIC5kb29ycyB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDMwJTtcbiAgICAgICAgICAgICAgICBtYXJnaW4tbGVmdDogMzUlO1xuXG4gICAgICAgICAgICAgICAgLndlbGNvbWVNZXNzYWdlIHtcbiAgICAgICAgICAgICAgICAgICAgYm90dG9tOiAyMCU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAud3JhcHBlciB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDU0JTtcbiAgICAgICAgICAgICAgICBtYXJnaW4tbGVmdDogMjIlO1xuICAgICAgICAgICAgICAgIGNvbG9yOiBjYWRldGJsdWU7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiAxLjRyZW07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyB0ZW1wbGF0ZSBwcm9qZWN0cy5odG1sLnR3aWdcbiAgICAgICAgLnBhZ2VQcm9qZWN0cyB7XG4gICAgICAgICAgICAudHlwZXdyaXRlciB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDY1JTtcblxuICAgICAgICAgICAgICAgIGg0IHtcbiAgICAgICAgICAgICAgICAgICAgZm9udC1zaXplOiAydnc7XG4gICAgICAgICAgICAgICAgICAgIGNvbG9yOiBsaWdodHNlYWdyZWVuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLmNhcm91c2VsIHtcbiAgICAgICAgICAgICAgICB3aWR0aDogNjUlO1xuXG4gICAgICAgICAgICAgICAgLmNhcm91c2VsLWluZGljYXRvcnMge1xuICAgICAgICAgICAgICAgICAgICBmaWx0ZXI6IGludmVydCgwJSk7XG4gICAgICAgICAgICAgICAgICAgIC13ZWJraXQtZmlsdGVyOiBpbnZlcnQoMCUpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC5wcm9qZWN0cyB7XG4gICAgICAgICAgICAgICAgICAgIGNvbG9yOiBsaWdodHNlYWdyZWVuO1xuICAgICAgICAgICAgICAgICAgICBmb250LXNpemU6IDEuNXZ3O1xuXG4gICAgICAgICAgICAgICAgICAgIC5wcm9qZWN0IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC5wcm9qZWN0TmFtZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IGxpZ2h0c2VhZ3JlZW47XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0gICAgXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG5AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDEyMDBweCkgXG57XG4gICAgYm9keSBcbiAgICB7XG4gICAgICAgIC8vIHRlbXBsYXRlIGJhc2UuaHRtbC50d2lnXG4gICAgICAgIC5uYXYtYmFyIHtcbiAgICAgICAgICAgICNuYXZNZW51IHtcbiAgICAgICAgICAgICAgICBsaSB7XG4gICAgICAgICAgICAgICAgICAgIGEge1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1zaXplOiAydnc7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgIC8vIHRlbXBsYXRlIHByb2plY3RzLmh0bWwudHdpZ1xuICAgICAgICAucGFnZVByb2plY3RzIHtcbiAgICAgICAgICAgIC50eXBld3JpdGVyIHtcbiAgICAgICAgICAgICAgICB3aWR0aDogNzUlO1xuXG4gICAgICAgICAgICAgICAgaDQge1xuICAgICAgICAgICAgICAgICAgICBmb250LXNpemU6IDIuM3Z3O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLmNhcm91c2VsIHtcbiAgICAgICAgICAgICAgICB3aWR0aDogNzUlO1xuXG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgLnByb2plY3RzIHtcbiAgICAgICAgICAgICAgICAgICAgZm9udC1zaXplOiAxLjh2dztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9ICBcbn1cblxuQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAxMDAwcHgpIFxue1xuICAgIGJvZHkgXG4gICAge1xuICAgICAgICAvLyB0ZW1wbGF0ZSBiYXNlLmh0bWwudHdpZ1xuICAgICAgICAubmF2LWJhciB7XG4gICAgICAgICAgICAjbmF2TWVudSB7XG4gICAgICAgICAgICAgICAgbGkge1xuICAgICAgICAgICAgICAgICAgICBhIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMi41dnc7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyB0ZW1wbGF0ZSBpbmRleC5odG1sLnR3aWdcbiAgICAgICAgLmhvbWUge1xuICAgICAgICAgICAgLmRvb3JzIHtcbiAgICAgICAgICAgICAgICB3aWR0aDogNDAlO1xuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIC53ZWxjb21lTWVzc2FnZSB7XG4gICAgICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogM3Z3O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLndyYXBwZXIge1xuICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IDIlO1xuICAgICAgICAgICAgICAgIHdpZHRoOiA4MCU7XG4gICAgICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDE1JTtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IDEuNHJlbTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHRlbXBsYXRlIHByb2plY3RzLmh0bWwudHdpZ1xuICAgICAgICAucGFnZVByb2plY3RzIHtcbiAgICAgICAgICAgIC50eXBld3JpdGVyIHtcbiAgICAgICAgICAgICAgICB3aWR0aDogODUlO1xuICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDMlO1xuXG4gICAgICAgICAgICAgICAgaDQge1xuICAgICAgICAgICAgICAgICAgICBmb250LXNpemU6IDIuNXZ3O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLmNhcm91c2VsIHtcbiAgICAgICAgICAgICAgICB3aWR0aDogODUlO1xuXG4gICAgICAgICAgICAgICAgLnByb2plY3RzIHtcbiAgICAgICAgICAgICAgICAgICAgZm9udC1zaXplOiAydnc7XG4gICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAucHJvamVjdCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAucHJvamVjdE5hbWUge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMi41dnc7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0gICAgXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG5AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDgwMHB4KSBcbntcbiAgICBib2R5IFxuICAgIHtcbiAgICAgICAgLy8gdGVtcGxhdGUgYmFzZS5odG1sLnR3aWdcbiAgICAgICAgLm5hdi1iYXIge1xuICAgICAgICAgICAgI25hdk1lbnUge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IDUlO1xuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIGxpOm5vdCg6Zmlyc3QtY2hpbGQpIHtcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDMwJTtcbiAgICAgICAgICAgICAgICAgICAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGxpOmZpcnN0LWNoaWxkIHtcbiAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgICAgICAgICBsZWZ0OiA3MCU7XG4gICAgICAgICAgICAgICAgICAgIHRvcDogMiU7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgbGk6aG92ZXIgYSB7XG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGJsdWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAjbWVudUhhbWJ1cmdlciB7XG4gICAgICAgICAgICAgICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHRlbXBsYXRlIGluZGV4Lmh0bWwudHdpZ1xuICAgICAgICAuaG9tZSB7XG4gICAgICAgICAgICB0b3A6IDEwJTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHRlbXBsYXRlIHByb2plY3RzLmh0bWwudHdpZ1xuICAgICAgICAucGFnZVByb2plY3RzIHtcbiAgICAgICAgICAgIHRvcDogMiU7XG5cbiAgICAgICAgICAgIC50eXBld3JpdGVyIHtcbiAgICAgICAgICAgICAgICB3aWR0aDogOTAlO1xuXG4gICAgICAgICAgICAgICAgaDQge1xuICAgICAgICAgICAgICAgICAgICBmb250LXNpemU6IDIuOXZ3O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLmNhcm91c2VsIHtcbiAgICAgICAgICAgICAgICB3aWR0aDogOTAlO1xuXG4gICAgICAgICAgICAgICAgLnByb2plY3RzIHtcbiAgICAgICAgICAgICAgICAgICAgZm9udC1zaXplOiAyLjN2dztcblxuICAgICAgICAgICAgICAgICAgICAucHJvamVjdCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAucHJvamVjdE5hbWUge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMi43dnc7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0gICAgXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG5AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDcwMHB4KSBcbntcbiAgICBib2R5IFxuICAgIHtcbiAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiL3B1YmxpYy9pbWFnZXMvaG9tZTIuanBnXCIpO1xuICAgICAgICBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyO1xuICAgICAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuXG4gICAgICAgIC8vIHRlbXBsYXRlIGJhc2UuaHRtbC50d2lnXG4gICAgICAgIC5uYXYtYmFyIHtcbiAgICAgICAgICAgICNuYXZNZW51IHtcbiAgICAgICAgICAgICAgICBsaTpob3ZlciBhIHtcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0IHRvcCwgIzA5MzI0MSwgIzAwNjE2ZiwgIzAwOTM3YiwgIzAwYzM2MSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgbGk6bm90KDpmaXJzdC1jaGlsZCkge1xuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBibGFjazsgICAgXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gdGVtcGxhdGUgaW5kZXguaHRtbC50d2lnXG4gICAgICAgIC5ob21lIHtcbiAgICAgICAgICAgIC5kb29ycyB7XG5cbiAgICAgICAgICAgICAgICAud2VsY29tZU1lc3NhZ2Uge1xuICAgICAgICAgICAgICAgICAgICBib3R0b206IDEwJTtcblxuICAgICAgICAgICAgICAgICAgICAubWVzc2FnZTEsIC5tZXNzYWdlMiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0LXNoYWRvdzogMCAxcHggMCAjY2NjLCBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAgMnB4IDAgI2M5YzljOSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAgM3B4IDAgI2JiYixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAgNHB4IDAgI2I5YjliOSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAgNXB4IDAgI2FhYSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCA2cHggMXB4IHJnYmEoMCwwLDAsLjEpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwIDAgNXB4IHJnYmEoMCwwLDAsLjEpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwIDFweCAzcHggcmdiYSgwLDAsMCwuMyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAgM3B4IDVweCByZ2JhKDAsMCwwLC4yKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCA1cHggMTBweCByZ2JhKDAsMCwwLC4yNSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAgMTBweCAxMHB4IHJnYmEoMCwwLDAsLjIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwIDIwcHggMjBweCByZ2JhKDAsMCwwLC4xNSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogNjAwcHgpIFxue1xuICAgIGJvZHkgXG4gICAge1xuICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCIvcHVibGljL2ltYWdlcy9ob21lMy5qcGdcIik7XG4gICAgICAgIGJhY2tncm91bmQtc2l6ZTogY292ZXI7XG4gICAgICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG5cbiAgICAgICAgLy8gdGVtcGxhdGUgYmFzZS5odG1sLnR3aWdcbiAgICAgICAgLm5hdi1iYXIge1xuICAgICAgICAgICAgI25hdk1lbnUge1xuICAgICAgICAgICAgICAgIGxpOmhvdmVyIGEge1xuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiByZ2IoMiwwLDM2KTtcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDkwZGVnLCByZ2JhKDIsMCwzNiwxKSAwJSwgcmdiYSg0Niw0NCw3NywxKSA0NyUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHRlbXBsYXRlIHByb2plY3RzLmh0bWwudHdpZ1xuICAgICAgICAucGFnZVByb2plY3RzIHtcbiAgICAgICAgICAgIC5jYXJvdXNlbCB7XG4gICAgICAgICAgICAgICAgLnByb2plY3RzIHtcbiAgICAgICAgICAgICAgICAgICAgZm9udC1zaXplOiAyLjV2dztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cblxuXG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=*/