/**
 * Breakpoints
 */
/**
 * Input capabilities
 */
/********************************************************
* Touch devices
********************************************************/
body {
  visibility: inherit;
}

/**
 * Breakpoints
 */
/**
 * Input capabilities
 */
/********************************************************
* Touch devices
********************************************************/
body {
  visibility: inherit;
}

#social {
  width: 960px;
  margin: auto;
  margin-top: 16px;
}

@media screen and (max-width: 59.99em) {
  #social {
    display: none;
  }
}

#social .addthis_toolbox {
  margin-left: 300px;
}

#social .addthis_button_twitter_follow_native,
#social .addthis_button_google_plusone {
  margin-left: 8px !important;
}

#social .atc_s {
  margin-left: 12px !important;
}

/********************************************************
* Header
********************************************************/
#header {
  padding-top: 16px;
  position: relative;
}

@media screen and (max-width: 59.99em) {
  #header {
    padding-top: 8px;
    background-size: cover;
    background-position-y: center;
  }
}

@media screen and (min-width: 60em) {
  #header {
    background-image: none;
    background-size: 0;
    background-image: none !important;
  }
}

#banner {
  height: 86px;
}

@media screen and (max-width: 440px) {
  #banner {
    height: 59px;
  }
}

@media screen and (max-width: 320px) {
  #banner {
    height: 37px;
  }
}

#banner h1 {
  padding: 0;
  margin: 0;
  position: relative;
}

@media screen and (min-width: 60em) {
  #banner h1 {
    z-index: -1;
  }
}

#banner picture {
  display: block;
  height: 74px;
}

@media screen and (max-width: 440px) {
  #banner picture {
    height: 59px;
  }
}

@media screen and (max-width: 320px) {
  #banner picture {
    height: 37px;
  }
}

#banner img.logo {
  left: 50%;
  transform: translateX(-50%);
  position: absolute;
  height: auto;
  cursor: pointer;
  width: calc(100% - 110px);
  max-width: 414px;
}

@media screen and (max-width: 440px) {
  #banner img.logo {
    max-width: 331px;
  }
}

@media screen and (max-width: 320px) {
  #banner img.logo {
    max-width: 207px;
  }
}

#banner .appstore-logo, #banner .awards {
  position: absolute;
  top: 2px;
}

@media screen and (max-width: 59.99em) {
  #banner .appstore-logo, #banner .awards {
    display: none;
  }
}

#banner .appstore-logo {
  width: 150px;
  right: 0;
}

#banner .awards {
  width: 67px;
  right: 153px;
}

@keyframes slideRight {
  0% {
    transform: translateX(-100%);
    display: block;
  }
  100% {
    transform: translateX(0);
  }
}

@keyframes slideLeft {
  0% {
    transform: translateX(0);
  }
  100% {
    transform: translateX(-100%);
  }
}

.slicknav_menu {
  display: none;
  position: relative;
  background: transparent !important;
  padding: 0 !important;
}

@media (pointer: coarse) and (hover: none) {
  .slicknav_menu {
    display: block;
    position: inherit;
  }
}

@media screen and (max-width: 48.615em) {
  .slicknav_menu {
    display: block;
    position: inherit;
  }
}

.slicknav_menu .slicknav_btn {
  top: 50%;
  transform: translateY(-50%);
  position: absolute;
  left: 0;
  padding: 0.5em;
  margin: 0 0 0 10px;
  font-size: 1rem !important;
}

.slicknav_menu .slicknav_btn .slicknav_menutxt {
  display: none;
}

.slicknav_menu .slicknav_btn .slicknav_icon {
  margin: 0;
}

.slicknav_menu .slicknav_nav {
  display: none;
  font-size: 1em !important;
  width: auto;
  float: left;
  position: absolute;
  z-index: 999999;
  animation-timing-function: ease-in-out;
  animation-duration: 300ms;
  animation-iteration-count: 1;
  animation-fill-mode: forwards;
}

.slicknav_menu .slicknav_nav.slicknav_initialising {
  display: none !important;
}

.slicknav_menu .slicknav_nav.slicknav_hiding {
  display: block;
  animation-name: slideLeft;
}

.slicknav_menu .slicknav_nav.slicknav_showing {
  animation-name: slideRight;
  display: block;
}

.slicknav_menu .slicknav_nav.slicknav_shown {
  display: block;
}

.slicknav_menu .slicknav_nav.slicknav_hidden {
  display: none !important;
}

.slicknav_menu .slicknav_nav ul {
  overflow: hidden;
}

.slicknav_menu .slicknav_nav ul.slicknav_hiding, .slicknav_menu .slicknav_nav ul.slicknav_hidden {
  max-height: 0;
  transition: max-height 300ms cubic-bezier(0, 1, 0, 1);
}

.slicknav_menu .slicknav_nav ul.slicknav_showing, .slicknav_menu .slicknav_nav ul.slicknav_shown {
  max-height: 9999px;
  transition: max-height 300ms cubic-bezier(1, 0, 1, 0);
}

.slicknav_menu .slicknav_nav li a {
  position: relative;
  z-index: 1;
  outline: none !important;
}

.slicknav_menu .slicknav_nav li a:hover {
  border-radius: inherit;
  background: inherit;
  color: inherit;
  outline: none !important;
}

.slicknav_menu .slicknav_nav li > a {
  padding-top: 10px;
  padding-bottom: 10px;
}

.slicknav_menu .slicknav_nav > ul {
  z-index: 1;
}

.slicknav_menu .slicknav_nav > li > a {
  padding-right: 40px;
}

.slicknav_menu .slicknav_nav:after {
  content: '';
  position: absolute;
  width: 100%;
  height: 100%;
  top: 0;
  background-color: #222;
  opacity: 0.95;
  border-radius: 0 10px 0 0;
}

.slicknav_menu .slicknav_nav a.basket-cta span {
  display: block;
}

.slicknav_menu .slicknav_nav a.basket-cta:after {
  display: none;
}

.nav {
  margin-right: 2px;
  /* fix for megamenu overspilling 2px */
}

body.fullscreen .nav {
  display: none !important;
}

@media (pointer: coarse) and (hover: none) {
  .nav {
    margin-right: 0;
  }
}

@media screen and (max-width: 48.615em) {
  .nav {
    margin-right: 0;
  }
}

.nav li .icon {
  position: absolute;
  right: 0;
  z-index: 2;
}

.nav li.android,
.nav li.apple {
  position: relative;
}

.nav li.android .icon {
  background: url("/images/graphics/android_logo_icon.png") top right no-repeat !important;
  width: 34px;
  height: 30px;
}

.nav li.apple .icon {
  background: url("/images/graphics/apple_logo_icon.png") top right no-repeat !important;
  width: 25px;
  height: 30px;
  margin-right: 3px;
}

@media (max-width: 57.5625em) {
  .nav .black ul.mega-menu li.submenu a {
    padding-left: 8px;
    padding-right: 26px;
  }
  .nav .black ul.mega-menu li.submenu a .dc-mega-icon {
    right: 10px;
  }
}

.nav > .login-cta-container {
  display: none;
}

@media (pointer: coarse) and (hover: none) {
  .nav > .login-cta-container {
    display: block;
  }
}

@media screen and (max-width: 48.615em) {
  .nav > .login-cta-container {
    display: block;
  }
}

body.accounts-disabled .nav > .login-cta-container {
  display: none !important;
}

.nav > .login-cta-container a {
  position: relative;
  display: block;
}

.nav > .login-cta-container a span {
  display: none;
}

.nav > .login-cta-container a:after {
  top: 50%;
  transform: translateY(-50%);
  width: 34px;
  height: 30px;
  background-color: #222222;
  border-radius: 4px;
  content: '';
  position: absolute;
  right: 10px;
  background-image: url("/images/graphics/user.png");
  background-repeat: no-repeat;
  background-size: contain;
  background-position: center center;
}

@media screen and (min-width: 60em) {
  .nav > .login-cta-container a:after {
    right: auto;
    left: 54px;
  }
}

.nav .basket-cta-container, .nav .basket-cta {
  display: none;
}

body.signed-in .nav .basket-cta-container, .nav .basket-cta {
  display: block;
}

body.accounts-disabled .nav .basket-cta-container, .nav .basket-cta {
  display: none !important;
}

.nav a.basket-cta {
  position: relative;
  display: block;
}

.nav a.basket-cta span {
  display: none;
}

.nav a.basket-cta:after {
  content: '';
  position: absolute;
  width: 26px;
  height: 20px;
  background-repeat: no-repeat;
  background-size: 26px 20px;
  background-position: center center;
  background-image: url("/images/graphics/shopping_cart.png");
}

.nav #menu a.basket-cta {
  padding: 20px 29px 20px 29px !important;
}

.nav #menu a.basket-cta:after {
  top: 50%;
  left: 50%;
  transform: translateX(-50%) translateY(-50%);
}

.nav #menu a.basket-cta:hover:after {
  background-image: url("/images/graphics/shopping_cart_inverted.png");
}

.nav #menu li.mega-hover a.basket-cta:after {
  background-image: url("/images/graphics/shopping_cart_inverted.png");
}

.nav > a.basket-cta {
  display: none;
}

@media (pointer: coarse) and (hover: none) {
  .nav > a.basket-cta {
    display: block;
  }
}

@media screen and (max-width: 48.615em) {
  .nav > a.basket-cta {
    display: block;
  }
}

@media screen and (max-width: 23.125em) {
  .nav > a.basket-cta {
    display: none !important;
  }
}

.nav > a.basket-cta:after {
  top: 50%;
  transform: translateY(-50%);
  width: 34px;
  height: 30px;
  background-color: #222222;
  border-radius: 4px;
  right: 54px;
}

@media screen and (min-width: 60em) {
  .nav > a.basket-cta:after {
    right: auto;
    left: 108px;
  }
}

@media (pointer: coarse) and (hover: none) {
  #menu {
    display: none;
  }
}

@media screen and (max-width: 48.615em) {
  #menu {
    display: none;
  }
}

#menu .menubar-icon {
  margin-left: 8px !important;
  padding: 0 !important;
  width: 32px;
  height: 32px;
  position: relative;
  top: 4px;
}

@media screen and (max-width: 59.615em) {
  #menu .menubar-icon.social {
    display: none;
  }
}

/********************************************************
* Footer
********************************************************/
#footer {
  background: #2f2f2f;
  padding-top: 8px;
  padding-bottom: 8px;
  font-size: 10pt;
}

@media screen and (max-width: 59.99em) {
  #footer {
    display: none;
  }
}

#footer a {
  color: white;
  text-decoration: none;
}

#footer .links ul {
  text-align: center;
  padding-left: 0;
  margin: 4px 0;
}

#footer .links li {
  display: inline;
  padding-left: 8px;
  padding-right: 8px;
}

#footer .links li a:hover {
  text-decoration: underline;
}

#footer ul#social-footer {
  display: inline-block;
  padding: 0;
  margin-left: 50%;
  transform: translateX(-50%);
}

@media (pointer: coarse) and (hover: none) {
  #footer ul#social-footer {
    display: none;
  }
}

@media screen and (max-width: 48.615em) {
  #footer ul#social-footer {
    display: none;
  }
}

#footer ul#social-footer li {
  float: left;
  margin: 0;
  padding: 0;
  font-size: 13px;
  font-weight: bold;
  border: none;
  list-style: none;
}

#footer ul#social-footer li a {
  float: left;
  display: block;
  color: #fff;
  text-shadow: 1px 1px 1px #000;
  text-decoration: none;
}

#footer ul#social-footer .menubar-icon {
  margin-left: 8px !important;
  padding: 0 !important;
  width: 32px;
  height: 32px;
  position: relative;
  top: 4px;
}

@media screen and (max-width: 59.615em) {
  #footer ul#social-footer .menubar-icon.social {
    display: none;
  }
}

#footer ul#social-footer .facebook {
  background: url("/images/graphics/facebook-icon.png") top right no-repeat !important;
}

#footer ul#social-footer .pinterest {
  background: url("/images/graphics/pinterest-icon.png") top right no-repeat !important;
}

#footer ul#social-footer .threads {
  background: url("/images/graphics/threads-icon.png") top right no-repeat !important;
}

#footer ul#social-footer .bluesky {
  background: url("/images/graphics/bluesky-icon.png") top right no-repeat !important;
}

#footer ul#social-footer .twitter {
  background: url("/images/graphics/twitter-icon.png") top right no-repeat !important;
}

#footer ul#social-footer .instagram {
  background: url("/images/graphics/instagram-icon.png") top right no-repeat !important;
}

#like_on_facebook {
  margin: 0;
  padding-bottom: 16px;
}

#like_on_facebook div.text {
  display: inline;
}

/********************************************************
* Footer section highlighting
********************************************************/
html.section-terms #footer li.terms a,
html.section-linking #footer li.linking a,
html.section-apps-menu #footer li.apps-menu a,
html.section-links #footer li.links a,
html.section-footpath-issues #footer li.footpath-issues a,
html.section-direction-correction #footer li.direction-correction a,
html.section-cookie-policy #footer li.cookie-policy a,
html.section-contact-us #footer li.contact-us a,
html.section-mobile-redirect #footer li.mobile-redirect a {
  color: #00d4ff;
  font-style: italic;
}

/********************************************************
* Nav section highlighting
********************************************************/
html.section-home ul.mega-menu li.nav-sec-home a,
html.section-all-walks ul.mega-menu li.nav-sec-all-walks a,
html.section-locations ul.mega-menu li.nav-sec-locations a,
html.section-walk-types ul.mega-menu li.nav-sec-walk-types a,
html.section-apps ul.mega-menu li.nav-sec-apps a,
html.section-buy ul.mega-menu li.nav-sec- a,
html.section-faq ul.mega-menu li.nav-sec-faq a,
html.section-blog ul.mega-menu li.nav-sec-blog a,
html.section-mysteries ul.mega-menu li.nav-sec-mysteries a {
  background-position: 100% -40px;
  color: #000;
  text-shadow: none;
}

/********************************************************
* Print mods
********************************************************/
@media print {
  body, #content {
    background: #fff !important;
  }
  #footer, .no-print, .nav, #social, #cookieTerms, #header, #sub-header {
    display: none !important;
  }
  a {
    text-decoration: none;
    color: black;
  }
  .print-only {
    display: block !important;
  }
  .print-only-inline {
    display: inline !important;
  }
  #banner {
    height: inherit;
    float: right;
    position: relative;
    top: -6px;
  }
  #banner img.logo {
    margin-left: 0;
    height: 50px;
  }
  #wrapper, #content {
    padding: 0;
  }
}

#login-popup {
  display: none;
}

body.js-loaded #login-popup {
  display: block;
}

#login-popup #firebaseui-auth-container.loading {
  padding: 5rem 10rem;
}

body:not(.fullscreen) #login-popup #firebaseui-auth-container.loading {
  position: relative;
}

#login-popup #firebaseui-auth-container.loading::after {
  content: '';
  position: absolute;
  top: 50%;
  left: 50%;
  margin-top: -30px;
  margin-left: -30px;
  width: 50px;
  height: 50px;
  border-radius: 50px;
  border: 5px solid rgba(255, 255, 255, 0.25);
  border-top-color: white;
  animation: loading 1s ease infinite;
}

@keyframes loading {
  0% {
    transform: rotate(0deg);
  }
  100% {
    transform: rotate(360deg);
  }
}

/********************************************************
* Overall page
********************************************************/
body {
  margin: 0;
  padding: 0;
  font-family: Arial, Helvetica, Helv, sans-serif;
  background-attachment: fixed;
  background-color: #ccc;
}

@media screen and (min-width: 60em) {
  body {
    background-size: cover;
    background-position-y: center;
  }
}

@media screen and (max-width: 59.99em) {
  body {
    background-image: none;
    background-size: 0;
  }
}

body.fullscreen {
  max-height: 100vh;
  overflow-y: hidden;
}

#wrapper {
  margin: 0;
}

body:not(.fullscreen) #wrapper {
  position: relative;
}

@media screen and (max-width: 59.99em) {
  #wrapper {
    padding-left: 0;
    padding-right: 0;
  }
}

#page {
  width: 960px;
  margin: auto;
}

@media screen and (max-width: 59.99em) {
  #page {
    margin: 0;
  }
}

#page-inner {
  width: 960px;
  margin: auto;
}

@media screen and (max-width: 59.99em) {
  #page, #page-inner {
    width: 100%;
  }
}

#content {
  padding: 16px;
  background: honeydew;
}

@media screen and (max-width: 59.99em) {
  #content {
    padding: 8px;
    min-height: 100vh;
  }
}

@media screen and (min-width: 60em) {
  #content {
    background: rgba(240, 255, 240, 0.8);
  }
}

a {
  color: #2f2f2f;
}

h1, h2, h3, h4, h5 {
  font-family: Georgia;
  font-weight: normal;
}

h1 {
  font-variant: small-caps;
  margin-top: 8px;
  margin-bottom: 8px;
}

@media screen and (max-width: 46.24em) {
  h1:not(.non-responsive) {
    font-size: 1.5em !important;
  }
}

@media screen and (max-width: 19.99em) {
  h1:not(.non-responsive) {
    font-size: 1.3em !important;
  }
}

h2 {
  font-variant: small-caps;
  border-bottom: 1px solid #aaa;
  margin-top: 24px;
  margin-bottom: 8px;
}

@media screen and (max-width: 46.24em) {
  h2:not(.non-responsive) {
    font-size: 1.2em !important;
  }
}

@media screen and (max-width: 19.99em) {
  h2:not(.non-responsive) {
    font-size: 1em !important;
  }
}

h3 {
  margin-top: 16px;
}

@media screen and (max-width: 46.24em) {
  h3:not(.non-responsive) {
    font-size: 1em !important;
  }
}

@media screen and (max-width: 19.99em) {
  h3:not(.non-responsive) {
    font-size: 0.9em !important;
  }
}

@media screen and (max-width: 37.49em) {
  p:not(.non-responsive), a:not(.non-responsive) {
    font-size: 0.9em !important;
  }
}

@media screen and (max-width: 37.49em) {
  :not(li) > ul:not(.non-responsive), ol > li:not(.non-responsive) {
    font-size: 0.9em !important;
  }
}

h3, h4, h5 {
  text-decoration: underline;
  /* for when supported... */
  -webkit-text-decoration-color: #aaa;
  -webkit-text-decoration-skip: true;
  margin-bottom: 4px;
}

h1 + p, h2 + p, h3 + p, h4 + p, h5 + p {
  margin-top: 0;
}

@media (pointer: coarse) and (hover: none) {
  select:not(.non-responsive) {
    padding: 8px;
  }
}

@media screen and (max-width: 48.615em) {
  select:not(.non-responsive) {
    padding: 8px;
  }
}

#content ul, #content ol {
  margin-top: 8px;
  margin-bottom: 8px;
}

#content ul, #content ol {
  padding-left: 8px;
  margin-left: 8px;
}

.clear-right {
  clear: right;
}

.clear-left {
  clear: left;
}

.clear {
  clear: both;
}

.hidden {
  display: none !important;
}

/* Attach to any "slow loading" items */
body:not(.fullscreen) .loader {
  position: relative;
}

.loader::after {
  content: '';
  position: absolute;
  top: 50%;
  left: 50%;
  margin-top: -30px;
  margin-left: -30px;
  width: 50px;
  height: 50px;
  border-radius: 50px;
  border: 5px solid rgba(255, 255, 255, 0.25);
  border-top-color: white;
  animation: loading 1s ease infinite;
}

@keyframes loading {
  0% {
    transform: rotate(0deg);
  }
  100% {
    transform: rotate(360deg);
  }
}

body:not(.fullscreen) .loader-inverted {
  position: relative;
}

.loader-inverted::after {
  content: '';
  position: absolute;
  top: 50%;
  left: 50%;
  margin-top: -30px;
  margin-left: -30px;
  width: 50px;
  height: 50px;
  border-radius: 50px;
  border: 5px solid rgba(0, 0, 0, 0.25);
  border-top-color: black;
  animation: loading 1s ease infinite;
}

@keyframes loading {
  0% {
    transform: rotate(0deg);
  }
  100% {
    transform: rotate(360deg);
  }
}

body:not(.fullscreen) .loader-small {
  position: relative;
}

.loader-small::after {
  content: '';
  position: absolute;
  top: 50%;
  left: 50%;
  margin-top: -14px;
  margin-left: -14px;
  width: 24px;
  height: 24px;
  border-radius: 24px;
  border: 2px solid rgba(255, 255, 255, 0.25);
  border-top-color: white;
  animation: loading 1s ease infinite;
}

@keyframes loading {
  0% {
    transform: rotate(0deg);
  }
  100% {
    transform: rotate(360deg);
  }
}

body:not(.fullscreen) .loader-inverted-small {
  position: relative;
}

.loader-inverted-small::after {
  content: '';
  position: absolute;
  top: 50%;
  left: 50%;
  margin-top: -14px;
  margin-left: -14px;
  width: 24px;
  height: 24px;
  border-radius: 24px;
  border: 2px solid rgba(0, 0, 0, 0.25);
  border-top-color: black;
  animation: loading 1s ease infinite;
}

@keyframes loading {
  0% {
    transform: rotate(0deg);
  }
  100% {
    transform: rotate(360deg);
  }
}

@media screen {
  .print-only {
    display: none !important;
  }
  .print-only-inline {
    display: none !important;
  }
}

