/* Prototype */
/* stylelint-disable color-no-hex */
/* stylelint-enable color-no-hex */
/* stylelint-disable string-quotes, order/properties-alphabetical-order */
/* stylelint-disable indentation */
/* stylelint-disable color-no-hex */
.prototype .page__header {
  padding-top: 48px;
}
.prototype .page__footer {
  padding-bottom: 48px;
}
.prototype .prototype__example {
  background-color: #f0f4f5;
  border: 1px solid #aeb7bd;
}
.prototype .prototype__example a {
  display: block;
  border-bottom: 1px solid #aeb7bd;
  padding: 0.5em;
  color: #005eb8;
}
.prototype .prototype__example iframe {
  border: 0;
}
.prototype .prototype__example.scaled .thumbnail {
  position: relative;
  -ms-zoom: 0.47;
  -moz-transform: scale(0.47);
  -moz-transform-origin: 0 0;
  -o-transform: scale(0.47);
  -o-transform-origin: 0 0;
  -webkit-transform: scale(0.47);
  -webkit-transform-origin: 0 0;
}
.prototype .prototype__example.scaled .thumbnail iframe {
  width: 1440px;
  background-color: #f0f4f5;
}
.prototype .prototype__example.block .thumbnail iframe {
  width: 100%;
  background-color: #f0f4f5;
}
.prototype .prototype__table {
  padding: 0;
}
.prototype .prototype__table th,
.prototype .prototype__table td {
  line-height: 1em;
  padding: 0.5em;
  vertical-align: middle;
}

.prototype--inner .page__layout {
  box-sizing: border-box;
  display: flex;
  flex-wrap: wrap;
}
@media screen\0  {
  .prototype--inner .page__layout:after {
    content: "";
    display: table;
    clear: both;
  }
}
.prototype--inner .page__layout .page__leftbar {
  box-sizing: border-box;
  width: 25%;
  flex: 0 0 25%;
}
@media screen\0  {
  .prototype--inner .page__layout .page__leftbar {
    float: left;
    flex: none;
  }
}
.prototype--inner .page__layout .page__main {
  box-sizing: border-box;
  width: 70.8333333333%;
  flex: 0 0 70.8333333333%;
  margin-left: 4.1666666667%;
}
@media screen\0  {
  .prototype--inner .page__layout .page__main {
    float: left;
    flex: none;
  }
}
@media (max-width: 48.0525em) {
  .prototype--inner .page__layout .page__leftbar,
  .prototype--inner .page__layout .page__main {
    box-sizing: border-box;
    width: 100%;
    flex: 0 0 100%;
    margin-left: 0%;
  }
}
@media screen\0  and (max-width: 48.0525em) {
  .prototype--inner .page__layout .page__leftbar,
  .prototype--inner .page__layout .page__main {
    float: left;
    flex: none;
  }
}
.prototype--inner .page__leftbar {
  margin-top: 48px;
  margin-bottom: 48px;
}
.prototype--inner .page__leftbar .nhsuk-back-link {
  border-bottom: 1px solid #CCC;
  padding-bottom: 12px;
}

