/*------------------------------------*\
    #TABLE OF CONTENTS
\*------------------------------------*/
/**
 * ABSTRACTS..............................Declarations of Sass variables & mixins
 * BASE...................................Default element styles
 * LAYOUT.................................Layout-specific styles
 * COMPONENTS.............................Component styles
 * UTILITIES..............................Utility classes
 */
/*------------------------------------*\
    #ABSTRACTS
\*------------------------------------*/
/*------------------------------------*\
    #VARIABLES
\*------------------------------------*/
/**
 * CONTENTS
 *
 * COLORS
 * Brand Colors...............Globally-available variables and config
 * Neutral Colors.............Grayscale colors, including white and black
 * Utility Colors.............Info, Warning, Error, Success
 *
 * TYPOGRAPHY
 * Font Families..............The fonts used in the design system
 * Sizing.....................Font sizing
 *
 * LAYOUT
 * Max-widths.................Maximum layout container width
 *

 * SPACING
 * Spacing defaults...........Spacing between elements
 *
 * BORDERS
 * Border Width...............Border thicknesses
 * Border Radius..............Border radius definitions
 *
 * ANIMATION
 * Animation Speed............Transition/animation speed variables
 * Animation easing...........Easing variables
 *
 * BREAKPOINTS
 * Breakpoints................Global breakpoint definitions
 */
/*------------------------------------*\
     #COLORS
 \*------------------------------------*/
/**
 * Brand Colors
 * 1) Brand=specific colors
 */
/**
 * Neutral Colors
 * 1) Neutral colors are grayscale values used throughout the UI
 */
/**
 * Utility Colors
 * 1) Utility colors are colors used to provide feedback, such as alert messages,
 *    form validation, etc.
 */
/*------------------------------------*\
    #TYPOGRAPHY
\*------------------------------------*/
/**
 * Font Family
 */
/**
 * Font Sizing
 */
/**
 * Line Height
 */
/*------------------------------------*\
    #LAYOUT
\*------------------------------------*/
/**
 * Max Width
 */
/*------------------------------------*\
    #SPACING
\*------------------------------------*/
/**
 * Spacing and offsets
 * 1) Used to space grids and body padding
 */
/*------------------------------------*\
    #BORDERS
\*------------------------------------*/
/**
 * Border
 */
/**
 * Border radius
 */
/*------------------------------------*\
    #ANIMATION
\*------------------------------------*/
/**
 * Transition Speed
 */
/**
 * Transition Ease
 */
/*------------------------------------*\
    #BREAKPOINTS
\*------------------------------------*/
/**
 * Breakpoints used in media queries
 * 1) These are not the only breakpoints used, but they provide a few defaults
 */
/*------------------------------------*\
    #MIXINS
\*------------------------------------*/
/**
 * Body Styles
 * 1) Prevent Mobile Safari from scaling up text: https://blog.55minutes.com/2012/04/iphone-text-resizing/
 */
/**
 * XL Type Styles
 */
/**
 * XL Heading Styles
 */
/**
 * XL Heading Styles
 */
/**
 * Large Heading Styles
 */
/**
 * Medium 2 Heading Styles
 */
/**
 * Medium Heading Styles
 */
/*------------------------------------*\
    #COLORS
\*------------------------------------*/
/**
 * In this file, we take the literal colors from our palette (defined in variables.scss)
 * and define them against variables that we can utilise anywhere throughout the project.
 */
/*------------------------------------*\
    #GLOBAL TEXT COLOR
\*------------------------------------*/
/**
 * Body text and background colors
 */
/**
 * Highlight colors
 */
/*------------------------------------*\
    #LINKS
\*------------------------------------*/
/*------------------------------------*\
    #BUTTONS
\*------------------------------------*/
/*------------------------------------*\
    #FORMS
\*------------------------------------*/
/*------------------------------------*\
    #BREAKPOINTS
\*------------------------------------*/
/**
 * In this file, we take the literal colors from our palette and define them
 * against variables that we can utilise anywhere throughout the project.
 */
/*------------------------------------*\
    #BASE
\*------------------------------------*/
/*------------------------------------*\
    #RESET
\*------------------------------------*/
/**
 * Border-Box http:/paulirish.com/2012/box-sizing-border-box-ftw/
 */
* {
  box-sizing: border-box;
}

/**
 * 1) Zero out margins and padding for elements
 */
html, body, div, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, ol, ul, li, form, legend, label, table, header, footer, nav, section, figure {
  margin: 0;
  padding: 0;
}

/**
 * 1) Set HTML5 elements to display: block
 */
header, footer, nav, section, article, figure {
  display: block;
}

/*------------------------------------*\
    #BODY
\*------------------------------------*/
/**
 * HTML base styles
 * 1) Set the html element's height to at least 100% of the viewport.
 *    This is used to achieve a sticky footer
 */
html {
  min-height: 100vh;
  /* 1 */
}

/**
 * Body base styles
 * 1) Set the body element's height to at least 100% of the viewport.
 *    This is used to achieve a sticky footer
 */
body {
  -webkit-font-smoothing: antialiased;
  background-color: #fff;
  color: #43494f;
  font-family: "Montserrat", "HelveticaNeue", "Helvetica", "Arial", sans-serif;
  min-height: 100vh;
  /* 1 */
  -webkit-text-size-adjust: 100%;
  /* 1 */
  font-size: 1rem;
  line-height: 1.6;
  line-height: 1.6;
  -webkit-text-size-adjust: 100%;
  /* 1 */
  font-family: "Montserrat", "HelveticaNeue", "Helvetica", "Arial", sans-serif;
  -webkit-text-size-adjust: 100%;
  /* 1 */
  font-size: 1rem;
  line-height: 1.6;
  line-height: 1.6;
  -webkit-text-size-adjust: 100%;
  /* 1 */
  background-color: #fff;
  color: #43494f;
  -webkit-font-smoothing: antialiased;
}

/*------------------------------------*\
    #LINKS
\*------------------------------------*/
/**
 * Link base styles
 */
a {
  color: #666;
  text-decoration: none;
  outline: 0;
  -webkit-transition: color 0.15s ease-out;
  transition: color 0.15s ease-out;
}

a:hover, a:focus {
  color: #2AA1AF;
}

a:active {
  color: #43494f;
}

/*------------------------------------*\
    #LISTS
\*------------------------------------*/
/**
 * 1) List base styles
 */
/**
  * Remove list styles from unordered and ordered lists
  */
ol, ul {
  list-style: none;
}

/*------------------------------------*\
    #HEADINGS
\*------------------------------------*/
h1, h2, h3, h4 {
  font-family: "Crimson Text", serif;
}

/**
 * Heading 1 base styles
 */
h1 {
  font-size: 3rem;
  font-weight: normal;
  line-height: 1.2;
}

@media all and (min-width: 47em) {
  h1 {
    font-size: 4rem;
  }
}

/**
 * Heading 2 base styles
 */
h2 {
  font-size: 1.2rem;
  font-weight: normal;
  line-height: 1.2;
}

/**
 * Heading 3 base styles
 */
h3 {
  font-size: 1.2rem;
  font-weight: normal;
  line-height: 1.2;
}

/**
 * Heading 4 base styles
 */
h4 {
  font-size: 1rem;
  font-weight: normal;
  line-height: 1.2;
}

/*------------------------------------*\
    #FORMS
\*------------------------------------*/
/**
 * 1) Form element base styles
 */
/**
 * Input placeholder text base styles
 */
::-webkit-input-placeholder {
  color: #cfd2d6;
}

::-moz-placeholder {
  color: #cfd2d6;
}

:-ms-input-placeholder {
  color: #cfd2d6;
}

/**
 * Fieldset base styles
 */
fieldset {
  border: 0;
  padding: 0;
  margin: 0;
}

/**
 * Legend base styles
 */
legend {
  margin-bottom: 0.25rem;
}

/**
 * Label base styles
 */
label {
  display: block;
  padding-bottom: 0.25rem;
  color: #43494f;
}

/**
 * Add font size 100% of form element and margin 0 to these elements
 */
button, input, select, textarea {
  font-family: inherit;
  font-size: 1rem;
  margin: 0;
}

/**
 * Text area base styles
 */
textarea {
  resize: none;
}

/**
 * Input  and text area base styles
 */
input, textarea {
  width: 100%;
  padding: 0.5rem;
  border: 1px solid #666;
  background: #fff;
}

input:focus, textarea:focus {
  border-color: #43494f;
}

input:disabled, textarea:disabled {
  border-color: #eee;
  background: #eee;
  color: #cfd2d6;
}

/**
 * Remove webkit appearance styles from these elements
 */
input[type=text], input[type=search], input[type="search"]::-webkit-search-cancel-button, input[type="search"]::-webkit-search-decoration, input[type=url], input[type=number], textarea {
  -webkit-appearance: none;
}

/**
 * Checkbox and radio button base styles
 */
input[type="checkbox"],
input[type="radio"] {
  width: auto;
  margin-right: 0.3rem;
  border-color: #666;
}

/**
 * Search input base styles
 */
input[type="search"] {
  -webkit-appearance: none;
  border-radius: 0;
}

/**
 * Select
 * 1) Remove default styling
 */
select {
  display: block;
  font-size: 1rem;
  width: 100%;
  border: 1px solid #666;
  border-radius: 0;
  padding: 0.5rem;
  height: 2rem;
  background: #fff;
  color: #43494f;
}

select:focus {
  border-color: #43494f;
}

/*------------------------------------*\
    #BUTTONS
\*------------------------------------*/
/**
 * Button and submit inputs reset
 * 1) These should be styled using c-btn
 */
button {
  cursor: pointer;
}

/*------------------------------------*\
    #MAIN ELEMENT
\*------------------------------------*/
/**
 * Main element
 */
[role=main] {
  display: block;
  -webkit-box-flex: 1;
  flex: 1 0 auto;
}

/*------------------------------------*\
    #MEDIA
\*------------------------------------*/
/**
 * Responsive image styling
 * 1) Allows for images to flex with varying screen size
 */
img {
  max-width: 100%;
  height: auto;
}

/*------------------------------------*\
    #TEXT
\*------------------------------------*/
/**
 * Paragraph base styles
 */
p {
  margin-bottom: 1rem;
}

/**
 * Blockquote base styles
 */
blockquote {
  font-style: italic;
  border-left: 2px solid #2AA1AF;
  color: #666;
  padding-left: 1rem;
  margin-bottom: 1rem;
}

/**
 * Horizontal rule base styles
 */
hr {
  border: 0;
  height: 1px;
  background: #ddd;
  margin: 1rem 0;
}

/**
 * Selection styles
 */
::-moz-selection {
  color: #43494f;
  background: #ddd;
  /* Gecko Browsers */
}

::selection {
  color: #43494f;
  background: #ddd;
  /* WebKit/Blink Browsers */
}

/**
 * Code base styles
 */
code {
  display: inline-block;
  background: #f9f9f9;
  border: 1px solid #ddd;
  padding: .2rem .5rem;
  line-height: 1.2;
  font-size: .85rem;
}

/**
 * Preformatted text base styles
 */
pre {
  background: #f9f9f9;
  border: 1px solid #ddd;
  font-size: 1rem;
  padding: 1rem;
  overflow-x: auto;
  /**
	 * Remove border from code within preformatted text block
	 */
}

pre code {
  border: 0;
}

/**
 * Code with languages associated with them
 * 1) Override Prism sysles for code blocks with language
 */
code[class*="language-"],
pre[class*="language-"] {
  font-family: monospace !important;
}

/*------------------------------------*\
    #TABLES
\*------------------------------------*/
/**
 * Table
 */
table {
  border-collapse: collapse;
  border-spacing: 0;
  width: 100%;
}

/**
 * Table header cell
 */
th {
  text-align: left;
}

/**
 * Table row
 */
tr {
  vertical-align: top;
}

/*------------------------------------*\
    #LAYOUT
\*------------------------------------*/
/*------------------------------------*\
    #LAYOUT
\*------------------------------------*/
/**
 * Layout Container
 * 1) Caps the width of the content to the maximum width
 *    and centers the container
 */
.l-container {
  max-width: 80rem;
  padding: 0 1rem;
  margin: 0 auto;
}

@media all and (min-width: 60em) {
  .l-container {
    padding: 0 2rem;
  }
}

.l-container--narrow {
  max-width: 45rem;
}

/**
 *
 * 1) This caps the width of text passages
 *    to achieve a comfortable line length
 */
.l-linelength-container {
  max-width: 36rem;
}

.l-band {
  background: #f9f9f9;
  padding: 2rem 1rem;
}

/**
 * 2 column layout
 */
.l-page-layout--two-column {
  display: -webkit-box;
  display: flex;
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
  flex-direction: column;
}

@media all and (min-width: 60em) {
  .l-page-layout--two-column {
    -webkit-box-orient: horizontal;
    -webkit-box-direction: normal;
    flex-direction: row;
  }
}

@media all and (min-width: 60em) {
  .l-page-layout--two-column .l-page-layout__main {
    width: 70%;
    padding-right: 1rem;
  }
}

/**
 * Sidebar
 */
@media all and (min-width: 60em) {
  .l-page-layout--two-column .l-page-layout__secondary {
    width: 30%;
    margin-left: 2rem;
  }
}

.l-page-layout--reversed .l-page-layout__secondary {
  margin-bottom: 2rem;
}

@media all and (min-width: 60em) {
  .l-page-layout--reversed .l-page-layout__secondary {
    -webkit-box-ordinal-group: 2;
    order: 1;
    margin-bottom: 0;
  }
}

/*------------------------------------*\
    #GRID
\*------------------------------------*/
/**
 * Grid Container
 */
.l-grid {
  display: -webkit-box;
  display: flex;
  flex-wrap: wrap;
}

@supports (display: grid) {
  .l-grid {
    display: grid;
    grid-gap: 2rem;
    grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));
    margin: 0;
  }
}

/**
 * Grid Item
 */
.l-grid__item {
  display: -webkit-box;
  display: flex;
}

/*------------------------------------*\
    #COMPONENTS
\*------------------------------------*/
/*------------------------------------*\
    #BUTTONS
\*------------------------------------*/
/**
 *
 * 1) Button or link that has functionality to it
 */
.c-btn {
  display: inline-block;
  border: 1px solid #43494f;
  background: #10455B;
  color: #fff;
  line-height: 1;
  padding: 1rem 2rem;
  border: 0;
  text-transform: uppercase;
  text-align: center;
  -webkit-transition: all 0.15s ease-out;
  transition: all 0.15s ease-out;
}

.c-btn:hover, .c-btn:focus {
  color: #fff;
  background: #082430;
}

.c-btn--bare {
  background: none;
  color: #10455B;
  border: 1px solid transparent;
}

.c-btn--bare:hover, .c-btn--bare:focus {
  background: none;
  color: #10455B;
  border-color: #10455B;
}

/*
 * Inner container wrapper
 * 1) Container is direct decendant of <button>, since there's
 *    a bug with applying flexbox directly to a <button>
 * 2) Only needs to be used for buttons containing both icons and text
 */
.c-btn__inner {
  display: -webkit-box;
  display: flex;
  -webkit-box-align: center;
  align-items: center;
  -webkit-box-pack: center;
  justify-content: center;
}

/*
 * Button icon
 */
.c-btn__icon {
  width: 1rem;
  height: 1rem;
  fill: #fff;
  -webkit-transition: fill 0.15s ease-out;
  transition: fill 0.15s ease-out;
}

/*------------------------------------*\
   #DEFINITION LIST
\*------------------------------------*/
/**
* 1) Definition list (`dl`) that contains a definition term (`dt`) and a definition description (`dd`)
*/
.c-definition-list {
  margin: 0 0 1rem;
}

/**
* Definition list item
*/
.c-definition-list__item {
  display: -webkit-box;
  display: flex;
}

@media all and (min-width: 60em) {
  .c-definition-list__item {
    -webkit-box-pack: justify;
    justify-content: space-between;
  }
}

/**
* Definition list term
*/
.c-definition-list__term {
  font-weight: bold;
  margin-bottom: 0.25rem;
  width: 5rem;
}

@media all and (min-width: 60em) {
  .c-definition-list__term {
    width: auto;
  }
}

/**
* Definition list description
*/
/*------------------------------------*\
   #DEFINITION LIST LIST
\*------------------------------------*/
/**
* 1) List of definition lists
*/
/**
 * Definition list list item
 */
.c-definition-list-list--lined .c-definition-list-list__item {
  margin-bottom: 1rem;
  border-bottom: 1px solid #ddd;
}

/*------------------------------------*\
	#HERO BLOCK
\*------------------------------------*/
/**
 * 1) Sit hero flush with header. Normally we wouldn't 
 *    do this and handle margin using utility classes,
 *    but we're taking a shortcut for a demo.
 */
.c-hero {
  display: block;
  position: relative;
  margin: -2rem 0 2rem;
  /* 1 */
}

/**
 * Hero Image
 * 1) This is the primary hero image that runs full-bleed across the layout
 */
.c-hero__img {
  display: block;
  width: 100%;
  -o-object-fit: cover;
  object-fit: cover;
  max-height: 70vh;
  overflow: hidden;
}

.c-hero__body {
  background: #2AA1AF;
  padding: 1rem;
}

@media all and (min-width: 35em) {
  .c-hero__body {
    padding: 0;
    display: -webkit-box;
    display: flex;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
    flex-direction: column;
    -webkit-box-pack: center;
    justify-content: center;
    -webkit-box-align: center;
    align-items: center;
    position: absolute;
    top: 0;
    right: 0;
    bottom: 0;
    left: 0;
    height: 100%;
    width: 100%;
    background: -webkit-gradient(linear, left top, left bottom, color-stop(0, rgba(0, 0, 0, 0)), color-stop(20%, rgba(0, 0, 0, 0)), to(#000));
    background: linear-gradient(to bottom, rgba(0, 0, 0, 0) 0, rgba(0, 0, 0, 0) 20%, #000 100%);
  }
}

/**
 * Hero Headline
 * 1) This sits overtop of the hero image when space permits
 */
.c-hero__headline {
  text-transform: uppercase;
  font-size: 3rem;
  background-color: #2AA1AF;
  color: #fff;
  -webkit-transition: all 0.15s ease-out;
  transition: all 0.15s ease-out;
}

@media all and (min-width: 35em) {
  .c-hero__headline {
    padding: 0 0.4rem;
    font-size: 4rem;
  }
}

/*------------------------------------*\
	#TOUT BLOCK
\*------------------------------------*/
/**
 * 1) The tout block contains an image and headline overlayed over the image.
 */
.c-tout {
  display: block;
  position: relative;
  overflow: hidden;
  max-width: 1024px;
}

/**
 *  Tout image
 */
.c-tout__img {
  display: block;
}

/**
 *  Tout headline
 */
.c-tout__headline {
  position: absolute;
  bottom: 0;
  left: 0;
  width: 100%;
  text-transform: uppercase;
  letter-spacing: 1px;
  color: #fff;
  padding: 0.5rem;
  font-size: 1.4rem;
  -webkit-transition: all 0.15s ease-out;
  transition: all 0.15s ease-out;
}

.c-tout:hover .c-tout__headline, .c-tout:focus .c-tout__headline {
  padding-bottom: 2rem;
  background: #10455B;
}

/*------------------------------------*\
    #SECTION HEADER
\*------------------------------------*/
/**
 * 1) A group of text with a title that headlines a section
 */
.c-section__header {
  display: -webkit-box;
  display: flex;
  -webkit-box-align: center;
  align-items: center;
  position: relative;
  margin-bottom: 1rem;
}

.c-section__header:after {
  content: '';
  display: block;
  -webkit-box-flex: 1;
  flex: 1;
  height: 2px;
  margin-left: 1rem;
  background: #2AA1AF;
}

.c-section__title {
  font-size: 2rem;
}

/*------------------------------------*\
    #STACKED BLOCK
\*------------------------------------*/
/**
 * 1) A link block consisting of media, headline, and description all stacked on top
 * of each other
 * 2) Capped for demo purposes
 */
.c-stacked-block {
  display: -webkit-box;
  display: flex;
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
  flex-direction: column;
  position: relative;
  max-width: 600px;
  /* 2 */
  -webkit-transition: -webkit-transform 0.15s ease-out;
  transition: -webkit-transform 0.15s ease-out;
  transition: transform 0.15s ease-out;
  transition: transform 0.15s ease-out, -webkit-transform 0.15s ease-out;
}

.c-stacked-block:hover, .c-stacked-block:focus {
  -webkit-transform: scale(1.03);
  transform: scale(1.03);
}

.c-stacked-block__body {
  -webkit-box-flex: 1;
  flex: 1;
}

.c-stacked-block__title {
  text-transform: uppercase;
  letter-spacing: 1px;
  color: #10455B;
  -webkit-transition: color 0.15s ease-out;
  transition: color 0.15s ease-out;
}

.c-stacked-block:hover .c-stacked-block__title, .c-stacked-block:focus .c-stacked-block__title {
  color: #2AA1AF;
}

.c-stacked-block__excerpt {
  margin-bottom: 0;
  color: #666;
}

.c-stacked-block__meta {
  color: #10455B;
  font-size: 1.2rem;
  font-family: "Crimson Text", serif;
  margin-bottom: 0;
  -webkit-transition: color 0.15s ease-out;
  transition: color 0.15s ease-out;
}

.c-stacked-block:hover .c-stacked-block__meta, .c-stacked-block:focus .c-stacked-block__meta {
  color: #2AA1AF;
}

.c-stacked-block__badge {
  display: block;
  position: absolute;
  top: 0;
  right: 0;
  padding: 0.5rem;
  font-family: "Crimson Text", serif;
  text-transform: uppercase;
  color: #fff;
  background: #2AA1AF;
}

.c-stacked-block__optional {
  margin-left: 0.5rem;
  color: #cfd2d6;
  font-family: "Crimson Text", serif;
  font-size: 0.85rem;
  text-decoration: line-through;
}

/*------------------------------------*\
    #STRIPE
\*------------------------------------*/
/**
 * 1) Block that contains a right and left column of text and other possible components
 */
.c-stripe {
  padding: 2rem 0;
}

@media all and (min-width: 35em) {
  .c-stripe {
    display: -webkit-box;
    display: flex;
  }
}

.c-stripe-list--condensed .c-stripe {
  padding: 1rem 0;
}

/**
 * Stripe lef container
 * 1) Contains elements that display on the left side of the stripe
 */
.c-stripe__left-container {
  margin-right: 2rem;
}

@media all and (min-width: 35em) {
  .c-stripe__left-container {
    width: 20%;
  }
}

.c-stripe-list--condensed .c-stripe__left-container {
  display: none;
}

.c-stripe__link {
  display: block;
}

@media all and (min-width: 35em) {
  .c-stripe__link {
    max-width: 10rem;
  }
}

/**
 * Stripe right container
 * 1) Contains elements that display on the right side of the stripe
 */
.c-stripe__right-container {
  -webkit-box-flex: 1;
  flex: 1;
}

@media all and (min-width: 35em) {
  .c-stripe__right-container {
    display: -webkit-box;
    display: flex;
    -webkit-box-align: center;
    align-items: center;
  }
}

.c-stripe__title {
  margin-bottom: 2rem;
}

@media all and (min-width: 35em) {
  .c-stripe__title {
    margin-bottom: 0;
    margin-right: 2rem;
    width: 40%;
  }
}

@media all and (min-width: 35em) {
  .c-stripe__meta {
    margin-left: 2rem;
    margin-bottom: 2.25rem;
    width: 20%;
    text-align: right;
    -webkit-box-flex: 1;
    flex: 1;
  }
}

.c-stripe__meta-label {
  font-weight: bold;
  margin-bottom: 0.75rem;
}

.c-stripe__meta-span {
  font-family: "Crimson Text", serif;
  color: #10455B;
  font-size: 1.2rem;
}

/*------------------------------------*\
    #STRIPE LIST
\*------------------------------------*/
/**
 * 1) Block that contains a right and left column of text and other possible components
 */
.c-stripe-list__item {
  border-bottom: 1px solid #ddd;
}

/*------------------------------------*\
    $FOOTER
\*------------------------------------*/
/**
 * 1) Global block at the bottom of each page that contains a navigation and other information
 */
.c-footer {
  padding: 2rem 0;
  margin-top: 2rem;
  background: #082430;
}

@media all and (min-width: 47em) {
  .c-footer__inner {
    display: -webkit-box;
    display: flex;
  }
}

@media all and (min-width: 47em) {
  .c-footer__bottom {
    margin-left: auto;
  }
}

.c-footer__credit, .c-footer__copyright {
  color: #fff;
  text-transform: uppercase;
  font-family: "Crimson Text", serif;
  font-size: 0.85rem;
}

.c-footer__credit a, .c-footer__copyright a {
  color: #2AA1AF;
}

.c-footer__credit a:hover, .c-footer__credit a:focus, .c-footer__copyright a:hover, .c-footer__copyright a:focus {
  color: #cfd2d6;
}

/*------------------------------------*\
    #FOOTER NAV
\*------------------------------------*/
/**
 * 1) Global block at the bottom of each page that contains a navigation and other information
 */
.c-footer-nav {
  margin-bottom: 2rem;
}

@media all and (min-width: 47em) {
  .c-footer-nav {
    display: -webkit-box;
    display: flex;
    margin-bottom: 0;
  }
}

@media all and (min-width: 47em) {
  .c-footer-nav__item {
    margin-right: 2rem;
  }
  .c-footer-nav__item:last-child {
    margin-right: 0;
  }
}

.c-footer-nav__link {
  color: #fff;
  font-family: "Crimson Text", serif;
  text-transform: uppercase;
  font-size: 1.2rem;
}

/*------------------------------------*\
    #HEADER
\*------------------------------------*/
/**
 * Global block at the top of each page containing the navigation, logo, and other potential contents
 */
.c-header {
  position: relative;
  margin-bottom: 2rem;
  border-bottom: 1px solid #ddd;
}

/**
 * Header inner
 */
.c-header__inner {
  padding-top: 1rem;
  padding-bottom: 1rem;
}

@media all and (min-width: 35em) {
  .c-header__inner {
    display: -webkit-box;
    display: flex;
    -webkit-box-align: center;
    align-items: center;
  }
}

/**
 * Header navigation button
 * 1) Button used to toggle the navigation on/off on small screens
 */
.c-header__nav-btn {
  margin-left: auto;
}

@media all and (min-width: 70em) {
  .c-header__nav-btn {
    display: none;
  }
}

/**
 * Header navigation conntainer
 * 1) Contains the primary navigation and other possible patterns
 */
.c-header__nav-container {
  display: none;
  /**
	 * Header navigation conntainer within vertical header
	 */
}

@media all and (min-width: 70em) {
  .c-header__nav-container {
    display: block;
    margin-left: auto;
  }
}

@media all and (min-width: 70em) {
  .c-header--vertical .c-header__nav-container {
    margin-left: 0;
  }
}

/**
 * Active header nav container
 */
.c-header__nav-container.is-active {
  display: block;
  position: absolute;
  background: #eee;
  top: 100%;
  left: 0;
  width: 100%;
  z-index: 5;
  padding: 1rem;
  /**
	 * Active header nav container within vertical header
	 */
}

@media all and (min-width: 70em) {
  .c-header__nav-container.is-active {
    display: block;
    position: static;
    padding: 0;
    margin-left: auto;
    width: inherit;
  }
}

@media all and (min-width: 70em) {
  .c-header--vertical .c-header__nav-container.is-active {
    margin-left: 0;
    width: 100%;
  }
}

/*------------------------------------*\
    #LOGO
\*------------------------------------*/
/**
 * Branding image or text of the site
 */
.c-logo {
  font-size: 2rem;
}

.c-footer .c-logo {
  margin-bottom: 2rem;
}

@media all and (min-width: 47em) {
  .c-footer .c-logo {
    margin-bottom: 0;
  }
}

/**
 * Logo link
 */
.c-logo__link {
  display: block;
}

/**
 * Logo image
 */
.c-logo__img {
  display: block;
}

.c-logo__left {
  color: #10455B;
}

.c-logo--light .c-logo__left {
  color: #fff;
}

.c-logo__right {
  color: #2AA1AF;
}

/*------------------------------------*\
    #ICON
\*------------------------------------*/
/**
 * 1) Small image that represents functionality
 */
.c-icon {
  height: 16px;
  width: 16px;
}

/*------------------------------------*\
    #INPUT
\*------------------------------------*/
/**
 * 1) Actual input of a field
 */
.c-stripe .c-input {
  max-width: 3rem;
}

/*------------------------------------*\
    #PAGE HEADER
\*------------------------------------*/
/**
 * 1) Container that consists of of a page header title and description
 */
/**
 * Page header title
 */
.c-page-header {
  margin-top: 4rem;
  margin-bottom: 2rem;
}

/**
 * Page description
 */
.c-page-header__desc {
  margin-top: 1rem;
}

/*------------------------------------*\
    #PAGINATION
\*------------------------------------*/
/**
 * Pagination
 */
.c-pagination {
  display: -webkit-box;
  display: flex;
  flex-wrap: wrap;
  -webkit-box-pack: center;
  justify-content: center;
  overflow: hidden;
  margin-bottom: 1rem;
  font-family: "Crimson Text", serif;
  text-transform: uppercase;
}

.c-pagination__item {
  border-right: 1px solid #ddd;
}

.c-pagination__item:last-child {
  border: 0;
}

.c-pagination__link {
  padding: 1rem;
  text-decoration: underline;
}

.c-pagination__item:first-child .c-pagination__link {
  padding-left: 0;
}

.c-pagination__item.is-active .c-pagination__link {
  font-weight: bold;
  text-decoration: none;
  pointer-events: none;
}

.c-pagination__item.is-disabled .c-pagination__link {
  color: #ddd;
  pointer-events: none;
  text-decoration: none;
}

/*------------------------------------*\
    #PRIMARY NAVIGATION
\*------------------------------------*/
/**
 * Primary navigation existing in the header and maybe the footer
 */
@media all and (min-width: 32em) {
  .c-primary-nav {
    margin-left: auto;
  }
}

/**
 * Primary navigation list
 */
.c-primary-nav__list {
  display: -webkit-box;
  display: flex;
  -webkit-box-align: center;
  align-items: center;
}

/**
 * Primary navigation item
 */
.c-primary-nav__item {
  margin-right: 2rem;
}

.c-primary-nav__item:last-child {
  margin-right: 0;
}

/**
 * Primary navigation link
 */
.c-primary-nav__link {
  display: block;
  cursor: pointer;
  font-family: "Crimson Text", serif;
  font-size: 1.2rem;
  line-height: 1;
  text-transform: uppercase;
  -webkit-transition: background 0.15s ease-out;
  transition: background 0.15s ease-out;
}

.c-primary-nav__link:hover, .c-primary-nav__link:focus {
  color: #2AA1AF;
}

.c-primary-nav__icon.c-icon {
  fill: #082430;
  height: 24px;
  width: 24px;
}

/*------------------------------------*\
    #PROMO BLOCK
\*------------------------------------*/
/**
 * Large block containing an image and copy
 * 1) Move promo block up to sit flush with hero
 *    Normally we wouldn't do this, but we're taking
 *    a shortcut for demo purposes.
 */
.c-promo-block {
  color: #fff;
  position: relative;
  margin-top: -2rem;
  /* 1 */
}

.c-promo-block__media {
  position: relative;
  z-index: 0;
}

.c-promo-block__media:before {
  content: "";
  background: -webkit-gradient(linear, right top, left top, color-stop(0, rgba(0, 0, 0, 0)), color-stop(40%, rgba(0, 0, 0, 0)), to(#000));
  background: linear-gradient(to left, rgba(0, 0, 0, 0) 0, rgba(0, 0, 0, 0) 40%, #000 100%);
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
}

.c-promo-block--right .c-promo-block__media:before {
  background: -webkit-gradient(linear, left top, right top, color-stop(0, rgba(0, 0, 0, 0)), color-stop(20%, rgba(0, 0, 0, 0)), to(#000));
  background: linear-gradient(to right, rgba(0, 0, 0, 0) 0, rgba(0, 0, 0, 0) 20%, #000 100%);
}

.c-promo-block__body {
  position: absolute;
  top: 40%;
  left: 4rem;
  z-index: 1;
  max-width: 400px;
  -webkit-transition: opacity 0.5s ease-out, -webkit-transform 0.5s ease-out;
  transition: opacity 0.5s ease-out, -webkit-transform 0.5s ease-out;
  transition: opacity 0.5s ease-out, transform 0.5s ease-out;
  transition: opacity 0.5s ease-out, transform 0.5s ease-out, -webkit-transform 0.5s ease-out;
}

.c-promo-block--right .c-promo-block__body {
  left: auto;
  right: 4rem;
}

.c-promo-block__body.c-promo-block__body--initial {
  opacity: 0;
  -webkit-transform: translateY(70px);
  transform: translateY(70px);
}

.c-promo-block__img {
  display: block;
  width: 100%;
}

.c-promo-block__link {
  color: #fff;
}

.c-promo-block__link:hover, .c-promo-block__link:focus {
  color: #2AA1AF;
}

.c-promo-block__heading {
  display: inline;
  color: inherit;
  border-bottom: 2px solid #2AA1AF;
  font-size: 2rem;
}

@media all and (min-width: 60em) {
  .c-promo-block__heading {
    font-size: 3rem;
  }
}

.c-promo-block__description {
  margin-top: 1rem;
}

@media all and (min-width: 60em) {
  .c-promo-block__description {
    font-size: 1.2rem;
  }
}

/*------------------------------------*\
#PROGRESS TRACKER
\*------------------------------------*/
/**
* 1) Ordered list showing progress (i.e. step by step)
* 2) Display flex used to put items in row. Flex wrap wraps items underneat when space is
*    unavailable.
*/
.c-progress-tracker {
  display: -webkit-box;
  display: flex;
  flex-wrap: wrap;
  -webkit-box-pack: center;
  justify-content: center;
  flex-wrap: wrap;
  font-size: 0.85rem;
  margin-right: 2rem;
  text-align: center;
}

.c-progress-tracker__item {
  margin-right: 2rem;
  text-align: center;
  font-size: 0.85rem;
  width: 5rem;
}

.c-progress-tracker__item:last-child .c-progress-tracker__number:before {
  display: none;
  background-color: #fff;
  border: 1px solid #10455B;
  border-radius: 50%;
  color: #10455B;
  margin-bottom: .5rem;
  padding: .125rem;
  position: relative;
}

.c-progress-tracker__number {
  padding: .125rem;
  margin-bottom: .5rem;
  color: #10455B;
  border: 1px solid #10455B;
  background-color: #fff;
  position: relative;
  background-color: #10455B;
  color: #fff;
}

@media all and (min-width: 28em) {
  .c-progress-tracker__number {
    padding: .5rem;
    border-color: #10455B;
    color: #082430;
  }
}

.is-complete .c-progress-tracker__number {
  background-color: #ddd;
  content: " ";
  display: block;
  position: absolute;
  right: -4rem;
  width: 4rem;
}

.is-current .is-complete .c-progress-tracker__number {
  color: #fff;
  background-color: #10455B;
  font-weight: bold;
}

.is-disabled .is-complete .c-progress-tracker__number {
  color: #082430;
  border-color: #10455B;
}

.is-complete .c-progress-tracker__number:before {
  content: " ";
  display: block;
  width: 4rem;
  height: 1px;
  background-color: #ddd;
  position: absolute;
  top: 50%;
  right: -4rem;
  z-index: -1;
}

.c-progress-tracker__label {
  display: none;
}

@media all and (min-width: 35em) {
  .c-progress-tracker__label {
    display: inline;
  }
}

.is-current .c-progress-tracker__label {
  font-weight: bold;
}

/*------------------------------------*\
    #TEXT PASSAGE
\*------------------------------------*/
/**
 * 1) A passage of text, including various components (i.e. article, blog post)
 */
.c-text-passage {
  /**
	 * Link within the text passage
	 */
  /**
	 * Blockquote within text passage
	 */
  /**
	  * First-level heading within text passage
	  */
  /**
	 * Second-level heading within text passage
	 */
  /**
	 * Third-level heading within text passage
	 */
  /**
	 * Fourth-level heading within text passage
	 */
  /**
	 * Fifth-level heading within text passage
	 */
  /**
	 * Sixth-level heading within text passage
	 */
  /**
	 * Unordered list within text passage
	 */
  /**
	 * Ordered list within text passage
	 */
}

.c-text-passage p {
  margin-bottom: 1rem;
}

.c-text-passage a {
  text-decoration: underline;
}

.c-text-passage blockquote {
  padding-left: 0.8rem;
  border-left: 3px solid #666;
  color: #cfd2d6;
  font-size: 1rem;
}

.c-text-passage h1 {
  margin-bottom: 1rem;
}

.c-text-passage h2 {
  margin: 1rem 0 1rem;
  color: #666;
  font-weight: bold;
}

.c-text-passage h3 {
  margin: 1rem 0 1rem;
}

.c-text-passage h4 {
  margin: 1rem 0 1rem;
}

.c-text-passage h5 {
  margin: 1rem 0 1rem;
}

.c-text-passage h6 {
  margin: 1rem 0 1rem;
}

.c-text-passage ul {
  list-style: disc;
  margin-left: 1rem;
  margin-bottom: 1rem;
}

.c-text-passage ul li:last-child {
  margin-bottom: 0;
}

.c-text-passage ol {
  list-style: decimal;
  margin-left: 1rem;
  margin-bottom: 1rem;
}

.c-text-passage ol li:last-child {
  margin-bottom: 0;
}

.c-text-passage li {
  margin-bottom: 0.5rem;
  line-height: 1.6;
}

/*------------------------------------*\
    #FIELDS
\*------------------------------------*/
/**
 * 1) Consists of a label, form control, and an optional note about the field.
 */
.c-field {
  margin-bottom: 2rem;
}

/**
 * Field label
 */
.c-field__label {
  margin-bottom: 0.5rem;
  font-size: 1rem;
  font-weight: bold;
}

/**
 * Field body
 */
.c-field__body {
  position: relative;
}

/**
 * Field note
 */
.c-field__note {
  display: inline-block;
  font-size: 0.75rem;
  color: #cfd2d6;
}

/*------------------------------------*\
    #SEARCH FORM
\*------------------------------------*/
/**
 * 1) Search form that contains a text input and button
 */
/**
 * Page header title
 */
.c-search-form__body {
  display: -webkit-box;
  display: flex;
}

.c-stacked-block-list {
  max-width: 80rem;
  margin-bottom: 2rem;
}

/*------------------------------------*\
	#TOTAL CONTAINER
\*------------------------------------*/
/**
 * 1)
 */
.c-total-container {
  margin-top: 1rem;
}

@media all and (min-width: 35em) {
  .c-total-container {
    text-align: right;
  }
}

.c-total {
  display: -webkit-box;
  display: flex;
  -webkit-box-align: center;
  align-items: center;
}

@media all and (min-width: 35em) {
  .c-total {
    -webkit-box-pack: end;
    justify-content: flex-end;
  }
}

.c-total--no-break {
  -webkit-box-pack: start;
  justify-content: flex-start;
}

@media all and (min-width: 60em) {
  .c-total--no-break {
    -webkit-box-pack: end;
    justify-content: flex-end;
  }
}

.c-total__label {
  font-weight: bold;
  margin-right: 0.5rem;
  padding-bottom: 0;
}

.c-total--no-break .c-total__label {
  width: 5rem;
}

@media all and (min-width: 60em) {
  .c-total--no-break .c-total__label {
    width: auto;
  }
}

.c-total__span {
  font-family: "Crimson Text", serif;
  font-size: 1.2rem;
  color: #10455B;
}

.c-total--no-break .c-total__span {
  margin-left: 2rem;
}

@media all and (min-width: 60em) {
  .c-total--no-break .c-total__span {
    margin-left: 0;
  }
}

/*------------------------------------*\
    #UTILITIES
\*------------------------------------*/
/*------------------------------------*\
    #VISIBILITY CLASSES
\*------------------------------------*/
/**
 * Is Hidden
 * 1) Completely remove from the flow and screen readers.
 */
.u-is-hidden {
  display: none !important;
  visibility: hidden !important;
}

/**
 * Is Visibly Hidden
 * 1) Completely remove from the flow but leave available to screen readers.
 */
.u-is-vishidden {
  position: absolute !important;
  overflow: hidden;
  width: 1px;
  height: 1px;
  padding: 0;
  border: 0;
  clip: rect(1px, 1px, 1px, 1px);
}

/*------------------------------------*\
    #SPACING
\*------------------------------------*/
/**
 * Margin bottom none
 * 1) Force margin bottom of 0
 */
.u-margin-bottom-none {
  margin-bottom: 0 !important;
}

/**
 * Margin bottom small
 * 1) Force margin bottom of $spacing-small variable
 */
.u-margin-bottom-small {
  margin-bottom: 1rem !important;
}

/**
 * Margin bottom
 * 1) Force margin bottom of $spacing variable
 */
.u-margin-bottom {
  margin-bottom: 1rem !important;
}

/**
 * Margin bottom large
 * 1) Force margin bottom of $spacing-large variable
 */
.u-margin-bottom-large {
  margin-bottom: 2rem !important;
}

.u-margin-bottom-large-to-xxl {
  margin-bottom: 2rem !important;
}

@media all and (min-width: 60em) {
  .u-margin-bottom-large-to-xxl {
    margin-bottom: 8rem !important;
  }
}

/**
 * Margin top none
 * 1) Force margin top of 0
 */
.u-margin-top-none {
  margin-top: 0 !important;
}

/**
 * Margin top small
 * 1) Force margin top of $spacing-small variable
 */
.u-margin-top-small {
  margin-top: 1rem !important;
}

/**
 * Margin top
 * 1) Force margin top of $spacing variable
 */
.u-margin-top {
  margin-top: 1rem !important;
}

/**
 * Margin top large
 * 1) Force margin top of $spacing-large variable
 */
.u-margin-top-large {
  margin-top: 2rem !important;
}

.u-margin-top-booking {
  margin-top: 28rem !important;
}

/**
 * Margin right none
 * 1) Force margin right of 0
 */
.u-margin-right-none {
  margin-right: 0 !important;
}

/**
 * Margin right small
 * 1) Force margin right of $spacing-small variable
 */
.u-margin-right-small {
  margin-right: 1rem !important;
}

/**
 * Margin right
 * 1) Force margin right of $spacing variable
 */
.u-margin-right {
  margin-right: 1rem !important;
}

/**
 * Margin right large
 * 1) Force margin right of $spacing-large variable
 */
.u-margin-right-large {
  margin-right: 2rem !important;
}

/**
 * Margin left none
 * 1) Force margin left of 0
 */
.u-margin-left-none {
  margin-left: 0 !important;
}

/**
 * Margin left small
 * 1) Force margin left of $spacing-small variable
 */
.u-margin-left-small {
  margin-left: 1rem !important;
}

/**
 * Margin left
 * 1) Force margin left of $spacing variable
 */
.u-margin-left {
  margin-left: 1rem !important;
}

/**
 * Margin left large
 * 1) Force margin left of $spacing-large variable
 */
.u-margin-left-large {
  margin-left: 2rem !important;
}

/**
 * Center display block contents
 */
.u-margin-center {
  margin: 0 auto !important;
}

/**
 * Padding none
 */
.u-padding-none {
  padding: 0 !important;
}

/**
 * Padding small
 */
.u-padding-small {
  padding: 1rem !important;
}

/**
 * Padding
 */
.u-padding {
  padding: 1rem !important;
}

/**
 * Padding large
 */
.u-padding-large {
  padding: 2rem !important;
}

/**
 * Padding top none
 */
.u-padding-top-none {
  padding-top: 0 !important;
}

/**
 * Padding top small
 */
.u-padding-top-small {
  padding-top: 1rem !important;
}

/**
 * Padding top
 */
.u-padding-top {
  padding-top: 1rem !important;
}

/**
 * Padding top large
 */
.u-padding-top-large {
  padding-top: 2rem !important;
}

/**
 * Padding bottom none
 */
.u-padding-bottom-none {
  padding-bottom: 0 !important;
}

/**
 * Padding bottom small
 */
.u-padding-bottom-small {
  padding-bottom: 1rem !important;
}

/**
 * Padding bottom
 */
.u-padding-bottom {
  padding-bottom: 1rem !important;
}

/**
 * Padding bottom large
 */
.u-padding-bottom-large {
  padding-bottom: 2rem !important;
}

/**
 * Padding right none
 */
.u-padding-right-none {
  padding-right: 0 !important;
}

/**
 * Padding right small
 */
.u-padding-right-small {
  padding-right: 1rem !important;
}

/**
 * Padding right
 */
.u-padding-right {
  padding-right: 1rem !important;
}

/**
 * Padding right large
 */
.u-padding-right-large {
  padding-right: 2rem !important;
}

/**
 * Padding left none
 */
.u-padding-left-none {
  padding-left: 0 !important;
}

/**
 * Padding left small
 */
.u-padding-left-small {
  padding-left: 1rem !important;
}

/**
 * Padding left
 */
.u-padding-left {
  padding-left: 1rem !important;
}

/**
 * Padding left large
 */
.u-padding-left-large {
  padding-left: 2rem !important;
}

/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInN0eWxlLnNjc3MiLCJzdHlsZS5jc3MiLCJzY3NzL2Fic3RyYWN0cy9fdmFyaWFibGVzLnNjc3MiLCJzY3NzL2Fic3RyYWN0cy9fbWl4aW5zLnNjc3MiLCJzY3NzL2Fic3RyYWN0cy9fY29sb3JzLnNjc3MiLCJzY3NzL2Fic3RyYWN0cy9fdHlwb2dyYXBoeS5zY3NzIiwic2Nzcy9iYXNlL19yZXNldC5zY3NzIiwic2Nzcy9iYXNlL19ib2R5LnNjc3MiLCJzY3NzL2Jhc2UvX2xpbmtzLnNjc3MiLCJzY3NzL2Jhc2UvX2xpc3RzLnNjc3MiLCJzY3NzL2Jhc2UvX2hlYWRpbmdzLnNjc3MiLCJzY3NzL2Jhc2UvX2Zvcm1zLnNjc3MiLCJzY3NzL2Jhc2UvX2J1dHRvbnMuc2NzcyIsInNjc3MvYmFzZS9fbWFpbi5zY3NzIiwic2Nzcy9iYXNlL19tZWRpYS5zY3NzIiwic2Nzcy9iYXNlL190ZXh0LnNjc3MiLCJzY3NzL2Jhc2UvX3RhYmxlLnNjc3MiLCJzY3NzL2xheW91dC9fbGF5b3V0LnNjc3MiLCJzY3NzL2NvbXBvbmVudHMvX2J1dHRvbnMuc2NzcyIsInNjc3MvY29tcG9uZW50cy9fZGVmaW5pdGlvbi1saXN0LnNjc3MiLCJzY3NzL2NvbXBvbmVudHMvX2RlZmluaXRpb24tbGlzdC1saXN0LnNjc3MiLCJzY3NzL2NvbXBvbmVudHMvX2hlcm8uc2NzcyIsInNjc3MvY29tcG9uZW50cy9fdG91dC5zY3NzIiwic2Nzcy9jb21wb25lbnRzL19zZWN0aW9uLnNjc3MiLCJzY3NzL2NvbXBvbmVudHMvX3N0YWNrZWQtYmxvY2suc2NzcyIsInNjc3MvY29tcG9uZW50cy9fc3RyaXBlLnNjc3MiLCJzY3NzL2NvbXBvbmVudHMvX2Zvb3Rlci5zY3NzIiwic2Nzcy9jb21wb25lbnRzL19mb290ZXItbmF2LnNjc3MiLCJzY3NzL2NvbXBvbmVudHMvX2hlYWRlci5zY3NzIiwic2Nzcy9jb21wb25lbnRzL19sb2dvLnNjc3MiLCJzY3NzL2NvbXBvbmVudHMvX2ljb24uc2NzcyIsInNjc3MvY29tcG9uZW50cy9faW5wdXQuc2NzcyIsInNjc3MvY29tcG9uZW50cy9fcGFnZS1oZWFkZXIuc2NzcyIsInNjc3MvY29tcG9uZW50cy9fcGFnaW5hdGlvbi5zY3NzIiwic2Nzcy9jb21wb25lbnRzL19wcmltYXJ5LW5hdi5zY3NzIiwic2Nzcy9jb21wb25lbnRzL19wcm9tby1ibG9jay5zY3NzIiwic2Nzcy9jb21wb25lbnRzL19wcm9ncmVzcy10cmFja2VyLnNjc3MiLCJzY3NzL2NvbXBvbmVudHMvX3RleHQtcGFzc2FnZS5zY3NzIiwic2Nzcy9jb21wb25lbnRzL19maWVsZC5zY3NzIiwic2Nzcy9jb21wb25lbnRzL19zZWFyY2gtZm9ybS5zY3NzIiwic2Nzcy9jb21wb25lbnRzL19zdGFja2VkLWJsb2NrLWxpc3Quc2NzcyIsInNjc3MvY29tcG9uZW50cy9fdG90YWwuc2NzcyIsInNjc3MvdXRpbGl0aWVzL192aXNpYmlsaXR5LnNjc3MiLCJzY3NzL3V0aWxpdGllcy9fc3BhY2luZy5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFDOzt1Q0NFc0M7QURDdkM7Ozs7OztFQ01FO0FERUY7O3VDQ0N1QztBQ1p2Qzs7dUNEZXVDO0FDWHZDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFRHlDRTtBQ1ZEOzt3Q0RhdUM7QUNUeEM7OztFRGFFO0FDSkY7OztFRFFFO0FDT0Y7Ozs7RURGRTtBQ29CRjs7dUNEakJ1QztBQ3FCdkM7O0VEbEJFO0FDeUJGOztFRHRCRTtBQ2lDRjs7RUQ5QkU7QUM0Q0Y7O3VDRHpDdUM7QUM2Q3ZDOztFRDFDRTtBQ3FERjs7dUNEbER1QztBQ3NEdkM7OztFRGxERTtBQytERjs7dUNENUR1QztBQ2dFdkM7O0VEN0RFO0FDa0VGOztFRC9ERTtBQ3dFRjs7dUNEckV1QztBQ3lFdkM7O0VEdEVFO0FDNEVGOztFRHpFRTtBQ2tGRjs7dUNEL0V1QztBQ21GdkM7OztFRC9FRTtBRS9HRjs7dUNGa0h1QztBRTlHdkM7OztFRmtIRTtBRXJHRjs7RUZ3R0U7QUVoR0Y7O0VGbUdFO0FFdEZGOztFRnlGRTtBRWhGRjs7RUZtRkU7QUUxRUY7O0VGNkVFO0FFcEVGOztFRnVFRTtBR3hJRjs7dUNIMkl1QztBR3ZJdkM7OztFSDJJRTtBR2xJRjs7dUNIcUl1QztBR2pJdkM7O0VIb0lFO0FHOUhGOztFSGlJRTtBR3ZIRjs7dUNIMEh1QztBRzdHdkM7O3VDSGdIdUM7QUczRnZDOzt1Q0g4RnVDO0FJakt2Qzs7dUNKb0t1QztBSWhLdkM7OztFSm9LRTtBRGpKRjs7dUNDb0p1QztBSzNLdkM7O3VDTDhLdUM7QUsxS3ZDOztFTDZLRTtBSzFLRjtFQUNDLHNCQUFzQjtBTDRLdkI7O0FLektBOztFTDZLRTtBSzFLRjtFQUNDLFNBQVM7RUFDVCxVQUFVO0FMNEtYOztBS3pLQTs7RUw2S0U7QUsxS0Y7RUFDQyxjQUFjO0FMNEtmOztBTW5NQTs7dUNOdU11QztBTW5NdkM7Ozs7RU53TUU7QU1uTUY7RUFDQyxpQkFBaUI7RUFBRSxNQUFBO0FOc01wQjs7QU1uTUE7Ozs7RU55TUU7QU1wTUY7RUFDQyxtQ0FBbUM7RUFDbkMsc0JMZ0NtQztFSy9CbkMsY0x1Q3NDO0VLdEN0Qyw0RUxrRThGO0VLakU5RixpQkFBaUI7RUFBRSxNQUFBO0VKZGhCLDhCQUE4QjtFQUFFLE1BQUE7RUFDaEMsZUR1RmdDO0VDdEZoQyxnQkFBZ0I7RUFFaEIsZ0JBQWdCO0VBQ2hCLDhCQUE4QjtFQUFFLE1BQUE7RUlZbkMsNEVMOEQ4RjtFQy9FM0YsOEJBQThCO0VBQUUsTUFBQTtFQUNoQyxlRHVGZ0M7RUN0RmhDLGdCQUFnQjtFQUVoQixnQkFBZ0I7RUFDaEIsOEJBQThCO0VBQUUsTUFBQTtFSWNuQyxzQkx3Qm1DO0VLdkJuQyxjTCtCc0M7RUs5QnRDLG1DQUFtQztBTmtOcEM7O0FPaFBBOzt1Q1BvUHVDO0FPaFB2Qzs7RVBtUEU7QU9oUEY7RUFDQyxXTm1EbUM7RU1sRG5DLHFCQUFxQjtFQUNyQixVQUFVO0VBQ1Ysd0NOeUt1QztFTXpLdkMsZ0NOeUt1QztBRHlFeEM7O0FPdFBBO0VBT0UsY04rQnFDO0FEb052Qzs7QU8xUEE7RUFXRSxjTjBDcUM7QUR5TXZDOztBUXJRQTs7dUNSeVF1QztBUXJRdkM7O0VSd1FFO0FRcFFEOztHUnVRRTtBUXBRSDtFQUNDLGdCQUFnQjtBUnNRakI7O0FTbFJBOzt1Q1RzUnVDO0FTbFJ2QztFQUNDLGtDUm9Gb0Q7QURnTXJEOztBU2pSQTs7RVRxUkU7QVNsUkY7RVBrQkksZUR1RWdDO0VDdEVoQyxtQkFBbUI7RUFDbkIsZ0JBQWdCO0FGbVFwQjs7QUVqUUk7RU90Qko7SVB1QlEsZURtRTRCO0VEa01sQztBQUNGOztBU3pSQTs7RVQ2UkU7QVMxUkY7RVAwQ0ksaUJEc0NrQztFQ3JDbEMsbUJBQW1CO0VBQ3RCLGdCQUFnQjtBRm1QakI7O0FTM1JBOztFVCtSRTtBUzVSRjtFUG1DSSxpQkRzQ2tDO0VDckNsQyxtQkFBbUI7RUFDdEIsZ0JBQWdCO0FGNFBqQjs7QVM3UkE7O0VUaVNFO0FTOVJGO0VQcUNJLGVENEJnQztFQzNCaEMsbUJBQW1CO0VBQ3RCLGdCQUFnQjtBRjRQakI7O0FVblVBOzt1Q1Z1VXVDO0FVblV2Qzs7RVZzVUU7QVVsVUY7O0VWcVVFO0FVbFVGO0VBQ0csY1Q2Q29DO0FEdVJ2Qzs7QVVqVUE7RUFDRyxjVHlDb0M7QUQyUnZDOztBVWpVQTtFQUNHLGNUcUNvQztBRCtSdkM7O0FValVBOztFVnFVRTtBVWxVRjtFQUNDLFNBQVM7RUFDVCxVQUFVO0VBQ1YsU0FBUztBVm9VVjs7QVVqVUE7O0VWcVVFO0FVbFVGO0VBQ0ksc0JBQXNCO0FWb1UxQjs7QVVqVUE7O0VWcVVFO0FVbFVGO0VBQ0MsY0FBYztFQUNYLHVCQUF1QjtFQUN2QixjVGVtQztBRHFUdkM7O0FValVBOztFVnFVRTtBVWxVRjtFQUNJLG9CQUFvQjtFQUNwQixlVDRDZ0M7RVMzQ2hDLFNBQVM7QVZvVWI7O0FValVBOztFVnFVRTtBVWxVRjtFQUNDLFlBQVk7QVZvVWI7O0FValVBOztFVnFVRTtBVWxVRjtFQUNJLFdBQVc7RUFDWCxlQUFlO0VBQ2Ysc0JUWGdDO0VTWWhDLGdCVG5CZ0M7QUR1VnBDOztBVXhVQTtFQU9FLHFCVGRxQztBRG1WdkM7O0FVNVVBO0VBV1Esa0JUeEI0QjtFU3lCNUIsZ0JUekI0QjtFUzBCNUIsY1R2QitCO0FENFZ2Qzs7QVVqVUE7O0VWcVVFO0FVbFVGO0VBQ0Msd0JBQXdCO0FWb1V6Qjs7QVVqVUE7O0VWcVVFO0FVbFVGOztFQUVJLFdBQVc7RUFDWCxvQkFBb0I7RUFDcEIsa0JUdkNnQztBRDJXcEM7O0FValVBOztFVnFVRTtBVWxVRjtFQUNJLHdCQUF3QjtFQUN4QixnQkFBZ0I7QVZvVXBCOztBVWpVQTs7O0VWc1VFO0FVbFVGO0VBQ0ksY0FBYztFQUNqQixlVGxCbUM7RVNtQm5DLFdBQVc7RUFDUixzQlQxRGdDO0VTMkRoQyxnQkFBZ0I7RUFDaEIsZUFBZTtFQUNmLFlBQVk7RUFDWixnQlRyRWdDO0VTc0VoQyxjVDlEbUM7QURrWXZDOztBVTdVQTtFQVlFLHFCVGpFcUM7QURzWXZDOztBV2xjQTs7dUNYc2N1QztBV2xjdkM7OztFWHNjRTtBV2xjRjtFQUNDLGVBQWU7QVhvY2hCOztBWTdjQTs7dUNaaWR1QztBWTdjdkM7O0VaZ2RFO0FBQ0Y7RVk3Y0MsY0FBYztFQUNkLG1CQUFjO0VBQWQsY0FBYztBWitjZjs7QWF4ZEE7O3VDYjRkdUM7QWF4ZHZDOzs7RWI0ZEU7QWF4ZEY7RUFDQyxlQUFlO0VBQ2YsWUFBWTtBYjBkYjs7QWNwZUE7O3VDZHdldUM7QWNwZXZDOztFZHVlRTtBY3BlRjtFQUNDLG1CYnFJbUM7QURpV3BDOztBY25lQTs7RWR1ZUU7QWNwZUY7RUFDSSxrQkFBaUI7RUFDakIsOEJiNkJtQztFYTVCbkMsV2IwQ2dDO0VhekNuQyxrQkFBa0I7RUFDbEIsbUJiMEhtQztBRDRXcEM7O0FjbmVBOztFZHVlRTtBY3BlRjtFQUNDLFNBQVM7RUFDTixXQUFXO0VBQ1gsZ0JiMkJrQztFYTFCbEMsY0FBYztBZHNlbEI7O0FjbmVBOztFZHVlRTtBY3BlRjtFQUNDLGNid0JzQztFYXZCdEMsZ0Jia0JxQztFYWxCQyxtQkFBQTtBZHVldkM7O0FjcGVBO0VBQ0MsY2JtQnNDO0VhbEJ0QyxnQmJhcUM7RWFiQywwQkFBQTtBZHdldkM7O0FjcmVBOztFZHllRTtBY3RlRjtFQUNDLHFCQUFxQjtFQUNyQixtQmJHc0M7RWFGdEMsc0JiSXFDO0VhSHJDLG9CQUFvQjtFQUNqQixnQkFBZ0I7RUFDaEIsaUJBQWlCO0Fkd2VyQjs7QWNyZUE7O0VkeWVFO0FjdGVGO0VBQ0MsbUJiUnNDO0VhU3RDLHNCYlBxQztFYVFyQyxlYmtDbUM7RWFqQ25DLGFBQWE7RUFDVixnQkFBZ0I7RUFFbkI7O0dkd2VFO0FBQ0g7O0FjaGZBO0VBV0UsU0FBUztBZHllWDs7QWNyZUE7OztFZDBlRTtBY3RlRjs7RUFFSSxpQ0FBZ0M7QWR3ZXBDOztBZXpqQkE7O3VDZjZqQnVDO0FlempCdkM7O0VmNGpCRTtBZXpqQkY7RUFDSSx5QkFBeUI7RUFDekIsaUJBQWlCO0VBQ2pCLFdBQVc7QWYyakJmOztBZXhqQkE7O0VmNGpCRTtBZXpqQkY7RUFDSSxnQkFBZ0I7QWYyakJwQjs7QWV4akJBOztFZjRqQkU7QWV6akJGO0VBQ0ksbUJBQW1CO0FmMmpCdkI7O0FEemlCQTs7dUNDNmlCdUM7QWdCdmxCdkM7O3VDaEIwbEJ1QztBZ0J0bEJ2Qzs7OztFaEIybEJFO0FnQnRsQkY7RUFDQyxnQmZrSG9DO0VlakhwQyxlZmtJbUM7RWVqSW5DLGNBQWM7QWhCd2xCZjs7QWdCdGxCQztFQUxEO0lBTUUsZWZnSWlEO0VEMGRqRDtBQUNGOztBZ0J2bEJBO0VBQ0MsZ0JmeUdvQztBRGlmckM7O0FnQnZsQkE7Ozs7RWhCNmxCRTtBZ0J4bEJGO0VBQ0ksZ0JmaUdpQztBRHlmckM7O0FnQnZsQkE7RUFDQyxtQmZvQnNDO0VlbkJ0QyxrQkFBa0I7QWhCMGxCbkI7O0FnQnZsQkE7O0VoQjJsQkU7QWdCeGxCRjtFQUNDLG9CQUFhO0VBQWIsYUFBYTtFQUNiLDRCQUFzQjtFQUF0Qiw2QkFBc0I7RUFBdEIsc0JBQXNCO0FoQjBsQnZCOztBZ0J4bEJDO0VBSkQ7SUFLRSw4QkFBbUI7SUFBbkIsNkJBQW1CO0lBQW5CLG1CQUFtQjtFaEI0bEJuQjtBQUNGOztBZ0J2bEJFO0VBREQ7SUFFRSxVQUFVO0lBQ1YsbUJmd0ZpQztFRG1nQmxDO0FBQ0Y7O0FnQnZsQkE7O0VoQjJsQkU7QWdCcmxCQTtFQUREO0lBRUUsVUFBVTtJQUNWLGlCQUFpQjtFaEJ3bEJsQjtBQUNGOztBZ0JybEJDO0VBQ0MsbUJBQW1CO0FoQndsQnJCOztBZ0J0bEJFO0VBSEQ7SUFJRSw0QkFBUTtJQUFSLFFBQVE7SUFDUixnQkFBZ0I7RWhCMGxCakI7QUFDRjs7QWdCcGxCQTs7dUNoQndsQnVDO0FnQnBsQnZDOztFaEJ1bEJFO0FnQnBsQkY7RUFDQyxvQkFBYTtFQUFiLGFBQWE7RUFDYixlQUFlO0FoQnNsQmhCOztBZ0JwbEIwQjtFQUoxQjtJQUtFLGFBQWE7SUFDYixjZmdEaUQ7SWUvQ2pELDREQUE2RDtJQUM3RCxTQUFTO0VoQndsQlQ7QUFDRjs7QWdCcmxCQTs7RWhCeWxCRTtBZ0J0bEJGO0VBQ0Msb0JBQWE7RUFBYixhQUFhO0FoQndsQmQ7O0FEOW9CQTs7dUNDa3BCdUM7QWlCcnNCdkM7O3VDakJ3c0J1QztBaUJwc0J2Qzs7O0VqQndzQkU7QWlCcHNCRjtFQUNDLHFCQUFxQjtFQUNyQix5QmhCa0RzQztFZ0JqRHRDLG1CaEJnQ3NDO0VnQi9CdEMsV2hCd0NtQztFZ0J2Q25DLGNBQWM7RUFDZCxrQkFBa0I7RUFDbEIsU0FBUztFQUNULHlCQUF5QjtFQUN6QixrQkFBa0I7RUFDbEIsc0NoQmtLdUM7RWdCbEt2Qyw4QmhCa0t1QztBRG9pQnhDOztBaUJodEJBO0VBYUUsV2hCK0JrQztFZ0I5QmxDLG1CaEJzQnFDO0FEaXJCdkM7O0FpQm5zQkE7RUFDQyxnQkFBZ0I7RUFDaEIsY2hCZXNDO0VnQmR0Qyw2QkFBNkI7QWpCc3NCOUI7O0FpQnpzQkE7RUFNRSxnQkFBZ0I7RUFDaEIsY2hCVXFDO0VnQlRyQyxxQmhCU3FDO0FEOHJCdkM7O0FpQm5zQkE7Ozs7O0VqQjBzQkU7QWlCcHNCRjtFQUNDLG9CQUFhO0VBQWIsYUFBYTtFQUNiLHlCQUFtQjtFQUFuQixtQkFBbUI7RUFDbkIsd0JBQXVCO0VBQXZCLHVCQUF1QjtBakJzc0J4Qjs7QWlCbnNCQTs7RWpCdXNCRTtBaUJwc0JGO0VBQ0MsV0FBVztFQUNYLFlBQVk7RUFDWixVaEJKbUM7RWdCS25DLHVDaEIySHVDO0VnQjNIdkMsK0JoQjJIdUM7QUQya0J4Qzs7QWtCL3ZCQTs7dUNsQm13QnVDO0FrQi92QnZDOztDbEJrd0JDO0FrQi92QkQ7RUFDQyxnQkFBZ0I7QWxCaXdCakI7O0FrQjl2QkE7O0NsQmt3QkM7QWtCL3ZCRDtFQUNDLG9CQUFhO0VBQWIsYUFBYTtBbEJpd0JkOztBa0IvdkJDO0VBSEQ7SUFJRSx5QkFBOEI7SUFBOUIsOEJBQThCO0VsQm13QjlCO0FBQ0Y7O0FrQmh3QkE7O0NsQm93QkM7QWtCandCRDtFQUNHLGlCQUFpQjtFQUNqQixzQkFBc0I7RUFDdEIsV0FBVztBbEJtd0JkOztBa0Jqd0JHO0VBTEg7SUFNSSxXQUFXO0VsQnF3QmI7QUFDRjs7QWtCbHdCQTs7Q2xCc3dCQztBbUJ6eUJEOzt1Q25CNHlCdUM7QW1CeHlCdkM7O0NuQjJ5QkM7QW1CdnlCRDs7RW5CMHlCRTtBbUJ0eUJEO0VBQ0MsbUJBQW1CO0VBQ25CLDZCbEJ5Q29DO0FEK3ZCdEM7O0FvQnR6QkE7O3VDcEIwekJ1QztBb0J0ekJ2Qzs7OztFcEIyekJFO0FvQnR6QkY7RUFDQyxjQUFjO0VBQ2Qsa0JBQWtCO0VBQ2xCLG9CQUFvQjtFQUFFLE1BQUE7QXBCeXpCdkI7O0FvQnR6QkE7OztFcEIyekJFO0FvQnZ6QkY7RUFDQyxjQUFjO0VBQ2QsV0FBVztFQUNYLG9CQUFpQjtFQUFqQixpQkFBaUI7RUFDakIsZ0JBQWdCO0VBQ2hCLGdCQUFnQjtBcEJ5ekJqQjs7QW9CdHpCQTtFQUNDLG1CbkJpQnNDO0VtQmhCdEMsYW5CZ0htQztBRHlzQnBDOztBb0J2ekJDO0VBSkQ7SUFLRSxVQUFVO0lBQ1Ysb0JBQWE7SUFBYixhQUFhO0lBQ2IsNEJBQXNCO0lBQXRCLDZCQUFzQjtJQUF0QixzQkFBc0I7SUFDdEIsd0JBQXVCO0lBQXZCLHVCQUF1QjtJQUN2Qix5QkFBbUI7SUFBbkIsbUJBQW1CO0lBQ25CLGtCQUFrQjtJQUNsQixNQUFNO0lBQ04sUUFBUTtJQUNSLFNBQVM7SUFDVCxPQUFPO0lBQ1AsWUFBWTtJQUNaLFdBQVc7SUFDWCx5SUFLQztJQUxELDJGQUtDO0VwQnN6QkQ7QUFDRjs7QW9CbnpCQTs7O0VwQnd6QkU7QW9CcHpCRjtFQUNDLHlCQUF5QjtFQUN6QixlbkJ5Q21DO0VtQnhDbkMseUJuQmZzQztFbUJnQnRDLFduQlRtQztFbUJVbkMsc0NuQnNIdUM7RW1CdEh2Qyw4Qm5Cc0h1QztBRGdzQnhDOztBb0JwekJDO0VBUEQ7SUFRRSxpQkFBaUI7SUFDakIsZW5CbUNrQztFRHF4QmxDO0FBQ0Y7O0FxQjEzQkE7O3VDckI4M0J1QztBcUIxM0J2Qzs7RXJCNjNCRTtBcUIxM0JGO0VBQ0ksY0FBYztFQUNqQixrQkFBa0I7RUFDZixnQkFBZ0I7RUFDaEIsaUJBQWlCO0FyQjQzQnJCOztBcUJ6M0JBOztFckI2M0JFO0FxQnozQkQ7RUFDQyxjQUFjO0FyQjIzQmhCOztBcUJ4M0JBOztFckI0M0JFO0FxQnozQkY7RUFDSSxrQkFBa0I7RUFDbEIsU0FBUztFQUNULE9BQU87RUFDUCxXQUFXO0VBQ2QseUJBQXlCO0VBQ3pCLG1CQUFtQjtFQUNoQixXcEJtQmdDO0VvQmxCaEMsZUFBZTtFQUNmLGlCQUFpQjtFQUNqQixzQ3BCZ0pvQztFb0JoSnBDLDhCcEJnSm9DO0FEMnVCeEM7O0FxQnozQkk7RUFDSSxvQkFBb0I7RUFDcEIsbUJwQkcrQjtBRHkzQnZDOztBc0JwNkJBOzt1Q3RCdzZCdUM7QXNCcjZCdkM7O0V0Qnc2QkU7QXNCcjZCRDtFQUNJLG9CQUFhO0VBQWIsYUFBYTtFQUNiLHlCQUFtQjtFQUFuQixtQkFBbUI7RUFDbkIsa0JBQWtCO0VBQ2xCLG1CQUFtQjtBdEJ1NkJ4Qjs7QXNCMzZCQztFQU9RLFdBQVc7RUFDWCxjQUFjO0VBQ2QsbUJBQU87RUFBUCxPQUFPO0VBQ1AsV0FBVztFQUNYLGlCQUFpQjtFQUNqQixtQnJCMkI4QjtBRDY0QnZDOztBc0JwNkJDO0VBQ0ksZXJCNEUrQjtBRDIxQnBDOztBdUI5N0JBOzt1Q3ZCazhCdUM7QXVCOTdCdkM7Ozs7RXZCbThCRTtBdUI5N0JGO0VBQ0Msb0JBQWE7RUFBYixhQUFhO0VBQ2IsNEJBQXNCO0VBQXRCLDZCQUFzQjtFQUF0QixzQkFBc0I7RUFDbkIsa0JBQWtCO0VBQ3JCLGdCQUFnQjtFQUFFLE1BQUE7RUFDbEIsb0R0QnNLdUM7RXNCdEt2Qyw0Q3RCc0t1QztFc0J0S3ZDLG9DdEJzS3VDO0VzQnRLdkMsc0V0QnNLdUM7QUQyeEJ4Qzs7QXVCdDhCQTtFQVFFLDhCQUFzQjtFQUF0QixzQkFBc0I7QXZCazhCeEI7O0F1Qjk3QkE7RUFDSSxtQkFBTztFQUFQLE9BQU87QXZCaThCWDs7QXVCOTdCQTtFQUNDLHlCQUF5QjtFQUN6QixtQkFBbUI7RUFDbkIsY3RCZXNDO0VzQmR0Qyx3Q3RCdUp1QztFc0J2SnZDLGdDdEJ1SnVDO0FEMHlCeEM7O0F1Qi83QkM7RUFDQyxjdEJhcUM7QURxN0J2Qzs7QXVCOTdCQTtFQUNDLGdCQUFnQjtFQUNoQixXdEJxQm1DO0FENDZCcEM7O0F1Qjk3QkE7RUFDQyxjdEJDc0M7RXNCQW5DLGlCdEJ1RGtDO0VzQnREckMsa0N0QjZDb0Q7RXNCNUNwRCxnQkFBZ0I7RUFDaEIsd0N0QnNJdUM7RXNCdEl2QyxnQ3RCc0l1QztBRDJ6QnhDOztBdUIvN0JDO0VBQ0MsY3RCSnFDO0FEczhCdkM7O0F1Qjk3QkE7RUFDSSxjQUFjO0VBQ2Qsa0JBQWtCO0VBQ2xCLE1BQU07RUFDTixRQUFRO0VBQ1IsZUFBZTtFQUNmLGtDdEI4QmlEO0VzQjdCakQseUJBQXlCO0VBQ3pCLFd0QlRnQztFc0JVaEMsbUJ0QmpCbUM7QURrOUJ2Qzs7QXVCOTdCQTtFQUNJLG1CQUFtQjtFQUNuQixjdEJWbUM7RXNCV25DLGtDdEJxQmlEO0VzQnBCakQsa0J0QjJCbUM7RXNCMUJuQyw2QkFBNkI7QXZCaThCakM7O0F3QnZnQ0E7O3VDeEIyZ0N1QztBd0J2Z0N2Qzs7RXhCMGdDRTtBd0J2Z0NGO0VBQ0MsZUFBZTtBeEJ5Z0NoQjs7QXdCdmdDQztFQUhEO0lBSUUsb0JBQWE7SUFBYixhQUFhO0V4QjJnQ2I7QUFDRjs7QXdCemdDQztFQUNDLGVBQWU7QXhCNGdDakI7O0F3QnhnQ0E7OztFeEI2Z0NFO0F3QnpnQ0Y7RUFDSSxrQkFBa0I7QXhCMmdDdEI7O0F3QnpnQ0M7RUFIRDtJQUlFLFVBQVU7RXhCNmdDVjtBQUNGOztBd0IzZ0NDO0VBQ0MsYUFBYTtBeEI4Z0NmOztBd0IxZ0NBO0VBQ0MsY0FBYztBeEI2Z0NmOztBd0IzZ0NDO0VBSEQ7SUFJRSxnQkFBZ0I7RXhCK2dDaEI7QUFDRjs7QXdCNWdDQTs7O0V4QmloQ0U7QXdCN2dDRjtFQUNDLG1CQUFPO0VBQVAsT0FBTztBeEIrZ0NSOztBd0I3Z0NDO0VBSEQ7SUFJSyxvQkFBYTtJQUFiLGFBQWE7SUFDaEIseUJBQW1CO0lBQW5CLG1CQUFtQjtFeEJpaENuQjtBQUNGOztBd0I5Z0NBO0VBQ0MsbUJBQW1CO0F4QmloQ3BCOztBd0IvZ0NDO0VBSEQ7SUFJRSxnQkFBZ0I7SUFDaEIsa0JBQWtCO0lBQ2xCLFVBQVU7RXhCbWhDVjtBQUNGOztBd0I5Z0NDO0VBRkQ7SUFHRSxpQkFBaUI7SUFDakIsc0JBQXNCO0lBQ3RCLFVBQVU7SUFDVixpQkFBaUI7SUFDakIsbUJBQU87SUFBUCxPQUFPO0V4QmtoQ1A7QUFDRjs7QXdCL2dDQTtFQUNDLGlCQUFpQjtFQUNqQixzQkFBc0I7QXhCa2hDdkI7O0F3Qi9nQ0E7RUFDQyxrQ3ZCTW9EO0V1QkxwRCxjdkJ6Q3NDO0V1QjBDdEMsaUJ2QmFxQztBRHFnQ3RDOztBd0I5Z0NBOzt1Q3hCa2hDdUM7QXdCOWdDdkM7O0V4QmloQ0U7QXdCOWdDRDtFQUNJLDZCdkIxQ2lDO0FEMGpDdEM7O0F5QmpuQ0E7O3VDekJxbkN1QztBeUJqbkN2Qzs7RXpCb25DRTtBeUJqbkNGO0VBQ0MsZUFBZTtFQUNmLGdCQUFnQjtFQUNoQixtQnhCa0NzQztBRGlsQ3ZDOztBeUIvbUNDO0VBREQ7SUFFRSxvQkFBYTtJQUFiLGFBQWE7RXpCbW5DYjtBQUNGOztBeUIvbUNDO0VBREQ7SUFFRSxpQkFBaUI7RXpCbW5DakI7QUFDRjs7QXlCaG5DQTtFQUNDLFd4QjBCbUM7RXdCekJuQyx5QkFBeUI7RUFDekIsa0N4QjZEb0Q7RXdCNURwRCxrQnhCbUVzQztBRGdqQ3ZDOztBeUJ2bkNBO0VBT0UsY3hCYXFDO0FEdW1DdkM7O0F5QjNuQ0E7RUFVRyxjeEJzQm9DO0FEK2xDdkM7O0EwQnhwQ0E7O3VDMUI0cEN1QztBMEJ4cEN2Qzs7RTFCMnBDRTtBMEJ4cENGO0VBQ0MsbUJBQW1CO0ExQjBwQ3BCOztBMEJ4cENDO0VBSEQ7SUFJRSxvQkFBYTtJQUFiLGFBQWE7SUFDYixnQkFBZ0I7RTFCNHBDaEI7QUFDRjs7QTBCdnBDQztFQUZEO0lBR0Usa0JBQWtCO0UxQjJwQ2xCO0UwQjlwQ0Y7SUFNRyxlQUFlO0UxQjJwQ2hCO0FBQ0Y7O0EwQnZwQ0E7RUFDQyxXekJ3Qm1DO0V5QnZCbkMsa0N6QjREb0Q7RXlCM0RwRCx5QkFBeUI7RUFDekIsaUJ6Qm1FcUM7QUR1bEN0Qzs7QTJCenJDQTs7dUMzQjZyQ3VDO0EyQnpyQ3ZDOztFM0I0ckNFO0EyQnpyQ0Y7RUFDQyxrQkFBa0I7RUFDbEIsbUJBQW1CO0VBQ25CLDZCMUI2Q3FDO0FEOG9DdEM7O0EyQnhyQ0E7O0UzQjRyQ0U7QTJCenJDRjtFQUNDLGlCQUFpQjtFQUNqQixvQkFBb0I7QTNCMnJDckI7O0EyQnpyQ0M7RUFKRDtJQUtFLG9CQUFhO0lBQWIsYUFBYTtJQUNiLHlCQUFtQjtJQUFuQixtQkFBbUI7RTNCNnJDbkI7QUFDRjs7QTJCMXJDQTs7O0UzQityQ0U7QTJCM3JDRjtFQUNDLGlCQUFpQjtBM0I2ckNsQjs7QTJCM3JDQztFQUhEO0lBSUUsYUFBYTtFM0IrckNiO0FBQ0Y7O0EyQjVyQ0E7OztFM0Jpc0NFO0EyQjdyQ0Y7RUFDQyxhQUFhO0VBT2I7O0czQjByQ0U7QUFDSDs7QTJCaHNDQztFQUhEO0lBSUUsY0FBYztJQUNkLGlCQUFpQjtFM0Jvc0NqQjtBQUNGOztBMkI5ckNFO0VBREQ7SUFFRSxjQUFjO0UzQmtzQ2Y7QUFDRjs7QTJCOXJDQTs7RTNCa3NDRTtBMkIvckNGO0VBQ0MsY0FBYztFQUNkLGtCQUFrQjtFQUNsQixnQjFCWm1DO0UwQmFuQyxTQUFTO0VBQ1QsT0FBTztFQUNQLFdBQVc7RUFDWCxVQUFVO0VBQ1YsYUFBYTtFQVViOztHM0J5ckNFO0FBQ0g7O0EyQmxzQ0M7RUFWRDtJQVdFLGNBQWM7SUFDZCxnQkFBZ0I7SUFDaEIsVUFBVTtJQUNWLGlCQUFpQjtJQUNqQixjQUFjO0UzQnNzQ2Q7QUFDRjs7QTJCaHNDRTtFQUREO0lBRUUsY0FBYztJQUNkLFdBQVc7RTNCb3NDWjtBQUNGOztBNEI1eENBOzt1QzVCZ3lDdUM7QTRCNXhDdkM7O0U1Qit4Q0U7QTRCNXhDRjtFQUNDLGUzQjJGbUM7QURtc0NwQzs7QTRCNXhDQztFQUNDLG1CQUFtQjtBNUIreENyQjs7QTRCN3hDRTtFQUhEO0lBSUUsZ0JBQWdCO0U1Qml5Q2pCO0FBQ0Y7O0E0Qjd4Q0E7O0U1Qml5Q0U7QTRCOXhDRjtFQUNDLGNBQWM7QTVCZ3lDZjs7QTRCN3hDQTs7RTVCaXlDRTtBNEI5eENGO0VBQ0MsY0FBYztBNUJneUNmOztBNEI3eENBO0VBQ0MsYzNCU3NDO0FEdXhDdkM7O0E0Qjl4Q0M7RUFDQyxXM0Jla0M7QURreENwQzs7QTRCOXhDQTtFQUNDLGMzQklzQztBRDZ4Q3ZDOztBNkIxMENBOzt1QzdCODBDdUM7QTZCMTBDdkM7O0U3QjYwQ0U7QTZCMTBDRjtFQUNDLFlBQVk7RUFDWixXQUFXO0E3QjQwQ1o7O0E4QnIxQ0E7O3VDOUJ5MUN1QztBOEJyMUN2Qzs7RTlCdzFDRTtBOEJwMUNEO0VBQ0MsZUFBZTtBOUJzMUNqQjs7QStCLzFDQTs7dUMvQm0yQ3VDO0ErQmgyQ3ZDOztFL0JtMkNFO0ErQi8xQ0Y7O0UvQmsyQ0U7QStCLzFDRjtFQUNDLGdCQUFnQjtFQUNoQixtQjlCbUlrRDtBRDh0Q25EOztBK0I5MUNBOztFL0JrMkNFO0ErQi8xQ0Y7RUFDQyxnQkFBZ0I7QS9CaTJDakI7O0FnQ3AzQ0E7O3VDaEN3M0N1QztBZ0NyM0N2Qzs7RWhDdzNDRTtBZ0NyM0NGO0VBQ0Msb0JBQWE7RUFBYixhQUFhO0VBQ2IsZUFBZTtFQUNmLHdCQUF1QjtFQUF2Qix1QkFBdUI7RUFDdkIsZ0JBQWdCO0VBQ2hCLG1CQUFtQjtFQUNuQixrQy9CNkVvRDtFK0I1RXBELHlCQUF5QjtBaEN1M0MxQjs7QWdDcDNDQTtFQUNDLDRCL0JzQ3FDO0FEaTFDdEM7O0FnQ3gzQ0E7RUFJRSxTQUFTO0FoQ3czQ1g7O0FnQ3AzQ0E7RUFDQyxhQUFhO0VBQ2IsMEJBQTBCO0FoQ3UzQzNCOztBZ0NyM0NDO0VBQ0MsZUFBZTtBaEN3M0NqQjs7QWdDcjNDQztFQUNDLGlCQUFpQjtFQUNqQixxQkFBcUI7RUFDckIsb0JBQW9CO0FoQ3czQ3RCOztBZ0NyM0NDO0VBQ0MsVy9CZ0JvQztFK0JmcEMsb0JBQW9CO0VBQ3BCLHFCQUFxQjtBaEN3M0N2Qjs7QWlDajZDQTs7dUNqQ3E2Q3VDO0FpQ2o2Q3ZDOztFakNvNkNFO0FpQzk1Q0E7RUFGRDtJQUdFLGlCQUFpQjtFakNpNkNsQjtBQUNGOztBaUM5NUNBOztFakNrNkNFO0FpQy81Q0Y7RUFDQyxvQkFBYTtFQUFiLGFBQWE7RUFDVix5QkFBbUI7RUFBbkIsbUJBQW1CO0FqQ2k2Q3ZCOztBaUM5NUNBOztFakNrNkNFO0FpQy81Q0Y7RUFDQyxrQkFBa0I7QWpDaTZDbkI7O0FpQ2w2Q0E7RUFJUSxlQUFlO0FqQ2s2Q3ZCOztBaUM5NUNBOztFakNrNkNFO0FpQy81Q0Y7RUFDQyxjQUFjO0VBQ2QsZUFBZTtFQUNmLGtDaENpRG9EO0VnQ2hEcEQsaUJoQ3lEcUM7RWdDeERsQyxjQUFjO0VBQ2pCLHlCQUF5QjtFQUN0Qiw2Q2hDd0lvQztFZ0N4SXBDLHFDaEN3SW9DO0FEeXhDeEM7O0FpQ3g2Q0E7RUFVUSxjaENGK0I7QURvNkN2Qzs7QWlDOTVDQTtFQUNJLGFoQ1JtQztFZ0NTbkMsWUFBWTtFQUNaLFdBQVc7QWpDaTZDZjs7QWtDdjlDQTs7dUNsQzI5Q3VDO0FrQ3Y5Q3ZDOzs7OztFbEM2OUNFO0FrQ3Y5Q0Y7RUFDQyxXakN5Q21DO0VpQ3hDbkMsa0JBQWtCO0VBQ2xCLGlCQUFpQjtFQUFFLE1BQUE7QWxDMDlDcEI7O0FrQ3Y5Q0E7RUFDQyxrQkFBa0I7RUFDbEIsVUFBVTtBbEMwOUNYOztBa0M1OUNBO0VBS0UsV0FBVztFQUNYLHVJQUtDO0VBTEQseUZBS0M7RUFDRCxrQkFBa0I7RUFDbEIsTUFBTTtFQUNOLFFBQVE7RUFDUixTQUFTO0VBQ1QsT0FBTztBbENzOUNUOztBa0NwOUNFO0VBQ0MsdUlBT0M7RUFQRCwwRkFPQztBbENnOUNKOztBa0MzOENBO0VBQ0Msa0JBQWtCO0VBQ2xCLFFBQVE7RUFDUixVQUFVO0VBQ1YsVUFBVTtFQUNWLGdCQUFnQjtFQUNoQiwwRWpDK0h1QztFaUMvSHZDLGtFakMrSHVDO0VpQy9IdkMsMERqQytIdUM7RWlDL0h2QywyRmpDK0h1QztBRCswQ3hDOztBa0MzOENDO0VBQ0MsVUFBVTtFQUNWLFdBQVc7QWxDODhDYjs7QWtDejlDQTtFQWVFLFVBQVU7RUFDVixtQ0FBMkI7RUFBM0IsMkJBQTJCO0FsQzg4QzdCOztBa0MxOENBO0VBQ0MsY0FBYztFQUNkLFdBQVc7QWxDNjhDWjs7QWtDMThDQTtFQUNDLFdqQ3JCbUM7QURrK0NwQzs7QWtDOThDQTtFQUtFLGNqQ2hDcUM7QUQ2K0N2Qzs7QWtDejhDQTtFQUNDLGVBQWU7RUFDZixjQUFjO0VBQ2QsZ0NqQ3ZDc0M7RWlDd0N0QyxlakNjbUM7QUQ4N0NwQzs7QWtDMThDQztFQU5EO0lBT0UsZWpDWWtDO0VEazhDbEM7QUFDRjs7QWtDMzhDQTtFQUNDLGdCQUFnQjtBbEM4OENqQjs7QWtDNThDQztFQUhEO0lBSUUsaUJqQ0VvQztFRDg4Q3BDO0FBQ0Y7O0FtQ2pqREE7O3VDbkNxakR1QztBbUNqakR2Qzs7OztDbkNzakRDO0FtQ2hqREQ7RUFDQyxvQkFBYTtFQUFiLGFBQWE7RUFDYixlQUFlO0VBQ2Ysd0JBQXVCO0VBQXZCLHVCQUF1QjtFQUN2QixlQUFlO0VBQ2Ysa0JsQ2lGc0M7RWtDaEZ0QyxrQkFBa0I7RUFDbEIsa0JBQWtCO0FuQ2tqRG5COztBbUMvaURDO0VBQ0Msa0JBQWtCO0VBQ2xCLGtCQUFrQjtFQUNsQixrQmxDeUVxQztFa0N4RXJDLFdBQVc7QW5Da2pEYjs7QW1DdGpERTtFQU9DLGFBQWE7RUFDYixzQmxDd0JpQztFa0N2QmpDLHlCbENjb0M7RWtDYnBDLGtCQUFrQjtFQUNsQixjbENZb0M7RWtDWHBDLG9CQUFvQjtFQUNwQixnQkFBZ0I7RUFDaEIsa0JBQWtCO0FuQ21qRHJCOztBbUM3aURDO0VBQ0MsZ0JBQWdCO0VBQ2hCLG9CQUFvQjtFQUNwQixjbENBcUM7RWtDQ3JDLHlCbENEcUM7RWtDRXJDLHNCbENPa0M7RWtDTmxDLGtCQUFrQjtFQUNsQix5QmxDSnFDO0VrQ0tyQyxXbENJa0M7QUQ0aURwQzs7QW1DL2lERTtFQVREO0lBVUUsY0FBYztJQUNkLHFCbENSb0M7SWtDU3BDLGNsQ1JvQztFRDJqRHJDO0FBQ0Y7O0FtQ2pqREU7RUFDQyxzQmxDRG1DO0VrQ0VuQyxZQUFZO0VBQ1osY0FBYztFQUNkLGtCQUFrQjtFQUNsQixZQUFZO0VBQ1osV0FBVztBbkNvakRkOztBbUNqakRHO0VBQ0MsV2xDYmdDO0VrQ2NoQyx5QmxDdkJtQztFa0N3Qm5DLGlCQUFpQjtBbkNvakRyQjs7QW1DampERztFQUNDLGNsQzNCbUM7RWtDNEJuQyxxQmxDN0JtQztBRGlsRHZDOztBbUNya0RFO0VBcUJFLFlBQVk7RUFDWixjQUFjO0VBQ2QsV0FBVztFQUNYLFdBQVc7RUFDWCxzQmxDekJrQztFa0MwQmxDLGtCQUFrQjtFQUNsQixRQUFRO0VBQ1IsWUFBWTtFQUNaLFdBQVc7QW5Db2pEZjs7QW1DN2lEQztFQUNDLGFBQWE7QW5DZ2pEZjs7QW1DL2lERTtFQUZEO0lBR0UsZUFBZTtFbkNtakRoQjtBQUNGOztBbUNqakRFO0VBQ0MsaUJBQWlCO0FuQ29qRHBCOztBb0N0cERBOzt1Q3BDMHBEdUM7QW9DdHBEdkM7O0VwQ3lwREU7QW9DdHBERjtFQU1DOztHcENvcERFO0VvQzdvREY7O0dwQ2dwREU7RW9DdG9ERDs7SXBDeW9ERTtFb0Nsb0RIOztHcENxb0RFO0VvQzVuREY7O0dwQytuREU7RW9DeG5ERjs7R3BDMm5ERTtFb0NwbkRGOztHcEN1bkRFO0VvQ2huREY7O0dwQ21uREU7RW9DM21ERjs7R3BDOG1ERTtFb0NqbURGOztHcENvbURFO0FBQ0g7O0FvQ3RyREE7RUFHRSxtQkFBbUI7QXBDdXJEckI7O0FvQzFyREE7RUFVRSwwQkFBMEI7QXBDb3JENUI7O0FvQzlyREE7RUFpQkUsb0JBQW9CO0VBQ3BCLDJCbkNrQ2tDO0VtQ2pDbEMsY25DK0JxQztFbUM5QnJDLGVBQWU7QXBDaXJEakI7O0FvQ3JzREE7RUEyQkcsbUJBQW1CO0FwQzhxRHRCOztBb0N6c0RBO0VBa0NFLG1CQUFtQjtFQUNuQixXbkNpQmtDO0VtQ2hCbEMsaUJBQWlCO0FwQzJxRG5COztBb0Mvc0RBO0VBMkNFLG1CQUFtQjtBcEN3cURyQjs7QW9DbnREQTtFQWtERSxtQkFBbUI7QXBDcXFEckI7O0FvQ3Z0REE7RUF5REUsbUJBQW1CO0FwQ2txRHJCOztBb0MzdERBO0VBZ0VFLG1CQUFtQjtBcEMrcERyQjs7QW9DL3REQTtFQXdFRSxnQkFBZ0I7RUFDaEIsaUJBQWlCO0VBQ2pCLG1CQUFtQjtBcEMycERyQjs7QW9DcnVEQTtFQTZFRyxnQkFBZ0I7QXBDNHBEbkI7O0FvQ3p1REE7RUFxRkUsbUJBQW1CO0VBQ25CLGlCQUFpQjtFQUNqQixtQkFBbUI7QXBDd3BEckI7O0FvQy91REE7RUEwRkcsZ0JBQWdCO0FwQ3lwRG5COztBb0NudkRBO0VBK0ZFLHFCQUFxQjtFQUNyQixnQkFBZ0I7QXBDd3BEbEI7O0FxQy92REE7O3VDckNtd0R1QztBcUMvdkR2Qzs7RXJDa3dERTtBcUMvdkREO0VBQ0EsbUJwQ3VJa0Q7QUQwbkRuRDs7QXFDOXZEQTs7RXJDa3dERTtBcUMvdkRGO0VBQ0MscUJBQXFCO0VBQ2xCLGVwQ2lGZ0M7RW9DaEZoQyxpQkFBaUI7QXJDaXdEckI7O0FxQzl2REE7O0VyQ2t3REU7QXFDL3ZERjtFQUNJLGtCQUFrQjtBckNpd0R0Qjs7QXFDOXZEQTs7RXJDa3dERTtBcUMvdkRGO0VBQ0kscUJBQXFCO0VBQ3JCLGtCcEMrRG1DO0VvQzlEbkMsY3BDd0JtQztBRHl1RHZDOztBc0NseURBOzt1Q3RDc3lEdUM7QXNDbnlEdkM7O0V0Q3N5REU7QXNDbHlERjs7RXRDcXlERTtBc0NseURGO0VBQ0Msb0JBQWE7RUFBYixhQUFhO0F0Q295RGQ7O0F1Qy95REE7RUFDQyxnQnRDMkhvQztFc0MxSHBDLG1CdEM2SWtEO0FEcXFEbkQ7O0F3Q256REE7O3VDeEN1ekR1QztBd0NuekR2Qzs7RXhDc3pERTtBd0NsekRGO0VBQ0ksZ0JBQWdCO0F4Q296RHBCOztBd0NsekRJO0VBSEo7SUFJUSxpQkFBaUI7RXhDc3pEdkI7QUFDRjs7QXdDbnpEQTtFQUNJLG9CQUFhO0VBQWIsYUFBYTtFQUNiLHlCQUFtQjtFQUFuQixtQkFBbUI7QXhDc3pEdkI7O0F3Q3B6REk7RUFKSjtJQUtRLHFCQUF5QjtJQUF6Qix5QkFBeUI7RXhDd3pEL0I7QUFDRjs7QXdDcnpEQTtFQUNJLHVCQUEyQjtFQUEzQiwyQkFBMkI7QXhDd3pEL0I7O0F3Q3R6REk7RUFISjtJQUlRLHFCQUF5QjtJQUF6Qix5QkFBeUI7RXhDMHpEL0I7QUFDRjs7QXdDdnpEQTtFQUNJLGlCQUFpQjtFQUNqQixvQkFBb0I7RUFDcEIsaUJBQWlCO0F4QzB6RHJCOztBd0N4ekRJO0VBQ0ksV0FBVztBeEMyekRuQjs7QXdDenpEUTtFQUhKO0lBSVEsV0FBVztFeEM2ekRyQjtBQUNGOztBd0N6ekRBO0VBQ0ksa0N2Q3dDaUQ7RXVDdkNqRCxpQnZDZ0RrQztFdUMvQ2xDLGN2Q1JtQztBRG8wRHZDOztBd0MxekRJO0VBQ0ksaUJBQWlCO0F4QzZ6RHpCOztBd0MzekRRO0VBSEo7SUFJUSxjQUFjO0V4Qyt6RHhCO0FBQ0Y7O0FEdHlEQTs7dUNDMHlEdUM7QXlDNzNEdkM7O3VDekNnNER1QztBeUM1M0R2Qzs7O0V6Q2c0REU7QXlDNTNERjtFQUNJLHdCQUF3QjtFQUN4Qiw2QkFBNkI7QXpDODNEakM7O0F5QzMzREE7OztFekNnNERFO0F5QzUzREY7RUFDSSw2QkFBNkI7RUFDN0IsZ0JBQWdCO0VBQ2hCLFVBQVU7RUFDVixXQUFXO0VBQ1gsVUFBVTtFQUNWLFNBQVM7RUFDVCw4QkFBOEI7QXpDODNEbEM7O0EwQ3Q1REE7O3VDMUMwNUR1QztBMEN0NUR2Qzs7O0UxQzA1REU7QTBDdDVERDtFQUNBLDJCQUEyQjtBMUN3NUQ1Qjs7QTBDcjVEQTs7O0UxQzA1REU7QTBDdDVERjtFQUNDLDhCQUF3QztBMUN3NUR6Qzs7QTBDcjVEQTs7O0UxQzA1REU7QTBDdDVERjtFQUNDLDhCQUFrQztBMUN3NURuQzs7QTBDcjVEQTs7O0UxQzA1REU7QTBDdDVERjtFQUNDLDhCQUF3QztBMUN3NUR6Qzs7QTBDcjVEQTtFQUNDLDhCQUF3QztBMUN3NUR6Qzs7QTBDdDVEQztFQUhEO0lBSUUsOEJBQTBDO0UxQzA1RDFDO0FBQ0Y7O0EwQ3g1REE7OztFMUM2NURFO0EwQ3o1REY7RUFDQyx3QkFBd0I7QTFDMjVEekI7O0EwQ3g1REE7OztFMUM2NURFO0EwQ3o1REY7RUFDQywyQkFBcUM7QTFDMjVEdEM7O0EwQ3g1REE7OztFMUM2NURFO0EwQ3o1REY7RUFDQywyQkFBK0I7QTFDMjVEaEM7O0EwQ3g1REE7OztFMUM2NURFO0EwQ3o1REY7RUFDQywyQkFBcUM7QTFDMjVEdEM7O0EwQ3g1REE7RUFDQyw0QkFBNEI7QTFDMjVEN0I7O0EwQ3g1REE7OztFMUM2NURFO0EwQ3o1REY7RUFDQywwQkFBMEI7QTFDMjVEM0I7O0EwQ3g1REE7OztFMUM2NURFO0EwQ3o1REY7RUFDQyw2QkFBdUM7QTFDMjVEeEM7O0EwQ3g1REE7OztFMUM2NURFO0EwQ3o1REY7RUFDQyw2QkFBaUM7QTFDMjVEbEM7O0EwQ3g1REE7OztFMUM2NURFO0EwQ3o1REY7RUFDQyw2QkFBdUM7QTFDMjVEeEM7O0EwQ3g1REE7OztFMUM2NURFO0EwQ3o1REY7RUFDQyx5QkFBeUI7QTFDMjVEMUI7O0EwQ3g1REE7OztFMUM2NURFO0EwQ3o1REY7RUFDQyw0QkFBc0M7QTFDMjVEdkM7O0EwQ3g1REE7OztFMUM2NURFO0EwQ3o1REY7RUFDQyw0QkFBZ0M7QTFDMjVEakM7O0EwQ3g1REE7OztFMUM2NURFO0EwQ3o1REY7RUFDQyw0QkFBc0M7QTFDMjVEdkM7O0EwQ3g1REE7O0UxQzQ1REU7QTBDejVERjtFQUNDLHlCQUF5QjtBMUMyNUQxQjs7QTBDeDVEQTs7RTFDNDVERTtBMEN6NURGO0VBQ0MscUJBQXFCO0ExQzI1RHRCOztBMEN4NURBOztFMUM0NURFO0EwQ3o1REY7RUFDQyx3QkFBa0M7QTFDMjVEbkM7O0EwQ3g1REE7O0UxQzQ1REU7QTBDejVERjtFQUNDLHdCQUE0QjtBMUMyNUQ3Qjs7QTBDeDVEQTs7RTFDNDVERTtBMEN6NURGO0VBQ0Msd0JBQWtDO0ExQzI1RG5DOztBMEN4NURBOztFMUM0NURFO0EwQ3o1REY7RUFDQyx5QkFBeUI7QTFDMjVEMUI7O0EwQ3g1REE7O0UxQzQ1REU7QTBDejVERjtFQUNDLDRCQUFzQztBMUMyNUR2Qzs7QTBDeDVEQTs7RTFDNDVERTtBMEN6NURGO0VBQ0MsNEJBQWdDO0ExQzI1RGpDOztBMEN4NURBOztFMUM0NURFO0EwQ3o1REY7RUFDQyw0QkFBc0M7QTFDMjVEdkM7O0EwQ3g1REE7O0UxQzQ1REU7QTBDejVERjtFQUNDLDRCQUE0QjtBMUMyNUQ3Qjs7QTBDeDVEQTs7RTFDNDVERTtBMEN6NURGO0VBQ0MsK0JBQXlDO0ExQzI1RDFDOztBMEN4NURBOztFMUM0NURFO0EwQ3o1REY7RUFDQywrQkFBbUM7QTFDMjVEcEM7O0EwQ3g1REE7O0UxQzQ1REU7QTBDejVERjtFQUNDLCtCQUF5QztBMUMyNUQxQzs7QTBDeDVEQTs7RTFDNDVERTtBMEN6NURGO0VBQ0MsMkJBQTJCO0ExQzI1RDVCOztBMEN4NURBOztFMUM0NURFO0EwQ3o1REY7RUFDQyw4QkFBd0M7QTFDMjVEekM7O0EwQ3g1REE7O0UxQzQ1REU7QTBDejVERjtFQUNDLDhCQUFrQztBMUMyNURuQzs7QTBDeDVEQTs7RTFDNDVERTtBMEN6NURGO0VBQ0MsOEJBQXdDO0ExQzI1RHpDOztBMEN4NURBOztFMUM0NURFO0EwQ3o1REY7RUFDQywwQkFBMEI7QTFDMjVEM0I7O0EwQ3g1REE7O0UxQzQ1REU7QTBDejVERjtFQUNDLDZCQUF1QztBMUMyNUR4Qzs7QTBDeDVEQTs7RTFDNDVERTtBMEN6NURGO0VBQ0MsNkJBQWlDO0ExQzI1RGxDOztBMEN4NURBOztFMUM0NURFO0EwQ3o1REY7RUFDQyw2QkFBdUM7QTFDMjVEeEMiLCJmaWxlIjoic3R5bGUuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlxcXHJcbiAgICAjVEFCTEUgT0YgQ09OVEVOVFNcclxuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cclxuLyoqXHJcbiAqIEFCU1RSQUNUUy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLkRlY2xhcmF0aW9ucyBvZiBTYXNzIHZhcmlhYmxlcyAmIG1peGluc1xyXG4gKiBCQVNFLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5EZWZhdWx0IGVsZW1lbnQgc3R5bGVzXHJcbiAqIExBWU9VVC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLkxheW91dC1zcGVjaWZpYyBzdHlsZXNcclxuICogQ09NUE9ORU5UUy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uQ29tcG9uZW50IHN0eWxlc1xyXG4gKiBVVElMSVRJRVMuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5VdGlsaXR5IGNsYXNzZXNcclxuICovXHJcblxyXG4vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcXFxyXG4gICAgI0FCU1RSQUNUU1xyXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xyXG5AaW1wb3J0IFwic2Nzcy9hYnN0cmFjdHMvdmFyaWFibGVzXCI7XHJcbkBpbXBvcnQgXCJzY3NzL2Fic3RyYWN0cy9taXhpbnNcIjtcclxuQGltcG9ydCBcInNjc3MvYWJzdHJhY3RzL2NvbG9yc1wiO1xyXG5AaW1wb3J0IFwic2Nzcy9hYnN0cmFjdHMvdHlwb2dyYXBoeVwiO1xyXG5cclxuXHJcblxyXG5cclxuXHJcbi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlxcXHJcbiAgICAjQkFTRVxyXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xyXG5AaW1wb3J0IFwic2Nzcy9iYXNlL3Jlc2V0XCI7XHJcbkBpbXBvcnQgXCJzY3NzL2Jhc2UvYm9keVwiO1xyXG5AaW1wb3J0IFwic2Nzcy9iYXNlL2xpbmtzXCI7XHJcbkBpbXBvcnQgXCJzY3NzL2Jhc2UvbGlzdHNcIjtcclxuQGltcG9ydCBcInNjc3MvYmFzZS9oZWFkaW5nc1wiO1xyXG5AaW1wb3J0IFwic2Nzcy9iYXNlL2Zvcm1zXCI7XHJcbkBpbXBvcnQgXCJzY3NzL2Jhc2UvYnV0dG9uc1wiO1xyXG5AaW1wb3J0IFwic2Nzcy9iYXNlL21haW5cIjtcclxuQGltcG9ydCBcInNjc3MvYmFzZS9tZWRpYVwiO1xyXG5AaW1wb3J0IFwic2Nzcy9iYXNlL3RleHRcIjtcclxuQGltcG9ydCBcInNjc3MvYmFzZS90YWJsZVwiO1xyXG5cclxuXHJcblxyXG5cclxuXHJcbi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlxcXHJcbiAgICAjTEFZT1VUXHJcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXHJcbkBpbXBvcnQgXCJzY3NzL2xheW91dC9sYXlvdXRcIjtcclxuXHJcblxyXG5cclxuXHJcblxyXG4vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcXFxyXG4gICAgI0NPTVBPTkVOVFNcclxuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cclxuQGltcG9ydCBcInNjc3MvY29tcG9uZW50cy9idXR0b25zXCI7XHJcbkBpbXBvcnQgXCJzY3NzL2NvbXBvbmVudHMvZGVmaW5pdGlvbi1saXN0XCI7XHJcbkBpbXBvcnQgXCJzY3NzL2NvbXBvbmVudHMvZGVmaW5pdGlvbi1saXN0LWxpc3RcIjtcclxuQGltcG9ydCBcInNjc3MvY29tcG9uZW50cy9oZXJvXCI7XHJcbkBpbXBvcnQgXCJzY3NzL2NvbXBvbmVudHMvdG91dFwiO1xyXG5AaW1wb3J0IFwic2Nzcy9jb21wb25lbnRzL3NlY3Rpb25cIjtcclxuQGltcG9ydCBcInNjc3MvY29tcG9uZW50cy9zdGFja2VkLWJsb2NrXCI7XHJcbkBpbXBvcnQgXCJzY3NzL2NvbXBvbmVudHMvc3RyaXBlXCI7XHJcbkBpbXBvcnQgXCJzY3NzL2NvbXBvbmVudHMvZm9vdGVyXCI7XHJcbkBpbXBvcnQgXCJzY3NzL2NvbXBvbmVudHMvZm9vdGVyLW5hdlwiO1xyXG5AaW1wb3J0IFwic2Nzcy9jb21wb25lbnRzL2hlYWRlclwiO1xyXG5AaW1wb3J0IFwic2Nzcy9jb21wb25lbnRzL2xvZ29cIjtcclxuQGltcG9ydCBcInNjc3MvY29tcG9uZW50cy9pY29uXCI7XHJcbkBpbXBvcnQgXCJzY3NzL2NvbXBvbmVudHMvaW5wdXRcIjtcclxuQGltcG9ydCBcInNjc3MvY29tcG9uZW50cy9wYWdlLWhlYWRlclwiO1xyXG5AaW1wb3J0IFwic2Nzcy9jb21wb25lbnRzL3BhZ2luYXRpb25cIjtcclxuQGltcG9ydCBcInNjc3MvY29tcG9uZW50cy9wcmltYXJ5LW5hdlwiO1xyXG5AaW1wb3J0IFwic2Nzcy9jb21wb25lbnRzL3Byb21vLWJsb2NrXCI7XHJcbkBpbXBvcnQgXCJzY3NzL2NvbXBvbmVudHMvcHJvZ3Jlc3MtdHJhY2tlclwiO1xyXG5AaW1wb3J0IFwic2Nzcy9jb21wb25lbnRzL3RleHQtcGFzc2FnZVwiO1xyXG5AaW1wb3J0IFwic2Nzcy9jb21wb25lbnRzL2ZpZWxkXCI7XHJcbkBpbXBvcnQgXCJzY3NzL2NvbXBvbmVudHMvc2VhcmNoLWZvcm1cIjtcclxuQGltcG9ydCBcInNjc3MvY29tcG9uZW50cy9zdGFja2VkLWJsb2NrLWxpc3RcIjtcclxuQGltcG9ydCBcInNjc3MvY29tcG9uZW50cy90b3RhbFwiO1xyXG5cclxuXHJcblxyXG5cclxuXHJcbi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlxcXHJcbiAgICAjVVRJTElUSUVTXHJcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXHJcbkBpbXBvcnQgXCJzY3NzL3V0aWxpdGllcy92aXNpYmlsaXR5XCI7XHJcbkBpbXBvcnQgXCJzY3NzL3V0aWxpdGllcy9zcGFjaW5nXCI7XHJcbiIsIi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlxcXHJcbiAgICAjVEFCTEUgT0YgQ09OVEVOVFNcclxuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cbi8qKlxyXG4gKiBBQlNUUkFDVFMuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5EZWNsYXJhdGlvbnMgb2YgU2FzcyB2YXJpYWJsZXMgJiBtaXhpbnNcclxuICogQkFTRS4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uRGVmYXVsdCBlbGVtZW50IHN0eWxlc1xyXG4gKiBMQVlPVVQuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5MYXlvdXQtc3BlY2lmaWMgc3R5bGVzXHJcbiAqIENPTVBPTkVOVFMuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLkNvbXBvbmVudCBzdHlsZXNcclxuICogVVRJTElUSUVTLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uVXRpbGl0eSBjbGFzc2VzXHJcbiAqL1xuLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qXFxcclxuICAgICNBQlNUUkFDVFNcclxuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cbi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlxcXHJcbiAgICAjVkFSSUFCTEVTXHJcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG4vKipcclxuICogQ09OVEVOVFNcclxuICpcclxuICogQ09MT1JTXHJcbiAqIEJyYW5kIENvbG9ycy4uLi4uLi4uLi4uLi4uLkdsb2JhbGx5LWF2YWlsYWJsZSB2YXJpYWJsZXMgYW5kIGNvbmZpZ1xyXG4gKiBOZXV0cmFsIENvbG9ycy4uLi4uLi4uLi4uLi5HcmF5c2NhbGUgY29sb3JzLCBpbmNsdWRpbmcgd2hpdGUgYW5kIGJsYWNrXHJcbiAqIFV0aWxpdHkgQ29sb3JzLi4uLi4uLi4uLi4uLkluZm8sIFdhcm5pbmcsIEVycm9yLCBTdWNjZXNzXHJcbiAqXHJcbiAqIFRZUE9HUkFQSFlcclxuICogRm9udCBGYW1pbGllcy4uLi4uLi4uLi4uLi4uVGhlIGZvbnRzIHVzZWQgaW4gdGhlIGRlc2lnbiBzeXN0ZW1cclxuICogU2l6aW5nLi4uLi4uLi4uLi4uLi4uLi4uLi4uRm9udCBzaXppbmdcclxuICpcclxuICogTEFZT1VUXHJcbiAqIE1heC13aWR0aHMuLi4uLi4uLi4uLi4uLi4uLk1heGltdW0gbGF5b3V0IGNvbnRhaW5lciB3aWR0aFxyXG4gKlxyXG5cclxuICogU1BBQ0lOR1xyXG4gKiBTcGFjaW5nIGRlZmF1bHRzLi4uLi4uLi4uLi5TcGFjaW5nIGJldHdlZW4gZWxlbWVudHNcclxuICpcclxuICogQk9SREVSU1xyXG4gKiBCb3JkZXIgV2lkdGguLi4uLi4uLi4uLi4uLi5Cb3JkZXIgdGhpY2tuZXNzZXNcclxuICogQm9yZGVyIFJhZGl1cy4uLi4uLi4uLi4uLi4uQm9yZGVyIHJhZGl1cyBkZWZpbml0aW9uc1xyXG4gKlxyXG4gKiBBTklNQVRJT05cclxuICogQW5pbWF0aW9uIFNwZWVkLi4uLi4uLi4uLi4uVHJhbnNpdGlvbi9hbmltYXRpb24gc3BlZWQgdmFyaWFibGVzXHJcbiAqIEFuaW1hdGlvbiBlYXNpbmcuLi4uLi4uLi4uLkVhc2luZyB2YXJpYWJsZXNcclxuICpcclxuICogQlJFQUtQT0lOVFNcclxuICogQnJlYWtwb2ludHMuLi4uLi4uLi4uLi4uLi4uR2xvYmFsIGJyZWFrcG9pbnQgZGVmaW5pdGlvbnNcclxuICovXG4vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcXFxyXG4gICAgICNDT0xPUlNcclxuIFxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG4vKipcclxuICogQnJhbmQgQ29sb3JzXHJcbiAqIDEpIEJyYW5kPXNwZWNpZmljIGNvbG9yc1xyXG4gKi9cbi8qKlxyXG4gKiBOZXV0cmFsIENvbG9yc1xyXG4gKiAxKSBOZXV0cmFsIGNvbG9ycyBhcmUgZ3JheXNjYWxlIHZhbHVlcyB1c2VkIHRocm91Z2hvdXQgdGhlIFVJXHJcbiAqL1xuLyoqXHJcbiAqIFV0aWxpdHkgQ29sb3JzXHJcbiAqIDEpIFV0aWxpdHkgY29sb3JzIGFyZSBjb2xvcnMgdXNlZCB0byBwcm92aWRlIGZlZWRiYWNrLCBzdWNoIGFzIGFsZXJ0IG1lc3NhZ2VzLFxyXG4gKiAgICBmb3JtIHZhbGlkYXRpb24sIGV0Yy5cclxuICovXG4vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcXFxyXG4gICAgI1RZUE9HUkFQSFlcclxuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cbi8qKlxyXG4gKiBGb250IEZhbWlseVxyXG4gKi9cbi8qKlxyXG4gKiBGb250IFNpemluZ1xyXG4gKi9cbi8qKlxyXG4gKiBMaW5lIEhlaWdodFxyXG4gKi9cbi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlxcXHJcbiAgICAjTEFZT1VUXHJcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG4vKipcclxuICogTWF4IFdpZHRoXHJcbiAqL1xuLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qXFxcclxuICAgICNTUEFDSU5HXHJcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG4vKipcclxuICogU3BhY2luZyBhbmQgb2Zmc2V0c1xyXG4gKiAxKSBVc2VkIHRvIHNwYWNlIGdyaWRzIGFuZCBib2R5IHBhZGRpbmdcclxuICovXG4vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcXFxyXG4gICAgI0JPUkRFUlNcclxuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cbi8qKlxyXG4gKiBCb3JkZXJcclxuICovXG4vKipcclxuICogQm9yZGVyIHJhZGl1c1xyXG4gKi9cbi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlxcXHJcbiAgICAjQU5JTUFUSU9OXHJcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG4vKipcclxuICogVHJhbnNpdGlvbiBTcGVlZFxyXG4gKi9cbi8qKlxyXG4gKiBUcmFuc2l0aW9uIEVhc2VcclxuICovXG4vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcXFxyXG4gICAgI0JSRUFLUE9JTlRTXHJcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG4vKipcclxuICogQnJlYWtwb2ludHMgdXNlZCBpbiBtZWRpYSBxdWVyaWVzXHJcbiAqIDEpIFRoZXNlIGFyZSBub3QgdGhlIG9ubHkgYnJlYWtwb2ludHMgdXNlZCwgYnV0IHRoZXkgcHJvdmlkZSBhIGZldyBkZWZhdWx0c1xyXG4gKi9cbi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlxcXHJcbiAgICAjTUlYSU5TXHJcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG4vKipcclxuICogQm9keSBTdHlsZXNcclxuICogMSkgUHJldmVudCBNb2JpbGUgU2FmYXJpIGZyb20gc2NhbGluZyB1cCB0ZXh0OiBodHRwczovL2Jsb2cuNTVtaW51dGVzLmNvbS8yMDEyLzA0L2lwaG9uZS10ZXh0LXJlc2l6aW5nL1xyXG4gKi9cbi8qKlxyXG4gKiBYTCBUeXBlIFN0eWxlc1xyXG4gKi9cbi8qKlxyXG4gKiBYTCBIZWFkaW5nIFN0eWxlc1xyXG4gKi9cbi8qKlxyXG4gKiBYTCBIZWFkaW5nIFN0eWxlc1xyXG4gKi9cbi8qKlxyXG4gKiBMYXJnZSBIZWFkaW5nIFN0eWxlc1xyXG4gKi9cbi8qKlxyXG4gKiBNZWRpdW0gMiBIZWFkaW5nIFN0eWxlc1xyXG4gKi9cbi8qKlxyXG4gKiBNZWRpdW0gSGVhZGluZyBTdHlsZXNcclxuICovXG4vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcXFxyXG4gICAgI0NPTE9SU1xyXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuLyoqXHJcbiAqIEluIHRoaXMgZmlsZSwgd2UgdGFrZSB0aGUgbGl0ZXJhbCBjb2xvcnMgZnJvbSBvdXIgcGFsZXR0ZSAoZGVmaW5lZCBpbiB2YXJpYWJsZXMuc2NzcylcclxuICogYW5kIGRlZmluZSB0aGVtIGFnYWluc3QgdmFyaWFibGVzIHRoYXQgd2UgY2FuIHV0aWxpc2UgYW55d2hlcmUgdGhyb3VnaG91dCB0aGUgcHJvamVjdC5cclxuICovXG4vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcXFxyXG4gICAgI0dMT0JBTCBURVhUIENPTE9SXHJcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG4vKipcclxuICogQm9keSB0ZXh0IGFuZCBiYWNrZ3JvdW5kIGNvbG9yc1xyXG4gKi9cbi8qKlxyXG4gKiBIaWdobGlnaHQgY29sb3JzXHJcbiAqL1xuLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qXFxcclxuICAgICNMSU5LU1xyXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qXFxcclxuICAgICNCVVRUT05TXHJcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG4vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcXFxyXG4gICAgI0ZPUk1TXHJcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG4vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcXFxyXG4gICAgI0JSRUFLUE9JTlRTXHJcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG4vKipcclxuICogSW4gdGhpcyBmaWxlLCB3ZSB0YWtlIHRoZSBsaXRlcmFsIGNvbG9ycyBmcm9tIG91ciBwYWxldHRlIGFuZCBkZWZpbmUgdGhlbVxyXG4gKiBhZ2FpbnN0IHZhcmlhYmxlcyB0aGF0IHdlIGNhbiB1dGlsaXNlIGFueXdoZXJlIHRocm91Z2hvdXQgdGhlIHByb2plY3QuXHJcbiAqL1xuLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qXFxcclxuICAgICNCQVNFXHJcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG4vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcXFxyXG4gICAgI1JFU0VUXHJcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG4vKipcclxuICogQm9yZGVyLUJveCBodHRwOi9wYXVsaXJpc2guY29tLzIwMTIvYm94LXNpemluZy1ib3JkZXItYm94LWZ0dy9cclxuICovXG4qIHtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbn1cblxuLyoqXHJcbiAqIDEpIFplcm8gb3V0IG1hcmdpbnMgYW5kIHBhZGRpbmcgZm9yIGVsZW1lbnRzXHJcbiAqL1xuaHRtbCwgYm9keSwgZGl2LCBvYmplY3QsIGlmcmFtZSwgaDEsIGgyLCBoMywgaDQsIGg1LCBoNiwgcCwgYmxvY2txdW90ZSwgb2wsIHVsLCBsaSwgZm9ybSwgbGVnZW5kLCBsYWJlbCwgdGFibGUsIGhlYWRlciwgZm9vdGVyLCBuYXYsIHNlY3Rpb24sIGZpZ3VyZSB7XG4gIG1hcmdpbjogMDtcbiAgcGFkZGluZzogMDtcbn1cblxuLyoqXHJcbiAqIDEpIFNldCBIVE1MNSBlbGVtZW50cyB0byBkaXNwbGF5OiBibG9ja1xyXG4gKi9cbmhlYWRlciwgZm9vdGVyLCBuYXYsIHNlY3Rpb24sIGFydGljbGUsIGZpZ3VyZSB7XG4gIGRpc3BsYXk6IGJsb2NrO1xufVxuXG4vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcXFxyXG4gICAgI0JPRFlcclxuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cbi8qKlxyXG4gKiBIVE1MIGJhc2Ugc3R5bGVzXHJcbiAqIDEpIFNldCB0aGUgaHRtbCBlbGVtZW50J3MgaGVpZ2h0IHRvIGF0IGxlYXN0IDEwMCUgb2YgdGhlIHZpZXdwb3J0LlxyXG4gKiAgICBUaGlzIGlzIHVzZWQgdG8gYWNoaWV2ZSBhIHN0aWNreSBmb290ZXJcclxuICovXG5odG1sIHtcbiAgbWluLWhlaWdodDogMTAwdmg7XG4gIC8qIDEgKi9cbn1cblxuLyoqXHJcbiAqIEJvZHkgYmFzZSBzdHlsZXNcclxuICogMSkgU2V0IHRoZSBib2R5IGVsZW1lbnQncyBoZWlnaHQgdG8gYXQgbGVhc3QgMTAwJSBvZiB0aGUgdmlld3BvcnQuXHJcbiAqICAgIFRoaXMgaXMgdXNlZCB0byBhY2hpZXZlIGEgc3RpY2t5IGZvb3RlclxyXG4gKi9cbmJvZHkge1xuICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbiAgY29sb3I6ICM0MzQ5NGY7XG4gIGZvbnQtZmFtaWx5OiBcIk1vbnRzZXJyYXRcIiwgXCJIZWx2ZXRpY2FOZXVlXCIsIFwiSGVsdmV0aWNhXCIsIFwiQXJpYWxcIiwgc2Fucy1zZXJpZjtcbiAgbWluLWhlaWdodDogMTAwdmg7XG4gIC8qIDEgKi9cbiAgLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlO1xuICAvKiAxICovXG4gIGZvbnQtc2l6ZTogMXJlbTtcbiAgbGluZS1oZWlnaHQ6IDEuNjtcbiAgbGluZS1oZWlnaHQ6IDEuNjtcbiAgLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlO1xuICAvKiAxICovXG4gIGZvbnQtZmFtaWx5OiBcIk1vbnRzZXJyYXRcIiwgXCJIZWx2ZXRpY2FOZXVlXCIsIFwiSGVsdmV0aWNhXCIsIFwiQXJpYWxcIiwgc2Fucy1zZXJpZjtcbiAgLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlO1xuICAvKiAxICovXG4gIGZvbnQtc2l6ZTogMXJlbTtcbiAgbGluZS1oZWlnaHQ6IDEuNjtcbiAgbGluZS1oZWlnaHQ6IDEuNjtcbiAgLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlO1xuICAvKiAxICovXG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG4gIGNvbG9yOiAjNDM0OTRmO1xuICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDtcbn1cblxuLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qXFxcclxuICAgICNMSU5LU1xyXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuLyoqXHJcbiAqIExpbmsgYmFzZSBzdHlsZXNcclxuICovXG5hIHtcbiAgY29sb3I6ICM2NjY7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgb3V0bGluZTogMDtcbiAgdHJhbnNpdGlvbjogY29sb3IgMC4xNXMgZWFzZS1vdXQ7XG59XG5cbmE6aG92ZXIsIGE6Zm9jdXMge1xuICBjb2xvcjogIzJBQTFBRjtcbn1cblxuYTphY3RpdmUge1xuICBjb2xvcjogIzQzNDk0Zjtcbn1cblxuLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qXFxcclxuICAgICNMSVNUU1xyXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuLyoqXHJcbiAqIDEpIExpc3QgYmFzZSBzdHlsZXNcclxuICovXG4vKipcclxuICAqIFJlbW92ZSBsaXN0IHN0eWxlcyBmcm9tIHVub3JkZXJlZCBhbmQgb3JkZXJlZCBsaXN0c1xyXG4gICovXG5vbCwgdWwge1xuICBsaXN0LXN0eWxlOiBub25lO1xufVxuXG4vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcXFxyXG4gICAgI0hFQURJTkdTXHJcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5oMSwgaDIsIGgzLCBoNCB7XG4gIGZvbnQtZmFtaWx5OiBcIkNyaW1zb24gVGV4dFwiLCBzZXJpZjtcbn1cblxuLyoqXHJcbiAqIEhlYWRpbmcgMSBiYXNlIHN0eWxlc1xyXG4gKi9cbmgxIHtcbiAgZm9udC1zaXplOiAzcmVtO1xuICBmb250LXdlaWdodDogbm9ybWFsO1xuICBsaW5lLWhlaWdodDogMS4yO1xufVxuXG5AbWVkaWEgYWxsIGFuZCAobWluLXdpZHRoOiA0N2VtKSB7XG4gIGgxIHtcbiAgICBmb250LXNpemU6IDRyZW07XG4gIH1cbn1cblxuLyoqXHJcbiAqIEhlYWRpbmcgMiBiYXNlIHN0eWxlc1xyXG4gKi9cbmgyIHtcbiAgZm9udC1zaXplOiAxLjJyZW07XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gIGxpbmUtaGVpZ2h0OiAxLjI7XG59XG5cbi8qKlxyXG4gKiBIZWFkaW5nIDMgYmFzZSBzdHlsZXNcclxuICovXG5oMyB7XG4gIGZvbnQtc2l6ZTogMS4ycmVtO1xuICBmb250LXdlaWdodDogbm9ybWFsO1xuICBsaW5lLWhlaWdodDogMS4yO1xufVxuXG4vKipcclxuICogSGVhZGluZyA0IGJhc2Ugc3R5bGVzXHJcbiAqL1xuaDQge1xuICBmb250LXNpemU6IDFyZW07XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gIGxpbmUtaGVpZ2h0OiAxLjI7XG59XG5cbi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlxcXHJcbiAgICAjRk9STVNcclxuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cbi8qKlxyXG4gKiAxKSBGb3JtIGVsZW1lbnQgYmFzZSBzdHlsZXNcclxuICovXG4vKipcclxuICogSW5wdXQgcGxhY2Vob2xkZXIgdGV4dCBiYXNlIHN0eWxlc1xyXG4gKi9cbjo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlciB7XG4gIGNvbG9yOiAjY2ZkMmQ2O1xufVxuXG46Oi1tb3otcGxhY2Vob2xkZXIge1xuICBjb2xvcjogI2NmZDJkNjtcbn1cblxuOi1tcy1pbnB1dC1wbGFjZWhvbGRlciB7XG4gIGNvbG9yOiAjY2ZkMmQ2O1xufVxuXG4vKipcclxuICogRmllbGRzZXQgYmFzZSBzdHlsZXNcclxuICovXG5maWVsZHNldCB7XG4gIGJvcmRlcjogMDtcbiAgcGFkZGluZzogMDtcbiAgbWFyZ2luOiAwO1xufVxuXG4vKipcclxuICogTGVnZW5kIGJhc2Ugc3R5bGVzXHJcbiAqL1xubGVnZW5kIHtcbiAgbWFyZ2luLWJvdHRvbTogMC4yNXJlbTtcbn1cblxuLyoqXHJcbiAqIExhYmVsIGJhc2Ugc3R5bGVzXHJcbiAqL1xubGFiZWwge1xuICBkaXNwbGF5OiBibG9jaztcbiAgcGFkZGluZy1ib3R0b206IDAuMjVyZW07XG4gIGNvbG9yOiAjNDM0OTRmO1xufVxuXG4vKipcclxuICogQWRkIGZvbnQgc2l6ZSAxMDAlIG9mIGZvcm0gZWxlbWVudCBhbmQgbWFyZ2luIDAgdG8gdGhlc2UgZWxlbWVudHNcclxuICovXG5idXR0b24sIGlucHV0LCBzZWxlY3QsIHRleHRhcmVhIHtcbiAgZm9udC1mYW1pbHk6IGluaGVyaXQ7XG4gIGZvbnQtc2l6ZTogMXJlbTtcbiAgbWFyZ2luOiAwO1xufVxuXG4vKipcclxuICogVGV4dCBhcmVhIGJhc2Ugc3R5bGVzXHJcbiAqL1xudGV4dGFyZWEge1xuICByZXNpemU6IG5vbmU7XG59XG5cbi8qKlxyXG4gKiBJbnB1dCAgYW5kIHRleHQgYXJlYSBiYXNlIHN0eWxlc1xyXG4gKi9cbmlucHV0LCB0ZXh0YXJlYSB7XG4gIHdpZHRoOiAxMDAlO1xuICBwYWRkaW5nOiAwLjVyZW07XG4gIGJvcmRlcjogMXB4IHNvbGlkICM2NjY7XG4gIGJhY2tncm91bmQ6ICNmZmY7XG59XG5cbmlucHV0OmZvY3VzLCB0ZXh0YXJlYTpmb2N1cyB7XG4gIGJvcmRlci1jb2xvcjogIzQzNDk0Zjtcbn1cblxuaW5wdXQ6ZGlzYWJsZWQsIHRleHRhcmVhOmRpc2FibGVkIHtcbiAgYm9yZGVyLWNvbG9yOiAjZWVlO1xuICBiYWNrZ3JvdW5kOiAjZWVlO1xuICBjb2xvcjogI2NmZDJkNjtcbn1cblxuLyoqXHJcbiAqIFJlbW92ZSB3ZWJraXQgYXBwZWFyYW5jZSBzdHlsZXMgZnJvbSB0aGVzZSBlbGVtZW50c1xyXG4gKi9cbmlucHV0W3R5cGU9dGV4dF0sIGlucHV0W3R5cGU9c2VhcmNoXSwgaW5wdXRbdHlwZT1cInNlYXJjaFwiXTo6LXdlYmtpdC1zZWFyY2gtY2FuY2VsLWJ1dHRvbiwgaW5wdXRbdHlwZT1cInNlYXJjaFwiXTo6LXdlYmtpdC1zZWFyY2gtZGVjb3JhdGlvbiwgaW5wdXRbdHlwZT11cmxdLCBpbnB1dFt0eXBlPW51bWJlcl0sIHRleHRhcmVhIHtcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xufVxuXG4vKipcclxuICogQ2hlY2tib3ggYW5kIHJhZGlvIGJ1dHRvbiBiYXNlIHN0eWxlc1xyXG4gKi9cbmlucHV0W3R5cGU9XCJjaGVja2JveFwiXSxcbmlucHV0W3R5cGU9XCJyYWRpb1wiXSB7XG4gIHdpZHRoOiBhdXRvO1xuICBtYXJnaW4tcmlnaHQ6IDAuM3JlbTtcbiAgYm9yZGVyLWNvbG9yOiAjNjY2O1xufVxuXG4vKipcclxuICogU2VhcmNoIGlucHV0IGJhc2Ugc3R5bGVzXHJcbiAqL1xuaW5wdXRbdHlwZT1cInNlYXJjaFwiXSB7XG4gIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcbiAgYm9yZGVyLXJhZGl1czogMDtcbn1cblxuLyoqXHJcbiAqIFNlbGVjdFxyXG4gKiAxKSBSZW1vdmUgZGVmYXVsdCBzdHlsaW5nXHJcbiAqL1xuc2VsZWN0IHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIGZvbnQtc2l6ZTogMXJlbTtcbiAgd2lkdGg6IDEwMCU7XG4gIGJvcmRlcjogMXB4IHNvbGlkICM2NjY7XG4gIGJvcmRlci1yYWRpdXM6IDA7XG4gIHBhZGRpbmc6IDAuNXJlbTtcbiAgaGVpZ2h0OiAycmVtO1xuICBiYWNrZ3JvdW5kOiAjZmZmO1xuICBjb2xvcjogIzQzNDk0Zjtcbn1cblxuc2VsZWN0OmZvY3VzIHtcbiAgYm9yZGVyLWNvbG9yOiAjNDM0OTRmO1xufVxuXG4vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcXFxyXG4gICAgI0JVVFRPTlNcclxuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cbi8qKlxyXG4gKiBCdXR0b24gYW5kIHN1Ym1pdCBpbnB1dHMgcmVzZXRcclxuICogMSkgVGhlc2Ugc2hvdWxkIGJlIHN0eWxlZCB1c2luZyBjLWJ0blxyXG4gKi9cbmJ1dHRvbiB7XG4gIGN1cnNvcjogcG9pbnRlcjtcbn1cblxuLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qXFxcclxuICAgICNNQUlOIEVMRU1FTlRcclxuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cbi8qKlxyXG4gKiBNYWluIGVsZW1lbnRcclxuICovXG5bcm9sZT1tYWluXSB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBmbGV4OiAxIDAgYXV0bztcbn1cblxuLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qXFxcclxuICAgICNNRURJQVxyXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuLyoqXHJcbiAqIFJlc3BvbnNpdmUgaW1hZ2Ugc3R5bGluZ1xyXG4gKiAxKSBBbGxvd3MgZm9yIGltYWdlcyB0byBmbGV4IHdpdGggdmFyeWluZyBzY3JlZW4gc2l6ZVxyXG4gKi9cbmltZyB7XG4gIG1heC13aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiBhdXRvO1xufVxuXG4vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcXFxyXG4gICAgI1RFWFRcclxuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cbi8qKlxyXG4gKiBQYXJhZ3JhcGggYmFzZSBzdHlsZXNcclxuICovXG5wIHtcbiAgbWFyZ2luLWJvdHRvbTogMXJlbTtcbn1cblxuLyoqXHJcbiAqIEJsb2NrcXVvdGUgYmFzZSBzdHlsZXNcclxuICovXG5ibG9ja3F1b3RlIHtcbiAgZm9udC1zdHlsZTogaXRhbGljO1xuICBib3JkZXItbGVmdDogMnB4IHNvbGlkICMyQUExQUY7XG4gIGNvbG9yOiAjNjY2O1xuICBwYWRkaW5nLWxlZnQ6IDFyZW07XG4gIG1hcmdpbi1ib3R0b206IDFyZW07XG59XG5cbi8qKlxyXG4gKiBIb3Jpem9udGFsIHJ1bGUgYmFzZSBzdHlsZXNcclxuICovXG5ociB7XG4gIGJvcmRlcjogMDtcbiAgaGVpZ2h0OiAxcHg7XG4gIGJhY2tncm91bmQ6ICNkZGQ7XG4gIG1hcmdpbjogMXJlbSAwO1xufVxuXG4vKipcclxuICogU2VsZWN0aW9uIHN0eWxlc1xyXG4gKi9cbjo6LW1vei1zZWxlY3Rpb24ge1xuICBjb2xvcjogIzQzNDk0ZjtcbiAgYmFja2dyb3VuZDogI2RkZDtcbiAgLyogR2Vja28gQnJvd3NlcnMgKi9cbn1cblxuOjpzZWxlY3Rpb24ge1xuICBjb2xvcjogIzQzNDk0ZjtcbiAgYmFja2dyb3VuZDogI2RkZDtcbiAgLyogV2ViS2l0L0JsaW5rIEJyb3dzZXJzICovXG59XG5cbi8qKlxyXG4gKiBDb2RlIGJhc2Ugc3R5bGVzXHJcbiAqL1xuY29kZSB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgYmFja2dyb3VuZDogI2Y5ZjlmOTtcbiAgYm9yZGVyOiAxcHggc29saWQgI2RkZDtcbiAgcGFkZGluZzogLjJyZW0gLjVyZW07XG4gIGxpbmUtaGVpZ2h0OiAxLjI7XG4gIGZvbnQtc2l6ZTogLjg1cmVtO1xufVxuXG4vKipcclxuICogUHJlZm9ybWF0dGVkIHRleHQgYmFzZSBzdHlsZXNcclxuICovXG5wcmUge1xuICBiYWNrZ3JvdW5kOiAjZjlmOWY5O1xuICBib3JkZXI6IDFweCBzb2xpZCAjZGRkO1xuICBmb250LXNpemU6IDFyZW07XG4gIHBhZGRpbmc6IDFyZW07XG4gIG92ZXJmbG93LXg6IGF1dG87XG4gIC8qKlxyXG5cdCAqIFJlbW92ZSBib3JkZXIgZnJvbSBjb2RlIHdpdGhpbiBwcmVmb3JtYXR0ZWQgdGV4dCBibG9ja1xyXG5cdCAqL1xufVxuXG5wcmUgY29kZSB7XG4gIGJvcmRlcjogMDtcbn1cblxuLyoqXHJcbiAqIENvZGUgd2l0aCBsYW5ndWFnZXMgYXNzb2NpYXRlZCB3aXRoIHRoZW1cclxuICogMSkgT3ZlcnJpZGUgUHJpc20gc3lzbGVzIGZvciBjb2RlIGJsb2NrcyB3aXRoIGxhbmd1YWdlXHJcbiAqL1xuY29kZVtjbGFzcyo9XCJsYW5ndWFnZS1cIl0sXG5wcmVbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdIHtcbiAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZSAhaW1wb3J0YW50O1xufVxuXG4vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcXFxyXG4gICAgI1RBQkxFU1xyXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuLyoqXHJcbiAqIFRhYmxlXHJcbiAqL1xudGFibGUge1xuICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlO1xuICBib3JkZXItc3BhY2luZzogMDtcbiAgd2lkdGg6IDEwMCU7XG59XG5cbi8qKlxyXG4gKiBUYWJsZSBoZWFkZXIgY2VsbFxyXG4gKi9cbnRoIHtcbiAgdGV4dC1hbGlnbjogbGVmdDtcbn1cblxuLyoqXHJcbiAqIFRhYmxlIHJvd1xyXG4gKi9cbnRyIHtcbiAgdmVydGljYWwtYWxpZ246IHRvcDtcbn1cblxuLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qXFxcclxuICAgICNMQVlPVVRcclxuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cbi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlxcXHJcbiAgICAjTEFZT1VUXHJcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG4vKipcclxuICogTGF5b3V0IENvbnRhaW5lclxyXG4gKiAxKSBDYXBzIHRoZSB3aWR0aCBvZiB0aGUgY29udGVudCB0byB0aGUgbWF4aW11bSB3aWR0aFxyXG4gKiAgICBhbmQgY2VudGVycyB0aGUgY29udGFpbmVyXHJcbiAqL1xuLmwtY29udGFpbmVyIHtcbiAgbWF4LXdpZHRoOiA4MHJlbTtcbiAgcGFkZGluZzogMCAxcmVtO1xuICBtYXJnaW46IDAgYXV0bztcbn1cblxuQG1lZGlhIGFsbCBhbmQgKG1pbi13aWR0aDogNjBlbSkge1xuICAubC1jb250YWluZXIge1xuICAgIHBhZGRpbmc6IDAgMnJlbTtcbiAgfVxufVxuXG4ubC1jb250YWluZXItLW5hcnJvdyB7XG4gIG1heC13aWR0aDogNDVyZW07XG59XG5cbi8qKlxyXG4gKlxyXG4gKiAxKSBUaGlzIGNhcHMgdGhlIHdpZHRoIG9mIHRleHQgcGFzc2FnZXNcclxuICogICAgdG8gYWNoaWV2ZSBhIGNvbWZvcnRhYmxlIGxpbmUgbGVuZ3RoXHJcbiAqL1xuLmwtbGluZWxlbmd0aC1jb250YWluZXIge1xuICBtYXgtd2lkdGg6IDM2cmVtO1xufVxuXG4ubC1iYW5kIHtcbiAgYmFja2dyb3VuZDogI2Y5ZjlmOTtcbiAgcGFkZGluZzogMnJlbSAxcmVtO1xufVxuXG4vKipcclxuICogMiBjb2x1bW4gbGF5b3V0XHJcbiAqL1xuLmwtcGFnZS1sYXlvdXQtLXR3by1jb2x1bW4ge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xufVxuXG5AbWVkaWEgYWxsIGFuZCAobWluLXdpZHRoOiA2MGVtKSB7XG4gIC5sLXBhZ2UtbGF5b3V0LS10d28tY29sdW1uIHtcbiAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICB9XG59XG5cbkBtZWRpYSBhbGwgYW5kIChtaW4td2lkdGg6IDYwZW0pIHtcbiAgLmwtcGFnZS1sYXlvdXQtLXR3by1jb2x1bW4gLmwtcGFnZS1sYXlvdXRfX21haW4ge1xuICAgIHdpZHRoOiA3MCU7XG4gICAgcGFkZGluZy1yaWdodDogMXJlbTtcbiAgfVxufVxuXG4vKipcclxuICogU2lkZWJhclxyXG4gKi9cbkBtZWRpYSBhbGwgYW5kIChtaW4td2lkdGg6IDYwZW0pIHtcbiAgLmwtcGFnZS1sYXlvdXQtLXR3by1jb2x1bW4gLmwtcGFnZS1sYXlvdXRfX3NlY29uZGFyeSB7XG4gICAgd2lkdGg6IDMwJTtcbiAgICBtYXJnaW4tbGVmdDogMnJlbTtcbiAgfVxufVxuXG4ubC1wYWdlLWxheW91dC0tcmV2ZXJzZWQgLmwtcGFnZS1sYXlvdXRfX3NlY29uZGFyeSB7XG4gIG1hcmdpbi1ib3R0b206IDJyZW07XG59XG5cbkBtZWRpYSBhbGwgYW5kIChtaW4td2lkdGg6IDYwZW0pIHtcbiAgLmwtcGFnZS1sYXlvdXQtLXJldmVyc2VkIC5sLXBhZ2UtbGF5b3V0X19zZWNvbmRhcnkge1xuICAgIG9yZGVyOiAxO1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG4gIH1cbn1cblxuLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qXFxcclxuICAgICNHUklEXHJcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG4vKipcclxuICogR3JpZCBDb250YWluZXJcclxuICovXG4ubC1ncmlkIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC13cmFwOiB3cmFwO1xufVxuXG5Ac3VwcG9ydHMgKGRpc3BsYXk6IGdyaWQpIHtcbiAgLmwtZ3JpZCB7XG4gICAgZGlzcGxheTogZ3JpZDtcbiAgICBncmlkLWdhcDogMnJlbTtcbiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdChhdXRvLWZpbGwsIG1pbm1heCgzMjBweCwgMWZyKSk7XG4gICAgbWFyZ2luOiAwO1xuICB9XG59XG5cbi8qKlxyXG4gKiBHcmlkIEl0ZW1cclxuICovXG4ubC1ncmlkX19pdGVtIHtcbiAgZGlzcGxheTogZmxleDtcbn1cblxuLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qXFxcclxuICAgICNDT01QT05FTlRTXHJcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG4vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcXFxyXG4gICAgI0JVVFRPTlNcclxuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cbi8qKlxyXG4gKlxyXG4gKiAxKSBCdXR0b24gb3IgbGluayB0aGF0IGhhcyBmdW5jdGlvbmFsaXR5IHRvIGl0XHJcbiAqL1xuLmMtYnRuIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBib3JkZXI6IDFweCBzb2xpZCAjNDM0OTRmO1xuICBiYWNrZ3JvdW5kOiAjMTA0NTVCO1xuICBjb2xvcjogI2ZmZjtcbiAgbGluZS1oZWlnaHQ6IDE7XG4gIHBhZGRpbmc6IDFyZW0gMnJlbTtcbiAgYm9yZGVyOiAwO1xuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIHRyYW5zaXRpb246IGFsbCAwLjE1cyBlYXNlLW91dDtcbn1cblxuLmMtYnRuOmhvdmVyLCAuYy1idG46Zm9jdXMge1xuICBjb2xvcjogI2ZmZjtcbiAgYmFja2dyb3VuZDogIzA4MjQzMDtcbn1cblxuLmMtYnRuLS1iYXJlIHtcbiAgYmFja2dyb3VuZDogbm9uZTtcbiAgY29sb3I6ICMxMDQ1NUI7XG4gIGJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50O1xufVxuXG4uYy1idG4tLWJhcmU6aG92ZXIsIC5jLWJ0bi0tYmFyZTpmb2N1cyB7XG4gIGJhY2tncm91bmQ6IG5vbmU7XG4gIGNvbG9yOiAjMTA0NTVCO1xuICBib3JkZXItY29sb3I6ICMxMDQ1NUI7XG59XG5cbi8qXHJcbiAqIElubmVyIGNvbnRhaW5lciB3cmFwcGVyXHJcbiAqIDEpIENvbnRhaW5lciBpcyBkaXJlY3QgZGVjZW5kYW50IG9mIDxidXR0b24+LCBzaW5jZSB0aGVyZSdzXHJcbiAqICAgIGEgYnVnIHdpdGggYXBwbHlpbmcgZmxleGJveCBkaXJlY3RseSB0byBhIDxidXR0b24+XHJcbiAqIDIpIE9ubHkgbmVlZHMgdG8gYmUgdXNlZCBmb3IgYnV0dG9ucyBjb250YWluaW5nIGJvdGggaWNvbnMgYW5kIHRleHRcclxuICovXG4uYy1idG5fX2lubmVyIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG59XG5cbi8qXHJcbiAqIEJ1dHRvbiBpY29uXHJcbiAqL1xuLmMtYnRuX19pY29uIHtcbiAgd2lkdGg6IDFyZW07XG4gIGhlaWdodDogMXJlbTtcbiAgZmlsbDogI2ZmZjtcbiAgdHJhbnNpdGlvbjogZmlsbCAwLjE1cyBlYXNlLW91dDtcbn1cblxuLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qXFxcclxuICAgI0RFRklOSVRJT04gTElTVFxyXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuLyoqXHJcbiogMSkgRGVmaW5pdGlvbiBsaXN0IChgZGxgKSB0aGF0IGNvbnRhaW5zIGEgZGVmaW5pdGlvbiB0ZXJtIChgZHRgKSBhbmQgYSBkZWZpbml0aW9uIGRlc2NyaXB0aW9uIChgZGRgKVxyXG4qL1xuLmMtZGVmaW5pdGlvbi1saXN0IHtcbiAgbWFyZ2luOiAwIDAgMXJlbTtcbn1cblxuLyoqXHJcbiogRGVmaW5pdGlvbiBsaXN0IGl0ZW1cclxuKi9cbi5jLWRlZmluaXRpb24tbGlzdF9faXRlbSB7XG4gIGRpc3BsYXk6IGZsZXg7XG59XG5cbkBtZWRpYSBhbGwgYW5kIChtaW4td2lkdGg6IDYwZW0pIHtcbiAgLmMtZGVmaW5pdGlvbi1saXN0X19pdGVtIHtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIH1cbn1cblxuLyoqXHJcbiogRGVmaW5pdGlvbiBsaXN0IHRlcm1cclxuKi9cbi5jLWRlZmluaXRpb24tbGlzdF9fdGVybSB7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xuICBtYXJnaW4tYm90dG9tOiAwLjI1cmVtO1xuICB3aWR0aDogNXJlbTtcbn1cblxuQG1lZGlhIGFsbCBhbmQgKG1pbi13aWR0aDogNjBlbSkge1xuICAuYy1kZWZpbml0aW9uLWxpc3RfX3Rlcm0ge1xuICAgIHdpZHRoOiBhdXRvO1xuICB9XG59XG5cbi8qKlxyXG4qIERlZmluaXRpb24gbGlzdCBkZXNjcmlwdGlvblxyXG4qL1xuLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qXFxcclxuICAgI0RFRklOSVRJT04gTElTVCBMSVNUXHJcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG4vKipcclxuKiAxKSBMaXN0IG9mIGRlZmluaXRpb24gbGlzdHNcclxuKi9cbi8qKlxyXG4gKiBEZWZpbml0aW9uIGxpc3QgbGlzdCBpdGVtXHJcbiAqL1xuLmMtZGVmaW5pdGlvbi1saXN0LWxpc3QtLWxpbmVkIC5jLWRlZmluaXRpb24tbGlzdC1saXN0X19pdGVtIHtcbiAgbWFyZ2luLWJvdHRvbTogMXJlbTtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNkZGQ7XG59XG5cbi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlxcXHJcblx0I0hFUk8gQkxPQ0tcclxuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cbi8qKlxyXG4gKiAxKSBTaXQgaGVybyBmbHVzaCB3aXRoIGhlYWRlci4gTm9ybWFsbHkgd2Ugd291bGRuJ3QgXHJcbiAqICAgIGRvIHRoaXMgYW5kIGhhbmRsZSBtYXJnaW4gdXNpbmcgdXRpbGl0eSBjbGFzc2VzLFxyXG4gKiAgICBidXQgd2UncmUgdGFraW5nIGEgc2hvcnRjdXQgZm9yIGEgZGVtby5cclxuICovXG4uYy1oZXJvIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgbWFyZ2luOiAtMnJlbSAwIDJyZW07XG4gIC8qIDEgKi9cbn1cblxuLyoqXHJcbiAqIEhlcm8gSW1hZ2VcclxuICogMSkgVGhpcyBpcyB0aGUgcHJpbWFyeSBoZXJvIGltYWdlIHRoYXQgcnVucyBmdWxsLWJsZWVkIGFjcm9zcyB0aGUgbGF5b3V0XHJcbiAqL1xuLmMtaGVyb19faW1nIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHdpZHRoOiAxMDAlO1xuICBvYmplY3QtZml0OiBjb3ZlcjtcbiAgbWF4LWhlaWdodDogNzB2aDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLmMtaGVyb19fYm9keSB7XG4gIGJhY2tncm91bmQ6ICMyQUExQUY7XG4gIHBhZGRpbmc6IDFyZW07XG59XG5cbkBtZWRpYSBhbGwgYW5kIChtaW4td2lkdGg6IDM1ZW0pIHtcbiAgLmMtaGVyb19fYm9keSB7XG4gICAgcGFkZGluZzogMDtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwO1xuICAgIHJpZ2h0OiAwO1xuICAgIGJvdHRvbTogMDtcbiAgICBsZWZ0OiAwO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCByZ2JhKDAsIDAsIDAsIDApIDAsIHJnYmEoMCwgMCwgMCwgMCkgMjAlLCAjMDAwIDEwMCUpO1xuICB9XG59XG5cbi8qKlxyXG4gKiBIZXJvIEhlYWRsaW5lXHJcbiAqIDEpIFRoaXMgc2l0cyBvdmVydG9wIG9mIHRoZSBoZXJvIGltYWdlIHdoZW4gc3BhY2UgcGVybWl0c1xyXG4gKi9cbi5jLWhlcm9fX2hlYWRsaW5lIHtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgZm9udC1zaXplOiAzcmVtO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMkFBMUFGO1xuICBjb2xvcjogI2ZmZjtcbiAgdHJhbnNpdGlvbjogYWxsIDAuMTVzIGVhc2Utb3V0O1xufVxuXG5AbWVkaWEgYWxsIGFuZCAobWluLXdpZHRoOiAzNWVtKSB7XG4gIC5jLWhlcm9fX2hlYWRsaW5lIHtcbiAgICBwYWRkaW5nOiAwIDAuNHJlbTtcbiAgICBmb250LXNpemU6IDRyZW07XG4gIH1cbn1cblxuLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qXFxcclxuXHQjVE9VVCBCTE9DS1xyXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuLyoqXHJcbiAqIDEpIFRoZSB0b3V0IGJsb2NrIGNvbnRhaW5zIGFuIGltYWdlIGFuZCBoZWFkbGluZSBvdmVybGF5ZWQgb3ZlciB0aGUgaW1hZ2UuXHJcbiAqL1xuLmMtdG91dCB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIG1heC13aWR0aDogMTAyNHB4O1xufVxuXG4vKipcclxuICogIFRvdXQgaW1hZ2VcclxuICovXG4uYy10b3V0X19pbWcge1xuICBkaXNwbGF5OiBibG9jaztcbn1cblxuLyoqXHJcbiAqICBUb3V0IGhlYWRsaW5lXHJcbiAqL1xuLmMtdG91dF9faGVhZGxpbmUge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGJvdHRvbTogMDtcbiAgbGVmdDogMDtcbiAgd2lkdGg6IDEwMCU7XG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gIGxldHRlci1zcGFjaW5nOiAxcHg7XG4gIGNvbG9yOiAjZmZmO1xuICBwYWRkaW5nOiAwLjVyZW07XG4gIGZvbnQtc2l6ZTogMS40cmVtO1xuICB0cmFuc2l0aW9uOiBhbGwgMC4xNXMgZWFzZS1vdXQ7XG59XG5cbi5jLXRvdXQ6aG92ZXIgLmMtdG91dF9faGVhZGxpbmUsIC5jLXRvdXQ6Zm9jdXMgLmMtdG91dF9faGVhZGxpbmUge1xuICBwYWRkaW5nLWJvdHRvbTogMnJlbTtcbiAgYmFja2dyb3VuZDogIzEwNDU1Qjtcbn1cblxuLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qXFxcclxuICAgICNTRUNUSU9OIEhFQURFUlxyXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuLyoqXHJcbiAqIDEpIEEgZ3JvdXAgb2YgdGV4dCB3aXRoIGEgdGl0bGUgdGhhdCBoZWFkbGluZXMgYSBzZWN0aW9uXHJcbiAqL1xuLmMtc2VjdGlvbl9faGVhZGVyIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBtYXJnaW4tYm90dG9tOiAxcmVtO1xufVxuXG4uYy1zZWN0aW9uX19oZWFkZXI6YWZ0ZXIge1xuICBjb250ZW50OiAnJztcbiAgZGlzcGxheTogYmxvY2s7XG4gIGZsZXg6IDE7XG4gIGhlaWdodDogMnB4O1xuICBtYXJnaW4tbGVmdDogMXJlbTtcbiAgYmFja2dyb3VuZDogIzJBQTFBRjtcbn1cblxuLmMtc2VjdGlvbl9fdGl0bGUge1xuICBmb250LXNpemU6IDJyZW07XG59XG5cbi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlxcXHJcbiAgICAjU1RBQ0tFRCBCTE9DS1xyXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuLyoqXHJcbiAqIDEpIEEgbGluayBibG9jayBjb25zaXN0aW5nIG9mIG1lZGlhLCBoZWFkbGluZSwgYW5kIGRlc2NyaXB0aW9uIGFsbCBzdGFja2VkIG9uIHRvcFxyXG4gKiBvZiBlYWNoIG90aGVyXHJcbiAqIDIpIENhcHBlZCBmb3IgZGVtbyBwdXJwb3Nlc1xyXG4gKi9cbi5jLXN0YWNrZWQtYmxvY2sge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIG1heC13aWR0aDogNjAwcHg7XG4gIC8qIDIgKi9cbiAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuMTVzIGVhc2Utb3V0O1xufVxuXG4uYy1zdGFja2VkLWJsb2NrOmhvdmVyLCAuYy1zdGFja2VkLWJsb2NrOmZvY3VzIHtcbiAgdHJhbnNmb3JtOiBzY2FsZSgxLjAzKTtcbn1cblxuLmMtc3RhY2tlZC1ibG9ja19fYm9keSB7XG4gIGZsZXg6IDE7XG59XG5cbi5jLXN0YWNrZWQtYmxvY2tfX3RpdGxlIHtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgbGV0dGVyLXNwYWNpbmc6IDFweDtcbiAgY29sb3I6ICMxMDQ1NUI7XG4gIHRyYW5zaXRpb246IGNvbG9yIDAuMTVzIGVhc2Utb3V0O1xufVxuXG4uYy1zdGFja2VkLWJsb2NrOmhvdmVyIC5jLXN0YWNrZWQtYmxvY2tfX3RpdGxlLCAuYy1zdGFja2VkLWJsb2NrOmZvY3VzIC5jLXN0YWNrZWQtYmxvY2tfX3RpdGxlIHtcbiAgY29sb3I6ICMyQUExQUY7XG59XG5cbi5jLXN0YWNrZWQtYmxvY2tfX2V4Y2VycHQge1xuICBtYXJnaW4tYm90dG9tOiAwO1xuICBjb2xvcjogIzY2Njtcbn1cblxuLmMtc3RhY2tlZC1ibG9ja19fbWV0YSB7XG4gIGNvbG9yOiAjMTA0NTVCO1xuICBmb250LXNpemU6IDEuMnJlbTtcbiAgZm9udC1mYW1pbHk6IFwiQ3JpbXNvbiBUZXh0XCIsIHNlcmlmO1xuICBtYXJnaW4tYm90dG9tOiAwO1xuICB0cmFuc2l0aW9uOiBjb2xvciAwLjE1cyBlYXNlLW91dDtcbn1cblxuLmMtc3RhY2tlZC1ibG9jazpob3ZlciAuYy1zdGFja2VkLWJsb2NrX19tZXRhLCAuYy1zdGFja2VkLWJsb2NrOmZvY3VzIC5jLXN0YWNrZWQtYmxvY2tfX21ldGEge1xuICBjb2xvcjogIzJBQTFBRjtcbn1cblxuLmMtc3RhY2tlZC1ibG9ja19fYmFkZ2Uge1xuICBkaXNwbGF5OiBibG9jaztcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIHJpZ2h0OiAwO1xuICBwYWRkaW5nOiAwLjVyZW07XG4gIGZvbnQtZmFtaWx5OiBcIkNyaW1zb24gVGV4dFwiLCBzZXJpZjtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgY29sb3I6ICNmZmY7XG4gIGJhY2tncm91bmQ6ICMyQUExQUY7XG59XG5cbi5jLXN0YWNrZWQtYmxvY2tfX29wdGlvbmFsIHtcbiAgbWFyZ2luLWxlZnQ6IDAuNXJlbTtcbiAgY29sb3I6ICNjZmQyZDY7XG4gIGZvbnQtZmFtaWx5OiBcIkNyaW1zb24gVGV4dFwiLCBzZXJpZjtcbiAgZm9udC1zaXplOiAwLjg1cmVtO1xuICB0ZXh0LWRlY29yYXRpb246IGxpbmUtdGhyb3VnaDtcbn1cblxuLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qXFxcclxuICAgICNTVFJJUEVcclxuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cbi8qKlxyXG4gKiAxKSBCbG9jayB0aGF0IGNvbnRhaW5zIGEgcmlnaHQgYW5kIGxlZnQgY29sdW1uIG9mIHRleHQgYW5kIG90aGVyIHBvc3NpYmxlIGNvbXBvbmVudHNcclxuICovXG4uYy1zdHJpcGUge1xuICBwYWRkaW5nOiAycmVtIDA7XG59XG5cbkBtZWRpYSBhbGwgYW5kIChtaW4td2lkdGg6IDM1ZW0pIHtcbiAgLmMtc3RyaXBlIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICB9XG59XG5cbi5jLXN0cmlwZS1saXN0LS1jb25kZW5zZWQgLmMtc3RyaXBlIHtcbiAgcGFkZGluZzogMXJlbSAwO1xufVxuXG4vKipcclxuICogU3RyaXBlIGxlZiBjb250YWluZXJcclxuICogMSkgQ29udGFpbnMgZWxlbWVudHMgdGhhdCBkaXNwbGF5IG9uIHRoZSBsZWZ0IHNpZGUgb2YgdGhlIHN0cmlwZVxyXG4gKi9cbi5jLXN0cmlwZV9fbGVmdC1jb250YWluZXIge1xuICBtYXJnaW4tcmlnaHQ6IDJyZW07XG59XG5cbkBtZWRpYSBhbGwgYW5kIChtaW4td2lkdGg6IDM1ZW0pIHtcbiAgLmMtc3RyaXBlX19sZWZ0LWNvbnRhaW5lciB7XG4gICAgd2lkdGg6IDIwJTtcbiAgfVxufVxuXG4uYy1zdHJpcGUtbGlzdC0tY29uZGVuc2VkIC5jLXN0cmlwZV9fbGVmdC1jb250YWluZXIge1xuICBkaXNwbGF5OiBub25lO1xufVxuXG4uYy1zdHJpcGVfX2xpbmsge1xuICBkaXNwbGF5OiBibG9jaztcbn1cblxuQG1lZGlhIGFsbCBhbmQgKG1pbi13aWR0aDogMzVlbSkge1xuICAuYy1zdHJpcGVfX2xpbmsge1xuICAgIG1heC13aWR0aDogMTByZW07XG4gIH1cbn1cblxuLyoqXHJcbiAqIFN0cmlwZSByaWdodCBjb250YWluZXJcclxuICogMSkgQ29udGFpbnMgZWxlbWVudHMgdGhhdCBkaXNwbGF5IG9uIHRoZSByaWdodCBzaWRlIG9mIHRoZSBzdHJpcGVcclxuICovXG4uYy1zdHJpcGVfX3JpZ2h0LWNvbnRhaW5lciB7XG4gIGZsZXg6IDE7XG59XG5cbkBtZWRpYSBhbGwgYW5kIChtaW4td2lkdGg6IDM1ZW0pIHtcbiAgLmMtc3RyaXBlX19yaWdodC1jb250YWluZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgfVxufVxuXG4uYy1zdHJpcGVfX3RpdGxlIHtcbiAgbWFyZ2luLWJvdHRvbTogMnJlbTtcbn1cblxuQG1lZGlhIGFsbCBhbmQgKG1pbi13aWR0aDogMzVlbSkge1xuICAuYy1zdHJpcGVfX3RpdGxlIHtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgIG1hcmdpbi1yaWdodDogMnJlbTtcbiAgICB3aWR0aDogNDAlO1xuICB9XG59XG5cbkBtZWRpYSBhbGwgYW5kIChtaW4td2lkdGg6IDM1ZW0pIHtcbiAgLmMtc3RyaXBlX19tZXRhIHtcbiAgICBtYXJnaW4tbGVmdDogMnJlbTtcbiAgICBtYXJnaW4tYm90dG9tOiAyLjI1cmVtO1xuICAgIHdpZHRoOiAyMCU7XG4gICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgZmxleDogMTtcbiAgfVxufVxuXG4uYy1zdHJpcGVfX21ldGEtbGFiZWwge1xuICBmb250LXdlaWdodDogYm9sZDtcbiAgbWFyZ2luLWJvdHRvbTogMC43NXJlbTtcbn1cblxuLmMtc3RyaXBlX19tZXRhLXNwYW4ge1xuICBmb250LWZhbWlseTogXCJDcmltc29uIFRleHRcIiwgc2VyaWY7XG4gIGNvbG9yOiAjMTA0NTVCO1xuICBmb250LXNpemU6IDEuMnJlbTtcbn1cblxuLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qXFxcclxuICAgICNTVFJJUEUgTElTVFxyXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuLyoqXHJcbiAqIDEpIEJsb2NrIHRoYXQgY29udGFpbnMgYSByaWdodCBhbmQgbGVmdCBjb2x1bW4gb2YgdGV4dCBhbmQgb3RoZXIgcG9zc2libGUgY29tcG9uZW50c1xyXG4gKi9cbi5jLXN0cmlwZS1saXN0X19pdGVtIHtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNkZGQ7XG59XG5cbi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlxcXHJcbiAgICAkRk9PVEVSXHJcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG4vKipcclxuICogMSkgR2xvYmFsIGJsb2NrIGF0IHRoZSBib3R0b20gb2YgZWFjaCBwYWdlIHRoYXQgY29udGFpbnMgYSBuYXZpZ2F0aW9uIGFuZCBvdGhlciBpbmZvcm1hdGlvblxyXG4gKi9cbi5jLWZvb3RlciB7XG4gIHBhZGRpbmc6IDJyZW0gMDtcbiAgbWFyZ2luLXRvcDogMnJlbTtcbiAgYmFja2dyb3VuZDogIzA4MjQzMDtcbn1cblxuQG1lZGlhIGFsbCBhbmQgKG1pbi13aWR0aDogNDdlbSkge1xuICAuYy1mb290ZXJfX2lubmVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICB9XG59XG5cbkBtZWRpYSBhbGwgYW5kIChtaW4td2lkdGg6IDQ3ZW0pIHtcbiAgLmMtZm9vdGVyX19ib3R0b20ge1xuICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICB9XG59XG5cbi5jLWZvb3Rlcl9fY3JlZGl0LCAuYy1mb290ZXJfX2NvcHlyaWdodCB7XG4gIGNvbG9yOiAjZmZmO1xuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICBmb250LWZhbWlseTogXCJDcmltc29uIFRleHRcIiwgc2VyaWY7XG4gIGZvbnQtc2l6ZTogMC44NXJlbTtcbn1cblxuLmMtZm9vdGVyX19jcmVkaXQgYSwgLmMtZm9vdGVyX19jb3B5cmlnaHQgYSB7XG4gIGNvbG9yOiAjMkFBMUFGO1xufVxuXG4uYy1mb290ZXJfX2NyZWRpdCBhOmhvdmVyLCAuYy1mb290ZXJfX2NyZWRpdCBhOmZvY3VzLCAuYy1mb290ZXJfX2NvcHlyaWdodCBhOmhvdmVyLCAuYy1mb290ZXJfX2NvcHlyaWdodCBhOmZvY3VzIHtcbiAgY29sb3I6ICNjZmQyZDY7XG59XG5cbi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlxcXHJcbiAgICAjRk9PVEVSIE5BVlxyXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuLyoqXHJcbiAqIDEpIEdsb2JhbCBibG9jayBhdCB0aGUgYm90dG9tIG9mIGVhY2ggcGFnZSB0aGF0IGNvbnRhaW5zIGEgbmF2aWdhdGlvbiBhbmQgb3RoZXIgaW5mb3JtYXRpb25cclxuICovXG4uYy1mb290ZXItbmF2IHtcbiAgbWFyZ2luLWJvdHRvbTogMnJlbTtcbn1cblxuQG1lZGlhIGFsbCBhbmQgKG1pbi13aWR0aDogNDdlbSkge1xuICAuYy1mb290ZXItbmF2IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG4gIH1cbn1cblxuQG1lZGlhIGFsbCBhbmQgKG1pbi13aWR0aDogNDdlbSkge1xuICAuYy1mb290ZXItbmF2X19pdGVtIHtcbiAgICBtYXJnaW4tcmlnaHQ6IDJyZW07XG4gIH1cbiAgLmMtZm9vdGVyLW5hdl9faXRlbTpsYXN0LWNoaWxkIHtcbiAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gIH1cbn1cblxuLmMtZm9vdGVyLW5hdl9fbGluayB7XG4gIGNvbG9yOiAjZmZmO1xuICBmb250LWZhbWlseTogXCJDcmltc29uIFRleHRcIiwgc2VyaWY7XG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gIGZvbnQtc2l6ZTogMS4ycmVtO1xufVxuXG4vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcXFxyXG4gICAgI0hFQURFUlxyXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuLyoqXHJcbiAqIEdsb2JhbCBibG9jayBhdCB0aGUgdG9wIG9mIGVhY2ggcGFnZSBjb250YWluaW5nIHRoZSBuYXZpZ2F0aW9uLCBsb2dvLCBhbmQgb3RoZXIgcG90ZW50aWFsIGNvbnRlbnRzXHJcbiAqL1xuLmMtaGVhZGVyIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBtYXJnaW4tYm90dG9tOiAycmVtO1xuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2RkZDtcbn1cblxuLyoqXHJcbiAqIEhlYWRlciBpbm5lclxyXG4gKi9cbi5jLWhlYWRlcl9faW5uZXIge1xuICBwYWRkaW5nLXRvcDogMXJlbTtcbiAgcGFkZGluZy1ib3R0b206IDFyZW07XG59XG5cbkBtZWRpYSBhbGwgYW5kIChtaW4td2lkdGg6IDM1ZW0pIHtcbiAgLmMtaGVhZGVyX19pbm5lciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICB9XG59XG5cbi8qKlxyXG4gKiBIZWFkZXIgbmF2aWdhdGlvbiBidXR0b25cclxuICogMSkgQnV0dG9uIHVzZWQgdG8gdG9nZ2xlIHRoZSBuYXZpZ2F0aW9uIG9uL29mZiBvbiBzbWFsbCBzY3JlZW5zXHJcbiAqL1xuLmMtaGVhZGVyX19uYXYtYnRuIHtcbiAgbWFyZ2luLWxlZnQ6IGF1dG87XG59XG5cbkBtZWRpYSBhbGwgYW5kIChtaW4td2lkdGg6IDcwZW0pIHtcbiAgLmMtaGVhZGVyX19uYXYtYnRuIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG59XG5cbi8qKlxyXG4gKiBIZWFkZXIgbmF2aWdhdGlvbiBjb25udGFpbmVyXHJcbiAqIDEpIENvbnRhaW5zIHRoZSBwcmltYXJ5IG5hdmlnYXRpb24gYW5kIG90aGVyIHBvc3NpYmxlIHBhdHRlcm5zXHJcbiAqL1xuLmMtaGVhZGVyX19uYXYtY29udGFpbmVyIHtcbiAgZGlzcGxheTogbm9uZTtcbiAgLyoqXHJcblx0ICogSGVhZGVyIG5hdmlnYXRpb24gY29ubnRhaW5lciB3aXRoaW4gdmVydGljYWwgaGVhZGVyXHJcblx0ICovXG59XG5cbkBtZWRpYSBhbGwgYW5kIChtaW4td2lkdGg6IDcwZW0pIHtcbiAgLmMtaGVhZGVyX19uYXYtY29udGFpbmVyIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBtYXJnaW4tbGVmdDogYXV0bztcbiAgfVxufVxuXG5AbWVkaWEgYWxsIGFuZCAobWluLXdpZHRoOiA3MGVtKSB7XG4gIC5jLWhlYWRlci0tdmVydGljYWwgLmMtaGVhZGVyX19uYXYtY29udGFpbmVyIHtcbiAgICBtYXJnaW4tbGVmdDogMDtcbiAgfVxufVxuXG4vKipcclxuICogQWN0aXZlIGhlYWRlciBuYXYgY29udGFpbmVyXHJcbiAqL1xuLmMtaGVhZGVyX19uYXYtY29udGFpbmVyLmlzLWFjdGl2ZSB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGJhY2tncm91bmQ6ICNlZWU7XG4gIHRvcDogMTAwJTtcbiAgbGVmdDogMDtcbiAgd2lkdGg6IDEwMCU7XG4gIHotaW5kZXg6IDU7XG4gIHBhZGRpbmc6IDFyZW07XG4gIC8qKlxyXG5cdCAqIEFjdGl2ZSBoZWFkZXIgbmF2IGNvbnRhaW5lciB3aXRoaW4gdmVydGljYWwgaGVhZGVyXHJcblx0ICovXG59XG5cbkBtZWRpYSBhbGwgYW5kIChtaW4td2lkdGg6IDcwZW0pIHtcbiAgLmMtaGVhZGVyX19uYXYtY29udGFpbmVyLmlzLWFjdGl2ZSB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgcG9zaXRpb246IHN0YXRpYztcbiAgICBwYWRkaW5nOiAwO1xuICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICAgIHdpZHRoOiBpbmhlcml0O1xuICB9XG59XG5cbkBtZWRpYSBhbGwgYW5kIChtaW4td2lkdGg6IDcwZW0pIHtcbiAgLmMtaGVhZGVyLS12ZXJ0aWNhbCAuYy1oZWFkZXJfX25hdi1jb250YWluZXIuaXMtYWN0aXZlIHtcbiAgICBtYXJnaW4tbGVmdDogMDtcbiAgICB3aWR0aDogMTAwJTtcbiAgfVxufVxuXG4vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcXFxyXG4gICAgI0xPR09cclxuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cbi8qKlxyXG4gKiBCcmFuZGluZyBpbWFnZSBvciB0ZXh0IG9mIHRoZSBzaXRlXHJcbiAqL1xuLmMtbG9nbyB7XG4gIGZvbnQtc2l6ZTogMnJlbTtcbn1cblxuLmMtZm9vdGVyIC5jLWxvZ28ge1xuICBtYXJnaW4tYm90dG9tOiAycmVtO1xufVxuXG5AbWVkaWEgYWxsIGFuZCAobWluLXdpZHRoOiA0N2VtKSB7XG4gIC5jLWZvb3RlciAuYy1sb2dvIHtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xuICB9XG59XG5cbi8qKlxyXG4gKiBMb2dvIGxpbmtcclxuICovXG4uYy1sb2dvX19saW5rIHtcbiAgZGlzcGxheTogYmxvY2s7XG59XG5cbi8qKlxyXG4gKiBMb2dvIGltYWdlXHJcbiAqL1xuLmMtbG9nb19faW1nIHtcbiAgZGlzcGxheTogYmxvY2s7XG59XG5cbi5jLWxvZ29fX2xlZnQge1xuICBjb2xvcjogIzEwNDU1Qjtcbn1cblxuLmMtbG9nby0tbGlnaHQgLmMtbG9nb19fbGVmdCB7XG4gIGNvbG9yOiAjZmZmO1xufVxuXG4uYy1sb2dvX19yaWdodCB7XG4gIGNvbG9yOiAjMkFBMUFGO1xufVxuXG4vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcXFxyXG4gICAgI0lDT05cclxuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cbi8qKlxyXG4gKiAxKSBTbWFsbCBpbWFnZSB0aGF0IHJlcHJlc2VudHMgZnVuY3Rpb25hbGl0eVxyXG4gKi9cbi5jLWljb24ge1xuICBoZWlnaHQ6IDE2cHg7XG4gIHdpZHRoOiAxNnB4O1xufVxuXG4vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcXFxyXG4gICAgI0lOUFVUXHJcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG4vKipcclxuICogMSkgQWN0dWFsIGlucHV0IG9mIGEgZmllbGRcclxuICovXG4uYy1zdHJpcGUgLmMtaW5wdXQge1xuICBtYXgtd2lkdGg6IDNyZW07XG59XG5cbi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlxcXHJcbiAgICAjUEFHRSBIRUFERVJcclxuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cbi8qKlxyXG4gKiAxKSBDb250YWluZXIgdGhhdCBjb25zaXN0cyBvZiBvZiBhIHBhZ2UgaGVhZGVyIHRpdGxlIGFuZCBkZXNjcmlwdGlvblxyXG4gKi9cbi8qKlxyXG4gKiBQYWdlIGhlYWRlciB0aXRsZVxyXG4gKi9cbi5jLXBhZ2UtaGVhZGVyIHtcbiAgbWFyZ2luLXRvcDogNHJlbTtcbiAgbWFyZ2luLWJvdHRvbTogMnJlbTtcbn1cblxuLyoqXHJcbiAqIFBhZ2UgZGVzY3JpcHRpb25cclxuICovXG4uYy1wYWdlLWhlYWRlcl9fZGVzYyB7XG4gIG1hcmdpbi10b3A6IDFyZW07XG59XG5cbi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlxcXHJcbiAgICAjUEFHSU5BVElPTlxyXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuLyoqXHJcbiAqIFBhZ2luYXRpb25cclxuICovXG4uYy1wYWdpbmF0aW9uIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC13cmFwOiB3cmFwO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgbWFyZ2luLWJvdHRvbTogMXJlbTtcbiAgZm9udC1mYW1pbHk6IFwiQ3JpbXNvbiBUZXh0XCIsIHNlcmlmO1xuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xufVxuXG4uYy1wYWdpbmF0aW9uX19pdGVtIHtcbiAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgI2RkZDtcbn1cblxuLmMtcGFnaW5hdGlvbl9faXRlbTpsYXN0LWNoaWxkIHtcbiAgYm9yZGVyOiAwO1xufVxuXG4uYy1wYWdpbmF0aW9uX19saW5rIHtcbiAgcGFkZGluZzogMXJlbTtcbiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG59XG5cbi5jLXBhZ2luYXRpb25fX2l0ZW06Zmlyc3QtY2hpbGQgLmMtcGFnaW5hdGlvbl9fbGluayB7XG4gIHBhZGRpbmctbGVmdDogMDtcbn1cblxuLmMtcGFnaW5hdGlvbl9faXRlbS5pcy1hY3RpdmUgLmMtcGFnaW5hdGlvbl9fbGluayB7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xufVxuXG4uYy1wYWdpbmF0aW9uX19pdGVtLmlzLWRpc2FibGVkIC5jLXBhZ2luYXRpb25fX2xpbmsge1xuICBjb2xvcjogI2RkZDtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbn1cblxuLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qXFxcclxuICAgICNQUklNQVJZIE5BVklHQVRJT05cclxuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cbi8qKlxyXG4gKiBQcmltYXJ5IG5hdmlnYXRpb24gZXhpc3RpbmcgaW4gdGhlIGhlYWRlciBhbmQgbWF5YmUgdGhlIGZvb3RlclxyXG4gKi9cbkBtZWRpYSBhbGwgYW5kIChtaW4td2lkdGg6IDMyZW0pIHtcbiAgLmMtcHJpbWFyeS1uYXYge1xuICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICB9XG59XG5cbi8qKlxyXG4gKiBQcmltYXJ5IG5hdmlnYXRpb24gbGlzdFxyXG4gKi9cbi5jLXByaW1hcnktbmF2X19saXN0IHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbn1cblxuLyoqXHJcbiAqIFByaW1hcnkgbmF2aWdhdGlvbiBpdGVtXHJcbiAqL1xuLmMtcHJpbWFyeS1uYXZfX2l0ZW0ge1xuICBtYXJnaW4tcmlnaHQ6IDJyZW07XG59XG5cbi5jLXByaW1hcnktbmF2X19pdGVtOmxhc3QtY2hpbGQge1xuICBtYXJnaW4tcmlnaHQ6IDA7XG59XG5cbi8qKlxyXG4gKiBQcmltYXJ5IG5hdmlnYXRpb24gbGlua1xyXG4gKi9cbi5jLXByaW1hcnktbmF2X19saW5rIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgZm9udC1mYW1pbHk6IFwiQ3JpbXNvbiBUZXh0XCIsIHNlcmlmO1xuICBmb250LXNpemU6IDEuMnJlbTtcbiAgbGluZS1oZWlnaHQ6IDE7XG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gIHRyYW5zaXRpb246IGJhY2tncm91bmQgMC4xNXMgZWFzZS1vdXQ7XG59XG5cbi5jLXByaW1hcnktbmF2X19saW5rOmhvdmVyLCAuYy1wcmltYXJ5LW5hdl9fbGluazpmb2N1cyB7XG4gIGNvbG9yOiAjMkFBMUFGO1xufVxuXG4uYy1wcmltYXJ5LW5hdl9faWNvbi5jLWljb24ge1xuICBmaWxsOiAjMDgyNDMwO1xuICBoZWlnaHQ6IDI0cHg7XG4gIHdpZHRoOiAyNHB4O1xufVxuXG4vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcXFxyXG4gICAgI1BST01PIEJMT0NLXHJcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG4vKipcclxuICogTGFyZ2UgYmxvY2sgY29udGFpbmluZyBhbiBpbWFnZSBhbmQgY29weVxyXG4gKiAxKSBNb3ZlIHByb21vIGJsb2NrIHVwIHRvIHNpdCBmbHVzaCB3aXRoIGhlcm9cclxuICogICAgTm9ybWFsbHkgd2Ugd291bGRuJ3QgZG8gdGhpcywgYnV0IHdlJ3JlIHRha2luZ1xyXG4gKiAgICBhIHNob3J0Y3V0IGZvciBkZW1vIHB1cnBvc2VzLlxyXG4gKi9cbi5jLXByb21vLWJsb2NrIHtcbiAgY29sb3I6ICNmZmY7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgbWFyZ2luLXRvcDogLTJyZW07XG4gIC8qIDEgKi9cbn1cblxuLmMtcHJvbW8tYmxvY2tfX21lZGlhIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB6LWluZGV4OiAwO1xufVxuXG4uYy1wcm9tby1ibG9ja19fbWVkaWE6YmVmb3JlIHtcbiAgY29udGVudDogXCJcIjtcbiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvIGxlZnQsIHJnYmEoMCwgMCwgMCwgMCkgMCwgcmdiYSgwLCAwLCAwLCAwKSA0MCUsICMwMDAgMTAwJSk7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwO1xuICByaWdodDogMDtcbiAgYm90dG9tOiAwO1xuICBsZWZ0OiAwO1xufVxuXG4uYy1wcm9tby1ibG9jay0tcmlnaHQgLmMtcHJvbW8tYmxvY2tfX21lZGlhOmJlZm9yZSB7XG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byByaWdodCwgcmdiYSgwLCAwLCAwLCAwKSAwLCByZ2JhKDAsIDAsIDAsIDApIDIwJSwgIzAwMCAxMDAlKTtcbn1cblxuLmMtcHJvbW8tYmxvY2tfX2JvZHkge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogNDAlO1xuICBsZWZ0OiA0cmVtO1xuICB6LWluZGV4OiAxO1xuICBtYXgtd2lkdGg6IDQwMHB4O1xuICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuNXMgZWFzZS1vdXQsIHRyYW5zZm9ybSAwLjVzIGVhc2Utb3V0O1xufVxuXG4uYy1wcm9tby1ibG9jay0tcmlnaHQgLmMtcHJvbW8tYmxvY2tfX2JvZHkge1xuICBsZWZ0OiBhdXRvO1xuICByaWdodDogNHJlbTtcbn1cblxuLmMtcHJvbW8tYmxvY2tfX2JvZHkuYy1wcm9tby1ibG9ja19fYm9keS0taW5pdGlhbCB7XG4gIG9wYWNpdHk6IDA7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSg3MHB4KTtcbn1cblxuLmMtcHJvbW8tYmxvY2tfX2ltZyB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB3aWR0aDogMTAwJTtcbn1cblxuLmMtcHJvbW8tYmxvY2tfX2xpbmsge1xuICBjb2xvcjogI2ZmZjtcbn1cblxuLmMtcHJvbW8tYmxvY2tfX2xpbms6aG92ZXIsIC5jLXByb21vLWJsb2NrX19saW5rOmZvY3VzIHtcbiAgY29sb3I6ICMyQUExQUY7XG59XG5cbi5jLXByb21vLWJsb2NrX19oZWFkaW5nIHtcbiAgZGlzcGxheTogaW5saW5lO1xuICBjb2xvcjogaW5oZXJpdDtcbiAgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkICMyQUExQUY7XG4gIGZvbnQtc2l6ZTogMnJlbTtcbn1cblxuQG1lZGlhIGFsbCBhbmQgKG1pbi13aWR0aDogNjBlbSkge1xuICAuYy1wcm9tby1ibG9ja19faGVhZGluZyB7XG4gICAgZm9udC1zaXplOiAzcmVtO1xuICB9XG59XG5cbi5jLXByb21vLWJsb2NrX19kZXNjcmlwdGlvbiB7XG4gIG1hcmdpbi10b3A6IDFyZW07XG59XG5cbkBtZWRpYSBhbGwgYW5kIChtaW4td2lkdGg6IDYwZW0pIHtcbiAgLmMtcHJvbW8tYmxvY2tfX2Rlc2NyaXB0aW9uIHtcbiAgICBmb250LXNpemU6IDEuMnJlbTtcbiAgfVxufVxuXG4vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcXFxyXG4jUFJPR1JFU1MgVFJBQ0tFUlxyXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuLyoqXHJcbiogMSkgT3JkZXJlZCBsaXN0IHNob3dpbmcgcHJvZ3Jlc3MgKGkuZS4gc3RlcCBieSBzdGVwKVxyXG4qIDIpIERpc3BsYXkgZmxleCB1c2VkIHRvIHB1dCBpdGVtcyBpbiByb3cuIEZsZXggd3JhcCB3cmFwcyBpdGVtcyB1bmRlcm5lYXQgd2hlbiBzcGFjZSBpc1xyXG4qICAgIHVuYXZhaWxhYmxlLlxyXG4qL1xuLmMtcHJvZ3Jlc3MtdHJhY2tlciB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtd3JhcDogd3JhcDtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGZsZXgtd3JhcDogd3JhcDtcbiAgZm9udC1zaXplOiAwLjg1cmVtO1xuICBtYXJnaW4tcmlnaHQ6IDJyZW07XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cblxuLmMtcHJvZ3Jlc3MtdHJhY2tlcl9faXRlbSB7XG4gIG1hcmdpbi1yaWdodDogMnJlbTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBmb250LXNpemU6IDAuODVyZW07XG4gIHdpZHRoOiA1cmVtO1xufVxuXG4uYy1wcm9ncmVzcy10cmFja2VyX19pdGVtOmxhc3QtY2hpbGQgLmMtcHJvZ3Jlc3MtdHJhY2tlcl9fbnVtYmVyOmJlZm9yZSB7XG4gIGRpc3BsYXk6IG5vbmU7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG4gIGJvcmRlcjogMXB4IHNvbGlkICMxMDQ1NUI7XG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgY29sb3I6ICMxMDQ1NUI7XG4gIG1hcmdpbi1ib3R0b206IC41cmVtO1xuICBwYWRkaW5nOiAuMTI1cmVtO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG5cbi5jLXByb2dyZXNzLXRyYWNrZXJfX251bWJlciB7XG4gIHBhZGRpbmc6IC4xMjVyZW07XG4gIG1hcmdpbi1ib3R0b206IC41cmVtO1xuICBjb2xvcjogIzEwNDU1QjtcbiAgYm9yZGVyOiAxcHggc29saWQgIzEwNDU1QjtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMTA0NTVCO1xuICBjb2xvcjogI2ZmZjtcbn1cblxuQG1lZGlhIGFsbCBhbmQgKG1pbi13aWR0aDogMjhlbSkge1xuICAuYy1wcm9ncmVzcy10cmFja2VyX19udW1iZXIge1xuICAgIHBhZGRpbmc6IC41cmVtO1xuICAgIGJvcmRlci1jb2xvcjogIzEwNDU1QjtcbiAgICBjb2xvcjogIzA4MjQzMDtcbiAgfVxufVxuXG4uaXMtY29tcGxldGUgLmMtcHJvZ3Jlc3MtdHJhY2tlcl9fbnVtYmVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2RkZDtcbiAgY29udGVudDogXCIgXCI7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHJpZ2h0OiAtNHJlbTtcbiAgd2lkdGg6IDRyZW07XG59XG5cbi5pcy1jdXJyZW50IC5pcy1jb21wbGV0ZSAuYy1wcm9ncmVzcy10cmFja2VyX19udW1iZXIge1xuICBjb2xvcjogI2ZmZjtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzEwNDU1QjtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG59XG5cbi5pcy1kaXNhYmxlZCAuaXMtY29tcGxldGUgLmMtcHJvZ3Jlc3MtdHJhY2tlcl9fbnVtYmVyIHtcbiAgY29sb3I6ICMwODI0MzA7XG4gIGJvcmRlci1jb2xvcjogIzEwNDU1Qjtcbn1cblxuLmlzLWNvbXBsZXRlIC5jLXByb2dyZXNzLXRyYWNrZXJfX251bWJlcjpiZWZvcmUge1xuICBjb250ZW50OiBcIiBcIjtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHdpZHRoOiA0cmVtO1xuICBoZWlnaHQ6IDFweDtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2RkZDtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDUwJTtcbiAgcmlnaHQ6IC00cmVtO1xuICB6LWluZGV4OiAtMTtcbn1cblxuLmMtcHJvZ3Jlc3MtdHJhY2tlcl9fbGFiZWwge1xuICBkaXNwbGF5OiBub25lO1xufVxuXG5AbWVkaWEgYWxsIGFuZCAobWluLXdpZHRoOiAzNWVtKSB7XG4gIC5jLXByb2dyZXNzLXRyYWNrZXJfX2xhYmVsIHtcbiAgICBkaXNwbGF5OiBpbmxpbmU7XG4gIH1cbn1cblxuLmlzLWN1cnJlbnQgLmMtcHJvZ3Jlc3MtdHJhY2tlcl9fbGFiZWwge1xuICBmb250LXdlaWdodDogYm9sZDtcbn1cblxuLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qXFxcclxuICAgICNURVhUIFBBU1NBR0VcclxuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cbi8qKlxyXG4gKiAxKSBBIHBhc3NhZ2Ugb2YgdGV4dCwgaW5jbHVkaW5nIHZhcmlvdXMgY29tcG9uZW50cyAoaS5lLiBhcnRpY2xlLCBibG9nIHBvc3QpXHJcbiAqL1xuLmMtdGV4dC1wYXNzYWdlIHtcbiAgLyoqXHJcblx0ICogTGluayB3aXRoaW4gdGhlIHRleHQgcGFzc2FnZVxyXG5cdCAqL1xuICAvKipcclxuXHQgKiBCbG9ja3F1b3RlIHdpdGhpbiB0ZXh0IHBhc3NhZ2VcclxuXHQgKi9cbiAgLyoqXHJcblx0ICAqIEZpcnN0LWxldmVsIGhlYWRpbmcgd2l0aGluIHRleHQgcGFzc2FnZVxyXG5cdCAgKi9cbiAgLyoqXHJcblx0ICogU2Vjb25kLWxldmVsIGhlYWRpbmcgd2l0aGluIHRleHQgcGFzc2FnZVxyXG5cdCAqL1xuICAvKipcclxuXHQgKiBUaGlyZC1sZXZlbCBoZWFkaW5nIHdpdGhpbiB0ZXh0IHBhc3NhZ2VcclxuXHQgKi9cbiAgLyoqXHJcblx0ICogRm91cnRoLWxldmVsIGhlYWRpbmcgd2l0aGluIHRleHQgcGFzc2FnZVxyXG5cdCAqL1xuICAvKipcclxuXHQgKiBGaWZ0aC1sZXZlbCBoZWFkaW5nIHdpdGhpbiB0ZXh0IHBhc3NhZ2VcclxuXHQgKi9cbiAgLyoqXHJcblx0ICogU2l4dGgtbGV2ZWwgaGVhZGluZyB3aXRoaW4gdGV4dCBwYXNzYWdlXHJcblx0ICovXG4gIC8qKlxyXG5cdCAqIFVub3JkZXJlZCBsaXN0IHdpdGhpbiB0ZXh0IHBhc3NhZ2VcclxuXHQgKi9cbiAgLyoqXHJcblx0ICogT3JkZXJlZCBsaXN0IHdpdGhpbiB0ZXh0IHBhc3NhZ2VcclxuXHQgKi9cbn1cblxuLmMtdGV4dC1wYXNzYWdlIHAge1xuICBtYXJnaW4tYm90dG9tOiAxcmVtO1xufVxuXG4uYy10ZXh0LXBhc3NhZ2UgYSB7XG4gIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xufVxuXG4uYy10ZXh0LXBhc3NhZ2UgYmxvY2txdW90ZSB7XG4gIHBhZGRpbmctbGVmdDogMC44cmVtO1xuICBib3JkZXItbGVmdDogM3B4IHNvbGlkICM2NjY7XG4gIGNvbG9yOiAjY2ZkMmQ2O1xuICBmb250LXNpemU6IDFyZW07XG59XG5cbi5jLXRleHQtcGFzc2FnZSBoMSB7XG4gIG1hcmdpbi1ib3R0b206IDFyZW07XG59XG5cbi5jLXRleHQtcGFzc2FnZSBoMiB7XG4gIG1hcmdpbjogMXJlbSAwIDFyZW07XG4gIGNvbG9yOiAjNjY2O1xuICBmb250LXdlaWdodDogYm9sZDtcbn1cblxuLmMtdGV4dC1wYXNzYWdlIGgzIHtcbiAgbWFyZ2luOiAxcmVtIDAgMXJlbTtcbn1cblxuLmMtdGV4dC1wYXNzYWdlIGg0IHtcbiAgbWFyZ2luOiAxcmVtIDAgMXJlbTtcbn1cblxuLmMtdGV4dC1wYXNzYWdlIGg1IHtcbiAgbWFyZ2luOiAxcmVtIDAgMXJlbTtcbn1cblxuLmMtdGV4dC1wYXNzYWdlIGg2IHtcbiAgbWFyZ2luOiAxcmVtIDAgMXJlbTtcbn1cblxuLmMtdGV4dC1wYXNzYWdlIHVsIHtcbiAgbGlzdC1zdHlsZTogZGlzYztcbiAgbWFyZ2luLWxlZnQ6IDFyZW07XG4gIG1hcmdpbi1ib3R0b206IDFyZW07XG59XG5cbi5jLXRleHQtcGFzc2FnZSB1bCBsaTpsYXN0LWNoaWxkIHtcbiAgbWFyZ2luLWJvdHRvbTogMDtcbn1cblxuLmMtdGV4dC1wYXNzYWdlIG9sIHtcbiAgbGlzdC1zdHlsZTogZGVjaW1hbDtcbiAgbWFyZ2luLWxlZnQ6IDFyZW07XG4gIG1hcmdpbi1ib3R0b206IDFyZW07XG59XG5cbi5jLXRleHQtcGFzc2FnZSBvbCBsaTpsYXN0LWNoaWxkIHtcbiAgbWFyZ2luLWJvdHRvbTogMDtcbn1cblxuLmMtdGV4dC1wYXNzYWdlIGxpIHtcbiAgbWFyZ2luLWJvdHRvbTogMC41cmVtO1xuICBsaW5lLWhlaWdodDogMS42O1xufVxuXG4vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcXFxyXG4gICAgI0ZJRUxEU1xyXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuLyoqXHJcbiAqIDEpIENvbnNpc3RzIG9mIGEgbGFiZWwsIGZvcm0gY29udHJvbCwgYW5kIGFuIG9wdGlvbmFsIG5vdGUgYWJvdXQgdGhlIGZpZWxkLlxyXG4gKi9cbi5jLWZpZWxkIHtcbiAgbWFyZ2luLWJvdHRvbTogMnJlbTtcbn1cblxuLyoqXHJcbiAqIEZpZWxkIGxhYmVsXHJcbiAqL1xuLmMtZmllbGRfX2xhYmVsIHtcbiAgbWFyZ2luLWJvdHRvbTogMC41cmVtO1xuICBmb250LXNpemU6IDFyZW07XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xufVxuXG4vKipcclxuICogRmllbGQgYm9keVxyXG4gKi9cbi5jLWZpZWxkX19ib2R5IHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuXG4vKipcclxuICogRmllbGQgbm90ZVxyXG4gKi9cbi5jLWZpZWxkX19ub3RlIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBmb250LXNpemU6IDAuNzVyZW07XG4gIGNvbG9yOiAjY2ZkMmQ2O1xufVxuXG4vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcXFxyXG4gICAgI1NFQVJDSCBGT1JNXHJcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG4vKipcclxuICogMSkgU2VhcmNoIGZvcm0gdGhhdCBjb250YWlucyBhIHRleHQgaW5wdXQgYW5kIGJ1dHRvblxyXG4gKi9cbi8qKlxyXG4gKiBQYWdlIGhlYWRlciB0aXRsZVxyXG4gKi9cbi5jLXNlYXJjaC1mb3JtX19ib2R5IHtcbiAgZGlzcGxheTogZmxleDtcbn1cblxuLmMtc3RhY2tlZC1ibG9jay1saXN0IHtcbiAgbWF4LXdpZHRoOiA4MHJlbTtcbiAgbWFyZ2luLWJvdHRvbTogMnJlbTtcbn1cblxuLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qXFxcclxuXHQjVE9UQUwgQ09OVEFJTkVSXHJcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG4vKipcclxuICogMSlcclxuICovXG4uYy10b3RhbC1jb250YWluZXIge1xuICBtYXJnaW4tdG9wOiAxcmVtO1xufVxuXG5AbWVkaWEgYWxsIGFuZCAobWluLXdpZHRoOiAzNWVtKSB7XG4gIC5jLXRvdGFsLWNvbnRhaW5lciB7XG4gICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gIH1cbn1cblxuLmMtdG90YWwge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xufVxuXG5AbWVkaWEgYWxsIGFuZCAobWluLXdpZHRoOiAzNWVtKSB7XG4gIC5jLXRvdGFsIHtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xuICB9XG59XG5cbi5jLXRvdGFsLS1uby1icmVhayB7XG4gIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcbn1cblxuQG1lZGlhIGFsbCBhbmQgKG1pbi13aWR0aDogNjBlbSkge1xuICAuYy10b3RhbC0tbm8tYnJlYWsge1xuICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG4gIH1cbn1cblxuLmMtdG90YWxfX2xhYmVsIHtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIG1hcmdpbi1yaWdodDogMC41cmVtO1xuICBwYWRkaW5nLWJvdHRvbTogMDtcbn1cblxuLmMtdG90YWwtLW5vLWJyZWFrIC5jLXRvdGFsX19sYWJlbCB7XG4gIHdpZHRoOiA1cmVtO1xufVxuXG5AbWVkaWEgYWxsIGFuZCAobWluLXdpZHRoOiA2MGVtKSB7XG4gIC5jLXRvdGFsLS1uby1icmVhayAuYy10b3RhbF9fbGFiZWwge1xuICAgIHdpZHRoOiBhdXRvO1xuICB9XG59XG5cbi5jLXRvdGFsX19zcGFuIHtcbiAgZm9udC1mYW1pbHk6IFwiQ3JpbXNvbiBUZXh0XCIsIHNlcmlmO1xuICBmb250LXNpemU6IDEuMnJlbTtcbiAgY29sb3I6ICMxMDQ1NUI7XG59XG5cbi5jLXRvdGFsLS1uby1icmVhayAuYy10b3RhbF9fc3BhbiB7XG4gIG1hcmdpbi1sZWZ0OiAycmVtO1xufVxuXG5AbWVkaWEgYWxsIGFuZCAobWluLXdpZHRoOiA2MGVtKSB7XG4gIC5jLXRvdGFsLS1uby1icmVhayAuYy10b3RhbF9fc3BhbiB7XG4gICAgbWFyZ2luLWxlZnQ6IDA7XG4gIH1cbn1cblxuLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qXFxcclxuICAgICNVVElMSVRJRVNcclxuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cbi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlxcXHJcbiAgICAjVklTSUJJTElUWSBDTEFTU0VTXHJcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG4vKipcclxuICogSXMgSGlkZGVuXHJcbiAqIDEpIENvbXBsZXRlbHkgcmVtb3ZlIGZyb20gdGhlIGZsb3cgYW5kIHNjcmVlbiByZWFkZXJzLlxyXG4gKi9cbi51LWlzLWhpZGRlbiB7XG4gIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgdmlzaWJpbGl0eTogaGlkZGVuICFpbXBvcnRhbnQ7XG59XG5cbi8qKlxyXG4gKiBJcyBWaXNpYmx5IEhpZGRlblxyXG4gKiAxKSBDb21wbGV0ZWx5IHJlbW92ZSBmcm9tIHRoZSBmbG93IGJ1dCBsZWF2ZSBhdmFpbGFibGUgdG8gc2NyZWVuIHJlYWRlcnMuXHJcbiAqL1xuLnUtaXMtdmlzaGlkZGVuIHtcbiAgcG9zaXRpb246IGFic29sdXRlICFpbXBvcnRhbnQ7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHdpZHRoOiAxcHg7XG4gIGhlaWdodDogMXB4O1xuICBwYWRkaW5nOiAwO1xuICBib3JkZXI6IDA7XG4gIGNsaXA6IHJlY3QoMXB4LCAxcHgsIDFweCwgMXB4KTtcbn1cblxuLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qXFxcclxuICAgICNTUEFDSU5HXHJcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG4vKipcclxuICogTWFyZ2luIGJvdHRvbSBub25lXHJcbiAqIDEpIEZvcmNlIG1hcmdpbiBib3R0b20gb2YgMFxyXG4gKi9cbi51LW1hcmdpbi1ib3R0b20tbm9uZSB7XG4gIG1hcmdpbi1ib3R0b206IDAgIWltcG9ydGFudDtcbn1cblxuLyoqXHJcbiAqIE1hcmdpbiBib3R0b20gc21hbGxcclxuICogMSkgRm9yY2UgbWFyZ2luIGJvdHRvbSBvZiAkc3BhY2luZy1zbWFsbCB2YXJpYWJsZVxyXG4gKi9cbi51LW1hcmdpbi1ib3R0b20tc21hbGwge1xuICBtYXJnaW4tYm90dG9tOiAxcmVtICFpbXBvcnRhbnQ7XG59XG5cbi8qKlxyXG4gKiBNYXJnaW4gYm90dG9tXHJcbiAqIDEpIEZvcmNlIG1hcmdpbiBib3R0b20gb2YgJHNwYWNpbmcgdmFyaWFibGVcclxuICovXG4udS1tYXJnaW4tYm90dG9tIHtcbiAgbWFyZ2luLWJvdHRvbTogMXJlbSAhaW1wb3J0YW50O1xufVxuXG4vKipcclxuICogTWFyZ2luIGJvdHRvbSBsYXJnZVxyXG4gKiAxKSBGb3JjZSBtYXJnaW4gYm90dG9tIG9mICRzcGFjaW5nLWxhcmdlIHZhcmlhYmxlXHJcbiAqL1xuLnUtbWFyZ2luLWJvdHRvbS1sYXJnZSB7XG4gIG1hcmdpbi1ib3R0b206IDJyZW0gIWltcG9ydGFudDtcbn1cblxuLnUtbWFyZ2luLWJvdHRvbS1sYXJnZS10by14eGwge1xuICBtYXJnaW4tYm90dG9tOiAycmVtICFpbXBvcnRhbnQ7XG59XG5cbkBtZWRpYSBhbGwgYW5kIChtaW4td2lkdGg6IDYwZW0pIHtcbiAgLnUtbWFyZ2luLWJvdHRvbS1sYXJnZS10by14eGwge1xuICAgIG1hcmdpbi1ib3R0b206IDhyZW0gIWltcG9ydGFudDtcbiAgfVxufVxuXG4vKipcclxuICogTWFyZ2luIHRvcCBub25lXHJcbiAqIDEpIEZvcmNlIG1hcmdpbiB0b3Agb2YgMFxyXG4gKi9cbi51LW1hcmdpbi10b3Atbm9uZSB7XG4gIG1hcmdpbi10b3A6IDAgIWltcG9ydGFudDtcbn1cblxuLyoqXHJcbiAqIE1hcmdpbiB0b3Agc21hbGxcclxuICogMSkgRm9yY2UgbWFyZ2luIHRvcCBvZiAkc3BhY2luZy1zbWFsbCB2YXJpYWJsZVxyXG4gKi9cbi51LW1hcmdpbi10b3Atc21hbGwge1xuICBtYXJnaW4tdG9wOiAxcmVtICFpbXBvcnRhbnQ7XG59XG5cbi8qKlxyXG4gKiBNYXJnaW4gdG9wXHJcbiAqIDEpIEZvcmNlIG1hcmdpbiB0b3Agb2YgJHNwYWNpbmcgdmFyaWFibGVcclxuICovXG4udS1tYXJnaW4tdG9wIHtcbiAgbWFyZ2luLXRvcDogMXJlbSAhaW1wb3J0YW50O1xufVxuXG4vKipcclxuICogTWFyZ2luIHRvcCBsYXJnZVxyXG4gKiAxKSBGb3JjZSBtYXJnaW4gdG9wIG9mICRzcGFjaW5nLWxhcmdlIHZhcmlhYmxlXHJcbiAqL1xuLnUtbWFyZ2luLXRvcC1sYXJnZSB7XG4gIG1hcmdpbi10b3A6IDJyZW0gIWltcG9ydGFudDtcbn1cblxuLnUtbWFyZ2luLXRvcC1ib29raW5nIHtcbiAgbWFyZ2luLXRvcDogMjhyZW0gIWltcG9ydGFudDtcbn1cblxuLyoqXHJcbiAqIE1hcmdpbiByaWdodCBub25lXHJcbiAqIDEpIEZvcmNlIG1hcmdpbiByaWdodCBvZiAwXHJcbiAqL1xuLnUtbWFyZ2luLXJpZ2h0LW5vbmUge1xuICBtYXJnaW4tcmlnaHQ6IDAgIWltcG9ydGFudDtcbn1cblxuLyoqXHJcbiAqIE1hcmdpbiByaWdodCBzbWFsbFxyXG4gKiAxKSBGb3JjZSBtYXJnaW4gcmlnaHQgb2YgJHNwYWNpbmctc21hbGwgdmFyaWFibGVcclxuICovXG4udS1tYXJnaW4tcmlnaHQtc21hbGwge1xuICBtYXJnaW4tcmlnaHQ6IDFyZW0gIWltcG9ydGFudDtcbn1cblxuLyoqXHJcbiAqIE1hcmdpbiByaWdodFxyXG4gKiAxKSBGb3JjZSBtYXJnaW4gcmlnaHQgb2YgJHNwYWNpbmcgdmFyaWFibGVcclxuICovXG4udS1tYXJnaW4tcmlnaHQge1xuICBtYXJnaW4tcmlnaHQ6IDFyZW0gIWltcG9ydGFudDtcbn1cblxuLyoqXHJcbiAqIE1hcmdpbiByaWdodCBsYXJnZVxyXG4gKiAxKSBGb3JjZSBtYXJnaW4gcmlnaHQgb2YgJHNwYWNpbmctbGFyZ2UgdmFyaWFibGVcclxuICovXG4udS1tYXJnaW4tcmlnaHQtbGFyZ2Uge1xuICBtYXJnaW4tcmlnaHQ6IDJyZW0gIWltcG9ydGFudDtcbn1cblxuLyoqXHJcbiAqIE1hcmdpbiBsZWZ0IG5vbmVcclxuICogMSkgRm9yY2UgbWFyZ2luIGxlZnQgb2YgMFxyXG4gKi9cbi51LW1hcmdpbi1sZWZ0LW5vbmUge1xuICBtYXJnaW4tbGVmdDogMCAhaW1wb3J0YW50O1xufVxuXG4vKipcclxuICogTWFyZ2luIGxlZnQgc21hbGxcclxuICogMSkgRm9yY2UgbWFyZ2luIGxlZnQgb2YgJHNwYWNpbmctc21hbGwgdmFyaWFibGVcclxuICovXG4udS1tYXJnaW4tbGVmdC1zbWFsbCB7XG4gIG1hcmdpbi1sZWZ0OiAxcmVtICFpbXBvcnRhbnQ7XG59XG5cbi8qKlxyXG4gKiBNYXJnaW4gbGVmdFxyXG4gKiAxKSBGb3JjZSBtYXJnaW4gbGVmdCBvZiAkc3BhY2luZyB2YXJpYWJsZVxyXG4gKi9cbi51LW1hcmdpbi1sZWZ0IHtcbiAgbWFyZ2luLWxlZnQ6IDFyZW0gIWltcG9ydGFudDtcbn1cblxuLyoqXHJcbiAqIE1hcmdpbiBsZWZ0IGxhcmdlXHJcbiAqIDEpIEZvcmNlIG1hcmdpbiBsZWZ0IG9mICRzcGFjaW5nLWxhcmdlIHZhcmlhYmxlXHJcbiAqL1xuLnUtbWFyZ2luLWxlZnQtbGFyZ2Uge1xuICBtYXJnaW4tbGVmdDogMnJlbSAhaW1wb3J0YW50O1xufVxuXG4vKipcclxuICogQ2VudGVyIGRpc3BsYXkgYmxvY2sgY29udGVudHNcclxuICovXG4udS1tYXJnaW4tY2VudGVyIHtcbiAgbWFyZ2luOiAwIGF1dG8gIWltcG9ydGFudDtcbn1cblxuLyoqXHJcbiAqIFBhZGRpbmcgbm9uZVxyXG4gKi9cbi51LXBhZGRpbmctbm9uZSB7XG4gIHBhZGRpbmc6IDAgIWltcG9ydGFudDtcbn1cblxuLyoqXHJcbiAqIFBhZGRpbmcgc21hbGxcclxuICovXG4udS1wYWRkaW5nLXNtYWxsIHtcbiAgcGFkZGluZzogMXJlbSAhaW1wb3J0YW50O1xufVxuXG4vKipcclxuICogUGFkZGluZ1xyXG4gKi9cbi51LXBhZGRpbmcge1xuICBwYWRkaW5nOiAxcmVtICFpbXBvcnRhbnQ7XG59XG5cbi8qKlxyXG4gKiBQYWRkaW5nIGxhcmdlXHJcbiAqL1xuLnUtcGFkZGluZy1sYXJnZSB7XG4gIHBhZGRpbmc6IDJyZW0gIWltcG9ydGFudDtcbn1cblxuLyoqXHJcbiAqIFBhZGRpbmcgdG9wIG5vbmVcclxuICovXG4udS1wYWRkaW5nLXRvcC1ub25lIHtcbiAgcGFkZGluZy10b3A6IDAgIWltcG9ydGFudDtcbn1cblxuLyoqXHJcbiAqIFBhZGRpbmcgdG9wIHNtYWxsXHJcbiAqL1xuLnUtcGFkZGluZy10b3Atc21hbGwge1xuICBwYWRkaW5nLXRvcDogMXJlbSAhaW1wb3J0YW50O1xufVxuXG4vKipcclxuICogUGFkZGluZyB0b3BcclxuICovXG4udS1wYWRkaW5nLXRvcCB7XG4gIHBhZGRpbmctdG9wOiAxcmVtICFpbXBvcnRhbnQ7XG59XG5cbi8qKlxyXG4gKiBQYWRkaW5nIHRvcCBsYXJnZVxyXG4gKi9cbi51LXBhZGRpbmctdG9wLWxhcmdlIHtcbiAgcGFkZGluZy10b3A6IDJyZW0gIWltcG9ydGFudDtcbn1cblxuLyoqXHJcbiAqIFBhZGRpbmcgYm90dG9tIG5vbmVcclxuICovXG4udS1wYWRkaW5nLWJvdHRvbS1ub25lIHtcbiAgcGFkZGluZy1ib3R0b206IDAgIWltcG9ydGFudDtcbn1cblxuLyoqXHJcbiAqIFBhZGRpbmcgYm90dG9tIHNtYWxsXHJcbiAqL1xuLnUtcGFkZGluZy1ib3R0b20tc21hbGwge1xuICBwYWRkaW5nLWJvdHRvbTogMXJlbSAhaW1wb3J0YW50O1xufVxuXG4vKipcclxuICogUGFkZGluZyBib3R0b21cclxuICovXG4udS1wYWRkaW5nLWJvdHRvbSB7XG4gIHBhZGRpbmctYm90dG9tOiAxcmVtICFpbXBvcnRhbnQ7XG59XG5cbi8qKlxyXG4gKiBQYWRkaW5nIGJvdHRvbSBsYXJnZVxyXG4gKi9cbi51LXBhZGRpbmctYm90dG9tLWxhcmdlIHtcbiAgcGFkZGluZy1ib3R0b206IDJyZW0gIWltcG9ydGFudDtcbn1cblxuLyoqXHJcbiAqIFBhZGRpbmcgcmlnaHQgbm9uZVxyXG4gKi9cbi51LXBhZGRpbmctcmlnaHQtbm9uZSB7XG4gIHBhZGRpbmctcmlnaHQ6IDAgIWltcG9ydGFudDtcbn1cblxuLyoqXHJcbiAqIFBhZGRpbmcgcmlnaHQgc21hbGxcclxuICovXG4udS1wYWRkaW5nLXJpZ2h0LXNtYWxsIHtcbiAgcGFkZGluZy1yaWdodDogMXJlbSAhaW1wb3J0YW50O1xufVxuXG4vKipcclxuICogUGFkZGluZyByaWdodFxyXG4gKi9cbi51LXBhZGRpbmctcmlnaHQge1xuICBwYWRkaW5nLXJpZ2h0OiAxcmVtICFpbXBvcnRhbnQ7XG59XG5cbi8qKlxyXG4gKiBQYWRkaW5nIHJpZ2h0IGxhcmdlXHJcbiAqL1xuLnUtcGFkZGluZy1yaWdodC1sYXJnZSB7XG4gIHBhZGRpbmctcmlnaHQ6IDJyZW0gIWltcG9ydGFudDtcbn1cblxuLyoqXHJcbiAqIFBhZGRpbmcgbGVmdCBub25lXHJcbiAqL1xuLnUtcGFkZGluZy1sZWZ0LW5vbmUge1xuICBwYWRkaW5nLWxlZnQ6IDAgIWltcG9ydGFudDtcbn1cblxuLyoqXHJcbiAqIFBhZGRpbmcgbGVmdCBzbWFsbFxyXG4gKi9cbi51LXBhZGRpbmctbGVmdC1zbWFsbCB7XG4gIHBhZGRpbmctbGVmdDogMXJlbSAhaW1wb3J0YW50O1xufVxuXG4vKipcclxuICogUGFkZGluZyBsZWZ0XHJcbiAqL1xuLnUtcGFkZGluZy1sZWZ0IHtcbiAgcGFkZGluZy1sZWZ0OiAxcmVtICFpbXBvcnRhbnQ7XG59XG5cbi8qKlxyXG4gKiBQYWRkaW5nIGxlZnQgbGFyZ2VcclxuICovXG4udS1wYWRkaW5nLWxlZnQtbGFyZ2Uge1xuICBwYWRkaW5nLWxlZnQ6IDJyZW0gIWltcG9ydGFudDtcbn1cbiIsIi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlxcXHJcbiAgICAjVkFSSUFCTEVTXHJcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXHJcblxyXG4vKipcclxuICogQ09OVEVOVFNcclxuICpcclxuICogQ09MT1JTXHJcbiAqIEJyYW5kIENvbG9ycy4uLi4uLi4uLi4uLi4uLkdsb2JhbGx5LWF2YWlsYWJsZSB2YXJpYWJsZXMgYW5kIGNvbmZpZ1xyXG4gKiBOZXV0cmFsIENvbG9ycy4uLi4uLi4uLi4uLi5HcmF5c2NhbGUgY29sb3JzLCBpbmNsdWRpbmcgd2hpdGUgYW5kIGJsYWNrXHJcbiAqIFV0aWxpdHkgQ29sb3JzLi4uLi4uLi4uLi4uLkluZm8sIFdhcm5pbmcsIEVycm9yLCBTdWNjZXNzXHJcbiAqXHJcbiAqIFRZUE9HUkFQSFlcclxuICogRm9udCBGYW1pbGllcy4uLi4uLi4uLi4uLi4uVGhlIGZvbnRzIHVzZWQgaW4gdGhlIGRlc2lnbiBzeXN0ZW1cclxuICogU2l6aW5nLi4uLi4uLi4uLi4uLi4uLi4uLi4uRm9udCBzaXppbmdcclxuICpcclxuICogTEFZT1VUXHJcbiAqIE1heC13aWR0aHMuLi4uLi4uLi4uLi4uLi4uLk1heGltdW0gbGF5b3V0IGNvbnRhaW5lciB3aWR0aFxyXG4gKlxyXG5cclxuICogU1BBQ0lOR1xyXG4gKiBTcGFjaW5nIGRlZmF1bHRzLi4uLi4uLi4uLi5TcGFjaW5nIGJldHdlZW4gZWxlbWVudHNcclxuICpcclxuICogQk9SREVSU1xyXG4gKiBCb3JkZXIgV2lkdGguLi4uLi4uLi4uLi4uLi5Cb3JkZXIgdGhpY2tuZXNzZXNcclxuICogQm9yZGVyIFJhZGl1cy4uLi4uLi4uLi4uLi4uQm9yZGVyIHJhZGl1cyBkZWZpbml0aW9uc1xyXG4gKlxyXG4gKiBBTklNQVRJT05cclxuICogQW5pbWF0aW9uIFNwZWVkLi4uLi4uLi4uLi4uVHJhbnNpdGlvbi9hbmltYXRpb24gc3BlZWQgdmFyaWFibGVzXHJcbiAqIEFuaW1hdGlvbiBlYXNpbmcuLi4uLi4uLi4uLkVhc2luZyB2YXJpYWJsZXNcclxuICpcclxuICogQlJFQUtQT0lOVFNcclxuICogQnJlYWtwb2ludHMuLi4uLi4uLi4uLi4uLi4uR2xvYmFsIGJyZWFrcG9pbnQgZGVmaW5pdGlvbnNcclxuICovXHJcblxyXG4gLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qXFxcclxuICAgICAjQ09MT1JTXHJcbiBcXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xyXG5cclxuLyoqXHJcbiAqIEJyYW5kIENvbG9yc1xyXG4gKiAxKSBCcmFuZD1zcGVjaWZpYyBjb2xvcnNcclxuICovXHJcbiRjb2xvci1icmFuZC1wcmltYXJ5OiAgICAgICAgICAgIzEwNDU1QjtcclxuJGNvbG9yLWJyYW5kLXByaW1hcnktZGFyazogICAgICAjMDgyNDMwO1xyXG4kY29sb3ItYnJhbmQtc2Vjb25kYXJ5OiAgICAgICAgICMyQUExQUY7XHJcbiRjb2xvci1icmFuZC1zZWNvbmRhcnktZGFyazogICAgIzIxN0Q4ODtcclxuXHJcbi8qKlxyXG4gKiBOZXV0cmFsIENvbG9yc1xyXG4gKiAxKSBOZXV0cmFsIGNvbG9ycyBhcmUgZ3JheXNjYWxlIHZhbHVlcyB1c2VkIHRocm91Z2hvdXQgdGhlIFVJXHJcbiAqL1xyXG4kY29sb3ItbmV1dHJhbC13aGl0ZTogICAgICAgICAgICNmZmY7XHJcbiRjb2xvci1uZXV0cmFsLWdyYXktMDI6ICAgICAgICAgI2Y5ZjlmOTtcclxuJGNvbG9yLW5ldXRyYWwtZ3JheS0wNzogICAgICAgICAjZWVlO1xyXG4kY29sb3ItbmV1dHJhbC1vZmYtd2hpdGU6ICAgICAgICAgI2RkZDtcclxuJGNvbG9yLW5ldXRyYWwtbWVyY3VyeTogICAgICAgICAjZThlOGU4O1xyXG4kY29sb3ItbmV1dHJhbC1pcm9uOiAgICAgICAgICAgICNjZmQyZDY7XHJcbiRjb2xvci1uZXV0cmFsLWdyYXktbGlnaHQ6ICAgICAgIzlhOWM5ZjtcclxuJGNvbG9yLW5ldXRyYWwtZ3JheTogICAgICAgICAgICAjNjY2O1xyXG4kY29sb3ItbmV1dHJhbC1ncmF5LWRhcms6ICAgICAgICM0MzQ5NGY7XHJcbiRjb2xvci1uZXV0cmFsLWJsYWNrOiAgICAgICAgICAgIzMzMztcclxuXHJcbi8qKlxyXG4gKiBVdGlsaXR5IENvbG9yc1xyXG4gKiAxKSBVdGlsaXR5IGNvbG9ycyBhcmUgY29sb3JzIHVzZWQgdG8gcHJvdmlkZSBmZWVkYmFjaywgc3VjaCBhcyBhbGVydCBtZXNzYWdlcyxcclxuICogICAgZm9ybSB2YWxpZGF0aW9uLCBldGMuXHJcbiAqL1xyXG4kY29sb3ItdXRpbGl0eS1pbmZvOiAgICAgICAgICAgICMwMTkyZDA7XHJcbiRjb2xvci11dGlsaXR5LWluZm8tbGlnaHQ6ICAgICAgI2QzZjJmZjtcclxuJGNvbG9yLXV0aWxpdHktZXJyb3I6ICAgICAgICAgICAjYjEyYTBiO1xyXG4kY29sb3ItdXRpbGl0eS1lcnJvci1saWdodDogICAgICNmZGRlZDg7XHJcbiRjb2xvci11dGlsaXR5LXN1Y2Nlc3M6ICAgICAgICAgIzAzODA0ZDtcclxuJGNvbG9yLXV0aWxpdHktc3VjY2Vzcy1saWdodDogICAjZDRmM2U2O1xyXG4kY29sb3ItdXRpbGl0eS13YXJuaW5nOiAgICAgICAgICNhNTliMTU7XHJcbiRjb2xvci11dGlsaXR5LXdhcm5pbmctbGlnaHQ6ICAgI2ZmZmVjZjtcclxuXHJcblxyXG5cclxuXHJcblxyXG4vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcXFxyXG4gICAgI1RZUE9HUkFQSFlcclxuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cclxuXHJcbi8qKlxyXG4gKiBGb250IEZhbWlseVxyXG4gKi9cclxuJGZvbnQtZmFtaWx5LXByaW1hcnk6ICAgICAgICAgICAnTW9udHNlcnJhdCcsIFwiSGVsdmV0aWNhTmV1ZVwiLCBcIkhlbHZldGljYVwiLCBcIkFyaWFsXCIsIHNhbnMtc2VyaWY7XHJcbiRmb250LWZhbWlseS1zZWNvbmRhcnk6ICAgICAgICAgJ0NyaW1zb24gVGV4dCcsIHNlcmlmO1xyXG5cclxuXHJcbi8qKlxyXG4gKiBGb250IFNpemluZ1xyXG4gKi9cclxuJGZvbnQtc2l6ZS1zbTogICAgICAgICAgICAgICAgICAwLjc1cmVtO1xyXG4kZm9udC1zaXplLXNtLTI6ICAgICAgICAgICAgICAgIDAuODVyZW07XHJcbiRmb250LXNpemUtbWVkOiAgICAgICAgICAgICAgICAgMXJlbTtcclxuJGZvbnQtc2l6ZS1tZWQtMjogICAgICAgICAgICAgICAxLjJyZW07XHJcbiRmb250LXNpemUtbGFyZ2U6ICAgICAgICAgICAgICAgMnJlbTtcclxuJGZvbnQtc2l6ZS14bDogICAgICAgICAgICAgICAgICAzcmVtO1xyXG4kZm9udC1zaXplLXh4bDogICAgICAgICAgICAgICAgIDRyZW07XHJcblxyXG4vKipcclxuICogTGluZSBIZWlnaHRcclxuICovXHJcbiRsaW5lLWhlaWdodC1zbTogICAgICAgICAgICAgICAgMC44O1xyXG4kbGluZS1oZWlnaHQtc20tMjogICAgICAgICAgICAgIDAuOTtcclxuJGxpbmUtaGVpZ2h0LW1lZDogICAgICAgICAgICAgICAxO1xyXG4kbGluZS1oZWlnaHQtbWVkLTI6ICAgICAgICAgICAgIDEuMjtcclxuJGxpbmUtaGVpZ2h0LWxhcmdlOiAgICAgICAgICAgICAxLjY7XHJcbiRsaW5lLWhlaWdodC14bDogICAgICAgICAgICAgICAgMS44O1xyXG5cclxuXHJcblxyXG5cclxuXHJcbi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlxcXHJcbiAgICAjTEFZT1VUXHJcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXHJcblxyXG4vKipcclxuICogTWF4IFdpZHRoXHJcbiAqL1xyXG4kbC1tYXgtd2lkdGg6ICAgICAgICAgICAgICAgICAgIDgwcmVtICFkZWZhdWx0O1xyXG4kbC1tYXgtd2lkdGgtbmFycm93OiAgICAgICAgICAgIDQ1cmVtICFkZWZhdWx0O1xyXG4kbC1saW5lbGVuZ3RoLXdpZHRoOiAgICAgICAgICAgIDM2cmVtICFkZWZhdWx0O1xyXG5cclxuXHJcblxyXG5cclxuXHJcbi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlxcXHJcbiAgICAjU1BBQ0lOR1xyXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xyXG5cclxuLyoqXHJcbiAqIFNwYWNpbmcgYW5kIG9mZnNldHNcclxuICogMSkgVXNlZCB0byBzcGFjZSBncmlkcyBhbmQgYm9keSBwYWRkaW5nXHJcbiAqL1xyXG5cclxuJHNwYWNpbmc6ICAgICAgICAgICAgICAgICAgICAgICAxcmVtO1xyXG4kc3BhY2luZy1zbWFsbDogICAgICAgICAgICAgICAgIHJvdW5kKDAuNSAqICRzcGFjaW5nKTtcclxuJHNwYWNpbmctbGFyZ2U6ICAgICAgICAgICAgICAgICByb3VuZCgyICogJHNwYWNpbmcpO1xyXG5cclxuXHJcblxyXG5cclxuXHJcbi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlxcXHJcbiAgICAjQk9SREVSU1xyXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xyXG5cclxuLyoqXHJcbiAqIEJvcmRlclxyXG4gKi9cclxuICRib3JkZXItdGhpY2tuZXNzOiAgICAgICAgICAgICAxcHg7XHJcblxyXG4vKipcclxuICogQm9yZGVyIHJhZGl1c1xyXG4gKi9cclxuJGJvcmRlci1yYWRpdXM6ICAgICAgICAgICAgICAgICA0cHg7XHJcblxyXG5cclxuXHJcblxyXG5cclxuLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qXFxcclxuICAgICNBTklNQVRJT05cclxuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cclxuXHJcbi8qKlxyXG4gKiBUcmFuc2l0aW9uIFNwZWVkXHJcbiAqL1xyXG4kYW5pbS1mYWRlLXF1aWNrOiAgICAgICAgICAgICAgIDAuMTVzO1xyXG4kYW5pbS1mYWRlLWxvbmc6ICAgICAgICAgICAgICAgIDAuNXM7XHJcblxyXG4vKipcclxuICogVHJhbnNpdGlvbiBFYXNlXHJcbiAqL1xyXG4kYW5pbS1lYXNlOiAgICAgICAgICAgICAgICAgICAgIGVhc2Utb3V0O1xyXG5cclxuXHJcblxyXG5cclxuXHJcbi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlxcXHJcbiAgICAjQlJFQUtQT0lOVFNcclxuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cclxuXHJcbi8qKlxyXG4gKiBCcmVha3BvaW50cyB1c2VkIGluIG1lZGlhIHF1ZXJpZXNcclxuICogMSkgVGhlc2UgYXJlIG5vdCB0aGUgb25seSBicmVha3BvaW50cyB1c2VkLCBidXQgdGhleSBwcm92aWRlIGEgZmV3IGRlZmF1bHRzXHJcbiAqL1xyXG4kYnAtc21hbGw6ICAgICAgICAgICAgICAgICAgICAgIDI4ZW07XHJcbiRicC1zbWFsbC0yOiAgICAgICAgICAgICAgICAgICAgMzVlbTtcclxuJGJwLW1lZDogICAgICAgICAgICAgICAgICAgICAgICA0N2VtO1xyXG4kYnAtbGFyZ2U6ICAgICAgICAgICAgICAgICAgICAgIDYwZW07XHJcbiRicC14bDogICAgICAgICAgICAgICAgICAgICAgICAgNzBlbTtcclxuIiwiLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qXFxcclxuICAgICNNSVhJTlNcclxuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cclxuXHJcbi8qKlxyXG4gKiBCb2R5IFN0eWxlc1xyXG4gKiAxKSBQcmV2ZW50IE1vYmlsZSBTYWZhcmkgZnJvbSBzY2FsaW5nIHVwIHRleHQ6IGh0dHBzOi8vYmxvZy41NW1pbnV0ZXMuY29tLzIwMTIvMDQvaXBob25lLXRleHQtcmVzaXppbmcvXHJcbiAqL1xyXG5AbWl4aW4gdHlwb2dyYXBoeUJvZHkoKSB7XHJcbiAgICAtd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC8qIDEgKi9cclxuICAgIGZvbnQtc2l6ZTogJGZvbnQtc2l6ZS1tZWQ7XHJcbiAgICBsaW5lLWhlaWdodDogMS42O1xyXG5cclxuICAgIGxpbmUtaGVpZ2h0OiAxLjY7XHJcbiAgICAtd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC8qIDEgKi9cclxufVxyXG5cclxuLyoqXHJcbiAqIFhMIFR5cGUgU3R5bGVzXHJcbiAqL1xyXG4gQG1peGluIHR5cG9ncmFwaHlCb2R5TGFyZ2UoKSB7XHJcbiAgICBmb250LXNpemU6ICRmb250LXNpemUtbWVkLTI7XHJcblx0bGluZS1oZWlnaHQ6ICRsaW5lLWhlaWdodC1sYXJnZTtcclxufVxyXG5cclxuLyoqXHJcbiAqIFhMIEhlYWRpbmcgU3R5bGVzXHJcbiAqL1xyXG5AbWl4aW4gdHlwb2dyYXBoeUhlYWRpbmdYWEwoKSB7XHJcbiAgICBmb250LXNpemU6ICRmb250LXNpemUteGw7XHJcbiAgICBmb250LXdlaWdodDogbm9ybWFsO1xyXG4gICAgbGluZS1oZWlnaHQ6IDEuMjtcclxuXHJcbiAgICBAbWVkaWEgYWxsIGFuZCAobWluLXdpZHRoOiAkYnAtbWVkKSB7XHJcbiAgICAgICAgZm9udC1zaXplOiAkZm9udC1zaXplLXh4bDtcclxuICAgIH1cclxufVxyXG5cclxuLyoqXHJcbiAqIFhMIEhlYWRpbmcgU3R5bGVzXHJcbiAqL1xyXG5AbWl4aW4gdHlwb2dyYXBoeUhlYWRpbmdYbCgpIHtcclxuICAgIGZvbnQtc2l6ZTogJGZvbnQtc2l6ZS14bDtcclxuICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XHJcblx0bGluZS1oZWlnaHQ6IDEuMjtcclxufVxyXG5cclxuLyoqXHJcbiAqIExhcmdlIEhlYWRpbmcgU3R5bGVzXHJcbiAqL1xyXG4gQG1peGluIHR5cG9ncmFwaHlIZWFkaW5nTGFyZ2UoKSB7XHJcbiAgICBmb250LXNpemU6ICRmb250LXNpemUtbGFyZ2U7XHJcbiAgICBmb250LXdlaWdodDogbm9ybWFsO1xyXG5cdGxpbmUtaGVpZ2h0OiAxLjI7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBNZWRpdW0gMiBIZWFkaW5nIFN0eWxlc1xyXG4gKi9cclxuIEBtaXhpbiB0eXBvZ3JhcGh5SGVhZGluZ01lZDIoKSB7XHJcbiAgICBmb250LXNpemU6ICRmb250LXNpemUtbWVkLTI7XHJcbiAgICBmb250LXdlaWdodDogbm9ybWFsO1xyXG5cdGxpbmUtaGVpZ2h0OiAxLjI7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBNZWRpdW0gSGVhZGluZyBTdHlsZXNcclxuICovXHJcbiBAbWl4aW4gdHlwb2dyYXBoeUhlYWRpbmdNZWQoKSB7XHJcbiAgICBmb250LXNpemU6ICRmb250LXNpemUtbWVkO1xyXG4gICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcclxuXHRsaW5lLWhlaWdodDogMS4yO1xyXG59XHJcbiIsIi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlxcXHJcbiAgICAjQ09MT1JTXHJcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXHJcblxyXG4vKipcclxuICogSW4gdGhpcyBmaWxlLCB3ZSB0YWtlIHRoZSBsaXRlcmFsIGNvbG9ycyBmcm9tIG91ciBwYWxldHRlIChkZWZpbmVkIGluIHZhcmlhYmxlcy5zY3NzKVxyXG4gKiBhbmQgZGVmaW5lIHRoZW0gYWdhaW5zdCB2YXJpYWJsZXMgdGhhdCB3ZSBjYW4gdXRpbGlzZSBhbnl3aGVyZSB0aHJvdWdob3V0IHRoZSBwcm9qZWN0LlxyXG4gKi9cclxuXHJcblxyXG5cclxuXHJcblxyXG4vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcXFxyXG4gICAgI0dMT0JBTCBURVhUIENPTE9SXHJcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXHJcblxyXG4vKipcclxuICogQm9keSB0ZXh0IGFuZCBiYWNrZ3JvdW5kIGNvbG9yc1xyXG4gKi9cclxuJGNvbG9yLWJvZHktdGV4dDogJGNvbG9yLW5ldXRyYWwtZ3JheS1kYXJrICFkZWZhdWx0O1xyXG4kY29sb3ItYm9keS1iZzogJGNvbG9yLW5ldXRyYWwtd2hpdGUgIWRlZmF1bHQ7XHJcblxyXG4vKipcclxuICogSGlnaGxpZ2h0IGNvbG9yc1xyXG4gKi9cclxuJGNvbG9yLXRleHQtaGlnaGxpZ2h0OiAkY29sb3ItbmV1dHJhbC1ncmF5LWRhcms7XHJcbiRjb2xvci10ZXh0LWhpZ2hsaWdodC1iZzogJGNvbG9yLW5ldXRyYWwtb2ZmLXdoaXRlO1xyXG5cclxuXHJcblxyXG5cclxuXHJcbi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlxcXHJcbiAgICAjTElOS1NcclxuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cclxuXHJcbiRjb2xvci1saW5rczogJGNvbG9yLW5ldXRyYWwtZ3JheSAhZGVmYXVsdDtcclxuJGNvbG9yLWxpbmtzLWhvdmVyOiAkY29sb3ItYnJhbmQtc2Vjb25kYXJ5ICFkZWZhdWx0O1xyXG4kY29sb3ItbGlua3MtYWN0aXZlOiAkY29sb3ItbmV1dHJhbC1ncmF5LWRhcmsgIWRlZmF1bHQ7XHJcbiRjb2xvci1saW5rcy12aXNpdGVkOiAkY29sb3ItbmV1dHJhbC1ncmF5LWRhcmsgIWRlZmF1bHQ7XHJcblxyXG5cclxuXHJcblxyXG5cclxuLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qXFxcclxuICAgICNCVVRUT05TXHJcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXHJcblxyXG4kY29sb3ItYnRuLXByaW1hcnk6ICRjb2xvci1uZXV0cmFsLXdoaXRlICFkZWZhdWx0O1xyXG4kY29sb3ItYnRuLXByaW1hcnktYmc6ICRjb2xvci1uZXV0cmFsLWdyYXktZGFyayAhZGVmYXVsdDtcclxuJGNvbG9yLWJ0bi1wcmltYXJ5LWJnLWhvdmVyOiAkY29sb3ItbmV1dHJhbC1pcm9uICFkZWZhdWx0O1xyXG4kY29sb3ItYnRuLXByaW1hcnktYm9yZGVyOiAkY29sb3ItbmV1dHJhbC1ncmF5LWRhcmsgIWRlZmF1bHQ7XHJcblxyXG4kY29sb3ItYnRuLXNlY29uZGFyeTogJGNvbG9yLW5ldXRyYWwtZ3JheS1kYXJrICFkZWZhdWx0O1xyXG4kY29sb3ItYnRuLXNlY29uZGFyeS1iZzogJGNvbG9yLW5ldXRyYWwtd2hpdGUgIWRlZmF1bHQ7XHJcbiRjb2xvci1idG4tc2Vjb25kYXJ5LWJnLWhvdmVyOiAkY29sb3ItbmV1dHJhbC1ncmF5LTA3ICFkZWZhdWx0O1xyXG4kY29sb3ItYnRuLXNlY29uZGFyeS1ib3JkZXI6ICRjb2xvci1uZXV0cmFsLWdyYXktZGFyayAhZGVmYXVsdDtcclxuXHJcbiRjb2xvci1idG4tZGlzYWJsZWQ6ICRjb2xvci1uZXV0cmFsLWlyb24gIWRlZmF1bHQ7XHJcbiRjb2xvci1idG4tZGlzYWJsZWQtYmc6ICRjb2xvci1uZXV0cmFsLWdyYXktMDcgIWRlZmF1bHQ7XHJcblxyXG5cclxuXHJcblxyXG5cclxuLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qXFxcclxuICAgICNGT1JNU1xyXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xyXG5cclxuJGNvbG9yLWZvcm06ICRjb2xvci1uZXV0cmFsLWdyYXktZGFyayAhZGVmYXVsdDtcclxuJGNvbG9yLWZvcm0tYmc6ICRjb2xvci1uZXV0cmFsLXdoaXRlICFkZWZhdWx0O1xyXG4kY29sb3ItZm9ybS1ib3JkZXI6ICRjb2xvci1uZXV0cmFsLWdyYXkgIWRlZmF1bHQ7XHJcbiRjb2xvci1mb3JtLWJvcmRlci1mb2N1czogJGNvbG9yLW5ldXRyYWwtZ3JheS1kYXJrICFkZWZhdWx0O1xyXG4kY29sb3ItZm9ybS1ib3JkZXItZXJyb3I6ICRjb2xvci11dGlsaXR5LWVycm9yICFkZWZhdWx0O1xyXG4kY29sb3ItZm9ybS1sYWJlbDogJGNvbG9yLW5ldXRyYWwtZ3JheS1kYXJrICFkZWZhdWx0O1xyXG4kY29sb3ItZm9ybS1pbmZvOiAkY29sb3ItbmV1dHJhbC1ncmF5O1xyXG4kY29sb3ItZm9ybS1wbGFjZWhvbGRlcjogJGNvbG9yLW5ldXRyYWwtaXJvbjtcclxuIiwiLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qXFxcclxuICAgICNCUkVBS1BPSU5UU1xyXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xyXG5cclxuLyoqXHJcbiAqIEluIHRoaXMgZmlsZSwgd2UgdGFrZSB0aGUgbGl0ZXJhbCBjb2xvcnMgZnJvbSBvdXIgcGFsZXR0ZSBhbmQgZGVmaW5lIHRoZW1cclxuICogYWdhaW5zdCB2YXJpYWJsZXMgdGhhdCB3ZSBjYW4gdXRpbGlzZSBhbnl3aGVyZSB0aHJvdWdob3V0IHRoZSBwcm9qZWN0LlxyXG4gKi9cclxuXHJcbiAkYm9keS1mb250LXNpemU6ICRmb250LXNpemUtbWVkOyIsIi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlxcXHJcbiAgICAjUkVTRVRcclxuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cclxuXHJcbi8qKlxyXG4gKiBCb3JkZXItQm94IGh0dHA6L3BhdWxpcmlzaC5jb20vMjAxMi9ib3gtc2l6aW5nLWJvcmRlci1ib3gtZnR3L1xyXG4gKi9cclxuKiB7XHJcblx0Ym94LXNpemluZzogYm9yZGVyLWJveDtcclxufVxyXG5cclxuLyoqXHJcbiAqIDEpIFplcm8gb3V0IG1hcmdpbnMgYW5kIHBhZGRpbmcgZm9yIGVsZW1lbnRzXHJcbiAqL1xyXG5odG1sLCBib2R5LCBkaXYsIG9iamVjdCwgaWZyYW1lLCBoMSwgaDIsIGgzLCBoNCwgaDUsIGg2LCBwLCBibG9ja3F1b3RlLCBvbCwgdWwsIGxpLCBmb3JtLCBsZWdlbmQsIGxhYmVsLCB0YWJsZSwgaGVhZGVyLCBmb290ZXIsIG5hdiwgc2VjdGlvbiwgZmlndXJlIHtcclxuXHRtYXJnaW46IDA7XHJcblx0cGFkZGluZzogMDtcclxufVxyXG5cclxuLyoqXHJcbiAqIDEpIFNldCBIVE1MNSBlbGVtZW50cyB0byBkaXNwbGF5OiBibG9ja1xyXG4gKi9cclxuaGVhZGVyLCBmb290ZXIsIG5hdiwgc2VjdGlvbiwgYXJ0aWNsZSwgZmlndXJlIHtcclxuXHRkaXNwbGF5OiBibG9jaztcclxufVxyXG4iLCIvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcXFxyXG4gICAgI0JPRFlcclxuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cclxuXHJcbi8qKlxyXG4gKiBIVE1MIGJhc2Ugc3R5bGVzXHJcbiAqIDEpIFNldCB0aGUgaHRtbCBlbGVtZW50J3MgaGVpZ2h0IHRvIGF0IGxlYXN0IDEwMCUgb2YgdGhlIHZpZXdwb3J0LlxyXG4gKiAgICBUaGlzIGlzIHVzZWQgdG8gYWNoaWV2ZSBhIHN0aWNreSBmb290ZXJcclxuICovXHJcbmh0bWwge1xyXG5cdG1pbi1oZWlnaHQ6IDEwMHZoOyAvKiAxICovXHJcbn1cclxuXHJcbi8qKlxyXG4gKiBCb2R5IGJhc2Ugc3R5bGVzXHJcbiAqIDEpIFNldCB0aGUgYm9keSBlbGVtZW50J3MgaGVpZ2h0IHRvIGF0IGxlYXN0IDEwMCUgb2YgdGhlIHZpZXdwb3J0LlxyXG4gKiAgICBUaGlzIGlzIHVzZWQgdG8gYWNoaWV2ZSBhIHN0aWNreSBmb290ZXJcclxuICovXHJcbmJvZHkge1xyXG5cdC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xyXG5cdGJhY2tncm91bmQtY29sb3I6ICRjb2xvci1ib2R5LWJnO1xyXG5cdGNvbG9yOiAkY29sb3ItYm9keS10ZXh0O1xyXG5cdGZvbnQtZmFtaWx5OiAkZm9udC1mYW1pbHktcHJpbWFyeTtcclxuXHRtaW4taGVpZ2h0OiAxMDB2aDsgLyogMSAqL1xyXG5cdEBpbmNsdWRlIHR5cG9ncmFwaHlCb2R5KCk7XHJcblxyXG5cdGZvbnQtZmFtaWx5OiAkZm9udC1mYW1pbHktcHJpbWFyeTtcclxuXHRAaW5jbHVkZSB0eXBvZ3JhcGh5Qm9keSgpO1xyXG5cdGJhY2tncm91bmQtY29sb3I6ICRjb2xvci1ib2R5LWJnO1xyXG5cdGNvbG9yOiAkY29sb3ItYm9keS10ZXh0O1xyXG5cdC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xyXG59XHJcbiIsIi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlxcXHJcbiAgICAjTElOS1NcclxuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cclxuXHJcbi8qKlxyXG4gKiBMaW5rIGJhc2Ugc3R5bGVzXHJcbiAqL1xyXG5hIHtcclxuXHRjb2xvcjogJGNvbG9yLWxpbmtzO1xyXG5cdHRleHQtZGVjb3JhdGlvbjogbm9uZTtcclxuXHRvdXRsaW5lOiAwO1xyXG5cdHRyYW5zaXRpb246IGNvbG9yICRhbmltLWZhZGUtcXVpY2sgJGFuaW0tZWFzZTtcclxuXHJcblx0Jjpob3ZlciwgJjpmb2N1cyB7XHJcblx0XHRjb2xvcjogJGNvbG9yLWxpbmtzLWhvdmVyO1xyXG5cdH1cclxuXHJcblx0JjphY3RpdmUge1xyXG5cdFx0Y29sb3I6ICRjb2xvci1saW5rcy1hY3RpdmU7XHJcblx0fVxyXG59XHJcbiIsIi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlxcXHJcbiAgICAjTElTVFNcclxuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cclxuXHJcbi8qKlxyXG4gKiAxKSBMaXN0IGJhc2Ugc3R5bGVzXHJcbiAqL1xyXG5cclxuIC8qKlxyXG4gICogUmVtb3ZlIGxpc3Qgc3R5bGVzIGZyb20gdW5vcmRlcmVkIGFuZCBvcmRlcmVkIGxpc3RzXHJcbiAgKi9cclxub2wsIHVsIHtcclxuXHRsaXN0LXN0eWxlOiBub25lO1xyXG59XHJcbiIsIi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlxcXHJcbiAgICAjSEVBRElOR1NcclxuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cclxuXHJcbmgxLCBoMiwgaDMsIGg0IHtcclxuXHRmb250LWZhbWlseTogJGZvbnQtZmFtaWx5LXNlY29uZGFyeTtcclxufVxyXG5cclxuLyoqXHJcbiAqIEhlYWRpbmcgMSBiYXNlIHN0eWxlc1xyXG4gKi9cclxuaDEge1xyXG5cdEBpbmNsdWRlIHR5cG9ncmFwaHlIZWFkaW5nWFhMKCk7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBIZWFkaW5nIDIgYmFzZSBzdHlsZXNcclxuICovXHJcbmgyIHtcclxuXHRAaW5jbHVkZSB0eXBvZ3JhcGh5SGVhZGluZ01lZDIoKTtcclxufVxyXG5cclxuLyoqXHJcbiAqIEhlYWRpbmcgMyBiYXNlIHN0eWxlc1xyXG4gKi9cclxuaDMge1xyXG5cdEBpbmNsdWRlIHR5cG9ncmFwaHlIZWFkaW5nTWVkMigpO1xyXG59XHJcblxyXG4vKipcclxuICogSGVhZGluZyA0IGJhc2Ugc3R5bGVzXHJcbiAqL1xyXG5oNCB7XHJcblx0QGluY2x1ZGUgdHlwb2dyYXBoeUhlYWRpbmdNZWQoKTtcclxufVxyXG4iLCIvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcXFxyXG4gICAgI0ZPUk1TXHJcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXHJcblxyXG4vKipcclxuICogMSkgRm9ybSBlbGVtZW50IGJhc2Ugc3R5bGVzXHJcbiAqL1xyXG5cclxuLyoqXHJcbiAqIElucHV0IHBsYWNlaG9sZGVyIHRleHQgYmFzZSBzdHlsZXNcclxuICovXHJcbjo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlciB7XHJcbiAgIGNvbG9yOiAkY29sb3ItZm9ybS1wbGFjZWhvbGRlcjtcclxufVxyXG5cclxuOjotbW96LXBsYWNlaG9sZGVyIHtcclxuICAgY29sb3I6ICRjb2xvci1mb3JtLXBsYWNlaG9sZGVyO1xyXG59XHJcblxyXG46LW1zLWlucHV0LXBsYWNlaG9sZGVyIHtcclxuICAgY29sb3I6ICRjb2xvci1mb3JtLXBsYWNlaG9sZGVyO1xyXG59XHJcblxyXG4vKipcclxuICogRmllbGRzZXQgYmFzZSBzdHlsZXNcclxuICovXHJcbmZpZWxkc2V0IHtcclxuXHRib3JkZXI6IDA7XHJcblx0cGFkZGluZzogMDtcclxuXHRtYXJnaW46IDA7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBMZWdlbmQgYmFzZSBzdHlsZXNcclxuICovXHJcbmxlZ2VuZCB7XHJcbiAgICBtYXJnaW4tYm90dG9tOiAwLjI1cmVtO1xyXG59XHJcblxyXG4vKipcclxuICogTGFiZWwgYmFzZSBzdHlsZXNcclxuICovXHJcbmxhYmVsIHtcclxuXHRkaXNwbGF5OiBibG9jaztcclxuICAgIHBhZGRpbmctYm90dG9tOiAwLjI1cmVtO1xyXG4gICAgY29sb3I6ICRjb2xvci1mb3JtLWxhYmVsO1xyXG59XHJcblxyXG4vKipcclxuICogQWRkIGZvbnQgc2l6ZSAxMDAlIG9mIGZvcm0gZWxlbWVudCBhbmQgbWFyZ2luIDAgdG8gdGhlc2UgZWxlbWVudHNcclxuICovXHJcbmJ1dHRvbiwgaW5wdXQsIHNlbGVjdCwgdGV4dGFyZWEge1xyXG4gICAgZm9udC1mYW1pbHk6IGluaGVyaXQ7XHJcbiAgICBmb250LXNpemU6ICRmb250LXNpemUtbWVkO1xyXG4gICAgbWFyZ2luOiAwO1xyXG59XHJcblxyXG4vKipcclxuICogVGV4dCBhcmVhIGJhc2Ugc3R5bGVzXHJcbiAqL1xyXG50ZXh0YXJlYSB7XHJcblx0cmVzaXplOiBub25lO1xyXG59XHJcblxyXG4vKipcclxuICogSW5wdXQgIGFuZCB0ZXh0IGFyZWEgYmFzZSBzdHlsZXNcclxuICovXHJcbmlucHV0LCB0ZXh0YXJlYSB7XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIHBhZGRpbmc6IDAuNXJlbTtcclxuICAgIGJvcmRlcjogJGJvcmRlci10aGlja25lc3Mgc29saWQgJGNvbG9yLWZvcm0tYm9yZGVyO1xyXG4gICAgYmFja2dyb3VuZDogJGNvbG9yLWZvcm0tYmc7XHJcblxyXG4gICAgJjpmb2N1cyB7XHJcblx0XHRib3JkZXItY29sb3I6ICRjb2xvci1mb3JtLWJvcmRlci1mb2N1cztcclxuXHR9XHJcblxyXG4gICAgJjpkaXNhYmxlZCB7XHJcbiAgICAgICAgYm9yZGVyLWNvbG9yOiAkY29sb3ItbmV1dHJhbC1ncmF5LTA3O1xyXG4gICAgICAgIGJhY2tncm91bmQ6ICRjb2xvci1uZXV0cmFsLWdyYXktMDc7XHJcbiAgICAgICAgY29sb3I6ICRjb2xvci1uZXV0cmFsLWlyb247XHJcbiAgICB9XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBSZW1vdmUgd2Via2l0IGFwcGVhcmFuY2Ugc3R5bGVzIGZyb20gdGhlc2UgZWxlbWVudHNcclxuICovXHJcbmlucHV0W3R5cGU9dGV4dF0sIGlucHV0W3R5cGU9c2VhcmNoXSwgaW5wdXRbdHlwZT1cInNlYXJjaFwiXTo6LXdlYmtpdC1zZWFyY2gtY2FuY2VsLWJ1dHRvbiwgaW5wdXRbdHlwZT1cInNlYXJjaFwiXTo6LXdlYmtpdC1zZWFyY2gtZGVjb3JhdGlvbiwgaW5wdXRbdHlwZT11cmxdLCBpbnB1dFt0eXBlPW51bWJlcl0sIHRleHRhcmVhIHtcclxuXHQtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDaGVja2JveCBhbmQgcmFkaW8gYnV0dG9uIGJhc2Ugc3R5bGVzXHJcbiAqL1xyXG5pbnB1dFt0eXBlPVwiY2hlY2tib3hcIl0sXHJcbmlucHV0W3R5cGU9XCJyYWRpb1wiXSB7XHJcbiAgICB3aWR0aDogYXV0bztcclxuICAgIG1hcmdpbi1yaWdodDogMC4zcmVtO1xyXG4gICAgYm9yZGVyLWNvbG9yOiAkY29sb3ItZm9ybS1ib3JkZXI7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBTZWFyY2ggaW5wdXQgYmFzZSBzdHlsZXNcclxuICovXHJcbmlucHV0W3R5cGU9XCJzZWFyY2hcIl0ge1xyXG4gICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xyXG4gICAgYm9yZGVyLXJhZGl1czogMDtcclxufVxyXG5cclxuLyoqXHJcbiAqIFNlbGVjdFxyXG4gKiAxKSBSZW1vdmUgZGVmYXVsdCBzdHlsaW5nXHJcbiAqL1xyXG5zZWxlY3Qge1xyXG4gICAgZGlzcGxheTogYmxvY2s7XHJcblx0Zm9udC1zaXplOiAkZm9udC1zaXplLW1lZDtcclxuXHR3aWR0aDogMTAwJTtcclxuICAgIGJvcmRlcjogJGJvcmRlci10aGlja25lc3Mgc29saWQgJGNvbG9yLWZvcm0tYm9yZGVyO1xyXG4gICAgYm9yZGVyLXJhZGl1czogMDtcclxuICAgIHBhZGRpbmc6IDAuNXJlbTtcclxuICAgIGhlaWdodDogMnJlbTtcclxuICAgIGJhY2tncm91bmQ6ICRjb2xvci1mb3JtLWJnO1xyXG4gICAgY29sb3I6ICRjb2xvci1mb3JtO1xyXG5cclxuXHQmOmZvY3VzIHtcclxuXHRcdGJvcmRlci1jb2xvcjogJGNvbG9yLWZvcm0tYm9yZGVyLWZvY3VzO1xyXG5cdH1cclxufVxyXG4iLCIvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcXFxyXG4gICAgI0JVVFRPTlNcclxuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cclxuXHJcbi8qKlxyXG4gKiBCdXR0b24gYW5kIHN1Ym1pdCBpbnB1dHMgcmVzZXRcclxuICogMSkgVGhlc2Ugc2hvdWxkIGJlIHN0eWxlZCB1c2luZyBjLWJ0blxyXG4gKi9cclxuYnV0dG9uIHtcclxuXHRjdXJzb3I6IHBvaW50ZXI7XHJcbn1cclxuIiwiLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qXFxcclxuICAgICNNQUlOIEVMRU1FTlRcclxuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cclxuXHJcbi8qKlxyXG4gKiBNYWluIGVsZW1lbnRcclxuICovXHJcbltyb2xlPW1haW5dIHtcclxuXHRkaXNwbGF5OiBibG9jaztcclxuXHRmbGV4OiAxIDAgYXV0bztcclxufVxyXG4iLCIvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcXFxyXG4gICAgI01FRElBXHJcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXHJcblxyXG4vKipcclxuICogUmVzcG9uc2l2ZSBpbWFnZSBzdHlsaW5nXHJcbiAqIDEpIEFsbG93cyBmb3IgaW1hZ2VzIHRvIGZsZXggd2l0aCB2YXJ5aW5nIHNjcmVlbiBzaXplXHJcbiAqL1xyXG5pbWcge1xyXG5cdG1heC13aWR0aDogMTAwJTtcclxuXHRoZWlnaHQ6IGF1dG87XHJcbn1cclxuIiwiLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qXFxcclxuICAgICNURVhUXHJcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXHJcblxyXG4vKipcclxuICogUGFyYWdyYXBoIGJhc2Ugc3R5bGVzXHJcbiAqL1xyXG5wIHtcclxuXHRtYXJnaW4tYm90dG9tOiAkc3BhY2luZztcclxufVxyXG5cclxuLyoqXHJcbiAqIEJsb2NrcXVvdGUgYmFzZSBzdHlsZXNcclxuICovXHJcbmJsb2NrcXVvdGUge1xyXG4gICAgZm9udC1zdHlsZTppdGFsaWM7XHJcbiAgICBib3JkZXItbGVmdDogMnB4IHNvbGlkICRjb2xvci1icmFuZC1zZWNvbmRhcnk7XHJcbiAgICBjb2xvcjogJGNvbG9yLW5ldXRyYWwtZ3JheTtcclxuXHRwYWRkaW5nLWxlZnQ6IDFyZW07XHJcblx0bWFyZ2luLWJvdHRvbTogJHNwYWNpbmc7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBIb3Jpem9udGFsIHJ1bGUgYmFzZSBzdHlsZXNcclxuICovXHJcbmhyIHtcclxuXHRib3JkZXI6IDA7XHJcbiAgICBoZWlnaHQ6IDFweDtcclxuICAgIGJhY2tncm91bmQ6ICRjb2xvci1uZXV0cmFsLW9mZi13aGl0ZTtcclxuICAgIG1hcmdpbjogMXJlbSAwO1xyXG59XHJcblxyXG4vKipcclxuICogU2VsZWN0aW9uIHN0eWxlc1xyXG4gKi9cclxuOjotbW96LXNlbGVjdGlvbiB7XHJcblx0Y29sb3I6ICRjb2xvci10ZXh0LWhpZ2hsaWdodDtcclxuXHRiYWNrZ3JvdW5kOiAkY29sb3ItdGV4dC1oaWdobGlnaHQtYmc7IC8qIEdlY2tvIEJyb3dzZXJzICovXHJcbn1cclxuXHJcbjo6c2VsZWN0aW9uIHtcclxuXHRjb2xvcjogJGNvbG9yLXRleHQtaGlnaGxpZ2h0O1xyXG5cdGJhY2tncm91bmQ6ICRjb2xvci10ZXh0LWhpZ2hsaWdodC1iZzsgLyogV2ViS2l0L0JsaW5rIEJyb3dzZXJzICovXHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDb2RlIGJhc2Ugc3R5bGVzXHJcbiAqL1xyXG5jb2RlIHtcclxuXHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcblx0YmFja2dyb3VuZDogJGNvbG9yLW5ldXRyYWwtZ3JheS0wMjtcclxuXHRib3JkZXI6IDFweCBzb2xpZCAkY29sb3ItbmV1dHJhbC1vZmYtd2hpdGU7XHJcblx0cGFkZGluZzogLjJyZW0gLjVyZW07XHJcbiAgICBsaW5lLWhlaWdodDogMS4yO1xyXG4gICAgZm9udC1zaXplOiAuODVyZW07XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBQcmVmb3JtYXR0ZWQgdGV4dCBiYXNlIHN0eWxlc1xyXG4gKi9cclxucHJlIHtcclxuXHRiYWNrZ3JvdW5kOiAkY29sb3ItbmV1dHJhbC1ncmF5LTAyO1xyXG5cdGJvcmRlcjogMXB4IHNvbGlkICRjb2xvci1uZXV0cmFsLW9mZi13aGl0ZTtcclxuXHRmb250LXNpemU6ICRmb250LXNpemUtbWVkO1xyXG5cdHBhZGRpbmc6IDFyZW07XHJcbiAgICBvdmVyZmxvdy14OiBhdXRvO1xyXG5cclxuXHQvKipcclxuXHQgKiBSZW1vdmUgYm9yZGVyIGZyb20gY29kZSB3aXRoaW4gcHJlZm9ybWF0dGVkIHRleHQgYmxvY2tcclxuXHQgKi9cclxuXHRjb2RlIHtcclxuXHRcdGJvcmRlcjogMDtcclxuXHR9XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDb2RlIHdpdGggbGFuZ3VhZ2VzIGFzc29jaWF0ZWQgd2l0aCB0aGVtXHJcbiAqIDEpIE92ZXJyaWRlIFByaXNtIHN5c2xlcyBmb3IgY29kZSBibG9ja3Mgd2l0aCBsYW5ndWFnZVxyXG4gKi9cclxuY29kZVtjbGFzcyo9XCJsYW5ndWFnZS1cIl0sXHJcbnByZVtjbGFzcyo9XCJsYW5ndWFnZS1cIl0ge1xyXG4gICAgZm9udC1mYW1pbHk6bW9ub3NwYWNlICFpbXBvcnRhbnQ7XHJcbn1cclxuIiwiLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qXFxcclxuICAgICNUQUJMRVNcclxuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cclxuXHJcbi8qKlxyXG4gKiBUYWJsZVxyXG4gKi9cclxudGFibGUge1xyXG4gICAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTtcclxuICAgIGJvcmRlci1zcGFjaW5nOiAwO1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBUYWJsZSBoZWFkZXIgY2VsbFxyXG4gKi9cclxudGgge1xyXG4gICAgdGV4dC1hbGlnbjogbGVmdDtcclxufVxyXG5cclxuLyoqXHJcbiAqIFRhYmxlIHJvd1xyXG4gKi9cclxudHIge1xyXG4gICAgdmVydGljYWwtYWxpZ246IHRvcDtcclxufVxyXG4iLCIvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcXFxyXG4gICAgI0xBWU9VVFxyXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xyXG5cclxuLyoqXHJcbiAqIExheW91dCBDb250YWluZXJcclxuICogMSkgQ2FwcyB0aGUgd2lkdGggb2YgdGhlIGNvbnRlbnQgdG8gdGhlIG1heGltdW0gd2lkdGhcclxuICogICAgYW5kIGNlbnRlcnMgdGhlIGNvbnRhaW5lclxyXG4gKi9cclxuLmwtY29udGFpbmVyIHtcclxuXHRtYXgtd2lkdGg6ICRsLW1heC13aWR0aDtcclxuXHRwYWRkaW5nOiAwICRzcGFjaW5nO1xyXG5cdG1hcmdpbjogMCBhdXRvO1xyXG5cclxuXHRAbWVkaWEgYWxsIGFuZCAobWluLXdpZHRoOiAkYnAtbGFyZ2UpIHtcclxuXHRcdHBhZGRpbmc6IDAgJHNwYWNpbmctbGFyZ2U7XHJcblx0fVxyXG59XHJcblxyXG4ubC1jb250YWluZXItLW5hcnJvdyB7XHJcblx0bWF4LXdpZHRoOiAkbC1tYXgtd2lkdGgtbmFycm93O1xyXG59XHJcblxyXG4vKipcclxuICpcclxuICogMSkgVGhpcyBjYXBzIHRoZSB3aWR0aCBvZiB0ZXh0IHBhc3NhZ2VzXHJcbiAqICAgIHRvIGFjaGlldmUgYSBjb21mb3J0YWJsZSBsaW5lIGxlbmd0aFxyXG4gKi9cclxuLmwtbGluZWxlbmd0aC1jb250YWluZXIge1xyXG4gICAgbWF4LXdpZHRoOiAkbC1saW5lbGVuZ3RoLXdpZHRoO1xyXG59XHJcblxyXG4ubC1iYW5kIHtcclxuXHRiYWNrZ3JvdW5kOiAkY29sb3ItbmV1dHJhbC1ncmF5LTAyO1xyXG5cdHBhZGRpbmc6IDJyZW0gMXJlbTtcclxufVxyXG5cclxuLyoqXHJcbiAqIDIgY29sdW1uIGxheW91dFxyXG4gKi9cclxuLmwtcGFnZS1sYXlvdXQtLXR3by1jb2x1bW4ge1xyXG5cdGRpc3BsYXk6IGZsZXg7XHJcblx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuXHJcblx0QG1lZGlhIGFsbCBhbmQgKG1pbi13aWR0aDogJGJwLWxhcmdlKSB7XHJcblx0XHRmbGV4LWRpcmVjdGlvbjogcm93O1xyXG5cdH1cclxufVxyXG5cclxuLmwtcGFnZS1sYXlvdXRfX21haW4ge1xyXG5cdC5sLXBhZ2UtbGF5b3V0LS10d28tY29sdW1uICYge1xyXG5cdFx0QG1lZGlhIGFsbCBhbmQgKG1pbi13aWR0aDogJGJwLWxhcmdlKSB7XHJcblx0XHRcdHdpZHRoOiA3MCU7XHJcblx0XHRcdHBhZGRpbmctcmlnaHQ6ICRzcGFjaW5nO1xyXG5cdFx0fVxyXG5cdH1cclxufVxyXG5cclxuLyoqXHJcbiAqIFNpZGViYXJcclxuICovXHJcbi5sLXBhZ2UtbGF5b3V0X19zZWNvbmRhcnkge1xyXG5cclxuXHQubC1wYWdlLWxheW91dC0tdHdvLWNvbHVtbiAmIHtcclxuXHRcdEBtZWRpYSBhbGwgYW5kIChtaW4td2lkdGg6ICRicC1sYXJnZSkge1xyXG5cdFx0XHR3aWR0aDogMzAlO1xyXG5cdFx0XHRtYXJnaW4tbGVmdDogMnJlbTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC5sLXBhZ2UtbGF5b3V0LS1yZXZlcnNlZCAmIHtcclxuXHRcdG1hcmdpbi1ib3R0b206IDJyZW07XHJcblxyXG5cdFx0QG1lZGlhIGFsbCBhbmQgKG1pbi13aWR0aDogJGJwLWxhcmdlKSB7XHJcblx0XHRcdG9yZGVyOiAxO1xyXG5cdFx0XHRtYXJnaW4tYm90dG9tOiAwO1xyXG5cdFx0fVxyXG5cdH1cclxufVxyXG5cclxuXHJcblxyXG4vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcXFxyXG4gICAgI0dSSURcclxuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cclxuXHJcbi8qKlxyXG4gKiBHcmlkIENvbnRhaW5lclxyXG4gKi9cclxuLmwtZ3JpZCB7XHJcblx0ZGlzcGxheTogZmxleDtcclxuXHRmbGV4LXdyYXA6IHdyYXA7XHJcblxyXG5cdEBzdXBwb3J0cyAoZGlzcGxheTogZ3JpZCkge1xyXG5cdFx0ZGlzcGxheTogZ3JpZDtcclxuXHRcdGdyaWQtZ2FwOiAkc3BhY2luZy1sYXJnZTtcclxuXHRcdGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KGF1dG8tZmlsbCwgbWlubWF4KDMyMHB4LCAxZnIpICk7XHJcblx0XHRtYXJnaW46IDA7XHJcblx0fVxyXG59XHJcblxyXG4vKipcclxuICogR3JpZCBJdGVtXHJcbiAqL1xyXG4ubC1ncmlkX19pdGVtIHtcclxuXHRkaXNwbGF5OiBmbGV4O1xyXG59XHJcbiIsIi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlxcXHJcbiAgICAjQlVUVE9OU1xyXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xyXG5cclxuLyoqXHJcbiAqXHJcbiAqIDEpIEJ1dHRvbiBvciBsaW5rIHRoYXQgaGFzIGZ1bmN0aW9uYWxpdHkgdG8gaXRcclxuICovXHJcbi5jLWJ0biB7XHJcblx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG5cdGJvcmRlcjogJGJvcmRlci10aGlja25lc3Mgc29saWQgJGNvbG9yLWJ0bi1wcmltYXJ5LWJvcmRlcjtcclxuXHRiYWNrZ3JvdW5kOiAkY29sb3ItYnJhbmQtcHJpbWFyeTtcclxuXHRjb2xvcjogJGNvbG9yLW5ldXRyYWwtd2hpdGU7XHJcblx0bGluZS1oZWlnaHQ6IDE7XHJcblx0cGFkZGluZzogMXJlbSAycmVtO1xyXG5cdGJvcmRlcjogMDtcclxuXHR0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xyXG5cdHRleHQtYWxpZ246IGNlbnRlcjtcclxuXHR0cmFuc2l0aW9uOiBhbGwgJGFuaW0tZmFkZS1xdWljayAkYW5pbS1lYXNlO1xyXG5cclxuXHQmOmhvdmVyLCAmOmZvY3VzIHtcclxuXHRcdGNvbG9yOiAkY29sb3ItbmV1dHJhbC13aGl0ZTtcclxuXHRcdGJhY2tncm91bmQ6ICRjb2xvci1icmFuZC1wcmltYXJ5LWRhcms7XHJcblx0fVxyXG59XHJcblxyXG4uYy1idG4tLWJhcmUge1xyXG5cdGJhY2tncm91bmQ6IG5vbmU7XHJcblx0Y29sb3I6ICRjb2xvci1icmFuZC1wcmltYXJ5O1xyXG5cdGJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50O1xyXG5cclxuXHQmOmhvdmVyLCAmOmZvY3VzIHtcclxuXHRcdGJhY2tncm91bmQ6IG5vbmU7XHJcblx0XHRjb2xvcjogJGNvbG9yLWJyYW5kLXByaW1hcnk7XHJcblx0XHRib3JkZXItY29sb3I6ICRjb2xvci1icmFuZC1wcmltYXJ5O1xyXG5cdH1cclxufVxyXG5cclxuLypcclxuICogSW5uZXIgY29udGFpbmVyIHdyYXBwZXJcclxuICogMSkgQ29udGFpbmVyIGlzIGRpcmVjdCBkZWNlbmRhbnQgb2YgPGJ1dHRvbj4sIHNpbmNlIHRoZXJlJ3NcclxuICogICAgYSBidWcgd2l0aCBhcHBseWluZyBmbGV4Ym94IGRpcmVjdGx5IHRvIGEgPGJ1dHRvbj5cclxuICogMikgT25seSBuZWVkcyB0byBiZSB1c2VkIGZvciBidXR0b25zIGNvbnRhaW5pbmcgYm90aCBpY29ucyBhbmQgdGV4dFxyXG4gKi9cclxuLmMtYnRuX19pbm5lciB7XHJcblx0ZGlzcGxheTogZmxleDtcclxuXHRhbGlnbi1pdGVtczogY2VudGVyO1xyXG5cdGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG59XHJcblxyXG4vKlxyXG4gKiBCdXR0b24gaWNvblxyXG4gKi9cclxuLmMtYnRuX19pY29uIHtcclxuXHR3aWR0aDogMXJlbTtcclxuXHRoZWlnaHQ6IDFyZW07XHJcblx0ZmlsbDogJGNvbG9yLWJ0bi1wcmltYXJ5O1xyXG5cdHRyYW5zaXRpb246IGZpbGwgJGFuaW0tZmFkZS1xdWljayAkYW5pbS1lYXNlO1xyXG59XHJcbiIsIi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlxcXHJcbiAgICNERUZJTklUSU9OIExJU1RcclxuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cclxuXHJcbi8qKlxyXG4qIDEpIERlZmluaXRpb24gbGlzdCAoYGRsYCkgdGhhdCBjb250YWlucyBhIGRlZmluaXRpb24gdGVybSAoYGR0YCkgYW5kIGEgZGVmaW5pdGlvbiBkZXNjcmlwdGlvbiAoYGRkYClcclxuKi9cclxuLmMtZGVmaW5pdGlvbi1saXN0IHtcclxuXHRtYXJnaW46IDAgMCAxcmVtO1xyXG59XHJcblxyXG4vKipcclxuKiBEZWZpbml0aW9uIGxpc3QgaXRlbVxyXG4qL1xyXG4uYy1kZWZpbml0aW9uLWxpc3RfX2l0ZW0ge1xyXG5cdGRpc3BsYXk6IGZsZXg7XHJcblxyXG5cdEBtZWRpYSBhbGwgYW5kIChtaW4td2lkdGg6ICRicC1sYXJnZSkge1xyXG5cdFx0anVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xyXG5cdH1cclxufVxyXG5cclxuLyoqXHJcbiogRGVmaW5pdGlvbiBsaXN0IHRlcm1cclxuKi9cclxuLmMtZGVmaW5pdGlvbi1saXN0X190ZXJtIHtcclxuICAgZm9udC13ZWlnaHQ6IGJvbGQ7XHJcbiAgIG1hcmdpbi1ib3R0b206IDAuMjVyZW07XHJcbiAgIHdpZHRoOiA1cmVtO1xyXG5cclxuICAgQG1lZGlhIGFsbCBhbmQgKG1pbi13aWR0aDogJGJwLWxhcmdlKSB7XHJcblx0ICAgd2lkdGg6IGF1dG87XHJcbiAgIH1cclxufVxyXG5cclxuLyoqXHJcbiogRGVmaW5pdGlvbiBsaXN0IGRlc2NyaXB0aW9uXHJcbiovXHJcbi5jLWRlZmluaXRpb24tbGlzdF9fZGVzY3JpcHRpb24ge1xyXG5cclxufVxyXG4iLCIvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcXFxyXG4gICAjREVGSU5JVElPTiBMSVNUIExJU1RcclxuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cclxuXHJcbi8qKlxyXG4qIDEpIExpc3Qgb2YgZGVmaW5pdGlvbiBsaXN0c1xyXG4qL1xyXG5cclxuLyoqXHJcbiAqIERlZmluaXRpb24gbGlzdCBsaXN0IGl0ZW1cclxuICovXHJcbi5jLWRlZmluaXRpb24tbGlzdC1saXN0X19pdGVtIHtcclxuXHQuYy1kZWZpbml0aW9uLWxpc3QtbGlzdC0tbGluZWQgJiB7XHJcblx0XHRtYXJnaW4tYm90dG9tOiAxcmVtO1xyXG5cdFx0Ym9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICRjb2xvci1uZXV0cmFsLW9mZi13aGl0ZTtcclxuXHR9XHJcbn1cclxuIiwiLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qXFxcclxuXHQjSEVSTyBCTE9DS1xyXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xyXG5cclxuLyoqXHJcbiAqIDEpIFNpdCBoZXJvIGZsdXNoIHdpdGggaGVhZGVyLiBOb3JtYWxseSB3ZSB3b3VsZG4ndCBcclxuICogICAgZG8gdGhpcyBhbmQgaGFuZGxlIG1hcmdpbiB1c2luZyB1dGlsaXR5IGNsYXNzZXMsXHJcbiAqICAgIGJ1dCB3ZSdyZSB0YWtpbmcgYSBzaG9ydGN1dCBmb3IgYSBkZW1vLlxyXG4gKi9cclxuLmMtaGVybyB7XHJcblx0ZGlzcGxheTogYmxvY2s7XHJcblx0cG9zaXRpb246IHJlbGF0aXZlO1xyXG5cdG1hcmdpbjogLTJyZW0gMCAycmVtOyAvKiAxICovXHJcbn1cclxuXHJcbi8qKlxyXG4gKiBIZXJvIEltYWdlXHJcbiAqIDEpIFRoaXMgaXMgdGhlIHByaW1hcnkgaGVybyBpbWFnZSB0aGF0IHJ1bnMgZnVsbC1ibGVlZCBhY3Jvc3MgdGhlIGxheW91dFxyXG4gKi9cclxuLmMtaGVyb19faW1nIHtcclxuXHRkaXNwbGF5OiBibG9jaztcclxuXHR3aWR0aDogMTAwJTtcclxuXHRvYmplY3QtZml0OiBjb3ZlcjtcclxuXHRtYXgtaGVpZ2h0OiA3MHZoO1xyXG5cdG92ZXJmbG93OiBoaWRkZW47XHJcbn1cclxuXHJcbi5jLWhlcm9fX2JvZHkge1xyXG5cdGJhY2tncm91bmQ6ICRjb2xvci1icmFuZC1zZWNvbmRhcnk7XHJcblx0cGFkZGluZzogJHNwYWNpbmc7XHJcblxyXG5cdEBtZWRpYSBhbGwgYW5kIChtaW4td2lkdGg6ICRicC1zbWFsbC0yKSB7XHJcblx0XHRwYWRkaW5nOiAwO1xyXG5cdFx0ZGlzcGxheTogZmxleDtcclxuXHRcdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcblx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XHJcblx0XHR0b3A6IDA7XHJcblx0XHRyaWdodDogMDtcclxuXHRcdGJvdHRvbTogMDtcclxuXHRcdGxlZnQ6IDA7XHJcblx0XHRoZWlnaHQ6IDEwMCU7XHJcblx0XHR3aWR0aDogMTAwJTtcclxuXHRcdGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudChcclxuXHRcdFx0dG8gYm90dG9tLFxyXG5cdFx0XHRyZ2JhKDAsIDAsIDAsIDApIDAsXHJcblx0XHRcdHJnYmEoMCwgMCwgMCwgMCkgMjAlLFxyXG5cdFx0XHQjMDAwIDEwMCVcclxuXHRcdCk7XHJcblx0fVxyXG59XHJcblxyXG4vKipcclxuICogSGVybyBIZWFkbGluZVxyXG4gKiAxKSBUaGlzIHNpdHMgb3ZlcnRvcCBvZiB0aGUgaGVybyBpbWFnZSB3aGVuIHNwYWNlIHBlcm1pdHNcclxuICovXHJcbi5jLWhlcm9fX2hlYWRsaW5lIHtcclxuXHR0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xyXG5cdGZvbnQtc2l6ZTogJGZvbnQtc2l6ZS14bDtcclxuXHRiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3ItYnJhbmQtc2Vjb25kYXJ5O1xyXG5cdGNvbG9yOiAkY29sb3ItbmV1dHJhbC13aGl0ZTtcclxuXHR0cmFuc2l0aW9uOiBhbGwgJGFuaW0tZmFkZS1xdWljayAkYW5pbS1lYXNlO1xyXG5cclxuXHRAbWVkaWEgYWxsIGFuZCAobWluLXdpZHRoOiAkYnAtc21hbGwtMikge1xyXG5cdFx0cGFkZGluZzogMCAwLjRyZW07XHJcblx0XHRmb250LXNpemU6ICRmb250LXNpemUteHhsO1xyXG5cdH1cclxufVxyXG4iLCJcclxuLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qXFxcclxuXHQjVE9VVCBCTE9DS1xyXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xyXG5cclxuLyoqXHJcbiAqIDEpIFRoZSB0b3V0IGJsb2NrIGNvbnRhaW5zIGFuIGltYWdlIGFuZCBoZWFkbGluZSBvdmVybGF5ZWQgb3ZlciB0aGUgaW1hZ2UuXHJcbiAqL1xyXG4uYy10b3V0IHtcclxuICAgIGRpc3BsYXk6IGJsb2NrO1xyXG5cdHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgICBtYXgtd2lkdGg6IDEwMjRweDtcclxufVxyXG5cclxuLyoqXHJcbiAqICBUb3V0IGltYWdlXHJcbiAqL1xyXG5cclxuIC5jLXRvdXRfX2ltZyB7XHJcblx0IGRpc3BsYXk6IGJsb2NrO1xyXG4gfVxyXG5cclxuLyoqXHJcbiAqICBUb3V0IGhlYWRsaW5lXHJcbiAqL1xyXG4uYy10b3V0X19oZWFkbGluZSB7XHJcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICBib3R0b206IDA7XHJcbiAgICBsZWZ0OiAwO1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcblx0dGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcclxuXHRsZXR0ZXItc3BhY2luZzogMXB4O1xyXG4gICAgY29sb3I6ICRjb2xvci1uZXV0cmFsLXdoaXRlO1xyXG4gICAgcGFkZGluZzogMC41cmVtO1xyXG4gICAgZm9udC1zaXplOiAxLjRyZW07XHJcbiAgICB0cmFuc2l0aW9uOiBhbGwgJGFuaW0tZmFkZS1xdWljayAkYW5pbS1lYXNlO1xyXG5cclxuICAgIC5jLXRvdXQ6aG92ZXIgJiwgLmMtdG91dDpmb2N1cyAmIHtcclxuICAgICAgICBwYWRkaW5nLWJvdHRvbTogMnJlbTtcclxuICAgICAgICBiYWNrZ3JvdW5kOiAkY29sb3ItYnJhbmQtcHJpbWFyeTtcclxuICAgIH1cclxufVxyXG4iLCIvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcXFxyXG4gICAgI1NFQ1RJT04gSEVBREVSXHJcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXHJcbi8qKlxyXG4gKiAxKSBBIGdyb3VwIG9mIHRleHQgd2l0aCBhIHRpdGxlIHRoYXQgaGVhZGxpbmVzIGEgc2VjdGlvblxyXG4gKi9cclxuIC5jLXNlY3Rpb25fX2hlYWRlciB7XHJcbiAgICAgZGlzcGxheTogZmxleDtcclxuICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgICBtYXJnaW4tYm90dG9tOiAxcmVtO1xyXG5cclxuICAgICAmOmFmdGVyIHtcclxuICAgICAgICAgY29udGVudDogJyc7XHJcbiAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgICAgICBmbGV4OiAxO1xyXG4gICAgICAgICBoZWlnaHQ6IDJweDtcclxuICAgICAgICAgbWFyZ2luLWxlZnQ6IDFyZW07XHJcbiAgICAgICAgIGJhY2tncm91bmQ6ICRjb2xvci1icmFuZC1zZWNvbmRhcnk7XHJcbiAgICAgfVxyXG4gfVxyXG5cclxuIC5jLXNlY3Rpb25fX3RpdGxlIHtcclxuICAgICBmb250LXNpemU6ICRmb250LXNpemUtbGFyZ2U7XHJcbiB9XHJcbiIsIi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlxcXHJcbiAgICAjU1RBQ0tFRCBCTE9DS1xyXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xyXG5cclxuLyoqXHJcbiAqIDEpIEEgbGluayBibG9jayBjb25zaXN0aW5nIG9mIG1lZGlhLCBoZWFkbGluZSwgYW5kIGRlc2NyaXB0aW9uIGFsbCBzdGFja2VkIG9uIHRvcFxyXG4gKiBvZiBlYWNoIG90aGVyXHJcbiAqIDIpIENhcHBlZCBmb3IgZGVtbyBwdXJwb3Nlc1xyXG4gKi9cclxuLmMtc3RhY2tlZC1ibG9jayB7XHJcblx0ZGlzcGxheTogZmxleDtcclxuXHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG5cdG1heC13aWR0aDogNjAwcHg7IC8qIDIgKi9cclxuXHR0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gJGFuaW0tZmFkZS1xdWljayAkYW5pbS1lYXNlO1xyXG5cclxuXHQgJjpob3ZlciwgJjpmb2N1cyB7XHJcblx0XHR0cmFuc2Zvcm06IHNjYWxlKDEuMDMpO1xyXG5cdCB9XHJcbn1cclxuXHJcbi5jLXN0YWNrZWQtYmxvY2tfX2JvZHkge1xyXG4gICAgZmxleDogMTtcclxufVxyXG5cclxuLmMtc3RhY2tlZC1ibG9ja19fdGl0bGUge1xyXG5cdHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XHJcblx0bGV0dGVyLXNwYWNpbmc6IDFweDtcclxuXHRjb2xvcjogJGNvbG9yLWJyYW5kLXByaW1hcnk7XHJcblx0dHJhbnNpdGlvbjogY29sb3IgJGFuaW0tZmFkZS1xdWljayAkYW5pbS1lYXNlO1xyXG5cclxuXHQuYy1zdGFja2VkLWJsb2NrOmhvdmVyICYsIC5jLXN0YWNrZWQtYmxvY2s6Zm9jdXMgJiB7XHJcblx0XHRjb2xvcjogJGNvbG9yLWJyYW5kLXNlY29uZGFyeTtcclxuXHR9XHJcbn1cclxuXHJcbi5jLXN0YWNrZWQtYmxvY2tfX2V4Y2VycHQge1xyXG5cdG1hcmdpbi1ib3R0b206IDA7XHJcblx0Y29sb3I6ICRjb2xvci1uZXV0cmFsLWdyYXk7XHJcbn1cclxuXHJcbi5jLXN0YWNrZWQtYmxvY2tfX21ldGEge1xyXG5cdGNvbG9yOiAkY29sb3ItYnJhbmQtcHJpbWFyeTtcclxuICAgIGZvbnQtc2l6ZTogJGZvbnQtc2l6ZS1tZWQtMjtcclxuXHRmb250LWZhbWlseTogJGZvbnQtZmFtaWx5LXNlY29uZGFyeTtcclxuXHRtYXJnaW4tYm90dG9tOiAwO1xyXG5cdHRyYW5zaXRpb246IGNvbG9yICRhbmltLWZhZGUtcXVpY2sgJGFuaW0tZWFzZTtcclxuXHJcblx0LmMtc3RhY2tlZC1ibG9jazpob3ZlciAmLCAuYy1zdGFja2VkLWJsb2NrOmZvY3VzICYge1xyXG5cdFx0Y29sb3I6ICRjb2xvci1icmFuZC1zZWNvbmRhcnk7XHJcblx0fVxyXG59XHJcblxyXG4uYy1zdGFja2VkLWJsb2NrX19iYWRnZSB7XHJcbiAgICBkaXNwbGF5OiBibG9jaztcclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgIHRvcDogMDtcclxuICAgIHJpZ2h0OiAwO1xyXG4gICAgcGFkZGluZzogMC41cmVtO1xyXG4gICAgZm9udC1mYW1pbHk6ICRmb250LWZhbWlseS1zZWNvbmRhcnk7XHJcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xyXG4gICAgY29sb3I6ICRjb2xvci1uZXV0cmFsLXdoaXRlO1xyXG4gICAgYmFja2dyb3VuZDogJGNvbG9yLWJyYW5kLXNlY29uZGFyeTtcclxufVxyXG5cclxuLmMtc3RhY2tlZC1ibG9ja19fb3B0aW9uYWwge1xyXG4gICAgbWFyZ2luLWxlZnQ6IDAuNXJlbTtcclxuICAgIGNvbG9yOiAkY29sb3ItbmV1dHJhbC1pcm9uO1xyXG4gICAgZm9udC1mYW1pbHk6ICRmb250LWZhbWlseS1zZWNvbmRhcnk7XHJcbiAgICBmb250LXNpemU6ICRmb250LXNpemUtc20tMjtcclxuICAgIHRleHQtZGVjb3JhdGlvbjogbGluZS10aHJvdWdoO1xyXG59XHJcbiIsIi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlxcXHJcbiAgICAjU1RSSVBFXHJcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXHJcblxyXG4vKipcclxuICogMSkgQmxvY2sgdGhhdCBjb250YWlucyBhIHJpZ2h0IGFuZCBsZWZ0IGNvbHVtbiBvZiB0ZXh0IGFuZCBvdGhlciBwb3NzaWJsZSBjb21wb25lbnRzXHJcbiAqL1xyXG4uYy1zdHJpcGUge1xyXG5cdHBhZGRpbmc6IDJyZW0gMDtcclxuXHJcblx0QG1lZGlhIGFsbCBhbmQgKG1pbi13aWR0aDogJGJwLXNtYWxsLTIpIHtcclxuXHRcdGRpc3BsYXk6IGZsZXg7XHJcblx0fVxyXG5cclxuXHQuYy1zdHJpcGUtbGlzdC0tY29uZGVuc2VkICYge1xyXG5cdFx0cGFkZGluZzogMXJlbSAwO1xyXG5cdH1cclxufVxyXG5cclxuLyoqXHJcbiAqIFN0cmlwZSBsZWYgY29udGFpbmVyXHJcbiAqIDEpIENvbnRhaW5zIGVsZW1lbnRzIHRoYXQgZGlzcGxheSBvbiB0aGUgbGVmdCBzaWRlIG9mIHRoZSBzdHJpcGVcclxuICovXHJcbi5jLXN0cmlwZV9fbGVmdC1jb250YWluZXIge1xyXG4gICAgbWFyZ2luLXJpZ2h0OiAycmVtO1xyXG5cclxuXHRAbWVkaWEgYWxsIGFuZCAobWluLXdpZHRoOiAkYnAtc21hbGwtMikge1xyXG5cdFx0d2lkdGg6IDIwJTtcclxuXHR9XHJcblxyXG5cdC5jLXN0cmlwZS1saXN0LS1jb25kZW5zZWQgJiB7XHJcblx0XHRkaXNwbGF5OiBub25lO1xyXG5cdH1cclxufVxyXG5cclxuLmMtc3RyaXBlX19saW5rIHtcclxuXHRkaXNwbGF5OiBibG9jaztcclxuXHJcblx0QG1lZGlhIGFsbCBhbmQgKG1pbi13aWR0aDogJGJwLXNtYWxsLTIpIHtcclxuXHRcdG1heC13aWR0aDogMTByZW07XHJcblx0fVxyXG59XHJcblxyXG4vKipcclxuICogU3RyaXBlIHJpZ2h0IGNvbnRhaW5lclxyXG4gKiAxKSBDb250YWlucyBlbGVtZW50cyB0aGF0IGRpc3BsYXkgb24gdGhlIHJpZ2h0IHNpZGUgb2YgdGhlIHN0cmlwZVxyXG4gKi9cclxuLmMtc3RyaXBlX19yaWdodC1jb250YWluZXIge1xyXG5cdGZsZXg6IDE7XHJcblxyXG5cdEBtZWRpYSBhbGwgYW5kIChtaW4td2lkdGg6ICRicC1zbWFsbC0yKSB7XHJcblx0ICAgIGRpc3BsYXk6IGZsZXg7XHJcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xyXG5cdH1cclxufVxyXG5cclxuLmMtc3RyaXBlX190aXRsZSB7XHJcblx0bWFyZ2luLWJvdHRvbTogMnJlbTtcclxuXHJcblx0QG1lZGlhIGFsbCBhbmQgKG1pbi13aWR0aDogJGJwLXNtYWxsLTIpIHtcclxuXHRcdG1hcmdpbi1ib3R0b206IDA7XHJcblx0XHRtYXJnaW4tcmlnaHQ6IDJyZW07XHJcblx0XHR3aWR0aDogNDAlO1xyXG5cdH1cclxufVxyXG5cclxuLmMtc3RyaXBlX19tZXRhIHtcclxuXHJcblx0QG1lZGlhIGFsbCBhbmQgKG1pbi13aWR0aDogJGJwLXNtYWxsLTIpIHtcclxuXHRcdG1hcmdpbi1sZWZ0OiAycmVtO1xyXG5cdFx0bWFyZ2luLWJvdHRvbTogMi4yNXJlbTtcclxuXHRcdHdpZHRoOiAyMCU7XHJcblx0XHR0ZXh0LWFsaWduOiByaWdodDtcclxuXHRcdGZsZXg6IDE7XHJcblx0fVxyXG59XHJcblxyXG4uYy1zdHJpcGVfX21ldGEtbGFiZWwge1xyXG5cdGZvbnQtd2VpZ2h0OiBib2xkO1xyXG5cdG1hcmdpbi1ib3R0b206IDAuNzVyZW07XHJcbn1cclxuXHJcbi5jLXN0cmlwZV9fbWV0YS1zcGFuIHtcclxuXHRmb250LWZhbWlseTogJGZvbnQtZmFtaWx5LXNlY29uZGFyeTtcclxuXHRjb2xvcjogJGNvbG9yLWJyYW5kLXByaW1hcnk7XHJcblx0Zm9udC1zaXplOiAkZm9udC1zaXplLW1lZC0yO1xyXG59XHJcblxyXG5cclxuLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qXFxcclxuICAgICNTVFJJUEUgTElTVFxyXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xyXG5cclxuLyoqXHJcbiAqIDEpIEJsb2NrIHRoYXQgY29udGFpbnMgYSByaWdodCBhbmQgbGVmdCBjb2x1bW4gb2YgdGV4dCBhbmQgb3RoZXIgcG9zc2libGUgY29tcG9uZW50c1xyXG4gKi9cclxuIC5jLXN0cmlwZS1saXN0X19pdGVtIHtcclxuICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJGNvbG9yLW5ldXRyYWwtb2ZmLXdoaXRlO1xyXG4gfVxyXG4iLCIvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcXFxyXG4gICAgJEZPT1RFUlxyXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xyXG5cclxuLyoqXHJcbiAqIDEpIEdsb2JhbCBibG9jayBhdCB0aGUgYm90dG9tIG9mIGVhY2ggcGFnZSB0aGF0IGNvbnRhaW5zIGEgbmF2aWdhdGlvbiBhbmQgb3RoZXIgaW5mb3JtYXRpb25cclxuICovXHJcbi5jLWZvb3RlciB7XHJcblx0cGFkZGluZzogMnJlbSAwO1xyXG5cdG1hcmdpbi10b3A6IDJyZW07XHJcblx0YmFja2dyb3VuZDogJGNvbG9yLWJyYW5kLXByaW1hcnktZGFyaztcclxufVxyXG5cclxuLmMtZm9vdGVyX19pbm5lciB7XHJcblx0QG1lZGlhIGFsbCBhbmQgKG1pbi13aWR0aDogJGJwLW1lZCkge1xyXG5cdFx0ZGlzcGxheTogZmxleDtcclxuXHR9XHJcbn1cclxuXHJcbi5jLWZvb3Rlcl9fYm90dG9tIHtcclxuXHRAbWVkaWEgYWxsIGFuZCAobWluLXdpZHRoOiAkYnAtbWVkKSB7XHJcblx0XHRtYXJnaW4tbGVmdDogYXV0bztcclxuXHR9XHJcbn1cclxuXHJcbi5jLWZvb3Rlcl9fY3JlZGl0LCAuYy1mb290ZXJfX2NvcHlyaWdodCB7XHJcblx0Y29sb3I6ICRjb2xvci1uZXV0cmFsLXdoaXRlO1xyXG5cdHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XHJcblx0Zm9udC1mYW1pbHk6ICRmb250LWZhbWlseS1zZWNvbmRhcnk7XHJcblx0Zm9udC1zaXplOiAkZm9udC1zaXplLXNtLTI7XHJcblxyXG5cdGEge1xyXG5cdFx0Y29sb3I6ICRjb2xvci1icmFuZC1zZWNvbmRhcnk7XHJcblxyXG5cdFx0Jjpob3ZlciwgJjpmb2N1cyB7XHJcblx0XHRcdGNvbG9yOiAkY29sb3ItbmV1dHJhbC1pcm9uO1xyXG5cdFx0fVxyXG5cdH1cclxufVxyXG4iLCIvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcXFxyXG4gICAgI0ZPT1RFUiBOQVZcclxuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cclxuXHJcbi8qKlxyXG4gKiAxKSBHbG9iYWwgYmxvY2sgYXQgdGhlIGJvdHRvbSBvZiBlYWNoIHBhZ2UgdGhhdCBjb250YWlucyBhIG5hdmlnYXRpb24gYW5kIG90aGVyIGluZm9ybWF0aW9uXHJcbiAqL1xyXG4uYy1mb290ZXItbmF2IHtcclxuXHRtYXJnaW4tYm90dG9tOiAycmVtO1xyXG5cclxuXHRAbWVkaWEgYWxsIGFuZCAobWluLXdpZHRoOiAkYnAtbWVkKSB7XHJcblx0XHRkaXNwbGF5OiBmbGV4O1xyXG5cdFx0bWFyZ2luLWJvdHRvbTogMDtcclxuXHR9XHJcbn1cclxuXHJcbi5jLWZvb3Rlci1uYXZfX2l0ZW0ge1xyXG5cclxuXHRAbWVkaWEgYWxsIGFuZCAobWluLXdpZHRoOiAkYnAtbWVkKSB7XHJcblx0XHRtYXJnaW4tcmlnaHQ6IDJyZW07XHJcblxyXG5cdFx0JjpsYXN0LWNoaWxkIHtcclxuXHRcdFx0bWFyZ2luLXJpZ2h0OiAwO1xyXG5cdFx0fVxyXG5cdH1cclxufVxyXG5cclxuLmMtZm9vdGVyLW5hdl9fbGluayB7XHJcblx0Y29sb3I6ICRjb2xvci1uZXV0cmFsLXdoaXRlO1xyXG5cdGZvbnQtZmFtaWx5OiAkZm9udC1mYW1pbHktc2Vjb25kYXJ5O1xyXG5cdHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XHJcblx0Zm9udC1zaXplOiAkZm9udC1zaXplLW1lZC0yO1xyXG59XHJcbiIsIi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlxcXHJcbiAgICAjSEVBREVSXHJcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXHJcblxyXG4vKipcclxuICogR2xvYmFsIGJsb2NrIGF0IHRoZSB0b3Agb2YgZWFjaCBwYWdlIGNvbnRhaW5pbmcgdGhlIG5hdmlnYXRpb24sIGxvZ28sIGFuZCBvdGhlciBwb3RlbnRpYWwgY29udGVudHNcclxuICovXHJcbi5jLWhlYWRlciB7XHJcblx0cG9zaXRpb246IHJlbGF0aXZlO1xyXG5cdG1hcmdpbi1ib3R0b206IDJyZW07XHJcblx0Ym9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICRjb2xvci1uZXV0cmFsLW9mZi13aGl0ZTtcclxufVxyXG5cclxuLyoqXHJcbiAqIEhlYWRlciBpbm5lclxyXG4gKi9cclxuLmMtaGVhZGVyX19pbm5lciB7XHJcblx0cGFkZGluZy10b3A6IDFyZW07XHJcblx0cGFkZGluZy1ib3R0b206IDFyZW07XHJcblxyXG5cdEBtZWRpYSBhbGwgYW5kIChtaW4td2lkdGg6ICRicC1zbWFsbC0yKSB7XHJcblx0XHRkaXNwbGF5OiBmbGV4O1xyXG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcclxuXHR9XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBIZWFkZXIgbmF2aWdhdGlvbiBidXR0b25cclxuICogMSkgQnV0dG9uIHVzZWQgdG8gdG9nZ2xlIHRoZSBuYXZpZ2F0aW9uIG9uL29mZiBvbiBzbWFsbCBzY3JlZW5zXHJcbiAqL1xyXG4uYy1oZWFkZXJfX25hdi1idG4ge1xyXG5cdG1hcmdpbi1sZWZ0OiBhdXRvO1xyXG5cclxuXHRAbWVkaWEgYWxsIGFuZCAobWluLXdpZHRoOiAkYnAteGwpIHtcclxuXHRcdGRpc3BsYXk6IG5vbmU7XHJcblx0fVxyXG59XHJcblxyXG4vKipcclxuICogSGVhZGVyIG5hdmlnYXRpb24gY29ubnRhaW5lclxyXG4gKiAxKSBDb250YWlucyB0aGUgcHJpbWFyeSBuYXZpZ2F0aW9uIGFuZCBvdGhlciBwb3NzaWJsZSBwYXR0ZXJuc1xyXG4gKi9cclxuLmMtaGVhZGVyX19uYXYtY29udGFpbmVyIHtcclxuXHRkaXNwbGF5OiBub25lO1xyXG5cclxuXHRAbWVkaWEgYWxsIGFuZCAobWluLXdpZHRoOiAkYnAteGwpIHtcclxuXHRcdGRpc3BsYXk6IGJsb2NrO1xyXG5cdFx0bWFyZ2luLWxlZnQ6IGF1dG87XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBIZWFkZXIgbmF2aWdhdGlvbiBjb25udGFpbmVyIHdpdGhpbiB2ZXJ0aWNhbCBoZWFkZXJcclxuXHQgKi9cclxuXHQuYy1oZWFkZXItLXZlcnRpY2FsICYge1xyXG5cdFx0QG1lZGlhIGFsbCBhbmQgKG1pbi13aWR0aDogJGJwLXhsKSB7XHJcblx0XHRcdG1hcmdpbi1sZWZ0OiAwO1xyXG5cdFx0fVxyXG5cdH1cclxufVxyXG5cclxuLyoqXHJcbiAqIEFjdGl2ZSBoZWFkZXIgbmF2IGNvbnRhaW5lclxyXG4gKi9cclxuLmMtaGVhZGVyX19uYXYtY29udGFpbmVyLmlzLWFjdGl2ZSB7XHJcblx0ZGlzcGxheTogYmxvY2s7XHJcblx0cG9zaXRpb246IGFic29sdXRlO1xyXG5cdGJhY2tncm91bmQ6ICRjb2xvci1uZXV0cmFsLWdyYXktMDc7XHJcblx0dG9wOiAxMDAlO1xyXG5cdGxlZnQ6IDA7XHJcblx0d2lkdGg6IDEwMCU7XHJcblx0ei1pbmRleDogNTtcclxuXHRwYWRkaW5nOiAxcmVtO1xyXG5cclxuXHRAbWVkaWEgYWxsIGFuZCAobWluLXdpZHRoOiAkYnAteGwpIHtcclxuXHRcdGRpc3BsYXk6IGJsb2NrO1xyXG5cdFx0cG9zaXRpb246IHN0YXRpYztcclxuXHRcdHBhZGRpbmc6IDA7XHJcblx0XHRtYXJnaW4tbGVmdDogYXV0bztcclxuXHRcdHdpZHRoOiBpbmhlcml0O1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogQWN0aXZlIGhlYWRlciBuYXYgY29udGFpbmVyIHdpdGhpbiB2ZXJ0aWNhbCBoZWFkZXJcclxuXHQgKi9cclxuXHQuYy1oZWFkZXItLXZlcnRpY2FsICYge1xyXG5cdFx0QG1lZGlhIGFsbCBhbmQgKG1pbi13aWR0aDogJGJwLXhsKSB7XHJcblx0XHRcdG1hcmdpbi1sZWZ0OiAwO1xyXG5cdFx0XHR3aWR0aDogMTAwJTtcclxuXHRcdH1cclxuXHR9XHJcbn1cclxuIiwiLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qXFxcclxuICAgICNMT0dPXHJcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXHJcblxyXG4vKipcclxuICogQnJhbmRpbmcgaW1hZ2Ugb3IgdGV4dCBvZiB0aGUgc2l0ZVxyXG4gKi9cclxuLmMtbG9nbyB7XHJcblx0Zm9udC1zaXplOiAkZm9udC1zaXplLWxhcmdlO1xyXG5cclxuXHQuYy1mb290ZXIgJiB7XHJcblx0XHRtYXJnaW4tYm90dG9tOiAycmVtO1xyXG5cclxuXHRcdEBtZWRpYSBhbGwgYW5kIChtaW4td2lkdGg6ICRicC1tZWQpIHtcclxuXHRcdFx0bWFyZ2luLWJvdHRvbTogMDtcclxuXHRcdH1cclxuXHR9XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBMb2dvIGxpbmtcclxuICovXHJcbi5jLWxvZ29fX2xpbmsge1xyXG5cdGRpc3BsYXk6IGJsb2NrO1xyXG59XHJcblxyXG4vKipcclxuICogTG9nbyBpbWFnZVxyXG4gKi9cclxuLmMtbG9nb19faW1nIHtcclxuXHRkaXNwbGF5OiBibG9jaztcclxufVxyXG5cclxuLmMtbG9nb19fbGVmdCB7XHJcblx0Y29sb3I6ICRjb2xvci1icmFuZC1wcmltYXJ5O1xyXG5cclxuXHQuYy1sb2dvLS1saWdodCAmIHtcclxuXHRcdGNvbG9yOiAkY29sb3ItbmV1dHJhbC13aGl0ZTtcclxuXHR9XHJcbn1cclxuLmMtbG9nb19fcmlnaHQge1xyXG5cdGNvbG9yOiAkY29sb3ItYnJhbmQtc2Vjb25kYXJ5O1xyXG59XHJcbiIsIi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlxcXHJcbiAgICAjSUNPTlxyXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xyXG5cclxuLyoqXHJcbiAqIDEpIFNtYWxsIGltYWdlIHRoYXQgcmVwcmVzZW50cyBmdW5jdGlvbmFsaXR5XHJcbiAqL1xyXG4uYy1pY29uIHtcclxuXHRoZWlnaHQ6IDE2cHg7XHJcblx0d2lkdGg6IDE2cHg7XHJcbn1cclxuIiwiLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qXFxcclxuICAgICNJTlBVVFxyXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xyXG5cclxuLyoqXHJcbiAqIDEpIEFjdHVhbCBpbnB1dCBvZiBhIGZpZWxkXHJcbiAqL1xyXG4uYy1pbnB1dCB7XHJcblx0LmMtc3RyaXBlICYge1xyXG5cdFx0bWF4LXdpZHRoOiAzcmVtO1xyXG5cdH1cclxufVxyXG4iLCIvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcXFxyXG4gICAgI1BBR0UgSEVBREVSXHJcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXHJcbi8qKlxyXG4gKiAxKSBDb250YWluZXIgdGhhdCBjb25zaXN0cyBvZiBvZiBhIHBhZ2UgaGVhZGVyIHRpdGxlIGFuZCBkZXNjcmlwdGlvblxyXG4gKi9cclxuXHJcbi8qKlxyXG4gKiBQYWdlIGhlYWRlciB0aXRsZVxyXG4gKi9cclxuLmMtcGFnZS1oZWFkZXIge1xyXG5cdG1hcmdpbi10b3A6IDRyZW07XHJcblx0bWFyZ2luLWJvdHRvbTogJHNwYWNpbmctbGFyZ2U7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBQYWdlIGRlc2NyaXB0aW9uXHJcbiAqL1xyXG4uYy1wYWdlLWhlYWRlcl9fZGVzYyB7XHJcblx0bWFyZ2luLXRvcDogMXJlbTtcclxufVxyXG4iLCIvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcXFxyXG4gICAgI1BBR0lOQVRJT05cclxuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cclxuLyoqXHJcbiAqIFBhZ2luYXRpb25cclxuICovXHJcbi5jLXBhZ2luYXRpb24ge1xyXG5cdGRpc3BsYXk6IGZsZXg7XHJcblx0ZmxleC13cmFwOiB3cmFwO1xyXG5cdGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG5cdG92ZXJmbG93OiBoaWRkZW47XHJcblx0bWFyZ2luLWJvdHRvbTogMXJlbTtcclxuXHRmb250LWZhbWlseTogJGZvbnQtZmFtaWx5LXNlY29uZGFyeTtcclxuXHR0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xyXG59XHJcblxyXG4uYy1wYWdpbmF0aW9uX19pdGVtIHtcclxuXHRib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAkY29sb3ItbmV1dHJhbC1vZmYtd2hpdGU7XHJcblxyXG5cdCY6bGFzdC1jaGlsZCB7XHJcblx0XHRib3JkZXI6IDA7XHJcblx0fVxyXG59XHJcblxyXG4uYy1wYWdpbmF0aW9uX19saW5rIHtcclxuXHRwYWRkaW5nOiAxcmVtO1xyXG5cdHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xyXG5cclxuXHQuYy1wYWdpbmF0aW9uX19pdGVtOmZpcnN0LWNoaWxkICYge1xyXG5cdFx0cGFkZGluZy1sZWZ0OiAwO1xyXG5cdH1cclxuXHJcblx0LmMtcGFnaW5hdGlvbl9faXRlbS5pcy1hY3RpdmUgJiB7XHJcblx0XHRmb250LXdlaWdodDogYm9sZDtcclxuXHRcdHRleHQtZGVjb3JhdGlvbjogbm9uZTtcclxuXHRcdHBvaW50ZXItZXZlbnRzOiBub25lO1xyXG5cdH1cclxuXHJcblx0LmMtcGFnaW5hdGlvbl9faXRlbS5pcy1kaXNhYmxlZCAmIHtcclxuXHRcdGNvbG9yOiAkY29sb3ItbmV1dHJhbC1vZmYtd2hpdGU7XHJcblx0XHRwb2ludGVyLWV2ZW50czogbm9uZTtcclxuXHRcdHRleHQtZGVjb3JhdGlvbjogbm9uZTtcclxuXHR9XHJcbn1cclxuIiwiLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qXFxcclxuICAgICNQUklNQVJZIE5BVklHQVRJT05cclxuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cclxuXHJcbi8qKlxyXG4gKiBQcmltYXJ5IG5hdmlnYXRpb24gZXhpc3RpbmcgaW4gdGhlIGhlYWRlciBhbmQgbWF5YmUgdGhlIGZvb3RlclxyXG4gKi9cclxuXHJcbiAuYy1wcmltYXJ5LW5hdiB7XHJcblxyXG5cdCBAbWVkaWEgYWxsIGFuZCAobWluLXdpZHRoOiAzMmVtKSB7XHJcblx0XHQgbWFyZ2luLWxlZnQ6IGF1dG87XHJcblx0IH1cclxuIH1cclxuXHJcbi8qKlxyXG4gKiBQcmltYXJ5IG5hdmlnYXRpb24gbGlzdFxyXG4gKi9cclxuLmMtcHJpbWFyeS1uYXZfX2xpc3Qge1xyXG5cdGRpc3BsYXk6IGZsZXg7XHJcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG59XHJcblxyXG4vKipcclxuICogUHJpbWFyeSBuYXZpZ2F0aW9uIGl0ZW1cclxuICovXHJcbi5jLXByaW1hcnktbmF2X19pdGVtIHtcclxuXHRtYXJnaW4tcmlnaHQ6IDJyZW07XHJcblxyXG4gICAgJjpsYXN0LWNoaWxkIHtcclxuICAgICAgICBtYXJnaW4tcmlnaHQ6IDA7XHJcbiAgICB9XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBQcmltYXJ5IG5hdmlnYXRpb24gbGlua1xyXG4gKi9cclxuLmMtcHJpbWFyeS1uYXZfX2xpbmsge1xyXG5cdGRpc3BsYXk6IGJsb2NrO1xyXG5cdGN1cnNvcjogcG9pbnRlcjtcclxuXHRmb250LWZhbWlseTogJGZvbnQtZmFtaWx5LXNlY29uZGFyeTtcclxuXHRmb250LXNpemU6ICRmb250LXNpemUtbWVkLTI7XHJcbiAgICBsaW5lLWhlaWdodDogMTtcclxuXHR0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xyXG4gICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAkYW5pbS1mYWRlLXF1aWNrICRhbmltLWVhc2U7XHJcblxyXG4gICAgJjpob3ZlciwgJjpmb2N1cyB7XHJcbiAgICAgICAgY29sb3I6ICRjb2xvci1icmFuZC1zZWNvbmRhcnk7XHJcbiAgICB9XHJcbn1cclxuXHJcbi5jLXByaW1hcnktbmF2X19pY29uLmMtaWNvbiB7XHJcbiAgICBmaWxsOiAkY29sb3ItYnJhbmQtcHJpbWFyeS1kYXJrO1xyXG4gICAgaGVpZ2h0OiAyNHB4O1xyXG4gICAgd2lkdGg6IDI0cHg7XHJcbn1cclxuIiwiLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qXFxcclxuICAgICNQUk9NTyBCTE9DS1xyXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xyXG5cclxuLyoqXHJcbiAqIExhcmdlIGJsb2NrIGNvbnRhaW5pbmcgYW4gaW1hZ2UgYW5kIGNvcHlcclxuICogMSkgTW92ZSBwcm9tbyBibG9jayB1cCB0byBzaXQgZmx1c2ggd2l0aCBoZXJvXHJcbiAqICAgIE5vcm1hbGx5IHdlIHdvdWxkbid0IGRvIHRoaXMsIGJ1dCB3ZSdyZSB0YWtpbmdcclxuICogICAgYSBzaG9ydGN1dCBmb3IgZGVtbyBwdXJwb3Nlcy5cclxuICovXHJcbi5jLXByb21vLWJsb2NrIHtcclxuXHRjb2xvcjogJGNvbG9yLW5ldXRyYWwtd2hpdGU7XHJcblx0cG9zaXRpb246IHJlbGF0aXZlO1xyXG5cdG1hcmdpbi10b3A6IC0ycmVtOyAvKiAxICovXHJcbn1cclxuXHJcbi5jLXByb21vLWJsb2NrX19tZWRpYSB7XHJcblx0cG9zaXRpb246IHJlbGF0aXZlO1xyXG5cdHotaW5kZXg6IDA7XHJcblxyXG5cdCY6YmVmb3JlIHtcclxuXHRcdGNvbnRlbnQ6IFwiXCI7XHJcblx0XHRiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoXHJcblx0XHRcdHRvIGxlZnQsXHJcblx0XHRcdHJnYmEoMCwgMCwgMCwgMCkgMCxcclxuXHRcdFx0cmdiYSgwLCAwLCAwLCAwKSA0MCUsXHJcblx0XHRcdCMwMDAgMTAwJVxyXG5cdFx0KTtcclxuXHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuXHRcdHRvcDogMDtcclxuXHRcdHJpZ2h0OiAwO1xyXG5cdFx0Ym90dG9tOiAwO1xyXG5cdFx0bGVmdDogMDtcclxuXHJcblx0XHQuYy1wcm9tby1ibG9jay0tcmlnaHQgJiB7XHJcblx0XHRcdGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudChcclxuXHRcdFx0XHR0byByaWdodCxcclxuXHRcdFx0XHRyZ2JhKDAsIDAsIDAsIDApXHJcblx0XHRcdFx0XHQwLFxyXG5cdFx0XHRcdHJnYmEoMCwgMCwgMCwgMClcclxuXHRcdFx0XHRcdDIwJSxcclxuXHRcdFx0XHQjMDAwIDEwMCVcclxuXHRcdFx0KTtcclxuXHRcdH1cclxuXHR9XHJcbn1cclxuXHJcbi5jLXByb21vLWJsb2NrX19ib2R5IHtcclxuXHRwb3NpdGlvbjogYWJzb2x1dGU7XHJcblx0dG9wOiA0MCU7XHJcblx0bGVmdDogNHJlbTtcclxuXHR6LWluZGV4OiAxO1xyXG5cdG1heC13aWR0aDogNDAwcHg7XHJcblx0dHJhbnNpdGlvbjogb3BhY2l0eSAkYW5pbS1mYWRlLWxvbmcgJGFuaW0tZWFzZSxcclxuXHRcdHRyYW5zZm9ybSAkYW5pbS1mYWRlLWxvbmcgJGFuaW0tZWFzZTtcclxuXHJcblx0LmMtcHJvbW8tYmxvY2stLXJpZ2h0ICYge1xyXG5cdFx0bGVmdDogYXV0bztcclxuXHRcdHJpZ2h0OiA0cmVtO1xyXG5cdH1cclxuXHJcblx0Ji5jLXByb21vLWJsb2NrX19ib2R5LS1pbml0aWFsIHtcclxuXHRcdG9wYWNpdHk6IDA7XHJcblx0XHR0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoNzBweCk7XHJcblx0fVxyXG59XHJcblxyXG4uYy1wcm9tby1ibG9ja19faW1nIHtcclxuXHRkaXNwbGF5OiBibG9jaztcclxuXHR3aWR0aDogMTAwJTtcclxufVxyXG5cclxuLmMtcHJvbW8tYmxvY2tfX2xpbmsge1xyXG5cdGNvbG9yOiAkY29sb3ItbmV1dHJhbC13aGl0ZTtcclxuXHJcblx0Jjpob3ZlcixcclxuXHQmOmZvY3VzIHtcclxuXHRcdGNvbG9yOiAkY29sb3ItYnJhbmQtc2Vjb25kYXJ5O1xyXG5cdH1cclxufVxyXG5cclxuLmMtcHJvbW8tYmxvY2tfX2hlYWRpbmcge1xyXG5cdGRpc3BsYXk6IGlubGluZTtcclxuXHRjb2xvcjogaW5oZXJpdDtcclxuXHRib3JkZXItYm90dG9tOiAycHggc29saWQgJGNvbG9yLWJyYW5kLXNlY29uZGFyeTtcclxuXHRmb250LXNpemU6ICRmb250LXNpemUtbGFyZ2U7XHJcblxyXG5cdEBtZWRpYSBhbGwgYW5kIChtaW4td2lkdGg6ICRicC1sYXJnZSkge1xyXG5cdFx0Zm9udC1zaXplOiAkZm9udC1zaXplLXhsO1xyXG5cdH1cclxufVxyXG5cclxuLmMtcHJvbW8tYmxvY2tfX2Rlc2NyaXB0aW9uIHtcclxuXHRtYXJnaW4tdG9wOiAxcmVtO1xyXG5cclxuXHRAbWVkaWEgYWxsIGFuZCAobWluLXdpZHRoOiAkYnAtbGFyZ2UpIHtcclxuXHRcdGZvbnQtc2l6ZTogJGZvbnQtc2l6ZS1tZWQtMjtcclxuXHR9XHJcbn1cclxuIiwiLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qXFxcclxuI1BST0dSRVNTIFRSQUNLRVJcclxuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cclxuXHJcbi8qKlxyXG4qIDEpIE9yZGVyZWQgbGlzdCBzaG93aW5nIHByb2dyZXNzIChpLmUuIHN0ZXAgYnkgc3RlcClcclxuKiAyKSBEaXNwbGF5IGZsZXggdXNlZCB0byBwdXQgaXRlbXMgaW4gcm93LiBGbGV4IHdyYXAgd3JhcHMgaXRlbXMgdW5kZXJuZWF0IHdoZW4gc3BhY2UgaXNcclxuKiAgICB1bmF2YWlsYWJsZS5cclxuKi9cclxuXHJcbi5jLXByb2dyZXNzLXRyYWNrZXIge1xyXG5cdGRpc3BsYXk6IGZsZXg7XHJcblx0ZmxleC13cmFwOiB3cmFwO1xyXG5cdGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG5cdGZsZXgtd3JhcDogd3JhcDtcclxuXHRmb250LXNpemU6ICRmb250LXNpemUtc20tMjtcclxuXHRtYXJnaW4tcmlnaHQ6IDJyZW07XHJcblx0dGV4dC1hbGlnbjogY2VudGVyO1xyXG5cclxuXHQvLyBJdGVtXHJcblx0Jl9faXRlbSB7XHJcblx0XHRtYXJnaW4tcmlnaHQ6IDJyZW07XHJcblx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XHJcblx0XHRmb250LXNpemU6ICRmb250LXNpemUtc20tMjtcclxuXHRcdHdpZHRoOiA1cmVtO1xyXG5cclxuXHRcdCY6bGFzdC1jaGlsZCAuYy1wcm9ncmVzcy10cmFja2VyX19udW1iZXI6YmVmb3JlIHtcclxuXHRcdFx0ZGlzcGxheTogbm9uZTtcclxuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjogJGNvbG9yLW5ldXRyYWwtd2hpdGU7XHJcblx0XHRcdGJvcmRlcjogMXB4IHNvbGlkICRjb2xvci1icmFuZC1wcmltYXJ5O1xyXG5cdFx0XHRib3JkZXItcmFkaXVzOiA1MCU7XHJcblx0XHRcdGNvbG9yOiAkY29sb3ItYnJhbmQtcHJpbWFyeTtcclxuXHRcdFx0bWFyZ2luLWJvdHRvbTogLjVyZW07XHJcblx0XHRcdHBhZGRpbmc6IC4xMjVyZW07XHJcblx0XHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cclxuXHQvLyBOdW1iZXJcclxuXHQmX19udW1iZXIge1xyXG5cdFx0cGFkZGluZzogLjEyNXJlbTtcclxuXHRcdG1hcmdpbi1ib3R0b206IC41cmVtO1xyXG5cdFx0Y29sb3I6ICRjb2xvci1icmFuZC1wcmltYXJ5O1xyXG5cdFx0Ym9yZGVyOiAxcHggc29saWQgJGNvbG9yLWJyYW5kLXByaW1hcnk7XHJcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3ItbmV1dHJhbC13aGl0ZTtcclxuXHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuXHRcdGJhY2tncm91bmQtY29sb3I6ICRjb2xvci1icmFuZC1wcmltYXJ5O1xyXG5cdFx0Y29sb3I6ICRjb2xvci1uZXV0cmFsLXdoaXRlO1xyXG5cdFx0QG1lZGlhIGFsbCBhbmQgKG1pbi13aWR0aDogJGJwLXNtYWxsKSB7XHJcblx0XHRcdHBhZGRpbmc6IC41cmVtO1xyXG5cdFx0XHRib3JkZXItY29sb3I6ICRjb2xvci1icmFuZC1wcmltYXJ5O1xyXG5cdFx0XHRjb2xvcjogJGNvbG9yLWJyYW5kLXByaW1hcnktZGFyaztcclxuXHRcdH1cclxuXHJcblx0XHQuaXMtY29tcGxldGUgJiB7XHJcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICRjb2xvci1uZXV0cmFsLW9mZi13aGl0ZTtcclxuXHRcdFx0Y29udGVudDogXCIgXCI7XHJcblx0XHRcdGRpc3BsYXk6IGJsb2NrO1xyXG5cdFx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XHJcblx0XHRcdHJpZ2h0OiAtNHJlbTtcclxuXHRcdFx0d2lkdGg6IDRyZW07XHJcblxyXG5cclxuXHRcdFx0LmlzLWN1cnJlbnQgJiB7XHJcblx0XHRcdFx0Y29sb3I6ICRjb2xvci1uZXV0cmFsLXdoaXRlO1xyXG5cdFx0XHRcdGJhY2tncm91bmQtY29sb3I6ICRjb2xvci1icmFuZC1wcmltYXJ5O1xyXG5cdFx0XHRcdGZvbnQtd2VpZ2h0OiBib2xkO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHQuaXMtZGlzYWJsZWQgJiB7XHJcblx0XHRcdFx0Y29sb3I6ICRjb2xvci1icmFuZC1wcmltYXJ5LWRhcms7XHJcblx0XHRcdFx0Ym9yZGVyLWNvbG9yOiAkY29sb3ItYnJhbmQtcHJpbWFyeTtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0JjpiZWZvcmUge1xyXG5cdFx0XHRcdGNvbnRlbnQ6IFwiIFwiO1xyXG5cdFx0XHRcdGRpc3BsYXk6IGJsb2NrO1xyXG5cdFx0XHRcdHdpZHRoOiA0cmVtO1xyXG5cdFx0XHRcdGhlaWdodDogMXB4O1xyXG5cdFx0XHRcdGJhY2tncm91bmQtY29sb3I6ICRjb2xvci1uZXV0cmFsLW9mZi13aGl0ZTtcclxuXHRcdFx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XHJcblx0XHRcdFx0dG9wOiA1MCU7XHJcblx0XHRcdFx0cmlnaHQ6IC00cmVtO1xyXG5cdFx0XHRcdHotaW5kZXg6IC0xO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHJcblx0Ly8gTGFiZWxcclxuXHQmX19sYWJlbCB7XHJcblx0XHRkaXNwbGF5OiBub25lO1xyXG5cdFx0QG1lZGlhIGFsbCBhbmQgKG1pbi13aWR0aDogJGJwLXNtYWxsLTIpIHtcclxuXHRcdFx0ZGlzcGxheTogaW5saW5lO1xyXG5cdFx0fVxyXG5cclxuXHRcdC5pcy1jdXJyZW50ICYge1xyXG5cdFx0XHRmb250LXdlaWdodDogYm9sZDtcclxuXHRcdH1cclxuXHR9XHJcblxyXG59XHJcbiIsIi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlxcXHJcbiAgICAjVEVYVCBQQVNTQUdFXHJcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXHJcblxyXG4vKipcclxuICogMSkgQSBwYXNzYWdlIG9mIHRleHQsIGluY2x1ZGluZyB2YXJpb3VzIGNvbXBvbmVudHMgKGkuZS4gYXJ0aWNsZSwgYmxvZyBwb3N0KVxyXG4gKi9cclxuLmMtdGV4dC1wYXNzYWdlIHtcclxuXHJcblx0cCB7XHJcblx0XHRtYXJnaW4tYm90dG9tOiAxcmVtO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogTGluayB3aXRoaW4gdGhlIHRleHQgcGFzc2FnZVxyXG5cdCAqL1xyXG5cdGEge1xyXG5cdFx0dGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBCbG9ja3F1b3RlIHdpdGhpbiB0ZXh0IHBhc3NhZ2VcclxuXHQgKi9cclxuXHRibG9ja3F1b3RlIHtcclxuXHRcdHBhZGRpbmctbGVmdDogMC44cmVtO1xyXG5cdFx0Ym9yZGVyLWxlZnQ6IDNweCBzb2xpZCAkY29sb3ItbmV1dHJhbC1ncmF5O1xyXG5cdFx0Y29sb3I6ICRjb2xvci1uZXV0cmFsLWlyb247XHJcblx0XHRmb250LXNpemU6IDFyZW07XHJcblx0IH1cclxuXHJcblx0IC8qKlxyXG5cdCAgKiBGaXJzdC1sZXZlbCBoZWFkaW5nIHdpdGhpbiB0ZXh0IHBhc3NhZ2VcclxuXHQgICovXHJcblx0IGgxIHtcclxuXHRcdCBtYXJnaW4tYm90dG9tOiAxcmVtO1xyXG5cdCB9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFNlY29uZC1sZXZlbCBoZWFkaW5nIHdpdGhpbiB0ZXh0IHBhc3NhZ2VcclxuXHQgKi9cclxuXHRoMiB7XHJcblx0XHRtYXJnaW46IDFyZW0gMCAxcmVtO1xyXG5cdFx0Y29sb3I6ICRjb2xvci1uZXV0cmFsLWdyYXk7XHJcblx0XHRmb250LXdlaWdodDogYm9sZDtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFRoaXJkLWxldmVsIGhlYWRpbmcgd2l0aGluIHRleHQgcGFzc2FnZVxyXG5cdCAqL1xyXG5cdGgzIHtcclxuXHRcdG1hcmdpbjogMXJlbSAwIDFyZW07XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBGb3VydGgtbGV2ZWwgaGVhZGluZyB3aXRoaW4gdGV4dCBwYXNzYWdlXHJcblx0ICovXHJcblx0aDQge1xyXG5cdFx0bWFyZ2luOiAxcmVtIDAgMXJlbTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEZpZnRoLWxldmVsIGhlYWRpbmcgd2l0aGluIHRleHQgcGFzc2FnZVxyXG5cdCAqL1xyXG5cdGg1IHtcclxuXHRcdG1hcmdpbjogMXJlbSAwIDFyZW07XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBTaXh0aC1sZXZlbCBoZWFkaW5nIHdpdGhpbiB0ZXh0IHBhc3NhZ2VcclxuXHQgKi9cclxuXHRoNiB7XHJcblx0XHRtYXJnaW46IDFyZW0gMCAxcmVtO1xyXG5cdH1cclxuXHJcblxyXG5cdC8qKlxyXG5cdCAqIFVub3JkZXJlZCBsaXN0IHdpdGhpbiB0ZXh0IHBhc3NhZ2VcclxuXHQgKi9cclxuXHR1bCB7XHJcblx0XHRsaXN0LXN0eWxlOiBkaXNjO1xyXG5cdFx0bWFyZ2luLWxlZnQ6IDFyZW07XHJcblx0XHRtYXJnaW4tYm90dG9tOiAxcmVtO1xyXG5cclxuXHRcdGxpOmxhc3QtY2hpbGQge1xyXG5cdFx0XHRtYXJnaW4tYm90dG9tOiAwO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogT3JkZXJlZCBsaXN0IHdpdGhpbiB0ZXh0IHBhc3NhZ2VcclxuXHQgKi9cclxuXHRvbCB7XHJcblx0XHRsaXN0LXN0eWxlOiBkZWNpbWFsO1xyXG5cdFx0bWFyZ2luLWxlZnQ6IDFyZW07XHJcblx0XHRtYXJnaW4tYm90dG9tOiAxcmVtO1xyXG5cclxuXHRcdGxpOmxhc3QtY2hpbGQge1xyXG5cdFx0XHRtYXJnaW4tYm90dG9tOiAwO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0bGkge1xyXG5cdFx0bWFyZ2luLWJvdHRvbTogMC41cmVtO1xyXG5cdFx0bGluZS1oZWlnaHQ6IDEuNjtcclxuXHR9XHJcbn1cclxuIiwiLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qXFxcclxuICAgICNGSUVMRFNcclxuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cclxuXHJcbi8qKlxyXG4gKiAxKSBDb25zaXN0cyBvZiBhIGxhYmVsLCBmb3JtIGNvbnRyb2wsIGFuZCBhbiBvcHRpb25hbCBub3RlIGFib3V0IHRoZSBmaWVsZC5cclxuICovXHJcbiAuYy1maWVsZCB7XHJcblx0bWFyZ2luLWJvdHRvbTogJHNwYWNpbmctbGFyZ2U7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBGaWVsZCBsYWJlbFxyXG4gKi9cclxuLmMtZmllbGRfX2xhYmVsIHtcclxuXHRtYXJnaW4tYm90dG9tOiAwLjVyZW07XHJcbiAgICBmb250LXNpemU6ICRmb250LXNpemUtbWVkO1xyXG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBGaWVsZCBib2R5XHJcbiAqL1xyXG4uYy1maWVsZF9fYm9keSB7XHJcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBGaWVsZCBub3RlXHJcbiAqL1xyXG4uYy1maWVsZF9fbm90ZSB7XHJcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgICBmb250LXNpemU6ICRmb250LXNpemUtc207XHJcbiAgICBjb2xvcjogJGNvbG9yLW5ldXRyYWwtaXJvbjtcclxufVxyXG4iLCIvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcXFxyXG4gICAgI1NFQVJDSCBGT1JNXHJcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXHJcbi8qKlxyXG4gKiAxKSBTZWFyY2ggZm9ybSB0aGF0IGNvbnRhaW5zIGEgdGV4dCBpbnB1dCBhbmQgYnV0dG9uXHJcbiAqL1xyXG5cclxuLyoqXHJcbiAqIFBhZ2UgaGVhZGVyIHRpdGxlXHJcbiAqL1xyXG4uYy1zZWFyY2gtZm9ybV9fYm9keSB7XHJcblx0ZGlzcGxheTogZmxleDtcclxufVxyXG4iLCIuYy1zdGFja2VkLWJsb2NrLWxpc3Qge1xyXG5cdG1heC13aWR0aDogJGwtbWF4LXdpZHRoO1xyXG5cdG1hcmdpbi1ib3R0b206ICRzcGFjaW5nLWxhcmdlO1xyXG59XHJcbiIsIlxyXG4vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcXFxyXG5cdCNUT1RBTCBDT05UQUlORVJcclxuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cclxuXHJcbi8qKlxyXG4gKiAxKVxyXG4gKi9cclxuXHJcbi5jLXRvdGFsLWNvbnRhaW5lciB7XHJcbiAgICBtYXJnaW4tdG9wOiAxcmVtO1xyXG5cclxuICAgIEBtZWRpYSBhbGwgYW5kIChtaW4td2lkdGg6ICRicC1zbWFsbC0yKSB7XHJcbiAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7XHJcbiAgICB9XHJcbn1cclxuXHJcbi5jLXRvdGFsIHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG5cclxuICAgIEBtZWRpYSBhbGwgYW5kIChtaW4td2lkdGg6ICRicC1zbWFsbC0yKSB7XHJcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcclxuICAgIH1cclxufVxyXG5cclxuLmMtdG90YWwtLW5vLWJyZWFrIHtcclxuICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcclxuXHJcbiAgICBAbWVkaWEgYWxsIGFuZCAobWluLXdpZHRoOiAkYnAtbGFyZ2UpIHtcclxuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xyXG4gICAgfVxyXG59XHJcblxyXG4uYy10b3RhbF9fbGFiZWwge1xyXG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XHJcbiAgICBtYXJnaW4tcmlnaHQ6IDAuNXJlbTtcclxuICAgIHBhZGRpbmctYm90dG9tOiAwO1xyXG5cclxuICAgIC5jLXRvdGFsLS1uby1icmVhayAmIHtcclxuICAgICAgICB3aWR0aDogNXJlbTtcclxuXHJcbiAgICAgICAgQG1lZGlhIGFsbCBhbmQgKG1pbi13aWR0aDogJGJwLWxhcmdlKSB7XHJcbiAgICAgICAgICAgIHdpZHRoOiBhdXRvO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuLmMtdG90YWxfX3NwYW4ge1xyXG4gICAgZm9udC1mYW1pbHk6ICRmb250LWZhbWlseS1zZWNvbmRhcnk7XHJcbiAgICBmb250LXNpemU6ICRmb250LXNpemUtbWVkLTI7XHJcbiAgICBjb2xvcjogJGNvbG9yLWJyYW5kLXByaW1hcnk7XHJcblxyXG4gICAgLmMtdG90YWwtLW5vLWJyZWFrICYge1xyXG4gICAgICAgIG1hcmdpbi1sZWZ0OiAycmVtO1xyXG5cclxuICAgICAgICBAbWVkaWEgYWxsIGFuZCAobWluLXdpZHRoOiAkYnAtbGFyZ2UpIHtcclxuICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDA7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbiIsIi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlxcXHJcbiAgICAjVklTSUJJTElUWSBDTEFTU0VTXHJcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXHJcblxyXG4vKipcclxuICogSXMgSGlkZGVuXHJcbiAqIDEpIENvbXBsZXRlbHkgcmVtb3ZlIGZyb20gdGhlIGZsb3cgYW5kIHNjcmVlbiByZWFkZXJzLlxyXG4gKi9cclxuLnUtaXMtaGlkZGVuIHtcclxuICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcclxuICAgIHZpc2liaWxpdHk6IGhpZGRlbiAhaW1wb3J0YW50O1xyXG59XHJcblxyXG4vKipcclxuICogSXMgVmlzaWJseSBIaWRkZW5cclxuICogMSkgQ29tcGxldGVseSByZW1vdmUgZnJvbSB0aGUgZmxvdyBidXQgbGVhdmUgYXZhaWxhYmxlIHRvIHNjcmVlbiByZWFkZXJzLlxyXG4gKi9cclxuLnUtaXMtdmlzaGlkZGVuIHtcclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZSAhaW1wb3J0YW50O1xyXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICAgIHdpZHRoOiAxcHg7XHJcbiAgICBoZWlnaHQ6IDFweDtcclxuICAgIHBhZGRpbmc6IDA7XHJcbiAgICBib3JkZXI6IDA7XHJcbiAgICBjbGlwOiByZWN0KDFweCwgMXB4LCAxcHgsIDFweCk7XHJcbn1cclxuIiwiLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qXFxcclxuICAgICNTUEFDSU5HXHJcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXHJcblxyXG4vKipcclxuICogTWFyZ2luIGJvdHRvbSBub25lXHJcbiAqIDEpIEZvcmNlIG1hcmdpbiBib3R0b20gb2YgMFxyXG4gKi9cclxuIC51LW1hcmdpbi1ib3R0b20tbm9uZSB7XHJcblx0bWFyZ2luLWJvdHRvbTogMCAhaW1wb3J0YW50O1xyXG59XHJcblxyXG4vKipcclxuICogTWFyZ2luIGJvdHRvbSBzbWFsbFxyXG4gKiAxKSBGb3JjZSBtYXJnaW4gYm90dG9tIG9mICRzcGFjaW5nLXNtYWxsIHZhcmlhYmxlXHJcbiAqL1xyXG4udS1tYXJnaW4tYm90dG9tLXNtYWxsIHtcclxuXHRtYXJnaW4tYm90dG9tOiAkc3BhY2luZy1zbWFsbCAhaW1wb3J0YW50O1xyXG59XHJcblxyXG4vKipcclxuICogTWFyZ2luIGJvdHRvbVxyXG4gKiAxKSBGb3JjZSBtYXJnaW4gYm90dG9tIG9mICRzcGFjaW5nIHZhcmlhYmxlXHJcbiAqL1xyXG4udS1tYXJnaW4tYm90dG9tIHtcclxuXHRtYXJnaW4tYm90dG9tOiAkc3BhY2luZyAhaW1wb3J0YW50O1xyXG59XHJcblxyXG4vKipcclxuICogTWFyZ2luIGJvdHRvbSBsYXJnZVxyXG4gKiAxKSBGb3JjZSBtYXJnaW4gYm90dG9tIG9mICRzcGFjaW5nLWxhcmdlIHZhcmlhYmxlXHJcbiAqL1xyXG4udS1tYXJnaW4tYm90dG9tLWxhcmdlIHtcclxuXHRtYXJnaW4tYm90dG9tOiAkc3BhY2luZy1sYXJnZSAhaW1wb3J0YW50O1xyXG59XHJcblxyXG4udS1tYXJnaW4tYm90dG9tLWxhcmdlLXRvLXh4bCB7XHJcblx0bWFyZ2luLWJvdHRvbTogJHNwYWNpbmctbGFyZ2UgIWltcG9ydGFudDtcclxuXHJcblx0QG1lZGlhIGFsbCBhbmQgKG1pbi13aWR0aDogJGJwLWxhcmdlKSB7XHJcblx0XHRtYXJnaW4tYm90dG9tOiAkc3BhY2luZy1sYXJnZSo0ICFpbXBvcnRhbnQ7XHJcblx0fVxyXG59XHJcbi8qKlxyXG4gKiBNYXJnaW4gdG9wIG5vbmVcclxuICogMSkgRm9yY2UgbWFyZ2luIHRvcCBvZiAwXHJcbiAqL1xyXG4udS1tYXJnaW4tdG9wLW5vbmUge1xyXG5cdG1hcmdpbi10b3A6IDAgIWltcG9ydGFudDtcclxufVxyXG5cclxuLyoqXHJcbiAqIE1hcmdpbiB0b3Agc21hbGxcclxuICogMSkgRm9yY2UgbWFyZ2luIHRvcCBvZiAkc3BhY2luZy1zbWFsbCB2YXJpYWJsZVxyXG4gKi9cclxuLnUtbWFyZ2luLXRvcC1zbWFsbCB7XHJcblx0bWFyZ2luLXRvcDogJHNwYWNpbmctc21hbGwgIWltcG9ydGFudDtcclxufVxyXG5cclxuLyoqXHJcbiAqIE1hcmdpbiB0b3BcclxuICogMSkgRm9yY2UgbWFyZ2luIHRvcCBvZiAkc3BhY2luZyB2YXJpYWJsZVxyXG4gKi9cclxuLnUtbWFyZ2luLXRvcCB7XHJcblx0bWFyZ2luLXRvcDogJHNwYWNpbmcgIWltcG9ydGFudDtcclxufVxyXG5cclxuLyoqXHJcbiAqIE1hcmdpbiB0b3AgbGFyZ2VcclxuICogMSkgRm9yY2UgbWFyZ2luIHRvcCBvZiAkc3BhY2luZy1sYXJnZSB2YXJpYWJsZVxyXG4gKi9cclxuLnUtbWFyZ2luLXRvcC1sYXJnZSB7XHJcblx0bWFyZ2luLXRvcDogJHNwYWNpbmctbGFyZ2UgIWltcG9ydGFudDtcclxufVxyXG5cclxuLnUtbWFyZ2luLXRvcC1ib29raW5nIHtcclxuXHRtYXJnaW4tdG9wOiAyOHJlbSAhaW1wb3J0YW50O1xyXG59XHJcblxyXG4vKipcclxuICogTWFyZ2luIHJpZ2h0IG5vbmVcclxuICogMSkgRm9yY2UgbWFyZ2luIHJpZ2h0IG9mIDBcclxuICovXHJcbi51LW1hcmdpbi1yaWdodC1ub25lIHtcclxuXHRtYXJnaW4tcmlnaHQ6IDAgIWltcG9ydGFudDtcclxufVxyXG5cclxuLyoqXHJcbiAqIE1hcmdpbiByaWdodCBzbWFsbFxyXG4gKiAxKSBGb3JjZSBtYXJnaW4gcmlnaHQgb2YgJHNwYWNpbmctc21hbGwgdmFyaWFibGVcclxuICovXHJcbi51LW1hcmdpbi1yaWdodC1zbWFsbCB7XHJcblx0bWFyZ2luLXJpZ2h0OiAkc3BhY2luZy1zbWFsbCAhaW1wb3J0YW50O1xyXG59XHJcblxyXG4vKipcclxuICogTWFyZ2luIHJpZ2h0XHJcbiAqIDEpIEZvcmNlIG1hcmdpbiByaWdodCBvZiAkc3BhY2luZyB2YXJpYWJsZVxyXG4gKi9cclxuLnUtbWFyZ2luLXJpZ2h0IHtcclxuXHRtYXJnaW4tcmlnaHQ6ICRzcGFjaW5nICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBNYXJnaW4gcmlnaHQgbGFyZ2VcclxuICogMSkgRm9yY2UgbWFyZ2luIHJpZ2h0IG9mICRzcGFjaW5nLWxhcmdlIHZhcmlhYmxlXHJcbiAqL1xyXG4udS1tYXJnaW4tcmlnaHQtbGFyZ2Uge1xyXG5cdG1hcmdpbi1yaWdodDogJHNwYWNpbmctbGFyZ2UgIWltcG9ydGFudDtcclxufVxyXG5cclxuLyoqXHJcbiAqIE1hcmdpbiBsZWZ0IG5vbmVcclxuICogMSkgRm9yY2UgbWFyZ2luIGxlZnQgb2YgMFxyXG4gKi9cclxuLnUtbWFyZ2luLWxlZnQtbm9uZSB7XHJcblx0bWFyZ2luLWxlZnQ6IDAgIWltcG9ydGFudDtcclxufVxyXG5cclxuLyoqXHJcbiAqIE1hcmdpbiBsZWZ0IHNtYWxsXHJcbiAqIDEpIEZvcmNlIG1hcmdpbiBsZWZ0IG9mICRzcGFjaW5nLXNtYWxsIHZhcmlhYmxlXHJcbiAqL1xyXG4udS1tYXJnaW4tbGVmdC1zbWFsbCB7XHJcblx0bWFyZ2luLWxlZnQ6ICRzcGFjaW5nLXNtYWxsICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBNYXJnaW4gbGVmdFxyXG4gKiAxKSBGb3JjZSBtYXJnaW4gbGVmdCBvZiAkc3BhY2luZyB2YXJpYWJsZVxyXG4gKi9cclxuLnUtbWFyZ2luLWxlZnQge1xyXG5cdG1hcmdpbi1sZWZ0OiAkc3BhY2luZyAhaW1wb3J0YW50O1xyXG59XHJcblxyXG4vKipcclxuICogTWFyZ2luIGxlZnQgbGFyZ2VcclxuICogMSkgRm9yY2UgbWFyZ2luIGxlZnQgb2YgJHNwYWNpbmctbGFyZ2UgdmFyaWFibGVcclxuICovXHJcbi51LW1hcmdpbi1sZWZ0LWxhcmdlIHtcclxuXHRtYXJnaW4tbGVmdDogJHNwYWNpbmctbGFyZ2UgIWltcG9ydGFudDtcclxufVxyXG5cclxuLyoqXHJcbiAqIENlbnRlciBkaXNwbGF5IGJsb2NrIGNvbnRlbnRzXHJcbiAqL1xyXG4udS1tYXJnaW4tY2VudGVyIHtcclxuXHRtYXJnaW46IDAgYXV0byAhaW1wb3J0YW50O1xyXG59XHJcblxyXG4vKipcclxuICogUGFkZGluZyBub25lXHJcbiAqL1xyXG4udS1wYWRkaW5nLW5vbmUge1xyXG5cdHBhZGRpbmc6IDAgIWltcG9ydGFudDtcclxufVxyXG5cclxuLyoqXHJcbiAqIFBhZGRpbmcgc21hbGxcclxuICovXHJcbi51LXBhZGRpbmctc21hbGwge1xyXG5cdHBhZGRpbmc6ICRzcGFjaW5nLXNtYWxsICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBQYWRkaW5nXHJcbiAqL1xyXG4udS1wYWRkaW5nIHtcclxuXHRwYWRkaW5nOiAkc3BhY2luZyAhaW1wb3J0YW50O1xyXG59XHJcblxyXG4vKipcclxuICogUGFkZGluZyBsYXJnZVxyXG4gKi9cclxuLnUtcGFkZGluZy1sYXJnZSB7XHJcblx0cGFkZGluZzogJHNwYWNpbmctbGFyZ2UgIWltcG9ydGFudDtcclxufVxyXG5cclxuLyoqXHJcbiAqIFBhZGRpbmcgdG9wIG5vbmVcclxuICovXHJcbi51LXBhZGRpbmctdG9wLW5vbmUge1xyXG5cdHBhZGRpbmctdG9wOiAwICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBQYWRkaW5nIHRvcCBzbWFsbFxyXG4gKi9cclxuLnUtcGFkZGluZy10b3Atc21hbGwge1xyXG5cdHBhZGRpbmctdG9wOiAkc3BhY2luZy1zbWFsbCAhaW1wb3J0YW50O1xyXG59XHJcblxyXG4vKipcclxuICogUGFkZGluZyB0b3BcclxuICovXHJcbi51LXBhZGRpbmctdG9wIHtcclxuXHRwYWRkaW5nLXRvcDogJHNwYWNpbmcgIWltcG9ydGFudDtcclxufVxyXG5cclxuLyoqXHJcbiAqIFBhZGRpbmcgdG9wIGxhcmdlXHJcbiAqL1xyXG4udS1wYWRkaW5nLXRvcC1sYXJnZSB7XHJcblx0cGFkZGluZy10b3A6ICRzcGFjaW5nLWxhcmdlICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBQYWRkaW5nIGJvdHRvbSBub25lXHJcbiAqL1xyXG4udS1wYWRkaW5nLWJvdHRvbS1ub25lIHtcclxuXHRwYWRkaW5nLWJvdHRvbTogMCAhaW1wb3J0YW50O1xyXG59XHJcblxyXG4vKipcclxuICogUGFkZGluZyBib3R0b20gc21hbGxcclxuICovXHJcbi51LXBhZGRpbmctYm90dG9tLXNtYWxsIHtcclxuXHRwYWRkaW5nLWJvdHRvbTogJHNwYWNpbmctc21hbGwgIWltcG9ydGFudDtcclxufVxyXG5cclxuLyoqXHJcbiAqIFBhZGRpbmcgYm90dG9tXHJcbiAqL1xyXG4udS1wYWRkaW5nLWJvdHRvbSB7XHJcblx0cGFkZGluZy1ib3R0b206ICRzcGFjaW5nICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBQYWRkaW5nIGJvdHRvbSBsYXJnZVxyXG4gKi9cclxuLnUtcGFkZGluZy1ib3R0b20tbGFyZ2Uge1xyXG5cdHBhZGRpbmctYm90dG9tOiAkc3BhY2luZy1sYXJnZSAhaW1wb3J0YW50O1xyXG59XHJcblxyXG4vKipcclxuICogUGFkZGluZyByaWdodCBub25lXHJcbiAqL1xyXG4udS1wYWRkaW5nLXJpZ2h0LW5vbmUge1xyXG5cdHBhZGRpbmctcmlnaHQ6IDAgIWltcG9ydGFudDtcclxufVxyXG5cclxuLyoqXHJcbiAqIFBhZGRpbmcgcmlnaHQgc21hbGxcclxuICovXHJcbi51LXBhZGRpbmctcmlnaHQtc21hbGwge1xyXG5cdHBhZGRpbmctcmlnaHQ6ICRzcGFjaW5nLXNtYWxsICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBQYWRkaW5nIHJpZ2h0XHJcbiAqL1xyXG4udS1wYWRkaW5nLXJpZ2h0IHtcclxuXHRwYWRkaW5nLXJpZ2h0OiAkc3BhY2luZyAhaW1wb3J0YW50O1xyXG59XHJcblxyXG4vKipcclxuICogUGFkZGluZyByaWdodCBsYXJnZVxyXG4gKi9cclxuLnUtcGFkZGluZy1yaWdodC1sYXJnZSB7XHJcblx0cGFkZGluZy1yaWdodDogJHNwYWNpbmctbGFyZ2UgIWltcG9ydGFudDtcclxufVxyXG5cclxuLyoqXHJcbiAqIFBhZGRpbmcgbGVmdCBub25lXHJcbiAqL1xyXG4udS1wYWRkaW5nLWxlZnQtbm9uZSB7XHJcblx0cGFkZGluZy1sZWZ0OiAwICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBQYWRkaW5nIGxlZnQgc21hbGxcclxuICovXHJcbi51LXBhZGRpbmctbGVmdC1zbWFsbCB7XHJcblx0cGFkZGluZy1sZWZ0OiAkc3BhY2luZy1zbWFsbCAhaW1wb3J0YW50O1xyXG59XHJcblxyXG4vKipcclxuICogUGFkZGluZyBsZWZ0XHJcbiAqL1xyXG4udS1wYWRkaW5nLWxlZnQge1xyXG5cdHBhZGRpbmctbGVmdDogJHNwYWNpbmcgIWltcG9ydGFudDtcclxufVxyXG5cclxuLyoqXHJcbiAqIFBhZGRpbmcgbGVmdCBsYXJnZVxyXG4gKi9cclxuLnUtcGFkZGluZy1sZWZ0LWxhcmdlIHtcclxuXHRwYWRkaW5nLWxlZnQ6ICRzcGFjaW5nLWxhcmdlICFpbXBvcnRhbnQ7XHJcbn1cclxuIl19 */
