@import url("https://fonts.googleapis.com/css?family=Exo+2:300,400,500,700");
/************************
 * 	color
*************************/
/************************
 * 	mixins
*************************/
/***********************
 * begin wp rewrite
 ***********************/
.wp-caption {
  border: none;
  background: none; }

.wp-caption p.wp-caption-text {
  font-style: italic; }

/***********************
 * end wp rewrite
 ***********************/
html {
  font-size: 10px; }

body {
  font-size: 1.4rem;
  font-family: 'Exo 2', sans-serif; }

.entry-content a, .entry-content a:link, .entry-content a:visited {
  color: #1A4AA2 !important;
  font-weight: 500; }

.entry-content a:hover, .entry-content a:focus, .entry-content a:active {
  color: #F5961E !important; }

h1, h2, h3, h4, h5, h6 {
  text-transform: uppercase;
  color: #1A4AA2; }
  h1 a, h1 a:link, h1 a:visited, h2 a, h2 a:link, h2 a:visited, h3 a, h3 a:link, h3 a:visited, h4 a, h4 a:link, h4 a:visited, h5 a, h5 a:link, h5 a:visited, h6 a, h6 a:link, h6 a:visited {
    color: #1A4AA2 !important;
    font-weight: 500; }
  h1 a:hover, h1 a:focus, h1 a:active, h2 a:hover, h2 a:focus, h2 a:active, h3 a:hover, h3 a:focus, h3 a:active, h4 a:hover, h4 a:focus, h4 a:active, h5 a:hover, h5 a:focus, h5 a:active, h6 a:hover, h6 a:focus, h6 a:active {
    color: #F5961E !important; }

.page-title {
  background: #f4f5fa; }
  .page-title .container {
    padding: 2rem 0 !important; }
    .page-title .container h1 {
      padding: 2rem 0;
      margin: 0;
      text-align: left; }

.lang-item-kr {
  display: none; }

/***********************
 * begin general
 ***********************/
.et_pb_button {
  background-color: #F5961E;
  border: 0;
  border-radius: 0;
  font-size: 1.8rem;
  font-weight: 600;
  cursor: pointer;
  text-align: center;
  color: #FFFFFF !important;
  text-transform: uppercase; }
  .et_pb_button, .et_pb_button:link {
    color: #FFFFFF !important; }
  .et_pb_button:hover {
    border: 0;
    background-color: #d67c0a !important;
    color: #FFFFFF; }
  .et_pb_button::after {
    top: 50%;
    transform: translateY(-50%); }

.et_pb_section ul li {
  list-style: none; }
  .et_pb_section ul li:before {
    font-family: 'ETmodules';
    content: "\35";
    position: absolute;
    margin-left: -18px;
    color: #F5961E;
    font-weight: bold; }

.et_pb_testimonial {
  text-align: center;
  background-color: #f4f5fa !important; }
  .et_pb_testimonial .et_pb_testimonial_description {
    display: block; }
  .et_pb_testimonial .et_pb_testimonial_description_inner {
    width: 100% !important; }
    .et_pb_testimonial .et_pb_testimonial_description_inner p {
      font-size: 2rem;
      padding-bottom: .5em; }
  .et_pb_testimonial .et_pb_testimonial_author {
    margin-top: 0; }
  .et_pb_testimonial:before {
    top: .5rem;
    left: 2rem;
    background: transparent;
    font-size: 5rem;
    content: "\7b";
    color: #d1d5ea;
    transform: rotate(180deg);
    display: none; }
  .et_pb_testimonial:after {
    bottom: .5rem !important;
    right: 2rem !important;
    background: transparent !important;
    font-size: 5rem !important;
    content: "\7b" !important;
    color: #d1d5ea !important;
    transform: rotate(0deg) !important;
    height: auto !important;
    visibility: visible !important;
    display: none !important;
    position: absolute;
    font-family: "ETmodules" !important;
    font-weight: normal;
    font-style: normal;
    font-variant: normal; }

/***********************
 * end general
 ***********************/
/***********************
 * begin main container
 ***********************/
#main-content > .container {
  padding-top: 5rem;
  padding-bottom: 6rem; }

#main-content .container::before {
  display: none; }

#main-content h1 {
  font-weight: 400; }

#main-content .et_pb_section h1, #main-content .et_pb_section h2, #main-content .et_pb_section h3, #main-content .et_pb_section h4 {
  text-align: left;
  margin-bottom: .5em;
  line-height: 1em; }

body.home #main-content .et_pb_section h1, body.home #main-content .et_pb_section h2, body.home #main-content .et_pb_section h3, body.home #main-content .et_pb_section h4 {
  text-align: center; }

body:not(home) #main-content .et_pb_section:nth-child(even) {
  background-color: #f4f5fa; }

/***********************
 * end main container
 ***********************/
/***********************
 * begin slide
 ***********************/
.et_pb_slide_description .et_pb_slide_title {
  font-size: 4rem; }

.et_pb_slide_description cite {
  font-size: 1.2rem;
  display: block;
  line-height: 1em; }

.et-pb-slider-arrows a.et-pb-arrow-prev, .et-pb-slider-arrows a.et-pb-arrow-next {
  color: #FFFFFF !important;
  background-color: rgba(255, 255, 255, 0.2); }

/***********************
 * end slide
 ***********************/
/***********************
 * begin blog
 ***********************/
body.blog article.post .entry-title {
  margin-bottom: 1rem; }

body.blog article.post > a {
  display: block;
  text-align: center; }
  body.blog article.post > a img {
    margin-bottom: 1rem; }

@media (min-width: 900px) {
  body.blog .et_pb_post a img {
    max-width: 767px; } }

body.single article.post .et_post_meta_wrapper {
  text-align: left; }
  body.single article.post .et_post_meta_wrapper h1 {
    text-align: left; }

@media (min-width: 900px) {
  body.single article.post img {
    max-width: 767px; } }

/***********************
 * end blog
 ***********************/
/***********************
 * begin icons
 ***********************/
#et-info-phone:before {
  top: 1px;
  margin-right: 4px; }

#et-info-email:before {
  position: relative;
  top: 2px; }

/***********************
 * end icons
 ***********************/
/***********************
 * begin custom classes
 ***********************/
.title-row h2 {
  color: #1A4AA2;
  text-align: center;
  font-size: 3rem;
  padding-bottom: .8em;
  font-weight: normal;
  line-height: 1.2em;
  padding-bottom: 0 !important;
  /*
		&.has-sub {
			padding-bottom: .2em;
		}

		& + p {
			@include section-subtitle;
			margin-bottom: 2rem;
		}
*/ }
  .title-row h2 a, .title-row h2 a:link, .title-row h2 a:visited {
    color: #1A4AA2 !important;
    font-weight: 500; }
  .title-row h2 a:hover, .title-row h2 a:focus, .title-row h2 a:active {
    color: #F5961E !important; }

@media (max-width: 980px) {
  .title-row.et_pb_row {
    padding-bottom: 0 !important; } }

.title-row.single-row h2 {
  margin-bottom: 0 !important; }

.title-row .et_pb_column {
  margin-bottom: 0 !important; }

.theme-text h4 {
  color: #F5961E;
  font-size: 3rem;
  font-weight: bold; }

/***********************
 * end custom classes
 ***********************/
.call-to-join h2, .call-to-join a {
  font-size: 24px !important;
  font-weight: 300 !important; }

.call-to-join .et_pb_row_11 {
  padding: 0px; }

#footer-widgets .footer-widget:nth-child(1) {
  width: 29.75%; }

#footer-widgets .footer-widget:nth-child(2) {
  width: 15.75%; }

.et_pb_promo_description {
  padding-bottom: 0px; }

.inner_title h2 {
  padding-bottom: 0px;
  margin-bottom: 0px !important;
  text-align: left !important; }

.inner_title p {
  text-align: left !important;
  font-weight: 400; }

@media only screen and (min-width: 1462px) {
  body .et_pb_row {
    padding-bottom: 0px; } }

.page-id-313 .entry-title {
  margin-bottom: 0px !important; }

h3.su-post-title {
  text-align: center !important; }

.single-post h1, .single-post h2, .single-post h3, .single-post h4, .single-post h5, .single-post h6 {
  color: #1D4F9D; }

.page-id-313 .post h2 {
  min-height: 71px; }

.page-id-313 .post .post-content {
  min-height: 81px; }

.page-id-44 .et_pb_column_1_3:nth-child(1) h4 {
  background-color: #174BA1;
  padding: 15px; }

.page-id-44 .et_pb_column_1_3:nth-child(2) h4 {
  background-color: #B3CB35;
  padding: 15px; }

.page-id-44 .et_pb_column_1_3:nth-child(3) h4 {
  background-color: #F5961E;
  padding: 15px; }

.redc {
  color: red; }

body h2 {
  color: #1A4AA2; }

.testi_fonts p {
  font-size: 3.5rem !important;
  font-weight: 100; }

.testi_fonts strong {
  font-weight: 500; }

footer#main-footer {
  background-color: #FFFFFF;
  color: #515769; }
  footer#main-footer a, footer#main-footer a:link, footer#main-footer a:visited {
    color: #515769 !important;
    font-weight: 500; }
  footer#main-footer a:hover, footer#main-footer a:focus, footer#main-footer a:active {
    color: #1A4AA2 !important; }
  footer#main-footer .et_pb_button {
    background-color: #F5961E;
    border: 0;
    border-radius: 0;
    font-size: 1.8rem;
    font-weight: 600;
    cursor: pointer;
    text-align: center;
    color: #FFFFFF !important;
    text-transform: uppercase;
    font-weight: 400 !important; }
    footer#main-footer .et_pb_button, footer#main-footer .et_pb_button:link {
      color: #FFFFFF !important; }
    footer#main-footer .et_pb_button:hover {
      border: 0;
      background-color: #d67c0a !important;
      color: #FFFFFF; }
    footer#main-footer .et_pb_button::after {
      top: 50%;
      transform: translateY(-50%); }
  footer#main-footer #footer-widgets {
    padding-top: 52px;
    padding-bottom: 10px; }
  @media (max-width: 980px) {
    footer#main-footer .footer-widget:nth-child(3) {
      margin-bottom: 30px !important; } }
  footer#main-footer .footer-widget {
    color: #515769; }
    footer#main-footer .footer-widget .et_pb_button {
      color: #fff !important; }
    footer#main-footer .footer-widget .title {
      color: #1A4AA2;
      padding-bottom: .6em;
      font-size: 2.4rem; }
    footer#main-footer .footer-widget li::before {
      border-color: #515769; }
    footer#main-footer .footer-widget:last-of-type .widget_text {
      width: 100%; }
    footer#main-footer .footer-widget .menu li {
      margin-bottom: 0; }
  footer#main-footer .et-social-icons {
    float: none;
    margin-top: 1rem; }
    @media (max-width: 980px) {
      footer#main-footer .et-social-icons {
        text-align: left; } }
    footer#main-footer .et-social-icons li {
      margin-left: 0;
      margin-right: 5px;
      padding-left: 0; }
      footer#main-footer .et-social-icons li a, footer#main-footer .et-social-icons li a:link, footer#main-footer .et-social-icons li a:visited {
        color: #1A4AA2 !important;
        font-weight: 500; }
      footer#main-footer .et-social-icons li a:hover, footer#main-footer .et-social-icons li a:focus, footer#main-footer .et-social-icons li a:active {
        color: #F5961E !important; }
      footer#main-footer .et-social-icons li:before {
        display: none; }
      footer#main-footer .et-social-icons li a {
        font-size: 1.4rem;
        padding: .2em .5em;
        background-color: #f4f5fa;
        border: 1px solid #b6d1ff;
        line-height: 1.5em; }
  footer#main-footer #footer-bottom {
    background-color: #f4f5fa;
    color: #1A4AA2;
    border-top: 1px solid #b6d1ff;
    padding: 10px 0;
    font-size: 14px; }
    footer#main-footer #footer-bottom a, footer#main-footer #footer-bottom a:link, footer#main-footer #footer-bottom a:visited {
      color: #1A4AA2 !important;
      font-weight: 500; }
    footer#main-footer #footer-bottom a:hover, footer#main-footer #footer-bottom a:focus, footer#main-footer #footer-bottom a:active {
      color: #F5961E !important; }
    footer#main-footer #footer-bottom .container {
      text-align: center;
      padding: 0px; }
      footer#main-footer #footer-bottom .container #footer-info {
        padding-bottom: 0px;
        width: 100%; }
      footer#main-footer #footer-bottom .container .copyright, footer#main-footer #footer-bottom .container .credit {
        padding-bottom: 0px; }
    @media (min-width: 981px) {
      footer#main-footer #footer-bottom .container {
        text-align: left; }
        footer#main-footer #footer-bottom .container > p {
          display: inline-block;
          padding-bottom: 0; }
      footer#main-footer #footer-bottom .copyright {
        float: left; }
      footer#main-footer #footer-bottom .credit {
        float: right; } }

#top-header {
  background-color: #f4f5fa !important;
  color: #1A4AA2 !important;
  font-size: 1.4rem;
  border-bottom: 1px solid #b6d1ff;
  z-index: 2;
  /*
	#et-secondary-menu {
		float: left;
		font-weight: normal !important;

		> ul > li {
			@include link-header;
		}
	}
*/ }
  #top-header .container {
    padding-top: 0; }
  #top-header #et-info {
    float: right;
    font-weight: normal !important;
    padding: 0 !important; }
    #top-header #et-info a, #top-header #et-info a:link, #top-header #et-info a:visited {
      color: #1A4AA2 !important;
      font-weight: 500; }
    #top-header #et-info a:hover, #top-header #et-info a:focus, #top-header #et-info a:active {
      color: #F5961E !important; }
  #top-header #et-info-phone, #top-header #et-info-email, #top-header .et-social-icons li {
    padding: .75em;
    border-left: 1px solid #b6d1ff;
    display: inline-block; }
    @media (max-width: 500px) {
      #top-header #et-info-phone, #top-header #et-info-email, #top-header .et-social-icons li {
        border-left: none;
        text-align: right;
        display: block; } }
  #top-header .et-social-icons li {
    margin: 0; }
    #top-header .et-social-icons li:last-of-type {
      border-right: 1px solid #b6d1ff; }
  #top-header #et-info-phone {
    margin-right: 0; }
  #top-header #languageSwitcher {
    display: block;
    float: right;
    line-height: 1em; }
    #top-header #languageSwitcher li {
      line-height: 1em;
      padding: .75em;
      list-style: none; }
      #top-header #languageSwitcher li a, #top-header #languageSwitcher li a:link, #top-header #languageSwitcher li a:visited {
        color: #1A4AA2 !important;
        font-weight: 500; }
      #top-header #languageSwitcher li a:hover, #top-header #languageSwitcher li a:focus, #top-header #languageSwitcher li a:active {
        color: #F5961E !important; }

header#main-header {
  background-color: #FFFFFF;
  z-index: 3; }
  header#main-header #et-top-navigation {
    text-align: left; }
    @media (min-width: 981px) {
      header#main-header #et-top-navigation {
        padding: 20px 0; } }

#top-menu li {
  font-size: 1.4rem;
  text-transform: uppercase; }

#top-menu > li a, #top-menu > li a:link, #top-menu > li a:visited {
  color: #515769 !important;
  font-weight: 500; }

#top-menu > li a:hover, #top-menu > li a:focus, #top-menu > li a:active {
  color: #1A4AA2 !important; }

#top-menu > li > a {
  padding-bottom: 1em !important;
  padding-top: 1em; }
  #top-menu > li > a::after {
    display: none; }
  #top-menu > li > a:hover {
    opacity: 1 !important; }

#top-menu > li.menu-item-has-children {
  padding-right: 0; }

#top-menu > li.current-menu-item a {
  color: #1A4AA2 !important; }

#top-menu > li ul {
  background-color: white !important;
  border: 0;
  width: initial;
  padding: 10px 0; }
  #top-menu > li ul > li {
    padding: 0; }
    #top-menu > li ul > li a, #top-menu > li ul > li a:link, #top-menu > li ul > li a:visited {
      color: #1A4AA2 !important;
      font-weight: 500; }
    #top-menu > li ul > li a:hover, #top-menu > li ul > li a:focus, #top-menu > li ul > li a:active {
      color: #1A4AA2 !important; }
    #top-menu > li ul > li a:hover {
      background-color: transparent !important; }
    #top-menu > li ul > li:hover {
      background-color: #99b7ef; }

#et_mobile_nav_menu {
  text-transform: uppercase; }
  #et_mobile_nav_menu #mobile_menu {
    background-color: #FFFFFF;
    border: 0 !important;
    padding: 0 !important; }
    #et_mobile_nav_menu #mobile_menu li.current-menu-item, #et_mobile_nav_menu #mobile_menu a:hover {
      background-color: #FFFFFF;
      opacity: 1; }
      #et_mobile_nav_menu #mobile_menu li.current-menu-item a, #et_mobile_nav_menu #mobile_menu a:hover a {
        color: #1A4AA2 !important; }
  #et_mobile_nav_menu .mobile_menu_bar::before {
    color: #1A4AA2; }

.wpcf7 input, .wpcf7 textarea, .wpcf7 select {
  font-family: inherit; }

.wpcf7 input[type=text], .wpcf7 input[type=password], .wpcf7 input[type=tel], .wpcf7 input[type=email], .wpcf7 input.text, .wpcf7 input.title, .wpcf7 textarea, .wpcf7 select {
  border: 1px solid #b6d1ff;
  padding: .5em .5em .5em .8em;
  color: #515769;
  background-color: #f4f5fa;
  font-size: 1.4rem; }

.wpcf7 input[type=submit] {
  background-color: #F5961E;
  border: 0;
  border-radius: 0;
  font-size: 1.8rem;
  font-weight: 600;
  cursor: pointer;
  text-align: center;
  color: #FFFFFF !important;
  text-transform: uppercase;
  padding: .4em 1.5em;
  font-size: 1.6rem;
  float: right; }
  .wpcf7 input[type=submit], .wpcf7 input[type=submit]:link {
    color: #FFFFFF !important; }
  .wpcf7 input[type=submit]:hover {
    border: 0;
    background-color: #d67c0a !important;
    color: #FFFFFF; }
  .wpcf7 input[type=submit]::after {
    top: 50%;
    transform: translateY(-50%); }

.wpcf7 input[type=text], .wpcf7 input[type=password], .wpcf7 input[type=tel], .wpcf7 input[type=email], .wpcf7 input.text, .wpcf7 input.title, .wpcf7 textarea, .wpcf7 select {
  width: 100%; }

.wpcf7 input[type=text], .wpcf7 input[type=password], .wpcf7 input[type=tel], .wpcf7 input[type=email], .wpcf7 input.text, .wpcf7 input.title, .wpcf7 select {
  max-width: 300px; }

footer .wpcf7 label, .wpcf7-form label {
  display: none; }

footer .wpcf7 br, .wpcf7-form br {
  display: none; }

footer .wpcf7 div[class^="field-"], .wpcf7-form div[class^="field-"] {
  margin-bottom: 1em; }

footer .wpcf7 .wpcf7-textarea, .wpcf7-form .wpcf7-textarea {
  max-height: 90px;
  display: block; }

footer .wpcf7 .wpcf7-submit, .wpcf7-form .wpcf7-submit {
  font-weight: 300; }

footer .wpcf7 .field-name, footer .wpcf7 .field-phone, .wpcf7-form .field-name, .wpcf7-form .field-phone {
  display: inline-block;
  width: 49%;
  float: left; }
  @media (max-width: 480px) {
    footer .wpcf7 .field-name, footer .wpcf7 .field-phone, .wpcf7-form .field-name, .wpcf7-form .field-phone {
      display: block;
      width: 100%;
      float: none;
      margin-right: 0; } }

footer .wpcf7 .field-name, .wpcf7-form .field-name {
  margin-right: 2%; }

footer .wpcf7 input[type=text], footer .wpcf7 input[type=password], footer .wpcf7 input[type=tel], footer .wpcf7 input[type=email], footer .wpcf7 input.text, footer .wpcf7 input.title, footer .wpcf7 select, .wpcf7-form input[type=text], .wpcf7-form input[type=password], .wpcf7-form input[type=tel], .wpcf7-form input[type=email], .wpcf7-form input.text, .wpcf7-form input.title, .wpcf7-form select {
  max-width: 100%; }

#main-content .wpcf7 div[class^="field-"] {
  margin-bottom: 2rem; }

#main-content .wpcf7 br {
  display: none; }

#main-content .wpcf7 label {
  display: block;
  margin-bottom: .4rem; }

body.home #main-content .container {
  padding-bottom: 0; }

.section-a .blocks-row .et_pb_column {
  background-color: #1A4AA2;
  padding-bottom: 3px; }
  .section-a .blocks-row .et_pb_column .block-title {
    background: #1A4AA2;
    font-size: 2.8rem;
    font-weight: 300;
    color: white;
    line-height: 1em;
    padding: .7em 1em;
    cursor: pointer;
    text-align: center;
    background-color: transparent; }
  .section-a .blocks-row .et_pb_column .block-desc {
    background-color: #FFFFFF;
    padding: 1.2em;
    font-weight: 500;
    text-transform: uppercase;
    text-align: center;
    font-size: 1.5rem; }
  .section-a .blocks-row .et_pb_column:nth-child(1) {
    background-color: #174BA1; }
  .section-a .blocks-row .et_pb_column:nth-child(2) {
    background-color: #0B768A; }
  .section-a .blocks-row .et_pb_column:nth-child(3) {
    background-color: #B3CB35; }
  .section-a .blocks-row .et_pb_column:nth-child(4) {
    background-color: #F5961E; }

.alliance h2 {
  text-align: left !important;
  border-bottom: 1px solid #e4e4e4;
  padding-bottom: .4em !important;
  margin-bottom: 0; }

.alliance h4 {
  color: #1A4AA2;
  font-weight: 600; }

.call-to-join .et_pb_promo {
  text-align: center; }

@media (min-width: 1100px) {
  .call-to-join .et_pb_promo_description {
    display: inline-block;
    margin-right: 1.5em;
    padding-bottom: 0; } }

.call-out-section .et_pb_column {
  background-color: #FFFFFF;
  padding: 3.5em 2em 3.4em; }

.call-out-section .title-row .et_pb_column {
  background-color: transparent; }

.call-out-section .et_pb_blurb_content {
  text-align: center; }
  .call-out-section .et_pb_blurb_content .et_pb_main_blurb_image {
    margin-bottom: 15px; }
  .call-out-section .et_pb_blurb_content p {
    font-size: 16px;
    font-weight: 400; }
  .call-out-section .et_pb_blurb_content h4 {
    padding-bottom: .1em;
    font-weight: 600; }
    .call-out-section .et_pb_blurb_content h4 a {
      font-weight: 400;
      font-size: 22px; }

.et_pb_post .entry-title {
  margin-top: 16px;
  padding-bottom: 8px;
  font-weight: 600; }

.tparrows {
  background-color: rgba(255, 255, 255, 0.2); }

.tparrows:hover {
  background-color: #1A4AA2; }

.et_pb_blog_grid .et_pb_post {
  border: 1px solid #fff; }

.blog_posts_home h2 {
  text-align: left !important;
  margin-bottom: 0px !important; }
  .blog_posts_home h2 a {
    text-align: left; }

.blog_posts_home p {
  text-align: left;
  color: #444f63 !important;
  font-weight: 400;
  line-height: 1.5em; }

.ares .tp-bullet:hover, .ares .tp-bullet.selected {
  background-color: #F5961E; }

.communities {
  max-width: 100%;
  margin-left: auto;
  margin-right: auto;
  margin-top: 1rem; }
  .communities:after {
    content: " ";
    display: block;
    clear: both; }
  .communities .su-post {
    width: 49.29577%;
    float: left;
    margin-right: 1.40845%;
    margin-bottom: 1em;
    margin-top: 1em;
    text-align: center; }
    .communities .su-post:nth-child(2n) {
      width: 49.29577%;
      float: right;
      margin-right: 0; }
    @media (min-width: 600px) {
      .communities .su-post {
        width: 32.39437%;
        float: left;
        margin-right: 1.40845%; }
        .communities .su-post:nth-child(2n) {
          width: 32.39437%;
          float: left;
          margin-right: 1.40845%; }
        .communities .su-post:nth-child(3n) {
          width: 32.39437%;
          float: right;
          margin-right: 0; } }
    @media (min-width: 768px) {
      .communities .su-post {
        width: 23.94366%;
        float: left;
        margin-right: 1.40845%; }
        .communities .su-post:nth-child(2n) {
          width: 23.94366%;
          float: left;
          margin-right: 1.40845%; }
        .communities .su-post:nth-child(3n) {
          width: 23.94366%;
          float: left;
          margin-right: 1.40845%; }
        .communities .su-post:nth-child(4n) {
          width: 23.94366%;
          float: right;
          margin-right: 0; } }
    .communities .su-post .su-post-thumbnail {
      float: none;
      margin-right: 0;
      display: initial; }
      .communities .su-post .su-post-thumbnail img {
        height: 80px;
        width: auto; }
    .communities .su-post h3.su-post-title {
      font-size: 1.6rem;
      text-transform: none; }

#main-content .et-social-icons {
  float: none;
  margin-top: 1rem;
  padding-left: 0; }
  @media (max-width: 980px) {
    #main-content .et-social-icons {
      text-align: left; } }
  #main-content .et-social-icons li {
    margin-left: 0;
    margin-right: 5px;
    padding-left: 0; }
    #main-content .et-social-icons li a, #main-content .et-social-icons li a:link, #main-content .et-social-icons li a:visited {
      color: #1A4AA2 !important;
      font-weight: 500; }
    #main-content .et-social-icons li a:hover, #main-content .et-social-icons li a:focus, #main-content .et-social-icons li a:active {
      color: #F5961E !important; }
    #main-content .et-social-icons li:before {
      display: none; }
    #main-content .et-social-icons li a {
      font-size: 1.4rem;
      padding: .2em .5em;
      background-color: #f4f5fa;
      border: 1px solid #b6d1ff;
      line-height: 1.5em; }

.page-template-page-thankyou #main-content h1 {
  text-align: center; }

.page-template-page-thankyou .entry-content .et_pb_section {
  padding-top: 0 !important;
  padding-bottom: 5rem !important; }

