html {
  box-sizing: border-box; }

*, *::after, *::before {
  box-sizing: inherit; }

* {
  margin: 0;
  padding: 0; }

*, *:before, *:after {
  box-sizing: border-box; }

html, body {
  height: 100% !important; }

body {
  line-height: 1.4;
  padding-top: 70px; }
  body.toolbar {
    padding-top: 0; }

img {
  max-width: 100%;
  height: auto; }

a, a:hover, a:active, a:visited {
  color: #000;
  text-decoration: none; }

p {
  margin-bottom: 20px; }

ul {
  list-style-type: none; }

ul.standard {
  list-style-type: disc;
  list-style-position: outside;
  margin-left: 1.3em; }
  ul.standard li {
    margin-top: 0.2em; }

input {
  -webkit-border-radius: 0px;
  -webkit-appearance: none; }

input[type=text], input[type=password], textarea {
  border: 1px solid #888;
  outline: 0;
  padding: 4px; }

div[rel=text], [rel=email] {
  line-height: 1.7;
  margin: 12px 0; }

input[type=checkbox] {
  border: 1px solid #888;
  height: 14px;
  margin-right: 10px;
  width: 14px;
  -webkit-appearance: checkbox; }

div[rel=checkbox] {
  line-height: 1.7;
  margin-bottom: 12px; }

input[type=submit] {
  padding: 4px 8px; }

select {
  border: 1px solid #888;
  background-color: #FFF; }

label {
  margin-bottom: 4px;
  font-weight: normal; }

th {
  border-bottom: 1px solid #CCC; }

tr.even, tr.odd {
  background-color: #FFF;
  border-bottom: 1px solid #CCC;
  padding: 0.3em 0.6em; }

tr.odd {
  background-color: #F5F5F5; }

td, th {
  padding-top: 0.5em;
  padding-bottom: 0.5em; }

table.draggable {
  width: 100% !important; }
  table.draggable .handle {
    width: 22px !important;
    height: 22px !important;
    margin-left: 0.8em !important; }

hr {
  border: 0;
  height: 1px;
  font-size: 0px;
  display: block;
  background: #000;
  padding: 1em 0;
  background-origin: padding-box;
  clear: both; }

.form-required {
  color: #000; }

@font-face {
  font-weight: normal;
  font-family: "Frutiger Next LT W06 Light";
  src: url("../fonts/1366590/35f2fcd5-0bd6-4974-8b4b-a0667bc609b9.eot?#iefix");
  src: url("../fonts/1366590/35f2fcd5-0bd6-4974-8b4b-a0667bc609b9.eot?#iefix") format("eot"), url("../fonts/1366590/a7b40a14-dbca-49ff-8668-a2808421455b.woff") format("woff"), url("../fonts/1366590/5439c10b-467e-4feb-b866-7b1b588bdc08.ttf") format("truetype"), url("../fonts/1366590/a1a93a97-03d2-4309-8393-3e4c9a452ff6.svg#a1a93a97-03d2-4309-8393-3e4c9a452ff6") format("svg"); }

@font-face {
  font-weight: normal;
  font-family: "Frutiger Next LT W06 Medium";
  src: url("../fonts/1366594/8c11db31-604a-4fff-90ea-5ccd389b7260.eot?#iefix");
  src: url("../fonts/1366594/8c11db31-604a-4fff-90ea-5ccd389b7260.eot?#iefix") format("eot"), url("../fonts/1366594/226dc050-0441-41e6-8d1b-11b9747812a2.woff") format("woff"), url("../fonts/1366594/8d86c89e-f099-49b3-b4cd-97907ba7124e.ttf") format("truetype"), url("../fonts/1366594/8524e4cf-1990-4ac9-a0de-c793c3fd5972.svg#8524e4cf-1990-4ac9-a0de-c793c3fd5972") format("svg"); }

body, h1, h2, h3, h4, .luminaires-item-title, .node-type-reference .group-header .field-label:before, .tooltipster-lamp83 .tooltipster-content, #user-login .login-password, .text-regular {
  font-family: "Frutiger Next LT W06 Light", Arial, sans-serif; }

b, strong, body:not([class*=unobtrusive-headline]) .page-banner + .page-body .page-body-title, .compact-menu-navigation > ul > li > a, .field-prod-variants table.stacktable .st-head-row, .node-news h1, .news-list-item-title a, .news-list-item-text a, .contact-person-block-title, .newsletter-block__title, .node-type-reference .group-header .field-label, .node-page--image .field-body h4, .intro-body-text-title, .intro-separator-image h3, .views_slideshow_cycle_main .field-slfr-slides-title, .views_slideshow_cycle_main .field-slfr-slides-linktext, .downloads-list h3, .marquee, .text-strong {
  font-family: "Frutiger Next LT W06 Medium", Arial, sans-serif;
  font-weight: normal; }

body {
  font-size: 93.75%; }

h1, h2, h3, h4 {
  font-weight: normal;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale; }

b, strong {
  font-weight: normal; }

/**
 * Temporary location for styles.
 * Move these styles to separate files later.
 */
.contextual-links-region:hover a.contextual-links-trigger {
  display: block; }

#toolbar * {
  box-sizing: content-box; }

#toolbar-menu {
  visibility: hidden; }

.messages.error {
  background-color: transparent;
  border: 0 none;
  padding: 10px 10px 10px 0;
  background-image: none;
  color: #00aacd; }

.luminaires-item {
  margin-bottom: 20px; }
  @media screen and (min-width: 0px) and (max-width: 699px) {
    .luminaires-item {
      float: left;
      display: block;
      margin-right: 2.35765%;
      width: 48.82117%;
      margin-bottom: 10px; }
      .luminaires-item:last-child {
        margin-right: 0; }
      .luminaires-item:nth-child(2n) {
        margin-right: 0; }
      .luminaires-item:nth-child(2n+1) {
        clear: left; } }
  @media screen and (min-width: 700px) and (max-width: 989px) {
    .luminaires-item {
      float: left;
      display: block;
      margin-right: 2.35765%;
      width: 31.76157%; }
      .luminaires-item:last-child {
        margin-right: 0; }
      .luminaires-item:nth-child(3n) {
        margin-right: 0; }
      .luminaires-item:nth-child(3n+1) {
        clear: left; } }
  @media screen and (min-width: 990px) {
    .luminaires-item {
      float: left;
      display: block;
      margin-right: 2.35765%;
      width: 23.23176%; }
      .luminaires-item:last-child {
        margin-right: 0; }
      .luminaires-item:nth-child(4n) {
        margin-right: 0; }
      .luminaires-item:nth-child(4n+1) {
        clear: left; } }

.luminaires-item-title {
  text-transform: uppercase;
  margin: 5px 0;
  font-size: 120%; }

.luminaires-item-title a {
  text-decoration: none;
  color: #000; }

.luminaires-item-image {
  padding-bottom: 100%;
  width: 100%;
  height: 0px;
  display: block;
  background-size: 100%;
  background-repeat: no-repeat;
  font-size: 0px; }

.page-wrapper {
  min-height: 100%;
  position: relative;
  padding-bottom: 300px; }

.page-header {
  min-height: 70px;
  background-color: rgba(255, 255, 255, 0.93);
  position: relative;
  z-index: 998;
  top: 0px;
  position: fixed;
  width: 100%; }
  .compact-menu--visible .page-header {
    background-color: #000; }
  body.admin-menu .page-header, body.toolbar .page-header {
    position: relative; }

.page-header-inner {
  position: relative; }
  @media screen and (min-width: 0px) and (max-width: 699px) {
    .page-header-inner {
      padding: 0 15px 0 15px; } }
  @media screen and (min-width: 700px) and (max-width: 989px) {
    .page-header-inner {
      padding: 0 30px 0 30px; } }
  @media screen and (min-width: 990px) {
    .page-header-inner {
      padding: 0 80px 0 80px; } }

.page-header-logo {
  background: url(data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjAiIGlkPSJFYmVuZV8xX0tvcGllIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiCgkgeT0iMHB4IiB2aWV3Qm94PSIwIDAgNjkxLjcgMTM4LjEiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDY5MS43IDEzOC4xIiB4bWw6c3BhY2U9InByZXNlcnZlIj4KPHBvbHlnb24gZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGZpbGw9IiNFMzBBMTMiIHBvaW50cz0iNjkxLjcsMTAwLjkgNjkxLjcsMTAyLjIgMCwxMzguMSAwLDEwMC45ICIvPgo8Zz4KCTxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMCwwYzAsMCwzLjQsMCw0LDBjMTQuMywwLDE5LjYsMTAuMSwxOS42LDE3LjJjMCw1LjcsMCwzNS44LDAsMzkuMQoJCWMwLDMuMywyLjYsNyw4LjUsN2M0LjksMCw0NCwwLDQ0LDB2MjAuMmMwLDAtMjcuNCwwLTQzLjQsMEMxNi44LDgzLjYsMCw3NS4xLDAsNTMuM0MwLDQ1LjUsMCwwLDAsMHoiLz4KCTxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMTE3LjIsMGMyLjksMCw2Ni45LDAsNjYuOSwwdjgzLjZoLTIzLjZWNTguNEgxMTF2MjUuMUg4Ny4zYzAsMCwwLTQ3LjIsMC01Ni43CgkJQzg3LjMsMTQuNiwxMDAuMiwwLDExNy4yLDB6IE0xMTcuMSwyMS4yYy0zLjYsMC02LjEsMi45LTYuMSw2LjVjMCwzLjYsMCwxMCwwLDEwaDQ5LjZWMjEuMkMxNjAuNSwyMS4yLDEyMC43LDIxLjIsMTE3LjEsMjEuMnoiLz4KCTxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMjA2LjksMGMwLDAsOC4yLDAsMTIuNCwwYzYuMiwwLDkuNCwyLjcsMTIuMiw1LjVjMi44LDIuOCwzMy45LDM3LjIsMzMuOSwzNy4yCgkJczMwLjgtMzMuOSwzNC4xLTM3LjJjMy41LTMuNSw2LTUuNSwxMS01LjVjMS45LDAsMTMuNSwwLDEzLjUsMHY4My42aC0yMS44VjM1LjJjMCwwLTIzLjksMjUuOS0yOC42LDMwLjZjLTQuNyw0LjctMTEuNSw1LjEtMTYuNSwwCgkJYy01LjEtNS4xLTI4LTI5LjgtMjgtMjkuOHY0Ny42aC0yMi4xVjB6Ii8+Cgk8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTM0OC4yLDBjMCwwLDcxLjYsMCw4MC41LDBzMjkuMiw4LjgsMjkuMiwyOS4ycy0xOS4xLDI5LjItMjkuMiwyOS4yCgkJcy01Ni4zLDAtNTYuMywwdjI1LjFoLTI0LjJWMHogTTM3Mi40LDIxLjJ2MTYuNWMwLDAsNTEuMSwwLDU1LjMsMHM2LjgtMy43LDYuOC04LjVjMC0zLjUtMi42LTgtNi44LThTMzcyLjQsMjEuMiwzNzIuNCwyMS4yeiIvPgoJPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik01MDguNCw4My42Yy0yMC4zLDAtMzMuNy0yLjItMzMuNy0yMC42YzAtMi4yLDAtNC40LDAtNmMwLTExLDYuMS0xNSwxMS45LTE3LjIKCQljMCwwLTkuOC0xLjYtOS44LTEzLjRjMC0zLDAtMywwLTdDNDc2LjYsOC43LDQ4MywwLDUwMC43LDBjMTMuNywwLDQxLjgsMCw0MS44LDBjMTcuNywwLDI0LjEsOC43LDI0LjEsMTkuM2MwLDQsMCw0LDAsNwoJCWMwLDExLjgtMTAsMTMuNC0xMCwxMy40YzUuOCwyLjMsMTIsNi4zLDEyLDE3LjNjMCwxLjYsMCwzLjgsMCw2YzAsMTguNC0xMy41LDIwLjYtMzMuNywyMC42SDUwOC40eiBNNTUxLjUsMjYuM2MwLTEuNCwwLTQuNCwwLTYKCQljMC01LjYtNS45LTguOS0xMS41LTguOWMtNC43LDAtMzcsMC0zNy43LDBjLTUuNiwwLTEwLjksMy42LTEwLjksOWMwLDQsMCwyLDAsNS45YzAsNC45LDQuNCw4LjksMTAuMyw4LjljNi41LDAsMzYuMywwLDM5LjMsMAoJCUM1NDcuMywzNS4zLDU1MS41LDMxLjIsNTUxLjUsMjYuM3ogTTQ5OS42LDQ2LjZjLTUuNSwwLTkuOSwzLjktOS45LDguNmMwLDEsMCwzLjUsMCw4LjJzNS4yLDguOSw5LjksOC45YzMuOSwwLDM5LjgsMCw0My44LDAKCQljNC43LDAsOS45LTQuMiw5LjktOC45czAtNy4yLDAtOC4yYzAtNC43LTQuNC04LjYtOS45LTguNkM1MzcuOSw0Ni42LDUwNSw0Ni42LDQ5OS42LDQ2LjZ6Ii8+Cgk8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTY1MC43LDM5LjdjMCwwLDkuNy0xLjYsOS43LTEzLjRjMC0zLDAtMywwLTdDNjYwLjQsOC43LDY1NCwwLDYzNi4zLDAKCQljMCwwLTIyLjQsMC0zNi4xLDBjLTE3LjcsMC0yNC4xLDguNy0yNC4xLDE5LjNjMCwyLjgsMCwzLjYsMCw1aDE0LjhjMC0xLjMsMC0wLjksMC0zLjljMC01LjUsNS4zLTksMTAuOS05YzAuNywwLDI3LjMsMCwzMi4xLDAKCQljNS42LDAsMTEuNSwzLjMsMTEuNSw4LjljMCwxLjYsMCw0LjYsMCw2YzAsNC45LTQuMyw4LjktMTAuNSw4LjljLTEuOSwwLTEyLjUsMC0yMS42LDB2MTEuNGM5LjMsMCwyMC41LDAsMjMuOSwwCgkJYzUuNSwwLDkuOSwzLjksOS45LDguNmMwLDEsMCwzLjUsMCw4LjJzLTUuMiw4LjktOS45LDguOWMtMy45LDAtMzIuNCwwLTM2LjMsMGMtNC43LDAtOS45LTQuMi05LjktOC45YzAtMS42LDAtMywwLTQuMWgtMTUKCQljMCwxLjIsMCwyLjQsMCwzLjdjMCwxOC40LDExLjcsMjAuNiwzMiwyMC42aDIwLjdjMjAuMywwLDMzLjctMi4yLDMzLjctMjAuNmMwLTIuMiwwLTQuNCwwLTZDNjYyLjQsNDYsNjU2LjUsNDIsNjUwLjcsMzkuN3oiLz4KPC9nPgo8L3N2Zz4K) no-repeat;
  width: 190px;
  height: 39px;
  margin: 15px 0 15px 0;
  display: inline-block;
  float: left; }
  .compact-menu--visible .page-header-logo {
    visibility: hidden; }

.page-header-site-name {
  text-indent: -6789px;
  display: block; }

.page-header-navigation {
  margin-top: 18px;
  float: right;
  /**
	 * Hide navigation for small resolutons.
	 * A javascript navigation will be displayed instead.
	 */ }
  @media screen and (min-width: 0px) and (max-width: 989px) {
    .js .page-header-navigation {
      display: none; } }

.page-header-navigation li {
  display: inline-block;
  margin-left: 25px; }
  .page-header-navigation li a {
    color: #FFF;
    text-transform: uppercase;
    text-decoration: none;
    font-size: 125%; }
    .page-header-navigation li a:hover {
      color: #F1F1F1; }
  .page-header-navigation li.active-trail a, .page-header-navigation li.active a {
    opacity: .8; }

.page-body {
  margin-top: 35px;
  position: relative; }
  @media screen and (min-width: 0px) and (max-width: 699px) {
    .page-body {
      max-width: 700px;
      margin-left: auto;
      margin-right: auto;
      padding: 0 15px 0 15px; }
      .page-body::after {
        clear: both;
        content: "";
        display: table; } }
  @media screen and (min-width: 700px) and (max-width: 989px) {
    .page-body {
      max-width: 990px;
      margin-left: auto;
      margin-right: auto;
      padding: 0 30px 0 30px; }
      .page-body::after {
        clear: both;
        content: "";
        display: table; } }
  @media screen and (min-width: 990px) {
    .page-body {
      max-width: 1200px;
      margin-left: auto;
      margin-right: auto;
      padding: 0 40px 0 40px; }
      .page-body::after {
        clear: both;
        content: "";
        display: table; } }
  @media screen and (min-width: 990px) {
    .node-type-front-subpage .page-body,
    .node-type-news .page-body {
      max-width: 900px;
      margin-left: auto;
      margin-right: auto;
      padding: 0; }
      .node-type-front-subpage .page-body::after,
      .node-type-news .page-body::after {
        clear: both;
        content: "";
        display: table; } }

.page-body--front {
  max-width: 100%;
  min-height: 100%;
  padding: 0; }

.page-body-title {
  font-size: 170%;
  text-transform: uppercase;
  margin-bottom: 15px;
  margin-top: 0px;
  padding-bottom: 15px;
  border-bottom: 1px solid #000;
  text-overflow: ellipsis;
  white-space: nowrap;
  overflow: hidden;
  /**
	 * Page banner/header image is present
	 */ }
  body:not([class*=unobtrusive-headline]) .page-banner + .page-body .page-body-title {
    margin-top: -75px;
    color: #FFF;
    border-bottom: 0px; }
    @media screen and (min-width: 0px) and (max-width: 699px) {
      body:not([class*=unobtrusive-headline]) .page-banner + .page-body .page-body-title {
        font-size: 130%;
        margin-top: -62px; } }

.page-body-title-count {
  color: #00aacd; }

.page-body-sidebar-image {
  background-size: 100% auto;
  float: left;
  display: block;
  margin-right: 3.57866%;
  width: 35.26334%;
  margin-right: 0; }
  .page-body-sidebar-image:last-child {
    margin-right: 0; }
  @media screen and (min-width: 0px) and (max-width: 699px) {
    .page-body-sidebar-image {
      float: left;
      display: block;
      margin-right: 38.19821%;
      width: 100%;
      margin-right: 0; }
      .page-body-sidebar-image:last-child {
        margin-right: 0; } }
  .page-body-sidebar-image img {
    display: block;
    opacity: .5;
    width: 100%;
    background-color: #FFF; }

body:not([class*=unobtrusive-headline]) .page-banner {
  width: 100%;
  overflow: hidden; }
  body:not([class*=unobtrusive-headline]) .page-banner img {
    display: block;
    width: 100%;
    height: auto; }
    @media screen and (min-width: 0px) and (max-width: 699px) {
      .path-unternehmen-team body:not([class*=unobtrusive-headline]) .page-banner img {
        width: 160%;
        max-width: 160%;
        margin-left: -30%; } }
  body:not([class*=unobtrusive-headline]) .page-banner:after {
    content: '';
    display: block;
    background: rgba(0, 170, 205, 0.8);
    width: 100%;
    height: 50px;
    margin-top: -50px;
    position: relative;
    z-index: 0; }
    @media screen and (min-width: 0px) and (max-width: 699px) {
      body:not([class*=unobtrusive-headline]) .page-banner:after {
        height: 30px;
        margin-top: -30px; } }

.page-banner img {
  display: block; }

.page-bar {
  background-color: #e6e7e9;
  position: relative; }
  .page-bar::after {
    clear: both;
    content: "";
    display: table; }

.page-bar-inner {
  position: relative; }
  @media screen and (min-width: 0px) and (max-width: 699px) {
    .page-bar-inner {
      max-width: 700px;
      margin-left: auto;
      margin-right: auto; }
      .page-bar-inner::after {
        clear: both;
        content: "";
        display: table; } }
  @media screen and (min-width: 700px) and (max-width: 989px) {
    .page-bar-inner {
      max-width: 990px;
      margin-left: auto;
      margin-right: auto;
      padding: 0 30px 0 30px; }
      .page-bar-inner::after {
        clear: both;
        content: "";
        display: table; } }
  @media screen and (min-width: 990px) {
    .page-bar-inner {
      max-width: 1200px;
      margin-left: auto;
      margin-right: auto;
      padding: 0 40px 0 40px; }
      .page-bar-inner::after {
        clear: both;
        content: "";
        display: table; } }
  .contact-page .page-bar-inner {
    max-width: 100%;
    padding: 0; }

.page-footer-copyright {
  float: right;
  font-size: 120%; }

.page-footer {
  background-color: #000;
  position: absolute;
  width: 100%;
  bottom: 0;
  left: 0;
  padding: 8px 0;
  color: #FFF; }
  @media screen and (min-width: 0px) and (max-width: 699px) {
    .page-footer {
      font-size: 80%; } }
  .page-footer.page-footer-front {
    position: relative; }
  .page-footer nav {
    display: inline-block;
    font-size: 120%; }
  .page-footer a, .page-footer a:link, .page-footer a:active, .page-footer a:visited {
    color: #FFF; }
  .page-footer li {
    display: inline-block; }
    .page-footer li a, .page-footer li a:link, .page-footer li a:active, .page-footer li a:visited {
      color: #FFF;
      padding: 3px 0 3px 0;
      text-transform: uppercase; }
      .page-footer li a:after, .page-footer li a:link:after, .page-footer li a:active:after, .page-footer li a:visited:after {
        content: " | "; }
  .page-footer li.last a:after {
    display: none; }

.page-footer-inner {
  position: relative;
  padding: 0;
  margin: 0 auto 10px auto;
  text-align: left; }
  @media screen and (min-width: 0px) and (max-width: 699px) {
    .page-footer-inner {
      max-width: 90%; } }
  @media screen and (min-width: 700px) and (max-width: 989px) {
    .page-footer-inner {
      max-width: 90%; } }
  @media screen and (min-width: 990px) {
    .page-footer-inner {
      max-width: 900px; } }
  .page-footer-inner:after {
    content: '';
    display: block;
    background: url(../img/page-footer-spotlight.jpg) no-repeat right bottom;
    background-size: contain;
    width: 266px;
    height: 160px;
    position: absolute;
    bottom: -18px;
    left: -30px;
    transform: translateX(-100%); }

.compact-menu-trigger {
  padding: 20px 35px 16px 0px;
  display: block;
  position: absolute;
  z-index: 992;
  top: 13px;
  right: 80px; }
  @media screen and (min-width: 700px) and (max-width: 989px) {
    .compact-menu-trigger {
      right: 30px; } }
  @media screen and (min-width: 0px) and (max-width: 699px) {
    .compact-menu-trigger {
      right: 15px; } }

.compact-menu-trigger span, .compact-menu-trigger span:before, .compact-menu-trigger span:after {
  cursor: pointer;
  height: 4px;
  width: 35px;
  background-color: #e41513;
  position: absolute;
  display: block;
  content: ''; }

.compact-menu-trigger span {
  background-color: #e41513;
  -webkit-transform: rotate(0);
  -moz-transform: rotate(0);
  -ms-transform: rotate(0);
  -o-transform: rotate(0);
  transform: rotate(0);
  -webkit-transition: all 100ms linear;
  -moz-transition: all 100ms linear;
  transition: all 100ms linear; }

.compact-menu-trigger span:before {
  -webkit-transform: translateY(-10px) rotate(0);
  -moz-transform: translateY(-10px) rotate(0);
  -ms-transform: translateY(-10px) rotate(0);
  -o-transform: translateY(-10px) rotate(0);
  transform: translateY(-10px) rotate(0);
  -webkit-transition: -webkit-transform 200ms linear;
  -moz-transition: -moz-transform 200ms linear;
  transition: transform 200ms linear; }

.compact-menu-trigger span:after {
  -webkit-transform: translateY(10px) rotate(0);
  -moz-transform: translateY(10px) rotate(0);
  -ms-transform: translateY(10px) rotate(0);
  -o-transform: translateY(10px) rotate(0);
  transform: translateY(10px) rotate(0);
  -webkit-transition: -webkit-transform 200ms linear;
  -moz-transition: -moz-transform 200ms linear;
  transition: transform 200ms linear; }

.compact-menu-trigger.active span {
  background-color: #FFF; }
  .compact-menu--visible .compact-menu-trigger.active span {
    background-color: #000; }

.compact-menu-trigger.active span:before {
  -webkit-transform: translateY(0px) rotate(45deg);
  -moz-transform: translateY(0px) rotate(45deg);
  -ms-transform: translateY(0px) rotate(45deg);
  -o-transform: translateY(0px) rotate(45deg);
  transform: translateY(0px) rotate(45deg); }

.compact-menu-trigger.active span:after {
  -webkit-transform: translateY(0px) rotate(-45deg);
  -moz-transform: translateY(0px) rotate(-45deg);
  -ms-transform: translateY(0px) rotate(-45deg);
  -o-transform: translateY(0px) rotate(-45deg);
  transform: translateY(0px) rotate(-45deg); }

.compact-menu {
  z-index: 991;
  width: 100%;
  height: 100%;
  margin: 0;
  top: -9999px;
  position: fixed;
  left: 0;
  background: #000; }
  .compact-menu--visible .compact-menu {
    top: 0; }

.compact-menu-navigation {
  position: relative;
  top: 0;
  left: 80px;
  z-index: 991;
  width: 100%;
  max-width: 1200px;
  padding: 63px 40px 5px 0px;
  -webkit-transition: all 200ms 100ms linear;
  -moz-transition: all 200ms 100ms linear;
  transition: all 200ms 100ms linear;
  opacity: 0; }
  @media screen and (min-width: 0px) and (max-width: 699px) {
    .compact-menu-navigation {
      left: 20px; } }
  .compact-menu--visible .compact-menu-navigation {
    opacity: 1; }

.compact-menu-navigation > ul > li > a {
  background: #000;
  font-size: 550%;
  display: block;
  text-transform: uppercase;
  line-height: 1.2; }
  .compact-menu-navigation > ul > li > a:link, .compact-menu-navigation > ul > li > a:visited {
    color: white; }
  .compact-menu-navigation > ul > li > a:active, .compact-menu-navigation > ul > li > a:hover {
    color: #e41513; }
  @media screen and (min-width: 0px) and (max-width: 699px) {
    .compact-menu-navigation > ul > li > a {
      font-size: 300%; } }

.compact-menu-navigation li.expanded ul {
  display: none; }

.compact-menu-navigation li.expanded ul a {
  color: #FFF;
  font-size: 150%;
  display: block;
  padding-left: 2px; }
  .compact-menu-navigation li.expanded ul a:active, .compact-menu-navigation li.expanded ul a:hover {
    color: #e41513; }

.breadcrumb {
  text-transform: uppercase;
  padding-bottom: 1em; }

.product-back-link {
  margin-top: 15px;
  display: none;
  position: relative;
  z-index: 3; }
  .product-back-link:before {
    font-size: 12px;
    position: relative;
    top: 1px; }
  .js .product-back-link {
    display: block; }
    @media screen and (min-width: 0px) and (max-width: 699px) {
      .js .product-back-link {
        display: none; } }
    @media screen and (min-width: 700px) and (max-width: 989px) {
      .js .product-back-link {
        display: none; } }
    @media screen and (min-width: 990px) {
      .js .product-back-link {
        float: left;
        display: block;
        margin-right: 2.35765%;
        width: 48.82117%; }
        .js .product-back-link:last-child {
          margin-right: 0; } }

.product-filters {
  position: relative;
  z-index: 10; }
  @media screen and (min-width: 700px) {
    .product-filters {
      float: left;
      margin-right: 10px; } }

.product-filters li {
  display: block; }
  @media screen and (min-width: 700px) {
    .product-filters li {
      display: inline-block; } }

.product-filters li a {
  display: inline-block;
  width: 100%;
  text-align: center;
  padding: 10px; }
  @media screen and (min-width: 700px) {
    .product-filters li a {
      padding: 0 7px 0 7px;
      line-height: 49px;
      height: 49px;
      text-align: left;
      border-bottom: 0 none; } }
  @media screen and (min-width: 0px) and (max-width: 699px) {
    .product-filters li a {
      background-color: #bfeaf3;
      border-bottom: 1px solid #7fd4e7; } }

.product-filters li.active a {
  background-color: #00aacd;
  color: #FFF;
  position: relative; }
  @media screen and (min-width: 0px) and (max-width: 699px) {
    .product-filters li.active a {
      color: #333; } }
  @media screen and (min-width: 700px) {
    .product-filters li.active a:before {
      color: #FFF;
      font-size: 16px;
      line-height: 5px;
      bottom: -2px;
      left: 50%;
      margin-left: -8px;
      display: block;
      position: absolute;
      font-family: "lamp83-icons" !important;
      content: "i"; } }

.product-filters-toggle {
  text-align: center;
  text-transform: uppercase;
  display: block;
  padding: 5px 0 15px 0;
  background-color: #bfeaf3;
  border-bottom: 1px solid #7fd4e7;
  position: relative;
  cursor: pointer; }
  .product-filters-toggle:before {
    font-family: "lamp83-icons" !important;
    content: "a";
    text-transform: none;
    font-size: 16px;
    margin-left: -8px;
    display: block;
    position: absolute;
    left: 50%;
    bottom: 1px; }

.product-search-box {
  padding: 10px 0;
  position: relative; }
  @media screen and (min-width: 0px) and (max-width: 699px) {
    .product-search-box {
      margin-right: 15px;
      margin-left: 15px;
      float: none; } }
  .product-search-box > div {
    overflow: hidden; }
    @media screen and (min-width: 0px) and (max-width: 699px) {
      .product-search-box > div {
        display: inline-block;
        width: 86%; } }

.product-search-box label {
  display: none; }

.product-search-box [name=text] {
  border: 1px solid #D3D3D3;
  border-right: none;
  color: #666;
  line-height: 1;
  height: 29px;
  outline: 0;
  padding: 0 5px;
  float: right;
  width: 100%;
  max-width: 370px;
  -webkit-transition: width 0.2s linear;
  -moz-transition: width 0.2s linear;
  transition: width 0.2s linear;
  /**
	&.expanded, .path-produkte &, .path-products & {
		width: 335px;
	}
	**/ }
  @media screen and (min-width: 0px) and (max-width: 699px) {
    .product-search-box [name=text] {
      width: 100% !important;
      max-width: none; } }

.product-search-box-submit {
  background-color: #D3D3D3;
  border: 1px solid #D3D3D3;
  line-height: 29px;
  height: 29px;
  width: 47px;
  color: #FFF;
  font-size: 19px;
  outline: 0;
  float: right; }
  .product-search-box-submit:active {
    background-color: #999; }
  .product-search-box-submit:before {
    position: relative;
    bottom: -2px; }
  @media screen and (min-width: 0px) and (max-width: 699px) {
    .product-search-box-submit {
      width: 14%; } }

.product-icon {
  display: inline-block;
  width: 29px;
  height: 29px;
  background-size: 29px 29px; }

.product-icon--notlicht {
  background-image: url(../img/icons/product-icon-notlicht.svg);
  background-color: #00aacd; }

.product-icon--schwenkbar {
  background-image: url(../img/icons/product-icon-schwenkbar.svg);
  background-color: #00aacd; }

.product-icon--reflektor {
  background-image: url(../img/icons/product-icon-reflektor.svg);
  background-color: #00aacd; }

.product-icon--reflektionsgrad {
  background-image: url(../img/icons/product-icon-reflektionsgrad.svg);
  background-color: #00aacd; }

.product-icon--facettenreflektor {
  background-image: url(../img/icons/product-icon-facettenreflektor.svg);
  background-color: #00aacd; }

.product-icon--dimmbar {
  background-image: url(../img/icons/product-icon-dimmbar.svg);
  background-color: #00aacd; }

.product-icon--blendschutz {
  background-image: url(../img/icons/product-icon-blendschutz.svg);
  background-color: #00aacd; }

.product-icon--ce {
  background-image: url(../img/icons/product-icon-ce.svg);
  background-color: #FFF; }

.product-icon--enec {
  background-image: url(../img/icons/product-icon-enec.svg);
  background-color: #FFF; }

.product-icon--pct {
  background-image: url(../img/icons/product-icon-pct.svg);
  background-color: #FFF; }

.product-icon--ukr {
  background-image: url(../img/icons/product-icon-ukr.svg);
  background-color: #FFF; }

.product-icon--ip20 {
  background-image: url(../img/icons/product-icon-ip20.svg);
  background-color: #FFF; }

.product-icon--ip30 {
  background-image: url(../img/icons/product-icon-ip30.svg);
  background-color: #FFF; }

.product-icon--ip40 {
  background-image: url(../img/icons/product-icon-ip40.svg);
  background-color: #FFF; }

.product-icon--ip44 {
  background-image: url(../img/icons/product-icon-ip44.svg);
  background-color: #FFF; }

.product-icon--ip50 {
  background-image: url(../img/icons/product-icon-ip50.svg);
  background-color: #FFF; }

.product-icon--ip54 {
  background-image: url(../img/icons/product-icon-ip54.svg);
  background-color: #FFF; }

.product-icon--glossary {
  background-size: 55px 55px;
  width: 55px;
  height: 55px; }

.product-groups {
  margin-top: -25px; }
  @media screen and (min-width: 0px) and (max-width: 699px) {
    .product-groups {
      margin-top: -10px; } }

.product-groups-item {
  -webkit-transition: border 0.4s ease-in-out;
  -moz-transition: border 0.4s ease-in-out;
  transition: border 0.4s ease-in-out;
  min-height: 150px;
  margin-top: 25px;
  cursor: pointer;
  border-bottom: 6px solid #FFF; }
  @media screen and (min-width: 0px) and (max-width: 699px) {
    .product-groups-item {
      float: left;
      display: block;
      margin-right: 2.35765%;
      width: 48.82117%;
      margin-top: 10px; }
      .product-groups-item:last-child {
        margin-right: 0; }
      .product-groups-item:nth-child(2n) {
        margin-right: 0; }
      .product-groups-item:nth-child(2n+1) {
        clear: left; } }
  @media screen and (min-width: 700px) and (max-width: 989px) {
    .product-groups-item {
      float: left;
      display: block;
      margin-right: 4.82916%;
      width: 47.58542%; }
      .product-groups-item:last-child {
        margin-right: 0; }
      .product-groups-item:nth-child(2n) {
        margin-right: 0; }
      .product-groups-item:nth-child(2n+1) {
        clear: left; } }
  @media screen and (min-width: 990px) {
    .product-groups-item {
      float: left;
      display: block;
      margin-right: 2.35765%;
      width: 23.23176%; }
      .product-groups-item:last-child {
        margin-right: 0; }
      .product-groups-item:nth-child(4n) {
        margin-right: 0; }
      .product-groups-item:nth-child(4n+1) {
        clear: left; } }

.product-groups-item-title {
  margin-top: 10px;
  border-bottom: 6px solid #FFF;
  font-size: 120%;
  transition: border-color 0.3s linear; }
  .product-groups-item-multi .product-groups-item-anchor:target ~ .product-groups-item-link .product-groups-item-title {
    border-color: #00aacd; }

.product-groups-item-link {
  outline: 0; }

.product-groups-item-image {
  width: 100%;
  height: 0px;
  padding-bottom: 100%; }

.product-groups-item-anchor {
  position: fixed;
  top: 0;
  left: 0;
  display: block; }

.product-groups-item-image img {
  display: block;
  width: 100%; }
  @media screen and (min-width: 0px) and (max-width: 699px) {
    .product-groups-item-image img {
      width: auto; } }

.product-groups-item-icons {
  margin-top: -29px;
  font-size: 0px; }

.product-groups-item-icons .product-icon {
  margin-right: 4px; }

.product-groups-item--selected {
  border-bottom: 6px solid #86b7b1; }

.product-list {
  overflow: hidden;
  -webkit-transition: max-height 0.3s ease-in-out 0s, opacity 0.2s ease, -webkit-transform 0.5s linear;
  -moz-transition: max-height 0.3s ease-in-out 0s, opacity 0.2s ease, -moz-transform 0.5s linear;
  transition: max-height 0.3s ease-in-out 0s, opacity 0.2s ease, transform 0.5s linear;
  opacity: 0;
  max-height: 0;
  height: 0; }
  .product-groups-item-anchor:target ~ .product-list {
    opacity: 1;
    max-height: 1000px;
    height: auto;
    -webkit-transition: max-height 0.5s ease-in-out 0s, opacity 0.4s ease 0.4s, -webkit-transform 0.5s linear;
    -moz-transition: max-height 0.5s ease-in-out 0s, opacity 0.4s ease 0.4s, -moz-transform 0.5s linear;
    transition: max-height 0.5s ease-in-out 0s, opacity 0.4s ease 0.4s, transform 0.5s linear; }
    @media screen and (min-width: 0px) and (max-width: 699px) {
      .product-groups-item-anchor:target ~ .product-list {
        max-height: 1700px; } }

.product-list-item {
  min-height: 110px;
  margin-top: 15px;
  padding-top: 4px;
  border-top: 1px solid #000;
  position: relative; }
  @media screen and (min-width: 0px) and (max-width: 699px) {
    .product-list-item {
      float: left;
      display: block;
      margin-right: 38.19821%;
      width: 100%; }
      .product-list-item:last-child {
        margin-right: 0; }
      .product-list-item:nth-child(1n) {
        margin-right: 0; }
      .product-list-item:nth-child(1n+1) {
        clear: left; } }
  @media screen and (min-width: 700px) and (max-width: 989px) {
    .product-list-item {
      float: left;
      display: block;
      margin-right: 4.82916%;
      width: 47.58542%; }
      .product-list-item:last-child {
        margin-right: 0; }
      .product-list-item:nth-child(2n) {
        margin-right: 0; }
      .product-list-item:nth-child(2n+1) {
        clear: left; } }
  @media screen and (min-width: 990px) {
    .product-list-item {
      float: left;
      display: block;
      margin-right: 2.35765%;
      width: 23.23176%; }
      .product-list-item:last-child {
        margin-right: 0; }
      .product-list-item:nth-child(4n) {
        margin-right: 0; }
      .product-list-item:nth-child(4n+1) {
        clear: left; } }

.product-list-item-title {
  float: left;
  text-transform: uppercase;
  font-size: 100%;
  max-width: 57%;
  word-wrap: break-word;
  padding-left: 2px; }

.product-list-item img {
  float: right;
  max-width: 40%; }
  @media screen and (min-width: 0px) and (max-width: 699px) {
    .product-list-item img {
      max-width: 104px; } }

.product-list-item-icons {
  bottom: 0;
  left: -3px;
  position: absolute;
  max-width: 59%;
  clear: both; }

.product-list-item-icons .product-icon {
  float: left;
  margin: 3px 0 0 3px; }

.product-list {
  display: block;
  background: #EEE;
  overflow: hidden;
  width: 100%;
  position: relative;
  /**
	 * Positioning magic to move the product list out of the grid.
	 */ }
  @media screen and (min-width: 990px) {
    .product-list {
      width: 430.44519%; }
      .product-groups-item:nth-child(4n + 1) .product-list {
        margin-left: 0%; }
      .product-groups-item:nth-child(4n + 2) .product-list {
        margin-left: -110.1484%; }
      .product-groups-item:nth-child(4n + 3) .product-list {
        margin-left: -220.2968%; }
      .product-groups-item:nth-child(4n + 4) .product-list {
        margin-left: -330.44519%; } }
  @media screen and (min-width: 700px) and (max-width: 989px) {
    .product-list {
      width: 210.1484%; }
      .product-groups-item:nth-child(2n + 1) .product-list {
        margin-left: 0%; }
      .product-groups-item:nth-child(2n + 2) .product-list {
        margin-left: -110.1484%; } }
  @media screen and (min-width: 0px) and (max-width: 699px) {
    .product-list {
      width: 204.82916%; }
      .product-groups-item:nth-child(2n + 1) .product-list {
        margin-left: 0%; }
      .product-groups-item:nth-child(2n + 2) .product-list {
        margin-left: -104.82916%; } }

@media screen and (min-width: 0px) and (max-width: 699px) {
  .node-product .ds-left::after {
    clear: both;
    content: "";
    display: table; } }

@media screen and (min-width: 700px) and (max-width: 989px) {
  .node-product .ds-left {
    float: left;
    display: block;
    margin-right: 2.35765%;
    width: 48.82117%; }
    .node-product .ds-left:last-child {
      margin-right: 0; } }

@media screen and (min-width: 990px) {
  .node-product .ds-left {
    float: left;
    display: block;
    margin-right: 2.35765%;
    width: 48.82117%; }
    .node-product .ds-left:last-child {
      margin-right: 0; } }

@media screen and (min-width: 0px) and (max-width: 699px) {
  .node-product .ds-middle {
    padding-top: 15px; } }

@media screen and (min-width: 700px) and (max-width: 989px) {
  .node-product .ds-middle {
    float: left;
    display: block;
    margin-right: 2.35765%;
    width: 48.82117%;
    margin-right: 0; }
    .node-product .ds-middle:last-child {
      margin-right: 0; } }

@media screen and (min-width: 990px) {
  .node-product .ds-middle {
    float: left;
    display: block;
    margin-right: 2.35765%;
    width: 23.23176%; }
    .node-product .ds-middle:last-child {
      margin-right: 0; } }

@media screen and (min-width: 0px) and (max-width: 989px) {
  .node-product .ds-right {
    margin-top: 15px; } }

@media screen and (min-width: 700px) and (max-width: 989px) {
  .node-product .ds-right {
    float: left;
    display: block;
    margin-right: 2.35765%;
    width: 48.82117%; }
    .node-product .ds-right:last-child {
      margin-right: 0; } }

@media screen and (min-width: 990px) {
  .node-product .ds-right {
    float: left;
    display: block;
    margin-right: 2.35765%;
    width: 23.23176%;
    margin-right: 0; }
    .node-product .ds-right:last-child {
      margin-right: 0; } }

.node-product .ds-right > * {
  padding-top: 14px;
  border-top: 1px solid #000; }
  @media screen and (min-width: 700px) {
    .node-product .ds-right > *:first-child {
      border-top: 0 none;
      padding-top: 0; } }

.node-product .ds-bottom {
  clear: both; }

.node-product .field-prod-icons-specific .product-icon {
  background-size: 48px 48px;
  width: 48px;
  height: 48px;
  margin-right: 2px;
  margin-bottom: 2px;
  float: left; }

.field-prod-icons-specific {
  padding-bottom: 15px;
  border-bottom: 1px solid #000; }
  .field-prod-icons-specific::after {
    clear: both;
    content: "";
    display: table; }

.field-prod-icons-specific-labels {
  border-bottom: 1px solid #000;
  padding: 5px 0 15px 0; }

.field-prod-description {
  clear: left;
  padding-top: 15px; }

.ds-bottom h3 {
  font-size: 150%;
  text-transform: uppercase;
  border-bottom: 1px solid #000;
  padding: 35px 0 0 0;
  margin-bottom: 15px; }

.field-prod-datasheet,
.field-prod-technical-drawings,
.field-prod-light-dist-curve {
  clear: left; }

.field-prod-download {
  display: none;
  background-size: auto 70px;
  background-position: left top;
  background-repeat: no-repeat;
  background-size: 48px auto;
  height: 65px;
  padding: 6px 0 0 62px; }
  .field-prod-download:first-child {
    display: block; }

.field-prod-download--pdf {
  background-image: url(../img/icons/download-icon-pdf.svg);
  height: 85px;
  padding: 12px 0 0 62px; }

.field-prod-download--zip {
  background-image: url(../img/icons/download-icon-zip.svg);
  height: 85px;
  padding: 12px 0 0 62px; }

.field-prod-download--tz {
  background-image: url(../img/icons/download-icon-technische-zeichnungen.svg); }

.field-prod-download--lk {
  background-image: url(../img/icons/download-icon-leuchtkurven.svg); }

.field-prod-download-title {
  display: block;
  line-height: 1.4;
  text-transform: uppercase; }

.field-prod-download-subtitle {
  display: block;
  color: #999;
  font-size: 90%; }

.field-prod-icons-general {
  margin-top: 5px;
  border: 1px solid #000;
  border-width: 1px 0 1px 0;
  padding: 3px 0;
  font-size: 0px; }
  @media screen and (min-width: 0px) and (max-width: 699px) {
    .field-prod-icons-general {
      float: left;
      display: block;
      margin-right: 38.19821%;
      width: 100%;
      margin-right: 0; }
      .field-prod-icons-general:last-child {
        margin-right: 0; } }
  @media screen and (min-width: 700px) and (max-width: 989px) {
    .field-prod-icons-general {
      float: left;
      display: block;
      margin-right: 38.19821%;
      width: 100%;
      margin-right: 0; }
      .field-prod-icons-general:last-child {
        margin-right: 0; } }
  @media screen and (min-width: 990px) {
    .field-prod-icons-general {
      float: left;
      display: block;
      margin-right: 2.35765%;
      width: 48.82117%; }
      .field-prod-icons-general:last-child {
        margin-right: 0; } }
  .field-prod-icons-general::after {
    clear: both;
    content: "";
    display: table; }

.field-prod-icons-general .product-icon {
  height: 28px;
  width: 14%;
  background-size: contain;
  background-repeat: no-repeat;
  background-position: center center;
  margin-right: 6%; }
  .field-prod-icons-general .product-icon:last-child {
    margin-right: 0; }

.field-prod-thumbnails {
  margin-top: 5px; }
  @media screen and (min-width: 0px) and (max-width: 699px) {
    .field-prod-thumbnails {
      float: left;
      display: block;
      margin-right: 38.19821%;
      width: 100%;
      margin-right: 0; }
      .field-prod-thumbnails:last-child {
        margin-right: 0; } }
  @media screen and (min-width: 700px) and (max-width: 989px) {
    .field-prod-thumbnails {
      float: left;
      display: block;
      margin-right: 38.19821%;
      width: 100%;
      margin-right: 0; }
      .field-prod-thumbnails:last-child {
        margin-right: 0; } }
  @media screen and (min-width: 990px) {
    .field-prod-thumbnails {
      float: left;
      display: block;
      margin-right: 2.35765%;
      width: 48.82117%;
      margin-right: 0; }
      .field-prod-thumbnails:last-child {
        margin-right: 0; } }
  .field-prod-thumbnails ul > li {
    float: left;
    display: block;
    margin-right: 2.35765%;
    width: 48.82117%;
    margin-bottom: 3%; }
    .field-prod-thumbnails ul > li:last-child {
      margin-right: 0; }
    .field-prod-thumbnails ul > li:nth-child(2n) {
      margin-right: 0; }
    .field-prod-thumbnails ul > li:nth-child(2n+1) {
      clear: left; }
  .field-prod-thumbnails img {
    display: block; }

.field-prod-variants {
  width: 100%;
  padding-top: 1px; }
  .field-prod-variants table {
    width: 100%; }
    @media screen and (min-width: 0px) and (max-width: 699px) {
      .field-prod-variants table {
        display: none; } }
    @media screen and (min-width: 700px) {
      .field-prod-variants table {
        display: table; } }
    .field-prod-variants table thead {
      background-color: #000;
      color: #FFF; }
    .field-prod-variants table th {
      padding: 2px;
      border-bottom: 0 none;
      font-weight: normal; }
    .field-prod-variants table tbody tr {
      background-color: #FFF;
      border-bottom: 1px solid #AAA; }
    .field-prod-variants table td {
      padding: 5px 2px; }
      .field-prod-variants table td.field_prod_variants_eulumdat {
        font-size: 21px;
        padding: 1px 2px 0px 2px; }
  @media screen and (min-width: 0px) and (max-width: 699px) {
    .field-prod-variants table.stacktable {
      display: table; } }
  @media screen and (min-width: 700px) {
    .field-prod-variants table.stacktable {
      display: none; } }
  .field-prod-variants table.stacktable tbody tr {
    border-bottom: 0 none; }
  .field-prod-variants table.stacktable .st-head-row {
    color: #000;
    border: 4px solid #FFF;
    border-width: 32px 0 4px 0;
    padding: 7px 3px; }
  .field-prod-variants table.stacktable .st-head-row-main {
    display: none; }
  .field-prod-variants table.stacktable td {
    padding: 1px 3px; }

.field_prod_variants_eulumdat {
  text-align: center; }

.node-front-subpage .field-hsp-headline {
  font-size: 120%;
  margin-top: 2em;
  line-height: 1.2; }

.related-products-item {
  margin-bottom: 15px; }
  @media screen and (min-width: 0px) and (max-width: 699px) {
    .related-products-item {
      float: left;
      display: block;
      margin-right: 2.35765%;
      width: 48.82117%; }
      .related-products-item:last-child {
        margin-right: 0; }
      .related-products-item:nth-child(2n) {
        margin-right: 0; }
      .related-products-item:nth-child(2n+1) {
        clear: left; } }
  @media screen and (min-width: 700px) and (max-width: 989px) {
    .related-products-item {
      float: left;
      display: block;
      margin-right: 2.35765%;
      width: 31.76157%; }
      .related-products-item:last-child {
        margin-right: 0; }
      .related-products-item:nth-child(3n) {
        margin-right: 0; }
      .related-products-item:nth-child(3n+1) {
        clear: left; } }
  @media screen and (min-width: 990px) {
    .related-products-item {
      float: left;
      display: block;
      margin-right: 2.35765%;
      width: 23.23176%; }
      .related-products-item:last-child {
        margin-right: 0; }
      .related-products-item:nth-child(4n) {
        margin-right: 0; }
      .related-products-item:nth-child(4n+1) {
        clear: left; } }
  .related-products-item img {
    width: 100%; }

.related-products-item-title {
  text-transform: uppercase; }

.field-news-category-wrapper {
  text-align: center;
  display: block;
  position: relative;
  z-index: 2; }
  .field-news-category-wrapper:before {
    z-index: 1;
    content: '';
    display: block;
    height: 1px;
    width: 100%;
    position: absolute;
    top: 50%;
    left: 0;
    border-top: 1px solid #000; }

.field-news-category {
  display: inline-block;
  background: #FFF;
  position: relative;
  z-index: 2;
  padding: 0 0.5em;
  font-size: 120%;
  text-transform: uppercase; }

.node-news h1 {
  font-size: 180%;
  color: #e41513;
  text-align: center;
  margin: 0.5em 0; }

.node-news .field-body {
  font-size: 18px; }

.node-news-readmore {
  text-align: center;
  display: block;
  position: relative;
  z-index: 2;
  margin: 3em 0; }
  .node-news-readmore:before {
    z-index: 1;
    content: '';
    display: block;
    height: 1px;
    width: 100%;
    position: absolute;
    top: 50%;
    left: 0;
    border-top: 1px solid #00aacd; }
  .node-news-readmore span {
    color: #00aacd;
    display: inline-block;
    background: #FFF;
    position: relative;
    z-index: 2;
    padding: 0 0.5em;
    font-size: 120%;
    text-transform: uppercase; }

.news-list {
  overflow: auto;
  margin-top: 3em; }

.news-list-item {
  margin-bottom: 4.5em; }
  @media screen and (min-width: 0px) and (max-width: 699px) {
    .news-list-item {
      float: left;
      display: block;
      margin-right: 38.19821%;
      width: 100%; }
      .news-list-item:last-child {
        margin-right: 0; }
      .news-list-item:nth-child(1n) {
        margin-right: 0; }
      .news-list-item:nth-child(1n+1) {
        clear: left; } }
  @media screen and (min-width: 700px) and (max-width: 989px) {
    .news-list-item {
      float: left;
      display: block;
      margin-right: 4.82916%;
      width: 47.58542%; }
      .news-list-item:last-child {
        margin-right: 0; }
      .news-list-item:nth-child(2n) {
        margin-right: 0; }
      .news-list-item:nth-child(2n+1) {
        clear: left; } }
  @media screen and (min-width: 990px) {
    .news-list-item {
      float: left;
      display: block;
      margin-right: 2.35765%;
      width: 31.76157%; }
      .news-list-item:last-child {
        margin-right: 0; }
      .news-list-item:nth-child(3n) {
        margin-right: 0; }
      .news-list-item:nth-child(3n+1) {
        clear: left; } }
  @media screen and (min-width: 0px) and (max-width: 699px) {
    .news-list-related .news-list-item {
      float: left;
      display: block;
      margin-right: 38.19821%;
      width: 100%; }
      .news-list-related .news-list-item:last-child {
        margin-right: 0; }
      .news-list-related .news-list-item:nth-child(1n) {
        margin-right: 0; }
      .news-list-related .news-list-item:nth-child(1n+1) {
        clear: left; } }
  @media screen and (min-width: 700px) and (max-width: 989px) {
    .news-list-related .news-list-item {
      float: left;
      display: block;
      margin-right: 4.82916%;
      width: 47.58542%; }
      .news-list-related .news-list-item:last-child {
        margin-right: 0; }
      .news-list-related .news-list-item:nth-child(2n) {
        margin-right: 0; }
      .news-list-related .news-list-item:nth-child(2n+1) {
        clear: left; } }
  @media screen and (min-width: 990px) {
    .news-list-related .news-list-item {
      float: left;
      display: block;
      margin-right: 2.35765%;
      width: 31.76157%; }
      .news-list-related .news-list-item:last-child {
        margin-right: 0; }
      .news-list-related .news-list-item:nth-child(3n) {
        margin-right: 0; }
      .news-list-related .news-list-item:nth-child(3n+1) {
        clear: left; } }

.news-list-item-category {
  text-align: center;
  display: block;
  position: relative;
  z-index: 2; }
  .news-list-item-category:before {
    z-index: 1;
    content: '';
    display: block;
    height: 1px;
    width: 100%;
    position: absolute;
    top: 50%;
    left: 0;
    border-top: 1px solid #000; }

.news-list-item-category-title {
  background: #FFF;
  padding: 0 0.5em;
  position: relative;
  z-index: 3;
  font-size: 120%;
  text-transform: uppercase; }

.news-list-item-title a {
  margin-top: 0.35em;
  font-size: 180%;
  line-height: 1.2em;
  display: block;
  text-align: center;
  color: #e41513;
  background-color: #FFF;
  padding: 0 5px;
  margin-bottom: 0.4em; }

.news-list-item-text {
  text-align: justify;
  font-size: 110%;
  /** **/
  line-height: 1.5em; }
  .news-list-item-text p {
    margin-bottom: 0; }
  .news-list-item-text a {
    color: #00aacd; }

.news-list-related .pager {
  margin-top: -2em;
  margin-bottom: 2em;
  text-align: center; }
  .news-list-related .pager li {
    display: inline-block; }
    .news-list-related .pager li a {
      padding: 20px; }
  .news-list-related .pager .ellipsis {
    display: none; }

.contact-person-block {
  position: fixed;
  bottom: 0px;
  right: 0;
  z-index: 960;
  width: 300px;
  background: #FFF;
  clear: both;
  overflow: hidden;
  box-shadow: 0 0 1px rgba(0, 0, 0, 0.3);
  -webkit-transition: 0.1s all linear;
  -moz-transition: 0.1s all linear;
  transition: 0.1s all linear;
  -webkit-transform: translateY(150px);
  -moz-transform: translateY(150px);
  -ms-transform: translateY(150px);
  -o-transform: translateY(150px);
  transform: translateY(150px); }
  @media screen and (min-width: 0px) and (max-width: 989px) {
    .contact-person-block {
      position: relative;
      width: 100%;
      border: 0px solid #000;
      box-shadow: none;
      padding-top: 20px;
      -webkit-transform: translateY(0px);
      -moz-transform: translateY(0px);
      -ms-transform: translateY(0px);
      -o-transform: translateY(0px);
      transform: translateY(0px); } }

.contact-person-block--open {
  -webkit-transform: translateY(0px);
  -moz-transform: translateY(0px);
  -ms-transform: translateY(0px);
  -o-transform: translateY(0px);
  transform: translateY(0px); }
  .contact-person-block--open .contact-person-block-button {
    -webkit-transform: rotate(0deg);
    -moz-transform: rotate(0deg);
    -ms-transform: rotate(0deg);
    -o-transform: rotate(0deg);
    transform: rotate(0deg); }

.contact-person-block-title {
  background: #00aacd;
  color: #FFF;
  padding: 0 0 0 15px;
  height: 40px;
  line-height: 40px;
  display: block;
  cursor: pointer;
  position: relative; }
  @media screen and (min-width: 0px) and (max-width: 989px) {
    .contact-person-block-title {
      background: #FFF;
      color: #000;
      padding: 0 0 5px 0;
      border-bottom: 1px solid #000;
      margin-bottom: 10px;
      margin-top: 10px; } }

.contact-person-block-image {
  float: left;
  width: 100px;
  height: auto;
  margin: 15px 0 15px 15px; }
  @media screen and (min-width: 0px) and (max-width: 989px) {
    .contact-person-block-image {
      margin-left: 0px;
      margin-top: 0; } }

.contact-person-block-details {
  margin-left: 130px;
  margin-top: 15px; }
  @media screen and (min-width: 0px) and (max-width: 989px) {
    .contact-person-block-details {
      margin-top: 0;
      margin-left: 115px; } }

.contact-person-block-button {
  position: absolute;
  top: 5px;
  right: 20px;
  color: #FFF;
  outline: 0 none;
  -webkit-transform: rotate(180deg);
  -moz-transform: rotate(180deg);
  -ms-transform: rotate(180deg);
  -o-transform: rotate(180deg);
  transform: rotate(180deg);
  -webkit-transform-origin: center 17px;
  -moz-transform-origin: center 17px;
  -ms-transform-origin: center 17px;
  -o-transform-origin: center 17px;
  transform-origin: center 17px;
  display: block; }
  @media screen and (min-width: 0px) and (max-width: 989px) {
    .contact-person-block-button {
      display: none; } }
  .contact-person-block-button:link, .contact-person-block-button:hover, .contact-person-block-button:active, .contact-person-block-button:visited {
    color: #EEE;
    outline: 0 none; }

.newsletter-block {
  -webkit-transition: 0.1s all linear;
  -moz-transition: 0.1s all linear;
  transition: 0.1s all linear;
  -webkit-transform: translateX(260px);
  -moz-transform: translateX(260px);
  -ms-transform: translateX(260px);
  -o-transform: translateX(260px);
  transform: translateX(260px);
  background: #fff;
  height: 164px;
  padding-left: 40px;
  position: fixed;
  top: 360px;
  right: 0;
  z-index: 960;
  width: 300px;
  clear: both;
  box-shadow: 0 0 1px rgba(0, 0, 0, 0.3); }
  @media screen and (min-width: 0px) and (max-width: 989px) {
    .newsletter-block {
      position: relative;
      width: 100%;
      border: 0px solid #000;
      box-shadow: none;
      padding-top: 20px;
      -webkit-transform: translateY(0px);
      -moz-transform: translateY(0px);
      -ms-transform: translateY(0px);
      -o-transform: translateY(0px);
      transform: translateY(0px); } }
  .newsletter-block__title {
    -webkit-transform: rotate(-90deg);
    -moz-transform: rotate(-90deg);
    -ms-transform: rotate(-90deg);
    -o-transform: rotate(-90deg);
    transform: rotate(-90deg);
    -webkit-transform-origin: 62px 102px;
    -moz-transform-origin: 62px 102px;
    -ms-transform-origin: 62px 102px;
    -o-transform-origin: 62px 102px;
    transform-origin: 62px 102px;
    background: #00aacd;
    color: #FFF;
    cursor: pointer;
    display: block;
    height: 40px;
    line-height: 40px;
    padding: 0 0 0 15px;
    position: absolute;
    width: 164px; }
    @media screen and (min-width: 0px) and (max-width: 989px) {
      .newsletter-block__title {
        background: #FFF;
        color: #000;
        padding: 0 0 5px 0;
        border-bottom: 1px solid #000;
        margin-bottom: 10px;
        margin-top: 10px; } }
  .newsletter-block .button {
    background: linear-gradient(to bottom, #e1e1e1 0%, rgba(0, 0, 0, 0) 100%);
    border: 1px solid #b0b0b0;
    display: inline-block;
    line-height: 1;
    margin: 15px 0 0;
    padding: 6px 10px; }

.newsletter-block__content {
  padding: 15px; }
  @media screen and (min-width: 0px) and (max-width: 989px) {
    .newsletter-block__content {
      margin-top: 0;
      margin-left: 115px; } }

.newsletter-block--open {
  -webkit-transform: translateY(0px);
  -moz-transform: translateY(0px);
  -ms-transform: translateY(0px);
  -o-transform: translateY(0px);
  transform: translateY(0px); }
  .newsletter-block--open .newsletter-block__bnt {
    -webkit-transform: rotate(0deg);
    -moz-transform: rotate(0deg);
    -ms-transform: rotate(0deg);
    -o-transform: rotate(0deg);
    transform: rotate(0deg); }

.newsletter-block__bnt {
  -webkit-transform: rotate(180deg);
  -moz-transform: rotate(180deg);
  -ms-transform: rotate(180deg);
  -o-transform: rotate(180deg);
  transform: rotate(180deg);
  color: #FFF;
  display: block;
  height: 18px;
  outline: 0 none;
  position: absolute;
  right: 10px;
  top: 10px;
  width: 22px; }
  .newsletter-block__bnt:before {
    display: block;
    position: absolute;
    left: 0;
    right: 0; }
  @media screen and (min-width: 0px) and (max-width: 989px) {
    .newsletter-block__bnt {
      display: none; } }
  .newsletter-block__bnt:link, .newsletter-block__bnt:hover, .newsletter-block__bnt:active, .newsletter-block__bnt:visited {
    color: #EEE;
    outline: 0 none; }

.menu-references-item {
  margin-bottom: 20px; }
  @media screen and (min-width: 990px) {
    .menu-references-item {
      float: left;
      display: block;
      margin-right: 2.35765%;
      width: 48.82117%; }
      .menu-references-item:last-child {
        margin-right: 0; }
      .menu-references-item:nth-child(2n) {
        margin-right: 0; }
      .menu-references-item:nth-child(2n+1) {
        clear: left; } }
  @media screen and (min-width: 700px) and (max-width: 989px) {
    .menu-references-item {
      float: left;
      display: block;
      margin-right: 2.35765%;
      width: 48.82117%; }
      .menu-references-item:last-child {
        margin-right: 0; }
      .menu-references-item:nth-child(2n) {
        margin-right: 0; }
      .menu-references-item:nth-child(2n+1) {
        clear: left; } }
  @media screen and (min-width: 0px) and (max-width: 699px) {
    .menu-references-item {
      float: left;
      display: block;
      margin-right: 2.35765%;
      width: 100%;
      margin-bottom: 10px; }
      .menu-references-item:last-child {
        margin-right: 0; }
      .menu-references-item:nth-child(1n) {
        margin-right: 0; }
      .menu-references-item:nth-child(1n+1) {
        clear: left; } }

.menu-references-item-link {
  display: block;
  padding-bottom: 66%;
  position: relative;
  width: 100%;
  overflow: hidden; }

.menu-references-item-title {
  position: absolute;
  top: 0;
  left: 0;
  background-color: rgba(0, 170, 205, 0.8);
  width: 100%;
  color: #FFF;
  text-transform: uppercase;
  font-size: 170%;
  padding: 4px 8px;
  text-overflow: ellipsis;
  white-space: nowrap;
  overflow: hidden; }
  @media screen and (min-width: 0px) and (max-width: 699px) {
    .menu-references-item-title {
      font-size: 120%; } }

.menu-references-item-title--mini {
  font-size: 100%;
  padding: 2px 6px; }

.menu-references-item-image,
.menu-references-item-image-hover {
  position: absolute;
  top: 0;
  left: 0;
  padding-bottom: 66%;
  width: 100%;
  max-width: 100%; }

.menu-references-item-image-hover {
  -webkit-transition: opacity 0.5s ease-out;
  -moz-transition: opacity 0.5s ease-out;
  transition: opacity 0.5s ease-out;
  opacity: 0; }
  a:hover .menu-references-item-image-hover {
    opacity: 1; }

.node-type-reference {
  margin-top: 25px; }
  .node-type-reference .page-banner img {
    width: 100%;
    height: auto; }

.node-type-reference .group-left {
  margin-bottom: 100px; }
  @media screen and (min-width: 0px) and (max-width: 699px) {
    .node-type-reference .group-left {
      width: 100%; }
      .node-type-reference .group-left::after {
        clear: both;
        content: "";
        display: table; } }
  @media screen and (min-width: 700px) and (max-width: 989px) {
    .node-type-reference .group-left {
      width: 50%; } }
  @media screen and (min-width: 990px) {
    .node-type-reference .group-left {
      width: 50%; } }

.node-type-reference .group-right {
  position: relative;
  margin-bottom: 100px; }
  @media screen and (min-width: 0px) and (max-width: 699px) {
    .node-type-reference .group-right {
      width: 100%; }
      .node-type-reference .group-right::after {
        clear: both;
        content: "";
        display: table; } }
  @media screen and (min-width: 700px) and (max-width: 989px) {
    .node-type-reference .group-right {
      width: 48%;
      margin-left: 2%; } }
  @media screen and (min-width: 990px) {
    .node-type-reference .group-right {
      width: 48%;
      margin-left: 2%; } }

.node-type-reference .group-left > [class*=field] {
  line-height: 1.3; }

.node-type-reference .group-left .field-label {
  clear: both;
  width: 100px;
  float: left; }

.node-type-reference .group-left .inline {
  margin-left: 100px; }

.node-type-reference .group-header {
  margin-bottom: 30px; }
  .node-type-reference .group-header .field-label:before {
    content: '/';
    display: inline-block; }
  .node-type-reference .group-header .field-label:nth-child(2):before {
    content: '';
    display: none; }
  .node-type-reference .group-header > [class*=field-ref] {
    display: inline; }

.node-type-reference .group-right .field-label,
.node-type-reference .group-right .block-title,
.node-type-reference .group-left .block-title,
.node-type-reference .group-left h3.field-label,
.node-type-reference .field-info h3,
.node-type-reference .field-body label {
  display: block;
  width: 100%;
  margin-bottom: 15px;
  margin-top: 30px;
  color: #e41513;
  font-size: 16px;
  text-transform: uppercase;
  line-height: 1.3; }

.node-type-reference .field-body {
  margin-top: 15px;
  clear: both; }

.node-type-reference .field-ref-images {
  margin-bottom: 10px;
  display: none;
  position: relative; }
  .node-type-reference .field-ref-images:nth-child(1), .node-type-reference .field-ref-images:nth-child(2), .node-type-reference .field-ref-images:nth-child(3), .node-type-reference .field-ref-images:nth-child(4), .node-type-reference .field-ref-images:nth-child(5), .node-type-reference .field-ref-images:nth-child(6) {
    display: block; }
  .node-type-reference .field-ref-images a {
    outline: 0; }

.node-type-reference .field-referenced-products {
  max-width: 1120px;
  margin-left: auto;
  margin-right: auto; }
  .node-type-reference .field-referenced-products::after {
    clear: both;
    content: "";
    display: table; }

.node-type-reference .field-referenced-products-image {
  margin-bottom: 30px; }
  @media screen and (min-width: 0px) and (max-width: 699px) {
    .node-type-reference .field-referenced-products-image {
      float: left;
      display: block;
      margin-right: 2.35765%;
      width: 48.82117%; }
      .node-type-reference .field-referenced-products-image:last-child {
        margin-right: 0; }
      .node-type-reference .field-referenced-products-image:nth-child(2n) {
        margin-right: 0; }
      .node-type-reference .field-referenced-products-image:nth-child(2n+1) {
        clear: left; } }
  @media screen and (min-width: 700px) and (max-width: 989px) {
    .node-type-reference .field-referenced-products-image {
      float: left;
      display: block;
      margin-right: 2.35765%;
      width: 48.82117%; }
      .node-type-reference .field-referenced-products-image:last-child {
        margin-right: 0; }
      .node-type-reference .field-referenced-products-image:nth-child(2n) {
        margin-right: 0; }
      .node-type-reference .field-referenced-products-image:nth-child(2n+1) {
        clear: left; } }
  @media screen and (min-width: 990px) {
    .node-type-reference .field-referenced-products-image {
      float: left;
      display: block;
      margin-right: 2.35765%;
      width: 48.82117%; }
      .node-type-reference .field-referenced-products-image:last-child {
        margin-right: 0; }
      .node-type-reference .field-referenced-products-image:nth-child(2n) {
        margin-right: 0; }
      .node-type-reference .field-referenced-products-image:nth-child(2n+1) {
        clear: left; } }

.node-type-reference .field-slideshow-controls {
  position: absolute;
  top: 50%;
  z-index: 20;
  transform: translateY(-50px);
  width: 100%; }

.node-type-reference .field-slideshow-controls-prev,
.node-type-reference .field-slideshow-controls-next {
  position: absolute;
  font-size: 400%;
  color: rgba(255, 255, 255, 0.8);
  text-shadow: 0px 0px 5px rgba(0, 0, 0, 0.6); }
  .node-type-reference .field-slideshow-controls-prev:hover,
  .node-type-reference .field-slideshow-controls-next:hover {
    color: #FFF; }

.node-type-reference .field-slideshow-controls-prev {
  left: 0px;
  top: 0; }

.node-type-reference .field-slideshow-controls-next {
  right: 0px;
  top: 0;
  transform: scaleX(-1); }

.node-type-reference .field-more-references {
  margin-top: 40px;
  position: relative;
  text-align: center; }
  .node-type-reference .field-more-references:before {
    z-index: 1;
    content: '';
    display: block;
    height: 1px;
    width: 100%;
    position: absolute;
    top: 50%;
    left: 0;
    border-top: 1px solid #00aacd; }
  .node-type-reference .field-more-references .title {
    display: inline;
    padding: 0 0.5em;
    z-index: 3;
    font-size: 16px;
    text-transform: uppercase;
    color: #00aacd;
    background: #FFF;
    position: relative; }
  .node-type-reference .field-more-references .view-reference-category {
    text-align: left; }

.references-list {
  margin-top: 20px; }

.references-list-item {
  margin-bottom: 25px;
  position: relative;
  height: 0;
  padding-bottom: 30%;
  overflow: hidden; }
  @media screen and (min-width: 0px) and (max-width: 699px) {
    .references-list-item {
      float: left;
      display: block;
      margin-right: 2.35765%;
      width: 100%;
      margin-bottom: 10px;
      padding-bottom: 75%; }
      .references-list-item:last-child {
        margin-right: 0; }
      .references-list-item:nth-child(1n) {
        margin-right: 0; }
      .references-list-item:nth-child(1n+1) {
        clear: left; } }
  @media screen and (min-width: 700px) and (max-width: 989px) {
    .references-list-item {
      float: left;
      display: block;
      margin-right: 2.35765%;
      width: 48.82117%; }
      .references-list-item:last-child {
        margin-right: 0; }
      .references-list-item:nth-child(2n) {
        margin-right: 0; }
      .references-list-item:nth-child(2n+1) {
        clear: left; } }
  @media screen and (min-width: 990px) {
    .references-list-item {
      float: left;
      display: block;
      margin-right: 2.35765%;
      width: 48.82117%; }
      .references-list-item:last-child {
        margin-right: 0; }
      .references-list-item:nth-child(2n) {
        margin-right: 0; }
      .references-list-item:nth-child(2n+1) {
        clear: left; } }

.references-list-item-title {
  position: relative;
  z-index: 2;
  margin-bottom: 10px;
  text-transform: uppercase;
  font-size: 180%;
  color: #FFF;
  background-color: rgba(0, 170, 205, 0.9);
  padding: 6px;
  width: auto;
  display: inline-block;
  line-height: 1; }
  @media screen and (min-width: 0px) and (max-width: 699px) {
    .references-list-item-title {
      margin-bottom: 6px; } }
  .references-list-item-title a {
    color: #FFF; }

.references-list-item-link a {
  position: absolute;
  top: 0;
  left: 0;
  z-index: 3;
  opacity: 0;
  width: 100%;
  height: 100%;
  display: block; }

.references-list-item-image {
  position: absolute;
  top: 0;
  left: 0;
  z-index: -1;
  width: 100%;
  -webkit-transition: opacity 0.2s linear;
  -moz-transition: opacity 0.2s linear;
  transition: opacity 0.2s linear; }
  .references-list-item-image img {
    width: 100%; }
  .references-list-item:hover .references-list-item-image {
    opacity: .2; }

.references-list-item-text {
  margin: 10px 8px 8px 8px;
  opacity: 0;
  -webkit-transition: opacity 0.2s linear;
  -moz-transition: opacity 0.2s linear;
  transition: opacity 0.2s linear; }
  @media screen and (min-width: 0px) and (max-width: 699px) {
    .references-list-item-text {
      display: none; } }
  .references-list-item:hover .references-list-item-text {
    opacity: 1; }

.references-list-item-floor-space,
.references-list-item-business,
.references-list-item-year,
.references-list-item-luminaires,
.references-list-item-location {
  margin-left: 8px;
  opacity: 0;
  -webkit-transition: opacity 0.2s linear;
  -moz-transition: opacity 0.2s linear;
  transition: opacity 0.2s linear; }
  .references-list-item-floor-space > *,
  .references-list-item-business > *,
  .references-list-item-year > *,
  .references-list-item-luminaires > *,
  .references-list-item-location > * {
    display: inline-block; }
  .references-list-item-floor-space > *:first-child,
  .references-list-item-business > *:first-child,
  .references-list-item-year > *:first-child,
  .references-list-item-luminaires > *:first-child,
  .references-list-item-location > *:first-child {
    min-width: 60px;
    vertical-align: top; }
  .references-list-item:hover .references-list-item-floor-space, .references-list-item:hover
  .references-list-item-business, .references-list-item:hover
  .references-list-item-year, .references-list-item:hover
  .references-list-item-luminaires, .references-list-item:hover
  .references-list-item-location {
    opacity: 1; }

.references-filters {
  width: 100%;
  position: relative;
  z-index: 10;
  background-color: #EEE; }

.references-filters > .links {
  max-width: 1200px;
  margin-left: auto;
  margin-right: auto;
  padding: 0 40px 0 40px; }
  @media screen and (min-width: 0px) and (max-width: 699px) {
    .references-filters > .links {
      padding: 0; } }

.references-filters li {
  display: block; }
  @media screen and (min-width: 700px) {
    .references-filters li {
      display: inline-block; } }

.references-filters li a {
  display: inline-block;
  width: 100%;
  text-align: center;
  padding: 10px; }
  @media screen and (min-width: 700px) {
    .references-filters li a {
      padding: 0 7px 0 7px;
      line-height: 49px;
      height: 49px;
      text-align: left;
      border-bottom: 0 none; } }
  @media screen and (min-width: 0px) and (max-width: 699px) {
    .references-filters li a {
      background-color: #bfeaf3;
      border-bottom: 1px solid #7fd4e7; } }

.references-filters li.active a {
  background-color: #00aacd;
  color: #FFF;
  position: relative; }
  @media screen and (min-width: 0px) and (max-width: 699px) {
    .references-filters li.active a {
      color: #333; } }
  @media screen and (min-width: 700px) {
    .references-filters li.active a:before {
      color: #FFF;
      font-size: 16px;
      line-height: 5px;
      bottom: -2px;
      left: 50%;
      margin-left: -8px;
      display: block;
      position: absolute;
      font-family: "lamp83-icons" !important;
      content: "i"; } }

.references-filters-toggle {
  text-align: center;
  text-transform: uppercase;
  display: block;
  padding: 5px 0 15px 0;
  background-color: #bfeaf3;
  border-bottom: 1px solid #7fd4e7;
  position: relative;
  cursor: pointer; }
  .references-filters-toggle:before {
    font-family: "lamp83-icons" !important;
    content: "a";
    text-transform: none;
    font-size: 16px;
    margin-left: -8px;
    display: block;
    position: absolute;
    left: 50%;
    bottom: 1px; }

.node-page--image .group-left {
  float: left;
  display: block;
  margin-right: 3.57866%;
  width: 61.158%; }
  .node-page--image .group-left:last-child {
    margin-right: 0; }
  @media screen and (min-width: 0px) and (max-width: 699px) {
    .node-page--image .group-left {
      float: left;
      display: block;
      margin-right: 38.19821%;
      width: 100%;
      margin-right: 0; }
      .node-page--image .group-left:last-child {
        margin-right: 0; } }

.node-page--image .group-right {
  float: left;
  display: block;
  margin-right: 3.57866%;
  width: 35.26334%;
  margin-right: 0; }
  .node-page--image .group-right:last-child {
    margin-right: 0; }
  @media screen and (min-width: 0px) and (max-width: 699px) {
    .node-page--image .group-right {
      float: left;
      display: block;
      margin-right: 38.19821%;
      width: 100%;
      margin-right: 0; }
      .node-page--image .group-right:last-child {
        margin-right: 0; } }

.node-page--image .field-body h4 {
  margin-top: 35px;
  margin-bottom: 15px; }

.field-page-attachments {
  margin-top: 25px; }

.field-page-attachments-link {
  display: block;
  height: 30px; }
  .field-page-attachments-link span {
    display: inline-block;
    position: relative;
    top: -10px; }
  .field-page-attachments-link:before {
    font-size: 30px; }

.stacktable {
  width: 100%;
  display: none; }
  @media screen and (min-width: 0px) and (max-width: 699px) {
    .stacktable {
      display: block; } }
  @media screen and (min-width: 0px) and (max-width: 699px) {
    .stacktable td {
      border-bottom: 1px solid #EEE; } }

.st-head-row.st-head-row-main {
  font-size: 1.5em;
  padding-top: 0; }

.st-key {
  text-align: left;
  padding-right: 1%; }

.tooltipster-lamp83 {
  border-radius: 5px;
  background: #FFFFFF;
  color: #FFFFFF;
  -webkit-transform: translateZ(0);
  -moz-transform: translateZ(0);
  -ms-transform: translateZ(0);
  -o-transform: translateZ(0);
  transform: translateZ(0); }

.tooltipster-lamp83 .tooltipster-content {
  font-size: 14px;
  line-height: 16px;
  padding: 5px 10px;
  background-color: #000; }

.tooltipster-lamp83 .tooltipster-arrow > span {
  border-top-color: #000 !important; }

@font-face {
  font-family: "lamp83-icons";
  src: url("../fonts/lamp83-icons.eot");
  src: url("../fonts/lamp83-icons.eot?#iefix") format("embedded-opentype"), url("../fonts/lamp83-icons.woff") format("woff"), url("../fonts/lamp83-icons.ttf") format("truetype"), url("../fonts/lamp83-icons.svg#lamp83-icons") format("svg");
  font-weight: normal;
  font-style: normal; }

/**
 * CUSTOMIZED TO CREATE ABSTRACT BASE ICON CLASS !!!!
 */
[data-icon]:before {
  font-family: "lamp83-icons" !important;
  content: attr(data-icon);
  font-style: normal !important;
  font-weight: normal !important;
  font-variant: normal !important;
  text-transform: none !important;
  speak: none;
  line-height: 1;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale; }

[class^="icon-l83-"]:before,
[class*=" icon-l83-"]:before {
  font-family: "lamp83-icons" !important;
  font-style: normal !important;
  font-weight: normal !important;
  font-variant: normal !important;
  text-transform: none !important;
  speak: none;
  line-height: 1;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale; }

.icon-l83-chevron-down:before {
  content: "a"; }

.icon-l83-chevron-left:before {
  content: "b"; }

.icon-l83-chevron-right:before {
  content: "c"; }

.icon-l83-chevron-up:before {
  content: "d"; }

.icon-l83-ios-search-strong:before {
  content: "f"; }

.icon-l83-ios-arrow-down:before {
  content: "g"; }

.icon-l83-ios-arrow-up:before {
  content: "h"; }

.icon-l83-arrow-up-b:before {
  content: "i"; }

.icon-l83-android-close:before {
  content: "e"; }

.icon-l83-ios-arrow-left:before {
  content: "j"; }

.icon-l83-ios-arrow-back:before {
  content: "k"; }

.icon-l83-document-text:before {
  content: "l"; }

.icon-l83-ios-arrow-right:before {
  content: "m"; }

#user-login > div {
  margin-top: 15px; }

#user-login label {
  margin-bottom: 3px;
  color: #444; }

#user-login small {
  display: none; }

#user-login .login-password {
  color: #888;
  margin: 10px 0;
  display: block;
  font-size: 80%; }
  #user-login .login-password:before {
    content: 'c';
    font-size: 8px;
    display: inline-block;
    margin-right: 1px;
    font-family: "lamp83-icons"; }

.contact-page-form {
  float: left;
  display: block;
  margin-right: 3.57866%;
  width: 61.158%; }
  .contact-page-form:last-child {
    margin-right: 0; }
  @media screen and (min-width: 0px) and (max-width: 699px) {
    .contact-page-form {
      float: left;
      display: block;
      margin-right: 38.19821%;
      width: 100%;
      margin-right: 0; }
      .contact-page-form:last-child {
        margin-right: 0; } }
  .contact-page-form input, .contact-page-form textarea, .contact-page-form select {
    width: 100%; }
  .contact-page-form .form-item, .contact-page-form .form-actions {
    margin-top: 1.42em;
    margin-bottom: 1.42em; }
  .contact-page-form .grippie {
    display: none; }
  .contact-page-form .webform-component--shipping-address {
    border-width: 1px 0px 0px;
    padding: 0px;
    margin: 0; }
    .contact-page-form .webform-component--shipping-address legend {
      background: #FFF;
      display: block;
      padding-right: 4px; }
  .contact-page-form .webform-component--shipping-address--catalog-order-name {
    float: left;
    display: block;
    margin-right: 2.35765%;
    width: 48.82117%; }
    .contact-page-form .webform-component--shipping-address--catalog-order-name:last-child {
      margin-right: 0; }
    @media screen and (min-width: 0px) and (max-width: 699px) {
      .contact-page-form .webform-component--shipping-address--catalog-order-name {
        float: left;
        display: block;
        margin-right: 38.19821%;
        width: 100%; }
        .contact-page-form .webform-component--shipping-address--catalog-order-name:last-child {
          margin-right: 0; } }
  .contact-page-form .webform-component--shipping-address--catalog-order-street {
    float: left;
    display: block;
    margin-right: 2.35765%;
    width: 48.82117%;
    margin-right: 0; }
    .contact-page-form .webform-component--shipping-address--catalog-order-street:last-child {
      margin-right: 0; }
    @media screen and (min-width: 0px) and (max-width: 699px) {
      .contact-page-form .webform-component--shipping-address--catalog-order-street {
        float: left;
        display: block;
        margin-right: 38.19821%;
        width: 100%; }
        .contact-page-form .webform-component--shipping-address--catalog-order-street:last-child {
          margin-right: 0; } }
  .contact-page-form .webform-component--shipping-address--catalog-order-zip-code {
    float: left;
    display: block;
    margin-right: 2.35765%;
    width: 31.76157%; }
    .contact-page-form .webform-component--shipping-address--catalog-order-zip-code:last-child {
      margin-right: 0; }
    @media screen and (min-width: 0px) and (max-width: 699px) {
      .contact-page-form .webform-component--shipping-address--catalog-order-zip-code {
        float: left;
        display: block;
        margin-right: 38.19821%;
        width: 100%; }
        .contact-page-form .webform-component--shipping-address--catalog-order-zip-code:last-child {
          margin-right: 0; } }
  .contact-page-form .webform-component--shipping-address--catalog-order-city {
    float: left;
    display: block;
    margin-right: 2.35765%;
    width: 31.76157%; }
    .contact-page-form .webform-component--shipping-address--catalog-order-city:last-child {
      margin-right: 0; }
    @media screen and (min-width: 0px) and (max-width: 699px) {
      .contact-page-form .webform-component--shipping-address--catalog-order-city {
        float: left;
        display: block;
        margin-right: 38.19821%;
        width: 100%; }
        .contact-page-form .webform-component--shipping-address--catalog-order-city:last-child {
          margin-right: 0; } }
  .contact-page-form .webform-component--shipping-address--catalog-order-country {
    float: left;
    display: block;
    margin-right: 2.35765%;
    width: 31.76157%;
    margin-right: 0; }
    .contact-page-form .webform-component--shipping-address--catalog-order-country:last-child {
      margin-right: 0; }
    @media screen and (min-width: 0px) and (max-width: 699px) {
      .contact-page-form .webform-component--shipping-address--catalog-order-country {
        float: left;
        display: block;
        margin-right: 38.19821%;
        width: 100%; }
        .contact-page-form .webform-component--shipping-address--catalog-order-country:last-child {
          margin-right: 0; } }

.contact-page-info {
  float: left;
  display: block;
  margin-right: 3.57866%;
  width: 35.26334%;
  margin-right: 0;
  position: relative;
  padding-top: 35px; }
  .contact-page-info:last-child {
    margin-right: 0; }
  @media screen and (min-width: 0px) and (max-width: 699px) {
    .contact-page-info {
      float: left;
      display: block;
      margin-right: 38.19821%;
      width: 100%; }
      .contact-page-info:last-child {
        margin-right: 0; } }

.contact-page-map {
  height: 300px;
  background: url("../img/gmaps.png");
  background-size: cover;
  display: flex;
  justify-content: center;
  align-items: center;
  padding: 10px; }
  .contact-page-map h3 {
    cursor: pointer; }
  @media screen and (min-height: 750px) {
    .contact-page-map {
      height: 350px; } }
  @media screen and (min-height: 800px) {
    .contact-page-map {
      height: 400px; } }
  @media screen and (min-height: 1000px) {
    .contact-page-map {
      height: 450px; } }

.contact-page-xing {
  position: absolute;
  right: 0px;
  margin-top: -75px;
  width: 50px;
  height: 50px; }

.leaflet-container a {
  color: #AAA !important; }

.newsletter-signup-form {
  width: 50%; }
  .newsletter-signup-form input[type=text], .newsletter-signup-form select {
    width: 100%; }

.intro-body-text {
  display: block;
  line-height: 1.4;
  max-width: 900px;
  width: 100%;
  text-align: justify;
  font-size: 25px;
  margin: 0 auto;
  padding: 80px; }
  @media screen and (min-width: 0px) and (max-width: 699px) {
    .intro-body-text {
      text-align: left;
      padding: 40px; } }

.intro-body-text-title {
  color: #e41513;
  font-size: 150%;
  text-transform: uppercase; }

.intro-slideshow {
  background: #000; }

.intro-icon-header {
  max-width: 900px;
  width: 100%;
  background-size: 100% auto;
  background-repeat: no-repeat;
  height: 100px;
  margin: 80px auto 40px auto;
  background-position: center center; }
  @media screen and (min-width: 0px) and (max-width: 699px) {
    .intro-icon-header {
      background-size: auto 80%;
      margin: 30px auto 30px auto;
      background-clip: content-box;
      padding: 0 15px; } }

.intro-separator-image {
  width: 100%;
  height: 150px;
  padding-bottom: 0;
  background-size: cover;
  background-attachment: fixed;
  background-repeat: no-repeat;
  background-position: center center;
  position: relative; }
  @media screen and (min-width: 0px) and (max-width: 699px) {
    .intro-separator-image {
      height: 100px;
      background-attachment: inherit; } }
  .intro-separator-image h3 {
    max-width: 900px;
    width: 100%;
    margin: 0 auto;
    font-size: 350%;
    color: #FFF;
    text-transform: uppercase;
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translateY(-50%) translateX(-50%); }
    @media screen and (min-width: 0px) and (max-width: 699px) {
      .intro-separator-image h3 {
        padding-left: 40px; } }
    .intro-separator-image h3 span {
      color: #e41513; }

.field-front-body p {
  max-width: 900px;
  width: 100%;
  margin: 0px auto 200px auto;
  font-size: 18px;
  line-height: 1.5;
  text-align: justify; }
  @media screen and (min-width: 0px) and (max-width: 699px) {
    .field-front-body p {
      text-align: left;
      padding: 0px 15px 0px 15px;
      margin-bottom: 20px; } }

.intro-ticker {
  max-width: 900px;
  margin: 0 auto; }
  .intro-ticker .marquee {
    height: 1.4em;
    margin: 120px auto 20px; }
    .intro-ticker .marquee:before, .intro-ticker .marquee:after {
      content: none; }
  .intro-ticker .marquee-text {
    color: #00aacd; }

body.path-node-21095 footer .marquee-text {
  display: none; }

.field-front-footer {
  max-width: 900px;
  width: 100%;
  margin: 100px auto 100px auto;
  text-align: center;
  font-size: 190%; }
  @media screen and (min-width: 0px) and (max-width: 699px) {
    .field-front-footer {
      padding: 0 15px; } }

.views_slideshow_cycle_main {
  max-width: 100%; }
  .views_slideshow_cycle_main .views-row {
    position: relative; }
  .views_slideshow_cycle_main img {
    display: block; }
  .views_slideshow_cycle_main .field-slfr-slides-image ~ * {
    margin-left: 0px; }
    @media screen and (min-width: 0px) and (max-width: 699px) {
      .views_slideshow_cycle_main .field-slfr-slides-image ~ * {
        margin-left: 0px; } }
  .views_slideshow_cycle_main .field-slfr-slides-title {
    color: #e41513;
    font-size: 450%;
    margin-top: -300px;
    text-transform: uppercase;
    display: inline-block;
    font-size: 160%; }
  .views_slideshow_cycle_main .field-slfr-slides-text {
    text-transform: uppercase;
    color: #FFF;
    font-size: 180%;
    display: block;
    max-width: 650px; }
    @media screen and (min-width: 0px) and (max-width: 699px) {
      .views_slideshow_cycle_main .field-slfr-slides-text {
        font-size: 110%; } }
  .views_slideshow_cycle_main .views-field-field-slfr-slides-link {
    position: absolute;
    bottom: 80px;
    left: 80px;
    margin-right: 80px; }
    .views_slideshow_cycle_main .views-field-field-slfr-slides-link p {
      margin-bottom: 0; }
    @media screen and (min-width: 0px) and (max-width: 699px) {
      .views_slideshow_cycle_main .views-field-field-slfr-slides-link {
        left: 15px;
        margin-right: 15px;
        bottom: 40px; } }
    @media screen and (min-width: 700px) and (max-width: 989px) {
      .views_slideshow_cycle_main .views-field-field-slfr-slides-link {
        left: 40px; } }
  .views_slideshow_cycle_main .field-slfr-slides-linktext {
    display: inline-block;
    font-size: 140%;
    background-color: #e41513;
    color: #FFF;
    text-transform: uppercase;
    padding: 0.2em 0.4em;
    margin-top: 15px; }
    @media screen and (min-width: 0px) and (max-width: 699px) {
      .views_slideshow_cycle_main .field-slfr-slides-linktext {
        font-size: 70%; } }

.widget_pager_bottom {
  position: absolute;
  z-index: 900;
  text-align: center;
  margin-top: -20px;
  left: 50%;
  transform: translateX(-50%) translateY(-100%);
  max-width: 100%; }
  .widget_pager_bottom > * {
    max-width: 100%; }
  .widget_pager_bottom .views_slideshow_pager_field_item {
    display: inline-block;
    margin: 0 5px;
    background: #FFF;
    width: 13px;
    height: 13px;
    font-size: 0px;
    border-radius: 50%;
    transition: 0.2s all linear;
    cursor: pointer; }
    .widget_pager_bottom .views_slideshow_pager_field_item.active {
      background: #e41513; }
    .widget_pager_bottom .views_slideshow_pager_field_item > * {
      display: none; }
  .widget_pager_bottom img {
    display: block; }

.job {
  outline: 0; }

.job-title {
  position: relative;
  padding-left: 1.3em; }
  .job-title a {
    outline: 0; }

.job-title-icon {
  position: absolute;
  left: 0;
  top: 3px;
  display: inline-block; }
  .job-title.opened .job-title-icon {
    transform: rotate(90deg) translateY(10px); }

.job-description {
  display: none;
  margin-left: 30px;
  margin-top: 10px; }

.job-description.opened, .cke_editable .job-description {
  display: block; }

.newsletter-subscription {
  clear: both; }
  .newsletter-subscription .title {
    margin-bottom: 15px;
    padding-top: 45px;
    padding-bottom: 15px;
    border-bottom: 1px solid #000; }
  .newsletter-subscription input {
    margin: 0 0 1.42em 0; }

.menu-business-item {
  display: block;
  margin-bottom: 25px;
  background-repeat: no-repeat;
  background-size: 100% auto; }
  @media screen and (min-width: 0px) and (max-width: 699px) {
    .menu-business-item {
      float: left;
      display: block;
      margin-right: 2.35765%;
      width: 48.82117%;
      margin-bottom: 10px; }
      .menu-business-item:last-child {
        margin-right: 0; }
      .menu-business-item:nth-child(2n) {
        margin-right: 0; }
      .menu-business-item:nth-child(2n+1) {
        clear: left; } }
  @media screen and (min-width: 700px) and (max-width: 989px) {
    .menu-business-item {
      float: left;
      display: block;
      margin-right: 2.35765%;
      width: 23.23176%; }
      .menu-business-item:last-child {
        margin-right: 0; }
      .menu-business-item:nth-child(4n) {
        margin-right: 0; }
      .menu-business-item:nth-child(4n+1) {
        clear: left; } }
  @media screen and (min-width: 990px) {
    .menu-business-item {
      float: left;
      display: block;
      margin-right: 2.35765%;
      width: 23.23176%; }
      .menu-business-item:last-child {
        margin-right: 0; }
      .menu-business-item:nth-child(4n) {
        margin-right: 0; }
      .menu-business-item:nth-child(4n+1) {
        clear: left; } }

.menu-business-item-link {
  height: 0;
  width: 100%;
  padding-bottom: 100%;
  display: block;
  opacity: 1;
  outline: 0 !important;
  -webkit-transition: opacity 0.4s ease-in-out;
  -moz-transition: opacity 0.4s ease-in-out;
  transition: opacity 0.4s ease-in-out;
  background-size: 100% auto;
  background-color: #FFF; }
  .menu-business-item-link:hover {
    opacity: 1; }

.menu-business-item-title {
  margin-top: 5px;
  text-transform: uppercase; }

.menu-business-item--tech {
  background-image: url(../img/business/dist/business-tech.jpg?13); }

.menu-business-item--tech a {
  background-image: url(../img/icons/business-icon-tech.svg);
  opacity: 0; }
  .menu-business-item--tech a:hover {
    opacity: 0.5; }

.menu-business-item--corporate {
  background-image: url(../img/business/dist/business-corporate.jpg?13); }

.menu-business-item--corporate a {
  background-image: url(../img/icons/business-icon-corporate.svg);
  opacity: 0; }
  .menu-business-item--corporate a:hover {
    opacity: 0.5; }

.menu-business-item--glossary {
  background-image: url(../img/business/dist/business-glossary.jpg?13); }

.menu-business-item--glossary a {
  background-image: url(../img/icons/business-icon-glossary.svg);
  opacity: 0; }
  .menu-business-item--glossary a:hover {
    opacity: 0.5; }

.menu-business-item--downloads {
  background-image: url(../img/business/dist/business-downloads.jpg?13); }

.menu-business-item--downloads a {
  background-image: url(../img/icons/business-icon-downloads.svg);
  opacity: 0; }
  .menu-business-item--downloads a:hover {
    opacity: 0.5; }

.menu-business-item--team {
  background-image: url(../img/business/dist/business-team.jpg?13); }

.menu-business-item--team a {
  background-image: url(../img/icons/business-icon-team.svg);
  opacity: 0; }
  .menu-business-item--team a:hover {
    opacity: 0.5; }

.downloads-icon {
  display: block;
  padding-bottom: 14px; }

.downloads-icon:before {
  font-size: 30px;
  top: 10px;
  left: -6px;
  position: relative; }

.downloads-list li {
  /**
  @extend %icon-l83;
  position: relative;
  border-bottom: 1px solid #EEE;
  padding: 10px 25px 10px 30px;

  &:before {
    content: 'l';
    font-size: 30px;
    position: absolute;
    top: 10px;
    left: 0;
  }**/
  display: block;
  padding: 20px 55px 20px 5px;
  border-bottom: 1px solid #EEE;
  position: relative; }
  .downloads-list li:hover {
    background-color: #F5F5F5; }

.downloads-list p {
  margin-bottom: 0; }

.downloads-list a {
  display: block; }

[class*=downloads-icon] {
  background-repeat: no-repeat;
  background-size: contain;
  background-position: right;
  height: 60px;
  width: 62px;
  content: '';
  display: block;
  position: absolute;
  top: 50%;
  right: 3px;
  margin-top: -30px; }

.downloads-icon-pdf {
  background-image: url(../img/icons/download-icon-pdf.svg); }

.downloads-icon-zip {
  background-image: url(../img/icons/download-icon-zip.svg); }

.downloads-icon-catalog {
  background-image: url(../img/icons/download-icon-catalog.png); }

.glossary-table tbody {
  border: 0 none; }

.glossary-table td {
  vertical-align: top;
  padding: 8px 12px 8px 0;
  line-height: 1.1; }

.glossary-icon--enec {
  background-image: url(../img/icons/glossary-icon-enec.svg);
  background-color: #00aacd; }

.glossary-icon--ce {
  background-image: url(../img/icons/glossary-icon-ce.svg);
  background-color: #00aacd; }

.glossary-icon--schutzklasse-1 {
  background-image: url(../img/icons/glossary-icon-schutzklasse-1.svg);
  background-color: #00aacd; }

.glossary-icon--schutzklasse-2 {
  background-image: url(../img/icons/glossary-icon-schutzklasse-2.svg);
  background-color: #00aacd; }

.glossary-icon--schutzklasse-3 {
  background-image: url(../img/icons/glossary-icon-schutzklasse-3.svg);
  background-color: #00aacd; }

[class*=glossary-icon] {
  background-color: #FFF; }

.team-list {
  margin-top: 50px; }
  @media screen and (min-width: 0px) and (max-width: 699px) {
    .team-list {
      margin-top: 10px; } }

.team-list-item {
  background-color: #f4f4f4;
  height: 0px;
  padding-bottom: 21.29%;
  position: relative;
  overflow: hidden;
  margin-bottom: 39px; }
  @media screen and (min-width: 0px) and (max-width: 699px) {
    .team-list-item {
      float: left;
      display: block;
      margin-right: 2.35765%;
      width: 31.76157%;
      padding-bottom: 38.29%;
      margin-bottom: 10px;
      /**
    &:nth-child(3n), &:nth-child(7n), &:nth-child(10n), &:nth-child(13n) {
      @include omega();
    }
    **/ }
      .team-list-item:last-child {
        margin-right: 0; }
      .team-list-item:nth-child(3n) {
        margin-right: 0; }
      .team-list-item:nth-child(3n+1) {
        clear: left; } }
  @media screen and (min-width: 700px) and (max-width: 989px) {
    .team-list-item {
      float: left;
      display: block;
      margin-right: 2.84259%;
      width: 17.72593%; }
      .team-list-item:last-child {
        margin-right: 0; }
      .team-list-item:nth-child(5n) {
        margin-right: 0; }
      .team-list-item:nth-child(5n+1) {
        clear: left; } }
  @media screen and (min-width: 990px) {
    .team-list-item {
      float: left;
      display: block;
      margin-right: 2.84259%;
      width: 17.72593%; }
      .team-list-item:last-child {
        margin-right: 0; }
      .team-list-item:nth-child(5n) {
        margin-right: 0; }
      .team-list-item:nth-child(5n+1) {
        clear: left; } }
  .team-list-item img {
    position: absolute;
    left: 0;
    top: 0;
    display: block;
    width: 100%; }
  .team-list-item h3 {
    position: absolute;
    z-index: 2;
    bottom: 0px;
    left: 0px;
    width: 100%;
    padding: 5px 14px;
    display: block;
    font-size: 170%;
    color: white;
    background-color: rgba(0, 170, 205, 0.6);
    opacity: 0;
    padding-top: 400px;
    line-height: 1.3;
    -webkit-transform: translateY(0%);
    -moz-transform: translateY(0%);
    -ms-transform: translateY(0%);
    -o-transform: translateY(0%);
    transform: translateY(0%);
    -webkit-transition: all 0.2s cubic-bezier(0.25, 0.46, 0.45, 0.94);
    -moz-transition: all 0.2s cubic-bezier(0.25, 0.46, 0.45, 0.94);
    transition: all 0.2s cubic-bezier(0.25, 0.46, 0.45, 0.94); }
    @media screen and (min-width: 700px) and (max-width: 989px) {
      .team-list-item h3 {
        font-size: 150%; } }
    @media screen and (min-width: 0px) and (max-width: 699px) {
      .team-list-item h3 {
        font-size: 120%; } }

.team-list-item:hover h3 {
  opacity: 1; }

.team-list-item-placeholder {
  /**
  @include media($small) {
    display: none;
  }  
  **/ }

#backtotop {
  width: 40px;
  height: 40px;
  background-size: cover;
  display: none;
  z-index: 999 !important; }
  @media screen and (min-width: 0px) and (max-width: 699px) {
    #backtotop {
      display: block; } }

@keyframes marquee {
  0% {
    -webkit-transform: translateX(0%);
    -moz-transform: translateX(0%);
    -ms-transform: translateX(0%);
    -o-transform: translateX(0%);
    transform: translateX(0%); }
  100% {
    -webkit-transform: translateX(-105%);
    -moz-transform: translateX(-105%);
    -ms-transform: translateX(-105%);
    -o-transform: translateX(-105%);
    transform: translateX(-105%); } }

.marquee {
  width: 100%;
  position: relative;
  margin: 50px auto;
  overflow: hidden;
  top: 0px;
  height: 44px;
  color: #eee;
  font-size: 120%; }
  @media screen and (min-width: 0px) and (max-width: 989px) {
    .marquee {
      display: none; } }
  .marquee:before, .marquee:after {
    content: '';
    position: absolute;
    top: 0;
    width: 20px;
    height: 100%;
    z-index: 3; }
  .marquee:before {
    left: 0;
    background-color: #000;
    background-image: -webkit-linear-gradient(left, #000, rgba(0, 0, 0, 0));
    background-image: linear-gradient(to right,#000, rgba(0, 0, 0, 0));
    background-color: transparent; }
  .marquee:after {
    right: 0;
    background-color: rgba(0, 0, 0, 0);
    background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0), #000);
    background-image: linear-gradient(to right,rgba(0, 0, 0, 0), #000);
    background-color: transparent; }

.marquee-text {
  position: absolute;
  display: block;
  white-space: nowrap;
  -webkit-animation: marquee 200s linear infinite;
  -moz-animation: marquee 200s linear infinite;
  animation: marquee 200s linear infinite; }

/**
 * Small
 */
@media screen and (min-width: 0px) and (max-width: 699px) {
  .grid-s-33 {
    float: left;
    display: block;
    margin-right: 2.35765%;
    width: 31.76157%; }
    .grid-s-33:last-child {
      margin-right: 0; } }

@media screen and (min-width: 0px) and (max-width: 699px) {
  .grid-s-50 {
    float: left;
    display: block;
    margin-right: 2.35765%;
    width: 48.82117%; }
    .grid-s-50:last-child {
      margin-right: 0; } }

@media screen and (min-width: 0px) and (max-width: 699px) {
  .grid-s-100 {
    float: left;
    display: block;
    margin-right: 2.35765%;
    width: 100%; }
    .grid-s-100:last-child {
      margin-right: 0; } }

/**
 * Medium
 */
@media screen and (min-width: 700px) and (max-width: 989px) {
  .grid-m-33 {
    float: left;
    display: block;
    margin-right: 2.35765%;
    width: 31.76157%; }
    .grid-m-33:last-child {
      margin-right: 0; } }

@media screen and (min-width: 700px) and (max-width: 989px) {
  .grid-m-50 {
    float: left;
    display: block;
    margin-right: 2.35765%;
    width: 48.82117%; }
    .grid-m-50:last-child {
      margin-right: 0; } }

@media screen and (min-width: 700px) and (max-width: 989px) {
  .grid-m-100 {
    float: left;
    display: block;
    margin-right: 2.35765%;
    width: 100%; }
    .grid-m-100:last-child {
      margin-right: 0; } }

/**
 * Large
 */
@media screen and (min-width: 990px) {
  .grid-l-33 {
    float: left;
    display: block;
    margin-right: 2.35765%;
    width: 31.76157%; }
    .grid-l-33:last-child {
      margin-right: 0; } }

@media screen and (min-width: 990px) {
  .grid-l-50 {
    float: left;
    display: block;
    margin-right: 2.35765%;
    width: 48.82117%; }
    .grid-l-50:last-child {
      margin-right: 0; } }

@media screen and (min-width: 990px) {
  .grid-l-100 {
    float: left;
    display: block;
    margin-right: 2.35765%;
    width: 100%; }
    .grid-l-100:last-child {
      margin-right: 0; } }

/**
 * General
 */
.grid-omega {
  margin-right: 0; }

.text-center {
  text-align: center; }

.text-justify {
  text-align: justify;
  -webkit-hyphens: auto;
  -moz-hyphens: auto;
  -ms-hyphens: auto;
  hyphens: auto; }

.text-hyphen {
  -webkit-hyphens: auto;
  -moz-hyphens: auto;
  -ms-hyphens: auto;
  hyphens: auto; }

.text-underline {
  text-decoration: underline; }

@media screen and (min-width: 0px) and (max-width: 699px) {
  .text-size-s-large {
    font-size: 150% !important; } }

.no-transform {
  -webkit-transform: none;
  -moz-transform: none;
  -ms-transform: none;
  -o-transform: none;
  transform: none; }

body.path-news .page-banner:after, body.node-type-news .page-banner:after {
  display: none !important; }

body.path-news .page-body-title, body.node-type-news .page-body-title {
  display: none !important; }

/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFtcDgzLmNzcyIsInNvdXJjZXMiOlsibGFtcDgzLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvbm9kZS1ib3VyYm9uL25vZGVfbW9kdWxlcy9ib3VyYm9uL2FwcC9hc3NldHMvc3R5bGVzaGVldHMvX2JvdXJib24uc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9ub2RlLWJvdXJib24vbm9kZV9tb2R1bGVzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9zZXR0aW5ncy9fZGVwcmVjYXRpb24td2FybmluZ3Muc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9ub2RlLWJvdXJib24vbm9kZV9tb2R1bGVzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9zZXR0aW5ncy9fcHJlZml4ZXIuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9ub2RlLWJvdXJib24vbm9kZV9tb2R1bGVzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9zZXR0aW5ncy9fcHgtdG8tZW0uc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9ub2RlLWJvdXJib24vbm9kZV9tb2R1bGVzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9zZXR0aW5ncy9fYXNzZXQtcGlwZWxpbmUuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9ub2RlLWJvdXJib24vbm9kZV9tb2R1bGVzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9fYm91cmJvbi1kZXByZWNhdGUuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9ub2RlLWJvdXJib24vbm9kZV9tb2R1bGVzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9mdW5jdGlvbnMvX2Fzc2lnbi1pbnB1dHMuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9ub2RlLWJvdXJib24vbm9kZV9tb2R1bGVzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9mdW5jdGlvbnMvX2NvbnRhaW5zLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvbm9kZS1ib3VyYm9uL25vZGVfbW9kdWxlcy9ib3VyYm9uL2FwcC9hc3NldHMvc3R5bGVzaGVldHMvZnVuY3Rpb25zL19jb250YWlucy1mYWxzeS5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL25vZGUtYm91cmJvbi9ub2RlX21vZHVsZXMvYm91cmJvbi9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2Z1bmN0aW9ucy9faXMtbGVuZ3RoLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvbm9kZS1ib3VyYm9uL25vZGVfbW9kdWxlcy9ib3VyYm9uL2FwcC9hc3NldHMvc3R5bGVzaGVldHMvZnVuY3Rpb25zL19pcy1saWdodC5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL25vZGUtYm91cmJvbi9ub2RlX21vZHVsZXMvYm91cmJvbi9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2Z1bmN0aW9ucy9faXMtbnVtYmVyLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvbm9kZS1ib3VyYm9uL25vZGVfbW9kdWxlcy9ib3VyYm9uL2FwcC9hc3NldHMvc3R5bGVzaGVldHMvZnVuY3Rpb25zL19pcy1zaXplLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvbm9kZS1ib3VyYm9uL25vZGVfbW9kdWxlcy9ib3VyYm9uL2FwcC9hc3NldHMvc3R5bGVzaGVldHMvZnVuY3Rpb25zL19weC10by1lbS5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL25vZGUtYm91cmJvbi9ub2RlX21vZHVsZXMvYm91cmJvbi9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2Z1bmN0aW9ucy9fcHgtdG8tcmVtLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvbm9kZS1ib3VyYm9uL25vZGVfbW9kdWxlcy9ib3VyYm9uL2FwcC9hc3NldHMvc3R5bGVzaGVldHMvZnVuY3Rpb25zL19zaGFkZS5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL25vZGUtYm91cmJvbi9ub2RlX21vZHVsZXMvYm91cmJvbi9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2Z1bmN0aW9ucy9fc3RyaXAtdW5pdHMuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9ub2RlLWJvdXJib24vbm9kZV9tb2R1bGVzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9mdW5jdGlvbnMvX3RpbnQuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9ub2RlLWJvdXJib24vbm9kZV9tb2R1bGVzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9mdW5jdGlvbnMvX3RyYW5zaXRpb24tcHJvcGVydHktbmFtZS5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL25vZGUtYm91cmJvbi9ub2RlX21vZHVsZXMvYm91cmJvbi9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2Z1bmN0aW9ucy9fdW5wYWNrLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvbm9kZS1ib3VyYm9uL25vZGVfbW9kdWxlcy9ib3VyYm9uL2FwcC9hc3NldHMvc3R5bGVzaGVldHMvZnVuY3Rpb25zL19tb2R1bGFyLXNjYWxlLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvbm9kZS1ib3VyYm9uL25vZGVfbW9kdWxlcy9ib3VyYm9uL2FwcC9hc3NldHMvc3R5bGVzaGVldHMvaGVscGVycy9fY29udmVydC11bml0cy5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL25vZGUtYm91cmJvbi9ub2RlX21vZHVsZXMvYm91cmJvbi9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2hlbHBlcnMvX2RpcmVjdGlvbmFsLXZhbHVlcy5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL25vZGUtYm91cmJvbi9ub2RlX21vZHVsZXMvYm91cmJvbi9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2hlbHBlcnMvX2ZvbnQtc291cmNlLWRlY2xhcmF0aW9uLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvbm9kZS1ib3VyYm9uL25vZGVfbW9kdWxlcy9ib3VyYm9uL2FwcC9hc3NldHMvc3R5bGVzaGVldHMvaGVscGVycy9fZ3JhZGllbnQtcG9zaXRpb25zLXBhcnNlci5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL25vZGUtYm91cmJvbi9ub2RlX21vZHVsZXMvYm91cmJvbi9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2hlbHBlcnMvX2xpbmVhci1hbmdsZS1wYXJzZXIuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9ub2RlLWJvdXJib24vbm9kZV9tb2R1bGVzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9oZWxwZXJzL19saW5lYXItZ3JhZGllbnQtcGFyc2VyLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvbm9kZS1ib3VyYm9uL25vZGVfbW9kdWxlcy9ib3VyYm9uL2FwcC9hc3NldHMvc3R5bGVzaGVldHMvaGVscGVycy9fbGluZWFyLXBvc2l0aW9ucy1wYXJzZXIuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9ub2RlLWJvdXJib24vbm9kZV9tb2R1bGVzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9oZWxwZXJzL19saW5lYXItc2lkZS1jb3JuZXItcGFyc2VyLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvbm9kZS1ib3VyYm9uL25vZGVfbW9kdWxlcy9ib3VyYm9uL2FwcC9hc3NldHMvc3R5bGVzaGVldHMvaGVscGVycy9fcmFkaWFsLWFyZy1wYXJzZXIuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9ub2RlLWJvdXJib24vbm9kZV9tb2R1bGVzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9oZWxwZXJzL19yYWRpYWwtcG9zaXRpb25zLXBhcnNlci5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL25vZGUtYm91cmJvbi9ub2RlX21vZHVsZXMvYm91cmJvbi9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2hlbHBlcnMvX3JhZGlhbC1ncmFkaWVudC1wYXJzZXIuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9ub2RlLWJvdXJib24vbm9kZV9tb2R1bGVzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9oZWxwZXJzL19yZW5kZXItZ3JhZGllbnRzLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvbm9kZS1ib3VyYm9uL25vZGVfbW9kdWxlcy9ib3VyYm9uL2FwcC9hc3NldHMvc3R5bGVzaGVldHMvaGVscGVycy9fc2hhcGUtc2l6ZS1zdHJpcHBlci5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL25vZGUtYm91cmJvbi9ub2RlX21vZHVsZXMvYm91cmJvbi9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2hlbHBlcnMvX3N0ci10by1udW0uc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9ub2RlLWJvdXJib24vbm9kZV9tb2R1bGVzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9jc3MzL19hbmltYXRpb24uc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9ub2RlLWJvdXJib24vbm9kZV9tb2R1bGVzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9jc3MzL19hcHBlYXJhbmNlLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvbm9kZS1ib3VyYm9uL25vZGVfbW9kdWxlcy9ib3VyYm9uL2FwcC9hc3NldHMvc3R5bGVzaGVldHMvY3NzMy9fYmFja2ZhY2UtdmlzaWJpbGl0eS5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL25vZGUtYm91cmJvbi9ub2RlX21vZHVsZXMvYm91cmJvbi9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2NzczMvX2JhY2tncm91bmQuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9ub2RlLWJvdXJib24vbm9kZV9tb2R1bGVzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9jc3MzL19iYWNrZ3JvdW5kLWltYWdlLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvbm9kZS1ib3VyYm9uL25vZGVfbW9kdWxlcy9ib3VyYm9uL2FwcC9hc3NldHMvc3R5bGVzaGVldHMvY3NzMy9fYm9yZGVyLWltYWdlLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvbm9kZS1ib3VyYm9uL25vZGVfbW9kdWxlcy9ib3VyYm9uL2FwcC9hc3NldHMvc3R5bGVzaGVldHMvY3NzMy9fY2FsYy5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL25vZGUtYm91cmJvbi9ub2RlX21vZHVsZXMvYm91cmJvbi9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2NzczMvX2NvbHVtbnMuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9ub2RlLWJvdXJib24vbm9kZV9tb2R1bGVzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9jc3MzL19maWx0ZXIuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9ub2RlLWJvdXJib24vbm9kZV9tb2R1bGVzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9jc3MzL19mbGV4LWJveC5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL25vZGUtYm91cmJvbi9ub2RlX21vZHVsZXMvYm91cmJvbi9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2NzczMvX2ZvbnQtZmFjZS5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL25vZGUtYm91cmJvbi9ub2RlX21vZHVsZXMvYm91cmJvbi9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2NzczMvX2ZvbnQtZmVhdHVyZS1zZXR0aW5ncy5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL25vZGUtYm91cmJvbi9ub2RlX21vZHVsZXMvYm91cmJvbi9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2NzczMvX2hpZHBpLW1lZGlhLXF1ZXJ5LnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvbm9kZS1ib3VyYm9uL25vZGVfbW9kdWxlcy9ib3VyYm9uL2FwcC9hc3NldHMvc3R5bGVzaGVldHMvY3NzMy9faHlwaGVucy5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL25vZGUtYm91cmJvbi9ub2RlX21vZHVsZXMvYm91cmJvbi9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2NzczMvX2ltYWdlLXJlbmRlcmluZy5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL25vZGUtYm91cmJvbi9ub2RlX21vZHVsZXMvYm91cmJvbi9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2NzczMvX2tleWZyYW1lcy5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL25vZGUtYm91cmJvbi9ub2RlX21vZHVsZXMvYm91cmJvbi9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2NzczMvX2xpbmVhci1ncmFkaWVudC5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL25vZGUtYm91cmJvbi9ub2RlX21vZHVsZXMvYm91cmJvbi9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2NzczMvX3BlcnNwZWN0aXZlLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvbm9kZS1ib3VyYm9uL25vZGVfbW9kdWxlcy9ib3VyYm9uL2FwcC9hc3NldHMvc3R5bGVzaGVldHMvY3NzMy9fcGxhY2Vob2xkZXIuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9ub2RlLWJvdXJib24vbm9kZV9tb2R1bGVzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9jc3MzL19yYWRpYWwtZ3JhZGllbnQuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9ub2RlLWJvdXJib24vbm9kZV9tb2R1bGVzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9jc3MzL19zZWxlY3Rpb24uc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9ub2RlLWJvdXJib24vbm9kZV9tb2R1bGVzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9jc3MzL190ZXh0LWRlY29yYXRpb24uc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9ub2RlLWJvdXJib24vbm9kZV9tb2R1bGVzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9jc3MzL190cmFuc2Zvcm0uc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9ub2RlLWJvdXJib24vbm9kZV9tb2R1bGVzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9jc3MzL190cmFuc2l0aW9uLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvbm9kZS1ib3VyYm9uL25vZGVfbW9kdWxlcy9ib3VyYm9uL2FwcC9hc3NldHMvc3R5bGVzaGVldHMvY3NzMy9fdXNlci1zZWxlY3Quc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9ub2RlLWJvdXJib24vbm9kZV9tb2R1bGVzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9hZGRvbnMvX2JvcmRlci1jb2xvci5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL25vZGUtYm91cmJvbi9ub2RlX21vZHVsZXMvYm91cmJvbi9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2FkZG9ucy9fYm9yZGVyLXJhZGl1cy5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL25vZGUtYm91cmJvbi9ub2RlX21vZHVsZXMvYm91cmJvbi9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2FkZG9ucy9fYm9yZGVyLXN0eWxlLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvbm9kZS1ib3VyYm9uL25vZGVfbW9kdWxlcy9ib3VyYm9uL2FwcC9hc3NldHMvc3R5bGVzaGVldHMvYWRkb25zL19ib3JkZXItd2lkdGguc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9ub2RlLWJvdXJib24vbm9kZV9tb2R1bGVzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9hZGRvbnMvX2J1dHRvbnMuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9ub2RlLWJvdXJib24vbm9kZV9tb2R1bGVzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9hZGRvbnMvX2NsZWFyZml4LnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvbm9kZS1ib3VyYm9uL25vZGVfbW9kdWxlcy9ib3VyYm9uL2FwcC9hc3NldHMvc3R5bGVzaGVldHMvYWRkb25zL19lbGxpcHNpcy5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL25vZGUtYm91cmJvbi9ub2RlX21vZHVsZXMvYm91cmJvbi9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2FkZG9ucy9fZm9udC1zdGFja3Muc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9ub2RlLWJvdXJib24vbm9kZV9tb2R1bGVzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9hZGRvbnMvX2hpZGUtdGV4dC5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL25vZGUtYm91cmJvbi9ub2RlX21vZHVsZXMvYm91cmJvbi9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2FkZG9ucy9fbWFyZ2luLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvbm9kZS1ib3VyYm9uL25vZGVfbW9kdWxlcy9ib3VyYm9uL2FwcC9hc3NldHMvc3R5bGVzaGVldHMvYWRkb25zL19wYWRkaW5nLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvbm9kZS1ib3VyYm9uL25vZGVfbW9kdWxlcy9ib3VyYm9uL2FwcC9hc3NldHMvc3R5bGVzaGVldHMvYWRkb25zL19wb3NpdGlvbi5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL25vZGUtYm91cmJvbi9ub2RlX21vZHVsZXMvYm91cmJvbi9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2FkZG9ucy9fcHJlZml4ZXIuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9ub2RlLWJvdXJib24vbm9kZV9tb2R1bGVzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9hZGRvbnMvX3JldGluYS1pbWFnZS5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL25vZGUtYm91cmJvbi9ub2RlX21vZHVsZXMvYm91cmJvbi9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2FkZG9ucy9fc2l6ZS5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL25vZGUtYm91cmJvbi9ub2RlX21vZHVsZXMvYm91cmJvbi9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2FkZG9ucy9fdGV4dC1pbnB1dHMuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9ub2RlLWJvdXJib24vbm9kZV9tb2R1bGVzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9hZGRvbnMvX3RpbWluZy1mdW5jdGlvbnMuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9ub2RlLWJvdXJib24vbm9kZV9tb2R1bGVzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9hZGRvbnMvX3RyaWFuZ2xlLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvbm9kZS1ib3VyYm9uL25vZGVfbW9kdWxlcy9ib3VyYm9uL2FwcC9hc3NldHMvc3R5bGVzaGVldHMvYWRkb25zL193b3JkLXdyYXAuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9ub2RlLWJvdXJib24vbm9kZV9tb2R1bGVzL2JvdXJib24vYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9fYm91cmJvbi1kZXByZWNhdGVkLXVwY29taW5nLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYm91cmJvbi1uZWF0L2FwcC9hc3NldHMvc3R5bGVzaGVldHMvX25lYXQuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9ib3VyYm9uLW5lYXQvYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9fbmVhdC1oZWxwZXJzLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYm91cmJvbi1uZWF0L2FwcC9hc3NldHMvc3R5bGVzaGVldHMvZnVuY3Rpb25zL19wcml2YXRlLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYm91cmJvbi1uZWF0L2FwcC9hc3NldHMvc3R5bGVzaGVldHMvZnVuY3Rpb25zL19uZXctYnJlYWtwb2ludC5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JvdXJib24tbmVhdC9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL3NldHRpbmdzL19ncmlkLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYm91cmJvbi1uZWF0L2FwcC9hc3NldHMvc3R5bGVzaGVldHMvc2V0dGluZ3MvX3Zpc3VhbC1ncmlkLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYm91cmJvbi1uZWF0L2FwcC9hc3NldHMvc3R5bGVzaGVldHMvc2V0dGluZ3MvX2Rpc2FibGUtd2FybmluZ3Muc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9ib3VyYm9uLW5lYXQvYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9ncmlkL19wcml2YXRlLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYm91cmJvbi1uZWF0L2FwcC9hc3NldHMvc3R5bGVzaGVldHMvZ3JpZC9fYm94LXNpemluZy5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JvdXJib24tbmVhdC9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2dyaWQvX29tZWdhLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYm91cmJvbi1uZWF0L2FwcC9hc3NldHMvc3R5bGVzaGVldHMvZ3JpZC9fb3V0ZXItY29udGFpbmVyLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYm91cmJvbi1uZWF0L2FwcC9hc3NldHMvc3R5bGVzaGVldHMvZ3JpZC9fc3Bhbi1jb2x1bW5zLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYm91cmJvbi1uZWF0L2FwcC9hc3NldHMvc3R5bGVzaGVldHMvZ3JpZC9fcm93LnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYm91cmJvbi1uZWF0L2FwcC9hc3NldHMvc3R5bGVzaGVldHMvZ3JpZC9fc2hpZnQuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9ib3VyYm9uLW5lYXQvYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9ncmlkL19wYWQuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9ib3VyYm9uLW5lYXQvYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9ncmlkL19maWxsLXBhcmVudC5zY3NzIiwiLi4vbm9kZV9tb2R1bGVzL2JvdXJib24tbmVhdC9hcHAvYXNzZXRzL3N0eWxlc2hlZXRzL2dyaWQvX21lZGlhLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYm91cmJvbi1uZWF0L2FwcC9hc3NldHMvc3R5bGVzaGVldHMvZ3JpZC9fdG8tZGVwcmVjYXRlLnNjc3MiLCIuLi9ub2RlX21vZHVsZXMvYm91cmJvbi1uZWF0L2FwcC9hc3NldHMvc3R5bGVzaGVldHMvZ3JpZC9fdmlzdWFsLWdyaWQuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9ib3VyYm9uLW5lYXQvYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9ncmlkL19kaXNwbGF5LWNvbnRleHQuc2NzcyIsIi4uL25vZGVfbW9kdWxlcy9ib3VyYm9uLW5lYXQvYXBwL2Fzc2V0cy9zdHlsZXNoZWV0cy9ncmlkL19kaXJlY3Rpb24tY29udGV4dC5zY3NzIiwibGFtcDgzL19zZXR0aW5ncy5zY3NzIiwibGFtcDgzL19jb2xvcnMuc2NzcyIsImxhbXA4My9fYmFzZS5zY3NzIiwibGFtcDgzL190eXBvLnNjc3MiLCJsYW1wODMvX21haW4uc2NzcyIsImxhbXA4My9fbWVzc2FnZXMuc2NzcyIsImxhbXA4My9fbHVtaW5haXJlcy5zY3NzIiwibGFtcDgzL19wYWdlLnNjc3MiLCJsYW1wODMvX2NvbXBhY3RfbWVudS5zY3NzIiwibGFtcDgzL19icmVhZGNydW1iLnNjc3MiLCJsYW1wODMvX3Byb2R1Y3RfYmFja19saW5rLnNjc3MiLCJsYW1wODMvX3Byb2R1Y3RfZmlsdGVycy5zY3NzIiwibGFtcDgzL19wcm9kdWN0X3NlYXJjaF9ib3guc2NzcyIsImxhbXA4My9fcHJvZHVjdF9pY29uLnNjc3MiLCJsYW1wODMvX3Byb2R1Y3RfZ3JvdXBzLnNjc3MiLCJsYW1wODMvX3Byb2R1Y3RfbGlzdC5zY3NzIiwibGFtcDgzL19ub2RlX3Byb2R1Y3Quc2NzcyIsImxhbXA4My9fbm9kZV9mcm9udF9zdWJwYWdlLnNjc3MiLCJsYW1wODMvX3JlbGF0ZWRfcHJvZHVjdHMuc2NzcyIsImxhbXA4My9fbm9kZV9uZXdzLnNjc3MiLCJsYW1wODMvX25ld3NfbGlzdC5zY3NzIiwibGFtcDgzL19jb250YWN0X3BlcnNvbl9ibG9jay5zY3NzIiwibGFtcDgzL19kcm9wb3V0X2Jsb2NrLnNjc3MiLCJsYW1wODMvX21lbnVfcmVmZXJlbmNlcy5zY3NzIiwibGFtcDgzL19ub2RlX3JlZmVyZW5jZS5zY3NzIiwibGFtcDgzL19yZWZlcmVuY2VzX2xpc3Quc2NzcyIsImxhbXA4My9fcmVmZXJlbmNlc19maWx0ZXJzLnNjc3MiLCJsYW1wODMvX25vZGVfcGFnZS5zY3NzIiwibGFtcDgzL19zdGFja3RhYmxlLnNjc3MiLCJsYW1wODMvX3Rvb2x0aXBzdGVyLnNjc3MiLCJsYW1wODMvX2ljb25fZm9udC5zY3NzIiwibGFtcDgzL191c2VyX2xvZ2luLnNjc3MiLCJsYW1wODMvX2NvbnRhY3RfcGFnZS5zY3NzIiwibGFtcDgzL19uZXdzbGV0dGVyX3BhZ2Uuc2NzcyIsImxhbXA4My9faW50cm8uc2NzcyIsImxhbXA4My9fam9iLnNjc3MiLCJsYW1wODMvX25ld3NsZXR0ZXJfc3Vic2NyaXB0aW9uLnNjc3MiLCJsYW1wODMvX21lbnVfYnVzaW5lc3Muc2NzcyIsImxhbXA4My9fZG93bmxvYWRzLnNjc3MiLCJsYW1wODMvX2dsb3NzYXJ5LnNjc3MiLCJsYW1wODMvX3RlYW1fbGlzdC5zY3NzIiwibGFtcDgzL19iYWNrdG90b3Auc2NzcyIsImxhbXA4My9fbWFycXVlZS5zY3NzIiwibGFtcDgzL19ncmlkLnNjc3MiLCJsYW1wODMvX3V0aWxpdHkuc2NzcyIsImxhbXA4My9faGFja3Muc2NzcyJdLCJzb3VyY2VzQ29udGVudCI6WyJAaW1wb3J0IFwiYm91cmJvblwiO1xuQGltcG9ydCBcIm5lYXRcIjtcblxuQGltcG9ydCBcImxhbXA4My9zZXR0aW5nc1wiO1xuQGltcG9ydCBcImxhbXA4My9jb2xvcnNcIjtcblxuQGltcG9ydCBcImxhbXA4My9iYXNlXCI7XG5AaW1wb3J0IFwibGFtcDgzL3R5cG9cIjtcbkBpbXBvcnQgXCJsYW1wODMvbWFpblwiO1xuQGltcG9ydCBcImxhbXA4My9tZXNzYWdlc1wiO1xuQGltcG9ydCBcImxhbXA4My9sdW1pbmFpcmVzXCI7XG5AaW1wb3J0IFwibGFtcDgzL3BhZ2VcIjtcbkBpbXBvcnQgXCJsYW1wODMvY29tcGFjdF9tZW51XCI7XG5AaW1wb3J0IFwibGFtcDgzL2JyZWFkY3J1bWJcIjtcblxuQGltcG9ydCBcImxhbXA4My9wcm9kdWN0X2JhY2tfbGlua1wiO1xuQGltcG9ydCBcImxhbXA4My9wcm9kdWN0X2ZpbHRlcnNcIjtcbkBpbXBvcnQgXCJsYW1wODMvcHJvZHVjdF9zZWFyY2hfYm94XCI7XG5AaW1wb3J0IFwibGFtcDgzL3Byb2R1Y3RfaWNvblwiO1xuQGltcG9ydCBcImxhbXA4My9wcm9kdWN0X2dyb3Vwc1wiO1xuQGltcG9ydCBcImxhbXA4My9wcm9kdWN0X2xpc3RcIjtcbkBpbXBvcnQgXCJsYW1wODMvbm9kZV9wcm9kdWN0XCI7XG5AaW1wb3J0IFwibGFtcDgzL25vZGVfZnJvbnRfc3VicGFnZVwiO1xuQGltcG9ydCBcImxhbXA4My9yZWxhdGVkX3Byb2R1Y3RzXCI7XG5cbkBpbXBvcnQgXCJsYW1wODMvbm9kZV9uZXdzXCI7XG5AaW1wb3J0IFwibGFtcDgzL25ld3NfbGlzdFwiO1xuXG5cbkBpbXBvcnQgXCJsYW1wODMvY29udGFjdF9wZXJzb25fYmxvY2tcIjtcbkBpbXBvcnQgXCJsYW1wODMvZHJvcG91dF9ibG9ja1wiO1xuXG5AaW1wb3J0IFwibGFtcDgzL21lbnVfcmVmZXJlbmNlc1wiO1xuQGltcG9ydCBcImxhbXA4My9ub2RlX3JlZmVyZW5jZVwiO1xuQGltcG9ydCBcImxhbXA4My9yZWZlcmVuY2VzX2xpc3RcIjtcbkBpbXBvcnQgXCJsYW1wODMvcmVmZXJlbmNlc19maWx0ZXJzXCI7XG5cbkBpbXBvcnQgXCJsYW1wODMvbm9kZV9wYWdlXCI7XG5cbkBpbXBvcnQgXCJsYW1wODMvc3RhY2t0YWJsZVwiO1xuQGltcG9ydCBcImxhbXA4My90b29sdGlwc3RlclwiO1xuXG5AaW1wb3J0IFwibGFtcDgzL2ljb25fZm9udFwiO1xuXG5AaW1wb3J0IFwibGFtcDgzL3VzZXJfbG9naW5cIjtcbkBpbXBvcnQgXCJsYW1wODMvY29udGFjdF9wYWdlXCI7XG5AaW1wb3J0IFwibGFtcDgzL25ld3NsZXR0ZXJfcGFnZVwiO1xuQGltcG9ydCBcImxhbXA4My9pbnRyb1wiO1xuXG5AaW1wb3J0IFwibGFtcDgzL2pvYlwiO1xuQGltcG9ydCBcImxhbXA4My9uZXdzbGV0dGVyX3N1YnNjcmlwdGlvblwiO1xuXG5AaW1wb3J0IFwibGFtcDgzL21lbnVfYnVzaW5lc3NcIjtcbkBpbXBvcnQgXCJsYW1wODMvZG93bmxvYWRzXCI7XG5AaW1wb3J0IFwibGFtcDgzL2dsb3NzYXJ5XCI7XG5cbkBpbXBvcnQgXCJsYW1wODMvdGVhbV9saXN0XCI7XG5AaW1wb3J0IFwibGFtcDgzL2JhY2t0b3RvcFwiO1xuQGltcG9ydCBcImxhbXA4My9tYXJxdWVlXCI7XG5cbkBpbXBvcnQgXCJsYW1wODMvZ3JpZFwiO1xuQGltcG9ydCBcImxhbXA4My91dGlsaXR5XCI7XG5cbkBpbXBvcnQgXCJsYW1wODMvaGFja3NcIjtcbiIsIi8vIEJvdXJib24gNC4zLjRcbi8vIGh0dHA6Ly9ib3VyYm9uLmlvXG4vLyBDb3B5cmlnaHQgMjAxMS0yMDE3IHRob3VnaHRib3QsIGluYy5cbi8vIE1JVCBMaWNlbnNlXG5cbkBpbXBvcnQgXCJzZXR0aW5ncy9kZXByZWNhdGlvbi13YXJuaW5nc1wiO1xuQGltcG9ydCBcInNldHRpbmdzL3ByZWZpeGVyXCI7XG5AaW1wb3J0IFwic2V0dGluZ3MvcHgtdG8tZW1cIjtcbkBpbXBvcnQgXCJzZXR0aW5ncy9hc3NldC1waXBlbGluZVwiO1xuXG5AaW1wb3J0IFwiYm91cmJvbi1kZXByZWNhdGVcIjtcblxuQGltcG9ydCBcImZ1bmN0aW9ucy9hc3NpZ24taW5wdXRzXCI7XG5AaW1wb3J0IFwiZnVuY3Rpb25zL2NvbnRhaW5zXCI7XG5AaW1wb3J0IFwiZnVuY3Rpb25zL2NvbnRhaW5zLWZhbHN5XCI7XG5AaW1wb3J0IFwiZnVuY3Rpb25zL2lzLWxlbmd0aFwiO1xuQGltcG9ydCBcImZ1bmN0aW9ucy9pcy1saWdodFwiO1xuQGltcG9ydCBcImZ1bmN0aW9ucy9pcy1udW1iZXJcIjtcbkBpbXBvcnQgXCJmdW5jdGlvbnMvaXMtc2l6ZVwiO1xuQGltcG9ydCBcImZ1bmN0aW9ucy9weC10by1lbVwiO1xuQGltcG9ydCBcImZ1bmN0aW9ucy9weC10by1yZW1cIjtcbkBpbXBvcnQgXCJmdW5jdGlvbnMvc2hhZGVcIjtcbkBpbXBvcnQgXCJmdW5jdGlvbnMvc3RyaXAtdW5pdHNcIjtcbkBpbXBvcnQgXCJmdW5jdGlvbnMvdGludFwiO1xuQGltcG9ydCBcImZ1bmN0aW9ucy90cmFuc2l0aW9uLXByb3BlcnR5LW5hbWVcIjtcbkBpbXBvcnQgXCJmdW5jdGlvbnMvdW5wYWNrXCI7XG5AaW1wb3J0IFwiZnVuY3Rpb25zL21vZHVsYXItc2NhbGVcIjtcblxuQGltcG9ydCBcImhlbHBlcnMvY29udmVydC11bml0c1wiO1xuQGltcG9ydCBcImhlbHBlcnMvZGlyZWN0aW9uYWwtdmFsdWVzXCI7XG5AaW1wb3J0IFwiaGVscGVycy9mb250LXNvdXJjZS1kZWNsYXJhdGlvblwiO1xuQGltcG9ydCBcImhlbHBlcnMvZ3JhZGllbnQtcG9zaXRpb25zLXBhcnNlclwiO1xuQGltcG9ydCBcImhlbHBlcnMvbGluZWFyLWFuZ2xlLXBhcnNlclwiO1xuQGltcG9ydCBcImhlbHBlcnMvbGluZWFyLWdyYWRpZW50LXBhcnNlclwiO1xuQGltcG9ydCBcImhlbHBlcnMvbGluZWFyLXBvc2l0aW9ucy1wYXJzZXJcIjtcbkBpbXBvcnQgXCJoZWxwZXJzL2xpbmVhci1zaWRlLWNvcm5lci1wYXJzZXJcIjtcbkBpbXBvcnQgXCJoZWxwZXJzL3JhZGlhbC1hcmctcGFyc2VyXCI7XG5AaW1wb3J0IFwiaGVscGVycy9yYWRpYWwtcG9zaXRpb25zLXBhcnNlclwiO1xuQGltcG9ydCBcImhlbHBlcnMvcmFkaWFsLWdyYWRpZW50LXBhcnNlclwiO1xuQGltcG9ydCBcImhlbHBlcnMvcmVuZGVyLWdyYWRpZW50c1wiO1xuQGltcG9ydCBcImhlbHBlcnMvc2hhcGUtc2l6ZS1zdHJpcHBlclwiO1xuQGltcG9ydCBcImhlbHBlcnMvc3RyLXRvLW51bVwiO1xuXG5AaW1wb3J0IFwiY3NzMy9hbmltYXRpb25cIjtcbkBpbXBvcnQgXCJjc3MzL2FwcGVhcmFuY2VcIjtcbkBpbXBvcnQgXCJjc3MzL2JhY2tmYWNlLXZpc2liaWxpdHlcIjtcbkBpbXBvcnQgXCJjc3MzL2JhY2tncm91bmRcIjtcbkBpbXBvcnQgXCJjc3MzL2JhY2tncm91bmQtaW1hZ2VcIjtcbkBpbXBvcnQgXCJjc3MzL2JvcmRlci1pbWFnZVwiO1xuQGltcG9ydCBcImNzczMvY2FsY1wiO1xuQGltcG9ydCBcImNzczMvY29sdW1uc1wiO1xuQGltcG9ydCBcImNzczMvZmlsdGVyXCI7XG5AaW1wb3J0IFwiY3NzMy9mbGV4LWJveFwiO1xuQGltcG9ydCBcImNzczMvZm9udC1mYWNlXCI7XG5AaW1wb3J0IFwiY3NzMy9mb250LWZlYXR1cmUtc2V0dGluZ3NcIjtcbkBpbXBvcnQgXCJjc3MzL2hpZHBpLW1lZGlhLXF1ZXJ5XCI7XG5AaW1wb3J0IFwiY3NzMy9oeXBoZW5zXCI7XG5AaW1wb3J0IFwiY3NzMy9pbWFnZS1yZW5kZXJpbmdcIjtcbkBpbXBvcnQgXCJjc3MzL2tleWZyYW1lc1wiO1xuQGltcG9ydCBcImNzczMvbGluZWFyLWdyYWRpZW50XCI7XG5AaW1wb3J0IFwiY3NzMy9wZXJzcGVjdGl2ZVwiO1xuQGltcG9ydCBcImNzczMvcGxhY2Vob2xkZXJcIjtcbkBpbXBvcnQgXCJjc3MzL3JhZGlhbC1ncmFkaWVudFwiO1xuQGltcG9ydCBcImNzczMvc2VsZWN0aW9uXCI7XG5AaW1wb3J0IFwiY3NzMy90ZXh0LWRlY29yYXRpb25cIjtcbkBpbXBvcnQgXCJjc3MzL3RyYW5zZm9ybVwiO1xuQGltcG9ydCBcImNzczMvdHJhbnNpdGlvblwiO1xuQGltcG9ydCBcImNzczMvdXNlci1zZWxlY3RcIjtcblxuQGltcG9ydCBcImFkZG9ucy9ib3JkZXItY29sb3JcIjtcbkBpbXBvcnQgXCJhZGRvbnMvYm9yZGVyLXJhZGl1c1wiO1xuQGltcG9ydCBcImFkZG9ucy9ib3JkZXItc3R5bGVcIjtcbkBpbXBvcnQgXCJhZGRvbnMvYm9yZGVyLXdpZHRoXCI7XG5AaW1wb3J0IFwiYWRkb25zL2J1dHRvbnNcIjtcbkBpbXBvcnQgXCJhZGRvbnMvY2xlYXJmaXhcIjtcbkBpbXBvcnQgXCJhZGRvbnMvZWxsaXBzaXNcIjtcbkBpbXBvcnQgXCJhZGRvbnMvZm9udC1zdGFja3NcIjtcbkBpbXBvcnQgXCJhZGRvbnMvaGlkZS10ZXh0XCI7XG5AaW1wb3J0IFwiYWRkb25zL21hcmdpblwiO1xuQGltcG9ydCBcImFkZG9ucy9wYWRkaW5nXCI7XG5AaW1wb3J0IFwiYWRkb25zL3Bvc2l0aW9uXCI7XG5AaW1wb3J0IFwiYWRkb25zL3ByZWZpeGVyXCI7XG5AaW1wb3J0IFwiYWRkb25zL3JldGluYS1pbWFnZVwiO1xuQGltcG9ydCBcImFkZG9ucy9zaXplXCI7XG5AaW1wb3J0IFwiYWRkb25zL3RleHQtaW5wdXRzXCI7XG5AaW1wb3J0IFwiYWRkb25zL3RpbWluZy1mdW5jdGlvbnNcIjtcbkBpbXBvcnQgXCJhZGRvbnMvdHJpYW5nbGVcIjtcbkBpbXBvcnQgXCJhZGRvbnMvd29yZC13cmFwXCI7XG5cbkBpbXBvcnQgXCJib3VyYm9uLWRlcHJlY2F0ZWQtdXBjb21pbmdcIjtcbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcblxuLy8vIEVuYWJsZSBvciBkaXNhYmxlIG91dHB1dCBvZiBCb3VyYm9u4oCZcyBkZXByZWNhdGlvbi1yZWxhdGVkIFNhc3Mgd2FybmluZ3MuXG4vLy8gVGhpcyB2YXJpYWJsZSBtdXN0IGJlIGRlY2xhcmVkIF9iZWZvcmVfIGltcG9ydGluZyBCb3VyYm9uLlxuLy8vXG4vLy8gQHR5cGUgQm9vbFxuXG4kb3V0cHV0LWJvdXJib24tZGVwcmVjYXRpb24td2FybmluZ3M6IHRydWUgIWRlZmF1bHQ7XG4iLCJAY2hhcnNldCBcIlVURi04XCI7XG5cbi8vLyBHbG9iYWwgdmFyaWFibGVzIHRvIGVuYWJsZSBvciBkaXNhYmxlIHZlbmRvciBwcmVmaXhlc1xuXG4kcHJlZml4LWZvci13ZWJraXQ6ICAgIHRydWUgIWRlZmF1bHQ7XG4kcHJlZml4LWZvci1tb3ppbGxhOiAgIHRydWUgIWRlZmF1bHQ7XG4kcHJlZml4LWZvci1taWNyb3NvZnQ6IHRydWUgIWRlZmF1bHQ7XG4kcHJlZml4LWZvci1vcGVyYTogICAgIHRydWUgIWRlZmF1bHQ7XG4kcHJlZml4LWZvci1zcGVjOiAgICAgIHRydWUgIWRlZmF1bHQ7XG4iLCIkZW0tYmFzZTogMTZweCAhZGVmYXVsdDtcbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcblxuLy8vIEEgZ2xvYmFsIHNldHRpbmcgdG8gZW5hYmxlIG9yIGRpc2FibGUgdGhlIGAkYXNzZXQtcGlwZWxpbmVgIHZhcmlhYmxlIGZvciBhbGwgZnVuY3Rpb25zIHRoYXQgYWNjZXB0IGl0LlxuLy8vXG4vLy8gQHR5cGUgQm9vbFxuXG4kYXNzZXQtcGlwZWxpbmU6IGZhbHNlICFkZWZhdWx0O1xuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuXG4vLy8gVGhyb3dzIFNhc3Mgd2FybmluZ3MgdG8gYW5ub3VuY2UgbGlicmFyeSBkZXByZWNhdGlvbnMuIFlvdSBjYW4gZGlzYWJsZSB0aGVtXG4vLy8gYnkgc2V0dGluZyB0aGUgYCRvdXRwdXQtYm91cmJvbi1kZXByZWNhdGlvbi13YXJuaW5nc2AgdmFyaWFibGUgdG8gYGZhbHNlYC5cbi8vL1xuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuXG5AbWl4aW4gX2JvdXJib24tZGVwcmVjYXRlKCRmZWF0dXJlLCAkbWVzc2FnZTogbnVsbCkge1xuICBAaWYgJG91dHB1dC1ib3VyYm9uLWRlcHJlY2F0aW9uLXdhcm5pbmdzID09IHRydWUge1xuICAgIEB3YXJuIFwiW0JvdXJib25dIFtEZXByZWNhdGlvbl0gYCN7JGZlYXR1cmV9YCBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIFwiICtcbiAgICAgIFwicmVtb3ZlZCBpbiA1LjAuMC4gI3skbWVzc2FnZX1cIjtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG5AbWl4aW4gX2JvdXJib24tZGVwcmVjYXRlLWZvci1wcmVmaXhpbmcoJGZlYXR1cmUpIHtcbiAgQGluY2x1ZGUgX2JvdXJib24tZGVwcmVjYXRlKCRmZWF0dXJlLCBcIldlIHN1Z2dlc3QgdXNpbmcgYW4gYXV0b21hdGVkIFwiICtcbiAgICBcInByZWZpeGluZyB0b29sLCBsaWtlIEF1dG9wcmVmaXhlci5cIik7XG59XG4iLCJAZnVuY3Rpb24gYXNzaWduLWlucHV0cygkaW5wdXRzLCAkcHNldWRvOiBudWxsKSB7XG4gIEBpZiAkb3V0cHV0LWJvdXJib24tZGVwcmVjYXRpb24td2FybmluZ3MgPT0gdHJ1ZSB7XG4gICAgQHdhcm4gXCJbQm91cmJvbl0gW0RlcHJlY2F0aW9uXSBgYXNzaWduLWlucHV0c2AgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSBcIiArXG4gICAgXCJyZW1vdmVkIGluIDUuMC4wLlwiO1xuICB9XG5cbiAgJGxpc3Q6ICgpO1xuXG4gIEBlYWNoICRpbnB1dCBpbiAkaW5wdXRzIHtcbiAgICAkaW5wdXQ6IHVucXVvdGUoJGlucHV0KTtcbiAgICAkaW5wdXQ6IGlmKCRwc2V1ZG8sICRpbnB1dCArIFwiOlwiICsgJHBzZXVkbywgJGlucHV0KTtcbiAgICAkbGlzdDogYXBwZW5kKCRsaXN0LCAkaW5wdXQsIGNvbW1hKTtcbiAgfVxuXG4gIEByZXR1cm4gJGxpc3Q7XG59XG4iLCJAY2hhcnNldCBcIlVURi04XCI7XG5cbi8vLyBDaGVja3MgaWYgYSBsaXN0IGNvbnRhaW5zIGEgdmFsdWUocykuXG4vLy9cbi8vLyBAYWNjZXNzIHByaXZhdGVcbi8vL1xuLy8vIEBwYXJhbSB7TGlzdH0gJGxpc3Rcbi8vLyAgIFRoZSBsaXN0IHRvIGNoZWNrIGFnYWluc3QuXG4vLy9cbi8vLyBAcGFyYW0ge0xpc3R9ICR2YWx1ZXNcbi8vLyAgIEEgc2luZ2xlIHZhbHVlIG9yIGxpc3Qgb2YgdmFsdWVzIHRvIGNoZWNrIGZvci5cbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBVc2FnZVxuLy8vICAgY29udGFpbnMoJGxpc3QsICR2YWx1ZSlcbi8vL1xuLy8vIEByZXR1cm4ge0Jvb2x9XG5cbkBmdW5jdGlvbiBjb250YWlucygkbGlzdCwgJHZhbHVlcy4uLikge1xuICBAaWYgJG91dHB1dC1ib3VyYm9uLWRlcHJlY2F0aW9uLXdhcm5pbmdzID09IHRydWUge1xuICAgIEB3YXJuIFwiW0JvdXJib25dIFtEZXByZWNhdGlvbl0gYGNvbnRhaW5zYCBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIFwiICtcbiAgICBcInJlbW92ZWQgaW4gNS4wLjAuXCI7XG4gIH1cblxuICBAZWFjaCAkdmFsdWUgaW4gJHZhbHVlcyB7XG4gICAgQGlmIHR5cGUtb2YoaW5kZXgoJGxpc3QsICR2YWx1ZSkpICE9IFwibnVtYmVyXCIge1xuICAgICAgQHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuIHRydWU7XG59XG4iLCJAY2hhcnNldCBcIlVURi04XCI7XG5cbi8vLyBDaGVja3MgaWYgYSBsaXN0IGRvZXMgbm90IGNvbnRhaW5zIGEgdmFsdWUuXG4vLy9cbi8vLyBAYWNjZXNzIHByaXZhdGVcbi8vL1xuLy8vIEBwYXJhbSB7TGlzdH0gJGxpc3Rcbi8vLyAgIFRoZSBsaXN0IHRvIGNoZWNrIGFnYWluc3QuXG4vLy9cbi8vLyBAcmV0dXJuIHtCb29sfVxuXG5AZnVuY3Rpb24gY29udGFpbnMtZmFsc3koJGxpc3QpIHtcbiAgQGlmICRvdXRwdXQtYm91cmJvbi1kZXByZWNhdGlvbi13YXJuaW5ncyA9PSB0cnVlIHtcbiAgICBAd2FybiBcIltCb3VyYm9uXSBbRGVwcmVjYXRpb25dIGBjb250YWlucy1mYWxzeWAgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSBcIiArXG4gICAgXCJyZW1vdmVkIGluIDUuMC4wLlwiO1xuICB9XG5cbiAgQGVhY2ggJGl0ZW0gaW4gJGxpc3Qge1xuICAgIEBpZiBub3QgJGl0ZW0ge1xuICAgICAgQHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gZmFsc2U7XG59XG4iLCJAY2hhcnNldCBcIlVURi04XCI7XG5cbi8vLyBDaGVja3MgZm9yIGEgdmFsaWQgQ1NTIGxlbmd0aC5cbi8vL1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkdmFsdWVcblxuQGZ1bmN0aW9uIGlzLWxlbmd0aCgkdmFsdWUpIHtcbiAgQGlmICRvdXRwdXQtYm91cmJvbi1kZXByZWNhdGlvbi13YXJuaW5ncyA9PSB0cnVlIHtcbiAgICBAd2FybiBcIltCb3VyYm9uXSBbRGVwcmVjYXRpb25dIGBpcy1sZW5ndGhgIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgXCIgK1xuICAgIFwicmVtb3ZlZCBpbiA1LjAuMC5cIjtcbiAgfVxuXG4gIEByZXR1cm4gdHlwZS1vZigkdmFsdWUpICE9IFwibnVsbFwiIGFuZCAoc3RyLXNsaWNlKCR2YWx1ZSArIFwiXCIsIDEsIDQpID09IFwiY2FsY1wiXG4gICAgICAgb3IgaW5kZXgoYXV0byBpbmhlcml0IGluaXRpYWwgMCwgJHZhbHVlKVxuICAgICAgIG9yICh0eXBlLW9mKCR2YWx1ZSkgPT0gXCJudW1iZXJcIiBhbmQgbm90KHVuaXRsZXNzKCR2YWx1ZSkpKSk7XG59XG4iLCJAY2hhcnNldCBcIlVURi04XCI7XG5cbi8vLyBQcm9ncmFtYXRpY2FsbHkgZGV0ZXJtaW5lcyB3aGV0aGVyIGEgY29sb3IgaXMgbGlnaHQgb3IgZGFyay5cbi8vL1xuLy8vIEBsaW5rIGh0dHA6Ly9yb2JvdHMudGhvdWdodGJvdC5jb20vY2xvc2VyLWxvb2stY29sb3ItbGlnaHRuZXNzXG4vLy9cbi8vLyBAcGFyYW0ge0NvbG9yIChIZXgpfSAkY29sb3Jcbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBVc2FnZVxuLy8vICAgaXMtbGlnaHQoJGNvbG9yKVxuLy8vXG4vLy8gQHJldHVybiB7Qm9vbH1cblxuQGZ1bmN0aW9uIGlzLWxpZ2h0KCRoZXgtY29sb3IpIHtcbiAgQGlmICRvdXRwdXQtYm91cmJvbi1kZXByZWNhdGlvbi13YXJuaW5ncyA9PSB0cnVlIHtcbiAgICBAd2FybiBcIltCb3VyYm9uXSBbRGVwcmVjYXRpb25dIGBpcy1saWdodGAgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSBcIiArXG4gICAgXCJyZW1vdmVkIGluIDUuMC4wLlwiO1xuICB9XG5cbiAgJC1sb2NhbC1yZWQ6IHJlZChyZ2JhKCRoZXgtY29sb3IsIDEpKTtcbiAgJC1sb2NhbC1ncmVlbjogZ3JlZW4ocmdiYSgkaGV4LWNvbG9yLCAxKSk7XG4gICQtbG9jYWwtYmx1ZTogYmx1ZShyZ2JhKCRoZXgtY29sb3IsIDEpKTtcbiAgJC1sb2NhbC1saWdodG5lc3M6ICgkLWxvY2FsLXJlZCAqIDAuMjEyNiArICQtbG9jYWwtZ3JlZW4gKiAwLjcxNTIgKyAkLWxvY2FsLWJsdWUgKiAwLjA3MjIpIC8gMjU1O1xuXG4gIEByZXR1cm4gJC1sb2NhbC1saWdodG5lc3MgPiAwLjY7XG59XG4iLCJAY2hhcnNldCBcIlVURi04XCI7XG5cbi8vLyBDaGVja3MgZm9yIGEgdmFsaWQgbnVtYmVyLlxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICR2YWx1ZVxuLy8vXG4vLy8gQHJlcXVpcmUge2Z1bmN0aW9ufSBjb250YWluc1xuXG5AZnVuY3Rpb24gaXMtbnVtYmVyKCR2YWx1ZSkge1xuICBAaWYgJG91dHB1dC1ib3VyYm9uLWRlcHJlY2F0aW9uLXdhcm5pbmdzID09IHRydWUge1xuICAgIEB3YXJuIFwiW0JvdXJib25dIFtEZXByZWNhdGlvbl0gYGlzLW51bWJlcmAgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSBcIiArXG4gICAgXCJyZW1vdmVkIGluIDUuMC4wLlwiO1xuICB9XG5cbiAgQHJldHVybiBjb250YWlucyhcIjBcIiBcIjFcIiBcIjJcIiBcIjNcIiBcIjRcIiBcIjVcIiBcIjZcIiBcIjdcIiBcIjhcIiBcIjlcIiAwIDEgMiAzIDQgNSA2IDcgOCA5LCAkdmFsdWUpO1xufVxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuXG4vLy8gQ2hlY2tzIGZvciBhIHZhbGlkIENTUyBzaXplLlxuLy8vXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICR2YWx1ZVxuLy8vXG4vLy8gQHJlcXVpcmUge2Z1bmN0aW9ufSBjb250YWluc1xuLy8vIEByZXF1aXJlIHtmdW5jdGlvbn0gaXMtbGVuZ3RoXG5cbkBmdW5jdGlvbiBpcy1zaXplKCR2YWx1ZSkge1xuICBAaWYgJG91dHB1dC1ib3VyYm9uLWRlcHJlY2F0aW9uLXdhcm5pbmdzID09IHRydWUge1xuICAgIEB3YXJuIFwiW0JvdXJib25dIFtEZXByZWNhdGlvbl0gYGlzLXNpemVgIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgXCIgK1xuICAgIFwicmVtb3ZlZCBpbiA1LjAuMC5cIjtcbiAgfVxuXG4gICR1c2VyLWRlcHJlY2F0aW9uLXdhcm5pbmdzLXNldHRpbmc6ICRvdXRwdXQtYm91cmJvbi1kZXByZWNhdGlvbi13YXJuaW5ncztcbiAgJG91dHB1dC1ib3VyYm9uLWRlcHJlY2F0aW9uLXdhcm5pbmdzOiBmYWxzZSAhZ2xvYmFsO1xuXG4gIEByZXR1cm4gaXMtbGVuZ3RoKCR2YWx1ZSlcbiAgICAgICAgICBvciBjb250YWlucyhcImZpbGxcIiBcImZpdC1jb250ZW50XCIgXCJtaW4tY29udGVudFwiIFwibWF4LWNvbnRlbnRcIiwgJHZhbHVlKTtcblxuICAkb3V0cHV0LWJvdXJib24tZGVwcmVjYXRpb24td2FybmluZ3M6ICR1c2VyLWRlcHJlY2F0aW9uLXdhcm5pbmdzLXNldHRpbmcgIWdsb2JhbDtcbn1cbiIsIi8vIENvbnZlcnQgcGl4ZWxzIHRvIGVtc1xuLy8gZWcuIGZvciBhIHJlbGF0aW9uYWwgdmFsdWUgb2YgMTJweCB3cml0ZSBlbSgxMikgd2hlbiB0aGUgcGFyZW50IGlzIDE2cHhcbi8vIGlmIHRoZSBwYXJlbnQgaXMgYW5vdGhlciB2YWx1ZSBzYXkgMjRweCB3cml0ZSBlbSgxMiwgMjQpXG5cbkBmdW5jdGlvbiBlbSgkcHh2YWwsICRiYXNlOiAkZW0tYmFzZSkge1xuICBAaWYgJG91dHB1dC1ib3VyYm9uLWRlcHJlY2F0aW9uLXdhcm5pbmdzID09IHRydWUge1xuICAgIEB3YXJuIFwiW0JvdXJib25dIFtEZXByZWNhdGlvbl0gYGVtYCBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIFwiICtcbiAgICBcInJlbW92ZWQgaW4gNS4wLjAuXCI7XG4gIH1cblxuICAkdXNlci1kZXByZWNhdGlvbi13YXJuaW5ncy1zZXR0aW5nOiAkb3V0cHV0LWJvdXJib24tZGVwcmVjYXRpb24td2FybmluZ3M7XG4gICRvdXRwdXQtYm91cmJvbi1kZXByZWNhdGlvbi13YXJuaW5nczogZmFsc2UgIWdsb2JhbDtcblxuICBAaWYgbm90IHVuaXRsZXNzKCRweHZhbCkge1xuICAgICRweHZhbDogc3RyaXAtdW5pdHMoJHB4dmFsKTtcbiAgfVxuICBAaWYgbm90IHVuaXRsZXNzKCRiYXNlKSB7XG4gICAgJGJhc2U6IHN0cmlwLXVuaXRzKCRiYXNlKTtcbiAgfVxuXG4gICRvdXRwdXQtYm91cmJvbi1kZXByZWNhdGlvbi13YXJuaW5nczogJHVzZXItZGVwcmVjYXRpb24td2FybmluZ3Mtc2V0dGluZyAhZ2xvYmFsO1xuXG4gIEByZXR1cm4gKCRweHZhbCAvICRiYXNlKSAqIDFlbTtcbn1cbiIsIi8vIENvbnZlcnQgcGl4ZWxzIHRvIHJlbXNcbi8vIGVnLiBmb3IgYSByZWxhdGlvbmFsIHZhbHVlIG9mIDEycHggd3JpdGUgcmVtKDEyKVxuLy8gQXNzdW1lcyAkZW0tYmFzZSBpcyB0aGUgZm9udC1zaXplIG9mIDxodG1sPlxuXG5AZnVuY3Rpb24gcmVtKCRweHZhbCkge1xuICBAaWYgJG91dHB1dC1ib3VyYm9uLWRlcHJlY2F0aW9uLXdhcm5pbmdzID09IHRydWUge1xuICAgIEB3YXJuIFwiW0JvdXJib25dIFtEZXByZWNhdGlvbl0gYHJlbWAgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSBcIiArXG4gICAgXCJyZW1vdmVkIGluIDUuMC4wLlwiO1xuICB9XG5cbiAgJHVzZXItZGVwcmVjYXRpb24td2FybmluZ3Mtc2V0dGluZzogJG91dHB1dC1ib3VyYm9uLWRlcHJlY2F0aW9uLXdhcm5pbmdzO1xuICAkb3V0cHV0LWJvdXJib24tZGVwcmVjYXRpb24td2FybmluZ3M6IGZhbHNlICFnbG9iYWw7XG5cbiAgQGlmIG5vdCB1bml0bGVzcygkcHh2YWwpIHtcbiAgICAkcHh2YWw6IHN0cmlwLXVuaXRzKCRweHZhbCk7XG4gIH1cblxuICAkYmFzZTogJGVtLWJhc2U7XG4gIEBpZiBub3QgdW5pdGxlc3MoJGJhc2UpIHtcbiAgICAkYmFzZTogc3RyaXAtdW5pdHMoJGJhc2UpO1xuICB9XG5cbiAgJG91dHB1dC1ib3VyYm9uLWRlcHJlY2F0aW9uLXdhcm5pbmdzOiAkdXNlci1kZXByZWNhdGlvbi13YXJuaW5ncy1zZXR0aW5nICFnbG9iYWw7XG5cbiAgQHJldHVybiAoJHB4dmFsIC8gJGJhc2UpICogMXJlbTtcbn1cbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcblxuLy8vIE1peGVzIGEgY29sb3Igd2l0aCBibGFjay5cbi8vL1xuLy8vIEBwYXJhbSB7Q29sb3J9ICRjb2xvclxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXIgKFBlcmNlbnRhZ2UpfSAkcGVyY2VudFxuLy8vICAgVGhlIGFtb3VudCBvZiBibGFjayB0byBiZSBtaXhlZCBpbi5cbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBVc2FnZVxuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBzaGFkZSgjZmZiYjUyLCA2MCUpO1xuLy8vICAgfVxuLy8vXG4vLy8gQGV4YW1wbGUgY3NzIC0gQ1NTIE91dHB1dFxuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNjY0YTIwO1xuLy8vICAgfVxuLy8vXG4vLy8gQHJldHVybiB7Q29sb3J9XG5cbkBmdW5jdGlvbiBzaGFkZSgkY29sb3IsICRwZXJjZW50KSB7XG4gIEByZXR1cm4gbWl4KCMwMDAsICRjb2xvciwgJHBlcmNlbnQpO1xufVxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuXG4vLy8gU3RyaXBzIHRoZSB1bml0IGZyb20gYSBudW1iZXIuXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlciAoV2l0aCBVbml0KX0gJHZhbHVlXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gVXNhZ2Vcbi8vLyAgICRkaW1lbnNpb246IHN0cmlwLXVuaXRzKDEwZW0pO1xuLy8vXG4vLy8gQGV4YW1wbGUgY3NzIC0gQ1NTIE91dHB1dFxuLy8vICAgJGRpbWVuc2lvbjogMTA7XG4vLy9cbi8vLyBAcmV0dXJuIHtOdW1iZXIgKFVuaXRsZXNzKX1cblxuQGZ1bmN0aW9uIHN0cmlwLXVuaXRzKCR2YWx1ZSkge1xuICBAaWYgJG91dHB1dC1ib3VyYm9uLWRlcHJlY2F0aW9uLXdhcm5pbmdzID09IHRydWUge1xuICAgIEB3YXJuIFwiW0JvdXJib25dIFtEZXByZWNhdGlvbl0gYHN0cmlwLXVuaXRzYCBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIFwiICtcbiAgICBcInJlbW92ZWQgaW4gNS4wLjAgYW5kIHJlcGxhY2VkIGJ5IHRoZSBgc3RyaXAtdW5pdGAgZnVuY3Rpb24uXCI7XG4gIH1cblxuICBAcmV0dXJuICgkdmFsdWUgLyAoJHZhbHVlICogMCArIDEpKTtcbn1cbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcblxuLy8vIE1peGVzIGEgY29sb3Igd2l0aCB3aGl0ZS5cbi8vL1xuLy8vIEBwYXJhbSB7Q29sb3J9ICRjb2xvclxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXIgKFBlcmNlbnRhZ2UpfSAkcGVyY2VudFxuLy8vICAgVGhlIGFtb3VudCBvZiB3aGl0ZSB0byBiZSBtaXhlZCBpbi5cbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBVc2FnZVxuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0aW50KCM2ZWNhYTYsIDQwJSk7XG4vLy8gICB9XG4vLy9cbi8vLyBAZXhhbXBsZSBjc3MgLSBDU1MgT3V0cHV0XG4vLy8gICAuZWxlbWVudCB7XG4vLy8gICAgIGJhY2tncm91bmQtY29sb3I6ICNhOGRmYzk7XG4vLy8gICB9XG4vLy9cbi8vLyBAcmV0dXJuIHtDb2xvcn1cblxuQGZ1bmN0aW9uIHRpbnQoJGNvbG9yLCAkcGVyY2VudCkge1xuICBAcmV0dXJuIG1peCgjZmZmLCAkY29sb3IsICRwZXJjZW50KTtcbn1cbiIsIi8vIFJldHVybiB2ZW5kb3ItcHJlZml4ZWQgcHJvcGVydHkgbmFtZXMgaWYgYXBwcm9wcmlhdGVcbi8vIEV4YW1wbGU6IHRyYW5zaXRpb24tcHJvcGVydHktbmFtZXMoKHRyYW5zZm9ybSwgY29sb3IsIGJhY2tncm91bmQpLCBtb3opIC0+IC1tb3otdHJhbnNmb3JtLCBjb2xvciwgYmFja2dyb3VuZFxuLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovL1xuQGZ1bmN0aW9uIHRyYW5zaXRpb24tcHJvcGVydHktbmFtZXMoJHByb3BzLCAkdmVuZG9yOiBmYWxzZSkge1xuICBAaWYgJG91dHB1dC1ib3VyYm9uLWRlcHJlY2F0aW9uLXdhcm5pbmdzID09IHRydWUge1xuICAgIEB3YXJuIFwiW0JvdXJib25dIFtEZXByZWNhdGlvbl0gYHRyYW5zaXRpb24tcHJvcGVydHktbmFtZXNgIGlzIGRlcHJlY2F0ZWQgXCIgK1xuICAgIFwiYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiA1LjAuMC5cIjtcbiAgfVxuXG4gICR1c2VyLWRlcHJlY2F0aW9uLXdhcm5pbmdzLXNldHRpbmc6ICRvdXRwdXQtYm91cmJvbi1kZXByZWNhdGlvbi13YXJuaW5ncztcbiAgJG91dHB1dC1ib3VyYm9uLWRlcHJlY2F0aW9uLXdhcm5pbmdzOiBmYWxzZSAhZ2xvYmFsO1xuXG4gICRuZXctcHJvcHM6ICgpO1xuXG4gIEBlYWNoICRwcm9wIGluICRwcm9wcyB7XG4gICAgJG5ldy1wcm9wczogYXBwZW5kKCRuZXctcHJvcHMsIHRyYW5zaXRpb24tcHJvcGVydHktbmFtZSgkcHJvcCwgJHZlbmRvciksIGNvbW1hKTtcbiAgfVxuXG4gICRvdXRwdXQtYm91cmJvbi1kZXByZWNhdGlvbi13YXJuaW5nczogJHVzZXItZGVwcmVjYXRpb24td2FybmluZ3Mtc2V0dGluZyAhZ2xvYmFsO1xuXG4gIEByZXR1cm4gJG5ldy1wcm9wcztcbn1cblxuQGZ1bmN0aW9uIHRyYW5zaXRpb24tcHJvcGVydHktbmFtZSgkcHJvcCwgJHZlbmRvcjogZmFsc2UpIHtcbiAgQGlmICRvdXRwdXQtYm91cmJvbi1kZXByZWNhdGlvbi13YXJuaW5ncyA9PSB0cnVlIHtcbiAgICBAd2FybiBcIltCb3VyYm9uXSBbRGVwcmVjYXRpb25dIGB0cmFuc2l0aW9uLXByb3BlcnR5LW5hbWVgIGlzIGRlcHJlY2F0ZWQgXCIgK1xuICAgIFwiYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiA1LjAuMC5cIjtcbiAgfVxuXG4gIC8vIHB1dCBvdGhlciBwcm9wZXJ0aWVzIHRoYXQgbmVlZCB0byBiZSBwcmVmaXhlZCBoZXJlIGFzd2VsbFxuICBAaWYgJHZlbmRvciBhbmQgJHByb3AgPT0gdHJhbnNmb3JtIHtcbiAgICBAcmV0dXJuIHVucXVvdGUoJy0nKyR2ZW5kb3IrJy0nKyRwcm9wKTtcbiAgfVxuICBAZWxzZSB7XG4gICAgQHJldHVybiAkcHJvcDtcbiAgfVxufVxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuXG4vLy8gQ29udmVydHMgc2hvcnRoYW5kIHRvIHRoZSA0LXZhbHVlIHN5bnRheC5cbi8vL1xuLy8vIEBwYXJhbSB7TGlzdH0gJHNob3J0aGFuZFxuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFVzYWdlXG4vLy8gICAuZWxlbWVudCB7XG4vLy8gICAgIG1hcmdpbjogdW5wYWNrKDFlbSAyZW0pO1xuLy8vICAgfVxuLy8vXG4vLy8gQGV4YW1wbGUgY3NzIC0gQ1NTIE91dHB1dFxuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBtYXJnaW46IDFlbSAyZW0gMWVtIDJlbTtcbi8vLyAgIH1cblxuQGZ1bmN0aW9uIHVucGFjaygkc2hvcnRoYW5kKSB7XG4gIEBpZiAkb3V0cHV0LWJvdXJib24tZGVwcmVjYXRpb24td2FybmluZ3MgPT0gdHJ1ZSB7XG4gICAgQHdhcm4gXCJbQm91cmJvbl0gW0RlcHJlY2F0aW9uXSBgdW5wYWNrYCBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIFwiICtcbiAgICBcInJlbW92ZWQgaW4gNS4wLjAuXCI7XG4gIH1cblxuICBAaWYgbGVuZ3RoKCRzaG9ydGhhbmQpID09IDEge1xuICAgIEByZXR1cm4gbnRoKCRzaG9ydGhhbmQsIDEpIG50aCgkc2hvcnRoYW5kLCAxKSBudGgoJHNob3J0aGFuZCwgMSkgbnRoKCRzaG9ydGhhbmQsIDEpO1xuICB9IEBlbHNlIGlmIGxlbmd0aCgkc2hvcnRoYW5kKSA9PSAyIHtcbiAgICBAcmV0dXJuIG50aCgkc2hvcnRoYW5kLCAxKSBudGgoJHNob3J0aGFuZCwgMikgbnRoKCRzaG9ydGhhbmQsIDEpIG50aCgkc2hvcnRoYW5kLCAyKTtcbiAgfSBAZWxzZSBpZiBsZW5ndGgoJHNob3J0aGFuZCkgPT0gMyB7XG4gICAgQHJldHVybiBudGgoJHNob3J0aGFuZCwgMSkgbnRoKCRzaG9ydGhhbmQsIDIpIG50aCgkc2hvcnRoYW5kLCAzKSBudGgoJHNob3J0aGFuZCwgMik7XG4gIH0gQGVsc2Uge1xuICAgIEByZXR1cm4gJHNob3J0aGFuZDtcbiAgfVxufVxuIiwiLy8gU2NhbGluZyBWYXJpYWJsZXNcbiRnb2xkZW46ICAgICAgICAgICAxLjYxODtcbiRtaW5vci1zZWNvbmQ6ICAgICAxLjA2NztcbiRtYWpvci1zZWNvbmQ6ICAgICAxLjEyNTtcbiRtaW5vci10aGlyZDogICAgICAxLjI7XG4kbWFqb3ItdGhpcmQ6ICAgICAgMS4yNTtcbiRwZXJmZWN0LWZvdXJ0aDogICAxLjMzMztcbiRhdWdtZW50ZWQtZm91cnRoOiAxLjQxNDtcbiRwZXJmZWN0LWZpZnRoOiAgICAxLjU7XG4kbWlub3Itc2l4dGg6ICAgICAgMS42O1xuJG1ham9yLXNpeHRoOiAgICAgIDEuNjY3O1xuJG1pbm9yLXNldmVudGg6ICAgIDEuNzc4O1xuJG1ham9yLXNldmVudGg6ICAgIDEuODc1O1xuJG9jdGF2ZTogICAgICAgICAgIDI7XG4kbWFqb3ItdGVudGg6ICAgICAgMi41O1xuJG1ham9yLWVsZXZlbnRoOiAgIDIuNjY3O1xuJG1ham9yLXR3ZWxmdGg6ICAgIDM7XG4kZG91YmxlLW9jdGF2ZTogICAgNDtcblxuJHVzZXItb3V0cHV0LWRlcHJlY2F0aW9uLXdhcm5pbmdzLXNldHRpbmc6ICRvdXRwdXQtYm91cmJvbi1kZXByZWNhdGlvbi13YXJuaW5ncztcbiRvdXRwdXQtYm91cmJvbi1kZXByZWNhdGlvbi13YXJuaW5nczogZmFsc2U7XG5cbiRtb2R1bGFyLXNjYWxlLXJhdGlvOiAkcGVyZmVjdC1mb3VydGggIWRlZmF1bHQ7XG4kbW9kdWxhci1zY2FsZS1iYXNlOiBlbSgkZW0tYmFzZSkgIWRlZmF1bHQ7XG5cbiRvdXRwdXQtYm91cmJvbi1kZXByZWNhdGlvbi13YXJuaW5nczogJHVzZXItb3V0cHV0LWRlcHJlY2F0aW9uLXdhcm5pbmdzLXNldHRpbmc7XG5cbkBmdW5jdGlvbiBtb2R1bGFyLXNjYWxlKCRpbmNyZW1lbnQsICR2YWx1ZTogJG1vZHVsYXItc2NhbGUtYmFzZSwgJHJhdGlvOiAkbW9kdWxhci1zY2FsZS1yYXRpbykge1xuICAkdjE6IG50aCgkdmFsdWUsIDEpO1xuICAkdjI6IG50aCgkdmFsdWUsIGxlbmd0aCgkdmFsdWUpKTtcbiAgJHZhbHVlOiAkdjE7XG5cbiAgLy8gc2NhbGUgJHYyIHRvIGp1c3QgYWJvdmUgJHYxXG4gIEB3aGlsZSAkdjIgPiAkdjEge1xuICAgICR2MjogKCR2MiAvICRyYXRpbyk7IC8vIHdpbGwgYmUgb2ZmLWJ5LTFcbiAgfVxuICBAd2hpbGUgJHYyIDwgJHYxIHtcbiAgICAkdjI6ICgkdjIgKiAkcmF0aW8pOyAvLyB3aWxsIGZpeCBvZmYtYnktMVxuICB9XG5cbiAgLy8gY2hlY2sgQUZURVIgc2NhbGluZyAkdjIgdG8gcHJldmVudCBkb3VibGUtY291bnRpbmcgY29ybmVyLWNhc2VcbiAgJGRvdWJsZS1zdHJhbmRlZDogJHYyID4gJHYxO1xuXG4gIEBpZiAkaW5jcmVtZW50ID4gMCB7XG4gICAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAkaW5jcmVtZW50IHtcbiAgICAgIEBpZiAkZG91YmxlLXN0cmFuZGVkIGFuZCAoJHYxICogJHJhdGlvKSA+ICR2MiB7XG4gICAgICAgICR2YWx1ZTogJHYyO1xuICAgICAgICAkdjI6ICgkdjIgKiAkcmF0aW8pO1xuICAgICAgfSBAZWxzZSB7XG4gICAgICAgICR2MTogKCR2MSAqICRyYXRpbyk7XG4gICAgICAgICR2YWx1ZTogJHYxO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEBpZiAkaW5jcmVtZW50IDwgMCB7XG4gICAgLy8gYWRqdXN0ICR2MiB0byBqdXN0IGJlbG93ICR2MVxuICAgIEBpZiAkZG91YmxlLXN0cmFuZGVkIHtcbiAgICAgICR2MjogKCR2MiAvICRyYXRpbyk7XG4gICAgfVxuXG4gICAgQGZvciAkaSBmcm9tICRpbmNyZW1lbnQgdGhyb3VnaCAtMSB7XG4gICAgICBAaWYgJGRvdWJsZS1zdHJhbmRlZCBhbmQgKCR2MSAvICRyYXRpbykgPCAkdjIge1xuICAgICAgICAkdmFsdWU6ICR2MjtcbiAgICAgICAgJHYyOiAoJHYyIC8gJHJhdGlvKTtcbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICAkdjE6ICgkdjEgLyAkcmF0aW8pO1xuICAgICAgICAkdmFsdWU6ICR2MTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICR2YWx1ZTtcbn1cbiIsIi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy9cbi8vIEhlbHBlciBmdW5jdGlvbiBmb3Igc3RyLXRvLW51bSBmbi5cbi8vIFNvdXJjZTogaHR0cDovL3Nhc3NtZWlzdGVyLmNvbS9naXN0Lzk2NDc0MDhcbi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy9cbkBmdW5jdGlvbiBfY29udmVydC11bml0cygkbnVtYmVyLCAkdW5pdCkge1xuICBAaWYgJG91dHB1dC1ib3VyYm9uLWRlcHJlY2F0aW9uLXdhcm5pbmdzID09IHRydWUge1xuICAgIEB3YXJuIFwiW0JvdXJib25dIFtEZXByZWNhdGlvbl0gYF9jb252ZXJ0LXVuaXRzYCBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIFwiICtcbiAgICBcImJlIHJlbW92ZWQgaW4gNS4wLjAuXCI7XG4gIH1cblxuICAkc3RyaW5nczogXCJweFwiLCBcImNtXCIsIFwibW1cIiwgXCIlXCIsIFwiY2hcIiwgXCJwaWNhXCIsIFwiaW5cIiwgXCJlbVwiLCBcInJlbVwiLCBcInB0XCIsIFwicGNcIiwgXCJleFwiLCBcInZ3XCIsIFwidmhcIiwgXCJ2bWluXCIsIFwidm1heFwiLCBcImRlZ1wiLCBcInJhZFwiLCBcImdyYWRcIiwgXCJ0dXJuXCI7XG4gICR1bml0czogICAxcHgsIDFjbSwgMW1tLCAxJSwgMWNoLCAxcGljYSwgMWluLCAxZW0sIDFyZW0sIDFwdCwgMXBjLCAxZXgsIDF2dywgMXZoLCAxdm1pbiwgMXZtYXgsIDFkZWcsIDFyYWQsIDFncmFkLCAxdHVybjtcbiAgJGluZGV4OiBpbmRleCgkc3RyaW5ncywgJHVuaXQpO1xuXG4gIEBpZiBub3QgJGluZGV4IHtcbiAgICBAd2FybiBcIlVua25vd24gdW5pdCBgI3skdW5pdH1gLlwiO1xuICAgIEByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBAaWYgdHlwZS1vZigkbnVtYmVyKSAhPSBcIm51bWJlclwiIHtcbiAgICBAd2FybiBcImAjeyRudW1iZXJ9IGlzIG5vdCBhIG51bWJlcmBcIjtcbiAgICBAcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgQHJldHVybiAkbnVtYmVyICogbnRoKCR1bml0cywgJGluZGV4KTtcbn1cbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcblxuLy8vIERpcmVjdGlvbmFsLXByb3BlcnR5IG1peGlucyBhcmUgc2hvcnRoYW5kcyBmb3Igd3JpdGluZyBwcm9wZXJ0aWVzIGxpa2UgdGhlIGZvbGxvd2luZ1xuLy8vXG4vLy8gQGlnbm9yZSBZb3UgY2FuIGFsc28gdXNlIGBmYWxzZWAgaW5zdGVhZCBvZiBgbnVsbGAuXG4vLy9cbi8vLyBAcGFyYW0ge0xpc3R9ICR2YWxzXG4vLy8gICBMaXN0IG9mIGRpcmVjdGlvbmFsIHZhbHVlc1xuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFVzYWdlXG4vLy8gICAuZWxlbWVudCB7XG4vLy8gICAgIEBpbmNsdWRlIGJvcmRlci1zdHlsZShkb3R0ZWQgbnVsbCk7XG4vLy8gICAgIEBpbmNsdWRlIG1hcmdpbihudWxsIDAgMTBweCk7XG4vLy8gICB9XG4vLy9cbi8vLyBAZXhhbXBsZSBjc3MgLSBDU1MgT3V0cHV0XG4vLy8gICAuZWxlbWVudCB7XG4vLy8gICAgIGJvcmRlci1ib3R0b20tc3R5bGU6IGRvdHRlZDtcbi8vLyAgICAgYm9yZGVyLXRvcC1zdHlsZTogZG90dGVkO1xuLy8vICAgICBtYXJnaW4tYm90dG9tOiAxMHB4O1xuLy8vICAgICBtYXJnaW4tbGVmdDogMDtcbi8vLyAgICAgbWFyZ2luLXJpZ2h0OiAwO1xuLy8vICAgfVxuLy8vXG4vLy8gQHJlcXVpcmUge2Z1bmN0aW9ufSBjb250YWlucy1mYWxzeVxuLy8vXG4vLy8gQHJldHVybiB7TGlzdH1cblxuQGZ1bmN0aW9uIGNvbGxhcHNlLWRpcmVjdGlvbmFscygkdmFscykge1xuICBAaWYgJG91dHB1dC1ib3VyYm9uLWRlcHJlY2F0aW9uLXdhcm5pbmdzID09IHRydWUge1xuICAgIEB3YXJuIFwiW0JvdXJib25dIFtEZXByZWNhdGlvbl0gYGNvbGxhcHNlLWRpcmVjdGlvbmFsc2AgaXMgZGVwcmVjYXRlZCBhbmQgXCIgK1xuICAgIFwid2lsbCBiZSByZW1vdmVkIGluIDUuMC4wLlwiO1xuICB9XG5cbiAgJG91dHB1dDogbnVsbDtcblxuICAkYTogbnRoKCR2YWxzLCAxKTtcbiAgJGI6IGlmKGxlbmd0aCgkdmFscykgPCAyLCAkYSwgbnRoKCR2YWxzLCAyKSk7XG4gICRjOiBpZihsZW5ndGgoJHZhbHMpIDwgMywgJGEsIG50aCgkdmFscywgMykpO1xuICAkZDogaWYobGVuZ3RoKCR2YWxzKSA8IDIsICRhLCBudGgoJHZhbHMsIGlmKGxlbmd0aCgkdmFscykgPCA0LCAyLCA0KSkpO1xuXG4gIEBpZiAkYSA9PSAwIHsgJGE6IDA7IH1cbiAgQGlmICRiID09IDAgeyAkYjogMDsgfVxuICBAaWYgJGMgPT0gMCB7ICRjOiAwOyB9XG4gIEBpZiAkZCA9PSAwIHsgJGQ6IDA7IH1cblxuICBAaWYgJGEgPT0gJGIgYW5kICRhID09ICRjIGFuZCAkYSA9PSAkZCB7ICRvdXRwdXQ6ICRhOyAgICAgICAgICB9XG4gIEBlbHNlIGlmICRhID09ICRjIGFuZCAkYiA9PSAkZCAgICAgICAgIHsgJG91dHB1dDogJGEgJGI7ICAgICAgIH1cbiAgQGVsc2UgaWYgJGIgPT0gJGQgICAgICAgICAgICAgICAgICAgICAgeyAkb3V0cHV0OiAkYSAkYiAkYzsgICAgfVxuICBAZWxzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ICRvdXRwdXQ6ICRhICRiICRjICRkOyB9XG5cbiAgQHJldHVybiAkb3V0cHV0O1xufVxuXG4vLy8gT3V0cHV0IGRpcmVjdGlvbmFsIHByb3BlcnRpZXMsIGZvciBpbnN0YW5jZSBgbWFyZ2luYC5cbi8vL1xuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRwcmVcbi8vLyAgIFByZWZpeCB0byB1c2Vcbi8vLyBAcGFyYW0ge1N0cmluZ30gJHN1ZlxuLy8vICAgU3VmZml4IHRvIHVzZVxuLy8vIEBwYXJhbSB7TGlzdH0gJHZhbHNcbi8vLyAgIExpc3Qgb2YgdmFsdWVzXG4vLy9cbi8vLyBAcmVxdWlyZSB7ZnVuY3Rpb259IGNvbGxhcHNlLWRpcmVjdGlvbmFsc1xuLy8vIEByZXF1aXJlIHtmdW5jdGlvbn0gY29udGFpbnMtZmFsc3lcblxuQG1peGluIGRpcmVjdGlvbmFsLXByb3BlcnR5KCRwcmUsICRzdWYsICR2YWxzKSB7XG4gIEBpbmNsdWRlIF9ib3VyYm9uLWRlcHJlY2F0ZShcImRpcmVjdGlvbmFsLXByb3BlcnR5XCIpO1xuXG4gICR1c2VyLWRlcHJlY2F0aW9uLXdhcm5pbmdzLXNldHRpbmc6ICRvdXRwdXQtYm91cmJvbi1kZXByZWNhdGlvbi13YXJuaW5ncztcbiAgJG91dHB1dC1ib3VyYm9uLWRlcHJlY2F0aW9uLXdhcm5pbmdzOiBmYWxzZSAhZ2xvYmFsO1xuXG4gIC8vIFByb3BlcnR5IE5hbWVzXG4gICR0b3A6ICAgICRwcmUgKyBcIi10b3BcIiAgICArIGlmKCRzdWYsIFwiLSN7JHN1Zn1cIiwgXCJcIik7XG4gICRib3R0b206ICRwcmUgKyBcIi1ib3R0b21cIiArIGlmKCRzdWYsIFwiLSN7JHN1Zn1cIiwgXCJcIik7XG4gICRsZWZ0OiAgICRwcmUgKyBcIi1sZWZ0XCIgICArIGlmKCRzdWYsIFwiLSN7JHN1Zn1cIiwgXCJcIik7XG4gICRyaWdodDogICRwcmUgKyBcIi1yaWdodFwiICArIGlmKCRzdWYsIFwiLSN7JHN1Zn1cIiwgXCJcIik7XG4gICRhbGw6ICAgICRwcmUgKyAgICAgICAgICAgICBpZigkc3VmLCBcIi0jeyRzdWZ9XCIsIFwiXCIpO1xuXG4gICR2YWxzOiBjb2xsYXBzZS1kaXJlY3Rpb25hbHMoJHZhbHMpO1xuXG4gIEBpZiBjb250YWlucy1mYWxzeSgkdmFscykge1xuICAgIEBpZiBudGgoJHZhbHMsIDEpIHsgI3skdG9wfTogbnRoKCR2YWxzLCAxKTsgfVxuXG4gICAgQGlmIGxlbmd0aCgkdmFscykgPT0gMSB7XG4gICAgICBAaWYgbnRoKCR2YWxzLCAxKSB7ICN7JHJpZ2h0fTogbnRoKCR2YWxzLCAxKTsgfVxuICAgIH0gQGVsc2Uge1xuICAgICAgQGlmIG50aCgkdmFscywgMikgeyAjeyRyaWdodH06IG50aCgkdmFscywgMik7IH1cbiAgICB9XG5cbiAgICBAaWYgbGVuZ3RoKCR2YWxzKSA9PSAyIHtcbiAgICAgIEBpZiBudGgoJHZhbHMsIDEpIHsgI3skYm90dG9tfTogbnRoKCR2YWxzLCAxKTsgfVxuICAgICAgQGlmIG50aCgkdmFscywgMikgeyAjeyRsZWZ0fTogICBudGgoJHZhbHMsIDIpOyB9XG4gICAgfSBAZWxzZSBpZiBsZW5ndGgoJHZhbHMpID09IDMge1xuICAgICAgQGlmIG50aCgkdmFscywgMykgeyAjeyRib3R0b219OiBudGgoJHZhbHMsIDMpOyB9XG4gICAgICBAaWYgbnRoKCR2YWxzLCAyKSB7ICN7JGxlZnR9OiAgIG50aCgkdmFscywgMik7IH1cbiAgICB9IEBlbHNlIGlmIGxlbmd0aCgkdmFscykgPT0gNCB7XG4gICAgICBAaWYgbnRoKCR2YWxzLCAzKSB7ICN7JGJvdHRvbX06IG50aCgkdmFscywgMyk7IH1cbiAgICAgIEBpZiBudGgoJHZhbHMsIDQpIHsgI3skbGVmdH06ICAgbnRoKCR2YWxzLCA0KTsgfVxuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgI3skYWxsfTogJHZhbHM7XG4gIH1cblxuICAkb3V0cHV0LWJvdXJib24tZGVwcmVjYXRpb24td2FybmluZ3M6ICR1c2VyLWRlcHJlY2F0aW9uLXdhcm5pbmdzLXNldHRpbmcgIWdsb2JhbDtcbn1cbiIsIi8vIFVzZWQgZm9yIGNyZWF0aW5nIHRoZSBzb3VyY2Ugc3RyaW5nIGZvciBmb250cyB1c2luZyBAZm9udC1mYWNlXG4vLyBSZWZlcmVuY2U6IGh0dHA6Ly9nb28uZ2wvUnUxYktQXG5cbkBmdW5jdGlvbiBmb250LXVybC1wcmVmaXhlcigkYXNzZXQtcGlwZWxpbmUpIHtcbiAgQGlmICRvdXRwdXQtYm91cmJvbi1kZXByZWNhdGlvbi13YXJuaW5ncyA9PSB0cnVlIHtcbiAgICBAd2FybiBcIltCb3VyYm9uXSBbRGVwcmVjYXRpb25dIGBmb250LXVybC1wcmVmaXhlcmAgaXMgZGVwcmVjYXRlZCBhbmQgXCIgK1xuICAgIFwid2lsbCBiZSByZW1vdmVkIGluIDUuMC4wLlwiO1xuICB9XG5cbiAgQGlmICRhc3NldC1waXBlbGluZSA9PSB0cnVlIHtcbiAgICBAcmV0dXJuIGZvbnQtdXJsO1xuICB9IEBlbHNlIHtcbiAgICBAcmV0dXJuIHVybDtcbiAgfVxufVxuXG5AZnVuY3Rpb24gZm9udC1zb3VyY2UtZGVjbGFyYXRpb24oXG4gICRmb250LWZhbWlseSxcbiAgJGZpbGUtcGF0aCxcbiAgJGFzc2V0LXBpcGVsaW5lLFxuICAkZmlsZS1mb3JtYXRzLFxuICAkZm9udC11cmwpIHtcblxuICBAaWYgJG91dHB1dC1ib3VyYm9uLWRlcHJlY2F0aW9uLXdhcm5pbmdzID09IHRydWUge1xuICAgIEB3YXJuIFwiW0JvdXJib25dIFtEZXByZWNhdGlvbl0gYGZvbnQtc291cmNlLWRlY2xhcmF0aW9uYCBpcyBkZXByZWNhdGVkIFwiICtcbiAgICBcImFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gNS4wLjAuXCI7XG4gIH1cblxuICAkc3JjOiAoKTtcblxuICAkZm9ybWF0cy1tYXA6IChcbiAgICBlb3Q6ICAgXCIjeyRmaWxlLXBhdGh9LmVvdD8jaWVmaXhcIiBmb3JtYXQoXCJlbWJlZGRlZC1vcGVudHlwZVwiKSxcbiAgICB3b2ZmMjogXCIjeyRmaWxlLXBhdGh9LndvZmYyXCIgZm9ybWF0KFwid29mZjJcIiksXG4gICAgd29mZjogIFwiI3skZmlsZS1wYXRofS53b2ZmXCIgZm9ybWF0KFwid29mZlwiKSxcbiAgICB0dGY6ICAgXCIjeyRmaWxlLXBhdGh9LnR0ZlwiIGZvcm1hdChcInRydWV0eXBlXCIpLFxuICAgIHN2ZzogICBcIiN7JGZpbGUtcGF0aH0uc3ZnIyN7JGZvbnQtZmFtaWx5fVwiIGZvcm1hdChcInN2Z1wiKVxuICApO1xuXG4gIEBlYWNoICRrZXksICR2YWx1ZXMgaW4gJGZvcm1hdHMtbWFwIHtcbiAgICBAaWYgY29udGFpbnMoJGZpbGUtZm9ybWF0cywgJGtleSkge1xuICAgICAgJGZpbGUtcGF0aDogbnRoKCR2YWx1ZXMsIDEpO1xuICAgICAgJGZvbnQtZm9ybWF0OiBudGgoJHZhbHVlcywgMik7XG5cbiAgICAgIEBpZiAkYXNzZXQtcGlwZWxpbmUgPT0gdHJ1ZSB7XG4gICAgICAgICRzcmM6IGFwcGVuZCgkc3JjLCBmb250LXVybCgkZmlsZS1wYXRoKSAkZm9udC1mb3JtYXQsIGNvbW1hKTtcbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICAkc3JjOiBhcHBlbmQoJHNyYywgdXJsKCRmaWxlLXBhdGgpICRmb250LWZvcm1hdCwgY29tbWEpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJHNyYztcbn1cbiIsIkBmdW5jdGlvbiBfZ3JhZGllbnQtcG9zaXRpb25zLXBhcnNlcigkZ3JhZGllbnQtdHlwZSwgJGdyYWRpZW50LXBvc2l0aW9ucykge1xuICBAaWYgJG91dHB1dC1ib3VyYm9uLWRlcHJlY2F0aW9uLXdhcm5pbmdzID09IHRydWUge1xuICAgIEB3YXJuIFwiW0JvdXJib25dIFtEZXByZWNhdGlvbl0gYF9ncmFkaWVudC1wb3NpdGlvbnMtcGFyc2VyYCBpcyBcIiArXG4gICAgXCJkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gNS4wLjAuXCI7XG4gIH1cblxuICAkdXNlci1kZXByZWNhdGlvbi13YXJuaW5ncy1zZXR0aW5nOiAkb3V0cHV0LWJvdXJib24tZGVwcmVjYXRpb24td2FybmluZ3M7XG4gICRvdXRwdXQtYm91cmJvbi1kZXByZWNhdGlvbi13YXJuaW5nczogZmFsc2UgIWdsb2JhbDtcblxuICBAaWYgJGdyYWRpZW50LXBvc2l0aW9uc1xuICBhbmQgKCRncmFkaWVudC10eXBlID09IGxpbmVhcilcbiAgYW5kICh0eXBlLW9mKCRncmFkaWVudC1wb3NpdGlvbnMpICE9IGNvbG9yKSB7XG4gICAgJGdyYWRpZW50LXBvc2l0aW9uczogX2xpbmVhci1wb3NpdGlvbnMtcGFyc2VyKCRncmFkaWVudC1wb3NpdGlvbnMpO1xuICB9XG4gIEBlbHNlIGlmICRncmFkaWVudC1wb3NpdGlvbnNcbiAgYW5kICgkZ3JhZGllbnQtdHlwZSA9PSByYWRpYWwpXG4gIGFuZCAodHlwZS1vZigkZ3JhZGllbnQtcG9zaXRpb25zKSAhPSBjb2xvcikge1xuICAgICRncmFkaWVudC1wb3NpdGlvbnM6IF9yYWRpYWwtcG9zaXRpb25zLXBhcnNlcigkZ3JhZGllbnQtcG9zaXRpb25zKTtcbiAgfVxuXG4gICRvdXRwdXQtYm91cmJvbi1kZXByZWNhdGlvbi13YXJuaW5nczogJHVzZXItZGVwcmVjYXRpb24td2FybmluZ3Mtc2V0dGluZyAhZ2xvYmFsO1xuXG4gIEByZXR1cm4gJGdyYWRpZW50LXBvc2l0aW9ucztcbn1cbiIsIi8vIFByaXZhdGUgZnVuY3Rpb24gZm9yIGxpbmVhci1ncmFkaWVudC1wYXJzZXJcbkBmdW5jdGlvbiBfbGluZWFyLWFuZ2xlLXBhcnNlcigkaW1hZ2UsICRmaXJzdC12YWwsICRwcmVmaXgsICRzdWZmaXgpIHtcbiAgQGlmICRvdXRwdXQtYm91cmJvbi1kZXByZWNhdGlvbi13YXJuaW5ncyA9PSB0cnVlIHtcbiAgICBAd2FybiBcIltCb3VyYm9uXSBbRGVwcmVjYXRpb25dIGBfbGluZWFyLWFuZ2xlLXBhcnNlcmAgaXMgXCIgK1xuICAgIFwiZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIDUuMC4wLlwiO1xuICB9XG5cbiAgJG9mZnNldDogbnVsbDtcbiAgJHVuaXQtc2hvcnQ6ICBzdHItc2xpY2UoJGZpcnN0LXZhbCwgc3RyLWxlbmd0aCgkZmlyc3QtdmFsKSAtIDIsIHN0ci1sZW5ndGgoJGZpcnN0LXZhbCkpO1xuICAkdW5pdC1sb25nOiAgIHN0ci1zbGljZSgkZmlyc3QtdmFsLCBzdHItbGVuZ3RoKCRmaXJzdC12YWwpIC0gMywgc3RyLWxlbmd0aCgkZmlyc3QtdmFsKSk7XG5cbiAgQGlmICgkdW5pdC1sb25nID09IFwiZ3JhZFwiKSBvclxuICAgICAgKCR1bml0LWxvbmcgPT0gXCJ0dXJuXCIpIHtcbiAgICAkb2Zmc2V0OiBpZigkdW5pdC1sb25nID09IFwiZ3JhZFwiLCAtMTAwZ3JhZCAqIDMsIC0wLjc1dHVybik7XG4gIH1cblxuICBAZWxzZSBpZiAoJHVuaXQtc2hvcnQgPT0gXCJkZWdcIikgb3JcbiAgICAgICAgICAgKCR1bml0LXNob3J0ID09IFwicmFkXCIpIHtcbiAgICAkb2Zmc2V0OiBpZigkdW5pdC1zaG9ydCA9PSBcImRlZ1wiLCAtOTAgKiAzLCAxLjZyYWQpO1xuICB9XG5cbiAgQGlmICRvZmZzZXQge1xuICAgICR1c2VyLWRlcHJlY2F0aW9uLXdhcm5pbmdzLXNldHRpbmc6ICRvdXRwdXQtYm91cmJvbi1kZXByZWNhdGlvbi13YXJuaW5ncztcbiAgICAkb3V0cHV0LWJvdXJib24tZGVwcmVjYXRpb24td2FybmluZ3M6IGZhbHNlICFnbG9iYWw7XG5cbiAgICAkbnVtOiBfc3RyLXRvLW51bSgkZmlyc3QtdmFsKTtcblxuICAgICRvdXRwdXQtYm91cmJvbi1kZXByZWNhdGlvbi13YXJuaW5nczogJHVzZXItZGVwcmVjYXRpb24td2FybmluZ3Mtc2V0dGluZyAhZ2xvYmFsO1xuXG4gICAgQHJldHVybiAoXG4gICAgICB3ZWJraXQtaW1hZ2U6IC13ZWJraXQtICsgJHByZWZpeCArICgkb2Zmc2V0IC0gJG51bSkgKyAkc3VmZml4LFxuICAgICAgc3BlYy1pbWFnZTogJGltYWdlXG4gICAgKTtcbiAgfVxufVxuIiwiQGZ1bmN0aW9uIF9saW5lYXItZ3JhZGllbnQtcGFyc2VyKCRpbWFnZSkge1xuICBAaWYgJG91dHB1dC1ib3VyYm9uLWRlcHJlY2F0aW9uLXdhcm5pbmdzID09IHRydWUge1xuICAgIEB3YXJuIFwiW0JvdXJib25dIFtEZXByZWNhdGlvbl0gYF9saW5lYXItZ3JhZGllbnQtcGFyc2VyYCBpcyBcIiArXG4gICAgXCJkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gNS4wLjAuXCI7XG4gIH1cblxuICAkdXNlci1kZXByZWNhdGlvbi13YXJuaW5ncy1zZXR0aW5nOiAkb3V0cHV0LWJvdXJib24tZGVwcmVjYXRpb24td2FybmluZ3M7XG4gICRvdXRwdXQtYm91cmJvbi1kZXByZWNhdGlvbi13YXJuaW5nczogZmFsc2UgIWdsb2JhbDtcblxuICAkaW1hZ2U6IHVucXVvdGUoJGltYWdlKTtcbiAgJGdyYWRpZW50czogKCk7XG4gICRzdGFydDogc3RyLWluZGV4KCRpbWFnZSwgXCIoXCIpO1xuICAkZW5kOiBzdHItaW5kZXgoJGltYWdlLCBcIixcIik7XG4gICRmaXJzdC12YWw6IHN0ci1zbGljZSgkaW1hZ2UsICRzdGFydCArIDEsICRlbmQgLSAxKTtcblxuICAkcHJlZml4OiBzdHItc2xpY2UoJGltYWdlLCAxLCAkc3RhcnQpO1xuICAkc3VmZml4OiBzdHItc2xpY2UoJGltYWdlLCAkZW5kLCBzdHItbGVuZ3RoKCRpbWFnZSkpO1xuXG4gICRoYXMtbXVsdGlwbGUtdmFsczogc3RyLWluZGV4KCRmaXJzdC12YWwsIFwiIFwiKTtcbiAgJGhhcy1zaW5nbGUtcG9zaXRpb246IHVucXVvdGUoX3Bvc2l0aW9uLWZsaXBwZXIoJGZpcnN0LXZhbCkgKyBcIlwiKTtcbiAgJGhhcy1hbmdsZTogaXMtbnVtYmVyKHN0ci1zbGljZSgkZmlyc3QtdmFsLCAxLCAxKSk7XG5cbiAgQGlmICRoYXMtbXVsdGlwbGUtdmFscyB7XG4gICAgJGdyYWRpZW50czogX2xpbmVhci1zaWRlLWNvcm5lci1wYXJzZXIoJGltYWdlLCAkZmlyc3QtdmFsLCAkcHJlZml4LCAkc3VmZml4LCAkaGFzLW11bHRpcGxlLXZhbHMpO1xuICB9XG5cbiAgQGVsc2UgaWYgJGhhcy1zaW5nbGUtcG9zaXRpb24gIT0gXCJcIiB7XG4gICAgJHBvczogdW5xdW90ZSgkaGFzLXNpbmdsZS1wb3NpdGlvbiArIFwiXCIpO1xuXG4gICAgJGdyYWRpZW50czogKFxuICAgICAgd2Via2l0LWltYWdlOiAtd2Via2l0LSArICRpbWFnZSxcbiAgICAgIHNwZWMtaW1hZ2U6ICRwcmVmaXggKyBcInRvIFwiICsgJHBvcyArICRzdWZmaXhcbiAgICApO1xuICB9XG5cbiAgQGVsc2UgaWYgJGhhcy1hbmdsZSB7XG4gICAgLy8gUm90YXRlIGRlZ3JlZSBmb3Igd2Via2l0XG4gICAgJGdyYWRpZW50czogX2xpbmVhci1hbmdsZS1wYXJzZXIoJGltYWdlLCAkZmlyc3QtdmFsLCAkcHJlZml4LCAkc3VmZml4KTtcbiAgfVxuXG4gIEBlbHNlIHtcbiAgICAkZ3JhZGllbnRzOiAoXG4gICAgICB3ZWJraXQtaW1hZ2U6IC13ZWJraXQtICsgJGltYWdlLFxuICAgICAgc3BlYy1pbWFnZTogJGltYWdlXG4gICAgKTtcbiAgfVxuXG4gICRvdXRwdXQtYm91cmJvbi1kZXByZWNhdGlvbi13YXJuaW5nczogJHVzZXItZGVwcmVjYXRpb24td2FybmluZ3Mtc2V0dGluZyAhZ2xvYmFsO1xuXG4gIEByZXR1cm4gJGdyYWRpZW50cztcbn1cbiIsIkBmdW5jdGlvbiBfbGluZWFyLXBvc2l0aW9ucy1wYXJzZXIoJHBvcykge1xuICBAaWYgJG91dHB1dC1ib3VyYm9uLWRlcHJlY2F0aW9uLXdhcm5pbmdzID09IHRydWUge1xuICAgIEB3YXJuIFwiW0JvdXJib25dIFtEZXByZWNhdGlvbl0gYF9saW5lYXItcG9zaXRpb25zLXBhcnNlcmAgaXMgXCIgK1xuICAgIFwiZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIDUuMC4wLlwiO1xuICB9XG5cbiAgJHVzZXItZGVwcmVjYXRpb24td2FybmluZ3Mtc2V0dGluZzogJG91dHB1dC1ib3VyYm9uLWRlcHJlY2F0aW9uLXdhcm5pbmdzO1xuICAkb3V0cHV0LWJvdXJib24tZGVwcmVjYXRpb24td2FybmluZ3M6IGZhbHNlICFnbG9iYWw7XG5cbiAgJHR5cGU6IHR5cGUtb2YobnRoKCRwb3MsIDEpKTtcbiAgJHNwZWM6IG51bGw7XG4gICRkZWdyZWU6IG51bGw7XG4gICRzaWRlOiBudWxsO1xuICAkY29ybmVyOiBudWxsO1xuICAkbGVuZ3RoOiBsZW5ndGgoJHBvcyk7XG4gIC8vIFBhcnNlIFNpZGUgYW5kIGNvcm5lciBwb3NpdGlvbnNcbiAgQGlmICgkbGVuZ3RoID4gMSkge1xuICAgIEBpZiBudGgoJHBvcywgMSkgPT0gXCJ0b1wiIHsgLy8gTmV3ZXIgc3ludGF4XG4gICAgICAkc2lkZTogbnRoKCRwb3MsIDIpO1xuXG4gICAgICBAaWYgJGxlbmd0aCA9PSAyIHsgLy8gZWcuIHRvIHRvcFxuICAgICAgICAvLyBTd2FwIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eVxuICAgICAgICAkZGVncmVlOiBfcG9zaXRpb24tZmxpcHBlcihudGgoJHBvcywgMikpO1xuICAgICAgfVxuICAgICAgQGVsc2UgaWYgJGxlbmd0aCA9PSAzIHsgLy8gZWcuIHRvIHRvcCBsZWZ0XG4gICAgICAgICRjb3JuZXI6IG50aCgkcG9zLCAzKTtcbiAgICAgIH1cbiAgICB9XG4gICAgQGVsc2UgaWYgJGxlbmd0aCA9PSAyIHsgLy8gT2xkZXIgc3ludGF4IChcInRvcCBsZWZ0XCIpXG4gICAgICAkc2lkZTogX3Bvc2l0aW9uLWZsaXBwZXIobnRoKCRwb3MsIDEpKTtcbiAgICAgICRjb3JuZXI6IF9wb3NpdGlvbi1mbGlwcGVyKG50aCgkcG9zLCAyKSk7XG4gICAgfVxuXG4gICAgQGlmIChcIiN7JHNpZGV9ICN7JGNvcm5lcn1cIiA9PSBcImxlZnQgdG9wXCIpIG9yIChcIiN7JHNpZGV9ICN7JGNvcm5lcn1cIiA9PSBcInRvcCBsZWZ0XCIpIHtcbiAgICAgICRkZWdyZWU6IF9wb3NpdGlvbi1mbGlwcGVyKCN7JHNpZGV9KSBfcG9zaXRpb24tZmxpcHBlcigjeyRjb3JuZXJ9KTtcbiAgICB9XG4gICAgQGVsc2UgaWYgKFwiI3skc2lkZX0gI3skY29ybmVyfVwiID09IFwicmlnaHQgdG9wXCIpIG9yIChcIiN7JHNpZGV9ICN7JGNvcm5lcn1cIiA9PSBcInRvcCByaWdodFwiKSB7XG4gICAgICAkZGVncmVlOiBfcG9zaXRpb24tZmxpcHBlcigjeyRzaWRlfSkgX3Bvc2l0aW9uLWZsaXBwZXIoI3skY29ybmVyfSk7XG4gICAgfVxuICAgIEBlbHNlIGlmIChcIiN7JHNpZGV9ICN7JGNvcm5lcn1cIiA9PSBcInJpZ2h0IGJvdHRvbVwiKSBvciAoXCIjeyRzaWRlfSAjeyRjb3JuZXJ9XCIgPT0gXCJib3R0b20gcmlnaHRcIikge1xuICAgICAgJGRlZ3JlZTogX3Bvc2l0aW9uLWZsaXBwZXIoI3skc2lkZX0pIF9wb3NpdGlvbi1mbGlwcGVyKCN7JGNvcm5lcn0pO1xuICAgIH1cbiAgICBAZWxzZSBpZiAoXCIjeyRzaWRlfSAjeyRjb3JuZXJ9XCIgPT0gXCJsZWZ0IGJvdHRvbVwiKSBvciAoXCIjeyRzaWRlfSAjeyRjb3JuZXJ9XCIgPT0gXCJib3R0b20gbGVmdFwiKSB7XG4gICAgICAkZGVncmVlOiBfcG9zaXRpb24tZmxpcHBlcigjeyRzaWRlfSkgX3Bvc2l0aW9uLWZsaXBwZXIoI3skY29ybmVyfSk7XG4gICAgfVxuICAgICRzcGVjOiB0byAkc2lkZSAkY29ybmVyO1xuICB9XG4gIEBlbHNlIGlmICRsZW5ndGggPT0gMSB7XG4gICAgLy8gU3dhcCBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHlcbiAgICBAaWYgJHR5cGUgPT0gc3RyaW5nIHtcbiAgICAgICRkZWdyZWU6ICRwb3M7XG4gICAgICAkc3BlYzogdG8gX3Bvc2l0aW9uLWZsaXBwZXIoJHBvcyk7XG4gICAgfVxuICAgIEBlbHNlIHtcbiAgICAgICRkZWdyZWU6IC0yNzAgLSAkcG9zOyAvL3JvdGF0ZSB0aGUgZ3JhZGllbnQgb3Bwb3NpdGUgZnJvbSBzcGVjXG4gICAgICAkc3BlYzogJHBvcztcbiAgICB9XG4gIH1cbiAgJGRlZ3JlZTogdW5xdW90ZSgkZGVncmVlICsgXCIsXCIpO1xuICAkc3BlYzogICB1bnF1b3RlKCRzcGVjICsgXCIsXCIpO1xuXG4gICRvdXRwdXQtYm91cmJvbi1kZXByZWNhdGlvbi13YXJuaW5nczogJHVzZXItZGVwcmVjYXRpb24td2FybmluZ3Mtc2V0dGluZyAhZ2xvYmFsO1xuXG4gIEByZXR1cm4gJGRlZ3JlZSAkc3BlYztcbn1cblxuQGZ1bmN0aW9uIF9wb3NpdGlvbi1mbGlwcGVyKCRwb3MpIHtcbiAgQGlmICRvdXRwdXQtYm91cmJvbi1kZXByZWNhdGlvbi13YXJuaW5ncyA9PSB0cnVlIHtcbiAgICBAd2FybiBcIltCb3VyYm9uXSBbRGVwcmVjYXRpb25dIGBfcG9zaXRpb24tZmxpcHBlcmAgaXMgXCIgK1xuICAgIFwiZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIDUuMC4wLlwiO1xuICB9XG5cbiAgQHJldHVybiBpZigkcG9zID09IGxlZnQsIHJpZ2h0LCBudWxsKVxuICAgICAgICAgaWYoJHBvcyA9PSByaWdodCwgbGVmdCwgbnVsbClcbiAgICAgICAgIGlmKCRwb3MgPT0gdG9wLCBib3R0b20sIG51bGwpXG4gICAgICAgICBpZigkcG9zID09IGJvdHRvbSwgdG9wLCBudWxsKTtcbn1cbiIsIi8vIFByaXZhdGUgZnVuY3Rpb24gZm9yIGxpbmVhci1ncmFkaWVudC1wYXJzZXJcbkBmdW5jdGlvbiBfbGluZWFyLXNpZGUtY29ybmVyLXBhcnNlcigkaW1hZ2UsICRmaXJzdC12YWwsICRwcmVmaXgsICRzdWZmaXgsICRoYXMtbXVsdGlwbGUtdmFscykge1xuICBAaWYgJG91dHB1dC1ib3VyYm9uLWRlcHJlY2F0aW9uLXdhcm5pbmdzID09IHRydWUge1xuICAgIEB3YXJuIFwiW0JvdXJib25dIFtEZXByZWNhdGlvbl0gYF9saW5lYXItc2lkZS1jb3JuZXItcGFyc2VyYCBpcyBcIiArXG4gICAgXCJkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gNS4wLjAuXCI7XG4gIH1cblxuICAkdXNlci1kZXByZWNhdGlvbi13YXJuaW5ncy1zZXR0aW5nOiAkb3V0cHV0LWJvdXJib24tZGVwcmVjYXRpb24td2FybmluZ3M7XG4gICRvdXRwdXQtYm91cmJvbi1kZXByZWNhdGlvbi13YXJuaW5nczogZmFsc2UgIWdsb2JhbDtcblxuICAkdmFsLTE6IHN0ci1zbGljZSgkZmlyc3QtdmFsLCAxLCAkaGFzLW11bHRpcGxlLXZhbHMgLSAxKTtcbiAgJHZhbC0yOiBzdHItc2xpY2UoJGZpcnN0LXZhbCwgJGhhcy1tdWx0aXBsZS12YWxzICsgMSwgc3RyLWxlbmd0aCgkZmlyc3QtdmFsKSk7XG4gICR2YWwtMzogbnVsbDtcbiAgJGhhcy12YWwtMzogc3RyLWluZGV4KCR2YWwtMiwgXCIgXCIpO1xuXG4gIEBpZiAkaGFzLXZhbC0zIHtcbiAgICAkdmFsLTM6IHN0ci1zbGljZSgkdmFsLTIsICRoYXMtdmFsLTMgKyAxLCBzdHItbGVuZ3RoKCR2YWwtMikpO1xuICAgICR2YWwtMjogc3RyLXNsaWNlKCR2YWwtMiwgMSwgJGhhcy12YWwtMyAtIDEpO1xuICB9XG5cbiAgJHBvczogX3Bvc2l0aW9uLWZsaXBwZXIoJHZhbC0xKSBfcG9zaXRpb24tZmxpcHBlcigkdmFsLTIpIF9wb3NpdGlvbi1mbGlwcGVyKCR2YWwtMyk7XG4gICRwb3M6IHVucXVvdGUoJHBvcyArIFwiXCIpO1xuXG4gICRvdXRwdXQtYm91cmJvbi1kZXByZWNhdGlvbi13YXJuaW5nczogJHVzZXItZGVwcmVjYXRpb24td2FybmluZ3Mtc2V0dGluZyAhZ2xvYmFsO1xuXG4gIC8vIFVzZSBvbGQgc3BlYyBmb3Igd2Via2l0XG4gIEBpZiAkdmFsLTEgPT0gXCJ0b1wiIHtcbiAgICBAcmV0dXJuIChcbiAgICAgIHdlYmtpdC1pbWFnZTogLXdlYmtpdC0gKyAkcHJlZml4ICsgJHBvcyArICRzdWZmaXgsXG4gICAgICBzcGVjLWltYWdlOiAkaW1hZ2VcbiAgICApO1xuICB9XG5cbiAgLy8gQnJpbmcgdGhlIGNvZGUgdXAgdG8gc3BlY1xuICBAZWxzZSB7XG4gICAgQHJldHVybiAoXG4gICAgICB3ZWJraXQtaW1hZ2U6IC13ZWJraXQtICsgJGltYWdlLFxuICAgICAgc3BlYy1pbWFnZTogJHByZWZpeCArIFwidG8gXCIgKyAkcG9zICsgJHN1ZmZpeFxuICAgICk7XG4gIH1cbn1cbiIsIkBmdW5jdGlvbiBfcmFkaWFsLWFyZy1wYXJzZXIoJGcxLCAkZzIsICRwb3MsICRzaGFwZS1zaXplKSB7XG4gIEBpZiAkb3V0cHV0LWJvdXJib24tZGVwcmVjYXRpb24td2FybmluZ3MgPT0gdHJ1ZSB7XG4gICAgQHdhcm4gXCJbQm91cmJvbl0gW0RlcHJlY2F0aW9uXSBgX3JhZGlhbC1hcmctcGFyc2VyYCBpcyBcIiArXG4gICAgXCJkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gNS4wLjAuXCI7XG4gIH1cblxuICBAZWFjaCAkdmFsdWUgaW4gJGcxLCAkZzIge1xuICAgICRmaXJzdC12YWw6IG50aCgkdmFsdWUsIDEpO1xuICAgICRwb3MtdHlwZTogIHR5cGUtb2YoJGZpcnN0LXZhbCk7XG4gICAgJHNwZWMtYXQtaW5kZXg6IG51bGw7XG5cbiAgICAvLyBEZXRlcm1pbmUgaWYgc3BlYyB3YXMgcGFzc2VkIHRvIG1peGluXG4gICAgQGlmIHR5cGUtb2YoJHZhbHVlKSA9PSBsaXN0IHtcbiAgICAgICRzcGVjLWF0LWluZGV4OiBpZihpbmRleCgkdmFsdWUsIGF0KSwgaW5kZXgoJHZhbHVlLCBhdCksIGZhbHNlKTtcbiAgICB9XG4gICAgQGlmICRzcGVjLWF0LWluZGV4IHtcbiAgICAgIEBpZiAkc3BlYy1hdC1pbmRleCA+IDEge1xuICAgICAgICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICgkc3BlYy1hdC1pbmRleCAtIDEpIHtcbiAgICAgICAgICAkc2hhcGUtc2l6ZTogJHNoYXBlLXNpemUgbnRoKCR2YWx1ZSwgJGkpO1xuICAgICAgICB9XG4gICAgICAgIEBmb3IgJGkgZnJvbSAoJHNwZWMtYXQtaW5kZXggKyAxKSB0aHJvdWdoIGxlbmd0aCgkdmFsdWUpIHtcbiAgICAgICAgICAkcG9zOiAkcG9zIG50aCgkdmFsdWUsICRpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgQGVsc2UgaWYgJHNwZWMtYXQtaW5kZXggPT0gMSB7XG4gICAgICAgIEBmb3IgJGkgZnJvbSAoJHNwZWMtYXQtaW5kZXggKyAxKSB0aHJvdWdoIGxlbmd0aCgkdmFsdWUpIHtcbiAgICAgICAgICAkcG9zOiAkcG9zIG50aCgkdmFsdWUsICRpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgJGcxOiBudWxsO1xuICAgIH1cblxuICAgIC8vIElmIG5vdCBzcGVjIGNhbGN1bGF0ZSBjb3JyZWN0IHZhbHVlc1xuICAgIEBlbHNlIHtcbiAgICAgIEBpZiAoJHBvcy10eXBlICE9IGNvbG9yKSBvciAoJGZpcnN0LXZhbCAhPSBcInRyYW5zcGFyZW50XCIpIHtcbiAgICAgICAgQGlmICgkcG9zLXR5cGUgPT0gbnVtYmVyKVxuICAgICAgICBvciAoJGZpcnN0LXZhbCA9PSBcImNlbnRlclwiKVxuICAgICAgICBvciAoJGZpcnN0LXZhbCA9PSBcInRvcFwiKVxuICAgICAgICBvciAoJGZpcnN0LXZhbCA9PSBcInJpZ2h0XCIpXG4gICAgICAgIG9yICgkZmlyc3QtdmFsID09IFwiYm90dG9tXCIpXG4gICAgICAgIG9yICgkZmlyc3QtdmFsID09IFwibGVmdFwiKSB7XG5cbiAgICAgICAgICAkcG9zOiAkdmFsdWU7XG5cbiAgICAgICAgICBAaWYgJHBvcyA9PSAkZzEge1xuICAgICAgICAgICAgJGcxOiBudWxsO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIEBlbHNlIGlmXG4gICAgICAgICAgICgkZmlyc3QtdmFsID09IFwiZWxsaXBzZVwiKVxuICAgICAgICBvciAoJGZpcnN0LXZhbCA9PSBcImNpcmNsZVwiKVxuICAgICAgICBvciAoJGZpcnN0LXZhbCA9PSBcImNsb3Nlc3Qtc2lkZVwiKVxuICAgICAgICBvciAoJGZpcnN0LXZhbCA9PSBcImNsb3Nlc3QtY29ybmVyXCIpXG4gICAgICAgIG9yICgkZmlyc3QtdmFsID09IFwiZmFydGhlc3Qtc2lkZVwiKVxuICAgICAgICBvciAoJGZpcnN0LXZhbCA9PSBcImZhcnRoZXN0LWNvcm5lclwiKVxuICAgICAgICBvciAoJGZpcnN0LXZhbCA9PSBcImNvbnRhaW5cIilcbiAgICAgICAgb3IgKCRmaXJzdC12YWwgPT0gXCJjb3ZlclwiKSB7XG5cbiAgICAgICAgICAkc2hhcGUtc2l6ZTogJHZhbHVlO1xuXG4gICAgICAgICAgQGlmICR2YWx1ZSA9PSAkZzEge1xuICAgICAgICAgICAgJGcxOiBudWxsO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIEBlbHNlIGlmICR2YWx1ZSA9PSAkZzIge1xuICAgICAgICAgICAgJGcyOiBudWxsO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICBAcmV0dXJuICRnMSwgJGcyLCAkcG9zLCAkc2hhcGUtc2l6ZTtcbn1cbiIsIkBmdW5jdGlvbiBfcmFkaWFsLXBvc2l0aW9ucy1wYXJzZXIoJGdyYWRpZW50LXBvcykge1xuICBAaWYgJG91dHB1dC1ib3VyYm9uLWRlcHJlY2F0aW9uLXdhcm5pbmdzID09IHRydWUge1xuICAgIEB3YXJuIFwiW0JvdXJib25dIFtEZXByZWNhdGlvbl0gYF9yYWRpYWwtcG9zaXRpb25zLXBhcnNlcmAgaXMgXCIgK1xuICAgIFwiZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIDUuMC4wLlwiO1xuICB9XG5cbiAgJHVzZXItZGVwcmVjYXRpb24td2FybmluZ3Mtc2V0dGluZzogJG91dHB1dC1ib3VyYm9uLWRlcHJlY2F0aW9uLXdhcm5pbmdzO1xuICAkb3V0cHV0LWJvdXJib24tZGVwcmVjYXRpb24td2FybmluZ3M6IGZhbHNlICFnbG9iYWw7XG5cbiAgJHNoYXBlLXNpemU6IG50aCgkZ3JhZGllbnQtcG9zLCAxKTtcbiAgJHBvczogICAgICAgIG50aCgkZ3JhZGllbnQtcG9zLCAyKTtcbiAgJHNoYXBlLXNpemUtc3BlYzogX3NoYXBlLXNpemUtc3RyaXBwZXIoJHNoYXBlLXNpemUpO1xuXG4gICRwcmUtc3BlYzogdW5xdW90ZShpZigkcG9zLCBcIiN7JHBvc30sIFwiLCBudWxsKSlcbiAgICAgICAgICAgICB1bnF1b3RlKGlmKCRzaGFwZS1zaXplLCBcIiN7JHNoYXBlLXNpemV9LFwiLCBudWxsKSk7XG4gICRwb3Mtc3BlYzogaWYoJHBvcywgXCJhdCAjeyRwb3N9XCIsIG51bGwpO1xuXG4gICRzcGVjOiBcIiN7JHNoYXBlLXNpemUtc3BlY30gI3skcG9zLXNwZWN9XCI7XG5cbiAgLy8gQWRkIGNvbW1hXG4gIEBpZiAoJHNwZWMgIT0gXCIgIFwiKSB7XG4gICAgJHNwZWM6IFwiI3skc3BlY30sXCI7XG4gIH1cblxuICAkb3V0cHV0LWJvdXJib24tZGVwcmVjYXRpb24td2FybmluZ3M6ICR1c2VyLWRlcHJlY2F0aW9uLXdhcm5pbmdzLXNldHRpbmcgIWdsb2JhbDtcblxuICBAcmV0dXJuICRwcmUtc3BlYyAkc3BlYztcbn1cbiIsIkBmdW5jdGlvbiBfcmFkaWFsLWdyYWRpZW50LXBhcnNlcigkaW1hZ2UpIHtcbiAgQGlmICRvdXRwdXQtYm91cmJvbi1kZXByZWNhdGlvbi13YXJuaW5ncyA9PSB0cnVlIHtcbiAgICBAd2FybiBcIltCb3VyYm9uXSBbRGVwcmVjYXRpb25dIGBfcmFkaWFsLWdyYWRpZW50LXBhcnNlcmAgaXMgXCIgK1xuICAgIFwiZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIDUuMC4wLlwiO1xuICB9XG5cbiAgJGltYWdlOiB1bnF1b3RlKCRpbWFnZSk7XG4gICRncmFkaWVudHM6ICgpO1xuICAkc3RhcnQ6IHN0ci1pbmRleCgkaW1hZ2UsIFwiKFwiKTtcbiAgJGVuZDogc3RyLWluZGV4KCRpbWFnZSwgXCIsXCIpO1xuICAkZmlyc3QtdmFsOiBzdHItc2xpY2UoJGltYWdlLCAkc3RhcnQgKyAxLCAkZW5kIC0gMSk7XG5cbiAgJHByZWZpeDogc3RyLXNsaWNlKCRpbWFnZSwgMSwgJHN0YXJ0KTtcbiAgJHN1ZmZpeDogc3RyLXNsaWNlKCRpbWFnZSwgJGVuZCwgc3RyLWxlbmd0aCgkaW1hZ2UpKTtcblxuICAkaXMtc3BlYy1zeW50YXg6IHN0ci1pbmRleCgkZmlyc3QtdmFsLCBcImF0XCIpO1xuXG4gIEBpZiAkaXMtc3BlYy1zeW50YXggYW5kICRpcy1zcGVjLXN5bnRheCA+IDEge1xuICAgICRrZXl3b3JkOiBzdHItc2xpY2UoJGZpcnN0LXZhbCwgMSwgJGlzLXNwZWMtc3ludGF4IC0gMik7XG4gICAgJHBvczogc3RyLXNsaWNlKCRmaXJzdC12YWwsICRpcy1zcGVjLXN5bnRheCArIDMsIHN0ci1sZW5ndGgoJGZpcnN0LXZhbCkpO1xuICAgICRwb3M6IGFwcGVuZCgkcG9zLCAka2V5d29yZCwgY29tbWEpO1xuXG4gICAgJGdyYWRpZW50czogKFxuICAgICAgd2Via2l0LWltYWdlOiAtd2Via2l0LSArICRwcmVmaXggKyAkcG9zICsgJHN1ZmZpeCxcbiAgICAgIHNwZWMtaW1hZ2U6ICRpbWFnZVxuICAgICk7XG4gIH1cblxuICBAZWxzZSBpZiAkaXMtc3BlYy1zeW50YXggPT0gMSB7XG4gICAgJHBvczogc3RyLXNsaWNlKCRmaXJzdC12YWwsICRpcy1zcGVjLXN5bnRheCArIDMsIHN0ci1sZW5ndGgoJGZpcnN0LXZhbCkpO1xuXG4gICAgJGdyYWRpZW50czogKFxuICAgICAgd2Via2l0LWltYWdlOiAtd2Via2l0LSArICRwcmVmaXggKyAkcG9zICsgJHN1ZmZpeCxcbiAgICAgIHNwZWMtaW1hZ2U6ICRpbWFnZVxuICAgICk7XG4gIH1cblxuICBAZWxzZSBpZiBzdHItaW5kZXgoJGltYWdlLCBcImNvdmVyXCIpIG9yIHN0ci1pbmRleCgkaW1hZ2UsIFwiY29udGFpblwiKSB7XG4gICAgQHdhcm4gXCJSYWRpYWwtZ3JhZGllbnQgbmVlZHMgdG8gYmUgdXBkYXRlZCB0byBjb25mb3JtIHRvIGxhdGVzdCBzcGVjLlwiO1xuXG4gICAgJGdyYWRpZW50czogKFxuICAgICAgd2Via2l0LWltYWdlOiBudWxsLFxuICAgICAgc3BlYy1pbWFnZTogJGltYWdlXG4gICAgKTtcbiAgfVxuXG4gIEBlbHNlIHtcbiAgICAkZ3JhZGllbnRzOiAoXG4gICAgICB3ZWJraXQtaW1hZ2U6IC13ZWJraXQtICsgJGltYWdlLFxuICAgICAgc3BlYy1pbWFnZTogJGltYWdlXG4gICAgKTtcbiAgfVxuXG4gIEByZXR1cm4gJGdyYWRpZW50cztcbn1cbiIsIi8vIFVzZXIgZm9yIGxpbmVhciBhbmQgcmFkaWFsIGdyYWRpZW50cyB3aXRoaW4gYmFja2dyb3VuZC1pbWFnZSBvciBib3JkZXItaW1hZ2UgcHJvcGVydGllc1xuXG5AZnVuY3Rpb24gX3JlbmRlci1ncmFkaWVudHMoJGdyYWRpZW50LXBvc2l0aW9ucywgJGdyYWRpZW50cywgJGdyYWRpZW50LXR5cGUsICR2ZW5kb3I6IGZhbHNlKSB7XG4gIEBpZiAkb3V0cHV0LWJvdXJib24tZGVwcmVjYXRpb24td2FybmluZ3MgPT0gdHJ1ZSB7XG4gICAgQHdhcm4gXCJbQm91cmJvbl0gW0RlcHJlY2F0aW9uXSBgX3JlbmRlci1ncmFkaWVudHNgIGlzIFwiICtcbiAgICBcImRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiA1LjAuMC5cIjtcbiAgfVxuXG4gICRwcmUtc3BlYzogbnVsbDtcbiAgJHNwZWM6IG51bGw7XG4gICR2ZW5kb3ItZ3JhZGllbnRzOiBudWxsO1xuICBAaWYgJGdyYWRpZW50LXR5cGUgPT0gbGluZWFyIHtcbiAgICBAaWYgJGdyYWRpZW50LXBvc2l0aW9ucyB7XG4gICAgICAkcHJlLXNwZWM6IG50aCgkZ3JhZGllbnQtcG9zaXRpb25zLCAxKTtcbiAgICAgICRzcGVjOiAgICAgbnRoKCRncmFkaWVudC1wb3NpdGlvbnMsIDIpO1xuICAgIH1cbiAgfVxuICBAZWxzZSBpZiAkZ3JhZGllbnQtdHlwZSA9PSByYWRpYWwge1xuICAgICRwcmUtc3BlYzogbnRoKCRncmFkaWVudC1wb3NpdGlvbnMsIDEpO1xuICAgICRzcGVjOiAgICAgbnRoKCRncmFkaWVudC1wb3NpdGlvbnMsIDIpO1xuICB9XG5cbiAgQGlmICR2ZW5kb3Ige1xuICAgICR2ZW5kb3ItZ3JhZGllbnRzOiAtI3skdmVuZG9yfS0jeyRncmFkaWVudC10eXBlfS1ncmFkaWVudCgjeyRwcmUtc3BlY30gJGdyYWRpZW50cyk7XG4gIH1cbiAgQGVsc2UgaWYgJHZlbmRvciA9PSBmYWxzZSB7XG4gICAgJHZlbmRvci1ncmFkaWVudHM6IFwiI3skZ3JhZGllbnQtdHlwZX0tZ3JhZGllbnQoI3skc3BlY30gI3skZ3JhZGllbnRzfSlcIjtcbiAgICAkdmVuZG9yLWdyYWRpZW50czogdW5xdW90ZSgkdmVuZG9yLWdyYWRpZW50cyk7XG4gIH1cbiAgQHJldHVybiAkdmVuZG9yLWdyYWRpZW50cztcbn1cbiIsIkBmdW5jdGlvbiBfc2hhcGUtc2l6ZS1zdHJpcHBlcigkc2hhcGUtc2l6ZSkge1xuICBAaWYgJG91dHB1dC1ib3VyYm9uLWRlcHJlY2F0aW9uLXdhcm5pbmdzID09IHRydWUge1xuICAgIEB3YXJuIFwiW0JvdXJib25dIFtEZXByZWNhdGlvbl0gYF9zaGFwZS1zaXplLXN0cmlwcGVyYCBpcyBcIiArXG4gICAgXCJkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gNS4wLjAuXCI7XG4gIH1cblxuICAkc2hhcGUtc2l6ZS1zcGVjOiBudWxsO1xuICBAZWFjaCAkdmFsdWUgaW4gJHNoYXBlLXNpemUge1xuICAgIEBpZiAoJHZhbHVlID09IFwiY292ZXJcIikgb3IgKCR2YWx1ZSA9PSBcImNvbnRhaW5cIikge1xuICAgICAgJHZhbHVlOiBudWxsO1xuICAgIH1cbiAgICAkc2hhcGUtc2l6ZS1zcGVjOiBcIiN7JHNoYXBlLXNpemUtc3BlY30gI3skdmFsdWV9XCI7XG4gIH1cbiAgQHJldHVybiAkc2hhcGUtc2l6ZS1zcGVjO1xufVxuIiwiLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovL1xuLy8gSGVscGVyIGZ1bmN0aW9uIGZvciBsaW5lYXIvcmFkaWFsLWdyYWRpZW50LXBhcnNlcnMuXG4vLyBTb3VyY2U6IGh0dHA6Ly9zYXNzbWVpc3Rlci5jb20vZ2lzdC85NjQ3NDA4XG4vLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vXG5AZnVuY3Rpb24gX3N0ci10by1udW0oJHN0cmluZykge1xuICBAaWYgJG91dHB1dC1ib3VyYm9uLWRlcHJlY2F0aW9uLXdhcm5pbmdzID09IHRydWUge1xuICAgIEB3YXJuIFwiW0JvdXJib25dIFtEZXByZWNhdGlvbl0gYF9zdHItdG8tbnVtYCBpcyBcIiArXG4gICAgXCJkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gNS4wLjAuXCI7XG4gIH1cblxuICAvLyBNYXRyaWNlc1xuICAkc3RyaW5nczogXCIwXCIgXCIxXCIgXCIyXCIgXCIzXCIgXCI0XCIgXCI1XCIgXCI2XCIgXCI3XCIgXCI4XCIgXCI5XCI7XG4gICRudW1iZXJzOiAgMCAgIDEgICAyICAgMyAgIDQgICA1ICAgNiAgIDcgICA4ICAgOTtcblxuICAvLyBSZXN1bHRcbiAgJHJlc3VsdDogMDtcbiAgJGRpdmlkZXI6IDA7XG4gICRtaW51czogZmFsc2U7XG5cbiAgLy8gTG9vcGluZyB0aHJvdWdoIGFsbCBjaGFyYWN0ZXJzXG4gIEBmb3IgJGkgZnJvbSAxIHRocm91Z2ggc3RyLWxlbmd0aCgkc3RyaW5nKSB7XG4gICAgJGNoYXJhY3Rlcjogc3RyLXNsaWNlKCRzdHJpbmcsICRpLCAkaSk7XG4gICAgJGluZGV4OiBpbmRleCgkc3RyaW5ncywgJGNoYXJhY3Rlcik7XG5cbiAgICBAaWYgJGNoYXJhY3RlciA9PSBcIi1cIiB7XG4gICAgICAkbWludXM6IHRydWU7XG4gICAgfVxuXG4gICAgQGVsc2UgaWYgJGNoYXJhY3RlciA9PSBcIi5cIiB7XG4gICAgICAkZGl2aWRlcjogMTtcbiAgICB9XG5cbiAgICBAZWxzZSB7XG4gICAgICBAaWYgbm90ICRpbmRleCB7XG4gICAgICAgICRyZXN1bHQ6IGlmKCRtaW51cywgJHJlc3VsdCAqIC0xLCAkcmVzdWx0KTtcbiAgICAgICAgQHJldHVybiBfY29udmVydC11bml0cygkcmVzdWx0LCBzdHItc2xpY2UoJHN0cmluZywgJGkpKTtcbiAgICAgIH1cblxuICAgICAgJG51bWJlcjogbnRoKCRudW1iZXJzLCAkaW5kZXgpO1xuXG4gICAgICBAaWYgJGRpdmlkZXIgPT0gMCB7XG4gICAgICAgICRyZXN1bHQ6ICRyZXN1bHQgKiAxMDtcbiAgICAgIH1cblxuICAgICAgQGVsc2Uge1xuICAgICAgICAvLyBNb3ZlIHRoZSBkZWNpbWFsIGRvdCB0byB0aGUgbGVmdFxuICAgICAgICAkZGl2aWRlcjogJGRpdmlkZXIgKiAxMDtcbiAgICAgICAgJG51bWJlcjogJG51bWJlciAvICRkaXZpZGVyO1xuICAgICAgfVxuXG4gICAgICAkcmVzdWx0OiAkcmVzdWx0ICsgJG51bWJlcjtcbiAgICB9XG4gIH1cbiAgQHJldHVybiBpZigkbWludXMsICRyZXN1bHQgKiAtMSwgJHJlc3VsdCk7XG59XG4iLCIvLyBodHRwOi8vd3d3LnczLm9yZy9UUi9jc3MzLWFuaW1hdGlvbnMvI3RoZS1hbmltYXRpb24tbmFtZS1wcm9wZXJ0eS1cbi8vIEVhY2ggb2YgdGhlc2UgbWl4aW5zIHN1cHBvcnQgY29tbWEgc2VwYXJhdGVkIGxpc3RzIG9mIHZhbHVlcywgd2hpY2ggYWxsb3dzIGRpZmZlcmVudCB0cmFuc2l0aW9ucyBmb3IgaW5kaXZpZHVhbCBwcm9wZXJ0aWVzIHRvIGJlIGRlc2NyaWJlZCBpbiBhIHNpbmdsZSBzdHlsZSBydWxlLiBFYWNoIHZhbHVlIGluIHRoZSBsaXN0IGNvcnJlc3BvbmRzIHRvIHRoZSB2YWx1ZSBhdCB0aGF0IHNhbWUgcG9zaXRpb24gaW4gdGhlIG90aGVyIHByb3BlcnRpZXMuXG5cbkBtaXhpbiBhbmltYXRpb24oJGFuaW1hdGlvbnMuLi4pIHtcbiAgQGluY2x1ZGUgX2JvdXJib24tZGVwcmVjYXRlLWZvci1wcmVmaXhpbmcoXCJhbmltYXRpb25cIik7XG5cbiAgQGluY2x1ZGUgcHJlZml4ZXIoYW5pbWF0aW9uLCAkYW5pbWF0aW9ucywgd2Via2l0IG1veiBzcGVjKTtcbn1cblxuQG1peGluIGFuaW1hdGlvbi1uYW1lKCRuYW1lcy4uLikge1xuICBAaW5jbHVkZSBfYm91cmJvbi1kZXByZWNhdGUtZm9yLXByZWZpeGluZyhcImFuaW1hdGlvbi1uYW1lXCIpO1xuXG4gIEBpbmNsdWRlIHByZWZpeGVyKGFuaW1hdGlvbi1uYW1lLCAkbmFtZXMsIHdlYmtpdCBtb3ogc3BlYyk7XG59XG5cbkBtaXhpbiBhbmltYXRpb24tZHVyYXRpb24oJHRpbWVzLi4uKSB7XG4gIEBpbmNsdWRlIF9ib3VyYm9uLWRlcHJlY2F0ZS1mb3ItcHJlZml4aW5nKFwiYW5pbWF0aW9uLWR1cmF0aW9uXCIpO1xuXG4gIEBpbmNsdWRlIHByZWZpeGVyKGFuaW1hdGlvbi1kdXJhdGlvbiwgJHRpbWVzLCB3ZWJraXQgbW96IHNwZWMpO1xufVxuXG5AbWl4aW4gYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbigkbW90aW9ucy4uLikge1xuICBAaW5jbHVkZSBfYm91cmJvbi1kZXByZWNhdGUtZm9yLXByZWZpeGluZyhcImFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb25cIik7XG5cbiAgLy8gZWFzZSB8IGxpbmVhciB8IGVhc2UtaW4gfCBlYXNlLW91dCB8IGVhc2UtaW4tb3V0XG4gIEBpbmNsdWRlIHByZWZpeGVyKGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb24sICRtb3Rpb25zLCB3ZWJraXQgbW96IHNwZWMpO1xufVxuXG5AbWl4aW4gYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudCgkdmFsdWVzLi4uKSB7XG4gIEBpbmNsdWRlIF9ib3VyYm9uLWRlcHJlY2F0ZS1mb3ItcHJlZml4aW5nKFwiYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudFwiKTtcblxuICAvLyBpbmZpbml0ZSB8IDxudW1iZXI+XG4gIEBpbmNsdWRlIHByZWZpeGVyKGFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQsICR2YWx1ZXMsIHdlYmtpdCBtb3ogc3BlYyk7XG59XG5cbkBtaXhpbiBhbmltYXRpb24tZGlyZWN0aW9uKCRkaXJlY3Rpb25zLi4uKSB7XG4gIEBpbmNsdWRlIF9ib3VyYm9uLWRlcHJlY2F0ZS1mb3ItcHJlZml4aW5nKFwiYW5pbWF0aW9uLWRpcmVjdGlvblwiKTtcblxuICAvLyBub3JtYWwgfCBhbHRlcm5hdGVcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYW5pbWF0aW9uLWRpcmVjdGlvbiwgJGRpcmVjdGlvbnMsIHdlYmtpdCBtb3ogc3BlYyk7XG59XG5cbkBtaXhpbiBhbmltYXRpb24tcGxheS1zdGF0ZSgkc3RhdGVzLi4uKSB7XG4gIEBpbmNsdWRlIF9ib3VyYm9uLWRlcHJlY2F0ZS1mb3ItcHJlZml4aW5nKFwiYW5pbWF0aW9uLXBsYXktc3RhdGVcIik7XG5cbiAgLy8gcnVubmluZyB8IHBhdXNlZFxuICBAaW5jbHVkZSBwcmVmaXhlcihhbmltYXRpb24tcGxheS1zdGF0ZSwgJHN0YXRlcywgd2Via2l0IG1veiBzcGVjKTtcbn1cblxuQG1peGluIGFuaW1hdGlvbi1kZWxheSgkdGltZXMuLi4pIHtcbiAgQGluY2x1ZGUgX2JvdXJib24tZGVwcmVjYXRlLWZvci1wcmVmaXhpbmcoXCJhbmltYXRpb24tZGVsYXlcIik7XG5cbiAgQGluY2x1ZGUgcHJlZml4ZXIoYW5pbWF0aW9uLWRlbGF5LCAkdGltZXMsIHdlYmtpdCBtb3ogc3BlYyk7XG59XG5cbkBtaXhpbiBhbmltYXRpb24tZmlsbC1tb2RlKCRtb2Rlcy4uLikge1xuICBAaW5jbHVkZSBfYm91cmJvbi1kZXByZWNhdGUtZm9yLXByZWZpeGluZyhcImFuaW1hdGlvbi1maWxsLW1vZGVcIik7XG5cbiAgLy8gbm9uZSB8IGZvcndhcmRzIHwgYmFja3dhcmRzIHwgYm90aFxuICBAaW5jbHVkZSBwcmVmaXhlcihhbmltYXRpb24tZmlsbC1tb2RlLCAkbW9kZXMsIHdlYmtpdCBtb3ogc3BlYyk7XG59XG4iLCJAbWl4aW4gYXBwZWFyYW5jZSgkdmFsdWUpIHtcbiAgQGluY2x1ZGUgX2JvdXJib24tZGVwcmVjYXRlLWZvci1wcmVmaXhpbmcoXCJhcHBlYXJhbmNlXCIpO1xuXG4gIEBpbmNsdWRlIHByZWZpeGVyKGFwcGVhcmFuY2UsICR2YWx1ZSwgd2Via2l0IG1veiBtcyBvIHNwZWMpO1xufVxuIiwiQG1peGluIGJhY2tmYWNlLXZpc2liaWxpdHkoJHZpc2liaWxpdHkpIHtcbiAgQGluY2x1ZGUgX2JvdXJib24tZGVwcmVjYXRlLWZvci1wcmVmaXhpbmcoXCJiYWNrZmFjZS12aXNpYmlsaXR5XCIpO1xuXG4gIEBpbmNsdWRlIHByZWZpeGVyKGJhY2tmYWNlLXZpc2liaWxpdHksICR2aXNpYmlsaXR5LCB3ZWJraXQgc3BlYyk7XG59XG4iLCIvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vXG4vLyBCYWNrZ3JvdW5kIHByb3BlcnR5IGZvciBhZGRpbmcgbXVsdGlwbGUgYmFja2dyb3VuZHMgdXNpbmcgc2hvcnRoYW5kXG4vLyBub3RhdGlvbi5cbi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy9cblxuQG1peGluIGJhY2tncm91bmQoJGJhY2tncm91bmRzLi4uKSB7XG4gIEBpbmNsdWRlIF9ib3VyYm9uLWRlcHJlY2F0ZS1mb3ItcHJlZml4aW5nKFwiYmFja2dyb3VuZFwiKTtcblxuICAkd2Via2l0LWJhY2tncm91bmRzOiAoKTtcbiAgJHNwZWMtYmFja2dyb3VuZHM6ICgpO1xuXG4gIEBlYWNoICRiYWNrZ3JvdW5kIGluICRiYWNrZ3JvdW5kcyB7XG4gICAgJHdlYmtpdC1iYWNrZ3JvdW5kOiAoKTtcbiAgICAkc3BlYy1iYWNrZ3JvdW5kOiAoKTtcbiAgICAkYmFja2dyb3VuZC10eXBlOiB0eXBlLW9mKCRiYWNrZ3JvdW5kKTtcblxuICAgIEBpZiAkYmFja2dyb3VuZC10eXBlID09IHN0cmluZyBvciAkYmFja2dyb3VuZC10eXBlID09IGxpc3Qge1xuICAgICAgJGJhY2tncm91bmQtc3RyOiBpZigkYmFja2dyb3VuZC10eXBlID09IGxpc3QsIG50aCgkYmFja2dyb3VuZCwgMSksICRiYWNrZ3JvdW5kKTtcblxuICAgICAgJHVybC1zdHI6ICAgICAgIHN0ci1zbGljZSgkYmFja2dyb3VuZC1zdHIsIDEsIDMpO1xuICAgICAgJGdyYWRpZW50LXR5cGU6IHN0ci1zbGljZSgkYmFja2dyb3VuZC1zdHIsIDEsIDYpO1xuXG4gICAgICBAaWYgJHVybC1zdHIgPT0gXCJ1cmxcIiB7XG4gICAgICAgICR3ZWJraXQtYmFja2dyb3VuZDogJGJhY2tncm91bmQ7XG4gICAgICAgICRzcGVjLWJhY2tncm91bmQ6ICAgJGJhY2tncm91bmQ7XG4gICAgICB9XG5cbiAgICAgIEBlbHNlIGlmICRncmFkaWVudC10eXBlID09IFwibGluZWFyXCIge1xuICAgICAgICAkZ3JhZGllbnRzOiBfbGluZWFyLWdyYWRpZW50LXBhcnNlcihcIiN7JGJhY2tncm91bmR9XCIpO1xuICAgICAgICAkd2Via2l0LWJhY2tncm91bmQ6IG1hcC1nZXQoJGdyYWRpZW50cywgd2Via2l0LWltYWdlKTtcbiAgICAgICAgJHNwZWMtYmFja2dyb3VuZDogICBtYXAtZ2V0KCRncmFkaWVudHMsIHNwZWMtaW1hZ2UpO1xuICAgICAgfVxuXG4gICAgICBAZWxzZSBpZiAkZ3JhZGllbnQtdHlwZSA9PSBcInJhZGlhbFwiIHtcbiAgICAgICAgJGdyYWRpZW50czogX3JhZGlhbC1ncmFkaWVudC1wYXJzZXIoXCIjeyRiYWNrZ3JvdW5kfVwiKTtcbiAgICAgICAgJHdlYmtpdC1iYWNrZ3JvdW5kOiBtYXAtZ2V0KCRncmFkaWVudHMsIHdlYmtpdC1pbWFnZSk7XG4gICAgICAgICRzcGVjLWJhY2tncm91bmQ6ICAgbWFwLWdldCgkZ3JhZGllbnRzLCBzcGVjLWltYWdlKTtcbiAgICAgIH1cblxuICAgICAgQGVsc2Uge1xuICAgICAgICAkd2Via2l0LWJhY2tncm91bmQ6ICRiYWNrZ3JvdW5kO1xuICAgICAgICAkc3BlYy1iYWNrZ3JvdW5kOiAgICRiYWNrZ3JvdW5kO1xuICAgICAgfVxuICAgIH1cblxuICAgIEBlbHNlIHtcbiAgICAgICR3ZWJraXQtYmFja2dyb3VuZDogJGJhY2tncm91bmQ7XG4gICAgICAkc3BlYy1iYWNrZ3JvdW5kOiAgICRiYWNrZ3JvdW5kO1xuICAgIH1cblxuICAgICR3ZWJraXQtYmFja2dyb3VuZHM6IGFwcGVuZCgkd2Via2l0LWJhY2tncm91bmRzLCAkd2Via2l0LWJhY2tncm91bmQsIGNvbW1hKTtcbiAgICAkc3BlYy1iYWNrZ3JvdW5kczogICBhcHBlbmQoJHNwZWMtYmFja2dyb3VuZHMsICAgJHNwZWMtYmFja2dyb3VuZCwgICBjb21tYSk7XG4gIH1cblxuICBiYWNrZ3JvdW5kOiAkd2Via2l0LWJhY2tncm91bmRzO1xuICBiYWNrZ3JvdW5kOiAkc3BlYy1iYWNrZ3JvdW5kcztcbn1cbiIsIi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy9cbi8vIEJhY2tncm91bmQtaW1hZ2UgcHJvcGVydHkgZm9yIGFkZGluZyBtdWx0aXBsZSBiYWNrZ3JvdW5kIGltYWdlcyB3aXRoXG4vLyBncmFkaWVudHMsIG9yIGZvciBzdHJpbmdpbmcgbXVsdGlwbGUgZ3JhZGllbnRzIHRvZ2V0aGVyLlxuLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovL1xuXG5AbWl4aW4gYmFja2dyb3VuZC1pbWFnZSgkaW1hZ2VzLi4uKSB7XG4gIEBpbmNsdWRlIF9ib3VyYm9uLWRlcHJlY2F0ZS1mb3ItcHJlZml4aW5nKFwiYmFja2dyb3VuZC1pbWFnZVwiKTtcblxuICAkd2Via2l0LWltYWdlczogKCk7XG4gICRzcGVjLWltYWdlczogKCk7XG5cbiAgQGVhY2ggJGltYWdlIGluICRpbWFnZXMge1xuICAgICR3ZWJraXQtaW1hZ2U6ICgpO1xuICAgICRzcGVjLWltYWdlOiAoKTtcblxuICAgIEBpZiAodHlwZS1vZigkaW1hZ2UpID09IHN0cmluZykge1xuICAgICAgJHVybC1zdHI6ICAgICAgIHN0ci1zbGljZSgkaW1hZ2UsIDEsIDMpO1xuICAgICAgJGdyYWRpZW50LXR5cGU6IHN0ci1zbGljZSgkaW1hZ2UsIDEsIDYpO1xuXG4gICAgICBAaWYgJHVybC1zdHIgPT0gXCJ1cmxcIiB7XG4gICAgICAgICR3ZWJraXQtaW1hZ2U6ICRpbWFnZTtcbiAgICAgICAgJHNwZWMtaW1hZ2U6ICAgJGltYWdlO1xuICAgICAgfVxuXG4gICAgICBAZWxzZSBpZiAkZ3JhZGllbnQtdHlwZSA9PSBcImxpbmVhclwiIHtcbiAgICAgICAgJGdyYWRpZW50czogX2xpbmVhci1ncmFkaWVudC1wYXJzZXIoJGltYWdlKTtcbiAgICAgICAgJHdlYmtpdC1pbWFnZTogIG1hcC1nZXQoJGdyYWRpZW50cywgd2Via2l0LWltYWdlKTtcbiAgICAgICAgJHNwZWMtaW1hZ2U6ICAgIG1hcC1nZXQoJGdyYWRpZW50cywgc3BlYy1pbWFnZSk7XG4gICAgICB9XG5cbiAgICAgIEBlbHNlIGlmICRncmFkaWVudC10eXBlID09IFwicmFkaWFsXCIge1xuICAgICAgICAkZ3JhZGllbnRzOiBfcmFkaWFsLWdyYWRpZW50LXBhcnNlcigkaW1hZ2UpO1xuICAgICAgICAkd2Via2l0LWltYWdlOiBtYXAtZ2V0KCRncmFkaWVudHMsIHdlYmtpdC1pbWFnZSk7XG4gICAgICAgICRzcGVjLWltYWdlOiAgIG1hcC1nZXQoJGdyYWRpZW50cywgc3BlYy1pbWFnZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJHdlYmtpdC1pbWFnZXM6IGFwcGVuZCgkd2Via2l0LWltYWdlcywgJHdlYmtpdC1pbWFnZSwgY29tbWEpO1xuICAgICRzcGVjLWltYWdlczogICBhcHBlbmQoJHNwZWMtaW1hZ2VzLCAgICRzcGVjLWltYWdlLCAgIGNvbW1hKTtcbiAgfVxuXG4gIGJhY2tncm91bmQtaW1hZ2U6ICR3ZWJraXQtaW1hZ2VzO1xuICBiYWNrZ3JvdW5kLWltYWdlOiAkc3BlYy1pbWFnZXM7XG59XG4iLCJAbWl4aW4gYm9yZGVyLWltYWdlKCRib3JkZXJzLi4uKSB7XG4gIEBpbmNsdWRlIF9ib3VyYm9uLWRlcHJlY2F0ZS1mb3ItcHJlZml4aW5nKFwiYm9yZGVyLWltYWdlXCIpO1xuXG4gICR3ZWJraXQtYm9yZGVyczogKCk7XG4gICRzcGVjLWJvcmRlcnM6ICgpO1xuXG4gIEBlYWNoICRib3JkZXIgaW4gJGJvcmRlcnMge1xuICAgICR3ZWJraXQtYm9yZGVyOiAoKTtcbiAgICAkc3BlYy1ib3JkZXI6ICgpO1xuICAgICRib3JkZXItdHlwZTogdHlwZS1vZigkYm9yZGVyKTtcblxuICAgIEBpZiAkYm9yZGVyLXR5cGUgPT0gc3RyaW5nIG9yIGxpc3Qge1xuICAgICAgJGJvcmRlci1zdHI6IGlmKCRib3JkZXItdHlwZSA9PSBsaXN0LCBudGgoJGJvcmRlciwgMSksICRib3JkZXIpO1xuXG4gICAgICAkdXJsLXN0cjogICAgICAgc3RyLXNsaWNlKCRib3JkZXItc3RyLCAxLCAzKTtcbiAgICAgICRncmFkaWVudC10eXBlOiBzdHItc2xpY2UoJGJvcmRlci1zdHIsIDEsIDYpO1xuXG4gICAgICBAaWYgJHVybC1zdHIgPT0gXCJ1cmxcIiB7XG4gICAgICAgICR3ZWJraXQtYm9yZGVyOiAkYm9yZGVyO1xuICAgICAgICAkc3BlYy1ib3JkZXI6ICAgJGJvcmRlcjtcbiAgICAgIH1cblxuICAgICAgQGVsc2UgaWYgJGdyYWRpZW50LXR5cGUgPT0gXCJsaW5lYXJcIiB7XG4gICAgICAgICRncmFkaWVudHM6IF9saW5lYXItZ3JhZGllbnQtcGFyc2VyKFwiI3skYm9yZGVyfVwiKTtcbiAgICAgICAgJHdlYmtpdC1ib3JkZXI6IG1hcC1nZXQoJGdyYWRpZW50cywgd2Via2l0LWltYWdlKTtcbiAgICAgICAgJHNwZWMtYm9yZGVyOiAgIG1hcC1nZXQoJGdyYWRpZW50cywgc3BlYy1pbWFnZSk7XG4gICAgICB9XG5cbiAgICAgIEBlbHNlIGlmICRncmFkaWVudC10eXBlID09IFwicmFkaWFsXCIge1xuICAgICAgICAkZ3JhZGllbnRzOiBfcmFkaWFsLWdyYWRpZW50LXBhcnNlcihcIiN7JGJvcmRlcn1cIik7XG4gICAgICAgICR3ZWJraXQtYm9yZGVyOiBtYXAtZ2V0KCRncmFkaWVudHMsIHdlYmtpdC1pbWFnZSk7XG4gICAgICAgICRzcGVjLWJvcmRlcjogICBtYXAtZ2V0KCRncmFkaWVudHMsIHNwZWMtaW1hZ2UpO1xuICAgICAgfVxuXG4gICAgICBAZWxzZSB7XG4gICAgICAgICR3ZWJraXQtYm9yZGVyOiAkYm9yZGVyO1xuICAgICAgICAkc3BlYy1ib3JkZXI6ICAgJGJvcmRlcjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBAZWxzZSB7XG4gICAgICAkd2Via2l0LWJvcmRlcjogJGJvcmRlcjtcbiAgICAgICRzcGVjLWJvcmRlcjogICAkYm9yZGVyO1xuICAgIH1cblxuICAgICR3ZWJraXQtYm9yZGVyczogYXBwZW5kKCR3ZWJraXQtYm9yZGVycywgJHdlYmtpdC1ib3JkZXIsIGNvbW1hKTtcbiAgICAkc3BlYy1ib3JkZXJzOiAgIGFwcGVuZCgkc3BlYy1ib3JkZXJzLCAgICRzcGVjLWJvcmRlciwgICBjb21tYSk7XG4gIH1cblxuICAtd2Via2l0LWJvcmRlci1pbWFnZTogJHdlYmtpdC1ib3JkZXJzO1xuICAgICAgICAgIGJvcmRlci1pbWFnZTogJHNwZWMtYm9yZGVycztcbiAgICAgICAgICBib3JkZXItc3R5bGU6IHNvbGlkO1xufVxuXG4vL0V4YW1wbGVzOlxuLy8gQGluY2x1ZGUgYm9yZGVyLWltYWdlKHVybChcImltYWdlLnBuZ1wiKSk7XG4vLyBAaW5jbHVkZSBib3JkZXItaW1hZ2UodXJsKFwiaW1hZ2UucG5nXCIpIDIwIHN0cmV0Y2gpO1xuLy8gQGluY2x1ZGUgYm9yZGVyLWltYWdlKGxpbmVhci1ncmFkaWVudCg0NWRlZywgb3JhbmdlLCB5ZWxsb3cpKTtcbi8vIEBpbmNsdWRlIGJvcmRlci1pbWFnZShsaW5lYXItZ3JhZGllbnQoNDVkZWcsIG9yYW5nZSwgeWVsbG93KSBzdHJldGNoKTtcbi8vIEBpbmNsdWRlIGJvcmRlci1pbWFnZShsaW5lYXItZ3JhZGllbnQoNDVkZWcsIG9yYW5nZSwgeWVsbG93KSAyMCAzMCA0MCA1MCBzdHJldGNoIHJvdW5kKTtcbi8vIEBpbmNsdWRlIGJvcmRlci1pbWFnZShyYWRpYWwtZ3JhZGllbnQodG9wLCBjb3Zlciwgb3JhbmdlLCB5ZWxsb3csIG9yYW5nZSkpO1xuIiwiQG1peGluIGNhbGMoJHByb3BlcnR5LCAkdmFsdWUpIHtcbiAgQGluY2x1ZGUgX2JvdXJib24tZGVwcmVjYXRlLWZvci1wcmVmaXhpbmcoXCJjYWxjXCIpO1xuXG4gICN7JHByb3BlcnR5fTogLXdlYmtpdC1jYWxjKCN7JHZhbHVlfSk7XG4gICN7JHByb3BlcnR5fTogY2FsYygjeyR2YWx1ZX0pO1xufVxuIiwiQG1peGluIGNvbHVtbnMoJGFyZzogYXV0bykge1xuICBAaW5jbHVkZSBfYm91cmJvbi1kZXByZWNhdGUtZm9yLXByZWZpeGluZyhcImNvbHVtbnNcIik7XG5cbiAgLy8gPGNvbHVtbi1jb3VudD4gfHwgPGNvbHVtbi13aWR0aD5cbiAgQGluY2x1ZGUgcHJlZml4ZXIoY29sdW1ucywgJGFyZywgd2Via2l0IG1veiBzcGVjKTtcbn1cblxuQG1peGluIGNvbHVtbi1jb3VudCgkaW50OiBhdXRvKSB7XG4gIEBpbmNsdWRlIF9ib3VyYm9uLWRlcHJlY2F0ZS1mb3ItcHJlZml4aW5nKFwiY29sdW1uLWNvdW50XCIpO1xuXG4gIC8vIGF1dG8gfHwgaW50ZWdlclxuICBAaW5jbHVkZSBwcmVmaXhlcihjb2x1bW4tY291bnQsICRpbnQsIHdlYmtpdCBtb3ogc3BlYyk7XG59XG5cbkBtaXhpbiBjb2x1bW4tZ2FwKCRsZW5ndGg6IG5vcm1hbCkge1xuICBAaW5jbHVkZSBfYm91cmJvbi1kZXByZWNhdGUtZm9yLXByZWZpeGluZyhcImNvbHVtbi1nYXBcIik7XG5cbiAgLy8gbm9ybWFsIHx8IGxlbmd0aFxuICBAaW5jbHVkZSBwcmVmaXhlcihjb2x1bW4tZ2FwLCAkbGVuZ3RoLCB3ZWJraXQgbW96IHNwZWMpO1xufVxuXG5AbWl4aW4gY29sdW1uLWZpbGwoJGFyZzogYXV0bykge1xuICBAaW5jbHVkZSBfYm91cmJvbi1kZXByZWNhdGUtZm9yLXByZWZpeGluZyhcImNvbHVtbi1maWxsXCIpO1xuXG4gIC8vIGF1dG8gfHwgbGVuZ3RoXG4gIEBpbmNsdWRlIHByZWZpeGVyKGNvbHVtbi1maWxsLCAkYXJnLCB3ZWJraXQgbW96IHNwZWMpO1xufVxuXG5AbWl4aW4gY29sdW1uLXJ1bGUoJGFyZykge1xuICBAaW5jbHVkZSBfYm91cmJvbi1kZXByZWNhdGUtZm9yLXByZWZpeGluZyhcImNvbHVtbi1ydWxlXCIpO1xuXG4gIC8vIDxib3JkZXItd2lkdGg+IHx8IDxib3JkZXItc3R5bGU+IHx8IDxjb2xvcj5cbiAgQGluY2x1ZGUgcHJlZml4ZXIoY29sdW1uLXJ1bGUsICRhcmcsIHdlYmtpdCBtb3ogc3BlYyk7XG59XG5cbkBtaXhpbiBjb2x1bW4tcnVsZS1jb2xvcigkY29sb3IpIHtcbiAgQGluY2x1ZGUgX2JvdXJib24tZGVwcmVjYXRlLWZvci1wcmVmaXhpbmcoXCJjb2x1bW4tcnVsZS1jb2xvclwiKTtcblxuICBAaW5jbHVkZSBwcmVmaXhlcihjb2x1bW4tcnVsZS1jb2xvciwgJGNvbG9yLCB3ZWJraXQgbW96IHNwZWMpO1xufVxuXG5AbWl4aW4gY29sdW1uLXJ1bGUtc3R5bGUoJHN0eWxlOiBub25lKSB7XG4gIEBpbmNsdWRlIF9ib3VyYm9uLWRlcHJlY2F0ZS1mb3ItcHJlZml4aW5nKFwiY29sdW1uLXJ1bGUtc3R5bGVcIik7XG5cbiAgLy8gbm9uZSB8IGhpZGRlbiB8IGRhc2hlZCB8IGRvdHRlZCB8IGRvdWJsZSB8IGdyb292ZSB8IGluc2V0IHwgaW5zZXQgfCBvdXRzZXQgfCByaWRnZSB8IHNvbGlkXG4gIEBpbmNsdWRlIHByZWZpeGVyKGNvbHVtbi1ydWxlLXN0eWxlLCAkc3R5bGUsIHdlYmtpdCBtb3ogc3BlYyk7XG59XG5cbkBtaXhpbiBjb2x1bW4tcnVsZS13aWR0aCgkd2lkdGg6IG5vbmUpIHtcbiAgQGluY2x1ZGUgX2JvdXJib24tZGVwcmVjYXRlLWZvci1wcmVmaXhpbmcoXCJjb2x1bW4tcnVsZS13aWR0aFwiKTtcblxuICBAaW5jbHVkZSBwcmVmaXhlcihjb2x1bW4tcnVsZS13aWR0aCwgJHdpZHRoLCB3ZWJraXQgbW96IHNwZWMpO1xufVxuXG5AbWl4aW4gY29sdW1uLXNwYW4oJGFyZzogbm9uZSkge1xuICBAaW5jbHVkZSBfYm91cmJvbi1kZXByZWNhdGUtZm9yLXByZWZpeGluZyhcImNvbHVtbi1zcGFuXCIpO1xuXG4gIC8vIG5vbmUgfHwgYWxsXG4gIEBpbmNsdWRlIHByZWZpeGVyKGNvbHVtbi1zcGFuLCAkYXJnLCB3ZWJraXQgbW96IHNwZWMpO1xufVxuXG5AbWl4aW4gY29sdW1uLXdpZHRoKCRsZW5ndGg6IGF1dG8pIHtcbiAgQGluY2x1ZGUgX2JvdXJib24tZGVwcmVjYXRlLWZvci1wcmVmaXhpbmcoXCJjb2x1bW4td2lkdGhcIik7XG5cbiAgLy8gYXV0byB8fCBsZW5ndGhcbiAgQGluY2x1ZGUgcHJlZml4ZXIoY29sdW1uLXdpZHRoLCAkbGVuZ3RoLCB3ZWJraXQgbW96IHNwZWMpO1xufVxuIiwiQG1peGluIGZpbHRlcigkZnVuY3Rpb246IG5vbmUpIHtcbiAgQGluY2x1ZGUgX2JvdXJib24tZGVwcmVjYXRlLWZvci1wcmVmaXhpbmcoXCJmaWx0ZXJcIik7XG5cbiAgLy8gPGZpbHRlci1mdW5jdGlvbj4gWzxmaWx0ZXItZnVuY3Rpb25dKiB8IG5vbmVcbiAgQGluY2x1ZGUgcHJlZml4ZXIoZmlsdGVyLCAkZnVuY3Rpb24sIHdlYmtpdCBzcGVjKTtcbn1cbiIsIi8vIENTUzMgRmxleGlibGUgQm94IE1vZGVsIGFuZCBwcm9wZXJ0eSBkZWZhdWx0c1xuXG4vLyBDdXN0b20gc2hvcnRoYW5kIG5vdGF0aW9uIGZvciBmbGV4Ym94XG5AbWl4aW4gYm94KCRvcmllbnQ6IGlubGluZS1heGlzLCAkcGFjazogc3RhcnQsICRhbGlnbjogc3RyZXRjaCkge1xuICBAaW5jbHVkZSBfYm91cmJvbi1kZXByZWNhdGUtZm9yLXByZWZpeGluZyhcImJveFwiKTtcblxuICBAaW5jbHVkZSBkaXNwbGF5LWJveDtcbiAgQGluY2x1ZGUgYm94LW9yaWVudCgkb3JpZW50KTtcbiAgQGluY2x1ZGUgYm94LXBhY2soJHBhY2spO1xuICBAaW5jbHVkZSBib3gtYWxpZ24oJGFsaWduKTtcbn1cblxuQG1peGluIGRpc3BsYXktYm94IHtcbiAgQGluY2x1ZGUgX2JvdXJib24tZGVwcmVjYXRlLWZvci1wcmVmaXhpbmcoXCJkaXNwbGF5LWJveFwiKTtcblxuICBkaXNwbGF5OiAtd2Via2l0LWJveDtcbiAgZGlzcGxheTogLW1vei1ib3g7XG4gIGRpc3BsYXk6IC1tcy1mbGV4Ym94OyAvLyBJRSAxMFxuICBkaXNwbGF5OiBib3g7XG59XG5cbkBtaXhpbiBib3gtb3JpZW50KCRvcmllbnQ6IGlubGluZS1heGlzKSB7XG4gIEBpbmNsdWRlIF9ib3VyYm9uLWRlcHJlY2F0ZS1mb3ItcHJlZml4aW5nKFwiYm94LW9yaWVudFwiKTtcblxuLy8gaG9yaXpvbnRhbHx2ZXJ0aWNhbHxpbmxpbmUtYXhpc3xibG9jay1heGlzfGluaGVyaXRcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYm94LW9yaWVudCwgJG9yaWVudCwgd2Via2l0IG1veiBzcGVjKTtcbn1cblxuQG1peGluIGJveC1wYWNrKCRwYWNrOiBzdGFydCkge1xuICBAaW5jbHVkZSBfYm91cmJvbi1kZXByZWNhdGUtZm9yLXByZWZpeGluZyhcImJveC1wYWNrXCIpO1xuXG4vLyBzdGFydHxlbmR8Y2VudGVyfGp1c3RpZnlcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYm94LXBhY2ssICRwYWNrLCB3ZWJraXQgbW96IHNwZWMpO1xuICAtbXMtZmxleC1wYWNrOiAkcGFjazsgLy8gSUUgMTBcbn1cblxuQG1peGluIGJveC1hbGlnbigkYWxpZ246IHN0cmV0Y2gpIHtcbiAgQGluY2x1ZGUgX2JvdXJib24tZGVwcmVjYXRlLWZvci1wcmVmaXhpbmcoXCJib3gtYWxpZ25cIik7XG5cbi8vIHN0YXJ0fGVuZHxjZW50ZXJ8YmFzZWxpbmV8c3RyZXRjaFxuICBAaW5jbHVkZSBwcmVmaXhlcihib3gtYWxpZ24sICRhbGlnbiwgd2Via2l0IG1veiBzcGVjKTtcbiAgLW1zLWZsZXgtYWxpZ246ICRhbGlnbjsgLy8gSUUgMTBcbn1cblxuQG1peGluIGJveC1kaXJlY3Rpb24oJGRpcmVjdGlvbjogbm9ybWFsKSB7XG4gIEBpbmNsdWRlIF9ib3VyYm9uLWRlcHJlY2F0ZS1mb3ItcHJlZml4aW5nKFwiYm94LWRpcmVjdGlvblwiKTtcblxuLy8gbm9ybWFsfHJldmVyc2V8aW5oZXJpdFxuICBAaW5jbHVkZSBwcmVmaXhlcihib3gtZGlyZWN0aW9uLCAkZGlyZWN0aW9uLCB3ZWJraXQgbW96IHNwZWMpO1xuICAtbXMtZmxleC1kaXJlY3Rpb246ICRkaXJlY3Rpb247IC8vIElFIDEwXG59XG5cbkBtaXhpbiBib3gtbGluZXMoJGxpbmVzOiBzaW5nbGUpIHtcbiAgQGluY2x1ZGUgX2JvdXJib24tZGVwcmVjYXRlLWZvci1wcmVmaXhpbmcoXCJib3gtbGluZXNcIik7XG5cbi8vIHNpbmdsZXxtdWx0aXBsZVxuICBAaW5jbHVkZSBwcmVmaXhlcihib3gtbGluZXMsICRsaW5lcywgd2Via2l0IG1veiBzcGVjKTtcbn1cblxuQG1peGluIGJveC1vcmRpbmFsLWdyb3VwKCRpbnQ6IDEpIHtcbiAgQGluY2x1ZGUgX2JvdXJib24tZGVwcmVjYXRlLWZvci1wcmVmaXhpbmcoXCJib3gtb3JkaW5hbC1ncm91cFwiKTtcblxuICBAaW5jbHVkZSBwcmVmaXhlcihib3gtb3JkaW5hbC1ncm91cCwgJGludCwgd2Via2l0IG1veiBzcGVjKTtcbiAgLW1zLWZsZXgtb3JkZXI6ICRpbnQ7IC8vIElFIDEwXG59XG5cbkBtaXhpbiBib3gtZmxleCgkdmFsdWU6IDApIHtcbiAgQGluY2x1ZGUgX2JvdXJib24tZGVwcmVjYXRlLWZvci1wcmVmaXhpbmcoXCJib3gtZmxleFwiKTtcblxuICBAaW5jbHVkZSBwcmVmaXhlcihib3gtZmxleCwgJHZhbHVlLCB3ZWJraXQgbW96IHNwZWMpO1xuICAtbXMtZmxleDogJHZhbHVlOyAvLyBJRSAxMFxufVxuXG5AbWl4aW4gYm94LWZsZXgtZ3JvdXAoJGludDogMSkge1xuICBAaW5jbHVkZSBfYm91cmJvbi1kZXByZWNhdGUtZm9yLXByZWZpeGluZyhcImJveC1mbGV4LWdyb3VwXCIpO1xuXG4gIEBpbmNsdWRlIHByZWZpeGVyKGJveC1mbGV4LWdyb3VwLCAkaW50LCB3ZWJraXQgbW96IHNwZWMpO1xufVxuXG4vLyBDU1MzIEZsZXhpYmxlIEJveCBNb2RlbCBhbmQgcHJvcGVydHkgZGVmYXVsdHNcbi8vIFVuaWZpZWQgYXR0cmlidXRlcyBmb3IgMjAwOSwgMjAxMSwgYW5kIDIwMTIgZmxhdm91cnMuXG5cbi8vIDIwMDkgLSBkaXNwbGF5IChib3ggfCBpbmxpbmUtYm94KVxuLy8gMjAxMSAtIGRpc3BsYXkgKGZsZXhib3ggfCBpbmxpbmUtZmxleGJveClcbi8vIDIwMTIgLSBkaXNwbGF5IChmbGV4IHwgaW5saW5lLWZsZXgpXG5AbWl4aW4gZGlzcGxheSgkdmFsdWUpIHtcbiAgQGluY2x1ZGUgX2JvdXJib24tZGVwcmVjYXRlLWZvci1wcmVmaXhpbmcoXCJkaXNwbGF5XCIpO1xuXG4vLyBmbGV4IHwgaW5saW5lLWZsZXhcbiAgQGlmICR2YWx1ZSA9PSBcImZsZXhcIiB7XG4gICAgLy8gMjAwOVxuICAgIGRpc3BsYXk6IC13ZWJraXQtYm94O1xuICAgIGRpc3BsYXk6IC1tb3otYm94O1xuICAgIGRpc3BsYXk6IGJveDtcblxuICAgIC8vIDIwMTJcbiAgICBkaXNwbGF5OiAtd2Via2l0LWZsZXg7XG4gICAgZGlzcGxheTogLW1vei1mbGV4O1xuICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94OyAvLyAyMDExIChJRSAxMClcbiAgICBkaXNwbGF5OiBmbGV4O1xuICB9IEBlbHNlIGlmICR2YWx1ZSA9PSBcImlubGluZS1mbGV4XCIge1xuICAgIGRpc3BsYXk6IC13ZWJraXQtaW5saW5lLWJveDtcbiAgICBkaXNwbGF5OiAtbW96LWlubGluZS1ib3g7XG4gICAgZGlzcGxheTogaW5saW5lLWJveDtcblxuICAgIGRpc3BsYXk6IC13ZWJraXQtaW5saW5lLWZsZXg7XG4gICAgZGlzcGxheTogLW1vei1pbmxpbmUtZmxleDtcbiAgICBkaXNwbGF5OiAtbXMtaW5saW5lLWZsZXhib3g7XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gIH0gQGVsc2Uge1xuICAgIGRpc3BsYXk6ICR2YWx1ZTtcbiAgfVxufVxuXG4vLyAyMDA5IC0gYm94LWZsZXggKGludGVnZXIpXG4vLyAyMDExIC0gZmxleCAoZGVjaW1hbCB8IHdpZHRoIGRlY2ltYWwpXG4vLyAyMDEyIC0gZmxleCAoaW50ZWdlciBpbnRlZ2VyIHdpZHRoKVxuQG1peGluIGZsZXgoJHZhbHVlKSB7XG4gIEBpbmNsdWRlIF9ib3VyYm9uLWRlcHJlY2F0ZS1mb3ItcHJlZml4aW5nKFwiZmxleFwiKTtcblxuICAvLyBHcmFiIGZsZXgtZ3JvdyBmb3Igb2xkZXIgYnJvd3NlcnMuXG4gICRmbGV4LWdyb3c6IG50aCgkdmFsdWUsIDEpO1xuXG4gIC8vIDIwMDlcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYm94LWZsZXgsICRmbGV4LWdyb3csIHdlYmtpdCBtb3ogc3BlYyk7XG5cbiAgLy8gMjAxMSAoSUUgMTApLCAyMDEyXG4gIEBpbmNsdWRlIHByZWZpeGVyKGZsZXgsICR2YWx1ZSwgd2Via2l0IG1veiBtcyBzcGVjKTtcbn1cblxuLy8gMjAwOSAtIGJveC1vcmllbnQgKCBob3Jpem9udGFsIHwgdmVydGljYWwgfCBpbmxpbmUtYXhpcyB8IGJsb2NrLWF4aXMpXG4vLyAgICAgIC0gYm94LWRpcmVjdGlvbiAobm9ybWFsIHwgcmV2ZXJzZSlcbi8vIDIwMTEgLSBmbGV4LWRpcmVjdGlvbiAocm93IHwgcm93LXJldmVyc2UgfCBjb2x1bW4gfCBjb2x1bW4tcmV2ZXJzZSlcbi8vIDIwMTIgLSBmbGV4LWRpcmVjdGlvbiAocm93IHwgcm93LXJldmVyc2UgfCBjb2x1bW4gfCBjb2x1bW4tcmV2ZXJzZSlcbkBtaXhpbiBmbGV4LWRpcmVjdGlvbigkdmFsdWU6IHJvdykge1xuICBAaW5jbHVkZSBfYm91cmJvbi1kZXByZWNhdGUtZm9yLXByZWZpeGluZyhcImZsZXgtZGlyZWN0aW9uXCIpO1xuXG4gIC8vIEFsdCB2YWx1ZXMuXG4gICR2YWx1ZS0yMDA5OiAkdmFsdWU7XG4gICR2YWx1ZS0yMDExOiAkdmFsdWU7XG4gICRkaXJlY3Rpb246IG5vcm1hbDtcblxuICBAaWYgJHZhbHVlID09IHJvdyB7XG4gICAgJHZhbHVlLTIwMDk6IGhvcml6b250YWw7XG4gIH0gQGVsc2UgaWYgJHZhbHVlID09IFwicm93LXJldmVyc2VcIiB7XG4gICAgJHZhbHVlLTIwMDk6IGhvcml6b250YWw7XG4gICAgJGRpcmVjdGlvbjogcmV2ZXJzZTtcbiAgfSBAZWxzZSBpZiAkdmFsdWUgPT0gY29sdW1uIHtcbiAgICAkdmFsdWUtMjAwOTogdmVydGljYWw7XG4gIH0gQGVsc2UgaWYgJHZhbHVlID09IFwiY29sdW1uLXJldmVyc2VcIiB7XG4gICAgJHZhbHVlLTIwMDk6IHZlcnRpY2FsO1xuICAgICRkaXJlY3Rpb246IHJldmVyc2U7XG4gIH1cblxuICAvLyAyMDA5XG4gIEBpbmNsdWRlIHByZWZpeGVyKGJveC1vcmllbnQsICR2YWx1ZS0yMDA5LCB3ZWJraXQgbW96IHNwZWMpO1xuICBAaW5jbHVkZSBwcmVmaXhlcihib3gtZGlyZWN0aW9uLCAkZGlyZWN0aW9uLCB3ZWJraXQgbW96IHNwZWMpO1xuXG4gIC8vIDIwMTJcbiAgQGluY2x1ZGUgcHJlZml4ZXIoZmxleC1kaXJlY3Rpb24sICR2YWx1ZSwgd2Via2l0IG1veiBzcGVjKTtcblxuICAvLyAyMDExIChJRSAxMClcbiAgLW1zLWZsZXgtZGlyZWN0aW9uOiAkdmFsdWU7XG59XG5cbi8vIDIwMDkgLSBib3gtbGluZXMgKHNpbmdsZSB8IG11bHRpcGxlKVxuLy8gMjAxMSAtIGZsZXgtd3JhcCAobm93cmFwIHwgd3JhcCB8IHdyYXAtcmV2ZXJzZSlcbi8vIDIwMTIgLSBmbGV4LXdyYXAgKG5vd3JhcCB8IHdyYXAgfCB3cmFwLXJldmVyc2UpXG5AbWl4aW4gZmxleC13cmFwKCR2YWx1ZTogbm93cmFwKSB7XG4gIEBpbmNsdWRlIF9ib3VyYm9uLWRlcHJlY2F0ZS1mb3ItcHJlZml4aW5nKFwiZmxleC13cmFwXCIpO1xuXG4gIC8vIEFsdCB2YWx1ZXNcbiAgJGFsdC12YWx1ZTogJHZhbHVlO1xuICBAaWYgJHZhbHVlID09IG5vd3JhcCB7XG4gICAgJGFsdC12YWx1ZTogc2luZ2xlO1xuICB9IEBlbHNlIGlmICR2YWx1ZSA9PSB3cmFwIHtcbiAgICAkYWx0LXZhbHVlOiBtdWx0aXBsZTtcbiAgfSBAZWxzZSBpZiAkdmFsdWUgPT0gXCJ3cmFwLXJldmVyc2VcIiB7XG4gICAgJGFsdC12YWx1ZTogbXVsdGlwbGU7XG4gIH1cblxuICBAaW5jbHVkZSBwcmVmaXhlcihib3gtbGluZXMsICRhbHQtdmFsdWUsIHdlYmtpdCBtb3ogc3BlYyk7XG4gIEBpbmNsdWRlIHByZWZpeGVyKGZsZXgtd3JhcCwgJHZhbHVlLCB3ZWJraXQgbW96IG1zIHNwZWMpO1xufVxuXG4vLyAyMDA5IC0gVE9ETzogcGFyc2UgdmFsdWVzIGludG8gZmxleC1kaXJlY3Rpb24vZmxleC13cmFwXG4vLyAyMDExIC0gVE9ETzogcGFyc2UgdmFsdWVzIGludG8gZmxleC1kaXJlY3Rpb24vZmxleC13cmFwXG4vLyAyMDEyIC0gZmxleC1mbG93IChmbGV4LWRpcmVjdGlvbiB8fCBmbGV4LXdyYXApXG5AbWl4aW4gZmxleC1mbG93KCR2YWx1ZSkge1xuICBAaW5jbHVkZSBfYm91cmJvbi1kZXByZWNhdGUtZm9yLXByZWZpeGluZyhcImZsZXgtZmxvd1wiKTtcblxuICBAaW5jbHVkZSBwcmVmaXhlcihmbGV4LWZsb3csICR2YWx1ZSwgd2Via2l0IG1veiBzcGVjKTtcbn1cblxuLy8gMjAwOSAtIGJveC1vcmRpbmFsLWdyb3VwIChpbnRlZ2VyKVxuLy8gMjAxMSAtIGZsZXgtb3JkZXIgKGludGVnZXIpXG4vLyAyMDEyIC0gb3JkZXIgKGludGVnZXIpXG5AbWl4aW4gb3JkZXIoJGludDogMCkge1xuICBAaW5jbHVkZSBfYm91cmJvbi1kZXByZWNhdGUtZm9yLXByZWZpeGluZyhcIm9yZGVyXCIpO1xuXG4gIC8vIDIwMDlcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYm94LW9yZGluYWwtZ3JvdXAsICRpbnQsIHdlYmtpdCBtb3ogc3BlYyk7XG5cbiAgLy8gMjAxMlxuICBAaW5jbHVkZSBwcmVmaXhlcihvcmRlciwgJGludCwgd2Via2l0IG1veiBzcGVjKTtcblxuICAvLyAyMDExIChJRSAxMClcbiAgLW1zLWZsZXgtb3JkZXI6ICRpbnQ7XG59XG5cbi8vIDIwMTIgLSBmbGV4LWdyb3cgKG51bWJlcilcbkBtaXhpbiBmbGV4LWdyb3coJG51bWJlcjogMCkge1xuICBAaW5jbHVkZSBfYm91cmJvbi1kZXByZWNhdGUtZm9yLXByZWZpeGluZyhcImZsZXgtZ3Jvd1wiKTtcblxuICBAaW5jbHVkZSBwcmVmaXhlcihmbGV4LWdyb3csICRudW1iZXIsIHdlYmtpdCBtb3ogc3BlYyk7XG4gIC1tcy1mbGV4LXBvc2l0aXZlOiAkbnVtYmVyO1xufVxuXG4vLyAyMDEyIC0gZmxleC1zaHJpbmsgKG51bWJlcilcbkBtaXhpbiBmbGV4LXNocmluaygkbnVtYmVyOiAxKSB7XG4gIEBpbmNsdWRlIF9ib3VyYm9uLWRlcHJlY2F0ZS1mb3ItcHJlZml4aW5nKFwiZmxleC1zaHJpbmtcIik7XG5cbiAgQGluY2x1ZGUgcHJlZml4ZXIoZmxleC1zaHJpbmssICRudW1iZXIsIHdlYmtpdCBtb3ogc3BlYyk7XG4gIC1tcy1mbGV4LW5lZ2F0aXZlOiAkbnVtYmVyO1xufVxuXG4vLyAyMDEyIC0gZmxleC1iYXNpcyAobnVtYmVyKVxuQG1peGluIGZsZXgtYmFzaXMoJHdpZHRoOiBhdXRvKSB7XG4gIEBpbmNsdWRlIF9ib3VyYm9uLWRlcHJlY2F0ZS1mb3ItcHJlZml4aW5nKFwiZmxleC1iYXNpc1wiKTtcblxuICBAaW5jbHVkZSBwcmVmaXhlcihmbGV4LWJhc2lzLCAkd2lkdGgsIHdlYmtpdCBtb3ogc3BlYyk7XG4gIC1tcy1mbGV4LXByZWZlcnJlZC1zaXplOiAkd2lkdGg7XG59XG5cbi8vIDIwMDkgLSBib3gtcGFjayAoc3RhcnQgfCBlbmQgfCBjZW50ZXIgfCBqdXN0aWZ5KVxuLy8gMjAxMSAtIGZsZXgtcGFjayAoc3RhcnQgfCBlbmQgfCBjZW50ZXIgfCBqdXN0aWZ5KVxuLy8gMjAxMiAtIGp1c3RpZnktY29udGVudCAoZmxleC1zdGFydCB8IGZsZXgtZW5kIHwgY2VudGVyIHwgc3BhY2UtYmV0d2VlbiB8IHNwYWNlLWFyb3VuZClcbkBtaXhpbiBqdXN0aWZ5LWNvbnRlbnQoJHZhbHVlOiBmbGV4LXN0YXJ0KSB7XG4gIEBpbmNsdWRlIF9ib3VyYm9uLWRlcHJlY2F0ZS1mb3ItcHJlZml4aW5nKFwianVzdGlmeS1jb250ZW50XCIpO1xuXG4gIC8vIEFsdCB2YWx1ZXMuXG4gICRhbHQtdmFsdWU6ICR2YWx1ZTtcbiAgQGlmICR2YWx1ZSA9PSBcImZsZXgtc3RhcnRcIiB7XG4gICAgJGFsdC12YWx1ZTogc3RhcnQ7XG4gIH0gQGVsc2UgaWYgJHZhbHVlID09IFwiZmxleC1lbmRcIiB7XG4gICAgJGFsdC12YWx1ZTogZW5kO1xuICB9IEBlbHNlIGlmICR2YWx1ZSA9PSBcInNwYWNlLWJldHdlZW5cIiB7XG4gICAgJGFsdC12YWx1ZToganVzdGlmeTtcbiAgfSBAZWxzZSBpZiAkdmFsdWUgPT0gXCJzcGFjZS1hcm91bmRcIiB7XG4gICAgJGFsdC12YWx1ZTogZGlzdHJpYnV0ZTtcbiAgfVxuXG4gIC8vIDIwMDlcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYm94LXBhY2ssICRhbHQtdmFsdWUsIHdlYmtpdCBtb3ogc3BlYyk7XG5cbiAgLy8gMjAxMlxuICBAaW5jbHVkZSBwcmVmaXhlcihqdXN0aWZ5LWNvbnRlbnQsICR2YWx1ZSwgd2Via2l0IG1veiBtcyBvIHNwZWMpO1xuXG4gIC8vIDIwMTEgKElFIDEwKVxuICAtbXMtZmxleC1wYWNrOiAkYWx0LXZhbHVlO1xufVxuXG4vLyAyMDA5IC0gYm94LWFsaWduIChzdGFydCB8IGVuZCB8IGNlbnRlciB8IGJhc2VsaW5lIHwgc3RyZXRjaClcbi8vIDIwMTEgLSBmbGV4LWFsaWduIChzdGFydCB8IGVuZCB8IGNlbnRlciB8IGJhc2VsaW5lIHwgc3RyZXRjaClcbi8vIDIwMTIgLSBhbGlnbi1pdGVtcyAoZmxleC1zdGFydCB8IGZsZXgtZW5kIHwgY2VudGVyIHwgYmFzZWxpbmUgfCBzdHJldGNoKVxuQG1peGluIGFsaWduLWl0ZW1zKCR2YWx1ZTogc3RyZXRjaCkge1xuICBAaW5jbHVkZSBfYm91cmJvbi1kZXByZWNhdGUtZm9yLXByZWZpeGluZyhcImFsaWduLWl0ZW1zXCIpO1xuXG4gICRhbHQtdmFsdWU6ICR2YWx1ZTtcblxuICBAaWYgJHZhbHVlID09IFwiZmxleC1zdGFydFwiIHtcbiAgICAkYWx0LXZhbHVlOiBzdGFydDtcbiAgfSBAZWxzZSBpZiAkdmFsdWUgPT0gXCJmbGV4LWVuZFwiIHtcbiAgICAkYWx0LXZhbHVlOiBlbmQ7XG4gIH1cblxuICAvLyAyMDA5XG4gIEBpbmNsdWRlIHByZWZpeGVyKGJveC1hbGlnbiwgJGFsdC12YWx1ZSwgd2Via2l0IG1veiBzcGVjKTtcblxuICAvLyAyMDEyXG4gIEBpbmNsdWRlIHByZWZpeGVyKGFsaWduLWl0ZW1zLCAkdmFsdWUsIHdlYmtpdCBtb3ogbXMgbyBzcGVjKTtcblxuICAvLyAyMDExIChJRSAxMClcbiAgLW1zLWZsZXgtYWxpZ246ICRhbHQtdmFsdWU7XG59XG5cbi8vIDIwMTEgLSBmbGV4LWl0ZW0tYWxpZ24gKGF1dG8gfCBzdGFydCB8IGVuZCB8IGNlbnRlciB8IGJhc2VsaW5lIHwgc3RyZXRjaClcbi8vIDIwMTIgLSBhbGlnbi1zZWxmIChhdXRvIHwgZmxleC1zdGFydCB8IGZsZXgtZW5kIHwgY2VudGVyIHwgYmFzZWxpbmUgfCBzdHJldGNoKVxuQG1peGluIGFsaWduLXNlbGYoJHZhbHVlOiBhdXRvKSB7XG4gIEBpbmNsdWRlIF9ib3VyYm9uLWRlcHJlY2F0ZS1mb3ItcHJlZml4aW5nKFwiYWxpZ24tc2VsZlwiKTtcblxuICAkdmFsdWUtMjAxMTogJHZhbHVlO1xuICBAaWYgJHZhbHVlID09IFwiZmxleC1zdGFydFwiIHtcbiAgICAkdmFsdWUtMjAxMTogc3RhcnQ7XG4gIH0gQGVsc2UgaWYgJHZhbHVlID09IFwiZmxleC1lbmRcIiB7XG4gICAgJHZhbHVlLTIwMTE6IGVuZDtcbiAgfVxuXG4gIC8vIDIwMTJcbiAgQGluY2x1ZGUgcHJlZml4ZXIoYWxpZ24tc2VsZiwgJHZhbHVlLCB3ZWJraXQgbW96IHNwZWMpO1xuXG4gIC8vIDIwMTEgKElFIDEwKVxuICAtbXMtZmxleC1pdGVtLWFsaWduOiAkdmFsdWUtMjAxMTtcbn1cblxuLy8gMjAxMSAtIGZsZXgtbGluZS1wYWNrIChzdGFydCB8IGVuZCB8IGNlbnRlciB8IGp1c3RpZnkgfCBkaXN0cmlidXRlIHwgc3RyZXRjaClcbi8vIDIwMTIgLSBhbGlnbi1jb250ZW50IChmbGV4LXN0YXJ0IHwgZmxleC1lbmQgfCBjZW50ZXIgfCBzcGFjZS1iZXR3ZWVuIHwgc3BhY2UtYXJvdW5kIHwgc3RyZXRjaClcbkBtaXhpbiBhbGlnbi1jb250ZW50KCR2YWx1ZTogc3RyZXRjaCkge1xuICBAaW5jbHVkZSBfYm91cmJvbi1kZXByZWNhdGUtZm9yLXByZWZpeGluZyhcImFsaWduLWNvbnRlbnRcIik7XG5cbiAgJHZhbHVlLTIwMTE6ICR2YWx1ZTtcbiAgQGlmICR2YWx1ZSA9PSBcImZsZXgtc3RhcnRcIiB7XG4gICAgJHZhbHVlLTIwMTE6IHN0YXJ0O1xuICB9IEBlbHNlIGlmICR2YWx1ZSA9PSBcImZsZXgtZW5kXCIge1xuICAgICR2YWx1ZS0yMDExOiBlbmQ7XG4gIH0gQGVsc2UgaWYgJHZhbHVlID09IFwic3BhY2UtYmV0d2VlblwiIHtcbiAgICAkdmFsdWUtMjAxMToganVzdGlmeTtcbiAgfSBAZWxzZSBpZiAkdmFsdWUgPT0gXCJzcGFjZS1hcm91bmRcIiB7XG4gICAgJHZhbHVlLTIwMTE6IGRpc3RyaWJ1dGU7XG4gIH1cblxuICAvLyAyMDEyXG4gIEBpbmNsdWRlIHByZWZpeGVyKGFsaWduLWNvbnRlbnQsICR2YWx1ZSwgd2Via2l0IG1veiBzcGVjKTtcblxuICAvLyAyMDExIChJRSAxMClcbiAgLW1zLWZsZXgtbGluZS1wYWNrOiAkdmFsdWUtMjAxMTtcbn1cbiIsIkBtaXhpbiBmb250LWZhY2UoXG4gICRmb250LWZhbWlseSxcbiAgJGZpbGUtcGF0aCxcbiAgJHdlaWdodDogbm9ybWFsLFxuICAkc3R5bGU6IG5vcm1hbCxcbiAgJGFzc2V0LXBpcGVsaW5lOiAkYXNzZXQtcGlwZWxpbmUsXG4gICRmaWxlLWZvcm1hdHM6IGVvdCB3b2ZmMiB3b2ZmIHR0ZiBzdmcpIHtcblxuICAkdXNlci1kZXByZWNhdGlvbi13YXJuaW5ncy1zZXR0aW5nOiAkb3V0cHV0LWJvdXJib24tZGVwcmVjYXRpb24td2FybmluZ3M7XG4gICRvdXRwdXQtYm91cmJvbi1kZXByZWNhdGlvbi13YXJuaW5nczogZmFsc2UgIWdsb2JhbDtcblxuICAkZm9udC11cmwtcHJlZml4OiBmb250LXVybC1wcmVmaXhlcigkYXNzZXQtcGlwZWxpbmUpO1xuXG4gIEBmb250LWZhY2Uge1xuICAgIGZvbnQtZmFtaWx5OiAkZm9udC1mYW1pbHk7XG4gICAgZm9udC1zdHlsZTogJHN0eWxlO1xuICAgIGZvbnQtd2VpZ2h0OiAkd2VpZ2h0O1xuXG4gICAgc3JjOiBmb250LXNvdXJjZS1kZWNsYXJhdGlvbihcbiAgICAgICRmb250LWZhbWlseSxcbiAgICAgICRmaWxlLXBhdGgsXG4gICAgICAkYXNzZXQtcGlwZWxpbmUsXG4gICAgICAkZmlsZS1mb3JtYXRzLFxuICAgICAgJGZvbnQtdXJsLXByZWZpeFxuICAgICk7XG4gIH1cblxuICAkb3V0cHV0LWJvdXJib24tZGVwcmVjYXRpb24td2FybmluZ3M6ICR1c2VyLWRlcHJlY2F0aW9uLXdhcm5pbmdzLXNldHRpbmcgIWdsb2JhbDtcbn1cbiIsIkBtaXhpbiBmb250LWZlYXR1cmUtc2V0dGluZ3MoJHNldHRpbmdzLi4uKSB7XG4gIEBpbmNsdWRlIF9ib3VyYm9uLWRlcHJlY2F0ZS1mb3ItcHJlZml4aW5nKFwiZm9udC1mZWF0dXJlLXNldHRpbmdzXCIpO1xuXG4gIEBpZiBsZW5ndGgoJHNldHRpbmdzKSA9PSAwIHsgJHNldHRpbmdzOiBub25lOyB9XG4gIEBpbmNsdWRlIHByZWZpeGVyKGZvbnQtZmVhdHVyZS1zZXR0aW5ncywgJHNldHRpbmdzLCB3ZWJraXQgbW96IG1zIHNwZWMpO1xufVxuIiwiLy8gSGlEUEkgbWl4aW4uIERlZmF1bHQgdmFsdWUgc2V0IHRvIDEuMyB0byB0YXJnZXQgR29vZ2xlIE5leHVzIDcgKGh0dHA6Ly9iamFuZ28uY29tL2FydGljbGVzL21pbi1kZXZpY2UtcGl4ZWwtcmF0aW8vKVxuQG1peGluIGhpZHBpKCRyYXRpbzogMS4zKSB7XG4gIEBpbmNsdWRlIF9ib3VyYm9uLWRlcHJlY2F0ZS1mb3ItcHJlZml4aW5nKFwiaGlkcGlcIik7XG5cbiAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAoLXdlYmtpdC1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAkcmF0aW8pLFxuICBvbmx5IHNjcmVlbiBhbmQgKG1pbi0tbW96LWRldmljZS1waXhlbC1yYXRpbzogJHJhdGlvKSxcbiAgb25seSBzY3JlZW4gYW5kICgtby1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAjeyRyYXRpb30vMSksXG4gIG9ubHkgc2NyZWVuIGFuZCAobWluLXJlc29sdXRpb246IHJvdW5kKCRyYXRpbyAqIDk2ZHBpKSksXG4gIG9ubHkgc2NyZWVuIGFuZCAobWluLXJlc29sdXRpb246ICRyYXRpbyAqIDFkcHB4KSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cbiIsIkBtaXhpbiBoeXBoZW5zKCRoeXBoZW5hdGlvbjogbm9uZSkge1xuICBAaW5jbHVkZSBfYm91cmJvbi1kZXByZWNhdGUtZm9yLXByZWZpeGluZyhcImh5cGhlbnNcIik7XG5cbiAgLy8gbm9uZSB8IG1hbnVhbCB8IGF1dG9cbiAgQGluY2x1ZGUgcHJlZml4ZXIoaHlwaGVucywgJGh5cGhlbmF0aW9uLCB3ZWJraXQgbW96IG1zIHNwZWMpO1xufVxuIiwiQG1peGluIGltYWdlLXJlbmRlcmluZyAoJG1vZGU6YXV0bykge1xuICBAaW5jbHVkZSBfYm91cmJvbi1kZXByZWNhdGUtZm9yLXByZWZpeGluZyhcImltYWdlLXJlbmRlcmluZ1wiKTtcblxuICBAaWYgKCRtb2RlID09IGNyaXNwLWVkZ2VzKSB7XG4gICAgLW1zLWludGVycG9sYXRpb24tbW9kZTogbmVhcmVzdC1uZWlnaGJvcjsgLy8gSUU4K1xuICAgIGltYWdlLXJlbmRlcmluZzogLW1vei1jcmlzcC1lZGdlcztcbiAgICBpbWFnZS1yZW5kZXJpbmc6IC1vLWNyaXNwLWVkZ2VzO1xuICAgIGltYWdlLXJlbmRlcmluZzogLXdlYmtpdC1vcHRpbWl6ZS1jb250cmFzdDtcbiAgICBpbWFnZS1yZW5kZXJpbmc6IGNyaXNwLWVkZ2VzO1xuICB9XG5cbiAgQGVsc2Uge1xuICAgIGltYWdlLXJlbmRlcmluZzogJG1vZGU7XG4gIH1cbn1cbiIsIi8vIEFkZHMga2V5ZnJhbWVzIGJsb2NrcyBmb3Igc3VwcG9ydGVkIHByZWZpeGVzLCByZW1vdmluZyByZWR1bmRhbnQgcHJlZml4ZXMgaW4gdGhlIGJsb2NrJ3MgY29udGVudFxuQG1peGluIGtleWZyYW1lcygkbmFtZSkge1xuICBAaW5jbHVkZSBfYm91cmJvbi1kZXByZWNhdGUtZm9yLXByZWZpeGluZyhcImtleWZyYW1lc1wiKTtcblxuICAkb3JpZ2luYWwtcHJlZml4LWZvci13ZWJraXQ6ICAgICRwcmVmaXgtZm9yLXdlYmtpdDtcbiAgJG9yaWdpbmFsLXByZWZpeC1mb3ItbW96aWxsYTogICAkcHJlZml4LWZvci1tb3ppbGxhO1xuICAkb3JpZ2luYWwtcHJlZml4LWZvci1taWNyb3NvZnQ6ICRwcmVmaXgtZm9yLW1pY3Jvc29mdDtcbiAgJG9yaWdpbmFsLXByZWZpeC1mb3Itb3BlcmE6ICAgICAkcHJlZml4LWZvci1vcGVyYTtcbiAgJG9yaWdpbmFsLXByZWZpeC1mb3Itc3BlYzogICAgICAkcHJlZml4LWZvci1zcGVjO1xuXG4gIEBpZiAkb3JpZ2luYWwtcHJlZml4LWZvci13ZWJraXQge1xuICAgIEBpbmNsdWRlIGRpc2FibGUtcHJlZml4LWZvci1hbGwoKTtcbiAgICAkcHJlZml4LWZvci13ZWJraXQ6IHRydWUgIWdsb2JhbDtcbiAgICBALXdlYmtpdC1rZXlmcmFtZXMgI3skbmFtZX0ge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG5cbiAgQGlmICRvcmlnaW5hbC1wcmVmaXgtZm9yLW1vemlsbGEge1xuICAgIEBpbmNsdWRlIGRpc2FibGUtcHJlZml4LWZvci1hbGwoKTtcbiAgICAkcHJlZml4LWZvci1tb3ppbGxhOiB0cnVlICFnbG9iYWw7XG4gICAgQC1tb3ota2V5ZnJhbWVzICN7JG5hbWV9IHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxuXG4gICRwcmVmaXgtZm9yLXdlYmtpdDogICAgJG9yaWdpbmFsLXByZWZpeC1mb3Itd2Via2l0ICAgICFnbG9iYWw7XG4gICRwcmVmaXgtZm9yLW1vemlsbGE6ICAgJG9yaWdpbmFsLXByZWZpeC1mb3ItbW96aWxsYSAgICFnbG9iYWw7XG4gICRwcmVmaXgtZm9yLW1pY3Jvc29mdDogJG9yaWdpbmFsLXByZWZpeC1mb3ItbWljcm9zb2Z0ICFnbG9iYWw7XG4gICRwcmVmaXgtZm9yLW9wZXJhOiAgICAgJG9yaWdpbmFsLXByZWZpeC1mb3Itb3BlcmEgICAgICFnbG9iYWw7XG4gICRwcmVmaXgtZm9yLXNwZWM6ICAgICAgJG9yaWdpbmFsLXByZWZpeC1mb3Itc3BlYyAgICAgICFnbG9iYWw7XG5cbiAgQGlmICRvcmlnaW5hbC1wcmVmaXgtZm9yLXNwZWMge1xuICAgIEBrZXlmcmFtZXMgI3skbmFtZX0ge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG59XG4iLCJAbWl4aW4gbGluZWFyLWdyYWRpZW50KCRwb3MsICRnMSwgJGcyOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAkZzM6IG51bGwsICRnNDogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgJGc1OiBudWxsLCAkZzY6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICRnNzogbnVsbCwgJGc4OiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAkZzk6IG51bGwsICRnMTA6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICRmYWxsYmFjazogbnVsbCkge1xuICBAaW5jbHVkZSBfYm91cmJvbi1kZXByZWNhdGUtZm9yLXByZWZpeGluZyhcImxpbmVhci1ncmFkaWVudFwiKTtcblxuICAvLyBEZXRlY3Qgd2hhdCB0eXBlIG9mIHZhbHVlIGV4aXN0cyBpbiAkcG9zXG4gICRwb3MtdHlwZTogdHlwZS1vZihudGgoJHBvcywgMSkpO1xuICAkcG9zLXNwZWM6IG51bGw7XG4gICRwb3MtZGVncmVlOiBudWxsO1xuXG4gIC8vIElmICRwb3MgaXMgbWlzc2luZyBmcm9tIG1peGluLCByZWFzc2lnbiB2YXJzIGFuZCBhZGQgZGVmYXVsdCBwb3NpdGlvblxuICBAaWYgKCRwb3MtdHlwZSA9PSBjb2xvcikgb3IgKG50aCgkcG9zLCAxKSA9PSBcInRyYW5zcGFyZW50XCIpICB7XG4gICAgJGcxMDogJGc5OyAkZzk6ICRnODsgJGc4OiAkZzc7ICRnNzogJGc2OyAkZzY6ICRnNTtcbiAgICAkZzU6ICRnNDsgJGc0OiAkZzM7ICRnMzogJGcyOyAkZzI6ICRnMTsgJGcxOiAkcG9zO1xuICAgICRwb3M6IG51bGw7XG4gIH1cblxuICBAaWYgJHBvcyB7XG4gICAgJHBvc2l0aW9uczogX2xpbmVhci1wb3NpdGlvbnMtcGFyc2VyKCRwb3MpO1xuICAgICRwb3MtZGVncmVlOiBudGgoJHBvc2l0aW9ucywgMSk7XG4gICAgJHBvcy1zcGVjOiAgIG50aCgkcG9zaXRpb25zLCAyKTtcbiAgfVxuXG4gICRmdWxsOiAkZzEsICRnMiwgJGczLCAkZzQsICRnNSwgJGc2LCAkZzcsICRnOCwgJGc5LCAkZzEwO1xuXG4gIC8vIFNldCAkZzEgYXMgdGhlIGRlZmF1bHQgZmFsbGJhY2sgY29sb3JcbiAgJGZhbGxiYWNrLWNvbG9yOiBudGgoJGcxLCAxKTtcblxuICAvLyBJZiAkZmFsbGJhY2sgaXMgYSBjb2xvciB1c2UgdGhhdCBjb2xvciBhcyB0aGUgZmFsbGJhY2sgY29sb3JcbiAgQGlmICh0eXBlLW9mKCRmYWxsYmFjaykgPT0gY29sb3IpIG9yICgkZmFsbGJhY2sgPT0gXCJ0cmFuc3BhcmVudFwiKSB7XG4gICAgJGZhbGxiYWNrLWNvbG9yOiAkZmFsbGJhY2s7XG4gIH1cblxuICBiYWNrZ3JvdW5kLWNvbG9yOiAkZmFsbGJhY2stY29sb3I7XG4gIGJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KCRwb3MtZGVncmVlICRmdWxsKTsgLy8gU2FmYXJpIDUuMSssIENocm9tZVxuICBiYWNrZ3JvdW5kLWltYWdlOiB1bnF1b3RlKFwibGluZWFyLWdyYWRpZW50KCN7JHBvcy1zcGVjfSN7JGZ1bGx9KVwiKTtcbn1cbiIsIkBtaXhpbiBwZXJzcGVjdGl2ZSgkZGVwdGg6IG5vbmUpIHtcbiAgQGluY2x1ZGUgX2JvdXJib24tZGVwcmVjYXRlLWZvci1wcmVmaXhpbmcoXCJwZXJzcGVjdGl2ZVwiKTtcblxuICAvLyBub25lIHwgPGxlbmd0aD5cbiAgQGluY2x1ZGUgcHJlZml4ZXIocGVyc3BlY3RpdmUsICRkZXB0aCwgd2Via2l0IG1veiBzcGVjKTtcbn1cblxuQG1peGluIHBlcnNwZWN0aXZlLW9yaWdpbigkdmFsdWU6IDUwJSA1MCUpIHtcbiAgQGluY2x1ZGUgX2JvdXJib24tZGVwcmVjYXRlLWZvci1wcmVmaXhpbmcoXCJwZXJzcGVjdGl2ZS1vcmlnaW5cIik7XG5cbiAgQGluY2x1ZGUgcHJlZml4ZXIocGVyc3BlY3RpdmUtb3JpZ2luLCAkdmFsdWUsIHdlYmtpdCBtb3ogc3BlYyk7XG59XG4iLCJAbWl4aW4gcGxhY2Vob2xkZXIge1xuICBAaW5jbHVkZSBfYm91cmJvbi1kZXByZWNhdGUtZm9yLXByZWZpeGluZyhcInBsYWNlaG9sZGVyXCIpO1xuXG4gICRwbGFjZWhvbGRlcnM6IFwiOi13ZWJraXQtaW5wdXRcIiBcIjotbW96XCIgXCItbW96XCIgXCItbXMtaW5wdXRcIjtcbiAgQGVhY2ggJHBsYWNlaG9sZGVyIGluICRwbGFjZWhvbGRlcnMge1xuICAgICY6I3skcGxhY2Vob2xkZXJ9LXBsYWNlaG9sZGVyIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxufVxuIiwiLy8gUmVxdWlyZXMgU2FzcyAzLjErXG5AbWl4aW4gcmFkaWFsLWdyYWRpZW50KCRnMSwgJGcyLFxuICAgICAgICAgICAgICAgICAgICAgICAkZzM6IG51bGwsICRnNDogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgJGc1OiBudWxsLCAkZzY6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICRnNzogbnVsbCwgJGc4OiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAkZzk6IG51bGwsICRnMTA6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICRwb3M6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICRzaGFwZS1zaXplOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAkZmFsbGJhY2s6IG51bGwpIHtcbiAgQGluY2x1ZGUgX2JvdXJib24tZGVwcmVjYXRlLWZvci1wcmVmaXhpbmcoXCJyYWRpYWwtZ3JhZGllbnRcIik7XG5cbiAgJGRhdGE6IF9yYWRpYWwtYXJnLXBhcnNlcigkZzEsICRnMiwgJHBvcywgJHNoYXBlLXNpemUpO1xuICAkZzE6ICBudGgoJGRhdGEsIDEpO1xuICAkZzI6ICBudGgoJGRhdGEsIDIpO1xuICAkcG9zOiBudGgoJGRhdGEsIDMpO1xuICAkc2hhcGUtc2l6ZTogbnRoKCRkYXRhLCA0KTtcblxuICAkZnVsbDogJGcxLCAkZzIsICRnMywgJGc0LCAkZzUsICRnNiwgJGc3LCAkZzgsICRnOSwgJGcxMDtcblxuICAvLyBTdHJpcCBkZXByZWNhdGVkIGNvdmVyL2NvbnRhaW4gZm9yIHNwZWNcbiAgJHNoYXBlLXNpemUtc3BlYzogX3NoYXBlLXNpemUtc3RyaXBwZXIoJHNoYXBlLXNpemUpO1xuXG4gIC8vIFNldCAkZzEgYXMgdGhlIGRlZmF1bHQgZmFsbGJhY2sgY29sb3JcbiAgJGZpcnN0LWNvbG9yOiBudGgoJGZ1bGwsIDEpO1xuICAkZmFsbGJhY2stY29sb3I6IG50aCgkZmlyc3QtY29sb3IsIDEpO1xuXG4gIEBpZiAodHlwZS1vZigkZmFsbGJhY2spID09IGNvbG9yKSBvciAoJGZhbGxiYWNrID09IFwidHJhbnNwYXJlbnRcIikge1xuICAgICRmYWxsYmFjay1jb2xvcjogJGZhbGxiYWNrO1xuICB9XG5cbiAgLy8gQWRkIENvbW1hcyBhbmQgc3BhY2VzXG4gICRzaGFwZS1zaXplOiBpZigkc2hhcGUtc2l6ZSwgXCIjeyRzaGFwZS1zaXplfSwgXCIsIG51bGwpO1xuICAkcG9zOiAgICAgICAgaWYoJHBvcywgXCIjeyRwb3N9LCBcIiwgbnVsbCk7XG4gICRwb3Mtc3BlYzogICBpZigkcG9zLCBcImF0ICN7JHBvc31cIiwgbnVsbCk7XG4gICRzaGFwZS1zaXplLXNwZWM6IGlmKCgkc2hhcGUtc2l6ZS1zcGVjICE9IFwiIFwiKSBhbmQgKCRwb3MgPT0gbnVsbCksIFwiI3skc2hhcGUtc2l6ZS1zcGVjfSwgXCIsIFwiI3skc2hhcGUtc2l6ZS1zcGVjfSBcIik7XG5cbiAgYmFja2dyb3VuZC1jb2xvcjogICRmYWxsYmFjay1jb2xvcjtcbiAgYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1yYWRpYWwtZ3JhZGllbnQoI3skcG9zfSN7JHNoYXBlLXNpemV9I3skZnVsbH0pO1xuICBiYWNrZ3JvdW5kLWltYWdlOiByYWRpYWwtZ3JhZGllbnQoI3skc2hhcGUtc2l6ZS1zcGVjfSN7JHBvcy1zcGVjfSN7JGZ1bGx9KTtcbn1cbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcclxuXHJcbi8vLyBPdXRwdXRzIHRoZSBzcGVjIGFuZCBwcmVmaXhlZCB2ZXJzaW9ucyBvZiB0aGUgYDo6c2VsZWN0aW9uYCBwc2V1ZG8tZWxlbWVudC5cclxuLy8vXHJcbi8vLyBAcGFyYW0ge0Jvb2x9ICRjdXJyZW50LXNlbGVjdG9yIFtmYWxzZV1cclxuLy8vICAgSWYgc2V0IHRvIGB0cnVlYCwgaXQgdGFrZXMgdGhlIGN1cnJlbnQgZWxlbWVudCBpbnRvIGNvbnNpZGVyYXRpb24uXHJcbi8vL1xyXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFVzYWdlXHJcbi8vLyAgIC5lbGVtZW50IHtcclxuLy8vICAgICBAaW5jbHVkZSBzZWxlY3Rpb24odHJ1ZSkge1xyXG4vLy8gICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmYmI1MjtcclxuLy8vICAgICB9XHJcbi8vLyAgIH1cclxuLy8vXHJcbi8vLyBAZXhhbXBsZSBjc3MgLSBDU1MgT3V0cHV0XHJcbi8vLyAgIC5lbGVtZW50OjotbW96LXNlbGVjdGlvbiB7XHJcbi8vLyAgICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmYmI1MjtcclxuLy8vICAgfVxyXG4vLy9cclxuLy8vICAgLmVsZW1lbnQ6OnNlbGVjdGlvbiB7XHJcbi8vLyAgICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmYmI1MjtcclxuLy8vICAgfVxyXG5cclxuQG1peGluIHNlbGVjdGlvbigkY3VycmVudC1zZWxlY3RvcjogZmFsc2UpIHtcclxuICBAaW5jbHVkZSBfYm91cmJvbi1kZXByZWNhdGUtZm9yLXByZWZpeGluZyhcInNlbGVjdGlvblwiKTtcclxuXHJcbiAgQGlmICRjdXJyZW50LXNlbGVjdG9yIHtcclxuICAgICY6Oi1tb3otc2VsZWN0aW9uIHtcclxuICAgICAgQGNvbnRlbnQ7XHJcbiAgICB9XHJcblxyXG4gICAgJjo6c2VsZWN0aW9uIHtcclxuICAgICAgQGNvbnRlbnQ7XHJcbiAgICB9XHJcbiAgfSBAZWxzZSB7XHJcbiAgICA6Oi1tb3otc2VsZWN0aW9uIHtcclxuICAgICAgQGNvbnRlbnQ7XHJcbiAgICB9XHJcblxyXG4gICAgOjpzZWxlY3Rpb24ge1xyXG4gICAgICBAY29udGVudDtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiQG1peGluIHRleHQtZGVjb3JhdGlvbigkdmFsdWUpIHtcbiAgQGluY2x1ZGUgX2JvdXJib24tZGVwcmVjYXRlLWZvci1wcmVmaXhpbmcoXCJ0ZXh0LWRlY29yYXRpb25cIik7XG5cbi8vIDx0ZXh0LWRlY29yYXRpb24tbGluZT4gfHwgPHRleHQtZGVjb3JhdGlvbi1zdHlsZT4gfHwgPHRleHQtZGVjb3JhdGlvbi1jb2xvcj5cbiAgQGluY2x1ZGUgcHJlZml4ZXIodGV4dC1kZWNvcmF0aW9uLCAkdmFsdWUsIG1veik7XG59XG5cbkBtaXhpbiB0ZXh0LWRlY29yYXRpb24tbGluZSgkbGluZTogbm9uZSkge1xuICBAaW5jbHVkZSBfYm91cmJvbi1kZXByZWNhdGUtZm9yLXByZWZpeGluZyhcInRleHQtZGVjb3JhdGlvbi1saW5lXCIpO1xuXG4vLyBub25lIHx8IHVuZGVybGluZSB8fCBvdmVybGluZSB8fCBsaW5lLXRocm91Z2hcbiAgQGluY2x1ZGUgcHJlZml4ZXIodGV4dC1kZWNvcmF0aW9uLWxpbmUsICRsaW5lLCBtb3opO1xufVxuXG5AbWl4aW4gdGV4dC1kZWNvcmF0aW9uLXN0eWxlKCRzdHlsZTogc29saWQpIHtcbiAgQGluY2x1ZGUgX2JvdXJib24tZGVwcmVjYXRlLWZvci1wcmVmaXhpbmcoXCJ0ZXh0LWRlY29yYXRpb24tc3R5bGVcIik7XG5cbi8vIHNvbGlkIHx8IGRvdWJsZSB8fCBkb3R0ZWQgfHwgZGFzaGVkIHx8IHdhdnlcbiAgQGluY2x1ZGUgcHJlZml4ZXIodGV4dC1kZWNvcmF0aW9uLXN0eWxlLCAkc3R5bGUsIG1veiB3ZWJraXQpO1xufVxuXG5AbWl4aW4gdGV4dC1kZWNvcmF0aW9uLWNvbG9yKCRjb2xvcjogY3VycmVudENvbG9yKSB7XG4gIEBpbmNsdWRlIF9ib3VyYm9uLWRlcHJlY2F0ZS1mb3ItcHJlZml4aW5nKFwidGV4dC1kZWNvcmF0aW9uLWNvbG9yXCIpO1xuXG4vLyBjdXJyZW50Q29sb3IgfHwgPGNvbG9yPlxuICBAaW5jbHVkZSBwcmVmaXhlcih0ZXh0LWRlY29yYXRpb24tY29sb3IsICRjb2xvciwgbW96KTtcbn1cbiIsIkBtaXhpbiB0cmFuc2Zvcm0oJHByb3BlcnR5OiBub25lKSB7XG4gIEBpbmNsdWRlIF9ib3VyYm9uLWRlcHJlY2F0ZS1mb3ItcHJlZml4aW5nKFwidHJhbnNmb3JtXCIpO1xuXG4gIC8vIG5vbmUgfCA8dHJhbnNmb3JtLWZ1bmN0aW9uPlxuICBAaW5jbHVkZSBwcmVmaXhlcih0cmFuc2Zvcm0sICRwcm9wZXJ0eSwgd2Via2l0IG1veiBtcyBvIHNwZWMpO1xufVxuXG5AbWl4aW4gdHJhbnNmb3JtLW9yaWdpbigkYXhlczogNTAlKSB7XG4gIEBpbmNsdWRlIF9ib3VyYm9uLWRlcHJlY2F0ZS1mb3ItcHJlZml4aW5nKFwidHJhbnNmb3JtLW9yaWdpblwiKTtcblxuICAvLyB4LWF4aXMgLSBsZWZ0IHwgY2VudGVyIHwgcmlnaHQgIHwgbGVuZ3RoIHwgJVxuICAvLyB5LWF4aXMgLSB0b3AgIHwgY2VudGVyIHwgYm90dG9tIHwgbGVuZ3RoIHwgJVxuICAvLyB6LWF4aXMgLSAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuZ3RoXG4gIEBpbmNsdWRlIHByZWZpeGVyKHRyYW5zZm9ybS1vcmlnaW4sICRheGVzLCB3ZWJraXQgbW96IG1zIG8gc3BlYyk7XG59XG5cbkBtaXhpbiB0cmFuc2Zvcm0tc3R5bGUoJHN0eWxlOiBmbGF0KSB7XG4gIEBpbmNsdWRlIF9ib3VyYm9uLWRlcHJlY2F0ZS1mb3ItcHJlZml4aW5nKFwidHJhbnNmb3JtLXN0eWxlXCIpO1xuXG4gIEBpbmNsdWRlIHByZWZpeGVyKHRyYW5zZm9ybS1zdHlsZSwgJHN0eWxlLCB3ZWJraXQgbW96IG1zIG8gc3BlYyk7XG59XG4iLCIvLyBTaG9ydGhhbmQgbWl4aW4uIFN1cHBvcnRzIG11bHRpcGxlIHBhcmVudGhlc2VzLWRlbGltaW5hdGVkIHZhbHVlcyBmb3IgZWFjaCB2YXJpYWJsZS5cbi8vIEV4YW1wbGU6IEBpbmNsdWRlIHRyYW5zaXRpb24gKGFsbCAycyBlYXNlLWluLW91dCk7XG4vLyAgICAgICAgICBAaW5jbHVkZSB0cmFuc2l0aW9uIChvcGFjaXR5IDFzIGVhc2UtaW4gMnMsIHdpZHRoIDJzIGVhc2Utb3V0KTtcbi8vICAgICAgICAgIEBpbmNsdWRlIHRyYW5zaXRpb24tcHJvcGVydHkgKHRyYW5zZm9ybSwgb3BhY2l0eSk7XG5cbkBtaXhpbiB0cmFuc2l0aW9uKCRwcm9wZXJ0aWVzLi4uKSB7XG4gIEBpbmNsdWRlIF9ib3VyYm9uLWRlcHJlY2F0ZS1mb3ItcHJlZml4aW5nKFwidHJhbnNpdGlvblwiKTtcblxuICAvLyBGaXggZm9yIHZlbmRvci1wcmVmaXggdHJhbnNmb3JtIHByb3BlcnR5XG4gICRuZWVkcy1wcmVmaXhlczogZmFsc2U7XG4gICR3ZWJraXQ6ICgpO1xuICAkbW96OiAoKTtcbiAgJHNwZWM6ICgpO1xuXG4gIC8vIENyZWF0ZSBsaXN0cyBmb3IgdmVuZG9yLXByZWZpeGVkIHRyYW5zZm9ybVxuICBAZWFjaCAkbGlzdCBpbiAkcHJvcGVydGllcyB7XG4gICAgQGlmIG50aCgkbGlzdCwgMSkgPT0gXCJ0cmFuc2Zvcm1cIiB7XG4gICAgICAkbmVlZHMtcHJlZml4ZXM6IHRydWU7XG4gICAgICAkbGlzdDE6IC13ZWJraXQtdHJhbnNmb3JtO1xuICAgICAgJGxpc3QyOiAtbW96LXRyYW5zZm9ybTtcbiAgICAgICRsaXN0MzogKCk7XG5cbiAgICAgIEBlYWNoICR2YXIgaW4gJGxpc3Qge1xuICAgICAgICAkbGlzdDM6IGpvaW4oJGxpc3QzLCAkdmFyKTtcblxuICAgICAgICBAaWYgJHZhciAhPSBcInRyYW5zZm9ybVwiIHtcbiAgICAgICAgICAkbGlzdDE6IGpvaW4oJGxpc3QxLCAkdmFyKTtcbiAgICAgICAgICAkbGlzdDI6IGpvaW4oJGxpc3QyLCAkdmFyKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAkd2Via2l0OiBhcHBlbmQoJHdlYmtpdCwgJGxpc3QxKTtcbiAgICAgICRtb3o6ICAgIGFwcGVuZCgkbW96LCAgICAkbGlzdDIpO1xuICAgICAgJHNwZWM6ICAgYXBwZW5kKCRzcGVjLCAgICRsaXN0Myk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkd2Via2l0OiBhcHBlbmQoJHdlYmtpdCwgJGxpc3QsIGNvbW1hKTtcbiAgICAgICRtb3o6ICAgIGFwcGVuZCgkbW96LCAgICAkbGlzdCwgY29tbWEpO1xuICAgICAgJHNwZWM6ICAgYXBwZW5kKCRzcGVjLCAgICRsaXN0LCBjb21tYSk7XG4gICAgfVxuICB9XG5cbiAgQGlmICRuZWVkcy1wcmVmaXhlcyB7XG4gICAgLXdlYmtpdC10cmFuc2l0aW9uOiAkd2Via2l0O1xuICAgICAgIC1tb3otdHJhbnNpdGlvbjogJG1vejtcbiAgICAgICAgICAgIHRyYW5zaXRpb246ICRzcGVjO1xuICB9IEBlbHNlIHtcbiAgICBAaWYgbGVuZ3RoKCRwcm9wZXJ0aWVzKSA+PSAxIHtcbiAgICAgIEBpbmNsdWRlIHByZWZpeGVyKHRyYW5zaXRpb24sICRwcm9wZXJ0aWVzLCB3ZWJraXQgbW96IHNwZWMpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJHByb3BlcnRpZXM6IGFsbCAwLjE1cyBlYXNlLW91dCAwcztcbiAgICAgIEBpbmNsdWRlIHByZWZpeGVyKHRyYW5zaXRpb24sICRwcm9wZXJ0aWVzLCB3ZWJraXQgbW96IHNwZWMpO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gdHJhbnNpdGlvbi1wcm9wZXJ0eSgkcHJvcGVydGllcy4uLikge1xuICBAaW5jbHVkZSBfYm91cmJvbi1kZXByZWNhdGUtZm9yLXByZWZpeGluZyhcInRyYW5zaXRpb24tcHJvcGVydHlcIik7XG5cbiAgLXdlYmtpdC10cmFuc2l0aW9uLXByb3BlcnR5OiB0cmFuc2l0aW9uLXByb3BlcnR5LW5hbWVzKCRwcm9wZXJ0aWVzLCBcIndlYmtpdFwiKTtcbiAgICAgLW1vei10cmFuc2l0aW9uLXByb3BlcnR5OiB0cmFuc2l0aW9uLXByb3BlcnR5LW5hbWVzKCRwcm9wZXJ0aWVzLCBcIm1velwiKTtcbiAgICAgICAgICB0cmFuc2l0aW9uLXByb3BlcnR5OiB0cmFuc2l0aW9uLXByb3BlcnR5LW5hbWVzKCRwcm9wZXJ0aWVzLCBmYWxzZSk7XG59XG5cbkBtaXhpbiB0cmFuc2l0aW9uLWR1cmF0aW9uKCR0aW1lcy4uLikge1xuICBAaW5jbHVkZSBfYm91cmJvbi1kZXByZWNhdGUtZm9yLXByZWZpeGluZyhcInRyYW5zaXRpb24tZHVyYXRpb25cIik7XG5cbiAgQGluY2x1ZGUgcHJlZml4ZXIodHJhbnNpdGlvbi1kdXJhdGlvbiwgJHRpbWVzLCB3ZWJraXQgbW96IHNwZWMpO1xufVxuXG5AbWl4aW4gdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb24oJG1vdGlvbnMuLi4pIHtcbiAgQGluY2x1ZGUgX2JvdXJib24tZGVwcmVjYXRlLWZvci1wcmVmaXhpbmcoXCJ0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvblwiKTtcblxuICAvLyBlYXNlIHwgbGluZWFyIHwgZWFzZS1pbiB8IGVhc2Utb3V0IHwgZWFzZS1pbi1vdXQgfCBjdWJpYy1iZXppZXIoKVxuICBAaW5jbHVkZSBwcmVmaXhlcih0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbiwgJG1vdGlvbnMsIHdlYmtpdCBtb3ogc3BlYyk7XG59XG5cbkBtaXhpbiB0cmFuc2l0aW9uLWRlbGF5KCR0aW1lcy4uLikge1xuICBAaW5jbHVkZSBfYm91cmJvbi1kZXByZWNhdGUtZm9yLXByZWZpeGluZyhcInRyYW5zaXRpb24tZGVsYXlcIik7XG5cbiAgQGluY2x1ZGUgcHJlZml4ZXIodHJhbnNpdGlvbi1kZWxheSwgJHRpbWVzLCB3ZWJraXQgbW96IHNwZWMpO1xufVxuIiwiQG1peGluIHVzZXItc2VsZWN0KCR2YWx1ZTogbm9uZSkge1xuICBAaW5jbHVkZSBfYm91cmJvbi1kZXByZWNhdGUtZm9yLXByZWZpeGluZyhcInVzZXItc2VsZWN0XCIpO1xuXG4gIEBpbmNsdWRlIHByZWZpeGVyKHVzZXItc2VsZWN0LCAkdmFsdWUsIHdlYmtpdCBtb3ogbXMgc3BlYyk7XG59XG4iLCJAY2hhcnNldCBcIlVURi04XCI7XG5cbi8vLyBQcm92aWRlcyBhIHF1aWNrIG1ldGhvZCBmb3IgdGFyZ2V0aW5nIGBib3JkZXItY29sb3JgIG9uIHNwZWNpZmljIHNpZGVzIG9mIGEgYm94LiBVc2UgYSBgbnVsbGAgdmFsdWUgdG8g4oCcc2tpcOKAnSBhIHNpZGUuXG4vLy9cbi8vLyBAcGFyYW0ge0FyZ2xpc3R9ICR2YWxzXG4vLy8gICBMaXN0IG9mIGFyZ3VtZW50c1xuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFVzYWdlXG4vLy8gICAuZWxlbWVudCB7XG4vLy8gICAgIEBpbmNsdWRlIGJvcmRlci1jb2xvcigjYTYwYjU1ICM3NmNkOWMgbnVsbCAjZThhZTFhKTtcbi8vLyAgIH1cbi8vL1xuLy8vIEBleGFtcGxlIGNzcyAtIENTUyBPdXRwdXRcbi8vLyAgIC5lbGVtZW50IHtcbi8vLyAgICAgYm9yZGVyLWxlZnQtY29sb3I6ICNlOGFlMWE7XG4vLy8gICAgIGJvcmRlci1yaWdodC1jb2xvcjogIzc2Y2Q5Yztcbi8vLyAgICAgYm9yZGVyLXRvcC1jb2xvcjogI2E2MGI1NTtcbi8vLyAgIH1cbi8vL1xuLy8vIEByZXF1aXJlIHttaXhpbn0gZGlyZWN0aW9uYWwtcHJvcGVydHlcbi8vL1xuLy8vIEBvdXRwdXQgYGJvcmRlci1jb2xvcmBcblxuQG1peGluIGJvcmRlci1jb2xvcigkdmFscy4uLikge1xuICAkdXNlci1kZXByZWNhdGlvbi13YXJuaW5ncy1zZXR0aW5nOiAkb3V0cHV0LWJvdXJib24tZGVwcmVjYXRpb24td2FybmluZ3M7XG4gICRvdXRwdXQtYm91cmJvbi1kZXByZWNhdGlvbi13YXJuaW5nczogZmFsc2UgIWdsb2JhbDtcbiAgQGluY2x1ZGUgZGlyZWN0aW9uYWwtcHJvcGVydHkoYm9yZGVyLCBjb2xvciwgJHZhbHMuLi4pO1xuICAkb3V0cHV0LWJvdXJib24tZGVwcmVjYXRpb24td2FybmluZ3M6ICR1c2VyLWRlcHJlY2F0aW9uLXdhcm5pbmdzLXNldHRpbmcgIWdsb2JhbDtcbn1cbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcblxuLy8vIFByb3ZpZGVzIGEgcXVpY2sgbWV0aG9kIGZvciB0YXJnZXRpbmcgYGJvcmRlci1yYWRpdXNgIG9uIGJvdGggY29ybmVycyBvbiB0aGUgc2lkZSBvZiBhIGJveC5cbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfSAkcmFkaWlcbi8vLyAgIExpc3Qgb2YgYXJndW1lbnRzXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gVXNhZ2Vcbi8vLyAgIC5lbGVtZW50LW9uZSB7XG4vLy8gICAgIEBpbmNsdWRlIGJvcmRlci10b3AtcmFkaXVzKDVweCk7XG4vLy8gICB9XG4vLy9cbi8vLyAgIC5lbGVtZW50LXR3byB7XG4vLy8gICAgIEBpbmNsdWRlIGJvcmRlci1sZWZ0LXJhZGl1cygzcHgpO1xuLy8vICAgfVxuLy8vXG4vLy8gQGV4YW1wbGUgY3NzIC0gQ1NTIE91dHB1dFxuLy8vICAgLmVsZW1lbnQtb25lIHtcbi8vLyAgICAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogNXB4O1xuLy8vICAgICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogNXB4O1xuLy8vICAgfVxuLy8vXG4vLy8gICAuZWxlbWVudC10d28ge1xuLy8vICAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAzcHg7XG4vLy8gICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDNweDtcbi8vLyAgIH1cbi8vL1xuLy8vIEBvdXRwdXQgYGJvcmRlci1yYWRpdXNgXG5cbkBtaXhpbiBib3JkZXItdG9wLXJhZGl1cygkcmFkaWkpIHtcbiAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogJHJhZGlpO1xuICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogJHJhZGlpO1xufVxuXG5AbWl4aW4gYm9yZGVyLXJpZ2h0LXJhZGl1cygkcmFkaWkpIHtcbiAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6ICRyYWRpaTtcbiAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6ICRyYWRpaTtcbn1cblxuQG1peGluIGJvcmRlci1ib3R0b20tcmFkaXVzKCRyYWRpaSkge1xuICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAkcmFkaWk7XG4gIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAkcmFkaWk7XG59XG5cbkBtaXhpbiBib3JkZXItbGVmdC1yYWRpdXMoJHJhZGlpKSB7XG4gIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6ICRyYWRpaTtcbiAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogJHJhZGlpO1xufVxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuXG4vLy8gUHJvdmlkZXMgYSBxdWljayBtZXRob2QgZm9yIHRhcmdldGluZyBgYm9yZGVyLXN0eWxlYCBvbiBzcGVjaWZpYyBzaWRlcyBvZiBhIGJveC4gVXNlIGEgYG51bGxgIHZhbHVlIHRvIOKAnHNraXDigJ0gYSBzaWRlLlxuLy8vXG4vLy8gQHBhcmFtIHtBcmdsaXN0fSAkdmFsc1xuLy8vICAgTGlzdCBvZiBhcmd1bWVudHNcbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBVc2FnZVxuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBAaW5jbHVkZSBib3JkZXItc3R5bGUoZGFzaGVkIG51bGwgc29saWQpO1xuLy8vICAgfVxuLy8vXG4vLy8gQGV4YW1wbGUgY3NzIC0gQ1NTIE91dHB1dFxuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBib3JkZXItYm90dG9tLXN0eWxlOiBzb2xpZDtcbi8vLyAgICAgYm9yZGVyLXRvcC1zdHlsZTogZGFzaGVkO1xuLy8vICAgfVxuLy8vXG4vLy8gQHJlcXVpcmUge21peGlufSBkaXJlY3Rpb25hbC1wcm9wZXJ0eVxuLy8vXG4vLy8gQG91dHB1dCBgYm9yZGVyLXN0eWxlYFxuXG5AbWl4aW4gYm9yZGVyLXN0eWxlKCR2YWxzLi4uKSB7XG4gICR1c2VyLWRlcHJlY2F0aW9uLXdhcm5pbmdzLXNldHRpbmc6ICRvdXRwdXQtYm91cmJvbi1kZXByZWNhdGlvbi13YXJuaW5ncztcbiAgJG91dHB1dC1ib3VyYm9uLWRlcHJlY2F0aW9uLXdhcm5pbmdzOiBmYWxzZSAhZ2xvYmFsO1xuICBAaW5jbHVkZSBkaXJlY3Rpb25hbC1wcm9wZXJ0eShib3JkZXIsIHN0eWxlLCAkdmFscy4uLik7XG4gICRvdXRwdXQtYm91cmJvbi1kZXByZWNhdGlvbi13YXJuaW5nczogJHVzZXItZGVwcmVjYXRpb24td2FybmluZ3Mtc2V0dGluZyAhZ2xvYmFsO1xufVxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuXG4vLy8gUHJvdmlkZXMgYSBxdWljayBtZXRob2QgZm9yIHRhcmdldGluZyBgYm9yZGVyLXdpZHRoYCBvbiBzcGVjaWZpYyBzaWRlcyBvZiBhIGJveC4gVXNlIGEgYG51bGxgIHZhbHVlIHRvIOKAnHNraXDigJ0gYSBzaWRlLlxuLy8vXG4vLy8gQHBhcmFtIHtBcmdsaXN0fSAkdmFsc1xuLy8vICAgTGlzdCBvZiBhcmd1bWVudHNcbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBVc2FnZVxuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBAaW5jbHVkZSBib3JkZXItd2lkdGgoMWVtIG51bGwgMjBweCk7XG4vLy8gICB9XG4vLy9cbi8vLyBAZXhhbXBsZSBjc3MgLSBDU1MgT3V0cHV0XG4vLy8gICAuZWxlbWVudCB7XG4vLy8gICAgIGJvcmRlci1ib3R0b20td2lkdGg6IDIwcHg7XG4vLy8gICAgIGJvcmRlci10b3Atd2lkdGg6IDFlbTtcbi8vLyAgIH1cbi8vL1xuLy8vIEByZXF1aXJlIHttaXhpbn0gZGlyZWN0aW9uYWwtcHJvcGVydHlcbi8vL1xuLy8vIEBvdXRwdXQgYGJvcmRlci13aWR0aGBcblxuQG1peGluIGJvcmRlci13aWR0aCgkdmFscy4uLikge1xuICAkdXNlci1kZXByZWNhdGlvbi13YXJuaW5ncy1zZXR0aW5nOiAkb3V0cHV0LWJvdXJib24tZGVwcmVjYXRpb24td2FybmluZ3M7XG4gICRvdXRwdXQtYm91cmJvbi1kZXByZWNhdGlvbi13YXJuaW5nczogZmFsc2UgIWdsb2JhbDtcbiAgQGluY2x1ZGUgZGlyZWN0aW9uYWwtcHJvcGVydHkoYm9yZGVyLCB3aWR0aCwgJHZhbHMuLi4pO1xuICAkb3V0cHV0LWJvdXJib24tZGVwcmVjYXRpb24td2FybmluZ3M6ICR1c2VyLWRlcHJlY2F0aW9uLXdhcm5pbmdzLXNldHRpbmcgIWdsb2JhbDtcbn1cbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcblxuLy8vIEdlbmVyYXRlcyB2YXJpYWJsZXMgZm9yIGFsbCBidXR0b25zLiBQbGVhc2Ugbm90ZSB0aGF0IHlvdSBtdXN0IHVzZSBpbnRlcnBvbGF0aW9uIG9uIHRoZSB2YXJpYWJsZTogYCN7JGFsbC1idXR0b25zfWAuXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gVXNhZ2Vcbi8vLyAgICN7JGFsbC1idXR0b25zfSB7XG4vLy8gICAgIGJhY2tncm91bmQtY29sb3I6ICNmMDA7XG4vLy8gICB9XG4vLy9cbi8vLyAgICN7JGFsbC1idXR0b25zLWZvY3VzfSxcbi8vLyAgICN7JGFsbC1idXR0b25zLWhvdmVyfSB7XG4vLy8gICAgIGJhY2tncm91bmQtY29sb3I6ICMwZjA7XG4vLy8gICB9XG4vLy9cbi8vLyAgICN7JGFsbC1idXR0b25zLWFjdGl2ZX0ge1xuLy8vICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDBmO1xuLy8vICAgfVxuLy8vXG4vLy8gQGV4YW1wbGUgY3NzIC0gQ1NTIE91dHB1dFxuLy8vICAgYnV0dG9uLFxuLy8vICAgaW5wdXRbdHlwZT1cImJ1dHRvblwiXSxcbi8vLyAgIGlucHV0W3R5cGU9XCJyZXNldFwiXSxcbi8vLyAgIGlucHV0W3R5cGU9XCJzdWJtaXRcIl0ge1xuLy8vICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjAwO1xuLy8vICAgfVxuLy8vXG4vLy8gICBidXR0b246Zm9jdXMsXG4vLy8gICBpbnB1dFt0eXBlPVwiYnV0dG9uXCJdOmZvY3VzLFxuLy8vICAgaW5wdXRbdHlwZT1cInJlc2V0XCJdOmZvY3VzLFxuLy8vICAgaW5wdXRbdHlwZT1cInN1Ym1pdFwiXTpmb2N1cyxcbi8vLyAgIGJ1dHRvbjpob3Zlcixcbi8vLyAgIGlucHV0W3R5cGU9XCJidXR0b25cIl06aG92ZXIsXG4vLy8gICBpbnB1dFt0eXBlPVwicmVzZXRcIl06aG92ZXIsXG4vLy8gICBpbnB1dFt0eXBlPVwic3VibWl0XCJdOmhvdmVyIHtcbi8vLyAgICAgYmFja2dyb3VuZC1jb2xvcjogIzBmMDtcbi8vLyAgIH1cbi8vL1xuLy8vICAgYnV0dG9uOmFjdGl2ZSxcbi8vLyAgIGlucHV0W3R5cGU9XCJidXR0b25cIl06YWN0aXZlLFxuLy8vICAgaW5wdXRbdHlwZT1cInJlc2V0XCJdOmFjdGl2ZSxcbi8vLyAgIGlucHV0W3R5cGU9XCJzdWJtaXRcIl06YWN0aXZlIHtcbi8vLyAgICAgYmFja2dyb3VuZC1jb2xvcjogIzAwZjtcbi8vLyAgIH1cbi8vL1xuLy8vIEByZXF1aXJlIGFzc2lnbi1pbnB1dHNcbi8vL1xuLy8vIEB0eXBlIExpc3Rcbi8vL1xuLy8vIEB0b2RvIFJlbW92ZSBkb3VibGUgYXNzaWduZWQgdmFyaWFibGVzIChMaW5lcyA1OeKAkzYyKSBpbiB2NS4wLjBcblxuJGJ1dHRvbnMtbGlzdDogJ2J1dHRvbicsXG4gICAgICAgICAgICAgICAnaW5wdXRbdHlwZT1cImJ1dHRvblwiXScsXG4gICAgICAgICAgICAgICAnaW5wdXRbdHlwZT1cInJlc2V0XCJdJyxcbiAgICAgICAgICAgICAgICdpbnB1dFt0eXBlPVwic3VibWl0XCJdJztcblxuJHVzZXItb3V0cHV0LWRlcHJlY2F0aW9uLXdhcm5pbmdzLXNldHRpbmc6ICRvdXRwdXQtYm91cmJvbi1kZXByZWNhdGlvbi13YXJuaW5ncztcbiRvdXRwdXQtYm91cmJvbi1kZXByZWNhdGlvbi13YXJuaW5nczogZmFsc2U7XG5cbiRhbGwtYnV0dG9uczogICAgICAgIGFzc2lnbi1pbnB1dHMoJGJ1dHRvbnMtbGlzdCk7XG4kYWxsLWJ1dHRvbnMtYWN0aXZlOiBhc3NpZ24taW5wdXRzKCRidXR0b25zLWxpc3QsIGFjdGl2ZSk7XG4kYWxsLWJ1dHRvbnMtZm9jdXM6ICBhc3NpZ24taW5wdXRzKCRidXR0b25zLWxpc3QsIGZvY3VzKTtcbiRhbGwtYnV0dG9ucy1ob3ZlcjogIGFzc2lnbi1pbnB1dHMoJGJ1dHRvbnMtbGlzdCwgaG92ZXIpO1xuXG4kb3V0cHV0LWJvdXJib24tZGVwcmVjYXRpb24td2FybmluZ3M6ICR1c2VyLW91dHB1dC1kZXByZWNhdGlvbi13YXJuaW5ncy1zZXR0aW5nO1xuXG4kYWxsLWJ1dHRvbi1pbnB1dHM6ICAgICAgICAkYWxsLWJ1dHRvbnM7XG4kYWxsLWJ1dHRvbi1pbnB1dHMtYWN0aXZlOiAkYWxsLWJ1dHRvbnMtYWN0aXZlO1xuJGFsbC1idXR0b24taW5wdXRzLWZvY3VzOiAgJGFsbC1idXR0b25zLWZvY3VzO1xuJGFsbC1idXR0b24taW5wdXRzLWhvdmVyOiAgJGFsbC1idXR0b25zLWhvdmVyO1xuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuXG4vLy8gUHJvdmlkZXMgYW4gZWFzeSB3YXkgdG8gaW5jbHVkZSBhIGNsZWFyZml4IGZvciBjb250YWluaW5nIGZsb2F0cy5cbi8vL1xuLy8vIEBsaW5rIGh0dHA6Ly9jc3Ntb2pvLmNvbS9sYXRlc3RfbmV3X2NsZWFyZml4X3NvX2Zhci9cbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBVc2FnZVxuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBAaW5jbHVkZSBjbGVhcmZpeDtcbi8vLyAgIH1cbi8vL1xuLy8vIEBleGFtcGxlIGNzcyAtIENTUyBPdXRwdXRcbi8vLyAgIC5lbGVtZW50OjphZnRlciB7XG4vLy8gICAgIGNsZWFyOiBib3RoO1xuLy8vICAgICBjb250ZW50OiBcIlwiO1xuLy8vICAgICBkaXNwbGF5OiB0YWJsZTtcbi8vLyAgIH1cblxuQG1peGluIGNsZWFyZml4IHtcbiAgJjo6YWZ0ZXIge1xuICAgIGNsZWFyOiBib3RoO1xuICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgZGlzcGxheTogdGFibGU7XG4gIH1cbn1cbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcblxuLy8vIFRydW5jYXRlcyB0ZXh0IGFuZCBhZGRzIGFuIGVsbGlwc2lzIHRvIHJlcHJlc2VudCBvdmVyZmxvdy5cbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfSAkd2lkdGggWzEwMCVdXG4vLy8gICBNYXgtd2lkdGggZm9yIHRoZSBzdHJpbmcgdG8gcmVzcGVjdCBiZWZvcmUgYmVpbmcgdHJ1bmNhdGVkXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gVXNhZ2Vcbi8vLyAgIC5lbGVtZW50IHtcbi8vLyAgICAgQGluY2x1ZGUgZWxsaXBzaXM7XG4vLy8gICB9XG4vLy9cbi8vLyBAZXhhbXBsZSBjc3MgLSBDU1MgT3V0cHV0XG4vLy8gICAuZWxlbWVudCB7XG4vLy8gICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbi8vLyAgICAgbWF4LXdpZHRoOiAxMDAlO1xuLy8vICAgICBvdmVyZmxvdzogaGlkZGVuO1xuLy8vICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbi8vLyAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbi8vLyAgICAgd29yZC13cmFwOiBub3JtYWw7XG4vLy8gICB9XG5cbkBtaXhpbiBlbGxpcHNpcygkd2lkdGg6IDEwMCUpIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBtYXgtd2lkdGg6ICR3aWR0aDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIHdvcmQtd3JhcDogbm9ybWFsO1xufVxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuXG4vLy8gR2VvcmdpYSBmb250IHN0YWNrLlxuLy8vXG4vLy8gQHR5cGUgTGlzdFxuXG4kZ2VvcmdpYTogXCJHZW9yZ2lhXCIsIFwiQ2FtYnJpYVwiLCBcIlRpbWVzIE5ldyBSb21hblwiLCBcIlRpbWVzXCIsIHNlcmlmO1xuXG4vLy8gSGVsdmV0aWNhIGZvbnQgc3RhY2suXG4vLy9cbi8vLyBAdHlwZSBMaXN0XG5cbiRoZWx2ZXRpY2E6IFwiSGVsdmV0aWNhIE5ldWVcIiwgXCJIZWx2ZXRpY2FcIiwgXCJSb2JvdG9cIiwgXCJBcmlhbFwiLCBzYW5zLXNlcmlmO1xuXG4vLy8gTHVjaWRhIEdyYW5kZSBmb250IHN0YWNrLlxuLy8vXG4vLy8gQHR5cGUgTGlzdFxuXG4kbHVjaWRhLWdyYW5kZTogXCJMdWNpZGEgR3JhbmRlXCIsIFwiVGFob21hXCIsIFwiVmVyZGFuYVwiLCBcIkFyaWFsXCIsIHNhbnMtc2VyaWY7XG5cbi8vLyBNb25vc3BhY2UgZm9udCBzdGFjay5cbi8vL1xuLy8vIEB0eXBlIExpc3RcblxuJG1vbm9zcGFjZTogXCJCaXRzdHJlYW0gVmVyYSBTYW5zIE1vbm9cIiwgXCJDb25zb2xhc1wiLCBcIkNvdXJpZXJcIiwgbW9ub3NwYWNlO1xuXG4vLy8gVmVyZGFuYSBmb250IHN0YWNrLlxuLy8vXG4vLy8gQHR5cGUgTGlzdFxuXG4kdmVyZGFuYTogXCJWZXJkYW5hXCIsIFwiR2VuZXZhXCIsIHNhbnMtc2VyaWY7XG4iLCIvLy8gSGlkZXMgdGhlIHRleHQgaW4gYW4gZWxlbWVudCwgY29tbW9ubHkgdXNlZCB0byBzaG93IGFuIGltYWdlLiBTb21lIGVsZW1lbnRzIHdpbGwgbmVlZCBibG9jay1sZXZlbCBzdHlsZXMgYXBwbGllZC5cbi8vL1xuLy8vIEBsaW5rIGh0dHA6Ly96ZWxkbWFuLmNvbS8yMDEyLzAzLzAxL3JlcGxhY2luZy10aGUtOTk5OXB4LWhhY2stbmV3LWltYWdlLXJlcGxhY2VtZW50XG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gVXNhZ2Vcbi8vLyAgIC5lbGVtZW50IHtcbi8vLyAgICAgQGluY2x1ZGUgaGlkZS10ZXh0O1xuLy8vICAgfVxuLy8vXG4vLy8gQGV4YW1wbGUgY3NzIC0gQ1NTIE91dHB1dFxuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBvdmVyZmxvdzogaGlkZGVuO1xuLy8vICAgICB0ZXh0LWluZGVudDogMTAxJTtcbi8vLyAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbi8vLyAgIH1cbi8vL1xuLy8vIEB0b2RvIFJlbW92ZSBoZWlnaHQgYXJndW1lbnQgaW4gdjUuMC4wXG5cbkBtaXhpbiBoaWRlLXRleHQoJGhlaWdodDogbnVsbCkge1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB0ZXh0LWluZGVudDogMTAxJTtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcblxuICBAaWYgJGhlaWdodCB7XG4gICAgQHdhcm4gXCJUaGUgYGhpZGUtdGV4dGAgbWl4aW4gaGFzIGNoYW5nZWQgYW5kIG5vIGxvbmdlciByZXF1aXJlcyBhIGhlaWdodC4gVGhlIGhlaWdodCBhcmd1bWVudCB3aWxsIG5vIGxvbmdlciBiZSBhY2NlcHRlZCBpbiB2NS4wLjBcIjtcbiAgfVxufVxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuXG4vLy8gUHJvdmlkZXMgYSBxdWljayBtZXRob2QgZm9yIHRhcmdldGluZyBgbWFyZ2luYCBvbiBzcGVjaWZpYyBzaWRlcyBvZiBhIGJveC4gVXNlIGEgYG51bGxgIHZhbHVlIHRvIOKAnHNraXDigJ0gYSBzaWRlLlxuLy8vXG4vLy8gQHBhcmFtIHtBcmdsaXN0fSAkdmFsc1xuLy8vICAgTGlzdCBvZiBhcmd1bWVudHNcbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBVc2FnZVxuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBAaW5jbHVkZSBtYXJnaW4obnVsbCAxMHB4IDNlbSAyMHZoKTtcbi8vLyAgIH1cbi8vL1xuLy8vIEBleGFtcGxlIGNzcyAtIENTUyBPdXRwdXRcbi8vLyAgIC5lbGVtZW50IHtcbi8vLyAgICAgbWFyZ2luLWJvdHRvbTogM2VtO1xuLy8vICAgICBtYXJnaW4tbGVmdDogMjB2aDtcbi8vLyAgICAgbWFyZ2luLXJpZ2h0OiAxMHB4O1xuLy8vICAgfVxuLy8vXG4vLy8gQHJlcXVpcmUge21peGlufSBkaXJlY3Rpb25hbC1wcm9wZXJ0eVxuLy8vXG4vLy8gQG91dHB1dCBgbWFyZ2luYFxuXG5AbWl4aW4gbWFyZ2luKCR2YWxzLi4uKSB7XG4gICR1c2VyLWRlcHJlY2F0aW9uLXdhcm5pbmdzLXNldHRpbmc6ICRvdXRwdXQtYm91cmJvbi1kZXByZWNhdGlvbi13YXJuaW5ncztcbiAgJG91dHB1dC1ib3VyYm9uLWRlcHJlY2F0aW9uLXdhcm5pbmdzOiBmYWxzZSAhZ2xvYmFsO1xuICBAaW5jbHVkZSBkaXJlY3Rpb25hbC1wcm9wZXJ0eShtYXJnaW4sIGZhbHNlLCAkdmFscy4uLik7XG4gICRvdXRwdXQtYm91cmJvbi1kZXByZWNhdGlvbi13YXJuaW5nczogJHVzZXItZGVwcmVjYXRpb24td2FybmluZ3Mtc2V0dGluZyAhZ2xvYmFsO1xufVxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuXG4vLy8gUHJvdmlkZXMgYSBxdWljayBtZXRob2QgZm9yIHRhcmdldGluZyBgcGFkZGluZ2Agb24gc3BlY2lmaWMgc2lkZXMgb2YgYSBib3guIFVzZSBhIGBudWxsYCB2YWx1ZSB0byDigJxza2lw4oCdIGEgc2lkZS5cbi8vL1xuLy8vIEBwYXJhbSB7QXJnbGlzdH0gJHZhbHNcbi8vLyAgIExpc3Qgb2YgYXJndW1lbnRzXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gVXNhZ2Vcbi8vLyAgIC5lbGVtZW50IHtcbi8vLyAgICAgQGluY2x1ZGUgcGFkZGluZygxMnZoIG51bGwgMTBweCA1JSk7XG4vLy8gICB9XG4vLy9cbi8vLyBAZXhhbXBsZSBjc3MgLSBDU1MgT3V0cHV0XG4vLy8gICAuZWxlbWVudCB7XG4vLy8gICAgIHBhZGRpbmctYm90dG9tOiAxMHB4O1xuLy8vICAgICBwYWRkaW5nLWxlZnQ6IDUlO1xuLy8vICAgICBwYWRkaW5nLXRvcDogMTJ2aDtcbi8vLyAgIH1cbi8vL1xuLy8vIEByZXF1aXJlIHttaXhpbn0gZGlyZWN0aW9uYWwtcHJvcGVydHlcbi8vL1xuLy8vIEBvdXRwdXQgYHBhZGRpbmdgXG5cbkBtaXhpbiBwYWRkaW5nKCR2YWxzLi4uKSB7XG4gICR1c2VyLWRlcHJlY2F0aW9uLXdhcm5pbmdzLXNldHRpbmc6ICRvdXRwdXQtYm91cmJvbi1kZXByZWNhdGlvbi13YXJuaW5ncztcbiAgJG91dHB1dC1ib3VyYm9uLWRlcHJlY2F0aW9uLXdhcm5pbmdzOiBmYWxzZSAhZ2xvYmFsO1xuICBAaW5jbHVkZSBkaXJlY3Rpb25hbC1wcm9wZXJ0eShwYWRkaW5nLCBmYWxzZSwgJHZhbHMuLi4pO1xuICAkb3V0cHV0LWJvdXJib24tZGVwcmVjYXRpb24td2FybmluZ3M6ICR1c2VyLWRlcHJlY2F0aW9uLXdhcm5pbmdzLXNldHRpbmcgIWdsb2JhbDtcbn1cbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcblxuLy8vIFByb3ZpZGVzIGEgcXVpY2sgbWV0aG9kIGZvciBzZXR0aW5nIGFuIGVsZW1lbnTigJlzIHBvc2l0aW9uLiBVc2UgYSBgbnVsbGAgdmFsdWUgdG8g4oCcc2tpcOKAnSBhIHNpZGUuXG4vLy9cbi8vLyBAcGFyYW0ge1Bvc2l0aW9ufSAkcG9zaXRpb24gW3JlbGF0aXZlXVxuLy8vICAgQSBDU1MgcG9zaXRpb24gdmFsdWVcbi8vL1xuLy8vIEBwYXJhbSB7QXJnbGlzdH0gJGNvb3JkaW5hdGVzIFtudWxsIG51bGwgbnVsbCBudWxsXVxuLy8vICAgTGlzdCBvZiB2YWx1ZXMgdGhhdCBjb3JyZXNwb25kIHRvIHRoZSA0LXZhbHVlIHN5bnRheCBmb3IgdGhlIGVkZ2VzIG9mIGEgYm94XG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gVXNhZ2Vcbi8vLyAgIC5lbGVtZW50IHtcbi8vLyAgICAgQGluY2x1ZGUgcG9zaXRpb24oYWJzb2x1dGUsIDAgbnVsbCBudWxsIDEwZW0pO1xuLy8vICAgfVxuLy8vXG4vLy8gQGV4YW1wbGUgY3NzIC0gQ1NTIE91dHB1dFxuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBsZWZ0OiAxMGVtO1xuLy8vICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4vLy8gICAgIHRvcDogMDtcbi8vLyAgIH1cbi8vL1xuLy8vIEByZXF1aXJlIHtmdW5jdGlvbn0gaXMtbGVuZ3RoXG4vLy8gQHJlcXVpcmUge2Z1bmN0aW9ufSB1bnBhY2tcblxuQG1peGluIHBvc2l0aW9uKCRwb3NpdGlvbjogcmVsYXRpdmUsICRjb29yZGluYXRlczogbnVsbCBudWxsIG51bGwgbnVsbCkge1xuICBAaWYgdHlwZS1vZigkcG9zaXRpb24pID09IGxpc3Qge1xuICAgICRjb29yZGluYXRlczogJHBvc2l0aW9uO1xuICAgICRwb3NpdGlvbjogcmVsYXRpdmU7XG4gIH1cblxuICAkdXNlci1kZXByZWNhdGlvbi13YXJuaW5ncy1zZXR0aW5nOiAkb3V0cHV0LWJvdXJib24tZGVwcmVjYXRpb24td2FybmluZ3M7XG4gICRvdXRwdXQtYm91cmJvbi1kZXByZWNhdGlvbi13YXJuaW5nczogZmFsc2UgIWdsb2JhbDtcbiAgJGNvb3JkaW5hdGVzOiB1bnBhY2soJGNvb3JkaW5hdGVzKTtcblxuICAkb2Zmc2V0czogKFxuICAgIHRvcDogICAgbnRoKCRjb29yZGluYXRlcywgMSksXG4gICAgcmlnaHQ6ICBudGgoJGNvb3JkaW5hdGVzLCAyKSxcbiAgICBib3R0b206IG50aCgkY29vcmRpbmF0ZXMsIDMpLFxuICAgIGxlZnQ6ICAgbnRoKCRjb29yZGluYXRlcywgNClcbiAgKTtcblxuICBwb3NpdGlvbjogJHBvc2l0aW9uO1xuXG4gIEBlYWNoICRvZmZzZXQsICR2YWx1ZSBpbiAkb2Zmc2V0cyB7XG4gICAgQGlmIGlzLWxlbmd0aCgkdmFsdWUpIHtcbiAgICAgICN7JG9mZnNldH06ICR2YWx1ZTtcbiAgICB9XG4gIH1cbiAgJG91dHB1dC1ib3VyYm9uLWRlcHJlY2F0aW9uLXdhcm5pbmdzOiAkdXNlci1kZXByZWNhdGlvbi13YXJuaW5ncy1zZXR0aW5nICFnbG9iYWw7XG59XG4iLCJAY2hhcnNldCBcIlVURi04XCI7XG5cbi8vLyBBIG1peGluIGZvciBnZW5lcmF0aW5nIHZlbmRvciBwcmVmaXhlcyBvbiBub24tc3RhbmRhcmRpemVkIHByb3BlcnRpZXMuXG4vLy9cbi8vLyBAcGFyYW0ge1N0cmluZ30gJHByb3BlcnR5XG4vLy8gICBQcm9wZXJ0eSB0byBwcmVmaXhcbi8vL1xuLy8vIEBwYXJhbSB7Kn0gJHZhbHVlXG4vLy8gICBWYWx1ZSB0byB1c2Vcbi8vL1xuLy8vIEBwYXJhbSB7TGlzdH0gJHByZWZpeGVzXG4vLy8gICBQcmVmaXhlcyB0byBkZWZpbmVcbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBVc2FnZVxuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBAaW5jbHVkZSBwcmVmaXhlcihib3JkZXItcmFkaXVzLCAxMHB4LCB3ZWJraXQgbXMgc3BlYyk7XG4vLy8gICB9XG4vLy9cbi8vLyBAZXhhbXBsZSBjc3MgLSBDU1MgT3V0cHV0XG4vLy8gICAuZWxlbWVudCB7XG4vLy8gICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogMTBweDtcbi8vLyAgICAgLW1vei1ib3JkZXItcmFkaXVzOiAxMHB4O1xuLy8vICAgICBib3JkZXItcmFkaXVzOiAxMHB4O1xuLy8vICAgfVxuLy8vXG4vLy8gQHJlcXVpcmUge3ZhcmlhYmxlfSAkcHJlZml4LWZvci13ZWJraXRcbi8vLyBAcmVxdWlyZSB7dmFyaWFibGV9ICRwcmVmaXgtZm9yLW1vemlsbGFcbi8vLyBAcmVxdWlyZSB7dmFyaWFibGV9ICRwcmVmaXgtZm9yLW1pY3Jvc29mdFxuLy8vIEByZXF1aXJlIHt2YXJpYWJsZX0gJHByZWZpeC1mb3Itb3BlcmFcbi8vLyBAcmVxdWlyZSB7dmFyaWFibGV9ICRwcmVmaXgtZm9yLXNwZWNcblxuQG1peGluIHByZWZpeGVyKCRwcm9wZXJ0eSwgJHZhbHVlLCAkcHJlZml4ZXMpIHtcbiAgQGVhY2ggJHByZWZpeCBpbiAkcHJlZml4ZXMge1xuICAgIEBpZiAkcHJlZml4ID09IHdlYmtpdCB7XG4gICAgICBAaWYgJHByZWZpeC1mb3Itd2Via2l0IHtcbiAgICAgICAgLXdlYmtpdC0jeyRwcm9wZXJ0eX06ICR2YWx1ZTtcbiAgICAgIH1cbiAgICB9IEBlbHNlIGlmICRwcmVmaXggPT0gbW96IHtcbiAgICAgIEBpZiAkcHJlZml4LWZvci1tb3ppbGxhIHtcbiAgICAgICAgLW1vei0jeyRwcm9wZXJ0eX06ICR2YWx1ZTtcbiAgICAgIH1cbiAgICB9IEBlbHNlIGlmICRwcmVmaXggPT0gbXMge1xuICAgICAgQGlmICRwcmVmaXgtZm9yLW1pY3Jvc29mdCB7XG4gICAgICAgIC1tcy0jeyRwcm9wZXJ0eX06ICR2YWx1ZTtcbiAgICAgIH1cbiAgICB9IEBlbHNlIGlmICRwcmVmaXggPT0gbyB7XG4gICAgICBAaWYgJHByZWZpeC1mb3Itb3BlcmEge1xuICAgICAgICAtby0jeyRwcm9wZXJ0eX06ICR2YWx1ZTtcbiAgICAgIH1cbiAgICB9IEBlbHNlIGlmICRwcmVmaXggPT0gc3BlYyB7XG4gICAgICBAaWYgJHByZWZpeC1mb3Itc3BlYyB7XG4gICAgICAgICN7JHByb3BlcnR5fTogJHZhbHVlO1xuICAgICAgfVxuICAgIH0gQGVsc2UgIHtcbiAgICAgIEB3YXJuIFwiVW5yZWNvZ25pemVkIHByZWZpeDogI3skcHJlZml4fVwiO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gZGlzYWJsZS1wcmVmaXgtZm9yLWFsbCgpIHtcbiAgJHByZWZpeC1mb3Itd2Via2l0OiAgICBmYWxzZSAhZ2xvYmFsO1xuICAkcHJlZml4LWZvci1tb3ppbGxhOiAgIGZhbHNlICFnbG9iYWw7XG4gICRwcmVmaXgtZm9yLW1pY3Jvc29mdDogZmFsc2UgIWdsb2JhbDtcbiAgJHByZWZpeC1mb3Itb3BlcmE6ICAgICBmYWxzZSAhZ2xvYmFsO1xuICAkcHJlZml4LWZvci1zcGVjOiAgICAgIGZhbHNlICFnbG9iYWw7XG59XG4iLCJAbWl4aW4gcmV0aW5hLWltYWdlKCRmaWxlbmFtZSwgJGJhY2tncm91bmQtc2l6ZSwgJGV4dGVuc2lvbjogcG5nLCAkcmV0aW5hLWZpbGVuYW1lOiBudWxsLCAkcmV0aW5hLXN1ZmZpeDogXzJ4LCAkYXNzZXQtcGlwZWxpbmU6ICRhc3NldC1waXBlbGluZSkge1xuICBAaW5jbHVkZSBfYm91cmJvbi1kZXByZWNhdGUoXCJyZXRpbmEtaW1hZ2VcIik7XG5cbiAgQGlmICRhc3NldC1waXBlbGluZSB7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogaW1hZ2UtdXJsKFwiI3skZmlsZW5hbWV9LiN7JGV4dGVuc2lvbn1cIik7XG4gIH0gQGVsc2Uge1xuICAgIGJhY2tncm91bmQtaW1hZ2U6ICAgICAgIHVybChcIiN7JGZpbGVuYW1lfS4jeyRleHRlbnNpb259XCIpO1xuICB9XG5cbiAgQGluY2x1ZGUgaGlkcGkge1xuICAgIEBpZiAkYXNzZXQtcGlwZWxpbmUge1xuICAgICAgQGlmICRyZXRpbmEtZmlsZW5hbWUge1xuICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiBpbWFnZS11cmwoXCIjeyRyZXRpbmEtZmlsZW5hbWV9LiN7JGV4dGVuc2lvbn1cIik7XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogaW1hZ2UtdXJsKFwiI3skZmlsZW5hbWV9I3skcmV0aW5hLXN1ZmZpeH0uI3skZXh0ZW5zaW9ufVwiKTtcbiAgICAgIH1cbiAgICB9IEBlbHNlIHtcbiAgICAgIEBpZiAkcmV0aW5hLWZpbGVuYW1lIHtcbiAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiI3skcmV0aW5hLWZpbGVuYW1lfS4jeyRleHRlbnNpb259XCIpO1xuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybChcIiN7JGZpbGVuYW1lfSN7JHJldGluYS1zdWZmaXh9LiN7JGV4dGVuc2lvbn1cIik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgYmFja2dyb3VuZC1zaXplOiAkYmFja2dyb3VuZC1zaXplO1xuICB9XG59XG4iLCJAY2hhcnNldCBcIlVURi04XCI7XG5cbi8vLyBTZXRzIHRoZSBgd2lkdGhgIGFuZCBgaGVpZ2h0YCBvZiB0aGUgZWxlbWVudC5cbi8vL1xuLy8vIEBwYXJhbSB7TGlzdH0gJHNpemVcbi8vLyAgIEEgbGlzdCBvZiBhdCBtb3N0IDIgc2l6ZSB2YWx1ZXMuXG4vLy9cbi8vLyAgIElmIHRoZXJlIGlzIG9ubHkgYSBzaW5nbGUgdmFsdWUgaW4gYCRzaXplYCBpdCBpcyB1c2VkIGZvciBib3RoIHdpZHRoIGFuZCBoZWlnaHQuIEFsbCB1bml0cyBhcmUgc3VwcG9ydGVkLlxuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFVzYWdlXG4vLy8gICAuZmlyc3QtZWxlbWVudCB7XG4vLy8gICAgIEBpbmNsdWRlIHNpemUoMmVtKTtcbi8vLyAgIH1cbi8vL1xuLy8vICAgLnNlY29uZC1lbGVtZW50IHtcbi8vLyAgICAgQGluY2x1ZGUgc2l6ZShhdXRvIDEwZW0pO1xuLy8vICAgfVxuLy8vXG4vLy8gQGV4YW1wbGUgY3NzIC0gQ1NTIE91dHB1dFxuLy8vICAgLmZpcnN0LWVsZW1lbnQge1xuLy8vICAgICB3aWR0aDogMmVtO1xuLy8vICAgICBoZWlnaHQ6IDJlbTtcbi8vLyAgIH1cbi8vL1xuLy8vICAgLnNlY29uZC1lbGVtZW50IHtcbi8vLyAgICAgd2lkdGg6IGF1dG87XG4vLy8gICAgIGhlaWdodDogMTBlbTtcbi8vLyAgIH1cbi8vL1xuLy8vIEB0b2RvIFJlZmFjdG9yIGluIDUuMC4wIHRvIHVzZSBhIGNvbW1hLXNlcGFyYXRlZCBhcmd1bWVudFxuXG5AbWl4aW4gc2l6ZSgkdmFsdWUpIHtcbiAgJHdpZHRoOiBudGgoJHZhbHVlLCAxKTtcbiAgJGhlaWdodDogJHdpZHRoO1xuXG4gIEBpZiBsZW5ndGgoJHZhbHVlKSA+IDEge1xuICAgICRoZWlnaHQ6IG50aCgkdmFsdWUsIDIpO1xuICB9XG5cbiAgJHVzZXItZGVwcmVjYXRpb24td2FybmluZ3Mtc2V0dGluZzogJG91dHB1dC1ib3VyYm9uLWRlcHJlY2F0aW9uLXdhcm5pbmdzO1xuICAkb3V0cHV0LWJvdXJib24tZGVwcmVjYXRpb24td2FybmluZ3M6IGZhbHNlICFnbG9iYWw7XG5cbiAgQGlmIGlzLXNpemUoJGhlaWdodCkge1xuICAgIGhlaWdodDogJGhlaWdodDtcbiAgfSBAZWxzZSB7XG4gICAgQHdhcm4gXCJgI3skaGVpZ2h0fWAgaXMgbm90IGEgdmFsaWQgbGVuZ3RoIGZvciB0aGUgYCRoZWlnaHRgIHBhcmFtZXRlciBpbiB0aGUgYHNpemVgIG1peGluLlwiO1xuICB9XG5cbiAgQGlmIGlzLXNpemUoJHdpZHRoKSB7XG4gICAgd2lkdGg6ICR3aWR0aDtcbiAgfSBAZWxzZSB7XG4gICAgQHdhcm4gXCJgI3skd2lkdGh9YCBpcyBub3QgYSB2YWxpZCBsZW5ndGggZm9yIHRoZSBgJHdpZHRoYCBwYXJhbWV0ZXIgaW4gdGhlIGBzaXplYCBtaXhpbi5cIjtcbiAgfVxuXG4gICRvdXRwdXQtYm91cmJvbi1kZXByZWNhdGlvbi13YXJuaW5nczogJHVzZXItZGVwcmVjYXRpb24td2FybmluZ3Mtc2V0dGluZyAhZ2xvYmFsO1xufVxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuXG4vLy8gR2VuZXJhdGVzIHZhcmlhYmxlcyBmb3IgYWxsIHRleHQtYmFzZWQgaW5wdXRzLiBQbGVhc2Ugbm90ZSB0aGF0IHlvdSBtdXN0IHVzZSBpbnRlcnBvbGF0aW9uIG9uIHRoZSB2YXJpYWJsZTogYCN7JGFsbC10ZXh0LWlucHV0c31gLlxuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFVzYWdlXG4vLy8gICAjeyRhbGwtdGV4dC1pbnB1dHN9IHtcbi8vLyAgICAgYm9yZGVyOiAxcHggc29saWQgI2YwMDtcbi8vLyAgIH1cbi8vL1xuLy8vICAgI3skYWxsLXRleHQtaW5wdXRzLWZvY3VzfSxcbi8vLyAgICN7JGFsbC10ZXh0LWlucHV0cy1ob3Zlcn0ge1xuLy8vICAgICBib3JkZXI6IDFweCBzb2xpZCAjMGYwO1xuLy8vICAgfVxuLy8vXG4vLy8gICAjeyRhbGwtdGV4dC1pbnB1dHMtYWN0aXZlfSB7XG4vLy8gICAgIGJvcmRlcjogMXB4IHNvbGlkICMwMGY7XG4vLy8gICB9XG4vLy9cbi8vLyBAZXhhbXBsZSBjc3MgLSBDU1MgT3V0cHV0XG4vLy8gICBpbnB1dFt0eXBlPVwiY29sb3JcIl0sXG4vLy8gICBpbnB1dFt0eXBlPVwiZGF0ZVwiXSxcbi8vLyAgIGlucHV0W3R5cGU9XCJkYXRldGltZVwiXSxcbi8vLyAgIGlucHV0W3R5cGU9XCJkYXRldGltZS1sb2NhbFwiXSxcbi8vLyAgIGlucHV0W3R5cGU9XCJlbWFpbFwiXSxcbi8vLyAgIGlucHV0W3R5cGU9XCJtb250aFwiXSxcbi8vLyAgIGlucHV0W3R5cGU9XCJudW1iZXJcIl0sXG4vLy8gICBpbnB1dFt0eXBlPVwicGFzc3dvcmRcIl0sXG4vLy8gICBpbnB1dFt0eXBlPVwic2VhcmNoXCJdLFxuLy8vICAgaW5wdXRbdHlwZT1cInRlbFwiXSxcbi8vLyAgIGlucHV0W3R5cGU9XCJ0ZXh0XCJdLFxuLy8vICAgaW5wdXRbdHlwZT1cInRpbWVcIl0sXG4vLy8gICBpbnB1dFt0eXBlPVwidXJsXCJdLFxuLy8vICAgaW5wdXRbdHlwZT1cIndlZWtcIl0sXG4vLy8gICB0ZXh0YXJlYSB7XG4vLy8gICAgIGJvcmRlcjogMXB4IHNvbGlkICNmMDA7XG4vLy8gICB9XG4vLy9cbi8vLyAgIGlucHV0W3R5cGU9XCJjb2xvclwiXTpmb2N1cyxcbi8vLyAgIGlucHV0W3R5cGU9XCJkYXRlXCJdOmZvY3VzLFxuLy8vICAgaW5wdXRbdHlwZT1cImRhdGV0aW1lXCJdOmZvY3VzLFxuLy8vICAgaW5wdXRbdHlwZT1cImRhdGV0aW1lLWxvY2FsXCJdOmZvY3VzLFxuLy8vICAgaW5wdXRbdHlwZT1cImVtYWlsXCJdOmZvY3VzLFxuLy8vICAgaW5wdXRbdHlwZT1cIm1vbnRoXCJdOmZvY3VzLFxuLy8vICAgaW5wdXRbdHlwZT1cIm51bWJlclwiXTpmb2N1cyxcbi8vLyAgIGlucHV0W3R5cGU9XCJwYXNzd29yZFwiXTpmb2N1cyxcbi8vLyAgIGlucHV0W3R5cGU9XCJzZWFyY2hcIl06Zm9jdXMsXG4vLy8gICBpbnB1dFt0eXBlPVwidGVsXCJdOmZvY3VzLFxuLy8vICAgaW5wdXRbdHlwZT1cInRleHRcIl06Zm9jdXMsXG4vLy8gICBpbnB1dFt0eXBlPVwidGltZVwiXTpmb2N1cyxcbi8vLyAgIGlucHV0W3R5cGU9XCJ1cmxcIl06Zm9jdXMsXG4vLy8gICBpbnB1dFt0eXBlPVwid2Vla1wiXTpmb2N1cyxcbi8vLyAgIHRleHRhcmVhOmZvY3VzLFxuLy8vICAgaW5wdXRbdHlwZT1cImNvbG9yXCJdOmhvdmVyLFxuLy8vICAgaW5wdXRbdHlwZT1cImRhdGVcIl06aG92ZXIsXG4vLy8gICBpbnB1dFt0eXBlPVwiZGF0ZXRpbWVcIl06aG92ZXIsXG4vLy8gICBpbnB1dFt0eXBlPVwiZGF0ZXRpbWUtbG9jYWxcIl06aG92ZXIsXG4vLy8gICBpbnB1dFt0eXBlPVwiZW1haWxcIl06aG92ZXIsXG4vLy8gICBpbnB1dFt0eXBlPVwibW9udGhcIl06aG92ZXIsXG4vLy8gICBpbnB1dFt0eXBlPVwibnVtYmVyXCJdOmhvdmVyLFxuLy8vICAgaW5wdXRbdHlwZT1cInBhc3N3b3JkXCJdOmhvdmVyLFxuLy8vICAgaW5wdXRbdHlwZT1cInNlYXJjaFwiXTpob3Zlcixcbi8vLyAgIGlucHV0W3R5cGU9XCJ0ZWxcIl06aG92ZXIsXG4vLy8gICBpbnB1dFt0eXBlPVwidGV4dFwiXTpob3Zlcixcbi8vLyAgIGlucHV0W3R5cGU9XCJ0aW1lXCJdOmhvdmVyLFxuLy8vICAgaW5wdXRbdHlwZT1cInVybFwiXTpob3Zlcixcbi8vLyAgIGlucHV0W3R5cGU9XCJ3ZWVrXCJdOmhvdmVyLFxuLy8vICAgdGV4dGFyZWE6aG92ZXIge1xuLy8vICAgICBib3JkZXI6IDFweCBzb2xpZCAjMGYwO1xuLy8vICAgfVxuLy8vXG4vLy8gICBpbnB1dFt0eXBlPVwiY29sb3JcIl06YWN0aXZlLFxuLy8vICAgaW5wdXRbdHlwZT1cImRhdGVcIl06YWN0aXZlLFxuLy8vICAgaW5wdXRbdHlwZT1cImRhdGV0aW1lXCJdOmFjdGl2ZSxcbi8vLyAgIGlucHV0W3R5cGU9XCJkYXRldGltZS1sb2NhbFwiXTphY3RpdmUsXG4vLy8gICBpbnB1dFt0eXBlPVwiZW1haWxcIl06YWN0aXZlLFxuLy8vICAgaW5wdXRbdHlwZT1cIm1vbnRoXCJdOmFjdGl2ZSxcbi8vLyAgIGlucHV0W3R5cGU9XCJudW1iZXJcIl06YWN0aXZlLFxuLy8vICAgaW5wdXRbdHlwZT1cInBhc3N3b3JkXCJdOmFjdGl2ZSxcbi8vLyAgIGlucHV0W3R5cGU9XCJzZWFyY2hcIl06YWN0aXZlLFxuLy8vICAgaW5wdXRbdHlwZT1cInRlbFwiXTphY3RpdmUsXG4vLy8gICBpbnB1dFt0eXBlPVwidGV4dFwiXTphY3RpdmUsXG4vLy8gICBpbnB1dFt0eXBlPVwidGltZVwiXTphY3RpdmUsXG4vLy8gICBpbnB1dFt0eXBlPVwidXJsXCJdOmFjdGl2ZSxcbi8vLyAgIGlucHV0W3R5cGU9XCJ3ZWVrXCJdOmFjdGl2ZSxcbi8vLyAgIHRleHRhcmVhOmFjdGl2ZSB7XG4vLy8gICAgIGJvcmRlcjogMXB4IHNvbGlkICMwMGY7XG4vLy8gICB9XG4vLy9cbi8vLyBAcmVxdWlyZSBhc3NpZ24taW5wdXRzXG4vLy9cbi8vLyBAdHlwZSBMaXN0XG5cbiR0ZXh0LWlucHV0cy1saXN0OiAnaW5wdXRbdHlwZT1cImNvbG9yXCJdJyxcbiAgICAgICAgICAgICAgICAgICAnaW5wdXRbdHlwZT1cImRhdGVcIl0nLFxuICAgICAgICAgICAgICAgICAgICdpbnB1dFt0eXBlPVwiZGF0ZXRpbWVcIl0nLFxuICAgICAgICAgICAgICAgICAgICdpbnB1dFt0eXBlPVwiZGF0ZXRpbWUtbG9jYWxcIl0nLFxuICAgICAgICAgICAgICAgICAgICdpbnB1dFt0eXBlPVwiZW1haWxcIl0nLFxuICAgICAgICAgICAgICAgICAgICdpbnB1dFt0eXBlPVwibW9udGhcIl0nLFxuICAgICAgICAgICAgICAgICAgICdpbnB1dFt0eXBlPVwibnVtYmVyXCJdJyxcbiAgICAgICAgICAgICAgICAgICAnaW5wdXRbdHlwZT1cInBhc3N3b3JkXCJdJyxcbiAgICAgICAgICAgICAgICAgICAnaW5wdXRbdHlwZT1cInNlYXJjaFwiXScsXG4gICAgICAgICAgICAgICAgICAgJ2lucHV0W3R5cGU9XCJ0ZWxcIl0nLFxuICAgICAgICAgICAgICAgICAgICdpbnB1dFt0eXBlPVwidGV4dFwiXScsXG4gICAgICAgICAgICAgICAgICAgJ2lucHV0W3R5cGU9XCJ0aW1lXCJdJyxcbiAgICAgICAgICAgICAgICAgICAnaW5wdXRbdHlwZT1cInVybFwiXScsXG4gICAgICAgICAgICAgICAgICAgJ2lucHV0W3R5cGU9XCJ3ZWVrXCJdJyxcbiAgICAgICAgICAgICAgICAgICAnaW5wdXQ6bm90KFt0eXBlXSknLFxuICAgICAgICAgICAgICAgICAgICd0ZXh0YXJlYSc7XG5cbiR1c2VyLW91dHB1dC1kZXByZWNhdGlvbi13YXJuaW5ncy1zZXR0aW5nOiAkb3V0cHV0LWJvdXJib24tZGVwcmVjYXRpb24td2FybmluZ3M7XG4kb3V0cHV0LWJvdXJib24tZGVwcmVjYXRpb24td2FybmluZ3M6IGZhbHNlO1xuXG4kYWxsLXRleHQtaW5wdXRzOiAgICAgICAgYXNzaWduLWlucHV0cygkdGV4dC1pbnB1dHMtbGlzdCk7XG4kYWxsLXRleHQtaW5wdXRzLWFjdGl2ZTogYXNzaWduLWlucHV0cygkdGV4dC1pbnB1dHMtbGlzdCwgYWN0aXZlKTtcbiRhbGwtdGV4dC1pbnB1dHMtZm9jdXM6ICBhc3NpZ24taW5wdXRzKCR0ZXh0LWlucHV0cy1saXN0LCBmb2N1cyk7XG4kYWxsLXRleHQtaW5wdXRzLWhvdmVyOiAgYXNzaWduLWlucHV0cygkdGV4dC1pbnB1dHMtbGlzdCwgaG92ZXIpO1xuXG4kb3V0cHV0LWJvdXJib24tZGVwcmVjYXRpb24td2FybmluZ3M6ICR1c2VyLW91dHB1dC1kZXByZWNhdGlvbi13YXJuaW5ncy1zZXR0aW5nO1xuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuXG4vLy8gQ1NTIGN1YmljLWJlemllciB0aW1pbmcgZnVuY3Rpb25zLiBUaW1pbmcgZnVuY3Rpb25zIGNvdXJ0ZXN5IG9mIGpxdWVyeS5lYXNpZSAoZ2l0aHViLmNvbS9qYXVraWEvZWFzaWUpXG4vLy9cbi8vLyBUaW1pbmcgZnVuY3Rpb25zIGFyZSB0aGUgc2FtZSBhcyBkZW1vZWQgaGVyZTogaHR0cDovL2pxdWVyeXVpLmNvbS9yZXNvdXJjZXMvZGVtb3MvZWZmZWN0L2Vhc2luZy5odG1sXG4vLy9cbi8vLyBAdHlwZSBjdWJpYy1iZXppZXJcblxuJGVhc2UtaW4tcXVhZDogICAgICBjdWJpYy1iZXppZXIoMC41NTAsICAwLjA4NSwgMC42ODAsIDAuNTMwKTtcbiRlYXNlLWluLWN1YmljOiAgICAgY3ViaWMtYmV6aWVyKDAuNTUwLCAgMC4wNTUsIDAuNjc1LCAwLjE5MCk7XG4kZWFzZS1pbi1xdWFydDogICAgIGN1YmljLWJlemllcigwLjg5NSwgIDAuMDMwLCAwLjY4NSwgMC4yMjApO1xuJGVhc2UtaW4tcXVpbnQ6ICAgICBjdWJpYy1iZXppZXIoMC43NTUsICAwLjA1MCwgMC44NTUsIDAuMDYwKTtcbiRlYXNlLWluLXNpbmU6ICAgICAgY3ViaWMtYmV6aWVyKDAuNDcwLCAgMC4wMDAsIDAuNzQ1LCAwLjcxNSk7XG4kZWFzZS1pbi1leHBvOiAgICAgIGN1YmljLWJlemllcigwLjk1MCwgIDAuMDUwLCAwLjc5NSwgMC4wMzUpO1xuJGVhc2UtaW4tY2lyYzogICAgICBjdWJpYy1iZXppZXIoMC42MDAsICAwLjA0MCwgMC45ODAsIDAuMzM1KTtcbiRlYXNlLWluLWJhY2s6ICAgICAgY3ViaWMtYmV6aWVyKDAuNjAwLCAtMC4yODAsIDAuNzM1LCAwLjA0NSk7XG5cbiRlYXNlLW91dC1xdWFkOiAgICAgY3ViaWMtYmV6aWVyKDAuMjUwLCAgMC40NjAsIDAuNDUwLCAwLjk0MCk7XG4kZWFzZS1vdXQtY3ViaWM6ICAgIGN1YmljLWJlemllcigwLjIxNSwgIDAuNjEwLCAwLjM1NSwgMS4wMDApO1xuJGVhc2Utb3V0LXF1YXJ0OiAgICBjdWJpYy1iZXppZXIoMC4xNjUsICAwLjg0MCwgMC40NDAsIDEuMDAwKTtcbiRlYXNlLW91dC1xdWludDogICAgY3ViaWMtYmV6aWVyKDAuMjMwLCAgMS4wMDAsIDAuMzIwLCAxLjAwMCk7XG4kZWFzZS1vdXQtc2luZTogICAgIGN1YmljLWJlemllcigwLjM5MCwgIDAuNTc1LCAwLjU2NSwgMS4wMDApO1xuJGVhc2Utb3V0LWV4cG86ICAgICBjdWJpYy1iZXppZXIoMC4xOTAsICAxLjAwMCwgMC4yMjAsIDEuMDAwKTtcbiRlYXNlLW91dC1jaXJjOiAgICAgY3ViaWMtYmV6aWVyKDAuMDc1LCAgMC44MjAsIDAuMTY1LCAxLjAwMCk7XG4kZWFzZS1vdXQtYmFjazogICAgIGN1YmljLWJlemllcigwLjE3NSwgIDAuODg1LCAwLjMyMCwgMS4yNzUpO1xuXG4kZWFzZS1pbi1vdXQtcXVhZDogIGN1YmljLWJlemllcigwLjQ1NSwgIDAuMDMwLCAwLjUxNSwgMC45NTUpO1xuJGVhc2UtaW4tb3V0LWN1YmljOiBjdWJpYy1iZXppZXIoMC42NDUsICAwLjA0NSwgMC4zNTUsIDEuMDAwKTtcbiRlYXNlLWluLW91dC1xdWFydDogY3ViaWMtYmV6aWVyKDAuNzcwLCAgMC4wMDAsIDAuMTc1LCAxLjAwMCk7XG4kZWFzZS1pbi1vdXQtcXVpbnQ6IGN1YmljLWJlemllcigwLjg2MCwgIDAuMDAwLCAwLjA3MCwgMS4wMDApO1xuJGVhc2UtaW4tb3V0LXNpbmU6ICBjdWJpYy1iZXppZXIoMC40NDUsICAwLjA1MCwgMC41NTAsIDAuOTUwKTtcbiRlYXNlLWluLW91dC1leHBvOiAgY3ViaWMtYmV6aWVyKDEuMDAwLCAgMC4wMDAsIDAuMDAwLCAxLjAwMCk7XG4kZWFzZS1pbi1vdXQtY2lyYzogIGN1YmljLWJlemllcigwLjc4NSwgIDAuMTM1LCAwLjE1MCwgMC44NjApO1xuJGVhc2UtaW4tb3V0LWJhY2s6ICBjdWJpYy1iZXppZXIoMC42ODAsIC0wLjU1MCwgMC4yNjUsIDEuNTUwKTtcbiIsIkBtaXhpbiB0cmlhbmdsZSgkc2l6ZSwgJGNvbG9yLCAkZGlyZWN0aW9uKSB7XG4gICR3aWR0aDogbnRoKCRzaXplLCAxKTtcbiAgJGhlaWdodDogbnRoKCRzaXplLCBsZW5ndGgoJHNpemUpKTtcbiAgJGZvcmVncm91bmQtY29sb3I6IG50aCgkY29sb3IsIDEpO1xuICAkYmFja2dyb3VuZC1jb2xvcjogaWYobGVuZ3RoKCRjb2xvcikgPT0gMiwgbnRoKCRjb2xvciwgMiksIHRyYW5zcGFyZW50KTtcbiAgaGVpZ2h0OiAwO1xuICB3aWR0aDogMDtcblxuICBAaWYgKCRkaXJlY3Rpb24gPT0gdXApIG9yICgkZGlyZWN0aW9uID09IGRvd24pIG9yICgkZGlyZWN0aW9uID09IHJpZ2h0KSBvciAoJGRpcmVjdGlvbiA9PSBsZWZ0KSB7XG4gICAgJHdpZHRoOiAkd2lkdGggLyAyO1xuICAgICRoZWlnaHQ6IGlmKGxlbmd0aCgkc2l6ZSkgPiAxLCAkaGVpZ2h0LCAkaGVpZ2h0LzIpO1xuXG4gICAgQGlmICRkaXJlY3Rpb24gPT0gdXAge1xuICAgICAgYm9yZGVyLWJvdHRvbTogJGhlaWdodCBzb2xpZCAkZm9yZWdyb3VuZC1jb2xvcjtcbiAgICAgIGJvcmRlci1sZWZ0OiAkd2lkdGggc29saWQgJGJhY2tncm91bmQtY29sb3I7XG4gICAgICBib3JkZXItcmlnaHQ6ICR3aWR0aCBzb2xpZCAkYmFja2dyb3VuZC1jb2xvcjtcbiAgICB9IEBlbHNlIGlmICRkaXJlY3Rpb24gPT0gcmlnaHQge1xuICAgICAgYm9yZGVyLWJvdHRvbTogJHdpZHRoIHNvbGlkICRiYWNrZ3JvdW5kLWNvbG9yO1xuICAgICAgYm9yZGVyLWxlZnQ6ICRoZWlnaHQgc29saWQgJGZvcmVncm91bmQtY29sb3I7XG4gICAgICBib3JkZXItdG9wOiAkd2lkdGggc29saWQgJGJhY2tncm91bmQtY29sb3I7XG4gICAgfSBAZWxzZSBpZiAkZGlyZWN0aW9uID09IGRvd24ge1xuICAgICAgYm9yZGVyLWxlZnQ6ICR3aWR0aCBzb2xpZCAkYmFja2dyb3VuZC1jb2xvcjtcbiAgICAgIGJvcmRlci1yaWdodDogJHdpZHRoIHNvbGlkICRiYWNrZ3JvdW5kLWNvbG9yO1xuICAgICAgYm9yZGVyLXRvcDogJGhlaWdodCBzb2xpZCAkZm9yZWdyb3VuZC1jb2xvcjtcbiAgICB9IEBlbHNlIGlmICRkaXJlY3Rpb24gPT0gbGVmdCB7XG4gICAgICBib3JkZXItYm90dG9tOiAkd2lkdGggc29saWQgJGJhY2tncm91bmQtY29sb3I7XG4gICAgICBib3JkZXItcmlnaHQ6ICRoZWlnaHQgc29saWQgJGZvcmVncm91bmQtY29sb3I7XG4gICAgICBib3JkZXItdG9wOiAkd2lkdGggc29saWQgJGJhY2tncm91bmQtY29sb3I7XG4gICAgfVxuICB9IEBlbHNlIGlmICgkZGlyZWN0aW9uID09IHVwLXJpZ2h0KSBvciAoJGRpcmVjdGlvbiA9PSB1cC1sZWZ0KSB7XG4gICAgYm9yZGVyLXRvcDogJGhlaWdodCBzb2xpZCAkZm9yZWdyb3VuZC1jb2xvcjtcblxuICAgIEBpZiAkZGlyZWN0aW9uID09IHVwLXJpZ2h0IHtcbiAgICAgIGJvcmRlci1sZWZ0OiAgJHdpZHRoIHNvbGlkICRiYWNrZ3JvdW5kLWNvbG9yO1xuICAgIH0gQGVsc2UgaWYgJGRpcmVjdGlvbiA9PSB1cC1sZWZ0IHtcbiAgICAgIGJvcmRlci1yaWdodDogJHdpZHRoIHNvbGlkICRiYWNrZ3JvdW5kLWNvbG9yO1xuICAgIH1cbiAgfSBAZWxzZSBpZiAoJGRpcmVjdGlvbiA9PSBkb3duLXJpZ2h0KSBvciAoJGRpcmVjdGlvbiA9PSBkb3duLWxlZnQpIHtcbiAgICBib3JkZXItYm90dG9tOiAkaGVpZ2h0IHNvbGlkICRmb3JlZ3JvdW5kLWNvbG9yO1xuXG4gICAgQGlmICRkaXJlY3Rpb24gPT0gZG93bi1yaWdodCB7XG4gICAgICBib3JkZXItbGVmdDogICR3aWR0aCBzb2xpZCAkYmFja2dyb3VuZC1jb2xvcjtcbiAgICB9IEBlbHNlIGlmICRkaXJlY3Rpb24gPT0gZG93bi1sZWZ0IHtcbiAgICAgIGJvcmRlci1yaWdodDogJHdpZHRoIHNvbGlkICRiYWNrZ3JvdW5kLWNvbG9yO1xuICAgIH1cbiAgfSBAZWxzZSBpZiAoJGRpcmVjdGlvbiA9PSBpbnNldC11cCkge1xuICAgIGJvcmRlci1jb2xvcjogJGJhY2tncm91bmQtY29sb3IgJGJhY2tncm91bmQtY29sb3IgJGZvcmVncm91bmQtY29sb3I7XG4gICAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcbiAgICBib3JkZXItd2lkdGg6ICRoZWlnaHQgJHdpZHRoO1xuICB9IEBlbHNlIGlmICgkZGlyZWN0aW9uID09IGluc2V0LWRvd24pIHtcbiAgICBib3JkZXItY29sb3I6ICRmb3JlZ3JvdW5kLWNvbG9yICRiYWNrZ3JvdW5kLWNvbG9yICRiYWNrZ3JvdW5kLWNvbG9yO1xuICAgIGJvcmRlci1zdHlsZTogc29saWQ7XG4gICAgYm9yZGVyLXdpZHRoOiAkaGVpZ2h0ICR3aWR0aDtcbiAgfSBAZWxzZSBpZiAoJGRpcmVjdGlvbiA9PSBpbnNldC1yaWdodCkge1xuICAgIGJvcmRlci1jb2xvcjogJGJhY2tncm91bmQtY29sb3IgJGJhY2tncm91bmQtY29sb3IgJGJhY2tncm91bmQtY29sb3IgJGZvcmVncm91bmQtY29sb3I7XG4gICAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcbiAgICBib3JkZXItd2lkdGg6ICR3aWR0aCAkaGVpZ2h0O1xuICB9IEBlbHNlIGlmICgkZGlyZWN0aW9uID09IGluc2V0LWxlZnQpIHtcbiAgICBib3JkZXItY29sb3I6ICRiYWNrZ3JvdW5kLWNvbG9yICRmb3JlZ3JvdW5kLWNvbG9yICRiYWNrZ3JvdW5kLWNvbG9yICRiYWNrZ3JvdW5kLWNvbG9yO1xuICAgIGJvcmRlci1zdHlsZTogc29saWQ7XG4gICAgYm9yZGVyLXdpZHRoOiAkd2lkdGggJGhlaWdodDtcbiAgfVxufVxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuXG4vLy8gUHJvdmlkZXMgYW4gZWFzeSB3YXkgdG8gY2hhbmdlIHRoZSBgd29yZC13cmFwYCBwcm9wZXJ0eS5cbi8vL1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkd3JhcCBbYnJlYWstd29yZF1cbi8vLyAgIFZhbHVlIGZvciB0aGUgYHdvcmQtYnJlYWtgIHByb3BlcnR5LlxuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFVzYWdlXG4vLy8gICAud3JhcHBlciB7XG4vLy8gICAgIEBpbmNsdWRlIHdvcmQtd3JhcChicmVhay13b3JkKTtcbi8vLyAgIH1cbi8vL1xuLy8vIEBleGFtcGxlIGNzcyAtIENTUyBPdXRwdXRcbi8vLyAgIC53cmFwcGVyIHtcbi8vLyAgICAgb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDtcbi8vLyAgICAgd29yZC1icmVhazogYnJlYWstYWxsO1xuLy8vICAgICB3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7XG4vLy8gICB9XG5cbkBtaXhpbiB3b3JkLXdyYXAoJHdyYXA6IGJyZWFrLXdvcmQpIHtcbiAgb3ZlcmZsb3ctd3JhcDogJHdyYXA7XG4gIHdvcmQtd3JhcDogJHdyYXA7XG5cbiAgQGlmICR3cmFwID09IGJyZWFrLXdvcmQge1xuICAgIHdvcmQtYnJlYWs6IGJyZWFrLWFsbDtcbiAgfSBAZWxzZSB7XG4gICAgd29yZC1icmVhazogJHdyYXA7XG4gIH1cbn1cbiIsIi8vIFRoZSBmb2xsb3dpbmcgZmVhdHVyZXMgaGF2ZSBiZWVuIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmV4dCBNQUpPUiB2ZXJzaW9uIHJlbGVhc2VcblxuQG1peGluIGlubGluZS1ibG9jayB7XG4gIEBpbmNsdWRlIF9ib3VyYm9uLWRlcHJlY2F0ZShcImlubGluZS1ibG9ja1wiKTtcblxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG59XG5cbkBtaXhpbiBidXR0b24gKCRzdHlsZTogc2ltcGxlLCAkYmFzZS1jb2xvcjogIzQyOTRmMCwgJHRleHQtc2l6ZTogaW5oZXJpdCwgJHBhZGRpbmc6IDdweCAxOHB4KSB7XG4gIEBpbmNsdWRlIF9ib3VyYm9uLWRlcHJlY2F0ZShcImJ1dHRvblwiKTtcblxuICBAaWYgdHlwZS1vZigkc3R5bGUpID09IHN0cmluZyBhbmQgdHlwZS1vZigkYmFzZS1jb2xvcikgPT0gY29sb3Ige1xuICAgIEBpbmNsdWRlIGJ1dHRvbnN0eWxlKCRzdHlsZSwgJGJhc2UtY29sb3IsICR0ZXh0LXNpemUsICRwYWRkaW5nKTtcbiAgfVxuXG4gIEBpZiB0eXBlLW9mKCRzdHlsZSkgPT0gc3RyaW5nIGFuZCB0eXBlLW9mKCRiYXNlLWNvbG9yKSA9PSBudW1iZXIge1xuICAgICRwYWRkaW5nOiAkdGV4dC1zaXplO1xuICAgICR0ZXh0LXNpemU6ICRiYXNlLWNvbG9yO1xuICAgICRiYXNlLWNvbG9yOiAjNDI5NGYwO1xuXG4gICAgQGlmICRwYWRkaW5nID09IGluaGVyaXQge1xuICAgICAgJHBhZGRpbmc6IDdweCAxOHB4O1xuICAgIH1cblxuICAgIEBpbmNsdWRlIGJ1dHRvbnN0eWxlKCRzdHlsZSwgJGJhc2UtY29sb3IsICR0ZXh0LXNpemUsICRwYWRkaW5nKTtcbiAgfVxuXG4gIEBpZiB0eXBlLW9mKCRzdHlsZSkgPT0gY29sb3IgYW5kIHR5cGUtb2YoJGJhc2UtY29sb3IpID09IGNvbG9yIHtcbiAgICAkYmFzZS1jb2xvcjogJHN0eWxlO1xuICAgICRzdHlsZTogc2ltcGxlO1xuICAgIEBpbmNsdWRlIGJ1dHRvbnN0eWxlKCRzdHlsZSwgJGJhc2UtY29sb3IsICR0ZXh0LXNpemUsICRwYWRkaW5nKTtcbiAgfVxuXG4gIEBpZiB0eXBlLW9mKCRzdHlsZSkgPT0gY29sb3IgYW5kIHR5cGUtb2YoJGJhc2UtY29sb3IpID09IG51bWJlciB7XG4gICAgJHBhZGRpbmc6ICR0ZXh0LXNpemU7XG4gICAgJHRleHQtc2l6ZTogJGJhc2UtY29sb3I7XG4gICAgJGJhc2UtY29sb3I6ICRzdHlsZTtcbiAgICAkc3R5bGU6IHNpbXBsZTtcblxuICAgIEBpZiAkcGFkZGluZyA9PSBpbmhlcml0IHtcbiAgICAgICRwYWRkaW5nOiA3cHggMThweDtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBidXR0b25zdHlsZSgkc3R5bGUsICRiYXNlLWNvbG9yLCAkdGV4dC1zaXplLCAkcGFkZGluZyk7XG4gIH1cblxuICBAaWYgdHlwZS1vZigkc3R5bGUpID09IG51bWJlciB7XG4gICAgJHBhZGRpbmc6ICRiYXNlLWNvbG9yO1xuICAgICR0ZXh0LXNpemU6ICRzdHlsZTtcbiAgICAkYmFzZS1jb2xvcjogIzQyOTRmMDtcbiAgICAkc3R5bGU6IHNpbXBsZTtcblxuICAgIEBpZiAkcGFkZGluZyA9PSAjNDI5NGYwIHtcbiAgICAgICRwYWRkaW5nOiA3cHggMThweDtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBidXR0b25zdHlsZSgkc3R5bGUsICRiYXNlLWNvbG9yLCAkdGV4dC1zaXplLCAkcGFkZGluZyk7XG4gIH1cblxuICAmOmRpc2FibGVkIHtcbiAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xuICAgIG9wYWNpdHk6IDAuNTtcbiAgfVxufVxuXG4vLyBTZWxlY3RvciBTdHlsZSBCdXR0b25cbkBtaXhpbiBidXR0b25zdHlsZSgkdHlwZSwgJGItY29sb3IsICR0LXNpemUsICRwYWQpIHtcbiAgLy8gR3JheXNjYWxlIGJ1dHRvblxuICBAaWYgJHR5cGUgPT0gc2ltcGxlIGFuZCAkYi1jb2xvciA9PSBncmF5c2NhbGUoJGItY29sb3IpIHtcbiAgICBAaW5jbHVkZSBzaW1wbGUoJGItY29sb3IsIHRydWUsICR0LXNpemUsICRwYWQpO1xuICB9XG5cbiAgQGlmICR0eXBlID09IHNoaW55IGFuZCAkYi1jb2xvciA9PSBncmF5c2NhbGUoJGItY29sb3IpIHtcbiAgICBAaW5jbHVkZSBzaGlueSgkYi1jb2xvciwgdHJ1ZSwgJHQtc2l6ZSwgJHBhZCk7XG4gIH1cblxuICBAaWYgJHR5cGUgPT0gcGlsbCBhbmQgJGItY29sb3IgPT0gZ3JheXNjYWxlKCRiLWNvbG9yKSB7XG4gICAgQGluY2x1ZGUgcGlsbCgkYi1jb2xvciwgdHJ1ZSwgJHQtc2l6ZSwgJHBhZCk7XG4gIH1cblxuICBAaWYgJHR5cGUgPT0gZmxhdCBhbmQgJGItY29sb3IgPT0gZ3JheXNjYWxlKCRiLWNvbG9yKSB7XG4gICAgQGluY2x1ZGUgZmxhdCgkYi1jb2xvciwgdHJ1ZSwgJHQtc2l6ZSwgJHBhZCk7XG4gIH1cblxuICAvLyBDb2xvcmVkIGJ1dHRvblxuICBAaWYgJHR5cGUgPT0gc2ltcGxlIHtcbiAgICBAaW5jbHVkZSBzaW1wbGUoJGItY29sb3IsIGZhbHNlLCAkdC1zaXplLCAkcGFkKTtcbiAgfVxuXG4gIEBlbHNlIGlmICR0eXBlID09IHNoaW55IHtcbiAgICBAaW5jbHVkZSBzaGlueSgkYi1jb2xvciwgZmFsc2UsICR0LXNpemUsICRwYWQpO1xuICB9XG5cbiAgQGVsc2UgaWYgJHR5cGUgPT0gcGlsbCB7XG4gICAgQGluY2x1ZGUgcGlsbCgkYi1jb2xvciwgZmFsc2UsICR0LXNpemUsICRwYWQpO1xuICB9XG5cbiAgQGVsc2UgaWYgJHR5cGUgPT0gZmxhdCB7XG4gICAgQGluY2x1ZGUgZmxhdCgkYi1jb2xvciwgZmFsc2UsICR0LXNpemUsICRwYWQpO1xuICB9XG59XG5cbi8vIFNpbXBsZSBCdXR0b25cbkBtaXhpbiBzaW1wbGUoJGJhc2UtY29sb3IsICRncmF5c2NhbGU6IGZhbHNlLCAkdGV4dHNpemU6IGluaGVyaXQsICRwYWRkaW5nOiA3cHggMThweCkge1xuICAkY29sb3I6ICAgICAgICAgaHNsKDAsIDAsIDEwMCUpO1xuICAkYm9yZGVyOiAgICAgICAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkc2F0dXJhdGlvbjogIDklLCAgJGxpZ2h0bmVzczogLTE0JSk7XG4gICRpbnNldC1zaGFkb3c6ICBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRzYXR1cmF0aW9uOiAtOCUsICAkbGlnaHRuZXNzOiAgMTUlKTtcbiAgJHN0b3AtZ3JhZGllbnQ6IGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJHNhdHVyYXRpb246ICA5JSwgICRsaWdodG5lc3M6IC0xMSUpO1xuICAkdGV4dC1zaGFkb3c6ICAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkc2F0dXJhdGlvbjogIDE1JSwgJGxpZ2h0bmVzczogLTE4JSk7XG5cbiAgQGlmIGlzLWxpZ2h0KCRiYXNlLWNvbG9yKSB7XG4gICAgJGNvbG9yOiAgICAgICBoc2woMCwgMCwgMjAlKTtcbiAgICAkdGV4dC1zaGFkb3c6IGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJHNhdHVyYXRpb246IDEwJSwgJGxpZ2h0bmVzczogNCUpO1xuICB9XG5cbiAgQGlmICRncmF5c2NhbGUgPT0gdHJ1ZSB7XG4gICAgJGJvcmRlcjogICAgICAgIGdyYXlzY2FsZSgkYm9yZGVyKTtcbiAgICAkaW5zZXQtc2hhZG93OiAgZ3JheXNjYWxlKCRpbnNldC1zaGFkb3cpO1xuICAgICRzdG9wLWdyYWRpZW50OiBncmF5c2NhbGUoJHN0b3AtZ3JhZGllbnQpO1xuICAgICR0ZXh0LXNoYWRvdzogICBncmF5c2NhbGUoJHRleHQtc2hhZG93KTtcbiAgfVxuXG4gIGJvcmRlcjogMXB4IHNvbGlkICRib3JkZXI7XG4gIGJvcmRlci1yYWRpdXM6IDNweDtcbiAgYm94LXNoYWRvdzogaW5zZXQgMCAxcHggMCAwICRpbnNldC1zaGFkb3c7XG4gIGNvbG9yOiAkY29sb3I7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgZm9udC1zaXplOiAkdGV4dHNpemU7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xuICBAaW5jbHVkZSBsaW5lYXItZ3JhZGllbnQgKCRiYXNlLWNvbG9yLCAkc3RvcC1ncmFkaWVudCk7XG4gIHBhZGRpbmc6ICRwYWRkaW5nO1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIHRleHQtc2hhZG93OiAwIDFweCAwICR0ZXh0LXNoYWRvdztcbiAgYmFja2dyb3VuZC1jbGlwOiBwYWRkaW5nLWJveDtcblxuICAmOmhvdmVyOm5vdCg6ZGlzYWJsZWQpIHtcbiAgICAkYmFzZS1jb2xvci1ob3ZlcjogICAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkc2F0dXJhdGlvbjogLTQlLCAkbGlnaHRuZXNzOiAtNSUpO1xuICAgICRpbnNldC1zaGFkb3ctaG92ZXI6ICBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRzYXR1cmF0aW9uOiAtNyUsICRsaWdodG5lc3M6ICA1JSk7XG4gICAgJHN0b3AtZ3JhZGllbnQtaG92ZXI6IGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJHNhdHVyYXRpb246ICA4JSwgJGxpZ2h0bmVzczogLTE0JSk7XG5cbiAgICBAaWYgJGdyYXlzY2FsZSA9PSB0cnVlIHtcbiAgICAgICRiYXNlLWNvbG9yLWhvdmVyOiAgICBncmF5c2NhbGUoJGJhc2UtY29sb3ItaG92ZXIpO1xuICAgICAgJGluc2V0LXNoYWRvdy1ob3ZlcjogIGdyYXlzY2FsZSgkaW5zZXQtc2hhZG93LWhvdmVyKTtcbiAgICAgICRzdG9wLWdyYWRpZW50LWhvdmVyOiBncmF5c2NhbGUoJHN0b3AtZ3JhZGllbnQtaG92ZXIpO1xuICAgIH1cblxuICAgIEBpbmNsdWRlIGxpbmVhci1ncmFkaWVudCAoJGJhc2UtY29sb3ItaG92ZXIsICRzdG9wLWdyYWRpZW50LWhvdmVyKTtcblxuICAgIGJveC1zaGFkb3c6IGluc2V0IDAgMXB4IDAgMCAkaW5zZXQtc2hhZG93LWhvdmVyO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgfVxuXG4gICY6YWN0aXZlOm5vdCg6ZGlzYWJsZWQpLFxuICAmOmZvY3VzOm5vdCg6ZGlzYWJsZWQpIHtcbiAgICAkYm9yZGVyLWFjdGl2ZTogICAgICAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkc2F0dXJhdGlvbjogOSUsICRsaWdodG5lc3M6IC0xNCUpO1xuICAgICRpbnNldC1zaGFkb3ctYWN0aXZlOiBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRzYXR1cmF0aW9uOiA3JSwgJGxpZ2h0bmVzczogLTE3JSk7XG5cbiAgICBAaWYgJGdyYXlzY2FsZSA9PSB0cnVlIHtcbiAgICAgICRib3JkZXItYWN0aXZlOiAgICAgICBncmF5c2NhbGUoJGJvcmRlci1hY3RpdmUpO1xuICAgICAgJGluc2V0LXNoYWRvdy1hY3RpdmU6IGdyYXlzY2FsZSgkaW5zZXQtc2hhZG93LWFjdGl2ZSk7XG4gICAgfVxuXG4gICAgYm9yZGVyOiAxcHggc29saWQgJGJvcmRlci1hY3RpdmU7XG4gICAgYm94LXNoYWRvdzogaW5zZXQgMCAwIDhweCA0cHggJGluc2V0LXNoYWRvdy1hY3RpdmUsIGluc2V0IDAgMCA4cHggNHB4ICRpbnNldC1zaGFkb3ctYWN0aXZlO1xuICB9XG59XG5cbi8vIFNoaW55IEJ1dHRvblxuQG1peGluIHNoaW55KCRiYXNlLWNvbG9yLCAkZ3JheXNjYWxlOiBmYWxzZSwgJHRleHRzaXplOiBpbmhlcml0LCAkcGFkZGluZzogN3B4IDE4cHgpIHtcbiAgJGNvbG9yOiAgICAgICAgIGhzbCgwLCAwLCAxMDAlKTtcbiAgJGJvcmRlcjogICAgICAgIGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJHJlZDogLTExNywgJGdyZWVuOiAtMTExLCAkYmx1ZTogLTgxKTtcbiAgJGJvcmRlci1ib3R0b206IGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJHJlZDogLTEyNiwgJGdyZWVuOiAtMTI3LCAkYmx1ZTogLTEyMik7XG4gICRmb3VydGgtc3RvcDogICBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRyZWQ6IC03OSwgICRncmVlbjogLTcwLCAgJGJsdWU6IC00Nik7XG4gICRpbnNldC1zaGFkb3c6ICBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRyZWQ6ICAzNywgICRncmVlbjogIDI5LCAgJGJsdWU6ICAxMik7XG4gICRzZWNvbmQtc3RvcDogICBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRyZWQ6IC01NiwgICRncmVlbjogLTUwLCAgJGJsdWU6IC0zMyk7XG4gICR0ZXh0LXNoYWRvdzogICBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRyZWQ6IC0xNDAsICRncmVlbjogLTE0MSwgJGJsdWU6IC0xMTQpO1xuICAkdGhpcmQtc3RvcDogICAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkcmVkOiAtODYsICAkZ3JlZW46IC03NSwgICRibHVlOiAtNDgpO1xuXG4gIEBpZiBpcy1saWdodCgkYmFzZS1jb2xvcikge1xuICAgICRjb2xvcjogICAgICAgaHNsKDAsIDAsIDIwJSk7XG4gICAgJHRleHQtc2hhZG93OiBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRzYXR1cmF0aW9uOiAxMCUsICRsaWdodG5lc3M6IDQlKTtcbiAgfVxuXG4gIEBpZiAkZ3JheXNjYWxlID09IHRydWUge1xuICAgICRib3JkZXI6ICAgICAgICBncmF5c2NhbGUoJGJvcmRlcik7XG4gICAgJGJvcmRlci1ib3R0b206IGdyYXlzY2FsZSgkYm9yZGVyLWJvdHRvbSk7XG4gICAgJGZvdXJ0aC1zdG9wOiAgIGdyYXlzY2FsZSgkZm91cnRoLXN0b3ApO1xuICAgICRpbnNldC1zaGFkb3c6ICBncmF5c2NhbGUoJGluc2V0LXNoYWRvdyk7XG4gICAgJHNlY29uZC1zdG9wOiAgIGdyYXlzY2FsZSgkc2Vjb25kLXN0b3ApO1xuICAgICR0ZXh0LXNoYWRvdzogICBncmF5c2NhbGUoJHRleHQtc2hhZG93KTtcbiAgICAkdGhpcmQtc3RvcDogICAgZ3JheXNjYWxlKCR0aGlyZC1zdG9wKTtcbiAgfVxuXG4gIEBpbmNsdWRlIGxpbmVhci1ncmFkaWVudCh0b3AsICRiYXNlLWNvbG9yIDAlLCAkc2Vjb25kLXN0b3AgNTAlLCAkdGhpcmQtc3RvcCA1MCUsICRmb3VydGgtc3RvcCAxMDAlKTtcblxuICBib3JkZXI6IDFweCBzb2xpZCAkYm9yZGVyO1xuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJGJvcmRlci1ib3R0b207XG4gIGJvcmRlci1yYWRpdXM6IDVweDtcbiAgYm94LXNoYWRvdzogaW5zZXQgMCAxcHggMCAwICRpbnNldC1zaGFkb3c7XG4gIGNvbG9yOiAkY29sb3I7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgZm9udC1zaXplOiAkdGV4dHNpemU7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xuICBwYWRkaW5nOiAkcGFkZGluZztcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIHRleHQtc2hhZG93OiAwIC0xcHggMXB4ICR0ZXh0LXNoYWRvdztcblxuICAmOmhvdmVyOm5vdCg6ZGlzYWJsZWQpIHtcbiAgICAkZmlyc3Qtc3RvcC1ob3ZlcjogIGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJHJlZDogLTEzLCAkZ3JlZW46IC0xNSwgJGJsdWU6IC0xOCk7XG4gICAgJHNlY29uZC1zdG9wLWhvdmVyOiBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRyZWQ6IC02NiwgJGdyZWVuOiAtNjIsICRibHVlOiAtNTEpO1xuICAgICR0aGlyZC1zdG9wLWhvdmVyOiAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkcmVkOiAtOTMsICRncmVlbjogLTg1LCAkYmx1ZTogLTY2KTtcbiAgICAkZm91cnRoLXN0b3AtaG92ZXI6IGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJHJlZDogLTg2LCAkZ3JlZW46IC04MCwgJGJsdWU6IC02Myk7XG5cbiAgICBAaWYgJGdyYXlzY2FsZSA9PSB0cnVlIHtcbiAgICAgICRmaXJzdC1zdG9wLWhvdmVyOiAgZ3JheXNjYWxlKCRmaXJzdC1zdG9wLWhvdmVyKTtcbiAgICAgICRzZWNvbmQtc3RvcC1ob3ZlcjogZ3JheXNjYWxlKCRzZWNvbmQtc3RvcC1ob3Zlcik7XG4gICAgICAkdGhpcmQtc3RvcC1ob3ZlcjogIGdyYXlzY2FsZSgkdGhpcmQtc3RvcC1ob3Zlcik7XG4gICAgICAkZm91cnRoLXN0b3AtaG92ZXI6IGdyYXlzY2FsZSgkZm91cnRoLXN0b3AtaG92ZXIpO1xuICAgIH1cblxuICAgIEBpbmNsdWRlIGxpbmVhci1ncmFkaWVudCh0b3AsICRmaXJzdC1zdG9wLWhvdmVyICAwJSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2Vjb25kLXN0b3AtaG92ZXIgNTAlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aGlyZC1zdG9wLWhvdmVyICA1MCUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGZvdXJ0aC1zdG9wLWhvdmVyIDEwMCUpO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgfVxuXG4gICY6YWN0aXZlOm5vdCg6ZGlzYWJsZWQpLFxuICAmOmZvY3VzOm5vdCg6ZGlzYWJsZWQpIHtcbiAgICAkaW5zZXQtc2hhZG93LWFjdGl2ZTogYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkcmVkOiAtMTExLCAkZ3JlZW46IC0xMTYsICRibHVlOiAtMTIyKTtcblxuICAgIEBpZiAkZ3JheXNjYWxlID09IHRydWUge1xuICAgICAgJGluc2V0LXNoYWRvdy1hY3RpdmU6IGdyYXlzY2FsZSgkaW5zZXQtc2hhZG93LWFjdGl2ZSk7XG4gICAgfVxuXG4gICAgYm94LXNoYWRvdzogaW5zZXQgMCAwIDIwcHggMCAkaW5zZXQtc2hhZG93LWFjdGl2ZTtcbiAgfVxufVxuXG4vLyBQaWxsIEJ1dHRvblxuQG1peGluIHBpbGwoJGJhc2UtY29sb3IsICRncmF5c2NhbGU6IGZhbHNlLCAkdGV4dHNpemU6IGluaGVyaXQsICRwYWRkaW5nOiA3cHggMThweCkge1xuICAkY29sb3I6ICAgICAgICAgaHNsKDAsIDAsIDEwMCUpO1xuICAkYm9yZGVyLWJvdHRvbTogYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkaHVlOiAgOCwgJHNhdHVyYXRpb246IC0xMSUsICRsaWdodG5lc3M6IC0yNiUpO1xuICAkYm9yZGVyLXNpZGVzOiAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkaHVlOiAgNCwgJHNhdHVyYXRpb246IC0yMSUsICRsaWdodG5lc3M6IC0yMSUpO1xuICAkYm9yZGVyLXRvcDogICAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkaHVlOiAtMSwgJHNhdHVyYXRpb246IC0zMCUsICRsaWdodG5lc3M6IC0xNSUpO1xuICAkaW5zZXQtc2hhZG93OiAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkaHVlOiAtMSwgJHNhdHVyYXRpb246IC0xJSwgICRsaWdodG5lc3M6ICA3JSk7XG4gICRzdG9wLWdyYWRpZW50OiBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRodWU6ICA4LCAkc2F0dXJhdGlvbjogIDE0JSwgJGxpZ2h0bmVzczogLTEwJSk7XG4gICR0ZXh0LXNoYWRvdzogICBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRodWU6ICA1LCAkc2F0dXJhdGlvbjogLTE5JSwgJGxpZ2h0bmVzczogLTE1JSk7XG5cbiAgQGlmIGlzLWxpZ2h0KCRiYXNlLWNvbG9yKSB7XG4gICAgJGNvbG9yOiAgICAgICBoc2woMCwgMCwgMjAlKTtcbiAgICAkdGV4dC1zaGFkb3c6IGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJHNhdHVyYXRpb246IDEwJSwgJGxpZ2h0bmVzczogNCUpO1xuICB9XG5cbiAgQGlmICRncmF5c2NhbGUgPT0gdHJ1ZSB7XG4gICAgJGJvcmRlci1ib3R0b206IGdyYXlzY2FsZSgkYm9yZGVyLWJvdHRvbSk7XG4gICAgJGJvcmRlci1zaWRlczogIGdyYXlzY2FsZSgkYm9yZGVyLXNpZGVzKTtcbiAgICAkYm9yZGVyLXRvcDogICAgZ3JheXNjYWxlKCRib3JkZXItdG9wKTtcbiAgICAkaW5zZXQtc2hhZG93OiAgZ3JheXNjYWxlKCRpbnNldC1zaGFkb3cpO1xuICAgICRzdG9wLWdyYWRpZW50OiBncmF5c2NhbGUoJHN0b3AtZ3JhZGllbnQpO1xuICAgICR0ZXh0LXNoYWRvdzogICBncmF5c2NhbGUoJHRleHQtc2hhZG93KTtcbiAgfVxuXG4gIGJvcmRlcjogMXB4IHNvbGlkICRib3JkZXItdG9wO1xuICBib3JkZXItY29sb3I6ICRib3JkZXItdG9wICRib3JkZXItc2lkZXMgJGJvcmRlci1ib3R0b207XG4gIGJvcmRlci1yYWRpdXM6IDE2cHg7XG4gIGJveC1zaGFkb3c6IGluc2V0IDAgMXB4IDAgMCAkaW5zZXQtc2hhZG93O1xuICBjb2xvcjogJGNvbG9yO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIGZvbnQtc2l6ZTogJHRleHRzaXplO1xuICBmb250LXdlaWdodDogbm9ybWFsO1xuICBsaW5lLWhlaWdodDogMTtcbiAgQGluY2x1ZGUgbGluZWFyLWdyYWRpZW50ICgkYmFzZS1jb2xvciwgJHN0b3AtZ3JhZGllbnQpO1xuICBwYWRkaW5nOiAkcGFkZGluZztcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIHRleHQtc2hhZG93OiAwIC0xcHggMXB4ICR0ZXh0LXNoYWRvdztcbiAgYmFja2dyb3VuZC1jbGlwOiBwYWRkaW5nLWJveDtcblxuICAmOmhvdmVyOm5vdCg6ZGlzYWJsZWQpIHtcbiAgICAkYmFzZS1jb2xvci1ob3ZlcjogICAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGxpZ2h0bmVzczogLTQuNSUpO1xuICAgICRib3JkZXItYm90dG9tOiAgICAgICBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRodWU6ICA4LCAkc2F0dXJhdGlvbjogIDEzLjUlLCAkbGlnaHRuZXNzOiAtMzIlKTtcbiAgICAkYm9yZGVyLXNpZGVzOiAgICAgICAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkaHVlOiAgNCwgJHNhdHVyYXRpb246IC0yJSwgICAgJGxpZ2h0bmVzczogLTI3JSk7XG4gICAgJGJvcmRlci10b3A6ICAgICAgICAgIGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJGh1ZTogLTEsICRzYXR1cmF0aW9uOiAtMTclLCAgICRsaWdodG5lc3M6IC0yMSUpO1xuICAgICRpbnNldC1zaGFkb3ctaG92ZXI6ICBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICAgICAgICAgICAkc2F0dXJhdGlvbjogLTElLCAgICAkbGlnaHRuZXNzOiAgMyUpO1xuICAgICRzdG9wLWdyYWRpZW50LWhvdmVyOiBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRodWU6ICA4LCAkc2F0dXJhdGlvbjogLTQlLCAgICAkbGlnaHRuZXNzOiAtMTUuNSUpO1xuICAgICR0ZXh0LXNoYWRvdy1ob3ZlcjogICBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRodWU6ICA1LCAkc2F0dXJhdGlvbjogLTUlLCAgICAkbGlnaHRuZXNzOiAtMjIlKTtcblxuICAgIEBpZiAkZ3JheXNjYWxlID09IHRydWUge1xuICAgICAgJGJhc2UtY29sb3ItaG92ZXI6ICAgIGdyYXlzY2FsZSgkYmFzZS1jb2xvci1ob3Zlcik7XG4gICAgICAkYm9yZGVyLWJvdHRvbTogICAgICAgZ3JheXNjYWxlKCRib3JkZXItYm90dG9tKTtcbiAgICAgICRib3JkZXItc2lkZXM6ICAgICAgICBncmF5c2NhbGUoJGJvcmRlci1zaWRlcyk7XG4gICAgICAkYm9yZGVyLXRvcDogICAgICAgICAgZ3JheXNjYWxlKCRib3JkZXItdG9wKTtcbiAgICAgICRpbnNldC1zaGFkb3ctaG92ZXI6ICBncmF5c2NhbGUoJGluc2V0LXNoYWRvdy1ob3Zlcik7XG4gICAgICAkc3RvcC1ncmFkaWVudC1ob3ZlcjogZ3JheXNjYWxlKCRzdG9wLWdyYWRpZW50LWhvdmVyKTtcbiAgICAgICR0ZXh0LXNoYWRvdy1ob3ZlcjogICBncmF5c2NhbGUoJHRleHQtc2hhZG93LWhvdmVyKTtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBsaW5lYXItZ3JhZGllbnQgKCRiYXNlLWNvbG9yLWhvdmVyLCAkc3RvcC1ncmFkaWVudC1ob3Zlcik7XG5cbiAgICBiYWNrZ3JvdW5kLWNsaXA6IHBhZGRpbmctYm94O1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICRib3JkZXItdG9wO1xuICAgIGJvcmRlci1jb2xvcjogJGJvcmRlci10b3AgJGJvcmRlci1zaWRlcyAkYm9yZGVyLWJvdHRvbTtcbiAgICBib3gtc2hhZG93OiBpbnNldCAwIDFweCAwIDAgJGluc2V0LXNoYWRvdy1ob3ZlcjtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgdGV4dC1zaGFkb3c6IDAgLTFweCAxcHggJHRleHQtc2hhZG93LWhvdmVyO1xuICB9XG5cbiAgJjphY3RpdmU6bm90KDpkaXNhYmxlZCksXG4gICY6Zm9jdXM6bm90KDpkaXNhYmxlZCkge1xuICAgICRhY3RpdmUtY29sb3I6ICAgICAgICAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkaHVlOiA0LCAgJHNhdHVyYXRpb246IC0xMiUsICAkbGlnaHRuZXNzOiAtMTAlKTtcbiAgICAkYm9yZGVyLWFjdGl2ZTogICAgICAgIGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJGh1ZTogNiwgICRzYXR1cmF0aW9uOiAtMi41JSwgJGxpZ2h0bmVzczogLTMwJSk7XG4gICAgJGJvcmRlci1ib3R0b20tYWN0aXZlOiBhZGp1c3QtY29sb3IoJGJhc2UtY29sb3IsICRodWU6IDExLCAkc2F0dXJhdGlvbjogIDYlLCAgICRsaWdodG5lc3M6IC0zMSUpO1xuICAgICRpbnNldC1zaGFkb3ctYWN0aXZlOiAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkaHVlOiA5LCAgJHNhdHVyYXRpb246ICAyJSwgICAkbGlnaHRuZXNzOiAtMjEuNSUpO1xuICAgICR0ZXh0LXNoYWRvdy1hY3RpdmU6ICAgYWRqdXN0LWNvbG9yKCRiYXNlLWNvbG9yLCAkaHVlOiA1LCAgJHNhdHVyYXRpb246IC0xMiUsICAkbGlnaHRuZXNzOiAtMjEuNSUpO1xuXG4gICAgQGlmICRncmF5c2NhbGUgPT0gdHJ1ZSB7XG4gICAgICAkYWN0aXZlLWNvbG9yOiAgICAgICAgIGdyYXlzY2FsZSgkYWN0aXZlLWNvbG9yKTtcbiAgICAgICRib3JkZXItYWN0aXZlOiAgICAgICAgZ3JheXNjYWxlKCRib3JkZXItYWN0aXZlKTtcbiAgICAgICRib3JkZXItYm90dG9tLWFjdGl2ZTogZ3JheXNjYWxlKCRib3JkZXItYm90dG9tLWFjdGl2ZSk7XG4gICAgICAkaW5zZXQtc2hhZG93LWFjdGl2ZTogIGdyYXlzY2FsZSgkaW5zZXQtc2hhZG93LWFjdGl2ZSk7XG4gICAgICAkdGV4dC1zaGFkb3ctYWN0aXZlOiAgIGdyYXlzY2FsZSgkdGV4dC1zaGFkb3ctYWN0aXZlKTtcbiAgICB9XG5cbiAgICBiYWNrZ3JvdW5kOiAkYWN0aXZlLWNvbG9yO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICRib3JkZXItYWN0aXZlO1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkYm9yZGVyLWJvdHRvbS1hY3RpdmU7XG4gICAgYm94LXNoYWRvdzogaW5zZXQgMCAwIDZweCAzcHggJGluc2V0LXNoYWRvdy1hY3RpdmU7XG4gICAgdGV4dC1zaGFkb3c6IDAgLTFweCAxcHggJHRleHQtc2hhZG93LWFjdGl2ZTtcbiAgfVxufVxuXG4vLyBGbGF0IEJ1dHRvblxuQG1peGluIGZsYXQoJGJhc2UtY29sb3IsICRncmF5c2NhbGU6IGZhbHNlLCAkdGV4dHNpemU6IGluaGVyaXQsICRwYWRkaW5nOiA3cHggMThweCkge1xuICAkY29sb3I6ICAgICAgICAgaHNsKDAsIDAsIDEwMCUpO1xuXG4gIEBpZiBpcy1saWdodCgkYmFzZS1jb2xvcikge1xuICAgICRjb2xvcjogICAgICAgaHNsKDAsIDAsIDIwJSk7XG4gIH1cblxuICBiYWNrZ3JvdW5kLWNvbG9yOiAkYmFzZS1jb2xvcjtcbiAgYm9yZGVyLXJhZGl1czogM3B4O1xuICBib3JkZXI6IDA7XG4gIGNvbG9yOiAkY29sb3I7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgZm9udC1zaXplOiAkdGV4dHNpemU7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xuICBwYWRkaW5nOiAkcGFkZGluZztcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICBiYWNrZ3JvdW5kLWNsaXA6IHBhZGRpbmctYm94O1xuXG4gICY6aG92ZXI6bm90KDpkaXNhYmxlZCl7XG4gICAgJGJhc2UtY29sb3ItaG92ZXI6ICAgIGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJHNhdHVyYXRpb246IDQlLCAkbGlnaHRuZXNzOiA1JSk7XG5cbiAgICBAaWYgJGdyYXlzY2FsZSA9PSB0cnVlIHtcbiAgICAgICRiYXNlLWNvbG9yLWhvdmVyOiBncmF5c2NhbGUoJGJhc2UtY29sb3ItaG92ZXIpO1xuICAgIH1cblxuICAgIGJhY2tncm91bmQtY29sb3I6ICRiYXNlLWNvbG9yLWhvdmVyO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgfVxuXG4gICY6YWN0aXZlOm5vdCg6ZGlzYWJsZWQpLFxuICAmOmZvY3VzOm5vdCg6ZGlzYWJsZWQpIHtcbiAgICAkYmFzZS1jb2xvci1hY3RpdmU6IGFkanVzdC1jb2xvcigkYmFzZS1jb2xvciwgJHNhdHVyYXRpb246IC00JSwgJGxpZ2h0bmVzczogLTUlKTtcblxuICAgIEBpZiAkZ3JheXNjYWxlID09IHRydWUge1xuICAgICAgJGJhc2UtY29sb3ItYWN0aXZlOiBncmF5c2NhbGUoJGJhc2UtY29sb3ItYWN0aXZlKTtcbiAgICB9XG5cbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYmFzZS1jb2xvci1hY3RpdmU7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICB9XG59XG5cbi8vIEZsZXhpYmxlIGdyaWRcbkBmdW5jdGlvbiBmbGV4LWdyaWQoJGNvbHVtbnMsICRjb250YWluZXItY29sdW1uczogJGZnLW1heC1jb2x1bW5zKSB7XG4gIEBpZiAkb3V0cHV0LWJvdXJib24tZGVwcmVjYXRpb24td2FybmluZ3MgPT0gdHJ1ZSB7XG4gICAgQHdhcm4gXCJbQm91cmJvbl0gW0RlcHJlY2F0aW9uXSBgZmxleC1ncmlkYCBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIFwiICtcbiAgICBcInJlbW92ZWQgaW4gNS4wLjAuIEZvciBncmlkIGZ1bmN0aW9ucywgY2hlY2sgb3V0IEJvdXJib24ncyBzaXN0ZXIgbGlicmFyeVwiICtcbiAgICBcIk5lYXQuXCI7XG4gIH1cblxuICAkd2lkdGg6ICRjb2x1bW5zICogJGZnLWNvbHVtbiArICgkY29sdW1ucyAtIDEpICogJGZnLWd1dHRlcjtcbiAgJGNvbnRhaW5lci13aWR0aDogJGNvbnRhaW5lci1jb2x1bW5zICogJGZnLWNvbHVtbiArICgkY29udGFpbmVyLWNvbHVtbnMgLSAxKSAqICRmZy1ndXR0ZXI7XG4gIEByZXR1cm4gcGVyY2VudGFnZSgkd2lkdGggLyAkY29udGFpbmVyLXdpZHRoKTtcbn1cblxuLy8gRmxleGlibGUgZ3V0dGVyXG5AZnVuY3Rpb24gZmxleC1ndXR0ZXIoJGNvbnRhaW5lci1jb2x1bW5zOiAkZmctbWF4LWNvbHVtbnMsICRndXR0ZXI6ICRmZy1ndXR0ZXIpIHtcbiAgQGlmICRvdXRwdXQtYm91cmJvbi1kZXByZWNhdGlvbi13YXJuaW5ncyA9PSB0cnVlIHtcbiAgICBAd2FybiBcIltCb3VyYm9uXSBbRGVwcmVjYXRpb25dIGBmbGV4LWd1dHRlcmAgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSBcIiArXG4gICAgXCJyZW1vdmVkIGluIDUuMC4wLiBGb3IgZ3JpZCBmdW5jdGlvbnMsIGNoZWNrIG91dCBCb3VyYm9uJ3Mgc2lzdGVyIGxpYnJhcnlcIiArXG4gICAgXCJOZWF0LlwiO1xuICB9XG5cbiAgJGNvbnRhaW5lci13aWR0aDogJGNvbnRhaW5lci1jb2x1bW5zICogJGZnLWNvbHVtbiArICgkY29udGFpbmVyLWNvbHVtbnMgLSAxKSAqICRmZy1ndXR0ZXI7XG4gIEByZXR1cm4gcGVyY2VudGFnZSgkZ3V0dGVyIC8gJGNvbnRhaW5lci13aWR0aCk7XG59XG5cbkBmdW5jdGlvbiBncmlkLXdpZHRoKCRuKSB7XG4gIEBpZiAkb3V0cHV0LWJvdXJib24tZGVwcmVjYXRpb24td2FybmluZ3MgPT0gdHJ1ZSB7XG4gICAgQHdhcm4gXCJbQm91cmJvbl0gW0RlcHJlY2F0aW9uXSBgZ3JpZC13aWR0aGAgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSBcIiArXG4gICAgXCJyZW1vdmVkIGluIDUuMC4wLiBGb3IgZ3JpZCBmdW5jdGlvbnMsIGNoZWNrIG91dCBCb3VyYm9uJ3Mgc2lzdGVyIGxpYnJhcnlcIiArXG4gICAgXCJOZWF0LlwiO1xuICB9XG5cbiAgQHJldHVybiAkbiAqICRndy1jb2x1bW4gKyAoJG4gLSAxKSAqICRndy1ndXR0ZXI7XG59XG5cbkBmdW5jdGlvbiBnb2xkZW4tcmF0aW8oJHZhbHVlLCAkaW5jcmVtZW50KSB7XG4gIEBpZiAkb3V0cHV0LWJvdXJib24tZGVwcmVjYXRpb24td2FybmluZ3MgPT0gdHJ1ZSB7XG4gICAgQHdhcm4gXCJbQm91cmJvbl0gW0RlcHJlY2F0aW9uXSBgZ29sZGVuLXJhdGlvYCBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIFwiICtcbiAgICBcInJlbW92ZWQgaW4gNS4wLjAuIFlvdSBjYW4gdXNlIHRoZSBgbW9kdWxhci1zY2FsZWAgZnVuY3Rpb24gaW5zdGVhZC5cIjtcbiAgfVxuXG4gIEByZXR1cm4gbW9kdWxhci1zY2FsZSgkaW5jcmVtZW50LCAkdmFsdWUsICRyYXRpbzogJGdvbGRlbik7XG59XG5cbkBtaXhpbiBib3gtc2l6aW5nKCRib3gpIHtcbiAgQGluY2x1ZGUgX2JvdXJib24tZGVwcmVjYXRlLWZvci1wcmVmaXhpbmcoXCJib3gtc2l6aW5nXCIpO1xuXG4gIEBpbmNsdWRlIHByZWZpeGVyKGJveC1zaXppbmcsICRib3gsIHdlYmtpdCBtb3ogc3BlYyk7XG59XG4iLCIvLyBOZWF0IDEuNy4yXG4vLyBodHRwOi8vbmVhdC5ib3VyYm9uLmlvXG4vLyBDb3B5cmlnaHQgMjAxMi0yMDE1IHRob3VnaHRib3QsIGluYy5cbi8vIE1JVCBMaWNlbnNlXG5cbi8vIEhlbHBlcnNcbkBpbXBvcnQgXCJuZWF0LWhlbHBlcnNcIjtcblxuLy8gR3JpZFxuQGltcG9ydCBcImdyaWQvcHJpdmF0ZVwiO1xuQGltcG9ydCBcImdyaWQvYm94LXNpemluZ1wiO1xuQGltcG9ydCBcImdyaWQvb21lZ2FcIjtcbkBpbXBvcnQgXCJncmlkL291dGVyLWNvbnRhaW5lclwiO1xuQGltcG9ydCBcImdyaWQvc3Bhbi1jb2x1bW5zXCI7XG5AaW1wb3J0IFwiZ3JpZC9yb3dcIjtcbkBpbXBvcnQgXCJncmlkL3NoaWZ0XCI7XG5AaW1wb3J0IFwiZ3JpZC9wYWRcIjtcbkBpbXBvcnQgXCJncmlkL2ZpbGwtcGFyZW50XCI7XG5AaW1wb3J0IFwiZ3JpZC9tZWRpYVwiO1xuQGltcG9ydCBcImdyaWQvdG8tZGVwcmVjYXRlXCI7XG5AaW1wb3J0IFwiZ3JpZC92aXN1YWwtZ3JpZFwiO1xuQGltcG9ydCBcImdyaWQvZGlzcGxheS1jb250ZXh0XCI7XG5AaW1wb3J0IFwiZ3JpZC9kaXJlY3Rpb24tY29udGV4dFwiO1xuIiwiLy8gRnVuY3Rpb25zXG5AaW1wb3J0IFwiZnVuY3Rpb25zL3ByaXZhdGVcIjtcbkBpbXBvcnQgXCJmdW5jdGlvbnMvbmV3LWJyZWFrcG9pbnRcIjtcblxuLy8gU2V0dGluZ3NcbkBpbXBvcnQgXCJzZXR0aW5ncy9ncmlkXCI7XG5AaW1wb3J0IFwic2V0dGluZ3MvdmlzdWFsLWdyaWRcIjtcbkBpbXBvcnQgXCJzZXR0aW5ncy9kaXNhYmxlLXdhcm5pbmdzXCI7XG4iLCIvLyBOb3QgZnVuY3Rpb24gZm9yIExpYnNhc3MgY29tcGF0aWJpbGl0eVxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3Nhc3MvbGlic2Fzcy9pc3N1ZXMvMzY4XG5AZnVuY3Rpb24gaXMtbm90KCR2YWx1ZSkge1xuICBAcmV0dXJuIGlmKCR2YWx1ZSwgZmFsc2UsIHRydWUpO1xufVxuXG4vLyBDaGVja3MgaWYgYSBudW1iZXIgaXMgZXZlblxuQGZ1bmN0aW9uIGlzLWV2ZW4oJGludCkge1xuICBAcmV0dXJuICRpbnQgJSAyID09IDA7XG59XG5cbi8vIENoZWNrcyBpZiBhbiBlbGVtZW50IGJlbG9uZ3MgdG8gYSBsaXN0IG9yIG5vdFxuQGZ1bmN0aW9uIGJlbG9uZ3MtdG8oJHRlc3RlZC1pdGVtLCAkbGlzdCkge1xuICBAcmV0dXJuIGlzLW5vdChub3QtYmVsb25ncy10bygkdGVzdGVkLWl0ZW0sICRsaXN0KSk7XG59XG5cbkBmdW5jdGlvbiBub3QtYmVsb25ncy10bygkdGVzdGVkLWl0ZW0sICRsaXN0KSB7XG4gIEByZXR1cm4gaXMtbm90KGluZGV4KCRsaXN0LCAkdGVzdGVkLWl0ZW0pKTtcbn1cblxuLy8gQ29udGFpbnMgZGlzcGxheSB2YWx1ZVxuQGZ1bmN0aW9uIGNvbnRhaW5zLWRpc3BsYXktdmFsdWUoJHF1ZXJ5KSB7XG4gIEByZXR1cm4gYmVsb25ncy10byh0YWJsZSwgJHF1ZXJ5KVxuICAgICAgIG9yIGJlbG9uZ3MtdG8oYmxvY2ssICRxdWVyeSlcbiAgICAgICBvciBiZWxvbmdzLXRvKGlubGluZS1ibG9jaywgJHF1ZXJ5KVxuICAgICAgIG9yIGJlbG9uZ3MtdG8oaW5saW5lLCAkcXVlcnkpO1xufVxuXG4vLyBQYXJzZXMgdGhlIGZpcnN0IGFyZ3VtZW50IG9mIHNwYW4tY29sdW1ucygpXG5AZnVuY3Rpb24gY29udGFpbmVyLXNwYW4oJHNwYW46ICRzcGFuKSB7XG4gIEBpZiBsZW5ndGgoJHNwYW4pID09IDMge1xuICAgICRjb250YWluZXItY29sdW1uczogbnRoKCRzcGFuLCAzKTtcbiAgICBAcmV0dXJuICRjb250YWluZXItY29sdW1ucztcbiAgfSBAZWxzZSBpZiBsZW5ndGgoJHNwYW4pID09IDIge1xuICAgICRjb250YWluZXItY29sdW1uczogbnRoKCRzcGFuLCAyKTtcbiAgICBAcmV0dXJuICRjb250YWluZXItY29sdW1ucztcbiAgfVxuXG4gIEByZXR1cm4gJGdyaWQtY29sdW1ucztcbn1cblxuQGZ1bmN0aW9uIGNvbnRhaW5lci1zaGlmdCgkc2hpZnQ6ICRzaGlmdCkge1xuICAkcGFyZW50LWNvbHVtbnM6ICRncmlkLWNvbHVtbnMgIWRlZmF1bHQgIWdsb2JhbDtcblxuICBAaWYgbGVuZ3RoKCRzaGlmdCkgPT0gMyB7XG4gICAgJGNvbnRhaW5lci1jb2x1bW5zOiBudGgoJHNoaWZ0LCAzKTtcbiAgICBAcmV0dXJuICRjb250YWluZXItY29sdW1ucztcbiAgfSBAZWxzZSBpZiBsZW5ndGgoJHNoaWZ0KSA9PSAyIHtcbiAgICAkY29udGFpbmVyLWNvbHVtbnM6IG50aCgkc2hpZnQsIDIpO1xuICAgIEByZXR1cm4gJGNvbnRhaW5lci1jb2x1bW5zO1xuICB9XG5cbiAgQHJldHVybiAkcGFyZW50LWNvbHVtbnM7XG59XG5cbi8vIEdlbmVyYXRlcyBhIHN0cmlwZWQgYmFja2dyb3VuZFxuQGZ1bmN0aW9uIGdyYWRpZW50LXN0b3BzKCRncmlkLWNvbHVtbnMsICRjb2xvcjogJHZpc3VhbC1ncmlkLWNvbG9yKSB7XG4gICR0cmFuc3BhcmVudDogdHJhbnNwYXJlbnQ7XG5cbiAgJGNvbHVtbi13aWR0aDogZmxleC1ncmlkKDEsICRncmlkLWNvbHVtbnMpO1xuICAkZ3V0dGVyLXdpZHRoOiBmbGV4LWd1dHRlcigkZ3JpZC1jb2x1bW5zKTtcbiAgJGNvbHVtbi1vZmZzZXQ6ICRjb2x1bW4td2lkdGg7XG5cbiAgJHZhbHVlczogKCR0cmFuc3BhcmVudCAwLCAkY29sb3IgMCk7XG5cbiAgQGZvciAkaSBmcm9tIDEgdG8gJGdyaWQtY29sdW1ucyoyIHtcbiAgICBAaWYgaXMtZXZlbigkaSkge1xuICAgICAgJHZhbHVlczogYXBwZW5kKCR2YWx1ZXMsICR0cmFuc3BhcmVudCAkY29sdW1uLW9mZnNldCwgY29tbWEpO1xuICAgICAgJHZhbHVlczogYXBwZW5kKCR2YWx1ZXMsICRjb2xvciAkY29sdW1uLW9mZnNldCwgY29tbWEpO1xuICAgICAgJGNvbHVtbi1vZmZzZXQ6ICRjb2x1bW4tb2Zmc2V0ICsgJGNvbHVtbi13aWR0aDtcbiAgICB9IEBlbHNlIHtcbiAgICAgICR2YWx1ZXM6IGFwcGVuZCgkdmFsdWVzLCAkY29sb3IgJGNvbHVtbi1vZmZzZXQsIGNvbW1hKTtcbiAgICAgICR2YWx1ZXM6IGFwcGVuZCgkdmFsdWVzLCAkdHJhbnNwYXJlbnQgJGNvbHVtbi1vZmZzZXQsIGNvbW1hKTtcbiAgICAgICRjb2x1bW4tb2Zmc2V0OiAkY29sdW1uLW9mZnNldCArICRndXR0ZXItd2lkdGg7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkdmFsdWVzO1xufVxuXG4vLyBMYXlvdXQgZGlyZWN0aW9uXG5AZnVuY3Rpb24gZ2V0LWRpcmVjdGlvbigkbGF5b3V0LCAkZGVmYXVsdCkge1xuICAkZGlyZWN0aW9uOiBudWxsO1xuXG4gIEBpZiB0by11cHBlci1jYXNlKCRsYXlvdXQpID09IFwiTFRSXCIgb3IgdG8tdXBwZXItY2FzZSgkbGF5b3V0KSA9PSBcIlJUTFwiIHtcbiAgICAkZGlyZWN0aW9uOiBkaXJlY3Rpb24tZnJvbS1sYXlvdXQoJGxheW91dCk7XG4gIH0gQGVsc2Uge1xuICAgICRkaXJlY3Rpb246IGRpcmVjdGlvbi1mcm9tLWxheW91dCgkZGVmYXVsdCk7XG4gIH1cblxuICBAcmV0dXJuICRkaXJlY3Rpb247XG59XG5cbkBmdW5jdGlvbiBkaXJlY3Rpb24tZnJvbS1sYXlvdXQoJGxheW91dCkge1xuICAkZGlyZWN0aW9uOiBudWxsO1xuXG4gIEBpZiB0by11cHBlci1jYXNlKCRsYXlvdXQpID09IFwiTFRSXCIge1xuICAgICRkaXJlY3Rpb246IHJpZ2h0O1xuICB9IEBlbHNlIHtcbiAgICAkZGlyZWN0aW9uOiBsZWZ0O1xuICB9XG5cbiAgQHJldHVybiAkZGlyZWN0aW9uO1xufVxuXG5AZnVuY3Rpb24gZ2V0LW9wcG9zaXRlLWRpcmVjdGlvbigkZGlyZWN0aW9uKSB7XG4gICRvcHBvc2l0ZS1kaXJlY3Rpb246IGxlZnQ7XG5cbiAgQGlmICRkaXJlY3Rpb24gPT0gXCJsZWZ0XCIge1xuICAgICRvcHBvc2l0ZS1kaXJlY3Rpb246IHJpZ2h0O1xuICB9XG5cbiAgQHJldHVybiAkb3Bwb3NpdGUtZGlyZWN0aW9uO1xufVxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuXG4vLy8gUmV0dXJucyBhIG1lZGlhIGNvbnRleHQgKG1lZGlhIHF1ZXJ5IC8gZ3JpZCBjb250ZXh0KSB0aGF0IGNhbiBiZSBzdG9yZWQgaW4gYSB2YXJpYWJsZSBhbmQgcGFzc2VkIHRvIGBtZWRpYSgpYCBhcyBhIHNpbmdsZS1rZXl3b3JkIGFyZ3VtZW50LiBNZWRpYSBjb250ZXh0cyBkZWZpbmVkIHVzaW5nIGBuZXctYnJlYWtwb2ludGAgYXJlIHVzZWQgYnkgdGhlIHZpc3VhbCBncmlkLCBhcyBsb25nIGFzIHRoZXkgYXJlIGRlZmluZWQgYmVmb3JlIGltcG9ydGluZyBOZWF0LlxuLy8vXG4vLy8gQHBhcmFtIHtMaXN0fSAkcXVlcnlcbi8vLyAgIEEgbGlzdCBvZiBtZWRpYSBxdWVyeSBmZWF0dXJlcyBhbmQgdmFsdWVzLiBFYWNoIGAkZmVhdHVyZWAgc2hvdWxkIGhhdmUgYSBjb3JyZXNwb25kaW5nIGAkdmFsdWVgLlxuLy8vXG4vLy8gICBJZiB0aGVyZSBpcyBvbmx5IGEgc2luZ2xlIGAkdmFsdWVgIGluIGAkcXVlcnlgLCBgJGRlZmF1bHQtZmVhdHVyZWAgaXMgZ29pbmcgdG8gYmUgdXNlZC5cbi8vL1xuLy8vICAgVGhlIG51bWJlciBvZiB0b3RhbCBjb2x1bW5zIGluIHRoZSBncmlkIGNhbiBiZSBzZXQgYnkgcGFzc2luZyBgJGNvbHVtbnNgIGF0IHRoZSBlbmQgb2YgdGhlIGxpc3QgKG92ZXJyaWRlcyBgJHRvdGFsLWNvbHVtbnNgKS4gRm9yIGEgbGlzdCBvZiB2YWxpZCB2YWx1ZXMgZm9yIGAkZmVhdHVyZWAsIGNsaWNrIFtoZXJlXShodHRwOi8vd3d3LnczLm9yZy9UUi9jc3MzLW1lZGlhcXVlcmllcy8jbWVkaWExKS5cbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyICh1bml0bGVzcyl9ICR0b3RhbC1jb2x1bW5zIFskZ3JpZC1jb2x1bW5zXVxuLy8vICAgLSBOdW1iZXIgb2YgY29sdW1ucyB0byB1c2UgaW4gdGhlIG5ldyBncmlkIGNvbnRleHQuIENhbiBiZSBzZXQgYXMgYSBzaG9ydGhhbmQgaW4gdGhlIGZpcnN0IHBhcmFtZXRlci5cbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBVc2FnZVxuLy8vICAgJG1vYmlsZTogbmV3LWJyZWFrcG9pbnQobWF4LXdpZHRoIDQ4MHB4IDQpO1xuLy8vXG4vLy8gICAuZWxlbWVudCB7XG4vLy8gICAgIEBpbmNsdWRlIG1lZGlhKCRtb2JpbGUpIHtcbi8vLyAgICAgICBAaW5jbHVkZSBzcGFuLWNvbHVtbnMoNCk7XG4vLy8gICAgIH1cbi8vLyAgIH1cbi8vL1xuLy8vIEBleGFtcGxlIGNzcyAtIENTUyBPdXRwdXRcbi8vLyAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDQ4MHB4KSB7XG4vLy8gICAgIC5lbGVtZW50IHtcbi8vLyAgICAgICBkaXNwbGF5OiBibG9jaztcbi8vLyAgICAgICBmbG9hdDogbGVmdDtcbi8vLyAgICAgICBtYXJnaW4tcmlnaHQ6IDcuNDIyOTclO1xuLy8vICAgICAgIHdpZHRoOiAxMDAlO1xuLy8vICAgICB9XG4vLy8gICAgIC5lbGVtZW50Omxhc3QtY2hpbGQge1xuLy8vICAgICAgIG1hcmdpbi1yaWdodDogMDtcbi8vLyAgICAgfVxuLy8vICAgfVxuXG5AZnVuY3Rpb24gbmV3LWJyZWFrcG9pbnQoJHF1ZXJ5OiAkZmVhdHVyZSAkdmFsdWUgJGNvbHVtbnMsICR0b3RhbC1jb2x1bW5zOiAkZ3JpZC1jb2x1bW5zKSB7XG4gIEBpZiBsZW5ndGgoJHF1ZXJ5KSA9PSAxIHtcbiAgICAkcXVlcnk6ICRkZWZhdWx0LWZlYXR1cmUgbnRoKCRxdWVyeSwgMSkgJHRvdGFsLWNvbHVtbnM7XG4gIH0gQGVsc2UgaWYgaXMtZXZlbihsZW5ndGgoJHF1ZXJ5KSkge1xuICAgICRxdWVyeTogYXBwZW5kKCRxdWVyeSwgJHRvdGFsLWNvbHVtbnMpO1xuICB9XG5cbiAgQGlmIGlzLW5vdChiZWxvbmdzLXRvKCRxdWVyeSwgJHZpc3VhbC1ncmlkLWJyZWFrcG9pbnRzKSkge1xuICAgICR2aXN1YWwtZ3JpZC1icmVha3BvaW50czogYXBwZW5kKCR2aXN1YWwtZ3JpZC1icmVha3BvaW50cywgJHF1ZXJ5LCBjb21tYSkgIWdsb2JhbDtcbiAgfVxuXG4gIEByZXR1cm4gJHF1ZXJ5O1xufVxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuXG4vLy8gU2V0cyB0aGUgcmVsYXRpdmUgd2lkdGggb2YgYSBzaW5nbGUgZ3JpZCBjb2x1bW4uIFRoZSB1bml0IHVzZWQgc2hvdWxkIGJlIHRoZSBzYW1lIG9uZSB1c2VkIHRvIGRlZmluZSBgJGd1dHRlcmAuIFRvIGxlYXJuIG1vcmUgYWJvdXQgbW9kdWxhci1zY2FsZSgpIHNlZSBbQm91cmJvbiBkb2NzXShodHRwOi8vYm91cmJvbi5pby9kb2NzLyNtb2R1bGFyLXNjYWxlKS4gU2V0IHdpdGggYSBgIWdsb2JhbGAgZmxhZy5cbi8vL1xuLy8vIEB0eXBlIE51bWJlciAoVW5pdClcblxuJGNvbHVtbjogbW9kdWxhci1zY2FsZSgzLCAxZW0sICRnb2xkZW4pICFkZWZhdWx0O1xuXG4vLy8gU2V0cyB0aGUgcmVsYXRpdmUgd2lkdGggb2YgYSBzaW5nbGUgZ3JpZCBndXR0ZXIuIFRoZSB1bml0IHVzZWQgc2hvdWxkIGJlIHRoZSBzYW1lIG9uZSB1c2VkIHRvIGRlZmluZSBgJGNvbHVtbmAuIFRvIGxlYXJuIG1vcmUgYWJvdXQgbW9kdWxhci1zY2FsZSgpIHNlZSBbQm91cmJvbiBkb2NzXShodHRwOi8vYm91cmJvbi5pby9kb2NzLyNtb2R1bGFyLXNjYWxlKS4gU2V0IHdpdGggdGhlIGAhZ2xvYmFsYCBmbGFnLlxuLy8vXG4vLy8gQHR5cGUgTnVtYmVyIChVbml0KVxuXG4kZ3V0dGVyOiBtb2R1bGFyLXNjYWxlKDEsIDFlbSwgJGdvbGRlbikgIWRlZmF1bHQ7XG5cbi8vLyBTZXRzIHRoZSB0b3RhbCBudW1iZXIgb2YgY29sdW1ucyBpbiB0aGUgZ3JpZC4gSXRzIHZhbHVlIGNhbiBiZSBvdmVycmlkZGVuIGluc2lkZSBhIG1lZGlhIHF1ZXJ5IHVzaW5nIHRoZSBgbWVkaWEoKWAgbWl4aW4uIFNldCB3aXRoIHRoZSBgIWdsb2JhbGAgZmxhZy5cbi8vL1xuLy8vIEB0eXBlIE51bWJlciAoVW5pdGxlc3MpXG5cbiRncmlkLWNvbHVtbnM6IDEyICFkZWZhdWx0O1xuXG4vLy8gU2V0cyB0aGUgbWF4LXdpZHRoIHByb3BlcnR5IG9mIHRoZSBlbGVtZW50IHRoYXQgaW5jbHVkZXMgYG91dGVyLWNvbnRhaW5lcigpYC4gVG8gbGVhcm4gbW9yZSBhYm91dCBgZW0oKWAgc2VlIFtCb3VyYm9uIGRvY3NdKGh0dHA6Ly9ib3VyYm9uLmlvL2RvY3MvI3B4LXRvLWVtKS4gU2V0IHdpdGggdGhlIGAhZ2xvYmFsYCBmbGFnLlxuLy8vXG4vLy8gQHR5cGUgTnVtYmVyIChVbml0KVxuLy8vXG4kbWF4LXdpZHRoOiBlbSgxMDg4KSAhZGVmYXVsdDtcblxuLy8vIFdoZW4gc2V0IHRvIHRydWUsIGl0IHNldHMgdGhlIGJveC1zaXppbmcgcHJvcGVydHkgb2YgYWxsIGVsZW1lbnRzIHRvIGBib3JkZXItYm94YC4gU2V0IHdpdGggYSBgIWdsb2JhbGAgZmxhZy5cbi8vL1xuLy8vIEB0eXBlIEJvb2xcbi8vL1xuLy8vIEBleGFtcGxlIGNzcyAtIENTUyBPdXRwdXRcbi8vLyAgIGh0bWwge1xuLy8vICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OyB9XG4vLy9cbi8vLyAgICosICo6OmFmdGVyLCAqOjpiZWZvcmUge1xuLy8vICAgICBib3gtc2l6aW5nOiBpbmhlcml0O1xuLy8vICAgfVxuXG4kYm9yZGVyLWJveC1zaXppbmc6IHRydWUgIWRlZmF1bHQ7XG5cbi8vLyBTZXRzIHRoZSBkZWZhdWx0IFttZWRpYSBmZWF0dXJlXShodHRwOi8vd3d3LnczLm9yZy9UUi9jc3MzLW1lZGlhcXVlcmllcy8jbWVkaWEpIHRoYXQgYG1lZGlhKClgIGFuZCBgbmV3LWJyZWFrcG9pbnQoKWAgcmV2ZXJ0IHRvIHdoZW4gb25seSBhIGJyZWFrcG9pbnQgdmFsdWUgaXMgcGFzc2VkLiBTZXQgd2l0aCBhIGAhZ2xvYmFsYCBmbGFnLlxuLy8vXG4vLy8gQHR5cGUgU3RyaW5nXG5cbiRkZWZhdWx0LWZlYXR1cmU6IG1pbi13aWR0aDsgLy8gRGVmYXVsdCBAbWVkaWEgZmVhdHVyZSBmb3IgdGhlIGJyZWFrcG9pbnQoKSBtaXhpblxuXG4vLy9TZXRzIHRoZSBkZWZhdWx0IGxheW91dCBkaXJlY3Rpb24gb2YgdGhlIGdyaWQuIENhbiBiZSBgTFRSYCBvciBgUlRMYC4gU2V0IHdpdGggYSBgIWdsb2JhbGAgZmxhZy5cbi8vL1xuLy8vQHR5cGUgU3RyaW5nXG5cbiRkZWZhdWx0LWxheW91dC1kaXJlY3Rpb246IExUUiAhZGVmYXVsdDtcbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcblxuLy8vIERpc3BsYXlzIHRoZSB2aXN1YWwgZ3JpZCB3aGVuIHNldCB0byB0cnVlLiBUaGUgb3ZlcmxhaWQgZ3JpZCBtYXkgYmUgZmV3IHBpeGVscyBvZmYgZGVwZW5kaW5nIG9uIHRoZSBicm93c2VyJ3MgcmVuZGVyaW5nIGVuZ2luZSBhbmQgcGl4ZWwgcm91bmRpbmcgYWxnb3JpdGhtLiBTZXQgd2l0aCB0aGUgYCFnbG9iYWxgIGZsYWcuXG4vLy9cbi8vLyBAdHlwZSBCb29sXG5cbiR2aXN1YWwtZ3JpZDogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vLyBTZXRzIHRoZSB2aXN1YWwgZ3JpZCBjb2xvci4gU2V0IHdpdGggYCFnbG9iYWxgIGZsYWcuXG4vLy9cbi8vLyBAdHlwZSBDb2xvclxuXG4kdmlzdWFsLWdyaWQtY29sb3I6ICNlZWUgIWRlZmF1bHQ7XG5cbi8vLyBTZXRzIHRoZSBgei1pbmRleGAgcHJvcGVydHkgb2YgdGhlIHZpc3VhbCBncmlkLiBDYW4gYmUgYGJhY2tgIChiZWhpbmQgY29udGVudCkgb3IgYGZyb250YCAoaW4gZnJvbnQgb2YgY29udGVudCkuIFNldCB3aXRoIGAhZ2xvYmFsYCBmbGFnLlxuLy8vXG4vLy8gQHR5cGUgU3RyaW5nXG5cbiR2aXN1YWwtZ3JpZC1pbmRleDogYmFjayAhZGVmYXVsdDtcblxuLy8vIFNldHMgdGhlIG9wYWNpdHkgcHJvcGVydHkgb2YgdGhlIHZpc3VhbCBncmlkLiBTZXQgd2l0aCBgIWdsb2JhbGAgZmxhZy5cbi8vL1xuLy8vIEB0eXBlIE51bWJlciAodW5pdGxlc3MpXG5cbiR2aXN1YWwtZ3JpZC1vcGFjaXR5OiAwLjQgIWRlZmF1bHQ7XG5cbiR2aXN1YWwtZ3JpZC1icmVha3BvaW50czogKCkgIWRlZmF1bHQ7XG4iLCJAY2hhcnNldCBcIlVURi04XCI7XG5cbi8vLyBEaXNhYmxlIGFsbCBkZXByZWNhdGlvbiB3YXJuaW5ncy4gRGVmYXVsdHMgdG8gYGZhbHNlYC4gU2V0IHdpdGggYSBgIWdsb2JhbGAgZmxhZy5cbi8vL1xuLy8vIEB0eXBlIEJvb2xcblxuJGRpc2FibGUtd2FybmluZ3M6IGZhbHNlICFkZWZhdWx0O1xuXG5AbWl4aW4gLW5lYXQtd2FybigkbWVzc2FnZSkge1xuICBAaWYgJGRpc2FibGUtd2FybmluZ3MgPT0gZmFsc2Uge1xuICAgIEB3YXJuIFwiI3skbWVzc2FnZX1cIjtcbiAgfVxufVxuIiwiJHBhcmVudC1jb2x1bW5zOiAkZ3JpZC1jb2x1bW5zICFkZWZhdWx0O1xuJGZnLWNvbHVtbjogJGNvbHVtbjtcbiRmZy1ndXR0ZXI6ICRndXR0ZXI7XG4kZmctbWF4LWNvbHVtbnM6ICRncmlkLWNvbHVtbnM7XG4kY29udGFpbmVyLWRpc3BsYXktdGFibGU6IGZhbHNlICFkZWZhdWx0O1xuJGxheW91dC1kaXJlY3Rpb246IExUUiAhZGVmYXVsdDtcblxuQGZ1bmN0aW9uIGZsZXgtZ3JpZCgkY29sdW1ucywgJGNvbnRhaW5lci1jb2x1bW5zOiAkZmctbWF4LWNvbHVtbnMpIHtcbiAgJHdpZHRoOiAkY29sdW1ucyAqICRmZy1jb2x1bW4gKyAoJGNvbHVtbnMgLSAxKSAqICRmZy1ndXR0ZXI7XG4gICRjb250YWluZXItd2lkdGg6ICRjb250YWluZXItY29sdW1ucyAqICRmZy1jb2x1bW4gKyAoJGNvbnRhaW5lci1jb2x1bW5zIC0gMSkgKiAkZmctZ3V0dGVyO1xuICBAcmV0dXJuIHBlcmNlbnRhZ2UoJHdpZHRoIC8gJGNvbnRhaW5lci13aWR0aCk7XG59XG5cbkBmdW5jdGlvbiBmbGV4LWd1dHRlcigkY29udGFpbmVyLWNvbHVtbnM6ICRmZy1tYXgtY29sdW1ucywgJGd1dHRlcjogJGZnLWd1dHRlcikge1xuICAkY29udGFpbmVyLXdpZHRoOiAkY29udGFpbmVyLWNvbHVtbnMgKiAkZmctY29sdW1uICsgKCRjb250YWluZXItY29sdW1ucyAtIDEpICogJGZnLWd1dHRlcjtcbiAgQHJldHVybiBwZXJjZW50YWdlKCRndXR0ZXIgLyAkY29udGFpbmVyLXdpZHRoKTtcbn1cblxuQGZ1bmN0aW9uIGdyaWQtd2lkdGgoJG4pIHtcbiAgQHJldHVybiAkbiAqICRndy1jb2x1bW4gKyAoJG4gLSAxKSAqICRndy1ndXR0ZXI7XG59XG5cbkBmdW5jdGlvbiBnZXQtcGFyZW50LWNvbHVtbnMoJGNvbHVtbnMpIHtcbiAgQGlmICRjb2x1bW5zICE9ICRncmlkLWNvbHVtbnMge1xuICAgICRwYXJlbnQtY29sdW1uczogJGNvbHVtbnMgIWdsb2JhbDtcbiAgfSBAZWxzZSB7XG4gICAgJHBhcmVudC1jb2x1bW5zOiAkZ3JpZC1jb2x1bW5zICFnbG9iYWw7XG4gIH1cblxuICBAcmV0dXJuICRwYXJlbnQtY29sdW1ucztcbn1cblxuQGZ1bmN0aW9uIGlzLWRpc3BsYXktdGFibGUoJGNvbnRhaW5lci1pcy1kaXNwbGF5LXRhYmxlLCAkZGlzcGxheSkge1xuICBAcmV0dXJuICRjb250YWluZXItaXMtZGlzcGxheS10YWJsZSA9PSB0cnVlIG9yICRkaXNwbGF5ID09IHRhYmxlO1xufVxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuXG5AaWYgJGJvcmRlci1ib3gtc2l6aW5nID09IHRydWUge1xuICBodG1sIHsgLy8gaHR0cDovL2JpdC5seS8xcWsydFZSXG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgfVxuXG4gICoge1xuICAgICYsXG4gICAgJjo6YWZ0ZXIsXG4gICAgJjo6YmVmb3JlIHtcbiAgICAgIGJveC1zaXppbmc6IGluaGVyaXQ7XG4gICAgfVxuICB9XG59XG4iLCJAY2hhcnNldCBcIlVURi04XCI7XG5cbi8vLyBSZW1vdmVzIHRoZSBlbGVtZW50J3MgZ3V0dGVyIG1hcmdpbiwgcmVnYXJkbGVzcyBvZiBpdHMgcG9zaXRpb24gaW4gdGhlIGdyaWQgaGllcmFyY2h5IG9yIGRpc3BsYXkgcHJvcGVydHkuIEl0IGNhbiB0YXJnZXQgYSBzcGVjaWZpYyBlbGVtZW50LCBvciBldmVyeSBgbnRoLWNoaWxkYCBvY2N1cnJlbmNlLiBXb3JrcyBvbmx5IHdpdGggYGJsb2NrYCBsYXlvdXRzLlxuLy8vXG4vLy8gQHBhcmFtIHtMaXN0fSAkcXVlcnkgW2Jsb2NrXVxuLy8vICAgTGlzdCBvZiBhcmd1bWVudHMuIFN1cHBvcnRlZCBhcmd1bWVudHMgYXJlIGBudGgtY2hpbGRgIHNlbGVjdG9ycyAodGFyZ2V0cyBhIHNwZWNpZmljIHBzZXVkbyBlbGVtZW50KSBhbmQgYGF1dG9gICh0YXJnZXRzIGBsYXN0LWNoaWxkYCkuXG4vLy9cbi8vLyAgIFdoZW4gcGFzc2VkIGFuIGBudGgtY2hpbGRgIGFyZ3VtZW50IG9mIHR5cGUgYCpuYCB3aXRoIGBibG9ja2AgZGlzcGxheSwgdGhlIG9tZWdhIG1peGluIGF1dG9tYXRpY2FsbHkgYWRkcyBhIGNsZWFyIHRvIHRoZSBgKm4rMWAgdGggZWxlbWVudC4gTm90ZSB0aGF0IGNvbXBvc2l0ZSBhcmd1bWVudHMgc3VjaCBhcyBgMm4rMWAgZG8gbm90IHN1cHBvcnQgdGhpcyBmZWF0dXJlLlxuLy8vXG4vLy8gICAqKkRlcHJlY2F0aW9uIHdhcm5pbmcqKjogVGhlIG9tZWdhIG1peGluIHdpbGwgbm8gbG9uZ2VyIHRha2UgYSBgJGRpcmVjdGlvbmAgYXJndW1lbnQuIFRvIGNoYW5nZSB0aGUgbGF5b3V0IGRpcmVjdGlvbiwgdXNlIGByb3coJGRpcmVjdGlvbilgIG9yIHNldCBgJGRlZmF1bHQtbGF5b3V0LWRpcmVjdGlvbmAgaW5zdGVhZC5cbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBVc2FnZVxuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBAaW5jbHVkZSBvbWVnYTtcbi8vLyAgIH1cbi8vL1xuLy8vICAgLm50aC1lbGVtZW50IHtcbi8vLyAgICAgQGluY2x1ZGUgb21lZ2EoNG4pO1xuLy8vICAgfVxuLy8vXG4vLy8gQGV4YW1wbGUgY3NzIC0gQ1NTIE91dHB1dFxuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBtYXJnaW4tcmlnaHQ6IDA7XG4vLy8gICB9XG4vLy9cbi8vLyAgIC5udGgtZWxlbWVudDpudGgtY2hpbGQoNG4pIHtcbi8vLyAgICAgbWFyZ2luLXJpZ2h0OiAwO1xuLy8vICAgfVxuLy8vXG4vLy8gICAubnRoLWVsZW1lbnQ6bnRoLWNoaWxkKDRuKzEpIHtcbi8vLyAgICAgY2xlYXI6IGxlZnQ7XG4vLy8gICB9XG5cbkBtaXhpbiBvbWVnYSgkcXVlcnk6IGJsb2NrLCAkZGlyZWN0aW9uOiBkZWZhdWx0KSB7XG4gICR0YWJsZTogYmVsb25ncy10byh0YWJsZSwgJHF1ZXJ5KTtcbiAgJGF1dG86IGJlbG9uZ3MtdG8oYXV0bywgJHF1ZXJ5KTtcblxuICBAaWYgJGRpcmVjdGlvbiAhPSBkZWZhdWx0IHtcbiAgICBAaW5jbHVkZSAtbmVhdC13YXJuKFwiVGhlIG9tZWdhIG1peGluIHdpbGwgbm8gbG9uZ2VyIHRha2UgYSAkZGlyZWN0aW9uIGFyZ3VtZW50LiBUbyBjaGFuZ2UgdGhlIGxheW91dCBkaXJlY3Rpb24sIHVzZSB0aGUgZGlyZWN0aW9uKCl7Li4ufSBtaXhpbi5cIik7XG4gIH0gQGVsc2Uge1xuICAgICRkaXJlY3Rpb246IGdldC1kaXJlY3Rpb24oJGxheW91dC1kaXJlY3Rpb24sICRkZWZhdWx0LWxheW91dC1kaXJlY3Rpb24pO1xuICB9XG5cbiAgQGlmICR0YWJsZSB7XG4gICAgQGluY2x1ZGUgLW5lYXQtd2FybihcIlRoZSBvbWVnYSBtaXhpbiBubyBsb25nZXIgcmVtb3ZlcyBwYWRkaW5nIGluIHRhYmxlIGxheW91dHMuXCIpO1xuICB9XG5cbiAgQGlmIGxlbmd0aCgkcXVlcnkpID09IDEge1xuICAgIEBpZiAkYXV0byB7XG4gICAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgICBtYXJnaW4tI3skZGlyZWN0aW9ufTogMDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBAZWxzZSBpZiBjb250YWlucy1kaXNwbGF5LXZhbHVlKCRxdWVyeSkgYW5kICR0YWJsZSA9PSBmYWxzZSB7XG4gICAgICBtYXJnaW4tI3skZGlyZWN0aW9ufTogMDtcbiAgICB9XG5cbiAgICBAZWxzZSB7XG4gICAgICBAaW5jbHVkZSBudGgtY2hpbGQoJHF1ZXJ5LCAkZGlyZWN0aW9uKTtcbiAgICB9XG4gIH0gQGVsc2UgaWYgbGVuZ3RoKCRxdWVyeSkgPT0gMiB7XG4gICAgQGlmICRhdXRvIHtcbiAgICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICAgIG1hcmdpbi0jeyRkaXJlY3Rpb259OiAwO1xuICAgICAgfVxuICAgIH0gQGVsc2Uge1xuICAgICAgQGluY2x1ZGUgbnRoLWNoaWxkKG50aCgkcXVlcnksIDEpLCAkZGlyZWN0aW9uKTtcbiAgICB9XG4gIH0gQGVsc2Uge1xuICAgIEBpbmNsdWRlIC1uZWF0LXdhcm4oXCJUb28gbWFueSBhcmd1bWVudHMgcGFzc2VkIHRvIHRoZSBvbWVnYSgpIG1peGluLlwiKTtcbiAgfVxufVxuXG5AbWl4aW4gbnRoLWNoaWxkKCRxdWVyeSwgJGRpcmVjdGlvbikge1xuICAkb3Bwb3NpdGUtZGlyZWN0aW9uOiBnZXQtb3Bwb3NpdGUtZGlyZWN0aW9uKCRkaXJlY3Rpb24pO1xuXG4gICY6bnRoLWNoaWxkKCN7JHF1ZXJ5fSkge1xuICAgIG1hcmdpbi0jeyRkaXJlY3Rpb259OiAwO1xuICB9XG5cbiAgQGlmIHR5cGUtb2YoJHF1ZXJ5KSA9PSBudW1iZXIgYW5kIHVuaXQoJHF1ZXJ5KSA9PSBcIm5cIiB7XG4gICAgJjpudGgtY2hpbGQoI3skcXVlcnl9KzEpIHtcbiAgICAgIGNsZWFyOiAkb3Bwb3NpdGUtZGlyZWN0aW9uO1xuICAgIH1cbiAgfVxufVxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuXG4vLy8gTWFrZXMgYW4gZWxlbWVudCBhIG91dGVyIGNvbnRhaW5lciBieSBjZW50cmluZyBpdCBpbiB0aGUgdmlld3BvcnQsIGNsZWFyaW5nIGl0cyBmbG9hdHMsIGFuZCBzZXR0aW5nIGl0cyBgbWF4LXdpZHRoYC5cbi8vLyBBbHRob3VnaCBvcHRpb25hbCwgdXNpbmcgYG91dGVyLWNvbnRhaW5lcmAgaXMgcmVjb21tZW5kZWQuIFRoZSBtaXhpbiBjYW4gYmUgY2FsbGVkIG9uIG1vcmUgdGhhbiBvbmUgZWxlbWVudCBwZXIgcGFnZSwgYXMgbG9uZyBhcyB0aGV5IGFyZSBub3QgbmVzdGVkLlxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXIgW3VuaXRdfSAkbG9jYWwtbWF4LXdpZHRoIFskbWF4LXdpZHRoXVxuLy8vICAgTWF4IHdpZHRoIHRvIGJlIGFwcGxpZWQgdG8gdGhlIGVsZW1lbnQuIENhbiBiZSBhIHBlcmNlbnRhZ2Ugb3IgYSBtZWFzdXJlLlxuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFVzYWdlXG4vLy8gICAuZWxlbWVudCB7XG4vLy8gICAgIEBpbmNsdWRlIG91dGVyLWNvbnRhaW5lcigxMDAlKTtcbi8vLyAgIH1cbi8vL1xuLy8vIEBleGFtcGxlIGNzcyAtIENTUyBPdXRwdXRcbi8vLyAgIC5lbGVtZW50IHtcbi8vLyAgICAgKnpvb206IDE7XG4vLy8gICAgIG1heC13aWR0aDogMTAwJTtcbi8vLyAgICAgbWFyZ2luLWxlZnQ6IGF1dG87XG4vLy8gICAgIG1hcmdpbi1yaWdodDogYXV0bztcbi8vLyAgIH1cbi8vL1xuLy8vICAgLmVsZW1lbnQ6YmVmb3JlLCAuZWxlbWVudDphZnRlciB7XG4vLy8gICAgIGNvbnRlbnQ6IFwiIFwiO1xuLy8vICAgICBkaXNwbGF5OiB0YWJsZTtcbi8vLyAgIH1cbi8vL1xuLy8vICAgLmVsZW1lbnQ6YWZ0ZXIge1xuLy8vICAgICBjbGVhcjogYm90aDtcbi8vLyAgIH1cblxuQG1peGluIG91dGVyLWNvbnRhaW5lcigkbG9jYWwtbWF4LXdpZHRoOiAkbWF4LXdpZHRoKSB7XG4gIEBpbmNsdWRlIGNsZWFyZml4O1xuICBtYXgtd2lkdGg6ICRsb2NhbC1tYXgtd2lkdGg7XG4gIG1hcmdpbjoge1xuICAgIGxlZnQ6IGF1dG87XG4gICAgcmlnaHQ6IGF1dG87XG4gIH1cbn1cbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcblxuLy8vIFNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIGNvbHVtbnMgYW4gZWxlbWVudCBzaG91bGQgc3Bhbi4gSWYgdGhlIHNlbGVjdG9yIGlzIG5lc3RlZCB0aGUgbnVtYmVyIG9mIGNvbHVtbnMgb2YgaXRzIHBhcmVudCBlbGVtZW50IHNob3VsZCBiZSBwYXNzZWQgYXMgYW4gYXJndW1lbnQgYXMgd2VsbC5cbi8vL1xuLy8vIEBwYXJhbSB7TGlzdH0gJHNwYW5cbi8vLyAgIEEgbGlzdCBjb250YWluaW5nIGAkY29sdW1uc2AsIHRoZSB1bml0bGVzcyBudW1iZXIgb2YgY29sdW1ucyB0aGUgZWxlbWVudCBzcGFucyAocmVxdWlyZWQpLCBhbmQgYCRjb250YWluZXItY29sdW1uc2AsIHRoZSBudW1iZXIgb2YgY29sdW1ucyB0aGUgcGFyZW50IGVsZW1lbnQgc3BhbnMgKG9wdGlvbmFsKS5cbi8vL1xuLy8vICAgSWYgb25seSBvbmUgdmFsdWUgaXMgcGFzc2VkLCBpdCBpcyBhc3N1bWVkIHRoYXQgaXQncyBgJGNvbHVtbnNgIGFuZCB0aGF0IHRoYXQgYCRjb250YWluZXItY29sdW1uc2AgaXMgZXF1YWwgdG8gYCRncmlkLWNvbHVtbnNgLCB0aGUgdG90YWwgbnVtYmVyIG9mIGNvbHVtbnMgaW4gdGhlIGdyaWQuXG4vLy9cbi8vLyAgIFRoZSB2YWx1ZXMgY2FuIGJlIHNlcGFyYXRlZCB3aXRoIGFueSBzdHJpbmcgc3VjaCBhcyBgb2ZgLCBgL2AsIGV0Yy5cbi8vL1xuLy8vICAgYCRjb2x1bW5zYCBhbHNvIGFjY2VwdHMgZGVjaW1hbHMgZm9yIHdoZW4gaXQncyBuZWNlc3NhcnkgdG8gYnJlYWsgb3V0IG9mIHRoZSBzdGFuZGFyZCBncmlkLiBFLmcuIFBhc3NpbmcgYDIuNGAgaW4gYSBzdGFuZGFyZCAxMiBjb2x1bW4gZ3JpZCB3aWxsIGRpdmlkZSB0aGUgcm93IGludG8gNSBjb2x1bW5zLlxuLy8vXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRkaXNwbGF5IFtibG9ja11cbi8vLyAgIFNldHMgdGhlIGRpc3BsYXkgcHJvcGVydHkgb2YgdGhlIGVsZW1lbnQuIEJ5IGRlZmF1bHQgaXQgc2V0cyB0aGUgZGlzcGxheSBwcm9wZXJ0IG9mIHRoZSBlbGVtZW50IHRvIGBibG9ja2AuXG4vLy9cbi8vLyAgIElmIHBhc3NlZCBgYmxvY2stY29sbGFwc2VgLCBpdCBhbHNvIHJlbW92ZXMgdGhlIG1hcmdpbiBndXR0ZXIgYnkgYWRkaW5nIGl0IHRvIHRoZSBlbGVtZW50IHdpZHRoLlxuLy8vXG4vLy8gICBJZiBwYXNzZWQgYHRhYmxlYCwgaXQgc2V0cyB0aGUgZGlzcGxheSBwcm9wZXJ0eSB0byBgdGFibGUtY2VsbGAgYW5kIGNhbGN1bGF0ZXMgdGhlIHdpZHRoIG9mIHRoZSBlbGVtZW50IHdpdGhvdXQgdGFraW5nIGd1dHRlcnMgaW50byBjb25zaWRlcmF0aW9uLiBUaGUgcmVzdWx0IGRvZXMgbm90IGFsaWduIHdpdGggdGhlIGJsb2NrLWJhc2VkIGdyaWQuXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gVXNhZ2Vcbi8vLyAgIC5lbGVtZW50IHtcbi8vLyAgICAgQGluY2x1ZGUgc3Bhbi1jb2x1bW5zKDYpO1xuLy8vXG4vLy8gICAgLm5lc3RlZC1lbGVtZW50IHtcbi8vLyAgICAgIEBpbmNsdWRlIHNwYW4tY29sdW1ucygyIG9mIDYpO1xuLy8vICAgIH1cbi8vLyAgfVxuLy8vXG4vLy8gQGV4YW1wbGUgY3NzIC0gQ1NTIE91dHB1dFxuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBkaXNwbGF5OiBibG9jaztcbi8vLyAgICAgZmxvYXQ6IGxlZnQ7XG4vLy8gICAgIG1hcmdpbi1yaWdodDogMi4zNTc2NSU7XG4vLy8gICAgIHdpZHRoOiA0OC44MjExNyU7XG4vLy8gICB9XG4vLy9cbi8vLyAgIC5lbGVtZW50Omxhc3QtY2hpbGQge1xuLy8vICAgICBtYXJnaW4tcmlnaHQ6IDA7XG4vLy8gICB9XG4vLy9cbi8vLyAgIC5lbGVtZW50IC5uZXN0ZWQtZWxlbWVudCB7XG4vLy8gICAgIGRpc3BsYXk6IGJsb2NrO1xuLy8vICAgICBmbG9hdDogbGVmdDtcbi8vLyAgICAgbWFyZ2luLXJpZ2h0OiA0LjgyOTE2JTtcbi8vLyAgICAgd2lkdGg6IDMwLjExMzg5JTtcbi8vLyAgIH1cbi8vL1xuLy8vICAgLmVsZW1lbnQgLm5lc3RlZC1lbGVtZW50Omxhc3QtY2hpbGQge1xuLy8vICAgICBtYXJnaW4tcmlnaHQ6IDA7XG4vLy8gICB9XG5cbkBtaXhpbiBzcGFuLWNvbHVtbnMoJHNwYW46ICRjb2x1bW5zIG9mICRjb250YWluZXItY29sdW1ucywgJGRpc3BsYXk6IGJsb2NrKSB7XG4gICRjb2x1bW5zOiBudGgoJHNwYW4sIDEpO1xuICAkY29udGFpbmVyLWNvbHVtbnM6IGNvbnRhaW5lci1zcGFuKCRzcGFuKTtcblxuICAkcGFyZW50LWNvbHVtbnM6IGdldC1wYXJlbnQtY29sdW1ucygkY29udGFpbmVyLWNvbHVtbnMpICFnbG9iYWw7XG5cbiAgJGRpcmVjdGlvbjogZ2V0LWRpcmVjdGlvbigkbGF5b3V0LWRpcmVjdGlvbiwgJGRlZmF1bHQtbGF5b3V0LWRpcmVjdGlvbik7XG4gICRvcHBvc2l0ZS1kaXJlY3Rpb246IGdldC1vcHBvc2l0ZS1kaXJlY3Rpb24oJGRpcmVjdGlvbik7XG5cbiAgJGRpc3BsYXktdGFibGU6IGlzLWRpc3BsYXktdGFibGUoJGNvbnRhaW5lci1kaXNwbGF5LXRhYmxlLCAkZGlzcGxheSk7XG5cbiAgQGlmICRkaXNwbGF5LXRhYmxlICB7XG4gICAgZGlzcGxheTogdGFibGUtY2VsbDtcbiAgICB3aWR0aDogcGVyY2VudGFnZSgkY29sdW1ucyAvICRjb250YWluZXItY29sdW1ucyk7XG4gIH0gQGVsc2Uge1xuICAgIGZsb2F0OiAjeyRvcHBvc2l0ZS1kaXJlY3Rpb259O1xuXG4gICAgQGlmICRkaXNwbGF5ICE9IG5vLWRpc3BsYXkge1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgfVxuXG4gICAgQGlmICRkaXNwbGF5ID09IGNvbGxhcHNlIHtcbiAgICAgIEBpbmNsdWRlIC1uZWF0LXdhcm4oXCJUaGUgJ2NvbGxhcHNlJyBhcmd1bWVudCB3aWxsIGJlIGRlcHJlY2F0ZWQuIFVzZSAnYmxvY2stY29sbGFwc2UnIGluc3RlYWQuXCIpO1xuICAgIH1cblxuICAgIEBpZiAkZGlzcGxheSA9PSBjb2xsYXBzZSBvciAkZGlzcGxheSA9PSBibG9jay1jb2xsYXBzZSB7XG4gICAgICB3aWR0aDogZmxleC1ncmlkKCRjb2x1bW5zLCAkY29udGFpbmVyLWNvbHVtbnMpICsgZmxleC1ndXR0ZXIoJGNvbnRhaW5lci1jb2x1bW5zKTtcblxuICAgICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgICAgd2lkdGg6IGZsZXgtZ3JpZCgkY29sdW1ucywgJGNvbnRhaW5lci1jb2x1bW5zKTtcbiAgICAgIH1cblxuICAgIH0gQGVsc2Uge1xuICAgICAgbWFyZ2luLSN7JGRpcmVjdGlvbn06IGZsZXgtZ3V0dGVyKCRjb250YWluZXItY29sdW1ucyk7XG4gICAgICB3aWR0aDogZmxleC1ncmlkKCRjb2x1bW5zLCAkY29udGFpbmVyLWNvbHVtbnMpO1xuXG4gICAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgICBtYXJnaW4tI3skZGlyZWN0aW9ufTogMDtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcblxuLy8vIERlc2lnbmF0ZXMgdGhlIGVsZW1lbnQgYXMgYSByb3cgb2YgY29sdW1ucyBpbiB0aGUgZ3JpZCBsYXlvdXQuIEl0IGNsZWFycyB0aGUgZmxvYXRzIG9uIHRoZSBlbGVtZW50IGFuZCBzZXRzIGl0cyBkaXNwbGF5IHByb3BlcnR5LiBSb3dzIGNhbid0IGJlIG5lc3RlZCwgYnV0IHRoZXJlIGNhbiBiZSBtb3JlIHRoYW4gb25lIHJvdyBlbGVtZW504oCUd2l0aCBkaWZmZXJlbnQgZGlzcGxheSBwcm9wZXJ0aWVz4oCUcGVyIGxheW91dC5cbi8vL1xuLy8vIEBwYXJhbSB7U3RyaW5nfSAkZGlzcGxheSBbZGVmYXVsdF1cbi8vLyAgU2V0cyB0aGUgZGlzcGxheSBwcm9wZXJ0eSBvZiB0aGUgZWxlbWVudCBhbmQgdGhlIGRpc3BsYXkgY29udGV4dCB0aGF0IHdpbGwgYmUgdXNlZCBieSBpdHMgY2hpbGRyZW4uIENhbiBiZSBgYmxvY2tgIG9yIGB0YWJsZWAuXG4vLy9cbi8vLyBAcGFyYW0ge1N0cmluZ30gJGRpcmVjdGlvbiBbJGRlZmF1bHQtbGF5b3V0LWRpcmVjdGlvbl1cbi8vLyAgU2V0cyB0aGUgbGF5b3V0IGRpcmVjdGlvbi4gQ2FuIGJlIGBMVFJgIChsZWZ0LXRvLXJpZ2h0KSBvciBgUlRMYCAocmlnaHQtdG8tbGVmdCkuXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gVXNhZ2Vcbi8vLyAgLmVsZW1lbnQge1xuLy8vICAgIEBpbmNsdWRlIHJvdygpO1xuLy8vICB9XG4vLy9cbi8vLyBAZXhhbXBsZSBjc3MgLSBDU1MgT3V0cHV0XG4vLy8gIC5lbGVtZW50IHtcbi8vLyAgICAqem9vbTogMTtcbi8vLyAgICBkaXNwbGF5OiBibG9jaztcbi8vLyAgfVxuLy8vXG4vLy8gLmVsZW1lbnQ6YmVmb3JlLCAuZWxlbWVudDphZnRlciB7XG4vLy8gICBjb250ZW50OiBcIiBcIjtcbi8vLyAgIGRpc3BsYXk6IHRhYmxlO1xuLy8vIH1cbi8vL1xuLy8vIC5lbGVtZW50OmFmdGVyIHtcbi8vLyAgIGNsZWFyOiBib3RoO1xuLy8vIH1cblxuQG1peGluIHJvdygkZGlzcGxheTogZGVmYXVsdCwgJGRpcmVjdGlvbjogJGRlZmF1bHQtbGF5b3V0LWRpcmVjdGlvbikge1xuICBAaWYgJGRpcmVjdGlvbiAhPSAkZGVmYXVsdC1sYXlvdXQtZGlyZWN0aW9uIHtcbiAgICBAaW5jbHVkZSAtbmVhdC13YXJuKFwiVGhlICRkaXJlY3Rpb24gYXJndW1lbnQgd2lsbCBiZSBkZXByZWNhdGVkIGluIGZ1dHVyZSB2ZXJzaW9ucyBpbiBmYXZvciBvZiB0aGUgZGlyZWN0aW9uKCl7Li4ufSBtaXhpbi5cIik7XG4gIH1cblxuICAkbGF5b3V0LWRpcmVjdGlvbjogJGRpcmVjdGlvbiAhZ2xvYmFsO1xuXG4gIEBpZiAkZGlzcGxheSAhPSBkZWZhdWx0IHtcbiAgICBAaW5jbHVkZSAtbmVhdC13YXJuKFwiVGhlICRkaXNwbGF5IGFyZ3VtZW50IHdpbGwgYmUgZGVwcmVjYXRlZCBpbiBmdXR1cmUgdmVyc2lvbnMgaW4gZmF2b3Igb2YgdGhlIGRpc3BsYXkoKXsuLi59IG1peGluLlwiKTtcbiAgfVxuXG4gIEBpZiAkZGlzcGxheSA9PSB0YWJsZSB7XG4gICAgZGlzcGxheTogdGFibGU7XG4gICAgQGluY2x1ZGUgZmlsbC1wYXJlbnQ7XG4gICAgdGFibGUtbGF5b3V0OiBmaXhlZDtcbiAgICAkY29udGFpbmVyLWRpc3BsYXktdGFibGU6IHRydWUgIWdsb2JhbDtcbiAgfSBAZWxzZSB7XG4gICAgQGluY2x1ZGUgY2xlYXJmaXg7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgJGNvbnRhaW5lci1kaXNwbGF5LXRhYmxlOiBmYWxzZSAhZ2xvYmFsO1xuICB9XG59XG4iLCJAY2hhcnNldCBcIlVURi04XCI7XG5cbi8vLyBUcmFuc2xhdGVzIGFuIGVsZW1lbnQgaG9yaXpvbnRhbGx5IGJ5IGEgbnVtYmVyIG9mIGNvbHVtbnMuIFBvc2l0aXZlIGFyZ3VtZW50cyBzaGlmdCB0aGUgZWxlbWVudCB0byB0aGUgYWN0aXZlIGxheW91dCBkaXJlY3Rpb24sIHdoaWxlIG5lZ2F0aXZlIG9uZXMgc2hpZnQgaXQgdG8gdGhlIG9wcG9zaXRlIGRpcmVjdGlvbi5cbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyICh1bml0bGVzcyl9ICRuLWNvbHVtbnMgWzFdXG4vLy8gICBOdW1iZXIgb2YgY29sdW1ucyBieSB3aGljaCB0aGUgZWxlbWVudCBzaGlmdHMuXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gVXNhZ2Vcbi8vLyAgIC5lbGVtZW50IHtcbi8vLyAgICAgQGluY2x1ZGUgc2hpZnQoLTMpO1xuLy8vICAgfVxuLy8vXG4vLy8gQGV4YW1wbGUgY3NzIC0gQ1NTIG91dHB1dFxuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBtYXJnaW4tbGVmdDogLTI1LjU4OTQxJTtcbi8vLyAgIH1cblxuQG1peGluIHNoaWZ0KCRuLWNvbHVtbnM6IDEpIHtcbiAgQGluY2x1ZGUgc2hpZnQtaW4tY29udGV4dCgkbi1jb2x1bW5zKTtcbn1cblxuLy8vIFRyYW5zbGF0ZXMgYW4gZWxlbWVudCBob3Jpem9udGFsbHkgYnkgYSBudW1iZXIgb2YgY29sdW1ucywgaW4gYSBzcGVjaWZpYyBuZXN0aW5nIGNvbnRleHQuXG4vLy9cbi8vLyBAcGFyYW0ge0xpc3R9ICRzaGlmdFxuLy8vICAgQSBsaXN0IGNvbnRhaW5pbmcgdGhlIG51bWJlciBvZiBjb2x1bW5zIHRvIHNoaWZ0IChgJGNvbHVtbnNgKSBhbmQgdGhlIG51bWJlciBvZiBjb2x1bW5zIG9mIHRoZSBwYXJlbnQgZWxlbWVudCAoYCRjb250YWluZXItY29sdW1uc2ApLlxuLy8vXG4vLy8gICBUaGUgdHdvIHZhbHVlcyBjYW4gYmUgc2VwYXJhdGVkIHdpdGggYW55IHN0cmluZyBzdWNoIGFzIGBvZmAsIGAvYCwgZXRjLlxuLy8vXG4vLy8gQGV4YW1wbGUgc2NzcyAtIFVzYWdlXG4vLy8gICAuZWxlbWVudCB7XG4vLy8gICAgIEBpbmNsdWRlIHNoaWZ0KC0zIG9mIDYpO1xuLy8vICAgfVxuLy8vXG4vLy8gQGV4YW1wbGUgY3NzIC0gQ1NTIG91dHB1dFxuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBtYXJnaW4tbGVmdDogLTUyLjQxNDU4JTtcbi8vLyAgIH1cblxuQG1peGluIHNoaWZ0LWluLWNvbnRleHQoJHNoaWZ0OiAkY29sdW1ucyBvZiAkY29udGFpbmVyLWNvbHVtbnMpIHtcbiAgJG4tY29sdW1uczogbnRoKCRzaGlmdCwgMSk7XG4gICRwYXJlbnQtY29sdW1uczogY29udGFpbmVyLXNoaWZ0KCRzaGlmdCkgIWdsb2JhbDtcblxuICAkZGlyZWN0aW9uOiBnZXQtZGlyZWN0aW9uKCRsYXlvdXQtZGlyZWN0aW9uLCAkZGVmYXVsdC1sYXlvdXQtZGlyZWN0aW9uKTtcbiAgJG9wcG9zaXRlLWRpcmVjdGlvbjogZ2V0LW9wcG9zaXRlLWRpcmVjdGlvbigkZGlyZWN0aW9uKTtcblxuICBtYXJnaW4tI3skb3Bwb3NpdGUtZGlyZWN0aW9ufTogJG4tY29sdW1ucyAqIGZsZXgtZ3JpZCgxLCAkcGFyZW50LWNvbHVtbnMpICsgJG4tY29sdW1ucyAqIGZsZXgtZ3V0dGVyKCRwYXJlbnQtY29sdW1ucyk7XG5cbiAgLy8gUmVzZXQgbmVzdGluZyBjb250ZXh0XG4gICRwYXJlbnQtY29sdW1uczogJGdyaWQtY29sdW1ucyAhZ2xvYmFsO1xufVxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuXG4vLy8gQWRkcyBwYWRkaW5nIHRvIHRoZSBlbGVtZW50LlxuLy8vXG4vLy8gQHBhcmFtIHtMaXN0fSAkcGFkZGluZyBbZmxleC1ndXR0ZXIoKV1cbi8vLyAgIEEgbGlzdCBvZiBwYWRkaW5nIHZhbHVlKHMpIHRvIHVzZS4gUGFzc2luZyBgZGVmYXVsdGAgaW4gdGhlIGxpc3Qgd2lsbCByZXN1bHQgaW4gdXNpbmcgdGhlIGd1dHRlciB3aWR0aCBhcyBhIHBhZGRpbmcgdmFsdWUuXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gVXNhZ2Vcbi8vLyAgIC5lbGVtZW50IHtcbi8vLyAgICAgQGluY2x1ZGUgcGFkKDMwcHggLTIwcHggMTBweCBkZWZhdWx0KTtcbi8vLyAgIH1cbi8vL1xuLy8vIEBleGFtcGxlIGNzcyAtIENTUyBPdXRwdXRcbi8vLyAgIC5lbGVtZW50IHtcbi8vLyAgICAgcGFkZGluZzogMzBweCAtMjBweCAxMHB4IDIuMzU3NjUlO1xuLy8vICAgfVxuXG5AbWl4aW4gcGFkKCRwYWRkaW5nOiBmbGV4LWd1dHRlcigpKSB7XG4gICRwYWRkaW5nLWxpc3Q6IG51bGw7XG4gIEBlYWNoICR2YWx1ZSBpbiAkcGFkZGluZyB7XG4gICAgJHZhbHVlOiBpZigkdmFsdWUgPT0gJ2RlZmF1bHQnLCBmbGV4LWd1dHRlcigpLCAkdmFsdWUpO1xuICAgICRwYWRkaW5nLWxpc3Q6IGpvaW4oJHBhZGRpbmctbGlzdCwgJHZhbHVlKTtcbiAgfVxuICBwYWRkaW5nOiAkcGFkZGluZy1saXN0O1xufVxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuXG4vLy8gRm9yY2VzIHRoZSBlbGVtZW50IHRvIGZpbGwgaXRzIHBhcmVudCBjb250YWluZXIuXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gVXNhZ2Vcbi8vLyAgIC5lbGVtZW50IHtcbi8vLyAgICAgQGluY2x1ZGUgZmlsbC1wYXJlbnQ7XG4vLy8gICB9XG4vLy9cbi8vLyBAZXhhbXBsZSBjc3MgLSBDU1MgT3V0cHV0XG4vLy8gICAuZWxlbWVudCB7XG4vLy8gICAgIHdpZHRoOiAxMDAlO1xuLy8vICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuLy8vICAgfVxuXG5AbWl4aW4gZmlsbC1wYXJlbnQoKSB7XG4gIHdpZHRoOiAxMDAlO1xuXG4gIEBpZiAkYm9yZGVyLWJveC1zaXppbmcgPT0gZmFsc2Uge1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIH1cbn1cbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcblxuLy8vIE91dHB1dHMgYSBtZWRpYS1xdWVyeSBibG9jayB3aXRoIGFuIG9wdGlvbmFsIGdyaWQgY29udGV4dCAodGhlIHRvdGFsIG51bWJlciBvZiBjb2x1bW5zIHVzZWQgaW4gdGhlIGdyaWQpLlxuLy8vXG4vLy8gQHBhcmFtIHtMaXN0fSAkcXVlcnlcbi8vLyAgIEEgbGlzdCBvZiBtZWRpYSBxdWVyeSBmZWF0dXJlcyBhbmQgdmFsdWVzLCB3aGVyZSBlYWNoIGAkZmVhdHVyZWAgc2hvdWxkIGhhdmUgYSBjb3JyZXNwb25kaW5nIGAkdmFsdWVgLlxuLy8vICAgRm9yIGEgbGlzdCBvZiB2YWxpZCB2YWx1ZXMgZm9yIGAkZmVhdHVyZWAsIGNsaWNrIFtoZXJlXShodHRwOi8vd3d3LnczLm9yZy9UUi9jc3MzLW1lZGlhcXVlcmllcy8jbWVkaWExKS5cbi8vL1xuLy8vICAgSWYgdGhlcmUgaXMgb25seSBhIHNpbmdsZSBgJHZhbHVlYCBpbiBgJHF1ZXJ5YCwgYCRkZWZhdWx0LWZlYXR1cmVgIGlzIGdvaW5nIHRvIGJlIHVzZWQuXG4vLy9cbi8vLyAgIFRoZSBudW1iZXIgb2YgdG90YWwgY29sdW1ucyBpbiB0aGUgZ3JpZCBjYW4gYmUgc2V0IGJ5IHBhc3NpbmcgYCRjb2x1bW5zYCBhdCB0aGUgZW5kIG9mIHRoZSBsaXN0IChvdmVycmlkZXMgYCR0b3RhbC1jb2x1bW5zYCkuXG4vLy9cbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyICh1bml0bGVzcyl9ICR0b3RhbC1jb2x1bW5zIFskZ3JpZC1jb2x1bW5zXVxuLy8vICAgLSBOdW1iZXIgb2YgY29sdW1ucyB0byB1c2UgaW4gdGhlIG5ldyBncmlkIGNvbnRleHQuIENhbiBiZSBzZXQgYXMgYSBzaG9ydGhhbmQgaW4gdGhlIGZpcnN0IHBhcmFtZXRlci5cbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBVc2FnZVxuLy8vICAgLnJlc3BvbnNpdmUtZWxlbWVudCB7XG4vLy8gICAgICBAaW5jbHVkZSBtZWRpYSg3NjlweCkge1xuLy8vICAgICAgICBAaW5jbHVkZSBzcGFuLWNvbHVtbnMoNik7XG4vLy8gICAgICB9XG4vLy8gICB9XG4vLy9cbi8vLyAgLm5ldy1jb250ZXh0LWVsZW1lbnQge1xuLy8vICAgIEBpbmNsdWRlIG1lZGlhKG1pbi13aWR0aCAzMjBweCBtYXgtd2lkdGggNDgwcHgsIDYpIHtcbi8vLyAgICAgIEBpbmNsdWRlIHNwYW4tY29sdW1ucyg2KTtcbi8vLyAgICB9XG4vLy8gIH1cbi8vL1xuLy8vIEBleGFtcGxlIGNzcyAtIENTUyBPdXRwdXRcbi8vLyAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNzY5cHgpIHtcbi8vLyAgICAucmVzcG9uc2l2ZS1lbGVtZW50IHtcbi8vLyAgICAgIGRpc3BsYXk6IGJsb2NrO1xuLy8vICAgICAgZmxvYXQ6IGxlZnQ7XG4vLy8gICAgICBtYXJnaW4tcmlnaHQ6IDIuMzU3NjUlO1xuLy8vICAgICAgd2lkdGg6IDQ4LjgyMTE3JTtcbi8vLyAgICB9XG4vLy9cbi8vLyAgICAucmVzcG9uc2l2ZS1lbGVtZW50Omxhc3QtY2hpbGQge1xuLy8vICAgICAgbWFyZ2luLXJpZ2h0OiAwO1xuLy8vICAgIH1cbi8vLyAgfVxuLy8vXG4vLy8gIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDMyMHB4KSBhbmQgKG1heC13aWR0aDogNDgwcHgpIHtcbi8vLyAgICAubmV3LWNvbnRleHQtZWxlbWVudCB7XG4vLy8gICAgICBkaXNwbGF5OiBibG9jaztcbi8vLyAgICAgIGZsb2F0OiBsZWZ0O1xuLy8vICAgICAgbWFyZ2luLXJpZ2h0OiA0LjgyOTE2JTtcbi8vLyAgICAgIHdpZHRoOiAxMDAlO1xuLy8vICAgIH1cbi8vL1xuLy8vICAgIC5uZXctY29udGV4dC1lbGVtZW50Omxhc3QtY2hpbGQge1xuLy8vICAgICAgbWFyZ2luLXJpZ2h0OiAwO1xuLy8vICAgIH1cbi8vLyAgfVxuXG5AbWl4aW4gbWVkaWEoJHF1ZXJ5OiAkZmVhdHVyZSAkdmFsdWUgJGNvbHVtbnMsICR0b3RhbC1jb2x1bW5zOiAkZ3JpZC1jb2x1bW5zKSB7XG4gIEBpZiBsZW5ndGgoJHF1ZXJ5KSA9PSAxIHtcbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAoJGRlZmF1bHQtZmVhdHVyZTogbnRoKCRxdWVyeSwgMSkpIHtcbiAgICAgICRkZWZhdWx0LWdyaWQtY29sdW1uczogJGdyaWQtY29sdW1ucztcbiAgICAgICRncmlkLWNvbHVtbnM6ICR0b3RhbC1jb2x1bW5zICFnbG9iYWw7XG4gICAgICBAY29udGVudDtcbiAgICAgICRncmlkLWNvbHVtbnM6ICRkZWZhdWx0LWdyaWQtY29sdW1ucyAhZ2xvYmFsO1xuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgJGxvb3AtdG86IGxlbmd0aCgkcXVlcnkpO1xuICAgICRtZWRpYS1xdWVyeTogXCJzY3JlZW4gYW5kIFwiO1xuICAgICRkZWZhdWx0LWdyaWQtY29sdW1uczogJGdyaWQtY29sdW1ucztcbiAgICAkZ3JpZC1jb2x1bW5zOiAkdG90YWwtY29sdW1ucyAhZ2xvYmFsO1xuXG4gICAgQGlmIGlzLW5vdChpcy1ldmVuKGxlbmd0aCgkcXVlcnkpKSkge1xuICAgICAgJGdyaWQtY29sdW1uczogbnRoKCRxdWVyeSwgJGxvb3AtdG8pICFnbG9iYWw7XG4gICAgICAkbG9vcC10bzogJGxvb3AtdG8gLSAxO1xuICAgIH1cblxuICAgICRpOiAxO1xuICAgIEB3aGlsZSAkaSA8PSAkbG9vcC10byB7XG4gICAgICAkbWVkaWEtcXVlcnk6ICRtZWRpYS1xdWVyeSArIFwiKFwiICsgbnRoKCRxdWVyeSwgJGkpICsgXCI6IFwiICsgbnRoKCRxdWVyeSwgJGkgKyAxKSArIFwiKSBcIjtcblxuICAgICAgQGlmICgkaSArIDEpICE9ICRsb29wLXRvIHtcbiAgICAgICAgJG1lZGlhLXF1ZXJ5OiAkbWVkaWEtcXVlcnkgKyBcImFuZCBcIjtcbiAgICAgIH1cblxuICAgICAgJGk6ICRpICsgMjtcbiAgICB9XG5cbiAgICBAbWVkaWEgI3skbWVkaWEtcXVlcnl9IHtcbiAgICAgIEBjb250ZW50O1xuICAgICAgJGdyaWQtY29sdW1uczogJGRlZmF1bHQtZ3JpZC1jb2x1bW5zICFnbG9iYWw7XG4gICAgfVxuICB9XG59XG4iLCJAY2hhcnNldCBcIlVURi04XCI7XG5cbkBtaXhpbiBicmVha3BvaW50KCRxdWVyeTokZmVhdHVyZSAkdmFsdWUgJGNvbHVtbnMsICR0b3RhbC1jb2x1bW5zOiAkZ3JpZC1jb2x1bW5zKSB7XG4gIEBpbmNsdWRlIC1uZWF0LXdhcm4oXCJUaGUgYnJlYWtwb2ludCgpIG1peGluIHdhcyByZW5hbWVkIHRvIG1lZGlhKCkgaW4gTmVhdCAxLjAuIFBsZWFzZSB1cGRhdGUgeW91ciBwcm9qZWN0IHdpdGggdGhlIG5ldyBzeW50YXggYmVmb3JlIHRoZSBuZXh0IHZlcnNpb24gYnVtcC5cIik7XG5cbiAgQGlmIGxlbmd0aCgkcXVlcnkpID09IDEge1xuICAgIEBtZWRpYSBzY3JlZW4gYW5kICgkZGVmYXVsdC1mZWF0dXJlOiBudGgoJHF1ZXJ5LCAxKSkge1xuICAgICAgJGRlZmF1bHQtZ3JpZC1jb2x1bW5zOiAkZ3JpZC1jb2x1bW5zO1xuICAgICAgJGdyaWQtY29sdW1uczogJHRvdGFsLWNvbHVtbnM7XG4gICAgICBAY29udGVudDtcbiAgICAgICRncmlkLWNvbHVtbnM6ICRkZWZhdWx0LWdyaWQtY29sdW1ucztcbiAgICB9XG4gIH0gQGVsc2UgaWYgbGVuZ3RoKCRxdWVyeSkgPT0gMiB7XG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG50aCgkcXVlcnksIDEpOiBudGgoJHF1ZXJ5LCAyKSkge1xuICAgICAgJGRlZmF1bHQtZ3JpZC1jb2x1bW5zOiAkZ3JpZC1jb2x1bW5zO1xuICAgICAgJGdyaWQtY29sdW1uczogJHRvdGFsLWNvbHVtbnM7XG4gICAgICBAY29udGVudDtcbiAgICAgICRncmlkLWNvbHVtbnM6ICRkZWZhdWx0LWdyaWQtY29sdW1ucztcbiAgICB9XG4gIH0gQGVsc2UgaWYgbGVuZ3RoKCRxdWVyeSkgPT0gMyB7XG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG50aCgkcXVlcnksIDEpOiBudGgoJHF1ZXJ5LCAyKSkge1xuICAgICAgJGRlZmF1bHQtZ3JpZC1jb2x1bW5zOiAkZ3JpZC1jb2x1bW5zO1xuICAgICAgJGdyaWQtY29sdW1uczogbnRoKCRxdWVyeSwgMyk7XG4gICAgICBAY29udGVudDtcbiAgICAgICRncmlkLWNvbHVtbnM6ICRkZWZhdWx0LWdyaWQtY29sdW1ucztcbiAgICB9XG4gIH0gQGVsc2UgaWYgbGVuZ3RoKCRxdWVyeSkgPT0gNCB7XG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG50aCgkcXVlcnksIDEpOiBudGgoJHF1ZXJ5LCAyKSkgYW5kIChudGgoJHF1ZXJ5LCAzKTogbnRoKCRxdWVyeSwgNCkpIHtcbiAgICAgICRkZWZhdWx0LWdyaWQtY29sdW1uczogJGdyaWQtY29sdW1ucztcbiAgICAgICRncmlkLWNvbHVtbnM6ICR0b3RhbC1jb2x1bW5zO1xuICAgICAgQGNvbnRlbnQ7XG4gICAgICAkZ3JpZC1jb2x1bW5zOiAkZGVmYXVsdC1ncmlkLWNvbHVtbnM7XG4gICAgfVxuICB9IEBlbHNlIGlmIGxlbmd0aCgkcXVlcnkpID09IDUge1xuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChudGgoJHF1ZXJ5LCAxKTogbnRoKCRxdWVyeSwgMikpIGFuZCAobnRoKCRxdWVyeSwgMyk6IG50aCgkcXVlcnksIDQpKSB7XG4gICAgICAkZGVmYXVsdC1ncmlkLWNvbHVtbnM6ICRncmlkLWNvbHVtbnM7XG4gICAgICAkZ3JpZC1jb2x1bW5zOiBudGgoJHF1ZXJ5LCA1KTtcbiAgICAgIEBjb250ZW50O1xuICAgICAgJGdyaWQtY29sdW1uczogJGRlZmF1bHQtZ3JpZC1jb2x1bW5zO1xuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgQGluY2x1ZGUgLW5lYXQtd2FybihcIldyb25nIG51bWJlciBvZiBhcmd1bWVudHMgZm9yIGJyZWFrcG9pbnQoKS4gUmVhZCB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgbW9yZSBkZXRhaWxzLlwiKTtcbiAgfVxufVxuXG5AbWl4aW4gbnRoLW9tZWdhKCRudGgsICRkaXNwbGF5OiBibG9jaywgJGRpcmVjdGlvbjogZGVmYXVsdCkge1xuICBAaW5jbHVkZSAtbmVhdC13YXJuKFwiVGhlIG50aC1vbWVnYSgpIG1peGluIGlzIGRlcHJlY2F0ZWQuIFBsZWFzZSB1c2Ugb21lZ2EoKSBpbnN0ZWFkLlwiKTtcbiAgQGluY2x1ZGUgb21lZ2EoJG50aCAkZGlzcGxheSwgJGRpcmVjdGlvbik7XG59XG5cbi8vLyBSZXNldHMgdGhlIGFjdGl2ZSBkaXNwbGF5IHByb3BlcnR5IHRvIGBibG9ja2AuIFBhcnRpY3VsYXJseSB1c2VmdWwgd2hlbiBjaGFuZ2luZyB0aGUgZGlzcGxheSBwcm9wZXJ0eSBpbiBhIHNpbmdsZSByb3cuXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gVXNhZ2Vcbi8vLyAgIC5lbGVtZW50IHtcbi8vLyAgICAgQGluY2x1ZGUgcm93KHRhYmxlKTtcbi8vLyAgICAgLy8gQ29udGV4dCBjaGFuZ2VkIHRvIHRhYmxlIGRpc3BsYXlcbi8vLyAgIH1cbi8vL1xuLy8vICAgQGluY2x1ZGUgcmVzZXQtZGlzcGxheTtcbi8vLyAgIC8vIENvbnRleHQgaXMgcmVzZXQgdG8gYmxvY2sgZGlzcGxheVxuXG5AbWl4aW4gcmVzZXQtZGlzcGxheSB7XG4gICRjb250YWluZXItZGlzcGxheS10YWJsZTogZmFsc2UgIWdsb2JhbDtcbiAgQGluY2x1ZGUgLW5lYXQtd2FybihcIlJlc2V0dGluZyAkZGlzcGxheSB3aWxsIGJlIGRlcHJlY2F0ZWQgaW4gZnV0dXJlIHZlcnNpb25zIGluIGZhdm9yIG9mIHRoZSBkaXNwbGF5KCl7Li4ufSBtaXhpbi5cIik7XG59XG5cbi8vLyBSZXNldHMgdGhlIGFjdGl2ZSBsYXlvdXQgZGlyZWN0aW9uIHRvIHRoZSBkZWZhdWx0IHZhbHVlIHNldCBpbiBgJGRlZmF1bHQtbGF5b3V0LWRpcmVjdGlvbmAuIFBhcnRpY3VsYXJseSB1c2VmdWwgd2hlbiBjaGFuZ2luZyB0aGUgbGF5b3V0IGRpcmVjdGlvbiBpbiBhIHNpbmdsZSByb3cuXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzIC0gVXNhZ2Vcbi8vLyAgIC5lbGVtZW50IHtcbi8vLyAgICAgQGluY2x1ZGUgcm93KCRkaXJlY3Rpb246IFJUTCk7XG4vLy8gICAgIC8vIENvbnRleHQgY2hhbmdlZCB0byByaWdodC10by1sZWZ0XG4vLy8gICB9XG4vLy9cbi8vLyAgIEBpbmNsdWRlIHJlc2V0LWxheW91dC1kaXJlY3Rpb247XG4vLy8gICAvLyBDb250ZXh0IGlzIHJlc2V0IHRvIGxlZnQtdG8tcmlnaHRcblxuQG1peGluIHJlc2V0LWxheW91dC1kaXJlY3Rpb24ge1xuICAkbGF5b3V0LWRpcmVjdGlvbjogJGRlZmF1bHQtbGF5b3V0LWRpcmVjdGlvbiAhZ2xvYmFsO1xuICBAaW5jbHVkZSAtbmVhdC13YXJuKFwiUmVzZXR0aW5nICRkaXJlY3Rpb24gd2lsbCBiZSBkZXByZWNhdGVkIGluIGZ1dHVyZSB2ZXJzaW9ucyBpbiBmYXZvciBvZiB0aGUgZGlyZWN0aW9uKCl7Li4ufSBtaXhpbi5cIik7XG59XG5cbi8vLyBSZXNldHMgYm90aCB0aGUgYWN0aXZlIGxheW91dCBkaXJlY3Rpb24gYW5kIHRoZSBhY3RpdmUgZGlzcGxheSBwcm9wZXJ0eS5cbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBVc2FnZVxuLy8vICAgLmVsZW1lbnQge1xuLy8vICAgICBAaW5jbHVkZSByb3codGFibGUsIFJUTCk7XG4vLy8gICAgIC8vIENvbnRleHQgY2hhbmdlZCB0byB0YWJsZSB0YWJsZSBhbmQgcmlnaHQtdG8tbGVmdFxuLy8vICAgfVxuLy8vXG4vLy8gICBAaW5jbHVkZSByZXNldC1hbGw7XG4vLy8gICAvLyBDb250ZXh0IGlzIHJlc2V0IHRvIGJsb2NrIGRpc3BsYXkgYW5kIGxlZnQtdG8tcmlnaHRcblxuQG1peGluIHJlc2V0LWFsbCB7XG4gIEBpbmNsdWRlIHJlc2V0LWRpc3BsYXk7XG4gIEBpbmNsdWRlIHJlc2V0LWxheW91dC1kaXJlY3Rpb247XG59XG4iLCJAY2hhcnNldCBcIlVURi04XCI7XG5cbkBtaXhpbiBncmlkLWNvbHVtbi1ncmFkaWVudCgkdmFsdWVzLi4uKSB7XG4gIGJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KGxlZnQsICR2YWx1ZXMpO1xuICBiYWNrZ3JvdW5kLWltYWdlOiAtbW96LWxpbmVhci1ncmFkaWVudChsZWZ0LCAkdmFsdWVzKTtcbiAgYmFja2dyb3VuZC1pbWFnZTogLW1zLWxpbmVhci1ncmFkaWVudChsZWZ0LCAkdmFsdWVzKTtcbiAgYmFja2dyb3VuZC1pbWFnZTogLW8tbGluZWFyLWdyYWRpZW50KGxlZnQsICR2YWx1ZXMpO1xuICBiYWNrZ3JvdW5kLWltYWdlOiB1bnF1b3RlKFwibGluZWFyLWdyYWRpZW50KHRvIGxlZnQsICN7JHZhbHVlc30pXCIpO1xufVxuXG5AaWYgJHZpc3VhbC1ncmlkID09IHRydWUgb3IgJHZpc3VhbC1ncmlkID09IHllcyB7XG4gIGJvZHk6YmVmb3JlIHtcbiAgICBAaW5jbHVkZSBncmlkLWNvbHVtbi1ncmFkaWVudChncmFkaWVudC1zdG9wcygkZ3JpZC1jb2x1bW5zKSk7XG4gICAgY29udGVudDogXCJcIjtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIGxlZnQ6IDA7XG4gICAgbWFyZ2luOiAwIGF1dG87XG4gICAgbWF4LXdpZHRoOiAkbWF4LXdpZHRoO1xuICAgIG9wYWNpdHk6ICR2aXN1YWwtZ3JpZC1vcGFjaXR5O1xuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICByaWdodDogMDtcbiAgICB3aWR0aDogMTAwJTtcblxuICAgIEBpZiAkdmlzdWFsLWdyaWQtaW5kZXggPT0gYmFjayB7XG4gICAgICB6LWluZGV4OiAtMTtcbiAgICB9XG5cbiAgICBAZWxzZSBpZiAkdmlzdWFsLWdyaWQtaW5kZXggPT0gZnJvbnQge1xuICAgICAgei1pbmRleDogOTk5OTtcbiAgICB9XG5cbiAgICBAZWFjaCAkYnJlYWtwb2ludCBpbiAkdmlzdWFsLWdyaWQtYnJlYWtwb2ludHMge1xuICAgICAgQGlmICRicmVha3BvaW50IHtcbiAgICAgICAgQGluY2x1ZGUgbWVkaWEoJGJyZWFrcG9pbnQpIHtcbiAgICAgICAgICBAaW5jbHVkZSBncmlkLWNvbHVtbi1ncmFkaWVudChncmFkaWVudC1zdG9wcygkZ3JpZC1jb2x1bW5zKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcblxuLy8vIENoYW5nZXMgdGhlIGRpc3BsYXkgcHJvcGVydHkgdXNlZCBieSBvdGhlciBtaXhpbnMgY2FsbGVkIGluIHRoZSBjb2RlIGJsb2NrIGFyZ3VtZW50LlxuLy8vXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRkaXNwbGF5IFtibG9ja11cbi8vLyAgIERpc3BsYXkgdmFsdWUgdG8gYmUgdXNlZCB3aXRoaW4gdGhlIGJsb2NrLiBDYW4gYmUgYHRhYmxlYCBvciBgYmxvY2tgLlxuLy8vXG4vLy8gQGV4YW1wbGUgc2Nzc1xuLy8vICAgQGluY2x1ZGUgZGlzcGxheS1jb250ZXh0KHRhYmxlKSB7XG4vLy8gICAgLmRpc3BsYXktdGFibGUge1xuLy8vICAgICAgQGluY2x1ZGUgc3Bhbi1jb2x1bW5zKDYpO1xuLy8vICAgICB9XG4vLy8gICB9XG4vLy9cbi8vLyBAZXhhbXBsZSBjc3Ncbi8vLyAgIC5kaXNwbGF5LXRhYmxlIHtcbi8vLyAgICAgIGRpc3BsYXk6IHRhYmxlLWNlbGw7XG4vLy8gICAgICAuLi5cbi8vLyAgIH1cblxuQG1peGluIGRpc3BsYXktY29udGV4dCgkZGlzcGxheTogYmxvY2spIHtcbiAgJHNjb3BlLWRpc3BsYXk6ICRjb250YWluZXItZGlzcGxheS10YWJsZTtcbiAgJGNvbnRhaW5lci1kaXNwbGF5LXRhYmxlOiAkZGlzcGxheSA9PSB0YWJsZSAhZ2xvYmFsO1xuXG4gIEBjb250ZW50O1xuXG4gICRjb250YWluZXItZGlzcGxheS10YWJsZTogJHNjb3BlLWRpc3BsYXkgIWdsb2JhbDtcbn1cbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcblxuLy8vIENoYW5nZXMgdGhlIGRpcmVjdGlvbiBwcm9wZXJ0eSB1c2VkIGJ5IG90aGVyIG1peGlucyBjYWxsZWQgaW4gdGhlIGNvZGUgYmxvY2sgYXJndW1lbnQuXG4vLy9cbi8vLyBAcGFyYW0ge1N0cmluZ30gJGRpcmVjdGlvbiBbbGVmdC10by1yaWdodF1cbi8vLyAgIExheW91dCBkaXJlY3Rpb24gdG8gYmUgdXNlZCB3aXRoaW4gdGhlIGJsb2NrLiBDYW4gYmUgYGxlZnQtdG8tcmlnaHRgIG9yIGByaWdodC10by1sZWZ0YC5cbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBVc2FnZVxuLy8vICAgQGluY2x1ZGUgZGlyZWN0aW9uLWNvbnRleHQocmlnaHQtdG8tbGVmdCkge1xuLy8vICAgIC5yaWdodC10by1sZWZ0LWJsb2NrIHtcbi8vLyAgICAgIEBpbmNsdWRlIHNwYW4tY29sdW1ucyg2KTtcbi8vLyAgICAgfVxuLy8vICAgfVxuLy8vXG4vLy8gQGV4YW1wbGUgY3NzIC0gQ1NTIE91dHB1dFxuLy8vICAgLnJpZ2h0LXRvLWxlZnQtYmxvY2sge1xuLy8vICAgICBmbG9hdDogcmlnaHQ7XG4vLy8gICAgICAuLi5cbi8vLyAgIH1cblxuQG1peGluIGRpcmVjdGlvbi1jb250ZXh0KCRkaXJlY3Rpb246IGxlZnQtdG8tcmlnaHQpIHtcbiAgJHNjb3BlLWRpcmVjdGlvbjogJGxheW91dC1kaXJlY3Rpb247XG5cbiAgQGlmIHRvLWxvd2VyLWNhc2UoJGRpcmVjdGlvbikgPT0gXCJsZWZ0LXRvLXJpZ2h0XCIge1xuICAgICRsYXlvdXQtZGlyZWN0aW9uOiBMVFIgIWdsb2JhbDtcbiAgfSBAZWxzZSBpZiB0by1sb3dlci1jYXNlKCRkaXJlY3Rpb24pID09IFwicmlnaHQtdG8tbGVmdFwiIHtcbiAgICAkbGF5b3V0LWRpcmVjdGlvbjogUlRMICFnbG9iYWw7XG4gIH1cblxuICBAY29udGVudDtcblxuICAkbGF5b3V0LWRpcmVjdGlvbjogJHNjb3BlLWRpcmVjdGlvbiAhZ2xvYmFsO1xufVxuIiwiXG4kYm9yZGVyLWJveC1zaXppbmc6IHRydWUgIWRlZmF1bHQ7XG4kY29sdW1uOiA5MHB4O1xuJGd1dHRlcjogNTBweDtcbiRncmlkLWNvbHVtbnM6IDEyO1xuJG1heC13aWR0aDogMTEyMHB4O1xuXG4kc21hbGw6IG5ldy1icmVha3BvaW50KG1pbi13aWR0aCAwcHggbWF4LXdpZHRoIDY5OXB4IDEpO1xuJG1lZGl1bTogbmV3LWJyZWFrcG9pbnQobWluLXdpZHRoIDcwMHB4IG1heC13aWR0aCA5ODlweCA2KTtcbiRsYXJnZTogbmV3LWJyZWFrcG9pbnQobWluLXdpZHRoIDk5MHB4IDEyKTtcblxuLy8gVE9ETzogZGFzaGVkIG5hbWVzIGluc3RlYWQgb2YgY2FtZWwgY2FzZVxuJG1lZGl1bVRvTGFyZ2U6IG5ldy1icmVha3BvaW50KG1pbi13aWR0aCA3MDBweCA2KTtcbiRzbWFsbFRvTWVkaXVtOiBuZXctYnJlYWtwb2ludChtaW4td2lkdGggMHB4IG1heC13aWR0aCA5ODlweCk7XG5cbiIsIiRoaWdobGlnaHQtY29sb3I6IHJnYigwLCAxNzAsIDIwNSk7XG4kYnJhbmQtcmVkLWNvbG9yOiAjZTQxNTEzOyIsIioge1xuXHRtYXJnaW46IDA7XG5cdHBhZGRpbmc6IDA7XG59XG5cbiosICo6YmVmb3JlLCAqOmFmdGVyIHtcblx0Ym94LXNpemluZzogYm9yZGVyLWJveDtcbn1cblxuaHRtbCwgYm9keSB7XG5cdGhlaWdodDogMTAwJSAhaW1wb3J0YW50O1xufVxuXG5ib2R5IHtcblxuXHRsaW5lLWhlaWdodDogMS40O1xuXHRwYWRkaW5nLXRvcDogNzBweDtcblxuXHQmLnRvb2xiYXIge1xuXHRcdHBhZGRpbmctdG9wOiAwO1xuXHR9XG59XG5cbmltZyB7XG5cdG1heC13aWR0aDogMTAwJTtcblx0aGVpZ2h0OiBhdXRvO1xufVxuXG5hLCBhOmhvdmVyLCBhOmFjdGl2ZSwgYTp2aXNpdGVkIHtcblx0Y29sb3I6ICMwMDA7XG5cdHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbn1cblxucCB7XG5cdG1hcmdpbi1ib3R0b206IDIwcHg7XG59XG5cbnVsIHtcblx0bGlzdC1zdHlsZS10eXBlOiBub25lO1xufVxuXG51bC5zdGFuZGFyZCB7XG5cdGxpc3Qtc3R5bGUtdHlwZTogZGlzYztcblx0bGlzdC1zdHlsZS1wb3NpdGlvbjogb3V0c2lkZTtcblx0bWFyZ2luLWxlZnQ6IDEuM2VtO1xuXG5cdCYgbGkge1xuXHRcdG1hcmdpbi10b3A6IDAuMmVtO1xuXHR9XG59XG5cbmlucHV0IHtcblx0LXdlYmtpdC1ib3JkZXItcmFkaXVzOiAwcHg7XG5cdC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTsgXG59XG5cbmlucHV0W3R5cGU9dGV4dF0sIGlucHV0W3R5cGU9cGFzc3dvcmRdLCB0ZXh0YXJlYSB7XG5cdGJvcmRlcjoxcHggc29saWQgIzg4ODtcblx0b3V0bGluZTogMDtcblx0cGFkZGluZzogNHB4O1xufVxuXG5kaXZbcmVsPXRleHRdLCBbcmVsPWVtYWlsXSB7XG5cdGxpbmUtaGVpZ2h0OiAxLjc7XG5cdG1hcmdpbjogMTJweCAwO1xufVxuXG5cbmlucHV0W3R5cGU9Y2hlY2tib3hdIHtcblx0Ym9yZGVyOjFweCBzb2xpZCAjODg4O1xuXHRoZWlnaHQ6IDE0cHg7XG5cdC8vbWFyZ2luLWJvdHRvbTogNHB4O1xuXHRtYXJnaW4tcmlnaHQ6IDEwcHg7XG5cdHdpZHRoOiAxNHB4O1xuXHQtd2Via2l0LWFwcGVhcmFuY2U6IGNoZWNrYm94O1xufVxuXG5kaXZbcmVsPWNoZWNrYm94XSB7XG5cdGxpbmUtaGVpZ2h0OiAxLjc7XG5cdG1hcmdpbi1ib3R0b206IDEycHg7XG59XG5cbmlucHV0W3R5cGU9c3VibWl0XSB7XG5cdHBhZGRpbmc6IDRweCA4cHg7XG59XG5cbnNlbGVjdCB7XG5cdGJvcmRlcjogMXB4IHNvbGlkICM4ODg7XG5cdGJhY2tncm91bmQtY29sb3I6ICNGRkY7XG59XG5cbmxhYmVsIHtcblx0bWFyZ2luLWJvdHRvbTogNHB4O1xuXHRmb250LXdlaWdodDogbm9ybWFsO1xufVxuXG50aCB7XG5cdGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjQ0NDO1xufVxuXG50ci5ldmVuLCB0ci5vZGQge1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGO1xuXHRib3JkZXItYm90dG9tOiAxcHggc29saWQgI0NDQztcblx0cGFkZGluZzogMC4zZW0gMC42ZW07XG59XG5cbnRyLm9kZCB7XG5cdGJhY2tncm91bmQtY29sb3I6ICNGNUY1RjU7XG59XG5cbnRkLHRoIHtcblx0cGFkZGluZy10b3A6IDAuNWVtO1xuXHRwYWRkaW5nLWJvdHRvbTogMC41ZW07XG59XG5cbnRhYmxlLmRyYWdnYWJsZSB7XG5cblx0d2lkdGg6IDEwMCUgIWltcG9ydGFudDtcblxuXHQuaGFuZGxlIHtcblx0XHR3aWR0aDogMjJweCAhaW1wb3J0YW50O1xuXHRcdGhlaWdodDogMjJweCAhaW1wb3J0YW50O1xuXHRcdG1hcmdpbi1sZWZ0OiAwLjhlbSAhaW1wb3J0YW50O1xuXHR9XG59XG5cbmhyIHtcblx0Ym9yZGVyOjA7XG5cdGhlaWdodDogMXB4O1xuXHRmb250LXNpemU6IDBweDtcblx0ZGlzcGxheTogYmxvY2s7XG5cdGJhY2tncm91bmQ6ICMwMDA7XG5cdHBhZGRpbmc6IDFlbSAwO1xuXHRiYWNrZ3JvdW5kLW9yaWdpbjogcGFkZGluZy1ib3g7XG5cdGNsZWFyOiBib3RoO1xufVxuXG4uZm9ybS1yZXF1aXJlZCB7XG5cdGNvbG9yOiAjMDAwO1xufVxuIiwiQGZvbnQtZmFjZXtcblx0Zm9udC13ZWlnaHQ6IG5vcm1hbDtcblx0Zm9udC1mYW1pbHk6IFwiRnJ1dGlnZXIgTmV4dCBMVCBXMDYgTGlnaHRcIjtcblx0c3JjOiB1cmwoXCIuLi9mb250cy8xMzY2NTkwLzM1ZjJmY2Q1LTBiZDYtNDk3NC04YjRiLWEwNjY3YmM2MDliOS5lb3Q/I2llZml4XCIpO1xuXHRzcmM6IHVybChcIi4uL2ZvbnRzLzEzNjY1OTAvMzVmMmZjZDUtMGJkNi00OTc0LThiNGItYTA2NjdiYzYwOWI5LmVvdD8jaWVmaXhcIikgZm9ybWF0KFwiZW90XCIpLHVybChcIi4uL2ZvbnRzLzEzNjY1OTAvYTdiNDBhMTQtZGJjYS00OWZmLTg2NjgtYTI4MDg0MjE0NTViLndvZmZcIikgZm9ybWF0KFwid29mZlwiKSx1cmwoXCIuLi9mb250cy8xMzY2NTkwLzU0MzljMTBiLTQ2N2UtNGZlYi1iODY2LTdiMWI1ODhiZGMwOC50dGZcIikgZm9ybWF0KFwidHJ1ZXR5cGVcIiksdXJsKFwiLi4vZm9udHMvMTM2NjU5MC9hMWE5M2E5Ny0wM2QyLTQzMDktODM5My0zZTRjOWE0NTJmZjYuc3ZnI2ExYTkzYTk3LTAzZDItNDMwOS04MzkzLTNlNGM5YTQ1MmZmNlwiKSBmb3JtYXQoXCJzdmdcIik7XG59XG5cbkBmb250LWZhY2V7XG5cdGZvbnQtd2VpZ2h0OiBub3JtYWw7XG5cdGZvbnQtZmFtaWx5OiBcIkZydXRpZ2VyIE5leHQgTFQgVzA2IE1lZGl1bVwiO1xuXHRzcmM6IHVybChcIi4uL2ZvbnRzLzEzNjY1OTQvOGMxMWRiMzEtNjA0YS00ZmZmLTkwZWEtNWNjZDM4OWI3MjYwLmVvdD8jaWVmaXhcIik7XG5cdHNyYzogdXJsKFwiLi4vZm9udHMvMTM2NjU5NC84YzExZGIzMS02MDRhLTRmZmYtOTBlYS01Y2NkMzg5YjcyNjAuZW90PyNpZWZpeFwiKSBmb3JtYXQoXCJlb3RcIiksdXJsKFwiLi4vZm9udHMvMTM2NjU5NC8yMjZkYzA1MC0wNDQxLTQxZTYtOGQxYi0xMWI5NzQ3ODEyYTIud29mZlwiKSBmb3JtYXQoXCJ3b2ZmXCIpLHVybChcIi4uL2ZvbnRzLzEzNjY1OTQvOGQ4NmM4OWUtZjA5OS00OWIzLWI0Y2QtOTc5MDdiYTcxMjRlLnR0ZlwiKSBmb3JtYXQoXCJ0cnVldHlwZVwiKSx1cmwoXCIuLi9mb250cy8xMzY2NTk0Lzg1MjRlNGNmLTE5OTAtNGFjOS1hMGRlLWM3OTNjM2ZkNTk3Mi5zdmcjODUyNGU0Y2YtMTk5MC00YWM5LWEwZGUtYzc5M2MzZmQ1OTcyXCIpIGZvcm1hdChcInN2Z1wiKTtcbn1cblxuJXJlZ3VsYXItZm9udCB7XG5cdGZvbnQtZmFtaWx5OiBcIkZydXRpZ2VyIE5leHQgTFQgVzA2IExpZ2h0XCIsIEFyaWFsLCBzYW5zLXNlcmlmO1xufVxuXG4lYm9sZC1mb250IHtcblx0Zm9udC1mYW1pbHk6IFwiRnJ1dGlnZXIgTmV4dCBMVCBXMDYgTWVkaXVtXCIsIEFyaWFsLCBzYW5zLXNlcmlmO1xuXHRmb250LXdlaWdodDogbm9ybWFsO1xufVxuXG5ib2R5IHtcblx0Zm9udC1zaXplOiA5My43NSU7XG5cdEBleHRlbmQgJXJlZ3VsYXItZm9udDtcbn1cblxuaDEsaDIsaDMsaDQge1xuXHRAZXh0ZW5kICVyZWd1bGFyLWZvbnQ7XG5cdGZvbnQtd2VpZ2h0OiBub3JtYWw7XG5cdC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xuXHQtbW96LW9zeC1mb250LXNtb290aGluZzogZ3JheXNjYWxlO1xufVxuXG5iLCBzdHJvbmcge1xuXHRAZXh0ZW5kICVib2xkLWZvbnQ7XHRcblx0Zm9udC13ZWlnaHQ6IG5vcm1hbDtcbn1cbiIsIi8qKlxuICogVGVtcG9yYXJ5IGxvY2F0aW9uIGZvciBzdHlsZXMuXG4gKiBNb3ZlIHRoZXNlIHN0eWxlcyB0byBzZXBhcmF0ZSBmaWxlcyBsYXRlci5cbiAqL1xuXG4vLyBCdWdmaXgsIEBzZWUgaHR0cHM6Ly93d3cuZHJ1cGFsLm9yZy9ub2RlLzE2NzczNzRcbi5jb250ZXh0dWFsLWxpbmtzLXJlZ2lvbjpob3ZlciBhLmNvbnRleHR1YWwtbGlua3MtdHJpZ2dlciB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuIH1cblxuI3Rvb2xiYXIgKiB7XG5cdGJveC1zaXppbmc6IGNvbnRlbnQtYm94O1xufVxuXG4jdG9vbGJhci1tZW51ICB7XG5cdHZpc2liaWxpdHk6IGhpZGRlbjtcbn1cbiIsIi5tZXNzYWdlcy5lcnJvciB7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICBib3JkZXI6IDAgbm9uZTtcbiAgcGFkZGluZzogMTBweCAxMHB4IDEwcHggMDtcbiAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTtcbiAgY29sb3I6ICMwMGFhY2Q7XG59IiwiLmx1bWluYWlyZXMge1xuXG59XG5cbi5sdW1pbmFpcmVzLWl0ZW0ge1xuXG5cdG1hcmdpbi1ib3R0b206IDIwcHg7XG5cbiAgQGluY2x1ZGUgbWVkaWEoJHNtYWxsKSB7XG5cdFx0QGluY2x1ZGUgc3Bhbi1jb2x1bW5zKDYgb2YgMTIpO1xuICBcdEBpbmNsdWRlIG9tZWdhKDJuKTtcbiBcdFx0bWFyZ2luLWJvdHRvbTogMTBweDtcbiAgfVxuXG5cdEBpbmNsdWRlIG1lZGlhKCRtZWRpdW0pIHtcblx0XHRAaW5jbHVkZSBzcGFuLWNvbHVtbnMoNCBvZiAxMik7XG5cdCAgQGluY2x1ZGUgb21lZ2EoM24pO1xuXHR9XHRcblxuXHRAaW5jbHVkZSBtZWRpYSgkbGFyZ2UpIHtcblx0XHRAaW5jbHVkZSBzcGFuLWNvbHVtbnMoMyBvZiAxMik7XG5cdFx0QGluY2x1ZGUgb21lZ2EoNG4pO1xuXHR9XG59XG5cbi5sdW1pbmFpcmVzLWl0ZW0tdGl0bGUge1xuXHR0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuXHRtYXJnaW46IDVweCAwO1xuXHRmb250LXNpemU6IDEyMCU7XG5cdEBleHRlbmQgJXJlZ3VsYXItZm9udDtcbn1cblxuLmx1bWluYWlyZXMtaXRlbS10aXRsZSBhIHtcblx0dGV4dC1kZWNvcmF0aW9uOiBub25lO1xuXHRjb2xvcjogIzAwMDtcbn1cblxuLmx1bWluYWlyZXMtaXRlbS1pbWFnZSB7XG5cdHBhZGRpbmctYm90dG9tOiAxMDAlO1xuXHR3aWR0aDogMTAwJTtcblx0aGVpZ2h0OiAwcHg7XG5cdGRpc3BsYXk6IGJsb2NrO1xuXHRiYWNrZ3JvdW5kLXNpemU6IDEwMCU7XG5cdGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG5cdGZvbnQtc2l6ZTogMHB4O1xufVxuIiwiLnBhZ2Utd3JhcHBlciB7XG5cdG1pbi1oZWlnaHQ6IDEwMCU7XG5cdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0cGFkZGluZy1ib3R0b206IDMwMHB4O1xufVxuXG4ucGFnZS1oZWFkZXIge1xuXHRtaW4taGVpZ2h0OiA3MHB4O1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwyNTUsMjU1LC45Myk7XG5cdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0ei1pbmRleDogOTk4O1xuXHR0b3A6IDBweDtcblx0cG9zaXRpb246IGZpeGVkO1xuXHR3aWR0aDogMTAwJTtcblxuXHQuY29tcGFjdC1tZW51LS12aXNpYmxlICYge1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICMwMDA7XG5cdH1cblxuXHRib2R5LmFkbWluLW1lbnUgJiwgYm9keS50b29sYmFyICYge1xuXHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0fVxufVxuXG4ucGFnZS1oZWFkZXItaW5uZXIge1xuXG5cdEBpbmNsdWRlIG1lZGlhKCRzbWFsbCkge1xuXHRcdEBpbmNsdWRlIHBhZCgwIDE1cHggMCAxNXB4KTtcblx0fVxuXG5cdEBpbmNsdWRlIG1lZGlhKCRtZWRpdW0pIHtcblx0XHRAaW5jbHVkZSBwYWQoMCAzMHB4IDAgMzBweCk7XG5cdH1cblxuXHRAaW5jbHVkZSBtZWRpYSgkbGFyZ2UpIHtcblx0XHRAaW5jbHVkZSBwYWQoMCA4MHB4IDAgODBweCk7XG5cdH1cblxuXHRwb3NpdGlvbjogcmVsYXRpdmU7XG59XG5cbi5wYWdlLWhlYWRlci1sb2dvIHtcblx0YmFja2dyb3VuZDogdXJsKC4uL2ltZy9wYWdlLWhlYWRlci1sb2dvLnN2Zykgbm8tcmVwZWF0O1xuXHQvL3dpZHRoOiAyMTNweDtcblx0Ly9oZWlnaHQ6IDMwcHg7XG5cdHdpZHRoOiAxOTBweDtcblx0aGVpZ2h0OiAzOXB4O1xuXHRtYXJnaW46IDE1cHggMCAxNXB4IDA7XG5cdGRpc3BsYXk6IGlubGluZS1ibG9jaztcblx0ZmxvYXQ6IGxlZnQ7XG5cblx0LmNvbXBhY3QtbWVudS0tdmlzaWJsZSAmIHtcblx0XHR2aXNpYmlsaXR5OiBoaWRkZW47XG5cdH1cblxufVxuXG4ucGFnZS1oZWFkZXItc2l0ZS1uYW1lIHtcblx0dGV4dC1pbmRlbnQ6IC02Nzg5cHg7XG5cdGRpc3BsYXk6IGJsb2NrO1xufVxuXG4ucGFnZS1oZWFkZXItbmF2aWdhdGlvbiB7XG5cdG1hcmdpbi10b3A6IDE4cHg7XG5cdGZsb2F0OiByaWdodDtcblxuXHQvKipcblx0ICogSGlkZSBuYXZpZ2F0aW9uIGZvciBzbWFsbCByZXNvbHV0b25zLlxuXHQgKiBBIGphdmFzY3JpcHQgbmF2aWdhdGlvbiB3aWxsIGJlIGRpc3BsYXllZCBpbnN0ZWFkLlxuXHQgKi9cblx0QGluY2x1ZGUgbWVkaWEoJHNtYWxsVG9NZWRpdW0pIHtcblx0XHQuanMgJiB7XG5cdFx0XHRkaXNwbGF5OiBub25lO1xuXHRcdH1cblx0fVxufVxuXG4ucGFnZS1oZWFkZXItbmF2aWdhdGlvbiBsaSB7XG5cdGRpc3BsYXk6IGlubGluZS1ibG9jaztcblx0bWFyZ2luLWxlZnQ6IDI1cHg7XG5cblx0YSB7XG5cdFx0Y29sb3I6ICNGRkY7XG5cdFx0dGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcblx0XHR0ZXh0LWRlY29yYXRpb246IG5vbmU7XG5cdFx0Zm9udC1zaXplOiAxMjUlO1xuXG5cdFx0Jjpob3ZlciB7XG5cdFx0XHRjb2xvcjogI0YxRjFGMTtcblx0XHR9XG5cdH1cblxuXHQmLmFjdGl2ZS10cmFpbCBhLCAmLmFjdGl2ZSBhIHtcblx0XHRvcGFjaXR5OiAuODtcblx0fVxufVxuXG4ucGFnZS1ib2R5IHtcblxuXHRtYXJnaW4tdG9wOiAzNXB4O1xuXG5cdEBpbmNsdWRlIG1lZGlhKCRzbWFsbCkge1xuXHRcdEBpbmNsdWRlIG91dGVyLWNvbnRhaW5lcig3MDBweCk7XG5cdFx0QGluY2x1ZGUgcGFkKDAgMTVweCAwIDE1cHgpO1xuXHR9XG5cblx0QGluY2x1ZGUgbWVkaWEoJG1lZGl1bSkge1xuXHQgIEBpbmNsdWRlIG91dGVyLWNvbnRhaW5lcig5OTBweCk7XG5cdCBcdEBpbmNsdWRlIHBhZCgwIDMwcHggMCAzMHB4KTtcblx0fVxuXG5cdEBpbmNsdWRlIG1lZGlhKCRsYXJnZSkge1xuXHQgIEBpbmNsdWRlIG91dGVyLWNvbnRhaW5lcigxMjAwcHgpO1xuXHQgIEBpbmNsdWRlIHBhZCgwIDQwcHggMCA0MHB4KTtcblx0fVxuXG5cdHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuXG5cdC5ub2RlLXR5cGUtZnJvbnQtc3VicGFnZSAmLFxuXHQubm9kZS10eXBlLW5ld3MgJiB7XG5cblx0XHRAaW5jbHVkZSBtZWRpYSgkbGFyZ2UpIHtcblx0XHRcdEBpbmNsdWRlIG91dGVyLWNvbnRhaW5lcig5MDBweCk7XG5cdFx0XHRAaW5jbHVkZSBwYWQoMCk7XG5cdFx0fVxuXHR9XG5cbn1cblxuLnBhZ2UtYm9keS1wcmUge1xuXG59XG5cbi5wYWdlLWJvZHktLWZyb250IHtcblxuXHRtYXgtd2lkdGg6IDEwMCU7XG5cdG1pbi1oZWlnaHQ6IDEwMCU7XG5cdHBhZGRpbmc6IDA7XG59XG5cbi5wYWdlLWJvZHktdGl0bGUge1xuXHRmb250LXNpemU6IDE3MCU7XG5cdHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG5cdG1hcmdpbi1ib3R0b206IDE1cHg7XG5cdG1hcmdpbi10b3A6IDBweDtcblx0cGFkZGluZy1ib3R0b206IDE1cHg7XG5cdGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjMDAwO1xuXHR0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcblx0d2hpdGUtc3BhY2U6IG5vd3JhcDtcblx0b3ZlcmZsb3c6IGhpZGRlbjtcblxuXHQvKipcblx0ICogUGFnZSBiYW5uZXIvaGVhZGVyIGltYWdlIGlzIHByZXNlbnRcblx0ICovXG5cdGJvZHk6bm90KFtjbGFzcyo9dW5vYnRydXNpdmUtaGVhZGxpbmVdKSAucGFnZS1iYW5uZXIgKyAucGFnZS1ib2R5ICYge1xuXG5cdFx0bWFyZ2luLXRvcDogLTc1cHg7XG5cdFx0Y29sb3I6ICNGRkY7XG5cdFx0Ym9yZGVyLWJvdHRvbTogMHB4O1xuXHRcdEBleHRlbmQgJWJvbGQtZm9udDtcblxuXHRcdEBpbmNsdWRlIG1lZGlhKCRzbWFsbCkge1xuXHRcdFx0Zm9udC1zaXplOiAxMzAlO1xuXHRcdFx0bWFyZ2luLXRvcDogLTYycHg7XG5cdFx0fVxuXHR9XG59XG5cbi5wYWdlLWJvZHktdGl0bGUtY291bnQge1xuXHRjb2xvcjogJGhpZ2hsaWdodC1jb2xvcjtcbn1cblxuLnBhZ2UtYm9keS1zaWRlYmFyLWltYWdlIHtcblxuXHRiYWNrZ3JvdW5kLXNpemU6IDEwMCUgYXV0bztcblxuXHRAaW5jbHVkZSBzcGFuLWNvbHVtbnMoMyBvZiA4KTtcblx0QGluY2x1ZGUgb21lZ2EoKTtcblxuXHRAaW5jbHVkZSBtZWRpYSgkc21hbGwpIHtcblxuXHRcdEBpbmNsdWRlIHNwYW4tY29sdW1ucygxIG9mIDEpO1xuXHRcdEBpbmNsdWRlIG9tZWdhKCk7XG5cdH1cblxuXHRpbWcge1xuXHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdG9wYWNpdHk6IC41O1xuXHRcdHdpZHRoOiAxMDAlO1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICNGRkY7XG5cdH1cblxufVxuXG5ib2R5Om5vdChbY2xhc3MqPXVub2J0cnVzaXZlLWhlYWRsaW5lXSkgLnBhZ2UtYmFubmVyIHtcblxuXHR3aWR0aDogMTAwJTtcblx0b3ZlcmZsb3c6IGhpZGRlbjtcblxuXHRpbWcge1xuXHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdHdpZHRoOiAxMDAlO1xuXHRcdGhlaWdodDogYXV0bztcblxuXHRcdEBpbmNsdWRlIG1lZGlhKCRzbWFsbCkge1xuXG5cdFx0XHQucGF0aC11bnRlcm5laG1lbi10ZWFtICYge1xuXG5cdFx0XHRcdHdpZHRoOiAxNjAlO1xuXHRcdFx0XHRtYXgtd2lkdGg6IDE2MCU7XG5cdFx0XHRcdG1hcmdpbi1sZWZ0OiAtMzAlO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cblx0JjphZnRlciB7XG5cdFx0Y29udGVudDogJyc7XG5cdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0YmFja2dyb3VuZDogcmdiYSgkaGlnaGxpZ2h0LWNvbG9yLCAwLjgpO1xuXHRcdHdpZHRoOiAxMDAlO1xuXHRcdGhlaWdodDogNTBweDtcblx0XHRtYXJnaW4tdG9wOiAtNTBweDtcblx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdFx0ei1pbmRleDogMDtcblxuXHRcdEBpbmNsdWRlIG1lZGlhKCRzbWFsbCkge1xuXHRcdFx0aGVpZ2h0OiAzMHB4O1xuXHRcdFx0bWFyZ2luLXRvcDogLTMwcHg7XG5cdFx0fVxuXHR9XG5cbn1cblxuLnBhZ2UtYmFubmVyIGltZyB7XG5cdGRpc3BsYXk6IGJsb2NrO1xufVxuXG4ucGFnZS1iYXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTZlN2U5O1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIEBpbmNsdWRlIGNsZWFyZml4O1xufVxuXG4ucGFnZS1iYXItaW5uZXIge1xuXG5cdEBpbmNsdWRlIG1lZGlhKCRzbWFsbCkge1xuXHQgIEBpbmNsdWRlIG91dGVyLWNvbnRhaW5lcig3MDBweCk7XG5cdH1cblxuXHRAaW5jbHVkZSBtZWRpYSgkbWVkaXVtKSB7XG5cdCAgQGluY2x1ZGUgb3V0ZXItY29udGFpbmVyKDk5MHB4KTtcblx0IFx0QGluY2x1ZGUgcGFkKDAgMzBweCAwIDMwcHgpO1xuXHR9XG5cblx0QGluY2x1ZGUgbWVkaWEoJGxhcmdlKSB7XG5cdCAgQGluY2x1ZGUgb3V0ZXItY29udGFpbmVyKDEyMDBweCk7XG5cdCAgQGluY2x1ZGUgcGFkKDAgNDBweCAwIDQwcHgpO1xuXHR9XG5cblx0cG9zaXRpb246IHJlbGF0aXZlO1xuXG5cblx0LmNvbnRhY3QtcGFnZSAmIHtcblx0XHRtYXgtd2lkdGg6IDEwMCU7XG5cdFx0cGFkZGluZzogMDtcblx0fVxuXG59XG5cbi5wYWdlLWZvb3Rlci1jb3B5cmlnaHQge1xuXHRmbG9hdDogcmlnaHQ7XG5cdGZvbnQtc2l6ZTogMTIwJTtcbn1cblxuLnBhZ2UtZm9vdGVyIHtcblxuXHRiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwO1xuXHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdHdpZHRoOiAxMDAlO1xuXHRib3R0b206IDA7XG5cdGxlZnQ6IDA7XG5cdHBhZGRpbmc6IDhweCAwO1xuXHRjb2xvcjogI0ZGRjtcblxuXHRAaW5jbHVkZSBtZWRpYSgkc21hbGwpIHtcblx0XHRmb250LXNpemU6IDgwJTtcblx0fVxuXG5cdCYucGFnZS1mb290ZXItZnJvbnQge1xuXHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0fVxuXG5cdG5hdiB7XG5cdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHRcdGZvbnQtc2l6ZTogMTIwJTtcblx0fVxuXG5cdGEsIGE6bGluaywgYTphY3RpdmUsIGE6dmlzaXRlZCB7XG5cdFx0Y29sb3I6ICNGRkY7XG5cdH1cblxuXHRsaSB7XG5cblx0XHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cblx0XHRhLCBhOmxpbmssIGE6YWN0aXZlLCBhOnZpc2l0ZWQge1xuXHRcdFx0Y29sb3I6ICNGRkY7XG5cdFx0XHRwYWRkaW5nOiAzcHggMCAzcHggMDtcblx0XHRcdHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG5cblx0XHRcdCY6YWZ0ZXIge1xuXHRcdFx0XHRjb250ZW50OiAnIHwgJyxcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRsaS5sYXN0IHtcblxuXHRcdGE6YWZ0ZXIge1xuXG5cdFx0XHRkaXNwbGF5OiBub25lO1xuXHRcdH1cblx0fVxufVxuXG4ucGFnZS1mb290ZXItaW5uZXIge1xuXHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdHBhZGRpbmc6IDA7XG5cdG1hcmdpbjogMCBhdXRvIDEwcHggYXV0bztcblx0dGV4dC1hbGlnbjogbGVmdDtcblxuXHRAaW5jbHVkZSBtZWRpYSgkc21hbGwpIHtcblx0XHRtYXgtd2lkdGg6IDkwJTtcblx0fVxuXG5cdEBpbmNsdWRlIG1lZGlhKCRtZWRpdW0pIHtcblx0XHRtYXgtd2lkdGg6IDkwJTtcblx0fVxuXG5cdEBpbmNsdWRlIG1lZGlhKCRsYXJnZSkge1xuXHRcdG1heC13aWR0aDogOTAwcHg7XG5cdH1cblxuXG5cdCY6YWZ0ZXIge1xuXHRcdGNvbnRlbnQ6ICcnO1xuXHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdGJhY2tncm91bmQ6IHVybCguLi9pbWcvcGFnZS1mb290ZXItc3BvdGxpZ2h0LmpwZykgbm8tcmVwZWF0IHJpZ2h0IGJvdHRvbTtcblx0XHRiYWNrZ3JvdW5kLXNpemU6IGNvbnRhaW47XG5cdFx0d2lkdGg6IDI2NnB4O1xuXHRcdGhlaWdodDogMTYwcHg7XG5cdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdGJvdHRvbTogLTE4cHg7XG5cdFx0bGVmdDogLTMwcHg7XG5cdFx0dHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0xMDAlKTtcblx0fVxufVxuIiwiXG4uY29tcGFjdC1tZW51LXRyaWdnZXIge1xuXHRwYWRkaW5nOiAyMHB4IDM1cHggMTZweCAwcHg7IFxuXHRkaXNwbGF5OiBibG9jaztcblx0cG9zaXRpb246IGFic29sdXRlO1xuICAgIHotaW5kZXg6IDk5Mjtcblx0dG9wOiAxM3B4O1xuXHRyaWdodDogODBweDtcblxuICBAaW5jbHVkZSBtZWRpYSgkbWVkaXVtKSB7XG4gICAgcmlnaHQ6IDMwcHg7XG4gIH1cblxuICBAaW5jbHVkZSBtZWRpYSgkc21hbGwpIHtcbiAgICByaWdodDogMTVweDtcbiAgfVxufVxuXG4uY29tcGFjdC1tZW51LXRyaWdnZXIgc3BhbiwgLmNvbXBhY3QtbWVudS10cmlnZ2VyIHNwYW46YmVmb3JlLCAuY29tcGFjdC1tZW51LXRyaWdnZXIgc3BhbjphZnRlciB7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgaGVpZ2h0OiA0cHg7XG4gIHdpZHRoOiAzNXB4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTQxNTEzO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBjb250ZW50OiAnJztcbn1cblxuLmNvbXBhY3QtbWVudS10cmlnZ2VyIHNwYW4ge1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiAjZTQxNTEzO1xuICBAaW5jbHVkZSB0cmFuc2Zvcm0ocm90YXRlKDApKTtcbiAgQGluY2x1ZGUgdHJhbnNpdGlvbihhbGwgMTAwbXMgbGluZWFyKTtcbn1cblxuXG4uY29tcGFjdC1tZW51LXRyaWdnZXIgc3BhbjpiZWZvcmUge1xuICBAaW5jbHVkZSB0cmFuc2Zvcm0odHJhbnNsYXRlWSgtMTBweCkgcm90YXRlKDApKTtcbiAgQGluY2x1ZGUgdHJhbnNpdGlvbih0cmFuc2Zvcm0gMjAwbXMgbGluZWFyKTtcbn1cblxuXG4uY29tcGFjdC1tZW51LXRyaWdnZXIgc3BhbjphZnRlciB7XG4gIEBpbmNsdWRlIHRyYW5zZm9ybSh0cmFuc2xhdGVZKDEwcHgpIHJvdGF0ZSgwKSk7XG4gIEBpbmNsdWRlIHRyYW5zaXRpb24odHJhbnNmb3JtIDIwMG1zIGxpbmVhcik7XG59XG5cblxuLmNvbXBhY3QtbWVudS10cmlnZ2VyLmFjdGl2ZSBzcGFuIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI0ZGRjtcblxuIC5jb21wYWN0LW1lbnUtLXZpc2libGUgJiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMwMDA7XG4gfVxufVxuXG4uY29tcGFjdC1tZW51LXRyaWdnZXIuYWN0aXZlIHNwYW46YmVmb3JlIHtcbiAgQGluY2x1ZGUgdHJhbnNmb3JtKHRyYW5zbGF0ZVkoMHB4KSByb3RhdGUoNDVkZWcpKTtcbn1cblxuLmNvbXBhY3QtbWVudS10cmlnZ2VyLmFjdGl2ZSBzcGFuOmFmdGVyIHtcbiAgQGluY2x1ZGUgdHJhbnNmb3JtKHRyYW5zbGF0ZVkoMHB4KSByb3RhdGUoLTQ1ZGVnKSk7XG59XG5cbiRjb21wYWN0LW1lbnUtd2lkdGg6IDEwMCU7XG5cbi5jb21wYWN0LW1lbnUge1xuXHR6LWluZGV4OiA5OTE7XG5cdHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIG1hcmdpbjogMDtcbiAgdG9wOiAtOTk5OXB4O1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIGxlZnQ6IDA7XG4gIGJhY2tncm91bmQ6ICMwMDA7XG5cbiAgLmNvbXBhY3QtbWVudS0tdmlzaWJsZSAmIHtcbiAgICB0b3A6IDA7XG4gIH1cbn1cblxuLmNvbXBhY3QtbWVudS1uYXZpZ2F0aW9uIHtcblx0cG9zaXRpb246IHJlbGF0aXZlO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDgwcHg7XG5cdHotaW5kZXg6IDk5MTtcbiAgd2lkdGg6IDEwMCU7XG4gIG1heC13aWR0aDogMTIwMHB4O1xuICBwYWRkaW5nOiA2M3B4IDQwcHggNXB4IDBweDtcblx0QGluY2x1ZGUgdHJhbnNpdGlvbihhbGwgMjAwbXMgMTAwbXMgbGluZWFyKTtcdFxuICBvcGFjaXR5OiAwO1xuXG4gIEBpbmNsdWRlIG1lZGlhKCRzbWFsbCkge1xuICAgIGxlZnQ6IDIwcHg7XG4gIH1cblxuXHQuY29tcGFjdC1tZW51LS12aXNpYmxlICYge1xuXHRcdG9wYWNpdHk6IDE7XG5cdH1cbn1cblxuLmNvbXBhY3QtbWVudS1uYXZpZ2F0aW9uID4gdWwgPiBsaSA+IGEge1xuXHRiYWNrZ3JvdW5kOiAjMDAwO1xuXHRmb250LXNpemU6IDU1MCU7XG5cdGRpc3BsYXk6IGJsb2NrO1xuXHR0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICBsaW5lLWhlaWdodDogMS4yO1x0XG4gIEBleHRlbmQgJWJvbGQtZm9udDsgXG5cdFxuICAmOmxpbmssICY6dmlzaXRlZCB7XG4gICAgY29sb3I6IHJnYmEoMjU1LDI1NSwyNTUsMSk7XG4gIH1cblxuXHQmOmFjdGl2ZSwgJjpob3ZlciB7XG5cdFx0Y29sb3I6IHJnYigyMjgsIDIxLCAxOSk7XG5cdH1cblxuICBAaW5jbHVkZSBtZWRpYSgkc21hbGwpIHtcbiAgICBmb250LXNpemU6IDMwMCU7XG4gIH1cblxufVxuXG4uY29tcGFjdC1tZW51LW5hdmlnYXRpb24gbGkuZXhwYW5kZWQgdWwge1xuICBkaXNwbGF5OiBub25lO1xufVxuXG5cbi5jb21wYWN0LW1lbnUtbmF2aWdhdGlvbiBsaS5leHBhbmRlZCB1bCBhIHtcbiAgY29sb3I6ICNGRkY7XG4gIGZvbnQtc2l6ZTogMTUwJTtcbiAgZGlzcGxheTpibG9jaztcbiAgcGFkZGluZy1sZWZ0OiAycHg7XG5cbiAgJjphY3RpdmUsICY6aG92ZXIge1xuICAgIGNvbG9yOiByZ2IoMjI4LCAyMSwgMTkpO1xuICB9XG59XG5cblxuXG4iLCIuYnJlYWRjcnVtYiB7XG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gIHBhZGRpbmctYm90dG9tOiAxZW07XG59XG5cbi5icmVhZGNydW1iIGEge1xuXG59IiwiXG4ucHJvZHVjdC1iYWNrLWxpbmsge1xuICBtYXJnaW4tdG9wOiAxNXB4O1xuICBkaXNwbGF5OiBub25lO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHotaW5kZXg6IDM7XG5cbiAgJjpiZWZvcmUge1xuICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgdG9wOiAxcHg7XG4gIH1cblxuICAuanMgJiB7XG4gICAgZGlzcGxheTogYmxvY2s7XG5cbiAgICBAaW5jbHVkZSBtZWRpYSgkc21hbGwpIHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfSBcblxuICAgIEBpbmNsdWRlIG1lZGlhKCRtZWRpdW0pIHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfSBcblxuICAgIEBpbmNsdWRlIG1lZGlhKCRsYXJnZSkge1xuICAgICAgQGluY2x1ZGUgc3Bhbi1jb2x1bW5zKDYgb2YgMTIpO1xuICAgIH0gXG4gIH1cbiB9IiwiXG4ucHJvZHVjdC1maWx0ZXJzIHtcblxuXHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdHotaW5kZXg6IDEwO1xuXG5cdEBpbmNsdWRlIG1lZGlhKCRtZWRpdW1Ub0xhcmdlKSB7XG5cdFx0ZmxvYXQ6IGxlZnQ7XG5cdFx0bWFyZ2luLXJpZ2h0OiAxMHB4O1xuXHR9XG59XG5cbi5wcm9kdWN0LWZpbHRlcnMgbGkge1xuXG5cdGRpc3BsYXk6IGJsb2NrO1xuXG5cdEBpbmNsdWRlIG1lZGlhKCRtZWRpdW1Ub0xhcmdlKSB7XG5cdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHR9XG59XG5cbi5wcm9kdWN0LWZpbHRlcnMgbGkgYSB7XG5cblx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHR3aWR0aDogMTAwJTtcblx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHRwYWRkaW5nOiAxMHB4O1xuXG5cdEBpbmNsdWRlIG1lZGlhKCRtZWRpdW1Ub0xhcmdlKSB7XG5cdFx0cGFkZGluZzogMCA3cHggMCA3cHg7XG5cdFx0bGluZS1oZWlnaHQ6IDQ5cHg7XG5cdFx0aGVpZ2h0OiA0OXB4O1xuXHRcdHRleHQtYWxpZ246IGxlZnQ7XG5cdFx0Ym9yZGVyLWJvdHRvbTogMCBub25lO1xuXHR9XG5cblx0QGluY2x1ZGUgbWVkaWEoJHNtYWxsKSB7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogI2JmZWFmMztcblx0XHRib3JkZXItYm90dG9tOiAxcHggc29saWQgIzdmZDRlNztcblx0fVxufVxuXG4ucHJvZHVjdC1maWx0ZXJzIGxpLmFjdGl2ZSBhIHtcblx0YmFja2dyb3VuZC1jb2xvcjogJGhpZ2hsaWdodC1jb2xvcjtcblx0Y29sb3I6ICNGRkY7XG5cdHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuXHRAaW5jbHVkZSBtZWRpYSgkc21hbGwpIHtcblx0XHRjb2xvcjogIzMzMztcblx0fVx0XG5cblx0JjpiZWZvcmUge1xuXHRcdEBpbmNsdWRlIG1lZGlhKCRtZWRpdW1Ub0xhcmdlKSB7XG5cdFx0XHRjb2xvcjogI0ZGRjtcblx0XHRcdGZvbnQtc2l6ZTogMTZweDtcblx0XHRcdGxpbmUtaGVpZ2h0OiA1cHg7XG5cdFx0XHRib3R0b206IC0ycHg7XG5cdFx0XHRsZWZ0OiA1MCU7XG5cdFx0XHRtYXJnaW4tbGVmdDogLThweDtcblx0XHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdCAgZm9udC1mYW1pbHk6IFwibGFtcDgzLWljb25zXCIgIWltcG9ydGFudDtcblx0XHQgIGNvbnRlbnQ6IFwiaVwiO1xuXHRcdH1cblx0fVxufVxuXG4ucHJvZHVjdC1maWx0ZXJzLXRvZ2dsZSB7XG5cdHRleHQtYWxpZ246IGNlbnRlcjtcblx0dGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcblx0ZGlzcGxheTogYmxvY2s7XG5cdHBhZGRpbmc6IDVweCAwIDE1cHggMDtcblx0YmFja2dyb3VuZC1jb2xvcjogI2JmZWFmMztcblx0Ym9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICM3ZmQ0ZTc7XG5cdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0Y3Vyc29yOiBwb2ludGVyO1xuXG5cdCY6YmVmb3JlIHtcblx0XHRmb250LWZhbWlseTogXCJsYW1wODMtaWNvbnNcIiAhaW1wb3J0YW50O1xuXHRcdGNvbnRlbnQ6IFwiYVwiO1xuXHQgIHRleHQtdHJhbnNmb3JtOiBub25lO1xuXHRcdGZvbnQtc2l6ZTogMTZweDtcblx0XHRtYXJnaW4tbGVmdDogLThweDtcblx0XHRkaXNwbGF5OiBibG9jaztcblx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0bGVmdDogNTAlO1xuXHRcdGJvdHRvbTogMXB4O1xuXHR9XG59IiwiLnByb2R1Y3Qtc2VhcmNoLWJveCB7XG5cdHBhZGRpbmc6IDEwcHggMDtcblx0cG9zaXRpb246IHJlbGF0aXZlO1xuXG5cdEBpbmNsdWRlIG1lZGlhKCRzbWFsbCkge1xuXHRcdG1hcmdpbi1yaWdodDogMTVweDtcblx0XHRtYXJnaW4tbGVmdDogMTVweDtcblx0XHRmbG9hdDogbm9uZTtcblx0fVxuXG5cdD4gZGl2IHtcblx0XHRvdmVyZmxvdzogaGlkZGVuO1xuXG5cdFx0QGluY2x1ZGUgbWVkaWEoJHNtYWxsKSB7XG5cdFx0XHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cdFx0XHR3aWR0aDogODYlO1xuXHRcdH1cblx0fVxufVxuXG4ucHJvZHVjdC1zZWFyY2gtYm94IGxhYmVsIHtcblx0ZGlzcGxheTogbm9uZTtcbn1cblxuLnByb2R1Y3Qtc2VhcmNoLWJveCBbbmFtZT10ZXh0XSB7XG5cdGJvcmRlcjogMXB4IHNvbGlkICNEM0QzRDM7XG5cdGJvcmRlci1yaWdodDogbm9uZTtcblx0Y29sb3I6ICM2NjY7XG5cdGxpbmUtaGVpZ2h0OiAxO1xuXHRoZWlnaHQ6IDI5cHg7XG5cdG91dGxpbmU6IDA7XG5cdHBhZGRpbmc6IDAgNXB4O1xuXHRmbG9hdDogcmlnaHQ7XG5cdHdpZHRoOiAxMDAlO1xuXHRtYXgtd2lkdGg6IDM3MHB4O1xuXHRAaW5jbHVkZSB0cmFuc2l0aW9uKHdpZHRoIDAuMnMgbGluZWFyKTtcblxuXHRAaW5jbHVkZSBtZWRpYSgkc21hbGwpIHtcblx0XHR3aWR0aDogMTAwJSAhaW1wb3J0YW50O1xuXHRcdG1heC13aWR0aDogbm9uZTtcblx0fVxuXG5cdC8qKlxuXHQmLmV4cGFuZGVkLCAucGF0aC1wcm9kdWt0ZSAmLCAucGF0aC1wcm9kdWN0cyAmIHtcblx0XHR3aWR0aDogMzM1cHg7XG5cdH1cblx0KiovXG59XG5cbi5wcm9kdWN0LXNlYXJjaC1ib3gtc3VibWl0IHtcblx0YmFja2dyb3VuZC1jb2xvcjogI0QzRDNEMztcblx0Ym9yZGVyOiAxcHggc29saWQgI0QzRDNEMztcblx0bGluZS1oZWlnaHQ6IDI5cHg7XG5cdGhlaWdodDogMjlweDtcblx0d2lkdGg6IDQ3cHg7XG5cdGNvbG9yOiAjRkZGO1xuXHRmb250LXNpemU6IDE5cHg7XG5cdG91dGxpbmU6IDA7XG5cdGZsb2F0OiByaWdodDtcblxuXHQmOmFjdGl2ZSB7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogIzk5OTtcblx0fVxuXG5cdCY6YmVmb3JlIHtcblx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdFx0Ym90dG9tOiAtMnB4O1xuXHR9XG5cblx0QGluY2x1ZGUgbWVkaWEoJHNtYWxsKSB7XG5cdFx0d2lkdGg6IDE0JTtcblx0fVxufVxuIiwiXG4ucHJvZHVjdC1pY29uIHtcblx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHR3aWR0aDogMjlweDtcblx0aGVpZ2h0OiAyOXB4O1xuXHRiYWNrZ3JvdW5kLXNpemU6IDI5cHggMjlweDtcbn1cblxuJHByb2R1Y3QtaWNvbnMtc3BlY2lmaWM6ICdub3RsaWNodCcgJ3NjaHdlbmtiYXInICdyZWZsZWt0b3InICdyZWZsZWt0aW9uc2dyYWQnICdmYWNldHRlbnJlZmxla3RvcicgJ2RpbW1iYXInICdibGVuZHNjaHV0eic7XG5cbkBlYWNoICRwcm9kdWN0LWljb24gaW4gJHByb2R1Y3QtaWNvbnMtc3BlY2lmaWMge1xuICAucHJvZHVjdC1pY29uLS0jeyRwcm9kdWN0LWljb259IHtcbiAgXHRiYWNrZ3JvdW5kLWltYWdlOiB1cmwoLi4vaW1nL2ljb25zL3Byb2R1Y3QtaWNvbi0jeyRwcm9kdWN0LWljb259LnN2Zyk7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjogJGhpZ2hsaWdodC1jb2xvcjtcblx0fVxufVxuXG4kcHJvZHVjdC1pY29ucy1nZW5lcmFsOiBjZSBlbmVjIHBjdCB1a3IgaXAyMCBpcDMwIGlwNDAgaXA0NCBpcDUwIGlwNTQ7XG5cbkBlYWNoICRwcm9kdWN0LWljb24gaW4gJHByb2R1Y3QtaWNvbnMtZ2VuZXJhbCB7XG4gIC5wcm9kdWN0LWljb24tLSN7JHByb2R1Y3QtaWNvbn0ge1xuICBcdGJhY2tncm91bmQtaW1hZ2U6IHVybCguLi9pbWcvaWNvbnMvcHJvZHVjdC1pY29uLSN7JHByb2R1Y3QtaWNvbn0uc3ZnKTtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGO1xuXHR9XG59XG5cbi5wcm9kdWN0LWljb24tLWdsb3NzYXJ5IHtcblx0YmFja2dyb3VuZC1zaXplOiA1NXB4IDU1cHg7XG5cdHdpZHRoOiA1NXB4O1xuXHRoZWlnaHQ6IDU1cHg7XG59IiwiXG4ucHJvZHVjdC1ncm91cHMge1xuXHRtYXJnaW4tdG9wOiAtMjVweDtcblxuXHRAaW5jbHVkZSBtZWRpYSgkc21hbGwpIHtcblx0XHRtYXJnaW4tdG9wOiAtMTBweDtcblx0fVxufVxuXG5cbi5wcm9kdWN0LWdyb3Vwcy1pdGVtIHtcblxuXHRAaW5jbHVkZSB0cmFuc2l0aW9uKGJvcmRlciAwLjRzIGVhc2UtaW4tb3V0KTtcblx0bWluLWhlaWdodDogMTUwcHg7XG5cdG1hcmdpbi10b3A6IDI1cHg7XG5cdGN1cnNvcjogcG9pbnRlcjtcblx0Ym9yZGVyLWJvdHRvbTogNnB4IHNvbGlkICNGRkY7XG5cbiAgQGluY2x1ZGUgbWVkaWEoJHNtYWxsKSB7XG5cdFx0QGluY2x1ZGUgc3Bhbi1jb2x1bW5zKDYgb2YgMTIpO1xuXHRcdEBpbmNsdWRlIG9tZWdhKDJuKTtcblx0XHRtYXJnaW4tdG9wOiAxMHB4O1xuICB9XG5cblx0QGluY2x1ZGUgbWVkaWEoJG1lZGl1bSkge1xuXHRcdEBpbmNsdWRlIHNwYW4tY29sdW1ucygzIG9mIDYpO1xuXHRcdEBpbmNsdWRlIG9tZWdhKDJuKTtcblx0fVx0XG5cblx0QGluY2x1ZGUgbWVkaWEoJGxhcmdlKSB7XG5cdFx0QGluY2x1ZGUgc3Bhbi1jb2x1bW5zKDMgb2YgMTIpO1xuXHRcdEBpbmNsdWRlIG9tZWdhKDRuKTtcblx0XHQvL21heC13aWR0aDogMjYwcHg7XG5cdH1cbn1cblxuLnByb2R1Y3QtZ3JvdXBzLWl0ZW0tdGl0bGUge1xuXHRtYXJnaW4tdG9wOiAxMHB4O1xuXHRib3JkZXItYm90dG9tOiA2cHggc29saWQgI0ZGRjtcblx0Zm9udC1zaXplOiAxMjAlO1xuXHR0cmFuc2l0aW9uOiBib3JkZXItY29sb3IgMC4zcyBsaW5lYXI7XG5cblx0LnByb2R1Y3QtZ3JvdXBzLWl0ZW0tbXVsdGkgLnByb2R1Y3QtZ3JvdXBzLWl0ZW0tYW5jaG9yOnRhcmdldCB+IC5wcm9kdWN0LWdyb3Vwcy1pdGVtLWxpbmsgJiB7XG5cdFx0Ym9yZGVyLWNvbG9yOiAkaGlnaGxpZ2h0LWNvbG9yO1xuXHR9XG5cbn1cblxuLnByb2R1Y3QtZ3JvdXBzLWl0ZW0tbGluayB7XG5cdG91dGxpbmU6IDA7XG59XG5cbi5wcm9kdWN0LWdyb3Vwcy1pdGVtLWltYWdlIHtcblx0d2lkdGg6IDEwMCU7XG5cdGhlaWdodDogMHB4O1xuXHRwYWRkaW5nLWJvdHRvbTogMTAwJTtcbn1cblxuLnByb2R1Y3QtZ3JvdXBzLWl0ZW0tYW5jaG9yIHtcblx0cG9zaXRpb246IGZpeGVkO1xuXHR0b3A6IDA7XG5cdGxlZnQ6IDA7XG5cdGRpc3BsYXk6IGJsb2NrO1xufVxuXG4ucHJvZHVjdC1ncm91cHMtaXRlbS1pbWFnZSBpbWcge1xuXHRkaXNwbGF5OiBibG9jaztcblx0d2lkdGg6IDEwMCU7XG5cblx0QGluY2x1ZGUgbWVkaWEoJHNtYWxsKSB7XG5cdFx0d2lkdGg6IGF1dG87XG5cdH1cbn1cblxuLnByb2R1Y3QtZ3JvdXBzLWl0ZW0taWNvbnMge1xuXHRtYXJnaW4tdG9wOiAtMjlweDtcblx0Zm9udC1zaXplOiAwcHg7XG59XG5cblxuLnByb2R1Y3QtZ3JvdXBzLWl0ZW0taWNvbnMgLnByb2R1Y3QtaWNvbiB7XG5cdG1hcmdpbi1yaWdodDogNHB4O1xufVxuXG4ucHJvZHVjdC1ncm91cHMtaXRlbS0tc2VsZWN0ZWQge1xuXHRib3JkZXItYm90dG9tOiA2cHggc29saWQgIzg2YjdiMTtcbn1cblxuIiwiLnByb2R1Y3QtbGlzdCB7XG5cdG92ZXJmbG93OiBoaWRkZW47XG5cdEBpbmNsdWRlIHRyYW5zaXRpb24obWF4LWhlaWdodCAwLjNzIGVhc2UtaW4tb3V0IDBzLCBvcGFjaXR5IDAuMnMgZWFzZSwgdHJhbnNmb3JtIDAuNXMgbGluZWFyKTtcblx0b3BhY2l0eTogMDtcblx0bWF4LWhlaWdodDogMDtcblx0aGVpZ2h0OiAwO1xuXG5cdC5wcm9kdWN0LWdyb3Vwcy1pdGVtLWFuY2hvcjp0YXJnZXQgfiAmIHsgXG5cdFx0b3BhY2l0eTogMTtcblx0XHRtYXgtaGVpZ2h0OiAxMDAwcHg7XG5cdFx0aGVpZ2h0OiBhdXRvO1xuXHRcdEBpbmNsdWRlIHRyYW5zaXRpb24obWF4LWhlaWdodCAwLjVzIGVhc2UtaW4tb3V0IDBzLCBvcGFjaXR5IDAuNHMgZWFzZSAwLjRzLCB0cmFuc2Zvcm0gMC41cyBsaW5lYXIpO1xuXG5cdFx0QGluY2x1ZGUgbWVkaWEoJHNtYWxsKSB7XG5cblx0XHRcdG1heC1oZWlnaHQ6IDE3MDBweDtcblx0XHR9XG5cdH1cbn1cblxuLnByb2R1Y3QtbGlzdC1pdGVtIHtcblxuICBAaW5jbHVkZSBtZWRpYSgkc21hbGwpIHtcbiAgICBAaW5jbHVkZSBzcGFuLWNvbHVtbnMoMSBvZiAxKTtcbiAgXHRAaW5jbHVkZSBvbWVnYSgxbik7XG4gIH1cblxuXHRAaW5jbHVkZSBtZWRpYSgkbWVkaXVtKSB7XG5cdFx0QGluY2x1ZGUgc3Bhbi1jb2x1bW5zKDMgb2YgNik7XG5cdCAgQGluY2x1ZGUgb21lZ2EoMm4pO1xuXHR9XHRcblxuXHRAaW5jbHVkZSBtZWRpYSgkbGFyZ2UpIHtcblx0XHRAaW5jbHVkZSBzcGFuLWNvbHVtbnMoMyBvZiAxMik7XG5cdFx0QGluY2x1ZGUgb21lZ2EoNG4pO1xuXHR9XG5cblx0bWluLWhlaWdodDogMTEwcHg7XG5cdG1hcmdpbi10b3A6IDE1cHg7XG5cdHBhZGRpbmctdG9wOiA0cHg7XG5cdGJvcmRlci10b3A6IDFweCBzb2xpZCAjMDAwO1xuXHRwb3NpdGlvbjogcmVsYXRpdmU7XG59XG5cblxuLnByb2R1Y3QtbGlzdC1pdGVtLXRpdGxlIHtcblx0ZmxvYXQgOiBsZWZ0O1xuXHR0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuXHRmb250LXNpemU6IDEwMCU7XG5cdG1heC13aWR0aDogNTclO1xuXHR3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7XG5cdHBhZGRpbmctbGVmdDogMnB4O1xufVxuXG4ucHJvZHVjdC1saXN0LWl0ZW0gaW1nIHtcblx0ZmxvYXQ6IHJpZ2h0O1xuXHRtYXgtd2lkdGg6IDQwJTtcblxuICBAaW5jbHVkZSBtZWRpYSgkc21hbGwpIHtcbiAgICBtYXgtd2lkdGg6IDEwNHB4O1xuICB9XG59XG5cbi5wcm9kdWN0LWxpc3QtaXRlbS1pY29ucyB7XG5cdGJvdHRvbTogMDtcblx0bGVmdDogLTNweDtcblx0cG9zaXRpb246IGFic29sdXRlO1xuXHRtYXgtd2lkdGg6IDU5JTtcblx0Y2xlYXI6IGJvdGg7XG59XG5cbi5wcm9kdWN0LWxpc3QtaXRlbS1pY29ucyAucHJvZHVjdC1pY29uIHtcblx0ZmxvYXQ6IGxlZnQ7XG5cdG1hcmdpbjogM3B4IDAgMCAzcHg7XG59XG5cblxuLnByb2R1Y3QtbGlzdCAge1xuXHRcblx0ZGlzcGxheTogYmxvY2s7XG5cdGJhY2tncm91bmQ6ICNFRUU7XG5cdG92ZXJmbG93OiBoaWRkZW47XG5cdHdpZHRoOiAxMDAlO1xuXHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cblx0LyoqXG5cdCAqIFBvc2l0aW9uaW5nIG1hZ2ljIHRvIG1vdmUgdGhlIHByb2R1Y3QgbGlzdCBvdXQgb2YgdGhlIGdyaWQuXG5cdCAqL1xuXHRAaW5jbHVkZSBtZWRpYSgkbGFyZ2Upe1xuXG5cdFx0JGdyaWRJdGVtR3V0dGVyUmF0aW8gOiAxICArIGZsZXgtZ3V0dGVyKDEyKSAvIGZsZXgtZ3JpZCgzLCAxMik7XG5cdFx0d2lkdGg6IDMwMCUgKiAkZ3JpZEl0ZW1HdXR0ZXJSYXRpbyArIDEwMCU7XG5cblx0XHQucHJvZHVjdC1ncm91cHMtaXRlbTpudGgtY2hpbGQoNG4gKyAxKSAmIHtcblxuXHRcdFx0bWFyZ2luLWxlZnQ6IC0xMDAlICogJGdyaWRJdGVtR3V0dGVyUmF0aW8gKiAwO1xuXHRcdH1cblxuXHRcdC5wcm9kdWN0LWdyb3Vwcy1pdGVtOm50aC1jaGlsZCg0biArIDIpICYge1xuXG5cdFx0XHRtYXJnaW4tbGVmdDogLTEwMCUgKiAkZ3JpZEl0ZW1HdXR0ZXJSYXRpbyAqIDE7XG5cdFx0fVxuXG5cdFx0LnByb2R1Y3QtZ3JvdXBzLWl0ZW06bnRoLWNoaWxkKDRuICsgMykgJiB7XG5cblx0XHRcdG1hcmdpbi1sZWZ0OiAtMTAwJSAqICRncmlkSXRlbUd1dHRlclJhdGlvICogMjtcblx0XHR9XG5cblx0XHQucHJvZHVjdC1ncm91cHMtaXRlbTpudGgtY2hpbGQoNG4gKyA0KSAmIHtcblxuXHRcdFx0bWFyZ2luLWxlZnQ6IC0xMDAlICogJGdyaWRJdGVtR3V0dGVyUmF0aW8gKiAzO1xuXHRcdH1cblx0fVxuXG5cdEBpbmNsdWRlIG1lZGlhKCRtZWRpdW0pe1xuXG5cdFx0JGdyaWRJdGVtR3V0dGVyUmF0aW8gOiAxICArIGZsZXgtZ3V0dGVyKDYpIC8gZmxleC1ncmlkKDMsIDYpO1xuXHRcdHdpZHRoOiAxMDAlICogJGdyaWRJdGVtR3V0dGVyUmF0aW8gKyAxMDAlO1xuXG5cdFx0LnByb2R1Y3QtZ3JvdXBzLWl0ZW06bnRoLWNoaWxkKDJuICsgMSkgJiB7XG5cblx0XHRcdG1hcmdpbi1sZWZ0OiAtMTAwJSAqICRncmlkSXRlbUd1dHRlclJhdGlvICogMDtcblx0XHR9XG5cblx0XHQucHJvZHVjdC1ncm91cHMtaXRlbTpudGgtY2hpbGQoMm4gKyAyKSAmIHtcblxuXHRcdFx0bWFyZ2luLWxlZnQ6IC0xMDAlICogJGdyaWRJdGVtR3V0dGVyUmF0aW8gKiAxO1xuXHRcdH1cblx0fVxuXG5cblxuXHRAaW5jbHVkZSBtZWRpYSgkc21hbGwpe1xuXG5cdFx0JGdyaWRJdGVtR3V0dGVyUmF0aW8gOiAxICArIGZsZXgtZ3V0dGVyKDEyKSAvIGZsZXgtZ3JpZCg2LCAxMik7XG5cdFx0d2lkdGg6IDEwMCUgKiAkZ3JpZEl0ZW1HdXR0ZXJSYXRpbyArIDEwMCU7XG5cblx0XHQucHJvZHVjdC1ncm91cHMtaXRlbTpudGgtY2hpbGQoMm4gKyAxKSAmIHtcblxuXHRcdFx0bWFyZ2luLWxlZnQ6IC0xMDAlICogJGdyaWRJdGVtR3V0dGVyUmF0aW8gKiAwO1xuXHRcdH1cblxuXHRcdC5wcm9kdWN0LWdyb3Vwcy1pdGVtOm50aC1jaGlsZCgybiArIDIpICYge1xuXG5cdFx0XHRtYXJnaW4tbGVmdDogLTEwMCUgKiAkZ3JpZEl0ZW1HdXR0ZXJSYXRpbyAqIDE7XG5cdFx0fVxuXHR9XG5cbn0iLCIubm9kZS1wcm9kdWN0IC5kcy1sZWZ0IHtcblxuXHRAaW5jbHVkZSBtZWRpYSgkc21hbGwpIHtcblx0XHRAaW5jbHVkZSBjbGVhcmZpeCgpO1xuXHR9XG5cblx0QGluY2x1ZGUgbWVkaWEoJG1lZGl1bSkge1xuXHRcdEBpbmNsdWRlIHNwYW4tY29sdW1ucyg2IG9mIDEyKTtcblx0fVxuXG5cdEBpbmNsdWRlIG1lZGlhKCRsYXJnZSkge1xuXHRcdEBpbmNsdWRlIHNwYW4tY29sdW1ucyg2IG9mIDEyKTtcblx0fVxufVxuXG4ubm9kZS1wcm9kdWN0IC5kcy1taWRkbGUge1xuXG5cdEBpbmNsdWRlIG1lZGlhKCRzbWFsbCkge1xuXHRcdHBhZGRpbmctdG9wOiAxNXB4O1xuXHR9XG5cblx0QGluY2x1ZGUgbWVkaWEoJG1lZGl1bSkge1xuXHRcdEBpbmNsdWRlIHNwYW4tY29sdW1ucyg2IG9mIDEyKTtcblx0XHRAaW5jbHVkZSBvbWVnYSgpO1xuXHR9XG5cblx0QGluY2x1ZGUgbWVkaWEoJGxhcmdlKSB7XG5cdFx0QGluY2x1ZGUgc3Bhbi1jb2x1bW5zKDMgb2YgMTIpO1xuXHR9XG59XG5cbi5ub2RlLXByb2R1Y3QgLmRzLXJpZ2h0IHtcblxuXHRAaW5jbHVkZSBtZWRpYSgkc21hbGxUb01lZGl1bSkge1xuXHRcdG1hcmdpbi10b3A6IDE1cHg7XG5cdH1cblxuXHRAaW5jbHVkZSBtZWRpYSgkbWVkaXVtKSB7XG5cdFx0QGluY2x1ZGUgc3Bhbi1jb2x1bW5zKDYgb2YgMTIpO1xuXHR9XG5cblx0QGluY2x1ZGUgbWVkaWEoJGxhcmdlKSB7XG5cdFx0QGluY2x1ZGUgc3Bhbi1jb2x1bW5zKDMgb2YgMTIpO1xuXHRcdEBpbmNsdWRlIG9tZWdhKCk7XG5cdH1cbn1cblxuLm5vZGUtcHJvZHVjdCAuZHMtcmlnaHQgPiAqIHtcblxuXHRwYWRkaW5nLXRvcDogMTRweDtcblx0Ym9yZGVyLXRvcDogMXB4IHNvbGlkICMwMDA7XG5cblx0JjpmaXJzdC1jaGlsZCB7XG5cdFx0QGluY2x1ZGUgbWVkaWEoJG1lZGl1bVRvTGFyZ2UpIHtcblx0XHRcdGJvcmRlci10b3A6IDAgbm9uZTtcblx0XHRcdHBhZGRpbmctdG9wOiAwO1xuXHRcdH1cblx0fVxufVxuXG4ubm9kZS1wcm9kdWN0IC5kcy1ib3R0b20ge1xuXHRjbGVhcjogYm90aDtcbn1cblxuLm5vZGUtcHJvZHVjdCAuZmllbGQtcHJvZC1pY29ucy1zcGVjaWZpYyAucHJvZHVjdC1pY29uIHtcblx0YmFja2dyb3VuZC1zaXplOiA0OHB4IDQ4cHg7XG5cdHdpZHRoOiA0OHB4O1xuXHRoZWlnaHQ6IDQ4cHg7XG5cdG1hcmdpbi1yaWdodDogMnB4O1xuXHRtYXJnaW4tYm90dG9tOiAycHg7XG5cdGZsb2F0OiBsZWZ0O1xufVxuXG4uZmllbGQtcHJvZC1pY29ucy1zcGVjaWZpYyB7XG5cdEBpbmNsdWRlIGNsZWFyZml4KCk7XG5cdHBhZGRpbmctYm90dG9tOiAxNXB4O1xuXHRib3JkZXItYm90dG9tOiAxcHggc29saWQgIzAwMDtcbn1cblxuLmZpZWxkLXByb2QtaWNvbnMtc3BlY2lmaWMtbGFiZWxzIHtcblx0Ym9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICMwMDA7XG5cdHBhZGRpbmc6IDVweCAwIDE1cHggMDtcbn1cblxuLmZpZWxkLXByb2QtZGVzY3JpcHRpb24ge1xuXHRjbGVhcjogbGVmdDtcblx0cGFkZGluZy10b3A6IDE1cHg7XG59XG5cblxuXG4uZHMtYm90dG9tIGgzIHtcblx0Zm9udC1zaXplOiAxNTAlO1xuXHR0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuXHRib3JkZXItYm90dG9tOiAxcHggc29saWQgIzAwMDtcblx0cGFkZGluZzogMzVweCAwIDAgMDtcblx0bWFyZ2luLWJvdHRvbTogMTVweDtcbn1cblxuLmZpZWxkLXByb2QtZGF0YXNoZWV0LFxuLmZpZWxkLXByb2QtdGVjaG5pY2FsLWRyYXdpbmdzLFxuLmZpZWxkLXByb2QtbGlnaHQtZGlzdC1jdXJ2ZSB7XG5cdGNsZWFyOiBsZWZ0O1xufVxuXG5cbi5maWVsZC1wcm9kLWRvd25sb2FkIHtcblx0ZGlzcGxheTogbm9uZTtcblx0YmFja2dyb3VuZC1zaXplOiBhdXRvIDcwcHg7XG5cdGJhY2tncm91bmQtcG9zaXRpb246IGxlZnQgdG9wO1xuXHRiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuXHRiYWNrZ3JvdW5kLXNpemU6IDQ4cHggYXV0bztcblx0aGVpZ2h0OiA2NXB4O1xuXHRwYWRkaW5nOiA2cHggMCAwIDYycHg7XG5cblx0JjpmaXJzdC1jaGlsZCB7XG5cblx0XHRkaXNwbGF5OiBibG9jaztcblx0fVxufVxuXG4uZmllbGQtcHJvZC1kb3dubG9hZC0tcGRmIHtcblx0YmFja2dyb3VuZC1pbWFnZTogdXJsKC4uL2ltZy9pY29ucy9kb3dubG9hZC1pY29uLXBkZi5zdmcpO1xuXHRoZWlnaHQ6IDg1cHg7XG5cdHBhZGRpbmc6IDEycHggMCAwIDYycHg7XG59XG5cbi5maWVsZC1wcm9kLWRvd25sb2FkLS16aXAge1xuXHRiYWNrZ3JvdW5kLWltYWdlOiB1cmwoLi4vaW1nL2ljb25zL2Rvd25sb2FkLWljb24temlwLnN2Zyk7XG5cdGhlaWdodDogODVweDtcblx0cGFkZGluZzogMTJweCAwIDAgNjJweDtcbn1cblxuLmZpZWxkLXByb2QtZG93bmxvYWQtLXR6IHtcblx0YmFja2dyb3VuZC1pbWFnZTogdXJsKC4uL2ltZy9pY29ucy9kb3dubG9hZC1pY29uLXRlY2huaXNjaGUtemVpY2hudW5nZW4uc3ZnKTtcbn1cblxuLmZpZWxkLXByb2QtZG93bmxvYWQtLWxrIHtcblx0YmFja2dyb3VuZC1pbWFnZTogdXJsKC4uL2ltZy9pY29ucy9kb3dubG9hZC1pY29uLWxldWNodGt1cnZlbi5zdmcpO1xufVxuXG4uZmllbGQtcHJvZC1kb3dubG9hZC10aXRsZSB7XG5cdGRpc3BsYXk6IGJsb2NrO1xuXHRsaW5lLWhlaWdodDogMS40O1xuXHR0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xufVxuXG4uZmllbGQtcHJvZC1kb3dubG9hZC1zdWJ0aXRsZSB7XG5cdGRpc3BsYXk6IGJsb2NrO1xuXHRjb2xvcjogIzk5OTtcblx0Zm9udC1zaXplOiA5MCU7XG59XG5cbi5maWVsZC1wcm9kLWljb25zLWdlbmVyYWwge1xuXG5cdEBpbmNsdWRlIG1lZGlhKCRzbWFsbCkge1xuXHRcdEBpbmNsdWRlIHNwYW4tY29sdW1ucygxIG9mIDEpO1xuXHRcdEBpbmNsdWRlIG9tZWdhKCk7XG5cdH1cblxuXHRAaW5jbHVkZSBtZWRpYSgkbWVkaXVtKSB7XG5cdFx0QGluY2x1ZGUgc3Bhbi1jb2x1bW5zKDEgb2YgMSk7XG5cdFx0QGluY2x1ZGUgb21lZ2EoKTtcblx0fVxuXG5cdEBpbmNsdWRlIG1lZGlhKCRsYXJnZSkge1xuXHRcdEBpbmNsdWRlIHNwYW4tY29sdW1ucyg2IG9mIDEyKTtcblx0fVxuXG5cdEBpbmNsdWRlIGNsZWFyZml4KCk7XG5cblx0bWFyZ2luLXRvcDogNXB4O1xuXHRib3JkZXI6IDFweCBzb2xpZCAjMDAwO1xuXHRib3JkZXItd2lkdGg6IDFweCAwIDFweCAwO1xuXHRwYWRkaW5nOiAzcHggMDtcblx0Zm9udC1zaXplOiAwcHg7XG5cbn1cblxuLmZpZWxkLXByb2QtaWNvbnMtZ2VuZXJhbCAucHJvZHVjdC1pY29ue1xuXHRoZWlnaHQ6IDI4cHg7XG5cdHdpZHRoOiAxNCU7XG5cdGJhY2tncm91bmQtc2l6ZTogY29udGFpbjtcblx0YmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcblx0YmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyIGNlbnRlcjtcblx0bWFyZ2luLXJpZ2h0OiA2JTtcblxuXHQmOmxhc3QtY2hpbGQge1xuXHRcdG1hcmdpbi1yaWdodDogMDtcblx0fVxufVxuXG5cbi5maWVsZC1wcm9kLXRodW1ibmFpbHMge1xuXG5cdEBpbmNsdWRlIG1lZGlhKCRzbWFsbCkge1xuXHRcdEBpbmNsdWRlIHNwYW4tY29sdW1ucygxIG9mIDEpO1xuXHRcdEBpbmNsdWRlIG9tZWdhKCk7XG5cdH1cblxuXHRAaW5jbHVkZSBtZWRpYSgkbWVkaXVtKSB7XG5cdFx0QGluY2x1ZGUgc3Bhbi1jb2x1bW5zKDEgb2YgMSk7XG5cdFx0QGluY2x1ZGUgb21lZ2EoKTtcblx0fVxuXG5cdEBpbmNsdWRlIG1lZGlhKCRsYXJnZSkge1xuXHRcdEBpbmNsdWRlIHNwYW4tY29sdW1ucyg2IG9mIDEyKTtcblx0XHRAaW5jbHVkZSBvbWVnYSgpO1xuXHR9XG5cblxuXHRtYXJnaW4tdG9wOiA1cHg7XG5cblx0dWwgPiBsaSB7XHRcdFxuXG5cdFx0QGluY2x1ZGUgc3Bhbi1jb2x1bW5zKDYgb2YgMTIpO1xuXHRcdFxuXHRcdEBpbmNsdWRlIG9tZWdhKDJuKTtcblx0XHRtYXJnaW4tYm90dG9tOiAzJTtcblx0fVxuXG5cdGltZyB7XG5cdFx0ZGlzcGxheTogYmxvY2s7XG5cdH1cblxufVxuXG5cblxuLmZpZWxkLXByb2QtdmFyaWFudHMge1xuXG5cdHdpZHRoOiAxMDAlO1xuXHRwYWRkaW5nLXRvcDogMXB4O1xuXG5cdHRhYmxlIHtcblxuXHRcdHdpZHRoOiAxMDAlO1xuXG5cdFx0QGluY2x1ZGUgbWVkaWEoJHNtYWxsKSB7XG5cdFx0XHRkaXNwbGF5OiBub25lO1xuXHRcdH1cblxuXHRcdEBpbmNsdWRlIG1lZGlhKCRtZWRpdW1Ub0xhcmdlKSB7XG5cdFx0XHRkaXNwbGF5OiB0YWJsZTtcblx0XHR9XG5cblx0XHR0aGVhZCB7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwO1xuXHRcdFx0Y29sb3I6ICNGRkY7XG5cdFx0fVxuXG5cdFx0dGgge1xuXHRcdFx0cGFkZGluZzogMnB4O1xuXHRcdFx0Ym9yZGVyLWJvdHRvbTogMCBub25lO1xuXHRcdFx0Zm9udC13ZWlnaHQ6IG5vcm1hbDtcblx0XHR9XG5cblx0XHR0Ym9keSB0ciB7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGO1xuXHRcdFx0Ym9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNBQUE7XG5cdFx0fVxuXG5cdFx0dGQge1xuXHRcdFx0cGFkZGluZzogNXB4IDJweDtcblxuXHRcdFx0Ji5maWVsZF9wcm9kX3ZhcmlhbnRzX2V1bHVtZGF0IHtcblx0XHRcdFx0Zm9udC1zaXplOiAyMXB4O1xuXHRcdFx0XHRwYWRkaW5nOiAxcHggMnB4IDBweCAycHg7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0dGFibGUuc3RhY2t0YWJsZSB7XG5cblx0XHRAaW5jbHVkZSBtZWRpYSgkc21hbGwpIHtcblx0XHRcdGRpc3BsYXk6IHRhYmxlO1xuXHRcdH1cblxuXHRcdEBpbmNsdWRlIG1lZGlhKCRtZWRpdW1Ub0xhcmdlKSB7XG5cdFx0XHRkaXNwbGF5OiBub25lO1xuXHRcdH1cblxuXHRcdHRib2R5IHRyIHtcblx0XHRcdGJvcmRlci1ib3R0b206IDAgbm9uZTtcblx0XHR9XG5cblx0XHQuc3QtaGVhZC1yb3cge1xuXHRcdFx0Y29sb3I6ICMwMDA7XG5cdFx0XHRib3JkZXI6IDRweCBzb2xpZCAjRkZGO1xuXHRcdFx0Ym9yZGVyLXdpZHRoOiAzMnB4IDAgNHB4IDA7XG5cdFx0XHRwYWRkaW5nOiA3cHggM3B4O1xuXHRcdFx0QGV4dGVuZCAlYm9sZC1mb250O1xuXHRcdH1cblxuXHRcdC5zdC1oZWFkLXJvdy1tYWluIHtcblx0XHRcdGRpc3BsYXk6IG5vbmU7XG5cdFx0fVxuXG5cdFx0dGQge1xuXHRcdFx0cGFkZGluZzogMXB4IDNweDtcblx0XHR9XG5cdH1cbn1cblxuLmZpZWxkX3Byb2RfdmFyaWFudHNfZXVsdW1kYXQge1xuXHR0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG4iLCIubm9kZS1mcm9udC1zdWJwYWdlIC5maWVsZC1oc3AtaGVhZGxpbmUge1xuICBmb250LXNpemU6IDEyMCU7XG4gIG1hcmdpbi10b3A6IDJlbTtcbiAgbGluZS1oZWlnaHQ6IDEuMjtcbn0iLCIucmVsYXRlZC1wcm9kdWN0cyB7XG5cbn1cblxuLnJlbGF0ZWQtcHJvZHVjdHMtaXRlbSB7XG5cbiAgQGluY2x1ZGUgbWVkaWEoJHNtYWxsKSB7XG5cdFx0QGluY2x1ZGUgc3Bhbi1jb2x1bW5zKDYgb2YgMTIpO1xuICBcdEBpbmNsdWRlIG9tZWdhKDJuKTtcbiAgfVxuXG5cdEBpbmNsdWRlIG1lZGlhKCRtZWRpdW0pIHtcblx0XHRAaW5jbHVkZSBzcGFuLWNvbHVtbnMoNCBvZiAxMik7XG5cdCAgQGluY2x1ZGUgb21lZ2EoM24pO1xuXHR9XHRcblxuXHRAaW5jbHVkZSBtZWRpYSgkbGFyZ2UpIHtcblx0XHRAaW5jbHVkZSBzcGFuLWNvbHVtbnMoMyBvZiAxMik7XG5cdFx0QGluY2x1ZGUgb21lZ2EoNG4pO1xuXHR9XG5cblx0bWFyZ2luLWJvdHRvbTogMTVweDtcblxuXHRpbWcge1xuXHRcdHdpZHRoOiAxMDAlO1xuXHR9XG59XG5cbi5yZWxhdGVkLXByb2R1Y3RzLWl0ZW0tdGl0bGUge1xuXHR0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xufSIsIi5ub2RlLW5ld3Mge1xuXG59XG5cbi5maWVsZC1uZXdzLWNhdGVnb3J5LXdyYXBwZXIge1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHotaW5kZXg6IDI7XG5cbiAgJjpiZWZvcmUge1xuICAgIHotaW5kZXg6IDE7XG4gICAgY29udGVudDogJyc7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgaGVpZ2h0OiAxcHg7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogNTAlO1xuICAgIGxlZnQ6IDA7XG4gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICMwMDA7XG4gIH1cbn1cblxuLmZpZWxkLW5ld3MtY2F0ZWdvcnkge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIGJhY2tncm91bmQ6ICNGRkY7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgei1pbmRleDogMjtcbiAgcGFkZGluZzogMCAwLjVlbTtcbiAgZm9udC1zaXplOiAxMjAlO1xuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xufVxuXG4ubm9kZS1uZXdzIGgxIHtcbiAgZm9udC1zaXplOiAxODAlO1xuICBAZXh0ZW5kICVib2xkLWZvbnQ7XG4gIGNvbG9yOiAkYnJhbmQtcmVkLWNvbG9yO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIG1hcmdpbjogMC41ZW0gMDtcbn1cblxuLm5vZGUtbmV3cyAuZmllbGQtYm9keSB7XG4gIGZvbnQtc2l6ZTogMThweDtcbn1cblxuLm5vZGUtbmV3cy1yZWFkbW9yZSB7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgei1pbmRleDogMjtcbiAgbWFyZ2luOiAzZW0gMDtcblxuICAmOmJlZm9yZSB7XG4gICAgei1pbmRleDogMTtcbiAgICBjb250ZW50OiAnJztcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBoZWlnaHQ6IDFweDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiA1MCU7XG4gICAgbGVmdDogMDtcbiAgICBib3JkZXItdG9wOiAxcHggc29saWQgJGhpZ2hsaWdodC1jb2xvcjtcbiAgfVxuXG4gIHNwYW4ge1xuICAgIGNvbG9yOiAkaGlnaGxpZ2h0LWNvbG9yO1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBiYWNrZ3JvdW5kOiAjRkZGO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB6LWluZGV4OiAyO1xuICAgIHBhZGRpbmc6IDAgMC41ZW07XG4gICAgZm9udC1zaXplOiAxMjAlO1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gIH1cbn0iLCIubmV3cy1saXN0IHtcbiAgb3ZlcmZsb3c6IGF1dG87XG4gIG1hcmdpbi10b3A6IDNlbTtcbn1cblxuXG4ubmV3cy1saXN0LWl0ZW0ge1xuXG4gIEBpbmNsdWRlIG1lZGlhKCRzbWFsbCkge1xuICAgIEBpbmNsdWRlIHNwYW4tY29sdW1ucygxIG9mIDEpO1xuICAgIEBpbmNsdWRlIG9tZWdhKDFuKTtcbiAgfVxuXG4gIEBpbmNsdWRlIG1lZGlhKCRtZWRpdW0pIHtcbiAgICBAaW5jbHVkZSBzcGFuLWNvbHVtbnMoMyBvZiA2KTtcbiAgICBAaW5jbHVkZSBvbWVnYSgybik7XG4gIH1cblxuICBAaW5jbHVkZSBtZWRpYSgkbGFyZ2UpIHtcbiAgICBAaW5jbHVkZSBzcGFuLWNvbHVtbnMoNCBvZiAxMik7XG4gICAgQGluY2x1ZGUgb21lZ2EoM24pO1xuICB9XG5cbiAgLm5ld3MtbGlzdC1yZWxhdGVkICYge1xuICAgIEBpbmNsdWRlIG1lZGlhKCRzbWFsbCkge1xuICAgICAgQGluY2x1ZGUgc3Bhbi1jb2x1bW5zKDEgb2YgMSk7XG4gICAgICBAaW5jbHVkZSBvbWVnYSgxbik7XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgbWVkaWEoJG1lZGl1bSkge1xuICAgICAgQGluY2x1ZGUgc3Bhbi1jb2x1bW5zKDMgb2YgNik7XG4gICAgICBAaW5jbHVkZSBvbWVnYSgybik7XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgbWVkaWEoJGxhcmdlKSB7XG4gICAgICBAaW5jbHVkZSBzcGFuLWNvbHVtbnMoNCBvZiAxMik7XG4gICAgICBAaW5jbHVkZSBvbWVnYSgzbik7XG4gICAgfVxuXG4gIH1cblxuICBtYXJnaW4tYm90dG9tOiA0LjVlbTtcbn1cblxuLm5ld3MtbGlzdC1pdGVtLWNhdGVnb3J5IHtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBkaXNwbGF5OiBibG9jaztcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB6LWluZGV4OiAyO1xuXG4gICY6YmVmb3JlIHtcbiAgICB6LWluZGV4OiAxO1xuICAgIGNvbnRlbnQ6ICcnO1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGhlaWdodDogMXB4O1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDUwJTtcbiAgICBsZWZ0OiAwO1xuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAjMDAwO1xuICB9XG59XG5cbi5uZXdzLWxpc3QtaXRlbS1jYXRlZ29yeS10aXRsZSB7XG4gIGJhY2tncm91bmQ6ICNGRkY7XG4gIHBhZGRpbmc6IDAgMC41ZW07XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgei1pbmRleDogMztcbiAgZm9udC1zaXplOiAxMjAlO1xuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xufVxuXG4ubmV3cy1saXN0LWl0ZW0tdGl0bGUgYSB7XG4gIG1hcmdpbi10b3A6IDAuMzVlbTtcbiAgZm9udC1zaXplOiAxODAlO1xuICBsaW5lLWhlaWdodDogMS4yZW07XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIGNvbG9yOiAkYnJhbmQtcmVkLWNvbG9yO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGO1xuICBwYWRkaW5nOiAwIDVweDtcbiAgbWFyZ2luLWJvdHRvbTogMC40ZW07XG4gIEBleHRlbmQgJWJvbGQtZm9udDtcbn1cblxuLm5ld3MtbGlzdC1pdGVtLWltYWdlIHtcblxufVxuXG4ubmV3cy1saXN0LWl0ZW0tdGV4dCB7XG5cbiAgdGV4dC1hbGlnbjoganVzdGlmeTtcbiAgZm9udC1zaXplOiAxMTAlOyAvKiogKiovXG4gIGxpbmUtaGVpZ2h0OiAxLjVlbTtcblxuICBwIHtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xuICB9XG5cbiAgYSB7XG4gICAgQGV4dGVuZCAlYm9sZC1mb250O1xuICAgIGNvbG9yOiAkaGlnaGxpZ2h0LWNvbG9yO1xuICB9XG59XG5cbi5uZXdzLWxpc3QtcmVsYXRlZCAucGFnZXIge1xuICBtYXJnaW4tdG9wOiAtMmVtO1xuICBtYXJnaW4tYm90dG9tOiAyZW07XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcblxuICBsaXtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgYSB7XG4gICAgICBwYWRkaW5nOiAyMHB4O1xuICAgIH1cbiAgfVxuICAuZWxsaXBzaXMge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cblxufVxuXG4iLCIuY29udGFjdC1wZXJzb24tYmxvY2sge1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIGJvdHRvbTogMHB4O1xuICByaWdodDogMDtcbiAgei1pbmRleDogOTYwO1xuICB3aWR0aDogMzAwcHg7XG4gIGJhY2tncm91bmQ6ICNGRkY7XG4gIGNsZWFyOiBib3RoO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBib3gtc2hhZG93OiAwIDAgMXB4IHJnYmEoMCwwLDAsLjMpO1xuICBAaW5jbHVkZSB0cmFuc2l0aW9uKDAuMXMgYWxsIGxpbmVhcik7XG5cbiAgQGluY2x1ZGUgdHJhbnNmb3JtKHRyYW5zbGF0ZVkoMTUwcHgpKTtcblxuICBAaW5jbHVkZSBtZWRpYSgkc21hbGxUb01lZGl1bSkge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBib3JkZXI6IDBweCBzb2xpZCAjMDAwO1xuICAgIGJveC1zaGFkb3c6IG5vbmU7XG4gICAgcGFkZGluZy10b3A6IDIwcHg7XG4gICAgQGluY2x1ZGUgdHJhbnNmb3JtKHRyYW5zbGF0ZVkoMHB4KSk7XG4gIH1cbn1cblxuLmNvbnRhY3QtcGVyc29uLWJsb2NrLS1vcGVuIHtcblxuICBAaW5jbHVkZSB0cmFuc2Zvcm0odHJhbnNsYXRlWSgwcHgpKTtcblxuICAuY29udGFjdC1wZXJzb24tYmxvY2stYnV0dG9uIHsgXG4gICAgQGluY2x1ZGUgdHJhbnNmb3JtKHJvdGF0ZSgwZGVnKSk7XG4gIH1cbn1cblxuLmNvbnRhY3QtcGVyc29uLWJsb2NrLXRpdGxlIHtcbiAgYmFja2dyb3VuZDogcmdiYSgwLDE3MCwyMDUsMSk7XG4gIGNvbG9yOiAjRkZGO1xuICBwYWRkaW5nOiAwIDAgMCAxNXB4O1xuICBoZWlnaHQ6IDQwcHg7XG4gIGxpbmUtaGVpZ2h0OiA0MHB4O1xuICBkaXNwbGF5OiBibG9jaztcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIEBleHRlbmQgJWJvbGQtZm9udDtcblxuICBAaW5jbHVkZSBtZWRpYSgkc21hbGxUb01lZGl1bSkge1xuICAgIGJhY2tncm91bmQ6ICNGRkY7XG4gICAgY29sb3I6ICMwMDA7XG4gICAgcGFkZGluZzogMCAwIDVweCAwO1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjMDAwO1xuICAgIG1hcmdpbi1ib3R0b206IDEwcHg7XG4gICAgbWFyZ2luLXRvcDogMTBweDtcbiAgfVxufVxuXG4uY29udGFjdC1wZXJzb24tYmxvY2staW1hZ2Uge1xuICBmbG9hdDogbGVmdDtcbiAgd2lkdGg6IDEwMHB4O1xuICBoZWlnaHQ6IGF1dG87XG4gIG1hcmdpbjogMTVweCAwIDE1cHggMTVweDtcblxuICBAaW5jbHVkZSBtZWRpYSgkc21hbGxUb01lZGl1bSkge1xuICAgIG1hcmdpbi1sZWZ0OiAwcHg7XG4gICAgbWFyZ2luLXRvcDogMDtcbiAgfVxufVxuXG4uY29udGFjdC1wZXJzb24tYmxvY2stZGV0YWlscyB7XG4gIG1hcmdpbi1sZWZ0OiAxMzBweDtcbiAgbWFyZ2luLXRvcDogMTVweDtcblxuICBAaW5jbHVkZSBtZWRpYSgkc21hbGxUb01lZGl1bSkge1xuICAgIG1hcmdpbi10b3A6IDA7XG4gICAgbWFyZ2luLWxlZnQ6IDExNXB4O1xuICB9XG59XG5cbi5jb250YWN0LXBlcnNvbi1ibG9jay1idXR0b24geyBcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDVweDtcbiAgcmlnaHQ6IDIwcHg7XG4gIGNvbG9yOiAjRkZGO1xuICBvdXRsaW5lOiAwIG5vbmU7XG4gIEBpbmNsdWRlIHRyYW5zZm9ybShyb3RhdGUoMTgwZGVnKSk7XG4gIEBpbmNsdWRlIHRyYW5zZm9ybS1vcmlnaW4oY2VudGVyIDE3cHgpO1xuICBkaXNwbGF5OiBibG9jaztcblxuICBAaW5jbHVkZSBtZWRpYSgkc21hbGxUb01lZGl1bSkge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cblxuICAmOmxpbmssICY6aG92ZXIsICY6YWN0aXZlLCAmOnZpc2l0ZWQge1xuICAgIGNvbG9yOiAjRUVFO1xuICAgIG91dGxpbmU6IDAgbm9uZTtcbiAgfVxufSIsIi5uZXdzbGV0dGVyLWJsb2NrIHtcbiAgQGluY2x1ZGUgdHJhbnNpdGlvbigwLjFzIGFsbCBsaW5lYXIpO1xuICBAaW5jbHVkZSB0cmFuc2Zvcm0odHJhbnNsYXRlWCgyNjBweCkpO1xuXG4gIGJhY2tncm91bmQ6ICNmZmY7XG4gIGhlaWdodDogMTY0cHg7XG4gIHBhZGRpbmctbGVmdDogNDBweDtcbiAgcG9zaXRpb246IGZpeGVkO1xuICAvL2JvdHRvbTogMHB4O1xuICB0b3A6IDM2MHB4O1xuICByaWdodDogMDtcbiAgei1pbmRleDogOTYwO1xuXG4gIHdpZHRoOiAzMDBweDtcbiAgY2xlYXI6IGJvdGg7XG4gIC8vb3ZlcmZsb3c6IGhpZGRlbjtcbiAgYm94LXNoYWRvdzogMCAwIDFweCByZ2JhKDAsMCwwLC4zKTtcblxuICBAaW5jbHVkZSBtZWRpYSgkc21hbGxUb01lZGl1bSkge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBib3JkZXI6IDBweCBzb2xpZCAjMDAwO1xuICAgIGJveC1zaGFkb3c6IG5vbmU7XG4gICAgcGFkZGluZy10b3A6IDIwcHg7XG4gICAgQGluY2x1ZGUgdHJhbnNmb3JtKHRyYW5zbGF0ZVkoMHB4KSk7XG4gIH1cblxuICAmX190aXRsZSB7XG4gICAgQGluY2x1ZGUgdHJhbnNmb3JtKHJvdGF0ZSgtOTBkZWcpKTtcbiAgICBAaW5jbHVkZSB0cmFuc2Zvcm0tb3JpZ2luKDYycHggMTAycHgpO1xuICAgIEBleHRlbmQgJWJvbGQtZm9udDtcblxuICAgIGJhY2tncm91bmQ6IHJnYmEoMCwxNzAsMjA1LDEpO1xuICAgIGNvbG9yOiAjRkZGO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICAvL2ZvbnQtc2l6ZTogMjJweDtcbiAgICBoZWlnaHQ6IDQwcHg7XG4gICAgbGluZS1oZWlnaHQ6IDQwcHg7XG4gICAgcGFkZGluZzogMCAwIDAgMTVweDtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgd2lkdGg6IDE2NHB4O1xuXG4gICAgQGluY2x1ZGUgbWVkaWEoJHNtYWxsVG9NZWRpdW0pIHtcbiAgICAgIGJhY2tncm91bmQ6ICNGRkY7XG4gICAgICBjb2xvcjogIzAwMDtcbiAgICAgIHBhZGRpbmc6IDAgMCA1cHggMDtcbiAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjMDAwO1xuICAgICAgbWFyZ2luLWJvdHRvbTogMTBweDtcbiAgICAgIG1hcmdpbi10b3A6IDEwcHg7XG4gICAgfVxuICB9XG5cbiAgLmJ1dHRvbiB7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgI2UxZTFlMSAwJSxyZ2JhKDAsMCwwLDApIDEwMCUpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICNiMGIwYjA7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIGxpbmUtaGVpZ2h0OiAxO1xuICAgIG1hcmdpbjogMTVweCAwIDA7XG4gICAgcGFkZGluZzogNnB4IDEwcHg7XG4gIH1cbn1cblxuLm5ld3NsZXR0ZXItYmxvY2tfX2NvbnRlbnQge1xuICAvL2ZvbnQtc2l6ZTogMjBweDtcbiAgcGFkZGluZzogMTVweDtcblxuICBAaW5jbHVkZSBtZWRpYSgkc21hbGxUb01lZGl1bSkge1xuICAgIG1hcmdpbi10b3A6IDA7XG4gICAgbWFyZ2luLWxlZnQ6IDExNXB4O1xuICB9XG59XG5cbi5uZXdzbGV0dGVyLWJsb2NrLS1vcGVuIHtcbiAgQGluY2x1ZGUgdHJhbnNmb3JtKHRyYW5zbGF0ZVkoMHB4KSk7XG5cbiAgLm5ld3NsZXR0ZXItYmxvY2tfX2JudCB7XG4gICAgQGluY2x1ZGUgdHJhbnNmb3JtKHJvdGF0ZSgwZGVnKSk7XG4gICAgLy9AaW5jbHVkZSB0cmFuc2Zvcm0tb3JpZ2luKDEzcHggMTdweCk7XG4gIH1cbn1cblxuLm5ld3NsZXR0ZXItYmxvY2tfX2JudCB7XG4gIEBpbmNsdWRlIHRyYW5zZm9ybShyb3RhdGUoMTgwZGVnKSk7XG4gIC8vQGluY2x1ZGUgdHJhbnNmb3JtLW9yaWdpbigxM3B4IDE3cHgpO1xuXG4gIC8vYmFja2dyb3VuZDogIzAwMDtcbiAgY29sb3I6ICNGRkY7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBoZWlnaHQ6IDE4cHg7XG4gIG91dGxpbmU6IDAgbm9uZTtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICByaWdodDogMTBweDtcbiAgdG9wOiAxMHB4O1xuICB3aWR0aDogMjJweDtcblxuICAmOmJlZm9yZSB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGxlZnQ6IDA7XG4gICAgcmlnaHQ6IDA7XG4gIH1cblxuICBAaW5jbHVkZSBtZWRpYSgkc21hbGxUb01lZGl1bSkge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cblxuICAmOmxpbmssICY6aG92ZXIsICY6YWN0aXZlLCAmOnZpc2l0ZWQge1xuICAgIGNvbG9yOiAjRUVFO1xuICAgIG91dGxpbmU6IDAgbm9uZTtcbiAgfVxufVxuIiwiLm1lbnUtcmVmZXJlbmNlcy1pdGVtIHtcblxuXHRtYXJnaW4tYm90dG9tOiAyMHB4O1xuXG5cdEBpbmNsdWRlIG1lZGlhKCRsYXJnZSkge1xuXHRcdEBpbmNsdWRlIHNwYW4tY29sdW1ucyg2IG9mIDEyKTtcbiAgXHRcdEBpbmNsdWRlIG9tZWdhKDJuKTtcblx0fVxuXG5cdEBpbmNsdWRlIG1lZGlhKCRtZWRpdW0pIHtcblx0XHRAaW5jbHVkZSBzcGFuLWNvbHVtbnMoNiBvZiAxMik7XG4gIFx0XHRAaW5jbHVkZSBvbWVnYSgybik7XG5cdH1cblxuXHRAaW5jbHVkZSBtZWRpYSgkc21hbGwpIHtcblx0XHRAaW5jbHVkZSBzcGFuLWNvbHVtbnMoMTIgb2YgMTIpO1xuICBcdFx0QGluY2x1ZGUgb21lZ2EoMW4pO1xuXHRcdG1hcmdpbi1ib3R0b206IDEwcHg7XG5cdH1cbn1cblxuLm1lbnUtcmVmZXJlbmNlcy1pdGVtLWxpbmsge1xuXHRkaXNwbGF5OiBibG9jaztcblx0cGFkZGluZy1ib3R0b206IDY2JTtcblx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHR3aWR0aDogMTAwJTtcblx0b3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLm1lbnUtcmVmZXJlbmNlcy1pdGVtLXRpdGxlIHtcblx0cG9zaXRpb246IGFic29sdXRlO1xuXHR0b3A6IDA7XG5cdGxlZnQ6IDA7XG5cdGJhY2tncm91bmQtY29sb3I6IHJnYmEoJGhpZ2hsaWdodC1jb2xvciwgMC44KTtcblx0d2lkdGg6IDEwMCU7XG5cdGNvbG9yOiAjRkZGO1xuXHR0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuXHRmb250LXNpemU6IDE3MCU7XG5cdHBhZGRpbmc6IDRweCA4cHg7XG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuXG5cdEBpbmNsdWRlIG1lZGlhKCRzbWFsbCkge1xuXHRcdGZvbnQtc2l6ZTogMTIwJTtcblx0fVxufVxuXG4ubWVudS1yZWZlcmVuY2VzLWl0ZW0tdGl0bGUtLW1pbmkge1xuICBmb250LXNpemU6IDEwMCU7XG4gIHBhZGRpbmc6IDJweCA2cHg7XG59XG5cbi5tZW51LXJlZmVyZW5jZXMtaXRlbS1pbWFnZSxcbi5tZW51LXJlZmVyZW5jZXMtaXRlbS1pbWFnZS1ob3ZlciB7XG5cdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0dG9wOiAwO1xuXHRsZWZ0OiAwO1xuXHRwYWRkaW5nLWJvdHRvbTogNjYlO1xuXHR3aWR0aDogMTAwJTtcblx0bWF4LXdpZHRoOiAxMDAlO1xufVxuXG4ubWVudS1yZWZlcmVuY2VzLWl0ZW0taW1hZ2UtaG92ZXIge1xuXHRAaW5jbHVkZSB0cmFuc2l0aW9uKG9wYWNpdHkgMC41cyBlYXNlLW91dCk7XG5cdG9wYWNpdHk6IDA7XG5cblx0YTpob3ZlciAmIHtcblx0XHRvcGFjaXR5OiAxO1xuXHR9XG59IiwiLm5vZGUtdHlwZS1yZWZlcmVuY2Uge1xuXG5cdG1hcmdpbi10b3A6IDI1cHg7XG5cblx0LnBhZ2UtYmFubmVyIGltZyB7XG5cdFx0d2lkdGg6IDEwMCU7XG5cdFx0aGVpZ2h0OiBhdXRvO1xuXHR9XG59XG5cbi5ub2RlLXR5cGUtcmVmZXJlbmNlIC5ncm91cC1sZWZ0IHtcblx0bWFyZ2luLWJvdHRvbTogMTAwcHg7XG5cblx0QGluY2x1ZGUgbWVkaWEoJHNtYWxsKSB7XG5cdFx0d2lkdGg6IDEwMCU7XG5cdFx0QGluY2x1ZGUgY2xlYXJmaXgoKTtcblx0fVxuXG5cdEBpbmNsdWRlIG1lZGlhKCRtZWRpdW0pIHtcblx0XHR3aWR0aDogNTAlO1xuXHR9XG5cblx0QGluY2x1ZGUgbWVkaWEoJGxhcmdlKSB7XG5cdFx0d2lkdGg6IDUwJTtcblx0fVxufVxuXG4ubm9kZS10eXBlLXJlZmVyZW5jZSAuZ3JvdXAtcmlnaHQge1xuXG5cdEBpbmNsdWRlIG1lZGlhKCRzbWFsbCkge1xuXHRcdEBpbmNsdWRlIGNsZWFyZml4KCk7XG5cdFx0d2lkdGg6IDEwMCU7XG5cdH1cblxuXHRAaW5jbHVkZSBtZWRpYSgkbWVkaXVtKSB7XG5cdFx0d2lkdGg6IDQ4JTtcblx0XHRtYXJnaW4tbGVmdDogMiU7XG5cdH1cblxuXHRAaW5jbHVkZSBtZWRpYSgkbGFyZ2UpIHtcblx0XHR3aWR0aDogNDglO1xuXHRcdG1hcmdpbi1sZWZ0OiAyJTtcblx0fVxuXG5cdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0bWFyZ2luLWJvdHRvbTogMTAwcHg7XG59XG5cbi5ub2RlLXR5cGUtcmVmZXJlbmNlIC5ncm91cC1sZWZ0IHtcblxuXHQ+IFtjbGFzcyo9ZmllbGRdIHtcblx0XHRsaW5lLWhlaWdodDogMS4zO1xuXHR9XG5cblx0LmZpZWxkLWxhYmVsIHtcblx0XHRjbGVhcjogYm90aDtcblx0XHR3aWR0aDogMTAwcHg7XG5cdFx0ZmxvYXQ6IGxlZnQ7XG5cdH1cblxuXHQuaW5saW5lIHtcblx0XHRtYXJnaW4tbGVmdDogMTAwcHg7XG5cdH1cbn1cblxuLm5vZGUtdHlwZS1yZWZlcmVuY2UgLmdyb3VwLWhlYWRlciB7XG5cblx0bWFyZ2luLWJvdHRvbTogMzBweDtcblxuXHQuZmllbGQtbGFiZWwge1xuXHRcdEBleHRlbmQgJWJvbGQtZm9udDtcblxuXHRcdCY6YmVmb3JlIHtcblx0XHRcdGNvbnRlbnQ6ICcvJztcblx0XHRcdGRpc3BsYXk6IGlubGluZS1ibG9jaztcblx0XHRcdEBleHRlbmQgJXJlZ3VsYXItZm9udDtcblx0XHR9XG5cblx0XHQmOm50aC1jaGlsZCgyKTpiZWZvcmUge1xuXHRcdFx0Y29udGVudDogJyc7XG5cdFx0XHRkaXNwbGF5OiBub25lO1xuXHRcdH1cblx0fVxuXG5cblx0PiBbY2xhc3MqPWZpZWxkLXJlZl0ge1xuXHRcdGRpc3BsYXk6IGlubGluZTtcblx0fVxufVxuXG4ubm9kZS10eXBlLXJlZmVyZW5jZSAuZ3JvdXAtcmlnaHQgLmZpZWxkLWxhYmVsLFxuLm5vZGUtdHlwZS1yZWZlcmVuY2UgLmdyb3VwLXJpZ2h0IC5ibG9jay10aXRsZSxcbi5ub2RlLXR5cGUtcmVmZXJlbmNlIC5ncm91cC1sZWZ0IC5ibG9jay10aXRsZSxcbi5ub2RlLXR5cGUtcmVmZXJlbmNlIC5ncm91cC1sZWZ0IGgzLmZpZWxkLWxhYmVsLFxuLm5vZGUtdHlwZS1yZWZlcmVuY2UgLmZpZWxkLWluZm8gaDMsXG4ubm9kZS10eXBlLXJlZmVyZW5jZSAuZmllbGQtYm9keSBsYWJlbHtcblx0ZGlzcGxheTogYmxvY2s7XG5cdHdpZHRoOiAxMDAlO1xuXHRtYXJnaW4tYm90dG9tOiAxNXB4O1xuXHRtYXJnaW4tdG9wOiAzMHB4O1xuXHRjb2xvcjogJGJyYW5kLXJlZC1jb2xvcjtcblx0Zm9udC1zaXplOiAxNnB4O1xuXHR0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuXHRsaW5lLWhlaWdodDogMS4zO1xufVxuXG4ubm9kZS10eXBlLXJlZmVyZW5jZSAuZmllbGQtYm9keSB7XG5cblx0bWFyZ2luLXRvcDogMTVweDtcblx0Y2xlYXI6IGJvdGg7XG59XG5cbi5ub2RlLXR5cGUtcmVmZXJlbmNlIC5maWVsZC1yZWYtaW1hZ2VzIHtcblx0bWFyZ2luLWJvdHRvbTogMTBweDtcblx0ZGlzcGxheTogbm9uZTtcblx0cG9zaXRpb246IHJlbGF0aXZlO1xuXG5cdCY6bnRoLWNoaWxkKDEpLFxuXHQmOm50aC1jaGlsZCgyKSxcblx0JjpudGgtY2hpbGQoMyksXG5cdCY6bnRoLWNoaWxkKDQpLFxuXHQmOm50aC1jaGlsZCg1KSxcblx0JjpudGgtY2hpbGQoNikge1xuXHRcdGRpc3BsYXk6IGJsb2NrO1xuXHR9XG5cblxuXHRhIHtcblx0XHRvdXRsaW5lOiAwO1xuXHR9XG59XG5cblxuLm5vZGUtdHlwZS1yZWZlcmVuY2UgLmZpZWxkLXJlZmVyZW5jZWQtcHJvZHVjdHMge1xuXHRAaW5jbHVkZSBvdXRlci1jb250YWluZXIoKTtcbn1cblxuXG4ubm9kZS10eXBlLXJlZmVyZW5jZSAuZmllbGQtcmVmZXJlbmNlZC1wcm9kdWN0cy1pbWFnZSB7XG5cblx0QGluY2x1ZGUgbWVkaWEoJHNtYWxsKSB7XG5cdFx0QGluY2x1ZGUgc3Bhbi1jb2x1bW5zKDYgb2YgMTIpO1xuXHRcdEBpbmNsdWRlIG9tZWdhKDJuKTtcblx0fVxuXG5cdEBpbmNsdWRlIG1lZGlhKCRtZWRpdW0pIHtcblx0XHRAaW5jbHVkZSBzcGFuLWNvbHVtbnMoNiBvZiAxMik7XG5cdFx0QGluY2x1ZGUgb21lZ2EoMm4pO1xuXHR9XG5cblx0QGluY2x1ZGUgbWVkaWEoJGxhcmdlKSB7XG5cdFx0QGluY2x1ZGUgc3Bhbi1jb2x1bW5zKDYgb2YgMTIpO1xuXHRcdEBpbmNsdWRlIG9tZWdhKDJuKTtcblx0fVxuXG5cdG1hcmdpbi1ib3R0b206IDMwcHg7XG5cbn1cblxuLm5vZGUtdHlwZS1yZWZlcmVuY2UgLmZpZWxkLXNsaWRlc2hvdy1jb250cm9scyB7XG5cdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0dG9wOiA1MCU7XG5cdHotaW5kZXg6IDIwO1xuXHR0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwcHgpO1xuXHR3aWR0aDogMTAwJTtcbn1cblxuLm5vZGUtdHlwZS1yZWZlcmVuY2UgLmZpZWxkLXNsaWRlc2hvdy1jb250cm9scy1wcmV2LFxuLm5vZGUtdHlwZS1yZWZlcmVuY2UgLmZpZWxkLXNsaWRlc2hvdy1jb250cm9scy1uZXh0IHtcblx0cG9zaXRpb246IGFic29sdXRlO1xuXHRmb250LXNpemU6IDQwMCU7XG5cdGNvbG9yOiByZ2JhKDI1NSwyNTUsMjU1LC44KTtcblx0dGV4dC1zaGFkb3c6IDBweCAwcHggNXB4IHJnYmEoMCwgMCwgMCwgMC42KTtcblxuXHQmOmhvdmVyIHtcblx0XHRjb2xvcjogI0ZGRjtcblx0fVxufVxuXG4ubm9kZS10eXBlLXJlZmVyZW5jZSAuZmllbGQtc2xpZGVzaG93LWNvbnRyb2xzLXByZXYge1xuXHRsZWZ0OiAwcHg7XG5cdHRvcDogMDtcbn1cblxuLm5vZGUtdHlwZS1yZWZlcmVuY2UgLmZpZWxkLXNsaWRlc2hvdy1jb250cm9scy1uZXh0IHtcblx0cmlnaHQ6IDBweDtcblx0dG9wOiAwO1xuXHR0cmFuc2Zvcm06IHNjYWxlWCgtMSk7O1xufVxuXG5cbi5ub2RlLXR5cGUtcmVmZXJlbmNlIC5maWVsZC1tb3JlLXJlZmVyZW5jZXMge1xuXG5cdG1hcmdpbi10b3A6IDQwcHg7XG5cdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0dGV4dC1hbGlnbjogY2VudGVyO1xuXG5cdCY6YmVmb3JlIHtcblx0XHR6LWluZGV4OiAxO1xuXHRcdGNvbnRlbnQ6ICcnO1xuXHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdGhlaWdodDogMXB4O1xuXHRcdHdpZHRoOiAxMDAlO1xuXHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHR0b3A6IDUwJTtcblx0XHRsZWZ0OiAwO1xuXHRcdGJvcmRlci10b3A6IDFweCBzb2xpZCAkaGlnaGxpZ2h0LWNvbG9yO1xuXHR9XG5cblx0LnRpdGxlIHtcblx0XHRkaXNwbGF5OiBpbmxpbmU7XG5cdFx0cGFkZGluZzogMCAwLjVlbTtcblx0XHR6LWluZGV4OiAzO1xuXHRcdGZvbnQtc2l6ZTogMTZweDtcblx0XHR0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuXHRcdGNvbG9yOiAkaGlnaGxpZ2h0LWNvbG9yO1xuXHRcdGJhY2tncm91bmQ6ICNGRkY7XG5cdFx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHR9XG5cblx0LnZpZXctcmVmZXJlbmNlLWNhdGVnb3J5IHtcblx0XHR0ZXh0LWFsaWduOiBsZWZ0O1xuXHR9XG59IiwiLnJlZmVyZW5jZXMtbGlzdCB7XG5cdG1hcmdpbi10b3A6IDIwcHg7XG59XG5cbi5yZWZlcmVuY2VzLWxpc3QtaXRlbSB7XG5cdG1hcmdpbi1ib3R0b206IDI1cHg7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGhlaWdodDogMDtcbiAgICBwYWRkaW5nLWJvdHRvbTogMzAlO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG5cbiAgICBAaW5jbHVkZSBtZWRpYSgkc21hbGwpIHtcbiAgICAgIEBpbmNsdWRlIHNwYW4tY29sdW1ucygxMiBvZiAxMik7XG4gICAgICBAaW5jbHVkZSBvbWVnYSgxbik7XG4gICAgICBtYXJnaW4tYm90dG9tOiAxMHB4O1xuICAgICAgcGFkZGluZy1ib3R0b206IDc1JTtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBtZWRpYSgkbWVkaXVtKSB7XG4gICAgICBAaW5jbHVkZSBzcGFuLWNvbHVtbnMoNiBvZiAxMik7XG4gICAgICBAaW5jbHVkZSBvbWVnYSgybik7XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgbWVkaWEoJGxhcmdlKSB7XG4gICAgICBAaW5jbHVkZSBzcGFuLWNvbHVtbnMoNiBvZiAxMik7XG4gICAgICBAaW5jbHVkZSBvbWVnYSgybik7XG4gICAgfVxufVxuXG4ucmVmZXJlbmNlcy1saXN0LWl0ZW0tdGl0bGUge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB6LWluZGV4OiAyO1xuICAgIG1hcmdpbi1ib3R0b206IDEwcHg7XG5cdHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgZm9udC1zaXplOiAxODAlO1xuICAgIGNvbG9yOiAjRkZGO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoJGhpZ2hsaWdodC1jb2xvciwgMC45KTtcbiAgICBwYWRkaW5nOiA2cHg7XG4gICAgd2lkdGg6IGF1dG87XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIGxpbmUtaGVpZ2h0OiAxO1xuXG4gICAgQGluY2x1ZGUgbWVkaWEoJHNtYWxsKSB7XG4gICAgICBtYXJnaW4tYm90dG9tOiA2cHg7XG4gICAgfVxuXG4gICAgYSB7XG4gICAgICBjb2xvcjogI0ZGRjtcbiAgICB9XG59XG5cbi5yZWZlcmVuY2VzLWxpc3QtaXRlbS1saW5rIGEge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgei1pbmRleDogMztcbiAgb3BhY2l0eTogMDtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbiAgZGlzcGxheTogYmxvY2s7XG59XG5cbi5yZWZlcmVuY2VzLWxpc3QtaXRlbS1pbWFnZSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICB6LWluZGV4OiAtMTtcbiAgd2lkdGg6IDEwMCU7XG4gIEBpbmNsdWRlIHRyYW5zaXRpb24ob3BhY2l0eSAwLjJzIGxpbmVhcik7XG5cbiAgaW1nIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgfVxuXG4gIC5yZWZlcmVuY2VzLWxpc3QtaXRlbTpob3ZlciAmIHtcbiAgICBvcGFjaXR5OiAuMjtcbiAgfVxufVxuXG4ucmVmZXJlbmNlcy1saXN0LWl0ZW0tdGV4dCB7XG4gIG1hcmdpbjogMTBweCA4cHggOHB4IDhweDtcbiAgb3BhY2l0eTogMDtcbiAgQGluY2x1ZGUgdHJhbnNpdGlvbihvcGFjaXR5IDAuMnMgbGluZWFyKTtcblxuXG4gIEBpbmNsdWRlIG1lZGlhKCRzbWFsbCkge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cblxuICAucmVmZXJlbmNlcy1saXN0LWl0ZW06aG92ZXIgJiB7XG4gICAgb3BhY2l0eTogMTtcbiAgfVxufVxuXG4ucmVmZXJlbmNlcy1saXN0LWl0ZW0tZmxvb3Itc3BhY2UsXG4ucmVmZXJlbmNlcy1saXN0LWl0ZW0tYnVzaW5lc3MsXG4ucmVmZXJlbmNlcy1saXN0LWl0ZW0teWVhcixcbi5yZWZlcmVuY2VzLWxpc3QtaXRlbS1sdW1pbmFpcmVzLFxuLnJlZmVyZW5jZXMtbGlzdC1pdGVtLWxvY2F0aW9uIHtcbiAgbWFyZ2luLWxlZnQ6IDhweDtcbiAgb3BhY2l0eTogMDtcbiAgQGluY2x1ZGUgdHJhbnNpdGlvbihvcGFjaXR5IDAuMnMgbGluZWFyKTtcblxuICAmID4gKiB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB9XG5cbiAgJiA+ICo6Zmlyc3QtY2hpbGQge1xuICAgIG1pbi13aWR0aDogNjBweDtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wO1xuICB9XG5cbiAgLnJlZmVyZW5jZXMtbGlzdC1pdGVtOmhvdmVyICYge1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cbn0iLCJcbi5yZWZlcmVuY2VzLWZpbHRlcnMge1xuXHR3aWR0aDogMTAwJTtcblx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHR6LWluZGV4OiAxMDtcblx0YmFja2dyb3VuZC1jb2xvcjogI0VFRTtcbn1cblxuLnJlZmVyZW5jZXMtZmlsdGVycyA+IC5saW5rcyB7XG5cdG1heC13aWR0aDogMTIwMHB4O1xuXHRtYXJnaW4tbGVmdDogYXV0bztcblx0bWFyZ2luLXJpZ2h0OiBhdXRvO1xuXHRwYWRkaW5nOiAwIDQwcHggMCA0MHB4O1xuXG5cdEBpbmNsdWRlIG1lZGlhKCRzbWFsbCkge1xuXHRcdHBhZGRpbmc6IDA7XG5cdH1cblxufVxuXG4ucmVmZXJlbmNlcy1maWx0ZXJzIGxpIHtcblxuXHRkaXNwbGF5OiBibG9jaztcblxuXHRAaW5jbHVkZSBtZWRpYSgkbWVkaXVtVG9MYXJnZSkge1xuXHRcdGRpc3BsYXk6IGlubGluZS1ibG9jaztcblx0fVxufVxuXG4ucmVmZXJlbmNlcy1maWx0ZXJzIGxpIGEge1xuXG5cdGRpc3BsYXk6IGlubGluZS1ibG9jaztcblx0d2lkdGg6IDEwMCU7XG5cdHRleHQtYWxpZ246IGNlbnRlcjtcblx0cGFkZGluZzogMTBweDtcblxuXHRAaW5jbHVkZSBtZWRpYSgkbWVkaXVtVG9MYXJnZSkge1xuXHRcdHBhZGRpbmc6IDAgN3B4IDAgN3B4O1xuXHRcdGxpbmUtaGVpZ2h0OiA0OXB4O1xuXHRcdGhlaWdodDogNDlweDtcblx0XHR0ZXh0LWFsaWduOiBsZWZ0O1xuXHRcdGJvcmRlci1ib3R0b206IDAgbm9uZTtcblx0fVxuXG5cdEBpbmNsdWRlIG1lZGlhKCRzbWFsbCkge1xuXHRcdGJhY2tncm91bmQtY29sb3I6ICNiZmVhZjM7XG5cdFx0Ym9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICM3ZmQ0ZTc7XG5cdH1cbn1cblxuLnJlZmVyZW5jZXMtZmlsdGVycyBsaS5hY3RpdmUgYSB7XG5cdGJhY2tncm91bmQtY29sb3I6ICRoaWdobGlnaHQtY29sb3I7XG5cdGNvbG9yOiAjRkZGO1xuXHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cblx0QGluY2x1ZGUgbWVkaWEoJHNtYWxsKSB7XG5cdFx0Y29sb3I6ICMzMzM7XG5cdH1cdFxuXG5cdCY6YmVmb3JlIHtcblx0XHRAaW5jbHVkZSBtZWRpYSgkbWVkaXVtVG9MYXJnZSkge1xuXHRcdFx0Y29sb3I6ICNGRkY7XG5cdFx0XHRmb250LXNpemU6IDE2cHg7XG5cdFx0XHRsaW5lLWhlaWdodDogNXB4O1xuXHRcdFx0Ym90dG9tOiAtMnB4O1xuXHRcdFx0bGVmdDogNTAlO1xuXHRcdFx0bWFyZ2luLWxlZnQ6IC04cHg7XG5cdFx0XHRkaXNwbGF5OiBibG9jaztcblx0XHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHQgIGZvbnQtZmFtaWx5OiBcImxhbXA4My1pY29uc1wiICFpbXBvcnRhbnQ7XG5cdFx0ICBjb250ZW50OiBcImlcIjtcblx0XHR9XG5cdH1cbn1cblxuLnJlZmVyZW5jZXMtZmlsdGVycy10b2dnbGUge1xuXHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cdHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG5cdGRpc3BsYXk6IGJsb2NrO1xuXHRwYWRkaW5nOiA1cHggMCAxNXB4IDA7XG5cdGJhY2tncm91bmQtY29sb3I6ICNiZmVhZjM7XG5cdGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjN2ZkNGU3O1xuXHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdGN1cnNvcjogcG9pbnRlcjtcblxuXHQmOmJlZm9yZSB7XG5cdFx0Zm9udC1mYW1pbHk6IFwibGFtcDgzLWljb25zXCIgIWltcG9ydGFudDtcblx0XHRjb250ZW50OiBcImFcIjtcblx0ICB0ZXh0LXRyYW5zZm9ybTogbm9uZTtcblx0XHRmb250LXNpemU6IDE2cHg7XG5cdFx0bWFyZ2luLWxlZnQ6IC04cHg7XG5cdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdGxlZnQ6IDUwJTtcblx0XHRib3R0b206IDFweDtcblx0fVxufSIsIi5ub2RlLXBhZ2UtLWltYWdlIC5ncm91cC1sZWZ0e1xuXG5cdEBpbmNsdWRlIHNwYW4tY29sdW1ucyg1IG9mIDgpO1xuXG5cdEBpbmNsdWRlIG1lZGlhKCRzbWFsbCkge1xuXG5cdFx0QGluY2x1ZGUgc3Bhbi1jb2x1bW5zKDEgb2YgMSk7XG5cdFx0QGluY2x1ZGUgb21lZ2EoKTtcblx0fVxuXG59XG5cbi5ub2RlLXBhZ2UtLWltYWdlIC5ncm91cC1yaWdodHtcblxuXHRAaW5jbHVkZSBzcGFuLWNvbHVtbnMoMyBvZiA4KTtcblx0QGluY2x1ZGUgb21lZ2EoKTtcblxuXHRAaW5jbHVkZSBtZWRpYSgkc21hbGwpIHtcblxuXHRcdEBpbmNsdWRlIHNwYW4tY29sdW1ucygxIG9mIDEpO1xuXHRcdEBpbmNsdWRlIG9tZWdhKCk7XG5cdH1cblxufVxuXG4ubm9kZS1wYWdlLS1pbWFnZSAuZmllbGQtYm9keSBoNCB7XG5cdG1hcmdpbi10b3A6IDM1cHg7XG5cdG1hcmdpbi1ib3R0b206IDE1cHg7XG5cdEBleHRlbmQgJWJvbGQtZm9udDtcdFxufVxuXG4uZmllbGQtcGFnZS1hdHRhY2htZW50cyB7XG5cdG1hcmdpbi10b3A6IDI1cHg7XG59XG5cbi5maWVsZC1wYWdlLWF0dGFjaG1lbnRzLWxpbmt7XG5cblx0ZGlzcGxheTogYmxvY2s7XG5cdGhlaWdodDogMzBweDtcblxuXHRzcGFuIHtcblx0XHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5cdFx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHRcdHRvcDogLTEwcHg7XG5cdH1cblxuXHQmOmJlZm9yZSB7XG5cdFx0Zm9udC1zaXplOiAzMHB4O1xuXHR9XG59IiwiXG4uc3RhY2t0YWJsZSB7XG5cdHdpZHRoOiAxMDAlO1xuXHRkaXNwbGF5OiBub25lO1xuXG5cdEBpbmNsdWRlIG1lZGlhICgkc21hbGwpIHtcblx0XHRkaXNwbGF5OiBibG9jaztcblx0fVxuXG5cdHRkIHtcblxuXHRcdEBpbmNsdWRlIG1lZGlhICgkc21hbGwpIHtcblx0XHRcdGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjRUVFO1xuXHRcdH1cblx0fVxufVxuXG4uc3QtaGVhZC1yb3cuc3QtaGVhZC1yb3ctbWFpbiB7XG5cdGZvbnQtc2l6ZTogMS41ZW07XG5cdHBhZGRpbmctdG9wOiAwO1xufVxuXG4uc3Qta2V5IHtcblx0dGV4dC1hbGlnbjogbGVmdDtcblx0cGFkZGluZy1yaWdodDogMSU7XG59XG5cbi5zdC12YWwge1xuXG59XG5cbiIsIlxuLnRvb2x0aXBzdGVyLWxhbXA4MyB7XG5cdGJvcmRlci1yYWRpdXM6IDVweDtcblx0YmFja2dyb3VuZDogI0ZGRkZGRjtcblx0Y29sb3I6ICNGRkZGRkY7XG5cdEBpbmNsdWRlIHRyYW5zZm9ybSh0cmFuc2xhdGVaKDApKTtcbn1cblxuLnRvb2x0aXBzdGVyLWxhbXA4MyAudG9vbHRpcHN0ZXItY29udGVudCB7XG5cdEBleHRlbmQgJXJlZ3VsYXItZm9udDtcblx0Zm9udC1zaXplOiAxNHB4O1xuXHRsaW5lLWhlaWdodDogMTZweDtcblx0cGFkZGluZzogNXB4IDEwcHg7XG5cdGJhY2tncm91bmQtY29sb3I6ICMwMDA7XG59XG5cbi50b29sdGlwc3Rlci1sYW1wODMgLnRvb2x0aXBzdGVyLWFycm93ID4gc3BhbiB7XG5cdGJvcmRlci10b3AtY29sb3I6ICMwMDAgIWltcG9ydGFudDtcbn1cblxuIiwiQGNoYXJzZXQgXCJVVEYtOFwiO1xuXG5AZm9udC1mYWNlIHtcbiAgZm9udC1mYW1pbHk6IFwibGFtcDgzLWljb25zXCI7XG4gIHNyYzp1cmwoXCIuLi9mb250cy9sYW1wODMtaWNvbnMuZW90XCIpO1xuICBzcmM6dXJsKFwiLi4vZm9udHMvbGFtcDgzLWljb25zLmVvdD8jaWVmaXhcIikgZm9ybWF0KFwiZW1iZWRkZWQtb3BlbnR5cGVcIiksXG4gICAgdXJsKFwiLi4vZm9udHMvbGFtcDgzLWljb25zLndvZmZcIikgZm9ybWF0KFwid29mZlwiKSxcbiAgICB1cmwoXCIuLi9mb250cy9sYW1wODMtaWNvbnMudHRmXCIpIGZvcm1hdChcInRydWV0eXBlXCIpLFxuICAgIHVybChcIi4uL2ZvbnRzL2xhbXA4My1pY29ucy5zdmcjbGFtcDgzLWljb25zXCIpIGZvcm1hdChcInN2Z1wiKTtcbiAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xuXG59XG5cbi8qKlxuICogQ1VTVE9NSVpFRCBUTyBDUkVBVEUgQUJTVFJBQ1QgQkFTRSBJQ09OIENMQVNTICEhISFcbiAqL1xuW2RhdGEtaWNvbl06YmVmb3JlIHtcbiAgZm9udC1mYW1pbHk6IFwibGFtcDgzLWljb25zXCIgIWltcG9ydGFudDtcbiAgY29udGVudDogYXR0cihkYXRhLWljb24pO1xuICBmb250LXN0eWxlOiBub3JtYWwgIWltcG9ydGFudDtcbiAgZm9udC13ZWlnaHQ6IG5vcm1hbCAhaW1wb3J0YW50O1xuICBmb250LXZhcmlhbnQ6IG5vcm1hbCAhaW1wb3J0YW50O1xuICB0ZXh0LXRyYW5zZm9ybTogbm9uZSAhaW1wb3J0YW50O1xuICBzcGVhazogbm9uZTtcbiAgbGluZS1oZWlnaHQ6IDE7XG4gIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xuICAtbW96LW9zeC1mb250LXNtb290aGluZzogZ3JheXNjYWxlO1xufVxuXG4laWNvbi1sODM6YmVmb3JlIHtcbiAgZm9udC1mYW1pbHk6IFwibGFtcDgzLWljb25zXCIgIWltcG9ydGFudDtcbiAgZm9udC1zdHlsZTogbm9ybWFsICFpbXBvcnRhbnQ7XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWwgIWltcG9ydGFudDtcbiAgZm9udC12YXJpYW50OiBub3JtYWwgIWltcG9ydGFudDtcbiAgdGV4dC10cmFuc2Zvcm06IG5vbmUgIWltcG9ydGFudDtcbiAgc3BlYWs6IG5vbmU7XG4gIGxpbmUtaGVpZ2h0OiAxO1xuICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDtcbiAgLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZTtcbn1cblxuW2NsYXNzXj1cImljb24tbDgzLVwiXSxcbltjbGFzcyo9XCIgaWNvbi1sODMtXCJde1xuICBAZXh0ZW5kICVpY29uLWw4Mztcbn1cblxuLmljb24tbDgzLWNoZXZyb24tZG93bjpiZWZvcmUge1xuICBjb250ZW50OiBcImFcIjtcbn1cbi5pY29uLWw4My1jaGV2cm9uLWxlZnQ6YmVmb3JlIHtcbiAgY29udGVudDogXCJiXCI7XG59XG4uaWNvbi1sODMtY2hldnJvbi1yaWdodDpiZWZvcmUge1xuICBjb250ZW50OiBcImNcIjtcbn1cbi5pY29uLWw4My1jaGV2cm9uLXVwOmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwiZFwiO1xufVxuLmljb24tbDgzLWlvcy1zZWFyY2gtc3Ryb25nOmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwiZlwiO1xufVxuLmljb24tbDgzLWlvcy1hcnJvdy1kb3duOmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwiZ1wiO1xufVxuLmljb24tbDgzLWlvcy1hcnJvdy11cDpiZWZvcmUge1xuICBjb250ZW50OiBcImhcIjtcbn1cbi5pY29uLWw4My1hcnJvdy11cC1iOmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwiaVwiO1xufVxuLmljb24tbDgzLWFuZHJvaWQtY2xvc2U6YmVmb3JlIHtcbiAgY29udGVudDogXCJlXCI7XG59XG4uaWNvbi1sODMtaW9zLWFycm93LWxlZnQ6YmVmb3JlIHtcbiAgY29udGVudDogXCJqXCI7XG59XG4uaWNvbi1sODMtaW9zLWFycm93LWJhY2s6YmVmb3JlIHtcbiAgY29udGVudDogXCJrXCI7XG59XG4uaWNvbi1sODMtZG9jdW1lbnQtdGV4dDpiZWZvcmUge1xuICBjb250ZW50OiBcImxcIjtcbn1cbi5pY29uLWw4My1pb3MtYXJyb3ctcmlnaHQ6YmVmb3JlIHtcbiAgY29udGVudDogXCJtXCI7XG59XG5cbiIsIi5sb2dpbi1yZWdpc3RlciB7XG5cbn1cblxuI3VzZXItbG9naW4ge1xuXG5cdD4gZGl2IHtcblx0XHRtYXJnaW4tdG9wOiAxNXB4O1xuXHR9XG5cblx0bGFiZWwge1xuXHRcdG1hcmdpbi1ib3R0b206IDNweDtcblx0XHRjb2xvcjogIzQ0NDtcblx0fVxuXG5cdHNtYWxsIHtcblx0XHRkaXNwbGF5OiBub25lO1xuXHR9XG5cblx0LmxvZ2luLXBhc3N3b3JkIHtcblx0XHRjb2xvcjogIzg4ODtcblx0XHRAZXh0ZW5kICVyZWd1bGFyLWZvbnQ7XHRcblx0XHRtYXJnaW46IDEwcHggMDtcblx0XHRkaXNwbGF5OiBibG9jaztcblx0XHRmb250LXNpemU6IDgwJTtcblxuXHRcdCY6YmVmb3JlIHtcblx0XHRcdGNvbnRlbnQ6ICdjJztcblx0XHRcdGZvbnQtc2l6ZTogOHB4O1xuXHRcdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHRcdFx0bWFyZ2luLXJpZ2h0OiAxcHg7XG5cdFx0XHRmb250LWZhbWlseTogXCJsYW1wODMtaWNvbnNcIjtcblx0XHR9XG5cblx0fVxuXG59IiwiLmNvbnRhY3QtcGFnZSB7XG5cbn1cblxuLmNvbnRhY3QtcGFnZS1mb3JtIHtcblxuXHRAaW5jbHVkZSBzcGFuLWNvbHVtbnMoNSBvZiA4KTtcblxuXHRAaW5jbHVkZSBtZWRpYSgkc21hbGwpIHtcblx0XHRAaW5jbHVkZSBzcGFuLWNvbHVtbnMoMSBvZiAxKTtcblx0XHRAaW5jbHVkZSBvbWVnYSgpO1x0XHRcblx0fVxuXG5cdGlucHV0LCB0ZXh0YXJlYSwgc2VsZWN0IHtcblx0XHR3aWR0aDogMTAwJTtcblx0fVxuXG5cdC5mb3JtLWl0ZW0sIC5mb3JtLWFjdGlvbnMge1xuXHRcdG1hcmdpbi10b3A6IDEuNDJlbTtcbiAgXHRtYXJnaW4tYm90dG9tOiAxLjQyZW07XG5cdH1cblxuXHQuZ3JpcHBpZSB7XG5cdFx0ZGlzcGxheTogbm9uZTtcblx0fVxuXG5cdC53ZWJmb3JtLWNvbXBvbmVudC0tc2hpcHBpbmctYWRkcmVzcyB7XG5cdFx0Ym9yZGVyLXdpZHRoOiAxcHggMHB4IDBweDtcblx0XHRwYWRkaW5nOiAwcHg7XG5cdFx0bWFyZ2luOiAwO1xuXG5cdFx0bGVnZW5kIHtcblx0XHRcdGJhY2tncm91bmQ6ICNGRkY7XG5cdFx0XHRkaXNwbGF5OiBibG9jaztcblx0XHRcdHBhZGRpbmctcmlnaHQ6IDRweDtcblx0XHR9XG5cdH1cblxuXHQud2ViZm9ybS1jb21wb25lbnQtLXNoaXBwaW5nLWFkZHJlc3MtLWNhdGFsb2ctb3JkZXItbmFtZSB7XG5cdFx0QGluY2x1ZGUgc3Bhbi1jb2x1bW5zKDYgb2YgMTIpO1xuXHRcdEBpbmNsdWRlIG1lZGlhKCRzbWFsbCkge1xuXHRcdFx0QGluY2x1ZGUgc3Bhbi1jb2x1bW5zKDEgb2YgMSk7XG5cdFx0fVxuXHR9XG5cblx0LndlYmZvcm0tY29tcG9uZW50LS1zaGlwcGluZy1hZGRyZXNzLS1jYXRhbG9nLW9yZGVyLXN0cmVldCB7XG5cdFx0QGluY2x1ZGUgc3Bhbi1jb2x1bW5zKDYgb2YgMTIpO1xuXHRcdEBpbmNsdWRlIG9tZWdhKCk7XG5cdFx0QGluY2x1ZGUgbWVkaWEoJHNtYWxsKSB7XG5cdFx0XHRAaW5jbHVkZSBzcGFuLWNvbHVtbnMoMSBvZiAxKTtcblx0XHR9XG5cdH1cblxuXHQud2ViZm9ybS1jb21wb25lbnQtLXNoaXBwaW5nLWFkZHJlc3MtLWNhdGFsb2ctb3JkZXItemlwLWNvZGUge1xuXHRcdEBpbmNsdWRlIHNwYW4tY29sdW1ucyg0IG9mIDEyKTtcblx0XHRAaW5jbHVkZSBtZWRpYSgkc21hbGwpIHtcblx0XHRcdEBpbmNsdWRlIHNwYW4tY29sdW1ucygxIG9mIDEpO1xuXHRcdH1cblx0fVxuXG5cdC53ZWJmb3JtLWNvbXBvbmVudC0tc2hpcHBpbmctYWRkcmVzcy0tY2F0YWxvZy1vcmRlci1jaXR5IHtcblx0XHRAaW5jbHVkZSBzcGFuLWNvbHVtbnMoNCBvZiAxMik7XHRcblx0XHRAaW5jbHVkZSBtZWRpYSgkc21hbGwpIHtcblx0XHRcdEBpbmNsdWRlIHNwYW4tY29sdW1ucygxIG9mIDEpO1xuXHRcdH1cdFxuXHR9XG5cblx0LndlYmZvcm0tY29tcG9uZW50LS1zaGlwcGluZy1hZGRyZXNzLS1jYXRhbG9nLW9yZGVyLWNvdW50cnkge1xuXHRcdEBpbmNsdWRlIHNwYW4tY29sdW1ucyg0IG9mIDEyKTtcblx0XHRAaW5jbHVkZSBvbWVnYSgpO1x0XG5cdFx0QGluY2x1ZGUgbWVkaWEoJHNtYWxsKSB7XG5cdFx0XHRAaW5jbHVkZSBzcGFuLWNvbHVtbnMoMSBvZiAxKTtcblx0XHR9XG5cdH1cbn1cblxuLmNvbnRhY3QtcGFnZS1pbmZvIHtcblxuXHRAaW5jbHVkZSBzcGFuLWNvbHVtbnMoMyBvZiA4KTtcblx0QGluY2x1ZGUgb21lZ2EoKTtcblxuXHRAaW5jbHVkZSBtZWRpYSgkc21hbGwpIHtcblx0XHRAaW5jbHVkZSBzcGFuLWNvbHVtbnMoMSBvZiAxKTtcblx0fVxuXG5cdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0cGFkZGluZy10b3A6IDM1cHg7XG59XG5cblxuLmNvbnRhY3QtcGFnZS1tYXAge1xuXG5cdGhlaWdodDogMzAwcHg7XG5cdGJhY2tncm91bmQ6IHVybCgnLi4vaW1nL2dtYXBzLnBuZycpO1xuXHRiYWNrZ3JvdW5kLXNpemU6IGNvdmVyO1xuXHRkaXNwbGF5OiBmbGV4O1xuXHRqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0cGFkZGluZzogMTBweDtcblxuXHRoMyB7XG5cdFx0Y3Vyc29yOiBwb2ludGVyO1xuXHR9XG5cblx0QGluY2x1ZGUgbWVkaWEobWluLWhlaWdodCA3NTBweCkge1xuXHRcdGhlaWdodDogMzUwcHg7XG5cdH1cblxuICBAaW5jbHVkZSBtZWRpYShtaW4taGVpZ2h0IDgwMHB4KSB7XG4gICAgIGhlaWdodDogNDAwcHg7XG4gIH1cblxuICBAaW5jbHVkZSBtZWRpYShtaW4taGVpZ2h0IDEwMDBweCkge1xuICAgICBoZWlnaHQ6IDQ1MHB4O1xuICB9XG5cbn1cblxuLmNvbnRhY3QtcGFnZS14aW5nIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICByaWdodDogMHB4O1xuICBtYXJnaW4tdG9wOiAtNzVweDtcbiAgd2lkdGg6IDUwcHg7XG4gIGhlaWdodDogNTBweDtcbn1cblxuLmxlYWZsZXQtY29udGFpbmVyIGEge1xuXHRjb2xvcjogI0FBQSAhaW1wb3J0YW50O1xufVxuIiwiLm5ld3NsZXR0ZXItc2lnbnVwLWZvcm0ge1xuXG4gIHdpZHRoOiA1MCU7XG5cbiAgaW5wdXRbdHlwZT10ZXh0XSwgc2VsZWN0IHtcbiAgICB3aWR0aDogMTAwJTtcbiAgfVxufVxuIiwiLmludHJvLWJvZHktdGV4dCB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBsaW5lLWhlaWdodDogMS40O1xuICBtYXgtd2lkdGg6IDkwMHB4O1xuICB3aWR0aDogMTAwJTtcbiAgdGV4dC1hbGlnbjoganVzdGlmeTtcbiAgZm9udC1zaXplOiAyNXB4O1xuICBtYXJnaW46IDAgYXV0bztcbiAgcGFkZGluZzogODBweDtcblxuICBAaW5jbHVkZSBtZWRpYSgkc21hbGwpIHtcbiAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgIHBhZGRpbmc6IDQwcHg7XG4gIH1cbn1cblxuLmludHJvLWJvZHktdGV4dC10aXRsZSB7XG4gIGNvbG9yOiAjZTQxNTEzO1xuICBAZXh0ZW5kICVib2xkLWZvbnQ7XG4gIGZvbnQtc2l6ZTogMTUwJTtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbn1cblxuLmludHJvLXNsaWRlc2hvdyB7XG4gIGJhY2tncm91bmQ6ICMwMDA7XG59XG5cblxuXG4uaW50cm8taWNvbi1oZWFkZXIge1xuICBtYXgtd2lkdGg6IDkwMHB4O1xuICB3aWR0aDogMTAwJTtcbiAgYmFja2dyb3VuZC1zaXplOiAxMDAlIGF1dG87XG4gIGJhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDtcbiAgaGVpZ2h0OiAxMDBweDtcbiAgbWFyZ2luOiA4MHB4IGF1dG8gNDBweCBhdXRvO1xuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXIgY2VudGVyO1xuXG4gIEBpbmNsdWRlIG1lZGlhKCRzbWFsbCkge1xuICAgIGJhY2tncm91bmQtc2l6ZTogYXV0byA4MCU7XG4gICAgbWFyZ2luOiAzMHB4IGF1dG8gMzBweCBhdXRvO1xuICAgIGJhY2tncm91bmQtY2xpcDogY29udGVudC1ib3g7XG4gICAgcGFkZGluZzogMCAxNXB4O1xuICB9XG59XG5cbi5pbnRyby1zZXBhcmF0b3ItaW1hZ2V7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDE1MHB4O1xuICBwYWRkaW5nLWJvdHRvbTogMDtcbiAgYmFja2dyb3VuZC1zaXplOiBjb3ZlcjtcbiAgYmFja2dyb3VuZC1hdHRhY2htZW50OiBmaXhlZDtcbiAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyIGNlbnRlcjtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gIEBpbmNsdWRlIG1lZGlhKCRzbWFsbCkge1xuICAgIGhlaWdodDogMTAwcHg7XG4gICAgYmFja2dyb3VuZC1hdHRhY2htZW50OiBpbmhlcml0O1xuICB9XG5cbiAgaDMge1xuICAgIG1heC13aWR0aDogOTAwcHg7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgbWFyZ2luOiAwIGF1dG87XG4gICAgZm9udC1zaXplOiAzNTAlO1xuICAgIEBleHRlbmQgJWJvbGQtZm9udDtcbiAgICBjb2xvcjogI0ZGRjtcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDUwJTtcbiAgICBsZWZ0OiA1MCU7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpIHRyYW5zbGF0ZVgoLTUwJSk7XG5cbiAgICBAaW5jbHVkZSBtZWRpYSgkc21hbGwpIHtcbiAgICAgIHBhZGRpbmctbGVmdDogNDBweDtcbiAgICB9XG5cbiAgICBzcGFuIHtcbiAgICAgIGNvbG9yOiAjZTQxNTEzO1xuICAgIH1cbiAgfVxuXG59XG5cbi5maWVsZC1mcm9udC1ib2R5IHAge1xuICBtYXgtd2lkdGg6IDkwMHB4O1xuICB3aWR0aDogMTAwJTtcbiAgbWFyZ2luOiAwcHggYXV0byAyMDBweCBhdXRvO1xuICBmb250LXNpemU6IDE4cHg7XG4gIGxpbmUtaGVpZ2h0OiAxLjU7XG4gIHRleHQtYWxpZ246IGp1c3RpZnk7XG5cbiAgQGluY2x1ZGUgbWVkaWEoJHNtYWxsKSB7XG4gICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICBwYWRkaW5nOiAwcHggMTVweCAwcHggMTVweDtcbiAgICBtYXJnaW4tYm90dG9tOiAyMHB4O1xuICB9XG59XG5cbi5pbnRyby10aWNrZXIge1xuICBtYXgtd2lkdGg6IDkwMHB4O1xuICBtYXJnaW46IDAgYXV0bztcblxuICAubWFycXVlZSB7XG4gICAgaGVpZ2h0OiAxLjRlbTtcbiAgICBtYXJnaW46IDEyMHB4IGF1dG8gMjBweDtcblxuICAgICY6YmVmb3JlLCAmOmFmdGVyIHtcbiAgICAgIGNvbnRlbnQ6IG5vbmU7XG4gICAgfVxuICB9XG5cbiAgLm1hcnF1ZWUtdGV4dCB7XG4gICAgY29sb3I6ICRoaWdobGlnaHQtY29sb3I7XG4gIH1cbn1cblxuYm9keS5wYXRoLW5vZGUtMjEwOTUge1xuICBmb290ZXIge1xuICAgIC5tYXJxdWVlLXRleHQge1xuICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG4gIH1cbn1cblxuXG4uZmllbGQtZnJvbnQtZm9vdGVyIHtcbiAgbWF4LXdpZHRoOiA5MDBweDtcbiAgd2lkdGg6IDEwMCU7XG4gIG1hcmdpbjogMTAwcHggYXV0byAxMDBweCBhdXRvO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIGZvbnQtc2l6ZTogMTkwJTtcblxuICBAaW5jbHVkZSBtZWRpYSgkc21hbGwpIHtcbiAgICBwYWRkaW5nOiAwIDE1cHg7XG4gIH1cbn1cblxuLnZpZXdzX3NsaWRlc2hvd19jeWNsZV9tYWluIHtcbiAgbWF4LXdpZHRoOiAxMDAlO1xuXG4gIC52aWV3cy1yb3cge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgfVxuXG4gIGltZyB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gIH1cblxuICAuZmllbGQtc2xmci1zbGlkZXMtaW1hZ2UgfiAqIHtcbiAgICBtYXJnaW4tbGVmdDogMHB4O1xuXG4gICAgQGluY2x1ZGUgbWVkaWEoJHNtYWxsKSB7XG4gICAgICBtYXJnaW4tbGVmdDogMHB4O1xuICAgIH1cbiAgfVxuXG4gIC5maWVsZC1zbGZyLXNsaWRlcy10aXRsZSB7XG4gICAgY29sb3I6ICNlNDE1MTM7XG4gICAgZm9udC1zaXplOiA0NTAlO1xuICAgIEBleHRlbmQgJWJvbGQtZm9udDtcbiAgICBtYXJnaW4tdG9wOiAtMzAwcHg7XG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgZm9udC1zaXplOiAxNjAlO1xuICB9XG5cbiAgLmZpZWxkLXNsZnItc2xpZGVzLXRleHQge1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgY29sb3I6ICNGRkY7XG4gICAgZm9udC1zaXplOiAxODAlO1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIG1heC13aWR0aDogNjUwcHg7XG5cbiAgICBAaW5jbHVkZSBtZWRpYSgkc21hbGwpIHtcbiAgICAgIGZvbnQtc2l6ZTogMTEwJTtcbiAgICB9XG4gIH1cblxuICAudmlld3MtZmllbGQtZmllbGQtc2xmci1zbGlkZXMtbGluayB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGJvdHRvbTogODBweDtcbiAgICBsZWZ0OiA4MHB4O1xuICAgIG1hcmdpbi1yaWdodDogODBweDtcblxuICAgIHAge1xuICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICB9XG5cbiAgICBAaW5jbHVkZSBtZWRpYSgkc21hbGwpIHtcbiAgICAgIGxlZnQ6IDE1cHg7XG4gICAgICBtYXJnaW4tcmlnaHQ6IDE1cHg7XG4gICAgICBib3R0b206IDQwcHg7XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgbWVkaWEoJG1lZGl1bSkge1xuICAgICAgbGVmdDogNDBweDtcbiAgICB9XG4gIH1cblxuICAuZmllbGQtc2xmci1zbGlkZXMtbGlua3RleHQge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBAZXh0ZW5kICVib2xkLWZvbnQ7XG4gICAgZm9udC1zaXplOiAxNDAlO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNlNDE1MTM7XG4gICAgY29sb3I6ICNGRkY7XG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICBwYWRkaW5nOiAwLjJlbSAwLjRlbTtcbiAgICBtYXJnaW4tdG9wOiAxNXB4O1xuXG4gICAgQGluY2x1ZGUgbWVkaWEoJHNtYWxsKSB7XG4gICAgICBmb250LXNpemU6IDcwJTtcbiAgICB9XG4gIH1cblxufVxuXG4ud2lkZ2V0X3BhZ2VyX2JvdHRvbSB7XG5cbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB6LWluZGV4OiA5MDA7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgbWFyZ2luLXRvcDogLTIwcHg7XG4gIGxlZnQ6IDUwJTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpIHRyYW5zbGF0ZVkoLTEwMCUpO1xuICBtYXgtd2lkdGg6IDEwMCU7XG5cbiAgPiAqIHtcbiAgICBtYXgtd2lkdGg6IDEwMCU7XG4gIH1cblxuICAudmlld3Nfc2xpZGVzaG93X3BhZ2VyX2ZpZWxkX2l0ZW0ge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBtYXJnaW46IDAgNXB4O1xuICAgIGJhY2tncm91bmQ6ICNGRkY7XG4gICAgd2lkdGg6IDEzcHg7XG4gICAgaGVpZ2h0OiAxM3B4O1xuICAgIGZvbnQtc2l6ZTogMHB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICB0cmFuc2l0aW9uOiAwLjJzIGFsbCBsaW5lYXI7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuXG4gICAgJi5hY3RpdmUge1xuICAgICAgYmFja2dyb3VuZDogI2U0MTUxMztcbiAgICB9XG5cbiAgICA+ICoge1xuICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG4gIH1cblxuICBpbWcge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICB9XG59XG4iLCIuam9iIHtcbiAgb3V0bGluZTogMDtcbn1cblxuLmpvYi10aXRsZSB7XG5cbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBwYWRkaW5nLWxlZnQ6IDEuM2VtO1xuXG4gIGEge1xuICAgIG91dGxpbmU6IDA7XG4gIH1cbn1cblxuLmpvYi10aXRsZS1pY29uIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBsZWZ0OiAwO1xuICB0b3A6IDNweDtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXG4gIC5qb2ItdGl0bGUub3BlbmVkICYge1xuICAgIHRyYW5zZm9ybTogcm90YXRlKDkwZGVnKSB0cmFuc2xhdGVZKDEwcHgpO1xuICB9XG59XG5cbi5qb2ItZGVzY3JpcHRpb24ge1xuICBkaXNwbGF5OiBub25lO1xuICBtYXJnaW4tbGVmdDogMzBweDtcbiAgbWFyZ2luLXRvcDogMTBweDtcbn1cblxuLmpvYi1kZXNjcmlwdGlvbi5vcGVuZWQsIC5ja2VfZWRpdGFibGUgLmpvYi1kZXNjcmlwdGlvbiB7XG4gIGRpc3BsYXk6IGJsb2NrO1xufSIsIi5uZXdzbGV0dGVyLXN1YnNjcmlwdGlvbiB7XG4gIGNsZWFyOiBib3RoO1xuXG4gIC50aXRsZSB7XG4gICAgbWFyZ2luLWJvdHRvbTogMTVweDtcbiAgICBwYWRkaW5nLXRvcDogNDVweDtcbiAgICBwYWRkaW5nLWJvdHRvbTogMTVweDtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgIzAwMDtcbiAgfVxuXG4gIGlucHV0IHtcbiAgICBtYXJnaW46IDAgMCAxLjQyZW0gMDtcbiAgfVxuXG59IiwiLm1lbnUtYnVzaW5lc3MtaXRlbSB7XG5cblx0ZGlzcGxheTogYmxvY2s7XG5cdG1hcmdpbi1ib3R0b206IDI1cHg7XG5cdGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG5cdGJhY2tncm91bmQtc2l6ZTogMTAwJSBhdXRvO1xuXG4gIEBpbmNsdWRlIG1lZGlhKCRzbWFsbCkge1xuXHRcdEBpbmNsdWRlIHNwYW4tY29sdW1ucyg2IG9mIDEyKTtcblx0XHRAaW5jbHVkZSBvbWVnYSgybik7XG5cdFx0bWFyZ2luLWJvdHRvbTogMTBweDtcbiAgfVxuXG5cdEBpbmNsdWRlIG1lZGlhKCRtZWRpdW0pIHtcblx0XHRAaW5jbHVkZSBzcGFuLWNvbHVtbnMoMyBvZiAxMik7XG5cdFx0QGluY2x1ZGUgb21lZ2EoNG4pO1xuXHR9XHRcblxuXHRAaW5jbHVkZSBtZWRpYSgkbGFyZ2UpIHtcblx0XHRAaW5jbHVkZSBzcGFuLWNvbHVtbnMoMyBvZiAxMik7XG5cdFx0QGluY2x1ZGUgb21lZ2EoNG4pO1xuXHR9XG59XG5cbi5tZW51LWJ1c2luZXNzLWl0ZW0tbGluayB7XG5cdGhlaWdodDogMDtcblx0d2lkdGg6IDEwMCU7XG5cdHBhZGRpbmctYm90dG9tOiAxMDAlO1xuXHRkaXNwbGF5OiBibG9jaztcblx0b3BhY2l0eTogMTtcblx0b3V0bGluZTogMCAhaW1wb3J0YW50O1xuXHRAaW5jbHVkZSB0cmFuc2l0aW9uKG9wYWNpdHkgMC40cyBlYXNlLWluLW91dCk7XG5cdGJhY2tncm91bmQtc2l6ZTogMTAwJSBhdXRvO1xuXHRiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGO1xuXG5cdCY6aG92ZXIge1xuXHRcdG9wYWNpdHk6IDE7XG5cdH1cbn1cblxuLm1lbnUtYnVzaW5lc3MtaXRlbS10aXRsZSB7XG5cdG1hcmdpbi10b3A6IDVweDtcblx0dGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbn1cblxuJG1lbnUtYnVzaW5lc3MtaXRlbXM6IHRlY2ggY29ycG9yYXRlIGdsb3NzYXJ5IGRvd25sb2FkcyB0ZWFtO1xuXG5AZWFjaCAkbWVudS1idXNpbmVzcy1pdGVtIGluICRtZW51LWJ1c2luZXNzLWl0ZW1zIHtcblxuICAubWVudS1idXNpbmVzcy1pdGVtLS0jeyRtZW51LWJ1c2luZXNzLWl0ZW19ICB7XG4gIFx0YmFja2dyb3VuZC1pbWFnZTogdXJsKC4uL2ltZy9idXNpbmVzcy9kaXN0L2J1c2luZXNzLSN7JG1lbnUtYnVzaW5lc3MtaXRlbX0uanBnPzEzKTtcblx0fVxuXG4gIC5tZW51LWJ1c2luZXNzLWl0ZW0tLSN7JG1lbnUtYnVzaW5lc3MtaXRlbX0gYSB7XG4gIFx0YmFja2dyb3VuZC1pbWFnZTogdXJsKC4uL2ltZy9pY29ucy9idXNpbmVzcy1pY29uLSN7JG1lbnUtYnVzaW5lc3MtaXRlbX0uc3ZnKTtcbiAgXHRvcGFjaXR5OiAwO1xuXG4gIFx0Jjpob3ZlciB7XG4gIFx0XHRvcGFjaXR5OiAwLjU7XG4gIFx0fVxuXHR9XG59IiwiLmRvd25sb2Fkcy1pY29uIHtcblx0ZGlzcGxheTogYmxvY2s7XG5cdHBhZGRpbmctYm90dG9tOiAxNHB4O1xufVxuXG4uZG93bmxvYWRzLWljb246YmVmb3JlIHtcbiAgZm9udC1zaXplOiAzMHB4OyBcbiAgdG9wOiAxMHB4O1xuXHRsZWZ0OiAtNnB4O1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG5cbi5kb3dubG9hZHMtaXRlbSB7XG5cbn1cblxuLmRvd25sb2Fkcy1saXN0IGxpIHtcbiAgLyoqXG4gIEBleHRlbmQgJWljb24tbDgzO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjRUVFO1xuICBwYWRkaW5nOiAxMHB4IDI1cHggMTBweCAzMHB4O1xuXG4gICY6YmVmb3JlIHtcbiAgICBjb250ZW50OiAnbCc7XG4gICAgZm9udC1zaXplOiAzMHB4O1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDEwcHg7XG4gICAgbGVmdDogMDtcbiAgfSoqL1xuICBkaXNwbGF5OiBibG9jaztcbiAgcGFkZGluZzogMjBweCA1NXB4IDIwcHggNXB4O1xuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI0VFRTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICY6aG92ZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNGNUY1RjU7XG4gIH1cbn1cblxuLmRvd25sb2Fkcy1saXN0IHAge1xuICBtYXJnaW4tYm90dG9tOiAwO1xufVxuXG4uZG93bmxvYWRzLWxpc3QgYSB7XG4gIGRpc3BsYXk6IGJsb2NrO1xufVxuXG4uZG93bmxvYWRzLWxpc3QgaDMge1xuICBAZXh0ZW5kICVib2xkLWZvbnQ7XG59XG5cbltjbGFzcyo9ZG93bmxvYWRzLWljb25dIHtcbiAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgYmFja2dyb3VuZC1zaXplOiBjb250YWluO1xuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiByaWdodDtcbiAgaGVpZ2h0OiA2MHB4O1xuICB3aWR0aDogNjJweDtcbiAgY29udGVudDogJyc7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogNTAlO1xuICByaWdodDogM3B4O1xuICBtYXJnaW4tdG9wOiAtMzBweDtcbn1cblxuLmRvd25sb2Fkcy1pY29uLXBkZiB7XG4gIGJhY2tncm91bmQtaW1hZ2U6IHVybCguLi9pbWcvaWNvbnMvZG93bmxvYWQtaWNvbi1wZGYuc3ZnKTtcbn1cblxuLmRvd25sb2Fkcy1pY29uLXppcCB7XG4gIGJhY2tncm91bmQtaW1hZ2U6IHVybCguLi9pbWcvaWNvbnMvZG93bmxvYWQtaWNvbi16aXAuc3ZnKTtcbn1cblxuLmRvd25sb2Fkcy1pY29uLWNhdGFsb2cge1xuICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoLi4vaW1nL2ljb25zL2Rvd25sb2FkLWljb24tY2F0YWxvZy5wbmcpO1xufVxuIiwiLmdsb3NzYXJ5LXRhYmxlIHRib2R5IHtcbiBib3JkZXI6IDAgbm9uZTtcbn1cblxuLmdsb3NzYXJ5LXRhYmxlIHRkIHtcbiAgdmVydGljYWwtYWxpZ246IHRvcDtcbiAgcGFkZGluZzogOHB4IDEycHggOHB4IDA7XG4gIGxpbmUtaGVpZ2h0OiAxLjE7XG59XG5cbiRnbG9zc2FyeS1pY29uczogZW5lYyBjZSBzY2h1dHprbGFzc2UtMSBzY2h1dHprbGFzc2UtMiBzY2h1dHprbGFzc2UtMztcblxuQGVhY2ggJGdsb3NzYXJ5LWljb24gaW4gJGdsb3NzYXJ5LWljb25zIHtcbiAgLmdsb3NzYXJ5LWljb24tLSN7JGdsb3NzYXJ5LWljb259IHtcbiAgXHRiYWNrZ3JvdW5kLWltYWdlOiB1cmwoLi4vaW1nL2ljb25zL2dsb3NzYXJ5LWljb24tI3skZ2xvc3NhcnktaWNvbn0uc3ZnKTtcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkaGlnaGxpZ2h0LWNvbG9yO1xuXHR9XG59XG5cblxuW2NsYXNzKj1nbG9zc2FyeS1pY29uXSB7XG5cdGJhY2tncm91bmQtY29sb3I6ICNGRkY7XG59IiwiLnRlYW0tbGlzdCB7XG5cbiAgbWFyZ2luLXRvcDogNTBweDtcblxuICBAaW5jbHVkZSBtZWRpYSgkc21hbGwpIHtcbiAgICBtYXJnaW4tdG9wOiAxMHB4O1xuICB9XG59XG5cbi50ZWFtLWxpc3QtaXRlbSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmNGY0ZjQ7XG4gIGhlaWdodDogMHB4O1xuICBwYWRkaW5nLWJvdHRvbTogMjEuMjklO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIG1hcmdpbi1ib3R0b206IDM5cHg7XG5cbiAgQGluY2x1ZGUgbWVkaWEoJHNtYWxsKSB7XG4gICAgQGluY2x1ZGUgc3Bhbi1jb2x1bW5zKDQgb2YgMTIpO1xuICAgIHBhZGRpbmctYm90dG9tOiAzOC4yOSU7XG4gICAgbWFyZ2luLWJvdHRvbTogMTBweDtcbiAgICBAaW5jbHVkZSBvbWVnYSgzbik7XG4gICAgLyoqXG4gICAgJjpudGgtY2hpbGQoM24pLCAmOm50aC1jaGlsZCg3biksICY6bnRoLWNoaWxkKDEwbiksICY6bnRoLWNoaWxkKDEzbikge1xuICAgICAgQGluY2x1ZGUgb21lZ2EoKTtcbiAgICB9XG4gICAgKiovXG4gIH0gXG5cbiAgQGluY2x1ZGUgbWVkaWEoJG1lZGl1bSkge1xuICAgIEBpbmNsdWRlIHNwYW4tY29sdW1ucygyIG9mIDEwKTtcbiAgICBAaW5jbHVkZSBvbWVnYSg1bik7XG4gIH0gXG5cbiAgQGluY2x1ZGUgbWVkaWEoJGxhcmdlKSB7XG4gICAgQGluY2x1ZGUgc3Bhbi1jb2x1bW5zKDIgb2YgMTApO1xuICAgIEBpbmNsdWRlIG9tZWdhKDVuKTtcbiAgfSBcblxuICBpbWcge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBsZWZ0OiAwO1xuICAgIHRvcDogMDtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICB3aWR0aDogMTAwJTtcbiAgfVxuXG4gIGgzIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgei1pbmRleDogMjtcbiAgICBib3R0b206IDBweDtcbiAgICBsZWZ0OiAwcHg7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgcGFkZGluZzogNXB4IDE0cHg7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgZm9udC1zaXplOiAxNzAlO1xuICAgIGNvbG9yOiByZ2JhKDI1NSwyNTUsMjU1LDEpO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMTcwLCAyMDUsIDAuNik7XG4gICAgb3BhY2l0eTogMDtcbiAgICBwYWRkaW5nLXRvcDogNDAwcHg7XG4gICAgbGluZS1oZWlnaHQ6IDEuMztcbiAgICBAaW5jbHVkZSB0cmFuc2Zvcm0odHJhbnNsYXRlWSgwJSkpO1xuICAgIEBpbmNsdWRlIHRyYW5zaXRpb24oYWxsIDAuMnMgJGVhc2Utb3V0LXF1YWQpO1xuXG4gICAgQGluY2x1ZGUgbWVkaWEoJG1lZGl1bSkge1xuICAgICAgZm9udC1zaXplOiAxNTAlO1xuICAgIH1cblxuICAgIEBpbmNsdWRlIG1lZGlhKCRzbWFsbCkge1xuICAgICAgZm9udC1zaXplOiAxMjAlO1xuICAgIH1cbiAgfVxufVxuXG5cbi50ZWFtLWxpc3QtaXRlbTpob3ZlciB7XG5cbiAgaDMge1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cblxufVxuXG4udGVhbS1saXN0LWl0ZW0tcGxhY2Vob2xkZXIge1xuICAvKipcbiAgQGluY2x1ZGUgbWVkaWEoJHNtYWxsKSB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfSAgXG4gICoqL1xufSIsIiNiYWNrdG90b3Age1xuICB3aWR0aDogNDBweDtcbiAgaGVpZ2h0OiA0MHB4O1xuICBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyO1xuICBkaXNwbGF5OiBub25lO1xuICB6LWluZGV4OiA5OTkgIWltcG9ydGFudDtcblxuICBAaW5jbHVkZSBtZWRpYSgkc21hbGwpIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgfVxufSIsIlxuQGtleWZyYW1lcyBtYXJxdWVlIHtcbiAgMCUgICB7IEBpbmNsdWRlIHRyYW5zZm9ybSh0cmFuc2xhdGVYKDAlKSkgfVxuICAxMDAlIHsgQGluY2x1ZGUgdHJhbnNmb3JtKHRyYW5zbGF0ZVgoLTEwNSUpKX1cbn1cblxuLm1hcnF1ZWUge1xuICB3aWR0aDogMTAwJTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBtYXJnaW46IDUwcHggYXV0bztcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgdG9wOiAwcHg7XG4gIGhlaWdodDogNDRweDtcbiAgY29sb3I6ICNlZWU7XG4gIGZvbnQtc2l6ZTogMTIwJTtcbiAgQGV4dGVuZCAlYm9sZC1mb250OyBcblxuICBAaW5jbHVkZSBtZWRpYSgkc21hbGxUb01lZGl1bSkge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cblxuICAmOmJlZm9yZSwgJjphZnRlciB7XG4gICAgY29udGVudDogJyc7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICB3aWR0aDogMjBweDtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgei1pbmRleDogMztcbiAgfVxuXG4gICY6YmVmb3JlIHtcbiAgICBsZWZ0OiAwO1xuICAgIEBpbmNsdWRlIGxpbmVhci1ncmFkaWVudCh0byByaWdodCwgIzAwMCwgcmdiYSgwLDAsMCwwKSk7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIH1cblxuICAmOmFmdGVyIHtcbiAgICByaWdodDogMDtcbiAgICBAaW5jbHVkZSBsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHJnYmEoMCwwLDAsMCksICMwMDApO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICB9XG59XG5cbi5tYXJxdWVlLXRleHQge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICBAaW5jbHVkZSBhbmltYXRpb24obWFycXVlZSAyMDBzIGxpbmVhciBpbmZpbml0ZSk7XG59XG5cbiIsIi8qKlxuICogU21hbGxcbiAqL1xuLmdyaWQtcy0zMyB7XG4gIEBpbmNsdWRlIG1lZGlhKCRzbWFsbCkge1xuICAgIEBpbmNsdWRlIHNwYW4tY29sdW1ucyg0IG9mIDEyKTtcbiAgfVxufVxuXG4uZ3JpZC1zLTUwIHtcbiAgQGluY2x1ZGUgbWVkaWEoJHNtYWxsKSB7XG4gICAgQGluY2x1ZGUgc3Bhbi1jb2x1bW5zKDYgb2YgMTIpO1xuICB9XG59XG5cbi5ncmlkLXMtMTAwIHtcbiAgQGluY2x1ZGUgbWVkaWEoJHNtYWxsKSB7XG4gICAgQGluY2x1ZGUgc3Bhbi1jb2x1bW5zKDEyIG9mIDEyKTtcbiAgfVxufVxuXG4vKipcbiAqIE1lZGl1bVxuICovXG4uZ3JpZC1tLTMzIHtcbiAgQGluY2x1ZGUgbWVkaWEoJG1lZGl1bSkge1xuICAgIEBpbmNsdWRlIHNwYW4tY29sdW1ucyg0IG9mIDEyKTtcbiAgfVxufVxuXG4uZ3JpZC1tLTUwIHtcbiAgQGluY2x1ZGUgbWVkaWEoJG1lZGl1bSkge1xuICAgIEBpbmNsdWRlIHNwYW4tY29sdW1ucyg2IG9mIDEyKTtcbiAgfVxufVxuXG4uZ3JpZC1tLTEwMCB7XG4gIEBpbmNsdWRlIG1lZGlhKCRtZWRpdW0pIHtcbiAgICBAaW5jbHVkZSBzcGFuLWNvbHVtbnMoMTIgb2YgMTIpO1xuICB9XG59XG5cbi8qKlxuICogTGFyZ2VcbiAqL1xuLmdyaWQtbC0zMyB7XG4gIEBpbmNsdWRlIG1lZGlhKCRsYXJnZSkge1xuICAgIEBpbmNsdWRlIHNwYW4tY29sdW1ucyg0IG9mIDEyKTtcbiAgfVxufVxuXG4uZ3JpZC1sLTUwIHtcbiAgQGluY2x1ZGUgbWVkaWEoJGxhcmdlKSB7XG4gICAgQGluY2x1ZGUgc3Bhbi1jb2x1bW5zKDYgb2YgMTIpO1xuICB9XG59XG5cbi5ncmlkLWwtMTAwIHtcbiAgQGluY2x1ZGUgbWVkaWEoJGxhcmdlKSB7XG4gICAgQGluY2x1ZGUgc3Bhbi1jb2x1bW5zKDEyIG9mIDEyKTtcbiAgfVxufVxuXG4vKipcbiAqIEdlbmVyYWxcbiAqL1xuLmdyaWQtb21lZ2Ege1xuICBAaW5jbHVkZSBvbWVnYSgpO1xufVxuIiwiLnRleHQtc3Ryb25nIHtcbiAgQGV4dGVuZCAlYm9sZC1mb250OyBcbn1cblxuLnRleHQtcmVndWxhciB7XG4gIEBleHRlbmQgJXJlZ3VsYXItZm9udDsgXG59XG5cbi50ZXh0LWNlbnRlciB7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cblxuLnRleHQtanVzdGlmeSB7XG4gIHRleHQtYWxpZ246IGp1c3RpZnk7XG4gIEBpbmNsdWRlIGh5cGhlbnMoYXV0byk7XG59XG5cbi50ZXh0LWh5cGhlbiB7XG4gIEBpbmNsdWRlIGh5cGhlbnMoYXV0byk7IFxufVxuXG4udGV4dC11bmRlcmxpbmUge1xuICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbn1cblxuLnRleHQtc2l6ZS1zLWxhcmdlIHtcbiAgQGluY2x1ZGUgbWVkaWEoJHNtYWxsKSB7XG4gICAgZm9udC1zaXplOiAxNTAlICFpbXBvcnRhbnQ7XG4gIH1cbn1cblxuLm5vLXRyYW5zZm9ybSB7XG4gIEBpbmNsdWRlIHRyYW5zZm9ybShub25lKTtcbn0iLCJcblxuYm9keS5wYXRoLW5ld3MsIGJvZHkubm9kZS10eXBlLW5ld3Mge1xuXG4gIC5wYWdlLWJhbm5lcjphZnRlciB7XG4gICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICB9XG5cbiAgLnBhZ2UtYm9keS10aXRsZSB7XG4gICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICB9XG5cbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQXlGR0UsQUFBQSxJQUFJLENBQUM7RUFDSCxVQUFVLEVBQUUsVUFBVSxHQUN2Qjs7QUFFRCxBQUNFLENBREQsRUFBRCxDQUFDLEFBRUUsT0FBTyxFQUZWLENBQUMsQUFHRSxRQUFRLENBQUM7RUFDUixVQUFVLEVBQUUsT0FBTyxHQUNwQjs7QWVaTCxBQUFBLENBQUMsQ0FBQztFQUNELE1BQU0sRUFBRSxDQUFDO0VBQ1QsT0FBTyxFQUFFLENBQUMsR0FDVjs7QUFFRCxBQUFBLENBQUMsRUFBRSxDQUFDLEFBQUEsT0FBTyxFQUFFLENBQUMsQUFBQSxNQUFNLENBQUM7RUFDcEIsVUFBVSxFQUFFLFVBQVUsR0FDdEI7O0FBRUQsQUFBQSxJQUFJLEVBQUUsSUFBSSxDQUFDO0VBQ1YsTUFBTSxFQUFFLGVBQWUsR0FDdkI7O0FBRUQsQUFBQSxJQUFJLENBQUM7RUFFSixXQUFXLEVBQUUsR0FBRztFQUNoQixXQUFXLEVBQUUsSUFBSSxHQUtqQjtFQVJELEFBS0MsSUFMRyxBQUtGLFFBQVEsQ0FBQztJQUNULFdBQVcsRUFBRSxDQUFDLEdBQ2Q7O0FBR0YsQUFBQSxHQUFHLENBQUM7RUFDSCxTQUFTLEVBQUUsSUFBSTtFQUNmLE1BQU0sRUFBRSxJQUFJLEdBQ1o7O0FBRUQsQUFBQSxDQUFDLEVBQUUsQ0FBQyxBQUFBLE1BQU0sRUFBRSxDQUFDLEFBQUEsT0FBTyxFQUFFLENBQUMsQUFBQSxRQUFRLENBQUM7RUFDL0IsS0FBSyxFQUFFLElBQUk7RUFDWCxlQUFlLEVBQUUsSUFBSSxHQUNyQjs7QUFFRCxBQUFBLENBQUMsQ0FBQztFQUNELGFBQWEsRUFBRSxJQUFJLEdBQ25COztBQUVELEFBQUEsRUFB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 */