@media (pointer: coarse) and (hover: none) {
  [data-role="button"]:not(.non-responsive) {
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.15);
    color: #333 !important;
    background: #eee;
    border-color: #ddd;
    border-width: 1px;
    border-style: solid;
    border-radius: 5px;
    margin: .5em 0;
    padding: .7em 1em;
    display: inline-block;
    position: relative;
    overflow: hidden;
    white-space: nowrap;
    cursor: pointer;
    user-select: none;
    text-align: center;
    text-overflow: ellipsis;
    text-decoration: none;
    font-weight: bold;
    font-size: 16px;
  }
  [data-role="button"]:not(.non-responsive):hover, [data-role="button"]:not(.non-responsive):active {
    background: #e8f0ff;
  }
  [data-role="button"]:not(.non-responsive)[data-icon] {
    padding-left: 32px;
    padding-right: 8px;
  }
  [data-role="button"]:not(.non-responsive)[data-icon] i {
    top: 50%;
    transform: translateY(-50%);
    position: absolute;
    left: 8px;
  }
  [data-role="button"]:not(.non-responsive).green {
    background: linear-gradient(to bottom, #8ddda0 0%, #3ddb8c 50%, #8ddda0 100%);
    border-color: #2b6b37;
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.5);
  }
  [data-role="button"]:not(.non-responsive).green:hover, [data-role="button"]:not(.non-responsive).green:active {
    background: linear-gradient(to bottom, #dcf4e1 0%, #3ddb8c 50%, #dcf4e1 100%);
  }
  [data-role="button"]:not(.non-responsive).blue {
    background: linear-gradient(to bottom, #8dc0dd 0%, #3dacdb 50%, #8dc0dd 100%);
    border-color: #126167;
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3);
  }
  [data-role="button"]:not(.non-responsive).blue:hover, [data-role="button"]:not(.non-responsive).blue:active {
    background: linear-gradient(to bottom, #dce1f4 0%, #6eaceb 50%, #dce1f4 100%);
  }
  [data-role="listview"]:not(.non-responsive) {
    background-color: #2f2f2f;
    border-radius: 4px;
    z-index: 0;
    position: relative;
    box-shadow: 4px 4px 4px #bbb;
    color: #eee;
    padding: 0 !important;
    list-style: none;
  }
  [data-role="listview"]:not(.non-responsive), [data-role="listview"]:not(.non-responsive) a {
    color: white;
  }
  [data-role="listview"]:not(.non-responsive):before {
    content: '';
    position: absolute;
    width: 100%;
    height: 18px;
    left: 0;
    top: 0;
    background: linear-gradient(#717171, #424141);
    border-radius: 4px 4px 0 0;
    z-index: -1;
  }
  [data-role="listview"]:not(.non-responsive):after {
    content: '';
    position: absolute;
    width: 100%;
    height: 18px;
    left: 0;
    top: 18px;
    background: linear-gradient(#404040, #2f2f2f);
    z-index: -1;
  }
  [data-role="listview"]:not(.non-responsive) > * {
    z-index: 2;
  }
  body:not(.fullscreen) [data-role="listview"]:not(.non-responsive) > * {
    position: relative;
  }
  [data-role="listview"]:not(.non-responsive) a, [data-role="listview"]:not(.non-responsive) strong {
    color: white;
  }
  [data-role="listview"]:not(.non-responsive) h2 {
    border: none;
    margin: 0;
  }
  [data-role="listview"]:not(.non-responsive) > li {
    display: block;
    position: relative;
    overflow: visible;
    margin: 0;
    padding: 8px 16px 8px 8px !important;
    list-style: none;
    font-weight: bold;
    border-color: #ddd;
    border-style: solid;
    border-width: 1px 1px 0 1px;
    font-size: 16px !important;
  }
}

@media screen and (pointer: coarse) and (hover: none) and (max-width: 37.49em) {
  [data-role="listview"]:not(.non-responsive) > li {
    font-size: 14px !important;
  }
}

@media (pointer: coarse) and (hover: none) {
  [data-role="listview"]:not(.non-responsive) > li a {
    margin: 0;
    text-align: left;
    text-decoration: none;
    overflow: hidden;
    font-size: 16px !important;
  }
}

@media screen and (pointer: coarse) and (hover: none) and (max-width: 37.49em) {
  [data-role="listview"]:not(.non-responsive) > li a {
    font-size: 14px !important;
  }
}

@media (pointer: coarse) and (hover: none) {
  [data-role="listview"]:not(.non-responsive) > li a:after {
    content: '>';
    position: absolute;
    right: 4px;
    font-size: 16px !important;
  }
}

@media screen and (pointer: coarse) and (hover: none) and (max-width: 37.49em) {
  [data-role="listview"]:not(.non-responsive) > li a:after {
    font-size: 14px !important;
  }
}

@media (pointer: coarse) and (hover: none) {
  :not(.non-responsive):not([data-role]):not([role]) > li > a:only-child {
    padding: 8px 0;
    display: inline-block;
  }
}

@media screen and (max-width: 48.615em) {
  [data-role="button"]:not(.non-responsive) {
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.15);
    color: #333 !important;
    background: #eee;
    border-color: #ddd;
    border-width: 1px;
    border-style: solid;
    border-radius: 5px;
    margin: .5em 0;
    padding: .7em 1em;
    display: inline-block;
    position: relative;
    overflow: hidden;
    white-space: nowrap;
    cursor: pointer;
    user-select: none;
    text-align: center;
    text-overflow: ellipsis;
    text-decoration: none;
    font-weight: bold;
    font-size: 16px;
  }
  [data-role="button"]:not(.non-responsive):hover, [data-role="button"]:not(.non-responsive):active {
    background: #e8f0ff;
  }
  [data-role="button"]:not(.non-responsive)[data-icon] {
    padding-left: 32px;
    padding-right: 8px;
  }
  [data-role="button"]:not(.non-responsive)[data-icon] i {
    top: 50%;
    transform: translateY(-50%);
    position: absolute;
    left: 8px;
  }
  [data-role="button"]:not(.non-responsive).green {
    background: linear-gradient(to bottom, #8ddda0 0%, #3ddb8c 50%, #8ddda0 100%);
    border-color: #2b6b37;
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.5);
  }
  [data-role="button"]:not(.non-responsive).green:hover, [data-role="button"]:not(.non-responsive).green:active {
    background: linear-gradient(to bottom, #dcf4e1 0%, #3ddb8c 50%, #dcf4e1 100%);
  }
  [data-role="button"]:not(.non-responsive).blue {
    background: linear-gradient(to bottom, #8dc0dd 0%, #3dacdb 50%, #8dc0dd 100%);
    border-color: #126167;
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3);
  }
  [data-role="button"]:not(.non-responsive).blue:hover, [data-role="button"]:not(.non-responsive).blue:active {
    background: linear-gradient(to bottom, #dce1f4 0%, #6eaceb 50%, #dce1f4 100%);
  }
  [data-role="listview"]:not(.non-responsive) {
    background-color: #2f2f2f;
    border-radius: 4px;
    z-index: 0;
    position: relative;
    box-shadow: 4px 4px 4px #bbb;
    color: #eee;
    padding: 0 !important;
    list-style: none;
  }
  [data-role="listview"]:not(.non-responsive), [data-role="listview"]:not(.non-responsive) a {
    color: white;
  }
  [data-role="listview"]:not(.non-responsive):before {
    content: '';
    position: absolute;
    width: 100%;
    height: 18px;
    left: 0;
    top: 0;
    background: linear-gradient(#717171, #424141);
    border-radius: 4px 4px 0 0;
    z-index: -1;
  }
  [data-role="listview"]:not(.non-responsive):after {
    content: '';
    position: absolute;
    width: 100%;
    height: 18px;
    left: 0;
    top: 18px;
    background: linear-gradient(#404040, #2f2f2f);
    z-index: -1;
  }
  [data-role="listview"]:not(.non-responsive) > * {
    z-index: 2;
  }
  body:not(.fullscreen) [data-role="listview"]:not(.non-responsive) > * {
    position: relative;
  }
  [data-role="listview"]:not(.non-responsive) a, [data-role="listview"]:not(.non-responsive) strong {
    color: white;
  }
  [data-role="listview"]:not(.non-responsive) h2 {
    border: none;
    margin: 0;
  }
  [data-role="listview"]:not(.non-responsive) > li {
    display: block;
    position: relative;
    overflow: visible;
    margin: 0;
    padding: 8px 16px 8px 8px !important;
    list-style: none;
    font-weight: bold;
    border-color: #ddd;
    border-style: solid;
    border-width: 1px 1px 0 1px;
    font-size: 16px !important;
  }
}

@media screen and (max-width: 48.615em) and (max-width: 37.49em) {
  [data-role="listview"]:not(.non-responsive) > li {
    font-size: 14px !important;
  }
}

@media screen and (max-width: 48.615em) {
  [data-role="listview"]:not(.non-responsive) > li a {
    margin: 0;
    text-align: left;
    text-decoration: none;
    overflow: hidden;
    font-size: 16px !important;
  }
}

@media screen and (max-width: 48.615em) and (max-width: 37.49em) {
  [data-role="listview"]:not(.non-responsive) > li a {
    font-size: 14px !important;
  }
}

@media screen and (max-width: 48.615em) {
  [data-role="listview"]:not(.non-responsive) > li a:after {
    content: '>';
    position: absolute;
    right: 4px;
    font-size: 16px !important;
  }
}

@media screen and (max-width: 48.615em) and (max-width: 37.49em) {
  [data-role="listview"]:not(.non-responsive) > li a:after {
    font-size: 14px !important;
  }
}

@media screen and (max-width: 48.615em) {
  :not(.non-responsive):not([data-role]):not([role]) > li > a:only-child {
    padding: 8px 0;
    display: inline-block;
  }
}

/********************************************************
* Device-specific mods
********************************************************/
body.os-android .ios:not(.os-always),
body.os-ios .android:not(.os-always),
body.os-android .not-android:not(.os-always),
body.os-ios .not-ios:not(.os-always),
body.os-ios .not-ios-or-android:not(.os-always),
body.os-android .not-ios-or-android:not(.os-always) {
  display: none !important;
}

/*# sourceMappingURL=data:application/json;base64,ewoJInZlcnNpb24iOiAzLAoJImZpbGUiOiAiLi4vd3d3L2Nzcy9tYWluLmNzcyIsCgkic291cmNlcyI6IFsKCQkiLi4vd3d3L3Njc3MvbWFpbi5zY3NzIiwKCQkiLi4vd3d3L3Njc3MvQGluY2x1ZGUvX2NvbW1vbi5zY3NzIiwKCQkiLi4vd3d3L3Njc3MvQGluY2x1ZGUvX3ZhcmlhYmxlcy5zY3NzIiwKCQkiLi4vd3d3L3Njc3MvQGluY2x1ZGUvX2dlbmVyYWxfbWl4aW5zLnNjc3MiLAoJCSIuLi93d3cvc2Nzcy9AaW5jbHVkZS9fbWVkaWEuc2NzcyIsCgkJIi4uL3d3dy9zY3NzL0BpbmNsdWRlL19tcS5zY3NzIiwKCQkiLi4vd3d3L3Njc3MvQGluY2x1ZGUvX3RvdWNoLnNjc3MiLAoJCSIuLi93d3cvc2Nzcy9AbWFpbi9fc29jaWFsLnNjc3MiLAoJCSIuLi93d3cvc2Nzcy9AaW5jbHVkZS9fY29tbW9uLnNjc3MiLAoJCSIuLi93d3cvc2Nzcy9AbWFpbi9faGVhZGVyLnNjc3MiLAoJCSIuLi93d3cvc2Nzcy9AbWFpbi9fZm9vdGVyLnNjc3MiLAoJCSIuLi93d3cvc2Nzcy9AbWFpbi9fc2VjdGlvbl9oaWdobGlnaHRpbmcuc2NzcyIsCgkJIi4uL3d3dy9zY3NzL0BtYWluL19wcmludC5zY3NzIiwKCQkiLi4vd3d3L3Njc3MvQG1haW4vX2xvZ2luX3BvcHVwLnNjc3MiLAoJCSIuLi93d3cvc2Nzcy9AaW5jbHVkZS9jb21wb25lbnQvX2xvYWRlci5zY3NzIiwKCQkiLi4vd3d3L3Njc3MvQGluY2x1ZGUvY29tcG9uZW50L19sb2FkZXIuc2NzcyIKCV0sCgkic291cmNlc0NvbnRlbnQiOiBbCgkJIi8vIEltcG9ydCBjb21wb25lbnRzXG5AaW1wb3J0IFwiQGluY2x1ZGUvY29tbW9uXCI7XG5AaW1wb3J0IFwiQG1haW4vc29jaWFsXCI7XG5AaW1wb3J0IFwiQG1haW4vaGVhZGVyXCI7XG5AaW1wb3J0IFwiQG1haW4vZm9vdGVyXCI7XG5AaW1wb3J0IFwiQG1haW4vc2VjdGlvbl9oaWdobGlnaHRpbmdcIjtcbkBpbXBvcnQgXCJAbWFpbi9wcmludFwiO1xuQGltcG9ydCBcIkBtYWluL2xvZ2luX3BvcHVwXCI7XG5AaW1wb3J0IFwiLi4vQGluY2x1ZGUvY29tcG9uZW50L2xvYWRlclwiO1xuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiogT3ZlcmFsbCBwYWdlXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbmJvZHkge1xuICBtYXJnaW46MDtcbiAgcGFkZGluZzowO1xuICBmb250LWZhbWlseTogQXJpYWwsIEhlbHZldGljYSwgSGVsdiwgc2Fucy1zZXJpZjtcbiAgYmFja2dyb3VuZC1hdHRhY2htZW50OiBmaXhlZDtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2NjYztcblxuICAvLyBGb3Igc2NyZWVucyB3aWRlciB0aGFuIHBhZ2UgY29sdW1uLCBkaXNwbGF5IGZ1bGwgcGFnZSBCRyBpbWFnZVxuICAvLyBJbml0aWFsbHkgZGlzcGxheSBsb3cgcmVzIGltYWdlIHdoaWNoIGlzIHJlcGxhY2VkIGJ5IGhpZ2gtcmVzIGltYWdlIGluIG1haW4uanMgb25jZSBjb250ZW50IGhhcyBsb2FkZWRcbiAgQGluY2x1ZGUgbXFzKCRmcm9tOiBwYWdlKSB7XG4gICAgYmFja2dyb3VuZC1zaXplOiBjb3ZlcjtcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uLXk6IGNlbnRlcjtcbiAgfVxuXG4gIEBpbmNsdWRlIG1xcygkdW50aWw6IHBhZ2UpIHtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiBub25lO1xuICAgIGJhY2tncm91bmQtc2l6ZTogMDtcbiAgfVxuXG4gICYuZnVsbHNjcmVlbiB7XG4gICAgbWF4LWhlaWdodDogMTAwdmg7XG4gICAgb3ZlcmZsb3cteTogaGlkZGVuO1xuICB9XG59XG5cblxuI3dyYXBwZXIge1xuICBtYXJnaW46MDtcblxuICBAYXQtcm9vdCB7XG4gICAgYm9keTpub3QoLmZ1bGxzY3JlZW4pICN7Jn17XG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgfVxuICB9XG5cbiAgQGluY2x1ZGUgbXFzKCR1bnRpbDogcGFnZSkge1xuICAgIHBhZGRpbmctbGVmdDogMDtcbiAgICBwYWRkaW5nLXJpZ2h0OiAwO1xuICB9XG59XG5cbiNwYWdlIHtcbiAgd2lkdGg6ICRwYWdlLXdpZHRoO1xuICBtYXJnaW46IGF1dG87XG5cbiAgQGluY2x1ZGUgbXFzKCR1bnRpbDogcGFnZSkge1xuICAgIG1hcmdpbjogMDtcbiAgfVxufVxuXG4jcGFnZS1pbm5lcntcbiAgd2lkdGg6ICRwYWdlLXdpZHRoO1xuICBtYXJnaW46IGF1dG87XG59XG5cbkBpbmNsdWRlIG1xcygkdW50aWw6IHBhZ2UpIHtcbiAgI3BhZ2UsICNwYWdlLWlubmVyIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgfVxufVxuXG5cbiNjb250ZW50IHtcbiAgcGFkZGluZzogMTZweDtcbiAgYmFja2dyb3VuZDogcmdiKDI0MCwyNTUsMjQwKTtcblxuICBAaW5jbHVkZSBtcXMoJHVudGlsOiBwYWdlKSB7XG4gICAgcGFkZGluZzogOHB4O1xuICAgIG1pbi1oZWlnaHQ6IDEwMHZoO1xuICB9XG4gIEBpbmNsdWRlIG1xcygkZnJvbTogcGFnZSkge1xuICAgIGJhY2tncm91bmQ6IHJnYmEoMjQwLDI1NSwyNDAsMC44KTtcbiAgfVxufVxuXG5hIHtcbiAgY29sb3I6ICMyZjJmMmY7XG59XG5cbmgxLGgyLGgzLGg0LGg1IHtcbiAgZm9udC1mYW1pbHk6IEdlb3JnaWE7XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG59XG5cbmgxIHtcbiAgZm9udC12YXJpYW50OiBzbWFsbC1jYXBzO1xuICBtYXJnaW4tdG9wOiA4cHg7XG4gIG1hcmdpbi1ib3R0b206IDhweDtcbiAgJjpub3QoLm5vbi1yZXNwb25zaXZlKXtcbiAgICBAaW5jbHVkZSBtcXMoJHVudGlsOiB0YWJsZXQpIHtcbiAgICAgIGZvbnQtc2l6ZTogMS41ZW0gIWltcG9ydGFudDtcbiAgICB9XG4gICAgQGluY2x1ZGUgbXFzKCR1bnRpbDogbW9iaWxlKSB7XG4gICAgICBmb250LXNpemU6IDEuM2VtICFpbXBvcnRhbnQ7XG4gICAgfVxuICB9XG59XG5cbmgyIHtcbiAgZm9udC12YXJpYW50OiBzbWFsbC1jYXBzO1xuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2FhYTtcbiAgbWFyZ2luLXRvcDogMjRweDtcbiAgbWFyZ2luLWJvdHRvbTogOHB4O1xuICAmOm5vdCgubm9uLXJlc3BvbnNpdmUpIHtcbiAgICBAaW5jbHVkZSBtcXMoJHVudGlsOiB0YWJsZXQpIHtcbiAgICAgIGZvbnQtc2l6ZTogMS4yZW0gIWltcG9ydGFudDtcbiAgICB9XG4gICAgQGluY2x1ZGUgbXFzKCR1bnRpbDogbW9iaWxlKSB7XG4gICAgICBmb250LXNpemU6IDFlbSAhaW1wb3J0YW50O1xuICAgIH1cbiAgfVxufVxuXG5oMyB7XG4gIG1hcmdpbi10b3A6IDE2cHg7XG4gICY6bm90KC5ub24tcmVzcG9uc2l2ZSl7XG4gICAgQGluY2x1ZGUgbXFzKCR1bnRpbDogdGFibGV0KSB7XG4gICAgICBmb250LXNpemU6IDFlbSAhaW1wb3J0YW50O1xuICAgIH1cbiAgICBAaW5jbHVkZSBtcXMoJHVudGlsOiBtb2JpbGUpIHtcbiAgICAgIGZvbnQtc2l6ZTogMC45ZW0gIWltcG9ydGFudDtcbiAgICB9XG4gIH1cbn1cblxucCxhe1xuICAmOm5vdCgubm9uLXJlc3BvbnNpdmUpIHtcbiAgICBAaW5jbHVkZSBtcXMoJHVudGlsOiB0YWJsZXQ3aW5jaCkge1xuICAgICAgZm9udC1zaXplOiAwLjllbSAhaW1wb3J0YW50O1xuICAgIH1cbiAgfVxufVxuXG46bm90KGxpKSA+IHVsLG9sID4gbGl7XG4gICY6bm90KC5ub24tcmVzcG9uc2l2ZSkge1xuICAgIEBpbmNsdWRlIG1xcygkdW50aWw6IHRhYmxldDdpbmNoKSB7XG4gICAgICBmb250LXNpemU6IDAuOWVtICFpbXBvcnRhbnQ7XG4gICAgfVxuICB9XG59XG5cbmgzLCBoNCwgaDUge1xuICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbiAgLyogZm9yIHdoZW4gc3VwcG9ydGVkLi4uICovXG4gIC13ZWJraXQtdGV4dC1kZWNvcmF0aW9uLWNvbG9yOiAjYWFhO1xuICAtd2Via2l0LXRleHQtZGVjb3JhdGlvbi1za2lwOiB0cnVlO1xuICBtYXJnaW4tYm90dG9tOiA0cHg7XG59XG5cbmgxK3AsaDIrcCxoMytwLGg0K3AsaDUrcCB7XG4gIG1hcmdpbi10b3A6IDA7XG59XG5cbi8vIE1vcmUgcGFkZGluZyBmb3IgdG91Y2ggaW5wdXRcbnNlbGVjdHtcbiAgJjpub3QoLm5vbi1yZXNwb25zaXZlKSB7XG4gICAgQGluY2x1ZGUgdG91Y2gtc2NyZWVuLWRldmljZXMge1xuICAgICAgcGFkZGluZzogOHB4O1xuICAgIH1cbiAgfVxufVxuXG5cbiNjb250ZW50IHVsLCNjb250ZW50IG9sIHtcbiAgbWFyZ2luLXRvcDogOHB4O1xuICBtYXJnaW4tYm90dG9tOiA4cHg7XG59XG5cbiNjb250ZW50IHVsLCNjb250ZW50IG9sIHtcbiAgcGFkZGluZy1sZWZ0OiA4cHg7XG4gIG1hcmdpbi1sZWZ0OiA4cHg7XG59XG5cbi5jbGVhci1yaWdodCB7XG4gIGNsZWFyOiByaWdodDtcbn1cblxuLmNsZWFyLWxlZnQge1xuICBjbGVhcjogbGVmdDtcbn1cblxuLmNsZWFyIHtcbiAgY2xlYXI6IGJvdGg7XG59XG5cbi5oaWRkZW57XG4gIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbn1cblxuLyogQXR0YWNoIHRvIGFueSBcInNsb3cgbG9hZGluZ1wiIGl0ZW1zICovXG4ubG9hZGVyIHtcbiAgQGluY2x1ZGUgbG9hZGVyO1xufVxuXG4ubG9hZGVyLWludmVydGVkIHtcbiAgQGluY2x1ZGUgbG9hZGVyLWludmVydGVkO1xufVxuXG4kbG9hZGVyLXNtYWxsLXNpemU6IDI0cHg7XG4kbG9hZGVyLXNtYWxsLXRoaWNrbmVzczogMnB4O1xuXG4ubG9hZGVyLXNtYWxsIHtcbiAgQGluY2x1ZGUgbG9hZGVyKCRsb2FkZXItc21hbGwtc2l6ZSwgJGxvYWRlci1zbWFsbC10aGlja25lc3MpO1xufVxuXG4ubG9hZGVyLWludmVydGVkLXNtYWxsIHtcbiAgQGluY2x1ZGUgbG9hZGVyLWludmVydGVkKCRsb2FkZXItc21hbGwtc2l6ZSwgJGxvYWRlci1zbWFsbC10aGlja25lc3MpO1xufVxuXG5cbkBtZWRpYSBzY3JlZW4ge1xuICAucHJpbnQtb25seSB7ZGlzcGxheTpub25lICFpbXBvcnRhbnQ7fVxuICAucHJpbnQtb25seS1pbmxpbmUge2Rpc3BsYXk6bm9uZSAhaW1wb3J0YW50O31cbn1cblxuLy8gVG91Y2ggZGV2aWNlc1xuQGluY2x1ZGUgdG91Y2gtc2NyZWVuLWRldmljZXMge1xuICBAaW5jbHVkZSB0b3VjaC1zY3JlZW4tc3R5bGVzO1xufVxuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiogRGV2aWNlLXNwZWNpZmljIG1vZHNcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuYm9keS5vcy1hbmRyb2lkIC5pb3M6bm90KC5vcy1hbHdheXMpLFxuYm9keS5vcy1pb3MgLmFuZHJvaWQ6bm90KC5vcy1hbHdheXMpLFxuYm9keS5vcy1hbmRyb2lkIC5ub3QtYW5kcm9pZDpub3QoLm9zLWFsd2F5cyksXG5ib2R5Lm9zLWlvcyAubm90LWlvczpub3QoLm9zLWFsd2F5cyksXG5ib2R5Lm9zLWlvcyAubm90LWlvcy1vci1hbmRyb2lkOm5vdCgub3MtYWx3YXlzKSxcbmJvZHkub3MtYW5kcm9pZCAubm90LWlvcy1vci1hbmRyb2lkOm5vdCgub3MtYWx3YXlzKXtcbiAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xufVxuXG5cbiIsCgkJIi8vIENvbW1vbiBzdHlsZXNcbkBpbXBvcnQgXCJ2YXJpYWJsZXNcIjtcbkBpbXBvcnQgXCJnZW5lcmFsX21peGluc1wiO1xuQGltcG9ydCBcIm1lZGlhXCI7XG5AaW1wb3J0IFwidG91Y2hcIjtcblxuYm9keXtcbiAgdmlzaWJpbGl0eTogaW5oZXJpdDtcbn1cbiIsCgkJIi8vIFZhcmlhYmxlc1xuXG4kcGFnZS13aWR0aDogOTYwcHg7XG4kcmVzcG9uc2l2ZS1tZW51OiA3NzhweDtcblxuJGdyZXk6ICMyZjJmMmY7XG4kZGFyay1ncmVlbjogIzEzMTtcbiRncmVlbjogIzI4NWQxZTtcbiRibHVlOiAjMTk0MjRhO1xuJGxpZ2h0LWdyZWVuOiByZ2JhKDEyNCwgMTk3LCAxNDksIDAuNjUpO1xuJHJlZDogIzVjMWUxZTtcbiRkYXJrLXJlZDogIzY2MDAwMDtcblxuLy8gQm94IGdyYWRpZW50c1xuJGJveC1HcmFkLUhlaWdodDogMThweDtcblxuJGJveC1CRy1HcmV5OiAkZ3JleTtcbiRib3gtR3JhZC1VcHBlci1Ub3AtR3JleTogIzcxNzE3MTtcbiRib3gtR3JhZC1VcHBlci1Cb3R0b20tR3JleTogIzQyNDE0MTtcbiRib3gtR3JhZC1Mb3dlci1Ub3AtR3JleTogIzQwNDA0MDtcbiRib3gtR3JhZC1Mb3dlci1Cb3R0b20tR3JleTogIzJmMmYyZjtcblxuJGJveC1CRy1HcmVlbjogJGdyZWVuO1xuJGJveC1HcmFkLVVwcGVyLVRvcC1HcmVlbjogIzQ2OTkzNjtcbiRib3gtR3JhZC1VcHBlci1Cb3R0b20tR3JlZW46ICMzMDcwMjU7XG4kYm94LUdyYWQtTG93ZXItVG9wLUdyZWVuOiAjMzA3MjI1O1xuJGJveC1HcmFkLUxvd2VyLUJvdHRvbS1HcmVlbjogIzI4NWQxZTtcblxuJGJveC1CRy1CbHVlOiAjMTk0MjRhO1xuJGJveC1HcmFkLVVwcGVyLVRvcC1CbHVlOiAjMTI2MTY3O1xuJGJveC1HcmFkLVVwcGVyLUJvdHRvbS1CbHVlOiAjMTk0MjRhO1xuJGJveC1HcmFkLUxvd2VyLVRvcC1CbHVlOiAjMTk0MjRhO1xuJGJveC1HcmFkLUxvd2VyLUJvdHRvbS1CbHVlOiAjMTk0MjRhO1xuXG5cbiRib3gtQkctRGFyay1HcmVlbjogJGRhcmstZ3JlZW47XG4kYm94LUdyYWQtVXBwZXItVG9wLURhcmstR3JlZW46ICMyZTgwMmU7XG4kYm94LUdyYWQtVXBwZXItQm90dG9tLURhcmstR3JlZW46ICMxNzQ1MTc7XG4kYm94LUdyYWQtTG93ZXItVG9wLURhcmstR3JlZW46ICMxODQ3MTk7XG4kYm94LUdyYWQtTG93ZXItQm90dG9tLURhcmstR3JlZW46ICMxMTMzMTE7XG5cbiRib3gtQkctUmVkOiAkcmVkO1xuJGJveC1HcmFkLVVwcGVyLVRvcC1SZWQ6ICNhODNiM2I7XG4kYm94LUdyYWQtVXBwZXItQm90dG9tLVJlZDogIzZlMjUyNTtcbiRib3gtR3JhZC1Mb3dlci1Ub3AtUmVkOiAjNzAyNTI1O1xuJGJveC1HcmFkLUxvd2VyLUJvdHRvbS1SZWQ6ICM1YzFlMWU7XG5cbiRtcS1icmVha3BvaW50LW1vYmlsZTogMzIwcHg7XG4kbXEtYnJlYWtwb2ludC10YWJsZXQ3aW5jaDogNjAwcHg7XG4kbXEtYnJlYWtwb2ludC10YWJsZXQ6IDc0MHB4O1xuJG1xLWJyZWFrcG9pbnQtZGVza3RvcDogOTgwcHg7XG4kbXEtYnJlYWtwb2ludC13aWRlOiAxMzAwcHg7XG4kbXEtYnJlYWtwb2ludC1kZXNrdG9wQWQ6IDgxMHB4O1xuJG1xLWJyZWFrcG9pbnQtbW9iaWxlTGFuZHNjYXBlOiA0ODBweDtcbiRtcS1icmVha3BvaW50LW1lZGl1bUxvZ286IDQ0MHB4O1xuJG1xLWJyZWFrcG9pbnQtc21hbGxMb2dvOiAzMjBweDtcbiRtcS1icmVha3BvaW50LWhlYWRlclNvY2lhbEljb25zOiA5NTRweDtcbiRtcS1icmVha3BvaW50LXBhZ2U6ICRwYWdlLXdpZHRoO1xuJG1xLWJyZWFrcG9pbnQtcmVzcG9uc2l2ZU1lbnU6ICRyZXNwb25zaXZlLW1lbnU7XG5cblxuLy8gQnJlYWtwb2ludHNcbiRtcS1icmVha3BvaW50czogKFxuICAgICAgICBtb2JpbGU6ICAkbXEtYnJlYWtwb2ludC1tb2JpbGUsXG4gICAgICAgIHRhYmxldDdpbmNoOiAgJG1xLWJyZWFrcG9pbnQtdGFibGV0N2luY2gsXG4gICAgICAgIHRhYmxldDogICRtcS1icmVha3BvaW50LXRhYmxldCxcbiAgICAgICAgZGVza3RvcDogJG1xLWJyZWFrcG9pbnQtZGVza3RvcCxcbiAgICAgICAgd2lkZTogJG1xLWJyZWFrcG9pbnQtd2lkZSxcblxuICAvLyBUd2Vha3BvaW50c1xuICAgICAgICBkZXNrdG9wQWQ6ICRtcS1icmVha3BvaW50LWRlc2t0b3BBZCxcbiAgICAgICAgbW9iaWxlTGFuZHNjYXBlOiAkbXEtYnJlYWtwb2ludC1tb2JpbGVMYW5kc2NhcGUsXG4gICAgICAgIHNtYWxsTG9nbzogJG1xLWJyZWFrcG9pbnQtc21hbGxMb2dvLFxuICAgICAgICBwYWdlOiAkbXEtYnJlYWtwb2ludC1wYWdlLFxuICAgICAgICByZXNwb25zaXZlTWVudTogJG1xLWJyZWFrcG9pbnQtcmVzcG9uc2l2ZU1lbnUsXG4gICAgICAgIGhlYWRlclNvY2lhbEljb25zOiAkbXEtYnJlYWtwb2ludC1oZWFkZXJTb2NpYWxJY29uc1xuKTtcblxuXG4vLyBUbyBlbmFibGUgc3VwcG9ydCBmb3IgYnJvd3NlcnMgdGhhdCBkbyBub3Qgc3VwcG9ydCBAbWVkaWEgcXVlcmllcyxcbi8vIChJRSA8PSA4LCBGaXJlZm94IDw9IDMsIE9wZXJhIDw9IDkpIHNldCAkbXEtcmVzcG9uc2l2ZSB0byBmYWxzZVxuLy8gQ3JlYXRlIGEgc2VwYXJhdGUgc3R5bGVzaGVldCBzZXJ2ZWQgZXhjbHVzaXZlbHkgdG8gdGhlc2UgYnJvd3NlcnMsXG4vLyBtZWFuaW5nIEBtZWRpYSBxdWVyaWVzIHdpbGwgYmUgcmFzdGVyaXplZCwgcmVseWluZyBvbiB0aGUgY2FzY2FkZSBpdHNlbGZcbiRtcS1yZXNwb25zaXZlOiB0cnVlO1xuXG4vLyBJZiB5b3Ugd2FudCB0byBkaXNwbGF5IHRoZSBjdXJyZW50bHkgYWN0aXZlIGJyZWFrcG9pbnQgaW4gdGhlIHRvcFxuLy8gcmlnaHQgY29ybmVyIG9mIHlvdXIgc2l0ZSBkdXJpbmcgZGV2ZWxvcG1lbnQsIGFkZCB0aGUgYnJlYWtwb2ludHNcbi8vIHRvIHRoaXMgbGlzdCwgb3JkZXJlZCBieSB3aWR0aCwgZS5nLiAobW9iaWxlLCB0YWJsZXQsIGRlc2t0b3ApLlxuLy8kbXEtc2hvdy1icmVha3BvaW50czogKG1vYmlsZSwgbW9iaWxlTGFuZHNjYXBlLCB0YWJsZXQsIGRlc2t0b3AsIHdpZGUpO1xuIiwKCQkiQG1peGluIGlXYWxrTW9iaWxlR3JhZGllbnR7XG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sICNjOWRjZjQgMCUsIzgyYjVlYyAyMiUsIzI5OGFlMyA0NiUsIzNlYzFmNyA3MCUsIzNlYzFmNyAxMDAlKTtcbn1cblxuQG1peGluIGNlbnRyZVl7XG4gIHRvcDogNTAlO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG59XG5cbkBtaXhpbiBjZW50cmVYe1xuICBsZWZ0OiA1MCU7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcbn1cblxuQG1peGluIGNlbnRyZVhZe1xuICB0b3A6IDUwJTtcbiAgbGVmdDogNTAlO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSkgIHRyYW5zbGF0ZVkoLTUwJSk7XG59XG5cbkBtaXhpbiBncmV5X2dyYWRpZW50e1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCByZ2JhKDE4MSwgMTg5LCAyMDAsIDEpIDAlLCByZ2JhKDEzMCwgMTQwLCAxNDksIDEpIDM2JSwgcmdiYSg0MCwgNTIsIDU5LCAxKSAxMDAlKTtcbn1cblxuQG1peGluIGdyZWVuX2dyYWRpZW50e1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCAjNGViOTRlIDAlLCAjMTA5MDEwIDM2JSwgIzA5M2UwOSAxMDAlKTtcbn1cblxuQG1peGluIGJveCgkYmcpe1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkYmc7XG4gIGJvcmRlci1yYWRpdXM6NHB4O1xuICAmLCBhe1xuICAgIGNvbG9yOiB3aGl0ZTtcbiAgfVxufVxuXG5AbWl4aW4gYm94R3JhZGllbnQoJGJnLCAkdXBwZXItdG9wLCAkdXBwZXItYm90dG9tLCAkbG93ZXItdG9wLCAkbG93ZXItYm90dG9tLCAkaGVpZ2h0OiAkYm94LUdyYWQtSGVpZ2h0KXtcbiAgQGluY2x1ZGUgYm94KCRiZyk7XG4gIHotaW5kZXg6IDA7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAmOmJlZm9yZXtcbiAgICBjb250ZW50OicnO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6ICRoZWlnaHQ7XG4gICAgbGVmdDogMDtcbiAgICB0b3A6IDA7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KCR1cHBlci10b3AsICR1cHBlci1ib3R0b20pO1xuICAgIGJvcmRlci1yYWRpdXM6IDRweCA0cHggMCAwO1xuICAgIHotaW5kZXg6IC0xO1xuICB9XG5cbiAgJjphZnRlcntcbiAgICBjb250ZW50OicnO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6ICRoZWlnaHQ7XG4gICAgbGVmdDogMDtcbiAgICB0b3A6ICRoZWlnaHQ7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KCRsb3dlci10b3AsICRsb3dlci1ib3R0b20pO1xuICAgIHotaW5kZXg6IC0xO1xuICB9XG5cbiAgPiAqe1xuICAgIHotaW5kZXg6IDI7XG5cbiAgICBAYXQtcm9vdCB7XG4gICAgICBib2R5Om5vdCguZnVsbHNjcmVlbikgI3smfSB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuQG1peGluIGJveEdyYWRpZW50R3JleXtcbiAgQGluY2x1ZGUgYm94R3JhZGllbnQoJGJveC1CRy1HcmV5LCAkYm94LUdyYWQtVXBwZXItVG9wLUdyZXksICRib3gtR3JhZC1VcHBlci1Cb3R0b20tR3JleSwgJGJveC1HcmFkLUxvd2VyLVRvcC1HcmV5LCAkYm94LUdyYWQtTG93ZXItQm90dG9tLUdyZXkpO1xufVxuXG5AbWl4aW4gYm94R3JhZGllbnRHcmVlbntcbiAgQGluY2x1ZGUgYm94R3JhZGllbnQoJGJveC1CRy1HcmVlbiwgJGJveC1HcmFkLVVwcGVyLVRvcC1HcmVlbiwgJGJveC1HcmFkLVVwcGVyLUJvdHRvbS1HcmVlbiwgJGJveC1HcmFkLUxvd2VyLVRvcC1HcmVlbiwgJGJveC1HcmFkLUxvd2VyLUJvdHRvbS1HcmVlbik7XG59XG5cbkBtaXhpbiBib3hHcmFkaWVudEJsdWV7XG4gIEBpbmNsdWRlIGJveEdyYWRpZW50KCRib3gtQkctQmx1ZSwgJGJveC1HcmFkLVVwcGVyLVRvcC1CbHVlLCAkYm94LUdyYWQtVXBwZXItQm90dG9tLUJsdWUsICRib3gtR3JhZC1Mb3dlci1Ub3AtQmx1ZSwgJGJveC1HcmFkLUxvd2VyLUJvdHRvbS1CbHVlKTtcbn1cblxuQG1peGluIGJveEdyYWRpZW50RGFya0dyZWVue1xuICBAaW5jbHVkZSBib3hHcmFkaWVudCgkYm94LUJHLURhcmstR3JlZW4sICRib3gtR3JhZC1VcHBlci1Ub3AtRGFyay1HcmVlbiwgJGJveC1HcmFkLVVwcGVyLUJvdHRvbS1EYXJrLUdyZWVuLCAkYm94LUdyYWQtTG93ZXItVG9wLURhcmstR3JlZW4sICRib3gtR3JhZC1Mb3dlci1Cb3R0b20tRGFyay1HcmVlbik7XG59XG5cbkBtaXhpbiBib3hHcmFkaWVudFJlZHtcbiAgQGluY2x1ZGUgYm94R3JhZGllbnQoJGJveC1CRy1SZWQsICRib3gtR3JhZC1VcHBlci1Ub3AtUmVkLCAkYm94LUdyYWQtVXBwZXItQm90dG9tLVJlZCwgJGJveC1HcmFkLUxvd2VyLVRvcC1SZWQsICRib3gtR3JhZC1Mb3dlci1Cb3R0b20tUmVkKTtcbn1cblxuQG1peGluIGJveFNoYWRvd3tcbiAgYm94LXNoYWRvdzogNHB4IDRweCA0cHggI2JiYjtcbn1cblxuQG1peGluIGJveHl7XG4gIEBpbmNsdWRlIGJveEdyYWRpZW50R3JleTtcbiAgQGluY2x1ZGUgYm94U2hhZG93O1xuICBjb2xvcjogI2VlZTtcblxuICBhLCBzdHJvbmcge1xuICAgIGNvbG9yOiB3aGl0ZTtcbiAgfVxuXG4gIGgyIHtcbiAgICBib3JkZXI6IG5vbmU7XG4gICAgbWFyZ2luOiAwO1xuICB9XG59XG5cbkBtaXhpbiBsaWdodEdyZWVuQm94e1xuICBAaW5jbHVkZSBib3goJGxpZ2h0LWdyZWVuKTtcbiAgJixhe1xuICAgIGNvbG9yOiBibGFjaztcbiAgfVxufVxuXG4iLAoJCSJcbi8qKlxuICogQnJlYWtwb2ludHNcbiAqL1xuXG5AaW1wb3J0IFwibXFcIjtcblxuXG5AbWl4aW4gbXFzKCRmcm9tOiBmYWxzZSwgJHVudGlsOiBmYWxzZSl7XG4gIEBpbmNsdWRlIG1xKCRmcm9tLCAkdW50aWwsICRtZWRpYS10eXBlOiBzY3JlZW4pIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG4vKipcbiAqIElucHV0IGNhcGFiaWxpdGllc1xuICovXG5cbi8vIHNtYXJ0cGhvbmVzIGFuZCB0YWJsZXRzXG5AbWl4aW4gdG91Y2gtc2NyZWVuLWlucHV0IHtcbiAgQG1lZGlhIChwb2ludGVyOiBjb2Fyc2UpXG4gIGFuZCAoaG92ZXI6IG5vbmUpe1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbi8vIE1vdXNlIG9yIHRvdWNoIHBhZFxuQG1peGluIG1vdXNlLWlucHV0IHtcbiAgQG1lZGlhIChwb2ludGVyOiBmaW5lKVxuICBhbmQgKGhvdmVyOiBob3Zlcil7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuLy8gU2hvdyBmb3IgdG91Y2ggc2NyZWVuc1xuLy8gYW5kIHVwIHVudGlsIHRhYmxldCBkZXZpY2Ugd2lkdGggZm9yIHRhYmxldHMgbm90IHN1cHBvcnRpbmcgaW5wdXQgbWVkaWEgcXVlcmllcyBpZS4gb2xkIEFuZHJvaWQgNC54XG5AbWl4aW4gdG91Y2gtc2NyZWVuLWRldmljZXN7XG4gIEBpbmNsdWRlIHRvdWNoLXNjcmVlbi1pbnB1dCB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbiAgQGluY2x1ZGUgbXFzKCR1bnRpbDogcmVzcG9uc2l2ZU1lbnUpIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG4vLyBOaW50ZW5kbyBXaWkgY29udHJvbGxlciwgS2luZWN0LCBldGMuXG5AbWl4aW4gY29uc29sZS1pbnB1dCB7XG4gIEBtZWRpYSAocG9pbnRlcjogY29hcnNlKVxuICBhbmQgKGhvdmVyOiBob3Zlcil7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuLy8gc3R5bHVzLWJhc2VkIHNjcmVlbnMgKENpbnRpcSwgV2Fjb20sIGV0YylcbkBtaXhpbiBjb25zb2xlLWlucHV0IHtcbiAgQG1lZGlhIChwb2ludGVyOiBmaW5lKVxuICBhbmQgKGhvdmVyOiBub25lKXtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG4vLyBSZXRpbmEgZGlzcGxheXMgKDJ4KVxuQG1peGluIHJldGluYSB7XG4gIEBtZWRpYSAobWluLS1tb3otZGV2aWNlLXBpeGVsLXJhdGlvOiAxLjUpLCgtby1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAzLzIpLFxuICAoLXdlYmtpdC1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAxLjUpLChtaW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAxLjUpLChtaW4tcmVzb2x1dGlvbjogMS41ZHBweCkge1xuICAgIEBjb250ZW50O1xuICB9XG59XG4iLAoJCSJAY2hhcnNldCBcIlVURi04XCI7IC8vIEZpeGVzIGFuIGlzc3VlIHdoZXJlIFJ1YnkgbG9jYWxlIGlzIG5vdCBzZXQgcHJvcGVybHlcbiAgICAgICAgICAgICAgICAgIC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vc2Fzcy1tcS9zYXNzLW1xL3B1bGwvMTBcblxuLy8vIEJhc2UgZm9udCBzaXplIG9uIHRoZSBgPGJvZHk+YCBlbGVtZW50XG4vLy8gQHR5cGUgTnVtYmVyICh1bml0KVxuJG1xLWJhc2UtZm9udC1zaXplOiAxNnB4ICFkZWZhdWx0O1xuXG4vLy8gUmVzcG9uc2l2ZSBtb2RlXG4vLy9cbi8vLyBTZXQgdG8gYGZhbHNlYCB0byBlbmFibGUgc3VwcG9ydCBmb3IgYnJvd3NlcnMgdGhhdCBkbyBub3Qgc3VwcG9ydCBAbWVkaWEgcXVlcmllcyxcbi8vLyAoSUUgPD0gOCwgRmlyZWZveCA8PSAzLCBPcGVyYSA8PSA5KVxuLy8vXG4vLy8gWW91IGNvdWxkIGNyZWF0ZSBhIHN0eWxlc2hlZXQgc2VydmVkIGV4Y2x1c2l2ZWx5IHRvIG9sZGVyIGJyb3dzZXJzLFxuLy8vIHdoZXJlIEBtZWRpYSBxdWVyaWVzIGFyZSByYXN0ZXJpemVkXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzXG4vLy8gIC8vIG9sZC1pZS5zY3NzXG4vLy8gICRtcS1yZXNwb25zaXZlOiBmYWxzZTtcbi8vLyAgQGltcG9ydCAnbWFpbic7IC8vIEBtZWRpYSBxdWVyaWVzIGluIHRoaXMgZmlsZSB3aWxsIGJlIHJhc3Rlcml6ZWQgdXAgdG8gJG1xLXN0YXRpYy1icmVha3BvaW50XG4vLy8gICAgICAgICAgICAgICAgICAgLy8gbGFyZ2VyIGJyZWFrcG9pbnRzIHdpbGwgYmUgaWdub3JlZFxuLy8vXG4vLy8gQHR5cGUgQm9vbGVhblxuLy8vIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9zYXNzLW1xL3Nhc3MtbXEjcmVzcG9uc2l2ZS1tb2RlLW9mZiBEaXNhYmxlZCByZXNwb25zaXZlIG1vZGUgZG9jdW1lbnRhdGlvblxuJG1xLXJlc3BvbnNpdmU6IHRydWUgIWRlZmF1bHQ7XG5cbi8vLyBCcmVha3BvaW50IGxpc3Rcbi8vL1xuLy8vIE5hbWUgeW91ciBicmVha3BvaW50cyBpbiBhIHdheSB0aGF0IGNyZWF0ZXMgYSB1YmlxdWl0b3VzIGxhbmd1YWdlXG4vLy8gYWNyb3NzIHRlYW0gbWVtYmVycy4gSXQgd2lsbCBpbXByb3ZlIGNvbW11bmljYXRpb24gYmV0d2VlblxuLy8vIHN0YWtlaG9sZGVycywgZGVzaWduZXJzLCBkZXZlbG9wZXJzLCBhbmQgdGVzdGVycy5cbi8vL1xuLy8vIEB0eXBlIE1hcFxuLy8vIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9zYXNzLW1xL3Nhc3MtbXEjc2VlaW5nLXRoZS1jdXJyZW50bHktYWN0aXZlLWJyZWFrcG9pbnQgRnVsbCBkb2N1bWVudGF0aW9uIGFuZCBleGFtcGxlc1xuJG1xLWJyZWFrcG9pbnRzOiAoXG4gICAgbW9iaWxlOiAgMzIwcHgsXG4gICAgdGFibGV0OiAgNzQwcHgsXG4gICAgZGVza3RvcDogOTgwcHgsXG4gICAgd2lkZTogICAgMTMwMHB4XG4pICFkZWZhdWx0O1xuXG4vLy8gU3RhdGljIGJyZWFrcG9pbnQgKGZvciBmaXhlZC13aWR0aCBsYXlvdXRzKVxuLy8vXG4vLy8gRGVmaW5lIHRoZSBicmVha3BvaW50IGZyb20gJG1xLWJyZWFrcG9pbnRzIHRoYXQgc2hvdWxkXG4vLy8gYmUgdXNlZCBhcyB0aGUgdGFyZ2V0IHdpZHRoIGZvciB0aGUgZml4ZWQtd2lkdGggbGF5b3V0XG4vLy8gKGkuZS4gd2hlbiAkbXEtcmVzcG9uc2l2ZSBpcyBzZXQgdG8gJ2ZhbHNlJykgaW4gYSBvbGQtaWUuc2Nzc1xuLy8vXG4vLy8gQGV4YW1wbGUgc2Nzc1xuLy8vICAvLyB0YWJsZXQtb25seS5zY3NzXG4vLy8gIC8vXG4vLy8gIC8vIElnbm9yZSBhbGwgc3R5bGVzIGFib3ZlIHRhYmxldCBicmVha3BvaW50LFxuLy8vICAvLyBhbmQgZml4IHRoZSBzdHlsZXMgKGUuZy4gbGF5b3V0KSBhdCB0YWJsZXQgd2lkdGhcbi8vLyAgJG1xLXJlc3BvbnNpdmU6IGZhbHNlO1xuLy8vICAkbXEtc3RhdGljLWJyZWFrcG9pbnQ6IHRhYmxldDtcbi8vLyAgQGltcG9ydCAnbWFpbic7IC8vIEBtZWRpYSBxdWVyaWVzIGluIHRoaXMgZmlsZSB3aWxsIGJlIHJhc3Rlcml6ZWQgdXAgdG8gdGFibGV0XG4vLy8gICAgICAgICAgICAgICAgICAgLy8gbGFyZ2VyIGJyZWFrcG9pbnRzIHdpbGwgYmUgaWdub3JlZFxuLy8vXG4vLy8gQHR5cGUgU3RyaW5nXG4vLy8gQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL3Nhc3MtbXEvc2Fzcy1tcSNhZGRpbmctY3VzdG9tLWJyZWFrcG9pbnRzIEZ1bGwgZG9jdW1lbnRhdGlvbiBhbmQgZXhhbXBsZXNcbiRtcS1zdGF0aWMtYnJlYWtwb2ludDogZGVza3RvcCAhZGVmYXVsdDtcblxuLy8vIFNob3cgYnJlYWtwb2ludHMgaW4gdGhlIHRvcCByaWdodCBjb3JuZXJcbi8vL1xuLy8vIElmIHlvdSB3YW50IHRvIGRpc3BsYXkgdGhlIGN1cnJlbnRseSBhY3RpdmUgYnJlYWtwb2ludCBpbiB0aGUgdG9wXG4vLy8gcmlnaHQgY29ybmVyIG9mIHlvdXIgc2l0ZSBkdXJpbmcgZGV2ZWxvcG1lbnQsIGFkZCB0aGUgYnJlYWtwb2ludHNcbi8vLyB0byB0aGlzIGxpc3QsIG9yZGVyZWQgYnkgd2lkdGgsIGUuZy4gKG1vYmlsZSwgdGFibGV0LCBkZXNrdG9wKS5cbi8vL1xuLy8vIEB0eXBlIG1hcFxuJG1xLXNob3ctYnJlYWtwb2ludHM6ICgpICFkZWZhdWx0O1xuXG4vLy8gQ3VzdG9taXplIHRoZSBtZWRpYSB0eXBlIChlLmcuIGBAbWVkaWEgc2NyZWVuYCBvciBgQG1lZGlhIHByaW50YClcbi8vLyBCeSBkZWZhdWx0IHNhc3MtbXEgdXNlcyBhbiBcImFsbFwiIG1lZGlhIHR5cGUgKGBAbWVkaWEgYWxsIGFuZCDigKZgKVxuLy8vXG4vLy8gQHR5cGUgU3RyaW5nXG4vLy8gQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL3Nhc3MtbXEvc2Fzcy1tcSNjaGFuZ2luZy1tZWRpYS10eXBlIEZ1bGwgZG9jdW1lbnRhdGlvbiBhbmQgZXhhbXBsZXNcbiRtcS1tZWRpYS10eXBlOiBhbGwgIWRlZmF1bHQ7XG5cbi8vLyBDb252ZXJ0IHBpeGVscyB0byBlbXNcbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfSAkcHggLSB2YWx1ZSB0byBjb252ZXJ0XG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRiYXNlLWZvbnQtc2l6ZSAoJG1xLWJhc2UtZm9udC1zaXplKSAtIGA8Ym9keT5gIGZvbnQgc2l6ZVxuLy8vXG4vLy8gQGV4YW1wbGUgc2Nzc1xuLy8vICAkZm9udC1zaXplLWluLWVtczogbXEtcHgyZW0oMTZweCk7XG4vLy8gIHAgeyBmb250LXNpemU6IG1xLXB4MmVtKDE2cHgpOyB9XG4vLy9cbi8vLyBAcmVxdWlyZXMgJG1xLWJhc2UtZm9udC1zaXplXG4vLy8gQHJldHVybnMge051bWJlcn1cbkBmdW5jdGlvbiBtcS1weDJlbSgkcHgsICRiYXNlLWZvbnQtc2l6ZTogJG1xLWJhc2UtZm9udC1zaXplKSB7XG4gICAgQGlmIHVuaXRsZXNzKCRweCkge1xuICAgICAgICBAd2FybiBcIkFzc3VtaW5nICN7JHB4fSB0byBiZSBpbiBwaXhlbHMsIGF0dGVtcHRpbmcgdG8gY29udmVydCBpdCBpbnRvIHBpeGVscy5cIjtcbiAgICAgICAgQHJldHVybiBtcS1weDJlbSgkcHggKiAxcHgsICRiYXNlLWZvbnQtc2l6ZSk7XG4gICAgfSBAZWxzZSBpZiB1bml0KCRweCkgPT0gZW0ge1xuICAgICAgICBAcmV0dXJuICRweDtcbiAgICB9XG4gICAgQHJldHVybiAoJHB4IC8gJGJhc2UtZm9udC1zaXplKSAqIDFlbTtcbn1cblxuLy8vIEdldCBhIGJyZWFrcG9pbnQncyB3aWR0aFxuLy8vXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRuYW1lIC0gTmFtZSBvZiB0aGUgYnJlYWtwb2ludC4gT25lIG9mICRtcS1icmVha3BvaW50c1xuLy8vXG4vLy8gQGV4YW1wbGUgc2Nzc1xuLy8vICAkdGFibGV0LXdpZHRoOiBtcS1nZXQtYnJlYWtwb2ludC13aWR0aCh0YWJsZXQpO1xuLy8vICBAbWVkaWEgKG1pbi13aWR0aDogbXEtZ2V0LWJyZWFrcG9pbnQtd2lkdGgoZGVza3RvcCkpIHt9XG4vLy9cbi8vLyBAcmVxdWlyZXMge1ZhcmlhYmxlfSAkbXEtYnJlYWtwb2ludHNcbi8vL1xuLy8vIEByZXR1cm5zIHtOdW1iZXJ9IFZhbHVlIGluIHBpeGVsc1xuQGZ1bmN0aW9uIG1xLWdldC1icmVha3BvaW50LXdpZHRoKCRuYW1lLCAkYnJlYWtwb2ludHM6ICRtcS1icmVha3BvaW50cykge1xuICAgIEBpZiBtYXAtaGFzLWtleSgkYnJlYWtwb2ludHMsICRuYW1lKSB7XG4gICAgICAgIEByZXR1cm4gbWFwLWdldCgkYnJlYWtwb2ludHMsICRuYW1lKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICAgQHdhcm4gXCJCcmVha3BvaW50ICN7JG5hbWV9IHdhc24ndCBmb3VuZCBpbiAkYnJlYWtwb2ludHMuXCI7XG4gICAgfVxufVxuXG4vLy8gTWVkaWEgUXVlcnkgbWl4aW5cbi8vL1xuLy8vIEBwYXJhbSB7U3RyaW5nIHwgQm9vbGVhbn0gJGZyb20gKGZhbHNlKSAtIE9uZSBvZiAkbXEtYnJlYWtwb2ludHNcbi8vLyBAcGFyYW0ge1N0cmluZyB8IEJvb2xlYW59ICR1bnRpbCAoZmFsc2UpIC0gT25lIG9mICRtcS1icmVha3BvaW50c1xuLy8vIEBwYXJhbSB7U3RyaW5nIHwgQm9vbGVhbn0gJGFuZCAoZmFsc2UpIC0gQWRkaXRpb25hbCBtZWRpYSBxdWVyeSBwYXJhbWV0ZXJzXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRtZWRpYS10eXBlICgkbXEtbWVkaWEtdHlwZSkgLSBNZWRpYSB0eXBlOiBzY3JlZW4sIHByaW504oCmXG4vLy9cbi8vLyBAaWdub3JlIFVuZG9jdW1lbnRlZCBBUEksIGZvciBhZHZhbmNlZCB1c2Ugb25seTpcbi8vLyBAaWdub3JlIEBwYXJhbSB7TWFwfSAkYnJlYWtwb2ludHMgKCRtcS1icmVha3BvaW50cylcbi8vLyBAaWdub3JlIEBwYXJhbSB7U3RyaW5nfSAkc3RhdGljLWJyZWFrcG9pbnQgKCRtcS1zdGF0aWMtYnJlYWtwb2ludClcbi8vL1xuLy8vIEBjb250ZW50IHN0eWxpbmcgcnVsZXMsIHdyYXBwZWQgaW50byBhIEBtZWRpYSBxdWVyeSB3aGVuICRyZXNwb25zaXZlIGlzIHRydWVcbi8vL1xuLy8vIEByZXF1aXJlcyB7VmFyaWFibGV9ICRtcS1tZWRpYS10eXBlXG4vLy8gQHJlcXVpcmVzIHtWYXJpYWJsZX0gJG1xLWJyZWFrcG9pbnRzXG4vLy8gQHJlcXVpcmVzIHtWYXJpYWJsZX0gJG1xLXN0YXRpYy1icmVha3BvaW50XG4vLy8gQHJlcXVpcmVzIHtmdW5jdGlvbn0gbXEtcHgyZW1cbi8vLyBAcmVxdWlyZXMge2Z1bmN0aW9ufSBtcS1nZXQtYnJlYWtwb2ludC13aWR0aFxuLy8vXG4vLy8gQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL3Nhc3MtbXEvc2Fzcy1tcSNyZXNwb25zaXZlLW1vZGUtb24tZGVmYXVsdCBGdWxsIGRvY3VtZW50YXRpb24gYW5kIGV4YW1wbGVzXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzXG4vLy8gIC5lbGVtZW50IHtcbi8vLyAgICBAaW5jbHVkZSBtcSgkZnJvbTogbW9iaWxlKSB7XG4vLy8gICAgICBjb2xvcjogcmVkO1xuLy8vICAgIH1cbi8vLyAgICBAaW5jbHVkZSBtcSgkdW50aWw6IHRhYmxldCkge1xuLy8vICAgICAgY29sb3I6IGJsdWU7XG4vLy8gICAgfVxuLy8vICAgIEBpbmNsdWRlIG1xKG1vYmlsZSwgdGFibGV0KSB7XG4vLy8gICAgICBjb2xvcjogZ3JlZW47XG4vLy8gICAgfVxuLy8vICAgIEBpbmNsdWRlIG1xKCRmcm9tOiB0YWJsZXQsICRhbmQ6ICcob3JpZW50YXRpb246IGxhbmRzY2FwZSknKSB7XG4vLy8gICAgICBjb2xvcjogdGVhbDtcbi8vLyAgICB9XG4vLy8gICAgQGluY2x1ZGUgbXEoOTUwcHgpIHtcbi8vLyAgICAgIGNvbG9yOiBob3RwaW5rO1xuLy8vICAgIH1cbi8vLyAgICBAaW5jbHVkZSBtcSh0YWJsZXQsICRtZWRpYS10eXBlOiBzY3JlZW4pIHtcbi8vLyAgICAgIGNvbG9yOiBob3RwaW5rO1xuLy8vICAgIH1cbi8vLyAgICAvLyBBZHZhbmNlZCB1c2U6XG4vLy8gICAgJG15LWJyZWFrcG9pbnRzOiAoTDogOTAwcHgsIFhMOiAxMjAwcHgpO1xuLy8vICAgIEBpbmNsdWRlIG1xKEwsICRicmVha3BvaW50czogJG15LWJyZWFrcG9pbnRzLCAkc3RhdGljLWJyZWFrcG9pbnQ6IEwpIHtcbi8vLyAgICAgIGNvbG9yOiBob3RwaW5rO1xuLy8vICAgIH1cbi8vLyAgfVxuQG1peGluIG1xKFxuICAgICRmcm9tOiBmYWxzZSxcbiAgICAkdW50aWw6IGZhbHNlLFxuICAgICRhbmQ6IGZhbHNlLFxuICAgICRtZWRpYS10eXBlOiAkbXEtbWVkaWEtdHlwZSxcbiAgICAkYnJlYWtwb2ludHM6ICRtcS1icmVha3BvaW50cyxcbiAgICAkcmVzcG9uc2l2ZTogJG1xLXJlc3BvbnNpdmUsXG4gICAgJHN0YXRpYy1icmVha3BvaW50OiAkbXEtc3RhdGljLWJyZWFrcG9pbnRcbikge1xuICAgICRtaW4td2lkdGg6IDA7XG4gICAgJG1heC13aWR0aDogMDtcbiAgICAkbWVkaWEtcXVlcnk6ICcnO1xuXG4gICAgLy8gRnJvbTogdGhpcyBicmVha3BvaW50IChpbmNsdXNpdmUpXG4gICAgQGlmICRmcm9tIHtcbiAgICAgICAgQGlmIHR5cGUtb2YoJGZyb20pID09IG51bWJlciB7XG4gICAgICAgICAgICAkbWluLXdpZHRoOiBtcS1weDJlbSgkZnJvbSk7XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgJG1pbi13aWR0aDogbXEtcHgyZW0obXEtZ2V0LWJyZWFrcG9pbnQtd2lkdGgoJGZyb20sICRicmVha3BvaW50cykpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gVW50aWw6IHRoYXQgYnJlYWtwb2ludCAoZXhjbHVzaXZlKVxuICAgIEBpZiAkdW50aWwge1xuICAgICAgICBAaWYgdHlwZS1vZigkdW50aWwpID09IG51bWJlciB7XG4gICAgICAgICAgICAkbWF4LXdpZHRoOiBtcS1weDJlbSgkdW50aWwpO1xuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICRtYXgtd2lkdGg6IG1xLXB4MmVtKG1xLWdldC1icmVha3BvaW50LXdpZHRoKCR1bnRpbCwgJGJyZWFrcG9pbnRzKSkgLSAuMDFlbTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFJlc3BvbnNpdmUgc3VwcG9ydCBpcyBkaXNhYmxlZCwgcmFzdGVyaXplIHRoZSBvdXRwdXQgb3V0c2lkZSBAbWVkaWEgYmxvY2tzXG4gICAgLy8gVGhlIGJyb3dzZXIgd2lsbCByZWx5IG9uIHRoZSBjYXNjYWRlIGl0c2VsZi5cbiAgICBAaWYgJHJlc3BvbnNpdmUgPT0gZmFsc2Uge1xuICAgICAgICAkc3RhdGljLWJyZWFrcG9pbnQtd2lkdGg6IG1xLWdldC1icmVha3BvaW50LXdpZHRoKCRzdGF0aWMtYnJlYWtwb2ludCwgJGJyZWFrcG9pbnRzKTtcbiAgICAgICAgJHRhcmdldC13aWR0aDogbXEtcHgyZW0oJHN0YXRpYy1icmVha3BvaW50LXdpZHRoKTtcblxuICAgICAgICAvLyBPdXRwdXQgb25seSBydWxlcyB0aGF0IHN0YXJ0IGF0IG9yIHNwYW4gb3VyIHRhcmdldCB3aWR0aFxuICAgICAgICBAaWYgKFxuICAgICAgICAgICAgJGFuZCA9PSBmYWxzZVxuICAgICAgICAgICAgYW5kICRtaW4td2lkdGggPD0gJHRhcmdldC13aWR0aFxuICAgICAgICAgICAgYW5kIChcbiAgICAgICAgICAgICAgICAkdW50aWwgPT0gZmFsc2Ugb3IgJG1heC13aWR0aCA+PSAkdGFyZ2V0LXdpZHRoXG4gICAgICAgICAgICApXG4gICAgICAgICkge1xuICAgICAgICAgICAgQGNvbnRlbnQ7XG4gICAgICAgIH1cbiAgICB9IEBlbHNlIHsgLy8gUmVzcG9uc2l2ZSBzdXBwb3J0IGlzIGVuYWJsZWQsIG91dHB1dCBydWxlcyBpbnNpZGUgQG1lZGlhIHF1ZXJpZXNcbiAgICAgICAgQGlmICRtaW4td2lkdGggIT0gMCB7ICRtZWRpYS1xdWVyeTogJyN7JG1lZGlhLXF1ZXJ5fSBhbmQgKG1pbi13aWR0aDogI3skbWluLXdpZHRofSknOyB9XG4gICAgICAgIEBpZiAkbWF4LXdpZHRoICE9IDAgeyAkbWVkaWEtcXVlcnk6ICcjeyRtZWRpYS1xdWVyeX0gYW5kIChtYXgtd2lkdGg6ICN7JG1heC13aWR0aH0pJzsgfVxuICAgICAgICBAaWYgJGFuZCAgICAgICAgICAgIHsgJG1lZGlhLXF1ZXJ5OiAnI3skbWVkaWEtcXVlcnl9IGFuZCAjeyRhbmR9JzsgfVxuXG4gICAgICAgIC8vIFJlbW92ZSB1bm5lY2Vzc2FyeSBtZWRpYSBxdWVyeSBwcmVmaXggJ2FsbCBhbmQgJ1xuICAgICAgICBAaWYgKCRtZWRpYS10eXBlID09ICdhbGwnIGFuZCAkbWVkaWEtcXVlcnkgIT0gJycpIHtcbiAgICAgICAgICAgICRtZWRpYS10eXBlOiAnJztcbiAgICAgICAgICAgICRtZWRpYS1xdWVyeTogc3RyLXNsaWNlKHVucXVvdGUoJG1lZGlhLXF1ZXJ5KSwgNik7XG4gICAgICAgIH1cblxuICAgICAgICBAbWVkaWEgI3skbWVkaWEtdHlwZSArICRtZWRpYS1xdWVyeX0ge1xuICAgICAgICAgICAgQGNvbnRlbnQ7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vLyBBZGQgYSBicmVha3BvaW50XG4vLy9cbi8vLyBAcGFyYW0ge1N0cmluZ30gJG5hbWUgLSBOYW1lIG9mIHRoZSBicmVha3BvaW50XG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICR3aWR0aCAtIFdpZHRoIG9mIHRoZSBicmVha3BvaW50XG4vLy9cbi8vLyBAcmVxdWlyZXMge1ZhcmlhYmxlfSAkbXEtYnJlYWtwb2ludHNcbi8vL1xuLy8vIEBleGFtcGxlIHNjc3Ncbi8vLyAgQGluY2x1ZGUgbXEtYWRkLWJyZWFrcG9pbnQodHZzY3JlZW4sIDE5MjBweCk7XG4vLy8gIEBpbmNsdWRlIG1xKHR2c2NyZWVuKSB7fVxuQG1peGluIG1xLWFkZC1icmVha3BvaW50KCRuYW1lLCAkd2lkdGgpIHtcbiAgICAkbmV3LWJyZWFrcG9pbnQ6ICgkbmFtZTogJHdpZHRoKTtcbiAgICAkbXEtYnJlYWtwb2ludHM6IG1hcC1tZXJnZSgkbXEtYnJlYWtwb2ludHMsICRuZXctYnJlYWtwb2ludCkgIWdsb2JhbDtcbn1cblxuLy8vIFNob3cgdGhlIGFjdGl2ZSBicmVha3BvaW50IGluIHRoZSB0b3AgcmlnaHQgY29ybmVyIG9mIHRoZSB2aWV3cG9ydFxuLy8vIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9zYXNzLW1xL3Nhc3MtbXEjc2VlaW5nLXRoZS1jdXJyZW50bHktYWN0aXZlLWJyZWFrcG9pbnRcbi8vL1xuLy8vIEBwYXJhbSB7TGlzdH0gJHNob3ctYnJlYWtwb2ludHMgKCRtcS1zaG93LWJyZWFrcG9pbnRzKSAtIExpc3Qgb2YgYnJlYWtwb2ludHMgdG8gc2hvdyBpbiB0aGUgdG9wIHJpZ2h0IGNvcm5lclxuLy8vIEBwYXJhbSB7TWFwfSAkYnJlYWtwb2ludHMgKCRtcS1icmVha3BvaW50cykgLSBCcmVha3BvaW50IG5hbWVzIGFuZCBzaXplc1xuLy8vXG4vLy8gQHJlcXVpcmVzIHtWYXJpYWJsZX0gJG1xLWJyZWFrcG9pbnRzXG4vLy8gQHJlcXVpcmVzIHtWYXJpYWJsZX0gJG1xLXNob3ctYnJlYWtwb2ludHNcbi8vL1xuLy8vIEBleGFtcGxlIHNjc3Ncbi8vLyAgLy8gU2hvdyBicmVha3BvaW50cyB1c2luZyBnbG9iYWwgc2V0dGluZ3Ncbi8vLyAgQGluY2x1ZGUgbXEtc2hvdy1icmVha3BvaW50cztcbi8vL1xuLy8vICAvLyBTaG93IGJyZWFrcG9pbnRzIHVzaW5nIGN1c3RvbSBzZXR0aW5nc1xuLy8vICBAaW5jbHVkZSBtcS1zaG93LWJyZWFrcG9pbnRzKChMLCBYTCksIChTOiAzMDBweCwgTDogODAwcHgsIFhMOiAxMjAwcHgpKTtcbkBtaXhpbiBtcS1zaG93LWJyZWFrcG9pbnRzKCRzaG93LWJyZWFrcG9pbnRzOiAkbXEtc2hvdy1icmVha3BvaW50cywgJGJyZWFrcG9pbnRzOiAkbXEtYnJlYWtwb2ludHMpIHtcbiAgICBib2R5OmJlZm9yZSB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNGQ0Y4RTM7XG4gICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjRkJFRUQ1O1xuICAgICAgICBib3JkZXItbGVmdDogMXB4IHNvbGlkICNGQkVFRDU7XG4gICAgICAgIGNvbG9yOiAjQzA5ODUzO1xuICAgICAgICBmb250OiBzbWFsbC1jYXB0aW9uO1xuICAgICAgICBwYWRkaW5nOiAzcHggNnB4O1xuICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICAgICAgcG9zaXRpb246IGZpeGVkO1xuICAgICAgICByaWdodDogMDtcbiAgICAgICAgdG9wOiAwO1xuICAgICAgICB6LWluZGV4OiAxMDA7XG5cbiAgICAgICAgLy8gTG9vcCB0aHJvdWdoIHRoZSBicmVha3BvaW50cyB0aGF0IHNob3VsZCBiZSBzaG93blxuICAgICAgICBAZWFjaCAkc2hvdy1icmVha3BvaW50IGluICRzaG93LWJyZWFrcG9pbnRzIHtcbiAgICAgICAgICAgICR3aWR0aDogbXEtZ2V0LWJyZWFrcG9pbnQtd2lkdGgoJHNob3ctYnJlYWtwb2ludCwgJGJyZWFrcG9pbnRzKTtcbiAgICAgICAgICAgIEBpbmNsdWRlIG1xKCRzaG93LWJyZWFrcG9pbnQsICRicmVha3BvaW50czogJGJyZWFrcG9pbnRzKSB7XG4gICAgICAgICAgICAgICAgY29udGVudDogXCIjeyRzaG93LWJyZWFrcG9pbnR9IOKJpSAjeyR3aWR0aH0gKCN7bXEtcHgyZW0oJHdpZHRoKX0pXCI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbkBpZiBsZW5ndGgoJG1xLXNob3ctYnJlYWtwb2ludHMpID4gMCB7XG4gICAgQGluY2x1ZGUgbXEtc2hvdy1icmVha3BvaW50cztcbn1cbiIsCgkJIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4qIFRvdWNoIGRldmljZXNcclxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXHJcbkBpbXBvcnQgXCJnZW5lcmFsX21peGluc1wiO1xyXG5cclxuQG1peGluIGJveC1zaGFkb3d7XHJcbiAgYm94LXNoYWRvdzogMCAxcHggM3B4IHJnYmEoMCwwLDAsLjE1KTtcclxufVxyXG5cclxuQG1peGluIHRvdWNoLXNjcmVlbi1zdHlsZXMge1xyXG5cclxuICAvLyBCdXR0b25zXHJcbiAgW2RhdGEtcm9sZT1cImJ1dHRvblwiXTpub3QoLm5vbi1yZXNwb25zaXZlKXtcclxuICAgIEBpbmNsdWRlIGJveC1zaGFkb3c7XHJcblxyXG4gICAgY29sb3I6ICMzMzMgIWltcG9ydGFudDtcclxuICAgIGJhY2tncm91bmQ6ICNlZWU7XHJcblxyXG4gICAgYm9yZGVyLWNvbG9yOiAjZGRkO1xyXG4gICAgYm9yZGVyLXdpZHRoOiAxcHg7XHJcbiAgICBib3JkZXItc3R5bGU6IHNvbGlkO1xyXG4gICAgYm9yZGVyLXJhZGl1czogNXB4O1xyXG5cclxuXHJcbiAgICBtYXJnaW46IC41ZW0gMDtcclxuICAgIHBhZGRpbmc6IC43ZW0gMWVtO1xyXG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG5cclxuICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xyXG4gICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgdXNlci1zZWxlY3Q6IG5vbmU7XHJcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcclxuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcclxuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xyXG4gICAgZm9udC1zaXplOiAxNnB4O1xyXG5cclxuICAgICY6aG92ZXIsICY6YWN0aXZle1xyXG4gICAgICBiYWNrZ3JvdW5kOiAjZThmMGZmO1xyXG4gICAgfVxyXG5cclxuICAgICZbZGF0YS1pY29uXXtcclxuICAgICAgcGFkZGluZy1sZWZ0OiAzMnB4O1xyXG4gICAgICBwYWRkaW5nLXJpZ2h0OiA4cHg7XHJcbiAgICAgIGl7XHJcbiAgICAgICAgQGluY2x1ZGUgY2VudHJlWTtcclxuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgICAgbGVmdDogOHB4O1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgJi5ncmVlbiB7XHJcbiAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sICM4ZGRkYTAgMCUsICMzZGRiOGMgNTAlLCAjOGRkZGEwIDEwMCUpO1xyXG4gICAgICBib3JkZXItY29sb3I6ICMyYjZiMzc7XHJcbiAgICAgIGJveC1zaGFkb3c6IDAgMXB4IDNweCByZ2JhKDAsIDAsIDAsIDAuNSk7IC8vaGVhdmllciBzaGFkb3cgb24gZGFyayBncmVlbiBiZ1xyXG4gICAgICAmOmhvdmVyLCAmOmFjdGl2ZSB7XHJcbiAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgI2RjZjRlMSAwJSwgIzNkZGI4YyA1MCUsICNkY2Y0ZTEgMTAwJSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgICYuYmx1ZXtcclxuICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCAjOGRjMGRkIDAlLCMzZGFjZGIgNTAlLCM4ZGMwZGQgMTAwJSk7XHJcbiAgICAgICAgYm9yZGVyLWNvbG9yOiAjMTI2MTY3O1xyXG4gICAgICAgIGJveC1zaGFkb3c6IDAgMXB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMyk7XHJcbiAgICAgICAgJjpob3ZlciwgJjphY3RpdmV7XHJcbiAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCAjZGNlMWY0IDAlLCM2ZWFjZWIgNTAlLCNkY2UxZjQgMTAwJSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gTGlzdHZpZXdzXHJcbiAgW2RhdGEtcm9sZT1cImxpc3R2aWV3XCJdOm5vdCgubm9uLXJlc3BvbnNpdmUpe1xyXG4gICAgQGluY2x1ZGUgYm94eTtcclxuICAgIHBhZGRpbmc6IDAgIWltcG9ydGFudDtcclxuICAgIGxpc3Qtc3R5bGU6IG5vbmU7XHJcblxyXG5cclxuICAgID5saXtcclxuICAgICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgICAgb3ZlcmZsb3c6IHZpc2libGU7XHJcbiAgICAgIG1hcmdpbjogMDtcclxuICAgICAgcGFkZGluZzogOHB4IDE2cHggOHB4IDhweCAhaW1wb3J0YW50O1xyXG4gICAgICBsaXN0LXN0eWxlOiBub25lO1xyXG4gICAgICBmb250LXdlaWdodDogYm9sZDtcclxuICAgICAgYm9yZGVyLWNvbG9yOiAjZGRkO1xyXG4gICAgICBib3JkZXItc3R5bGU6IHNvbGlkO1xyXG4gICAgICBib3JkZXItd2lkdGg6IDFweCAxcHggMCAxcHg7XHJcbiAgICAgIGZvbnQtc2l6ZTogMTZweCAhaW1wb3J0YW50O1xyXG4gICAgICBAaW5jbHVkZSBtcXMoJHVudGlsOiB0YWJsZXQ3aW5jaCkge1xyXG4gICAgICAgIGZvbnQtc2l6ZTogMTRweCAhaW1wb3J0YW50O1xyXG4gICAgICB9XHJcblxyXG4gICAgICBhe1xyXG4gICAgICAgIG1hcmdpbjogMDtcclxuICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xyXG4gICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcclxuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gICAgICAgIGZvbnQtc2l6ZTogMTZweCAhaW1wb3J0YW50O1xyXG4gICAgICAgIEBpbmNsdWRlIG1xcygkdW50aWw6IHRhYmxldDdpbmNoKSB7XHJcbiAgICAgICAgICBmb250LXNpemU6IDE0cHggIWltcG9ydGFudDtcclxuICAgICAgICB9XHJcblxyXG5cclxuICAgICAgICAmOmFmdGVye1xyXG4gICAgICAgICAgY29udGVudDogJz4nO1xyXG4gICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICAgICAgcmlnaHQ6IDRweDtcclxuICAgICAgICAgIGZvbnQtc2l6ZTogMTZweCAhaW1wb3J0YW50O1xyXG4gICAgICAgICAgQGluY2x1ZGUgbXFzKCR1bnRpbDogdGFibGV0N2luY2gpIHtcclxuICAgICAgICAgICAgZm9udC1zaXplOiAxNHB4ICFpbXBvcnRhbnQ7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBMaW5rIGxpc3RzXHJcbiAgOm5vdCgubm9uLXJlc3BvbnNpdmUpOm5vdChbZGF0YS1yb2xlXSk6bm90KFtyb2xlXSkgPiBsaSA+IGE6b25seS1jaGlsZHtcclxuICAgIHBhZGRpbmc6IDhweCAwO1xyXG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gIH1cclxufVxyXG5cclxuXHJcbiIsCgkJIkBpbXBvcnQgXCJAaW5jbHVkZS9jb21tb25cIjtcclxuXHJcbiNzb2NpYWwge1xyXG4gIHdpZHRoOiAkcGFnZS13aWR0aDtcclxuICBtYXJnaW46IGF1dG87XHJcbiAgbWFyZ2luLXRvcDogMTZweDtcclxuXHJcbiAgQGluY2x1ZGUgbXFzKCR1bnRpbDogcGFnZSkge1xyXG4gICAgZGlzcGxheTogbm9uZTtcclxuICB9XHJcblxyXG4gIC5hZGR0aGlzX3Rvb2xib3gge1xyXG4gICAgbWFyZ2luLWxlZnQ6IDMwMHB4O1xyXG4gIH1cclxuXHJcbiAgLmFkZHRoaXNfYnV0dG9uX3R3aXR0ZXJfZm9sbG93X25hdGl2ZSxcclxuICAuYWRkdGhpc19idXR0b25fZ29vZ2xlX3BsdXNvbmUge1xyXG4gICAgbWFyZ2luLWxlZnQ6OHB4ICFpbXBvcnRhbnQ7XHJcbiAgfVxyXG5cclxuICAuYXRjX3Mge1xyXG4gICAgbWFyZ2luLWxlZnQ6MTJweCAhaW1wb3J0YW50O1xyXG4gIH1cclxufSIsCgkJIi8vIENvbW1vbiBzdHlsZXNcbkBpbXBvcnQgXCJ2YXJpYWJsZXNcIjtcbkBpbXBvcnQgXCJnZW5lcmFsX21peGluc1wiO1xuQGltcG9ydCBcIm1lZGlhXCI7XG5AaW1wb3J0IFwidG91Y2hcIjtcblxuYm9keXtcbiAgdmlzaWJpbGl0eTogaW5oZXJpdDtcbn1cbiIsCgkJIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuKiBIZWFkZXJcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4kbG9nby1sYXJnZS1pbWctd2lkdGg6IDQxNHB4O1xuJGxvZ28tbGFyZ2UtaW1nLWhlaWdodDogNzRweDtcblxuJGxvZ28tbWVkaXVtLWltZy13aWR0aDogMzMxcHg7XG4kbG9nby1tZWRpdW0taW1nLWhlaWdodDogNTlweDtcblxuJGxvZ28tc21hbGwtaW1nLXdpZHRoOiAyMDdweDtcbiRsb2dvLXNtYWxsLWltZy1oZWlnaHQ6IDM3cHg7XG5cbiRsb2dvLWhlaWdodC1hZGp1c3RtZW50OiAxMnB4O1xuJGxvZ28taW1nLXdpZHRoLWFkanVzdG1lbnQ6IDU1cHg7XG5cbiNoZWFkZXJ7XG4gIHBhZGRpbmctdG9wOiAxNnB4O1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgLy8gRm9yIHNjcmVlbnMgc21hbGxlciB0aGFuIHBhZ2UgY29sdW1uLCBkaXNwbGF5IGhlYWRlciBCRyBpbWFnZVxuICAvLyBJbml0aWFsbHkgZGlzcGxheSBsb3cgcmVzIGltYWdlIHdoaWNoIGlzIHJlcGxhY2VkIGJ5IGhpZ2gtcmVzIGltYWdlIGluIG1haW4uanMgb25jZSBjb250ZW50IGhhcyBsb2FkZWRcbiAgQGluY2x1ZGUgbXFzKCR1bnRpbDogcGFnZSkge1xuICAgIHBhZGRpbmctdG9wOiA4cHg7XG4gICAgYmFja2dyb3VuZC1zaXplOiBjb3ZlcjtcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uLXk6IGNlbnRlcjtcbiAgfVxuXG4gIEBpbmNsdWRlIG1xcygkZnJvbTogcGFnZSkge1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7XG4gICAgYmFja2dyb3VuZC1zaXplOiAwO1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IG5vbmUgIWltcG9ydGFudDtcbiAgfVxufVxuXG4jYmFubmVyIHtcblxuICAvLyBhZGQgc3BhY2UgZm9yIGFwcCBzdG9yZSBsb2dvc1xuICBoZWlnaHQ6ICRsb2dvLWxhcmdlLWltZy1oZWlnaHQgKyAkbG9nby1oZWlnaHQtYWRqdXN0bWVudDtcblxuICBAYXQtcm9vdCB7XG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogJG1xLWJyZWFrcG9pbnQtbWVkaXVtTG9nbykge1xuICAgICAgI3smfXtcbiAgICAgICAgaGVpZ2h0OiAkbG9nby1tZWRpdW0taW1nLWhlaWdodDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAYXQtcm9vdCB7XG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogJG1xLWJyZWFrcG9pbnQtc21hbGxMb2dvKSB7XG4gICAgICAjeyZ9e1xuICAgICAgICBoZWlnaHQ6ICRsb2dvLXNtYWxsLWltZy1oZWlnaHQ7XG4gICAgICB9XG4gICAgfVxuICB9XG5cblxuICBcbiAgaDEge1xuICAgIHBhZGRpbmc6MDtcbiAgICBtYXJnaW46MDtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgQGluY2x1ZGUgbXFzKCRmcm9tOiBwYWdlKSB7XG4gICAgICB6LWluZGV4OiAtMTtcbiAgICB9XG4gIH1cblxuICBwaWN0dXJle1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGhlaWdodDogJGxvZ28tbGFyZ2UtaW1nLWhlaWdodDtcbiAgICBAYXQtcm9vdCB7XG4gICAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAkbXEtYnJlYWtwb2ludC1tZWRpdW1Mb2dvKSB7XG4gICAgICAgICN7Jn17XG4gICAgICAgICAgaGVpZ2h0OiAkbG9nby1tZWRpdW0taW1nLWhlaWdodDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBAYXQtcm9vdCB7XG4gICAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAkbXEtYnJlYWtwb2ludC1zbWFsbExvZ28pIHtcbiAgICAgICAgI3smfXtcbiAgICAgICAgICBoZWlnaHQ6ICRsb2dvLXNtYWxsLWltZy1oZWlnaHQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgXG4gIGltZy5sb2dve1xuICAgIGxlZnQ6IDUwJTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGhlaWdodDogYXV0bztcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgd2lkdGg6IGNhbGMoMTAwJSAtICN7JGxvZ28taW1nLXdpZHRoLWFkanVzdG1lbnQgKiAyfSk7XG4gICAgbWF4LXdpZHRoOiAkbG9nby1sYXJnZS1pbWctd2lkdGg7Ly8gYmFubmVyX2xhcmdlLnBuZ1xuXG4gICAgQGF0LXJvb3Qge1xuICAgICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogJG1xLWJyZWFrcG9pbnQtbWVkaXVtTG9nbykge1xuICAgICAgICAjeyZ9e1xuICAgICAgICAgIG1heC13aWR0aDogJGxvZ28tbWVkaXVtLWltZy13aWR0aDsgLy9iYW5uZXJfbWVkaXVtLnBuZ1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgQGF0LXJvb3Qge1xuICAgICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogJG1xLWJyZWFrcG9pbnQtc21hbGxMb2dvKSB7XG4gICAgICAgICN7Jn17XG4gICAgICAgICAgbWF4LXdpZHRoOiAkbG9nby1zbWFsbC1pbWctd2lkdGg7IC8vYmFubmVyX3NtYWxsLnBuZ1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLmFwcHN0b3JlLWxvZ28sIC5hd2FyZHN7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMnB4O1xuXG4gICAgQGluY2x1ZGUgbXFzKCR1bnRpbDogcGFnZSkge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cbiAgfVxuXG4gIC5hcHBzdG9yZS1sb2dvIHtcbiAgICB3aWR0aDogMTUwcHg7XG4gICAgcmlnaHQ6IDA7XG4gIH1cblxuICAuYXdhcmRzIHtcbiAgICB3aWR0aDogNjdweDtcbiAgICByaWdodDogMTUzcHg7XG4gIH1cbn1cblxuQGtleWZyYW1lcyBzbGlkZVJpZ2h0IHtcbiAgMCUge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMTAwJSk7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gIH1cbiAgMTAwJSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApO1xuICB9XG59XG5cbkBrZXlmcmFtZXMgc2xpZGVMZWZ0IHtcbiAgMCUge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTtcbiAgfVxuICAxMDAlIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTEwMCUpO1xuICB9XG59XG5cblxuJG1vYmlsZUhlYWRlckJ1dHRvbldpZHRoOiAzNHB4O1xuJG1vYmlsZUhlYWRlckJ1dHRvbkhlaWdodDogMzBweDtcbiRtb2JpbGVIZWFkZXJCdXR0b25TcGFjaW5nOiAxMHB4O1xuXG5AbWl4aW4gbW9iaWxlSGVhZGVyQnV0dG9ue1xuICBAaW5jbHVkZSBjZW50cmVZO1xuICB3aWR0aDogJG1vYmlsZUhlYWRlckJ1dHRvbldpZHRoO1xuICBoZWlnaHQ6ICRtb2JpbGVIZWFkZXJCdXR0b25IZWlnaHQ7XG4gIGJhY2tncm91bmQtY29sb3I6ICMyMjIyMjI7XG4gIGJvcmRlci1yYWRpdXM6IDRweDtcbn1cblxuLy8gcmVzcG9uc2l2ZSB0b3VjaCBtZW51IChoaWRkZW4gYnkgZGVmYXVsdClcbiRzbGlja25hdl9hbmltYXRpb25fZHVyYXRpb246IDMwMG1zO1xuXG4uc2xpY2tuYXZfbWVudSB7XG4gIGRpc3BsYXk6IG5vbmU7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcbiAgcGFkZGluZzogMCAhaW1wb3J0YW50O1xuXG4gIEBpbmNsdWRlIHRvdWNoLXNjcmVlbi1kZXZpY2VzIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBwb3NpdGlvbjogaW5oZXJpdDtcbiAgfVxuICAuc2xpY2tuYXZfYnRue1xuICAgIEBpbmNsdWRlIGNlbnRyZVk7XG5cbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgbGVmdDogMDtcbiAgICBwYWRkaW5nOiAwLjVlbTtcbiAgICBtYXJnaW46IDAgMCAwIDEwcHg7XG4gICAgZm9udC1zaXplOiAxcmVtICFpbXBvcnRhbnQ7XG5cbiAgICAuc2xpY2tuYXZfbWVudXR4dHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuXG4gICAgLnNsaWNrbmF2X2ljb257XG4gICAgICBtYXJnaW46IDA7XG4gICAgfVxuICB9XG5cbiAgLnNsaWNrbmF2X25hdntcbiAgICBkaXNwbGF5OiBub25lO1xuICAgIGZvbnQtc2l6ZTogMWVtICFpbXBvcnRhbnQ7XG4gICAgd2lkdGg6IGF1dG87XG4gICAgZmxvYXQ6IGxlZnQ7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHotaW5kZXg6IDk5OTk5OTtcblxuICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGVhc2UtaW4tb3V0O1xuICAgIGFuaW1hdGlvbi1kdXJhdGlvbjogJHNsaWNrbmF2X2FuaW1hdGlvbl9kdXJhdGlvbjtcbiAgICBhbmltYXRpb24taXRlcmF0aW9uLWNvdW50OiAxO1xuICAgIGFuaW1hdGlvbi1maWxsLW1vZGU6IGZvcndhcmRzO1xuXG4gICAgJi5zbGlja25hdl9pbml0aWFsaXNpbmd7XG4gICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgJi5zbGlja25hdl9oaWRpbmd7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIGFuaW1hdGlvbi1uYW1lOiBzbGlkZUxlZnQ7XG4gICAgfVxuXG4gICAgJi5zbGlja25hdl9zaG93aW5ne1xuICAgICAgYW5pbWF0aW9uLW5hbWU6IHNsaWRlUmlnaHQ7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICB9XG5cbiAgICAmLnNsaWNrbmF2X3Nob3due1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgfVxuXG4gICAgJi5zbGlja25hdl9oaWRkZW57XG4gICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgdWx7XG4gICAgICBvdmVyZmxvdzogaGlkZGVuO1xuXG4gICAgICAmLnNsaWNrbmF2X2hpZGluZywgJi5zbGlja25hdl9oaWRkZW57XG4gICAgICAgIG1heC1oZWlnaHQ6IDA7XG4gICAgICAgIHRyYW5zaXRpb246IG1heC1oZWlnaHQgJHNsaWNrbmF2X2FuaW1hdGlvbl9kdXJhdGlvbiBjdWJpYy1iZXppZXIoMCwxLDAsMSk7XG4gICAgICB9XG5cbiAgICAgICYuc2xpY2tuYXZfc2hvd2luZywgJi5zbGlja25hdl9zaG93bntcbiAgICAgICAgbWF4LWhlaWdodDogOTk5OXB4OyAvLyB2ZXJ5IGxhcmdlXG4gICAgICAgIHRyYW5zaXRpb246IG1heC1oZWlnaHQgJHNsaWNrbmF2X2FuaW1hdGlvbl9kdXJhdGlvbiBjdWJpYy1iZXppZXIoMSwwLDEsMCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgbGl7XG4gICAgICBhe1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIHotaW5kZXg6IDE7XG4gICAgICAgIG91dGxpbmU6IG5vbmUgIWltcG9ydGFudDtcblxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgYm9yZGVyLXJhZGl1czogaW5oZXJpdDtcbiAgICAgICAgICAgYmFja2dyb3VuZDogaW5oZXJpdDtcbiAgICAgICAgICAgY29sb3I6IGluaGVyaXQ7XG4gICAgICAgICAgb3V0bGluZTogbm9uZSAhaW1wb3J0YW50O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICA+IGF7XG4gICAgICAgIHBhZGRpbmctdG9wOiAxMHB4O1xuICAgICAgICBwYWRkaW5nLWJvdHRvbTogMTBweDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICA+IHVse1xuICAgICAgei1pbmRleDogMTtcbiAgICB9XG5cbiAgICA+IGxpID4gYXtcbiAgICAgIHBhZGRpbmctcmlnaHQ6IDQwcHg7XG4gICAgfVxuXG4gICAgJjphZnRlcntcbiAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICB0b3A6IDA7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjIyO1xuICAgICAgb3BhY2l0eTogMC45NTtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDAgMTBweCAwIDA7XG4gICAgfVxuXG4gICAgLy8gU2hvdyBiYXNrZXQgQ1RBIGFzIHRleHRcbiAgICBhLmJhc2tldC1jdGF7XG4gICAgICBzcGFue1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIH1cblxuICAgICAgJjphZnRlcntcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLm5hdiB7XG4gIG1hcmdpbi1yaWdodDogMnB4OyAvKiBmaXggZm9yIG1lZ2FtZW51IG92ZXJzcGlsbGluZyAycHggKi9cblxuICBAYXQtcm9vdCB7XG4gICAgYm9keS5mdWxsc2NyZWVuICN7Jn17XG4gICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gICAgfVxuICB9XG5cbiAgQGluY2x1ZGUgdG91Y2gtc2NyZWVuLWRldmljZXMge1xuICAgIG1hcmdpbi1yaWdodDogMDtcbiAgfVxuXG4gIGxpIC5pY29ue1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICByaWdodDogMDtcbiAgICB6LWluZGV4OiAyO1xuICB9XG5cbiAgbGkuYW5kcm9pZCxcbiAgbGkuYXBwbGV7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB9XG5cbiAgbGkuYW5kcm9pZCAuaWNvbntcbiAgICBiYWNrZ3JvdW5kOiB1cmwoJy9pbWFnZXMvZ3JhcGhpY3MvYW5kcm9pZF9sb2dvX2ljb24ucG5nJykgdG9wIHJpZ2h0IG5vLXJlcGVhdCAhaW1wb3J0YW50O1xuICAgIHdpZHRoOiAzNHB4O1xuICAgIGhlaWdodDogMzBweDtcbiAgfVxuICBsaS5hcHBsZSAuaWNvbntcbiAgICBiYWNrZ3JvdW5kOiB1cmwoJy9pbWFnZXMvZ3JhcGhpY3MvYXBwbGVfbG9nb19pY29uLnBuZycpIHRvcCByaWdodCBuby1yZXBlYXQgIWltcG9ydGFudDtcbiAgICB3aWR0aDogMjVweDtcbiAgICBoZWlnaHQ6IDMwcHg7XG4gICAgbWFyZ2luLXJpZ2h0OiAzcHg7XG4gIH1cblxuICAvL1N0b3AgbXlzdGVyeSB3YWxrcyB3cmFwcGluZyBvbnRvIGxpbmUgYmVsb3dcbiAgLmJsYWNrIHVsLm1lZ2EtbWVudSBsaS5zdWJtZW51IGEge1xuICAgICAgQGluY2x1ZGUgbXEoJHVudGlsOiA5MjFweCkge1xuICAgICAgICAvLyBEcm9wIHBhZGRpbmcgKmJlbG93KiA5MjFweFxuICAgICAgICBwYWRkaW5nLWxlZnQ6IDhweDtcbiAgICAgICAgcGFkZGluZy1yaWdodDogMjZweDtcblxuICAgICAgICAuZGMtbWVnYS1pY29uIHtcbiAgICAgICAgICByaWdodDogMTBweDtcbiAgICAgICAgfVxuICAgICAgfVxuICB9XG5cbiAgLy8gTW9iaWxlIHZpZXdcbiAgPiAubG9naW4tY3RhLWNvbnRhaW5lcntcbiAgICBkaXNwbGF5OiBub25lO1xuICAgIEBpbmNsdWRlIHRvdWNoLXNjcmVlbi1kZXZpY2VzIHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIH1cblxuICAgIEBhdC1yb290IHtcbiAgICAgIGJvZHkuYWNjb3VudHMtZGlzYWJsZWQgI3smfXtcbiAgICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICAgICAgfVxuICAgIH1cblxuICAgIGEge1xuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICBzcGFue1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgfVxuICAgICAgJjphZnRlcntcbiAgICAgICAgQGluY2x1ZGUgbW9iaWxlSGVhZGVyQnV0dG9uO1xuICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICByaWdodDogJG1vYmlsZUhlYWRlckJ1dHRvblNwYWNpbmc7XG4gICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgnL2ltYWdlcy9ncmFwaGljcy91c2VyLnBuZycpO1xuICAgICAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuICAgICAgICBiYWNrZ3JvdW5kLXNpemU6IGNvbnRhaW47XG4gICAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlciBjZW50ZXI7XG5cbiAgICAgICAgQGluY2x1ZGUgbXFzKCRmcm9tOiBwYWdlKSB7XG4gICAgICAgICAgcmlnaHQ6IGF1dG87XG4gICAgICAgICAgbGVmdDogKDIgKiAkbW9iaWxlSGVhZGVyQnV0dG9uU3BhY2luZykgKyAkbW9iaWxlSGVhZGVyQnV0dG9uV2lkdGg7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBCYXNrZXQgQ1RBOiBtb2JpbGUgJiBkZXNrdG9wXG4gIC5iYXNrZXQtY3RhLWNvbnRhaW5lciwgLmJhc2tldC1jdGF7XG4gICAgZGlzcGxheTogbm9uZTtcblxuICAgIEBhdC1yb290IHtcbiAgICAgIGJvZHkuc2lnbmVkLWluICN7Jn17XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgfVxuXG4gICAgICBib2R5LmFjY291bnRzLWRpc2FibGVkICN7Jn17XG4gICAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAkYmFza2V0SWNvbkhlaWdodDogMjZweDtcbiAgJGJhc2tldEljb25XaWR0aDogMjBweDtcblxuICBAbWl4aW4gYmFza2V0SWNvbkhvdmVye1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgnL2ltYWdlcy9ncmFwaGljcy9zaG9wcGluZ19jYXJ0X2ludmVydGVkLnBuZycpO1xuICB9XG5cbiAgYS5iYXNrZXQtY3RhIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgXG4gICAgc3BhbntcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuICAgICY6YWZ0ZXJ7XG4gICAgICBjb250ZW50OiAnJztcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIHdpZHRoOiAkYmFza2V0SWNvbkhlaWdodDtcbiAgICAgIGhlaWdodDogJGJhc2tldEljb25XaWR0aDtcbiAgICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG4gICAgICBiYWNrZ3JvdW5kLXNpemU6ICRiYXNrZXRJY29uSGVpZ2h0ICRiYXNrZXRJY29uV2lkdGg7XG4gICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXIgY2VudGVyO1xuICAgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCcvaW1hZ2VzL2dyYXBoaWNzL3Nob3BwaW5nX2NhcnQucG5nJyk7XG4gICAgfVxuICB9XG5cbiAgLy8gQmFza2V0IENUQTogZGVza3RvcFxuICAjbWVudSBhLmJhc2tldC1jdGF7XG4gICAgJHZlcnQ6IDIwcHg7XG4gICAgJGhvcml6OiAxOXB4O1xuICAgICR0b3A6ICR2ZXJ0O1xuICAgICRib3R0b206ICR2ZXJ0O1xuICAgICRsZWZ0OiAoKCRiYXNrZXRJY29uV2lkdGggLyAyKSArICRob3Jpeik7XG4gICAgJHJpZ2h0OiAoKCRiYXNrZXRJY29uV2lkdGggLyAyKSArICRob3Jpeik7XG4gICAgcGFkZGluZzogJHRvcCAkcmlnaHQgJGJvdHRvbSAkbGVmdCAhaW1wb3J0YW50O1xuXG4gICAgJjphZnRlcntcbiAgICAgIEBpbmNsdWRlIGNlbnRyZVhZO1xuICAgIH1cbiAgICAmOmhvdmVyOmFmdGVye1xuICAgICAgQGluY2x1ZGUgYmFza2V0SWNvbkhvdmVyO1xuICAgIH1cbiAgfVxuXG4gICNtZW51IGxpLm1lZ2EtaG92ZXIgYS5iYXNrZXQtY3RhOmFmdGVye1xuICAgIEBpbmNsdWRlIGJhc2tldEljb25Ib3ZlcjtcbiAgfVxuXG4gIC8vIEJhc2tldCBDVEE6IG1vYmlsZVxuICA+IGEuYmFza2V0LWN0YXtcbiAgICBkaXNwbGF5OiBub25lO1xuICAgIEBpbmNsdWRlIHRvdWNoLXNjcmVlbi1kZXZpY2VzIHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIH1cblxuICAgIC8vIEhpZGUgb24gdGlueSBzY3JlZW5zIGJlY2F1c2UgaXQgb3ZlcmxhcHMgbG9nb1xuICAgIEBpbmNsdWRlIG1xcygkdW50aWw6IDM3MHB4KXtcbiAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICAmOmFmdGVye1xuICAgICAgQGluY2x1ZGUgbW9iaWxlSGVhZGVyQnV0dG9uO1xuICAgICAgcmlnaHQ6ICgyICogJG1vYmlsZUhlYWRlckJ1dHRvblNwYWNpbmcpICsgJG1vYmlsZUhlYWRlckJ1dHRvbldpZHRoO1xuXG4gICAgICBAaW5jbHVkZSBtcXMoJGZyb206IHBhZ2UpIHtcbiAgICAgICAgcmlnaHQ6IGF1dG87XG4gICAgICAgIGxlZnQ6ICg0ICogJG1vYmlsZUhlYWRlckJ1dHRvblNwYWNpbmcpICsgKDIgKiAkbW9iaWxlSGVhZGVyQnV0dG9uV2lkdGgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vLyBNb3VzZS9wb2ludGVyIG1lbnVcbiNtZW51e1xuXG4gIEBpbmNsdWRlIHRvdWNoLXNjcmVlbi1kZXZpY2VzIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG5cbiAgLm1lbnViYXItaWNvbiB7XG4gICAgbWFyZ2luLWxlZnQ6OHB4ICFpbXBvcnRhbnQ7XG4gICAgcGFkZGluZzowICFpbXBvcnRhbnQ7XG4gICAgd2lkdGg6MzJweDtcbiAgICBoZWlnaHQ6MzJweDtcbiAgICBwb3NpdGlvbjpyZWxhdGl2ZTtcbiAgICB0b3A6NHB4O1xuXG4gICAgJi5zb2NpYWx7XG4gICAgICBAaW5jbHVkZSBtcXMoJHVudGlsOiBoZWFkZXJTb2NpYWxJY29ucykge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgfVxuICAgIH1cblxuICB9XG5cbn1cblxuIiwKCQkiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4qIEZvb3RlclxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiNmb290ZXIge1xuICBiYWNrZ3JvdW5kOiAjMmYyZjJmO1xuICBwYWRkaW5nLXRvcDogOHB4O1xuICBwYWRkaW5nLWJvdHRvbTogOHB4O1xuICBmb250LXNpemU6IDEwcHQ7XG5cbiAgQGluY2x1ZGUgbXFzKCR1bnRpbDogcGFnZSkge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cblxuICBhIHtcbiAgICBjb2xvcjogd2hpdGU7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICB9XG5cbiAgLmxpbmtze1xuICAgIHVsIHtcbiAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgIHBhZGRpbmctbGVmdDogMDtcbiAgICAgIG1hcmdpbjogNHB4IDA7XG4gICAgfVxuXG4gICAgbGkge1xuICAgICAgZGlzcGxheTppbmxpbmU7XG4gICAgICBwYWRkaW5nLWxlZnQ6OHB4O1xuICAgICAgcGFkZGluZy1yaWdodDo4cHg7XG5cbiAgICAgIGE6aG92ZXJ7XG4gICAgICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHVsI3NvY2lhbC1mb290ZXJ7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIHBhZGRpbmc6IDA7XG4gICAgbWFyZ2luLWxlZnQ6IDUwJTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XG5cbiAgICBAaW5jbHVkZSB0b3VjaC1zY3JlZW4tZGV2aWNlcyB7XG4gICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cblxuICAgIGxpIHtcbiAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgbWFyZ2luOiAwO1xuICAgICAgcGFkZGluZzogMDtcbiAgICAgIGZvbnQtc2l6ZTogMTNweDtcbiAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgbGlzdC1zdHlsZTogbm9uZTtcblxuICAgICAgYSB7XG4gICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgY29sb3I6ICNmZmY7XG4gICAgICAgIHRleHQtc2hhZG93OiAxcHggMXB4IDFweCAjMDAwO1xuICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLm1lbnViYXItaWNvbiB7XG4gICAgICBtYXJnaW4tbGVmdDo4cHggIWltcG9ydGFudDtcbiAgICAgIHBhZGRpbmc6MCAhaW1wb3J0YW50O1xuICAgICAgd2lkdGg6MzJweDtcbiAgICAgIGhlaWdodDozMnB4O1xuICAgICAgcG9zaXRpb246cmVsYXRpdmU7XG4gICAgICB0b3A6NHB4O1xuXG4gICAgICAmLnNvY2lhbHtcbiAgICAgICAgQGluY2x1ZGUgbXFzKCR1bnRpbDogaGVhZGVyU29jaWFsSWNvbnMpIHtcbiAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLmZhY2Vib29rIHtcbiAgICAgIGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL2dyYXBoaWNzL2ZhY2Vib29rLWljb24ucG5nJykgdG9wIHJpZ2h0IG5vLXJlcGVhdCAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIC5waW50ZXJlc3Qge1xuICAgICAgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvZ3JhcGhpY3MvcGludGVyZXN0LWljb24ucG5nJykgdG9wIHJpZ2h0IG5vLXJlcGVhdCAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIC50aHJlYWRzIHtcbiAgICAgIGJhY2tncm91bmQ6dXJsKCcvaW1hZ2VzL2dyYXBoaWNzL3RocmVhZHMtaWNvbi5wbmcnKSB0b3AgcmlnaHQgbm8tcmVwZWF0ICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgLmJsdWVza3kge1xuICAgICAgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvZ3JhcGhpY3MvYmx1ZXNreS1pY29uLnBuZycpIHRvcCByaWdodCBuby1yZXBlYXQgIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICAudHdpdHRlciB7XG4gICAgICBiYWNrZ3JvdW5kOnVybCgnL2ltYWdlcy9ncmFwaGljcy90d2l0dGVyLWljb24ucG5nJykgdG9wIHJpZ2h0IG5vLXJlcGVhdCAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIC5pbnN0YWdyYW0ge1xuICAgICAgYmFja2dyb3VuZDp1cmwoJy9pbWFnZXMvZ3JhcGhpY3MvaW5zdGFncmFtLWljb24ucG5nJykgdG9wIHJpZ2h0IG5vLXJlcGVhdCAhaW1wb3J0YW50O1xuICAgIH1cbiAgfVxuXG59XG5cbiNsaWtlX29uX2ZhY2Vib29rIHtcbiAgbWFyZ2luOjA7XG4gIHBhZGRpbmctYm90dG9tOjE2cHg7XG5cbiAgZGl2LnRleHR7XG4gICAgZGlzcGxheTppbmxpbmU7XG4gIH1cbn1cbiIsCgkJIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuKiBGb290ZXIgc2VjdGlvbiBoaWdobGlnaHRpbmdcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuaHRtbC5zZWN0aW9uLXRlcm1zICNmb290ZXIgbGkudGVybXMgYSxcbmh0bWwuc2VjdGlvbi1saW5raW5nICNmb290ZXIgbGkubGlua2luZyBhLFxuaHRtbC5zZWN0aW9uLWFwcHMtbWVudSAjZm9vdGVyIGxpLmFwcHMtbWVudSBhLFxuaHRtbC5zZWN0aW9uLWxpbmtzICNmb290ZXIgbGkubGlua3MgYSxcbmh0bWwuc2VjdGlvbi1mb290cGF0aC1pc3N1ZXMgI2Zvb3RlciBsaS5mb290cGF0aC1pc3N1ZXMgYSxcbmh0bWwuc2VjdGlvbi1kaXJlY3Rpb24tY29ycmVjdGlvbiAjZm9vdGVyIGxpLmRpcmVjdGlvbi1jb3JyZWN0aW9uIGEsXG5odG1sLnNlY3Rpb24tY29va2llLXBvbGljeSAjZm9vdGVyIGxpLmNvb2tpZS1wb2xpY3kgYSxcbmh0bWwuc2VjdGlvbi1jb250YWN0LXVzICNmb290ZXIgbGkuY29udGFjdC11cyBhLFxuaHRtbC5zZWN0aW9uLW1vYmlsZS1yZWRpcmVjdCAjZm9vdGVyIGxpLm1vYmlsZS1yZWRpcmVjdCBhe1xuICBjb2xvcjogIzAwZDRmZjtcbiAgZm9udC1zdHlsZTogaXRhbGljO1xufVxuXG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuKiBOYXYgc2VjdGlvbiBoaWdobGlnaHRpbmdcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG5odG1sLnNlY3Rpb24taG9tZSB1bC5tZWdhLW1lbnUgbGkubmF2LXNlYy1ob21lIGEsXG5odG1sLnNlY3Rpb24tYWxsLXdhbGtzIHVsLm1lZ2EtbWVudSBsaS5uYXYtc2VjLWFsbC13YWxrcyBhLFxuaHRtbC5zZWN0aW9uLWxvY2F0aW9ucyB1bC5tZWdhLW1lbnUgbGkubmF2LXNlYy1sb2NhdGlvbnMgYSxcbmh0bWwuc2VjdGlvbi13YWxrLXR5cGVzIHVsLm1lZ2EtbWVudSBsaS5uYXYtc2VjLXdhbGstdHlwZXMgYSxcbmh0bWwuc2VjdGlvbi1hcHBzIHVsLm1lZ2EtbWVudSBsaS5uYXYtc2VjLWFwcHMgYSxcbmh0bWwuc2VjdGlvbi1idXkgdWwubWVnYS1tZW51IGxpLm5hdi1zZWMtIGEsXG5odG1sLnNlY3Rpb24tZmFxIHVsLm1lZ2EtbWVudSBsaS5uYXYtc2VjLWZhcSBhLFxuaHRtbC5zZWN0aW9uLWJsb2cgdWwubWVnYS1tZW51IGxpLm5hdi1zZWMtYmxvZyBhLFxuaHRtbC5zZWN0aW9uLW15c3RlcmllcyB1bC5tZWdhLW1lbnUgbGkubmF2LXNlYy1teXN0ZXJpZXMgYXtcbiAgYmFja2dyb3VuZC1wb3NpdGlvbjogMTAwJSAtNDBweDtcbiAgY29sb3I6ICMwMDA7XG4gIHRleHQtc2hhZG93OiBub25lO1xufVxuIiwKCQkiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbiogUHJpbnQgbW9kc1xyXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cclxuXHJcbkBtZWRpYSBwcmludCB7XHJcblxyXG4gIGJvZHksICNjb250ZW50IHtcclxuICAgIGJhY2tncm91bmQ6ICNmZmYgIWltcG9ydGFudDtcclxuICB9XHJcblxyXG4gICNmb290ZXIsIC5uby1wcmludCwgLm5hdiwgI3NvY2lhbCwgI2Nvb2tpZVRlcm1zLCAjaGVhZGVyLCAjc3ViLWhlYWRlciB7XHJcbiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XHJcbiAgfVxyXG4gIGEge1xyXG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xyXG4gICAgY29sb3I6IGJsYWNrXHJcbiAgfVxyXG4gIC5wcmludC1vbmx5IHtcclxuICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7XHJcbiAgfVxyXG4gIC5wcmludC1vbmx5LWlubGluZSB7XHJcbiAgICBkaXNwbGF5OiBpbmxpbmUgIWltcG9ydGFudDtcclxuICB9XHJcblxyXG4gICNiYW5uZXIge1xyXG4gICAgaGVpZ2h0OiBpbmhlcml0O1xyXG4gICAgZmxvYXQ6IHJpZ2h0O1xyXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgdG9wOiAtNnB4O1xyXG5cclxuICAgIGltZy5sb2dvIHtcclxuICAgICAgbWFyZ2luLWxlZnQ6IDA7XHJcbiAgICAgIGhlaWdodDogNTBweDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gICN3cmFwcGVyLCAjY29udGVudCB7XHJcbiAgICBwYWRkaW5nOiAwXHJcbiAgfVxyXG4gIFxyXG4gIFxyXG59IiwKCQkiQGltcG9ydCBcIi4uL0BpbmNsdWRlL2NvbXBvbmVudC9sb2FkZXJcIjtcblxuI2xvZ2luLXBvcHVwe1xuICBkaXNwbGF5OiBub25lO1xuICBAYXQtcm9vdCB7XG4gICAgYm9keS5qcy1sb2FkZWQgI3smfXtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIH1cbiAgfVxuXG4gICNmaXJlYmFzZXVpLWF1dGgtY29udGFpbmVye1xuICAgICYubG9hZGluZ3tcbiAgICAgIEBpbmNsdWRlIGxvYWRlcjtcbiAgICAgIHBhZGRpbmc6IDVyZW0gMTByZW07XG4gICAgfVxuICB9XG59XG4iLAoJCSIvLyBMb2FkaW5nIGFuaW1hdGlvblxuXG4kbG9hZGVyLWRlZmF1bHQtc2l6ZTogNTBweDtcbiRsb2FkZXItZGVmYXVsdC10aGlja25lc3M6IDVweDtcbiRsb2FkZXItZGVmYXVsdC1mb3JlZ3JvdW5kOiB3aGl0ZTtcbiRsb2FkZXItZGVmYXVsdC1iYWNrZ3JvdW5kOiByZ2JhKDI1NSwyNTUsMjU1LDAuMjUpO1xuJGxvYWRlci1kZWZhdWx0LWZvcmVncm91bmQtaW52ZXJ0ZWQ6IGJsYWNrO1xuJGxvYWRlci1kZWZhdWx0LWJhY2tncm91bmQtaW52ZXJ0ZWQ6IHJnYmEoMCwwLDAsMC4yNSk7XG5cbkBtaXhpbiBsb2FkZXIoXG4gICRzaXplOiAkbG9hZGVyLWRlZmF1bHQtc2l6ZSxcbiAgJHRoaWNrbmVzczogJGxvYWRlci1kZWZhdWx0LXRoaWNrbmVzcyxcbiAgJGZvcmVncm91bmQ6ICRsb2FkZXItZGVmYXVsdC1mb3JlZ3JvdW5kLFxuICAkYmFja2dyb3VuZDogJGxvYWRlci1kZWZhdWx0LWJhY2tncm91bmRcbil7XG5cbiAgQGF0LXJvb3R7XG4gICAgYm9keTpub3QoLmZ1bGxzY3JlZW4pICN7Jn0ge1xuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIH1cbiAgfVxuXG4gICY6OmFmdGVyIHtcbiAgICBjb250ZW50OiAnJztcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiA1MCU7XG4gICAgbGVmdDogNTAlO1xuICAgIG1hcmdpbi10b3A6IC0oJHNpemUgLyAyICsgJHRoaWNrbmVzcyk7XG4gICAgbWFyZ2luLWxlZnQ6IC0oJHNpemUgLyAyICsgJHRoaWNrbmVzcyk7XG4gICAgd2lkdGg6ICRzaXplO1xuICAgIGhlaWdodDogJHNpemU7XG4gICAgYm9yZGVyLXJhZGl1czogJHNpemU7XG4gICAgYm9yZGVyOiAkdGhpY2tuZXNzIHNvbGlkICRiYWNrZ3JvdW5kO1xuICAgIGJvcmRlci10b3AtY29sb3I6ICRmb3JlZ3JvdW5kO1xuICAgIGFuaW1hdGlvbjogbG9hZGluZyAxcyBlYXNlIGluZmluaXRlO1xuICB9XG4gIEBrZXlmcmFtZXMgbG9hZGluZyB7XG4gICAgMCUge1xuICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7XG4gICAgfVxuICAgIDEwMCUge1xuICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIGxvYWRlci1pbnZlcnRlZChcbiAgJHNpemU6ICRsb2FkZXItZGVmYXVsdC1zaXplLFxuICAkdGhpY2tuZXNzOiAkbG9hZGVyLWRlZmF1bHQtdGhpY2tuZXNzLFxuICAkZm9yZWdyb3VuZDogJGxvYWRlci1kZWZhdWx0LWZvcmVncm91bmQtaW52ZXJ0ZWQsXG4gICRiYWNrZ3JvdW5kOiAkbG9hZGVyLWRlZmF1bHQtYmFja2dyb3VuZC1pbnZlcnRlZFxuKXtcbiAgQGluY2x1ZGUgbG9hZGVyKFxuICAgICRzaXplOiAkc2l6ZSxcbiAgICAkdGhpY2tuZXNzOiAkdGhpY2tuZXNzLFxuICAgICRmb3JlZ3JvdW5kOiAkZm9yZWdyb3VuZCxcbiAgICAkYmFja2dyb3VuZDogJGJhY2tncm91bmRcbiAgKTtcbn1cbiIsCgkJIi8vIExvYWRpbmcgYW5pbWF0aW9uXG5cbiRsb2FkZXItZGVmYXVsdC1zaXplOiA1MHB4O1xuJGxvYWRlci1kZWZhdWx0LXRoaWNrbmVzczogNXB4O1xuJGxvYWRlci1kZWZhdWx0LWZvcmVncm91bmQ6IHdoaXRlO1xuJGxvYWRlci1kZWZhdWx0LWJhY2tncm91bmQ6IHJnYmEoMjU1LDI1NSwyNTUsMC4yNSk7XG4kbG9hZGVyLWRlZmF1bHQtZm9yZWdyb3VuZC1pbnZlcnRlZDogYmxhY2s7XG4kbG9hZGVyLWRlZmF1bHQtYmFja2dyb3VuZC1pbnZlcnRlZDogcmdiYSgwLDAsMCwwLjI1KTtcblxuQG1peGluIGxvYWRlcihcbiAgJHNpemU6ICRsb2FkZXItZGVmYXVsdC1zaXplLFxuICAkdGhpY2tuZXNzOiAkbG9hZGVyLWRlZmF1bHQtdGhpY2tuZXNzLFxuICAkZm9yZWdyb3VuZDogJGxvYWRlci1kZWZhdWx0LWZvcmVncm91bmQsXG4gICRiYWNrZ3JvdW5kOiAkbG9hZGVyLWRlZmF1bHQtYmFja2dyb3VuZFxuKXtcblxuICBAYXQtcm9vdHtcbiAgICBib2R5Om5vdCguZnVsbHNjcmVlbikgI3smfSB7XG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgfVxuICB9XG5cbiAgJjo6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6ICcnO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDUwJTtcbiAgICBsZWZ0OiA1MCU7XG4gICAgbWFyZ2luLXRvcDogLSgkc2l6ZSAvIDIgKyAkdGhpY2tuZXNzKTtcbiAgICBtYXJnaW4tbGVmdDogLSgkc2l6ZSAvIDIgKyAkdGhpY2tuZXNzKTtcbiAgICB3aWR0aDogJHNpemU7XG4gICAgaGVpZ2h0OiAkc2l6ZTtcbiAgICBib3JkZXItcmFkaXVzOiAkc2l6ZTtcbiAgICBib3JkZXI6ICR0aGlja25lc3Mgc29saWQgJGJhY2tncm91bmQ7XG4gICAgYm9yZGVyLXRvcC1jb2xvcjogJGZvcmVncm91bmQ7XG4gICAgYW5pbWF0aW9uOiBsb2FkaW5nIDFzIGVhc2UgaW5maW5pdGU7XG4gIH1cbiAgQGtleWZyYW1lcyBsb2FkaW5nIHtcbiAgICAwJSB7XG4gICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTtcbiAgICB9XG4gICAgMTAwJSB7XG4gICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gbG9hZGVyLWludmVydGVkKFxuICAkc2l6ZTogJGxvYWRlci1kZWZhdWx0LXNpemUsXG4gICR0aGlja25lc3M6ICRsb2FkZXItZGVmYXVsdC10aGlja25lc3MsXG4gICRmb3JlZ3JvdW5kOiAkbG9hZGVyLWRlZmF1bHQtZm9yZWdyb3VuZC1pbnZlcnRlZCxcbiAgJGJhY2tncm91bmQ6ICRsb2FkZXItZGVmYXVsdC1iYWNrZ3JvdW5kLWludmVydGVkXG4pe1xuICBAaW5jbHVkZSBsb2FkZXIoXG4gICAgJHNpemU6ICRzaXplLFxuICAgICR0aGlja25lc3M6ICR0aGlja25lc3MsXG4gICAgJGZvcmVncm91bmQ6ICRmb3JlZ3JvdW5kLFxuICAgICRiYWNrZ3JvdW5kOiAkYmFja2dyb3VuZFxuICApO1xufVxuIgoJXSwKCSJuYW1lcyI6IFtdLAoJIm1hcHBpbmdzIjogIkFJQ0E7O0dBRUc7QUFXSDs7R0FFRztBRWhCSDs7eURBRXlEO0FMSXpELEFBQUEsSUFBSSxDQUFBO0VBQ0YsVUFBVSxFQUFFLE9BQU87Q0FDcEI7O0FHUEQ7O0dBRUc7QUFXSDs7R0FFRztBRWhCSDs7eURBRXlEO0FFSXpELEFBQUEsSUFBSSxDQUFBO0VBQ0YsVUFBVSxFQUFFLE9BQU87Q0FDcEI7O0FETkQsQUFBQSxPQUFPLENBQUM7RUFDTixLQUFLLEVMRE0sS0FBSztFS0VoQixNQUFNLEVBQUUsSUFBSTtFQUNaLFVBQVUsRUFBRSxJQUFJO0NBa0JqQjs7QUZzTU8sTUFBTSxDQUFDLE1BQU0sTUFBTSxTQUFTLEVBQUUsT0FBTztFRTNON0MsQUFBQSxPQUFPLENBQUM7SUFNSixPQUFPLEVBQUUsSUFBSTtHQWVoQjs7O0FBckJELEFBU0UsT0FUSyxDQVNMLGdCQUFnQixDQUFDO0VBQ2YsV0FBVyxFQUFFLEtBQUs7Q0FDbkI7O0FBWEgsQUFhRSxPQWJLLENBYUwscUNBQXFDO0FBYnZDLE9BQU8sQ0FjTCw4QkFBOEIsQ0FBQztFQUM3QixXQUFXLEVBQUMsY0FBYztDQUMzQjs7QUFoQkgsQUFrQkUsT0FsQkssQ0FrQkwsTUFBTSxDQUFDO0VBQ0wsV0FBVyxFQUFDLGVBQWU7Q0FDNUI7O0FFdEJIOzt5REFFeUQ7QUFjekQsQUFBQSxPQUFPLENBQUE7RUFDTCxXQUFXLEVBQUUsSUFBSTtFQUNqQixRQUFRLEVBQUUsUUFBUTtDQWVuQjs7QUo0TE8sTUFBTSxDQUFDLE1BQU0sTUFBTSxTQUFTLEVBQUUsT0FBTztFSTdNN0MsQUFBQSxPQUFPLENBQUE7SUFPSCxXQUFXLEVBQUUsR0FBRztJQUNoQixlQUFlLEVBQUUsS0FBSztJQUN0QixxQkFBcUIsRUFBRSxNQUFNO0dBUWhDOzs7QUo0TE8sTUFBTSxDQUFDLE1BQU0sTUFBTSxTQUFTLEVBQUUsSUFBSTtFSTdNMUMsQUFBQSxPQUFPLENBQUE7SUFhSCxnQkFBZ0IsRUFBRSxJQUFJO0lBQ3RCLGVBQWUsRUFBRSxDQUFDO0lBQ2xCLGdCQUFnQixFQUFFLGVBQWU7R0FFcEM7OztBQUVELEFBQUEsT0FBTyxDQUFDO0VBR04sTUFBTSxFQUFFLElBQWdEO0NBNEZ6RDs7QUF6RkcsTUFBTSxDQUFDLE1BQU0sTUFBTSxTQUFTLEVBQUUsS0FBSztFQUNqQyxBQUFBLE9BQU8sQ0FBSDtJQUNGLE1BQU0sRUFuQ1csSUFBSTtHQW9DdEI7OztBQUtILE1BQU0sQ0FBQyxNQUFNLE1BQU0sU0FBUyxFQUFFLEtBQUs7RUFDakMsQUFBQSxPQUFPLENBQUg7SUFDRixNQUFNLEVBeENVLElBQUk7R0F5Q3JCOzs7QUFqQlAsQUF1QkUsT0F2QkssQ0F1QkwsRUFBRSxDQUFDO0VBQ0QsT0FBTyxFQUFDLENBQUM7RUFDVCxNQUFNLEVBQUMsQ0FBQztFQUNSLFFBQVEsRUFBRSxRQUFRO0NBSW5COztBSjRKSyxNQUFNLENBQUMsTUFBTSxNQUFNLFNBQVMsRUFBRSxJQUFJO0VJMUwxQyxBQXVCRSxPQXZCSyxDQXVCTCxFQUFFLENBQUM7SUFLQyxPQUFPLEVBQUUsRUFBRTtHQUVkOzs7QUE5QkgsQUFnQ0UsT0FoQ0ssQ0FnQ0wsT0FBTyxDQUFBO0VBQ0wsT0FBTyxFQUFFLEtBQUs7RUFDZCxNQUFNLEVBaEVjLElBQUk7Q0ErRXpCOztBQWJHLE1BQU0sQ0FBQyxNQUFNLE1BQU0sU0FBUyxFQUFFLEtBQUs7RUFDakMsQUFBQSxPQUFPLENBQUMsT0FBTyxDQUFYO0lBQ0YsTUFBTSxFQWpFUyxJQUFJO0dBa0VwQjs7O0FBSUgsTUFBTSxDQUFDLE1BQU0sTUFBTSxTQUFTLEVBQUUsS0FBSztFQUNqQyxBQUFBLE9BQU8sQ0FBQyxPQUFPLENBQVg7SUFDRixNQUFNLEVBckVRLElBQUk7R0FzRW5COzs7QUE5Q1QsQUFtREUsT0FuREssQ0FtREwsR0FBRyxBQUFBLEtBQUssQ0FBQTtFQUNOLElBQUksRUFBRSxHQUFHO0VBQ1QsU0FBUyxFQUFFLGdCQUFnQjtFQUMzQixRQUFRLEVBQUUsUUFBUTtFQUNsQixNQUFNLEVBQUUsSUFBSTtFQUNaLE1BQU0sRUFBRSxPQUFPO0VBQ2YsS0FBSyxFQUFFLGtCQUE4QztFQUNyRCxTQUFTLEVBekZVLEtBQUs7Q0EwR3pCOztBQWRHLE1BQU0sQ0FBQyxNQUFNLE1BQU0sU0FBUyxFQUFFLEtBQUs7RUFDakMsQUFBQSxPQUFPLENBQUMsR0FBRyxBQUFBLEtBQUssQ0FBWjtJQUNGLFNBQVMsRUEzRkssS0FBSztHQTRGcEI7OztBQUtILE1BQU0sQ0FBQyxNQUFNLE1BQU0sU0FBUyxFQUFFLEtBQUs7RUFDakMsQUFBQSxPQUFPLENBQUMsR0FBRyxBQUFBLEtBQUssQ0FBWjtJQUNGLFNBQVMsRUFoR0ksS0FBSztHQWlHbkI7OztBQXhFVCxBQTZFRSxPQTdFSyxDQTZFTCxjQUFjLEVBN0VoQixPQUFPLENBNkVXLE9BQU8sQ0FBQTtFQUNyQixRQUFRLEVBQUUsUUFBUTtFQUNsQixHQUFHLEVBQUUsR0FBRztDQUtUOztBSnNHSyxNQUFNLENBQUMsTUFBTSxNQUFNLFNBQVMsRUFBRSxPQUFPO0VJMUw3QyxBQTZFRSxPQTdFSyxDQTZFTCxjQUFjLEVBN0VoQixPQUFPLENBNkVXLE9BQU8sQ0FBQTtJQUtqQixPQUFPLEVBQUUsSUFBSTtHQUVsQjs7O0FBcEZILEFBc0ZFLE9BdEZLLENBc0ZMLGNBQWMsQ0FBQztFQUNiLEtBQUssRUFBRSxLQUFLO0VBQ1osS0FBSyxFQUFFLENBQUM7Q0FDVDs7QUF6RkgsQUEyRkUsT0EzRkssQ0EyRkwsT0FBTyxDQUFDO0VBQ04sS0FBSyxFQUFFLElBQUk7RUFDWCxLQUFLLEVBQUUsS0FBSztDQUNiOztBQUdILFVBQVUsQ0FBVixVQUFVO0VBQ1IsRUFBRTtJQUNBLFNBQVMsRUFBRSxpQkFBaUI7SUFDNUIsT0FBTyxFQUFFLEtBQUs7O0VBRWhCLElBQUk7SUFDRixTQUFTLEVBQUUsYUFBYTs7OztBQUk1QixVQUFVLENBQVYsU0FBVTtFQUNSLEVBQUU7SUFDQSxTQUFTLEVBQUUsYUFBYTs7RUFFMUIsSUFBSTtJQUNGLFNBQVMsRUFBRSxpQkFBaUI7Ozs7QUFvQmhDLEFBQUEsY0FBYyxDQUFDO0VBQ2IsT0FBTyxFQUFFLElBQUk7RUFDYixRQUFRLEVBQUUsUUFBUTtFQUNsQixVQUFVLEVBQUUsc0JBQXNCO0VBQ2xDLE9BQU8sRUFBRSxZQUFZO0NBMEh0Qjs7QUxqUkMsTUFBTSxFQUFFLE9BQU8sRUFBRSxNQUFNLE9BQU8sS0FBSyxFQUFFLElBQUk7RUttSjNDLEFBQUEsY0FBYyxDQUFDO0lBT1gsT0FBTyxFQUFFLEtBQUs7SUFDZCxRQUFRLEVBQUUsT0FBTztHQXNIcEI7OztBSnhFTyxNQUFNLENBQUMsTUFBTSxNQUFNLFNBQVMsRUFBRSxRQUFRO0VJdEQ5QyxBQUFBLGNBQWMsQ0FBQztJQU9YLE9BQU8sRUFBRSxLQUFLO0lBQ2QsUUFBUSxFQUFFLE9BQU87R0FzSHBCOzs7QUE5SEQsQUFVRSxjQVZZLENBVVosYUFBYSxDQUFBO0VONUtiLEdBQUcsRUFBRSxHQUFHO0VBQ1IsU0FBUyxFQUFFLGdCQUFnQjtFTThLekIsUUFBUSxFQUFFLFFBQVE7RUFDbEIsSUFBSSxFQUFFLENBQUM7RUFDUCxPQUFPLEVBQUUsS0FBSztFQUNkLE1BQU0sRUFBRSxVQUFVO0VBQ2xCLFNBQVMsRUFBRSxlQUFlO0NBUzNCOztBQTFCSCxBQW1CSSxjQW5CVSxDQVVaLGFBQWEsQ0FTWCxpQkFBaUIsQ0FBQTtFQUNmLE9BQU8sRUFBRSxJQUFJO0NBQ2Q7O0FBckJMLEFBdUJJLGNBdkJVLENBVVosYUFBYSxDQWFYLGNBQWMsQ0FBQTtFQUNaLE1BQU0sRUFBRSxDQUFDO0NBQ1Y7O0FBekJMLEFBNEJFLGNBNUJZLENBNEJaLGFBQWEsQ0FBQTtFQUNYLE9BQU8sRUFBRSxJQUFJO0VBQ2IsU0FBUyxFQUFFLGNBQWM7RUFDekIsS0FBSyxFQUFFLElBQUk7RUFDWCxLQUFLLEVBQUUsSUFBSTtFQUNYLFFBQVEsRUFBRSxRQUFRO0VBQ2xCLE9BQU8sRUFBRSxNQUFNO0VBRWYseUJBQXlCLEVBQUUsV0FBVztFQUN0QyxrQkFBa0IsRUF2Q1EsS0FBSztFQXdDL0IseUJBQXlCLEVBQUUsQ0FBQztFQUM1QixtQkFBbUIsRUFBRSxRQUFRO0NBc0Y5Qjs7QUE3SEgsQUF5Q0ksY0F6Q1UsQ0E0QlosYUFBYSxBQWFWLHNCQUFzQixDQUFBO0VBQ3JCLE9BQU8sRUFBRSxlQUFlO0NBQ3pCOztBQTNDTCxBQTZDSSxjQTdDVSxDQTRCWixhQUFhLEFBaUJWLGdCQUFnQixDQUFBO0VBQ2YsT0FBTyxFQUFFLEtBQUs7RUFDZCxjQUFjLEVBQUUsU0FBUztDQUMxQjs7QUFoREwsQUFrREksY0FsRFUsQ0E0QlosYUFBYSxBQXNCVixpQkFBaUIsQ0FBQTtFQUNoQixjQUFjLEVBQUUsVUFBVTtFQUMxQixPQUFPLEVBQUUsS0FBSztDQUNmOztBQXJETCxBQXVESSxjQXZEVSxDQTRCWixhQUFhLEFBMkJWLGVBQWUsQ0FBQTtFQUNkLE9BQU8sRUFBRSxLQUFLO0NBQ2Y7O0FBekRMLEFBMkRJLGNBM0RVLENBNEJaLGFBQWEsQUErQlYsZ0JBQWdCLENBQUE7RUFDZixPQUFPLEVBQUUsZUFBZTtDQUN6Qjs7QUE3REwsQUErREksY0EvRFUsQ0E0QlosYUFBYSxDQW1DWCxFQUFFLENBQUE7RUFDQSxRQUFRLEVBQUUsTUFBTTtDQVdqQjs7QUEzRUwsQUFrRU0sY0FsRVEsQ0E0QlosYUFBYSxDQW1DWCxFQUFFLEFBR0MsZ0JBQWdCLEVBbEV2QixjQUFjLENBNEJaLGFBQWEsQ0FtQ1gsRUFBRSxBQUdvQixnQkFBZ0IsQ0FBQTtFQUNsQyxVQUFVLEVBQUUsQ0FBQztFQUNiLFVBQVUsRUFBRSxVQUFVLENBdEVBLEtBQUssQ0FzRXlCLHdCQUFxQjtDQUMxRTs7QUFyRVAsQUF1RU0sY0F2RVEsQ0E0QlosYUFBYSxDQW1DWCxFQUFFLEFBUUMsaUJBQWlCLEVBdkV4QixjQUFjLENBNEJaLGFBQWEsQ0FtQ1gsRUFBRSxBQVFxQixlQUFlLENBQUE7RUFDbEMsVUFBVSxFQUFFLE1BQU07RUFDbEIsVUFBVSxFQUFFLFVBQVUsQ0EzRUEsS0FBSyxDQTJFeUIsd0JBQXFCO0NBQzFFOztBQTFFUCxBQThFTSxjQTlFUSxDQTRCWixhQUFhLENBaURYLEVBQUUsQ0FDQSxDQUFDLENBQUE7RUFDQyxRQUFRLEVBQUUsUUFBUTtFQUNsQixPQUFPLEVBQUUsQ0FBQztFQUNWLE9BQU8sRUFBRSxlQUFlO0NBUXpCOztBQXpGUCxBQW1GUSxjQW5GTSxDQTRCWixhQUFhLENBaURYLEVBQUUsQ0FDQSxDQUFDLEFBS0UsTUFBTSxDQUFDO0VBQ0wsYUFBYSxFQUFFLE9BQU87RUFDdEIsVUFBVSxFQUFFLE9BQU87RUFDbkIsS0FBSyxFQUFFLE9BQU87RUFDZixPQUFPLEVBQUUsZUFBZTtDQUN6Qjs7QUF4RlQsQUEwRk0sY0ExRlEsQ0E0QlosYUFBYSxDQWlEWCxFQUFFLEdBYUUsQ0FBQyxDQUFBO0VBQ0QsV0FBVyxFQUFFLElBQUk7RUFDakIsY0FBYyxFQUFFLElBQUk7Q0FDckI7O0FBN0ZQLEFBZ0dJLGNBaEdVLENBNEJaLGFBQWEsR0FvRVQsRUFBRSxDQUFBO0VBQ0YsT0FBTyxFQUFFLENBQUM7Q0FDWDs7QUFsR0wsQUFvR0ksY0FwR1UsQ0E0QlosYUFBYSxHQXdFVCxFQUFFLEdBQUcsQ0FBQyxDQUFBO0VBQ04sYUFBYSxFQUFFLElBQUk7Q0FDcEI7O0FBdEdMLEFBd0dJLGNBeEdVLENBNEJaLGFBQWEsQUE0RVYsTUFBTSxDQUFBO0VBQ0wsT0FBTyxFQUFFLEVBQUU7RUFDWCxRQUFRLEVBQUUsUUFBUTtFQUNsQixLQUFLLEVBQUUsSUFBSTtFQUNYLE1BQU0sRUFBRSxJQUFJO0VBQ1osR0FBRyxFQUFFLENBQUM7RUFDTixnQkFBZ0IsRUFBRSxJQUFJO0VBQ3RCLE9BQU8sRUFBRSxJQUFJO0VBQ2IsYUFBYSxFQUFFLFVBQVU7Q0FDMUI7O0FBakhMLEFBcUhNLGNBckhRLENBNEJaLGFBQWEsQ0F3RlgsQ0FBQyxBQUFBLFdBQVcsQ0FDVixJQUFJLENBQUE7RUFDRixPQUFPLEVBQUUsS0FBSztDQUNmOztBQXZIUCxBQXlITSxjQXpIUSxDQTRCWixhQUFhLENBd0ZYLENBQUMsQUFBQSxXQUFXLEFBS1QsTUFBTSxDQUFBO0VBQ0wsT0FBTyxFQUFFLElBQUk7Q0FDZDs7QUFLUCxBQUFBLElBQUksQ0FBQztFQUNILFlBQVksRUFBRSxHQUFHO0VBQUUsdUNBQXVDO0NBMEszRDs7QUF2S0csQUFBQSxJQUFJLEFBQUEsV0FBVyxDQUFDLElBQUksQ0FBQTtFQUNsQixPQUFPLEVBQUUsZUFBZTtDQUN6Qjs7QUx6UkgsTUFBTSxFQUFFLE9BQU8sRUFBRSxNQUFNLE9BQU8sS0FBSyxFQUFFLElBQUk7RUttUjNDLEFBQUEsSUFBSSxDQUFDO0lBVUQsWUFBWSxFQUFFLENBQUM7R0FpS2xCOzs7QUpyUE8sTUFBTSxDQUFDLE1BQU0sTUFBTSxTQUFTLEVBQUUsUUFBUTtFSTBFOUMsQUFBQSxJQUFJLENBQUM7SUFVRCxZQUFZLEVBQUUsQ0FBQztHQWlLbEI7OztBQTNLRCxBQWFFLElBYkUsQ0FhRixFQUFFLENBQUMsS0FBSyxDQUFBO0VBQ04sUUFBUSxFQUFFLFFBQVE7RUFDbEIsS0FBSyxFQUFFLENBQUM7RUFDUixPQUFPLEVBQUUsQ0FBQztDQUNYOztBQWpCSCxBQW1CRSxJQW5CRSxDQW1CRixFQUFFLEFBQUEsUUFBUTtBQW5CWixJQUFJLENBb0JGLEVBQUUsQUFBQSxNQUFNLENBQUE7RUFDTixRQUFRLEVBQUUsUUFBUTtDQUNuQjs7QUF0QkgsQUF3QkUsSUF4QkUsQ0F3QkYsRUFBRSxBQUFBLFFBQVEsQ0FBQyxLQUFLLENBQUE7RUFDZCxVQUFVLEVBQUUsNkNBQTZDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsVUFBVTtFQUN4RixLQUFLLEVBQUUsSUFBSTtFQUNYLE1BQU0sRUFBRSxJQUFJO0NBQ2I7O0FBNUJILEFBNkJFLElBN0JFLENBNkJGLEVBQUUsQUFBQSxNQUFNLENBQUMsS0FBSyxDQUFBO0VBQ1osVUFBVSxFQUFFLDJDQUEyQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLFVBQVU7RUFDdEYsS0FBSyxFQUFFLElBQUk7RUFDWCxNQUFNLEVBQUUsSUFBSTtFQUNaLFlBQVksRUFBRSxHQUFHO0NBQ2xCOztBSjVHSyxNQUFNLEVBQUUsU0FBUyxFQUFFLFNBQVM7RUkwRXBDLEFBcUNFLElBckNFLENBcUNGLE1BQU0sQ0FBQyxFQUFFLEFBQUEsVUFBVSxDQUFDLEVBQUUsQUFBQSxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBRzNCLFlBQVksRUFBRSxHQUFHO0lBQ2pCLGFBQWEsRUFBRSxJQUFJO0dBTXhCO0VBL0NILEFBMkNRLElBM0NKLENBcUNGLE1BQU0sQ0FBQyxFQUFFLEFBQUEsVUFBVSxDQUFDLEVBQUUsQUFBQSxRQUFRLENBQUMsQ0FBQyxDQU0xQixhQUFhLENBQUM7SUFDWixLQUFLLEVBQUUsSUFBSTtHQUNaOzs7QUE3Q1QsQUFrREUsSUFsREUsR0FrREEsb0JBQW9CLENBQUE7RUFDcEIsT0FBTyxFQUFFLElBQUk7Q0FpQ2Q7O0FMdldELE1BQU0sRUFBRSxPQUFPLEVBQUUsTUFBTSxPQUFPLEtBQUssRUFBRSxJQUFJO0VLbVIzQyxBQWtERSxJQWxERSxHQWtEQSxvQkFBb0IsQ0FBQTtJQUdsQixPQUFPLEVBQUUsS0FBSztHQStCakI7OztBSjlKSyxNQUFNLENBQUMsTUFBTSxNQUFNLFNBQVMsRUFBRSxRQUFRO0VJMEU5QyxBQWtERSxJQWxERSxHQWtEQSxvQkFBb0IsQ0FBQTtJQUdsQixPQUFPLEVBQUUsS0FBSztHQStCakI7OztBQTNCRyxBQUFBLElBQUksQUFBQSxrQkFBa0IsQ0FBQyxJQUFJLEdBQUcsb0JBQW9CLENBQXZCO0VBQ3pCLE9BQU8sRUFBRSxlQUFlO0NBQ3pCOztBQTNEUCxBQThESSxJQTlEQSxHQWtEQSxvQkFBb0IsQ0FZcEIsQ0FBQyxDQUFDO0VBQ0EsUUFBUSxFQUFFLFFBQVE7RUFDbEIsT0FBTyxFQUFFLEtBQUs7Q0FtQmY7O0FBbkZMLEFBaUVNLElBakVGLEdBa0RBLG9CQUFvQixDQVlwQixDQUFDLENBR0MsSUFBSSxDQUFBO0VBQ0YsT0FBTyxFQUFFLElBQUk7Q0FDZDs7QUFuRVAsQUFvRU0sSUFwRUYsR0FrREEsb0JBQW9CLENBWXBCLENBQUMsQUFNRSxNQUFNLENBQUE7RU50V1gsR0FBRyxFQUFFLEdBQUc7RUFDUixTQUFTLEVBQUUsZ0JBQWdCO0VNd0ozQixLQUFLLEVBTm1CLElBQUk7RUFPNUIsTUFBTSxFQU5tQixJQUFJO0VBTzdCLGdCQUFnQixFQUFFLE9BQU87RUFDekIsYUFBYSxFQUFFLEdBQUc7RUE0TVosT0FBTyxFQUFFLEVBQUU7RUFDWCxRQUFRLEVBQUUsUUFBUTtFQUNsQixLQUFLLEVBck5lLElBQUk7RUFzTnhCLGdCQUFnQixFQUFFLGdDQUFnQztFQUNsRCxpQkFBaUIsRUFBRSxTQUFTO0VBQzVCLGVBQWUsRUFBRSxPQUFPO0VBQ3hCLG1CQUFtQixFQUFFLGFBQWE7Q0FNbkM7O0FKNUpDLE1BQU0sQ0FBQyxNQUFNLE1BQU0sU0FBUyxFQUFFLElBQUk7RUkwRTFDLEFBb0VNLElBcEVGLEdBa0RBLG9CQUFvQixDQVlwQixDQUFDLEFBTUUsTUFBTSxDQUFBO0lBV0gsS0FBSyxFQUFFLElBQUk7SUFDWCxJQUFJLEVBQUUsSUFBMkQ7R0FFcEU7OztBQWxGUCxBQXVGRSxJQXZGRSxDQXVGRixxQkFBcUIsRUF2RnZCLElBQUksQ0F1RnFCLFdBQVcsQ0FBQTtFQUNoQyxPQUFPLEVBQUUsSUFBSTtDQVdkOztBQVJHLEFBQUEsSUFBSSxBQUFBLFVBQVUsQ0FBQyxJQUFJLENBQUMscUJBQXFCLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBeEM7RUFDakIsT0FBTyxFQUFFLEtBQUs7Q0FDZjs7QUFFRCxBQUFBLElBQUksQUFBQSxrQkFBa0IsQ0FBQyxJQUFJLENBQUMscUJBQXFCLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBeEM7RUFDekIsT0FBTyxFQUFFLGVBQWU7Q0FDekI7O0FBakdQLEFBNEdFLElBNUdFLENBNEdGLENBQUMsQUFBQSxXQUFXLENBQUM7RUFDWCxRQUFRLEVBQUUsUUFBUTtFQUNsQixPQUFPLEVBQUUsS0FBSztDQWVmOztBQTdISCxBQWdISSxJQWhIQSxDQTRHRixDQUFDLEFBQUEsV0FBVyxDQUlWLElBQUksQ0FBQTtFQUNGLE9BQU8sRUFBRSxJQUFJO0NBQ2Q7O0FBbEhMLEFBbUhJLElBbkhBLENBNEdGLENBQUMsQUFBQSxXQUFXLEFBT1QsTUFBTSxDQUFBO0VBQ0wsT0FBTyxFQUFFLEVBQUU7RUFDWCxRQUFRLEVBQUUsUUFBUTtFQUNsQixLQUFLLEVBakJVLElBQUk7RUFrQm5CLE1BQU0sRUFqQlEsSUFBSTtFQWtCbEIsaUJBQWlCLEVBQUUsU0FBUztFQUM1QixlQUFlLEVBcEJBLElBQUksQ0FDTCxJQUFJO0VBb0JsQixtQkFBbUIsRUFBRSxhQUFhO0VBQ2xDLGdCQUFnQixFQUFFLHlDQUF5QztDQUM1RDs7QUE1SEwsQUFnSUUsSUFoSUUsQ0FnSUYsS0FBSyxDQUFDLENBQUMsQUFBQSxXQUFXLENBQUE7RUFPaEIsT0FBTyxFQU5BLElBQUksQ0FLSCxJQUFpQyxDQUxsQyxJQUFJLENBSUosSUFBaUMsQ0FFTCxVQUFVO0NBUTlDOztBQS9JSCxBQXlJSSxJQXpJQSxDQWdJRixLQUFLLENBQUMsQ0FBQyxBQUFBLFdBQVcsQUFTZixNQUFNLENBQUE7RU5qYVQsR0FBRyxFQUFFLEdBQUc7RUFDUixJQUFJLEVBQUUsR0FBRztFQUNULFNBQVMsRUFBRSxnQkFBZ0IsQ0FBRSxnQkFBZ0I7Q01pYTFDOztBQTNJTCxBQTRJSSxJQTVJQSxDQWdJRixLQUFLLENBQUMsQ0FBQyxBQUFBLFdBQVcsQUFZZixNQUFNLEFBQUEsTUFBTSxDQUFBO0VBbkNiLGdCQUFnQixFQUFFLGtEQUFrRDtDQXFDbkU7O0FBOUlMLEFBaUpFLElBakpFLENBaUpGLEtBQUssQ0FBQyxFQUFFLEFBQUEsV0FBVyxDQUFDLENBQUMsQUFBQSxXQUFXLEFBQUEsTUFBTSxDQUFBO0VBeENwQyxnQkFBZ0IsRUFBRSxrREFBa0Q7Q0EwQ3JFOztBQW5KSCxBQXNKRSxJQXRKRSxHQXNKQSxDQUFDLEFBQUEsV0FBVyxDQUFBO0VBQ1osT0FBTyxFQUFFLElBQUk7Q0FtQmQ7O0FMN2JELE1BQU0sRUFBRSxPQUFPLEVBQUUsTUFBTSxPQUFPLEtBQUssRUFBRSxJQUFJO0VLbVIzQyxBQXNKRSxJQXRKRSxHQXNKQSxDQUFDLEFBQUEsV0FBVyxDQUFBO0lBR1YsT0FBTyxFQUFFLEtBQUs7R0FpQmpCOzs7QUpwUEssTUFBTSxDQUFDLE1BQU0sTUFBTSxTQUFTLEVBQUUsUUFBUTtFSTBFOUMsQUFzSkUsSUF0SkUsR0FzSkEsQ0FBQyxBQUFBLFdBQVcsQ0FBQTtJQUdWLE9BQU8sRUFBRSxLQUFLO0dBaUJqQjs7O0FKcFBLLE1BQU0sQ0FBQyxNQUFNLE1BQU0sU0FBUyxFQUFFLFFBQVE7RUkwRTlDLEFBc0pFLElBdEpFLEdBc0pBLENBQUMsQUFBQSxXQUFXLENBQUE7SUFRVixPQUFPLEVBQUUsZUFBZTtHQVkzQjs7O0FBMUtILEFBaUtJLElBaktBLEdBc0pBLENBQUMsQUFBQSxXQUFXLEFBV1gsTUFBTSxDQUFBO0VObmNULEdBQUcsRUFBRSxHQUFHO0VBQ1IsU0FBUyxFQUFFLGdCQUFnQjtFTXdKM0IsS0FBSyxFQU5tQixJQUFJO0VBTzVCLE1BQU0sRUFObUIsSUFBSTtFQU83QixnQkFBZ0IsRUFBRSxPQUFPO0VBQ3pCLGFBQWEsRUFBRSxHQUFHO0VBeVNkLEtBQUssRUFBRSxJQUEyRDtDQU1uRTs7QUpuUEcsTUFBTSxDQUFDLE1BQU0sTUFBTSxTQUFTLEVBQUUsSUFBSTtFSTBFMUMsQUFpS0ksSUFqS0EsR0FzSkEsQ0FBQyxBQUFBLFdBQVcsQUFXWCxNQUFNLENBQUE7SUFLSCxLQUFLLEVBQUUsSUFBSTtJQUNYLElBQUksRUFBRSxLQUFpRTtHQUUxRTs7O0FMNWJILE1BQU0sRUFBRSxPQUFPLEVBQUUsTUFBTSxPQUFPLEtBQUssRUFBRSxJQUFJO0VLaWMzQyxBQUFBLEtBQUssQ0FBQTtJQUdELE9BQU8sRUFBRSxJQUFJO0dBbUJoQjs7O0FKOVFPLE1BQU0sQ0FBQyxNQUFNLE1BQU0sU0FBUyxFQUFFLFFBQVE7RUl3UDlDLEFBQUEsS0FBSyxDQUFBO0lBR0QsT0FBTyxFQUFFLElBQUk7R0FtQmhCOzs7QUF0QkQsQUFNRSxLQU5HLENBTUgsYUFBYSxDQUFDO0VBQ1osV0FBVyxFQUFDLGNBQWM7RUFDMUIsT0FBTyxFQUFDLFlBQVk7RUFDcEIsS0FBSyxFQUFDLElBQUk7RUFDVixNQUFNLEVBQUMsSUFBSTtFQUNYLFFBQVEsRUFBQyxRQUFRO0VBQ2pCLEdBQUcsRUFBQyxHQUFHO0NBUVI7O0FKNVFLLE1BQU0sQ0FBQyxNQUFNLE1BQU0sU0FBUyxFQUFFLFFBQVE7RUl3UDlDLEFBY0ksS0FkQyxDQU1ILGFBQWEsQUFRVixPQUFPLENBQUE7SUFFSixPQUFPLEVBQUUsSUFBSTtHQUVoQjs7O0FDdmVMOzt5REFFeUQ7QUFFekQsQUFBQSxPQUFPLENBQUM7RUFDTixVQUFVLEVBQUUsT0FBTztFQUNuQixXQUFXLEVBQUUsR0FBRztFQUNoQixjQUFjLEVBQUUsR0FBRztFQUNuQixTQUFTLEVBQUUsSUFBSTtDQWlHaEI7O0FMb0hPLE1BQU0sQ0FBQyxNQUFNLE1BQU0sU0FBUyxFQUFFLE9BQU87RUt6TjdDLEFBQUEsT0FBTyxDQUFDO0lBT0osT0FBTyxFQUFFLElBQUk7R0E4RmhCOzs7QUFyR0QsQUFVRSxPQVZLLENBVUwsQ0FBQyxDQUFDO0VBQ0EsS0FBSyxFQUFFLEtBQUs7RUFDWixlQUFlLEVBQUUsSUFBSTtDQUN0Qjs7QUFiSCxBQWdCSSxPQWhCRyxDQWVMLE1BQU0sQ0FDSixFQUFFLENBQUM7RUFDRCxVQUFVLEVBQUUsTUFBTTtFQUNsQixZQUFZLEVBQUUsQ0FBQztFQUNmLE1BQU0sRUFBRSxLQUFLO0NBQ2Q7O0FBcEJMLEFBc0JJLE9BdEJHLENBZUwsTUFBTSxDQU9KLEVBQUUsQ0FBQztFQUNELE9BQU8sRUFBQyxNQUFNO0VBQ2QsWUFBWSxFQUFDLEdBQUc7RUFDaEIsYUFBYSxFQUFDLEdBQUc7Q0FLbEI7O0FBOUJMLEFBMkJNLE9BM0JDLENBZUwsTUFBTSxDQU9KLEVBQUUsQ0FLQSxDQUFDLEFBQUEsTUFBTSxDQUFBO0VBQ0wsZUFBZSxFQUFFLFNBQVM7Q0FDM0I7O0FBN0JQLEFBaUNFLE9BakNLLENBaUNMLEVBQUUsQUFBQSxjQUFjLENBQUE7RUFDZCxPQUFPLEVBQUUsWUFBWTtFQUNyQixPQUFPLEVBQUUsQ0FBQztFQUNWLFdBQVcsRUFBRSxHQUFHO0VBQ2hCLFNBQVMsRUFBRSxnQkFBZ0I7Q0E4RDVCOztBTm5GRCxNQUFNLEVBQUUsT0FBTyxFQUFFLE1BQU0sT0FBTyxLQUFLLEVBQUUsSUFBSTtFTWhCM0MsQUFpQ0UsT0FqQ0ssQ0FpQ0wsRUFBRSxBQUFBLGNBQWMsQ0FBQTtJQU9aLE9BQU8sRUFBRSxJQUFJO0dBMkRoQjs7O0FMc0hLLE1BQU0sQ0FBQyxNQUFNLE1BQU0sU0FBUyxFQUFFLFFBQVE7RUt6TjlDLEFBaUNFLE9BakNLLENBaUNMLEVBQUUsQUFBQSxjQUFjLENBQUE7SUFPWixPQUFPLEVBQUUsSUFBSTtHQTJEaEI7OztBQW5HSCxBQTJDSSxPQTNDRyxDQWlDTCxFQUFFLEFBQUEsY0FBYyxDQVVkLEVBQUUsQ0FBQztFQUNELEtBQUssRUFBRSxJQUFJO0VBQ1gsTUFBTSxFQUFFLENBQUM7RUFDVCxPQUFPLEVBQUUsQ0FBQztFQUNWLFNBQVMsRUFBRSxJQUFJO0VBQ2YsV0FBVyxFQUFFLElBQUk7RUFDakIsTUFBTSxFQUFFLElBQUk7RUFDWixVQUFVLEVBQUUsSUFBSTtDQVNqQjs7QUEzREwsQUFvRE0sT0FwREMsQ0FpQ0wsRUFBRSxBQUFBLGNBQWMsQ0FVZCxFQUFFLENBU0EsQ0FBQyxDQUFDO0VBQ0EsS0FBSyxFQUFFLElBQUk7RUFDWCxPQUFPLEVBQUUsS0FBSztFQUNkLEtBQUssRUFBRSxJQUFJO0VBQ1gsV0FBVyxFQUFFLGdCQUFnQjtFQUM3QixlQUFlLEVBQUUsSUFBSTtDQUN0Qjs7QUExRFAsQUE2REksT0E3REcsQ0FpQ0wsRUFBRSxBQUFBLGNBQWMsQ0E0QmQsYUFBYSxDQUFDO0VBQ1osV0FBVyxFQUFDLGNBQWM7RUFDMUIsT0FBTyxFQUFDLFlBQVk7RUFDcEIsS0FBSyxFQUFDLElBQUk7RUFDVixNQUFNLEVBQUMsSUFBSTtFQUNYLFFBQVEsRUFBQyxRQUFRO0VBQ2pCLEdBQUcsRUFBQyxHQUFHO0NBT1I7O0FMK0lHLE1BQU0sQ0FBQyxNQUFNLE1BQU0sU0FBUyxFQUFFLFFBQVE7RUt6TjlDLEFBcUVNLE9BckVDLENBaUNMLEVBQUUsQUFBQSxjQUFjLENBNEJkLGFBQWEsQUFRVixPQUFPLENBQUE7SUFFSixPQUFPLEVBQUUsSUFBSTtHQUVoQjs7O0FBekVQLEFBNEVJLE9BNUVHLENBaUNMLEVBQUUsQUFBQSxjQUFjLENBMkNkLFNBQVMsQ0FBQztFQUNSLFVBQVUsRUFBQyx5Q0FBeUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxVQUFVO0NBQ3BGOztBQTlFTCxBQWdGSSxPQWhGRyxDQWlDTCxFQUFFLEFBQUEsY0FBYyxDQStDZCxVQUFVLENBQUM7RUFDVCxVQUFVLEVBQUMsMENBQTBDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsVUFBVTtDQUNyRjs7QUFsRkwsQUFvRkksT0FwRkcsQ0FpQ0wsRUFBRSxBQUFBLGNBQWMsQ0FtRGQsUUFBUSxDQUFDO0VBQ1AsVUFBVSxFQUFDLHdDQUF3QyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLFVBQVU7Q0FDbkY7O0FBdEZMLEFBd0ZJLE9BeEZHLENBaUNMLEVBQUUsQUFBQSxjQUFjLENBdURkLFFBQVEsQ0FBQztFQUNQLFVBQVUsRUFBQyx3Q0FBd0MsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxVQUFVO0NBQ25GOztBQTFGTCxBQTRGSSxPQTVGRyxDQWlDTCxFQUFFLEFBQUEsY0FBYyxDQTJEZCxRQUFRLENBQUM7RUFDUCxVQUFVLEVBQUMsd0NBQXdDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsVUFBVTtDQUNuRjs7QUE5RkwsQUFnR0ksT0FoR0csQ0FpQ0wsRUFBRSxBQUFBLGNBQWMsQ0ErRGQsVUFBVSxDQUFDO0VBQ1QsVUFBVSxFQUFDLDBDQUEwQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLFVBQVU7Q0FDckY7O0FBS0wsQUFBQSxpQkFBaUIsQ0FBQztFQUNoQixNQUFNLEVBQUMsQ0FBQztFQUNSLGNBQWMsRUFBQyxJQUFJO0NBS3BCOztBQVBELEFBSUUsaUJBSmUsQ0FJZixHQUFHLEFBQUEsS0FBSyxDQUFBO0VBQ04sT0FBTyxFQUFDLE1BQU07Q0FDZjs7QUNqSEg7O3lEQUV5RDtBQUN6RCxBQUFBLElBQUksQUFBQSxjQUFjLENBQUMsT0FBTyxDQUFDLEVBQUUsQUFBQSxNQUFNLENBQUMsQ0FBQztBQUNyQyxJQUFJLEFBQUEsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLEVBQUUsQUFBQSxRQUFRLENBQUMsQ0FBQztBQUN6QyxJQUFJLEFBQUEsa0JBQWtCLENBQUMsT0FBTyxDQUFDLEVBQUUsQUFBQSxVQUFVLENBQUMsQ0FBQztBQUM3QyxJQUFJLEFBQUEsY0FBYyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEFBQUEsTUFBTSxDQUFDLENBQUM7QUFDckMsSUFBSSxBQUFBLHdCQUF3QixDQUFDLE9BQU8sQ0FBQyxFQUFFLEFBQUEsZ0JBQWdCLENBQUMsQ0FBQztBQUN6RCxJQUFJLEFBQUEsNkJBQTZCLENBQUMsT0FBTyxDQUFDLEVBQUUsQUFBQSxxQkFBcUIsQ0FBQyxDQUFDO0FBQ25FLElBQUksQUFBQSxzQkFBc0IsQ0FBQyxPQUFPLENBQUMsRUFBRSxBQUFBLGNBQWMsQ0FBQyxDQUFDO0FBQ3JELElBQUksQUFBQSxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsRUFBRSxBQUFBLFdBQVcsQ0FBQyxDQUFDO0FBQy9DLElBQUksQUFBQSx3QkFBd0IsQ0FBQyxPQUFPLENBQUMsRUFBRSxBQUFBLGdCQUFnQixDQUFDLENBQUMsQ0FBQTtFQUN2RCxLQUFLLEVBQUUsT0FBTztFQUNkLFVBQVUsRUFBRSxNQUFNO0NBQ25COztBQUdEOzt5REFFeUQ7QUFFekQsQUFBQSxJQUFJLEFBQUEsYUFBYSxDQUFDLEVBQUUsQUFBQSxVQUFVLENBQUMsRUFBRSxBQUFBLGFBQWEsQ0FBQyxDQUFDO0FBQ2hELElBQUksQUFBQSxrQkFBa0IsQ0FBQyxFQUFFLEFBQUEsVUFBVSxDQUFDLEVBQUUsQUFBQSxrQkFBa0IsQ0FBQyxDQUFDO0FBQzFELElBQUksQUFBQSxrQkFBa0IsQ0FBQyxFQUFFLEFBQUEsVUFBVSxDQUFDLEVBQUUsQUFBQSxrQkFBa0IsQ0FBQyxDQUFDO0FBQzFELElBQUksQUFBQSxtQkFBbUIsQ0FBQyxFQUFFLEFBQUEsVUFBVSxDQUFDLEVBQUUsQUFBQSxtQkFBbUIsQ0FBQyxDQUFDO0FBQzVELElBQUksQUFBQSxhQUFhLENBQUMsRUFBRSxBQUFBLFVBQVUsQ0FBQyxFQUFFLEFBQUEsYUFBYSxDQUFDLENBQUM7QUFDaEQsSUFBSSxBQUFBLFlBQVksQ0FBQyxFQUFFLEFBQUEsVUFBVSxDQUFDLEVBQUUsQUFBQSxTQUFTLENBQUMsQ0FBQztBQUMzQyxJQUFJLEFBQUEsWUFBWSxDQUFDLEVBQUUsQUFBQSxVQUFVLENBQUMsRUFBRSxBQUFBLFlBQVksQ0FBQyxDQUFDO0FBQzlDLElBQUksQUFBQSxhQUFhLENBQUMsRUFBRSxBQUFBLFVBQVUsQ0FBQyxFQUFFLEFBQUEsYUFBYSxDQUFDLENBQUM7QUFDaEQsSUFBSSxBQUFBLGtCQUFrQixDQUFDLEVBQUUsQUFBQSxVQUFVLENBQUMsRUFBRSxBQUFBLGtCQUFrQixDQUFDLENBQUMsQ0FBQTtFQUN4RCxtQkFBbUIsRUFBRSxVQUFVO0VBQy9CLEtBQUssRUFBRSxJQUFJO0VBQ1gsV0FBVyxFQUFFLElBQUk7Q0FDbEI7O0FDakNEOzt5REFFeUQ7QUFFekQsTUFBTSxDQUFDLEtBQUs7RUFFVixBQUFBLElBQUksRUFBRSxRQUFRLENBQUM7SUFDYixVQUFVLEVBQUUsZUFBZTtHQUM1QjtFQUVELEFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxPQUFPLEVBQUUsV0FBVyxDQUFDO0lBQ3BFLE9BQU8sRUFBRSxlQUFlO0dBQ3pCO0VBQ0QsQUFBQSxDQUFDLENBQUM7SUFDQSxlQUFlLEVBQUUsSUFBSTtJQUNyQixLQUFLLEVBQUUsS0FDVDtHQUFDO0VBQ0QsQUFBQSxXQUFXLENBQUM7SUFDVixPQUFPLEVBQUUsZ0JBQWdCO0dBQzFCO0VBQ0QsQUFBQSxrQkFBa0IsQ0FBQztJQUNqQixPQUFPLEVBQUUsaUJBQWlCO0dBQzNCO0VBRUQsQUFBQSxPQUFPLENBQUM7SUFDTixNQUFNLEVBQUUsT0FBTztJQUNmLEtBQUssRUFBRSxLQUFLO0lBQ1osUUFBUSxFQUFFLFFBQVE7SUFDbEIsR0FBRyxFQUFFLElBQUk7R0FNVjtFQVZELEFBTUUsT0FOSyxDQU1MLEdBQUcsQUFBQSxLQUFLLENBQUM7SUFDUCxXQUFXLEVBQUUsQ0FBQztJQUNkLE1BQU0sRUFBRSxJQUFJO0dBQ2I7RUFHSCxBQUFBLFFBQVEsRUFBRSxRQUFRLENBQUM7SUFDakIsT0FBTyxFQUFFLENBQ1g7R0FBQzs7O0FDcENILEFBQUEsWUFBWSxDQUFBO0VBQ1YsT0FBTyxFQUFFLElBQUk7Q0FhZDs7QUFYRyxBQUFBLElBQUksQUFBQSxVQUFVLENBQUMsWUFBWSxDQUFSO0VBQ2pCLE9BQU8sRUFBRSxLQUFLO0NBQ2Y7O0FBTEwsQUFTSSxZQVRRLENBUVYsMEJBQTBCLEFBQ3ZCLFFBQVEsQ0FBQTtFQUVQLE9BQU8sRUFBRSxVQUFVO0NBQ3BCOztBQ0dELEFBQUEsSUFBSSxBQUFBLElBQUssQ0FBQSxXQUFXLEVBQUUsWUFBWSxDQUFDLDBCQUEwQixBQUFBLFFBQVEsQ0FBMUM7RUFDekIsUUFBUSxFQUFFLFFBQVE7Q0FDbkI7O0FEakJMLEFDb0JFLFlEcEJVLENBUVYsMEJBQTBCLEFBQ3ZCLFFBQVEsQUNXVixPQUFPLENBQUM7RUFDUCxPQUFPLEVBQUUsRUFBRTtFQUNYLFFBQVEsRUFBRSxRQUFRO0VBQ2xCLEdBQUcsRUFBRSxHQUFHO0VBQ1IsSUFBSSxFQUFFLEdBQUc7RUFDVCxVQUFVLEVBQUksS0FBc0I7RUFDcEMsV0FBVyxFQUFJLEtBQXNCO0VBQ3JDLEtBQUssRUEzQmEsSUFBSTtFQTRCdEIsTUFBTSxFQTVCWSxJQUFJO0VBNkJ0QixhQUFhLEVBN0JLLElBQUk7RUE4QnRCLE1BQU0sRUE3QmlCLEdBQUcsQ0E2QlAsS0FBSyxDQTNCQSx5QkFBc0I7RUE0QjlDLGdCQUFnQixFQTdCUSxLQUFLO0VBOEI3QixTQUFTLEVBQUUsd0JBQXdCO0NBQ3BDOztBQUNELFVBQVUsQ0FBVixPQUFVO0VBQ1IsRUFBRTtJQUNBLFNBQVMsRUFBRSxZQUFZOztFQUV6QixJQUFJO0lBQ0YsU0FBUyxFQUFFLGNBQWM7Ozs7QWQvQi9COzt5REFFeUQ7QUFDekQsQUFBQSxJQUFJLENBQUM7RUFDSCxNQUFNLEVBQUMsQ0FBQztFQUNSLE9BQU8sRUFBQyxDQUFDO0VBQ1QsV0FBVyxFQUFFLGtDQUFrQztFQUMvQyxxQkFBcUIsRUFBRSxLQUFLO0VBQzVCLGdCQUFnQixFQUFFLElBQUk7Q0FrQnZCOztBS3lMTyxNQUFNLENBQUMsTUFBTSxNQUFNLFNBQVMsRUFBRSxJQUFJO0VMaE4xQyxBQUFBLElBQUksQ0FBQztJQVVELGVBQWUsRUFBRSxLQUFLO0lBQ3RCLHFCQUFxQixFQUFFLE1BQU07R0FZaEM7OztBS3lMTyxNQUFNLENBQUMsTUFBTSxNQUFNLFNBQVMsRUFBRSxPQUFPO0VMaE43QyxBQUFBLElBQUksQ0FBQztJQWVELGdCQUFnQixFQUFFLElBQUk7SUFDdEIsZUFBZSxFQUFFLENBQUM7R0FPckI7OztBQXZCRCxBQW1CRSxJQW5CRSxBQW1CRCxXQUFXLENBQUM7RUFDWCxVQUFVLEVBQUUsS0FBSztFQUNqQixVQUFVLEVBQUUsTUFBTTtDQUNuQjs7QUFJSCxBQUFBLFFBQVEsQ0FBQztFQUNQLE1BQU0sRUFBQyxDQUFDO0NBWVQ7O0FBVEcsQUFBQSxJQUFJLEFBQUEsSUFBSyxDQUFBLFdBQVcsRUFBRSxRQUFRLENBQUo7RUFDeEIsUUFBUSxFQUFFLFFBQVE7Q0FDbkI7O0FLZ0xHLE1BQU0sQ0FBQyxNQUFNLE1BQU0sU0FBUyxFQUFFLE9BQU87RUx0TDdDLEFBQUEsUUFBUSxDQUFDO0lBVUwsWUFBWSxFQUFFLENBQUM7SUFDZixhQUFhLEVBQUUsQ0FBQztHQUVuQjs7O0FBRUQsQUFBQSxLQUFLLENBQUM7RUFDSixLQUFLLEVFckRNLEtBQUs7RUZzRGhCLE1BQU0sRUFBRSxJQUFJO0NBS2I7O0FLZ0tPLE1BQU0sQ0FBQyxNQUFNLE1BQU0sU0FBUyxFQUFFLE9BQU87RUx2SzdDLEFBQUEsS0FBSyxDQUFDO0lBS0YsTUFBTSxFQUFFLENBQUM7R0FFWjs7O0FBRUQsQUFBQSxXQUFXLENBQUE7RUFDVCxLQUFLLEVFOURNLEtBQUs7RUYrRGhCLE1BQU0sRUFBRSxJQUFJO0NBQ2I7O0FLMkpPLE1BQU0sQ0FBQyxNQUFNLE1BQU0sU0FBUyxFQUFFLE9BQU87RUx4SjNDLEFBQUEsS0FBSyxFQUFFLFdBQVcsQ0FBQztJQUNqQixLQUFLLEVBQUUsSUFBSTtHQUNaOzs7QUFJSCxBQUFBLFFBQVEsQ0FBQztFQUNQLE9BQU8sRUFBRSxJQUFJO0VBQ2IsVUFBVSxFQUFFLFFBQWdCO0NBUzdCOztBS3VJTyxNQUFNLENBQUMsTUFBTSxNQUFNLFNBQVMsRUFBRSxPQUFPO0VMbEo3QyxBQUFBLFFBQVEsQ0FBQztJQUtMLE9BQU8sRUFBRSxHQUFHO0lBQ1osVUFBVSxFQUFFLEtBQUs7R0FLcEI7OztBS3VJTyxNQUFNLENBQUMsTUFBTSxNQUFNLFNBQVMsRUFBRSxJQUFJO0VMbEoxQyxBQUFBLFFBQVEsQ0FBQztJQVNMLFVBQVUsRUFBRSx3QkFBcUI7R0FFcEM7OztBQUVELEFBQUEsQ0FBQyxDQUFDO0VBQ0EsS0FBSyxFQUFFLE9BQU87Q0FDZjs7QUFFRCxBQUFBLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLENBQUM7RUFDYixXQUFXLEVBQUUsT0FBTztFQUNwQixXQUFXLEVBQUUsTUFBTTtDQUNwQjs7QUFFRCxBQUFBLEVBQUUsQ0FBQztFQUNELFlBQVksRUFBRSxVQUFVO0VBQ3hCLFVBQVUsRUFBRSxHQUFHO0VBQ2YsYUFBYSxFQUFFLEdBQUc7Q0FTbkI7O0FLZ0hPLE1BQU0sQ0FBQyxNQUFNLE1BQU0sU0FBUyxFQUFFLE9BQU87RUw1SDdDLEFBSUUsRUFKQSxBQUlDLElBQUssQ0FBQSxlQUFlLEVBQUM7SUFFbEIsU0FBUyxFQUFFLGdCQUFnQjtHQUs5Qjs7O0FLaUhLLE1BQU0sQ0FBQyxNQUFNLE1BQU0sU0FBUyxFQUFFLE9BQU87RUw1SDdDLEFBSUUsRUFKQSxBQUlDLElBQUssQ0FBQSxlQUFlLEVBQUM7SUFLbEIsU0FBUyxFQUFFLGdCQUFnQjtHQUU5Qjs7O0FBR0gsQUFBQSxFQUFFLENBQUM7RUFDRCxZQUFZLEVBQUUsVUFBVTtFQUN4QixhQUFhLEVBQUUsY0FBYztFQUM3QixVQUFVLEVBQUUsSUFBSTtFQUNoQixhQUFhLEVBQUUsR0FBRztDQVNuQjs7QUtpR08sTUFBTSxDQUFDLE1BQU0sTUFBTSxTQUFTLEVBQUUsT0FBTztFTDlHN0MsQUFLRSxFQUxBLEFBS0MsSUFBSyxDQUFBLGVBQWUsRUFBRTtJQUVuQixTQUFTLEVBQUUsZ0JBQWdCO0dBSzlCOzs7QUtrR0ssTUFBTSxDQUFDLE1BQU0sTUFBTSxTQUFTLEVBQUUsT0FBTztFTDlHN0MsQUFLRSxFQUxBLEFBS0MsSUFBSyxDQUFBLGVBQWUsRUFBRTtJQUtuQixTQUFTLEVBQUUsY0FBYztHQUU1Qjs7O0FBR0gsQUFBQSxFQUFFLENBQUM7RUFDRCxVQUFVLEVBQUUsSUFBSTtDQVNqQjs7QUtxRk8sTUFBTSxDQUFDLE1BQU0sTUFBTSxTQUFTLEVBQUUsT0FBTztFTC9GN0MsQUFFRSxFQUZBLEFBRUMsSUFBSyxDQUFBLGVBQWUsRUFBQztJQUVsQixTQUFTLEVBQUUsY0FBYztHQUs1Qjs7O0FLc0ZLLE1BQU0sQ0FBQyxNQUFNLE1BQU0sU0FBUyxFQUFFLE9BQU87RUwvRjdDLEFBRUUsRUFGQSxBQUVDLElBQUssQ0FBQSxlQUFlLEVBQUM7SUFLbEIsU0FBUyxFQUFFLGdCQUFnQjtHQUU5Qjs7O0FLc0ZLLE1BQU0sQ0FBQyxNQUFNLE1BQU0sU0FBUyxFQUFFLE9BQU87RUxuRjdDLEFBQ0UsQ0FERCxBQUNFLElBQUssQ0FBQSxlQUFlLEdBRHJCLENBQUMsQUFDQSxJQUFLLENBQUEsZUFBZSxFQUFFO0lBRW5CLFNBQVMsRUFBRSxnQkFBZ0I7R0FFOUI7OztBSzhFSyxNQUFNLENBQUMsTUFBTSxNQUFNLFNBQVMsRUFBRSxPQUFPO0VMM0U3QyxBQUNFLElBREcsQ0FBQSxFQUFFLElBQUksRUFBRSxBQUNWLElBQUssQ0FBQSxlQUFlLEdBRFQsRUFBRSxHQUFHLEVBQUUsQUFDbEIsSUFBSyxDQUFBLGVBQWUsRUFBRTtJQUVuQixTQUFTLEVBQUUsZ0JBQWdCO0dBRTlCOzs7QUFHSCxBQUFBLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0VBQ1QsZUFBZSxFQUFFLFNBQVM7RUFDMUIsMkJBQTJCO0VBQzNCLDZCQUE2QixFQUFFLElBQUk7RUFDbkMsNEJBQTRCLEVBQUUsSUFBSTtFQUNsQyxhQUFhLEVBQUUsR0FBRztDQUNuQjs7QUFFRCxBQUFBLEVBQUUsR0FBQyxDQUFDLEVBQUMsRUFBRSxHQUFDLENBQUMsRUFBQyxFQUFFLEdBQUMsQ0FBQyxFQUFDLEVBQUUsR0FBQyxDQUFDLEVBQUMsRUFBRSxHQUFDLENBQUMsQ0FBQztFQUN2QixVQUFVLEVBQUUsQ0FBQztDQUNkOztBSWhKQyxNQUFNLEVBQUUsT0FBTyxFQUFFLE1BQU0sT0FBTyxLQUFLLEVBQUUsSUFBSTtFSm1KM0MsQUFDRSxNQURJLEFBQ0gsSUFBSyxDQUFBLGVBQWUsRUFBRTtJQUVuQixPQUFPLEVBQUUsR0FBRztHQUVmOzs7QUtpREssTUFBTSxDQUFDLE1BQU0sTUFBTSxTQUFTLEVBQUUsUUFBUTtFTHREOUMsQUFDRSxNQURJLEFBQ0gsSUFBSyxDQUFBLGVBQWUsRUFBRTtJQUVuQixPQUFPLEVBQUUsR0FBRztHQUVmOzs7QUFJSCxBQUFBLFFBQVEsQ0FBQyxFQUFFLEVBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztFQUN0QixVQUFVLEVBQUUsR0FBRztFQUNmLGFBQWEsRUFBRSxHQUFHO0NBQ25COztBQUVELEFBQUEsUUFBUSxDQUFDLEVBQUUsRUFBQyxRQUFRLENBQUMsRUFBRSxDQUFDO0VBQ3RCLFlBQVksRUFBRSxHQUFHO0VBQ2pCLFdBQVcsRUFBRSxHQUFHO0NBQ2pCOztBQUVELEFBQUEsWUFBWSxDQUFDO0VBQ1gsS0FBSyxFQUFFLEtBQUs7Q0FDYjs7QUFFRCxBQUFBLFdBQVcsQ0FBQztFQUNWLEtBQUssRUFBRSxJQUFJO0NBQ1o7O0FBRUQsQUFBQSxNQUFNLENBQUM7RUFDTCxLQUFLLEVBQUUsSUFBSTtDQUNaOztBQUVELEFBQUEsT0FBTyxDQUFBO0VBQ0wsT0FBTyxFQUFFLGVBQWU7Q0FDekI7O0FBRUQsd0NBQXdDO0FlekxwQyxBQUFBLElBQUksQUFBQSxJQUFLLENBQUEsV0FBVyxFQUFFLE9BQU8sQ0FBRjtFQUN6QixRQUFRLEVBQUUsUUFBUTtDQUNuQjs7QWZ3TEwsQWVyTEUsT2ZxTEssQWVyTEosT0FBTyxDQUFDO0VBQ1AsT0FBTyxFQUFFLEVBQUU7RUFDWCxRQUFRLEVBQUUsUUFBUTtFQUNsQixHQUFHLEVBQUUsR0FBRztFQUNSLElBQUksRUFBRSxHQUFHO0VBQ1QsVUFBVSxFQUFJLEtBQXNCO0VBQ3BDLFdBQVcsRUFBSSxLQUFzQjtFQUNyQyxLQUFLLEVBM0JhLElBQUk7RUE0QnRCLE1BQU0sRUE1QlksSUFBSTtFQTZCdEIsYUFBYSxFQTdCSyxJQUFJO0VBOEJ0QixNQUFNLEVBN0JpQixHQUFHLENBNkJQLEtBQUssQ0EzQkEseUJBQXNCO0VBNEI5QyxnQkFBZ0IsRUE3QlEsS0FBSztFQThCN0IsU0FBUyxFQUFFLHdCQUF3QjtDQUNwQzs7QUFDRCxVQUFVLENBQVYsT0FBVTtFQUNSLEVBQUU7SUFDQSxTQUFTLEVBQUUsWUFBWTs7RUFFekIsSUFBSTtJQUNGLFNBQVMsRUFBRSxjQUFjOzs7O0FBeEIzQixBQUFBLElBQUksQUFBQSxJQUFLLENBQUEsV0FBVyxFQUFFLGdCQUFnQixDQUFYO0VBQ3pCLFFBQVEsRUFBRSxRQUFRO0NBQ25COztBZjRMTCxBZXpMRSxnQmZ5TGMsQWV6TGIsT0FBTyxDQUFDO0VBQ1AsT0FBTyxFQUFFLEVBQUU7RUFDWCxRQUFRLEVBQUUsUUFBUTtFQUNsQixHQUFHLEVBQUUsR0FBRztFQUNSLElBQUksRUFBRSxHQUFHO0VBQ1QsVUFBVSxFQUFJLEtBQXNCO0VBQ3BDLFdBQVcsRUFBSSxLQUFzQjtFQUNyQyxLQUFLLEVBM0JhLElBQUk7RUE0QnRCLE1BQU0sRUE1QlksSUFBSTtFQTZCdEIsYUFBYSxFQTdCSyxJQUFJO0VBOEJ0QixNQUFNLEVBN0JpQixHQUFHLENBNkJQLEtBQUssQ0F6QlMsbUJBQWdCO0VBMEJqRCxnQkFBZ0IsRUEzQmlCLEtBQUs7RUE0QnRDLFNBQVMsRUFBRSx3QkFBd0I7Q0FDcEM7O0FBQ0QsVUFBVSxDQUFWLE9BQVU7RUFDUixFQUFFO0lBQ0EsU0FBUyxFQUFFLFlBQVk7O0VBRXpCLElBQUk7SUFDRixTQUFTLEVBQUUsY0FBYzs7OztBQXhCM0IsQUFBQSxJQUFJLEFBQUEsSUFBSyxDQUFBLFdBQVcsRUFBRSxhQUFhLENBQVI7RUFDekIsUUFBUSxFQUFFLFFBQVE7Q0FDbkI7O0FmbU1MLEFlaE1FLGFmZ01XLEFlaE1WLE9BQU8sQ0FBQztFQUNQLE9BQU8sRUFBRSxFQUFFO0VBQ1gsUUFBUSxFQUFFLFFBQVE7RUFDbEIsR0FBRyxFQUFFLEdBQUc7RUFDUixJQUFJLEVBQUUsR0FBRztFQUNULFVBQVUsRUFBSSxLQUFzQjtFQUNwQyxXQUFXLEVBQUksS0FBc0I7RUFDckMsS0FBSyxFZnNMVyxJQUFJO0VlckxwQixNQUFNLEVmcUxVLElBQUk7RWVwTHBCLGFBQWEsRWZvTEcsSUFBSTtFZW5McEIsTUFBTSxFZm9MZSxHQUFHLENlcExMLEtBQUssQ0EzQkEseUJBQXNCO0VBNEI5QyxnQkFBZ0IsRUE3QlEsS0FBSztFQThCN0IsU0FBUyxFQUFFLHdCQUF3QjtDQUNwQzs7QUFDRCxVQUFVLENBQVYsT0FBVTtFQUNSLEVBQUU7SUFDQSxTQUFTLEVBQUUsWUFBWTs7RUFFekIsSUFBSTtJQUNGLFNBQVMsRUFBRSxjQUFjOzs7O0FBeEIzQixBQUFBLElBQUksQUFBQSxJQUFLLENBQUEsV0FBVyxFQUFFLHNCQUFzQixDQUFqQjtFQUN6QixRQUFRLEVBQUUsUUFBUTtDQUNuQjs7QWZ1TUwsQWVwTUUsc0Jmb01vQixBZXBNbkIsT0FBTyxDQUFDO0VBQ1AsT0FBTyxFQUFFLEVBQUU7RUFDWCxRQUFRLEVBQUUsUUFBUTtFQUNsQixHQUFHLEVBQUUsR0FBRztFQUNSLElBQUksRUFBRSxHQUFHO0VBQ1QsVUFBVSxFQUFJLEtBQXNCO0VBQ3BDLFdBQVcsRUFBSSxLQUFzQjtFQUNyQyxLQUFLLEVmc0xXLElBQUk7RWVyTHBCLE1BQU0sRWZxTFUsSUFBSTtFZXBMcEIsYUFBYSxFZm9MRyxJQUFJO0VlbkxwQixNQUFNLEVmb0xlLEdBQUcsQ2VwTEwsS0FBSyxDQXpCUyxtQkFBZ0I7RUEwQmpELGdCQUFnQixFQTNCaUIsS0FBSztFQTRCdEMsU0FBUyxFQUFFLHdCQUF3QjtDQUNwQzs7QUFDRCxVQUFVLENBQVYsT0FBVTtFQUNSLEVBQUU7SUFDQSxTQUFTLEVBQUUsWUFBWTs7RUFFekIsSUFBSTtJQUNGLFNBQVMsRUFBRSxjQUFjOzs7O0Fmc0wvQixNQUFNLENBQUMsTUFBTTtFQUNYLEFBQUEsV0FBVyxDQUFDO0lBQUMsT0FBTyxFQUFDLGVBQWU7R0FBRztFQUN2QyxBQUFBLGtCQUFrQixDQUFDO0lBQUMsT0FBTyxFQUFDLGVBQWU7R0FBRzs7O0FJN005QyxNQUFNLEVBQUUsT0FBTyxFQUFFLE1BQU0sT0FBTyxLQUFLLEVBQUUsSUFBSTtHRVJ6QyxBQUFBLEFBQUEsU0FBQyxDQUFVLFFBQVEsQUFBbEIsQ0FBbUIsSUFBSyxDQUFBLGVBQWUsRUFBQztJQU56QyxVQUFVLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsbUJBQWU7SUFTbkMsS0FBSyxFQUFFLGVBQWU7SUFDdEIsVUFBVSxFQUFFLElBQUk7SUFFaEIsWUFBWSxFQUFFLElBQUk7SUFDbEIsWUFBWSxFQUFFLEdBQUc7SUFDakIsWUFBWSxFQUFFLEtBQUs7SUFDbkIsYUFBYSxFQUFFLEdBQUc7SUFHbEIsTUFBTSxFQUFFLE1BQU07SUFDZCxPQUFPLEVBQUUsUUFBUTtJQUNqQixPQUFPLEVBQUUsWUFBWTtJQUNyQixRQUFRLEVBQUUsUUFBUTtJQUVsQixRQUFRLEVBQUUsTUFBTTtJQUNoQixXQUFXLEVBQUUsTUFBTTtJQUNuQixNQUFNLEVBQUUsT0FBTztJQUNmLFdBQVcsRUFBRSxJQUFJO0lBQ2pCLFVBQVUsRUFBRSxNQUFNO0lBQ2xCLGFBQWEsRUFBRSxRQUFRO0lBQ3ZCLGVBQWUsRUFBRSxJQUFJO0lBQ3JCLFdBQVcsRUFBRSxJQUFJO0lBQ2pCLFNBQVMsRUFBRSxJQUFJO0dBZ0NoQjtHQXpERCxBQUFBLEFBMkJFLFNBM0JELENBQVUsUUFBUSxBQUFsQixDQUFtQixJQUFLLENBQUEsZUFBZSxDQTJCckMsTUFBTSxHQTNCVCxBQUFBLFNBQUMsQ0FBVSxRQUFRLEFBQWxCLENBQW1CLElBQUssQ0FBQSxlQUFlLENBMkI1QixPQUFPLENBQUE7SUFDZixVQUFVLEVBQUUsT0FBTztHQUNwQjtHQTdCSCxBQUFBLEFBK0JFLFNBL0JELENBQVUsUUFBUSxBQUFsQixDQUFtQixJQUFLLENBQUEsZUFBZSxFQStCckMsQUFBQSxTQUFDLEFBQUEsRUFBVTtJQUNWLFlBQVksRUFBRSxJQUFJO0lBQ2xCLGFBQWEsRUFBRSxHQUFHO0dBTW5CO0dBdkNILEFBQUEsQUFrQ0ksU0FsQ0gsQ0FBVSxRQUFRLEFBQWxCLENBQW1CLElBQUssQ0FBQSxlQUFlLEVBK0JyQyxBQUFBLFNBQUMsQUFBQSxFQUdBLENBQUMsQ0FBQTtJSHpDTCxHQUFHLEVBQUUsR0FBRztJQUNSLFNBQVMsRUFBRSxnQkFBZ0I7SUcwQ3JCLFFBQVEsRUFBRSxRQUFRO0lBQ2xCLElBQUksRUFBRSxHQUFHO0dBQ1Y7R0F0Q0wsQUFBQSxBQXlDRSxTQXpDRCxDQUFVLFFBQVEsQUFBbEIsQ0FBbUIsSUFBSyxDQUFBLGVBQWUsQ0F5Q3JDLE1BQU0sQ0FBQztJQUNOLFVBQVUsRUFBRSxpRUFBaUU7SUFDN0UsWUFBWSxFQUFFLE9BQU87SUFDckIsVUFBVSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLGtCQUFrQjtHQUl6QztHQWhESCxBQUFBLEFBNkNJLFNBN0NILENBQVUsUUFBUSxBQUFsQixDQUFtQixJQUFLLENBQUEsZUFBZSxDQXlDckMsTUFBTSxBQUlKLE1BQU0sR0E3Q1gsQUFBQSxTQUFDLENBQVUsUUFBUSxBQUFsQixDQUFtQixJQUFLLENBQUEsZUFBZSxDQXlDckMsTUFBTSxBQUlLLE9BQU8sQ0FBQztJQUNoQixVQUFVLEVBQUUsaUVBQWlFO0dBQzlFO0dBL0NMLEFBQUEsQUFpREUsU0FqREQsQ0FBVSxRQUFRLEFBQWxCLENBQW1CLElBQUssQ0FBQSxlQUFlLENBaURyQyxLQUFLLENBQUE7SUFDRixVQUFVLEVBQUUsaUVBQStEO0lBQzNFLFlBQVksRUFBRSxPQUFPO0lBQ3JCLFVBQVUsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxrQkFBa0I7R0FJM0M7R0F4REgsQUFBQSxBQXFETSxTQXJETCxDQUFVLFFBQVEsQUFBbEIsQ0FBbUIsSUFBSyxDQUFBLGVBQWUsQ0FpRHJDLEtBQUssQUFJRCxNQUFNLEdBckRiLEFBQUEsU0FBQyxDQUFVLFFBQVEsQUFBbEIsQ0FBbUIsSUFBSyxDQUFBLGVBQWUsQ0FpRHJDLEtBQUssQUFJUSxPQUFPLENBQUE7SUFDZixVQUFVLEVBQUUsaUVBQStEO0dBQzVFO0dBS1AsQUFBQSxBQUFBLFNBQUMsQ0FBVSxVQUFVLEFBQXBCLENBQXFCLElBQUssQ0FBQSxlQUFlLEVBQUM7SUgzQzNDLGdCQUFnQixFRHhCWCxPQUFPO0lDeUJaLGFBQWEsRUFBQyxHQUFHO0lBUWpCLE9BQU8sRUFBRSxDQUFDO0lBQ1YsUUFBUSxFQUFFLFFBQVE7SUF5RGxCLFVBQVUsRUFBRSxnQkFBZ0I7SUFNNUIsS0FBSyxFQUFFLElBQUk7SUc1QlQsT0FBTyxFQUFFLFlBQVk7SUFDckIsVUFBVSxFQUFFLElBQUk7R0F5Q2pCO0dBNUNELEFBQUEsQUh6Q0EsU0d5Q0MsQ0FBVSxVQUFVLEFBQXBCLENBQXFCLElBQUssQ0FBQSxlQUFlLElBQTFDLEFBQUEsU0FBQyxDQUFVLFVBQVUsQUFBcEIsQ0FBcUIsSUFBSyxDQUFBLGVBQWUsRUh6Q3ZDLENBQUMsQ0FBQTtJQUNGLEtBQUssRUFBRSxLQUFLO0dBQ2I7R0d1Q0QsQUFBQSxBSC9CQSxTRytCQyxDQUFVLFVBQVUsQUFBcEIsQ0FBcUIsSUFBSyxDQUFBLGVBQWUsQ0gvQnpDLE9BQU8sQ0FBQTtJQUNOLE9BQU8sRUFBQyxFQUFFO0lBQ1YsUUFBUSxFQUFFLFFBQVE7SUFDbEIsS0FBSyxFQUFFLElBQUk7SUFDWCxNQUFNLEVEL0JRLElBQUk7SUNnQ2xCLElBQUksRUFBRSxDQUFDO0lBQ1AsR0FBRyxFQUFFLENBQUM7SUFDTixVQUFVLEVBQUUsaUNBQTBDO0lBQ3RELGFBQWEsRUFBRSxXQUFXO0lBQzFCLE9BQU8sRUFBRSxFQUFFO0dBQ1o7R0dxQkQsQUFBQSxBSG5CQSxTR21CQyxDQUFVLFVBQVUsQUFBcEIsQ0FBcUIsSUFBSyxDQUFBLGVBQWUsQ0huQnpDLE1BQU0sQ0FBQTtJQUNMLE9BQU8sRUFBQyxFQUFFO0lBQ1YsUUFBUSxFQUFFLFFBQVE7SUFDbEIsS0FBSyxFQUFFLElBQUk7SUFDWCxNQUFNLEVEM0NRLElBQUk7SUM0Q2xCLElBQUksRUFBRSxDQUFDO0lBQ1AsR0FBRyxFRDdDVyxJQUFJO0lDOENsQixVQUFVLEVBQUUsaUNBQTBDO0lBQ3RELE9BQU8sRUFBRSxFQUFFO0dBQ1o7R0dVRCxBQUFBLEFIUkEsU0dRQyxDQUFVLFVBQVUsQUFBcEIsQ0FBcUIsSUFBSyxDQUFBLGVBQWUsSUhSeEMsQ0FBQyxDQUFBO0lBQ0QsT0FBTyxFQUFFLENBQUM7R0FPWDtFQUpHLEFBQUEsSUFBSSxBQUFBLElBQUssQ0FBQSxXQUFXLEdBQUUsQUFBQSxTQUFDLENBQVUsVUFBVSxBQUFwQixDQUFxQixJQUFLLENBQUEsZUFBZSxJQUFJLENBQUMsQ0FBMUM7SUFDekIsUUFBUSxFQUFFLFFBQVE7R0FDbkI7R0dFTCxBQUFBLEFIZ0NBLFNHaENDLENBQVUsVUFBVSxBQUFwQixDQUFxQixJQUFLLENBQUEsZUFBZSxFSGdDMUMsQ0FBQyxHR2hDRCxBQUFBLFNBQUMsQ0FBVSxVQUFVLEFBQXBCLENBQXFCLElBQUssQ0FBQSxlQUFlLEVIZ0N2QyxNQUFNLENBQUM7SUFDUixLQUFLLEVBQUUsS0FBSztHQUNiO0dHbENELEFBQUEsQUhvQ0EsU0dwQ0MsQ0FBVSxVQUFVLEFBQXBCLENBQXFCLElBQUssQ0FBQSxlQUFlLEVIb0MxQyxFQUFFLENBQUM7SUFDRCxNQUFNLEVBQUUsSUFBSTtJQUNaLE1BQU0sRUFBRSxDQUFDO0dBQ1Y7R0d2Q0QsQUFBQSxBQU1FLFNBTkQsQ0FBVSxVQUFVLEFBQXBCLENBQXFCLElBQUssQ0FBQSxlQUFlLElBTXZDLEVBQUUsQ0FBQTtJQUNELE9BQU8sRUFBRSxLQUFLO0lBQ2QsUUFBUSxFQUFFLFFBQVE7SUFDbEIsUUFBUSxFQUFFLE9BQU87SUFDakIsTUFBTSxFQUFFLENBQUM7SUFDVCxPQUFPLEVBQUUsMkJBQTJCO0lBQ3BDLFVBQVUsRUFBRSxJQUFJO0lBQ2hCLFdBQVcsRUFBRSxJQUFJO0lBQ2pCLFlBQVksRUFBRSxJQUFJO0lBQ2xCLFlBQVksRUFBRSxLQUFLO0lBQ25CLFlBQVksRUFBRSxhQUFhO0lBQzNCLFNBQVMsRUFBRSxlQUFlO0dBMEIzQjs7O0FEMEdHLE1BQU0sQ0FBQyxNQUErQixNRHpNcEMsT0FBTyxFQUFFLE1BQU0sT0FBTyxLQUFLLEVBQUUsSUFBSSxPQ3lNaEIsU0FBUyxFQUFFLE9BQU87R0NySjNDLEFBQUEsQUFNRSxTQU5ELENBQVUsVUFBVSxBQUFwQixDQUFxQixJQUFLLENBQUEsZUFBZSxJQU12QyxFQUFFLENBQUE7SUFhQyxTQUFTLEVBQUUsZUFBZTtHQXdCN0I7OztBRi9GSCxNQUFNLEVBQUUsT0FBTyxFQUFFLE1BQU0sT0FBTyxLQUFLLEVBQUUsSUFBSTtHRW9EekMsQUFBQSxBQXNCSSxTQXRCSCxDQUFVLFVBQVUsQUFBcEIsQ0FBcUIsSUFBSyxDQUFBLGVBQWUsSUFNdkMsRUFBRSxDQWdCRCxDQUFDLENBQUE7SUFDQyxNQUFNLEVBQUUsQ0FBQztJQUNULFVBQVUsRUFBRSxJQUFJO0lBQ2hCLGVBQWUsRUFBRSxJQUFJO0lBQ3JCLFFBQVEsRUFBRSxNQUFNO0lBQ2hCLFNBQVMsRUFBRSxlQUFlO0dBZTNCOzs7QUQyR0MsTUFBTSxDQUFDLE1BQStCLE1Eek1wQyxPQUFPLEVBQUUsTUFBTSxPQUFPLEtBQUssRUFBRSxJQUFJLE9DeU1oQixTQUFTLEVBQUUsT0FBTztHQ3JKM0MsQUFBQSxBQXNCSSxTQXRCSCxDQUFVLFVBQVUsQUFBcEIsQ0FBcUIsSUFBSyxDQUFBLGVBQWUsSUFNdkMsRUFBRSxDQWdCRCxDQUFDLENBQUE7SUFPRyxTQUFTLEVBQUUsZUFBZTtHQWE3Qjs7O0FGOUZMLE1BQU0sRUFBRSxPQUFPLEVBQUUsTUFBTSxPQUFPLEtBQUssRUFBRSxJQUFJO0dFb0R6QyxBQUFBLEFBaUNNLFNBakNMLENBQVUsVUFBVSxBQUFwQixDQUFxQixJQUFLLENBQUEsZUFBZSxJQU12QyxFQUFFLENBZ0JELENBQUMsQUFXRSxNQUFNLENBQUE7SUFDTCxPQUFPLEVBQUUsR0FBRztJQUNaLFFBQVEsRUFBRSxRQUFRO0lBQ2xCLEtBQUssRUFBRSxHQUFHO0lBQ1YsU0FBUyxFQUFFLGVBQWU7R0FJM0I7OztBRDRHRCxNQUFNLENBQUMsTUFBK0IsTUR6TXBDLE9BQU8sRUFBRSxNQUFNLE9BQU8sS0FBSyxFQUFFLElBQUksT0N5TWhCLFNBQVMsRUFBRSxPQUFPO0dDckozQyxBQUFBLEFBaUNNLFNBakNMLENBQVUsVUFBVSxBQUFwQixDQUFxQixJQUFLLENBQUEsZUFBZSxJQU12QyxFQUFFLENBZ0JELENBQUMsQUFXRSxNQUFNLENBQUE7SUFNSCxTQUFTLEVBQUUsZUFBZTtHQUU3Qjs7O0FGN0ZQLE1BQU0sRUFBRSxPQUFPLEVBQUUsTUFBTSxPQUFPLEtBQUssRUFBRSxJQUFJO0VFbUd6QyxBQUFBLElBQUssQ0FBQSxlQUFlLENBQUMsSUFBSyxFQUFBLEFBQUEsU0FBQyxBQUFBLEVBQVcsSUFBSyxFQUFBLEFBQUEsSUFBQyxBQUFBLEtBQVMsRUFBRSxHQUFHLENBQUMsQUFBQSxXQUFXLENBQUE7SUFDcEUsT0FBTyxFQUFFLEtBQUs7SUFDZCxPQUFPLEVBQUUsWUFBWTtHQUN0Qjs7O0FEbUdLLE1BQU0sQ0FBQyxNQUFNLE1BQU0sU0FBUyxFQUFFLFFBQVE7R0NqTjVDLEFBQUEsQUFBQSxTQUFDLENBQVUsUUFBUSxBQUFsQixDQUFtQixJQUFLLENBQUEsZUFBZSxFQUFDO0lBTnpDLFVBQVUsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxtQkFBZTtJQVNuQyxLQUFLLEVBQUUsZUFBZTtJQUN0QixVQUFVLEVBQUUsSUFBSTtJQUVoQixZQUFZLEVBQUUsSUFBSTtJQUNsQixZQUFZLEVBQUUsR0FBRztJQUNqQixZQUFZLEVBQUUsS0FBSztJQUNuQixhQUFhLEVBQUUsR0FBRztJQUdsQixNQUFNLEVBQUUsTUFBTTtJQUNkLE9BQU8sRUFBRSxRQUFRO0lBQ2pCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLFFBQVEsRUFBRSxRQUFRO0lBRWxCLFFBQVEsRUFBRSxNQUFNO0lBQ2hCLFdBQVcsRUFBRSxNQUFNO0lBQ25CLE1BQU0sRUFBRSxPQUFPO0lBQ2YsV0FBVyxFQUFFLElBQUk7SUFDakIsVUFBVSxFQUFFLE1BQU07SUFDbEIsYUFBYSxFQUFFLFFBQVE7SUFDdkIsZUFBZSxFQUFFLElBQUk7SUFDckIsV0FBVyxFQUFFLElBQUk7SUFDakIsU0FBUyxFQUFFLElBQUk7R0FnQ2hCO0dBekRELEFBQUEsQUEyQkUsU0EzQkQsQ0FBVSxRQUFRLEFBQWxCLENBQW1CLElBQUssQ0FBQSxlQUFlLENBMkJyQyxNQUFNLEdBM0JULEFBQUEsU0FBQyxDQUFVLFFBQVEsQUFBbEIsQ0FBbUIsSUFBSyxDQUFBLGVBQWUsQ0EyQjVCLE9BQU8sQ0FBQTtJQUNmLFVBQVUsRUFBRSxPQUFPO0dBQ3BCO0dBN0JILEFBQUEsQUErQkUsU0EvQkQsQ0FBVSxRQUFRLEFBQWxCLENBQW1CLElBQUssQ0FBQSxlQUFlLEVBK0JyQyxBQUFBLFNBQUMsQUFBQSxFQUFVO0lBQ1YsWUFBWSxFQUFFLElBQUk7SUFDbEIsYUFBYSxFQUFFLEdBQUc7R0FNbkI7R0F2Q0gsQUFBQSxBQWtDSSxTQWxDSCxDQUFVLFFBQVEsQUFBbEIsQ0FBbUIsSUFBSyxDQUFBLGVBQWUsRUErQnJDLEFBQUEsU0FBQyxBQUFBLEVBR0EsQ0FBQyxDQUFBO0lIekNMLEdBQUcsRUFBRSxHQUFHO0lBQ1IsU0FBUyxFQUFFLGdCQUFnQjtJRzBDckIsUUFBUSxFQUFFLFFBQVE7SUFDbEIsSUFBSSxFQUFFLEdBQUc7R0FDVjtHQXRDTCxBQUFBLEFBeUNFLFNBekNELENBQVUsUUFBUSxBQUFsQixDQUFtQixJQUFLLENBQUEsZUFBZSxDQXlDckMsTUFBTSxDQUFDO0lBQ04sVUFBVSxFQUFFLGlFQUFpRTtJQUM3RSxZQUFZLEVBQUUsT0FBTztJQUNyQixVQUFVLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsa0JBQWtCO0dBSXpDO0dBaERILEFBQUEsQUE2Q0ksU0E3Q0gsQ0FBVSxRQUFRLEFBQWxCLENBQW1CLElBQUssQ0FBQSxlQUFlLENBeUNyQyxNQUFNLEFBSUosTUFBTSxHQTdDWCxBQUFBLFNBQUMsQ0FBVSxRQUFRLEFBQWxCLENBQW1CLElBQUssQ0FBQSxlQUFlLENBeUNyQyxNQUFNLEFBSUssT0FBTyxDQUFDO0lBQ2hCLFVBQVUsRUFBRSxpRUFBaUU7R0FDOUU7R0EvQ0wsQUFBQSxBQWlERSxTQWpERCxDQUFVLFFBQVEsQUFBbEIsQ0FBbUIsSUFBSyxDQUFBLGVBQWUsQ0FpRHJDLEtBQUssQ0FBQTtJQUNGLFVBQVUsRUFBRSxpRUFBK0Q7SUFDM0UsWUFBWSxFQUFFLE9BQU87SUFDckIsVUFBVSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLGtCQUFrQjtHQUkzQztHQXhESCxBQUFBLEFBcURNLFNBckRMLENBQVUsUUFBUSxBQUFsQixDQUFtQixJQUFLLENBQUEsZUFBZSxDQWlEckMsS0FBSyxBQUlELE1BQU0sR0FyRGIsQUFBQSxTQUFDLENBQVUsUUFBUSxBQUFsQixDQUFtQixJQUFLLENBQUEsZUFBZSxDQWlEckMsS0FBSyxBQUlRLE9BQU8sQ0FBQTtJQUNmLFVBQVUsRUFBRSxpRUFBK0Q7R0FDNUU7R0FLUCxBQUFBLEFBQUEsU0FBQyxDQUFVLFVBQVUsQUFBcEIsQ0FBcUIsSUFBSyxDQUFBLGVBQWUsRUFBQztJSDNDM0MsZ0JBQWdCLEVEeEJYLE9BQU87SUN5QlosYUFBYSxFQUFDLEdBQUc7SUFRakIsT0FBTyxFQUFFLENBQUM7SUFDVixRQUFRLEVBQUUsUUFBUTtJQXlEbEIsVUFBVSxFQUFFLGdCQUFnQjtJQU01QixLQUFLLEVBQUUsSUFBSTtJRzVCVCxPQUFPLEVBQUUsWUFBWTtJQUNyQixVQUFVLEVBQUUsSUFBSTtHQXlDakI7R0E1Q0QsQUFBQSxBSHpDQSxTR3lDQyxDQUFVLFVBQVUsQUFBcEIsQ0FBcUIsSUFBSyxDQUFBLGVBQWUsSUFBMUMsQUFBQSxTQUFDLENBQVUsVUFBVSxBQUFwQixDQUFxQixJQUFLLENBQUEsZUFBZSxFSHpDdkMsQ0FBQyxDQUFBO0lBQ0YsS0FBSyxFQUFFLEtBQUs7R0FDYjtHR3VDRCxBQUFBLEFIL0JBLFNHK0JDLENBQVUsVUFBVSxBQUFwQixDQUFxQixJQUFLLENBQUEsZUFBZSxDSC9CekMsT0FBTyxDQUFBO0lBQ04sT0FBTyxFQUFDLEVBQUU7SUFDVixRQUFRLEVBQUUsUUFBUTtJQUNsQixLQUFLLEVBQUUsSUFBSTtJQUNYLE1BQU0sRUQvQlEsSUFBSTtJQ2dDbEIsSUFBSSxFQUFFLENBQUM7SUFDUCxHQUFHLEVBQUUsQ0FBQztJQUNOLFVBQVUsRUFBRSxpQ0FBMEM7SUFDdEQsYUFBYSxFQUFFLFdBQVc7SUFDMUIsT0FBTyxFQUFFLEVBQUU7R0FDWjtHR3FCRCxBQUFBLEFIbkJBLFNHbUJDLENBQVUsVUFBVSxBQUFwQixDQUFxQixJQUFLLENBQUEsZUFBZSxDSG5CekMsTUFBTSxDQUFBO0lBQ0wsT0FBTyxFQUFDLEVBQUU7SUFDVixRQUFRLEVBQUUsUUFBUTtJQUNsQixLQUFLLEVBQUUsSUFBSTtJQUNYLE1BQU0sRUQzQ1EsSUFBSTtJQzRDbEIsSUFBSSxFQUFFLENBQUM7SUFDUCxHQUFHLEVEN0NXLElBQUk7SUM4Q2xCLFVBQVUsRUFBRSxpQ0FBMEM7SUFDdEQsT0FBTyxFQUFFLEVBQUU7R0FDWjtHR1VELEFBQUEsQUhSQSxTR1FDLENBQVUsVUFBVSxBQUFwQixDQUFxQixJQUFLLENBQUEsZUFBZSxJSFJ4QyxDQUFDLENBQUE7SUFDRCxPQUFPLEVBQUUsQ0FBQztHQU9YO0VBSkcsQUFBQSxJQUFJLEFBQUEsSUFBSyxDQUFBLFdBQVcsR0FBRSxBQUFBLFNBQUMsQ0FBVSxVQUFVLEFBQXBCLENBQXFCLElBQUssQ0FBQSxlQUFlLElBQUksQ0FBQyxDQUExQztJQUN6QixRQUFRLEVBQUUsUUFBUTtHQUNuQjtHR0VMLEFBQUEsQUhnQ0EsU0doQ0MsQ0FBVSxVQUFVLEFBQXBCLENBQXFCLElBQUssQ0FBQSxlQUFlLEVIZ0MxQyxDQUFDLEdHaENELEFBQUEsU0FBQyxDQUFVLFVBQVUsQUFBcEIsQ0FBcUIsSUFBSyxDQUFBLGVBQWUsRUhnQ3ZDLE1BQU0sQ0FBQztJQUNSLEtBQUssRUFBRSxLQUFLO0dBQ2I7R0dsQ0QsQUFBQSxBSG9DQSxTR3BDQyxDQUFVLFVBQVUsQUFBcEIsQ0FBcUIsSUFBSyxDQUFBLGVBQWUsRUhvQzFDLEVBQUUsQ0FBQztJQUNELE1BQU0sRUFBRSxJQUFJO0lBQ1osTUFBTSxFQUFFLENBQUM7R0FDVjtHR3ZDRCxBQUFBLEFBTUUsU0FORCxDQUFVLFVBQVUsQUFBcEIsQ0FBcUIsSUFBSyxDQUFBLGVBQWUsSUFNdkMsRUFBRSxDQUFBO0lBQ0QsT0FBTyxFQUFFLEtBQUs7SUFDZCxRQUFRLEVBQUUsUUFBUTtJQUNsQixRQUFRLEVBQUUsT0FBTztJQUNqQixNQUFNLEVBQUUsQ0FBQztJQUNULE9BQU8sRUFBRSwyQkFBMkI7SUFDcEMsVUFBVSxFQUFFLElBQUk7SUFDaEIsV0FBVyxFQUFFLElBQUk7SUFDakIsWUFBWSxFQUFFLElBQUk7SUFDbEIsWUFBWSxFQUFFLEtBQUs7SUFDbkIsWUFBWSxFQUFFLGFBQWE7SUFDM0IsU0FBUyxFQUFFLGVBQWU7R0EwQjNCOzs7QUQwR0csTUFBTSxDQUFDLE1BQStCLE1BQW5CLFNBQVMsRUFBRSxRQUFRLE9BQW5CLFNBQVMsRUFBRSxPQUFPO0dDckozQyxBQUFBLEFBTUUsU0FORCxDQUFVLFVBQVUsQUFBcEIsQ0FBcUIsSUFBSyxDQUFBLGVBQWUsSUFNdkMsRUFBRSxDQUFBO0lBYUMsU0FBUyxFQUFFLGVBQWU7R0F3QjdCOzs7QUQwR0csTUFBTSxDQUFDLE1BQU0sTUFBTSxTQUFTLEVBQUUsUUFBUTtHQ3JKNUMsQUFBQSxBQXNCSSxTQXRCSCxDQUFVLFVBQVUsQUFBcEIsQ0FBcUIsSUFBSyxDQUFBLGVBQWUsSUFNdkMsRUFBRSxDQWdCRCxDQUFDLENBQUE7SUFDQyxNQUFNLEVBQUUsQ0FBQztJQUNULFVBQVUsRUFBRSxJQUFJO0lBQ2hCLGVBQWUsRUFBRSxJQUFJO0lBQ3JCLFFBQVEsRUFBRSxNQUFNO0lBQ2hCLFNBQVMsRUFBRSxlQUFlO0dBZTNCOzs7QUQyR0MsTUFBTSxDQUFDLE1BQStCLE1BQW5CLFNBQVMsRUFBRSxRQUFRLE9BQW5CLFNBQVMsRUFBRSxPQUFPO0dDckozQyxBQUFBLEFBc0JJLFNBdEJILENBQVUsVUFBVSxBQUFwQixDQUFxQixJQUFLLENBQUEsZUFBZSxJQU12QyxFQUFFLENBZ0JELENBQUMsQ0FBQTtJQU9HLFNBQVMsRUFBRSxlQUFlO0dBYTdCOzs7QUQyR0MsTUFBTSxDQUFDLE1BQU0sTUFBTSxTQUFTLEVBQUUsUUFBUTtHQ3JKNUMsQUFBQSxBQWlDTSxTQWpDTCxDQUFVLFVBQVUsQUFBcEIsQ0FBcUIsSUFBSyxDQUFBLGVBQWUsSUFNdkMsRUFBRSxDQWdCRCxDQUFDLEFBV0UsTUFBTSxDQUFBO0lBQ0wsT0FBTyxFQUFFLEdBQUc7SUFDWixRQUFRLEVBQUUsUUFBUTtJQUNsQixLQUFLLEVBQUUsR0FBRztJQUNWLFNBQVMsRUFBRSxlQUFlO0dBSTNCOzs7QUQ0R0QsTUFBTSxDQUFDLE1BQStCLE1BQW5CLFNBQVMsRUFBRSxRQUFRLE9BQW5CLFNBQVMsRUFBRSxPQUFPO0dDckozQyxBQUFBLEFBaUNNLFNBakNMLENBQVUsVUFBVSxBQUFwQixDQUFxQixJQUFLLENBQUEsZUFBZSxJQU12QyxFQUFFLENBZ0JELENBQUMsQUFXRSxNQUFNLENBQUE7SUFNSCxTQUFTLEVBQUUsZUFBZTtHQUU3Qjs7O0FENEdELE1BQU0sQ0FBQyxNQUFNLE1BQU0sU0FBUyxFQUFFLFFBQVE7RUN0RzVDLEFBQUEsSUFBSyxDQUFBLGVBQWUsQ0FBQyxJQUFLLEVBQUEsQUFBQSxTQUFDLEFBQUEsRUFBVyxJQUFLLEVBQUEsQUFBQSxJQUFDLEFBQUEsS0FBUyxFQUFFLEdBQUcsQ0FBQyxBQUFBLFdBQVcsQ0FBQTtJQUNwRSxPQUFPLEVBQUUsS0FBSztJQUNkLE9BQU8sRUFBRSxZQUFZO0dBQ3RCOzs7QU4rR0g7O3lEQUV5RDtBQUN6RCxBQUFBLElBQUksQUFBQSxXQUFXLENBQUMsSUFBSSxBQUFBLElBQUssQ0FBQSxVQUFVO0FBQ25DLElBQUksQUFBQSxPQUFPLENBQUMsUUFBUSxBQUFBLElBQUssQ0FBQSxVQUFVO0FBQ25DLElBQUksQUFBQSxXQUFXLENBQUMsWUFBWSxBQUFBLElBQUssQ0FBQSxVQUFVO0FBQzNDLElBQUksQUFBQSxPQUFPLENBQUMsUUFBUSxBQUFBLElBQUssQ0FBQSxVQUFVO0FBQ25DLElBQUksQUFBQSxPQUFPLENBQUMsbUJBQW1CLEFBQUEsSUFBSyxDQUFBLFVBQVU7QUFDOUMsSUFBSSxBQUFBLFdBQVcsQ0FBQyxtQkFBbUIsQUFBQSxJQUFLLENBQUEsVUFBVSxFQUFDO0VBQ2pELE9BQU8sRUFBRSxlQUFlO0NBQ3pCIgp9 */