.page-template-page-thankyou .et_pb_button_module_wrapper {
  text-align: center;
  margin-top: 4rem; }
  .page-template-page-thankyou .et_pb_button_module_wrapper a, .page-template-page-thankyou .et_pb_button_module_wrapper a:link, .page-template-page-thankyou .et_pb_button_module_wrapper a:visited {
    color: #515769 !important;
    font-weight: 500; }
  .page-template-page-thankyou .et_pb_button_module_wrapper a:hover, .page-template-page-thankyou .et_pb_button_module_wrapper a:focus, .page-template-page-thankyou .et_pb_button_module_wrapper a:active {
    color: #1A4AA2 !important; }

.page-template-page-thankyou .et_pb_button {
  background-color: #F5961E;
  border: 0;
  border-radius: 0;
  font-size: 1.8rem;
  font-weight: 600;
  cursor: pointer;
  text-align: center;
  color: #FFFFFF !important;
  text-transform: uppercase;
  font-weight: 400 !important; }
  .page-template-page-thankyou .et_pb_button, .page-template-page-thankyou .et_pb_button:link {
    color: #FFFFFF !important; }
  .page-template-page-thankyou .et_pb_button:hover {
    border: 0;
    background-color: #d67c0a !important;
    color: #FFFFFF; }
  .page-template-page-thankyou .et_pb_button::after {
    top: 50%;
    transform: translateY(-50%); }

.page-template-page-thankyou-multilang .thankyous {
  padding: 5em 0; }
  .page-template-page-thankyou-multilang .thankyous h3 {
    font-weight: bold;
    text-align: center !important;
    line-height: 1.5em !important; }
  .page-template-page-thankyou-multilang .thankyous .et_pb_row:not(:first-child) {
    margin-top: 2em; }
  .page-template-page-thankyou-multilang .thankyous a, .page-template-page-thankyou-multilang .thankyous a:link, .page-template-page-thankyou-multilang .thankyous a:visited {
    color: #515769 !important;
    font-weight: 500; }
  .page-template-page-thankyou-multilang .thankyous a:hover, .page-template-page-thankyou-multilang .thankyous a:focus, .page-template-page-thankyou-multilang .thankyous a:active {
    color: #1A4AA2 !important; }
  .page-template-page-thankyou-multilang .thankyous .et_pb_button {
    background-color: #F5961E;
    border: 0;
    border-radius: 0;
    font-size: 1.8rem;
    font-weight: 600;
    cursor: pointer;
    text-align: center;
    color: #FFFFFF !important;
    text-transform: uppercase;
    font-size: 1.2em !important;
    font-weight: 400 !important; }
    .page-template-page-thankyou-multilang .thankyous .et_pb_button, .page-template-page-thankyou-multilang .thankyous .et_pb_button:link {
      color: #FFFFFF !important; }
    .page-template-page-thankyou-multilang .thankyous .et_pb_button:hover {
      border: 0;
      background-color: #d67c0a !important;
      color: #FFFFFF; }
    .page-template-page-thankyou-multilang .thankyous .et_pb_button::after {
      top: 50%;
      transform: translateY(-50%); }
  .page-template-page-thankyou-multilang .thankyous .chinese-block {
    margin-bottom: 0 !important; }
  .page-template-page-thankyou-multilang .thankyous p {
    padding-bottom: .6em !important; }

.groups-title {
  background: url("/wp-content/uploads/2017/01/slide-1-1.jpg") center center no-repeat;
  background-size: cover;
  color: #FFFFFF; }
  .groups-title h1 {
    color: #FFFFFF; }

.groups-wrapper {
  margin-bottom: 3rem; }
  .groups-wrapper .container {
    padding-top: 2rem !important;
    padding-bottom: 2rem !important; }
  .groups-wrapper .filters {
    text-align: right; }
    .groups-wrapper .filters::before, .groups-wrapper .filters::after {
      content: "";
      display: table; }
    .groups-wrapper .filters:after {
      clear: both; }
    .groups-wrapper .filters form {
      float: right; }
    .groups-wrapper .filters input[type="submit"] {
      background-color: #F5961E;
      border: 0;
      border-radius: 0;
      font-size: 1.8rem;
      font-weight: 600;
      cursor: pointer;
      text-align: center;
      color: #FFFFFF !important;
      text-transform: uppercase;
      font-size: 1.2rem !important;
      padding: .5em; }
      .groups-wrapper .filters input[type="submit"], .groups-wrapper .filters input[type="submit"]:link {
        color: #FFFFFF !important; }
      .groups-wrapper .filters input[type="submit"]:hover {
        border: 0;
        background-color: #d67c0a !important;
        color: #FFFFFF; }
      .groups-wrapper .filters input[type="submit"]::after {
        top: 50%;
        transform: translateY(-50%); }
  .groups-wrapper .entry-list > .groups:nth-child(odd) {
    background-color: #f4f5fa !important; }
  .groups-wrapper .entry-list .entry-content {
    max-width: 100%;
    margin-left: auto;
    margin-right: auto; }
    .groups-wrapper .entry-list .entry-content::before, .groups-wrapper .entry-list .entry-content::after {
      content: "";
      display: table; }
    .groups-wrapper .entry-list .entry-content:after {
      clear: both; }
    .groups-wrapper .entry-list .entry-content:after {
      content: " ";
      display: block;
      clear: both; }
    .groups-wrapper .entry-list .entry-content > .images {
      width: 32.39437%;
      float: left;
      margin-right: 1.40845%; }
      .groups-wrapper .entry-list .entry-content > .images .feature img {
        width: 100%; }
      .groups-wrapper .entry-list .entry-content > .images .others {
        display: none; }
        .groups-wrapper .entry-list .entry-content > .images .others a {
          flex: 0 1 49%; }
          .groups-wrapper .entry-list .entry-content > .images .others a:first-child {
            margin-right: 2%; }
          .groups-wrapper .entry-list .entry-content > .images .others a img {
            width: 100%; }
    .groups-wrapper .entry-list .entry-content > .info {
      width: 40.84507%;
      float: left;
      margin-right: 1.40845%; }
    .groups-wrapper .entry-list .entry-content > .contact {
      width: 23.94366%;
      float: right;
      margin-right: 0;
      overflow: hidden; }
    @media (max-width: 768px) {
      .groups-wrapper .entry-list .entry-content > .images {
        width: 100%;
        float: left;
        margin-left: 0;
        margin-right: 0;
        margin-bottom: 2rem; }
      .groups-wrapper .entry-list .entry-content > .info {
        width: 49.29577%;
        float: left;
        margin-right: 1.40845%; }
      .groups-wrapper .entry-list .entry-content > .contact {
        width: 49.29577%;
        float: right;
        margin-right: 0; } }
    @media (max-width: 480px) {
      .groups-wrapper .entry-list .entry-content > .info {
        width: 100%;
        float: left;
        margin-left: 0;
        margin-right: 0;
        margin-bottom: 2rem; }
      .groups-wrapper .entry-list .entry-content > .contact {
        width: 100%;
        float: left;
        margin-left: 0;
        margin-right: 0; } }

.pagination {
  text-align: right;
  font-size: 2rem; }
  .pagination .nav-links > * {
    margin: .5rem;
    padding: 1rem;
    display: inline-block; }

.screen-reader-text {
  display: none; }

.searchandfilter li {
  padding-left: 10px;
  padding-right: 0;
  margin-bottom: .5em; }

.media-wrapper .container {
  padding-top: 2rem !important;
  padding-bottom: 2rem !important; }

.media-wrapper .entry-list .entry {
  padding: 1rem 0; }
  .media-wrapper .entry-list .entry h3 {
    line-height: 1.3em !important;
    text-transform: none; }

.media-wrapper .entry-list .meta {
  font-size: 2rem;
  margin-bottom: .5rem; }
  .media-wrapper .entry-list .meta .date {
    margin-right: 1rem; }

body.archive .page-title {
  background: url("/wp-content/uploads/2017/01/slide-1-1.jpg") center center no-repeat;
  background-size: cover;
  color: #FFFFFF; }
  body.archive .page-title h1 {
    color: #FFFFFF; }

body.archive #content-area article::before, body.archive #content-area article::after {
  content: "";
  display: table; }

body.archive #content-area article:after {
  clear: both; }

body.archive #content-area .entry-title {
  padding-bottom: 2rem; }

body.archive #content-area a img {
  width: 300px;
  height: auto;
  float: left;
  margin-right: 2rem;
  margin-bottom: 2rem; }
  @media (max-width: 500px) {
    body.archive #content-area a img {
      width: 100%;
      height: auto;
      float: none;
      text-align: center;
      display: block;
      margin: 0 auto;
      margin-bottom: 2rem; } }

/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VsdHVyZWNvbm4uY3NzIiwic291cmNlcyI6WyJjdWx0dXJlY29ubi5zY3NzIiwiX2Jhc2Uuc2NzcyIsIi4uL2Jvd2VyX2NvbXBvbmVudHMvc3VzeS9zYXNzL19zdXN5LnNjc3MiLCIuLi9ib3dlcl9jb21wb25lbnRzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL19zdXN5LnNjc3MiLCIuLi9ib3dlcl9jb21wb25lbnRzL3N1c3kvc2Fzcy9zdXN5L19zdS5zY3NzIiwiLi4vYm93ZXJfY29tcG9uZW50cy9zdXN5L3Nhc3Mvc3VzeS9zdS9fdXRpbGl0aWVzLnNjc3MiLCIuLi9ib3dlcl9jb21wb25lbnRzL3N1c3kvc2Fzcy9zdXN5L3N1L19zZXR0aW5ncy5zY3NzIiwiLi4vYm93ZXJfY29tcG9uZW50cy9zdXN5L3Nhc3Mvc3VzeS9zdS9fdmFsaWRhdGlvbi5zY3NzIiwiLi4vYm93ZXJfY29tcG9uZW50cy9zdXN5L3Nhc3Mvc3VzeS9zdS9fZ3JpZC5zY3NzIiwiLi4vYm93ZXJfY29tcG9uZW50cy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvX2Zsb2F0LnNjc3MiLCIuLi9ib3dlcl9jb21wb25lbnRzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9fc2hhcmVkLnNjc3MiLCIuLi9ib3dlcl9jb21wb25lbnRzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9fc3VwcG9ydC5zY3NzIiwiLi4vYm93ZXJfY29tcG9uZW50cy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc3VwcG9ydC9fc3VwcG9ydC5zY3NzIiwiLi4vYm93ZXJfY29tcG9uZW50cy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc3VwcG9ydC9fcHJlZml4LnNjc3MiLCIuLi9ib3dlcl9jb21wb25lbnRzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zdXBwb3J0L19iYWNrZ3JvdW5kLnNjc3MiLCIuLi9ib3dlcl9jb21wb25lbnRzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zdXBwb3J0L19ib3gtc2l6aW5nLnNjc3MiLCIuLi9ib3dlcl9jb21wb25lbnRzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zdXBwb3J0L19yZW0uc2NzcyIsIi4uL2Jvd2VyX2NvbXBvbmVudHMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3N1cHBvcnQvX2NsZWFyZml4LnNjc3MiLCIuLi9ib3dlcl9jb21wb25lbnRzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zaGFyZWQvX2luc3BlY3Quc2NzcyIsIi4uL2Jvd2VyX2NvbXBvbmVudHMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3NoYXJlZC9fb3V0cHV0LnNjc3MiLCIuLi9ib3dlcl9jb21wb25lbnRzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zaGFyZWQvX2RpcmVjdGlvbi5zY3NzIiwiLi4vYm93ZXJfY29tcG9uZW50cy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc2hhcmVkL19iYWNrZ3JvdW5kLnNjc3MiLCIuLi9ib3dlcl9jb21wb25lbnRzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zaGFyZWQvX2NvbnRhaW5lci5zY3NzIiwiLi4vYm93ZXJfY29tcG9uZW50cy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc2hhcmVkL19tYXJnaW5zLnNjc3MiLCIuLi9ib3dlcl9jb21wb25lbnRzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zaGFyZWQvX3BhZGRpbmcuc2NzcyIsIi4uL2Jvd2VyX2NvbXBvbmVudHMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L2Zsb2F0L19jb250YWluZXIuc2NzcyIsIi4uL2Jvd2VyX2NvbXBvbmVudHMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L2Zsb2F0L19zcGFuLnNjc3MiLCIuLi9ib3dlcl9jb21wb25lbnRzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9mbG9hdC9fZW5kLnNjc3MiLCIuLi9ib3dlcl9jb21wb25lbnRzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9mbG9hdC9faXNvbGF0ZS5zY3NzIiwiLi4vYm93ZXJfY29tcG9uZW50cy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19zZXR0aW5ncy5zY3NzIiwiLi4vYm93ZXJfY29tcG9uZW50cy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L192YWxpZGF0aW9uLnNjc3MiLCIuLi9ib3dlcl9jb21wb25lbnRzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2dyaWRzLnNjc3MiLCIuLi9ib3dlcl9jb21wb25lbnRzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2JveC1zaXppbmcuc2NzcyIsIi4uL2Jvd2VyX2NvbXBvbmVudHMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fY29udGV4dC5zY3NzIiwiLi4vYm93ZXJfY29tcG9uZW50cy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19iYWNrZ3JvdW5kLnNjc3MiLCIuLi9ib3dlcl9jb21wb25lbnRzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2NvbnRhaW5lci5zY3NzIiwiLi4vYm93ZXJfY29tcG9uZW50cy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19zcGFuLnNjc3MiLCIuLi9ib3dlcl9jb21wb25lbnRzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2d1dHRlcnMuc2NzcyIsIi4uL2Jvd2VyX2NvbXBvbmVudHMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9faXNvbGF0ZS5zY3NzIiwiLi4vYm93ZXJfY29tcG9uZW50cy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19nYWxsZXJ5LnNjc3MiLCIuLi9ib3dlcl9jb21wb25lbnRzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX3Jvd3Muc2NzcyIsIi4uL2Jvd2VyX2NvbXBvbmVudHMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fbWFyZ2lucy5zY3NzIiwiLi4vYm93ZXJfY29tcG9uZW50cy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19wYWRkaW5nLnNjc3MiLCIuLi9ib3dlcl9jb21wb25lbnRzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2JsZWVkLnNjc3MiLCIuLi9ib3dlcl9jb21wb25lbnRzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2JyZWFrcG9pbnQtcGx1Z2luLnNjc3MiLCJfcmV3cml0ZS5zY3NzIiwiX2dsb2JhbC5zY3NzIiwiX2dsb2JhbF9kaXZpLnNjc3MiLCJfZm9vdGVyLnNjc3MiLCJfaGVhZGVyLnNjc3MiLCJfZm9ybS5zY3NzIiwiX2hvbWUuc2NzcyIsIl9jb21tdW5pdGllcy5zY3NzIiwiX2NvbnRhY3Quc2NzcyIsIl90aGFua3lvdS5zY3NzIiwiX2dyb3Vwcy5zY3NzIiwiX21lZGlhLnNjc3MiLCJfYXJjaGl2ZS5zY3NzIl0sInNvdXJjZXNDb250ZW50IjpbIkBpbXBvcnQgdXJsKCdodHRwczovL2ZvbnRzLmdvb2dsZWFwaXMuY29tL2Nzcz9mYW1pbHk9RXhvKzI6MzAwLDQwMCw1MDAsNzAwJyk7XG5cbkBpbXBvcnQgJ2Jhc2UnO1xuQGltcG9ydCAnYm93ZXJfY29tcG9uZW50cy9zdXN5L3Nhc3MvX3N1c3knO1xuXG5AaW1wb3J0ICdyZXdyaXRlJztcbkBpbXBvcnQgJ2dsb2JhbCc7XG5AaW1wb3J0ICdnbG9iYWxfZGl2aSc7XG5cbkBpbXBvcnQgJ2Zvb3Rlcic7XG5AaW1wb3J0ICdoZWFkZXInO1xuQGltcG9ydCAnZm9ybSc7XG5cbkBpbXBvcnQgJ2hvbWUnO1xuQGltcG9ydCAnY29tbXVuaXRpZXMnO1xuQGltcG9ydCAnY29udGFjdCc7XG5AaW1wb3J0ICd0aGFua3lvdSc7XG5AaW1wb3J0ICdncm91cHMnO1xuQGltcG9ydCAnbWVkaWEnO1xuXG5AaW1wb3J0ICdhcmNoaXZlJztcblxuIiwiLyoqKioqKioqKioqKioqKioqKioqKioqKlxuICogXHRjb2xvclxuKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuLy8gYmFzaWNcbiRjLWZlYXR1cmU6ICMxQTRBQTI7XG4kYy1mZWF0dXJlLTI6ICNGNTk2MUU7XG5cbiRjLWJnOiAjZjRmNWZhO1xuJGMtYmctMjogJGMtYmc7XG4kYy13aGl0ZTogI0ZGRkZGRjtcblxuJGMtdGV4dDogIzUxNTc2OTtcbiRjLXRleHQtb24tYmc6ICNGRkZGRkY7XG5cbiRjLWJvcmRlcjogI2I2ZDFmZjtcblxuLy8gbGlua3NcbiRjLWxpbms6ICRjLXRleHQ7XG4kYy1saW5rLWhvdmVyOiAkYy1mZWF0dXJlO1xuXG4kYy1saW5rLTI6ICRjLWZlYXR1cmU7XG4kYy1saW5rLWhvdmVyLTI6ICRjLWZlYXR1cmUtMjtcblxuLy8gYnV0dG9uXG4kYy1idXR0b246ICRjLWZlYXR1cmUtMjtcbiRjLXRleHQtYnV0dG9uOiAkYy13aGl0ZTtcblxuLy8gbmF2XG4kYy1uYXY6ICRjLWZlYXR1cmU7XG5cbi8vIGhlYWRlclxuJGMtaGVhZGVyOiAkYy13aGl0ZTtcbiRjLXRleHQtaGVhZGVyOiAkYy10ZXh0O1xuXG4kYy1oZWFkZXItdG9wOiAkYy1iZztcbiRjLXRleHQtaGVhZGVyLXRvcDogJGMtZmVhdHVyZTtcblxuLy8gZm9vdGVyXG4kYy1mb290ZXI6ICRjLXdoaXRlO1xuJGMtdGV4dC1mb290ZXI6ICRjLXRleHQ7XG5cbiRjLWZvb3Rlci1ib3R0b206ICRjLWJnO1xuJGMtdGV4dC1mb290ZXItYm90dG9tOiAkYy1mZWF0dXJlO1xuXG5cbi8vIGZvbnRcbiRmLXdlaWdodC1ub3JtYWw6IDQwMDtcbiRmLXdlaWdodC1zZW1pYm9sZDogNjAwO1xuJGYtd2VpZ2h0LWJvbGQ6IDcwMDtcblxuXG4vLyBicmVha3BvaW50XG5cbi8vIG1pc2NcbiRib3JkZXItZGVmYXVsdDogMXB4IHNvbGlkICRjLWJvcmRlcjtcblxuLy8gc3VzeVxuJHN1c3k6IChcbiAgICBjb2x1bW5zOiAxMixcbiAgICBndXR0ZXJzOiAuMixcbiAgICBtYXRoOiBmbHVpZCxcbik7XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKipcbiAqIFx0bWl4aW5zXG4qKioqKioqKioqKioqKioqKioqKioqKioqL1xuQG1peGluIGxpbmsgKCRjb2xvciwgJGNvbG9yLWFjdGl2ZSkge1xuXHRhIHtcblx0XHQmLCAmOmxpbmssICY6dmlzaXRlZCB7XG5cdFx0XHRjb2xvcjogJGNvbG9yICFpbXBvcnRhbnQ7XG5cdFx0XHRmb250LXdlaWdodDogNTAwO1xuXHRcdH1cblxuXHRcdCY6aG92ZXIsICY6Zm9jdXMsICY6YWN0aXZlIHtcblx0XHRcdGNvbG9yOiAkY29sb3ItYWN0aXZlICFpbXBvcnRhbnQ7XG5cdFx0fVxuXHR9XG59XG5cbkBtaXhpbiBsaW5rLWZvb3RlciB7XG5cdEBpbmNsdWRlIGxpbmsgKCRjLWxpbmssICRjLWxpbmstaG92ZXIpO1xufVxuXG5AbWl4aW4gbGluay1oZWFkZXIge1xuXHRAaW5jbHVkZSBsaW5rICgkYy1saW5rLTIsICRjLWxpbmstaG92ZXItMik7XG4vL1xuXHQvLyBhOmhvdmVyIHtcblx0XHQvLyB0cmFuc2l0aW9uOiBub25lICFpbXBvcnRhbnQ7XG5cdFx0Ly8gb3BhY2l0eTogMSAhaW1wb3J0YW50O1xuXHQvLyB9XG59XG5cbi8vIGJ1dHRvbnNcbkBtaXhpbiBidXR0b24gKCRjb2xvcjogJGMtZmVhdHVyZS0yLCAkY29sb3ItaG92ZXI6IGRhcmtlbigkYy1mZWF0dXJlLTIsIDEwJSksXG5cdFx0XHRcdCRjb2xvci10ZXh0OiAkYy10ZXh0LWJ1dHRvbiwgJGNvbG9yLXRleHQtaG92ZXI6ICRjLXRleHQtYnV0dG9uKSB7XG5cdGJhY2tncm91bmQtY29sb3I6ICRjb2xvcjtcblx0Ym9yZGVyOiAwO1xuXHRib3JkZXItcmFkaXVzOiAwO1xuXHRmb250LXNpemU6IDEuOHJlbTtcblx0Zm9udC13ZWlnaHQ6ICRmLXdlaWdodC1zZW1pYm9sZDtcblx0Y3Vyc29yOiBwb2ludGVyO1xuXHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cdGNvbG9yOiAkY29sb3ItdGV4dCAhaW1wb3J0YW50O1xuXHR0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuXG5cdCYsICY6bGluayB7XG5cdFx0Y29sb3I6ICRjb2xvci10ZXh0ICFpbXBvcnRhbnQ7XG5cdH1cblxuXHQmOmhvdmVyIHtcblx0XHRib3JkZXI6IDA7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJGNvbG9yLWhvdmVyICFpbXBvcnRhbnQ7XG5cdFx0Y29sb3I6ICRjb2xvci10ZXh0LWhvdmVyO1xuXHR9XG5cblx0Jjo6YWZ0ZXIge1xuXHRcdHRvcDogNTAlO1xuXHRcdHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTtcblx0fVxufVxuXG5AbWl4aW4gYnV0dG9uLXJldmVyc2UgKCRjb2xvcjogJGMtZmVhdHVyZS0yLCAkY29sb3ItaG92ZXI6ICRjLWZlYXR1cmUtMil7XG5cdEBpbmNsdWRlIGJ1dHRvbigkY29sb3I6ICRjb2xvciwgJGNvbG9yLWhvdmVyOiAkY29sb3ItaG92ZXIpO1xufVxuXG4vLyBjbGVhcmZpeFxuQG1peGluIGNsZWFyZml4IHtcblx0Jjo6YmVmb3JlLFxuXHQmOjphZnRlciB7XG5cdFx0Y29udGVudDogXCJcIjtcblx0XHRkaXNwbGF5OiB0YWJsZTtcblx0fVxuXHQmOmFmdGVyIHtcblx0XHRjbGVhcjogYm90aDtcblx0fVxufVxuXG5AbWl4aW4gYm94LXRpdGxlIHtcblx0YmFja2dyb3VuZDogJGMtZmVhdHVyZTtcblx0Zm9udC1zaXplOiAyLjhyZW07XG5cdGZvbnQtd2VpZ2h0OiAzMDA7XG5cdGNvbG9yOiB3aGl0ZTtcblx0bGluZS1oZWlnaHQ6IDFlbTtcblx0cGFkZGluZzogLjdlbSAxZW07XG5cdGN1cnNvcjogcG9pbnRlcjtcblx0dGV4dC1hbGlnbjogY2VudGVyO1xufVxuXG5AbWl4aW4gc2VjdGlvbi10aXRsZSB7XG5cdGNvbG9yOiAkYy1mZWF0dXJlO1xuXHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cdGZvbnQtc2l6ZTogM3JlbTtcblx0cGFkZGluZy1ib3R0b206IC44ZW07XG5cdGZvbnQtd2VpZ2h0OiBub3JtYWw7XG5cdGxpbmUtaGVpZ2h0OiAxLjJlbTtcbn1cblxuQG1peGluIHNlY3Rpb24tc3VidGl0bGUge1xuXHRmb250LXNpemU6IDJyZW07XG5cdGxpbmUtaGVpZ2h0OiAxLjVlbTtcblx0Y29sb3I6ICRjLWZlYXR1cmU7XG5cdHRleHQtYWxpZ246IGNlbnRlcjtcbn1cblxuQG1peGluIGhvbWUtYmctY29sb3IoJGNvbG9yKSB7XG5cdGJhY2tncm91bmQtY29sb3I6ICRjb2xvciAhaW1wb3J0YW50O1xufVxuXG5AbWl4aW4gcGFnZS10aXRsZSgpIHtcblx0YmFja2dyb3VuZDogdXJsKCcvd3AtY29udGVudC91cGxvYWRzLzIwMTcvMDEvc2xpZGUtMS0xLmpwZycpIGNlbnRlciBjZW50ZXIgbm8tcmVwZWF0O1xuXHRiYWNrZ3JvdW5kLXNpemU6IGNvdmVyO1xuXHRjb2xvcjogJGMtd2hpdGU7XG5cblx0aDEge1xuXHRcdGNvbG9yOiAkYy13aGl0ZTtcblx0fVxufVxuIiwiLy8gU3VzeVxuLy8gPT09PVxuXG5AaW1wb3J0ICdzdXN5L2xhbmd1YWdlL3N1c3knO1xuIiwiLy8gU3VzeSBOZXh0IFN5bnRheFxuLy8gPT09PT09PT09PT09PT09PVxuXG4kc3VzeS12ZXJzaW9uOiAyLjE7XG5cbkBpbXBvcnQgXCIuLi9zdVwiO1xuQGltcG9ydCBcIi4uL291dHB1dC9mbG9hdFwiO1xuXG5AaW1wb3J0IFwic3VzeS9zZXR0aW5nc1wiO1xuQGltcG9ydCBcInN1c3kvdmFsaWRhdGlvblwiO1xuQGltcG9ydCBcInN1c3kvZ3JpZHNcIjtcbkBpbXBvcnQgXCJzdXN5L2JveC1zaXppbmdcIjtcbkBpbXBvcnQgXCJzdXN5L2NvbnRleHRcIjtcbkBpbXBvcnQgXCJzdXN5L2JhY2tncm91bmRcIjtcbkBpbXBvcnQgXCJzdXN5L2NvbnRhaW5lclwiO1xuQGltcG9ydCBcInN1c3kvc3BhblwiO1xuQGltcG9ydCBcInN1c3kvZ3V0dGVyc1wiO1xuQGltcG9ydCBcInN1c3kvaXNvbGF0ZVwiO1xuQGltcG9ydCBcInN1c3kvZ2FsbGVyeVwiO1xuQGltcG9ydCBcInN1c3kvcm93c1wiO1xuQGltcG9ydCBcInN1c3kvbWFyZ2luc1wiO1xuQGltcG9ydCBcInN1c3kvcGFkZGluZ1wiO1xuQGltcG9ydCBcInN1c3kvYmxlZWRcIjtcbkBpbXBvcnQgXCJzdXN5L2JyZWFrcG9pbnQtcGx1Z2luXCI7XG4iLCIvLyBTdVxuLy8gPT1cblxuQGltcG9ydCBcInN1L3V0aWxpdGllc1wiO1xuQGltcG9ydCBcInN1L3NldHRpbmdzXCI7XG5AaW1wb3J0IFwic3UvdmFsaWRhdGlvblwiO1xuQGltcG9ydCBcInN1L2dyaWRcIjtcbiIsIi8vIE1hcCBGdW5jdGlvbnNcbi8vID09PT09PT09PT09PT1cblxuXG4vLyBUcnVuY2F0ZSBMaXN0XG4vLyAtLS0tLS0tLS0tLS0tXG4vLyAtIFJldHVybiBhIGxpc3QsIHRydW5jYXRlZCB0byBhIGdpdmVuIGxlbmd0aFxuQGZ1bmN0aW9uIF9zdXN5LXRydW5jYXRlLWxpc3QoXG4gICRsaXN0LFxuICAkbGVuZ3RoXG4pIHtcbiAgJF9yZXR1cm46ICgpO1xuXG4gIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggbGVuZ3RoKCRsaXN0KSB7XG4gICAgJF9yZXR1cm46IGlmKCRpIDw9ICRsZW5ndGgsIGFwcGVuZCgkX3JldHVybiwgbnRoKCRsaXN0LCAkaSkpLCAkX3JldHVybik7XG4gIH1cblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuXG5cbi8vIERlZXAgR2V0XG4vLyAtLS0tLS0tLVxuLy8gLSBSZXR1cm4gYSB2YWx1ZSBkZWVwIGluIG5lc3RlZCBtYXBzXG5AZnVuY3Rpb24gX3N1c3ktZGVlcC1nZXQoXG4gICRtYXAsXG4gICRrZXlzLi4uXG4pIHtcbiAgJF9yZXR1cm46ICRtYXA7XG5cbiAgQGVhY2ggJGtleSBpbiAka2V5cyB7XG4gICAgQGlmIHR5cGUtb2YoJF9yZXR1cm4pID09IG1hcCB7XG4gICAgICAkX3JldHVybjogbWFwLWdldCgkX3JldHVybiwgJGtleSk7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cblxuXG4vLyBEZWVwIFNldFxuLy8gLS0tLS0tLS1cbi8vIC0gU2V0IGEgdmFsdWUgZGVlcCBpbiBuZXN0ZWQgbWFwc1xuQGZ1bmN0aW9uIF9zdXN5LWRlZXAtc2V0KFxuICAkbWFwLFxuICAka2V5cy12YWx1ZS4uLlxuKSB7XG4gICRfdmFsdWU6IG50aCgka2V5cy12YWx1ZSwgLTEpO1xuICAkX2tleXM6IF9zdXN5LXRydW5jYXRlLWxpc3QoJGtleXMtdmFsdWUsIGxlbmd0aCgka2V5cy12YWx1ZSkgLSAxKTtcbiAgJF9sZW5ndGg6IGxlbmd0aCgkX2tleXMpO1xuICAkX3JldHVybjogKCk7XG5cbiAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAkX2xlbmd0aCB7XG4gICAgJF9uOiAwIC0gJGk7XG4gICAgJF9sZXZlbDogX3N1c3ktdHJ1bmNhdGUtbGlzdCgkX2tleXMsICRfbGVuZ3RoICsgJF9uKTtcbiAgICAkX2xldmVsOiBfc3VzeS1kZWVwLWdldCgkbWFwLCAkX2xldmVsLi4uKTtcbiAgICAkX21lcmdlOiBudGgoJF9rZXlzLCAkX24pO1xuICAgICRfbWVyZ2U6ICgkX21lcmdlOiAkX3ZhbHVlKTtcbiAgICAkX3JldHVybjogaWYoJF9sZXZlbCwgbWFwLW1lcmdlKCRfbGV2ZWwsICRfbWVyZ2UpLCAkX21lcmdlKTtcbiAgICAkX3ZhbHVlOiAkX3JldHVybjtcbiAgfVxuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG5cblxuLy8gRGVlcCBNZXJnZVxuLy8gLS0tLS0tLS0tLVxuLy8gUmV0dXJuIDIgb2JqZWN0cyBvZiBhbnkgZGVwdGgsIG1lcmdlZFxuQGZ1bmN0aW9uIF9zdXN5LWRlZXAtbWVyZ2UoXG4gICRtYXAxLFxuICAkbWFwMlxuKSB7XG5cbiAgQGlmIHR5cGUtb2YoJG1hcDEpICE9IG1hcCBvciB0eXBlLW9mKCRtYXAyKSAhPSBtYXAge1xuICAgICRtYXAxOiAkbWFwMjtcbiAgfSBAZWxzZSB7XG4gICAgQGVhY2ggJGtleSwgJHZhbHVlIGluICRtYXAyIHtcbiAgICAgICRfbmV3OiAoJGtleTogX3N1c3lfZGVlcC1tZXJnZShtYXAtZ2V0KCRtYXAxLCAka2V5KSwgJHZhbHVlKSk7XG4gICAgICAkbWFwMTogbWFwLW1lcmdlKCRtYXAxLCAkX25ldyk7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkbWFwMTtcbn1cblxuXG4vLyBEZWVwIEhhcy1LZXlcbi8vIC0tLS0tLS0tLS0tLVxuLy8gLSBSZXR1cm4gdHJ1ZSBpZiBhIGRlZXAga2V5IGV4aXN0c1xuQGZ1bmN0aW9uIF9zdXN5LWRlZXAtaGFzLWtleShcbiAgJG1hcCxcbiAgJGtleXMuLi5cbikge1xuICAkX3JldHVybjogbnVsbDtcbiAgJF9zdG9wOiBmYWxzZTtcblxuICBAZWFjaCAka2V5IGluICRrZXlzIHtcbiAgICBAaWYgbm90KCRfc3RvcCkge1xuICAgICAgJF9yZXR1cm46IG1hcC1oYXMta2V5KCRtYXAsICRrZXkpO1xuICAgIH1cblxuICAgIEBpZiAkX3JldHVybiB7XG4gICAgICAkbWFwOiBtYXAtZ2V0KCRtYXAsICRrZXkpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJF9zdG9wOiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG4iLCIvLyBTZXR0aW5nc1xuLy8gPT09PT09PT1cblxuLy8gVmVyc2lvblxuLy8gLS0tLS0tLVxuJHN1LXZlcnNpb246IDEuMTtcblxuXG4vLyBEZWZhdWx0IFNldHRpbmdzXG4vLyAtLS0tLS0tLS0tLS0tLS0tXG4vLyBQUklWQVRFOiBUaGUgYmFzaWMgc2V0dGluZ3NcbiRzdXN5LWRlZmF1bHRzOiAoXG4gIGNvbHVtbnM6IDQsXG4gIGd1dHRlcnM6IC4yNSxcbik7XG5cblxuLy8gVXNlciBTZXR0aW5nc1xuLy8gLS0tLS0tLS0tLS0tLVxuLy8gLSBEZWZpbmUgdGhlICRzdXN5IHZhcmlhYmxlIHdpdGggYSBtYXAgb2YgeW91ciBvd24gc2V0dGluZ3MuXG4vLyAtIFNldCBFSVRIRVIgJGNvbHVtbi13aWR0aCBPUiAkY29udGFpbmVyXG4vLyAtIFVzZSAkY29sdW1uLXdpZHRoIGZvciBzdGF0aWMgbGF5b3V0c1xuJHN1c3k6ICgpICFkZWZhdWx0O1xuXG5cbi8vIFN1c3kgRGVmYXVsdHNcbi8vIC0tLS0tLS0tLS0tLS1cbi8vIFBSSVZBVEU6IEFkZCBkZWZhdWx0cyB0byBTdXN5XG5AbWl4aW4gc3VzeS1kZWZhdWx0cyhcbiAgJGRlZmF1bHRzXG4pIHtcbiAgJHN1c3ktZGVmYXVsdHM6IG1hcC1tZXJnZSgkc3VzeS1kZWZhdWx0cywgJGRlZmF1bHRzKSAhZ2xvYmFsO1xufVxuXG5cbi8vIFN1c3kgU2V0XG4vLyAtLS0tLS0tLVxuLy8gQ2hhbmdlIG9uZSBzZXR0aW5nXG4vLyAtICRrZXkgICA6IHNldHRpbmcgbmFtZVxuLy8gLSAkdmFsdWUgOiBzZXR0aW5nIHZhbHVlXG5AbWl4aW4gc3VzeS1zZXQoXG4gICRrZXktdmFsdWUuLi5cbikge1xuICAkc3VzeTogX3N1c3ktZGVlcC1zZXQoJHN1c3ksICRrZXktdmFsdWUuLi4pICFnbG9iYWw7XG59XG5cblxuLy8gU3VzeSBHZXRcbi8vIC0tLS0tLS0tXG4vLyBSZXR1cm4gb25lIHNldHRpbmcgZnJvbSBhIGdyaWRcbi8vIC0gJGtleSAgICAgOiA8a2V5d29yZD5cbi8vIC0gJGxheW91dCAgOiA8c2V0dGluZ3M+XG5AZnVuY3Rpb24gc3VzeS1nZXQoXG4gICRrZXksXG4gICRsYXlvdXQ6IG1hcC1tZXJnZSgkc3VzeS1kZWZhdWx0cywgJHN1c3kpXG4pIHtcbiAgJGxheW91dDogcGFyc2UtZ3JpZCgkbGF5b3V0KTtcbiAgJF9vcHRpb25zOiAkbGF5b3V0ICRzdXN5ICRzdXN5LWRlZmF1bHRzO1xuICAkX2JyZWFrOiBmYWxzZTtcbiAgJF9yZXR1cm46IG51bGw7XG5cbiAgQGVhY2ggJG9wdCBpbiAkX29wdGlvbnMge1xuICAgIEBpZiB0eXBlLW9mKCRvcHQpID09IG1hcCBhbmQgbm90KCRfYnJlYWspIHtcbiAgICAgICRfa2V5c2V0OiBfc3VzeS1kZWVwLWhhcy1rZXkoJG9wdCwgJGtleS4uLik7XG4gICAgICBAaWYgJF9rZXlzZXQge1xuICAgICAgICAkX3JldHVybjogX3N1c3ktZGVlcC1nZXQoJG9wdCwgJGtleS4uLik7XG4gICAgICAgICRfYnJlYWs6IHRydWU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cbiIsIi8vIE1hdGggVmFsaWRhdGlvblxuLy8gPT09PT09PT09PT09PT09XG5cblxuLy8gVmFsaWQgQ29sdW1uc1xuLy8gLS0tLS0tLS0tLS0tLVxuLy8gQ2hlY2sgdGhhdCBhIGNvbHVtbiBzZXR0aW5nIGlzIHZhbGlkLlxuQGZ1bmN0aW9uIHZhbGlkLWNvbHVtbnMoXG4gICRjb2x1bW5zLFxuICAkc2lsZW50OiBmYWxzZVxuKSB7XG4gICR0eXBlOiB0eXBlLW9mKCRjb2x1bW5zKTtcbiAgJHJldHVybjogbnVsbDtcblxuICBAaWYgJHR5cGUgPT0gbnVtYmVyIGFuZCB1bml0bGVzcygkY29sdW1ucykge1xuICAgICRyZXR1cm46ICRjb2x1bW5zO1xuICB9IEBlbHNlIGlmICR0eXBlID09IGxpc3Qge1xuICAgICRmYWlsOiBudWxsO1xuICAgIEBlYWNoICRjb2wgaW4gJGNvbHVtbnMge1xuICAgICAgQGlmIHR5cGUtb2YoJGNvbCkgPT0gbnVtYmVyIHtcbiAgICAgICAgJGZhaWw6ICRmYWlsIG9yIGlmKHVuaXRsZXNzKCRjb2wpLCBudWxsLCB0cnVlKTtcbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICAkZmFpbDogdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgJHJldHVybjogaWYoJGZhaWwsICRyZXR1cm4sICRjb2x1bW5zKTtcbiAgfVxuXG4gIEBpZiAkcmV0dXJuICE9ICRjb2x1bW5zIGFuZCBub3QoJHNpbGVudCkge1xuICAgICRyZXR1cm46IG51bGw7XG4gICAgJHdhcm46ICckY29sdW1ucyBtdXN0IGJlIGEgdW5pdGxlc3MgbnVtYmVyIG9yIGxpc3Qgb2YgdW5pdGxlc3MgbnVtYmVycy4nO1xuICAgIEB3YXJuICR3YXJuICsgJyBDdXJyZW50IHZhbHVlIFsjeyR0eXBlfV06ICN7JGNvbHVtbnN9JztcbiAgfVxuXG4gIEByZXR1cm4gJHJldHVybjtcbn1cblxuXG4vLyBWYWxpZCBHdXR0ZXJzXG4vLyAtLS0tLS0tLS0tLS0tXG4vLyBDaGVjayB0aGF0IGEgZ3V0dGVyIHNldHRpbmcgaXMgdmFsaWQuXG5AZnVuY3Rpb24gdmFsaWQtZ3V0dGVycyhcbiAgJGd1dHRlcnMsXG4gICRzaWxlbnQ6IGZhbHNlXG4pIHtcbiAgJHR5cGU6IHR5cGUtb2YoJGd1dHRlcnMpO1xuICAkcmV0dXJuOiBudWxsO1xuXG4gIEBpZiAkdHlwZSA9PSBudW1iZXIgYW5kIHVuaXRsZXNzKCRndXR0ZXJzKSB7XG4gICAgJHJldHVybjogJGd1dHRlcnM7XG4gIH0gQGVsc2UgaWYgbm90KCRzaWxlbnQpIHtcbiAgICAkd2FybjogJyRndXR0ZXJzIG11c3QgYmUgYSB1bml0bGVzcyBudW1iZXIuJztcbiAgICBAd2FybiAkd2FybiArICcgQ3VycmVudCB2YWx1ZSBbI3skdHlwZX1dOiAjeyRndXR0ZXJzfSc7XG4gIH1cblxuICBAcmV0dXJuICRyZXR1cm47XG59XG4iLCIvLyBDb2x1bW4gbWF0aFxuLy8gPT09PT09PT09PT1cblxuXG4vLyBJcyBTeW1tZXRyaWNhbFxuLy8gLS0tLS0tLS0tLS0tLS1cbi8vIFJldHVybnMgdHJ1ZSBpZiBhIGdyaWQgaXMgc3ltbWV0cmljYWwuXG4vLyAtIFskY29sdW1uc10gICA6IDxudW1iZXI+IHwgPGxpc3Q+XG5AZnVuY3Rpb24gaXMtc3ltbWV0cmljYWwoXG4gICRjb2x1bW5zOiBzdXN5LWdldChjb2x1bW5zKVxuKSB7XG4gICRjb2x1bW5zOiB2YWxpZC1jb2x1bW5zKCRjb2x1bW5zKTtcbiAgQHJldHVybiBpZih0eXBlLW9mKCRjb2x1bW5zKSA9PSBudW1iZXIsICRjb2x1bW5zLCBudWxsKTtcbn1cblxuXG4vLyBTdXN5IENvdW50XG4vLyAtLS0tLS0tLS0tXG4vLyBGaW5kIHRoZSBudW1iZXIgb2YgY29sdW1ucyBpbiBhIGdpdmVuIGxheW91dFxuLy8gLSBbJGNvbHVtbnNdICAgOiA8bnVtYmVyPiB8IDxsaXN0PlxuQGZ1bmN0aW9uIHN1c3ktY291bnQoXG4gICRjb2x1bW5zOiBzdXN5LWdldChjb2x1bW5zKVxuKSB7XG4gICRjb2x1bW5zOiB2YWxpZC1jb2x1bW5zKCRjb2x1bW5zKTtcbiAgQHJldHVybiBpcy1zeW1tZXRyaWNhbCgkY29sdW1ucykgb3IgbGVuZ3RoKCRjb2x1bW5zKTtcbn1cblxuXG4vLyBTdXN5IFN1bVxuLy8gLS0tLS0tLS1cbi8vIEZpbmQgdGhlIHRvdGFsIHN1bSBvZiBjb2x1bW4tdW5pdHMgaW4gYSBsYXlvdXRcbi8vIC0gWyRjb2x1bW5zXSAgIDogPG51bWJlcj4gfCA8bGlzdD5cbi8vIC0gWyRndXR0ZXJzXSAgIDogPHJhdGlvPlxuLy8gLSBbJHNwcmVhZF0gICAgOiBmYWxzZS9uYXJyb3cgfCB3aWRlIHwgd2lkZXJcbkBmdW5jdGlvbiBzdXN5LXN1bShcbiAgJGNvbHVtbnMgIDogc3VzeS1nZXQoY29sdW1ucyksXG4gICRndXR0ZXJzICA6IHN1c3ktZ2V0KGd1dHRlcnMpLFxuICAkc3ByZWFkICAgOiBmYWxzZVxuKSB7XG4gICRjb2x1bW5zOiB2YWxpZC1jb2x1bW5zKCRjb2x1bW5zKTtcbiAgJGd1dHRlcnM6IHZhbGlkLWd1dHRlcnMoJGd1dHRlcnMpO1xuXG4gICRzcHJlYWQ6IGlmKCRzcHJlYWQgPT0gd2lkZSwgMCwgaWYoJHNwcmVhZCA9PSB3aWRlciwgMSwgLTEpKTtcbiAgJGd1dHRlci1zdW06IChzdXN5LWNvdW50KCRjb2x1bW5zKSArICRzcHJlYWQpICogJGd1dHRlcnM7XG4gICRjb2x1bW4tc3VtOiBpcy1zeW1tZXRyaWNhbCgkY29sdW1ucyk7XG5cbiAgQGlmIG5vdCgkY29sdW1uLXN1bSkge1xuICAgIEBlYWNoICRjb2x1bW4gaW4gJGNvbHVtbnMge1xuICAgICAgJGNvbHVtbi1zdW06ICgkY29sdW1uLXN1bSBvciAwKSArICRjb2x1bW47XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkY29sdW1uLXN1bSArICRndXR0ZXItc3VtO1xufVxuXG5cbi8vIFN1c3kgU2xpY2Vcbi8vIC0tLS0tLS0tLS1cbi8vIFJldHVybiBhIHN1YnNldCBvZiBjb2x1bW5zIGF0IGEgZ2l2ZW4gbG9jYXRpb24uXG4vLyAtICRzcGFuICAgICAgICA6IDxudW1iZXI+XG4vLyAtICRsb2NhdGlvbiAgICA6IDxudW1iZXI+XG4vLyAtIFskY29sdW1uc10gICA6IDxudW1iZXI+IHwgPGxpc3Q+XG5AZnVuY3Rpb24gc3VzeS1zbGljZShcbiAgJHNwYW4sXG4gICRsb2NhdGlvbixcbiAgJGNvbHVtbnM6IHN1c3ktZ2V0KGNvbHVtbnMpXG4pIHtcbiAgJGNvbHVtbnM6IHZhbGlkLWNvbHVtbnMoJGNvbHVtbnMpO1xuICAkc3ViLWNvbHVtbnM6ICRzcGFuO1xuXG4gIEBpZiBub3QoaXMtc3ltbWV0cmljYWwoJGNvbHVtbnMpKSB7XG4gICAgJGxvY2F0aW9uOiAkbG9jYXRpb24gb3IgMTtcbiAgICAkc3ViLWNvbHVtbnM6ICgpO1xuICAgIEBmb3IgJGkgZnJvbSAkbG9jYXRpb24gdG8gKCRsb2NhdGlvbiArICRzcGFuKSB7XG4gICAgICAkc3ViLWNvbHVtbnM6IGFwcGVuZCgkc3ViLWNvbHVtbnMsIG50aCgkY29sdW1ucywgJGkpKTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRzdWItY29sdW1ucztcbn1cblxuXG4vLyBTdXN5XG4vLyAtLS0tXG4vLyBGaW5kIHRoZSBzdW0gb2YgYSBjb2x1bW4tc3Bhbi5cbi8vIC0gJHNwYW4gICAgICAgIDogPG51bWJlcj5cbi8vIC0gJGxvY2F0aW9uICAgIDogPG51bWJlcj5cbi8vIC0gWyRjb2x1bW5zXSAgIDogPG51bWJlcj4gfCA8bGlzdD5cbi8vIC0gWyRndXR0ZXJzXSAgIDogPHJhdGlvPlxuLy8gLSBbJHNwcmVhZF0gICAgOiBmYWxzZS9uYXJyb3cgfCB3aWRlIHwgd2lkZXJcbkBmdW5jdGlvbiBzdXN5KFxuICAkc3BhbixcbiAgJGxvY2F0aW9uICAgICA6IGZhbHNlLFxuICAkY29sdW1ucyAgICAgIDogc3VzeS1nZXQoY29sdW1ucyksXG4gICRndXR0ZXJzICAgICAgOiBzdXN5LWdldChndXR0ZXJzKSxcbiAgJHNwcmVhZCAgICAgICA6IGZhbHNlXG4pIHtcbiAgJGNvbHVtbnM6IHZhbGlkLWNvbHVtbnMoJGNvbHVtbnMpO1xuICAkZ3V0dGVyczogdmFsaWQtZ3V0dGVycygkZ3V0dGVycyk7XG4gICRzcGFuOiBzdXN5LXNsaWNlKCRzcGFuLCAkbG9jYXRpb24sICRjb2x1bW5zKTtcblxuICBAcmV0dXJuIHN1c3ktc3VtKCRzcGFuLCAkZ3V0dGVycywgJHNwcmVhZCk7XG59XG4iLCIvLyBGbG9hdCBBUElcbi8vID09PT09PT09PVxuXG5AaW1wb3J0IFwic2hhcmVkXCI7XG5cbkBpbXBvcnQgXCJmbG9hdC9jb250YWluZXJcIjtcbkBpbXBvcnQgXCJmbG9hdC9zcGFuXCI7XG5AaW1wb3J0IFwiZmxvYXQvZW5kXCI7XG5AaW1wb3J0IFwiZmxvYXQvaXNvbGF0ZVwiO1xuIiwiLy8gU2hhcmVkIEFQSVxuLy8gPT09PT09PT09PVxuXG5AaW1wb3J0IFwic3VwcG9ydFwiO1xuXG5AaW1wb3J0IFwic2hhcmVkL2luc3BlY3RcIjtcbkBpbXBvcnQgXCJzaGFyZWQvb3V0cHV0XCI7XG5AaW1wb3J0IFwic2hhcmVkL2RpcmVjdGlvblwiO1xuQGltcG9ydCBcInNoYXJlZC9iYWNrZ3JvdW5kXCI7XG5AaW1wb3J0IFwic2hhcmVkL2NvbnRhaW5lclwiO1xuQGltcG9ydCBcInNoYXJlZC9tYXJnaW5zXCI7XG5AaW1wb3J0IFwic2hhcmVkL3BhZGRpbmdcIjtcblxuXG5cbiIsIi8vIFN1c3kgQnJvd3NlciBTdXBwb3J0XG4vLyA9PT09PT09PT09PT09PT09PT09PVxuXG5AaW1wb3J0IFwic3VwcG9ydC9zdXBwb3J0XCI7XG5AaW1wb3J0IFwic3VwcG9ydC9wcmVmaXhcIjtcbkBpbXBvcnQgXCJzdXBwb3J0L2JhY2tncm91bmRcIjtcbkBpbXBvcnQgXCJzdXBwb3J0L2JveC1zaXppbmdcIjtcbkBpbXBvcnQgXCJzdXBwb3J0L3JlbVwiO1xuQGltcG9ydCBcInN1cHBvcnQvY2xlYXJmaXhcIjtcbiIsIi8vIEJyb3dzZXIgU3VwcG9ydFxuLy8gPT09PT09PT09PT09PT09XG5cbi8vIFN1c3kgU3VwcG9ydCBEZWZhdWx0c1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5AaW5jbHVkZSBzdXN5LWRlZmF1bHRzKChcbiAgdXNlLWN1c3RvbTogKFxuICAgIGNsZWFyZml4OiBmYWxzZSxcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiB0cnVlLFxuICAgIGJhY2tncm91bmQtb3B0aW9uczogZmFsc2UsXG4gICAgYnJlYWtwb2ludDogdHJ1ZSxcbiAgICBib3gtc2l6aW5nOiB0cnVlLFxuICAgIHJlbTogdHJ1ZSxcbiAgKSxcbikpO1xuXG5cbi8vIFN1c3kgU3VwcG9ydCBbbWl4aW5dXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gU2VuZCBwcm9wZXJ0eS12YWx1ZSBwYWlycyB0byB0aGUgcHJvcGVyIHN1cHBvcnQgbW9kdWxlcy5cbi8vIC0gJHByb3AgIDogPGNzcyBwcm9wZXJ0eT5cbi8vIC0gJHZhbCAgIDogPGNzcyB2YWx1ZT5cbkBtaXhpbiBzdXN5LXN1cHBvcnQoXG4gICRwcm9wLFxuICAkdmFsXG4pIHtcbiAgLy8gQmFja2dyb3VuZCBTdXBwb3J0XG4gIEBpZiAkcHJvcCA9PSBiYWNrZ3JvdW5kLWltYWdlIHtcbiAgICBAaW5jbHVkZSBzdXN5LWJhY2tncm91bmQtaW1hZ2UoJHZhbCk7XG4gIH0gQGVsc2UgaWYgJHByb3AgPT0gYmFja2dyb3VuZC1zaXplIHtcbiAgICBAaW5jbHVkZSBzdXN5LWJhY2tncm91bmQtc2l6ZSgkdmFsKTtcbiAgfSBAZWxzZSBpZiAkcHJvcCA9PSBiYWNrZ3JvdW5kLW9yaWdpbiB7XG4gICAgQGluY2x1ZGUgc3VzeS1iYWNrZ3JvdW5kLW9yaWdpbigkdmFsKTtcbiAgfSBAZWxzZSBpZiAkcHJvcCA9PSBiYWNrZ3JvdW5kLWNsaXAge1xuICAgIEBpbmNsdWRlIHN1c3ktYmFja2dyb3VuZC1jbGlwKCR2YWwpO1xuICB9XG5cbiAgLy8gQm94LVNpemluZyBTdXBwb3J0XG4gIEBlbHNlIGlmICRwcm9wID09IGJveC1zaXppbmcge1xuICAgIEBpbmNsdWRlIHN1c3ktYm94LXNpemluZygkdmFsKTtcbiAgfVxuXG4gIC8vIFJlbSBTdXBwb3J0XG4gIEBlbHNlIHtcbiAgICBAaW5jbHVkZSBzdXN5LXJlbSgkcHJvcCwgJHZhbCk7XG4gIH1cbn1cblxuXG4vLyBTdXN5IFN1cHBvcnQgW2Z1bmN0aW9uXVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIENoZWNrIGZvciBzdXBwb3J0IG9mIGEgZmVhdHVyZS5cbi8vIC0gJGZlYXR1cmUgICAgICAgOiA8c3RyaW5nPlxuLy8gICAgICAgICAgICAgICAgICAgIC0gZS5nIFwicmVtXCIgb3IgXCJib3gtc2l6aW5nXCJcbi8vIC0gJHJlcXVpcmVtZW50cyAgOiA8bWFwPlxuLy8gICAgICAgICAgICAgICAgICAgIC0gZS5nICh2YXJpYWJsZTogcmVtLXdpdGgtcHgtZmFsbGJhY2ssIG1peGluOiByZW0pXG4vLyAtICR3YXJuICAgICAgICAgIDogPGJvb2w+XG5AZnVuY3Rpb24gc3VzeS1zdXBwb3J0KFxuICAkZmVhdHVyZSxcbiAgJHJlcXVpcmVtZW50czogKCksXG4gICR3YXJuOiB0cnVlXG4pIHtcbiAgJF9zdXBwb3J0OiBzdXN5LWdldCh1c2UtY3VzdG9tICRmZWF0dXJlKTtcblxuICBAaWYgJF9zdXBwb3J0IHtcbiAgICAkX2ZhaWw6IGZhbHNlO1xuXG4gICAgQGVhY2ggJF90eXBlLCAkX3JlcSBpbiAkcmVxdWlyZW1lbnRzIHtcbiAgICAgIEBlYWNoICRfaSBpbiAkX3JlcSB7XG4gICAgICAgICRfcGFzczogY2FsbCh1bnF1b3RlKFwiI3skX3R5cGV9LWV4aXN0c1wiKSwgJF9pKTtcblxuICAgICAgICBAaWYgbm90KCRfcGFzcykge1xuICAgICAgICAgICRfZmFpbDogdHJ1ZTtcbiAgICAgICAgICBAaWYgJHdhcm4ge1xuICAgICAgICAgICAgQHdhcm4gXCJZb3UgcmVxdWVzdGVkIGN1c3RvbSBzdXBwb3J0IG9mICN7JGZlYXR1cmV9LCBidXQgdGhlICN7JF9pfSAjeyRfdHlwZX0gaXMgbm90IGF2YWlsYWJsZS5cIjtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAkX3N1cHBvcnQ6IGlmKCRfZmFpbCwgZmFsc2UsICRfc3VwcG9ydCk7XG4gIH1cblxuICBAcmV0dXJuICRfc3VwcG9ydDtcbn1cbiIsIi8vIFN1c3kgUHJlZml4XG4vLyA9PT09PT09PT09PVxuXG4vLyBQcmVmaXhcbi8vIC0tLS0tLVxuLy8gT3V0cHV0IHNpbXBsZSBwcmVmaXhlZCBwcm9wZXJ0aWVzLlxuLy8gLSAkcHJvcCAgICAgIDogPGNzcyBwcm9wZXJ0eT5cbi8vIC0gJHZhbCAgICAgICA6IDxjc3MgdmFsdWU+XG4vLyAtIFskcHJlZml4XSAgOiA8YnJvd3NlciBwcmVmaXggbGlzdD5cbkBtaXhpbiBzdXN5LXByZWZpeChcbiAgJHByb3AsXG4gICR2YWwsXG4gICRwcmVmaXg6IG9mZmljaWFsXG4pIHtcbiAgQGVhY2ggJGZpeCBpbiAkcHJlZml4IHtcbiAgICAkZml4OiBpZigkZml4ID09IG9mZmljaWFsIG9yIG5vdCgkZml4KSwgJHByb3AsICctI3skZml4fS0jeyRwcm9wfScpO1xuICAgIEBpbmNsdWRlIHN1c3ktcmVtKCRmaXgsICR2YWwpO1xuICB9XG59XG4iLCIvLyBCYWNrZ3JvdW5kIFByb3BlcnRpZXNcbi8vID09PT09PT09PT09PT09PT09PT09PVxuXG4vLyBTdXN5IEJhY2tncm91bmQgSW1hZ2Vcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQ2hlY2sgZm9yIGFuIGV4aXN0aW5nIHN1cHBvcnQgbWl4aW4sIG9yIHByb3ZpZGUgYSBzaW1wbGUgZmFsbGJhY2suXG4vLyAtICRpbWFnZTogPGJhY2tncm91bmQtaW1hZ2U+XG5AbWl4aW4gc3VzeS1iYWNrZ3JvdW5kLWltYWdlKFxuICAkaW1hZ2Vcbikge1xuICBAaWYgc3VzeS1zdXBwb3J0KGJhY2tncm91bmQtaW1hZ2UsIChtaXhpbjogYmFja2dyb3VuZC1pbWFnZSksICR3YXJuOiBmYWxzZSkge1xuICAgIEBpbmNsdWRlIGJhY2tncm91bmQtaW1hZ2UoJGltYWdlLi4uKTtcbiAgfSBAZWxzZSB7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogJGltYWdlO1xuICB9XG59XG5cbi8vIFN1c3kgQmFja2dyb3VuZCBTaXplXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIENoZWNrIGZvciBhbiBleGlzdGluZyBzdXBwb3J0IG1peGluLCBvciBwcm92aWRlIGEgc2ltcGxlIGZhbGxiYWNrLlxuLy8gLSAkaW1hZ2U6IDxiYWNrZ3JvdW5kLXNpemU+XG5AbWl4aW4gc3VzeS1iYWNrZ3JvdW5kLXNpemUoXG4gICRzaXplXG4pIHtcbiAgQGlmIHN1c3ktc3VwcG9ydChiYWNrZ3JvdW5kLW9wdGlvbnMsIChtaXhpbjogYmFja2dyb3VuZC1zaXplKSkge1xuICAgIEBpbmNsdWRlIGJhY2tncm91bmQtc2l6ZSgkc2l6ZSk7XG4gIH0gQGVsc2Uge1xuICAgIGJhY2tncm91bmQtc2l6ZTogJHNpemU7XG4gIH1cbn1cblxuLy8gU3VzeSBCYWNrZ3JvdW5kIE9yaWdpblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQ2hlY2sgZm9yIGFuIGV4aXN0aW5nIHN1cHBvcnQgbWl4aW4sIG9yIHByb3ZpZGUgYSBzaW1wbGUgZmFsbGJhY2suXG4vLyAtICRpbWFnZTogPGJhY2tncm91bmQtb3JpZ2luPlxuQG1peGluIHN1c3ktYmFja2dyb3VuZC1vcmlnaW4oXG4gICRvcmlnaW5cbikge1xuICBAaWYgc3VzeS1zdXBwb3J0KGJhY2tncm91bmQtb3B0aW9ucywgKG1peGluOiBiYWNrZ3JvdW5kLW9yaWdpbikpIHtcbiAgICBAaW5jbHVkZSBiYWNrZ3JvdW5kLW9yaWdpbigkb3JpZ2luKTtcbiAgfSBAZWxzZSB7XG4gICAgYmFja2dyb3VuZC1vcmlnaW46ICRvcmlnaW47XG4gIH1cbn1cblxuLy8gU3VzeSBCYWNrZ3JvdW5kIENsaXBcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBDaGVjayBmb3IgYW4gZXhpc3Rpbmcgc3VwcG9ydCBtaXhpbiwgb3IgcHJvdmlkZSBhIHNpbXBsZSBmYWxsYmFjay5cbi8vIC0gJGltYWdlOiA8YmFja2dyb3VuZC1jbGlwPlxuQG1peGluIHN1c3ktYmFja2dyb3VuZC1jbGlwKFxuICAkY2xpcFxuKSB7XG4gIEBpZiBzdXN5LXN1cHBvcnQoYmFja2dyb3VuZC1vcHRpb25zLCAobWl4aW46IGJhY2tncm91bmQtY2xpcCkpIHtcbiAgICBAaW5jbHVkZSBiYWNrZ3JvdW5kLWNsaXAoJGNsaXApO1xuICB9IEBlbHNlIHtcbiAgICBiYWNrZ3JvdW5kLWNsaXA6ICRjbGlwO1xuICB9XG59XG4iLCIvLyBCb3ggU2l6aW5nXG4vLyA9PT09PT09PT09XG5cbi8vIEJveCBTaXppbmdcbi8vIC0tLS0tLS0tLS1cbi8vIENoZWNrIGZvciBhbiBleGlzdGluZyBzdXBwb3J0IG1peGluLCBvciBwcm92aWRlIGEgc2ltcGxlIGZhbGxiYWNrLlxuLy8gLSAkbW9kZWw6IDxib3gtc2l6aW5nPlxuQG1peGluIHN1c3ktYm94LXNpemluZyhcbiAgJG1vZGVsOiBjb250ZW50LWJveFxuKSB7XG4gIEBpZiAkbW9kZWwge1xuICAgIEBpZiBzdXN5LXN1cHBvcnQoYm94LXNpemluZywgKG1peGluOiBib3gtc2l6aW5nKSwgJHdhcm46IGZhbHNlKSB7XG4gICAgICBAaW5jbHVkZSBib3gtc2l6aW5nKCRtb2RlbCk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkcHJlZml4OiAobW96LCB3ZWJraXQsIG9mZmljaWFsKTtcbiAgICAgIEBpbmNsdWRlIHN1c3ktcHJlZml4KGJveC1zaXppbmcsICRtb2RlbCwgJHByZWZpeCk7XG4gICAgfVxuICB9XG59XG4iLCIvLyByZW0gU3VwcG9ydFxuLy8gPT09PT09PT09PT1cblxuLy8gcmVtXG4vLyAtLS1cbi8vIENoZWNrIGZvciBhbiBleGlzdGluZyBzdXBwb3J0IG1peGluLCBvciBvdXRwdXQgZGlyZWN0bHkuXG4vLyAtICRwcm9wICA6IDxjc3MgcHJvcGVydHk+XG4vLyAtICR2YWwgICA6IDxjc3MgdmFsdWU+XG5AbWl4aW4gc3VzeS1yZW0oXG4gICRwcm9wLFxuICAkdmFsXG4pIHtcbiAgJF9yZXFzOiAoXG4gICAgdmFyaWFibGU6IHJoeXRobS11bml0IHJlbS13aXRoLXB4LWZhbGxiYWNrLFxuICAgIG1peGluOiByZW0sXG4gICk7XG4gIEBpZiBzdXN5LXN1cHBvcnQocmVtLCAkX3JlcXMsICR3YXJuOiBmYWxzZSkgYW5kICRyaHl0aG0tdW5pdCA9PSByZW0ge1xuICAgIEBpbmNsdWRlIHJlbSgkcHJvcCwgJHZhbCk7XG4gIH0gQGVsc2Uge1xuICAgICN7JHByb3B9OiAkdmFsO1xuICB9XG59XG4iLCIvLyBTdXN5IEZhbGxiYWNrIENsZWFyZml4XG4vLyA9PT09PT09PT09PT09PT09PT09PT09XG5cblxuLy8gQ2xlYXJmaXhcbi8vIC0tLS0tLS0tXG4vLyBDaGVjayBmb3IgYW4gZXhpc3Rpbmcgc3VwcG9ydCBtaXhpbiwgb3IgcHJvdmlkZSBhIHNpbXBsZSBmYWxsYmFjay5cbkBtaXhpbiBzdXN5LWNsZWFyZml4IHtcbiAgQGlmIHN1c3ktc3VwcG9ydChjbGVhcmZpeCwgKG1peGluOiBjbGVhcmZpeCkpIHtcbiAgICBAaW5jbHVkZSBjbGVhcmZpeDtcbiAgfSBAZWxzZSB7XG4gICAgJjphZnRlciB7XG4gICAgICBjb250ZW50OiBcIiBcIjtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgY2xlYXI6IGJvdGg7XG4gICAgfVxuICB9XG59XG4iLCIvLyBEZWJ1Z2dpbmdcbi8vID09PT09PT09PVxuXG4vLyBTdXN5IEluc3BlY3Rcbi8vIC0tLS0tLS0tLS0tLVxuLy8gT3V0cHV0IGFyZ3VtZW50cyBwYXNzZWQgdG8gYSBpbnNwZWN0LlxuLy8gLSAkbWl4aW4gIDogPHN1c3kgbWl4aW4+XG4vLyAtICRpbnNwZWMgICA6IDxtaXhpbiBhcmd1bWVudHM+XG5cbkBtaXhpbiBzdXN5LWluc3BlY3QoXG4gICRtaXhpbixcbiAgJGluc3BlY3Rcbikge1xuICAkc2hvdzogZmFsc2U7XG5cbiAgQGVhY2ggJGl0ZW0gaW4gJGluc3BlY3Qge1xuICAgIEBpZiBpbmRleCgkaXRlbSwgaW5zcGVjdCkge1xuICAgICAgJHNob3c6IHRydWU7XG4gICAgfVxuICB9XG5cbiAgQGlmICRzaG93IG9yIHN1c3ktZ2V0KGRlYnVnIGluc3BlY3QpIHtcbiAgICAtc3VzeS0jeyRtaXhpbn06IGluc3BlY3QoJGluc3BlY3QpO1xuICB9XG59XG4iLCIvLyBPdXRwdXRcbi8vID09PT09PVxuXG4vLyBPdXRwdXRcbi8vIC0tLS0tLVxuLy8gT3V0cHV0IENTUyB3aXRoIHByb3BlciBicm93c2VyIHN1cHBvcnQuXG4vLyAtICRzdHlsZXMgIDogPG1hcCBvZiBjc3MgcHJvcGVydHktdmFsdWUgcGFpcnM+XG5AbWl4aW4gb3V0cHV0KFxuICAkc3R5bGVzXG4pIHtcbiAgQGVhY2ggJHByb3AsICR2YWwgaW4gJHN0eWxlcyB7XG4gICAgQGluY2x1ZGUgc3VzeS1zdXBwb3J0KCRwcm9wLCAkdmFsKTtcbiAgfVxufVxuIiwiLy8gRGlyZWN0aW9uIEhlbHBlcnNcbi8vID09PT09PT09PT09PT09PT09XG5cbi8vIFN1c3kgRmxvdyBEZWZhdWx0c1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtIFBSSVZBVEVcbkBpbmNsdWRlIHN1c3ktZGVmYXVsdHMoKFxuICBmbG93OiBsdHIsXG4pKTtcblxuLy8gR2V0IERpcmVjdGlvblxuLy8gLS0tLS0tLS0tLS0tLVxuLy8gUmV0dXJuIHRoZSAnZnJvbScgb3IgJ3RvJyBkaXJlY3Rpb24gb2YgYSBsdHIgb3IgcnRsIGZsb3cuXG4vLyAtIFskZmxvd10gIDogbHRyIHwgcnRsXG4vLyAtIFska2V5XSAgIDogZnJvbSB8IHRvXG5AZnVuY3Rpb24gZ2V0LWRpcmVjdGlvbihcbiAgJGZsb3c6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGZsb3cpLFxuICAka2V5OiBmcm9tXG4pIHtcbiAgJHJldHVybjogaWYoJGZsb3cgPT0gcnRsLCAoZnJvbTogcmlnaHQsIHRvOiBsZWZ0KSwgKGZyb206IGxlZnQsIHRvOiByaWdodCkpO1xuICBAcmV0dXJuIG1hcC1nZXQoJHJldHVybiwgJGtleSk7XG59XG5cbi8vIFRvXG4vLyAtLVxuLy8gUmV0dXJuIHRoZSAndG8nIGRpcmVjdGlvbiBvZiBhIGZsb3dcbi8vIC0gWyRmbG93XSAgOiBsdHIgfCBydGxcbkBmdW5jdGlvbiB0byhcbiAgJGZsb3c6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGZsb3cpXG4pIHtcbiAgQHJldHVybiBnZXQtZGlyZWN0aW9uKCRmbG93LCB0byk7XG59XG5cbi8vIEZyb21cbi8vIC0tLS1cbi8vIFJldHVybiB0aGUgJ2Zyb20nIGRpcmVjdGlvbiBvZiBhIGZsb3dcbi8vIC0gWyRmbG93XSAgOiBsdHIgfCBydGxcbkBmdW5jdGlvbiBmcm9tKFxuICAkZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdylcbikge1xuICBAcmV0dXJuIGdldC1kaXJlY3Rpb24oJGZsb3csIGZyb20pO1xufVxuIiwiLy8gR3JpZCBCYWNrZ3JvdW5kIEFQSVxuLy8gPT09PT09PT09PT09PT09PT09PVxuLy8gLSBTdWItcGl4ZWwgcm91bmRpbmcgY2FuIGxlYWQgdG8gc2V2ZXJhbCBwaXhlbHMgdmFyaWF0aW9uIGJldHdlZW4gYnJvd3NlcnMuXG5cbi8vIEdyaWQgQmFja2dyb3VuZCBPdXRwdXRcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gJGltYWdlOiBiYWNrZ3JvdW5kLWltYWdlXG4vLyAtICRzaXplOiBiYWNrZ3JvdW5kLXNpemVcbi8vIC0gJGNsaXA6IGJhY2tncm91bmQtY2xpcFxuLy8gLSBbJGZsb3ddOiBsdHIgfCBydGxcbkBtaXhpbiBiYWNrZ3JvdW5kLWdyaWQtb3V0cHV0IChcbiAgJGltYWdlLFxuICAkc2l6ZTogbnVsbCxcbiAgJGNsaXA6IG51bGwsXG4gICRmbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KVxuKSB7XG4gICRvdXRwdXQ6IChcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiAkaW1hZ2UsXG4gICAgYmFja2dyb3VuZC1zaXplOiAkc2l6ZSxcbiAgICBiYWNrZ3JvdW5kLW9yaWdpbjogJGNsaXAsXG4gICAgYmFja2dyb3VuZC1jbGlwOiAkY2xpcCxcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBmcm9tKCRmbG93KSB0b3AsXG4gICk7XG5cbiAgQGluY2x1ZGUgb3V0cHV0KCRvdXRwdXQpO1xufVxuIiwiLy8gU2hhcmVkIENvbnRhaW5lciBBUElcbi8vID09PT09PT09PT09PT09PT09PT09XG5cbi8vIENvbnRhaW5lciBPdXRwdXRcbi8vIC0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gWyR3aWR0aF0gICAgICAgICA6IDxsZW5ndGg+XG4vLyAtIFskanVzdGlmeV0gICAgICAgOiBsZWZ0IHwgY2VudGVyIHwgcmlnaHRcbi8vIC0gWyRtYXRoXSAgICAgICAgICA6IGZsdWlkIHwgc3RhdGljXG5AbWl4aW4gY29udGFpbmVyLW91dHB1dChcbiAgJHdpZHRoLFxuICAkanVzdGlmeTogYXV0byBhdXRvLFxuICAkcHJvcGVydHk6IG1heC13aWR0aFxuKSB7XG4gICRvdXRwdXQ6IChcbiAgICAjeyRwcm9wZXJ0eX06ICR3aWR0aCBvciAxMDAlLFxuICAgIG1hcmdpbi1sZWZ0OiBudGgoJGp1c3RpZnksIDEpLFxuICAgIG1hcmdpbi1yaWdodDogbnRoKCRqdXN0aWZ5LCAyKSxcbiAgKTtcblxuICBAaW5jbHVkZSBvdXRwdXQoJG91dHB1dCk7XG59XG4iLCIvLyBNYXJnaW5zIEFQSVxuLy8gPT09PT09PT09PT1cblxuLy8gTWFyZ2luIE91dHB1dFxuLy8gLS0tLS0tLS0tLS0tLVxuLy8gLSAkYmVmb3JlICA6IDxsZW5ndGg+XG4vLyAtICRhZnRlciAgIDogPGxlbmd0aD5cbi8vIC0gWyRmbG93XSAgOiBsdHIgfCBydGxcbkBtaXhpbiBtYXJnaW4tb3V0cHV0KFxuICAkYmVmb3JlLFxuICAkYWZ0ZXIsXG4gICRmbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KVxuKSB7XG4gICR0bzogdG8oJGZsb3cpO1xuICAkZnJvbTogZnJvbSgkZmxvdyk7XG5cbiAgJG91dHB1dDogKFxuICAgIG1hcmdpbi0jeyRmcm9tfTogJGJlZm9yZSxcbiAgICBtYXJnaW4tI3skdG99OiAkYWZ0ZXIsXG4gICk7XG5cbiAgQGluY2x1ZGUgb3V0cHV0KCRvdXRwdXQpO1xufVxuIiwiLy8gUGFkZGluZyBBUElcbi8vID09PT09PT09PT09XG5cbi8vIFBhZGRpbmcgT3V0cHV0XG4vLyAtLS0tLS0tLS0tLS0tLVxuLy8gLSAkYmVmb3JlICA6IDxsZW5ndGg+XG4vLyAtICRhZnRlciAgIDogPGxlbmd0aD5cbi8vIC0gWyRmbG93XSAgOiBsdHIgfCBydGxcbkBtaXhpbiBwYWRkaW5nLW91dHB1dChcbiAgJGJlZm9yZSxcbiAgJGFmdGVyLFxuICAkZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdylcbikge1xuICAkdG86IHRvKCRmbG93KTtcbiAgJGZyb206IGZyb20oJGZsb3cpO1xuXG4gICRvdXRwdXQ6IChcbiAgICBwYWRkaW5nLSN7JGZyb219OiAkYmVmb3JlLFxuICAgIHBhZGRpbmctI3skdG99OiAkYWZ0ZXIsXG4gICk7XG5cbiAgQGluY2x1ZGUgb3V0cHV0KCRvdXRwdXQpO1xufVxuIiwiLy8gRmxvYXQgQ29udGFpbmVyIEFQSVxuLy8gPT09PT09PT09PT09PT09PT09PVxuXG4vLyBGbG9hdCBDb250YWluZXJcbi8vIC0tLS0tLS0tLS0tLS0tLVxuLy8gLSBbJHdpZHRoXSAgICAgICAgIDogPGxlbmd0aD5cbi8vIC0gWyRqdXN0aWZ5XSAgICAgICA6IGxlZnQgfCBjZW50ZXIgfCByaWdodFxuLy8gLSBbJG1hdGhdICAgOiBmbHVpZCB8IHN0YXRpY1xuQG1peGluIGZsb2F0LWNvbnRhaW5lcihcbiAgJHdpZHRoLFxuICAkanVzdGlmeTogYXV0byBhdXRvLFxuICAkcHJvcGVydHk6IG1heC13aWR0aFxuKSB7XG4gIEBpbmNsdWRlIHN1c3ktY2xlYXJmaXg7XG4gIEBpbmNsdWRlIGNvbnRhaW5lci1vdXRwdXQoJHdpZHRoLCAkanVzdGlmeSwgJHByb3BlcnR5KTtcbn1cbiIsIi8vIEZsb2F0IFNwYW4gQVBJXG4vLyA9PT09PT09PT09PT09PVxuXG4vLyBGbG9hdCBTcGFuIE91dHB1dFxuLy8gLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gJHdpZHRoICAgICAgICAgICAgIDogPGxlbmd0aD5cbi8vIC0gWyRmbG9hdF0gICAgICAgICAgIDogZnJvbSB8IHRvXG4vLyAtIFskbWFyZ2luLWJlZm9yZV0gICA6IDxsZW5ndGg+XG4vLyAtIFskbWFyZ2luLWFmdGVyXSAgICA6IDxsZW5ndGg+XG4vLyAtIFskcGFkZGluZy1iZWZvcmVdICA6IDxsZW5ndGg+XG4vLyAtIFskcGFkZGluZy1hZnRlcl0gICA6IDxsZW5ndGg+XG4vLyAtIFskZmxvd10gICAgICAgICAgICA6IGx0ciB8IHJ0bFxuQG1peGluIGZsb2F0LXNwYW4tb3V0cHV0KFxuICAkd2lkdGgsXG4gICRmbG9hdCAgICAgICAgICAgIDogZnJvbSxcbiAgJG1hcmdpbi1iZWZvcmUgICAgOiBudWxsLFxuICAkbWFyZ2luLWFmdGVyICAgICA6IG51bGwsXG4gICRwYWRkaW5nLWJlZm9yZSAgIDogbnVsbCxcbiAgJHBhZGRpbmctYWZ0ZXIgICAgOiBudWxsLFxuICAkZmxvdyAgICAgICAgICAgICA6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGZsb3cpXG4pIHtcbiAgJHRvICAgICA6IHRvKCRmbG93KTtcbiAgJGZyb20gICA6IGZyb20oJGZsb3cpO1xuXG4gICRvdXRwdXQ6IChcbiAgICB3aWR0aDogJHdpZHRoLFxuICAgIGZsb2F0OiBpZigkZmxvYXQgPT0gdG8sICR0bywgbnVsbCkgb3IgaWYoJGZsb2F0ID09IGZyb20sICRmcm9tLCBudWxsKSxcbiAgICBtYXJnaW4tI3skZnJvbX06ICRtYXJnaW4tYmVmb3JlLFxuICAgIG1hcmdpbi0jeyR0b306ICRtYXJnaW4tYWZ0ZXIsXG4gICAgcGFkZGluZy0jeyRmcm9tfTogJHBhZGRpbmctYmVmb3JlLFxuICAgIHBhZGRpbmctI3skdG99OiAkcGFkZGluZy1hZnRlcixcbiAgKTtcblxuICBAaW5jbHVkZSBvdXRwdXQoJG91dHB1dCk7XG59XG4iLCIvLyBGbG9hdCBFbmRzIEFQSVxuLy8gPT09PT09PT09PT09PT1cblxuLy8gU3VzeSBFbmQgRGVmYXVsdHNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtIFBSSVZBVEVcbkBpbmNsdWRlIHN1c3ktZGVmYXVsdHMoKFxuICBsYXN0LWZsb3c6IHRvLFxuKSk7XG5cbi8vIEZsb2F0IExhc3Rcbi8vIC0tLS0tLS0tLS1cbi8vIC0gWyRmbG93XSAgOiBsdHIgfCBydGxcbkBtaXhpbiBmbG9hdC1sYXN0KFxuICAkZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdyksXG4gICRsYXN0LWZsb3c6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGxhc3QtZmxvdyksXG4gICRtYXJnaW46IDBcbikge1xuICAkdG86IHRvKCRmbG93KTtcblxuICAkb3V0cHV0OiAoXG4gICAgZmxvYXQ6IGlmKCRsYXN0LWZsb3cgPT0gdG8sICR0bywgbnVsbCksXG4gICAgbWFyZ2luLSN7JHRvfTogJG1hcmdpbixcbiAgKTtcblxuICBAaW5jbHVkZSBvdXRwdXQoJG91dHB1dCk7XG59XG5cbi8vIEZsb2F0IEZpcnN0XG4vLyAtLS0tLS0tLS0tLVxuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuQG1peGluIGZsb2F0LWZpcnN0KFxuICAkZmxvdzogbWFwLWdldCgkc3VzeS1kZWZhdWx0cywgZmxvdylcbikge1xuICAkb3V0cHV0OiAoXG4gICAgbWFyZ2luLSN7ZnJvbSgkZmxvdyl9OiAwLFxuICApO1xuXG4gIEBpbmNsdWRlIG91dHB1dCgkb3V0cHV0KTtcbn1cbiIsIi8vIEZsb2F0IElzb2xhdGlvbiBBUElcbi8vID09PT09PT09PT09PT09PT09PT1cblxuLy8gSXNvbGF0ZSBPdXRwdXRcbi8vIC0tLS0tLS0tLS0tLS0tXG4vLyAtICRwdXNoICAgIDogPGxlbmd0aD5cbi8vIC0gWyRmbG93XSAgOiBsdHIgfCBydGxcbkBtaXhpbiBpc29sYXRlLW91dHB1dChcbiAgJHB1c2gsXG4gICRmbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KVxuKSB7XG4gICR0bzogdG8oJGZsb3cpO1xuICAkZnJvbTogZnJvbSgkZmxvdyk7XG5cbiAgJG91dHB1dDogKFxuICAgIGZsb2F0OiAkZnJvbSxcbiAgICBtYXJnaW4tI3skZnJvbX06ICRwdXNoLFxuICAgIG1hcmdpbi0jeyR0b306IC0xMDAlLFxuICApO1xuXG4gIEBpbmNsdWRlIG91dHB1dCgkb3V0cHV0KTtcbn1cbiIsIi8vIFN1c3kgU2V0dGluZ3Ncbi8vID09PT09PT09PT09PT1cblxuLy8gU3VzeSBMYW5ndWFnZSBEZWZhdWx0c1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSBQUklWQVRFXG5AaW5jbHVkZSBzdXN5LWRlZmF1bHRzKChcbiAgY29udGFpbmVyOiBhdXRvLFxuICBtYXRoOiBmbHVpZCxcbiAgb3V0cHV0OiBmbG9hdCxcbiAgY29udGFpbmVyLXBvc2l0aW9uOiBjZW50ZXIsXG4gIGd1dHRlci1wb3NpdGlvbjogYWZ0ZXIsXG4gIGdsb2JhbC1ib3gtc2l6aW5nOiBjb250ZW50LWJveCxcbiAgZGVidWc6IChcbiAgICBpbWFnZTogaGlkZSxcbiAgICBjb2xvcjogcmdiYSgjNjZmLCAuMjUpLFxuICAgIG91dHB1dDogYmFja2dyb3VuZCxcbiAgICB0b2dnbGU6IHRvcCByaWdodCxcbiAgKSxcbikpO1xuXG5cbi8vIFZhbGlkIEtleXdvcmQgVmFsdWVzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSBQUklWQVRFOiBET05UJ1QgVE9VQ0hcbiRzdXN5LWtleXdvcmRzOiAoXG4gIGNvbnRhaW5lcjogYXV0byxcbiAgbWF0aDogc3RhdGljIGZsdWlkLFxuICBvdXRwdXQ6IGlzb2xhdGUgZmxvYXQsXG4gIGNvbnRhaW5lci1wb3NpdGlvbjogbGVmdCBjZW50ZXIgcmlnaHQsXG4gIGZsb3c6IGx0ciBydGwsXG4gIGd1dHRlci1wb3NpdGlvbjogYmVmb3JlIGFmdGVyIHNwbGl0IGluc2lkZSBpbnNpZGUtc3RhdGljLFxuICBib3gtc2l6aW5nOiBib3JkZXItYm94IGNvbnRlbnQtYm94LFxuICBzcGFuOiBmdWxsLFxuICBlZGdlOiBmaXJzdCBhbHBoYSBsYXN0IG9tZWdhIGZ1bGwsXG4gIHNwcmVhZDogbmFycm93IHdpZGUgd2lkZXIsXG4gIGd1dHRlci1vdmVycmlkZTogbm8tZ3V0dGVycyBuby1ndXR0ZXIsXG4gIHJvbGU6IG5lc3QsXG4gIGNsZWFyOiBicmVhayBub2JyZWFrLFxuICBkZWJ1ZyBpbWFnZTogc2hvdyBoaWRlIHNob3ctY29sdW1ucyBzaG93LWJhc2VsaW5lLFxuICBkZWJ1ZyBvdXRwdXQ6IGJhY2tncm91bmQgb3ZlcmxheSxcbik7XG5cblxuLy8gUGFyc2UgU3VzeSBLZXl3b3JkcyBhbmQgTWFwc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuQGZ1bmN0aW9uIHBhcnNlLXNldHRpbmdzKFxuICAkc2hvcnQ6ICRzdXN5XG4pIHtcbiAgJF9yZXR1cm46ICgpO1xuXG4gIEBpZiB0eXBlLW9mKCRzaG9ydCkgPT0gbWFwIHtcbiAgICAkX3JldHVybjogJHNob3J0O1xuICB9IEBlbHNlIHtcbiAgICBAZWFjaCAkaXRlbSBpbiAkc2hvcnQge1xuICAgICAgLy8gc3RyaW5nc1xuICAgICAgQGlmIHR5cGUtb2YoJGl0ZW0pID09IHN0cmluZyB7XG4gICAgICAgIEBlYWNoICRrZXksICR2YWx1ZSBpbiAkc3VzeS1rZXl3b3JkcyB7XG4gICAgICAgICAgQGlmIGluZGV4KCR2YWx1ZSwgJGl0ZW0pIHtcbiAgICAgICAgICAgICRfa2V5LXZhbHVlOiBhcHBlbmQoJGtleSwgJGl0ZW0pO1xuICAgICAgICAgICAgJF9yZXR1cm46IF9zdXN5LWRlZXAtc2V0KCRfcmV0dXJuLCAkX2tleS12YWx1ZS4uLik7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAvLyBtYXBzXG4gICAgICB9IEBlbHNlIGlmIHR5cGUtb2YoJGl0ZW0pID09IG1hcCB7XG4gICAgICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sICRpdGVtKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuXG5cbi8vIFBhcnNlIENvbHVtbnMgJiBHdXR0ZXJzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuQGZ1bmN0aW9uIHBhcnNlLWxheW91dChcbiAgJHNob3J0XG4pIHtcbiAgJF9yZXR1cm46ICgpO1xuICAkX2NvbHVtbnM6ICgpO1xuICAkX2d1dHRlcnM6IG51bGw7XG5cbiAgQGlmIG5vdCh1bml0bGVzcyhudGgobnRoKCRzaG9ydCwgMSksIDEpKSkge1xuICAgICRfZ3V0dGVyczogbnRoKCRzaG9ydCwgMSk7XG4gIH0gQGVsc2Uge1xuICAgICRfY29sdW1uczogKGNvbHVtbnM6IG50aCgkc2hvcnQsIDEpKTtcbiAgICAkX2d1dHRlcnM6IGlmKGxlbmd0aCgkc2hvcnQpID4gMSwgbnRoKCRzaG9ydCwgMiksICRfZ3V0dGVycyk7XG4gIH1cblxuICBAaWYgdHlwZS1vZigkX2d1dHRlcnMpID09IGxpc3QgYW5kIGxlbmd0aCgkX2d1dHRlcnMpID4gMCB7XG4gICAgJF9ndXR0ZXJzOiAoXG4gICAgICBndXR0ZXJzOiBudGgoJF9ndXR0ZXJzLCAyKSAvIG50aCgkX2d1dHRlcnMsIDEpLFxuICAgICAgY29sdW1uLXdpZHRoOiBudGgoJF9ndXR0ZXJzLCAxKSxcbiAgICApO1xuICB9IEBlbHNlIHtcbiAgICAkX2d1dHRlcnM6IGlmKCRfZ3V0dGVycywgKGd1dHRlcnM6ICRfZ3V0dGVycyksICgpKTtcbiAgfVxuXG4gICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sICRfY29sdW1ucyk7XG4gICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sICRfZ3V0dGVycyk7XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cblxuXG4vLyBQYXJzZSBHcmlkL0NvbnRleHRcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLVxuQGZ1bmN0aW9uIHBhcnNlLWdyaWQoXG4gICRzaG9ydDogJHN1c3lcbikge1xuICAkX3JldHVybjogcGFyc2Utc2V0dGluZ3MoJHNob3J0KTtcbiAgJF9sYXlvdXQ6ICgpO1xuXG4gIEBpZiB0eXBlLW9mKCRzaG9ydCkgPT0gbWFwIHtcbiAgICAkX3JldHVybjogJHNob3J0O1xuICB9IEBlbHNlIHtcbiAgICBAZWFjaCAkaXRlbSBpbiAkc2hvcnQge1xuICAgICAgLy8gbnVtYmVyIG9yIGxpc3RcbiAgICAgIEBpZiB0eXBlLW9mKCRpdGVtKSA9PSBudW1iZXIgb3IgdHlwZS1vZigkaXRlbSkgPT0gbGlzdCB7XG4gICAgICAgIEBpZiB0eXBlLW9mKCRpdGVtKSA9PSBsaXN0IG9yIHVuaXRsZXNzKCRpdGVtKSB7XG4gICAgICAgICAgJF9sYXlvdXQ6IGFwcGVuZCgkX2xheW91dCwgJGl0ZW0pO1xuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAoY29udGFpbmVyOiAkaXRlbSkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgJF9sYXlvdXQ6IGlmKGxlbmd0aCgkX2xheW91dCkgPiAwLCBwYXJzZS1sYXlvdXQoJF9sYXlvdXQpLCAkX2xheW91dCk7XG4gIH1cblxuICBAcmV0dXJuIG1hcC1tZXJnZSgkX3JldHVybiwgJF9sYXlvdXQpO1xufVxuXG5cbi8vIFBhcnNlIFNwYW5cbi8vIC0tLS0tLS0tLS1cbkBmdW5jdGlvbiBwYXJzZS1zcGFuKFxuICAkc2hvcnQsXG4gICRrZXk6IHNwYW5cbikge1xuICAkX3JldHVybjogKCk7XG5cbiAgQGlmIHR5cGUtb2YoJHNob3J0KSA9PSBtYXAge1xuICAgICRfcmV0dXJuOiAkc2hvcnQ7XG4gIH0gQGVsc2Uge1xuICAgICRfYXQ6IGluZGV4KCRzaG9ydCwgYXQpO1xuXG4gICAgQGlmICRfYXQge1xuICAgICAgJF9sb2NpOiAkX2F0ICsgMTtcbiAgICAgICRfbG9jYXRpb246IG50aCgkc2hvcnQsICRfbG9jaSk7XG4gICAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAobG9jYXRpb246ICRfbG9jYXRpb24pKTtcbiAgICAgICRzaG9ydDogc2V0LW50aCgkc2hvcnQsICRfYXQsIG51bGwpO1xuICAgICAgJHNob3J0OiBzZXQtbnRoKCRzaG9ydCwgJF9sb2NpLCBudWxsKTtcbiAgICB9XG5cbiAgICAkX2k6IDE7XG4gICAgJF9zcGFuOiAoKTtcblxuICAgIEB3aGlsZSAkX2kgPD0gbGVuZ3RoKCRzaG9ydCkge1xuICAgICAgJF90aGlzOiBudGgoJHNob3J0LCAkX2kpO1xuXG4gICAgICBAaWYgdHlwZS1vZigkX3RoaXMpID09IG51bWJlciB7XG4gICAgICAgICRfc3BhbjogYXBwZW5kKCRfc3BhbiwgJF90aGlzKTtcbiAgICAgICAgJHNob3J0OiBzZXQtbnRoKCRzaG9ydCwgJF9pLCBudWxsKTtcbiAgICAgIH0gQGVsc2UgaWYgJF90aGlzID09IG9mIHtcbiAgICAgICAgJHNob3J0OiBzZXQtbnRoKCRzaG9ydCwgJF9pLCBudWxsKTtcbiAgICAgICAgJF9pOiBsZW5ndGgoJHNob3J0KSArIDE7XG4gICAgICB9XG5cbiAgICAgICRfaTogJF9pICsgMTtcbiAgICB9XG5cbiAgICBAaWYgbGVuZ3RoKCRfc3BhbikgPiAwIHtcbiAgICAgICRfc3BhbjogaWYobGVuZ3RoKCRfc3BhbikgPT0gMSwgbnRoKCRfc3BhbiwgMSksICRfc3Bhbik7XG4gICAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAoJGtleTogJF9zcGFuKSk7XG4gICAgfVxuXG4gICAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgcGFyc2UtZ3JpZCgkc2hvcnQpKTtcbiAgfVxuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG5cblxuLy8gUGFyc2UgR3V0dGVyc1xuLy8gLS0tLS0tLS0tLS0tLVxuQGZ1bmN0aW9uIHBhcnNlLWd1dHRlcnMoXG4gICRzaG9ydDogJHN1c3lcbikge1xuICAkX2d1dHRlcnM6IHBhcnNlLXNwYW4oJHNob3J0LCBndXR0ZXItb3ZlcnJpZGUpO1xuICAkX3NwYW46IHN1c3ktZ2V0KGd1dHRlci1vdmVycmlkZSwgJF9ndXR0ZXJzKTtcblxuICBAaWYgJF9zcGFuIGFuZCBub3QobWFwLWdldCgkX2d1dHRlcnMsIGNvbHVtbnMpKSB7XG4gICAgJF9jb250ZXh0OiAoKTtcbiAgICAkX25ldzogKCk7XG5cbiAgICBAZWFjaCAkaXRlbSBpbiAkX3NwYW4ge1xuICAgICAgQGlmIHR5cGUtb2YoJGl0ZW0pID09IG51bWJlciBhbmQgdW5pdGxlc3MoJGl0ZW0pIHtcbiAgICAgICAgJF9jb250ZXh0OiBhcHBlbmQoJF9jb250ZXh0LCAkaXRlbSk7XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgJF9uZXc6IGFwcGVuZCgkX25ldywgJGl0ZW0pO1xuICAgICAgfVxuICAgIH1cblxuICAgICRfY29udGV4dDogcGFyc2UtZ3JpZCgkX2NvbnRleHQpO1xuICAgICRfbmV3OiBpZihsZW5ndGgoJF9uZXcpID09IDAsIG51bGwsICRfbmV3KTtcbiAgICAkX25ldzogaWYobGVuZ3RoKCRfbmV3KSA9PSAxLCBudGgoJF9uZXcsIDEpLCAkX25ldyk7XG4gICAgJF9uZXc6IChndXR0ZXItb3ZlcnJpZGU6IGlmKCRfbmV3ICE9ICRfc3BhbiwgJF9uZXcsICRfc3BhbikpO1xuXG4gICAgJF9ndXR0ZXJzOiBtYXAtbWVyZ2UoJF9ndXR0ZXJzLCAkX25ldyk7XG4gICAgJF9ndXR0ZXJzOiBtYXAtbWVyZ2UoJF9ndXR0ZXJzLCAkX2NvbnRleHQpO1xuICB9XG5cbiAgQHJldHVybiAkX2d1dHRlcnM7XG59XG4iLCIvLyBWYWxpZGF0aW9uXG4vLyA9PT09PT09PT09XG5cblxuLy8gVmFsaWRhdGUgQ29sdW1uIE1hdGhcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tXG5AZnVuY3Rpb24gdmFsaWQtY29sdW1uLW1hdGgoXG4gICRtYXRoLFxuICAkY29sdW1uLXdpZHRoXG4pIHtcbiAgQGlmICRtYXRoID09IHN0YXRpYyBhbmQgbm90KCRjb2x1bW4td2lkdGgpIHtcbiAgICBAZXJyb3IgJ1N0YXRpYyBtYXRoIHJlcXVpcmVzIGEgdmFsaWQgY29sdW1uLXdpZHRoIHNldHRpbmcuJztcbiAgfVxuXG4gIEByZXR1cm4gJGNvbHVtbi13aWR0aDtcbn1cbiIsIi8vIEdyaWQgU3ludGF4XG4vLyA9PT09PT09PT09PVxuXG5cbi8vIExheW91dFxuLy8gLS0tLS0tXG4vLyBTZXQgYSBuZXcgbGF5b3V0IHVzaW5nIGEgc2hvcnRoYW5kXG4vLyAtICRsYXlvdXQ6IDxzZXR0aW5ncz5cbi8vIC0gJGNsZWFuOiBib29sZWFuXG5AbWl4aW4gbGF5b3V0KFxuICAkbGF5b3V0LFxuICAkY2xlYW46IGZhbHNlXG4pIHtcbiAgJGluc3BlY3QgIDogJGxheW91dDtcbiAgJHN1c3kgICAgIDogX2dldC1sYXlvdXQoJGxheW91dCwgJGNsZWFuKSAhZ2xvYmFsO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChsYXlvdXQsICRpbnNwZWN0KTtcbn1cblxuXG4vLyBVc2UgR3JpZFxuLy8gLS0tLS0tLS1cbi8vIFVzZSBhbiBhcmJpdHJhcnkgbGF5b3V0IGZvciBhIHNlY3Rpb24gb2YgY29kZVxuLy8gLSAkbGF5b3V0OiA8c2V0dGluZ3M+XG4vLyAtICRjbGVhbjogYm9vbGVhblxuQG1peGluIHdpdGgtbGF5b3V0KFxuICAkbGF5b3V0LFxuICAkY2xlYW46IGZhbHNlXG4pIHtcbiAgJGluc3BlY3QgIDogJGxheW91dDtcbiAgJG9sZCAgICAgIDogJHN1c3k7XG4gICRzdXN5ICAgICA6IF9nZXQtbGF5b3V0KCRsYXlvdXQsICRjbGVhbikgIWdsb2JhbDtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3Qod2l0aC1sYXlvdXQsICRpbnNwZWN0KTtcblxuICBAY29udGVudDtcblxuICAkc3VzeTogJG9sZCAhZ2xvYmFsO1xufVxuXG5cbi8vIExheW91dFxuLy8gLS0tLS0tXG4vLyBSZXR1cm4gYSBwYXJzZWQgbGF5b3V0IG1hcCBiYXNlZCBvbiBzaG9ydGhhbmQgc3ludGF4XG4vLyAtICRsYXlvdXQ6IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBsYXlvdXQoXG4gICRsYXlvdXQ6ICRzdXN5XG4pIHtcbiAgQHJldHVybiBwYXJzZS1ncmlkKCRsYXlvdXQpO1xufVxuXG5cbi8vIEdldCBMYXlvdXRcbi8vIC0tLS0tLS0tLS1cbi8vIFJldHVybiBhIG5ldyBsYXlvdXQgYmFzZWQgb24gY3VycmVudCBhbmQgZ2l2ZW4gc2V0dGluZ3Ncbi8vIC0gJGxheW91dDogPHNldHRpbmdzPlxuLy8gLSAkY2xlYW46IGJvb2xlYW5cbkBmdW5jdGlvbiBfZ2V0LWxheW91dChcbiAgJGxheW91dCxcbiAgJGNsZWFuOiBmYWxzZVxuKSB7XG4gICRsYXlvdXQ6IGxheW91dCgkbGF5b3V0KTtcbiAgQHJldHVybiBpZigkY2xlYW4sICRsYXlvdXQsIF9zdXN5LWRlZXAtbWVyZ2UoJHN1c3ksICRsYXlvdXQpKTtcbn1cbiIsIi8vIFN1c3kgQm94IFNpemluZ1xuLy8gPT09PT09PT09PT09PT09PT1cblxuLy8gR2xvYmFsIEJveCBTaXppbmdcbi8vIC0tLS0tLS0tLS0tLS0tLS0tXG4vLyBTZXQgYSBib3ggbW9kZWwgZ2xvYmFsbHkgb24gYWxsIGVsZW1lbnRzLlxuLy8gLSBbJGJveF06IGJvcmRlci1ib3ggfCBjb250ZW50LWJveFxuLy8gLSBbJGluaGVyaXRdOiB0cnVlIHwgZmFsc2VcbkBtaXhpbiBnbG9iYWwtYm94LXNpemluZyhcbiAgJGJveDogc3VzeS1nZXQoZ2xvYmFsLWJveC1zaXppbmcpLFxuICAkaW5oZXJpdDogZmFsc2Vcbikge1xuICAkaW5zcGVjdDogJGJveDtcblxuICBAaWYgJGluaGVyaXQge1xuICAgIEBhdC1yb290IHtcbiAgICAgICBodG1sIHsgQGluY2x1ZGUgb3V0cHV0KChib3gtc2l6aW5nOiAkYm94KSk7IH1cbiAgICAgICAqLCAqOmJlZm9yZSwgKjphZnRlciB7IGJveC1zaXppbmc6IGluaGVyaXQ7IH1cbiAgICAgfVxuICB9IEBlbHNlIHtcbiAgICAqLCAqOmJlZm9yZSwgKjphZnRlciB7IEBpbmNsdWRlIG91dHB1dCgoYm94LXNpemluZzogJGJveCkpOyB9XG4gIH1cblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QoZ2xvYmFsLWJveC1zaXppbmcsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgdXBkYXRlLWJveC1tb2RlbCgkYm94KTtcbn1cblxuLy8gQm9yZGVyIEJveCBTaXppbmdcbi8vIC0tLS0tLS0tLS0tLS0tLS0tXG4vLyBBIGxlZ2FjeSBzaG9ydGN1dC4uLlxuLy8gLSBbJGluaGVyaXRdOiB0cnVlIHwgZmFsc2VcbkBtaXhpbiBib3JkZXItYm94LXNpemluZyhcbiAgJGluaGVyaXQ6IGZhbHNlXG4pIHtcbiAgQGluY2x1ZGUgZ2xvYmFsLWJveC1zaXppbmcoYm9yZGVyLWJveCwgJGluaGVyaXQpO1xufVxuXG4vLyBVcGRhdGUgQm94IE1vZGVsXG4vLyAtLS0tLS0tLS0tLS0tLS0tXG4vLyBQUklWQVRFOiBVcGRhdGVzIGdsb2JhbCBib3ggbW9kZWwgc2V0dGluZ1xuQG1peGluIHVwZGF0ZS1ib3gtbW9kZWwoXG4gICRib3hcbikge1xuICBAaWYgJGJveCAhPSBzdXN5LWdldChnbG9iYWwtYm94LXNpemluZykge1xuICBAaW5jbHVkZSBzdXN5LXNldChnbG9iYWwtYm94LXNpemluZywgJGJveCk7XG4gIH1cbn1cbiIsIi8vIENvbnRleHQgU3ludGF4XG4vLyA9PT09PT09PT09PT09PVxuXG4vLyBOZXN0ZWQgW2Z1bmN0aW9uXVxuLy8gLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFJldHVybiBhIHN1YnNldCBncmlkIGZvciBuZXN0ZWQgY29udGV4dC5cbi8vIC0gJGNvbnRleHQgICA6IDxzcGFuPlxuQGZ1bmN0aW9uIG5lc3RlZChcbiAgJGNvbnRleHRcbikge1xuICAkY29udGV4dCAgICA6IHBhcnNlLXNwYW4oJGNvbnRleHQpO1xuICAkc3BhbiAgICAgICA6IHN1c3ktZ2V0KHNwYW4sICRjb250ZXh0KTtcbiAgJGxvY2F0aW9uICAgOiBnZXQtbG9jYXRpb24oJGNvbnRleHQpO1xuICAkY29sdW1ucyAgICA6IHN1c3ktZ2V0KGNvbHVtbnMsICRjb250ZXh0KTtcblxuICBAcmV0dXJuIHN1c3ktc2xpY2UoJHNwYW4sICRsb2NhdGlvbiwgJGNvbHVtbnMpO1xufVxuXG4vLyBOZXN0ZWQgW21peGluXVxuLy8gLS0tLS0tLS0tLS0tLS1cbi8vIFVzZSBhIHN1YnNldCBncmlkIGZvciBhIG5lc3RlZCBjb250ZXh0XG4vLyAtICRjb250ZXh0ICAgOiA8c3Bhbj5cbi8vIC0gQGNvbnRlbnQgICA6IDxjb250ZW50PlxuQG1peGluIG5lc3RlZChcbiAgJGNvbnRleHRcbikge1xuICAkaW5zcGVjdCAgOiAkY29udGV4dDtcbiAgJGNvbnRleHQgIDogcGFyc2Utc3BhbigkY29udGV4dCk7XG4gICRvbGQgICAgICA6IHN1c3ktZ2V0KGNvbHVtbnMpO1xuICAkc3VzeSAgICAgOiBtYXAtbWVyZ2UoJHN1c3ksIChjb2x1bW5zOiBuZXN0ZWQoJGNvbnRleHQpKSkgIWdsb2JhbDtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QobmVzdGVkLCAkaW5zcGVjdCk7XG4gIEBjb250ZW50O1xuXG4gICRzdXN5ICAgICA6IG1hcC1tZXJnZSgkc3VzeSwgKGNvbHVtbnM6ICRvbGQpKSAhZ2xvYmFsO1xufVxuIiwiLy8gQmFja2dyb3VuZCBHcmlkIFN5bnRheFxuLy8gPT09PT09PT09PT09PT09PT09PT09PVxuXG4kc3VzeS1vdmVybGF5LWdyaWQtaGVhZC1leGlzdHM6IGZhbHNlO1xuXG5cbi8vIFNob3cgR3JpZC9zXG4vLyAtLS0tLS0tLS0tLVxuLy8gU2hvdyBncmlkIG9uIGFueSBlbGVtZW50IHVzaW5nIGVpdGhlciBiYWNrZ3JvdW5kIG9yIG92ZXJsYXkuXG4vLyAtIFskZ3JpZF0gIDogPHNldHRpbmdzPlxuQG1peGluIHNob3ctZ3JpZChcbiAgJGdyaWQ6ICRzdXN5XG4pIHtcbiAgJGluc3BlY3Q6ICRncmlkO1xuICAkX291dHB1dDogZGVidWctZ2V0KG91dHB1dCwgJGdyaWQpO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChzaG93LWdyaWQsICRpbnNwZWN0KTtcbiAgQGlmICRfb3V0cHV0ID09IG92ZXJsYXkgYW5kIHN1c3ktZ2V0KGRlYnVnIGltYWdlLCAkZ3JpZCkgIT0gaGlkZSB7XG4gICAgQGluY2x1ZGUgb3ZlcmxheS1ncmlkKCRncmlkKTtcbiAgfSBAZWxzZSB7XG4gICAgQGluY2x1ZGUgYmFja2dyb3VuZC1ncmlkKCRncmlkKTtcbiAgfVxufVxuXG5AbWl4aW4gc2hvdy1ncmlkcyhcbiAgJGdyaWQ6ICRzdXN5XG4pIHtcbiAgQGluY2x1ZGUgc2hvdy1ncmlkKCRncmlkKTtcbn1cblxuLy8gQmFja2dyb3VuZCBHcmlkXG4vLyAtLS0tLS0tLS0tLS0tLS1cbi8vIFNob3cgYSBncmlkIGJhY2tncm91bmQgb24gYW55IGVsZW1lbnQuXG4vLyAtIFskZ3JpZF0gIDogPHNldHRpbmdzPlxuQG1peGluIGJhY2tncm91bmQtZ3JpZChcbiAgJGdyaWQ6ICRzdXN5XG4pIHtcbiAgJGluc3BlY3QgIDogJGdyaWQ7XG4gICRfb3V0cHV0ICA6IGdldC1iYWNrZ3JvdW5kKCRncmlkKTtcblxuICBAaWYgbGVuZ3RoKCRfb3V0cHV0KSA+IDAge1xuICAgICRfZmxvdzogc3VzeS1nZXQoZmxvdywgJGdyaWQpO1xuXG4gICAgJF9pbWFnZTogKCk7XG4gICAgQGVhY2ggJG5hbWUsICRsYXllciBpbiBtYXAtZ2V0KCRfb3V0cHV0LCBpbWFnZSkge1xuICAgICAgJF9kaXJlY3Rpb246IGlmKCRuYW1lID09IGJhc2VsaW5lLCB0byBib3R0b20sIHRvIHRvKCRfZmxvdykpO1xuICAgICAgJF9pbWFnZTogYXBwZW5kKCRfaW1hZ2UsIGxpbmVhci1ncmFkaWVudCgkX2RpcmVjdGlvbiwgJGxheWVyKSwgY29tbWEpO1xuICAgIH1cbiAgICAkX291dHB1dDogbWFwLW1lcmdlKCRfb3V0cHV0LCAoaW1hZ2U6ICRfaW1hZ2UpKTtcblxuICAgIEBpbmNsdWRlIGJhY2tncm91bmQtZ3JpZC1vdXRwdXQoJF9vdXRwdXQuLi4pO1xuICAgIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChiYWNrZ3JvdW5kLWdyaWQsICRpbnNwZWN0KTtcbiAgfVxufVxuXG5cbi8vIE92ZXJsYXkgR3JpZFxuLy8gLS0tLS0tLS0tLS0tXG4vLyBHZW5lcmF0ZSBhbiBpY29uIHRvIHRyaWdnZXIgZ3JpZC1vdmVybGF5cyBvbiBhbnkgZ2l2ZW4gZWxlbWVudHMuXG4vLyAkZ3JpZHMuLi4gIDogPHNlbGVjdG9yPiBbPHNldHRpbmdzPl0gWywgPHNlbGVjdG9yPl0qXG5AbWl4aW4gb3ZlcmxheS1ncmlkIChcbiAgJGdyaWQ6ICRzdXN5XG4pIHtcbiAgQGlmIG5vdCgkc3VzeS1vdmVybGF5LWdyaWQtaGVhZC1leGlzdHMpIHtcbiAgICBAYXQtcm9vdCBoZWFkIHsgQGluY2x1ZGUgb3ZlcmxheS1oZWFkKCRncmlkKTsgfVxuICAgIEBhdC1yb290IGhlYWQ6YmVmb3JlIHsgQGluY2x1ZGUgb3ZlcmxheS10cmlnZ2VyOyB9XG4gICAgQGF0LXJvb3QgaGVhZDpob3ZlciB7IEBpbmNsdWRlIG92ZXJsYXktdHJpZ2dlci1ob3ZlcjsgfVxuICAgICRzdXN5LW92ZXJsYXktZ3JpZC1oZWFkLWV4aXN0czogdHJ1ZSAhZ2xvYmFsO1xuICB9XG5cbiAgaGVhZDpob3ZlciB+ICYsXG4gIGhlYWQ6aG92ZXIgfiBib2R5ICYge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAmOmJlZm9yZSB7XG4gICAgICBAaW5jbHVkZSBncmlkLW92ZXJsYXktYmFzZTtcbiAgICAgIEBpbmNsdWRlIGJhY2tncm91bmQtZ3JpZCgkZ3JpZCk7XG4gICAgfVxuICB9XG59XG5cblxuLy8gW1ByaXZhdGVdIE92ZXJsYXkgVHJpZ2dlclxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuQG1peGluIG92ZXJsYXktdHJpZ2dlciB7XG4gIGNvbnRlbnQ6IFwifHx8XCI7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwYWRkaW5nOiA1cHggMTBweDtcbiAgZm9udDoge1xuICAgIGZhbWlseTogc2Fucy1zZXJpZjtcbiAgICBzaXplOiAxNnB4O1xuICAgIHdlaWdodDogYm9sZDtcbiAgfVxufVxuXG5cbi8vIFtQcml2YXRlXSBPdmVybGF5IFRyaWdnZXIgSG92ZXJcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbkBtaXhpbiBvdmVybGF5LXRyaWdnZXItaG92ZXIge1xuICBiYWNrZ3JvdW5kOiByZ2JhKHdoaXRlLCAuNSk7XG4gIGNvbG9yOiByZWQ7XG59XG5cblxuLy8gW1ByaXZhdGVdIE92ZXJsYXkgSGVhZFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gPGhlYWQ+IHN0eWxlcyB0byBjcmVhdGUgZ3JpZCBvdmVybGF5IHRvZ2dsZVxuQG1peGluIG92ZXJsYXktaGVhZCAoXG4gICRncmlkOiAkc3VzeVxuKSB7XG4gICRfdG9nZ2xlOiBkZWJ1Zy1nZXQodG9nZ2xlLCAkZ3JpZCk7XG4gICRfaG9yejogbnVsbDtcbiAgJF92ZXJ0OiBudWxsO1xuXG4gIEBlYWNoICRzaWRlIGluICRfdG9nZ2xlIHtcbiAgICAkX2hvcno6IGlmKCRzaWRlID09IGxlZnQgb3IgJHNpZGUgPT0gcmlnaHQsICRzaWRlLCAkX2hvcnopO1xuICAgICRfdmVydDogaWYoJHNpZGUgPT0gdG9wIG9yICRzaWRlID09IGJvdHRvbSwgJHNpZGUsICRfdmVydCk7XG4gIH1cblxuICBkaXNwbGF5OiBibG9jaztcbiAgcG9zaXRpb246IGZpeGVkO1xuICAjeyRfaG9yen06IDEwcHg7XG4gICN7JF92ZXJ0fTogMTBweDtcbiAgei1pbmRleDogOTk5O1xuICBjb2xvcjogIzMzMztcbiAgYmFja2dyb3VuZDogcmdiYSh3aGl0ZSwgLjI1KTtcbn1cblxuXG4vLyBbUHJpdmF0ZV0gR3JpZCBPdmVybGF5IEJhc2Vcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQmFzZSBzdHlsZXMgZm9yIGdlbmVyYXRpbmcgYSBncmlkIG92ZXJsYXlcbkBtaXhpbiBncmlkLW92ZXJsYXktYmFzZSgpIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIGJvdHRvbTogMDtcbiAgcmlnaHQ6IDA7XG4gIGNvbnRlbnQ6IFwiIFwiO1xuICB6LWluZGV4OiA5OTg7XG59XG5cblxuLy8gR2V0IFN5bW1ldHJpY2FsIEJhY2tncm91bmRcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtICRncmlkOiA8bWFwPlxuQGZ1bmN0aW9uIGdldC1iYWNrZ3JvdW5kLXN5bShcbiAgJGdyaWRcbikge1xuICAkZ3JpZCAgICAgICAgICAgOiBwYXJzZS1ncmlkKCRncmlkKTtcbiAgJF9ndXR0ZXJzICAgICAgIDogc3VzeS1nZXQoZ3V0dGVycywgJGdyaWQpO1xuICAkX2NvbHVtbi13aWR0aCAgOiBzdXN5LWdldChjb2x1bW4td2lkdGgsICRncmlkKTtcbiAgJF9tYXRoICAgICAgICAgIDogc3VzeS1nZXQobWF0aCwgJGdyaWQpO1xuXG4gICRfY29sb3IgICAgICAgICA6IGRlYnVnLWdldChjb2xvcik7XG4gICRfdHJhbnMgICAgICAgICA6IHRyYW5zcGFyZW50O1xuICAkX2xpZ2h0ICAgICAgICAgOiBsaWdodGVuKCRfY29sb3IsIDE1JSk7XG5cbiAgJF9lbmQgICAgICAgICAgIDogMSArICRfZ3V0dGVycztcbiAgJF9hZnRlciAgICAgICAgIDogcGVyY2VudGFnZSgxLyRfZW5kKTtcbiAgJF9zdG9wcyAgICAgICAgIDogKCk7XG4gICRfc2l6ZSAgICAgICAgICA6IHNwYW4oMSAkZ3JpZCB3aWRlKTtcblxuICBAaWYgaXMtaW5zaWRlKCRncmlkKSB7XG4gICAgJF9zdG9wczogJF9jb2xvciwgJF9saWdodDtcbiAgfSBAZWxzZSBpZiBpcy1zcGxpdCgkZ3JpZCkge1xuICAgICRfc3BsaXQ6ICRfZ3V0dGVycy8yO1xuICAgICRfYmVmb3JlOiBwZXJjZW50YWdlKCRfc3BsaXQvJF9lbmQpO1xuICAgICRfYWZ0ZXI6IHBlcmNlbnRhZ2UoKDEgKyAkX3NwbGl0KS8kX2VuZCk7XG4gICAgJF9zdG9wczogJF90cmFucyAkX2JlZm9yZSwgJF9jb2xvciAkX2JlZm9yZSwgJF9saWdodCAkX2FmdGVyLCAkX3RyYW5zICRfYWZ0ZXI7XG4gIH0gQGVsc2Uge1xuICAgICRfc3RvcHM6ICRfY29sb3IsICRfbGlnaHQgJF9hZnRlciwgJF90cmFucyAkX2FmdGVyO1xuICB9XG5cbiAgQGlmICRfbWF0aCA9PSBzdGF0aWMge1xuICAgICRfc2l6ZTogdmFsaWQtY29sdW1uLW1hdGgoJF9tYXRoLCAkX2NvbHVtbi13aWR0aCkgKiAkX2VuZDtcbiAgfVxuXG4gICRfb3V0cHV0OiAoXG4gICAgaW1hZ2U6IChjb2x1bW5zOiAkX3N0b3BzKSxcbiAgICBzaXplOiAkX3NpemUsXG4gICk7XG5cbiAgQHJldHVybiAkX291dHB1dDtcbn1cblxuXG4vLyBHZXQgQXN5bW1ldHJpY2FsIEluc2lkZVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gJGdyaWQ6IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBnZXQtYXN5bS1pbnNpZGUoXG4gICRncmlkXG4pIHtcbiAgJGdyaWQgICAgIDogcGFyc2UtZ3JpZCgkZ3JpZCk7XG4gICRfY29sdW1ucyA6IHN1c3ktZ2V0KGNvbHVtbnMsICRncmlkKTtcblxuICAkX2NvbG9yICAgOiBkZWJ1Zy1nZXQoY29sb3IpO1xuICAkX2xpZ2h0ICAgOiBsaWdodGVuKCRfY29sb3IsIDE1JSk7XG4gICRfc3RvcHMgICA6ICgpO1xuXG4gIEBmb3IgJGxvY2F0aW9uIGZyb20gMSB0aHJvdWdoIHN1c3ktY291bnQoJF9jb2x1bW5zKSB7XG4gICAgJHRoaXMtc3RvcDogKCk7XG5cbiAgICBAaWYgJGxvY2F0aW9uID09IDEge1xuICAgICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsICRfY29sb3IsIGNvbW1hKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRzdGFydDogcGFyc2Utc3BhbigxIGF0ICRsb2NhdGlvbiAkZ3JpZCk7XG4gICAgICAkc3RhcnQ6IGdldC1pc29sYXRpb24oJHN0YXJ0KTtcbiAgICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCAkX2NvbG9yICRzdGFydCwgY29tbWEpO1xuICAgIH1cblxuICAgIEBpZiAkbG9jYXRpb24gPT0gc3VzeS1jb3VudCgkX2NvbHVtbnMpIHtcbiAgICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCAkX2xpZ2h0LCBjb21tYSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkX2VuZDogcGFyc2Utc3BhbigxIGF0ICgkbG9jYXRpb24gKyAxKSAkZ3JpZCk7XG4gICAgICAkX2VuZDogZ2V0LWlzb2xhdGlvbigkX2VuZCk7XG4gICAgICAkdGhpcy1zdG9wOiBhcHBlbmQoJHRoaXMtc3RvcCwgJF9saWdodCAkX2VuZCwgY29tbWEpO1xuICAgIH1cblxuICAgICRfc3RvcHM6IGpvaW4oJF9zdG9wcywgJHRoaXMtc3RvcCwgY29tbWEpO1xuICB9XG5cbiAgQHJldHVybiAkX3N0b3BzO1xufVxuXG5cbi8vIEdldCBBc3ltbWV0cmljYWwgU3BsaXRcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gJGdyaWQ6IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBnZXQtYXN5bS1zcGxpdChcbiAgJGdyaWRcbikge1xuICAkZ3JpZCAgICAgOiBwYXJzZS1ncmlkKCRncmlkKTtcbiAgJF9jb2x1bW5zIDogc3VzeS1nZXQoY29sdW1ucywgJGdyaWQpO1xuXG4gICRfY29sb3IgICA6IGRlYnVnLWdldChjb2xvcik7XG4gICRfbGlnaHQgICA6IGxpZ2h0ZW4oJF9jb2xvciwgMTUlKTtcbiAgJF9zdG9wcyAgIDogKCk7XG5cbiAgQGZvciAkbG9jYXRpb24gZnJvbSAxIHRocm91Z2ggc3VzeS1jb3VudCgkX2NvbHVtbnMpIHtcbiAgICAkdGhpcy1zdG9wOiAoKTtcblxuICAgICRzdGFydDogcGFyc2Utc3BhbigxIGF0ICRsb2NhdGlvbiAkZ3JpZCk7XG4gICAgJHN0YXJ0OiBnZXQtaXNvbGF0aW9uKCRzdGFydCk7XG4gICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsIHRyYW5zcGFyZW50ICRzdGFydCwgY29tbWEpO1xuICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCAkX2NvbG9yICRzdGFydCwgY29tbWEpO1xuXG4gICAgJF9lbmQ6ICRzdGFydCArIHNwYW4oMSBhdCAkbG9jYXRpb24gJGdyaWQpO1xuICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCAkX2xpZ2h0ICRfZW5kLCBjb21tYSk7XG4gICAgJHRoaXMtc3RvcDogYXBwZW5kKCR0aGlzLXN0b3AsIHRyYW5zcGFyZW50ICRfZW5kLCBjb21tYSk7XG5cbiAgICAkX3N0b3BzOiBqb2luKCRfc3RvcHMsICR0aGlzLXN0b3AsIGNvbW1hKTtcbiAgfVxuXG4gIEByZXR1cm4gJF9zdG9wcztcbn1cblxuXG4vLyBHZXQgQXN5bW1ldHJpY2FsIE91dHNpZGVcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSAkZ3JpZDogPHNldHRpbmdzPlxuQGZ1bmN0aW9uIGdldC1hc3ltLW91dHNpZGUoXG4gICRncmlkXG4pIHtcbiAgJGdyaWQgICAgIDogcGFyc2UtZ3JpZCgkZ3JpZCk7XG4gICRfY29sdW1ucyA6IHN1c3ktZ2V0KGNvbHVtbnMsICRncmlkKTtcblxuICAkX2NvbG9yICAgOiBkZWJ1Zy1nZXQoY29sb3IpO1xuICAkX2xpZ2h0ICAgOiBsaWdodGVuKCRfY29sb3IsIDE1JSk7XG4gICRfdHJhbnMgICA6IHRyYW5zcGFyZW50O1xuICAkX3N0b3BzICAgOiAoKTtcblxuICBAZm9yICRsb2NhdGlvbiBmcm9tIDEgdGhyb3VnaCBzdXN5LWNvdW50KCRfY29sdW1ucykge1xuICAgICR0aGlzLXN0b3A6ICgpO1xuXG4gICAgQGlmICRsb2NhdGlvbiA9PSAxIHtcbiAgICAgICR0aGlzLXN0b3A6IGFwcGVuZCgkdGhpcy1zdG9wLCAkX2NvbG9yLCBjb21tYSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkc3RhcnQ6IHBhcnNlLXNwYW4oMSBhdCAkbG9jYXRpb24gJGdyaWQpO1xuICAgICAgJHN0YXJ0OiBnZXQtaXNvbGF0aW9uKCRzdGFydCk7XG4gICAgICAkdGhpcy1zdG9wOiBhcHBlbmQoJHRoaXMtc3RvcCwgJF9jb2xvciAkc3RhcnQsIGNvbW1hKTtcbiAgICB9XG5cbiAgICBAaWYgJGxvY2F0aW9uID09IHN1c3ktY291bnQoJF9jb2x1bW5zKSB7XG4gICAgICAkdGhpcy1zdG9wOiBhcHBlbmQoJHRoaXMtc3RvcCwgJF9saWdodCwgY29tbWEpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJGd1dHRlcjogZ2V0LXNwYW4td2lkdGgoZmlyc3QgJGxvY2F0aW9uICRncmlkKTtcblxuICAgICAgJF9lbmQ6IHBhcnNlLXNwYW4oMSBhdCAoJGxvY2F0aW9uICsgMSkgJGdyaWQpO1xuICAgICAgJF9lbmQ6IGdldC1pc29sYXRpb24oJF9lbmQpO1xuXG4gICAgICAkZ3V0dGVyOiAkX2xpZ2h0ICRndXR0ZXIsICRfdHJhbnMgJGd1dHRlciwgJF90cmFucyAkX2VuZDtcbiAgICAgICR0aGlzLXN0b3A6IGpvaW4oJHRoaXMtc3RvcCwgJGd1dHRlciwgY29tbWEpO1xuICAgIH1cblxuICAgICRfc3RvcHM6IGpvaW4oJF9zdG9wcywgJHRoaXMtc3RvcCwgY29tbWEpO1xuICB9XG5cbiAgQHJldHVybiAkX3N0b3BzO1xufVxuXG5cbi8vIEdldCBBc3ltbWV0cmljYWwgQmFja2dyb3VuZFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyAtICRncmlkOiA8c2V0dGluZ3M+XG5AZnVuY3Rpb24gZ2V0LWJhY2tncm91bmQtYXN5bShcbiAgJGdyaWRcbikge1xuICAkX3N0b3BzOiAoKTtcblxuICBAaWYgaXMtaW5zaWRlKCRncmlkKSB7XG4gICAgJF9zdG9wczogZ2V0LWFzeW0taW5zaWRlKCRncmlkKTtcbiAgfSBAZWxzZSBpZiBpcy1zcGxpdCgkZ3JpZCkge1xuICAgICRfc3RvcHM6IGdldC1hc3ltLXNwbGl0KCRncmlkKTtcbiAgfSBAZWxzZSB7XG4gICAgJF9zdG9wczogZ2V0LWFzeW0tb3V0c2lkZSgkZ3JpZCk7XG4gIH1cblxuICBAcmV0dXJuIChpbWFnZTogKGNvbHVtbnM6ICRfc3RvcHMpKTtcbn1cblxuXG4vLyBHZXQgQmFja2dyb3VuZFxuLy8gLS0tLS0tLS0tLS0tLS1cbi8vIC0gJGdyaWQ6IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBnZXQtYmFja2dyb3VuZChcbiAgJGdyaWRcbikge1xuICAkZ3JpZCAgICAgOiBwYXJzZS1ncmlkKCRncmlkKTtcbiAgJF9zaG93ICAgIDogc3VzeS1nZXQoZGVidWcgaW1hZ2UsICRncmlkKTtcbiAgJF9yZXR1cm4gIDogKCk7XG5cbiAgQGlmICRfc2hvdyBhbmQgJF9zaG93ICE9ICdoaWRlJyB7XG4gICAgJF9jb2x1bW5zOiBzdXN5LWdldChjb2x1bW5zLCAkZ3JpZCk7XG5cbiAgICBAaWYgJF9zaG93ICE9ICdzaG93LWJhc2VsaW5lJyB7XG4gICAgICAkX3N5bTogaXMtc3ltbWV0cmljYWwoJF9jb2x1bW5zKTtcbiAgICAgICRfcmV0dXJuOiBpZigkX3N5bSwgZ2V0LWJhY2tncm91bmQtc3ltKCRncmlkKSwgZ2V0LWJhY2tncm91bmQtYXN5bSgkZ3JpZCkpO1xuICAgICAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgKGNsaXA6IGNvbnRlbnQtYm94KSk7XG4gICAgfVxuXG4gICAgQGlmICRfc2hvdyAhPSAnc2hvdy1jb2x1bW5zJ1xuICAgICAgYW5kIGdsb2JhbC12YXJpYWJsZS1leGlzdHMoYmFzZS1saW5lLWhlaWdodClcbiAgICAgIGFuZCB0eXBlLW9mKCRiYXNlLWxpbmUtaGVpZ2h0KSA9PSAnbnVtYmVyJ1xuICAgICAgYW5kIG5vdCB1bml0bGVzcygkYmFzZS1saW5lLWhlaWdodCkge1xuICAgICAgJF9jb2xvcjogdmFyaWFibGUtZXhpc3RzKCdncmlkLWJhY2tncm91bmQtYmFzZWxpbmUtY29sb3InKTtcbiAgICAgICRfY29sb3I6IGlmKCRfY29sb3IsICRncmlkLWJhY2tncm91bmQtYmFzZWxpbmUtY29sb3IsICMwMDApO1xuXG4gICAgICAkX2ltYWdlOiBtYXAtZ2V0KCRfcmV0dXJuLCBpbWFnZSk7XG4gICAgICAkX3NpemU6IG1hcC1nZXQoJF9yZXR1cm4sIHNpemUpO1xuICAgICAgJF9iYXNlbGluZTogKGJhc2VsaW5lOiAoJF9jb2xvciAxcHgsIHRyYW5zcGFyZW50IDFweCkpO1xuICAgICAgJF9iYXNlbGluZS1zaXplOiAxMDAlICRiYXNlLWxpbmUtaGVpZ2h0O1xuXG4gICAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAoXG4gICAgICAgIGltYWdlOiBpZigkX2ltYWdlLCBtYXAtbWVyZ2UoJF9pbWFnZSwgJF9iYXNlbGluZSksICRfYmFzZWxpbmUpLFxuICAgICAgICBzaXplOiBpZigkX3NpemUsICgkX3NpemUsICRfYmFzZWxpbmUtc2l6ZSksICRfYmFzZWxpbmUtc2l6ZSksXG4gICAgICApKTtcblxuICAgICAgQGlmICRfc2hvdyA9PSAnc2hvdycge1xuICAgICAgICAkX2NsaXA6IG1hcC1nZXQoJF9yZXR1cm4sIGNsaXApO1xuICAgICAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAoY2xpcDogam9pbigkX2NsaXAsIGJvcmRlci1ib3gsIGNvbW1hKSkpO1xuICAgICAgfVxuICAgIH0gQGVsc2UgaWYgJF9zaG93ID09ICdzaG93LWJhc2VsaW5lJyB7XG4gICAgICBAd2FybiAnUGxlYXNlIHByb3ZpZGUgYSAkYmFzZS1saW5lLWhlaWdodCB3aXRoIHRoZSBkZXNpcmVkIGhlaWdodCBhbmQgdW5pdHMnO1xuICAgIH1cbiAgfVxuXG4gIEBpZiBtYXAtZ2V0KCRfcmV0dXJuLCBpbWFnZSkge1xuICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sIChmbG93OiBzdXN5LWdldChmbG93LCAkZ3JpZCkpKTtcbiAgfVxuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG5cblxuLy8gR2V0IERlYnVnXG4vLyAtLS0tLS0tLS1cbi8vIFJldHVybiB0aGUgdmFsdWUgb2YgYSBkZWJ1ZyBzZXR0aW5nXG4vLyAtICRrZXk6IDxzZXR0aW5nPlxuQGZ1bmN0aW9uIGRlYnVnLWdldChcbiAgJGtleSxcbiAgJGdyaWQ6ICRzdXN5XG4pIHtcbiAgJGtleTogam9pbihkZWJ1ZywgJGtleSwgc3BhY2UpO1xuICBAcmV0dXJuIHN1c3ktZ2V0KCRrZXksICRncmlkKTtcbn1cbiIsIi8vIENvbnRhaW5lciBTeW50YXhcbi8vID09PT09PT09PT09PT09PT1cblxuLy8gQ29udGFpbmVyIFttaXhpbl1cbi8vIC0tLS0tLS0tLS0tLS0tLS0tXG4vLyBTZXQgYSBjb250YWluZXIgZWxlbWVudFxuLy8gLSBbJGxheW91dF0gIDogPHNldHRpbmdzPlxuQG1peGluIGNvbnRhaW5lcihcbiAgJGxheW91dDogJHN1c3lcbikge1xuICAkaW5zcGVjdCAgICA6ICRsYXlvdXQ7XG4gICRsYXlvdXQgICAgIDogcGFyc2UtZ3JpZCgkbGF5b3V0KTtcblxuICAkX3dpZHRoICAgICA6IGdldC1jb250YWluZXItd2lkdGgoJGxheW91dCk7XG4gICRfanVzdGlmeSAgIDogcGFyc2UtY29udGFpbmVyLXBvc2l0aW9uKHN1c3ktZ2V0KGNvbnRhaW5lci1wb3NpdGlvbiwgJGxheW91dCkpO1xuICAkX3Byb3BlcnR5ICA6IGlmKHN1c3ktZ2V0KG1hdGgsICRsYXlvdXQpID09IHN0YXRpYywgd2lkdGgsIG1heC13aWR0aCk7XG5cbiAgJF9ib3ggICAgICAgOiBzdXN5LWdldChib3gtc2l6aW5nLCAkbGF5b3V0KTtcblxuICBAaWYgJF9ib3gge1xuICAgIEBpbmNsdWRlIG91dHB1dCgoYm94LXNpemluZzogJF9ib3gpKTtcbiAgfVxuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChjb250YWluZXIsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgZmxvYXQtY29udGFpbmVyKCRfd2lkdGgsICRfanVzdGlmeSwgJF9wcm9wZXJ0eSk7XG4gIEBpbmNsdWRlIHNob3ctZ3JpZCgkbGF5b3V0KTtcbn1cblxuLy8gQ29udGFpbmVyIFtmdW5jdGlvbl1cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gY29udGFpbmVyIHdpZHRoXG4vLyAtIFskbGF5b3V0XSAgOiA8c2V0dGluZ3M+XG5AZnVuY3Rpb24gY29udGFpbmVyKFxuICAkbGF5b3V0OiAkc3VzeVxuKSB7XG4gICRsYXlvdXQ6IHBhcnNlLWdyaWQoJGxheW91dCk7XG4gIEByZXR1cm4gZ2V0LWNvbnRhaW5lci13aWR0aCgkbGF5b3V0KTtcbn1cblxuLy8gR2V0IENvbnRhaW5lciBXaWR0aFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQ2FsY3VsYXRlIHRoZSBjb250YWluZXIgd2lkdGhcbi8vIC0gWyRsYXlvdXRdOiA8c2V0dGluZ3M+XG5AZnVuY3Rpb24gZ2V0LWNvbnRhaW5lci13aWR0aChcbiAgJGxheW91dDogJHN1c3lcbikge1xuICAkbGF5b3V0ICAgICAgICAgOiBwYXJzZS1ncmlkKCRsYXlvdXQpO1xuICAkX3dpZHRoICAgICAgICAgOiBzdXN5LWdldChjb250YWluZXIsICRsYXlvdXQpO1xuICAkX2NvbHVtbi13aWR0aCAgOiBzdXN5LWdldChjb2x1bW4td2lkdGgsICRsYXlvdXQpO1xuICAkX21hdGggICAgICAgICAgOiBzdXN5LWdldChtYXRoLCAkbGF5b3V0KTtcblxuICBAaWYgbm90KCRfd2lkdGgpIG9yICRfd2lkdGggPT0gYXV0byB7XG4gICAgQGlmIHZhbGlkLWNvbHVtbi1tYXRoKCRfbWF0aCwgJF9jb2x1bW4td2lkdGgpIHtcbiAgICAgICRfY29sdW1ucyAgIDogc3VzeS1nZXQoY29sdW1ucywgJGxheW91dCk7XG4gICAgICAkX2d1dHRlcnMgICA6IHN1c3ktZ2V0KGd1dHRlcnMsICRsYXlvdXQpO1xuICAgICAgJF9zcHJlYWQgICAgOiBpZihpcy1zcGxpdCgkbGF5b3V0KSwgd2lkZSwgbmFycm93KTtcbiAgICAgICRfd2lkdGggICAgIDogc3VzeS1zdW0oJF9jb2x1bW5zLCAkX2d1dHRlcnMsICRfc3ByZWFkKSAqICRfY29sdW1uLXdpZHRoO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJF93aWR0aDogMTAwJTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRfd2lkdGg7XG59XG5cbi8vIFBhcnNlIENvbnRhaW5lciBQb3NpdGlvblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBQYXJzZSB0aGUgJGNvbnRhaW5lci1wb3NpdGlvbiBpbnRvIG1hcmdpbiB2YWx1ZXMuXG4vLyAtIFskanVzdGlmeV0gICA6IGxlZnQgfCBjZW50ZXIgfCByaWdodCB8IDxsZW5ndGg+IFs8bGVuZ3RoPl1cbkBmdW5jdGlvbiBwYXJzZS1jb250YWluZXItcG9zaXRpb24oXG4gICRqdXN0aWZ5OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBjb250YWluZXItcG9zaXRpb24pXG4pIHtcbiAgJF9yZXR1cm46IGlmKCRqdXN0aWZ5ID09IGxlZnQsIDAsIGF1dG8pIGlmKCRqdXN0aWZ5ID09IHJpZ2h0LCAwLCBhdXRvKTtcblxuICBAaWYgbm90KGluZGV4KGxlZnQgcmlnaHQgY2VudGVyLCAkanVzdGlmeSkpIHtcbiAgICAkX3JldHVybjogbnRoKCRqdXN0aWZ5LCAxKTtcbiAgICAkX3JldHVybjogJF9yZXR1cm4gaWYobGVuZ3RoKCRqdXN0aWZ5KSA+IDEsIG50aCgkanVzdGlmeSwgMiksICRfcmV0dXJuKTtcbiAgfVxuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG4iLCIvLyBTcGFuIFN5bnRheFxuLy8gPT09PT09PT09PT1cblxuLy8gU3BhbiBbbWl4aW5dXG4vLyAtLS0tLS0tLS0tLS1cbi8vIFNldCBhIHNwYW5uaW5nIGVsZW1lbnQgdXNpbmcgc2hvcnRoYW5kIHN5bnRheC5cbi8vIC0gJHNwYW4gIDogPHNwYW4+XG5AbWl4aW4gc3BhbihcbiAgJHNwYW5cbikge1xuICAkaW5zcGVjdDogJHNwYW47XG4gICRzcGFuOiBwYXJzZS1zcGFuKCRzcGFuKTtcbiAgJG91dHB1dDogc3Bhbi1tYXRoKCRzcGFuKTtcbiAgJG5lc3Rpbmc6IHN1c3ktZ2V0KHNwYW4sICRzcGFuKTtcbiAgJGNsZWFyOiBzdXN5LWdldChjbGVhciwgJHNwYW4pO1xuXG4gICRib3g6IHN1c3ktZ2V0KGJveC1zaXppbmcsICRzcGFuKTtcbiAgJGNvbnRlbnQtYm94OiBpZihzdXN5LWdldChnbG9iYWwtYm94LXNpemluZykgIT0gJ2JvcmRlci1ib3gnLCB0cnVlLCBmYWxzZSk7XG4gICRib3g6ICRib3ggb3IgaWYoaXMtaW5zaWRlKCRzcGFuKSBhbmQgJGNvbnRlbnQtYm94LCBib3JkZXItYm94LCBudWxsKTtcblxuICBAaWYgJGNsZWFyID09IGJyZWFrIHtcbiAgICBAaW5jbHVkZSBicmVhaztcbiAgfSBAZWxzZSBpZiAkY2xlYXIgPT0gbm9icmVhayB7XG4gICAgQGluY2x1ZGUgbm9icmVhaztcbiAgfVxuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChzcGFuLCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIG91dHB1dCgoYm94LXNpemluZzogJGJveCkpO1xuICBAaW5jbHVkZSBmbG9hdC1zcGFuLW91dHB1dCgkb3V0cHV0Li4uKTtcblxuICBAaWYgdmFsaWQtY29sdW1ucygkbmVzdGluZywgc2lsZW50KSB7XG4gICAgQGluY2x1ZGUgbmVzdGVkKCRzcGFuKSB7IEBjb250ZW50OyB9XG4gIH0gQGVsc2Uge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbi8vIFNwYW4gW2Z1bmN0aW9uXVxuLy8gLS0tLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gdGhlIHdpZHRoIG9mIGEgc3Bhbi5cbi8vIC0gJHNwYW4gIDogPHNwYW4+XG5AZnVuY3Rpb24gc3BhbihcbiAgJHNwYW5cbikge1xuICBAcmV0dXJuIGdldC1zcGFuLXdpZHRoKCRzcGFuKTtcbn1cblxuLy8gU3BhbiBNYXRoXG4vLyAtLS0tLS0tLS1cbi8vIEdldCBhbGwgdGhlIHNwYW4gcmVzdWx0cy5cbi8vIC0gJHNwYW46IDxtYXA+XG5AZnVuY3Rpb24gc3Bhbi1tYXRoKFxuICAkc3BhblxuKSB7XG4gICRuZXN0ICAgICAgICAgICAgIDogaWYoc3VzeS1nZXQocm9sZSwgJHNwYW4pID09IG5lc3QsIHRydWUsIGZhbHNlKTtcbiAgJHNwbGl0LW5lc3QgICAgICAgOiBpZihpcy1zcGxpdCgkc3BhbikgYW5kICRuZXN0LCB0cnVlLCBmYWxzZSk7XG4gICRlZGdlICAgICAgICAgICAgIDogZ2V0LWVkZ2UoJHNwYW4pO1xuICAkbG9jYXRpb24gICAgICAgICA6IGdldC1sb2NhdGlvbigkc3Bhbik7XG5cbiAgJGZsb2F0ICAgICAgICAgICAgOiBmcm9tO1xuICAkcGFkZGluZy1iZWZvcmUgICA6IG51bGw7XG4gICRwYWRkaW5nLWFmdGVyICAgIDogbnVsbDtcbiAgJG1hcmdpbi1iZWZvcmUgICAgOiBudWxsO1xuICAkbWFyZ2luLWFmdGVyICAgICA6IG51bGw7XG5cbiAgLy8gY2FsY3VsYXRlIHdpZHRoc1xuICAkc3ByZWFkOiBpbmRleChtYXAtdmFsdWVzKCRzcGFuKSwgc3ByZWFkKTtcbiAgJHNwYW46IGlmKCRzcGxpdC1uZXN0IGFuZCBub3QoJHNwcmVhZCksIG1hcC1tZXJnZSgkc3BhbiwgKHNwcmVhZDogd2lkZSkpLCAkc3Bhbik7XG4gICR3aWR0aDogZ2V0LXNwYW4td2lkdGgoJHNwYW4pO1xuICAkZ3V0dGVyczogZ2V0LWd1dHRlcnMoJHNwYW4pO1xuXG4gIC8vIGFwcGx5IGd1dHRlcnNcbiAgQGlmIGlzLWluc2lkZSgkc3Bhbikge1xuICAgIEBpZiBub3Qoc3VzeS1nZXQocm9sZSwgJHNwYW4pKSB7XG4gICAgICAkcGFkZGluZy1iZWZvcmU6IG1hcC1nZXQoJGd1dHRlcnMsIGJlZm9yZSk7XG4gICAgICAkcGFkZGluZy1hZnRlcjogbWFwLWdldCgkZ3V0dGVycywgYWZ0ZXIpO1xuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgQGlmIG5vdCgkc3BsaXQtbmVzdCkge1xuICAgICAgJG1hcmdpbi1iZWZvcmU6IG1hcC1nZXQoJGd1dHRlcnMsIGJlZm9yZSk7XG4gICAgICAkbWFyZ2luLWFmdGVyOiBtYXAtZ2V0KCRndXR0ZXJzLCBhZnRlcik7XG4gICAgfVxuICB9XG5cbiAgLy8gc3BlY2lhbCBtYXJnaW4gaGFuZGxpbmdcbiAgQGlmIHN1c3ktZ2V0KG91dHB1dCwgJHNwYW4pID09IGlzb2xhdGUgYW5kICRsb2NhdGlvbiB7XG4gICAgJG1hcmdpbi1iZWZvcmU6IGdldC1pc29sYXRpb24oJHNwYW4pO1xuICAgICRtYXJnaW4tYWZ0ZXI6IC0xMDAlO1xuICB9IEBlbHNlIGlmICRlZGdlIHtcbiAgICAkaXMtc3BsaXQ6IGlzLXNwbGl0KCRzcGFuKTtcbiAgICAkcG9zOiBzdXN5LWdldChndXR0ZXItcG9zaXRpb24sICRzcGFuKTtcblxuICAgIEBpZiAkZWRnZSA9PSBsYXN0IHtcbiAgICAgICRmbG9hdDogc3VzeS1nZXQobGFzdC1mbG93LCAkc3Bhbik7XG4gICAgfVxuXG4gICAgQGlmIG5vdCgkaXMtc3BsaXQpIHtcbiAgICAgIEBpZiAkZWRnZSA9PSBmdWxsIG9yICgkZWRnZSA9PSBmaXJzdCBhbmQgJHBvcyA9PSBiZWZvcmUpIHtcbiAgICAgICAgJG1hcmdpbi1iZWZvcmU6IDA7XG4gICAgICB9XG4gICAgICBAaWYgJGVkZ2UgPT0gZnVsbCBvciAoJGVkZ2UgPT0gbGFzdCBhbmQgJHBvcyA9PSBhZnRlcikge1xuICAgICAgICAkbWFyZ2luLWFmdGVyOiAwO1xuICAgICAgfVxuICAgIH1cblxuICB9XG5cbiAgQHJldHVybiAoXG4gICAgd2lkdGggICAgICAgICAgIDogJHdpZHRoLFxuICAgIGZsb2F0ICAgICAgICAgICA6ICRmbG9hdCxcbiAgICBtYXJnaW4tYmVmb3JlICAgOiAkbWFyZ2luLWJlZm9yZSxcbiAgICBtYXJnaW4tYWZ0ZXIgICAgOiAkbWFyZ2luLWFmdGVyLFxuICAgIHBhZGRpbmctYmVmb3JlICA6ICRwYWRkaW5nLWJlZm9yZSxcbiAgICBwYWRkaW5nLWFmdGVyICAgOiAkcGFkZGluZy1hZnRlcixcbiAgICBmbG93ICAgICAgICAgICAgOiBzdXN5LWdldChmbG93LCAkc3BhbiksXG4gICk7XG59XG5cbi8vIEdldCBTcGFuIFdpZHRoXG4vLyAtLS0tLS0tLS0tLS0tLVxuLy8gUmV0dXJuIHNwYW4gd2lkdGguXG4vLyAtICRzcGFuOiA8bWFwPlxuQGZ1bmN0aW9uIGdldC1zcGFuLXdpZHRoKFxuICAkc3BhblxuKSB7XG4gICRzcGFuICAgICA6IHBhcnNlLXNwYW4oJHNwYW4pO1xuXG4gICRuICAgICAgICA6IHN1c3ktZ2V0KHNwYW4sICRzcGFuKTtcbiAgJGxvY2F0aW9uIDogZ2V0LWxvY2F0aW9uKCRzcGFuKTtcbiAgJGNvbHVtbnMgIDogc3VzeS1nZXQoY29sdW1ucywgJHNwYW4pO1xuICAkZ3V0dGVycyAgOiBzdXN5LWdldChndXR0ZXJzLCAkc3Bhbik7XG4gICRzcHJlYWQgICA6IHN1c3ktZ2V0KHNwcmVhZCwgJHNwYW4pO1xuXG4gICRjb250ZXh0ICA6IG51bGw7XG4gICRzcGFuLXN1bSA6IG51bGw7XG4gICR3aWR0aCAgICA6IG51bGw7XG5cbiAgQGlmICRuID09ICdmdWxsJyB7XG4gICAgJHBvczogc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkc3Bhbik7XG4gICAgJHJvbGU6IHN1c3ktZ2V0KHJvbGUsICRzcGFuKTtcbiAgICAkbjogaWYoJHBvcyA9PSBzcGxpdCBhbmQgJHJvbGUgIT0gbmVzdCwgc3VzeS1jb3VudCgkY29sdW1ucyksIDEwMCUpO1xuICB9XG5cbiAgQGlmIHR5cGUtb2YoJG4pICE9IG51bWJlciB7XG4gICAgQHdhcm4gXCIoI3t0eXBlLW9mKCRuKX0pICN7JG59IGlzIG5vdCBhIHZhbGlkIHNwYW4uXCI7XG4gIH0gQGVsc2UgaWYgdW5pdGxlc3MoJG4pIHtcbiAgICAkY29udGV4dDogc3VzeS1zdW0oJGNvbHVtbnMsICRndXR0ZXJzLCBpZihpcy1zcGxpdCgkc3BhbiksIHdpZGUsIG5hcnJvdykpO1xuICAgICRzcHJlYWQ6IGlmKGlzLWluc2lkZSgkc3BhbiksICRzcHJlYWQgb3Igd2lkZSwgJHNwcmVhZCk7XG4gICAgJHNwYW4tc3VtOiBzdXN5KCRuLCAkbG9jYXRpb24sICRjb2x1bW5zLCAkZ3V0dGVycywgJHNwcmVhZCk7XG5cbiAgICAkX21hdGg6IHN1c3ktZ2V0KG1hdGgsICRzcGFuKTtcbiAgICAkX2NvbHVtbi13aWR0aDogc3VzeS1nZXQoY29sdW1uLXdpZHRoLCAkc3Bhbik7XG4gICAgQGlmICRfbWF0aCA9PSBzdGF0aWMge1xuICAgICAgJHdpZHRoOiAkc3Bhbi1zdW0gKiB2YWxpZC1jb2x1bW4tbWF0aCgkX21hdGgsICRfY29sdW1uLXdpZHRoKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICR3aWR0aDogcGVyY2VudGFnZSgkc3Bhbi1zdW0gLyAkY29udGV4dCk7XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICAkd2lkdGg6ICRuO1xuICB9XG5cbiAgQHJldHVybiAkd2lkdGg7XG59XG4iLCIvLyBHdXR0ZXIgU3ludGF4XG4vLyA9PT09PT09PT09PT09XG5cblxuLy8gR3V0dGVyc1xuLy8gLS0tLS0tLVxuLy8gU2V0IGd1dHRlcnMgb24gYW4gZWxlbWVudC5cbi8vIC0gWyRzcGFuXSAgIDogPHNldHRpbmdzPlxuQG1peGluIGd1dHRlcnMoXG4gICRzcGFuOiAkc3VzeVxuKSB7XG4gICRpbnNwZWN0ICA6ICRzcGFuO1xuICAkc3BhbiAgICAgOiBwYXJzZS1ndXR0ZXJzKCRzcGFuKTtcbiAgJF9ndXR0ZXJzIDogZ2V0LWd1dHRlcnMoJHNwYW4pO1xuXG4gICRfb3V0cHV0OiAoXG4gICAgYmVmb3JlOiBtYXAtZ2V0KCRfZ3V0dGVycywgYmVmb3JlKSxcbiAgICBhZnRlcjogbWFwLWdldCgkX2d1dHRlcnMsIGFmdGVyKSxcbiAgICBmbG93OiBzdXN5LWdldChmbG93LCAkc3BhbiksXG4gICk7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGd1dHRlcnMsICRpbnNwZWN0KTtcblxuICBAaWYgaXMtaW5zaWRlKCRzcGFuKSB7XG4gICAgQGluY2x1ZGUgcGFkZGluZy1vdXRwdXQoJF9vdXRwdXQuLi4pO1xuICB9IEBlbHNlIHtcbiAgICBAaW5jbHVkZSBtYXJnaW4tb3V0cHV0KCRfb3V0cHV0Li4uKTtcbiAgfVxufVxuXG5AbWl4aW4gZ3V0dGVyKFxuICAkc3BhbjogJHN1c3lcbikge1xuICBAaW5jbHVkZSBndXR0ZXJzKCRzcGFuKTtcbn1cblxuXG4vLyBHdXR0ZXJcbi8vIC0tLS0tLVxuLy8gUmV0dXJuIHRoZSB3aWR0aCBvZiBhIGd1dHRlci5cbi8vIC0gWyRzcGFuXSAgIDogPHNldHRpbmdzPlxuQGZ1bmN0aW9uIGd1dHRlcihcbiAgJHNwYW46ICRzdXN5XG4pIHtcbiAgJHNwYW46IHBhcnNlLWd1dHRlcnMoJHNwYW4pO1xuXG4gICRfZ3V0dGVyczogZ2V0LWd1dHRlcnMoJHNwYW4pO1xuICAkX2d1dHRlcnM6IG1hcC1nZXQoJF9ndXR0ZXJzLCBiZWZvcmUpIG9yIG1hcC1nZXQoJF9ndXR0ZXJzLCBhZnRlcik7XG5cbiAgQHJldHVybiAkX2d1dHRlcnM7XG59XG5cbkBmdW5jdGlvbiBndXR0ZXJzKFxuICAkc3BhbjogJHN1c3lcbikge1xuICBAcmV0dXJuIGd1dHRlcigkc3Bhbik7XG59XG5cblxuLy8gR2V0IEd1dHRlciBXaWR0aFxuLy8gLS0tLS0tLS0tLS0tLS0tLVxuLy8gUmV0dXJuIGd1dHRlciB3aWR0aC5cbi8vIC0gWyRjb250ZXh0XTogPGNvbnRleHQ+XG5AZnVuY3Rpb24gZ2V0LWd1dHRlci13aWR0aChcbiAgJGNvbnRleHQ6ICRzdXN5XG4pIHtcbiAgJGNvbnRleHQgIDogcGFyc2UtZ3V0dGVycygkY29udGV4dCk7XG5cbiAgJF9ndXR0ZXJzIDogc3VzeS1nZXQoZ3V0dGVycywgJGNvbnRleHQpO1xuICAkX2d1dHRlciAgOiBzdXN5LWdldChndXR0ZXItb3ZlcnJpZGUsICRjb250ZXh0KTtcblxuICBAaWYgJF9ndXR0ZXJzIGFuZCAoJF9ndXR0ZXJzID4gMCkgYW5kIG5vdCgkX2d1dHRlcikge1xuICAgICRfY29sdW1uLXdpZHRoOiBzdXN5LWdldChjb2x1bW4td2lkdGgsICRjb250ZXh0KTtcbiAgICAkX21hdGg6IGd1dHRlci1tYXRoKCRjb250ZXh0KTtcbiAgICBAaWYgJF9tYXRoID09IHN0YXRpYyB7XG4gICAgICAkX2d1dHRlcjogJF9ndXR0ZXJzICogdmFsaWQtY29sdW1uLW1hdGgoJF9tYXRoLCAkX2NvbHVtbi13aWR0aCk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkX2NvbHVtbnMgOiBzdXN5LWdldChjb2x1bW5zLCAkY29udGV4dCk7XG4gICAgICAkX3NwcmVhZCAgOiBpZihpcy1zcGxpdCgkY29udGV4dCksIHdpZGUsIHN1c3ktZ2V0KHNwcmVhZCwgJGNvbnRleHQpKTtcbiAgICAgICRfZ3V0dGVyICA6IHBlcmNlbnRhZ2UoJF9ndXR0ZXJzIC8gc3VzeS1zdW0oJF9jb2x1bW5zLCAkX2d1dHRlcnMsICRfc3ByZWFkKSk7XG4gICAgfVxuICB9XG5cbiAgJF9ndXR0ZXI6IGlmKCRfZ3V0dGVyID09ICduby1ndXR0ZXJzJyBvciAkX2d1dHRlciA9PSAnbm8tZ3V0dGVyJywgbnVsbCwgJF9ndXR0ZXIpO1xuXG4gIEByZXR1cm4gJF9ndXR0ZXI7XG59XG5cblxuLy8gR2V0IEd1dHRlcnNcbi8vIC0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gYmVmb3JlIGFuZCBhZnRlciBndXR0ZXIgdmFsdWVzLlxuLy8gLSBbJGNvbnRleHRdOiA8Y29udGV4dD5cbkBmdW5jdGlvbiBnZXQtZ3V0dGVycyhcbiAgJGNvbnRleHQ6ICRzdXN5XG4pIHtcbiAgJGNvbnRleHQgICAgICAgICAgICA6IHBhcnNlLWd1dHRlcnMoJGNvbnRleHQpO1xuXG4gICRfZ3V0dGVyLXBvc2l0aW9uICAgOiBzdXN5LWdldChndXR0ZXItcG9zaXRpb24sICRjb250ZXh0KTtcbiAgJF9ndXR0ZXIgICAgICAgICAgICA6IGdldC1ndXR0ZXItd2lkdGgoJGNvbnRleHQpO1xuXG4gICRfcmV0dXJuICAgICAgICAgICAgOiAoYmVmb3JlOiBudWxsLCBhZnRlcjogbnVsbCk7XG5cbiAgQGlmIGlzLXNwbGl0KCRjb250ZXh0KSBhbmQgJF9ndXR0ZXIge1xuICAgICRfZ3V0dGVyOiAkX2d1dHRlciAvIDI7XG4gICAgJF9yZXR1cm46IG1hcC1tZXJnZSgkX3JldHVybiwgKGJlZm9yZTogJF9ndXR0ZXIsIGFmdGVyOiAkX2d1dHRlcikpO1xuICB9IEBlbHNlIHtcbiAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAoJF9ndXR0ZXItcG9zaXRpb246ICRfZ3V0dGVyKSk7XG4gIH1cblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuXG5cbi8vIElzIEluc2lkZVxuLy8gLS0tLS0tLS0tXG4vLyBSZXR1cm5zIHRydWUgaWYgZ3V0dGVycyBhcmUgaW5zaWRlLlxuLy8gJGNvbnRleHQ6IDxjb250ZXh0PlxuQGZ1bmN0aW9uIGlzLWluc2lkZShcbiAgJGNvbnRleHRcbikge1xuICAkX2luc2lkZTogaW5zaWRlIGluc2lkZS1zdGF0aWM7XG4gICRfZ3V0dGVyLXBvc2l0aW9uOiBzdXN5LWdldChndXR0ZXItcG9zaXRpb24sICRjb250ZXh0KTtcblxuICBAcmV0dXJuIGlmKGluZGV4KCRfaW5zaWRlLCAkX2d1dHRlci1wb3NpdGlvbiksIHRydWUsIGZhbHNlKTtcbn1cblxuXG4vLyBJcyBTcGxpdFxuLy8gLS0tLS0tLS1cbi8vIFJldHVybnMgdHJ1ZSBpZiBndXR0ZXJzIGFyZSBzcGxpdC5cbi8vICRjb250ZXh0OiA8Y29udGV4dD5cbkBmdW5jdGlvbiBpcy1zcGxpdChcbiAgJGNvbnRleHRcbikge1xuICAkX3NwbGl0OiBzcGxpdCBpbnNpZGUgaW5zaWRlLXN0YXRpYztcbiAgJF9ndXR0ZXItcG9zaXRpb246IHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJGNvbnRleHQpO1xuXG4gIEByZXR1cm4gaWYoaW5kZXgoJF9zcGxpdCwgJF9ndXR0ZXItcG9zaXRpb24pLCB0cnVlLCBmYWxzZSk7XG59XG5cblxuLy8gR3V0dGVyIE1hdGhcbi8vIC0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gdGhlIG1hdGggdG8gdXNlIGZvciBndXR0ZXIgY2FsY3VsYXRpb25zXG4vLyAkY29udGV4dDogPGNvbnRleHQ+XG5AZnVuY3Rpb24gZ3V0dGVyLW1hdGgoXG4gICRjb250ZXh0OiAkc3VzeVxuKSB7XG4gICRfcmV0dXJuICA6IHN1c3ktZ2V0KG1hdGgsICRjb250ZXh0KTtcbiAgJF9yZXR1cm4gIDogaWYoc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkY29udGV4dCkgPT0gaW5zaWRlLXN0YXRpYywgc3RhdGljLCAkX3JldHVybik7XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cbiIsIi8vIElzb2xhdGlvbiBTeW50YXhcbi8vID09PT09PT09PT09PT09PT1cblxuXG4vLyBJc29sYXRlIFtNaXhpbl1cbi8vIC0tLS0tLS0tLS0tLS0tLVxuLy8gU2V0IGlzb2xhdGlvbiBhcyBhbiBvdmVycmlkZS5cbi8vIC0gJGxvY2F0aW9uOiA8c3Bhbj5cbkBtaXhpbiBpc29sYXRlKFxuICAkaXNvbGF0ZTogMVxuKSB7XG4gICRpbnNwZWN0OiAkaXNvbGF0ZTtcblxuICAkb3V0cHV0OiAoXG4gICAgcHVzaDogaXNvbGF0ZSgkaXNvbGF0ZSksXG4gICAgZmxvdzogc3VzeS1nZXQoZmxvdywgJGlzb2xhdGUpLFxuICApO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChpc29sYXRlLCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIGlzb2xhdGUtb3V0cHV0KCRvdXRwdXQuLi4pO1xufVxuXG5cbi8vIElzb2xhdGUgW2Z1bmN0aW9uXVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gYW4gaXNvbGF0aW9uIG9mZnNldCB3aWR0aC5cbi8vIC0gJGxvY2F0aW9uOiA8c3Bhbj5cbkBmdW5jdGlvbiBpc29sYXRlKFxuICAkaXNvbGF0ZTogMVxuKSB7XG4gICRpc29sYXRlOiBwYXJzZS1zcGFuKCRpc29sYXRlKTtcbiAgJGlzb2xhdGlvbjogc3VzeS1nZXQoc3BhbiwgJGlzb2xhdGUpO1xuXG4gIEBpZiAkaXNvbGF0aW9uIGFuZCBub3QoZ2V0LWxvY2F0aW9uKCRpc29sYXRlKSkge1xuICAgICRuZXc6IChcbiAgICAgIHNwYW46IG51bGwsXG4gICAgICBsb2NhdGlvbjogJGlzb2xhdGlvbixcbiAgICApO1xuICAgICRpc29sYXRlOiBtYXAtbWVyZ2UoJGlzb2xhdGUsICRuZXcpO1xuICB9XG5cbiAgQHJldHVybiBnZXQtaXNvbGF0aW9uKCRpc29sYXRlKTtcbn1cblxuXG4vLyBHZXQgSXNvbGF0aW9uXG4vLyAtLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gdGhlIGlzb2xhdGlvbiBvZmZzZXQgd2lkdGhcbi8vIC0gJGlucHV0OiA8bWFwPlxuQGZ1bmN0aW9uIGdldC1pc29sYXRpb24oXG4gICRpbnB1dFxuKSB7XG4gICRsb2NhdGlvbiAgIDogZ2V0LWxvY2F0aW9uKCRpbnB1dCk7XG4gICRjb2x1bW5zICAgIDogc3VzeS1nZXQoY29sdW1ucywgJGlucHV0KTtcbiAgJHdpZHRoICAgICAgOiBudWxsO1xuXG4gIEBpZiB0eXBlLW9mKCRsb2NhdGlvbikgPT0gbnVtYmVyIGFuZCBub3QodW5pdGxlc3MoJGxvY2F0aW9uKSkge1xuICAgICR3aWR0aDogJGxvY2F0aW9uO1xuICB9IEBlbHNlIGlmICRsb2NhdGlvbiB7XG4gICAgJHB1c2g6ICRsb2NhdGlvbiAtIDE7XG4gICAgQGlmICRwdXNoID4gMCB7XG4gICAgICAkcHVzaDogbWFwLW1lcmdlKCRpbnB1dCwgKFxuICAgICAgICBzcGFuOiAkcHVzaCxcbiAgICAgICAgbG9jYXRpb246IDEsXG4gICAgICAgIHNwcmVhZDogd2lkZSxcbiAgICAgICkpO1xuICAgICAgJHdpZHRoOiBnZXQtc3Bhbi13aWR0aCgkcHVzaCk7XG4gICAgfVxuICB9XG5cbiAgQGlmIHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJGlucHV0KSA9PSBzcGxpdFxuICAgICAgYW5kIHN1c3ktZ2V0KGd1dHRlcnMsICRpbnB1dCkgPiAwIHtcbiAgICAkd2lkdGg6IGlmKCR3aWR0aCA9PSBudWxsLCBndXR0ZXJzKCRpbnB1dCksICR3aWR0aCArIGd1dHRlcnMoJGlucHV0KSk7XG4gIH1cblxuICBAcmV0dXJuICR3aWR0aCBvciAwO1xufVxuIiwiLy8gR2FsbGVyeSBTeW50YXhcbi8vID09PT09PT09PT09PT09XG5cbi8vIEdhbGxlcnlcbi8vIC0tLS0tLS1cbi8vIENyZWF0ZSBhbiBpc29sYXRlZCBnYWxsZXJ5XG4vLyAtICRzcGFuICAgICAgICA6IDxzcGFuPlxuLy8gLSBbJHNlbGVjdG9yXSAgOiBjaGlsZCB8IG9mLXR5cGVcbkBtaXhpbiBnYWxsZXJ5KFxuICAkc3BhbixcbiAgJHNlbGVjdG9yOiBjaGlsZFxuKSB7XG4gICRpbnNwZWN0ICAgIDogJHNwYW47XG4gICRzcGFuICAgICAgIDogcGFyc2Utc3Bhbigkc3Bhbik7XG4gICRzcGFuICAgICAgIDogbWFwLW1lcmdlKCRzcGFuLCAobG9jYXRpb246IDEpKTtcblxuICAkbiAgICAgICAgICAgIDogc3VzeS1nZXQoc3BhbiwgJHNwYW4pO1xuICAkY29sdW1ucyAgICAgIDogc3VzeS1nZXQoY29sdW1ucywgJHNwYW4pO1xuICAkY29udGV4dCAgICAgIDogc3VzeS1jb3VudCgkY29sdW1ucyk7XG4gICRmbG93ICAgICAgICAgOiBzdXN5LWdldChmbG93LCAkc3Bhbik7XG5cbiAgJGluc2lkZSAgICAgICA6IGlzLWluc2lkZSgkc3Bhbik7XG4gICRmcm9tICAgICAgICAgOiBmcm9tKCRmbG93KTtcbiAgJGxpbmUgICAgICAgICA6IGZsb29yKCRjb250ZXh0IC8gJG4pO1xuICAkc3ltbWV0cmljYWwgIDogaXMtc3ltbWV0cmljYWwoJGNvbHVtbnMpO1xuXG4gICRvdXRwdXQ6IChcbiAgICB3aWR0aCAgICAgICAgICAgICA6IG51bGwsXG4gICAgZmxvYXQgICAgICAgICAgICAgOiBmcm9tLFxuICAgIG1hcmdpbi1iZWZvcmUgICAgIDogbnVsbCxcbiAgICBtYXJnaW4tYWZ0ZXIgICAgICA6IG51bGwsXG4gICAgcGFkZGluZy1iZWZvcmUgICAgOiBudWxsLFxuICAgIHBhZGRpbmctYWZ0ZXIgICAgIDogbnVsbCxcbiAgICBmbG93ICAgICAgICAgICAgICA6ICRmbG93LFxuICApO1xuXG4gIEBpZiAkaW5zaWRlIHtcbiAgICAkZ3V0dGVyczogZ2V0LWd1dHRlcnMoJHNwYW4pO1xuICAgICRvdXRwdXQ6IG1hcC1tZXJnZSgkb3V0cHV0LCAoXG4gICAgICBwYWRkaW5nLWJlZm9yZTogbWFwLWdldCgkZ3V0dGVycywgYmVmb3JlKSxcbiAgICAgIHBhZGRpbmctYWZ0ZXI6IG1hcC1nZXQoJGd1dHRlcnMsIGFmdGVyKSxcbiAgICApKTtcbiAgfVxuXG4gIEBpZiAkc3ltbWV0cmljYWwge1xuICAgICRvdXRwdXQ6IG1hcC1tZXJnZSgkb3V0cHV0LCAod2lkdGg6IGdldC1zcGFuLXdpZHRoKCRzcGFuKSkpO1xuICB9XG5cbiAgJGJveCAgICAgICAgICA6IHN1c3ktZ2V0KGJveC1zaXppbmcsICRzcGFuKTtcbiAgJGdsb2JhbC1ib3ggICA6IGlmKHN1c3ktZ2V0KGdsb2JhbC1ib3gtc2l6aW5nKSA9PSAnYm9yZGVyLWJveCcsIHRydWUsIGZhbHNlKTtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QoZ2FsbGVyeSwgJGluc3BlY3QpO1xuXG4gIC8vIENvbGxlY3RpdmUgT3V0cHV0XG4gIEBpZiAkYm94ID09IGJvcmRlci1ib3ggb3IgKCRpbnNpZGUgYW5kIG5vdCgkYm94KSBhbmQgbm90KCRnbG9iYWwtYm94KSkge1xuICAgIEBpbmNsdWRlIG91dHB1dCgoYm94LXNpemluZzogYm9yZGVyLWJveCkpO1xuICB9IEBlbHNlIGlmICRib3ggPT0gY29udGVudC1ib3gge1xuICAgIEBpbmNsdWRlIG91dHB1dCgoYm94LXNpemluZzogY29udGVudC1ib3gpKTtcbiAgfVxuXG4gIEBpbmNsdWRlIGZsb2F0LXNwYW4tb3V0cHV0KCRvdXRwdXQuLi4pO1xuXG4gIC8vIEluZGl2aWR1YWwgTG9vcFxuICBAZm9yICRpdGVtIGZyb20gMSB0aHJvdWdoICRsaW5lIHtcbiAgICAkbnRoOiAnI3skbGluZX1uICsgI3skaXRlbX0nO1xuICAgICY6bnRoLSN7JHNlbGVjdG9yfSgjeyRudGh9KSB7XG4gICAgICAvLyBJbmRpdmlkdWFsIFByZXBcbiAgICAgICRvdXRwdXQ6IChcbiAgICAgICAgd2lkdGggICAgICAgICAgICAgOiBpZigkc3ltbWV0cmljYWwsIG51bGwsIGdldC1zcGFuLXdpZHRoKCRzcGFuKSksXG4gICAgICAgIGZsb2F0ICAgICAgICAgICAgIDogbnVsbCxcbiAgICAgICAgbWFyZ2luLWJlZm9yZSAgICAgOiBnZXQtaXNvbGF0aW9uKCRzcGFuKSxcbiAgICAgICAgbWFyZ2luLWFmdGVyICAgICAgOiAtMTAwJSxcbiAgICAgICAgcGFkZGluZy1iZWZvcmUgICAgOiBudWxsLFxuICAgICAgICBwYWRkaW5nLWFmdGVyICAgICA6IG51bGwsXG4gICAgICAgIGZsb3cgICAgICAgICAgICAgIDogJGZsb3csXG4gICAgICApO1xuXG4gICAgICAvLyBJbmRpdmlkdWFsIE91dHB1dFxuICAgICAgQGluY2x1ZGUgZmxvYXQtc3Bhbi1vdXRwdXQoJG91dHB1dC4uLik7XG5cbiAgICAgIEBpZiBnZXQtZWRnZSgkc3BhbikgPT0gZmlyc3Qge1xuICAgICAgICBAaW5jbHVkZSBicmVhaztcbiAgICAgICAgQGluY2x1ZGUgZmlyc3QoJHNwYW4pO1xuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIEBpbmNsdWRlIG5vYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIC8vIEluZGl2aWR1YWwgTG9jYXRpb24gSW5jcmVtZW50XG4gICAgICAkbG9jYXRpb246IGdldC1sb2NhdGlvbigkc3BhbikgKyAkbjtcbiAgICAgICRsb2NhdGlvbjogaWYoJGxvY2F0aW9uID4gJGNvbnRleHQsIDEsICRsb2NhdGlvbik7XG4gICAgICAkc3BhbjogbWFwLW1lcmdlKCRzcGFuLCAobG9jYXRpb246ICRsb2NhdGlvbikpO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gUm93IFN0YXJ0ICYgRW5kXG4vLyA9PT09PT09PT09PT09PT1cblxuLy8gQnJlYWtcbi8vIC0tLS0tXG4vLyBBcHBseSB0byBhbnkgZWxlbWVudCB0aGF0IHNob3VsZCBmb3JjZSBhIGxpbmUgYnJlYWsuXG5AbWl4aW4gYnJlYWsge1xuICBAaW5jbHVkZSBvdXRwdXQoKGNsZWFyOiBib3RoKSk7XG59XG5cblxuLy8gTm9CcmVha1xuLy8gLS0tLS0tLVxuLy8gQ2FuY2VsIHRoZSBicmVhaygpIGVmZmVjdCwgZS5nLiB3aGVuIHVzaW5nIG1lZGlhIHF1ZXJpZXMuXG5AbWl4aW4gbm9icmVhayB7XG4gIEBpbmNsdWRlIG91dHB1dCgoY2xlYXI6IG5vbmUpKTtcbn1cblxuXG4vLyBGdWxsXG4vLyAtLS0tXG4vLyAtIFskY29udGV4dF06IDxsYXlvdXQgc2hvcnRoYW5kPlxuQG1peGluIGZ1bGwoXG4gICRjb250ZXh0OiAkc3VzeVxuKSB7XG4gICRpbnNwZWN0IDogJGNvbnRleHQ7XG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChmdWxsLCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIHNwYW4oZnVsbCBvZiBwYXJzZS1ncmlkKCRjb250ZXh0KSBicmVhayk7XG59XG5cblxuLy8gRmlyc3Rcbi8vIC0tLS0tXG4vLyAtIFskY29udGV4dF06IDxzZXR0aW5ncz5cbkBtaXhpbiBmaXJzdChcbiAgJGNvbnRleHQ6ICRzdXN5XG4pIHtcbiAgJGluc3BlY3QgIDogJGNvbnRleHQ7XG4gICRjb250ZXh0ICA6IHBhcnNlLWdyaWQoJGNvbnRleHQpO1xuICAkZmxvdyAgICAgOiBzdXN5LWdldChmbG93LCAkY29udGV4dCk7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGZpcnN0LCAkaW5zcGVjdCk7XG4gIEBpZiBub3QoaXMtc3BsaXQoJGNvbnRleHQpKSB7XG4gICAgQGluY2x1ZGUgZmxvYXQtZmlyc3QoJGZsb3cpO1xuICB9XG59XG5cbkBtaXhpbiBhbHBoYShcbiAgJGNvbnRleHQ6ICRzdXN5XG4pIHtcbiAgQGluY2x1ZGUgZmlyc3QoJGNvbnRleHQpO1xufVxuXG5cbi8vIExhc3Rcbi8vIC0tLS1cbi8vIC0gWyRjb250ZXh0XTogPHNldHRpbmdzPlxuQG1peGluIGxhc3QoXG4gICRjb250ZXh0OiAkc3VzeVxuKSB7XG4gICRpbnNwZWN0ICA6ICRjb250ZXh0O1xuICAkY29udGV4dCAgOiBwYXJzZS1ncmlkKCRjb250ZXh0KTtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QobGFzdCwgJGluc3BlY3QpO1xuXG4gICRvdXRwdXQ6IChcbiAgICBmbG93OiBzdXN5LWdldChmbG93LCAkY29udGV4dCksXG4gICAgbGFzdC1mbG93OiBzdXN5LWdldChsYXN0LWZsb3csICRjb250ZXh0KSxcbiAgICBtYXJnaW46IGlmKGlzLXNwbGl0KCRjb250ZXh0KSwgbnVsbCwgMCksXG4gICk7XG5cbiAgQGluY2x1ZGUgZmxvYXQtbGFzdCgkb3V0cHV0Li4uKTtcbn1cblxuQG1peGluIG9tZWdhKFxuICAkY29udGV4dDogJHN1c3lcbikge1xuICBAaW5jbHVkZSBsYXN0KCRjb250ZXh0KTtcbn1cblxuXG4vLyBHZXQgRWRnZVxuLy8gLS0tLS0tLS1cbi8vIENhbGN1bGF0ZSBlZGdlIHZhbHVlIGJhc2VkIG9uIGxvY2F0aW9uLCBpZiBwb3NzaWJsZVxuQGZ1bmN0aW9uIGdldC1lZGdlKFxuICAkc3BhblxuKSB7XG4gICRzcGFuICAgICAgIDogcGFyc2Utc3Bhbigkc3Bhbik7XG4gICRlZGdlICAgICAgIDogc3VzeS1nZXQoZWRnZSwgJHNwYW4pO1xuXG4gIEBpZiBub3QoJGVkZ2UpIHtcbiAgICAkY291bnQ6IHN1c3ktY291bnQoc3VzeS1nZXQoY29sdW1ucywgJHNwYW4pKTtcbiAgICAkbG9jYXRpb246IHN1c3ktZ2V0KGxvY2F0aW9uLCAkc3Bhbik7XG4gICAgJG46IHN1c3ktZ2V0KHNwYW4sICRzcGFuKTtcblxuICAgICRudW1iZXI6IGlmKHR5cGUtb2YoJGxvY2F0aW9uKSA9PSBudW1iZXIsIHRydWUsIGZhbHNlKTtcbiAgICAkaW5kZXg6IGlmKCRudW1iZXIgYW5kIHVuaXRsZXNzKCRsb2NhdGlvbiksIHRydWUsIGZhbHNlKTtcblxuICAgIEBpZiAkbiA9PSAkY291bnQge1xuICAgICAgJGVkZ2U6IGZ1bGw7XG4gICAgfSBAZWxzZSBpZiAkbG9jYXRpb24gYW5kICRuIGFuZCAkaW5kZXgge1xuICAgICAgQGlmICRsb2NhdGlvbiA9PSAxIHtcbiAgICAgICAgJGVkZ2U6IGlmKCRuID09ICRjb3VudCwgZnVsbCwgZmlyc3QpO1xuICAgICAgfSBAZWxzZSBpZiAkbG9jYXRpb24gKyAkbiAtIDEgPT0gJGNvdW50IHtcbiAgICAgICAgJGVkZ2U6IGxhc3Q7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQGlmICRlZGdlID09IGFscGhhIG9yICRlZGdlID09IG9tZWdhIHtcbiAgICAkZWRnZTogaWYoJGVkZ2UgPT0gYWxwaGEsIGZpcnN0LCBsYXN0KTtcbiAgfVxuXG4gIEByZXR1cm4gJGVkZ2U7XG59XG5cblxuLy8gR2V0IExvY2F0aW9uXG4vLyAtLS0tLS0tLS0tLS1cbi8vIENhbGN1bGF0ZSBsb2NhdGlvbiB2YWx1ZSBiYXNlZCBvbiBlZGdlLCBpZiBwb3NzaWJsZVxuQGZ1bmN0aW9uIGdldC1sb2NhdGlvbihcbiAgJHNwYW5cbikge1xuICAkc3BhbiAgICAgICA6IHBhcnNlLXNwYW4oJHNwYW4pO1xuICAkbG9jYXRpb24gICA6IHN1c3ktZ2V0KGxvY2F0aW9uLCAkc3Bhbik7XG4gICRlZGdlICAgICAgIDogZ2V0LWVkZ2UoJHNwYW4pO1xuICAkbiAgICAgICAgICA6IHN1c3ktZ2V0KHNwYW4sICRzcGFuKTtcblxuICBAaWYgJGVkZ2UgYW5kIG5vdCgkbG9jYXRpb24pIGFuZCB0eXBlLW9mKCRuKSA9PSBudW1iZXIgYW5kIHVuaXRsZXNzKCRuKSB7XG4gICAgQGlmICRlZGdlID09IGZpcnN0IHtcbiAgICAgICRsb2NhdGlvbjogMTtcbiAgICB9IEBlbHNlIGlmICRlZGdlID09IGxhc3Qge1xuICAgICAgJGxvY2F0aW9uOiBzdXN5LWNvdW50KHN1c3ktZ2V0KGNvbHVtbnMsICRzcGFuKSkgLSAkbiArIDE7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkbG9jYXRpb25cbn1cbiIsIi8vIE1hcmdpbiBTeW50YXhcbi8vID09PT09PT09PT09PT1cblxuLy8gUHJlXG4vLyAtLS1cbi8vIEFkZCBzcGFubmluZy1tYXJnaW5zIGJlZm9yZSBhbiBlbGVtZW50LlxuLy8gLSAkc3BhbiAgOiA8c3Bhbj5cbkBtaXhpbiBwcmUoXG4gICRzcGFuXG4pIHtcbiAgJGluc3BlY3Q6ICRzcGFuO1xuICAkc3BhbiAgIDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRzcGFuKSk7XG4gICRmbG93ICAgOiBzdXN5LWdldChmbG93LCAkc3Bhbik7XG4gICRzcGxpdCAgOiBpZihzdXN5LWdldChndXR0ZXItcG9zaXRpb24sICRzcGFuKSA9PSBzcGxpdCwgdHJ1ZSwgZmFsc2UpO1xuICAkZ3V0dGVyIDogZ3V0dGVyKCRzcGFuKTtcbiAgJHNwYW4gICA6IHNwYW4oJHNwYW4pO1xuICAkd2lkdGggIDogaWYoJHNwbGl0IGFuZCAkZ3V0dGVyLCAkc3BhbiArICRndXR0ZXIsICRzcGFuKTtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QocHJlLCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIG1hcmdpbi1vdXRwdXQoJHdpZHRoLCBudWxsLCAkZmxvdyk7XG59XG5cbi8vIFBvc3Rcbi8vIC0tLS1cbi8vIEFkZCBzcGFubmluZy1tYXJnaW5zIGFmdGVyIGFuIGVsZW1lbnQuXG4vLyAtICRzcGFuICA6IDxzcGFuPlxuQG1peGluIHBvc3QoXG4gICRzcGFuXG4pIHtcbiAgJGluc3BlY3QgIDogJHNwYW47XG4gICRzcGFuICAgICA6IG1hcC1tZXJnZSgoc3ByZWFkOiB3aWRlKSwgcGFyc2Utc3Bhbigkc3BhbikpO1xuICAkZmxvdyAgICAgOiBzdXN5LWdldChmbG93LCAkc3Bhbik7XG4gICRzcGxpdCAgICA6IGlmKHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJHNwYW4pID09IHNwbGl0LCB0cnVlLCBmYWxzZSk7XG4gICR3aWR0aCAgICA6IGlmKCRzcGxpdCwgc3Bhbigkc3BhbikgKyBndXR0ZXIoJHNwYW4pLCBzcGFuKCRzcGFuKSk7XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KHBvc3QsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgbWFyZ2luLW91dHB1dChudWxsLCAkd2lkdGgsICRmbG93KTtcbn1cblxuLy8gUHVzaFxuLy8gLS0tLVxuLy8gU2ltcGxlIHN5bm9ueW1uIGZvciBwcmUuXG4vLyAtICRzcGFuICA6IDxzcGFuPlxuQG1peGluIHB1c2goXG4gICRzcGFuXG4pIHtcbiAgQGluY2x1ZGUgcHJlKCRzcGFuKTtcbn1cblxuLy8gUHVsbFxuLy8gLS0tLVxuLy8gQWRkIG5lZ2F0aXZlIHNwYW5uaW5nLW1hcmdpbnMgYmVmb3JlIGFuIGVsZW1lbnQuXG4vLyAtICRzcGFuICA6IDxzcGFuPlxuQG1peGluIHB1bGwoXG4gICRzcGFuXG4pIHtcbiAgJGluc3BlY3QgIDogJHNwYW47XG4gICRzcGFuICAgICA6IG1hcC1tZXJnZSgoc3ByZWFkOiB3aWRlKSwgcGFyc2Utc3Bhbigkc3BhbikpO1xuICAkZmxvdyAgICAgOiBzdXN5LWdldChmbG93LCAkc3Bhbik7XG4gICRzcGxpdCAgICA6IGlmKHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJHNwYW4pID09IHNwbGl0LCB0cnVlLCBmYWxzZSk7XG4gICR3aWR0aCAgICA6IGlmKCRzcGxpdCwgMCAtIHNwYW4oJHNwYW4pICsgZ3V0dGVyKCRzcGFuKSwgMCAtIHNwYW4oJHNwYW4pKTtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QocHVsbCwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBtYXJnaW4tb3V0cHV0KCR3aWR0aCwgbnVsbCwgJGZsb3cpO1xufVxuXG4vLyBTcXVpc2hcbi8vIC0tLS0tLVxuLy8gQWRkIHNwYW5uaW5nLW1hcmdpbnMgYmVmb3JlIGFuZCBhZnRlciBhbiBlbGVtZW50LlxuLy8gLSAkcHJlICAgICA6IDxzcGFuPlxuLy8gLSBbJHBvc3RdICA6IDxzcGFuPlxuQG1peGluIHNxdWlzaChcbiAgJHByZSxcbiAgJHBvc3Q6IGZhbHNlXG4pIHtcbiAgJGluc3BlY3QgICAgICA6ICgkcHJlLCAkcG9zdCk7XG4gICRwcmUgICAgICAgICAgOiBtYXAtbWVyZ2UoKHNwcmVhZDogd2lkZSksIHBhcnNlLXNwYW4oJHByZSkpO1xuXG4gIEBpZiAkcG9zdCB7XG4gICAgJHBvc3Q6IG1hcC1tZXJnZSgoc3ByZWFkOiB3aWRlKSwgcGFyc2Utc3BhbigkcG9zdCkpO1xuICB9IEBlbHNlIHtcbiAgICAkc3Bhbjogc3VzeS1nZXQoc3BhbiwgJHByZSk7XG4gICAgQGlmIGxlbmd0aCgkc3BhbikgPiAxIHtcbiAgICAgICRwcmU6IG1hcC1tZXJnZSgkcHJlLCAoc3BhbjogbnRoKCRzcGFuLCAxKSkpO1xuICAgICAgJHBvc3Q6IG1hcC1tZXJnZSgkcHJlLCAoc3BhbjogbnRoKCRzcGFuLCAyKSkpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJHBvc3Q6ICRwcmU7XG4gICAgfVxuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KHNxdWlzaCwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBwcmUoJHByZSk7XG4gIEBpbmNsdWRlIHBvc3QoJHBvc3QpO1xufVxuIiwiLy8gUGFkZGluZyBTeW50YXhcbi8vID09PT09PT09PT09PT09XG5cbi8vIFByZWZpeFxuLy8gLS0tLS0tXG4vLyBBZGQgc3Bhbm5pbmctcGFkZGluZyBiZWZvcmUgYW4gZWxlbWVudC5cbi8vIC0gJHNwYW4gIDogPHNwYW4+XG5AbWl4aW4gcHJlZml4KFxuICAkc3BhblxuKSB7XG4gICRpbnNwZWN0ICA6ICRzcGFuO1xuICAkc3BhbiAgICAgOiBtYXAtbWVyZ2UoKHNwcmVhZDogd2lkZSksIHBhcnNlLXNwYW4oJHNwYW4pKTtcbiAgJGZsb3cgICAgIDogc3VzeS1nZXQoZmxvdywgJHNwYW4pO1xuICAkd2lkdGggICAgOiBzcGFuKCRzcGFuKTtcblxuICBAaWYgaXMtaW5zaWRlKCRzcGFuKSB7XG4gICAgJGd1dHRlcjogZ3V0dGVyKCRzcGFuKTtcbiAgICAkd2lkdGg6IGlmKCRndXR0ZXIgYW5kIGNvbXBhcmFibGUoJHdpZHRoLCAkZ3V0dGVyKSwgJHdpZHRoICsgJGd1dHRlciwgJHdpZHRoKTtcbiAgfVxuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChwcmVmaXgsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgcGFkZGluZy1vdXRwdXQoJHdpZHRoLCBudWxsLCAkZmxvdyk7XG59XG5cbi8vIFN1ZmZpeFxuLy8gLS0tLS0tXG4vLyBBZGQgc3Bhbm5pbmctcGFkZGluZyBhZnRlciBhbiBlbGVtZW50LlxuLy8gLSAkc3BhbiAgOiA8c3Bhbj5cbkBtaXhpbiBzdWZmaXgoXG4gICRzcGFuXG4pIHtcbiAgJGluc3BlY3QgIDogJHNwYW47XG4gICRzcGFuICAgICA6IG1hcC1tZXJnZSgoc3ByZWFkOiB3aWRlKSwgcGFyc2Utc3Bhbigkc3BhbikpO1xuICAkZmxvdyAgICAgOiBzdXN5LWdldChmbG93LCAkc3Bhbik7XG4gICR3aWR0aCAgICA6IHNwYW4oJHNwYW4pO1xuXG4gIEBpZiBpcy1pbnNpZGUoJHNwYW4pIHtcbiAgICAkZ3V0dGVyOiBndXR0ZXIoJHNwYW4pO1xuICAgICR3aWR0aDogaWYoJGd1dHRlciBhbmQgY29tcGFyYWJsZSgkd2lkdGgsICRndXR0ZXIpLCAkd2lkdGggKyAkZ3V0dGVyLCAkd2lkdGgpO1xuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KHN1ZmZpeCwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBwYWRkaW5nLW91dHB1dChudWxsLCAkd2lkdGgsICRmbG93KTtcbn1cblxuLy8gUGFkXG4vLyAtLS1cbi8vIEFkZCBzcGFubmluZy1wYWRkaW5nIGJlZm9yZSBhbmQgYWZ0ZXIgYW4gZWxlbWVudC5cbi8vIC0gJHByZSAgICAgOiA8c3Bhbj5cbi8vIC0gWyRwb3N0XSAgOiA8c3Bhbj5cbkBtaXhpbiBwYWQoXG4gICRwcmUsXG4gICRwb3N0OiBmYWxzZVxuKSB7XG4gICRpbnNwZWN0ICA6ICgkcHJlLCAkcG9zdCk7XG4gICRwcmUgICAgICA6IG1hcC1tZXJnZSgoc3ByZWFkOiB3aWRlKSwgcGFyc2Utc3BhbigkcHJlKSk7XG5cbiAgQGlmICRwb3N0IHtcbiAgICAkcG9zdDogbWFwLW1lcmdlKChzcHJlYWQ6IHdpZGUpLCBwYXJzZS1zcGFuKCRwb3N0KSk7XG4gIH0gQGVsc2Uge1xuICAgICRzcGFuOiBzdXN5LWdldChzcGFuLCAkcHJlKTtcbiAgICBAaWYgbGVuZ3RoKCRzcGFuKSA+IDEge1xuICAgICAgJHByZTogbWFwLW1lcmdlKCRwcmUsIChzcGFuOiBudGgoJHNwYW4sIDEpKSk7XG4gICAgICAkcG9zdDogbWFwLW1lcmdlKCRwcmUsIChzcGFuOiBudGgoJHNwYW4sIDIpKSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkcG9zdDogJHByZTtcbiAgICB9XG4gIH1cblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QocGFkLCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIHByZWZpeCgkcHJlKTtcbiAgQGluY2x1ZGUgc3VmZml4KCRwb3N0KTtcblxufVxuIiwiLy8gQmxlZWQgU3ludGF4XG4vLyA9PT09PT09PT09PT1cblxuLy8gQmxlZWRcbi8vIC0tLS0tXG4vLyBBZGQgbmVnYXRpdmUgbWFyZ2lucywgYW5kIGVxdWFsIHBvc2l0aXZlIHBhZGRpbmcgdG8gY3JlYXRlIGJsZWVkLlxuLy8gLSAkYmxlZWQgIDogPHNwYW4+XG5AbWl4aW4gYmxlZWQoXG4gICRibGVlZDogMCBndXR0ZXIoKVxuKSB7XG4gICRpbnNwZWN0ICA6ICRibGVlZDtcbiAgJG91dHB1dCAgIDogZ2V0LWJsZWVkKCRibGVlZCk7XG5cbiAgQGlmIHN1c3ktZ2V0KGdsb2JhbC1ib3gtc2l6aW5nKSAhPSBjb250ZW50LWJveCB7XG4gICAgJG91dHB1dDogbWFwLW1lcmdlKChib3gtc2l6aW5nOiBjb250ZW50LWJveCksICRvdXRwdXQpO1xuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGJsZWVkLCAkaW5zcGVjdCk7XG4gIEBpbmNsdWRlIG91dHB1dCgkb3V0cHV0KTtcbn1cblxuXG4vLyBCbGVlZC14XG4vLyAtLS0tLS0tXG4vLyBTaG9ydGN1dCBmb3IgaG9yaXpvbnRhbCBibGVlZC5cbi8vIC0gJGJsZWVkICA6IDxzcGFuPlxuQG1peGluIGJsZWVkLXgoXG4gICRibGVlZDogZ3V0dGVyKClcbikge1xuICAkYmxlZWQgIDogcGFyc2Utc3BhbigkYmxlZWQpO1xuICAkdHJibCAgIDogc3VzeS1nZXQoc3BhbiwgJGJsZWVkKTtcblxuICBAaWYgbGVuZ3RoKCR0cmJsKSA9PSAxIHtcbiAgICAkYmxlZWQ6IG1hcC1tZXJnZSgkYmxlZWQsIChzcGFuOiAwIG50aCgkdHJibCwgMSkpKTtcbiAgfSBAZWxzZSBpZiBsZW5ndGgoJHRyYmwpID09IDIge1xuICAgICRibGVlZDogbWFwLW1lcmdlKCRibGVlZCwgKHNwYW46IDAgbnRoKCR0cmJsLCAyKSAwIG50aCgkdHJibCwgMSkpKTtcbiAgfSBAZWxzZSB7XG4gICAgQHdhcm4gJ2JsZWVkLXggb25seSB0YWtlcyAyIGxlbmd0aHMsIGJ1dCAje2xlbmd0aCgkdHJibCl9IHdlcmUgcGFzc2VkLic7XG4gIH1cblxuICBAaW5jbHVkZSBibGVlZCgkYmxlZWQpO1xufVxuXG5cbi8vIEJsZWVkLXlcbi8vIC0tLS0tLS1cbi8vIFNob3J0Y3V0IGZvciB2ZXJ0aWNhbCBibGVlZC5cbi8vIC0gJGJsZWVkICA6IDxzcGFuPlxuQG1peGluIGJsZWVkLXkoXG4gICRibGVlZDogaWYoZnVuY3Rpb24tZXhpc3RzKHJoeXRobSksIHJoeXRobSgxKSwgMWVtKVxuKSB7XG4gICRibGVlZCAgOiBwYXJzZS1zcGFuKCRibGVlZCk7XG4gICR0cmJsICAgOiBzdXN5LWdldChzcGFuLCAkYmxlZWQpO1xuXG4gIEBpZiBsZW5ndGgoJHRyYmwpID09IDEge1xuICAgICRibGVlZDogbWFwLW1lcmdlKCRibGVlZCwgKHNwYW46IG50aCgkdHJibCwgMSkgMCkpO1xuICB9IEBlbHNlIGlmIGxlbmd0aCgkdHJibCkgPT0gMiB7XG4gICAgJGJsZWVkOiBtYXAtbWVyZ2UoJGJsZWVkLCAoc3BhbjogbnRoKCR0cmJsLCAxKSAwIG50aCgkdHJibCwgMikgMCkpO1xuICB9IEBlbHNlIHtcbiAgICBAd2FybiAnYmxlZWQteSBvbmx5IHRha2VzIDIgbGVuZ3RocywgYnV0ICN7bGVuZ3RoKCR0cmJsKX0gd2VyZSBwYXNzZWQuJztcbiAgfVxuXG4gIEBpbmNsdWRlIGJsZWVkKCRibGVlZCk7XG59XG5cblxuLy8gR2V0IEJsZWVkXG4vLyAtLS0tLS0tLS1cbi8vIFJldHVybiBibGVlZCBvdXRwdXQgdmFsdWVzXG4vLyAtICRibGVlZDogPHNwYW4+XG5AZnVuY3Rpb24gZ2V0LWJsZWVkKFxuICAkYmxlZWRcbikge1xuICAkYmxlZWQgICAgOiBtYXAtbWVyZ2UoKHNwcmVhZDogd2lkZSksIHBhcnNlLXNwYW4oJGJsZWVkKSk7XG4gICR0cmJsICAgICA6IHN1c3ktZ2V0KHNwYW4sICRibGVlZCk7XG4gICRzaG9ydCAgICA6IG51bGw7XG4gICRvdXRwdXQgICA6ICgpO1xuXG4gIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggbGVuZ3RoKCR0cmJsKSB7XG4gICAgJHRoaXM6IG50aCgkdHJibCwgJGkpO1xuICAgICRuZXc6ICgpO1xuICAgICRtYXJnaW46IG51bGw7XG4gICAgJHBhZGRpbmc6IG51bGw7XG4gICAgJHBhZGRpbmcteDogbnVsbDtcblxuICAgIEBpZiAkdGhpcyA+IDAge1xuICAgICAgJHRoaXM6IG1hcC1tZXJnZSgkYmxlZWQsIChzcGFuOiAkdGhpcykpO1xuICAgICAgJG1hcmdpbjogc3BhbigkdGhpcyk7XG4gICAgICAkcGFkZGluZzogJG1hcmdpbjtcbiAgICAgICRwYWRkaW5nLXg6ICRwYWRkaW5nO1xuICAgIH1cblxuICAgIEBpZiAkbWFyZ2luIGFuZCAkbWFyZ2luID4gMCB7XG4gICAgICAkbWFyZ2luOiAtICRtYXJnaW47XG5cbiAgICAgIEBpZiBpcy1pbnNpZGUoJHRoaXMpIHtcbiAgICAgICAgJGd1dHRlcjogZ3V0dGVyKCR0aGlzKTtcbiAgICAgICAgJGpvaW46IGlmKCRndXR0ZXIgYW5kIGNvbXBhcmFibGUoJHBhZGRpbmcsICRndXR0ZXIpLCB0cnVlLCBmYWxzZSk7XG4gICAgICAgICRwYWRkaW5nLXg6IGlmKCRqb2luIGFuZCAkcGFkZGluZyA+IDAsICRwYWRkaW5nICsgJGd1dHRlciwgJHBhZGRpbmcpO1xuICAgICAgfVxuICAgIH1cblxuICAgIEBpZiAkaSA9PSAxIHtcbiAgICAgICRuZXc6IChcbiAgICAgICAgbWFyZ2luLXRvcDogJG1hcmdpbixcbiAgICAgICAgcGFkZGluZy10b3A6ICRwYWRkaW5nLFxuICAgICAgICBtYXJnaW4tcmlnaHQ6ICRtYXJnaW4sXG4gICAgICAgIHBhZGRpbmctcmlnaHQ6ICRwYWRkaW5nLXgsXG4gICAgICAgIG1hcmdpbi1ib3R0b206ICRtYXJnaW4sXG4gICAgICAgIHBhZGRpbmctYm90dG9tOiAkcGFkZGluZyxcbiAgICAgICAgbWFyZ2luLWxlZnQ6ICRtYXJnaW4sXG4gICAgICAgIHBhZGRpbmctbGVmdDogJHBhZGRpbmcteCxcbiAgICAgICk7XG4gICAgfSBAZWxzZSBpZiAkaSA9PSAyIHtcbiAgICAgICRuZXc6IChcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAkbWFyZ2luLFxuICAgICAgICBwYWRkaW5nLXJpZ2h0OiAkcGFkZGluZy14LFxuICAgICAgICBtYXJnaW4tbGVmdDogJG1hcmdpbixcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAkcGFkZGluZy14LFxuICAgICAgKTtcbiAgICB9IEBlbHNlIGlmICRpID09IDMge1xuICAgICAgJG5ldzogKFxuICAgICAgICBtYXJnaW4tYm90dG9tOiAkbWFyZ2luLFxuICAgICAgICBwYWRkaW5nLWJvdHRvbTogJHBhZGRpbmcsXG4gICAgICApO1xuICAgIH0gQGVsc2UgaWYgJGkgPT0gNCB7XG4gICAgICAkbmV3OiAoXG4gICAgICAgIG1hcmdpbi1sZWZ0OiAkbWFyZ2luLFxuICAgICAgICBwYWRkaW5nLWxlZnQ6ICRwYWRkaW5nLXgsXG4gICAgICApO1xuICAgIH1cblxuICAgICRvdXRwdXQ6IG1hcC1tZXJnZSgkb3V0cHV0LCAkbmV3KTtcbiAgfVxuXG4gIEBlYWNoICRwcm9wLCAkdmFsdWUgaW4gJG91dHB1dCB7XG4gICAgJG91dHB1dDogaWYoJHZhbHVlID09IDAsIG1hcC1tZXJnZSgkb3V0cHV0LCAoJHByb3A6IG51bGwpKSwgJG91dHB1dCk7XG4gIH1cblxuICBAcmV0dXJuIGJsZWVkLXNob3J0aGFuZCgkb3V0cHV0KTtcbn1cblxuLy8gQmxlZWQgU2hvcnRoYW5kXG4vLyAtLS0tLS0tLS0tLS0tLS1cbi8vIENvbnZlcnQgYmxlZWQgb3V0cHV0IGludG8gc2hvcnRoYW5kIHdoZW4gcG9zc2libGUuXG4vLyAtICRibGVlZDogPG91dHB1dCBtYXA+XG5AZnVuY3Rpb24gYmxlZWQtc2hvcnRoYW5kKFxuICAkYmxlZWRcbikge1xuICAkbWFyZ2luOiAoKTtcbiAgJHBhZGRpbmc6ICgpO1xuICAkcmV0dXJuOiAoKTtcblxuICBAZWFjaCAka2V5LCAkdmFsdWUgaW4gJGJsZWVkIHtcbiAgICBAaWYgc3RyLWluZGV4KCRrZXksIG1hcmdpbikge1xuICAgICAgJG1hcmdpbjogbWFwLW1lcmdlKCRtYXJnaW4sICgka2V5OiAkdmFsdWUpKTtcbiAgICB9IEBlbHNlIGlmIHN0ci1pbmRleCgka2V5LCBwYWRkaW5nKSA+IDAge1xuICAgICAgJHBhZGRpbmc6IG1hcC1tZXJnZSgkcGFkZGluZywgKCRrZXk6ICR2YWx1ZSkpO1xuICAgIH1cbiAgfVxuXG4gICRwcm9wczogKFxuICAgIG1hcmdpbjogJG1hcmdpbixcbiAgICBwYWRkaW5nOiAkcGFkZGluZyxcbiAgKTtcblxuICBAZWFjaCAkbmFtZSwgJG1hcCBpbiAkcHJvcHMge1xuICAgICRmb3VyOiBpZihsZW5ndGgobWFwLWtleXMoJG1hcCkpID09IDQsIHRydWUsIGZhbHNlKTtcbiAgICAkbnVsbDogaWYoaW5kZXgobWFwLXZhbHVlcygkbWFwKSwgbnVsbCksIHRydWUsIGZhbHNlKTtcblxuICAgIEBpZiAkZm91ciBhbmQgbm90KCRudWxsKSB7XG4gICAgICAkdG9wOiBtYXAtZ2V0KCRtYXAsICcjeyRuYW1lfS10b3AnKTtcbiAgICAgICRyaWdodDogbWFwLWdldCgkbWFwLCAnI3skbmFtZX0tcmlnaHQnKTtcbiAgICAgICRib3R0b206IG1hcC1nZXQoJG1hcCwgJyN7JG5hbWV9LWJvdHRvbScpO1xuICAgICAgJGxlZnQ6IG1hcC1nZXQoJG1hcCwgJyN7JG5hbWV9LWxlZnQnKTtcblxuICAgICAgJHRiOiBpZigkdG9wID09ICRib3R0b20sICR0b3AsIG51bGwpO1xuICAgICAgJHJsOiBpZigkcmlnaHQgPT0gJGxlZnQsICRyaWdodCwgbnVsbCk7XG4gICAgICAkYWxsOiBpZigkdGIgPT0gJHJsLCAkdGIsIG51bGwpO1xuXG4gICAgICAkbmV3OiBpZigkYWxsLCAkYWxsLCBudWxsKTtcblxuICAgICAgQGlmIG5vdCgkbmV3KSB7XG4gICAgICAgIEBpZiAkdGIgYW5kICRybCB7XG4gICAgICAgICAgJG5ldzogJHRiICRybDtcbiAgICAgICAgfSBAZWxzZSBpZiAkcmwge1xuICAgICAgICAgICRuZXc6ICR0b3AgJHJsICRib3R0b207XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICRuZXc6ICR0b3AgJHJpZ2h0ICRib3R0b20gJGxlZnQ7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgJHJldHVybjogbWFwLW1lcmdlKCRyZXR1cm4sICgkbmFtZTogJG5ldykpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJHJldHVybjogbWFwLW1lcmdlKCRyZXR1cm4sICRtYXApO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJHJldHVybjtcbn1cbiIsIi8vIEJyZWFrcG9pbnQgSW50ZWdyYXRpb25cbi8vID09PT09PT09PT09PT09PT09PT09PT1cblxuJHN1c3ktbWVkaWE6ICgpICFkZWZhdWx0O1xuJHN1c3ktbWVkaWEtZmFsbGJhY2s6IGZhbHNlICFkZWZhdWx0O1xuXG4kX3N1c3ktbWVkaWEtY29udGV4dDogKCk7XG5cblxuLy8gU3VzeSBCcmVha3BvaW50XG4vLyAtLS0tLS0tLS0tLS0tLS1cbi8vIENoYW5nZSBncmlkcyBhdCBkaWZmZXJlbnQgbWVkaWEgcXVlcnkgYnJlYWtwb2ludHMuXG4vLyAtICRxdWVyeSAgICAgOiA8bWluLXdpZHRoPiBbPG1heC13aWR0aD5dIHwgPHByb3BlcnR5PiA8dmFsdWU+IHwgPG1hcD5cbi8vIC0gJGxheW91dCAgICA6IDxzZXR0aW5ncz5cbi8vIC0gJG5vLXF1ZXJ5ICA6IDxib29sZWFuPiB8IDxzZWxlY3Rvcj5cbkBtaXhpbiBzdXN5LWJyZWFrcG9pbnQoXG4gICRxdWVyeSxcbiAgJGxheW91dDogZmFsc2UsXG4gICRuby1xdWVyeTogJHN1c3ktbWVkaWEtZmFsbGJhY2tcbikge1xuICBAaW5jbHVkZSBzdXN5LW1lZGlhLXJvdXRlcigkcXVlcnksICRuby1xdWVyeSkge1xuICAgIEBpZiAkbGF5b3V0IHtcbiAgICAgIEBpbmNsdWRlIHdpdGgtbGF5b3V0KCRsYXlvdXQpIHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgICB9XG4gICAgfSBAZWxzZSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbn1cblxuXG4vLyBTdXN5IE1lZGlhXG4vLyAtLS0tLS0tLS0tXG4vLyAtICRxdWVyeTogPG1pbi13aWR0aD4gWzxtYXgtd2lkdGg+XSB8IDxwcm9wZXJ0eT4gPHZhbHVlPlxuLy8gLSAkbm8tcXVlcnk6IDxib29sZWFuPiB8IDxzZWxlY3Rvcj5cbkBtaXhpbiBzdXN5LW1lZGlhKFxuICAkcXVlcnksXG4gICRuby1xdWVyeTogJHN1c3ktbWVkaWEtZmFsbGJhY2tcbikge1xuICAkb2xkLWNvbnRleHQ6ICRfc3VzeS1tZWRpYS1jb250ZXh0O1xuICAkbmFtZTogaWYobWFwLWhhcy1rZXkoJHN1c3ktbWVkaWEsICRxdWVyeSksICRxdWVyeSwgbnVsbCk7XG4gICRxdWVyeTogc3VzeS1nZXQtbWVkaWEoJHF1ZXJ5KTtcbiAgJHF1ZXJ5OiBzdXN5LXBhcnNlLW1lZGlhKCRxdWVyeSk7XG5cbiAgQGluY2x1ZGUgc3VzeS1tZWRpYS1jb250ZXh0KCRxdWVyeSwgJG5hbWUpO1xuXG4gIEBpZiAkbm8tcXVlcnkgYW5kIHR5cGUtb2YoJG5vLXF1ZXJ5KSAhPSBzdHJpbmcge1xuICAgIEBjb250ZW50O1xuICB9IEBlbHNlIHtcbiAgICBAbWVkaWEgI3tzdXN5LXJlbmRlci1tZWRpYSgkcXVlcnkpfSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG5cbiAgICBAaWYgdHlwZS1vZigkbm8tcXVlcnkpID09IHN0cmluZyB7XG4gICAgICAjeyRuby1xdWVyeX0gJiB7XG4gICAgICAgIEBjb250ZW50O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEBpbmNsdWRlIHN1c3ktbWVkaWEtY29udGV4dCgkb2xkLWNvbnRleHQsICRjbGVhbjogdHJ1ZSk7XG59XG5cblxuLy8gTWVkaWEgUm91dGVyXG4vLyAtLS0tLS0tLS0tLS1cbi8vIFJvdXQgbWVkaWEgYXJndW1lbnRzIHRvIHRoZSBjb3JyZWN0IG1peGluLlxuQG1peGluIHN1c3ktbWVkaWEtcm91dGVyKFxuICAkcXVlcnksXG4gICRuby1xdWVyeTogJHN1c3ktbWVkaWEtZmFsbGJhY2tcbikge1xuICBAaWYgc3VzeS1zdXBwb3J0KGJyZWFrcG9pbnQsIChtaXhpbjogYnJlYWtwb2ludCksICR3YXJuOiBmYWxzZSkge1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoJHF1ZXJ5LCAkbm8tcXVlcnkpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgQGluY2x1ZGUgc3VzeS1tZWRpYSgkcXVlcnksICRuby1xdWVyeSkge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG59XG5cblxuLy8gVXBkYXRlIENvbnRleHRcbi8vIC0tLS0tLS0tLS0tLS1cbi8vIFNldCB0aGUgbmV3IG1lZGlhIGNvbnRleHRcbkBtaXhpbiBzdXN5LW1lZGlhLWNvbnRleHQoXG4gICRxdWVyeSxcbiAgJG5hbWU6IG51bGwsXG4gICRjbGVhbjogZmFsc2Vcbikge1xuICAkcXVlcnk6IG1hcC1tZXJnZSgobmFtZTogJG5hbWUpLCAkcXVlcnkpO1xuXG4gIEBpZiAkY2xlYW4ge1xuICAgICRfc3VzeS1tZWRpYS1jb250ZXh0OiAkcXVlcnkgIWdsb2JhbDtcbiAgfSBAZWxzZSB7XG4gICAgJF9zdXN5LW1lZGlhLWNvbnRleHQ6IG1hcC1tZXJnZSgkX3N1c3ktbWVkaWEtY29udGV4dCwgJHF1ZXJ5KSAhZ2xvYmFsO1xuICB9XG59XG5cblxuLy8gTWVkaWEgQ29udGV4dFxuLy8gLS0tLS0tLS0tLS0tLVxuLy8gUmV0dXJuIHRoZSBmdWxsIG1lZGlhIGNvbnRleHQsIG9yIGEgc2luZ2xlIG1lZGlhIHByb3BlcnR5IChlLmcuIG1pbi13aWR0aClcbkBmdW5jdGlvbiBzdXN5LW1lZGlhLWNvbnRleHQoXG4gICRwcm9wZXJ0eTogZmFsc2Vcbikge1xuICBAaWYgJHByb3BlcnR5IHtcbiAgICBAcmV0dXJuIG1hcC1nZXQoJF9zdXN5LW1lZGlhLWNvbnRleHQsICRwcm9wZXJ0eSk7XG4gIH0gQGVsc2Uge1xuICAgIEByZXR1cm4gJF9zdXN5LW1lZGlhLWNvbnRleHQ7XG4gIH1cbn1cblxuXG4vLyBHZXQgTWVkaWFcbi8vIC0tLS0tLS0tLVxuLy8gUmV0dXJuIGEgbmFtZWQgbWVkaWEtcXVlcnkgZnJvbSAkc3VzeS1tZWRpYS5cbi8vIC0gJG5hbWU6IDxrZXk+XG5AZnVuY3Rpb24gc3VzeS1nZXQtbWVkaWEoXG4gICRuYW1lXG4pIHtcbiAgQGlmIG1hcC1oYXMta2V5KCRzdXN5LW1lZGlhLCAkbmFtZSkge1xuICAgICRtYXAtdmFsdWU6IG1hcC1nZXQoJHN1c3ktbWVkaWEsICRuYW1lKTtcbiAgICBAaWYgKCRuYW1lID09ICRtYXAtdmFsdWUpIHtcbiAgICAgICRuYW1lOiAkbWFwLXZhbHVlO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJG5hbWU6IHN1c3ktZ2V0LW1lZGlhKCRtYXAtdmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJG5hbWU7XG59XG5cblxuLy8gUmVuZGVyIE1lZGlhXG4vLyAtLS0tLS0tLS0tLS1cbi8vIEJ1aWxkIGEgbWVkaWEtcXVlcnkgc3RyaW5nIGZyb20gdmFyaW91cyBtZWRpYSBzZXR0aW5nc1xuQGZ1bmN0aW9uIHN1c3ktcmVuZGVyLW1lZGlhKFxuICAkcXVlcnlcbikge1xuICAkb3V0cHV0OiBudWxsO1xuICBAZWFjaCAkcHJvcGVydHksICR2YWx1ZSBpbiAkcXVlcnkge1xuICAgICRzdHJpbmc6IG51bGw7XG5cbiAgICBAaWYgJHByb3BlcnR5ID09IG1lZGlhIHtcbiAgICAgICRzdHJpbmc6ICR2YWx1ZTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRzdHJpbmc6ICcoI3skcHJvcGVydHl9OiAjeyR2YWx1ZX0pJztcbiAgICB9XG5cbiAgICAkb3V0cHV0OiBpZigkb3V0cHV0LCAnI3skb3V0cHV0fSBhbmQgI3skc3RyaW5nfScsICRzdHJpbmcpO1xuICB9XG5cbiAgQHJldHVybiAkb3V0cHV0O1xufVxuXG5cbi8vIFBhcnNlIE1lZGlhXG4vLyAtLS0tLS0tLS0tLVxuLy8gUmV0dXJuIHBhcnNlZCBtZWRpYS1xdWVyeSBzZXR0aW5ncyBiYXNlZCBvbiBzaG9ydGhhbmRcbkBmdW5jdGlvbiBzdXN5LXBhcnNlLW1lZGlhKFxuICAkcXVlcnlcbikge1xuICAkbXE6IG51bGw7XG4gIEBpZiB0eXBlLW9mKCRxdWVyeSkgPT0gbWFwIHtcbiAgICAkbXE6ICRxdWVyeTtcbiAgfSBAZWxzZSBpZiB0eXBlLW9mKCRxdWVyeSkgPT0gbnVtYmVyIHtcbiAgICAkbXE6IChtaW4td2lkdGg6ICRxdWVyeSk7XG4gIH0gQGVsc2UgaWYgdHlwZS1vZigkcXVlcnkpID09IGxpc3QgYW5kIGxlbmd0aCgkcXVlcnkpID09IDIge1xuICAgIEBpZiB0eXBlLW9mKG50aCgkcXVlcnksIDEpKSA9PSBudW1iZXIge1xuICAgICAgJG1xOiAoXG4gICAgICAgIG1pbi13aWR0aDogbWluKCRxdWVyeS4uLiksXG4gICAgICAgIG1heC13aWR0aDogbWF4KCRxdWVyeS4uLiksXG4gICAgICApO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJG1xOiAobnRoKCRxdWVyeSwgMSk6IG50aCgkcXVlcnksIDIpKTtcbiAgICB9XG4gIH0gQGVsc2Uge1xuICAgICRtcTogKG1lZGlhOiAnI3skcXVlcnl9Jyk7XG4gIH1cblxuICBAcmV0dXJuICRtcTtcbn1cbiIsIi8qKioqKioqKioqKioqKioqKioqKioqKlxuICogYmVnaW4gd3AgcmV3cml0ZVxuICoqKioqKioqKioqKioqKioqKioqKioqL1xuLndwLWNhcHRpb24ge1xuXHRib3JkZXI6IG5vbmU7XG5cdGJhY2tncm91bmQ6IG5vbmU7XG59XG5cbi53cC1jYXB0aW9uIHAud3AtY2FwdGlvbi10ZXh0IHtcblx0Zm9udC1zdHlsZTogaXRhbGljO1xufVxuLyoqKioqKioqKioqKioqKioqKioqKioqXG4gKiBlbmQgd3AgcmV3cml0ZVxuICoqKioqKioqKioqKioqKioqKioqKioqL1xuIiwiXG5odG1sIHtcblx0Zm9udC1zaXplOiAxMHB4O1xufVxuXG5ib2R5IHtcblx0Zm9udC1zaXplOiAxLjRyZW07XG5cdGZvbnQtZmFtaWx5OiAnRXhvIDInLCBzYW5zLXNlcmlmO1xufVxuXG4uZW50cnktY29udGVudCB7XG5cdEBpbmNsdWRlIGxpbmsoJGMtZmVhdHVyZSwgJGMtZmVhdHVyZS0yKTtcbn1cblxuaDEsIGgyLCBoMywgaDQsIGg1LCBoNiB7XG5cdHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG5cdGNvbG9yOiAkYy1mZWF0dXJlO1xuXG5cdEBpbmNsdWRlIGxpbmsoJGMtZmVhdHVyZSwgJGMtZmVhdHVyZS0yKTtcbn1cblxuLnBhZ2UtdGl0bGUge1xuXHRiYWNrZ3JvdW5kOiAkYy1iZztcblxuXHQuY29udGFpbmVyIHtcblx0XHRwYWRkaW5nOiAycmVtIDAgIWltcG9ydGFudDtcblxuXHRcdGgxIHtcblx0XHRcdHBhZGRpbmc6IDJyZW0gMDtcblx0XHRcdG1hcmdpbjogMDtcblx0XHRcdHRleHQtYWxpZ246IGxlZnQ7XG5cdFx0fVxuXHR9XG59XG5cbi5sYW5nLWl0ZW0ta3Ige1xuXHRkaXNwbGF5OiBub25lO1xufVxuXG4iLCIvKioqKioqKioqKioqKioqKioqKioqKipcbiAqIGJlZ2luIGdlbmVyYWxcbiAqKioqKioqKioqKioqKioqKioqKioqKi9cbi5ldF9wYl9idXR0b24ge1xuXHRAaW5jbHVkZSBidXR0b247XG59XG5cbi5ldF9wYl9zZWN0aW9uIHtcblx0dWwgbGkge1xuXHRcdGxpc3Qtc3R5bGU6IG5vbmU7XG5cblx0XHQmOmJlZm9yZSB7XG5cdFx0XHRmb250LWZhbWlseTogJ0VUbW9kdWxlcyc7XG5cdFx0XHRjb250ZW50OiBcIlxcMzVcIjtcblx0XHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHRcdG1hcmdpbi1sZWZ0OiAtMThweDtcblx0XHRcdGNvbG9yOiAkYy1mZWF0dXJlLTI7XG5cdFx0XHRmb250LXdlaWdodDogYm9sZDtcblx0XHR9XG5cdH1cbn1cblxuLmV0X3BiX3Rlc3RpbW9uaWFsIHtcblx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiAkYy1iZyAhaW1wb3J0YW50O1xuXG5cdC5ldF9wYl90ZXN0aW1vbmlhbF9kZXNjcmlwdGlvbiB7XG5cdFx0ZGlzcGxheTogYmxvY2s7XG5cdH1cblxuXHQuZXRfcGJfdGVzdGltb25pYWxfZGVzY3JpcHRpb25faW5uZXIge1xuXHRcdHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7XG5cblx0XHRwIHtcblx0XHRcdGZvbnQtc2l6ZTogMnJlbTtcblx0XHRcdHBhZGRpbmctYm90dG9tOiAuNWVtO1xuXHRcdH1cblx0fVxuXG5cdC5ldF9wYl90ZXN0aW1vbmlhbF9hdXRob3Ige1xuXHRcdG1hcmdpbi10b3A6IDA7XG5cdH1cblxuXHQmOmJlZm9yZSB7XG5cdFx0dG9wOiAuNXJlbTtcblx0XHRsZWZ0OiAycmVtO1xuXHRcdGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuXHRcdGZvbnQtc2l6ZTogNXJlbTtcblx0XHRjb250ZW50OiBcIlxcN2JcIjtcblx0XHRjb2xvcjogZGFya2VuKCRjLWJnLCAxMCUpO1xuXHRcdHRyYW5zZm9ybTogcm90YXRlKDE4MGRlZyk7XG5cdFx0ZGlzcGxheTpub25lO1xuXHR9XG5cblx0JjphZnRlciB7XG5cdFx0Ym90dG9tOiAuNXJlbSAhaW1wb3J0YW50O1xuXHRcdHJpZ2h0OiAycmVtICFpbXBvcnRhbnQ7XG5cdFx0YmFja2dyb3VuZDogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcblx0XHRmb250LXNpemU6IDVyZW0gIWltcG9ydGFudDtcblx0XHRjb250ZW50OiBcIlxcN2JcIiAhaW1wb3J0YW50O1xuXHRcdGNvbG9yOiBkYXJrZW4oJGMtYmcsIDEwJSkgIWltcG9ydGFudDtcblx0XHR0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKSAhaW1wb3J0YW50O1xuXHRcdGhlaWdodDogYXV0byAhaW1wb3J0YW50O1xuXHRcdHZpc2liaWxpdHk6IHZpc2libGUgIWltcG9ydGFudDtcblx0XHRkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG5cdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdGZvbnQtZmFtaWx5OiBcIkVUbW9kdWxlc1wiICFpbXBvcnRhbnQ7XG5cdFx0Zm9udC13ZWlnaHQ6IG5vcm1hbDtcblx0XHRmb250LXN0eWxlOiBub3JtYWw7XG5cdFx0Zm9udC12YXJpYW50OiBub3JtYWw7XG5cdH1cbn1cbi8qKioqKioqKioqKioqKioqKioqKioqKlxuICogZW5kIGdlbmVyYWxcbiAqKioqKioqKioqKioqKioqKioqKioqKi9cblxuXG4vKioqKioqKioqKioqKioqKioqKioqKipcbiAqIGJlZ2luIG1haW4gY29udGFpbmVyXG4gKioqKioqKioqKioqKioqKioqKioqKiovXG4jbWFpbi1jb250ZW50IHtcblx0PiAuY29udGFpbmVyIHtcblx0XHRwYWRkaW5nLXRvcDogNXJlbTtcblx0XHRwYWRkaW5nLWJvdHRvbTogNnJlbTtcblx0fVxuXG5cdC5jb250YWluZXIge1xuXHRcdCY6OmJlZm9yZSB7XG5cdFx0XHRkaXNwbGF5OiBub25lO1xuXHRcdH1cblx0fVxuXG5cdGgxIHtcblx0XHRmb250LXdlaWdodDogNDAwO1xuXHR9XG5cblx0LmV0X3BiX3NlY3Rpb24ge1xuXHRcdGgxLCBoMiwgaDMsIGg0IHtcblx0XHRcdHRleHQtYWxpZ246IGxlZnQ7XG5cdFx0XHRtYXJnaW4tYm90dG9tOiAuNWVtO1xuXHRcdFx0bGluZS1oZWlnaHQ6IDFlbTtcblx0XHR9XG5cdH1cbn1cbmJvZHkuaG9tZSB7XG5cdCNtYWluLWNvbnRlbnQge1xuXHRcdC5ldF9wYl9zZWN0aW9uIHtcblx0XHRcdGgxLCBoMiwgaDMsIGg0IHtcblx0XHRcdFx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxufVxuXG5ib2R5Om5vdChob21lKSAjbWFpbi1jb250ZW50IHtcblx0LmV0X3BiX3NlY3Rpb24ge1xuXHRcdCY6bnRoLWNoaWxkKGV2ZW4pIHtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICRjLWJnO1xuXHRcdH1cblx0fVxufVxuLyoqKioqKioqKioqKioqKioqKioqKioqXG4gKiBlbmQgbWFpbiBjb250YWluZXJcbiAqKioqKioqKioqKioqKioqKioqKioqKi9cblxuXG4vKioqKioqKioqKioqKioqKioqKioqKipcbiAqIGJlZ2luIHNsaWRlXG4gKioqKioqKioqKioqKioqKioqKioqKiovXG4uZXRfcGJfc2xpZGVfZGVzY3JpcHRpb24ge1xuXHQuZXRfcGJfc2xpZGVfdGl0bGUge1xuXHRcdGZvbnQtc2l6ZTogNHJlbTtcblx0fVxuXG5cdGNpdGUge1xuXHRcdGZvbnQtc2l6ZTogMS4ycmVtO1xuXHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdGxpbmUtaGVpZ2h0OiAxZW07XG5cdH1cbn1cblxuLmV0LXBiLXNsaWRlci1hcnJvd3Mge1xuXHRhLmV0LXBiLWFycm93LXByZXYsIGEuZXQtcGItYXJyb3ctbmV4dCB7XG5cdFx0Y29sb3I6ICRjLXdoaXRlICFpbXBvcnRhbnQ7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogcmdiYSgkYy13aGl0ZSwgLjIpO1xuXHR9XG59XG4vKioqKioqKioqKioqKioqKioqKioqKipcbiAqIGVuZCBzbGlkZVxuICoqKioqKioqKioqKioqKioqKioqKioqL1xuXG5cbi8qKioqKioqKioqKioqKioqKioqKioqKlxuICogYmVnaW4gYmxvZ1xuICoqKioqKioqKioqKioqKioqKioqKioqL1xuYm9keS5ibG9nIHtcblx0YXJ0aWNsZS5wb3N0IHtcblx0XHQuZW50cnktdGl0bGUge1xuXHRcdFx0bWFyZ2luLWJvdHRvbTogMXJlbTtcblx0XHR9XG5cblx0XHQ+IGEge1xuXHRcdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cblx0XHRcdGltZyB7XG5cdFx0XHRcdG1hcmdpbi1ib3R0b206IDFyZW07XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0QG1lZGlhIChtaW4td2lkdGg6IDkwMHB4KSB7XG5cdFx0LmV0X3BiX3Bvc3QgYSBpbWcge1xuXHRcdFx0bWF4LXdpZHRoOiA3NjdweDtcblx0XHR9XG5cdH1cbn1cblxuYm9keS5zaW5nbGUge1xuXHRhcnRpY2xlLnBvc3Qge1xuXHRcdC5ldF9wb3N0X21ldGFfd3JhcHBlciB7XG5cdFx0XHR0ZXh0LWFsaWduOiBsZWZ0O1xuXG5cdFx0XHRoMSB7XG5cdFx0XHRcdHRleHQtYWxpZ246IGxlZnQ7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0QG1lZGlhIChtaW4td2lkdGg6IDkwMHB4KSB7XG5cdFx0XHRpbWcge1xuXHRcdFx0XHRtYXgtd2lkdGg6IDc2N3B4O1xuXHRcdFx0fVxuXHRcdH1cblx0fVxufVxuLyoqKioqKioqKioqKioqKioqKioqKioqXG4gKiBlbmQgYmxvZ1xuICoqKioqKioqKioqKioqKioqKioqKioqL1xuXG5cbi8qKioqKioqKioqKioqKioqKioqKioqKlxuICogYmVnaW4gaWNvbnNcbiAqKioqKioqKioqKioqKioqKioqKioqKi9cbiNldC1pbmZvLXBob25lOmJlZm9yZSB7XG4gICAgdG9wOiAxcHg7XG4gICAgbWFyZ2luLXJpZ2h0OiA0cHg7XG59XG5cbiNldC1pbmZvLWVtYWlsOmJlZm9yZSB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHRvcDogMnB4O1xufVxuXG5AbWl4aW4gc29jaWFsLWljb25zIHtcblx0ZmxvYXQ6IG5vbmU7XG5cdG1hcmdpbi10b3A6IDFyZW07XG5cblx0QG1lZGlhIChtYXgtd2lkdGg6IDk4MHB4KSB7XG5cdFx0dGV4dC1hbGlnbjogbGVmdDtcblx0fVxuXG5cdGxpIHtcblx0XHRtYXJnaW4tbGVmdDogMDtcblx0XHRtYXJnaW4tcmlnaHQ6IDVweDtcblx0XHRwYWRkaW5nLWxlZnQ6IDA7XG5cblx0XHRAaW5jbHVkZSBsaW5rLWhlYWRlcjtcblxuXHRcdCY6YmVmb3JlIHtcblx0XHRcdGRpc3BsYXk6IG5vbmU7XG5cdFx0fVxuXG5cdFx0YSB7XG5cdFx0XHRmb250LXNpemU6IDEuNHJlbTtcblx0XHRcdHBhZGRpbmc6IC4yZW0gLjVlbTtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICRjLWJnO1xuXHRcdFx0Ym9yZGVyOiAkYm9yZGVyLWRlZmF1bHQ7XG5cdFx0XHRsaW5lLWhlaWdodDoxLjVlbTtcblx0XHR9XG5cdH1cbn1cbi8qKioqKioqKioqKioqKioqKioqKioqKlxuICogZW5kIGljb25zXG4gKioqKioqKioqKioqKioqKioqKioqKiovXG5cbi8qKioqKioqKioqKioqKioqKioqKioqKlxuICogYmVnaW4gY3VzdG9tIGNsYXNzZXNcbiAqKioqKioqKioqKioqKioqKioqKioqKi9cbi50aXRsZS1yb3cge1xuXHRoMiB7XG5cdFx0QGluY2x1ZGUgc2VjdGlvbi10aXRsZTtcblx0XHRAaW5jbHVkZSBsaW5rKCRjLWZlYXR1cmUsICRjLWZlYXR1cmUtMik7XG5cblx0XHRwYWRkaW5nLWJvdHRvbTogMCAhaW1wb3J0YW50O1xuXG4vKlxuXHRcdCYuaGFzLXN1YiB7XG5cdFx0XHRwYWRkaW5nLWJvdHRvbTogLjJlbTtcblx0XHR9XG5cblx0XHQmICsgcCB7XG5cdFx0XHRAaW5jbHVkZSBzZWN0aW9uLXN1YnRpdGxlO1xuXHRcdFx0bWFyZ2luLWJvdHRvbTogMnJlbTtcblx0XHR9XG4qL1xuXHR9XG5cblx0QG1lZGlhIChtYXgtd2lkdGg6IDk4MHB4KSB7XG5cdFx0Ji5ldF9wYl9yb3cge1xuXHRcdFx0cGFkZGluZy1ib3R0b206IDAgIWltcG9ydGFudDtcblx0XHR9XG5cdH1cblxuXHQmLnNpbmdsZS1yb3cge1xuXHRcdGgyIHtcblx0XHRcdG1hcmdpbi1ib3R0b206IDAgIWltcG9ydGFudDtcblx0XHR9XG5cdH1cblxuXHQuZXRfcGJfY29sdW1uIHtcblx0XHRtYXJnaW4tYm90dG9tOiAwICFpbXBvcnRhbnQ7XG5cdH1cbn1cblxuLnRoZW1lLXRleHQge1xuXHRoNCB7XG5cdFx0Y29sb3I6ICRjLWZlYXR1cmUtMjtcblx0XHRmb250LXNpemU6IDNyZW07XG5cdFx0Zm9udC13ZWlnaHQ6IGJvbGQ7XG5cdH1cbn1cbi8qKioqKioqKioqKioqKioqKioqKioqKlxuICogZW5kIGN1c3RvbSBjbGFzc2VzXG4gKioqKioqKioqKioqKioqKioqKioqKiovXG5cbi5jYWxsLXRvLWpvaW4ge1xuXG5cdGgyLGEge1xuXHRcdGZvbnQtc2l6ZToyNHB4ICFpbXBvcnRhbnQ7XG5cdFx0Zm9udC13ZWlnaHQ6IDMwMCAhaW1wb3J0YW50O1xuXHR9XG5cblx0LmV0X3BiX3Jvd18xMSB7XG5cdFx0cGFkZGluZzowcHg7XG5cdH1cbn1cbiNmb290ZXItd2lkZ2V0cyB7XG5cdC5mb290ZXItd2lkZ2V0Om50aC1jaGlsZCgxKXtcblx0XHR3aWR0aDoyOS43NSU7XG5cdH1cblx0LmZvb3Rlci13aWRnZXQ6bnRoLWNoaWxkKDIpe1xuXHRcdHdpZHRoOjE1Ljc1JTtcblx0fVxufVxuLmV0X3BiX3Byb21vX2Rlc2NyaXB0aW9uIHtcblx0cGFkZGluZy1ib3R0b206MHB4O1xufVxuLmlubmVyX3RpdGxlIHtcblx0aDIge1xuXHRcdHBhZGRpbmctYm90dG9tOjBweDtcblx0XHRtYXJnaW4tYm90dG9tOjBweCAhaW1wb3J0YW50O1xuXHRcdHRleHQtYWxpZ246bGVmdCAhaW1wb3J0YW50O1xuXHR9XG5cdHB7XG5cdFx0dGV4dC1hbGlnbjpsZWZ0ICFpbXBvcnRhbnQ7XG5cdFx0Zm9udC13ZWlnaHQ6NDAwO1xuXHR9XG59XG5AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDE0NjJweCl7XG5cdGJvZHkge1xuXHRcdC5ldF9wYl9yb3cge1xuXHRcdFx0cGFkZGluZy1ib3R0b206IDBweDtcblx0XHR9XG5cdH1cbn1cbi5wYWdlLWlkLTMxMyB7XG5cdC5lbnRyeS10aXRsZSB7XG5cdFx0bWFyZ2luLWJvdHRvbTowcHggIWltcG9ydGFudDtcblx0fVxufVxuXG5oMy5zdS1wb3N0LXRpdGxlIHtcblx0dGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7XG59XG4uc2luZ2xlLXBvc3Qge1xuXHRoMSwgaDIsIGgzLCBoNCwgaDUsIGg2IHsgY29sb3I6IzFENEY5RCA7IH1cbn1cbi5wYWdlLWlkLTMxMyB7XG5cdC5wb3N0IHtcblx0XHRoMiB7XG5cdFx0XHRtaW4taGVpZ2h0OjcxcHg7XG5cdFx0fVxuXHRcdC5wb3N0LWNvbnRlbnQge1xuXHRcdFx0bWluLWhlaWdodDo4MXB4O1xuXHRcdH1cblx0fVxufVxuXG4ucGFnZS1pZC00NCB7XG5cdC5ldF9wYl9jb2x1bW5fMV8zOm50aC1jaGlsZCgxKSB7XG5cdFx0aDQge1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogIzE3NEJBMTtcblx0XHRcdHBhZGRpbmc6MTVweDtcblx0XHR9XG5cdH1cblx0LmV0X3BiX2NvbHVtbl8xXzM6bnRoLWNoaWxkKDIpIHtcblx0XHRoNCB7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjQjNDQjM1O1xuXHRcdFx0cGFkZGluZzoxNXB4O1xuXHRcdH1cblx0fVxuXHQuZXRfcGJfY29sdW1uXzFfMzpudGgtY2hpbGQoMykge1xuXHRcdGg0IHtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICNGNTk2MUU7XG5cdFx0XHRwYWRkaW5nOjE1cHg7XG5cdFx0fVxuXHR9XG59XG4ucmVkYyB7XG5cdGNvbG9yOnJlZDtcbn1cblxuYm9keSB7XG5cdGgyIHtcblx0XHRjb2xvcjojMUE0QUEyO1xuXHR9XG59XG4udGVzdGlfZm9udHMge1xuXHRwIHtcblx0XHRmb250LXNpemU6My41cmVtICFpbXBvcnRhbnQ7XG5cdFx0Zm9udC13ZWlnaHQ6IDEwMDtcblx0fVxuXHRzdHJvbmcge1xuXHRcdGZvbnQtd2VpZ2h0OiA1MDA7XG5cdH1cbn0iLCJcbmZvb3RlciNtYWluLWZvb3RlciB7XG5cdGJhY2tncm91bmQtY29sb3I6ICRjLWZvb3Rlcjtcblx0Y29sb3I6ICRjLXRleHQtZm9vdGVyO1xuXG5cdEBpbmNsdWRlIGxpbmstZm9vdGVyO1xuXG5cdC5ldF9wYl9idXR0b24ge1xuXHRcdEBpbmNsdWRlIGJ1dHRvbjtcblx0XHRmb250LXdlaWdodDogNDAwICFpbXBvcnRhbnQ7XG5cdH1cblxuXHQjZm9vdGVyLXdpZGdldHMge1xuXHRcdHBhZGRpbmctdG9wOiA1MnB4O1xuXHRcdHBhZGRpbmctYm90dG9tOjEwcHg7XG5cdH1cblxuXHRAbWVkaWEobWF4LXdpZHRoOjk4MHB4KXtcblx0XHQuZm9vdGVyLXdpZGdldDpudGgtY2hpbGQoMyl7XG5cdFx0XHRtYXJnaW4tYm90dG9tOiAzMHB4ICFpbXBvcnRhbnQ7XG5cdFx0fVxuXHR9XG5cblx0LmZvb3Rlci13aWRnZXQge1xuXHRcdGNvbG9yOiAkYy10ZXh0LWZvb3RlcjtcblxuXHRcdC5ldF9wYl9idXR0b24ge1xuXHRcdFx0Y29sb3I6I2ZmZiAhaW1wb3J0YW50O1xuXHRcdH1cblxuXHRcdC50aXRsZSB7XG5cdFx0XHRjb2xvcjogJGMtZmVhdHVyZTtcblx0XHRcdHBhZGRpbmctYm90dG9tOiAuNmVtO1xuXHRcdFx0Zm9udC1zaXplOiAyLjRyZW07XG5cdFx0fVxuXG5cdFx0bGk6OmJlZm9yZSB7XG5cdFx0XHRib3JkZXItY29sb3I6ICRjLXRleHQtZm9vdGVyO1xuXHRcdH1cblxuXHRcdCY6bGFzdC1vZi10eXBlIHtcblx0XHRcdC53aWRnZXRfdGV4dCB7XG5cdFx0XHRcdHdpZHRoOiAxMDAlO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC5tZW51IGxpIHtcblx0XHRcdG1hcmdpbi1ib3R0b206IDA7XG5cdFx0fVxuXHR9XG5cblx0LmV0LXNvY2lhbC1pY29ucyB7XG5cdFx0QGluY2x1ZGUgc29jaWFsLWljb25zO1xuXHR9XG5cblx0I2Zvb3Rlci1ib3R0b20ge1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICRjLWZvb3Rlci1ib3R0b207XG5cdFx0Y29sb3I6ICRjLXRleHQtZm9vdGVyLWJvdHRvbTtcblx0XHRib3JkZXItdG9wOiAkYm9yZGVyLWRlZmF1bHQ7XG5cdFx0cGFkZGluZzogMTBweCAwO1xuXHRcdGZvbnQtc2l6ZToxNHB4O1xuXG5cdFx0QGluY2x1ZGUgbGluay1oZWFkZXI7XG5cblx0XHQuY29udGFpbmVyIHtcblx0XHRcdHRleHQtYWxpZ246IGNlbnRlcjtcblx0XHRcdHBhZGRpbmc6MHB4O1xuXG5cdFx0XHQjZm9vdGVyLWluZm8ge1xuXHRcdFx0XHRwYWRkaW5nLWJvdHRvbTogMHB4O1xuXHRcdFx0XHR3aWR0aDoxMDAlO1xuXHRcdFx0fVxuXHRcdFx0LmNvcHlyaWdodCwuY3JlZGl0IHtcblx0XHRcdFx0cGFkZGluZy1ib3R0b206IDBweDtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRAbWVkaWEgKG1pbi13aWR0aDogOTgxcHgpIHtcblx0XHRcdC5jb250YWluZXIge1xuXHRcdFx0XHR0ZXh0LWFsaWduOiBsZWZ0O1xuXG5cdFx0XHRcdD4gcCB7XG5cdFx0XHRcdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHRcdFx0XHRcdHBhZGRpbmctYm90dG9tOiAwO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdC5jb3B5cmlnaHQge1xuXHRcdFx0XHRmbG9hdDpsZWZ0O1xuXHRcdFx0fVxuXG5cdFx0XHQuY3JlZGl0IHtcblx0XHRcdFx0ZmxvYXQ6cmlnaHQ7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG59IiwiXG4jdG9wLWhlYWRlciB7XG5cdGJhY2tncm91bmQtY29sb3I6ICRjLWhlYWRlci10b3AgIWltcG9ydGFudDtcblx0Y29sb3I6ICRjLXRleHQtaGVhZGVyLXRvcCAhaW1wb3J0YW50O1xuXHRmb250LXNpemU6IDEuNHJlbTtcblx0Ym9yZGVyLWJvdHRvbTogJGJvcmRlci1kZWZhdWx0O1xuXHR6LWluZGV4OiAyO1xuXG5cdC5jb250YWluZXIge1xuXHRcdHBhZGRpbmctdG9wOiAwO1xuXHR9XG5cblx0I2V0LWluZm8ge1xuXHRcdGZsb2F0OiByaWdodDtcblx0XHRAaW5jbHVkZSBsaW5rLWhlYWRlcjtcblx0XHRmb250LXdlaWdodDogbm9ybWFsICFpbXBvcnRhbnQ7XG5cdFx0cGFkZGluZzogMCAhaW1wb3J0YW50O1xuXHR9XG5cblx0I2V0LWluZm8tcGhvbmUsICNldC1pbmZvLWVtYWlsLCAuZXQtc29jaWFsLWljb25zIGxpIHtcblx0XHRwYWRkaW5nOiAuNzVlbTtcblx0XHRib3JkZXItbGVmdDogJGJvcmRlci1kZWZhdWx0O1xuXHRcdGRpc3BsYXk6IGlubGluZS1ibG9jaztcblxuXHRcdEBtZWRpYSAobWF4LXdpZHRoOiA1MDBweCkge1xuXHRcdFx0Ym9yZGVyLWxlZnQ6IG5vbmU7XG5cdFx0XHR0ZXh0LWFsaWduOiByaWdodDtcblx0XHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdH1cblx0fVxuXG5cdC5ldC1zb2NpYWwtaWNvbnMgbGkge1xuXHRcdG1hcmdpbjogMDtcblxuXHRcdCY6bGFzdC1vZi10eXBlIHtcblx0XHRcdGJvcmRlci1yaWdodDogJGJvcmRlci1kZWZhdWx0O1xuXHRcdH1cblx0fVxuXG4vKlxuXHQjZXQtc2Vjb25kYXJ5LW1lbnUge1xuXHRcdGZsb2F0OiBsZWZ0O1xuXHRcdGZvbnQtd2VpZ2h0OiBub3JtYWwgIWltcG9ydGFudDtcblxuXHRcdD4gdWwgPiBsaSB7XG5cdFx0XHRAaW5jbHVkZSBsaW5rLWhlYWRlcjtcblx0XHR9XG5cdH1cbiovXG5cblx0I2V0LWluZm8tcGhvbmUge1xuXHRcdG1hcmdpbi1yaWdodDogMDtcblx0fVxuXG5cdCNsYW5ndWFnZVN3aXRjaGVyIHtcblx0XHRkaXNwbGF5OiBibG9jaztcblx0XHRmbG9hdDogcmlnaHQ7XG5cdFx0bGluZS1oZWlnaHQ6IDFlbTtcblxuXHRcdGxpIHtcblx0XHRcdGxpbmUtaGVpZ2h0OiAxZW07XG5cdFx0XHRwYWRkaW5nOiAuNzVlbTtcblx0XHRcdGxpc3Qtc3R5bGU6IG5vbmU7XG5cblx0XHRcdEBpbmNsdWRlIGxpbmstaGVhZGVyO1xuXHRcdH1cblx0fVxufVxuXG5oZWFkZXIjbWFpbi1oZWFkZXIge1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiAkYy1oZWFkZXI7XG5cdHotaW5kZXg6IDM7XG5cblx0LmxvZ29fY29udGFpbmVyIHtcblxuXHR9XG5cblx0I2V0LXRvcC1uYXZpZ2F0aW9uIHtcblx0XHR0ZXh0LWFsaWduOiBsZWZ0O1xuXG5cdFx0QG1lZGlhIChtaW4td2lkdGg6IDk4MXB4KSB7XG5cdFx0XHRwYWRkaW5nOiAyMHB4IDA7XG5cdFx0fVxuXHR9XG59XG5cbiN0b3AtbWVudSB7XG5cdGxpIHtcblx0XHRmb250LXNpemU6IDEuNHJlbTtcblx0XHR0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuXHR9XG5cblx0PiBsaSB7XG5cdFx0QGluY2x1ZGUgbGluay1mb290ZXI7XG5cblx0XHQ+IGEge1xuXHRcdFx0cGFkZGluZy1ib3R0b206IDFlbSAhaW1wb3J0YW50O1xuXHRcdFx0cGFkZGluZy10b3A6IDFlbTtcblxuXHRcdFx0Jjo6YWZ0ZXIge1xuXHRcdFx0XHRkaXNwbGF5OiBub25lO1xuXHRcdFx0fVxuXG5cdFx0XHQmOmhvdmVyIHtcblx0XHRcdFx0b3BhY2l0eTogMSAhaW1wb3J0YW50O1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdCYubWVudS1pdGVtLWhhcy1jaGlsZHJlbiB7XG5cdFx0XHRwYWRkaW5nLXJpZ2h0OiAwO1xuXHRcdH1cblxuXHRcdCYuY3VycmVudC1tZW51LWl0ZW0ge1xuXHRcdFx0YSB7XG5cdFx0XHRcdGNvbG9yOiAkYy1mZWF0dXJlICFpbXBvcnRhbnQ7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0dWwge1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogd2hpdGUgIWltcG9ydGFudDtcblx0XHRcdGJvcmRlcjogMDtcblx0XHRcdHdpZHRoOiBpbml0aWFsO1xuXHRcdFx0cGFkZGluZzogMTBweCAwO1xuXG5cdFx0XHQ+IGxpIHtcblx0XHRcdFx0QGluY2x1ZGUgbGluaygkYy1mZWF0dXJlLCAkYy1mZWF0dXJlKTtcblx0XHRcdFx0cGFkZGluZzogMDtcblxuXHRcdFx0XHRhOmhvdmVyIHtcblx0XHRcdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Jjpob3ZlciB7XG5cdFx0XHRcdFx0YmFja2dyb3VuZC1jb2xvcjogbGlnaHRlbigkYy1mZWF0dXJlLCA0MCUpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG59XG5cbiNldF9tb2JpbGVfbmF2X21lbnUge1xuXHR0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuXG5cdCNtb2JpbGVfbWVudSB7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJGMtd2hpdGU7XG5cdFx0Ym9yZGVyOiAwICFpbXBvcnRhbnQ7XG5cdFx0cGFkZGluZzogMCAhaW1wb3J0YW50O1xuXG5cdFx0bGkuY3VycmVudC1tZW51LWl0ZW0sIGE6aG92ZXIge1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJGMtd2hpdGU7XG5cdFx0XHRvcGFjaXR5OiAxO1xuXG5cdFx0XHRhIHtcblx0XHRcdFx0Y29sb3I6ICRjLWZlYXR1cmUgIWltcG9ydGFudDtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQubW9iaWxlX21lbnVfYmFyOjpiZWZvcmUge1xuXHRcdGNvbG9yOiAkYy1mZWF0dXJlO1xuXHR9XG59XG5cbiIsIlxuLndwY2Y3IHtcblx0aW5wdXQsIHRleHRhcmVhLCBzZWxlY3Qge1xuXHRcdGZvbnQtZmFtaWx5OiBpbmhlcml0O1xuXHR9XG5cblx0aW5wdXRbdHlwZT10ZXh0XSwgaW5wdXRbdHlwZT1wYXNzd29yZF0sIGlucHV0W3R5cGU9dGVsXSwgaW5wdXRbdHlwZT1lbWFpbF0sIGlucHV0LnRleHQsIGlucHV0LnRpdGxlLCB0ZXh0YXJlYSwgc2VsZWN0IHtcblx0XHRib3JkZXI6ICRib3JkZXItZGVmYXVsdDtcblx0XHRwYWRkaW5nOiAuNWVtIC41ZW0gLjVlbSAuOGVtO1xuXHRcdGNvbG9yOiAkYy10ZXh0O1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICRjLWJnO1xuXHRcdGZvbnQtc2l6ZTogMS40cmVtO1xuXHR9XG5cblx0aW5wdXRbdHlwZT1zdWJtaXRdIHtcblx0XHRAaW5jbHVkZSBidXR0b247XG5cdFx0cGFkZGluZzogLjRlbSAxLjVlbTtcblx0XHRmb250LXNpemU6IDEuNnJlbTtcblx0XHRmbG9hdDogcmlnaHQ7XG5cdH1cblxuXHRpbnB1dFt0eXBlPXRleHRdLCBpbnB1dFt0eXBlPXBhc3N3b3JkXSwgaW5wdXRbdHlwZT10ZWxdLCBpbnB1dFt0eXBlPWVtYWlsXSwgaW5wdXQudGV4dCwgaW5wdXQudGl0bGUsIHRleHRhcmVhLCBzZWxlY3Qge1xuXHRcdHdpZHRoOiAxMDAlO1xuXHR9XG5cblx0aW5wdXRbdHlwZT10ZXh0XSwgaW5wdXRbdHlwZT1wYXNzd29yZF0sIGlucHV0W3R5cGU9dGVsXSwgaW5wdXRbdHlwZT1lbWFpbF0sIGlucHV0LnRleHQsIGlucHV0LnRpdGxlLCBzZWxlY3Qge1xuXHRcdG1heC13aWR0aDogMzAwcHg7XG5cdH1cbn1cblxuZm9vdGVyIC53cGNmNywud3BjZjctZm9ybSB7XG5cblx0bGFiZWwge1xuXHRcdGRpc3BsYXk6IG5vbmU7XG5cdH1cblxuXHRiciB7XG5cdFx0ZGlzcGxheTogbm9uZTtcblx0fVxuXG5cdGRpdltjbGFzc149XCJmaWVsZC1cIl0ge1xuXHRcdG1hcmdpbi1ib3R0b206IDFlbTtcblx0fVxuXG5cdC53cGNmNy10ZXh0YXJlYSB7XG5cdFx0bWF4LWhlaWdodDo5MHB4O1xuXHRcdGRpc3BsYXk6IGJsb2NrO1xuXHR9XG5cblx0LndwY2Y3LXN1Ym1pdCB7XG5cdFx0Zm9udC13ZWlnaHQ6MzAwO1xuXHR9XG5cblx0LmZpZWxkLW5hbWUsIC5maWVsZC1waG9uZSB7XG5cdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHRcdHdpZHRoOiA0OSU7XG5cdFx0ZmxvYXQ6IGxlZnQ7XG5cblx0XHRAbWVkaWEgKG1heC13aWR0aDogNDgwcHgpIHtcblx0XHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdFx0d2lkdGg6IDEwMCU7XG5cdFx0XHRmbG9hdDogbm9uZTtcblx0XHRcdG1hcmdpbi1yaWdodDogMDtcblx0XHR9XG5cdH1cblxuXHQuZmllbGQtbmFtZSB7XG5cdFx0bWFyZ2luLXJpZ2h0OiAyJTtcblx0fVxuXG5cdGlucHV0W3R5cGU9dGV4dF0sIGlucHV0W3R5cGU9cGFzc3dvcmRdLCBpbnB1dFt0eXBlPXRlbF0sIGlucHV0W3R5cGU9ZW1haWxdLCBpbnB1dC50ZXh0LCBpbnB1dC50aXRsZSwgc2VsZWN0IHtcblx0XHRtYXgtd2lkdGg6IDEwMCU7XG5cdH1cbn1cblxuI21haW4tY29udGVudCAud3BjZjcge1xuXHRkaXZbY2xhc3NePVwiZmllbGQtXCJdIHtcblx0XHRtYXJnaW4tYm90dG9tOiAycmVtO1xuXHR9XG5cblx0YnIge1xuXHRcdGRpc3BsYXk6IG5vbmU7XG5cdH1cblxuXHRsYWJlbCB7XG5cdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0bWFyZ2luLWJvdHRvbTogLjRyZW07XG5cdH1cbn1cbiIsIlxuYm9keS5ob21lIHtcblx0I21haW4tY29udGVudCAuY29udGFpbmVyIHtcblx0XHRwYWRkaW5nLWJvdHRvbTogMDtcblx0fVxufVxuXG4uc2VjdGlvbi1hIHtcblx0LmJsb2Nrcy1yb3cgLmV0X3BiX2NvbHVtbiB7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJGMtZmVhdHVyZTtcblx0XHRwYWRkaW5nLWJvdHRvbTogM3B4O1xuXG5cdFx0LmJsb2NrLXRpdGxlIHtcblx0XHRcdEBpbmNsdWRlIGJveC10aXRsZTtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuXHRcdH1cblxuXHRcdC5ibG9jay1kZXNjIHtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICRjLXdoaXRlO1xuXHRcdFx0cGFkZGluZzogMS4yZW07XG5cdFx0XHRmb250LXdlaWdodDogNTAwO1xuXHRcdFx0dGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcblx0XHRcdHRleHQtYWxpZ246IGNlbnRlcjtcblx0XHRcdGZvbnQtc2l6ZToxLjVyZW07XG5cdFx0fVxuXG5cdFx0JjpudGgtY2hpbGQoMSkge1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogIzE3NEJBMTtcblx0XHR9XG5cdFx0JjpudGgtY2hpbGQoMikge1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogIzBCNzY4QTtcblx0XHR9XG5cdFx0JjpudGgtY2hpbGQoMykge1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogI0IzQ0IzNTtcblx0XHR9XG5cdFx0JjpudGgtY2hpbGQoNCkge1xuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogI0Y1OTYxRTtcblx0XHR9XG5cdH1cbn1cblxuLmFsbGlhbmNlIHtcblx0aDIge1xuXHRcdHRleHQtYWxpZ246IGxlZnQgIWltcG9ydGFudDtcblx0XHRib3JkZXItYm90dG9tOiAxcHggc29saWQgI2U0ZTRlNDtcblx0XHRwYWRkaW5nLWJvdHRvbTogLjRlbSAhaW1wb3J0YW50O1xuXHRcdG1hcmdpbi1ib3R0b206IDA7XG5cdH1cblxuXHRoNCB7XG5cdFx0Y29sb3I6ICRjLWZlYXR1cmU7XG5cdFx0Zm9udC13ZWlnaHQ6ICRmLXdlaWdodC1zZW1pYm9sZDtcblx0fVxufVxuXG4uY2FsbC10by1qb2luIHtcblx0LmV0X3BiX3Byb21vIHtcblx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cdH1cblxuXHQuZXRfcGJfcHJvbW9fZGVzY3JpcHRpb24ge1xuXHRcdEBtZWRpYSAobWluLXdpZHRoOiAxMTAwcHgpIHtcblx0XHRcdGRpc3BsYXk6IGlubGluZS1ibG9jaztcblx0XHRcdG1hcmdpbi1yaWdodDogMS41ZW07XG5cdFx0XHRwYWRkaW5nLWJvdHRvbTogMDtcblx0XHR9XG5cdH1cbn1cblxuLmNhbGwtb3V0LXNlY3Rpb24ge1xuXHQuZXRfcGJfY29sdW1uIHtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkYy13aGl0ZTtcblx0XHRwYWRkaW5nOiAzLjVlbSAyZW0gMy40ZW07XG5cdH1cblxuXHQudGl0bGUtcm93IHtcblx0XHQuZXRfcGJfY29sdW1uIHtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuXHRcdH1cblx0fVxuXG5cdC5ldF9wYl9ibHVyYl9jb250ZW50IHtcblx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cblx0XHQuZXRfcGJfbWFpbl9ibHVyYl9pbWFnZSB7XG5cdFx0XHRtYXJnaW4tYm90dG9tOjE1cHg7XG5cdFx0fVxuXG5cdFx0cCB7XG5cdFx0XHRmb250LXNpemU6MTZweDtcblx0XHRcdGZvbnQtd2VpZ2h0OjQwMDtcblx0XHR9XG5cblx0XHRoNCB7XG5cdFx0XHRhIHtcblx0XHRcdFx0Zm9udC13ZWlnaHQ6IDQwMDtcblx0XHRcdFx0Zm9udC1zaXplOjIycHg7XG5cdFx0XHR9XG5cdFx0XHRwYWRkaW5nLWJvdHRvbTogLjFlbTtcblx0XHRcdGZvbnQtd2VpZ2h0OiAkZi13ZWlnaHQtc2VtaWJvbGQ7XG5cdFx0fVxuXHR9XG59XG5cbi5ldF9wYl9wb3N0IHtcblx0LmVudHJ5LXRpdGxlIHtcblx0XHRtYXJnaW4tdG9wOiAxNnB4O1xuXHRcdHBhZGRpbmctYm90dG9tOiA4cHg7XG5cdFx0Zm9udC13ZWlnaHQ6ICRmLXdlaWdodC1zZW1pYm9sZDtcblx0fVxufVxuXG4udHBhcnJvd3Mge1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwyNTUsMjU1LC4yKTtcbn1cbi50cGFycm93czpob3ZlciB7XG5cdGJhY2tncm91bmQtY29sb3I6IzFBNEFBMjtcblxufVxuLmV0X3BiX2Jsb2dfZ3JpZCB7XG5cblx0LmV0X3BiX3Bvc3Qge1xuXHRcdGJvcmRlcjoxcHggc29saWQgI2ZmZjtcblx0fVxuXG59XG5cbi5ibG9nX3Bvc3RzX2hvbWUge1xuXG5cdGgyIHtcblx0XHR0ZXh0LWFsaWduOiBsZWZ0ICFpbXBvcnRhbnQ7XG5cdFx0bWFyZ2luLWJvdHRvbTogMHB4ICFpbXBvcnRhbnQ7XG5cdFx0YSB7XG5cdFx0XHR0ZXh0LWFsaWduOmxlZnQ7XG5cdFx0fVxuXHR9XG5cblx0cCB7XG5cdFx0dGV4dC1hbGlnbjpsZWZ0O1xuXHRcdGNvbG9yOiM0NDRmNjMgIWltcG9ydGFudDtcblx0XHRmb250LXdlaWdodDo0MDA7XG5cdFx0bGluZS1oZWlnaHQ6MS41ZW07XG5cdH1cblxufVxuLmFyZXMge1xuXHQudHAtYnVsbGV0OmhvdmVyLC50cC1idWxsZXQuc2VsZWN0ZWQge1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICNGNTk2MUU7XG5cdH1cbn1cblxuXG5cbiIsIi5jb21tdW5pdGllcyB7XG5cdEBpbmNsdWRlIGNvbnRhaW5lcigpO1xuXHRtYXJnaW4tdG9wOiAxcmVtO1xuXG5cdC5zdS1wb3N0IHtcblx0XHRAaW5jbHVkZSBzcGFuKDYpO1xuXG5cdFx0bWFyZ2luLWJvdHRvbTogMWVtO1xuXHRcdG1hcmdpbi10b3A6IDFlbTtcblxuXHRcdCY6bnRoLWNoaWxkKDJuKSB7XG5cdFx0XHRAaW5jbHVkZSBzcGFuKDYgbGFzdCk7XG5cdFx0fVxuXG5cdFx0QG1lZGlhIChtaW4td2lkdGg6IDYwMHB4KSB7XG5cdFx0XHRAaW5jbHVkZSBzcGFuKDQpO1xuXG5cdFx0XHQmOm50aC1jaGlsZCgybikge1xuXHRcdFx0XHRAaW5jbHVkZSBzcGFuKDQpO1xuXHRcdFx0fVxuXG5cdFx0XHQmOm50aC1jaGlsZCgzbikge1xuXHRcdFx0XHRAaW5jbHVkZSBzcGFuKDQgbGFzdCk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0QG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7XG5cdFx0XHRAaW5jbHVkZSBzcGFuKDMpO1xuXG5cdFx0XHQmOm50aC1jaGlsZCgybikge1xuXHRcdFx0XHRAaW5jbHVkZSBzcGFuKDMpO1xuXHRcdFx0fVxuXG5cdFx0XHQmOm50aC1jaGlsZCgzbikge1xuXHRcdFx0XHRAaW5jbHVkZSBzcGFuKDMpO1xuXHRcdFx0fVxuXG5cdFx0XHQmOm50aC1jaGlsZCg0bikge1xuXHRcdFx0XHRAaW5jbHVkZSBzcGFuKDMgbGFzdCk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0dGV4dC1hbGlnbjogY2VudGVyO1xuXG5cdFx0LnN1LXBvc3QtdGh1bWJuYWlsIHtcblx0XHRcdGZsb2F0OiBub25lO1xuXHRcdFx0bWFyZ2luLXJpZ2h0OiAwO1xuXHRcdFx0ZGlzcGxheTogaW5pdGlhbDtcblxuXHRcdFx0aW1nIHtcblx0XHRcdFx0aGVpZ2h0OiA4MHB4O1xuXHRcdFx0XHR3aWR0aDogYXV0bztcblx0XHRcdH1cblx0XHR9XG5cblx0XHRoMy5zdS1wb3N0LXRpdGxlIHtcblx0XHRcdGZvbnQtc2l6ZTogMS42cmVtO1xuXHRcdFx0dGV4dC10cmFuc2Zvcm06IG5vbmU7XG5cdFx0fVxuXHR9XG59XG4iLCJcbiNtYWluLWNvbnRlbnQge1xuXHQuZXQtc29jaWFsLWljb25zIHtcblx0XHRAaW5jbHVkZSBzb2NpYWwtaWNvbnM7XG5cdFx0cGFkZGluZy1sZWZ0OiAwO1xuXHR9XG59XG4iLCIucGFnZS10ZW1wbGF0ZS1wYWdlLXRoYW5reW91IHtcblx0I21haW4tY29udGVudCBoMSB7XG5cdFx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHR9XG5cblx0LmVudHJ5LWNvbnRlbnQgLmV0X3BiX3NlY3Rpb24ge1xuXHRcdHBhZGRpbmctdG9wOiAwICFpbXBvcnRhbnQ7XG5cdFx0cGFkZGluZy1ib3R0b206IDVyZW0gIWltcG9ydGFudDtcblx0fVxuXG5cdC5ldF9wYl9idXR0b25fbW9kdWxlX3dyYXBwZXIge1xuXHRcdEBpbmNsdWRlIGxpbmstZm9vdGVyO1xuXG5cdFx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHRcdG1hcmdpbi10b3A6IDRyZW07XG5cdH1cblxuXG5cdC5ldF9wYl9idXR0b24ge1xuXHRcdEBpbmNsdWRlIGJ1dHRvbjtcblx0XHRmb250LXdlaWdodDogNDAwICFpbXBvcnRhbnQ7XG5cdH1cbn1cblxuLnBhZ2UtdGVtcGxhdGUtcGFnZS10aGFua3lvdS1tdWx0aWxhbmcge1xuXHQudGhhbmt5b3VzIHtcblx0XHRwYWRkaW5nOiA1ZW0gMDtcblxuXHRcdGgzIHtcblx0XHRcdGZvbnQtd2VpZ2h0OiBib2xkO1xuXHRcdFx0dGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7XG5cdFx0XHRsaW5lLWhlaWdodDogMS41ZW0gIWltcG9ydGFudDtcblx0XHR9XG5cblx0XHQuZXRfcGJfcm93Om5vdCg6Zmlyc3QtY2hpbGQpIHtcblx0XHRcdG1hcmdpbi10b3A6IDJlbTtcblx0XHR9XG5cblx0XHRAaW5jbHVkZSBsaW5rLWZvb3RlcjtcblxuXHRcdC5ldF9wYl9idXR0b24ge1xuXHRcdFx0QGluY2x1ZGUgYnV0dG9uO1xuXHRcdFx0Zm9udC1zaXplOiAxLjJlbSAhaW1wb3J0YW50O1xuXHRcdFx0Zm9udC13ZWlnaHQ6IDQwMCAhaW1wb3J0YW50O1xuXHRcdH1cblxuXHRcdC5jaGluZXNlLWJsb2NrIHtcblx0XHRcdG1hcmdpbi1ib3R0b206IDAgIWltcG9ydGFudDtcblx0XHR9XG5cblx0XHRwIHtcblx0XHRcdHBhZGRpbmctYm90dG9tOiAuNmVtICFpbXBvcnRhbnQ7XG5cdFx0fVxuXHR9XG59XG4iLCIuZ3JvdXBzLXRpdGxlIHtcblx0QGluY2x1ZGUgcGFnZS10aXRsZSgpO1xufVxuXG4uZ3JvdXBzLXdyYXBwZXIge1xuXHQuY29udGFpbmVyIHtcblx0XHRwYWRkaW5nLXRvcDogMnJlbSAhaW1wb3J0YW50O1xuXHRcdHBhZGRpbmctYm90dG9tOiAycmVtICFpbXBvcnRhbnQ7XG5cdH1cblxuXHQuZmlsdGVycyB7XG5cdFx0dGV4dC1hbGlnbjogcmlnaHQ7XG5cdFx0QGluY2x1ZGUgY2xlYXJmaXgoKTtcblxuXHRcdGZvcm0ge1xuXHRcdFx0ZmxvYXQ6IHJpZ2h0O1xuXHRcdH1cblxuXHRcdGlucHV0W3R5cGU9XCJzdWJtaXRcIl0ge1xuXHRcdFx0QGluY2x1ZGUgYnV0dG9uKCk7XG5cdFx0XHRmb250LXNpemU6IDEuMnJlbSAhaW1wb3J0YW50O1xuXHRcdFx0cGFkZGluZzogLjVlbTtcblx0XHR9XG5cdH1cblxuXHQuZW50cnktbGlzdCB7XG5cdFx0PiAuZ3JvdXBzOm50aC1jaGlsZChvZGQpIHtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICRjLWhlYWRlci10b3AgIWltcG9ydGFudDtcblx0XHR9XG5cblx0XHQuZW50cnktY29udGVudCB7XG5cdFx0XHRAaW5jbHVkZSBjbGVhcmZpeCgpO1xuXHRcdFx0QGluY2x1ZGUgY29udGFpbmVyKDEyIDEvMik7XG5cblx0XHRcdD4gLmltYWdlcyB7XG5cdFx0XHRcdEBpbmNsdWRlIHNwYW4oNCk7XG5cblx0XHRcdFx0LmZlYXR1cmUge1xuXHRcdFx0XHRcdGltZyB7XG5cdFx0XHRcdFx0XHR3aWR0aDogMTAwJTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQub3RoZXJzIHtcblx0XHRcdFx0XHQvLyBkaXNwbGF5OiBmbGV4O1xuXHRcdFx0XHRcdGRpc3BsYXk6IG5vbmU7XG5cblx0XHRcdFx0XHRhIHtcblx0XHRcdFx0XHRcdGZsZXg6IDAgMSA0OSU7XG5cblx0XHRcdFx0XHRcdCY6Zmlyc3QtY2hpbGQge1xuXHRcdFx0XHRcdFx0XHRtYXJnaW4tcmlnaHQ6IDIlO1xuXHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRpbWcge1xuXHRcdFx0XHRcdFx0XHR3aWR0aDogMTAwJTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0PiAuaW5mbyB7XG5cdFx0XHRcdEBpbmNsdWRlIHNwYW4oNSk7XG5cdFx0XHR9XG5cblx0XHRcdD4gLmNvbnRhY3Qge1xuXHRcdFx0XHRAaW5jbHVkZSBzcGFuKDMgbGFzdCk7XG5cdFx0XHRcdG92ZXJmbG93OiBoaWRkZW47XG5cdFx0XHR9XG5cblx0XHRcdEBtZWRpYSAobWF4LXdpZHRoOiA3NjhweCkge1xuXHRcdFx0XHQ+IC5pbWFnZXMge1xuXHRcdFx0XHRcdEBpbmNsdWRlIHNwYW4oMTIpO1xuXHRcdFx0XHRcdG1hcmdpbi1ib3R0b206IDJyZW07XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQ+IC5pbmZvIHtcblx0XHRcdFx0XHRAaW5jbHVkZSBzcGFuKDYpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0PiAuY29udGFjdCB7XG5cdFx0XHRcdFx0QGluY2x1ZGUgc3Bhbig2IGxhc3QpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdEBtZWRpYSAobWF4LXdpZHRoOiA0ODBweCkge1xuXHRcdFx0XHQ+IC5pbmZvIHtcblx0XHRcdFx0XHRAaW5jbHVkZSBzcGFuKDEyKVxuXHRcdFx0XHRcdG1hcmdpbi1ib3R0b206IDJyZW07XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQ+IC5jb250YWN0IHtcblx0XHRcdFx0XHRAaW5jbHVkZSBzcGFuKDEyKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdG1hcmdpbi1ib3R0b206IDNyZW07XG59XG5cbi5wYWdpbmF0aW9uIHtcblx0dGV4dC1hbGlnbjogcmlnaHQ7XG5cdGZvbnQtc2l6ZTogMnJlbTtcblxuXHQubmF2LWxpbmtzIHtcblx0XHQ+ICoge1xuXHRcdFx0bWFyZ2luOiAuNXJlbTtcblx0XHRcdHBhZGRpbmc6IDFyZW07XG5cdFx0XHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cdFx0fVxuXHR9XG59XG5cbi5zY3JlZW4tcmVhZGVyLXRleHQge1xuXHRkaXNwbGF5OiBub25lO1xufVxuXG4uc2VhcmNoYW5kZmlsdGVyIGxpIHtcblx0cGFkZGluZy1sZWZ0OiAxMHB4O1xuXHRwYWRkaW5nLXJpZ2h0OiAwO1xuXHRtYXJnaW4tYm90dG9tOiAuNWVtO1xufVxuIiwiLm1lZGlhLXdyYXBwZXIge1xuXHQuY29udGFpbmVyIHtcblx0XHRwYWRkaW5nLXRvcDogMnJlbSAhaW1wb3J0YW50O1xuXHRcdHBhZGRpbmctYm90dG9tOiAycmVtICFpbXBvcnRhbnQ7XG5cdH1cblxuXHQuZW50cnktbGlzdCB7XG5cdFx0LmVudHJ5IHtcblx0XHRcdHBhZGRpbmc6IDFyZW0gMDtcblx0XHRcdGgzIHtcblx0XHRcdFx0bGluZS1oZWlnaHQ6IDEuM2VtICFpbXBvcnRhbnQ7XG5cdFx0XHRcdHRleHQtdHJhbnNmb3JtOiBub25lO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC5tZXRhIHtcblx0XHRcdGZvbnQtc2l6ZTogMnJlbTtcblx0XHRcdG1hcmdpbi1ib3R0b206IC41cmVtO1xuXG5cdFx0XHQuZGF0ZSB7XG5cdFx0XHRcdG1hcmdpbi1yaWdodDogMXJlbTtcblx0XHRcdH1cblx0XHR9XG5cdH1cbn1cbiIsImJvZHkuYXJjaGl2ZSB7XG5cdC5wYWdlLXRpdGxlIHtcblx0XHRAaW5jbHVkZSBwYWdlLXRpdGxlKCk7XG5cdH1cblxuXHQjY29udGVudC1hcmVhIHtcblx0XHRhcnRpY2xlIHtcblx0XHRcdEBpbmNsdWRlIGNsZWFyZml4KCk7XG5cdFx0fVxuXG5cdFx0LmVudHJ5LXRpdGxlIHtcblx0XHRcdHBhZGRpbmctYm90dG9tOiAycmVtO1xuXHRcdH1cblxuXHRcdGEgaW1nIHtcblx0XHRcdHdpZHRoOiAzMDBweDtcblx0XHRcdGhlaWdodDogYXV0bztcblx0XHRcdGZsb2F0OiBsZWZ0O1xuXHRcdFx0bWFyZ2luLXJpZ2h0OiAycmVtO1xuXHRcdFx0bWFyZ2luLWJvdHRvbTogMnJlbTtcblxuXHRcdFx0QG1lZGlhIChtYXgtd2lkdGg6IDUwMHB4KSB7XG5cdFx0XHRcdHdpZHRoOiAxMDAlO1xuXHRcdFx0XHRoZWlnaHQ6IGF1dG87XG5cdFx0XHRcdGZsb2F0OiBub25lO1xuXHRcdFx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cdFx0XHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdFx0XHRtYXJnaW46IDAgYXV0bztcblx0XHRcdFx0bWFyZ2luLWJvdHRvbTogMnJlbTtcblx0XHRcdH1cblx0XHR9XG5cdH1cbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxDQUFDLG9FQUFJO0FDQVo7OzBCQUUwQjtBQThEMUI7OzBCQUUwQjtBNENsRTFCOzt5QkFFeUI7QUFDekIsQUFBQSxXQUFXLENBQUM7RUFDWCxNQUFNLEVBQUUsSUFBSztFQUNiLFVBQVUsRUFBRSxJQUFLLEdBQ2pCOztBQUVELEFBQWEsV0FBRixDQUFDLENBQUMsQUFBQSxnQkFBZ0IsQ0FBQztFQUM3QixVQUFVLEVBQUUsTUFBTyxHQUNuQjs7QUFDRDs7eUJBRXlCO0FDWnpCLEFBQUEsSUFBSSxDQUFDO0VBQ0osU0FBUyxFQUFFLElBQUssR0FDaEI7O0FBRUQsQUFBQSxJQUFJLENBQUM7RUFDSixTQUFTLEVBQUUsTUFBTztFQUNsQixXQUFXLEVBQUUsbUJBQW9CLEdBQ2pDOztBQUVELEE3QzBEQyxjNkMxRGEsQzdDMERiLENBQUMsRTZDMURGLEE3QzBEQyxjNkMxRGEsQzdDMERiLENBQUMsQUFDSSxLQUFLLEU2QzNEWCxBN0MwREMsYzZDMURhLEM3QzBEYixDQUFDLEFBQ1ksUUFBUSxDQUFDO0VBQ3BCLEtBQUssRUFqRUksT0FBTyxDQWlFRixVQUFVO0VBQ3hCLFdBQVcsRUFBRSxHQUFJLEdBQ2pCOztBNkM5REgsQTdDMERDLGM2QzFEYSxDN0MwRGIsQ0FBQyxBQU1DLE1BQU0sRTZDaEVULEE3QzBEQyxjNkMxRGEsQzdDMERiLENBQUMsQUFNVSxNQUFNLEU2Q2hFbEIsQTdDMERDLGM2QzFEYSxDN0MwRGIsQ0FBQyxBQU1tQixPQUFPLENBQUM7RUFDMUIsS0FBSyxFQXJFTSxPQUFPLENBcUVHLFVBQVUsR0FDL0I7O0E2QzlESCxBQUFBLEVBQUUsRUFBRSxBQUFBLEVBQUUsRUFBRSxBQUFBLEVBQUUsRUFBRSxBQUFBLEVBQUUsRUFBRSxBQUFBLEVBQUUsRUFBRSxBQUFBLEVBQUUsQ0FBQztFQUN0QixjQUFjLEVBQUUsU0FBVTtFQUMxQixLQUFLLEU3Q1hNLE9BQU8sRzZDY2xCO0VBTEQsQTdDc0RDLEU2Q3REQyxDN0NzREQsQ0FBQyxFNkN0REYsQTdDc0RDLEU2Q3REQyxDN0NzREQsQ0FBQyxBQUNJLEtBQUssRTZDdkRYLEE3Q3NEQyxFNkN0REMsQzdDc0RELENBQUMsQUFDWSxRQUFRLEU2Q3ZEbEIsQTdDc0RILEU2Q3RESyxDN0NzREwsQ0FBQyxFNkN0REUsQTdDc0RILEU2Q3RESyxDN0NzREwsQ0FBQyxBQUNJLEtBQUssRTZDdkRQLEE3Q3NESCxFNkN0REssQzdDc0RMLENBQUMsQUFDWSxRQUFRLEU2Q3ZEZCxBN0NzRFAsRTZDdERTLEM3Q3NEVCxDQUFDLEU2Q3RETSxBN0NzRFAsRTZDdERTLEM3Q3NEVCxDQUFDLEFBQ0ksS0FBSyxFNkN2REgsQTdDc0RQLEU2Q3REUyxDN0NzRFQsQ0FBQyxBQUNZLFFBQVEsRTZDdkRWLEE3Q3NEWCxFNkN0RGEsQzdDc0RiLENBQUMsRTZDdERVLEE3Q3NEWCxFNkN0RGEsQzdDc0RiLENBQUMsQUFDSSxLQUFLLEU2Q3ZEQyxBN0NzRFgsRTZDdERhLEM3Q3NEYixDQUFDLEFBQ1ksUUFBUSxFNkN2RE4sQTdDc0RmLEU2Q3REaUIsQzdDc0RqQixDQUFDLEU2Q3REYyxBN0NzRGYsRTZDdERpQixDN0NzRGpCLENBQUMsQUFDSSxLQUFLLEU2Q3ZESyxBN0NzRGYsRTZDdERpQixDN0NzRGpCLENBQUMsQUFDWSxRQUFRLEU2Q3ZERixBN0NzRG5CLEU2Q3REcUIsQzdDc0RyQixDQUFDLEU2Q3REa0IsQTdDc0RuQixFNkN0RHFCLEM3Q3NEckIsQ0FBQyxBQUNJLEtBQUssRTZDdkRTLEE3Q3NEbkIsRTZDdERxQixDN0NzRHJCLENBQUMsQUFDWSxRQUFRLENBQUM7SUFDcEIsS0FBSyxFQWpFSSxPQUFPLENBaUVGLFVBQVU7SUFDeEIsV0FBVyxFQUFFLEdBQUksR0FDakI7RTZDMURILEE3Q3NEQyxFNkN0REMsQzdDc0RELENBQUMsQUFNQyxNQUFNLEU2QzVEVCxBN0NzREMsRTZDdERDLEM3Q3NERCxDQUFDLEFBTVUsTUFBTSxFNkM1RGxCLEE3Q3NEQyxFNkN0REMsQzdDc0RELENBQUMsQUFNbUIsT0FBTyxFNkM1RHhCLEE3Q3NE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QXRCSCxBQW1CRyxjQW5CVyxDQU1iLFdBQVcsQ0FTVixLQUFLLENBSUosS0FBSyxDQUFDO0lBQ0wsWUFBWSxFQUFFLElBQUssR0FDbkI7O0FDckJKLEFBQ0MsSUFERyxBQUFBLFFBQVEsQ0FDWCxXQUFXLENBQUM7RXhEeUtaLFVBQVUsRUFBRSxnREFBRyxDQUE4QyxNQUFNLENBQUMsTUFBTSxDQUFDLFNBQVM7RUFDcEYsZUFBZSxFQUFFLEtBQU07RUFDdkIsS0FBSyxFQWxLSSxPQUFPLEd3RFBmO0VBSEYsQXhEOEtDLEl3RDlLRyxBQUFBLFFBQVEsQ0FDWCxXQUFXLEN4RDZLWCxFQUFFLENBQUM7SUFDRixLQUFLLEVBcktHLE9BQU8sR0FzS2Y7O0F3RGhMRixBQU1FLElBTkUsQUFBQSxRQUFRLENBS1gsYUFBYSxDQUNaLE9BQU8sQXhEMEhQLFFBQVEsRXdEaElWLEFBTUUsSUFORSxBQUFBLFFBQVEsQ0FLWCxhQUFhLENBQ1osT0FBTyxBeEQySFAsT0FBTyxDQUFDO0VBQ1IsT0FBTyxFQUFFLEVBQUc7RUFDWixPQUFPLEVBQUUsS0FBTSxHQUNmOztBd0RwSUYsQUFNRSxJQU5FLEFBQUEsUUFBUSxDQUtYLGFBQWEsQ0FDWixPQUFPLEF4RCtIUCxNQUFNLENBQUM7RUFDUCxLQUFLLEVBQUUsSUFBSyxHQUNaOztBd0R2SUYsQUFVRSxJQVZFLEFBQUEsUUFBUSxDQUtYLGFBQWEsQ0FLWixZQUFZLENBQUM7RUFDWixjQUFjLEVBQUUsSUFBSyxHQUNyQjs7QUFaSCxBQWNJLElBZEEsQUFBQSxRQUFRLENBS1gsYUFBYSxDQVNaLENBQUMsQ0FBQyxHQUFHLENBQUM7RUFDTCxLQUFLLEVBQUUsS0FBTTtFQUNiLE1BQU0sRUFBRSxJQUFLO0VBQ2IsS0FBSyxFQUFFLElBQUs7RUFDWixZQUFZLEVBQUUsSUFBSztFQUNuQixhQUFhLEVBQUUsSUFBSyxHQVdwQjtFQVRBLE1BQU0sRUFBTCxTQUFTLEVBQUUsS0FBSztJQXJCcEIsQUFjSSxJQWRBLEFBQUEsUUFBUSxDQUtYLGFBQWEsQ0FTWixDQUFDLENBQUMsR0FBRyxDQUFDO01BUUosS0FBSyxFQUFFLElBQUs7TUFDWixNQUFNLEVBQUUsSUFBSztNQUNiLEtBQUssRUFBRSxJQUFLO01BQ1osVUFBVSxFQUFFLE1BQU87TUFDbkIsT0FBTyxFQUFFLEtBQU07TUFDZixNQUFNLEVBQUUsTUFBTztNQUNmLGFBQWEsRUFBRSxJQUFLLEdBRXJCIiwibmFtZXMiOltdfQ== */