.prototype__subnav h3 {
  font-weight: bold;
  font-size: 19px;
  font-size: 1.1875rem;
  line-height: 1.25;
  color: #4c6272;
  margin-bottom: 12px;
  padding-top: 4px;
  padding-left: 4px;
}
.prototype__subnav h4 {
  font-size: 16px;
  font-weight: bold;
  color: #5e6e79;
  margin-bottom: 0.5em;
  padding-left: 4px;
}
.prototype__subnav ul {
  list-style: none;
  margin: 0 0 24px 0;
  padding: 0;
}
.prototype__subnav ul li {
  font-size: 16px;
  font-size: 1rem;
  line-height: 1.3;
  padding-left: 4px;
  border-left: 4px solid transparent;
  margin-left: -4px;
}
.prototype__subnav ul li a {
  color: #005eb8;
  text-decoration: none;
}
.prototype__subnav ul li.current {
  border-left: 4px solid #005eb8;
}
/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInByb3RvdHlwZS5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL25oc3VrLWZyb250ZW5kL3BhY2thZ2VzL2NvcmUvc2V0dGluZ3MvX2NvbG91cnMuc2NzcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9uaHN1ay1mcm9udGVuZC9wYWNrYWdlcy9jb3JlL3Rvb2xzL19zaGFwZS1hcnJvdy5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL25oc3VrLWZyb250ZW5kL3BhY2thZ2VzL2NvcmUvdmVuZG9yL3Nhc3MtbXEuc2NzcyIsInRlbXBsYXRlL19sYXlvdXQuc2NzcyIsIi4uL2hlZS91dGlscy9taXhpbnMvX2dyaWQuc2NzcyIsIi4uL2hlZS91dGlscy9taXhpbnMvX2Jyb3dzZXIuc2NzcyIsInN1Ym5hdi9fc3VibmF2LnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUNnQkE7QUErQkE7QUMvQkE7QUNiQTtBQWdWQTtBQ2xWRTtFQUNFOztBQUVGO0VBQ0U7O0FBR0Y7RUFDRTtFQUNBOztBQUNBO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7O0FBRUY7RUFDRTs7QUFHQTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0FBRUY7RUFDRTtFQUNBOztBQUtGO0VBQ0U7RUFDQTs7QUFNTjtFQUNFOztBQUVBO0FBQUE7RUFFRTtFQUNBO0VBQ0E7OztBQVFKO0VDaEREO0VBRUMsU0FYaUI7RUFpQmpCLFdBZmM7O0FDSFY7RURxQ0U7SUFDSTtJQUNBO0lBQ0E7OztBRG9CUjtFQ0ZIO0VBbUJlO0VBZ0NmOztBQzdHSztFRjRERjtJQzZESTtJQUNBOzs7QUQzREo7RUNMSDtFQW1CZTtFQWdDZjtFQUVPOztBQy9HRjtFRitERjtJQzBESTtJQUNBOzs7QUZtSEo7RUN4S0U7QUFBQTtJQ1hMO0lBbUJlO0lBZ0NmO0lBRU87OztBQy9HRjtFRnFFQTtBQUFBO0lDb0RFO0lBQ0E7OztBRDlDTjtFQUNFO0VBQ0E7O0FBQ0E7RUFDRTtFQUNBOzs7QUduRko7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztBQUVGO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QUFFRjtFQUNFO0VBQ0E7RUFDQTs7QUFDQTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QUFDQTtFQUNFO0VBQ0E7O0FBRUY7RUFDRSIsImZpbGUiOiJwcm90b3R5cGUuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLyogUHJvdG90eXBlICovXG5cbi8vIE5IU1VLIEluY2x1ZGVzXG5AaW1wb3J0ICdub2RlX21vZHVsZXMvbmhzdWstZnJvbnRlbmQvcGFja2FnZXMvY29yZS9zZXR0aW5ncy9hbGwnO1xuQGltcG9ydCAnbm9kZV9tb2R1bGVzL25oc3VrLWZyb250ZW5kL3BhY2thZ2VzL2NvcmUvdG9vbHMvYWxsJztcblxuLy8gVXRpbHNcbkBpbXBvcnQgJy4uL2hlZS91dGlscy9taXhpbnMnO1xuXG4vLyBUZW1wbGF0ZVxuQGltcG9ydCAndGVtcGxhdGUvbGF5b3V0JztcblxuLy8gTWFjcm9zXG5AaW1wb3J0ICdzdWJuYXYvc3VibmF2JzsiLCIvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gU0VUVElOR1MgLyAjQ09MT1VSU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLy9cbi8vIE5IUyBjb2xvdXIgcGFsZXR0ZVxuLy9cbi8vIENvbG91cnMgYXJlIHByZWZpeGVkIHdpdGggY29sb3JfIHRvIG1ha2UgdGhlbSBlYXNpZXIgdG9cbi8vIHNlYXJjaCBmb3Igd2l0aGluIHRoZSBjb2RlIGJhc2UuXG4vL1xuLy8gV2UgYWxzbyBwcmVmaXggdGhlbSB3aXRoIG5oc3VrLSB0byBwcmV2ZW50IGNsYXNoaW5nIHdpdGhcbi8vIG90aGVyIGNvbG91cnMgaW4gZXhpc3RpbmcgY29kZSBiYXNlcy5cbi8vXG4vLyBXZSB1c2UgdGhlIHdvcmQgY29sb3IsIG5vdCBjb2xvdXIsIGZvciB2YXJpYWJsZXMuXG4vL1xuXG4vKiBzdHlsZWxpbnQtZGlzYWJsZSBjb2xvci1uby1oZXggKi9cblxuJGNvbG9yX25oc3VrLWJsdWU6ICMwMDVlYjg7XG4kY29sb3JfbmhzdWstd2hpdGU6ICNmZmZmZmY7XG4kY29sb3JfbmhzdWstYmxhY2s6ICMyMTJiMzI7XG4kY29sb3JfbmhzdWstZ3JlZW46ICMwMDdmM2I7XG4kY29sb3JfbmhzdWstcHVycGxlOiAjMzMwMDcyO1xuJGNvbG9yX25oc3VrLWRhcmstcGluazogIzdjMjg1NTtcbiRjb2xvcl9uaHN1ay1yZWQ6ICNkNTI4MWI7XG4kY29sb3JfbmhzdWsteWVsbG93OiAjZmZlYjNiO1xuXG4vL1xuLy8gU2Vjb25kYXJ5IGNvbG91cnNcbi8vXG5cbiRjb2xvcl9uaHN1ay1wYWxlLXllbGxvdzogI2ZmZjljNDtcbiRjb2xvcl9uaHN1ay13YXJtLXllbGxvdzogI2ZmYjgxYztcbiRjb2xvcl9uaHN1ay1vcmFuZ2U6ICNlZDhiMDA7XG4kY29sb3JfbmhzdWstYXF1YS1ncmVlbjogIzAwYTQ5OTtcbiRjb2xvcl9uaHN1ay1waW5rOiAjYWUyNTczO1xuXG4vL1xuLy8gR3JleXNjYWxlXG4vL1xuXG4kY29sb3JfbmhzdWstZ3JleS0xOiAjNGM2MjcyO1xuJGNvbG9yX25oc3VrLWdyZXktMjogIzc2ODY5MjtcbiRjb2xvcl9uaHN1ay1ncmV5LTM6ICNhZWI3YmQ7XG4kY29sb3JfbmhzdWstZ3JleS00OiAjZDhkZGUwO1xuJGNvbG9yX25oc3VrLWdyZXktNTogI2YwZjRmNTtcblxuLyogc3R5bGVsaW50LWVuYWJsZSBjb2xvci1uby1oZXggKi9cbi8vXG4vLyBSR0IgYW5kIGFscGhhIHZhbHVlc1xuLy9cbi8vIFVzZWQgdG8gY3JlYXRlIGRyb3AvYm94IHNoYWRvd3MgZS5nLiBmb3Igc2VhcmNoIHN1Z2dlc3Rpb25zIGRyb3Bkb3duXG4vL1xuXG4kY29sb3JfbmhzdWstZ3JleS0xLXJnYjogcmdiKDY2LCA4NCwgOTgpO1xuJGFscGhhLXRyYW5zcGFyZW5jeS01MDogMC41O1xuXG4vL1xuLy8gRnVuY3Rpb25zIGZvciB0aW50IGFuZCBzaGFkZVxuLy9cbi8vIFVzYWdlOiB0aW50KGNvbG9yLCBwZXJjZW50YWdlKVxuLy8gICAgICAgIHRpbnQoJGNvbG9yX25oc3VrLWJsYWNrLCAxMCUpXG4vLyAgICAgICAgc2hhZGUoY29sb3IsIHBlcmNlbnRhZ2UpXG4vLyAgICAgICAgc2hhZGUoJGNvbG9yX25oc3VrLWJsdWUsIDUwJSlcbi8vXG5cbkBmdW5jdGlvbiB0aW50KCRjb2xvciwgJHBlcmNlbnRhZ2UpIHtcbiAgQHJldHVybiBtaXgod2hpdGUsICRjb2xvciwgJHBlcmNlbnRhZ2UpO1xufVxuXG5AZnVuY3Rpb24gc2hhZGUoJGNvbG9yLCAkcGVyY2VudGFnZSkge1xuICBAcmV0dXJuIG1peChibGFjaywgJGNvbG9yLCAkcGVyY2VudGFnZSk7XG59XG5cbi8vXG4vLyBQcmltYXJ5IGNvbG91ciB2YXJpYXRpb25zXG4vL1xuLy8gMS4gdXNlZCBmb3IgbGluayA6YWN0aXZlIHN0YXRlc1xuLy8gMi4gdXNlZCBmb3IgLmlzLWFjdGl2ZSBzdGF0ZSBvbiBtYWluIG5hdmlnYXRpb25cbi8vIDMuIHVzZWQgZm9yIDpob3ZlciBzdGF0ZXMgb24gbWFpbiBuYXZpZ2F0aW9uXG4vLyA0LiB1c2VkIGZvciA6YWN0aXZlIHN0YXRlcyBvbiBtYWluIG5hdmlnYXRpb25cbi8vIDUuIHVzZWQgZm9yIHByaW1hcnkgYnV0dG9uIGFuZCBhY3Rpb24gbGluayBpY29uIDpob3ZlciBzdGF0ZXNcbi8vIDYuIHVzZWQgZm9yIHByaW1hcnkgYnV0dG9uIGFuZCBhY3Rpb24gbGluayBpY29uIDphY3RpdmUgc3RhdGVzXG4vL1xuXG4kY29sb3JfdGludF9uaHN1ay1ibGFjay0xMDogdGludCgkY29sb3JfbmhzdWstYmxhY2ssIDEwJSk7IC8vIFsxXSAvL1xuXG4kY29sb3Jfc2hhZGVfbmhzdWstYmx1ZS0yMDogc2hhZGUoJGNvbG9yX25oc3VrLWJsdWUsIDIwJSk7IC8vIFsyXSAvL1xuJGNvbG9yX3NoYWRlX25oc3VrLWJsdWUtMzU6IHNoYWRlKCRjb2xvcl9uaHN1ay1ibHVlLCAzNSUpOyAvLyBbM10gLy9cbiRjb2xvcl9zaGFkZV9uaHN1ay1ibHVlLTUwOiBzaGFkZSgkY29sb3JfbmhzdWstYmx1ZSwgNTAlKTsgLy8gWzRdIC8vXG5cbiRjb2xvcl9zaGFkZV9uaHN1ay1ncmVlbi0zNTogc2hhZGUoJGNvbG9yX25oc3VrLWdyZWVuLCAzNSUpOyAvLyBbNV0gLy9cbiRjb2xvcl9zaGFkZV9uaHN1ay1ncmVlbi01MDogc2hhZGUoJGNvbG9yX25oc3VrLWdyZWVuLCA1MCUpOyAvLyBbNl0gLy9cblxuJGNvbG9yX3RyYW5zcGFyZW50X25oc3VrLXdoaXRlLTIwOiByZ2JhKCRjb2xvcl9uaHN1ay13aGl0ZSwgMC4yKTtcbiRjb2xvcl90cmFuc3BhcmVudF9uaHN1ay1ibHVlLTUwOiByZ2JhKCRjb2xvcl9zaGFkZV9uaHN1ay1ibHVlLTUwLCAwLjEpO1xuXG4vL1xuLy8gQ29sb3VyIGFsaWFzZXNcbi8vXG5cbi8vIFRleHRcbiRuaHN1ay10ZXh0LWNvbG9yOiAkY29sb3JfbmhzdWstYmxhY2s7XG4kbmhzdWstc2Vjb25kYXJ5LXRleHQtY29sb3I6ICRjb2xvcl9uaHN1ay1ncmV5LTE7XG4kbmhzdWstcHJpbnQtdGV4dC1jb2xvcjogJGNvbG9yX25oc3VrLWJsYWNrO1xuXG4vLyBMaW5rc1xuJG5oc3VrLWxpbmstY29sb3I6ICRjb2xvcl9uaHN1ay1ibHVlO1xuJG5oc3VrLWxpbmstaG92ZXItY29sb3I6ICRjb2xvcl9uaHN1ay1kYXJrLXBpbms7XG4kbmhzdWstbGluay1hY3RpdmUtY29sb3I6IHNoYWRlKCRuaHN1ay1saW5rLWNvbG9yLCA1MCUpO1xuJG5oc3VrLWxpbmstdmlzaXRlZC1jb2xvcjogJGNvbG9yX25oc3VrLXB1cnBsZTtcblxuLy8gRm9jdXNcbiRuaHN1ay1mb2N1cy1jb2xvcjogJGNvbG9yX25oc3VrLXllbGxvdztcbiRuaHN1ay1mb2N1cy10ZXh0LWNvbG9yOiAkY29sb3JfbmhzdWstYmxhY2s7XG5cbi8vIEJvcmRlclxuJG5oc3VrLWJvcmRlci1jb2xvcjogJGNvbG9yX25oc3VrLWdyZXktNDtcbiRuaHN1ay1zZWNvbmRhcnktYm9yZGVyLWNvbG9yOiAkY29sb3JfdHJhbnNwYXJlbnRfbmhzdWstd2hpdGUtMjA7XG5cbi8vIEJveCBzaGFkb3dcbiRuaHN1ay1ib3gtc2hhZG93OiByZ2JhKDMzLCA0MywgNTAsIDAuMTYpO1xuJG5oc3VrLWJveC1zaGFkb3ctY29sb3I6ICRjb2xvcl9uaHN1ay1ncmV5LTEtcmdiO1xuXG4vL1xuLy8gRm9ybXNcbi8vXG5cbiRuaHN1ay1lcnJvci1jb2xvcjogJGNvbG9yX25oc3VrLXJlZDtcbiRuaHN1ay1mb3JtLWJvcmRlci1jb2xvcjogJGNvbG9yX25oc3VrLWdyZXktMTtcbiRuaHN1ay1mb3JtLWVsZW1lbnQtYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yX25oc3VrLXdoaXRlO1xuXG4vL1xuLy8gQnV0dG9uc1xuLy9cblxuJG5oc3VrLWJ1dHRvbi1jb2xvcjogJGNvbG9yX25oc3VrLWdyZWVuO1xuJG5oc3VrLWJ1dHRvbi1ob3Zlci1jb2xvcjogc2hhZGUoJG5oc3VrLWJ1dHRvbi1jb2xvciwgMjAlKTtcbiRuaHN1ay1idXR0b24tYWN0aXZlLWNvbG9yOiBzaGFkZSgkbmhzdWstYnV0dG9uLWNvbG9yLCA1MCUpO1xuJG5oc3VrLWJ1dHRvbi1zaGFkb3ctY29sb3I6IHNoYWRlKCRuaHN1ay1idXR0b24tY29sb3IsIDUwJSk7XG5cbiRuaHN1ay1zZWNvbmRhcnktYnV0dG9uLWNvbG9yOiAkY29sb3JfbmhzdWstZ3JleS0xO1xuJG5oc3VrLXNlY29uZGFyeS1idXR0b24taG92ZXItY29sb3I6IHNoYWRlKCRuaHN1ay1zZWNvbmRhcnktYnV0dG9uLWNvbG9yLCAyMCUpO1xuJG5oc3VrLXNlY29uZGFyeS1idXR0b24tYWN0aXZlLWNvbG9yOiBzaGFkZSgkbmhzdWstc2Vjb25kYXJ5LWJ1dHRvbi1jb2xvciwgNTAlKTtcbiRuaHN1ay1zZWNvbmRhcnktYnV0dG9uLXNoYWRvdy1jb2xvcjogc2hhZGUoJG5oc3VrLXNlY29uZGFyeS1idXR0b24tY29sb3IsIDUwJSk7XG5cbiRuaHN1ay1yZXZlcnNlLWJ1dHRvbi1jb2xvcjogJGNvbG9yX25oc3VrLXdoaXRlO1xuJG5oc3VrLXJldmVyc2UtYnV0dG9uLWhvdmVyLWNvbG9yOiBzaGFkZSgkbmhzdWstcmV2ZXJzZS1idXR0b24tY29sb3IsIDIwJSk7XG4kbmhzdWstcmV2ZXJzZS1idXR0b24tYWN0aXZlLWNvbG9yOiAkY29sb3ItbmhzdWstYmxhY2s7XG4kbmhzdWstcmV2ZXJzZS1idXR0b24tc2hhZG93LWNvbG9yOiAkY29sb3ItbmhzdWstYmxhY2s7XG5cbiRuaHN1ay1idXR0b24tdGV4dC1jb2xvcjogJGNvbG9yX25oc3VrLXdoaXRlO1xuJG5oc3VrLXJldmVyc2UtYnV0dG9uLXRleHQtY29sb3I6ICRjb2xvcl9uaHN1ay1ibGFjaztcbiIsIi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBUT09MUyAvICNTSEFQRS1BUlJPV1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLy9cbi8vIE9yaWdpbmFsIGNvZGUgdGFrZW4gZnJvbSBHRFMgKEdvdmVybm1lbnQgRGlnaXRhbCBTZXJ2aWNlKVxuLy8gaHR0cHM6Ly9naXRodWIuY29tL2FscGhhZ292L2dvdnVrLWZyb250ZW5kXG4vL1xuLy8gQ2FsY3VsYXRlIHRoZSBoZWlnaHQgb2YgYW4gZXF1aWxhdGVyYWwgdHJpYW5nbGVcbi8vIE11bHRpcGx5aW5nIGhhbGYgdGhlIGxlbmd0aCBvZiB0aGUgYmFzZSBvZiBhbiBlcXVpbGF0ZXJhbCB0cmlhbmdsZSBieSB0aGVcbi8vIHNxdWFyZSByb290IG9mIHRocmVlIGdpdmVzIHVzIGl0cyBoZWlnaHQuIFdlIHVzZSAxLjczMiBhcyBhbiBhcHByb3hpbWF0aW9uLlxuLy9cbi8vIEBwYXJhbSB7TnVtYmVyfSAkYmFzZSAtIExlbmd0aCBvZiB0aGUgYmFzZSBvZiB0aGUgdHJpYW5nbGVcbi8vIEByZXR1cm4ge051bWJlcn0gQ2FsY3VsYXRlZCBoZWlnaHQgb2YgdGhlIHRyaWFuZ2xlXG4vL1xuXG4vKiBzdHlsZWxpbnQtZGlzYWJsZSBzdHJpbmctcXVvdGVzLCBvcmRlci9wcm9wZXJ0aWVzLWFscGhhYmV0aWNhbC1vcmRlciAqL1xuXG5AZnVuY3Rpb24gX2dvdnVrLWVxdWlsYXRlcmFsLWhlaWdodCgkYmFzZSkge1xuICAkc3F1YXJlLXJvb3Qtb2YtdGhyZWU6IDEuNzMyO1xuXG4gIEByZXR1cm4gKCRiYXNlICogMC41KSAqICRzcXVhcmUtcm9vdC1vZi10aHJlZTtcbn1cblxuLy9cbi8vIEFycm93IG1peGluXG4vL1xuLy8gR2VuZXJhdGUgQXJyb3dzICh0cmlhbmdsZXMpIGJ5IHVzaW5nIGEgbWl4IG9mIHRyYW5zcGFyZW50ICgxKSBhbmQgY29sb3VyZWRcbi8vIGJvcmRlcnMuIFRoZSBjb2xvdXJlZCBib3JkZXJzIGluaGVyaXQgdGhlIHRleHQgY29sb3VyIG9mIHRoZSBlbGVtZW50ICgyKS5cbi8vXG4vLyBFbnN1cmUgdGhlIGFycm93IGlzIHJlbmRlcmVkIGNvcnJlY3RseSBpZiBicm93c2VyIGNvbG91cnMgYXJlIG92ZXJyaWRkZW4gYnlcbi8vIHByb3ZpZGluZyBhIGNsaXAgcGF0aCAoMykuIFdpdGhvdXQgdGhpcyB0aGUgdHJhbnNwYXJlbnQgYm9yZGVycyBhcmVcbi8vIG92ZXJyaWRkZW4gdG8gYmVjb21lIHZpc2libGUgd2hpY2ggcmVzdWx0cyBpbiBhIHNxdWFyZS5cbi8vXG4vLyBXZSBuZWVkIGJvdGggYmVjYXVzZSBvbGRlciBicm93c2VycyBkbyBub3Qgc3VwcG9ydCBjbGlwLXBhdGguXG4vL1xuLy8gQHBhcmFtIHtTdHJpbmd9ICRkaXJlY3Rpb24gLSBEaXJlY3Rpb24gZm9yIGFycm93OiB1cCwgcmlnaHQsIGRvd24sIGxlZnQuXG4vLyBAcGFyYW0ge051bWJlcn0gJGJhc2UgLSBMZW5ndGggb2YgdGhlIHRyaWFuZ2xlICdiYXNlJyBzaWRlXG4vLyBAcGFyYW0ge051bWJlcn0gJGhlaWdodCBbbnVsbF0gLSBIZWlnaHQgb2YgdHJpYW5nbGUuIE9taXQgZm9yIGVxdWlsYXRlcmFsLlxuLy8gQHBhcmFtIHtTdHJpbmd9ICRkaXNwbGF5IFtibG9ja10gLSBDU1MgZGlzcGxheSBwcm9wZXJ0eSBvZiB0aGUgYXJyb3dcbi8vXG5cbkBtaXhpbiBnb3Z1ay1zaGFwZS1hcnJvdygkZGlyZWN0aW9uLCAkYmFzZSwgJGhlaWdodDogbnVsbCwgJGRpc3BsYXk6IGJsb2NrKSB7XG4gIGRpc3BsYXk6ICRkaXNwbGF5O1xuXG4gIHdpZHRoOiAwO1xuICBoZWlnaHQ6IDA7XG5cbiAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcbiAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDsgLy8gMVxuXG4gICRwZXJwZW5kaWN1bGFyOiAkYmFzZSAqIDAuNTtcblxuICBAaWYgKCRoZWlnaHQgPT0gbnVsbCkge1xuICAgICRoZWlnaHQ6IF9nb3Z1ay1lcXVpbGF0ZXJhbC1oZWlnaHQoJGJhc2UpO1xuICB9XG5cbiAgQGlmICRkaXJlY3Rpb24gPT0gXCJ1cFwiIHtcbiAgICBjbGlwLXBhdGg6IHBvbHlnb24oNTAlIDAlLCAwJSAxMDAlLCAxMDAlIDEwMCUpOyAvLyAzXG5cbiAgICBib3JkZXItd2lkdGg6IDAgJHBlcnBlbmRpY3VsYXIgJGhlaWdodCAkcGVycGVuZGljdWxhcjtcbiAgICBib3JkZXItYm90dG9tLWNvbG9yOiBpbmhlcml0OyAvLyAyXG4gIH0gQGVsc2UgaWYgJGRpcmVjdGlvbiA9PSBcInJpZ2h0XCIge1xuICAgIGNsaXAtcGF0aDogcG9seWdvbigwJSAwJSwgMTAwJSA1MCUsIDAlIDEwMCUpOyAvLyAzXG5cbiAgICBib3JkZXItd2lkdGg6ICRwZXJwZW5kaWN1bGFyIDAgJHBlcnBlbmRpY3VsYXIgJGhlaWdodDtcbiAgICBib3JkZXItbGVmdC1jb2xvcjogaW5oZXJpdDsgLy8gMlxuICB9IEBlbHNlIGlmICRkaXJlY3Rpb24gPT0gXCJkb3duXCIge1xuICAgIGNsaXAtcGF0aDogcG9seWdvbigwJSAwJSwgNTAlIDEwMCUsIDEwMCUgMCUpOyAvLyAzXG5cbiAgICBib3JkZXItd2lkdGg6ICRoZWlnaHQgJHBlcnBlbmRpY3VsYXIgMCAkcGVycGVuZGljdWxhcjtcbiAgICBib3JkZXItdG9wLWNvbG9yOiBpbmhlcml0OyAvLyAyXG4gIH0gQGVsc2UgaWYgJGRpcmVjdGlvbiA9PSBcImxlZnRcIiB7XG4gICAgY2xpcC1wYXRoOiBwb2x5Z29uKDAlIDUwJSwgMTAwJSAxMDAlLCAxMDAlIDAlKTsgLy8gM1xuXG4gICAgYm9yZGVyLXdpZHRoOiAkcGVycGVuZGljdWxhciAkaGVpZ2h0ICRwZXJwZW5kaWN1bGFyIDA7XG4gICAgYm9yZGVyLXJpZ2h0LWNvbG9yOiBpbmhlcml0OyAvLyAyXG4gIH0gQGVsc2Uge1xuICAgIEBlcnJvciBcIkludmFsaWQgYXJyb3cgZGlyZWN0aW9uOiBleHBlY3RlZCBgdXBgLCBgcmlnaHRgLCBgZG93bmAgb3IgYGxlZnRgLCBnb3QgYCN7JGRpcmVjdGlvbn1gXCI7XG4gIH1cbn1cbiIsIi8vIG1xKCkgdjQuMC4yXG4vLyBzYXNzLW1xL3Nhc3MtbXFcblxuLyogc3R5bGVsaW50LWRpc2FibGUgaW5kZW50YXRpb24gKi9cbkBjaGFyc2V0IFwiVVRGLThcIjsgLy8gRml4ZXMgYW4gaXNzdWUgd2hlcmUgUnVieSBsb2NhbGUgaXMgbm90IHNldCBwcm9wZXJseVxuLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9zYXNzLW1xL3Nhc3MtbXEvcHVsbC8xMFxuXG5AdXNlIFwic2FzczptYXRoXCI7XG5cbi8vLyBCYXNlIGZvbnQgc2l6ZSBvbiB0aGUgYDxib2R5PmAgZWxlbWVudFxuLy8vIEB0eXBlIE51bWJlciAodW5pdClcbiRtcS1iYXNlLWZvbnQtc2l6ZTogMTZweCAhZGVmYXVsdDtcblxuLy8vIFJlc3BvbnNpdmUgbW9kZVxuLy8vXG4vLy8gU2V0IHRvIGBmYWxzZWAgdG8gZW5hYmxlIHN1cHBvcnQgZm9yIGJyb3dzZXJzIHRoYXQgZG8gbm90IHN1cHBvcnQgQG1lZGlhIHF1ZXJpZXMsXG4vLy8gKElFIDw9IDgsIEZpcmVmb3ggPD0gMywgT3BlcmEgPD0gOSlcbi8vL1xuLy8vIFlvdSBjb3VsZCBjcmVhdGUgYSBzdHlsZXNoZWV0IHNlcnZlZCBleGNsdXNpdmVseSB0byBvbGRlciBicm93c2Vycyxcbi8vLyB3aGVyZSBAbWVkaWEgcXVlcmllcyBhcmUgcmFzdGVyaXplZFxuLy8vXG4vLy8gQGV4YW1wbGUgc2Nzc1xuLy8vICAvLyBvbGQtaWUuc2Nzc1xuLy8vICAkbXEtcmVzcG9uc2l2ZTogZmFsc2U7XG4vLy8gIEBpbXBvcnQgJ21haW4nOyAvLyBAbWVkaWEgcXVlcmllcyBpbiB0aGlzIGZpbGUgd2lsbCBiZSByYXN0ZXJpemVkIHVwIHRvICRtcS1zdGF0aWMtYnJlYWtwb2ludFxuLy8vICAgICAgICAgICAgICAgICAgIC8vIGxhcmdlciBicmVha3BvaW50cyB3aWxsIGJlIGlnbm9yZWRcbi8vL1xuLy8vIEB0eXBlIEJvb2xlYW5cbi8vLyBAbGluayBodHRwczovL2dpdGh1Yi5jb20vc2Fzcy1tcS9zYXNzLW1xI3Jlc3BvbnNpdmUtbW9kZS1vZmYgRGlzYWJsZWQgcmVzcG9uc2l2ZSBtb2RlIGRvY3VtZW50YXRpb25cbiRtcS1yZXNwb25zaXZlOiB0cnVlICFkZWZhdWx0O1xuXG4vLy8gQnJlYWtwb2ludCBsaXN0XG4vLy9cbi8vLyBOYW1lIHlvdXIgYnJlYWtwb2ludHMgaW4gYSB3YXkgdGhhdCBjcmVhdGVzIGEgdWJpcXVpdG91cyBsYW5ndWFnZVxuLy8vIGFjcm9zcyB0ZWFtIG1lbWJlcnMuIEl0IHdpbGwgaW1wcm92ZSBjb21tdW5pY2F0aW9uIGJldHdlZW5cbi8vLyBzdGFrZWhvbGRlcnMsIGRlc2lnbmVycywgZGV2ZWxvcGVycywgYW5kIHRlc3RlcnMuXG4vLy9cbi8vLyBAdHlwZSBNYXBcbi8vLyBAbGluayBodHRwczovL2dpdGh1Yi5jb20vc2Fzcy1tcS9zYXNzLW1xI3NlZWluZy10aGUtY3VycmVudGx5LWFjdGl2ZS1icmVha3BvaW50IEZ1bGwgZG9jdW1lbnRhdGlvbiBhbmQgZXhhbXBsZXNcbiRtcS1icmVha3BvaW50czogKFxuICBtb2JpbGU6IDMyMHB4LFxuICB0YWJsZXQ6IDc0MHB4LFxuICBkZXNrdG9wOiA5ODBweCxcbiAgd2lkZTogMTMwMHB4XG4pICFkZWZhdWx0O1xuXG4vLy8gU3RhdGljIGJyZWFrcG9pbnQgKGZvciBmaXhlZC13aWR0aCBsYXlvdXRzKVxuLy8vXG4vLy8gRGVmaW5lIHRoZSBicmVha3BvaW50IGZyb20gJG1xLWJyZWFrcG9pbnRzIHRoYXQgc2hvdWxkXG4vLy8gYmUgdXNlZCBhcyB0aGUgdGFyZ2V0IHdpZHRoIGZvciB0aGUgZml4ZWQtd2lkdGggbGF5b3V0XG4vLy8gKGkuZS4gd2hlbiAkbXEtcmVzcG9uc2l2ZSBpcyBzZXQgdG8gJ2ZhbHNlJykgaW4gYSBvbGQtaWUuc2Nzc1xuLy8vXG4vLy8gQGV4YW1wbGUgc2Nzc1xuLy8vICAvLyB0YWJsZXQtb25seS5zY3NzXG4vLy8gIC8vXG4vLy8gIC8vIElnbm9yZSBhbGwgc3R5bGVzIGFib3ZlIHRhYmxldCBicmVha3BvaW50LFxuLy8vICAvLyBhbmQgZml4IHRoZSBzdHlsZXMgKGUuZy4gbGF5b3V0KSBhdCB0YWJsZXQgd2lkdGhcbi8vLyAgJG1xLXJlc3BvbnNpdmU6IGZhbHNlO1xuLy8vICAkbXEtc3RhdGljLWJyZWFrcG9pbnQ6IHRhYmxldDtcbi8vLyAgQGltcG9ydCAnbWFpbic7IC8vIEBtZWRpYSBxdWVyaWVzIGluIHRoaXMgZmlsZSB3aWxsIGJlIHJhc3Rlcml6ZWQgdXAgdG8gdGFibGV0XG4vLy8gICAgICAgICAgICAgICAgICAgLy8gbGFyZ2VyIGJyZWFrcG9pbnRzIHdpbGwgYmUgaWdub3JlZFxuLy8vXG4vLy8gQHR5cGUgU3RyaW5nXG4vLy8gQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL3Nhc3MtbXEvc2Fzcy1tcSNhZGRpbmctY3VzdG9tLWJyZWFrcG9pbnRzIEZ1bGwgZG9jdW1lbnRhdGlvbiBhbmQgZXhhbXBsZXNcbiRtcS1zdGF0aWMtYnJlYWtwb2ludDogZGVza3RvcCAhZGVmYXVsdDtcblxuLy8vIFNob3cgYnJlYWtwb2ludHMgaW4gdGhlIHRvcCByaWdodCBjb3JuZXJcbi8vL1xuLy8vIElmIHlvdSB3YW50IHRvIGRpc3BsYXkgdGhlIGN1cnJlbnRseSBhY3RpdmUgYnJlYWtwb2ludCBpbiB0aGUgdG9wXG4vLy8gcmlnaHQgY29ybmVyIG9mIHlvdXIgc2l0ZSBkdXJpbmcgZGV2ZWxvcG1lbnQsIGFkZCB0aGUgYnJlYWtwb2ludHNcbi8vLyB0byB0aGlzIGxpc3QsIG9yZGVyZWQgYnkgd2lkdGgsIGUuZy4gKG1vYmlsZSwgdGFibGV0LCBkZXNrdG9wKS5cbi8vL1xuLy8vIEB0eXBlIG1hcFxuJG1xLXNob3ctYnJlYWtwb2ludHM6ICgpICFkZWZhdWx0O1xuXG4vLy8gQ3VzdG9taXplIHRoZSBtZWRpYSB0eXBlIChlLmcuIGBAbWVkaWEgc2NyZWVuYCBvciBgQG1lZGlhIHByaW50YClcbi8vLyBCeSBkZWZhdWx0IHNhc3MtbXEgdXNlcyBhbiBcImFsbFwiIG1lZGlhIHR5cGUgKGBAbWVkaWEgYWxsIGFuZCDigKZgKVxuLy8vXG4vLy8gQHR5cGUgU3RyaW5nXG4vLy8gQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL3Nhc3MtbXEvc2Fzcy1tcSNjaGFuZ2luZy1tZWRpYS10eXBlIEZ1bGwgZG9jdW1lbnRhdGlvbiBhbmQgZXhhbXBsZXNcbiRtcS1tZWRpYS10eXBlOiBhbGwgIWRlZmF1bHQ7XG5cbi8vLyBDb252ZXJ0IHBpeGVscyB0byBlbXNcbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfSAkcHggLSB2YWx1ZSB0byBjb252ZXJ0XG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRiYXNlLWZvbnQtc2l6ZSAoJG1xLWJhc2UtZm9udC1zaXplKSAtIGA8Ym9keT5gIGZvbnQgc2l6ZVxuLy8vXG4vLy8gQGV4YW1wbGUgc2Nzc1xuLy8vICAkZm9udC1zaXplLWluLWVtczogbXEtcHgyZW0oMTZweCk7XG4vLy8gIHAgeyBmb250LXNpemU6IG1xLXB4MmVtKDE2cHgpOyB9XG4vLy9cbi8vLyBAcmVxdWlyZXMgJG1xLWJhc2UtZm9udC1zaXplXG4vLy8gQHJldHVybnMge051bWJlcn1cbkBmdW5jdGlvbiBtcS1weDJlbSgkcHgsICRiYXNlLWZvbnQtc2l6ZTogJG1xLWJhc2UtZm9udC1zaXplKSB7XG4gIC8qIHN0eWxlbGludC1kaXNhYmxlLWxpbmUgc2Nzcy9hdC1mdW5jdGlvbi1wYXR0ZXJuICovXG5cbiAgQGlmIHVuaXRsZXNzKCRweCkge1xuICAgIEB3YXJuIFwiQXNzdW1pbmcgI3skcHh9IHRvIGJlIGluIHBpeGVscywgYXR0ZW1wdGluZyB0byBjb252ZXJ0IGl0IGludG8gcGl4ZWxzLlwiOyAvKiBzdHlsZWxpbnQtZGlzYWJsZS1saW5lIGF0LXJ1bGUtZGlzYWxsb3dlZC1saXN0LCBzdHJpbmctcXVvdGVzICovXG4gICAgQHJldHVybiBtcS1weDJlbSgkcHggKiAxcHgsICRiYXNlLWZvbnQtc2l6ZSk7XG4gIH0gQGVsc2UgaWYgdW5pdCgkcHgpID09IGVtIHtcbiAgICBAcmV0dXJuICRweDtcbiAgfVxuICBAcmV0dXJuIG1hdGguZGl2KCRweCwgJGJhc2UtZm9udC1zaXplKSAqIDFlbTtcbn1cblxuLy8vIEdldCBhIGJyZWFrcG9pbnQncyB3aWR0aFxuLy8vXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRuYW1lIC0gTmFtZSBvZiB0aGUgYnJlYWtwb2ludC4gT25lIG9mICRtcS1icmVha3BvaW50c1xuLy8vXG4vLy8gQGV4YW1wbGUgc2Nzc1xuLy8vICAkdGFibGV0LXdpZHRoOiBtcS1nZXQtYnJlYWtwb2ludC13aWR0aCh0YWJsZXQpO1xuLy8vICBAbWVkaWEgKG1pbi13aWR0aDogbXEtZ2V0LWJyZWFrcG9pbnQtd2lkdGgoZGVza3RvcCkpIHt9XG4vLy9cbi8vLyBAcmVxdWlyZXMge1ZhcmlhYmxlfSAkbXEtYnJlYWtwb2ludHNcbi8vL1xuLy8vIEByZXR1cm5zIHtOdW1iZXJ9IFZhbHVlIGluIHBpeGVsc1xuQGZ1bmN0aW9uIG1xLWdldC1icmVha3BvaW50LXdpZHRoKCRuYW1lLCAkYnJlYWtwb2ludHM6ICRtcS1icmVha3BvaW50cykge1xuICBAaWYgbWFwLWhhcy1rZXkoJGJyZWFrcG9pbnRzLCAkbmFtZSkge1xuICAgIEByZXR1cm4gbWFwLWdldCgkYnJlYWtwb2ludHMsICRuYW1lKTtcbiAgfSBAZWxzZSB7XG4gICAgQHdhcm4gXCJCcmVha3BvaW50ICN7JG5hbWV9IHdhc24ndCBmb3VuZCBpbiAkYnJlYWtwb2ludHMuXCI7IC8qIHN0eWxlbGludC1kaXNhYmxlLWxpbmUgYXQtcnVsZS1kaXNhbGxvd2VkLWxpc3QgKi9cbiAgfVxufVxuXG4vLy8gTWVkaWEgUXVlcnkgbWl4aW5cbi8vL1xuLy8vIEBwYXJhbSB7U3RyaW5nIHwgQm9vbGVhbn0gJGZyb20gKGZhbHNlKSAtIE9uZSBvZiAkbXEtYnJlYWtwb2ludHNcbi8vLyBAcGFyYW0ge1N0cmluZyB8IEJvb2xlYW59ICR1bnRpbCAoZmFsc2UpIC0gT25lIG9mICRtcS1icmVha3BvaW50c1xuLy8vIEBwYXJhbSB7U3RyaW5nIHwgQm9vbGVhbn0gJGFuZCAoZmFsc2UpIC0gQWRkaXRpb25hbCBtZWRpYSBxdWVyeSBwYXJhbWV0ZXJzXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRtZWRpYS10eXBlICgkbXEtbWVkaWEtdHlwZSkgLSBNZWRpYSB0eXBlOiBzY3JlZW4sIHByaW504oCmXG4vLy9cbi8vLyBAaWdub3JlIFVuZG9jdW1lbnRlZCBBUEksIGZvciBhZHZhbmNlZCB1c2Ugb25seTpcbi8vLyBAaWdub3JlIEBwYXJhbSB7TWFwfSAkYnJlYWtwb2ludHMgKCRtcS1icmVha3BvaW50cylcbi8vLyBAaWdub3JlIEBwYXJhbSB7U3RyaW5nfSAkc3RhdGljLWJyZWFrcG9pbnQgKCRtcS1zdGF0aWMtYnJlYWtwb2ludClcbi8vL1xuLy8vIEBjb250ZW50IHN0eWxpbmcgcnVsZXMsIHdyYXBwZWQgaW50byBhIEBtZWRpYSBxdWVyeSB3aGVuICRyZXNwb25zaXZlIGlzIHRydWVcbi8vL1xuLy8vIEByZXF1aXJlcyB7VmFyaWFibGV9ICRtcS1tZWRpYS10eXBlXG4vLy8gQHJlcXVpcmVzIHtWYXJpYWJsZX0gJG1xLWJyZWFrcG9pbnRzXG4vLy8gQHJlcXVpcmVzIHtWYXJpYWJsZX0gJG1xLXN0YXRpYy1icmVha3BvaW50XG4vLy8gQHJlcXVpcmVzIHtmdW5jdGlvbn0gbXEtcHgyZW1cbi8vLyBAcmVxdWlyZXMge2Z1bmN0aW9ufSBtcS1nZXQtYnJlYWtwb2ludC13aWR0aFxuLy8vXG4vLy8gQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL3Nhc3MtbXEvc2Fzcy1tcSNyZXNwb25zaXZlLW1vZGUtb24tZGVmYXVsdCBGdWxsIGRvY3VtZW50YXRpb24gYW5kIGV4YW1wbGVzXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzXG4vLy8gIC5lbGVtZW50IHtcbi8vLyAgICBAaW5jbHVkZSBtcSgkZnJvbTogbW9iaWxlKSB7XG4vLy8gICAgICBjb2xvcjogcmVkO1xuLy8vICAgIH1cbi8vLyAgICBAaW5jbHVkZSBtcSgkdW50aWw6IHRhYmxldCkge1xuLy8vICAgICAgY29sb3I6IGJsdWU7XG4vLy8gICAgfVxuLy8vICAgIEBpbmNsdWRlIG1xKG1vYmlsZSwgdGFibGV0KSB7XG4vLy8gICAgICBjb2xvcjogZ3JlZW47XG4vLy8gICAgfVxuLy8vICAgIEBpbmNsdWRlIG1xKCRmcm9tOiB0YWJsZXQsICRhbmQ6ICcob3JpZW50YXRpb246IGxhbmRzY2FwZSknKSB7XG4vLy8gICAgICBjb2xvcjogdGVhbDtcbi8vLyAgICB9XG4vLy8gICAgQGluY2x1ZGUgbXEoOTUwcHgpIHtcbi8vLyAgICAgIGNvbG9yOiBob3RwaW5rO1xuLy8vICAgIH1cbi8vLyAgICBAaW5jbHVkZSBtcSh0YWJsZXQsICRtZWRpYS10eXBlOiBzY3JlZW4pIHtcbi8vLyAgICAgIGNvbG9yOiBob3RwaW5rO1xuLy8vICAgIH1cbi8vLyAgICAvLyBBZHZhbmNlZCB1c2U6XG4vLy8gICAgJG15LWJyZWFrcG9pbnRzOiAoTDogOTAwcHgsIFhMOiAxMjAwcHgpO1xuLy8vICAgIEBpbmNsdWRlIG1xKEwsICRicmVha3BvaW50czogJG15LWJyZWFrcG9pbnRzLCAkc3RhdGljLWJyZWFrcG9pbnQ6IEwpIHtcbi8vLyAgICAgIGNvbG9yOiBob3RwaW5rO1xuLy8vICAgIH1cbi8vLyAgfVxuQG1peGluIG1xKFxuICAkZnJvbTogZmFsc2UsXG4gICR1bnRpbDogZmFsc2UsXG4gICRhbmQ6IGZhbHNlLFxuICAkbWVkaWEtdHlwZTogJG1xLW1lZGlhLXR5cGUsXG4gICRicmVha3BvaW50czogJG1xLWJyZWFrcG9pbnRzLFxuICAkcmVzcG9uc2l2ZTogJG1xLXJlc3BvbnNpdmUsXG4gICRzdGF0aWMtYnJlYWtwb2ludDogJG1xLXN0YXRpYy1icmVha3BvaW50XG4pIHtcbiAgJG1pbi13aWR0aDogMDtcbiAgJG1heC13aWR0aDogMDtcbiAgJG1lZGlhLXF1ZXJ5OiBcIlwiO1xuXG4gIC8vIEZyb206IHRoaXMgYnJlYWtwb2ludCAoaW5jbHVzaXZlKVxuICBAaWYgJGZyb20ge1xuICAgIEBpZiB0eXBlLW9mKCRmcm9tKSA9PSBudW1iZXIge1xuICAgICAgJG1pbi13aWR0aDogbXEtcHgyZW0oJGZyb20pO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJG1pbi13aWR0aDogbXEtcHgyZW0obXEtZ2V0LWJyZWFrcG9pbnQtd2lkdGgoJGZyb20sICRicmVha3BvaW50cykpO1xuICAgIH1cbiAgfVxuXG4gIC8vIFVudGlsOiB0aGF0IGJyZWFrcG9pbnQgKGV4Y2x1c2l2ZSlcbiAgQGlmICR1bnRpbCB7XG4gICAgQGlmIHR5cGUtb2YoJHVudGlsKSA9PSBudW1iZXIge1xuICAgICAgJG1heC13aWR0aDogbXEtcHgyZW0oJHVudGlsKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRtYXgtd2lkdGg6IG1xLXB4MmVtKG1xLWdldC1icmVha3BvaW50LXdpZHRoKCR1bnRpbCwgJGJyZWFrcG9pbnRzKSkgLSAwLjAxZW07XG4gICAgfVxuICB9XG5cbiAgLy8gUmVzcG9uc2l2ZSBzdXBwb3J0IGlzIGRpc2FibGVkLCByYXN0ZXJpemUgdGhlIG91dHB1dCBvdXRzaWRlIEBtZWRpYSBibG9ja3NcbiAgLy8gVGhlIGJyb3dzZXIgd2lsbCByZWx5IG9uIHRoZSBjYXNjYWRlIGl0c2VsZi5cbiAgQGlmICRyZXNwb25zaXZlID09IGZhbHNlIHtcbiAgICAkc3RhdGljLWJyZWFrcG9pbnQtd2lkdGg6IG1xLWdldC1icmVha3BvaW50LXdpZHRoKCRzdGF0aWMtYnJlYWtwb2ludCwgJGJyZWFrcG9pbnRzKTtcbiAgICAkdGFyZ2V0LXdpZHRoOiBtcS1weDJlbSgkc3RhdGljLWJyZWFrcG9pbnQtd2lkdGgpO1xuXG4gICAgLy8gT3V0cHV0IG9ubHkgcnVsZXMgdGhhdCBzdGFydCBhdCBvciBzcGFuIG91ciB0YXJnZXQgd2lkdGhcbiAgICBAaWYgKFxuICAgICAgJGFuZCA9PVxuICAgICAgICBmYWxzZSBhbmRcbiAgICAgICAgJG1pbi13aWR0aCA8PVxuICAgICAgICAkdGFyZ2V0LXdpZHRoIGFuZFxuICAgICAgICAoJHVudGlsID09IGZhbHNlIG9yICRtYXgtd2lkdGggPj0gJHRhcmdldC13aWR0aCkgYW5kXG4gICAgICAgICRtZWRpYS10eXBlICE9XG4gICAgICAgIFwicHJpbnRcIlxuICAgICkge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG5cbiAgLy8gUmVzcG9uc2l2ZSBzdXBwb3J0IGlzIGVuYWJsZWQsIG91dHB1dCBydWxlcyBpbnNpZGUgQG1lZGlhIHF1ZXJpZXNcbiAgQGVsc2Uge1xuICAgIEBpZiAkbWluLXdpZHRoICE9IDAge1xuICAgICAgJG1lZGlhLXF1ZXJ5OiBcIiN7JG1lZGlhLXF1ZXJ5fSBhbmQgKG1pbi13aWR0aDogI3skbWluLXdpZHRofSlcIjtcbiAgICB9XG4gICAgQGlmICRtYXgtd2lkdGggIT0gMCB7XG4gICAgICAkbWVkaWEtcXVlcnk6IFwiI3skbWVkaWEtcXVlcnl9IGFuZCAobWF4LXdpZHRoOiAjeyRtYXgtd2lkdGh9KVwiO1xuICAgIH1cbiAgICBAaWYgJGFuZCB7XG4gICAgICAkbWVkaWEtcXVlcnk6IFwiI3skbWVkaWEtcXVlcnl9IGFuZCAjeyRhbmR9XCI7XG4gICAgfVxuXG4gICAgLy8gUmVtb3ZlIHVubmVjZXNzYXJ5IG1lZGlhIHF1ZXJ5IHByZWZpeCAnYWxsIGFuZCAnXG4gICAgQGlmICgkbWVkaWEtdHlwZSA9PSBcImFsbFwiIGFuZCAkbWVkaWEtcXVlcnkgIT0gXCJcIikge1xuICAgICAgJG1lZGlhLXR5cGU6IFwiXCI7XG4gICAgICAkbWVkaWEtcXVlcnk6IHN0ci1zbGljZSh1bnF1b3RlKCRtZWRpYS1xdWVyeSksIDYpO1xuICAgIH1cblxuICAgIEBtZWRpYSAjeyRtZWRpYS10eXBlICsgJG1lZGlhLXF1ZXJ5fSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH1cbn1cblxuLy8vIFF1aWNrIHNvcnRcbi8vL1xuLy8vIEBhdXRob3IgU2FtIFJpY2hhcmRzXG4vLy8gQGFjY2VzcyBwcml2YXRlXG4vLy8gQHBhcmFtIHtMaXN0fSAkbGlzdCAtIExpc3QgdG8gc29ydFxuLy8vIEByZXR1cm5zIHtMaXN0fSBTb3J0ZWQgTGlzdFxuQGZ1bmN0aW9uIF9tcS1xdWljay1zb3J0KCRsaXN0KSB7XG4gICRsZXNzOiAoKTtcbiAgJGVxdWFsOiAoKTtcbiAgJGxhcmdlOiAoKTtcblxuICBAaWYgbGVuZ3RoKCRsaXN0KSA+IDEge1xuICAgICRzZWVkOiBudGgoJGxpc3QsIGNlaWwobGVuZ3RoKCRsaXN0KSAqIDAuNSkpO1xuXG4gICAgQGVhY2ggJGl0ZW0gaW4gJGxpc3Qge1xuICAgICAgQGlmICgkaXRlbSA9PSAkc2VlZCkge1xuICAgICAgICAkZXF1YWw6IGFwcGVuZCgkZXF1YWwsICRpdGVtKTtcbiAgICAgIH0gQGVsc2UgaWYgKCRpdGVtIDwgJHNlZWQpIHtcbiAgICAgICAgJGxlc3M6IGFwcGVuZCgkbGVzcywgJGl0ZW0pO1xuICAgICAgfSBAZWxzZSBpZiAoJGl0ZW0gPiAkc2VlZCkge1xuICAgICAgICAkbGFyZ2U6IGFwcGVuZCgkbGFyZ2UsICRpdGVtKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBAcmV0dXJuIGpvaW4oam9pbihfbXEtcXVpY2stc29ydCgkbGVzcyksICRlcXVhbCksIF9tcS1xdWljay1zb3J0KCRsYXJnZSkpO1xuICB9XG5cbiAgQHJldHVybiAkbGlzdDtcbn1cblxuLy8vIFNvcnQgYSBtYXAgYnkgdmFsdWVzICh3b3JrcyB3aXRoIG51bWJlcnMgb25seSlcbi8vL1xuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vIEBwYXJhbSB7TWFwfSAkbWFwIC0gTWFwIHRvIHNvcnRcbi8vLyBAcmV0dXJucyB7TWFwfSBNYXAgc29ydGVkIGJ5IHZhbHVlXG5AZnVuY3Rpb24gX21xLW1hcC1zb3J0LWJ5LXZhbHVlKCRtYXApIHtcbiAgJG1hcC1zb3J0ZWQ6ICgpO1xuICAkbWFwLWtleXM6IG1hcC1rZXlzKCRtYXApO1xuICAkbWFwLXZhbHVlczogbWFwLXZhbHVlcygkbWFwKTtcbiAgJG1hcC12YWx1ZXMtc29ydGVkOiBfbXEtcXVpY2stc29ydCgkbWFwLXZhbHVlcyk7XG5cbiAgLy8gUmVvcmRlciBrZXkvdmFsdWUgcGFpcnMgYmFzZWQgb24ga2V5IHZhbHVlc1xuICBAZWFjaCAkdmFsdWUgaW4gJG1hcC12YWx1ZXMtc29ydGVkIHtcbiAgICAkaW5kZXg6IGluZGV4KCRtYXAtdmFsdWVzLCAkdmFsdWUpO1xuICAgICRrZXk6IG50aCgkbWFwLWtleXMsICRpbmRleCk7XG4gICAgJG1hcC1zb3J0ZWQ6IG1hcC1tZXJnZShcbiAgICAgICRtYXAtc29ydGVkLFxuICAgICAgKFxuICAgICAgICAka2V5OiAkdmFsdWVcbiAgICAgIClcbiAgICApO1xuXG4gICAgLy8gVW5zZXQgdGhlIHZhbHVlIGluICRtYXAtdmFsdWVzIHRvIHByZXZlbnQgdGhlIGxvb3BcbiAgICAvLyBmcm9tIGZpbmRpbmcgdGhlIHNhbWUgaW5kZXggdHdpY2VcbiAgICAkbWFwLXZhbHVlczogc2V0LW50aCgkbWFwLXZhbHVlcywgJGluZGV4LCAwKTtcbiAgfVxuXG4gIEByZXR1cm4gJG1hcC1zb3J0ZWQ7XG59XG5cbi8vLyBBZGQgYSBicmVha3BvaW50XG4vLy9cbi8vLyBAcGFyYW0ge1N0cmluZ30gJG5hbWUgLSBOYW1lIG9mIHRoZSBicmVha3BvaW50XG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICR3aWR0aCAtIFdpZHRoIG9mIHRoZSBicmVha3BvaW50XG4vLy9cbi8vLyBAcmVxdWlyZXMge1ZhcmlhYmxlfSAkbXEtYnJlYWtwb2ludHNcbi8vL1xuLy8vIEBleGFtcGxlIHNjc3Ncbi8vLyAgQGluY2x1ZGUgbXEtYWRkLWJyZWFrcG9pbnQodHZzY3JlZW4sIDE5MjBweCk7XG4vLy8gIEBpbmNsdWRlIG1xKHR2c2NyZWVuKSB7fVxuQG1peGluIG1xLWFkZC1icmVha3BvaW50KCRuYW1lLCAkd2lkdGgpIHtcbiAgJG5ldy1icmVha3BvaW50OiAoXG4gICAgJG5hbWU6ICR3aWR0aFxuICApO1xuICAkbXEtYnJlYWtwb2ludHM6IG1hcC1tZXJnZSgkbXEtYnJlYWtwb2ludHMsICRuZXctYnJlYWtwb2ludCkgIWdsb2JhbDtcbiAgJG1xLWJyZWFrcG9pbnRzOiBfbXEtbWFwLXNvcnQtYnktdmFsdWUoJG1xLWJyZWFrcG9pbnRzKSAhZ2xvYmFsO1xufVxuXG4vLy8gU2hvdyB0aGUgYWN0aXZlIGJyZWFrcG9pbnQgaW4gdGhlIHRvcCByaWdodCBjb3JuZXIgb2YgdGhlIHZpZXdwb3J0XG4vLy8gQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL3Nhc3MtbXEvc2Fzcy1tcSNzZWVpbmctdGhlLWN1cnJlbnRseS1hY3RpdmUtYnJlYWtwb2ludFxuLy8vXG4vLy8gQHBhcmFtIHtMaXN0fSAkc2hvdy1icmVha3BvaW50cyAoJG1xLXNob3ctYnJlYWtwb2ludHMpIC0gTGlzdCBvZiBicmVha3BvaW50cyB0byBzaG93IGluIHRoZSB0b3AgcmlnaHQgY29ybmVyXG4vLy8gQHBhcmFtIHtNYXB9ICRicmVha3BvaW50cyAoJG1xLWJyZWFrcG9pbnRzKSAtIEJyZWFrcG9pbnQgbmFtZXMgYW5kIHNpemVzXG4vLy9cbi8vLyBAcmVxdWlyZXMge1ZhcmlhYmxlfSAkbXEtYnJlYWtwb2ludHNcbi8vLyBAcmVxdWlyZXMge1ZhcmlhYmxlfSAkbXEtc2hvdy1icmVha3BvaW50c1xuLy8vXG4vLy8gQGV4YW1wbGUgc2Nzc1xuLy8vICAvLyBTaG93IGJyZWFrcG9pbnRzIHVzaW5nIGdsb2JhbCBzZXR0aW5nc1xuLy8vICBAaW5jbHVkZSBtcS1zaG93LWJyZWFrcG9pbnRzO1xuLy8vXG4vLy8gIC8vIFNob3cgYnJlYWtwb2ludHMgdXNpbmcgY3VzdG9tIHNldHRpbmdzXG4vLy8gIEBpbmNsdWRlIG1xLXNob3ctYnJlYWtwb2ludHMoKEwsIFhMKSwgKFM6IDMwMHB4LCBMOiA4MDBweCwgWEw6IDEyMDBweCkpO1xuLyogc3R5bGVsaW50LWRpc2FibGUgY29sb3Itbm8taGV4ICovXG5AbWl4aW4gbXEtc2hvdy1icmVha3BvaW50cygkc2hvdy1icmVha3BvaW50czogJG1xLXNob3ctYnJlYWtwb2ludHMsICRicmVha3BvaW50czogJG1xLWJyZWFrcG9pbnRzKSB7XG4gIGJvZHk6YmVmb3JlIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmNmOGUzO1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZmJlZWQ1O1xuICAgIGJvcmRlci1sZWZ0OiAxcHggc29saWQgI2ZiZWVkNTtcbiAgICBjb2xvcjogI2MwOTg1MztcbiAgICBmb250OiBzbWFsbC1jYXB0aW9uO1xuICAgIHBhZGRpbmc6IDNweCA2cHg7XG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgcG9zaXRpb246IGZpeGVkO1xuICAgIHJpZ2h0OiAwO1xuICAgIHRvcDogMDtcbiAgICB6LWluZGV4OiAxMDA7XG4gICAgLyogc3R5bGVsaW50LWVuYWJsZSBjb2xvci1uby1oZXggKi9cbiAgICAvLyBMb29wIHRocm91Z2ggdGhlIGJyZWFrcG9pbnRzIHRoYXQgc2hvdWxkIGJlIHNob3duXG4gICAgQGVhY2ggJHNob3ctYnJlYWtwb2ludCBpbiAkc2hvdy1icmVha3BvaW50cyB7XG4gICAgICAkd2lkdGg6IG1xLWdldC1icmVha3BvaW50LXdpZHRoKCRzaG93LWJyZWFrcG9pbnQsICRicmVha3BvaW50cyk7XG4gICAgICBAaW5jbHVkZSBtcSgkc2hvdy1icmVha3BvaW50LCAkYnJlYWtwb2ludHM6ICRicmVha3BvaW50cykge1xuICAgICAgICBjb250ZW50OiBcIiN7JHNob3ctYnJlYWtwb2ludH0g4omlICN7JHdpZHRofSAoI3ttcS1weDJlbSgkd2lkdGgpfSlcIjsgLyogc3R5bGVsaW50LWRpc2FibGUtbGluZSBzdHJpbmctcXVvdGVzICovXG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbkBpZiBsZW5ndGgoJG1xLXNob3ctYnJlYWtwb2ludHMpID4gMCB7XG4gIEBpbmNsdWRlIG1xLXNob3ctYnJlYWtwb2ludHM7XG59XG4iLCIucHJvdG90eXBlIHtcbiAgLnBhZ2VfX2hlYWRlciB7XG4gICAgcGFkZGluZy10b3A6IG5oc3VrLXNwYWNpbmcoNyk7XG4gIH1cbiAgLnBhZ2VfX2Zvb3RlciB7XG4gICAgcGFkZGluZy1ib3R0b206IG5oc3VrLXNwYWNpbmcoNyk7XG4gIH1cblxuICAucHJvdG90eXBlX19leGFtcGxlIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjBmNGY1O1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICNhZWI3YmQ7XG4gICAgYSB7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjYWViN2JkO1xuICAgICAgcGFkZGluZzogMC41ZW07XG4gICAgICBjb2xvcjogIzAwNWViODtcbiAgICB9XG4gICAgaWZyYW1lIHtcbiAgICAgIGJvcmRlcjogMDtcbiAgICB9XG4gICAgJi5zY2FsZWQge1xuICAgICAgLnRodW1ibmFpbCB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgLW1zLXpvb206IDAuNDc7XG4gICAgICAgIC1tb3otdHJhbnNmb3JtOiBzY2FsZSgwLjQ3KTtcbiAgICAgICAgLW1vei10cmFuc2Zvcm0tb3JpZ2luOiAwIDA7XG4gICAgICAgIC1vLXRyYW5zZm9ybTogc2NhbGUoMC40Nyk7XG4gICAgICAgIC1vLXRyYW5zZm9ybS1vcmlnaW46IDAgMDtcbiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDAuNDcpO1xuICAgICAgICAtd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46IDAgMDtcbiAgICAgIH1cbiAgICAgIC50aHVtYm5haWwgaWZyYW1lIHtcbiAgICAgICAgd2lkdGg6IDE0NDBweDtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2YwZjRmNTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmLmJsb2NrIHtcbiAgICAgIC50aHVtYm5haWwgaWZyYW1lIHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmMGY0ZjU7XG4gICAgICB9XG4gICAgfVxuICAgIFxuICB9XG5cbiAgLnByb3RvdHlwZV9fdGFibGUge1xuICAgIHBhZGRpbmc6IDA7XG5cbiAgICB0aCwgXG4gICAgdGQge1xuICAgICAgbGluZS1oZWlnaHQ6IDFlbTtcbiAgICAgIHBhZGRpbmc6IDAuNWVtO1xuICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICB9XG4gIH1cblxufVxuXG4ucHJvdG90eXBlLS1pbm5lciB7XG5cbiAgLnBhZ2VfX2xheW91dCB7XG4gICAgQGluY2x1ZGUgaGVlLWZsZXhncmlkLXJvdztcbiAgICAucGFnZV9fbGVmdGJhciB7XG4gICAgICBAaW5jbHVkZSBoZWUtZmxleGdyaWQtY29sKDMpO1xuICAgIH1cbiAgICAucGFnZV9fbWFpbiB7XG4gICAgICAgQGluY2x1ZGUgaGVlLWZsZXhncmlkLWNvbCg4LjUsJGNvbC1vZmZzZXQ6MC41KTtcbiAgICB9XG4gIH1cbiAgQGluY2x1ZGUgbXEoJHVudGlsOiBkZXNrdG9wKSB7XG4gICAgLnBhZ2VfX2xheW91dCB7XG4gICAgICAucGFnZV9fbGVmdGJhciwgXG4gICAgICAucGFnZV9fbWFpbiB7XG4gICAgICAgIEBpbmNsdWRlIGhlZS1mbGV4Z3JpZC1jb2woMTIsJGNvbC1vZmZzZXQ6MCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLnBhZ2VfX2xlZnRiYXIge1xuICAgIG1hcmdpbi10b3A6IG5oc3VrLXNwYWNpbmcoNyk7XG4gICAgbWFyZ2luLWJvdHRvbTogbmhzdWstc3BhY2luZyg3KTtcbiAgICAubmhzdWstYmFjay1saW5rIHtcbiAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjQ0NDO1xuICAgICAgcGFkZGluZy1ib3R0b206IDEycHg7XG4gICAgfVxuICB9XG5cbn1cblxuLnByb3RvdHlwZS0taW52ZW50b3J5IHtcbn0iLCJcbi8vIEdyaWRcbiRncmlkLWNvbHVtbnM6IDEyO1xuQG1peGluIGhlZS1mbGV4Z3JpZC1yb3coXG4gICAgJGZsZXgtZGlzcGxheTogZmxleCxcbiAgICAkZmxleC1kaXJlY3Rpb246IG51bGwsIFxuICAgICRmbGV4LXdyYXA6IHdyYXAsIFxuICAgICRmbGV4LWZsb3c6IG51bGwsIFxuICAgICRqdXN0aWZ5LWNvbnRlbnQ6IG51bGwsIFxuICAgICRhbGlnbi1pdGVtczogbnVsbCwgXG4gICAgJGFsaWduLWNvbnRlbnQ6IG51bGwsIFxuICAgICRndXR0ZXI6IG51bGxcbikge1xuXHRib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgIEBpZiAkZmxleC1kaXNwbGF5IHtcblx0XHRkaXNwbGF5OiAkZmxleC1kaXNwbGF5O1xuXHR9XG5cdEBpZiAkZmxleC1kaXJlY3Rpb24ge1xuXHRcdGZsZXgtZGlyZWN0aW9uOiAkZmxleC1kaXJlY3Rpb247XG5cdH1cblx0QGlmICRmbGV4LXdyYXAge1xuXHRcdGZsZXgtd3JhcDogJGZsZXgtd3JhcDtcblx0fVxuXHRAaWYgJGZsZXgtZmxvdyB7XG5cdFx0ZmxleC1mbG93OiAkZmxleC1mbG93O1xuXHR9XG5cdEBpZiAkanVzdGlmeS1jb250ZW50IHtcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6ICRqdXN0aWZ5LWNvbnRlbnQ7XG5cdH1cblx0QGlmICRhbGlnbi1pdGVtcyB7XG5cdFx0YWxpZ24taXRlbXM6ICRhbGlnbi1pdGVtcztcblx0fVxuXHRAaWYgJGFsaWduLWNvbnRlbnQge1xuXHRcdGFsaWduLWNvbnRlbnQ6ICRhbGlnbi1jb250ZW50O1xuXHR9XG5cdEBpZiAkZ3V0dGVyIHtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IC0oJGd1dHRlciAqIDAuNSk7XG4gICAgICAgIG1hcmdpbi1yaWdodDogLSgkZ3V0dGVyICogMC41KTtcbiAgICB9XG4gICAgQGluY2x1ZGUgYnJvd3NlcihpZSkge1xuICAgICAgICAmOmFmdGVyIHtcbiAgICAgICAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICAgICAgICBkaXNwbGF5OiB0YWJsZTtcbiAgICAgICAgICAgIGNsZWFyOiBib3RoO1xuICAgICAgICB9XG4gICAgfVxuXHRAY29udGVudDtcbn1cblxuQG1peGluIGhlZS1mbGV4Z3JpZC1jb2woXG4gICAgJGNvbDogbnVsbCwgXG4gICAgJGdyaWQtY29sdW1uczogJGdyaWQtY29sdW1ucywgXG4gICAgJGNvbC1vZmZzZXQ6IG51bGwsIFxuICAgICRpbXBvcnRhbnQ6IG51bGwsXG4gICAgJGd1dHRlcjogbnVsbCwgXG4gICAgJGFsaWduLXNlbGY6IG51bGwsIFxuICAgICRmbGV4LWdyb3c6IDAsIFxuICAgICRmbGV4LXNocmluazogMSwgXG4gICAgJGZsZXgtYmFzaXM6IGF1dG8sIFxuICAgICRvcmRlcjogbnVsbFxuKSB7XG5cdGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG5cdEBpZiB0eXBlLW9mKCRjb2wpID09IG51bWJlciB7XG5cdFx0JGZsZXgtZ3JvdzogMDtcblx0XHQkZmxleC1zaHJpbms6IDA7XG4gICAgICAgIFxuICAgICAgICBAaWYgdW5pdCgkY29sKSA9PSAncHgnIG9yIHVuaXQoJGNvbCkgPT0gJyUnIHtcbiAgICAgICAgICAgIEBpZiAkaW1wb3J0YW50ID09IHRydWUge1xuICAgICAgICAgICAgICAgIHdpZHRoOiAkY29sO1xuICAgICAgICAgICAgICAgICRmbGV4LWJhc2lzOiAkY29sO1xuICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgd2lkdGg6ICRjb2whaW1wb3J0YW50O1xuICAgICAgICAgICAgICAgICRmbGV4LWJhc2lzOiAkY29sIWltcG9ydGFudDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgIEBpZiAkaW1wb3J0YW50ID09IHRydWUge1xuICAgICAgICAgICAgICAgICRmbGV4LWJhc2lzOiBjYWxjKCRjb2wgLyAkZ3JpZC1jb2x1bW5zKSAqIDEwMCUgIWltcG9ydGFudDtcbiAgICAgICAgICAgICAgICB3aWR0aDogY2FsYygkY29sIC8gJGdyaWQtY29sdW1ucykgKiAxMDAlICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICB3aWR0aDogY2FsYygkY29sIC8gJGdyaWQtY29sdW1ucykgKiAxMDAlO1xuICAgICAgICAgICAgICAgICRmbGV4LWJhc2lzOiBjYWxjKCRjb2wgLyAkZ3JpZC1jb2x1bW5zKSAqIDEwMCU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuXHR9IEBlbHNlIGlmIHR5cGUtb2YoJGNvbCkgPT0gc3RyaW5nIGFuZCAkY29sID09ICdhdXRvJyB7XG5cdFx0JGZsZXgtZ3JvdzogMTtcblx0XHQkZmxleC1zaHJpbms6IDE7XG5cdFx0JGZsZXgtYmFzaXM6IGF1dG87XG5cdFx0bWF4LXdpZHRoOiAxMDAlO1xuXHRcdHdpZHRoOiBhdXRvO1xuXHR9IEBlbHNlIGlmIHR5cGUtb2YoJGNvbCkgPT0gc3RyaW5nIGFuZCAkY29sID09ICdlcXVhbCcge1xuXHRcdCRmbGV4LWdyb3c6IDE7XG5cdFx0JGZsZXgtc2hyaW5rOiAxO1xuXHRcdCRmbGV4LWJhc2lzOiAwO1xuICAgIH0gQGVsc2UgaWYgdHlwZS1vZigkY29sKSA9PSBzdHJpbmcgYW5kICRjb2wgPT0gJ2JyZWFrcG9pbnQnIHtcblx0XHQkZmxleC1ncm93OiAwO1xuXHRcdCRmbGV4LXNocmluazogMTtcblx0XHQkZmxleC1iYXNpczogYXV0bztcblx0XHR3aWR0aDogMTAwJTtcblx0fSBAZWxzZSBpZiB0eXBlLW9mKCRjb2wpID09IHN0cmluZyBhbmQgJGNvbCA9PSAnbm9uZScge1xuXHRcdCRmbGV4LWdyb3c6IDA7XG5cdFx0JGZsZXgtc2hyaW5rOiAwO1xuXHRcdCRmbGV4LWJhc2lzOiBhdXRvO1xuICAgIH0gQGVsc2Uge1xuICAgICAgICAkZmxleC1ncm93OiAxO1xuXHRcdCRmbGV4LXNocmluazogMTtcblx0XHQkZmxleC1iYXNpczogMDtcbiAgICB9XG4gICAgQGlmICRndXR0ZXIgYW5kIHVuaXRsZXNzKCRndXR0ZXIpID09IGZhbHNlIHtcbiAgICAgICAgcGFkZGluZzogMCAkZ3V0dGVyICogMC41O1xuICAgIH1cblx0ZmxleDogJGZsZXgtZ3JvdyAkZmxleC1zaHJpbmsgJGZsZXgtYmFzaXM7XG4gICAgQGlmICRjb2wtb2Zmc2V0IGFuZCB1bml0bGVzcygkY29sLW9mZnNldCkgPT0gdHJ1ZSB7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiBjYWxjKCRjb2wtb2Zmc2V0IC8gJGdyaWQtY29sdW1ucykgKiAxMDAlO1xuICAgIH1cblx0QGlmICRhbGlnbi1zZWxmIHtcblx0XHRhbGlnbi1zZWxmOiAkYWxpZ24tc2VsZjtcblx0fVxuXHRAaWYgdHlwZS1vZigkb3JkZXIpID09IG51bWJlciB7XG5cdFx0b3JkZXI6ICRvcmRlcjtcblx0fVxuXG4gICAgQGluY2x1ZGUgYnJvd3NlcihpZSkge1xuICAgICAgICBmbG9hdDogbGVmdDsgXG4gICAgICAgIGZsZXg6IG5vbmU7XG4gICAgfVxuXG5cdEBjb250ZW50O1xufVxuXG4iLCJAbWl4aW4gYnJvd3NlcigkYnJvd3Nlcikge1xuICAgIFxuICBAaWYgJGJyb3dzZXIgPT0gaWUge1xuICAgICAgQG1lZGlhIHNjcmVlblxcMCB7IEBjb250ZW50OyB9XG4gIH1cbiAgXG59IiwiLnByb3RvdHlwZV9fc3VibmF2IHtcbiAgaDMge1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIGZvbnQtc2l6ZTogMTlweDtcbiAgICBmb250LXNpemU6IDEuMTg3NXJlbTtcbiAgICBsaW5lLWhlaWdodDogMS4yNTtcbiAgICBjb2xvcjogIzRjNjI3MjtcbiAgICBtYXJnaW4tYm90dG9tOiAxMnB4O1xuICAgIHBhZGRpbmctdG9wOiA0cHg7XG4gICAgcGFkZGluZy1sZWZ0OiA0cHg7XG4gIH1cbiAgaDQge1xuICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICBjb2xvcjogIzVlNmU3OTtcbiAgICBtYXJnaW4tYm90dG9tOiAwLjVlbTtcbiAgICBwYWRkaW5nLWxlZnQ6IDRweDtcbiAgfVxuICB1bCB7XG4gICAgbGlzdC1zdHlsZTogbm9uZTtcbiAgICBtYXJnaW46IDAgMCBuaHN1ay1zcGFjaW5nKDQpIDA7XG4gICAgcGFkZGluZzogMDtcbiAgICBsaSB7XG4gICAgICBmb250LXNpemU6IDE2cHg7XG4gICAgICBmb250LXNpemU6IDFyZW07XG4gICAgICBsaW5lLWhlaWdodDogMS4zO1xuICAgICAgcGFkZGluZy1sZWZ0OiA0cHg7XG4gICAgICBib3JkZXItbGVmdDogNHB4IHNvbGlkIHRyYW5zcGFyZW50O1xuICAgICAgbWFyZ2luLWxlZnQ6IC00cHg7XG4gICAgICBhIHtcbiAgICAgICAgY29sb3I6ICMwMDVlYjg7XG4gICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICAgIH1cbiAgICAgICYuY3VycmVudCB7XG4gICAgICAgIGJvcmRlci1sZWZ0OiA0cHggc29saWQgIzAwNWViODtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn0iXX0= */
