@charset "UTF-8";
/*------------------------------------*\
    #DEFAULTS
\*------------------------------------*/
/*------------------------------------*\
    #SETTINGS-RESPONSIVE
\*------------------------------------*/
/**
 * Colour variables
 *
 * These are the colours that are used throughout the website.
 */
/**
 * Animation Settings
 *
 * These are the settings used for animation purposes
 *
 */
/**
 * Font variables
 *
 * These are the fonts that are used throughout the website.
 */
/**
 * Inuit Default Settings
 *
 * These variables are used to override the Inuit Default defaults
 */
/**
 * Bonito Container Settings
 *
 * These variables are used to override the Bonito Container defaults
 */
/**
 * Bonito Layout Settings
 *
 * These variables are used to override the Bonito Layoutdefaults
 */
/**
 * Inuit Heading Settings
 *
 * These variables are used to override the Inuit Heading defaults
 */
/*------------------------------------*\
    #BUTTONS
\*------------------------------------*/
/**
 * A simple button object.
 */
/*------------------------------------*\
    #SPACING
\*------------------------------------*/
/**
 * Margin and padding helper classes. Use these to tweak layout on a micro
 * level.
 *
 * `.(m|p)(t|r|b|l|h|v)(-|+|0) {}` = margin/padding top/right/bottom/left/horizontal/vertical less/more/none
 */
/**
 * Bonito Alignment Settings
 *
 * These variables are used to override the Bonito Alignment defaults
 */
/**
 * Bonito Flag Settings
 *
 * These variables are used to override the Bonito Alignment defaults
 */
/*------------------------------------*\
    #FUNCTIONS
\*------------------------------------*/
/*------------------------------------*\
    #MIXINS
\*------------------------------------*/
/*------------------------------------*\
    #TOOLS-RESPONSIVE
\*------------------------------------*/
/*! normalize.css v3.0.3 | MIT License | bitbucket.org/necolas/normalize.css */
/**
 * 1. Set default font family to sans-serif.
 * 2. Prevent iOS and IE text size adjust after device orientation change,
 *    without disabling user zoom.
 */
html {
  font-family: sans-serif; /* 1 */
  -ms-text-size-adjust: 100%; /* 2 */
  -webkit-text-size-adjust: 100%; /* 2 */
}

/**
 * Remove default margin.
 */
body {
  margin: 0;
}

/* HTML5 display definitions
   ========================================================================== */
/**
 * Correct `block` display not defined for any HTML5 element in IE 8/9.
 * Correct `block` display not defined for `details` or `summary` in IE 10/11
 * and Firefox.
 * Correct `block` display not defined for `main` in IE 11.
 */
article,
aside,
details,
figcaption,
figure,
footer,
header,
main,
menu,
nav,
section,
summary {
  display: block;
}

/**
 * 1. Correct `inline-block` display not defined in IE 8/9.
 * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.
 */
audio,
canvas,
progress,
video {
  display: inline-block; /* 1 */
  vertical-align: baseline; /* 2 */
}

/**
 * Prevent modern browsers from displaying `audio` without controls.
 * Remove excess height in iOS 5 devices.
 */
audio:not([controls]) {
  display: none;
  height: 0;
}

/**
 * Address `[hidden]` styling not present in IE 8/9/10.
 * Hide the `template` element in IE 8/9/10/11, Safari, and Firefox < 22.
 */
[hidden],
template {
  display: none;
}

/* Links
   ========================================================================== */
/**
 * Remove the gray background color from active links in IE 10.
 */
a {
  background-color: transparent;
}

/**
 * Improve readability of focused elements when they are also in an
 * active/hover state.
 */
a:active,
a:hover {
  outline: 0;
}

/* Text-level semantics
   ========================================================================== */
/**
 * Address styling not present in IE 8/9/10/11, Safari, and Chrome.
 */
abbr[title] {
  border-bottom: 1px dotted;
}

/**
 * Address style set to `bolder` in Firefox 4+, Safari, and Chrome.
 */
b,
strong {
  font-weight: bold;
}

/**
 * Address styling not present in Safari and Chrome.
 */
dfn {
  font-style: italic;
}

/**
 * Address variable `h1` font-size and margin within `section` and `article`
 * contexts in Firefox 4+, Safari, and Chrome.
 */
h1 {
  font-size: 2em;
  margin: 0.67em 0;
}

/**
 * Address styling not present in IE 8/9.
 */
mark {
  background: #ff0;
  color: #000;
}

/**
 * Address inconsistent and variable font size in all browsers.
 */
small {
  font-size: 80%;
}

/**
 * Prevent `sub` and `sup` affecting `line-height` in all browsers.
 */
sub,
sup {
  font-size: 75%;
  line-height: 0;
  position: relative;
  vertical-align: baseline;
}

sup {
  top: -0.5em;
}

sub {
  bottom: -0.25em;
}

/* Embedded content
   ========================================================================== */
/**
 * Remove border when inside `a` element in IE 8/9/10.
 */
img {
  border: 0;
}

/**
 * Correct overflow not hidden in IE 9/10/11.
 */
svg:not(:root) {
  overflow: hidden;
}

/* Grouping content
   ========================================================================== */
/**
 * Address margin not present in IE 8/9 and Safari.
 */
figure {
  margin: 1em 40px;
}

/**
 * Address differences between Firefox and other browsers.
 */
hr {
  box-sizing: content-box;
  height: 0;
}

/**
 * Contain overflow in all browsers.
 */
pre {
  overflow: auto;
}

/**
 * Address odd `em`-unit font size rendering in all browsers.
 */
code,
kbd,
pre,
samp {
  font-family: monospace, monospace;
  font-size: 1em;
}

/* Forms
   ========================================================================== */
/**
 * Known limitation: by default, Chrome and Safari on OS X allow very limited
 * styling of `select`, unless a `border` property is set.
 */
/**
 * 1. Correct color not being inherited.
 *    Known issue: affects color of disabled elements.
 * 2. Correct font properties not being inherited.
 * 3. Address margins set differently in Firefox 4+, Safari, and Chrome.
 */
button,
input,
optgroup,
select,
textarea {
  color: inherit; /* 1 */
  font: inherit; /* 2 */
  margin: 0; /* 3 */
}

/**
 * Address `overflow` set to `hidden` in IE 8/9/10/11.
 */
button {
  overflow: visible;
}

/**
 * Address inconsistent `text-transform` inheritance for `button` and `select`.
 * All other form control elements do not inherit `text-transform` values.
 * Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera.
 * Correct `select` style inheritance in Firefox.
 */
button,
select {
  text-transform: none;
}

/**
 * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`
 *    and `video` controls.
 * 2. Correct inability to style clickable `input` types in iOS.
 * 3. Improve usability and consistency of cursor style between image-type
 *    `input` and others.
 */
button,
html input[type=button],
input[type=reset],
input[type=submit] {
  -webkit-appearance: button; /* 2 */
  cursor: pointer; /* 3 */
}

/**
 * Re-set default cursor for disabled elements.
 */
button[disabled],
html input[disabled] {
  cursor: default;
}

/**
 * Remove inner padding and border in Firefox 4+.
 */
button::-moz-focus-inner,
input::-moz-focus-inner {
  border: 0;
  padding: 0;
}

/**
 * Address Firefox 4+ setting `line-height` on `input` using `!important` in
 * the UA stylesheet.
 */
input {
  line-height: normal;
}

/**
 * It's recommended that you don't attempt to style these elements.
 * Firefox's implementation doesn't respect box-sizing, padding, or width.
 *
 * 1. Address box sizing set to `content-box` in IE 8/9/10.
 * 2. Remove excess padding in IE 8/9/10.
 */
input[type=checkbox],
input[type=radio] {
  box-sizing: border-box; /* 1 */
  padding: 0; /* 2 */
}

/**
 * Fix the cursor style for Chrome's increment/decrement buttons. For certain
 * `font-size` values of the `input`, it causes the cursor style of the
 * decrement button to change from `default` to `text`.
 */
input[type=number]::-webkit-inner-spin-button,
input[type=number]::-webkit-outer-spin-button {
  height: auto;
}

/**
 * 1. Address `appearance` set to `searchfield` in Safari and Chrome.
 * 2. Address `box-sizing` set to `border-box` in Safari and Chrome.
 */
input[type=search] {
  -webkit-appearance: textfield; /* 1 */
  box-sizing: content-box; /* 2 */
}

/**
 * Remove inner padding and search cancel button in Safari and Chrome on OS X.
 * Safari (but not Chrome) clips the cancel button when the search input has
 * padding (and `textfield` appearance).
 */
input[type=search]::-webkit-search-cancel-button,
input[type=search]::-webkit-search-decoration {
  -webkit-appearance: none;
}

/**
 * Define consistent border, margin, and padding.
 */
fieldset {
  border: 1px solid #c0c0c0;
  margin: 0 2px;
  padding: 0.35em 0.625em 0.75em;
}

/**
 * 1. Correct `color` not being inherited in IE 8/9/10/11.
 * 2. Remove padding so people aren't caught out if they zero out fieldsets.
 */
legend {
  border: 0; /* 1 */
  padding: 0; /* 2 */
}

/**
 * Remove default vertical scrollbar in IE 8/9/10/11.
 */
textarea {
  overflow: auto;
}

/**
 * Don't inherit the `font-weight` (applied by a rule above).
 * NOTE: the default cannot safely be changed in Chrome and Safari on OS X.
 */
optgroup {
  font-weight: bold;
}

/* Tables
   ========================================================================== */
/**
 * Remove most spacing between table cells.
 */
table {
  border-collapse: collapse;
  border-spacing: 0;
}

td,
th {
  padding: 0;
}

/*------------------------------------*\
    #RESET
\*------------------------------------*/
/**
 * As well as using normalize.css, it is often advantageous to remove all
 * margins from certain elements.
 */
body,
h1, h2, h3, h4, h5, h6,
p, blockquote, pre,
dl, dd, ol, ul,
form, fieldset, legend,
figure,
table, th, td, caption,
hr {
  margin: 0;
  padding: 0;
}

/**
 * Give a help cursor to elements that give extra info on `:hover`.
 */
abbr[title],
dfn[title] {
  cursor: help;
}

/**
 * Remove underlines from potentially troublesome elements.
 */
u,
ins {
  text-decoration: none;
}

/**
 * Apply faux underlines to inserted text via `border-bottom`.
 */
ins {
  border-bottom: 1px solid;
}

/*------------------------------------*\
    #BOX-SIZING
\*------------------------------------*/
/**
 * Set the global `box-sizing` state to `border-box`.
 *
 * css-tricks.com/inheriting-box-sizing-probably-slightly-better-best-practice
 * paulirish.com/2012/box-sizing-border-box-ftw
 */
html {
  box-sizing: border-box;
}

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

/*------------------------------------*\
    #SHARED
\*------------------------------------*/
/**
 * Where `margin-bottom` is concerned,this value will be the same as the
 * base line-height. This allows us to keep a consistent vertical rhythm.
 * As per: csswizardry.com/2012/06/single-direction-margin-declarations
 */
h1, h2, h3, h4, h5, h6,
ul, ol, dl,
blockquote, p, address,
hr,
table,
fieldset, figure,
pre,
.beta {
  margin-bottom: 16px;
  margin-bottom: 1rem;
}

/**
 * Where `margin-left` is concerned we want to try and indent certain elements
 * by a consistent amount. Define that amount once,here.
 */
ul, ol, dd {
  margin-left: 32px;
  margin-left: 2rem;
}

/*------------------------------------*\
    #PAGE
\*------------------------------------*/
/**
 * High-, page-level styling.
 *
 * 1. Set the default `font-size` and `line-height` for the entire project,
 *    sourced from our default variables. The `font-size` is calculated to exist
 *    in ems, the `line-height` is calculated to exist unitlessly.
 * 2. Force scrollbars to always be visible to prevent awkward ‘jumps’ when
 *    navigating between pages that do/do not have enough content to produce
 *    scrollbars naturally.
 * 3. Ensure the page always fills at least the entire height of the viewport.
 * 4. Prevent certain mobile browsers from automatically zooming fonts.
 * 5. Fonts on OSX will look more consistent with other systems that do not
 *    render text using sub-pixel anti-aliasing.
 */
html {
  font-size: 1em; /* [1] */
  line-height: 1.25; /* [1] */
  background-color: #3B3A36;
  color: #ffffff;
  overflow-y: scroll; /* [2] */
  min-height: 100%; /* [3] */
  -webkit-text-size-adjust: 100%; /* [4] */
  -ms-text-size-adjust: 100%; /* [4] */
  -moz-osx-font-smoothing: grayscale; /* [5] */
  -webkit-font-smoothing: antialiased; /* [5] */
}

/*------------------------------------*\
    #HEADINGS
\*------------------------------------*/
/**
 * Headings 1–6.
 */
h1 {
  font-size: 32px;
  font-size: 2rem;
  line-height: 1.25;
}

h2 {
  font-size: 28px;
  font-size: 1.75rem;
  line-height: 1.4285714286;
}

h3 {
  font-size: 20px;
  font-size: 1.25rem;
  line-height: 1;
}

h4 {
  font-size: 16px;
  font-size: 1rem;
  line-height: 1.25;
}

h5 {
  font-size: 16px;
  font-size: 1rem;
  line-height: 1.25;
}

h6 {
  font-size: 16px;
  font-size: 1rem;
  line-height: 1.25;
}

/*------------------------------------*\
    #LISTS
\*------------------------------------*/
/**
 * Remove extra vertical spacing when nesting lists.
 */
li > ul,
li > ol {
  margin-bottom: 0;
}

/*------------------------------------*\
    #IMAGES
\*------------------------------------*/
/**
 * 1. Fluid images for responsive purposes.
 * 2. Offset `alt` text from surrounding copy.
 * 3. Setting `vertical-align` removes the whitespace that appears under `img`
 *    elements when they are dropped into a page as-is. Safer alternative to
 *    using `display: block;`.
 */
img {
  max-width: 100%; /* [1] */
  font-style: italic; /* [2] */
  vertical-align: middle; /* [3] */
}

/**
 * 1. Google Maps breaks if `max-width: 100%` acts upon it; use their selector
 *    to remove the effects.
 * 2. If a `width` and/or `height` attribute have been explicitly defined, let’s
 *    not make the image fluid.
 */
.gm-style img,
img[width],
img[height] { /* [2] */
  max-width: none;
}

/**
 * Page Base Styling
 */
html {
  height: 100%;
  color: #ffffff;
  font-family: "futura-pt", Trebuchet MS, Arial, sans-serif;
  background: #FE8600;
}

body {
  background: #3B3A36;
  min-height: 100%;
}

a {
  color: #ffffff;
}

/**
 * Typographic base styles
 *
 * Follows SilverStripes' convention of wrapping key typographic elements in `.typography`
 *
 * Example:
 *  <div class="typography">
 *      <p> ... </p>
 *  </div>
 */
.typography h1, .typography h2, .typography h3, .typography h4, .typography h5, .typography h6 {
  color: #52BBA3;
}
.typography blockquote {
  position: relative;
  padding: 16px;
  margin-left: 96px;
  margin-top: 32px;
  margin-bottom: 32px;
  font-size: 18px;
  font-size: 1.125rem;
  line-height: 22px;
  border: 10px solid #52BBA3;
  border-radius: 4px;
}
.typography blockquote:before {
  content: "";
  position: absolute;
  top: -10px;
  left: -80px;
  background-image: url(/images/quote-mark.svg);
  background-repeat: no-repeat;
  width: 54px;
  height: 42px;
}
/**
 * Headings base styling
 *
 */
h1,
h2,
h3,
h4,
h5,
h6 {
  font-weight: normal;
}

/*------------------------------------*\
    #BLOCK
\*------------------------------------*/
/**
 * The block object simply stacks an image on top of some text-like content.
 */
/**
 * Stacked image-with-text object. A simple abstraction to cover a very commonly
 * occurring design pattern.
 */
.block {
  display: block;
}

/**
 * 1. Eliminate whitespace around images.
 */
.block__img {
  vertical-align: middle; /* [1] */
  margin-bottom: 16px;
}

/**
 * Text-content.
 */
.block__body {
  display: block;
}

/*------------------------------------*\
    #BUTTONS
\*------------------------------------*/
/**
 * A simple button object.
 */
/**
 * 1. Allow us to style box model properties.
 * 2. Line different sized buttons up a little nicer.
 * 3. Make buttons inherit font styles (often necessary when styling `input`s as
 *    buttons).
 * 4. Reset/normalize some styles.
 * 5. Force all button-styled elements to appear clickable.
 * 6. Fixes odd inner spacing in IE7.
 * 7. Subtract the border size from the padding value so that buttons do not
 *    grow larger as we add borders.
 */
.btn,
.typography a {
  display: inline-block; /* [1] */
  vertical-align: middle; /* [2] */
  font: inherit; /* [3] */
  text-align: center; /* [4] */
  margin: 0; /* [4] */
  cursor: pointer; /* [5] */
  overflow: visible; /* [6] */
  padding: 8px 16px; /* [7] */
  background-color: #52BBA3;
  border: none; /* [4] */
  border-radius: 5px;
}
.btn, .btn:hover, .btn:active, .btn:focus,
.typography a {
  text-decoration: none; /* [4] */
  color: #ffffff;
}

/**
 * Fix a Firefox bug whereby `input type="submit"` gains 2px extra padding.
 */
.btn::-moz-focus-inner,
.typography a::-moz-focus-inner {
  border: 0;
  padding: 0;
}

/**
 * Full-width buttons.
 */
.btn--full {
  width: 100%;
}

/**
 * Container Object
 *
 * The object is used to horizontally align an element past a certain max width.
 *
 * Example:
 *  <div class="wrapper">
 *     <div class="container">
 *          ...
 *      </div>
 *  </div>
 *
 */
.container {
  max-width: 972px;
  margin: 0 auto;
  padding: 0 16px;
}

/*------------------------------------*\
    #FLAG
\*------------------------------------*/
/**
 * The flag object is a design pattern similar to the media object, however it
 * utilises `display: table[-cell];` to give us control over the vertical
 * alignments of the text and image. csswizardry.com/2013/05/the-flag-object
 */
/**
 * 1. Allows us to control vertical alignments
 * 2. Force the object to be the full width of its parent. Combined with [1],
 *    this makes the object behave in a quasi-`display: block;` manner.
 */
.flag {
  display: table; /* [1] */
  width: 100%; /* [2] */
}

/**
 * Items within a flag object. There should only ever be one of each.
 *
 * 1. Default to aligning content to their middles.
 */
.flag__img,
.flag__body {
  display: table-cell;
  vertical-align: middle; /* [1] */
}

/**
 * Flag images have a space between them and the body of the object.
 */
.flag__img {
  padding-right: 16px;
}
.flag__img > img {
  display: block;
  max-width: none;
}

/**
 * The container for the main content of the flag object.
 *
 * 1. Forces the `.flag__body` to take up all remaining space.
 */
.flag__body {
  width: 100%; /* [1] */
}
.flag__body,
.flag__body > :last-child {
  margin-bottom: 0;
}

/**
 * Small flags.
 */
.flag--small > .flag__img {
  padding-right: 8px;
}

/*------------------------------------*\
    #LAYOUT
\*------------------------------------*/
/**
 * The framework layout system uses `box-sizing: border-box;` and
 * `display: inline-block;` to create an extremely powerful, flexible
 * alternative to the traditional grid system. Combine the layout items with
 * the widths found in `trumps.widths`.
 */
/**
 * Begin a layout group.
 */
.layout {
  list-style: none;
  margin: 0;
  padding: 0;
  margin-left: -5px;
}

/**
 * 1. Cause columns to stack side-by-side.
 * 2. Space columns apart.
 * 3. Align columns to the tops of each other.
 * 4. Full-width unless told to behave otherwise.
 * 5. Required to combine fluid widths and fixed gutters.
 */
.layout__item {
  display: inline-block; /* [1] */
  padding-left: 5px; /* [2] */
  vertical-align: top; /* [3] */
  width: 100%; /* [4] */
}

/**
 * Layouts with huge gutters.
 */
.layout--huge {
  margin-left: -16px;
}
.layout--huge > .layout__item {
  padding-left: 16px;
}

/**
 * Align layout items to the vertical centers of each other.
 */
.layout--middle > .layout__item {
  vertical-align: middle;
}

/**
 * Make the layout items fill up from the center outward.
 */
.layout--center {
  text-align: center;
}
.layout--center > .layout__item {
  text-align: left;
}

/*------------------------------------*\
    #LIST-INLINE
\*------------------------------------*/
/**
 * The list-inline object simply displays a list of items in one line.
 */
.list-inline {
  margin: 0;
  padding: 0;
  list-style: none;
}
.list-inline > li {
  display: inline-block;
}

/*------------------------------------*\
    #LIST-UI
\*------------------------------------*/
/**
 * The UI list object creates blocky list items with a keyline separator out of
 * a `ul` or `ol`.
 */
.list-ui,
.list-ui__item,
.list-ui > li {
  border: 0 solid #ccc;
}

.list-ui {
  margin: 0;
  padding: 0;
  list-style: none;
  border-top-width: 1px;
}
.list-ui__item,
.list-ui > li {
  padding: 16px;
  border-bottom-width: 1px;
}

/*------------------------------------*\
    #MEDIA
\*------------------------------------*/
/**
 * Place any image- and text-like content side-by-side, as per:
 * stubbornella.org/content/2010/06/25/the-media-object-saves-hundreds-of-lines-of-code
 */
.media {
  display: block;
}

.media__img {
  float: left;
  margin-right: 16px;
}
.media__img > img {
  display: block;
}

.media__body {
  overflow: hidden;
  display: block;
}
.media__body,
.media__body > :last-child {
  margin-bottom: 0;
}

/*------------------------------------*\
    #PACK
\*------------------------------------*/
/**
 * The pack object simply causes any number of elements pack up horizontally to
 * automatically fill an equal, fluid width of their parent.
 */
/**
 * 1. Fill all available space.
 * 2. Cause children to be automatically equally sized.
 */
.pack {
  width: 100%; /* [1] */
  display: table;
  table-layout: fixed; /* [2] */
}

/**
 * Cause children to adopt table-like structure.
 */
.pack__item {
  display: table-cell;
}

/*------------------------------------*\
    #TABLES
\*------------------------------------*/
.table {
  width: 100%;
}

/*------------------------------------*\
    #TABS
\*------------------------------------*/
/**
 * A simple abstraction for making equal-width navigation tabs.
 */
/**
 * 1. Reset any residual styles (most likely from lists).
 * 2. Tables for layout!
 * 3. Force all `table-cell` children to have equal widths.
 * 4. Force the object to be the full width of its parent. Combined with [2],
 *    this makes the object behave in a quasi-`display: block;` manner.
 */
.tabs {
  margin: 0; /* [1] */
  padding: 0; /* [1] */
  list-style: none; /* [1] */
  display: table; /* [2] */
  table-layout: fixed; /* [3] */
  width: 100%; /* [4] */
  text-align: center;
}

.tabs__item {
  display: table-cell; /* [2] */
}

.tabs__link {
  display: block;
}

/** 
 * Component Object
 *
 * These stylings are used to style up the pattern library
 *
 */
.component {
  padding-top: 16px;
  padding-bottom: 16px;
  border-bottom: 1px solid #52BBA3;
}

.component__title {
  border-bottom: 1px solid #52BBA3;
  line-height: 2em;
  margin-bottom: 16px;
}

/**
 * Container stlyes
 *
 * Extra modifiers for the container
 *
 * Example:
 *  <div class="container container--slim"></div>
 */
.container--slim {
  max-width: 542px;
}

.container--slender {
  max-width: 595px;
  padding-left: 32px;
  padding-right: 32px;
}

/**
 * Heading styles
 *
 * Specific heading styles
 *
 * Example:
 *  <h2 class="h-primary"> ... </h2>
 */
.h-primary {
  color: #FE8600;
}

.h-secondary {
  color: #52BBA3;
  font-size: 32px;
  font-size: 2rem;
  line-height: 40px;
}

.h-tertiary {
  color: #ffffff;
  color: rgba(255, 255, 255, 0.7);
}

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

.h-standout__header-top,
.h-standout__header-middle,
.h-standout__header-bottom {
  display: block;
  text-transform: uppercase;
}

.h-standout__header-top {
  font-size: 41px;
  font-size: 2.5625rem;
  line-height: 44px;
  font-weight: 700;
}

.h-standout__header-top--secondary {
  font-size: 38px;
  font-size: 2.375rem;
  line-height: 48px;
  font-weight: normal;
  text-transform: none;
  color: #52BBA3;
}

.h-standout__header-middle {
  font-size: 16px;
  font-size: 1rem;
  line-height: 32px;
  letter-spacing: 7px;
}

.h-standout__header-bottom {
  font-size: 56px;
  font-size: 3.5rem;
  line-height: 56px;
  letter-spacing: 10px;
}

/**
 * Responsive layout
 *
 * This object enables you to use .layout--rev at different breakpoints
 *
 * Example:
 *  <div class="layout layout--rev-lap-and-up> ... </div>
 */
@media screen and (max-width: 44.9375em) {
  /**
   * Reversed rendered order of layout items, e.g. items 1, 2, 3, 4 in your
   * markup will display in order 4, 3, 2, 1 on your page.
   */
  .layout--rev-palm {
    direction: rtl;
    text-align: left;
  }
  .layout--rev-palm > .layout__item {
    direction: ltr;
    text-align: left;
  }
}
@media screen and (min-width: 45em) and (max-width: 63.9375em) {
  /**
   * Reversed rendered order of layout items, e.g. items 1, 2, 3, 4 in your
   * markup will display in order 4, 3, 2, 1 on your page.
   */
  .layout--rev-lap {
    direction: rtl;
    text-align: left;
  }
  .layout--rev-lap > .layout__item {
    direction: ltr;
    text-align: left;
  }
}
@media screen and (min-width: 45em) {
  /**
   * Reversed rendered order of layout items, e.g. items 1, 2, 3, 4 in your
   * markup will display in order 4, 3, 2, 1 on your page.
   */
  .layout--rev-lap-and-up {
    direction: rtl;
    text-align: left;
  }
  .layout--rev-lap-and-up > .layout__item {
    direction: ltr;
    text-align: left;
  }
}
@media screen and (max-width: 63.9375em) {
  /**
   * Reversed rendered order of layout items, e.g. items 1, 2, 3, 4 in your
   * markup will display in order 4, 3, 2, 1 on your page.
   */
  .layout--rev-portable {
    direction: rtl;
    text-align: left;
  }
  .layout--rev-portable > .layout__item {
    direction: ltr;
    text-align: left;
  }
}
@media screen and (min-width: 64em) {
  /**
   * Reversed rendered order of layout items, e.g. items 1, 2, 3, 4 in your
   * markup will display in order 4, 3, 2, 1 on your page.
   */
  .layout--rev-desk {
    direction: rtl;
    text-align: left;
  }
  .layout--rev-desk > .layout__item {
    direction: ltr;
    text-align: left;
  }
}
/**
 * Flag styling
 *
 * Extra flag options for the Bonito Flag Object
 *
 * Example:
 *  <div class="flag flag--inline"> ... </div>
 */
.flag__img svg {
  display: block;
}

.flag--inline .flag__body {
  width: auto;
}

@media screen and (max-width: 44.9375em) {
  .flag--flush-palm > .flag__img {
    padding-right: 0;
    padding-left: 0;
  }
}
/**
 * Toggle documentation
 *
 * An abstracted and remixed object base upon Jeremy Kieth's accessibility toggle
 * https://adactio.com/journal/10475
 *
 * Example:
 *
 */
.toggle [aria-hidden=true] {
  display: none;
}
.toggle .toggle__content--is-open {
  display: block;
}
:focus {
  outline: none;
}

/**
 * Video Object
 *
 * This class is used for responsive youtube/viemo videos
 *
 * Example:
 *  <div class="video">
 *      <iframe src="https://www.youtube.com/embed/RI8zWAnGKug" frameborder="0" allowfullscreen></iframe>
 *  </div>
 *
 */
.video {
  position: relative;
  padding-bottom: 53%;
  padding-top: 25px;
  height: 0;
  margin-bottom: 32px;
}
.video iframe {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
}

/**
 * Divider Object
 *
 * This is used to style dividers
 *
 * Example:
 *  <p class='divider'><span class="divider__text">or</span></p>
 */
.divider {
  position: relative;
  font-size: 18px;
  font-size: 1.125rem;
  line-height: 1.1111111111;
  text-align: center;
  z-index: 2;
}
.divider .divider__text {
  display: inline-block;
  background-color: #F6F6F6;
  padding: 0 16px;
}
.divider:after {
  content: "";
  position: absolute;
  height: 1px;
  width: 100%;
  background-color: #5B5B5B;
  top: 10px;
  left: 0;
  z-index: -1;
}

.divider--white .divider__text {
  background-color: #3B3A36;
}
.divider--white:after {
  background-color: #ffffff;
}

/**
 * Buttons styling
 *
 */
.btn {
  font-size: 20px;
  font-size: 1.25rem;
  line-height: 32px;
  margin-bottom: 16px;
  padding-top: 8px;
  padding-bottom: 8px;
  padding-left: 24px;
  padding-right: 24px;
  color: #ffffff;
  transition: background 0.2s cubic-bezier(0.4, 0, 0.2, 1), color 0.2s cubic-bezier(0.4, 0, 0.2, 1);
}
.btn:hover {
  background: #7ECCBA;
}

.typography a:hover,
.btn--primary:hover {
  background: #7ECCBA;
}

.btn--secondary {
  background: #4A90E2; /* Old browsers */ /* FF3.6-15 */ /* Chrome10-25,Safari5.1-6 */
  background: linear-gradient(to bottom, #0D7CCB 0%, #4A90E2 100%); /* W3C, IE10+, FF16+, Chrome26+, Opera12+, Safari7+ */
  box-shadow: inset 0 -1px 1px 0 rgba(0, 0, 0, 0.33);
}
.btn--secondary:hover {
  background: #4A90E2; /* Old browsers */ /* FF3.6-15 */ /* Chrome10-25,Safari5.1-6 */
  background: linear-gradient(to bottom, #4A90E2 0%, #0D7CCB 100%); /* W3C, IE10+, FF16+, Chrome26+, Opera12+, Safari7+ */
}

.btn--tertiary {
  background: #9B9B9B;
  color: #ffffff;
  box-shadow: inset 0 -1px 1px 0 rgba(0, 0, 0, 0.33);
}
.btn--tertiary:hover {
  background: #DDDDDD;
  color: #3B3A36;
}

.btn--pill {
  background: transparent;
  border: 2px solid #ffffff;
}
.btn--pill:hover {
  background: #52BBA3;
}

.btn--small {
  font-size: 16px;
  font-size: 1rem;
  line-height: 1.25;
  padding-top: 8px;
  padding-bottom: 8px;
  padding-left: 24px;
  padding-right: 24px;
}

@media screen and (max-width: 44.9375em) {
  .btn--palm-tiny {
    font-size: 13px;
    font-size: 0.8125rem;
    line-height: 1.5384615385;
    padding-top: 3px;
    padding-bottom: 3px;
    padding-left: 24px;
    padding-right: 24px;
    border-width: 1px;
  }
}
/**
 * Form styles
 *
 * Form and elements styling
 *
 */
.form {
  padding: 8px;
  margin-bottom: 16px;
  color: #5B5B5B;
  background: #F6F6F6;
  border-radius: 8px;
  box-shadow: 0px 2px 4px 0px rgba(0, 0, 0, 0.5);
}

.form__label {
  display: block;
  margin-bottom: 8px;
  font-size: 18px;
  font-size: 1.125rem;
  line-height: 1.1111111111;
  color: #52BBA3;
  text-align: left;
}

.form__field {
  position: relative;
}
.form__field .form__label {
  padding: 16px 16px;
  margin-bottom: 0;
  display: block;
  position: absolute;
  top: 0;
  left: 0;
  width: 142px;
  z-index: 2;
}

.form__link {
  color: #5B5B5B;
  background: none;
  border: none;
}
.form__link:hover {
  color: #52BBA3;
}

.form__control {
  position: relative;
  display: block;
  padding: 12px 16px 12px 142px;
  height: 49px;
  margin-bottom: 8px;
  width: 100%;
  font-size: 18px;
  font-size: 1.125rem;
  line-height: 1.1111111111;
  background-color: transparent;
  border: 1px solid #52BBA3;
  border-radius: 8px;
  transition: background 0.2s cubic-bezier(0.4, 0, 0.2, 1);
}
.form__control:focus {
  background-color: #ffffff;
  outline: none;
}
.form__control::-ms-expand {
  background-color: transparent;
  border: 0;
}
.form__control.form--is-selected {
  background-color: #ffffff;
}
.form__control.form--is-selected .form__select:before {
  border-top-color: #ffffff;
}
.form__control .form__select {
  position: absolute;
  top: -1px;
  left: 0;
  right: -1px;
  padding-left: 142px;
  padding-right: 56px;
  width: 100%;
  height: 49px;
  line-height: 49px;
  -webkit-appearance: none;
     -moz-appearance: none;
          appearance: none;
  border: none;
  background: transparent;
  cursor: pointer;
  z-index: 10;
}
.form__control .form__select:focus {
  outline: none;
}
.form__control .form__label {
  top: -1px;
}
.form__control:after {
  display: block;
  height: 49px;
  position: absolute;
  top: -1px;
  right: -1px;
  width: 48px;
  background: #52BBA3;
  border-radius: 0 8px 8px 0;
  content: "";
  z-index: 1;
}
.form__control:before {
  position: absolute;
  top: 21px;
  right: 13px;
  width: 0;
  height: 0;
  border-left: 9px solid transparent;
  border-right: 9px solid transparent;
  border-top: 10px solid #ffffff;
  content: "";
  z-index: 2;
}
.form__control:focus::-ms-value {
  color: #3B3A36;
  background: #ffffff;
}

.form__radio {
  display: none;
}
.form__radio + .form__radio-label {
  margin-right: 8px;
  font-size: 18px;
  font-size: 1.125rem;
  line-height: 1.1111111111;
  color: #52BBA3;
  cursor: pointer;
}
.form__radio + .form__radio-label:before {
  display: inline-block;
  margin-right: 4px;
  margin-top: 1px;
  background-color: #DDDDDD;
  height: 16px;
  width: 16px;
  border-radius: 16px;
  content: "";
}
.form__radio:checked + .form__radio-label:before {
  background-color: #52BBA3;
}

.form__field--error .form__label {
  color: #FE8600;
}
.form__field--error.form__control,
.form__field--error .form__control {
  border-color: #FE8600;
  box-shadow: 0 0 0 2px #FE8600;
}
.form__field--error.form__control:after,
.form__field--error .form__control:after {
  background-color: #FE8600;
}

.form__actions {
  overflow: hidden;
}
.form__actions .btn {
  margin-bottom: 0;
}

.form__message {
  text-align: right;
  font-style: italic;
  color: #FE8600;
}

select::-ms-expand {
  display: none;
}

.lt-ie10 .form__control {
  overflow: hidden;
}
.lt-ie10 .form__control .form__select {
  padding-right: 0;
}
.lt-ie10 .form__control:after, .lt-ie10 .form__control:before {
  display: none;
}

.form__small {
  font-size: 12px;
  font-size: 0.75rem;
  line-height: 1.6666666667;
  margin-bottom: 0;
  text-align: right;
  font-style: italic;
}

.js .form__field.form__control {
  padding: 0;
}

.form__field-xl .form__label {
  width: 178px;
}
.form__field-xl .form__control {
  padding-left: 178px;
}

@media screen and (min-width: 45em) {
  .form--padded {
    padding: 44px;
  }
}
/**
 * Progress stlying
 *
 * Used to create  a progres bar
 *
 * Example:
 *  <div class="progress" data-progress="75%"></div>
 */
.progress {
  position: relative;
  width: 100%;
  height: 16px;
  margin-bottom: 16px;
  background-image: linear-gradient(-90deg, #E4E4E4 1%, #CDCBCB 98%);
  box-shadow: inset 0px 1px 1px 0px rgba(0, 0, 0, 0.33);
  border-radius: 4px;
}
.progress:after {
  display: block;
  height: 16px;
  position: absolute;
  top: 0;
  left: 0;
  background-image: linear-gradient(-180deg, #52CCB0 0%, #52BBA3 100%);
  box-shadow: inset 0px -1px 1px 0px rgba(0, 0, 0, 0.33);
  border-radius: 4px;
  content: "";
}

.progress--1:after {
  width: 2.5%;
}

.progress--2:after {
  width: 5%;
}

.progress--3:after {
  width: 7.5%;
}

.progress--4:after {
  width: 10%;
}

.progress--5:after {
  width: 12.5%;
}

.progress--6:after {
  width: 15%;
}

.progress--7:after {
  width: 17.5%;
}

.progress--8:after {
  width: 20%;
}

.progress--9:after {
  width: 22.5%;
}

.progress--10:after {
  width: 25%;
}

.progress--11:after {
  width: 27.5%;
}

.progress--12:after {
  width: 30%;
}

.progress--13:after {
  width: 32.5%;
}

.progress--14:after {
  width: 35%;
}

.progress--15:after {
  width: 37.5%;
}

.progress--16:after {
  width: 40%;
}

.progress--17:after {
  width: 42.5%;
}

.progress--18:after {
  width: 45%;
}

.progress--19:after {
  width: 47.5%;
}

.progress--20:after {
  width: 50%;
}

.progress--21:after {
  width: 52.5%;
}

.progress--22:after {
  width: 55%;
}

.progress--23:after {
  width: 57.5%;
}

.progress--24:after {
  width: 60%;
}

.progress--25:after {
  width: 62.5%;
}

.progress--26:after {
  width: 65%;
}

.progress--27:after {
  width: 67.5%;
}

.progress--28:after {
  width: 70%;
}

.progress--29:after {
  width: 72.5%;
}

.progress--30:after {
  width: 75%;
}

.progress--31:after {
  width: 77.5%;
}

.progress--32:after {
  width: 80%;
}

.progress--33:after {
  width: 82.5%;
}

.progress--34:after {
  width: 85%;
}

.progress--35:after {
  width: 87.5%;
}

.progress--36:after {
  width: 90%;
}

.progress--37:after {
  width: 92.5%;
}

.progress--38:after {
  width: 95%;
}

.progress--39:after {
  width: 97.5%;
}

.progress--40:after {
  width: 100%;
}

/**
 * Question styling
 *
 * Example:
 *
 */
.question {
  text-align: center;
}

.question__number {
  font-size: 14px;
  font-size: 0.875rem;
  line-height: 1.4285714286;
  color: #FE8600;
}

.question__statement {
  font-size: 18px;
  font-size: 1.125rem;
  line-height: 24px;
  margin-left: 32px;
  margin-right: 32px;
  margin-bottom: 24px;
}

.question__label {
  font-size: 10px;
  font-size: 0.625rem;
  line-height: 12px;
  display: inline-block;
  margin-bottom: 0;
  vertical-align: middle;
  margin-right: 0;
  margin-left: 0;
  margin-bottom: 24px;
}

.question__answer {
  display: none;
}

.question__option {
  display: inline-block;
  margin-right: 0;
  margin-left: 0;
  margin-bottom: 24px;
  text-indent: -9999px;
  vertical-align: middle;
  border: 3px solid #52BBA3;
  border-radius: 50px;
  cursor: pointer;
}
.question__option-1 {
  height: 22px;
  width: 22px;
}
.question__option-2 {
  height: 30px;
  width: 30px;
}
.question__option-3 {
  height: 37px;
  width: 37px;
}
.question__option-4 {
  height: 45px;
  width: 45px;
}
.question__option-5 {
  height: 52px;
  width: 52px;
}

.question__option:hover,
.question__answer:checked + .question__option {
  background: #52BBA3;
}

@media screen and (min-width: 45em) {
  .question__statement {
    font-size: 22px;
    font-size: 1.375rem;
    line-height: 28px;
  }
  .question__label {
    font-size: 16px;
    font-size: 1rem;
    line-height: 20px;
    margin-right: 4px;
    margin-left: 4px;
  }
  .question__option {
    border-width: 5px;
    margin-right: 4px;
    margin-left: 4px;
  }
  .question__option-1 {
    height: 35px;
    width: 35px;
  }
  .question__option-2 {
    height: 46px;
    width: 46px;
  }
  .question__option-3 {
    height: 58px;
    width: 58px;
  }
  .question__option-4 {
    height: 70px;
    width: 70px;
  }
  .question__option-5 {
    height: 80px;
    width: 80px;
  }
}
/**
 * Group component
 *
 * A component dictating the styling for a group
 *
 * Example:
 *  <a href="#" class="group">
 *      <div class="group__icon"> ...</div>
 *      Name: <span class="group__name">Epic C.U super legend’s group of joy (Birmingham)</span>
 *  </a>
 */
.group {
  display: block;
  padding: 6px 8px;
  margin-bottom: 8px;
  color: #ffffff;
  text-decoration: none;
  font-size: 18px;
  font-size: 1.125rem;
  line-height: 24px;
  background-color: #FE8600;
  border-radius: 4px;
  transition: background 0.2s cubic-bezier(0.4, 0, 0.2, 1);
}
.group:hover {
  background-color: #52BBA3;
}

.group__name {
  display: none;
  font-style: italic;
  font-size: 18px;
  font-size: 1.125rem;
  line-height: 36px;
  margin-right: 16px;
}

@media screen and (min-width: 45em) {
  .group {
    font-size: 26px;
    font-size: 1.625rem;
    line-height: 36px;
  }
  .group__name {
    display: inline-block;
  }
}
/**
 * Hero Styles
 *
 * The styling for the hero element
 *
 */
.hero {
  text-align: center;
  background: linear-gradient(rgba(0, 0, 0, 0.33), rgba(0, 0, 0, 0.33)), url(/images/hero3.jpg);
  background-size: cover;
  background-position: center;
}
.hero--alt {
  text-align: left;
}
.hero--404 {
  padding-top: 16px;
  padding-bottom: 32px;
}

.hero__sub-header {
  margin-bottom: 24px;
  font-size: 24px;
  font-size: 1.5rem;
  line-height: 30px;
  color: #FE8600;
  text-transform: uppercase;
}

.hero--has-avatar {
  padding-bottom: 104px;
}

.hero__cut-out {
  background-color: #3B3A36;
}

.hero__cut-in {
  margin-top: -84px;
  margin-bottom: 16px;
}

.hero__header-huge {
  font-size: 120px;
  font-size: 7.5rem;
  line-height: 1;
}

@media screen and (min-width: 45em) {
  .hero {
    padding-top: 192px;
    padding-bottom: 192px;
  }
  .hero--alt {
    background-position: 85% center;
  }
  .hero--cut {
    padding-top: 196px;
  }
  .hero--404 {
    background-image: url(/images/hero-404.jpg);
    padding-top: 16px;
    padding-bottom: 128px;
  }
  .hero__cut-out {
    padding-top: 16px;
    margin-top: -128px;
  }
  .hero__header-huge {
    font-size: 240px;
    font-size: 15rem;
    line-height: 1;
  }
}
/** 
 * Header styles
 *
 * The header of the web page
 *
 * Example:
 *  
 */
.header {
  padding-top: 52px;
  background-color: #3B3A36;
}

.header__logo {
  max-width: 78px;
}

.header__avatar {
  width: 28px;
  height: 28px;
}

.header__nav {
  margin-bottom: 16px;
  padding: 8px 16px;
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 44px;
  background: #3B3A36;
  z-index: 100;
}

.header__user,
.header__settings {
  display: inline-block;
}

.header__user {
  float: left;
  width: 45%;
  margin-bottom: 0;
  text-align: left;
  line-height: 28px;
}
.header__user .header__link {
  color: #ffffff;
}

.header__link {
  color: #52BBA3;
  text-decoration: none;
}
.header__link:hover {
  text-decoration: underline;
}

.header__settings {
  display: inline-block;
  margin: 0 4px;
}
.header__settings svg {
  display: block;
}

@media screen and (max-width: 44.9375em) {
  .header__link {
    margin-bottom: 12px;
  }
}
.header__inline {
  vertical-align: middle;
}

.header__button {
  vertical-align: top;
  margin-bottom: 0;
}

@media screen and (min-width: 45em) {
  .header {
    padding-top: 16px;
    padding-bottom: 12px;
  }
  .header__nav {
    position: relative;
    margin-bottom: 16px;
    padding: 0;
    height: auto;
    background-color: transparent;
  }
  .header__user {
    text-align: right;
    float: none;
    width: auto;
    line-height: 20px;
  }
  .header__settings {
    margin: 0 16px;
  }
  .header__button {
    vertical-align: middle;
  }
}
/**
 * Banner styles
 *
 * The banner on the homepage with the count in
 *
 */
.banner {
  text-align: center;
  margin-top: -45px;
}

.banner__count {
  display: block;
  font-size: 60px;
  font-size: 3.75rem;
  line-height: 60px;
}

.banner__copy {
  background-color: #FE8600;
  padding-top: 45px;
  padding-bottom: 32px;
  margin-top: -45px;
}

.banner__icon {
  position: relative;
  margin: auto;
  padding-left: 13px;
  padding-right: 14px;
  padding-top: 14px;
  padding-bottom: 14px;
  width: 91px;
  height: 91px;
  background-color: #FE8600;
  border-radius: 50px;
}

/**
 * Quote styles
 *
 * The quote blocks for the homepage
 *
 * Example:
 *  <div class="quote">
 *       <img src="#" alt="Quote image" class="quote__img">
 *       <blockquote class="quote__copy">
 *          Knowing our group’s Mission Style was amazing. It changed how we did outreach and made sure we got the right people in the right place
 *       </blockquote>
 *       <p class="quote__cite"><cite>Miriam Swaffield - Daughter to a King</cite></p>
 *   </div>
 */
.quote {
  font-size: 18px;
  font-size: 1.125rem;
  line-height: 26px;
  margin-bottom: 64px;
  padding-left: 8px;
  padding-right: 8px;
  position: relative;
  padding-top: 0.33em;
}
.quote::before {
  content: '"';
  position: absolute;
  left: -0.33em;
  color: #52BBA3;
  font-style: italic;
  font-size: 3em;
}

.quote__img {
  margin-bottom: 16px;
  height: 276px;
  width: 100%;
  max-width: 424px;
  background-size: contain;
  background-repeat: no-repeat;
  text-align: center;
}
.quote__img img {
  height: 276px;
  width: 276px;
  display: inline-block;
  -o-object-fit: cover;
     object-fit: cover;
  border-radius: 50%;
  border: 2px solid #FE8600;
  padding: 1em;
}

.quote__copy {
  font-style: italic;
}

.quote__cite {
  border-bottom: 3px solid #52BBA3;
  padding-bottom: 16px;
}
.quote__cite cite {
  font-style: normal;
}

@media screen and (min-width: 45em) {
  .quote--push {
    margin-top: 236px;
    margin-bottom: 16px;
  }
}
/** 
 * Footer style
 *
 * The styling for the footer element
 *
 */
.footer {
  background-color: #5B5B5B;
  font-size: 12px;
  font-size: 0.75rem;
  line-height: 20px;
  padding-top: 44px;
  padding-bottom: 8px;
}
.footer a {
  color: #ffffff;
}
.footer a:hover {
  color: #52BBA3;
}

@media screen and (min-width: 45em) {
  .footer {
    text-align: right;
  }
}
/** 
 * Group List
 *
 * The list of groups
 *
 * Example:
 *  
 */
.groups {
  margin-bottom: 64px;
}

.groups__header {
  margin-bottom: 16px;
  border-bottom: 1px solid #ffffff;
}

.groups__title {
  margin-bottom: 8px;
}

@media screen and (min-width: 45em) {
  .groups__title {
    margin-bottom: 16px;
  }
}
/** 
 * Share Widget
 *
 * The componenet used for sharing
 *
 * Example:
 *  
 */
.share {
  padding: 12px 24px;
  margin-bottom: 64px;
  border: 1px solid #ffffff;
  border-radius: 4px;
  text-align: center;
}

.share__title {
  margin-bottom: 0;
}

.share__icons {
  list-style: none;
  margin: 0;
}
.share__icons > li {
  display: inline-block;
  margin: 0 4px -3px;
}

.share__link .i {
  display: block;
}
.share__link .i__hover {
  fill: transparent;
  transition: fill 0.2s cubic-bezier(0.4, 0, 0.2, 1);
}
.share__link:hover .i__hover {
  fill: #FE8600;
}

@media screen and (min-width: 45em) {
  .share {
    text-align: left;
  }
  .share__icons {
    text-align: right;
  }
}
/**
 * Member Table
 *
 * The list of members of a group
 *
 * Example:
 *
 */
.member-table {
  width: 100%;
  table-layout: fixed;
  border-collapse: unset;
  border-spacing: 0 8px;
  font-size: 16px;
  font-size: 1rem;
  line-height: 20px;
  text-align: center;
}

.member-table__head {
  color: #FE8600;
  background-color: #3B3A36;
}

.member-table__head-item {
  padding: 20px 0;
}

.member-table__head-name {
  text-align: left;
  padding-left: 80px;
}

.member-table__row {
  position: relative;
  margin-bottom: 8px;
}
.member-table__row .member-table__row-item:last-child {
  border-right: 0;
}

.member-table__row-item {
  padding: 18px 8px;
  background-color: #63625B;
  border-left: 1px solid #6F6E66;
  border-right: 1px solid #6F6E66;
}

.member-table__row-item {
  text-align: center;
  padding-right: 8px;
}
.member-table__row-item:before {
  content: attr(data-title);
  float: left;
  padding-left: 8px;
  font-size: 13px;
  font-size: 0.8125rem;
  line-height: 20px;
  color: #FE8600;
  text-align: left;
}

.member-table__row-name {
  position: relative;
  padding-left: 80px;
  text-align: left;
}
.member-table__row-name:before {
  content: "";
  display: block;
  position: absolute;
  left: 0;
  top: 0;
  bottom: 0;
  width: 56px;
  background-color: #FE8600;
}

.member-table__highlight {
  background-color: #FE8600;
  color: black;
  transition: background 0.2s cubic-bezier(0.4, 0, 0.2, 1);
}
.member-table__highlight:before {
  color: #000000;
}

.member-table__row-remove {
  padding: 0;
}
.member-table__row-remove:before {
  display: none;
}

.member-table__remove {
  position: absolute;
  top: 18px;
  right: 8px;
}

@media screen and (max-width: 44.9375em) {
  .member-table__head {
    display: none;
  }
  .member-table tbody, .member-table td, .member-table tr {
    display: inline-block;
  }
  .member-table__row-item:before {
    width: 100%;
  }
}
@media screen and (min-width: 45em) {
  .member-table__row-item {
    text-align: center;
  }
  .member-table__row-item:before {
    display: none;
  }
  .member-table__row-name {
    text-align: left;
  }
  .member-table__row-name:before {
    display: block;
  }
  .member-table__row-remove {
    border-left: 1px solid #6F6E66;
  }
  .member-table__remove {
    position: relative;
    top: 4px;
    right: auto;
  }
  .member-table__remove .i__hover {
    transition: fill 0.2s cubic-bezier(0.4, 0, 0.2, 1);
  }
  .member-table__remove:hover .i__hover {
    fill: #ffffff;
  }
}
/**
 * Wrapper style
 *
 * Styles for wrapping content in the site
 *
 * Example:
 *  <div class="wrapper wrapper--style"> ... </div>
 */
.wrapper--style {
  text-align: center;
  background-color: #63625B;
  margin-bottom: 64px;
  padding-top: 16px;
}

.wrapper__cut-out {
  display: inline-block;
  padding: 48px 24px 0;
  position: relative;
  margin-top: -10%;
  background-color: #63625B;
  border-radius: 300px;
}

.wrapper--spacious {
  padding-top: 64px;
  padding-bottom: 64px;
  text-align: center;
}

.wrapper--dark {
  background-color: #000000;
}

.wrapper--bright {
  background-color: #FE8600;
}

.wrapper--cta {
  padding-top: 192px;
  padding-bottom: 128px;
  text-align: center;
  background-image: url(../../images/individual-cta.svg);
  background-repeat: no-repeat;
  background-position: center center;
}

@media screen and (min-width: 45em) {
  .wrapper__cut-out {
    margin-top: -128px;
  }
}
/** 
 * Invite comonent 
 *
 * The styled block for the link to join a group
 *
 * Example:
 *  <div class="invite">
 *       <h2 class="invite__title">Invite people to join this group: <span class="invite__action">share link</span></h2>
 *       <p class="invite__link">{{ url('group/'.$group->slug.'/join') }}</p>
 *  </div>
 */
.invite {
  border: 1px solid #ffffff;
  border-radius: 4px;
  margin-bottom: 32px;
}

.invite__title {
  line-height: 2.4615384615em;
  background-color: #3B3A36;
  border-top-left-radius: 4px;
  border-top-right-radius: 4px;
  margin-bottom: 0;
}

.invite__action {
  position: relative;
  font-size: 16px;
  font-size: 1rem;
  line-height: 64px;
  color: #FE8600;
}
.invite__action:after {
  content: "";
  display: block;
  position: absolute;
  right: -16px;
  top: 10px;
  width: 0;
  height: 0;
  border-style: solid;
  border-width: 4px 4px 0 4px;
  border-color: #FE8600 transparent transparent transparent;
}

.invite__link {
  color: #FE8600;
  line-height: 4em;
  background-color: #63625B;
  border-bottom-left-radius: 4px;
  border-bottom-right-radius: 4px;
  margin-bottom: 0;
  overflow-x: scroll;
}

.invite__url {
  background: none;
  border: none;
  width: 100%;
  padding: 0 16px;
  text-overflow: ellipsis;
  text-align: center;
  /* Required for text-overflow to do anything */
  white-space: nowrap;
  overflow: hidden;
  text-decoration: none;
  color: #FE8600;
}
.invite__url:hover {
  text-decoration: underline;
}

@media screen and (min-width: 64em) {
  .invite__link {
    overflow: hidden;
  }
}
/**
 * Tip styling
 *
 * This styling is for the tips list
 *
 * Example:
 *  <ul class="tips">\
 *      <li class="tips__item"> ... </li>
 *  </ul>
 */
.tips {
  margin: 0 4.5454545455% 32px;
  padding: 0;
  list-style: none;
}

.tips__item {
  font-size: 20px;
  font-size: 1.25rem;
  line-height: 1em;
  padding: 20px 44px;
  margin-bottom: 4px;
  text-align: left;
  background-color: #9D9C9A;
  box-shadow: 0px 0 0 0px #000000;
  transition: transform 0.2s cubic-bezier(0.4, 0, 0.2, 1), box-shadow 0.2s cubic-bezier(0.4, 0, 0.2, 1);
  z-index: 1;
}
.tips__item:hover {
  transform: scale(1.1, 1.1);
  box-shadow: 0px 0 4px 0px #000000;
  z-index: 2;
}

/**
 * Sticky navigation bar
 *
 * The styling for a sticky navigation gar at the top of the page
 *
 * Example:
 *  <div class="sticky"> ... </div>
 */
.sticky {
  width: 100%;
  padding-bottom: 32px;
}

.sticky__link {
  margin-bottom: 16px;
  color: #ffffff;
  background-color: #FE8600;
  text-align: center;
  display: block;
  width: 100%;
  text-decoration: none;
  padding: 8px;
  transition: background 0.2s cubic-bezier(0.4, 0, 0.2, 1);
}

.sticky__link:hover,
.sticky__active {
  background-color: #ffffff;
  color: #FE8600;
}

@media screen and (min-width: 45em) {
  .sticky--is-stuck {
    position: fixed;
    padding-bottom: 0;
    top: 0;
    z-index: 100;
  }
}
/*!
Chosen, a Select Box Enhancer for jQuery and Prototype
by Patrick Filler for Harvest, http://getharvest.com

Version 1.3.0
Full source at https://github.com/harvesthq/chosen
Copyright (c) 2011-2014 Harvest http://getharvest.com

MIT License, https://github.com/harvesthq/chosen/blob/master/LICENSE.md
This file is generated by `grunt build`, do not edit it by hand.
*/
/* @group Base */
.chosen-container {
  position: relative;
  display: inline-block;
  vertical-align: middle;
  zoom: 1;
  *display: inline;
  -webkit-user-select: none;
  -moz-user-select: none;
  user-select: none;
  padding-left: 134px;
  width: 100%;
  height: 49px;
}

.chosen-container * {
  box-sizing: border-box;
}

.chosen-container .chosen-drop {
  position: absolute;
  top: 100%;
  left: -9999px;
  z-index: 1010;
  width: 100%;
  border-left: 1px solid #52BBA3;
  border-right: 1px solid #52BBA3;
  border-bottom: 1px solid #52BBA3;
  border-top: 0;
  background: #F6F6F6;
  border-radius: 4px;
}

.chosen-container.chosen-with-drop .chosen-drop {
  background-color: transparent;
  padding-top: 10px;
  margin-top: -10px;
  left: -1px;
  width: calc(100% + 2px);
  border-bottom-left-radius: 4px;
  border-bottom-right-radius: 4px;
}

.chosen-container a {
  cursor: pointer;
}

/* @end */
/* @group Single Chosen */
.chosen-container-single .chosen-single {
  position: relative;
  display: block;
  overflow: hidden;
  padding: 0 0 0 8px;
  background-color: transparent;
  background-clip: padding-box;
  color: #5B5B5B;
  text-decoration: none;
  white-space: nowrap;
  line-height: 49px;
  z-index: 4;
}

.chosen-container-single .chosen-default {
  color: #5B5B5B;
}

.chosen-container-single .chosen-single span {
  display: block;
  overflow: hidden;
  margin-right: 52px;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.chosen-container-single .chosen-single-with-deselect span {
  margin-right: 38px;
}

.chosen-container-single .chosen-single abbr {
  position: absolute;
  top: 6px;
  right: 26px;
  display: block;
  width: 12px;
  height: 12px;
  background: url("chosen-sprite.png") -42px 1px no-repeat;
  font-size: 1px;
}

.chosen-container-single .chosen-single abbr:hover {
  background-position: -42px -10px;
}

.chosen-container-single.chosen-disabled .chosen-single abbr:hover {
  background-position: -42px -10px;
}

.chosen-container-single .chosen-single div {
  position: absolute;
  top: 0;
  right: 0;
  display: block;
  width: 18px;
  height: 100%;
}

.chosen-container-single .chosen-single div b {
  display: block;
  width: 100%;
  height: 100%;
  background: url("chosen-sprite.png") no-repeat 0px 2px;
}

.chosen-container-single .chosen-search {
  background-color: #F6F6F6;
  position: relative;
  z-index: 1010;
  margin: 0;
  padding: 3px 4px;
  white-space: nowrap;
}

.chosen-container-single .chosen-search input[type=text] {
  margin: 1px 0;
  padding: 4px 20px 4px 32px;
  width: 100%;
  height: auto;
  outline: 0;
  border: 1px solid #aaa;
  background: #F6F6F6 url(../../images/icon-search.svg) no-repeat 4px 5px;
  border-radius: 0;
}

.chosen-container-single .chosen-drop {
  margin-top: -1px;
  border-radius: 0 0 4px 4px;
  background-clip: padding-box;
}

.chosen-container-single.chosen-container-single-nosearch .chosen-search {
  position: absolute;
  left: -9999px;
}

/* @end */
/* @group Results */
.chosen-container .chosen-results {
  background-color: #F6F6F6;
  color: #5B5B5B;
  position: relative;
  overflow-x: hidden;
  overflow-y: auto;
  padding: 0 0 4px 0;
  margin: 0;
  max-height: 240px;
  -webkit-overflow-scrolling: touch;
  border-bottom-left-radius: 4px;
  border-bottom-right-radius: 4px;
}

.chosen-container .chosen-results li {
  display: none;
  margin: 0;
  padding: 8px 16px;
  list-style: none;
  line-height: 1em;
  word-wrap: break-word;
  -webkit-touch-callout: none;
}
.chosen-container .chosen-results li:hover {
  color: #F6F6F6;
  background-color: #52BBA3;
}

.chosen-container .chosen-results li.active-result {
  display: list-item;
  cursor: pointer;
}

.chosen-container .chosen-results li.disabled-result {
  display: list-item;
  color: #ccc;
  cursor: default;
}

.chosen-container .chosen-results li.no-results {
  color: #777;
  display: list-item;
  background: #f4f4f4;
}

.chosen-container .chosen-results li.group-result {
  display: list-item;
  font-weight: bold;
  cursor: default;
}

.chosen-container .chosen-results li.group-option {
  padding-left: 15px;
}

.chosen-container .chosen-results li em {
  font-style: normal;
  text-decoration: underline;
}

/* @end */
/* @group Multi Chosen */
.chosen-container-multi .chosen-choices {
  position: relative;
  overflow: hidden;
  margin: 0;
  padding: 0 5px;
  width: 100%;
  height: auto !important;
  height: 1%;
  border: none;
  background-color: #F6F6F6;
  cursor: text;
}

.chosen-container-multi .chosen-choices li {
  float: left;
  list-style: none;
}

.chosen-container-multi .chosen-choices li.search-field {
  margin: 0;
  padding: 0;
  white-space: nowrap;
}

.chosen-container-multi .chosen-choices li.search-field input[type=text] {
  margin: 1px 0;
  padding: 0;
  height: 25px;
  outline: 0;
  border: 0 !important;
  background: transparent !important;
  box-shadow: none;
  color: #5B5B5B;
  font-size: 100%;
  font-family: sans-serif;
  line-height: normal;
  border-radius: 0;
}

.chosen-container-multi .chosen-choices li.search-choice {
  position: relative;
  margin: 3px 5px 3px 0;
  padding: 3px 20px 3px 5px;
  border: 1px solid #aaa;
  max-width: 100%;
  border-radius: 3px;
  background-color: #F6F6F6;
  background-size: 100% 19px;
  background-repeat: repeat-x;
  background-clip: padding-box;
  color: #5B5B5B;
  line-height: 13px;
  cursor: default;
}

.chosen-container-multi .chosen-choices li.search-choice span {
  word-wrap: break-word;
}

.chosen-container-multi .chosen-choices li.search-choice .search-choice-close {
  position: absolute;
  top: 4px;
  right: 3px;
  display: block;
  width: 12px;
  height: 12px;
  background: url("chosen-sprite.png") -42px 1px no-repeat;
  font-size: 1px;
}

.chosen-container-multi .chosen-choices li.search-choice .search-choice-close:hover {
  background-position: -42px -10px;
}

.chosen-container-multi .chosen-choices li.search-choice-disabled {
  padding-right: 5px;
  border: 1px solid #ccc;
  background-color: #e4e4e4;
  background-image: linear-gradient(to bottom, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);
  color: #666;
}

.chosen-container-multi .chosen-choices li.search-choice-focus {
  background: #d4d4d4;
}

.chosen-container-multi .chosen-choices li.search-choice-focus .search-choice-close {
  background-position: -42px -10px;
}

.chosen-container-multi .chosen-results {
  margin: 0;
  padding: 0;
}

.chosen-container-multi .chosen-drop .result-selected {
  display: list-item;
  color: #ccc;
  cursor: default;
}

/* @end */
/* @group Active  */
.chosen-container-active.chosen-with-drop .chosen-single {
  border-bottom-right-radius: 0;
  border-bottom-left-radius: 0;
  background-color: transparent;
}

.chosen-container-active.chosen-with-drop .chosen-single div {
  border-left: none;
  background: transparent;
}

.chosen-container-active.chosen-with-drop .chosen-single div b {
  background-position: -18px 2px;
}

.chosen-container-active .chosen-choices {
  border: 1px solid #5897fb;
  box-shadow: 0 0 5px rgba(0, 0, 0, 0.3);
}

.chosen-container-active .chosen-choices li.search-field input[type=text] {
  color: #5B5B5B !important;
}

/* @end */
/* @group Disabled Support */
.chosen-disabled {
  opacity: 0.5 !important;
  cursor: default;
}

.chosen-disabled .chosen-single {
  cursor: default;
}

.chosen-disabled .chosen-choices .search-choice .search-choice-close {
  cursor: default;
}

/* @end */
/* @group Right to Left */
.chosen-rtl {
  text-align: right;
}

.chosen-rtl .chosen-single {
  overflow: visible;
  padding: 0 8px 0 0;
}

.chosen-rtl .chosen-single span {
  margin-right: 0;
  margin-left: 26px;
  direction: rtl;
}

.chosen-rtl .chosen-single-with-deselect span {
  margin-left: 38px;
}

.chosen-rtl .chosen-single div {
  right: auto;
  left: 3px;
}

.chosen-rtl .chosen-single abbr {
  right: auto;
  left: 26px;
}

.chosen-rtl .chosen-choices li {
  float: right;
}

.chosen-rtl .chosen-choices li.search-field input[type=text] {
  direction: rtl;
}

.chosen-rtl .chosen-choices li.search-choice {
  margin: 3px 5px 3px 0;
  padding: 3px 5px 3px 19px;
}

.chosen-rtl .chosen-choices li.search-choice .search-choice-close {
  right: auto;
  left: 4px;
}

.chosen-rtl.chosen-container-single-nosearch .chosen-search,
.chosen-rtl .chosen-drop {
  left: 9999px;
}

.chosen-rtl.chosen-container-single .chosen-results {
  margin: 0 0 8px 4px;
  padding: 0 4px 0 0;
}

.chosen-rtl .chosen-results li.group-option {
  padding-right: 15px;
  padding-left: 0;
}

.chosen-rtl.chosen-container-active.chosen-with-drop .chosen-single div {
  border-right: none;
}

.chosen-rtl .chosen-search input[type=text] {
  padding: 4px 5px 4px 20px;
  background: white url("chosen-sprite.png") no-repeat -30px -20px;
  background: url("chosen-sprite.png") no-repeat -30px -20px;
  direction: rtl;
}

.chosen-rtl.chosen-container-single .chosen-single div b {
  background-position: 6px 2px;
}

.chosen-rtl.chosen-container-single.chosen-with-drop .chosen-single div b {
  background-position: -12px 2px;
}

/* @end */
/* @group Retina compatibility */
@media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (-webkit-min-device-pixel-ratio: 1.5), only screen and (min-resolution: 144dpi) {
  .chosen-rtl .chosen-search input[type=text],
  .chosen-container-single .chosen-single abbr,
  .chosen-container-single .chosen-single div b,
  .chosen-container-single .chosen-search input[type=text],
  .chosen-container-multi .chosen-choices .search-choice .search-choice-close,
  .chosen-container .chosen-results-scroll-down span,
  .chosen-container .chosen-results-scroll-up span {
    background-image: url("chosen-sprite@2x.png") !important;
    background-size: 52px 37px !important;
    background-repeat: no-repeat !important;
  }
}
/* @end */
.beta {
  padding: 32px 48px;
  background-color: #FE8600;
  text-align: center;
  transition: opacity 600ms;
}
.beta.beta--hidden {
  position: absolute;
  opacity: 0;
}

.beta__content {
  margin-bottom: 0;
  font-size: 20px;
  font-size: 1.25rem;
  line-height: 1.2;
}
.beta__content a, .beta__content a:link, .beta__content a:visited, .beta__content a:active {
  color: #ffffff;
  text-decoration: none;
}
.beta__content a:hover {
  text-decoration: underline;
}

.beta__close {
  position: relative;
  top: -4px;
  right: -16px;
  color: inherit;
  -webkit-appearance: none;
  padding: 0;
  cursor: pointer;
  background: 0 0;
  border: 0;
  float: right;
  font-size: 32px;
  font-weight: 700;
  line-height: 1;
  color: #000;
  text-shadow: 0 1px 0 #fff;
  filter: alpha(opacity=20);
  opacity: 0.2;
}

/*------------------------------------*\
    #HEADINGS
\*------------------------------------*/
/**
 * Headings 1–6’s corresponding Greek-alphabet abstract classes for double-
 * stranded heading hierarchy: csswizardry.com/2012/02/pragmatic-practical-font-sizing-in-css
 *
 * Use these helper classes to cause other elements to adopt the styling of the
 * respective heading, e.g.:
 *
   <h2 class="alpha">Lorem ipsum</h2>
 *
 */
.u-alpha {
  font-size: 32px;
  font-size: 2rem;
  line-height: 1.25;
}

.u-beta {
  font-size: 28px;
  font-size: 1.75rem;
  line-height: 1.4285714286;
}

.u-gamma {
  font-size: 20px;
  font-size: 1.25rem;
  line-height: 1;
}

.u-delta {
  font-size: 16px;
  font-size: 1rem;
  line-height: 1.25;
}

.u-epsilon {
  font-size: 16px;
  font-size: 1rem;
  line-height: 1.25;
}

.u-zeta {
  font-size: 16px;
  font-size: 1rem;
  line-height: 1.25;
}

/*------------------------------------*\
    #CLEARFIX
\*------------------------------------*/
/**
 * Micro clearfix, as per: css-101.org/articles/clearfix/latest-new-clearfix-so-far.php
 * Extend the clearfix class with Sass to avoid the `.clearfix` class appearing
 * over and over in your markup.
 */
.u-clearfix:after,
.media:after,
.wrapper:after {
  content: "";
  display: table;
  clear: both;
}

/*------------------------------------*\
    #WIDTHS
\*------------------------------------*/
/**
 * A series of width helper classes that you can use to size things like grid
 * systems. Classes can take a fraction-like format (e.g. `.2/3`) or a spoken-
 * word format (e.g. `two-thirds`). Toggle formats by overriding the
 * `$bonito-use-fractions` variable defined below.
 */
/**
 * Whole.
 */
.u-one-whole {
  width: 100% !important;
}

/**
 * Halves.
 */
.u-one-half,
.u-two-quarters,
.u-three-sixths,
.u-four-eighths,
.u-five-tenths,
.u-six-twelfths {
  width: 50% !important;
}

/**
 * Thirds.
 */
.u-one-third,
.u-two-sixths,
.u-three-ninths,
.u-four-twelfths {
  width: 33.3333333% !important;
}

.u-two-thirds,
.u-four-sixths,
.u-six-ninths,
.u-eight-twelfths {
  width: 66.6666666% !important;
}

/**
 * Quarters.
 */
.u-one-quarter,
.u-two-eighths,
.u-three-twelfths {
  width: 25% !important;
}

.u-three-quarters,
.u-six-eighths,
.u-nine-twelfths {
  width: 75% !important;
}

/**
 * Fifths.
 */
.u-one-fifth,
.u-two-tenths {
  width: 20% !important;
}

.u-two-fifths,
.u-four-tenths {
  width: 40% !important;
}

.u-three-fifths,
.u-six-tenths {
  width: 60% !important;
}

.u-four-fifths,
.u-eight-tenths {
  width: 80% !important;
}

/**
 * Sixths.
 */
.u-one-sixth,
.u-two-twelfths {
  width: 16.6666666% !important;
}

.u-five-sixths,
.u-ten-twelfths {
  width: 83.3333333% !important;
}

/**
 * Eighths.
 */
.u-one-eighth {
  width: 12.5% !important;
}

.u-three-eighths {
  width: 37.5% !important;
}

.u-five-eighths {
  width: 62.5% !important;
}

.u-seven-eighths {
  width: 87.5% !important;
}

/**
 * Ninths.
 */
.u-one-ninth {
  width: 11.1111111% !important;
}

.u-two-ninths {
  width: 22.2222222% !important;
}

.u-four-ninths {
  width: 44.4444444% !important;
}

.u-five-ninths {
  width: 55.5555555% !important;
}

.u-seven-ninths {
  width: 77.7777777% !important;
}

.u-eight-ninths {
  width: 88.8888888% !important;
}

/**
 * Tenths.
 */
.u-one-tenth {
  width: 10% !important;
}

.u-three-tenths {
  width: 30% !important;
}

.u-seven-tenths {
  width: 70% !important;
}

.u-nine-tenths {
  width: 90% !important;
}

/**
 * Twelfths.
 */
.u-one-twelfth {
  width: 8.3333333% !important;
}

.u-five-twelfths {
  width: 41.6666666% !important;
}

.u-seven-twelfths {
  width: 58.3333333% !important;
}

.u-eleven-twelfths {
  width: 91.6666666% !important;
}

/*------------------------------------*\
    #WIDTHS-RESPONSIVE
\*------------------------------------*/
/**
 * Responsive width classes based on your responsive settings.
 */
@media screen and (max-width: 44.9375em) {
  /**
   * Whole.
   */
  .u-palm-one-whole {
    width: 100% !important;
  }
  /**
   * Halves.
   */
  .u-palm-one-half,
  .u-palm-two-quarters,
  .u-palm-three-sixths,
  .u-palm-four-eighths,
  .u-palm-five-tenths,
  .u-palm-six-twelfths {
    width: 50% !important;
  }
  /**
   * Thirds.
   */
  .u-palm-one-third,
  .u-palm-two-sixths,
  .u-palm-three-ninths,
  .u-palm-four-twelfths {
    width: 33.3333333% !important;
  }
  .u-palm-two-thirds,
  .u-palm-four-sixths,
  .u-palm-six-ninths,
  .u-palm-eight-twelfths {
    width: 66.6666666% !important;
  }
  /**
   * Quarters.
   */
  .u-palm-one-quarter,
  .u-palm-two-eighths,
  .u-palm-three-twelfths {
    width: 25% !important;
  }
  .u-palm-three-quarters,
  .u-palm-six-eighths,
  .u-palm-nine-twelfths {
    width: 75% !important;
  }
  /**
   * Fifths.
   */
  .u-palm-one-fifth,
  .u-palm-two-tenths {
    width: 20% !important;
  }
  .u-palm-two-fifths,
  .u-palm-four-tenths {
    width: 40% !important;
  }
  .u-palm-three-fifths,
  .u-palm-six-tenths {
    width: 60% !important;
  }
  .u-palm-four-fifths,
  .u-palm-eight-tenths {
    width: 80% !important;
  }
  /**
   * Sixths.
   */
  .u-palm-one-sixth,
  .u-palm-two-twelfths {
    width: 16.6666666% !important;
  }
  .u-palm-five-sixths,
  .u-palm-ten-twelfths {
    width: 83.3333333% !important;
  }
  /**
   * Eighths.
   */
  .u-palm-one-eighth {
    width: 12.5% !important;
  }
  .u-palm-three-eighths {
    width: 37.5% !important;
  }
  .u-palm-five-eighths {
    width: 62.5% !important;
  }
  .u-palm-seven-eighths {
    width: 87.5% !important;
  }
  /**
   * Ninths.
   */
  .u-palm-one-ninth {
    width: 11.1111111% !important;
  }
  .u-palm-two-ninths {
    width: 22.2222222% !important;
  }
  .u-palm-four-ninths {
    width: 44.4444444% !important;
  }
  .u-palm-five-ninths {
    width: 55.5555555% !important;
  }
  .u-palm-seven-ninths {
    width: 77.7777777% !important;
  }
  .u-palm-eight-ninths {
    width: 88.8888888% !important;
  }
  /**
   * Tenths.
   */
  .u-palm-one-tenth {
    width: 10% !important;
  }
  .u-palm-three-tenths {
    width: 30% !important;
  }
  .u-palm-seven-tenths {
    width: 70% !important;
  }
  .u-palm-nine-tenths {
    width: 90% !important;
  }
  /**
   * Twelfths.
   */
  .u-palm-one-twelfth {
    width: 8.3333333% !important;
  }
  .u-palm-five-twelfths {
    width: 41.6666666% !important;
  }
  .u-palm-seven-twelfths {
    width: 58.3333333% !important;
  }
  .u-palm-eleven-twelfths {
    width: 91.6666666% !important;
  }
}
@media screen and (min-width: 45em) and (max-width: 63.9375em) {
  /**
   * Whole.
   */
  .u-lap-one-whole {
    width: 100% !important;
  }
  /**
   * Halves.
   */
  .u-lap-one-half,
  .u-lap-two-quarters,
  .u-lap-three-sixths,
  .u-lap-four-eighths,
  .u-lap-five-tenths,
  .u-lap-six-twelfths {
    width: 50% !important;
  }
  /**
   * Thirds.
   */
  .u-lap-one-third,
  .u-lap-two-sixths,
  .u-lap-three-ninths,
  .u-lap-four-twelfths {
    width: 33.3333333% !important;
  }
  .u-lap-two-thirds,
  .u-lap-four-sixths,
  .u-lap-six-ninths,
  .u-lap-eight-twelfths {
    width: 66.6666666% !important;
  }
  /**
   * Quarters.
   */
  .u-lap-one-quarter,
  .u-lap-two-eighths,
  .u-lap-three-twelfths {
    width: 25% !important;
  }
  .u-lap-three-quarters,
  .u-lap-six-eighths,
  .u-lap-nine-twelfths {
    width: 75% !important;
  }
  /**
   * Fifths.
   */
  .u-lap-one-fifth,
  .u-lap-two-tenths {
    width: 20% !important;
  }
  .u-lap-two-fifths,
  .u-lap-four-tenths {
    width: 40% !important;
  }
  .u-lap-three-fifths,
  .u-lap-six-tenths {
    width: 60% !important;
  }
  .u-lap-four-fifths,
  .u-lap-eight-tenths {
    width: 80% !important;
  }
  /**
   * Sixths.
   */
  .u-lap-one-sixth,
  .u-lap-two-twelfths {
    width: 16.6666666% !important;
  }
  .u-lap-five-sixths,
  .u-lap-ten-twelfths {
    width: 83.3333333% !important;
  }
  /**
   * Eighths.
   */
  .u-lap-one-eighth {
    width: 12.5% !important;
  }
  .u-lap-three-eighths {
    width: 37.5% !important;
  }
  .u-lap-five-eighths {
    width: 62.5% !important;
  }
  .u-lap-seven-eighths {
    width: 87.5% !important;
  }
  /**
   * Ninths.
   */
  .u-lap-one-ninth {
    width: 11.1111111% !important;
  }
  .u-lap-two-ninths {
    width: 22.2222222% !important;
  }
  .u-lap-four-ninths {
    width: 44.4444444% !important;
  }
  .u-lap-five-ninths {
    width: 55.5555555% !important;
  }
  .u-lap-seven-ninths {
    width: 77.7777777% !important;
  }
  .u-lap-eight-ninths {
    width: 88.8888888% !important;
  }
  /**
   * Tenths.
   */
  .u-lap-one-tenth {
    width: 10% !important;
  }
  .u-lap-three-tenths {
    width: 30% !important;
  }
  .u-lap-seven-tenths {
    width: 70% !important;
  }
  .u-lap-nine-tenths {
    width: 90% !important;
  }
  /**
   * Twelfths.
   */
  .u-lap-one-twelfth {
    width: 8.3333333% !important;
  }
  .u-lap-five-twelfths {
    width: 41.6666666% !important;
  }
  .u-lap-seven-twelfths {
    width: 58.3333333% !important;
  }
  .u-lap-eleven-twelfths {
    width: 91.6666666% !important;
  }
}
@media screen and (min-width: 45em) {
  /**
   * Whole.
   */
  .u-lap-and-up-one-whole {
    width: 100% !important;
  }
  /**
   * Halves.
   */
  .u-lap-and-up-one-half,
  .u-lap-and-up-two-quarters,
  .u-lap-and-up-three-sixths,
  .u-lap-and-up-four-eighths,
  .u-lap-and-up-five-tenths,
  .u-lap-and-up-six-twelfths {
    width: 50% !important;
  }
  /**
   * Thirds.
   */
  .u-lap-and-up-one-third,
  .u-lap-and-up-two-sixths,
  .u-lap-and-up-three-ninths,
  .u-lap-and-up-four-twelfths {
    width: 33.3333333% !important;
  }
  .u-lap-and-up-two-thirds,
  .u-lap-and-up-four-sixths,
  .u-lap-and-up-six-ninths,
  .u-lap-and-up-eight-twelfths {
    width: 66.6666666% !important;
  }
  /**
   * Quarters.
   */
  .u-lap-and-up-one-quarter,
  .u-lap-and-up-two-eighths,
  .u-lap-and-up-three-twelfths {
    width: 25% !important;
  }
  .u-lap-and-up-three-quarters,
  .u-lap-and-up-six-eighths,
  .u-lap-and-up-nine-twelfths {
    width: 75% !important;
  }
  /**
   * Fifths.
   */
  .u-lap-and-up-one-fifth,
  .u-lap-and-up-two-tenths {
    width: 20% !important;
  }
  .u-lap-and-up-two-fifths,
  .u-lap-and-up-four-tenths {
    width: 40% !important;
  }
  .u-lap-and-up-three-fifths,
  .u-lap-and-up-six-tenths {
    width: 60% !important;
  }
  .u-lap-and-up-four-fifths,
  .u-lap-and-up-eight-tenths {
    width: 80% !important;
  }
  /**
   * Sixths.
   */
  .u-lap-and-up-one-sixth,
  .u-lap-and-up-two-twelfths {
    width: 16.6666666% !important;
  }
  .u-lap-and-up-five-sixths,
  .u-lap-and-up-ten-twelfths {
    width: 83.3333333% !important;
  }
  /**
   * Eighths.
   */
  .u-lap-and-up-one-eighth {
    width: 12.5% !important;
  }
  .u-lap-and-up-three-eighths {
    width: 37.5% !important;
  }
  .u-lap-and-up-five-eighths {
    width: 62.5% !important;
  }
  .u-lap-and-up-seven-eighths {
    width: 87.5% !important;
  }
  /**
   * Ninths.
   */
  .u-lap-and-up-one-ninth {
    width: 11.1111111% !important;
  }
  .u-lap-and-up-two-ninths {
    width: 22.2222222% !important;
  }
  .u-lap-and-up-four-ninths {
    width: 44.4444444% !important;
  }
  .u-lap-and-up-five-ninths {
    width: 55.5555555% !important;
  }
  .u-lap-and-up-seven-ninths {
    width: 77.7777777% !important;
  }
  .u-lap-and-up-eight-ninths {
    width: 88.8888888% !important;
  }
  /**
   * Tenths.
   */
  .u-lap-and-up-one-tenth {
    width: 10% !important;
  }
  .u-lap-and-up-three-tenths {
    width: 30% !important;
  }
  .u-lap-and-up-seven-tenths {
    width: 70% !important;
  }
  .u-lap-and-up-nine-tenths {
    width: 90% !important;
  }
  /**
   * Twelfths.
   */
  .u-lap-and-up-one-twelfth {
    width: 8.3333333% !important;
  }
  .u-lap-and-up-five-twelfths {
    width: 41.6666666% !important;
  }
  .u-lap-and-up-seven-twelfths {
    width: 58.3333333% !important;
  }
  .u-lap-and-up-eleven-twelfths {
    width: 91.6666666% !important;
  }
}
@media screen and (max-width: 63.9375em) {
  /**
   * Whole.
   */
  .u-portable-one-whole {
    width: 100% !important;
  }
  /**
   * Halves.
   */
  .u-portable-one-half,
  .u-portable-two-quarters,
  .u-portable-three-sixths,
  .u-portable-four-eighths,
  .u-portable-five-tenths,
  .u-portable-six-twelfths {
    width: 50% !important;
  }
  /**
   * Thirds.
   */
  .u-portable-one-third,
  .u-portable-two-sixths,
  .u-portable-three-ninths,
  .u-portable-four-twelfths {
    width: 33.3333333% !important;
  }
  .u-portable-two-thirds,
  .u-portable-four-sixths,
  .u-portable-six-ninths,
  .u-portable-eight-twelfths {
    width: 66.6666666% !important;
  }
  /**
   * Quarters.
   */
  .u-portable-one-quarter,
  .u-portable-two-eighths,
  .u-portable-three-twelfths {
    width: 25% !important;
  }
  .u-portable-three-quarters,
  .u-portable-six-eighths,
  .u-portable-nine-twelfths {
    width: 75% !important;
  }
  /**
   * Fifths.
   */
  .u-portable-one-fifth,
  .u-portable-two-tenths {
    width: 20% !important;
  }
  .u-portable-two-fifths,
  .u-portable-four-tenths {
    width: 40% !important;
  }
  .u-portable-three-fifths,
  .u-portable-six-tenths {
    width: 60% !important;
  }
  .u-portable-four-fifths,
  .u-portable-eight-tenths {
    width: 80% !important;
  }
  /**
   * Sixths.
   */
  .u-portable-one-sixth,
  .u-portable-two-twelfths {
    width: 16.6666666% !important;
  }
  .u-portable-five-sixths,
  .u-portable-ten-twelfths {
    width: 83.3333333% !important;
  }
  /**
   * Eighths.
   */
  .u-portable-one-eighth {
    width: 12.5% !important;
  }
  .u-portable-three-eighths {
    width: 37.5% !important;
  }
  .u-portable-five-eighths {
    width: 62.5% !important;
  }
  .u-portable-seven-eighths {
    width: 87.5% !important;
  }
  /**
   * Ninths.
   */
  .u-portable-one-ninth {
    width: 11.1111111% !important;
  }
  .u-portable-two-ninths {
    width: 22.2222222% !important;
  }
  .u-portable-four-ninths {
    width: 44.4444444% !important;
  }
  .u-portable-five-ninths {
    width: 55.5555555% !important;
  }
  .u-portable-seven-ninths {
    width: 77.7777777% !important;
  }
  .u-portable-eight-ninths {
    width: 88.8888888% !important;
  }
  /**
   * Tenths.
   */
  .u-portable-one-tenth {
    width: 10% !important;
  }
  .u-portable-three-tenths {
    width: 30% !important;
  }
  .u-portable-seven-tenths {
    width: 70% !important;
  }
  .u-portable-nine-tenths {
    width: 90% !important;
  }
  /**
   * Twelfths.
   */
  .u-portable-one-twelfth {
    width: 8.3333333% !important;
  }
  .u-portable-five-twelfths {
    width: 41.6666666% !important;
  }
  .u-portable-seven-twelfths {
    width: 58.3333333% !important;
  }
  .u-portable-eleven-twelfths {
    width: 91.6666666% !important;
  }
}
@media screen and (min-width: 64em) {
  /**
   * Whole.
   */
  .u-desk-one-whole {
    width: 100% !important;
  }
  /**
   * Halves.
   */
  .u-desk-one-half,
  .u-desk-two-quarters,
  .u-desk-three-sixths,
  .u-desk-four-eighths,
  .u-desk-five-tenths,
  .u-desk-six-twelfths {
    width: 50% !important;
  }
  /**
   * Thirds.
   */
  .u-desk-one-third,
  .u-desk-two-sixths,
  .u-desk-three-ninths,
  .u-desk-four-twelfths {
    width: 33.3333333% !important;
  }
  .u-desk-two-thirds,
  .u-desk-four-sixths,
  .u-desk-six-ninths,
  .u-desk-eight-twelfths {
    width: 66.6666666% !important;
  }
  /**
   * Quarters.
   */
  .u-desk-one-quarter,
  .u-desk-two-eighths,
  .u-desk-three-twelfths {
    width: 25% !important;
  }
  .u-desk-three-quarters,
  .u-desk-six-eighths,
  .u-desk-nine-twelfths {
    width: 75% !important;
  }
  /**
   * Fifths.
   */
  .u-desk-one-fifth,
  .u-desk-two-tenths {
    width: 20% !important;
  }
  .u-desk-two-fifths,
  .u-desk-four-tenths {
    width: 40% !important;
  }
  .u-desk-three-fifths,
  .u-desk-six-tenths {
    width: 60% !important;
  }
  .u-desk-four-fifths,
  .u-desk-eight-tenths {
    width: 80% !important;
  }
  /**
   * Sixths.
   */
  .u-desk-one-sixth,
  .u-desk-two-twelfths {
    width: 16.6666666% !important;
  }
  .u-desk-five-sixths,
  .u-desk-ten-twelfths {
    width: 83.3333333% !important;
  }
  /**
   * Eighths.
   */
  .u-desk-one-eighth {
    width: 12.5% !important;
  }
  .u-desk-three-eighths {
    width: 37.5% !important;
  }
  .u-desk-five-eighths {
    width: 62.5% !important;
  }
  .u-desk-seven-eighths {
    width: 87.5% !important;
  }
  /**
   * Ninths.
   */
  .u-desk-one-ninth {
    width: 11.1111111% !important;
  }
  .u-desk-two-ninths {
    width: 22.2222222% !important;
  }
  .u-desk-four-ninths {
    width: 44.4444444% !important;
  }
  .u-desk-five-ninths {
    width: 55.5555555% !important;
  }
  .u-desk-seven-ninths {
    width: 77.7777777% !important;
  }
  .u-desk-eight-ninths {
    width: 88.8888888% !important;
  }
  /**
   * Tenths.
   */
  .u-desk-one-tenth {
    width: 10% !important;
  }
  .u-desk-three-tenths {
    width: 30% !important;
  }
  .u-desk-seven-tenths {
    width: 70% !important;
  }
  .u-desk-nine-tenths {
    width: 90% !important;
  }
  /**
   * Twelfths.
   */
  .u-desk-one-twelfth {
    width: 8.3333333% !important;
  }
  .u-desk-five-twelfths {
    width: 41.6666666% !important;
  }
  .u-desk-seven-twelfths {
    width: 58.3333333% !important;
  }
  .u-desk-eleven-twelfths {
    width: 91.6666666% !important;
  }
}
/*------------------------------------*\
    #SPACING
\*------------------------------------*/
/**
 * Margin and padding helper classes. Use these to tweak layout on a micro
 * level.
 *
 * `.(m|p)(t|r|b|l|h|v)(-|+|0) {}` = margin/padding top/right/bottom/left/horizontal/vertical less/more/none
 */
/**
 * Margin helper classes.
 *
 * Add margins.
 */
.u-m {
  margin: 16px !important;
}

.u-mt {
  margin-top: 16px !important;
}

.u-mr {
  margin-right: 16px !important;
}

.u-mb {
  margin-bottom: 16px !important;
}

.u-ml {
  margin-left: 16px !important;
}

.u-mh {
  margin-right: 16px !important;
  margin-left: 16px !important;
}

.u-mv {
  margin-top: 16px !important;
  margin-bottom: 16px !important;
}

/**
 * Add tiny margins.
 */
.u-m-- {
  margin: 4px !important;
}

.u-mt-- {
  margin-top: 4px !important;
}

.u-mr-- {
  margin-right: 4px !important;
}

.u-mb-- {
  margin-bottom: 4px !important;
}

.u-ml-- {
  margin-left: 4px !important;
}

.u-mh-- {
  margin-right: 4px !important;
  margin-left: 4px !important;
}

.u-mv-- {
  margin-top: 4px !important;
  margin-bottom: 4px !important;
}

/**
 * Add small margins.
 */
.u-m- {
  margin: 8px !important;
}

.u-mt- {
  margin-top: 8px !important;
}

.u-mr- {
  margin-right: 8px !important;
}

.u-mb- {
  margin-bottom: 8px !important;
}

.u-ml- {
  margin-left: 8px !important;
}

.u-mh- {
  margin-right: 8px !important;
  margin-left: 8px !important;
}

.u-mv- {
  margin-top: 8px !important;
  margin-bottom: 8px !important;
}

/**
 * Add large margins.
 */
.u-m\+ {
  margin: 32px !important;
}

.u-mt\+ {
  margin-top: 32px !important;
}

.u-mr\+ {
  margin-right: 32px !important;
}

.u-mb\+ {
  margin-bottom: 32px !important;
}

.u-ml\+ {
  margin-left: 32px !important;
}

.u-mh\+ {
  margin-right: 32px !important;
  margin-left: 32px !important;
}

.u-mv\+ {
  margin-top: 32px !important;
  margin-bottom: 32px !important;
}

/**
 * Add huge margins.
 */
.u-m\+\+ {
  margin: 64px !important;
}

.u-mt\+\+ {
  margin-top: 64px !important;
}

.u-mr\+\+ {
  margin-right: 64px !important;
}

.u-mb\+\+ {
  margin-bottom: 64px !important;
}

.u-ml\+\+ {
  margin-left: 64px !important;
}

.u-mh\+\+ {
  margin-right: 64px !important;
  margin-left: 64px !important;
}

.u-mv\+\+ {
  margin-top: 64px !important;
  margin-bottom: 64px !important;
}

/**
 * Remove margins.
 */
.u-m0 {
  margin: 0 !important;
}

.u-mt0 {
  margin-top: 0 !important;
}

.u-mr0 {
  margin-right: 0 !important;
}

.u-mb0 {
  margin-bottom: 0 !important;
}

.u-ml0 {
  margin-left: 0 !important;
}

.u-mh0 {
  margin-right: 0 !important;
  margin-left: 0 !important;
}

.u-mv0 {
  margin-top: 0 !important;
  margin-bottom: 0 !important;
}

/**
 * Padding helper classes.
 *
 * Add paddings.
 */
.u-p {
  padding: 16px !important;
}

.u-pt {
  padding-top: 16px !important;
}

.u-pr {
  padding-right: 16px !important;
}

.u-pb {
  padding-bottom: 16px !important;
}

.u-pl {
  padding-left: 16px !important;
}

.u-ph {
  padding-right: 16px !important;
  padding-left: 16px !important;
}

.u-pv {
  padding-top: 16px !important;
  padding-bottom: 16px !important;
}

/**
 * Add large paddings.
 */
.u-p\+ {
  padding: 32px !important;
}

.u-pt\+ {
  padding-top: 32px !important;
}

.u-pr\+ {
  padding-right: 32px !important;
}

.u-pb\+ {
  padding-bottom: 32px !important;
}

.u-pl\+ {
  padding-left: 32px !important;
}

.u-ph\+ {
  padding-right: 32px !important;
  padding-left: 32px !important;
}

.u-pv\+ {
  padding-top: 32px !important;
  padding-bottom: 32px !important;
}

/**
 * Add huge paddings.
 */
.u-p\+\+ {
  padding: 64px !important;
}

.u-pt\+\+ {
  padding-top: 64px !important;
}

.u-pr\+\+ {
  padding-right: 64px !important;
}

.u-pb\+\+ {
  padding-bottom: 64px !important;
}

.u-pl\+\+ {
  padding-left: 64px !important;
}

.u-ph\+\+ {
  padding-right: 64px !important;
  padding-left: 64px !important;
}

.u-pv\+\+ {
  padding-top: 64px !important;
  padding-bottom: 64px !important;
}

/**
 * Alignment Helper Classes
 *
 * These utilities enable you to align text left and right simply
 *
 *`.u-t|f(r|l|c|j"i) {}` = text-align/float right/left/center/justify/initial
 * Example:
        <div class="layout">
            <div class="layout__item u-1-of-2">
                <a href="#" class="">Contact Us</a>
            </div><!--
        ---><div class="layout__item u-1-of-2 u-tr">
            <a href="#" class="footer__action">Need help?</a>
            </div>
        </div>
 *
 */
.u-tr {
  text-align: right !important;
}

.u-tl {
  text-align: left !important;
}

.u-tc {
  text-align: center !important;
}

.u-tj {
  text-align: justify !important;
}

.u-ti {
  text-align: initial !important;
}

.u-fr {
  float: right !important;
}

.u-fl {
  float: left !important;
}

.u-fn {
  float: none !important;
}

.u-fi {
  float: inherit !important;
}

@media screen and (max-width: 44.9375em) {
  .u-tr-palm {
    text-align: right !important;
  }
  .u-tl-palm {
    text-align: left !important;
  }
  .u-tc-palm {
    text-align: center !important;
  }
  .u-tj-palm {
    text-align: justify !important;
  }
  .u-ti-palm {
    text-align: initial !important;
  }
  .u-fr-palm {
    float: right !important;
  }
  .u-fl-palm {
    float: left !important;
  }
  .u-fn-palm {
    float: none !important;
  }
  .u-fi-palm {
    float: inherit !important;
  }
}
@media screen and (min-width: 45em) and (max-width: 63.9375em) {
  .u-tr-lap {
    text-align: right !important;
  }
  .u-tl-lap {
    text-align: left !important;
  }
  .u-tc-lap {
    text-align: center !important;
  }
  .u-tj-lap {
    text-align: justify !important;
  }
  .u-ti-lap {
    text-align: initial !important;
  }
  .u-fr-lap {
    float: right !important;
  }
  .u-fl-lap {
    float: left !important;
  }
  .u-fn-lap {
    float: none !important;
  }
  .u-fi-lap {
    float: inherit !important;
  }
}
@media screen and (min-width: 45em) {
  .u-tr-lap-and-up {
    text-align: right !important;
  }
  .u-tl-lap-and-up {
    text-align: left !important;
  }
  .u-tc-lap-and-up {
    text-align: center !important;
  }
  .u-tj-lap-and-up {
    text-align: justify !important;
  }
  .u-ti-lap-and-up {
    text-align: initial !important;
  }
  .u-fr-lap-and-up {
    float: right !important;
  }
  .u-fl-lap-and-up {
    float: left !important;
  }
  .u-fn-lap-and-up {
    float: none !important;
  }
  .u-fi-lap-and-up {
    float: inherit !important;
  }
}
@media screen and (max-width: 63.9375em) {
  .u-tr-portable {
    text-align: right !important;
  }
  .u-tl-portable {
    text-align: left !important;
  }
  .u-tc-portable {
    text-align: center !important;
  }
  .u-tj-portable {
    text-align: justify !important;
  }
  .u-ti-portable {
    text-align: initial !important;
  }
  .u-fr-portable {
    float: right !important;
  }
  .u-fl-portable {
    float: left !important;
  }
  .u-fn-portable {
    float: none !important;
  }
  .u-fi-portable {
    float: inherit !important;
  }
}
@media screen and (min-width: 64em) {
  .u-tr-desk {
    text-align: right !important;
  }
  .u-tl-desk {
    text-align: left !important;
  }
  .u-tc-desk {
    text-align: center !important;
  }
  .u-tj-desk {
    text-align: justify !important;
  }
  .u-ti-desk {
    text-align: initial !important;
  }
  .u-fr-desk {
    float: right !important;
  }
  .u-fl-desk {
    float: left !important;
  }
  .u-fn-desk {
    float: none !important;
  }
  .u-fi-desk {
    float: inherit !important;
  }
}
@media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi), (min-resolution: 2dppx) {
  .u-tr-retina {
    text-align: right !important;
  }
  .u-tl-retina {
    text-align: left !important;
  }
  .u-tc-retina {
    text-align: center !important;
  }
  .u-tj-retina {
    text-align: justify !important;
  }
  .u-ti-retina {
    text-align: initial !important;
  }
  .u-fr-retina {
    float: right !important;
  }
  .u-fl-retina {
    float: left !important;
  }
  .u-fn-retina {
    float: none !important;
  }
  .u-fi-retina {
    float: inherit !important;
  }
}
/**
 * 14 column grid
 *
 * Widths (including responsive widths) for a 14 column grid
 *
 */
.u-one-twentytwos {
  width: 4.5454545455% !important;
}

.u-two-twentytwos {
  width: 9.0909090909% !important;
}

.u-three-twentytwos {
  width: 13.6363636364% !important;
}

.u-four-twentytwos {
  width: 18.1818181818% !important;
}

.u-five-twentytwos {
  width: 22.7272727273% !important;
}

.u-six-twentytwos {
  width: 27.2727272727% !important;
}

.u-severn-twentytwos {
  width: 31.8181818182% !important;
}

.u-eight-twentytwos {
  width: 36.3636363636% !important;
}

.u-nine-twentytwos {
  width: 40.9090909091% !important;
}

.u-ten-twentytwos {
  width: 45.4545454545% !important;
}

.u-eleven-twentytwos {
  width: 50% !important;
}

.u-twelve-twentytwos {
  width: 54.5454545455% !important;
}

.u-thirteen-twentytwos {
  width: 59.0909090909% !important;
}

.u-fourteen-twentytwos {
  width: 63.6363636364% !important;
}

.u-fifteen-twentytwos {
  width: 68.1818181818% !important;
}

.u-sixteen-twentytwos {
  width: 72.7272727273% !important;
}

.u-seventeen-twentytwos {
  width: 77.2727272727% !important;
}

.u-eighteen-twentytwos {
  width: 81.8181818182% !important;
}

.u-nineteen-twentytwos {
  width: 86.3636363636% !important;
}

.u-twenty-twentytwos {
  width: 90.9090909091% !important;
}

.u-twentyone-twentytwos {
  width: 95.4545454545% !important;
}

@media screen and (max-width: 44.9375em) {
  .u-palm-one-twentytwos {
    width: 4.5454545455% !important;
  }
  .u-palm-two-twentytwos {
    width: 9.0909090909% !important;
  }
  .u-palm-three-twentytwos {
    width: 13.6363636364% !important;
  }
  .u-palm-four-twentytwos {
    width: 18.1818181818% !important;
  }
  .u-palm-five-twentytwos {
    width: 22.7272727273% !important;
  }
  .u-palm-six-twentytwos {
    width: 27.2727272727% !important;
  }
  .u-palm-severn-twentytwos {
    width: 31.8181818182% !important;
  }
  .u-palm-eight-twentytwos {
    width: 36.3636363636% !important;
  }
  .u-palm-nine-twentytwos {
    width: 40.9090909091% !important;
  }
  .u-palm-ten-twentytwos {
    width: 45.4545454545% !important;
  }
  .u-palm-eleven-twentytwos {
    width: 50% !important;
  }
  .u-palm-twelve-twentytwos {
    width: 54.5454545455% !important;
  }
  .u-palm-thirteen-twentytwos {
    width: 59.0909090909% !important;
  }
  .u-palm-fourteen-twentytwos {
    width: 63.6363636364% !important;
  }
  .u-palm-fifteen-twentytwos {
    width: 68.1818181818% !important;
  }
  .u-palm-sixteen-twentytwos {
    width: 72.7272727273% !important;
  }
  .u-palm-seventeen-twentytwos {
    width: 77.2727272727% !important;
  }
  .u-palm-eighteen-twentytwos {
    width: 81.8181818182% !important;
  }
  .u-palm-nineteen-twentytwos {
    width: 86.3636363636% !important;
  }
  .u-palm-twenty-twentytwos {
    width: 90.9090909091% !important;
  }
  .u-palm-twentyone-twentytwos {
    width: 95.4545454545% !important;
  }
}
@media screen and (min-width: 45em) and (max-width: 63.9375em) {
  .u-lap-one-twentytwos {
    width: 4.5454545455% !important;
  }
  .u-lap-two-twentytwos {
    width: 9.0909090909% !important;
  }
  .u-lap-three-twentytwos {
    width: 13.6363636364% !important;
  }
  .u-lap-four-twentytwos {
    width: 18.1818181818% !important;
  }
  .u-lap-five-twentytwos {
    width: 22.7272727273% !important;
  }
  .u-lap-six-twentytwos {
    width: 27.2727272727% !important;
  }
  .u-lap-severn-twentytwos {
    width: 31.8181818182% !important;
  }
  .u-lap-eight-twentytwos {
    width: 36.3636363636% !important;
  }
  .u-lap-nine-twentytwos {
    width: 40.9090909091% !important;
  }
  .u-lap-ten-twentytwos {
    width: 45.4545454545% !important;
  }
  .u-lap-eleven-twentytwos {
    width: 50% !important;
  }
  .u-lap-twelve-twentytwos {
    width: 54.5454545455% !important;
  }
  .u-lap-thirteen-twentytwos {
    width: 59.0909090909% !important;
  }
  .u-lap-fourteen-twentytwos {
    width: 63.6363636364% !important;
  }
  .u-lap-fifteen-twentytwos {
    width: 68.1818181818% !important;
  }
  .u-lap-sixteen-twentytwos {
    width: 72.7272727273% !important;
  }
  .u-lap-seventeen-twentytwos {
    width: 77.2727272727% !important;
  }
  .u-lap-eighteen-twentytwos {
    width: 81.8181818182% !important;
  }
  .u-lap-nineteen-twentytwos {
    width: 86.3636363636% !important;
  }
  .u-lap-twenty-twentytwos {
    width: 90.9090909091% !important;
  }
  .u-lap-twentyone-twentytwos {
    width: 95.4545454545% !important;
  }
}
@media screen and (min-width: 45em) {
  .u-lap-and-up-one-twentytwos {
    width: 4.5454545455% !important;
  }
  .u-lap-and-up-two-twentytwos {
    width: 9.0909090909% !important;
  }
  .u-lap-and-up-three-twentytwos {
    width: 13.6363636364% !important;
  }
  .u-lap-and-up-four-twentytwos {
    width: 18.1818181818% !important;
  }
  .u-lap-and-up-five-twentytwos {
    width: 22.7272727273% !important;
  }
  .u-lap-and-up-six-twentytwos {
    width: 27.2727272727% !important;
  }
  .u-lap-and-up-severn-twentytwos {
    width: 31.8181818182% !important;
  }
  .u-lap-and-up-eight-twentytwos {
    width: 36.3636363636% !important;
  }
  .u-lap-and-up-nine-twentytwos {
    width: 40.9090909091% !important;
  }
  .u-lap-and-up-ten-twentytwos {
    width: 45.4545454545% !important;
  }
  .u-lap-and-up-eleven-twentytwos {
    width: 50% !important;
  }
  .u-lap-and-up-twelve-twentytwos {
    width: 54.5454545455% !important;
  }
  .u-lap-and-up-thirteen-twentytwos {
    width: 59.0909090909% !important;
  }
  .u-lap-and-up-fourteen-twentytwos {
    width: 63.6363636364% !important;
  }
  .u-lap-and-up-fifteen-twentytwos {
    width: 68.1818181818% !important;
  }
  .u-lap-and-up-sixteen-twentytwos {
    width: 72.7272727273% !important;
  }
  .u-lap-and-up-seventeen-twentytwos {
    width: 77.2727272727% !important;
  }
  .u-lap-and-up-eighteen-twentytwos {
    width: 81.8181818182% !important;
  }
  .u-lap-and-up-nineteen-twentytwos {
    width: 86.3636363636% !important;
  }
  .u-lap-and-up-twenty-twentytwos {
    width: 90.9090909091% !important;
  }
  .u-lap-and-up-twentyone-twentytwos {
    width: 95.4545454545% !important;
  }
}
@media screen and (max-width: 63.9375em) {
  .u-portable-one-twentytwos {
    width: 4.5454545455% !important;
  }
  .u-portable-two-twentytwos {
    width: 9.0909090909% !important;
  }
  .u-portable-three-twentytwos {
    width: 13.6363636364% !important;
  }
  .u-portable-four-twentytwos {
    width: 18.1818181818% !important;
  }
  .u-portable-five-twentytwos {
    width: 22.7272727273% !important;
  }
  .u-portable-six-twentytwos {
    width: 27.2727272727% !important;
  }
  .u-portable-severn-twentytwos {
    width: 31.8181818182% !important;
  }
  .u-portable-eight-twentytwos {
    width: 36.3636363636% !important;
  }
  .u-portable-nine-twentytwos {
    width: 40.9090909091% !important;
  }
  .u-portable-ten-twentytwos {
    width: 45.4545454545% !important;
  }
  .u-portable-eleven-twentytwos {
    width: 50% !important;
  }
  .u-portable-twelve-twentytwos {
    width: 54.5454545455% !important;
  }
  .u-portable-thirteen-twentytwos {
    width: 59.0909090909% !important;
  }
  .u-portable-fourteen-twentytwos {
    width: 63.6363636364% !important;
  }
  .u-portable-fifteen-twentytwos {
    width: 68.1818181818% !important;
  }
  .u-portable-sixteen-twentytwos {
    width: 72.7272727273% !important;
  }
  .u-portable-seventeen-twentytwos {
    width: 77.2727272727% !important;
  }
  .u-portable-eighteen-twentytwos {
    width: 81.8181818182% !important;
  }
  .u-portable-nineteen-twentytwos {
    width: 86.3636363636% !important;
  }
  .u-portable-twenty-twentytwos {
    width: 90.9090909091% !important;
  }
  .u-portable-twentyone-twentytwos {
    width: 95.4545454545% !important;
  }
}
@media screen and (min-width: 64em) {
  .u-desk-one-twentytwos {
    width: 4.5454545455% !important;
  }
  .u-desk-two-twentytwos {
    width: 9.0909090909% !important;
  }
  .u-desk-three-twentytwos {
    width: 13.6363636364% !important;
  }
  .u-desk-four-twentytwos {
    width: 18.1818181818% !important;
  }
  .u-desk-five-twentytwos {
    width: 22.7272727273% !important;
  }
  .u-desk-six-twentytwos {
    width: 27.2727272727% !important;
  }
  .u-desk-severn-twentytwos {
    width: 31.8181818182% !important;
  }
  .u-desk-eight-twentytwos {
    width: 36.3636363636% !important;
  }
  .u-desk-nine-twentytwos {
    width: 40.9090909091% !important;
  }
  .u-desk-ten-twentytwos {
    width: 45.4545454545% !important;
  }
  .u-desk-eleven-twentytwos {
    width: 50% !important;
  }
  .u-desk-twelve-twentytwos {
    width: 54.5454545455% !important;
  }
  .u-desk-thirteen-twentytwos {
    width: 59.0909090909% !important;
  }
  .u-desk-fourteen-twentytwos {
    width: 63.6363636364% !important;
  }
  .u-desk-fifteen-twentytwos {
    width: 68.1818181818% !important;
  }
  .u-desk-sixteen-twentytwos {
    width: 72.7272727273% !important;
  }
  .u-desk-seventeen-twentytwos {
    width: 77.2727272727% !important;
  }
  .u-desk-eighteen-twentytwos {
    width: 81.8181818182% !important;
  }
  .u-desk-nineteen-twentytwos {
    width: 86.3636363636% !important;
  }
  .u-desk-twenty-twentytwos {
    width: 90.9090909091% !important;
  }
  .u-desk-twentyone-twentytwos {
    width: 95.4545454545% !important;
  }
}
/** 
 * Visibility Tool
 *
 * A collection of classes to hide elements dependant on screen size
 *
 * Example:
 *  
 */
@media screen and (max-width: 44.9375em) {
  .u-palm-hide {
    border: 0 !important;
    clip: rect(0 0 0 0) !important;
    height: 1px !important;
    margin: -1px !important;
    overflow: hidden !important;
    padding: 0 !important;
    position: absolute !important;
    width: 1px !important;
  }
}
@media screen and (min-width: 45em) and (max-width: 63.9375em) {
  .u-lap-hide {
    border: 0 !important;
    clip: rect(0 0 0 0) !important;
    height: 1px !important;
    margin: -1px !important;
    overflow: hidden !important;
    padding: 0 !important;
    position: absolute !important;
    width: 1px !important;
  }
}
@media screen and (min-width: 45em) {
  .u-lap-and-up-hide {
    border: 0 !important;
    clip: rect(0 0 0 0) !important;
    height: 1px !important;
    margin: -1px !important;
    overflow: hidden !important;
    padding: 0 !important;
    position: absolute !important;
    width: 1px !important;
  }
}
@media screen and (max-width: 63.9375em) {
  .u-portable-hide {
    border: 0 !important;
    clip: rect(0 0 0 0) !important;
    height: 1px !important;
    margin: -1px !important;
    overflow: hidden !important;
    padding: 0 !important;
    position: absolute !important;
    width: 1px !important;
  }
}
@media screen and (min-width: 64em) {
  .u-desk-hide {
    border: 0 !important;
    clip: rect(0 0 0 0) !important;
    height: 1px !important;
    margin: -1px !important;
    overflow: hidden !important;
    padding: 0 !important;
    position: absolute !important;
    width: 1px !important;
  }
}
.js-display {
  display: none;
}

.js .js-invisible {
  display: none;
}
.js .js-invisible.js-visible {
  display: block;
}
.js .js-display {
  display: block;
}

/**
 * Heading trumps
 *
 * Overide the Bonito Heading settings
 *
 * Example:
 *  <h1 class="u-alpha"> ... </h1>
 */
.u-gamma {
  font-size: 20px;
  font-size: 1.25rem;
  line-height: 24px;
}

.u-kilo {
  font-size: 36px;
  font-size: 2.25rem;
  line-height: 1.1111111111;
}

.bible-study {
  display: inline-block;
  margin-bottom: 16px;
}

/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3NzL2FwcC5jc3MiLCJtYXBwaW5ncyI6IkFBQUEsZ0JBQWdCO0FDQWhCOzt1Q0FBQTtBQ0FBOzt1Q0FBQTtBQ0FBOzs7O0VBQUE7QUNBQTs7Ozs7RUFBQTtBQ0FBOzs7O0VBQUE7QUNBQTs7OztFQUFBO0FDQUE7Ozs7RUFBQTtBQ0FBOzs7O0VBQUE7QUNBQTs7OztFQUFBO0FDQUE7O3VDQUFBO0FBSUE7O0VBQUE7QUNKQTs7dUNBQUE7QUFJQTs7Ozs7RUFBQTtBQ0pBOzs7O0VBQUE7QUNBQTs7OztFQUFBO0FDQUE7O3VDQUFBO0FDQUE7O3VDQUFBO0FDQUE7O3VDQUFBO0FDQUE7QUFFQTs7OztFQUFBO0FBTUE7RUFDRTtFQUNBO0VBQ0E7QWpCNEVGOztBaUJ6RUE7O0VBQUE7QUFJQTtFQUNFO0FqQjJFRjs7QWlCeEVBOytFQUFBO0FBR0E7Ozs7O0VBQUE7QUFPQTs7Ozs7Ozs7Ozs7O0VBWUU7QWpCeUVGOztBaUJ0RUE7OztFQUFBO0FBS0E7Ozs7RUFJRTtFQUNBO0FqQndFRjs7QWlCckVBOzs7RUFBQTtBQUtBO0VBQ0U7RUFDQTtBakJ1RUY7O0FpQnBFQTs7O0VBQUE7QUFLQTs7RUFFRTtBakJzRUY7O0FpQm5FQTsrRUFBQTtBQUdBOztFQUFBO0FBSUE7RUFDRTtBakJvRUY7O0FpQmpFQTs7O0VBQUE7QUFLQTs7RUFFRTtBakJtRUY7O0FpQmhFQTsrRUFBQTtBQUdBOztFQUFBO0FBSUE7RUFDRTtBakJpRUY7O0FpQjlEQTs7RUFBQTtBQUlBOztFQUVFO0FqQmdFRjs7QWlCN0RBOztFQUFBO0FBSUE7RUFDRTtBakIrREY7O0FpQjVEQTs7O0VBQUE7QUFLQTtFQUNFO0VBQ0E7QWpCOERGOztBaUIzREE7O0VBQUE7QUFJQTtFQUNFO0VBQ0E7QWpCNkRGOztBaUIxREE7O0VBQUE7QUFJQTtFQUNFO0FqQjRERjs7QWlCekRBOztFQUFBO0FBSUE7O0VBRUU7RUFDQTtFQUNBO0VBQ0E7QWpCMkRGOztBaUJ4REE7RUFDRTtBakIyREY7O0FpQnhEQTtFQUNFO0FqQjJERjs7QWlCeERBOytFQUFBO0FBR0E7O0VBQUE7QUFJQTtFQUNFO0FqQnlERjs7QWlCdERBOztFQUFBO0FBSUE7RUFDRTtBakJ3REY7O0FpQnJEQTsrRUFBQTtBQUdBOztFQUFBO0FBSUE7RUFDRTtBakJzREY7O0FpQm5EQTs7RUFBQTtBQUlBO0VBQ0U7RUFDQTtBakJxREY7O0FpQmxEQTs7RUFBQTtBQUlBO0VBQ0U7QWpCb0RGOztBaUJqREE7O0VBQUE7QUFJQTs7OztFQUlFO0VBQ0E7QWpCbURGOztBaUJoREE7K0VBQUE7QUFHQTs7O0VBQUE7QUFLQTs7Ozs7RUFBQTtBQU9BOzs7OztFQUtFO0VBQ0E7RUFDQTtBakJnREY7O0FpQjdDQTs7RUFBQTtBQUlBO0VBQ0U7QWpCK0NGOztBaUI1Q0E7Ozs7O0VBQUE7QUFPQTs7RUFFRTtBakI4Q0Y7O0FpQjNDQTs7Ozs7O0VBQUE7QUFRQTs7OztFQUlFO0VBQ0E7QWpCNkNGOztBaUIxQ0E7O0VBQUE7QUFJQTs7RUFFRTtBakI0Q0Y7O0FpQnpDQTs7RUFBQTtBQUlBOztFQUVFO0VBQ0E7QWpCMkNGOztBaUJ4Q0E7OztFQUFBO0FBS0E7RUFDRTtBakIwQ0Y7O0FpQnZDQTs7Ozs7O0VBQUE7QUFRQTs7RUFFRTtFQUNBO0FqQnlDRjs7QWlCdENBOzs7O0VBQUE7QUFNQTs7RUFFRTtBakJ3Q0Y7O0FpQnJDQTs7O0VBQUE7QUFLQTtFQUNFO0VBQ0E7QWpCdUNGOztBaUJwQ0E7Ozs7RUFBQTtBQU1BOztFQUVFO0FqQnNDRjs7QWlCbkNBOztFQUFBO0FBSUE7RUFDRTtFQUNBO0VBQ0E7QWpCcUNGOztBaUJsQ0E7OztFQUFBO0FBS0E7RUFDRTtFQUNBO0FqQm9DRjs7QWlCakNBOztFQUFBO0FBSUE7RUFDRTtBakJtQ0Y7O0FpQmhDQTs7O0VBQUE7QUFLQTtFQUNFO0FqQmtDRjs7QWlCL0JBOytFQUFBO0FBR0E7O0VBQUE7QUFJQTtFQUNFO0VBQ0E7QWpCZ0NGOztBaUI3QkE7O0VBRUU7QWpCZ0NGOztBa0JyY0E7O3VDQUFBO0FBSUE7OztFQUFBO0FBSUE7Ozs7Ozs7O0VBUUk7RUFDQTtBbEJ1Y0o7O0FrQmhjQTs7RUFBQTtBQUdBOztFQUVJO0FsQm1jSjs7QWtCNWJBOztFQUFBO0FBR0E7O0VBRUk7QWxCK2JKOztBa0J4YkE7O0VBQUE7QUFHQTtFQUNJO0FsQjJiSjs7QW1CL2VBOzt1Q0FBQTtBQUlBOzs7OztFQUFBO0FBTUE7RUFHWTtBbkJpZlo7O0FtQjVlSTtFQUtZO0FuQjZlaEI7O0FvQnBnQkE7O3VDQUFBO0FBSUE7Ozs7RUFBQTtBQUtBOzs7Ozs7OztFQVFJLG1CZER1QjtFY0V2QjtBcEJzZ0JKOztBb0IvZkE7OztFQUFBO0FBSUE7RUFFSTtFQUNBO0FwQmlnQko7O0FxQmppQkE7O3VDQUFBO0FBSUE7Ozs7Ozs7Ozs7Ozs7RUFBQTtBQWNBO0VBQ0k7RUFDQTtFQUNBLHlCbEJab0I7RWtCYXBCLGNsQlZVO0VrQldWO0VBQ0E7RUFDQTtFQUNJO0VBQ0o7RUFDQztBckJtaUJMOztBc0IvakJBOzt1Q0FBQTtBQUlBOztFQUFBO0FBWUE7RVB5Q0ksZU5sRG9CO0VNbURwQjtFQUdJO0FmOGdCUjs7QXNCdmpCQTtFUHFDSSxlTmpEb0I7RU1rRHBCO0VBR0k7QWZvaEJSOztBc0J6akJBO0VQaUNJLGVOaERvQjtFTWlEcEI7RUFHSTtBZjBoQlI7O0FzQjNqQkE7RVA2QkksZU4vQ29CO0VNZ0RwQjtFQUdJO0FmZ2lCUjs7QXNCN2pCQTtFUHlCSSxlTjlDb0I7RU0rQ3BCO0VBR0k7QWZzaUJSOztBc0IvakJBO0VQcUJJLGVON0NvQjtFTThDcEI7RUFHSTtBZjRpQlI7O0F1QnptQkE7O3VDQUFBO0FBSUE7O0VBQUE7QUFLSTs7RUFFSTtBdkJ5bUJSOztBd0JwbkJBOzt1Q0FBQTtBQUlBOzs7Ozs7RUFBQTtBQU9BO0VBQ0k7RUFDQTtFQUNBO0F4QnNuQko7O0F3QmpuQkE7Ozs7O0VBQUE7QUFNQTs7Y0FFZTtFQUNYO0F4Qm9uQko7O0F5QmhwQkE7O0VBQUE7QUFJQTtFQUNJO0VBRUEsY3RCS1U7RXNCSlYseURwQkhXO0VvQktYLG1CdEJIZTtBSG1wQm5COztBeUI3b0JBO0VBQ0ksbUJ0QkxvQjtFc0JNcEI7QXpCZ3BCSjs7QXlCN29CQTtFQUNDLGN0QlBhO0FIdXBCZDs7QTBCbnFCQTs7Ozs7Ozs7O0VBQUE7QUFZSTtFQUNJLGN2QkxhO0FIeXFCckI7QTBCanFCSTtFQUNJO0VBQ0EsYXBCRm1CO0VvQkduQjtFQUNBLGdCcEJEMEI7RW9CRTFCLG1CcEJGMEI7RVNzQzlCLGVXbEM4QjtFWG1DOUI7RUFTUSxpQlc1QzRCO0VBRWhDO0VBQ0Esa0JwQlR5QjtBTjRxQmpDO0EwQmpxQlE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUVBO0VBQ0E7RUFFQTtFQUNBO0ExQmlxQlo7QTJCdnNCQTs7O0VBQUE7QUFLQTs7Ozs7O0VBTUk7QTNCd3NCSjs7QTRCbnRCQTs7dUNBQUE7QUFJQTs7RUFBQTtBQXlCQTs7O0VBQUE7QUFJQTtFQUVJO0E1QjhyQko7O0E0QjFyQkk7O0VBQUE7QUFHQTtFQUVJO0VBQ0EsbUJ0QjdCbUI7QU55dEIzQjs7QTRCbm5CSTs7RUFBQTtBQUdBO0VBRUk7QTVCcW5CUjs7QTZCaHZCQTs7dUNBQUE7QUFJQTs7RUFBQTtBQW1DQTs7Ozs7Ozs7OztFQUFBO0FBV0E7O0VBRUk7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBLHlCMUJwRGlCO0UwQnlEYjtFQUlBLGtCbkJsRHFCO0FWNnZCN0I7QTZCeHNCSTs7RUFJSTtFQUNBLGMxQmpFTTtBSHl3QmQ7O0E2Qm5zQkE7O0VBQUE7QUFHQTs7RUFFSTtFQUNBO0E3QnNzQko7O0E2Qi9wQkk7O0VBQUE7QUFJQTtFQUVJO0E3QmdxQlI7O0E4QnJ5QkE7Ozs7Ozs7Ozs7OztFQUFBO0FBMEJBO0VBRUksZ0J2Qm5CcUI7RXVCb0JyQjtFQUNBO0E5QjB4Qko7O0ErQnh6QkE7O3VDQUFBO0FBSUE7Ozs7RUFBQTtBQThCQTs7OztFQUFBO0FBS0E7RUFFSTtFQUNBO0EvQmd5Qko7O0ErQjd4Qkk7Ozs7RUFBQTtBQUtBOztFQUlJO0VBQ0E7QS9COHhCUjs7QStCM3hCSTs7RUFBQTtBQUdBO0VBRUksbUJ6Qi9DbUI7QU40MEIzQjtBK0IzeEJRO0VBQ0k7RUFDQTtBL0I2eEJaOztBK0J4eEJJOzs7O0VBQUE7QUFLQTtFQUVJO0EvQjB4QlI7QStCeHhCUTs7RUFFSTtBL0IweEJaOztBK0IxdUJJOztFQUFBO0FBT0k7RUFFSSxrQkE3SHlCO0EvQnEyQnJDOztBZ0NwM0JBOzt1Q0FBQTtBQUlBOzs7OztFQUFBO0FBeUNBOztFQUFBO0FBR0E7RUFFSTtFQUNBO0VBQ0E7RUFDQTtBaENrMUJKOztBZ0MvMEJJOzs7Ozs7RUFBQTtBQU9BO0VBRUk7RUFDQSxpQnhCMURlLEV3QjBEc0I7RUFDckM7RUFDQTtBaENpMUJSOztBZ0N4d0JJOztFQUFBO0FBSUE7RUFFSTtBaEN5d0JSO0FnQ3Z3QlE7RUFFSSxrQjFCdkllO0FOKzRCM0I7O0FnQzFzQkk7O0VBQUE7QUFPSTtFQUVJO0FoQ3dzQlo7O0FnQ3RwQkk7O0VBQUE7QUFJQTtFQUVJO0FoQ3VwQlI7QWdDcnBCUTtFQUVJO0FoQ3NwQlo7O0FpQ2g3QkE7O3VDQUFBO0FBSUE7O0VBQUE7QUFVQTtFQUVJO0VBQ0E7RUFDQTtBakMwNkJKO0FpQ3g2Qkk7RUFDSTtBakMwNkJSOztBa0MvN0JBOzt1Q0FBQTtBQUlBOzs7RUFBQTtBQXVCQTs7O0VBSVE7QWxDNjZCUjs7QWtDMTZCQTtFQUVJO0VBQ0E7RUFDQTtFQUNBLHFCQXJCNkI7QWxDaThCakM7QWtDcDZCSTs7RUFFSSxhNUJqQ21CO0U0QmtDbkIsd0JBaEN5QjtBbENzOEJqQzs7QW1DeDlCQTs7dUNBQUE7QUFJQTs7O0VBQUE7QUEyQkE7RUFHSTtBbkNpOEJKOztBbUM5N0JJO0VBRUk7RUFDQSxrQjdCeEJtQjtBTnc5QjNCO0FtQzk3QlE7RUFDSTtBbkNnOEJaOztBbUMzN0JJO0VBRUk7RUFDQTtBbkM2N0JSO0FtQzM3QlE7O0VBRUk7QW5DNjdCWjs7QW9DcC9CQTs7dUNBQUE7QUFJQTs7O0VBQUE7QUEyQkE7OztFQUFBO0FBSUE7RUFFSTtFQUNBO0VBQ0E7QXBDODlCSjs7QW9DMzlCSTs7RUFBQTtBQUdBO0VBRUk7QXBDNjlCUjs7QXFDNWdDQTs7dUNBQUE7QUEyQkE7RUFFSTtBckNzL0JKOztBc0NuaENBOzt1Q0FBQTtBQUlBOztFQUFBO0FBT0E7Ozs7OztFQUFBO0FBT0E7RUFFSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBdENnaENKOztBc0M3Z0NJO0VBRUk7QXRDK2dDUjs7QXNDNWdDUTtFQUVJO0F0QzhnQ1o7O0F1Q2xqQ0E7Ozs7O0VBQUE7QUFPQTtFQUNJLGlCakNRdUI7RWlDUHZCLG9CakNPdUI7RWlDTHZCO0F2Q21qQ0o7O0F1Q2hqQ0E7RUFDSTtFQUVBO0VBQ0EsbUJqQ0Z1QjtBTm9qQzNCOztBd0Nwa0NBOzs7Ozs7O0VBQUE7QUFTQTtFQUNJO0F4Q3NrQ0o7O0F3Q25rQ0E7RUFDSTtFQUNBLGtCbENJOEI7RWtDSDlCLG1CbENHOEI7QU5ta0NsQzs7QXlDdGxDQTs7Ozs7OztFQUFBO0FBVUE7RUFDSSxjdENKZTtBSDJsQ25COztBeUNubENBO0VBQ0ksY3RDUmlCO0VZaURqQixlMEJ4QzBCO0UxQnlDMUI7RUFTUSxpQjBCbER3QjtBekN3bENwQzs7QXlDcGxDQTtFQUNJLGN0Q1ZVO0VzQ1dWO0F6Q3VsQ0o7O0F5Q25sQ0E7RUFDSTtBekNzbENKOztBeUNsbENBOzs7RUFHSTtFQUNBO0F6Q3FsQ0o7O0F5Q2hsQ0E7RTFCZ0JJLGUwQmYwQjtFMUJnQjFCO0VBU1EsaUIwQnpCd0I7RUFDaEM7QXpDcWxDSjs7QXlDamxDQTtFMUJVSSxlMEJUMEI7RTFCVTFCO0VBU1EsaUIwQm5Cd0I7RUFDaEM7RUFDQTtFQUNBLGN0QzNDaUI7QUhpb0NyQjs7QXlDbGxDQTtFMUJFSSxlMEJEMEI7RTFCRTFCO0VBU1EsaUIwQlh3QjtFQUNoQztBekN1bENKOztBeUNubENBO0UxQkpJLGUwQkswQjtFMUJKMUI7RUFTUSxpQjBCTHdCO0VBQ2hDO0F6Q3dsQ0o7O0EwQ3ZwQ0E7Ozs7Ozs7RUFBQTtBMUJrRFk7RTBCL0JBOzs7SUFBQTtFQUtBO0lBRUk7SUFDQTtFMUM4b0NkO0UwQzVvQ2M7SUFFSTtJQUNBO0UxQzZvQ2xCO0FBQ0Y7QWdCNW5DWTtFMEIvQkE7OztJQUFBO0VBS0E7SUFFSTtJQUNBO0UxQzRwQ2Q7RTBDMXBDYztJQUVJO0lBQ0E7RTFDMnBDbEI7QUFDRjtBZ0Ixb0NZO0UwQi9CQTs7O0lBQUE7RUFLQTtJQUVJO0lBQ0E7RTFDMHFDZDtFMEN4cUNjO0lBRUk7SUFDQTtFMUN5cUNsQjtBQUNGO0FnQnhwQ1k7RTBCL0JBOzs7SUFBQTtFQUtBO0lBRUk7SUFDQTtFMUN3ckNkO0UwQ3RyQ2M7SUFFSTtJQUNBO0UxQ3VyQ2xCO0FBQ0Y7QWdCdHFDWTtFMEIvQkE7OztJQUFBO0VBS0E7SUFFSTtJQUNBO0UxQ3NzQ2Q7RTBDcHNDYztJQUVJO0lBQ0E7RTFDcXNDbEI7QUFDRjtBMkN0dUNBOzs7Ozs7O0VBQUE7QUFXSTtFQUNJO0EzQ3F1Q1I7O0EyQy90Q0k7RUFDSTtBM0NrdUNSOztBZ0Juc0NZO0UyQnRCSjtJQUVJO0lBQ0E7RTNDNHRDVjtBQUNGO0E0QzV2Q0E7Ozs7Ozs7O0VBQUE7QUFZSTtFQUNJO0E1QzJ2Q1I7QTRDeHZDSTtFQUNJO0E1QzB2Q1I7QTRDbHZDQTtFQUNJO0E1Q292Q0o7O0E2Qzl3Q0E7Ozs7Ozs7Ozs7RUFBQTtBQVlBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQSxtQnZDRThCO0FOOHdDbEM7QTZDOXdDSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QTdDZ3hDUjs7QThDeHlDQTs7Ozs7OztFQUFBO0FBVUE7RUFDSTtFL0I4Q0EsZStCNUMwQjtFL0I2QzFCO0VBR0k7RStCL0NKO0VBRUE7QTlDeXlDSjtBOEN2eUNJO0VBQ0k7RUFDQSx5QjNDT2E7RTJDTmI7QTlDeXlDUjtBOEN0eUNJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQSx5QjNDTFE7RTJDTVI7RUFDQTtFQUNBO0E5Q3d5Q1I7O0E4Q2x5Q0k7RUFDSSx5QjNDOUJnQjtBSG0wQ3hCO0E4Q2x5Q0k7RUFDSSx5QjNDL0JNO0FIbTBDZDs7QStDLzBDQTs7O0VBQUE7QUFNQTtFaENtREksZWdDbEQwQjtFaENtRDFCO0VBU1EsaUJnQzVEd0I7RUFDaEMsbUJ6Q1F1QjtFeUNQdkIsZ0J6Q1M4QjtFeUNSOUIsbUJ6Q1E4QjtFeUNQOUI7RUFDQTtFQUVBLGM1Q0ZVO0U0Q0lWO0EvQ2cxQ0o7QStDLzBDSTtFQUNJO0EvQ2kxQ1I7O0ErQzEwQ0k7O0VBQ0ksbUI1Q05TO0FIbzFDakI7O0ErQ3owQ0E7RUFDSSxtQjVDRWMsRTRDRmdCLG1CQUM5QixlQUNBO0VBQ0E7RUFFQTtBL0MyMENKO0ErQ3owQ0k7RUFDSSxtQjVDTlUsRTRDTW9CLG1CQUM5QixlQUNBO0VBQ0E7QS9DMjBDUjs7QStDdDBDQTtFQUNJLG1CNUNyQmM7RTRDc0JkLGM1Q3RDVTtFNEN3Q1Y7QS9DdzBDSjtBK0N0MENJO0VBQ0ksbUI1QzdCVztFNEM4QlgsYzVDL0NnQjtBSHUzQ3hCOztBK0NuMENBO0VBQ0k7RUFFQTtBL0NxMENKO0ErQ24wQ0k7RUFDSSxtQjVDM0RhO0FIZzRDckI7O0ErQ2gwQ0E7RWhDZkksZWdDZ0IwQjtFaENmMUI7RUFHSTtFZ0NhSixnQnpDeEQ4QjtFeUN5RDlCLG1CekN6RDhCO0V5QzBEOUI7RUFDQTtBL0NxMENKOztBZ0JoMkNZO0UrQmdDUjtJaEN6QkEsZWdDMEI4QjtJaEN6QjlCO0lBR0k7SWdDdUJBO0lBQ0E7SUFDQTtJQUNBO0lBRUE7RS9DcTBDTjtBQUNGO0FnRC81Q0E7Ozs7O0VBQUE7QUFZQTtFQUNJLFkxQ0s4QjtFMENKOUIsbUIxQ0V1QjtFMENBdkIsYzdDUVk7RTZDTlosbUI3Q1NpQjtFNkNSakIsa0IxQ0Q4QjtFMENFOUI7QWhEeTVDSjs7QWdEbjVDQTtFQUNJO0VBQ0Esa0IxQ1Y4QjtFU3VDOUIsZWlDNUIwQjtFakM2QjFCO0VBR0k7RWlDL0JKLGM3Q3RCaUI7RTZDdUJqQjtBaER3NUNKOztBZ0RwNUNBO0VBQ0k7QWhEdTVDSjtBZ0RyNUNJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0EsWUFyQ2E7RUF1Q2I7QWhEczVDUjs7QWdEajVDQTtFQUNJLGM3QzdCWTtFNkM4Qlo7RUFDQTtBaERvNUNKO0FnRGw1Q0k7RUFDSSxjN0NsRGE7QUhzOENyQjs7QWdELzRDQTtFQUNJO0VBQ0E7RUFDQTtFQUNBLFlBNURtQjtFQThEbkIsa0IxQ25EOEI7RTBDb0Q5QjtFakNiQSxlaUNlMEI7RWpDZDFCO0VBR0k7RWlDYUo7RUFDQTtFQUNBLGtCMUMxRDhCO0UwQzREOUI7QWhEZzVDSjtBZ0Q5NENJO0VBQ0kseUI3Q3JFTTtFNkNzRU47QWhEZzVDUjtBZ0Q1NENJO0VBQ0k7RUFDQTtBaEQ4NENSO0FnRDM0Q0k7RUFDSSx5QjdDaEZNO0FINjlDZDtBZ0QzNENRO0VBQ0kseUI3Q25GRTtBSGcrQ2Q7QWdEejRDSTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0EsbUJBaEdhO0VBaUdiO0VBQ0E7RUFDQSxZQXBHZTtFQXNHZixpQkF0R2U7RUF3R2Y7S0FBQTtVQUFBO0VBQ0E7RUFDQTtFQUNBO0VBRUE7QWhEdzRDUjtBZ0R0NENRO0VBQ0k7QWhEdzRDWjtBZ0RwNENJO0VBQ0k7QWhEczRDUjtBZ0RuNENJO0VBQ0k7RUFDQSxZQTFIZTtFQTJIZjtFQUNBO0VBQ0E7RUFDQTtFQUVBLG1CN0MvSGE7RTZDZ0liO0VBRUE7RUFDQTtBaERtNENSO0FnRGg0Q0k7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUVBO0VBRUE7RUFDQTtBaERnNENSO0FnRDczQ0k7RUFNSSxjN0MxSmdCO0U2QzJKaEIsbUI3Q3hKTTtBSGtoRGQ7O0FnRHIzQ0E7RUFDSTtBaER3M0NKO0FnRHQzQ0k7RUFDSSxpQjFDM0owQjtFU3VDOUIsZWlDcUg4QjtFakNwSDlCO0VBR0k7RWlDa0hBLGM3Q3ZLYTtFNkN3S2I7QWhEMDNDUjtBZ0R4M0NRO0VBQ0k7RUFDQSxpQjFDbktxQjtFMENvS3JCO0VBRUEseUI3QzdKTztFNkM4SlAsWTFDeEtlO0UwQ3lLZixXMUN6S2U7RTBDMEtmLG1CMUMxS2U7RTBDNEtmO0FoRHczQ1o7QWdEbjNDSTtFQUNJLHlCN0MxTGE7QUgraURyQjs7QWdELzJDSTtFQUNJLGM3Q2xNVztBSG9qRG5CO0FnRGgzQ0k7O0VBRUkscUI3Q3RNVztFNkN1TVg7QWhEazNDUjtBZ0RoM0NROztFQUNJLHlCN0MxTU87QUg2akRuQjs7QWdENzJDQTtFQUNJO0FoRGczQ0o7QWdEOTJDSTtFQUNJO0FoRGczQ1I7O0FnRDMyQ0E7RUFDSTtFQUNBO0VBQ0EsYzdDNU5lO0FIMGtEbkI7O0FnRDMyQ0E7RUFDSTtBaEQ4MkNKOztBZ0QzMkNBO0VBQ0k7QWhEODJDSjtBZ0Q3MkNJO0VBQ0k7QWhEKzJDUjtBZ0Q3MkNJO0VBRUk7QWhEODJDUjs7QWdEMTJDQTtFakM1TEksZWlDNkwwQjtFakM1TDFCO0VBR0k7RWlDMkxKO0VBQ0E7RUFDQTtBaEQ4MkNKOztBZ0R6MkNJO0VBQ0k7QWhENDJDUjs7QWdEdDJDSTtFQUNJLFlBOVBnQjtBaER1bUR4QjtBZ0R0MkNJO0VBQ0ksbUJBbFFnQjtBaEQwbUR4Qjs7QWdCamtEWTtFZ0M4TlI7SUFDSTtFaER1MkNOO0FBQ0Y7QWlEem5EQTs7Ozs7OztFQUFBO0FBV0E7RUFDSTtFQUNBO0VBQ0EsWTNDRXVCO0UyQ0R2QixtQjNDQ3VCO0UyQ0N2QjtFQUNBO0VBQ0Esa0IzQ0Y2QjtBTnluRGpDO0FpRHJuREk7RUFDSTtFQUNBLFkzQ1BtQjtFMkNRbkI7RUFDQTtFQUNBO0VBRUE7RUFDQTtFQUNBLGtCM0NieUI7RTJDZXpCO0FqRHFuRFI7O0FpRDdtRFE7RUFDSTtBakRnbkRaOztBaURqbkRRO0VBQ0k7QWpEb25EWjs7QWlEcm5EUTtFQUNJO0FqRHduRFo7O0FpRHpuRFE7RUFDSTtBakQ0bkRaOztBaUQ3bkRRO0VBQ0k7QWpEZ29EWjs7QWlEam9EUTtFQUNJO0FqRG9vRFo7O0FpRHJvRFE7RUFDSTtBakR3b0RaOztBaUR6b0RRO0VBQ0k7QWpENG9EWjs7QWlEN29EUTtFQUNJO0FqRGdwRFo7O0FpRGpwRFE7RUFDSTtBakRvcERaOztBaURycERRO0VBQ0k7QWpEd3BEWjs7QWlEenBEUTtFQUNJO0FqRDRwRFo7O0FpRDdwRFE7RUFDSTtBakRncURaOztBaURqcURRO0VBQ0k7QWpEb3FEWjs7QWlEcnFEUTtFQUNJO0FqRHdxRFo7O0FpRHpxRFE7RUFDSTtBakQ0cURaOztBaUQ3cURRO0VBQ0k7QWpEZ3JEWjs7QWlEanJEUTtFQUNJO0FqRG9yRFo7O0FpRHJyRFE7RUFDSTtBakR3ckRaOztBaUR6ckRRO0VBQ0k7QWpENHJEWjs7QWlEN3JEUTtFQUNJO0FqRGdzRFo7O0FpRGpzRFE7RUFDSTtBakRvc0RaOztBaURyc0RRO0VBQ0k7QWpEd3NEWjs7QWlEenNEUTtFQUNJO0FqRDRzRFo7O0FpRDdzRFE7RUFDSTtBakRndERaOztBaURqdERRO0VBQ0k7QWpEb3REWjs7QWlEcnREUTtFQUNJO0FqRHd0RFo7O0FpRHp0RFE7RUFDSTtBakQ0dERaOztBaUQ3dERRO0VBQ0k7QWpEZ3VEWjs7QWlEanVEUTtFQUNJO0FqRG91RFo7O0FpRHJ1RFE7RUFDSTtBakR3dURaOztBaUR6dURRO0VBQ0k7QWpENHVEWjs7QWlEN3VEUTtFQUNJO0FqRGd2RFo7O0FpRGp2RFE7RUFDSTtBakRvdkRaOztBaURydkRRO0VBQ0k7QWpEd3ZEWjs7QWlEenZEUTtFQUNJO0FqRDR2RFo7O0FpRDd2RFE7RUFDSTtBakRnd0RaOztBaURqd0RRO0VBQ0k7QWpEb3dEWjs7QWlEcndEUTtFQUNJO0FqRHd3RFo7O0FpRHp3RFE7RUFDSTtBakQ0d0RaOztBa0RyekRBOzs7OztFQUFBO0FBUUE7RUFDSTtBbERzekRKOztBa0RuekRBO0VuQzZDSSxlbUM1QzBCO0VuQzZDMUI7RUFHSTtFbUMvQ0osYy9DUGU7QUgrekRuQjs7QWtEcnpEQTtFbkN3Q0ksZW1DdkMwQjtFbkN3QzFCO0VBU1EsaUJtQ2pEd0I7RUFDaEM7RUFDQSxrQjVDRDhCO0U0Q0U5QjtBbEQwekRKOztBa0R2ekRBO0VuQ2lDSSxlbUNoQzBCO0VuQ2lDMUI7RUFTUSxpQm1DMUN3QjtFQUNoQztFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWxENHpESjs7QWtEenpEQTtFQUNJO0FsRDR6REo7O0FrRHp6REE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUVBO0VBQ0E7RUFFQTtFQUNBO0VBRUE7QWxEeXpESjtBa0R2ekRJO0VBQ0k7RUFDQTtBbER5ekRSO0FrRHR6REk7RUFDSTtFQUNBO0FsRHd6RFI7QWtEcnpESTtFQUNJO0VBQ0E7QWxEdXpEUjtBa0RwekRJO0VBQ0k7RUFDQTtBbERzekRSO0FrRG56REk7RUFDSTtFQUNBO0FsRHF6RFI7O0FrRGp6REE7O0VBRUksbUIvQ3hFaUI7QUg0M0RyQjs7QWdCbDFEWTtFa0NrQ1I7SW5DM0JBLGVtQzRCOEI7SW5DM0I5QjtJQVNRLGlCbUNrQjRCO0VsRHN6RHRDO0VrRG56REU7SW5DL0JBLGVtQ2dDOEI7SW5DL0I5QjtJQVNRLGlCbUNzQjRCO0lBQ2hDLGlCNUN6RXlCO0k0QzBFekIsZ0I1QzFFeUI7RU5pNEQvQjtFa0RwekRFO0lBQ0k7SUFDQSxpQjVDL0V5QjtJNENnRnpCLGdCNUNoRnlCO0VOczREL0I7RWtEcHpETTtJQUNJO0lBQ0E7RWxEc3pEVjtFa0RuekRNO0lBQ0k7SUFDQTtFbERxekRWO0VrRGx6RE07SUFDSTtJQUNBO0VsRG96RFY7RWtEanpETTtJQUNJO0lBQ0E7RWxEbXpEVjtFa0RoekRNO0lBQ0k7SUFDQTtFbERrekRWO0FBQ0Y7QW1ENTZEQTs7Ozs7Ozs7OztFQUFBO0FBYUE7RUFDSTtFQUNBO0VBQ0Esa0I3Q0U4QjtFNkNBOUIsY2hETlU7RWdET1Y7RXBDc0NBLGVvQ3JDMEI7RXBDc0MxQjtFQVNRLGlCb0MvQ3dCO0VBRWhDLHlCaERmZTtFZ0RnQmYsa0I3Q042QjtFNkNRN0I7QW5EMjZESjtBbUR6NkRJO0VBQ0kseUJoRHBCYTtBSCs3RHJCOztBbUR0NkRBO0VBQ0k7RUFFQTtFcENxQkEsZW9DcEIwQjtFcENxQjFCO0VBU1EsaUJvQzlCd0I7RUFDaEMsa0I3Q3RCdUI7QU5nOEQzQjs7QWdCOTVEWTtFbUNSUjtJcENlQSxlb0NkOEI7SXBDZTlCO0lBU1EsaUJvQ3hCNEI7RW5ENDZEdEM7RW1EejZERTtJQUNJO0VuRDI2RE47QUFDRjtBb0QzOURBOzs7OztFQUFBO0FBUUE7RUFDSTtFQUVBLDZGQUNJO0VBS0o7RUFDQTtBcERxOURKO0FvRG45REk7RUFDSTtBcERxOURSO0FvRGw5REk7RUFDSSxpQjlDVG1CO0U4Q1VuQixvQjlDUDBCO0FOMjlEbEM7O0FvRC84REE7RUFDSTtFckN5QkEsZXFDdkIwQjtFckN3QjFCO0VBU1EsaUJxQ2pDd0I7RUFDaEMsY2pENUJlO0VpRDZCZjtBcERtOURKOztBb0QvOERBO0VBQ0k7QXBEazlESjs7QW9EOThEQTtFQUNJLHlCakRyQ29CO0FIcy9EeEI7O0FvRDc4REE7RUFDSTtFQUNBLG1COUNwQ3VCO0FOby9EM0I7O0FvRDc4REE7RXJDRUksZ0JxQ0QwQjtFckNFMUI7RUFHSTtBZjY4RFI7O0FnQng5RFk7RW9DYVI7SUFDSTtJQUNBO0VwRCs4RE47RW9ENzhETTtJQUNJO0VwRCs4RFY7RW9ENThETTtJQUNJO0VwRDg4RFY7RW9EMzhETTtJQUNJO0lBRUEsaUI5QzlEZTtJOEMrRGY7RXBENDhEVjtFb0RyOERFO0lBQ0ksaUI5Q3ZFbUI7SThDd0VuQjtFcER1OEROO0VvRHA4REU7SXJDbENBLGdCcUNtQzhCO0lyQ2xDOUI7SUFHSTtFZnUrRE47QUFDRjtBcURyaUVBOzs7Ozs7O0VBQUE7QUFVQTtFQUNJO0VBRUEseUJsREpvQjtBSHdpRXhCOztBcURoaUVBO0VBQ0k7QXJEbWlFSjs7QXFEOWhFQTtFQUNJO0VBQ0E7QXJEaWlFSjs7QXFEN2hFQTtFQUNJLG1CL0NkdUI7RStDZXZCO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUVBLG1CbEQ3Qm9CO0VrRCtCcEI7QXJEOGhFSjs7QXFEM2hFQTs7RUFFSTtBckQ4aEVKOztBcUQxaEVBO0VBQ0k7RUFDQTtFQUNBO0VBRUE7RUFDQTtBckQ0aEVKO0FxRDFoRUk7RUFDSSxjbEQ5Q007QUgwa0VkOztBcUR0aEVBO0VBQ0ksY2xEekRpQjtFa0QwRGpCO0FyRHloRUo7QXFEdmhFSTtFQUNJO0FyRHloRVI7O0FxRHBoRUE7RUFDSTtFQUNBO0FyRHVoRUo7QXFEcmhFSTtFQUNJO0FyRHVoRVI7O0FnQnBqRVk7RXFDa0NSO0lBQ0k7RXJEc2hFTjtBQUNGO0FxRGxoRUE7RUFDRztBckRvaEVIOztBcURoaEVBO0VBQ0k7RUFDQTtBckRtaEVKOztBZ0Jsa0VZO0VxQ29EUjtJQUNJLGlCL0N2Rm1CO0krQ3dGbkI7RXJEa2hFTjtFcUQ5Z0VFO0lBQ0k7SUFDQSxtQi9DOUZtQjtJK0MrRm5CO0lBQ0E7SUFFQTtFckQrZ0VOO0VxRDNnRUU7SUFDSTtJQUNBO0lBQ0E7SUFFQTtFckQ0Z0VOO0VxRHhnRUU7SUFDSTtFckQwZ0VOO0VxRHRnRUU7SUFDSTtFckR3Z0VOO0FBQ0Y7QXNEOW9FQTs7Ozs7RUFBQTtBQU9BO0VBQ0k7RUFDQTtBdEQrb0VKOztBc0Q1b0VBO0VBQ0k7RXZDNENBLGV1QzNDMEI7RXZDNEMxQjtFQVNRLGlCdUNyRHdCO0F0RGlwRXBDOztBc0Q5b0VBO0VBQ0kseUJuRFhlO0VtRFlmO0VBQ0Esb0JoREQ4QjtFZ0RFOUI7QXREaXBFSjs7QXNEOW9FQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFFQSx5Qm5EM0JlO0VtRDRCZjtBdERncEVKOztBdURuckVBOzs7Ozs7Ozs7Ozs7O0VBQUE7QUFnQkE7RXhDeUNJLGV3Q3hDMEI7RXhDeUMxQjtFQVNRLGlCd0NsRHdCO0VBQ2hDLG1CakRFNkI7RWlERDdCLGlCakREOEI7RWlERTlCLGtCakRGOEI7RWlERzlCO0VBQ0E7QXZEc3JFSjtBdURyckVJO0VBQ0k7RUFDQTtFQUNBO0VBQ0EsY3BEbkJhO0VvRG9CYjtFQUNBO0F2RHVyRVI7O0F1RG5yRUE7RUFDSSxtQmpEbEJ1QjtFaURtQnZCO0VBQ0E7RUFDQTtFQUVBO0VBQ0E7RUFDQTtBdkRxckVKO0F1RG5yRUk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtLQUFBO0VBQ0E7RUFDQTtFQUNBO0F2RHFyRVI7O0F1RGpyRUE7RUFDSTtBdkRvckVKOztBdURqckVBO0VBS0k7RUFDQSxvQmpEaER1QjtBTmd1RTNCO0F1RHJyRUk7RUFDSTtBdkR1ckVSOztBZ0Jqc0VZO0V1Q2tCUjtJQUNJO0lBQ0EsbUJqRHREbUI7RU55dUV6QjtBQUNGO0F3RDF2RUE7Ozs7O0VBQUE7QUFPQTtFQUNJLHlCckRnQlk7RVlpQ1osZXlDaEQwQjtFekNpRDFCO0VBU1EsaUJ5QzFEd0I7RUFFaEM7RUFDQSxtQmxETThCO0FOc3ZFbEM7QXdEMXZFSTtFQUNJLGNyREhNO0FIK3ZFZDtBd0QxdkVRO0VBQ0ksY3JEVlM7QUhzd0VyQjs7QWdCNXRFWTtFd0MxQlI7SUFDSTtFeEQwdkVOO0FBQ0Y7QXlEcHhFQTs7Ozs7OztFQUFBO0FBVUE7RUFDSSxtQm5EUzZCO0FOMndFakM7O0F5RGh4RUE7RUFDSTtFQUVBO0F6RGt4RUo7O0F5RDl3RUE7RUFDSSxrQm5ETDhCO0FOc3hFbEM7O0FnQnR2RVk7RXlDdEJSO0lBQ0ksbUJuRGJtQjtFTjZ4RXpCO0FBQ0Y7QTBEOXlFQTs7Ozs7OztFQUFBO0FBV0E7RUFDSTtFQUNBLG1CcERPNkI7RW9ETjdCO0VBQ0Esa0JwREU2QjtFb0RBN0I7QTFENHlFSjs7QTBEenlFQTtFQUNJO0ExRDR5RUo7O0EwRHp5RUE7RUFDSTtFQUNBO0ExRDR5RUo7QTBEMXlFSTtFQUNJO0VBQ0E7QTFENHlFUjs7QTBEdHlFSTtFQUNJO0ExRHl5RVI7QTBEdHlFSTtFQUNJO0VBQ0E7QTFEd3lFUjtBMERweUVRO0VBQ0ksYXZEeENPO0FIODBFbkI7O0FnQm55RVk7RTBDR1I7SUFDSTtFMURveUVOO0UwRGp5RUU7SUFDSTtFMURteUVOO0FBQ0Y7QTJEOTFFQTs7Ozs7OztFQUFBO0FBVUE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFNUMyQ0EsZTRDekMwQjtFNUMwQzFCO0VBU1EsaUI0Q25Ed0I7RUFDaEM7QTNEKzFFSjs7QTJEMzFFQTtFQUNJLGN4RGZlO0V3RGlCZix5QnhEZm9CO0FINDJFeEI7O0EyRHoxRUE7RUFDSTtBM0Q0MUVKOztBMkR4MUVBO0VBQ0k7RUFDQTtBM0QyMUVKOztBMkR4MUVBO0VBQ0k7RUFDQSxrQnJEdEI4QjtBTmkzRWxDO0EyRHoxRUk7RUFDSTtBM0QyMUVSOztBMkR0MUVBO0VBQ0k7RUFFQSx5QnhEckJnQjtFd0RzQmhCO0VBQ0E7QTNEdzFFSjs7QTJEcjFFQTtFQUNJO0VBQ0Esa0JyRHhDOEI7QU5nNEVsQztBMkR0MUVJO0VBQ0k7RUFDQTtFQUNBLGlCckQ3QzBCO0VTdUM5QixlNENPOEI7RTVDTjlCO0VBU1EsaUI0Q0g0QjtFQUNoQyxjeEQxRFc7RXdEMkRYO0EzRDAxRVI7O0EyRHIxRUE7RUFDSTtFQUNBO0VBQ0E7QTNEdzFFSjtBMkR0MUVJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFFQSx5QnhEOUVXO0FIcTZFbkI7O0EyRGoxRUE7RUFDSSx5QnhEckZlO0V3RHNGZjtFQUVBO0EzRG0xRUo7QTJEajFFSTtFQUNJLGN4RHJGTTtBSHc2RWQ7O0EyRC8wRUE7RUFDSTtBM0RrMUVKO0EyRGgxRUk7RUFDSTtBM0RrMUVSOztBMkQ3MEVBO0VBQ0k7RUFDQTtFQUNBLFVyRGhHOEI7QU5nN0VsQzs7QWdCaDVFWTtFMkN1RVI7SUFDSTtFM0Q2MEVOO0UyRHgwRU07SUFDSTtFM0QwMEVWO0UyRHIwRU07SUFDSTtFM0R1MEVWO0FBQ0Y7QWdCNTVFWTtFMkM2RlI7SUFDSTtFM0RrMEVOO0UyRGgwRU07SUFDSTtFM0RrMEVWO0UyRDd6RUU7SUFDSTtFM0QrekVOO0UyRDl6RU07SUFDSTtFM0RnMEVWO0UyRDd6RUU7SUFDSTtFM0QrekVOO0UyRDN6RUU7SUFDSTtJQUNBO0lBQ0E7RTNENnpFTjtFMkQzekVNO0lBQ0k7RTNENnpFVjtFMkR6ekVVO0lBQ0ksYXhEbEtGO0VINjlFWjtBQUNGO0E0RDErRUE7Ozs7Ozs7RUFBQTtBQWtCQTtFQUNJO0VBQ0EseUJ6RFVnQjtFeURUaEIsbUJ0REQ2QjtFc0RFN0IsaUJ0RE51QjtBTncrRTNCOztBNEQ1OUVBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFFQSx5QnpESmdCO0V5REtoQjtBNUQ4OUVKOztBNEQxOUVBO0VBQ0ksaUJ0RHBCNkI7RXNEcUI3QixvQnREckI2QjtFc0R1QjdCO0E1RDQ5RUo7O0E0RHg5RUE7RUFDSSx5QnpEbkNVO0FIOC9FZDs7QTREdjlFQTtFQUNJLHlCekQ5Q2U7QUh3Z0ZuQjs7QTREdDlFQTtFQUNJO0VBQ0E7RUFFQTtFQUVBO0VBQ0E7RUFDQTtBNUR1OUVKOztBZ0J0K0VZO0U0Q21CUjtJQUNJO0U1RHU5RU47QUFDRjtBNkQ5aEZBOzs7Ozs7Ozs7O0VBQUE7QUFhQTtFQUNJO0VBQ0Esa0J2REU2QjtFdUREN0IsbUJ2REc4QjtBTjJoRmxDOztBNkQxaEZBO0VBQ0k7RUFFQSx5QjFEZG9CO0UwRGVwQiwyQnZEUDZCO0V1RFE3Qiw0QnZEUjZCO0V1RFM3QjtBN0Q0aEZKOztBNkR4aEZBO0VBQ0k7RTlDMEJBLGU4Q3hCMEI7RTlDeUIxQjtFQVNRLGlCOENsQ3dCO0VBQ2hDLGMxRDNCZTtBSHVqRm5CO0E2RDFoRkk7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBRUE7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBN0QyaEZSOztBNkR0aEZBO0VBQ0ksYzFEOUNlO0UwRCtDZjtFQUVBLHlCMUQxQmdCO0UwRDJCaEIsOEJ2RHhDNkI7RXVEeUM3QiwrQnZEekM2QjtFdUQwQzdCO0VBQ0E7QTdEd2hGSjs7QTZEcGhGQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBRUEsYzFEckVlO0FIMmxGbkI7QTZEcGhGSTtFQUNJO0E3RHNoRlI7O0FnQm5qRlk7RTZDa0NSO0lBQ0k7RTdEcWhGTjtBQUNGO0E4RDNtRkE7Ozs7Ozs7OztFQUFBO0FBWUE7RUFDSTtFQUNBO0VBQ0E7QTlEMm1GSjs7QThEeG1GQTtFL0N1Q0ksZStDdEMwQjtFL0N1QzFCO0VBU1EsZ0IrQ2hEd0I7RUFDaEM7RUFDQSxrQnhESjZCO0V3RE03QjtFQUNBLHlCM0RDWTtFMkRBWjtFQUVBO0VBQ0E7QTlEMm1GSjtBOER6bUZJO0VBQ0k7RUFDQTtFQUNBO0E5RDJtRlI7O0ErRDVvRkE7Ozs7Ozs7RUFBQTtBQVNBO0VBQ0k7RUFDQSxvQnpEUThCO0FOc29GbEM7O0ErRDNvRkE7RUFDSSxtQnpEQ3VCO0V5REF2QixjNURKVTtFNERLVix5QjVEVmU7RTREV2Y7RUFDQTtFQUNBO0VBQ0E7RUFDQSxZekRKOEI7RXlETTlCO0EvRDZvRko7O0ErRHpvRkE7O0VBRUkseUI1RGxCVTtFNERtQlYsYzVEeEJlO0FIb3FGbkI7O0FnQnpuRlk7RStDZlI7SUFDSTtJQUNBO0lBQ0E7SUFDQTtFL0Q0b0ZOO0FBQ0Y7QWdFcHJGQTs7Ozs7Ozs7OztDQUFBO0FBWUE7QUFDQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0dBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFFQTtFQUNBO0VBQ0E7QWhFb3JGSjs7QWdFbHJGQTtFQUdJO0FoRXFyRko7O0FnRW5yRkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQSxtQjdEZmlCO0U2RGdCakIsa0IxRDFCNkI7QU5ndEZqQzs7QWdFcHJGQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQSw4QjFEbEM2QjtFMERtQzdCLCtCMURuQzZCO0FOMHRGakM7O0FnRXJyRkE7RUFDSTtBaEV3ckZKOztBZ0VyckZBO0FBQ0E7QUFDQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBLGM3RDNDWTtFNkQ0Q1o7RUFDQTtFQUNBO0VBQ0E7QWhFd3JGSjs7QWdFcnJGQTtFQUNJLGM3RG5EWTtBSDJ1RmhCOztBZ0V0ckZBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBaEV5ckZKOztBZ0V2ckZBO0VBQ0k7QWhFMHJGSjs7QWdFeHJGQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWhFMnJGSjs7QWdFenJGQTtFQUNJO0FoRTRyRko7O0FnRTFyRkE7RUFDSTtBaEU2ckZKOztBZ0UzckZBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FoRThyRko7O0FnRTVyRkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBaEUrckZKOztBZ0U3ckZBO0VBQ0kseUI3RDNGaUI7RTZENEZqQjtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FoRWdzRko7O0FnRTlyRkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUVBO0FoRWdzRko7O0FnRTlyRkE7RUFDSTtFQUNBO0VBQ0E7QWhFaXNGSjs7QWdFL3JGQTtFQUNJO0VBQ0E7QWhFa3NGSjs7QWdFL3JGQTtBQUNBO0FBQ0E7RUFDSSx5QjdEMUhpQjtFNkQySGpCLGM3RDlIWTtFNkQrSFo7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQSw4QjFEN0k2QjtFMEQ4STdCLCtCMUQ5STZCO0FOZzFGakM7O0FnRWhzRkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBaEVtc0ZKO0FnRWpzRkk7RUFDSSxjN0RoSmE7RTZEaUpiLHlCN0RwS2E7QUh1MkZyQjs7QWdFaHNGQTtFQUNJO0VBQ0E7QWhFbXNGSjs7QWdFanNGQTtFQUNJO0VBQ0E7RUFDQTtBaEVvc0ZKOztBZ0Vsc0ZBO0VBQ0k7RUFDQTtFQUNBO0FoRXFzRko7O0FnRW5zRkE7RUFDSTtFQUNBO0VBQ0E7QWhFc3NGSjs7QWdFcHNGQTtFQUNJO0FoRXVzRko7O0FnRXJzRkE7RUFDSTtFQUNBO0FoRXdzRko7O0FnRXJzRkE7QUFDQTtBQUNBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBLHlCN0QxTGlCO0U2RDJMakI7QWhFd3NGSjs7QWdFdHNGQTtFQUNJO0VBQ0E7QWhFeXNGSjs7QWdFdnNGQTtFQUNJO0VBQ0E7RUFDQTtBaEUwc0ZKOztBZ0V4c0ZBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQSxjN0RqTlk7RTZEa05aO0VBQ0E7RUFDQTtFQUNBO0FoRTJzRko7O0FnRXpzRkE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQSx5QjdEM05pQjtFNkQ0TmpCO0VBQ0E7RUFDQTtFQUNBLGM3RGxPWTtFNkRtT1o7RUFDQTtBaEU0c0ZKOztBZ0Uxc0ZBO0VBQ0k7QWhFNnNGSjs7QWdFM3NGQTtFQUNJO0VBQ0EsUTFEbFA2QjtFMERtUDdCO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBaEU4c0ZKOztBZ0U1c0ZBO0VBQ0k7QWhFK3NGSjs7QWdFN3NGQTtFQUNJO0VBQ0E7RUFDQTtFQUtBO0VBQ0E7QWhFZ3RGSjs7QWdFOXNGQTtFQUNJO0FoRWl0Rko7O0FnRS9zRkE7RUFDSTtBaEVrdEZKOztBZ0VodEZBO0VBQ0k7RUFDQTtBaEVtdEZKOztBZ0VqdEZBO0VBQ0k7RUFDQTtFQUNBO0FoRW90Rko7O0FnRWp0RkE7QUFDQTtBQUVBO0VBRUk7RUFFQTtFQUNBO0FoRW10Rko7O0FnRWp0RkE7RUFDSTtFQUNBO0FoRW90Rko7O0FnRWx0RkE7RUFDSTtBaEVxdEZKOztBZ0VudEZBO0VBQ0k7RUFDQTtBaEVzdEZKOztBZ0VwdEZBO0VBQ0k7QWhFdXRGSjs7QWdFcHRGQTtBQUNBO0FBQ0E7RUFDSTtFQUNBO0FoRXV0Rko7O0FnRXJ0RkE7RUFDSTtBaEV3dEZKOztBZ0V0dEZBO0VBQ0k7QWhFeXRGSjs7QWdFdHRGQTtBQUNBO0FBQ0E7RUFDSTtBaEV5dEZKOztBZ0V2dEZBO0VBQ0k7RUFDQTtBaEUwdEZKOztBZ0V4dEZBO0VBQ0k7RUFDQTtFQUNBO0FoRTJ0Rko7O0FnRXp0RkE7RUFDSTtBaEU0dEZKOztBZ0UxdEZBO0VBQ0k7RUFDQTtBaEU2dEZKOztBZ0UzdEZBO0VBQ0k7RUFDQTtBaEU4dEZKOztBZ0U1dEZBO0VBQ0k7QWhFK3RGSjs7QWdFN3RGQTtFQUNJO0FoRWd1Rko7O0FnRTl0RkE7RUFDSTtFQUNBO0FoRWl1Rko7O0FnRS90RkE7RUFDSTtFQUNBLFMxRG5XNkI7QU5xa0dqQzs7QWdFaHVGQTs7RUFFSTtBaEVtdUZKOztBZ0VqdUZBO0VBQ0k7RUFDQTtBaEVvdUZKOztBZ0VsdUZBO0VBQ0k7RUFDQTtBaEVxdUZKOztBZ0VudUZBO0VBQ0k7QWhFc3VGSjs7QWdFcHVGQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0FoRXV1Rko7O0FnRXJ1RkE7RUFDSTtBaEV3dUZKOztBZ0V0dUZBO0VBQ0k7QWhFeXVGSjs7QWdFdHVGQTtBQUNBO0FBQ0E7RUFDSTs7Ozs7OztJQU9JO0lBQ0E7SUFDQTtFaEV5dUZOO0FBQ0Y7QWdFdnVGQTtBQ2phQTtFQUVJO0VBRUEseUI5REdlO0U4RERmO0VBRUE7QWpFdW9HSjtBaUVyb0dJO0VBQ0k7RUFDQTtBakV1b0dSOztBaUVub0dBO0VBQ0k7RWxEd0NBLGVrRHRDMEI7RWxEdUMxQjtFa0R0Q0E7QWpFc29HSjtBaUVub0dRO0VBSUksYzlEZkU7RThEZ0JGO0FqRWtvR1o7QWlFL25HUTtFQUNJO0FqRWlvR1o7O0FpRTVuR0E7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUVBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFFQTtFQUNBLGUzRC9COEI7RTJEZ0M5QjtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QWpFNm5HSjs7QWtFcnJHQTs7dUNBQUE7QUFJQTs7Ozs7Ozs7O0VBQUE7QUFXQTtFbkQwQ0ksZU5sRG9CO0VNbURwQjtFQUdJO0FmMm9HUjs7QWtFcHJHQTtFbkRxQ0ksZU5qRG9CO0VNa0RwQjtFQUdJO0FmaXBHUjs7QWtFcnJHQTtFbkRnQ0ksZU5oRG9CO0VNaURwQjtFQUdJO0FmdXBHUjs7QWtFdHJHQTtFbkQyQkksZU4vQ29CO0VNZ0RwQjtFQUdJO0FmNnBHUjs7QWtFdnJHQTtFbkRzQkksZU45Q29CO0VNK0NwQjtFQUdJO0FmbXFHUjs7QWtFeHJHQTtFbkRpQkksZU43Q29CO0VNOENwQjtFQUdJO0FmeXFHUjs7QW1FdHVHQTs7dUNBQUE7QUFJQTs7OztFQUFBO0FBUUk7OztFQUNJO0VBQ0E7RUFDQTtBbkV1dUdSOztBb0V0dkdBOzt1Q0FBQTtBQUlBOzs7OztFQUFBO0FBK0dJOztFQUFBO0FBR0E7RUFBb0Q7QXBFZ3BHeEQ7O0FvRTlvR0k7O0VBQUE7QUFHQTs7Ozs7O0VBS29EO0FwRWtwR3hEOztBb0VocEdJOztFQUFBO0FBR0E7Ozs7RUFHb0Q7QXBFb3BHeEQ7O0FvRW5wR0k7Ozs7RUFHb0Q7QXBFdXBHeEQ7O0FvRXJwR0k7O0VBQUE7QUFHQTs7O0VBRW9EO0FwRXlwR3hEOztBb0V4cEdJOzs7RUFFb0Q7QXBFNHBHeEQ7O0FvRTFwR0k7O0VBQUE7QUFHQTs7RUFDb0Q7QXBFOHBHeEQ7O0FvRTdwR0k7O0VBQ29EO0FwRWlxR3hEOztBb0VocUdJOztFQUNvRDtBcEVvcUd4RDs7QW9FbnFHSTs7RUFDb0Q7QXBFdXFHeEQ7O0FvRXJxR0k7O0VBQUE7QUFHQTs7RUFDb0Q7QXBFeXFHeEQ7O0FvRXhxR0k7O0VBQ29EO0FwRTRxR3hEOztBb0UxcUdJOztFQUFBO0FBR0E7RUFBb0Q7QXBFOHFHeEQ7O0FvRTdxR0k7RUFBb0Q7QXBFaXJHeEQ7O0FvRWhyR0k7RUFBb0Q7QXBFb3JHeEQ7O0FvRW5yR0k7RUFBb0Q7QXBFdXJHeEQ7O0FvRXJyR0k7O0VBQUE7QUFHQTtFQUFvRDtBcEV5ckd4RDs7QW9FeHJHSTtFQUFvRDtBcEU0ckd4RDs7QW9FM3JHSTtFQUFvRDtBcEUrckd4RDs7QW9FOXJHSTtFQUFvRDtBcEVrc0d4RDs7QW9FanNHSTtFQUFvRDtBcEVxc0d4RDs7QW9FcHNHSTtFQUFvRDtBcEV3c0d4RDs7QW9FdHNHSTs7RUFBQTtBQUdBO0VBQW9EO0FwRTBzR3hEOztBb0V6c0dJO0VBQW9EO0FwRTZzR3hEOztBb0U1c0dJO0VBQW9EO0FwRWd0R3hEOztBb0Uvc0dJO0VBQW9EO0FwRW10R3hEOztBb0VqdEdJOztFQUFBO0FBR0E7RUFBb0Q7QXBFcXRHeEQ7O0FvRXB0R0k7RUFBb0Q7QXBFd3RHeEQ7O0FvRXZ0R0k7RUFBb0Q7QXBFMnRHeEQ7O0FvRTF0R0k7RUFBb0Q7QXBFOHRHeEQ7O0FxRTE2R0E7O3VDQUFBO0FBSUE7O0VBQUE7QXJEOENZO0VxRHNGSTs7SUFBQTtFQUdBO0lBQTZEO0VyRTZ5RzNFO0VxRTN5R2M7O0lBQUE7RUFHQTs7Ozs7O0lBSzZEO0VyRTh5RzNFO0VxRTV5R2M7O0lBQUE7RUFHQTs7OztJQUc2RDtFckUreUczRTtFcUU5eUdjOzs7O0lBRzZEO0VyRWl6RzNFO0VxRS95R2M7O0lBQUE7RUFHQTs7O0lBRTZEO0VyRWt6RzNFO0VxRWp6R2M7OztJQUU2RDtFckVvekczRTtFcUVsekdjOztJQUFBO0VBR0E7O0lBQzZEO0VyRXF6RzNFO0VxRXB6R2M7O0lBQzZEO0VyRXV6RzNFO0VxRXR6R2M7O0lBQzZEO0VyRXl6RzNFO0VxRXh6R2M7O0lBQzZEO0VyRTJ6RzNFO0VxRXp6R2M7O0lBQUE7RUFHQTs7SUFDNkQ7RXJFNHpHM0U7RXFFM3pHYzs7SUFDNkQ7RXJFOHpHM0U7RXFFNXpHYzs7SUFBQTtFQUdBO0lBQTZEO0VyRSt6RzNFO0VxRTl6R2M7SUFBNkQ7RXJFaTBHM0U7RXFFaDBHYztJQUE2RDtFckVtMEczRTtFcUVsMEdjO0lBQTZEO0VyRXEwRzNFO0VxRW4wR2M7O0lBQUE7RUFHQTtJQUE2RDtFckVzMEczRTtFcUVyMEdjO0lBQTZEO0VyRXcwRzNFO0VxRXYwR2M7SUFBNkQ7RXJFMDBHM0U7RXFFejBHYztJQUE2RDtFckU0MEczRTtFcUUzMEdjO0lBQTZEO0VyRTgwRzNFO0VxRTcwR2M7SUFBNkQ7RXJFZzFHM0U7RXFFOTBHYzs7SUFBQTtFQUdBO0lBQTZEO0VyRWkxRzNFO0VxRWgxR2M7SUFBNkQ7RXJFbTFHM0U7RXFFbDFHYztJQUE2RDtFckVxMUczRTtFcUVwMUdjO0lBQTZEO0VyRXUxRzNFO0VxRXIxR2M7O0lBQUE7RUFHQTtJQUE2RDtFckV3MUczRTtFcUV2MUdjO0lBQTZEO0VyRTAxRzNFO0VxRXoxR2M7SUFBNkQ7RXJFNDFHM0U7RXFFMzFHYztJQUE2RDtFckU4MUczRTtBQUNGO0FnQjlnSFk7RXFEc0ZJOztJQUFBO0VBR0E7SUFBNkQ7RXJFNDdHM0U7RXFFMTdHYzs7SUFBQTtFQUdBOzs7Ozs7SUFLNkQ7RXJFNjdHM0U7RXFFMzdHYzs7SUFBQTtFQUdBOzs7O0lBRzZEO0VyRTg3RzNFO0VxRTc3R2M7Ozs7SUFHNkQ7RXJFZzhHM0U7RXFFOTdHYzs7SUFBQTtFQUdBOzs7SUFFNkQ7RXJFaThHM0U7RXFFaDhHYzs7O0lBRTZEO0VyRW04RzNFO0VxRWo4R2M7O0lBQUE7RUFHQTs7SUFDNkQ7RXJFbzhHM0U7RXFFbjhHYzs7SUFDNkQ7RXJFczhHM0U7RXFFcjhHYzs7SUFDNkQ7RXJFdzhHM0U7RXFFdjhHYzs7SUFDNkQ7RXJFMDhHM0U7RXFFeDhHYzs7SUFBQTtFQUdBOztJQUM2RDtFckUyOEczRTtFcUUxOEdjOztJQUM2RDtFckU2OEczRTtFcUUzOEdjOztJQUFBO0VBR0E7SUFBNkQ7RXJFODhHM0U7RXFFNzhHYztJQUE2RDtFckVnOUczRTtFcUUvOEdjO0lBQTZEO0VyRWs5RzNFO0VxRWo5R2M7SUFBNkQ7RXJFbzlHM0U7RXFFbDlHYzs7SUFBQTtFQUdBO0lBQTZEO0VyRXE5RzNFO0VxRXA5R2M7SUFBNkQ7RXJFdTlHM0U7RXFFdDlHYztJQUE2RDtFckV5OUczRTtFcUV4OUdjO0lBQTZEO0VyRTI5RzNFO0VxRTE5R2M7SUFBNkQ7RXJFNjlHM0U7RXFFNTlHYztJQUE2RDtFckUrOUczRTtFcUU3OUdjOztJQUFBO0VBR0E7SUFBNkQ7RXJFZytHM0U7RXFFLzlHYztJQUE2RDtFckVrK0czRTtFcUVqK0djO0lBQTZEO0VyRW8rRzNFO0VxRW4rR2M7SUFBNkQ7RXJFcytHM0U7RXFFcCtHYzs7SUFBQTtFQUdBO0lBQTZEO0VyRXUrRzNFO0VxRXQrR2M7SUFBNkQ7RXJFeStHM0U7RXFFeCtHYztJQUE2RDtFckUyK0czRTtFcUUxK0djO0lBQTZEO0VyRTYrRzNFO0FBQ0Y7QWdCN3BIWTtFcURzRkk7O0lBQUE7RUFHQTtJQUE2RDtFckUya0gzRTtFcUV6a0hjOztJQUFBO0VBR0E7Ozs7OztJQUs2RDtFckU0a0gzRTtFcUUxa0hjOztJQUFBO0VBR0E7Ozs7SUFHNkQ7RXJFNmtIM0U7RXFFNWtIYzs7OztJQUc2RDtFckUra0gzRTtFcUU3a0hjOztJQUFBO0VBR0E7OztJQUU2RDtFckVnbEgzRTtFcUUva0hjOzs7SUFFNkQ7RXJFa2xIM0U7RXFFaGxIYzs7SUFBQTtFQUdBOztJQUM2RDtFckVtbEgzRTtFcUVsbEhjOztJQUM2RDtFckVxbEgzRTtFcUVwbEhjOztJQUM2RDtFckV1bEgzRTtFcUV0bEhjOztJQUM2RDtFckV5bEgzRTtFcUV2bEhjOztJQUFBO0VBR0E7O0lBQzZEO0VyRTBsSDNFO0VxRXpsSGM7O0lBQzZEO0VyRTRsSDNFO0VxRTFsSGM7O0lBQUE7RUFHQTtJQUE2RDtFckU2bEgzRTtFcUU1bEhjO0lBQTZEO0VyRStsSDNFO0VxRTlsSGM7SUFBNkQ7RXJFaW1IM0U7RXFFaG1IYztJQUE2RDtFckVtbUgzRTtFcUVqbUhjOztJQUFBO0VBR0E7SUFBNkQ7RXJFb21IM0U7RXFFbm1IYztJQUE2RDtFckVzbUgzRTtFcUVybUhjO0lBQTZEO0VyRXdtSDNFO0VxRXZtSGM7SUFBNkQ7RXJFMG1IM0U7RXFFem1IYztJQUE2RDtFckU0bUgzRTtFcUUzbUhjO0lBQTZEO0VyRThtSDNFO0VxRTVtSGM7O0lBQUE7RUFHQTtJQUE2RDtFckUrbUgzRTtFcUU5bUhjO0lBQTZEO0VyRWluSDNFO0VxRWhuSGM7SUFBNkQ7RXJFbW5IM0U7RXFFbG5IYztJQUE2RDtFckVxbkgzRTtFcUVubkhjOztJQUFBO0VBR0E7SUFBNkQ7RXJFc25IM0U7RXFFcm5IYztJQUE2RDtFckV3bkgzRTtFcUV2bkhjO0lBQTZEO0VyRTBuSDNFO0VxRXpuSGM7SUFBNkQ7RXJFNG5IM0U7QUFDRjtBZ0I1eUhZO0VxRHNGSTs7SUFBQTtFQUdBO0lBQTZEO0VyRTB0SDNFO0VxRXh0SGM7O0lBQUE7RUFHQTs7Ozs7O0lBSzZEO0VyRTJ0SDNFO0VxRXp0SGM7O0lBQUE7RUFHQTs7OztJQUc2RDtFckU0dEgzRTtFcUUzdEhjOzs7O0lBRzZEO0VyRTh0SDNFO0VxRTV0SGM7O0lBQUE7RUFHQTs7O0lBRTZEO0VyRSt0SDNFO0VxRTl0SGM7OztJQUU2RDtFckVpdUgzRTtFcUUvdEhjOztJQUFBO0VBR0E7O0lBQzZEO0VyRWt1SDNFO0VxRWp1SGM7O0lBQzZEO0VyRW91SDNFO0VxRW51SGM7O0lBQzZEO0VyRXN1SDNFO0VxRXJ1SGM7O0lBQzZEO0VyRXd1SDNFO0VxRXR1SGM7O0lBQUE7RUFHQTs7SUFDNkQ7RXJFeXVIM0U7RXFFeHVIYzs7SUFDNkQ7RXJFMnVIM0U7RXFFenVIYzs7SUFBQTtFQUdBO0lBQTZEO0VyRTR1SDNFO0VxRTN1SGM7SUFBNkQ7RXJFOHVIM0U7RXFFN3VIYztJQUE2RDtFckVndkgzRTtFcUUvdUhjO0lBQTZEO0VyRWt2SDNFO0VxRWh2SGM7O0lBQUE7RUFHQTtJQUE2RDtFckVtdkgzRTtFcUVsdkhjO0lBQTZEO0VyRXF2SDNFO0VxRXB2SGM7SUFBNkQ7RXJFdXZIM0U7RXFFdHZIYztJQUE2RDtFckV5dkgzRTtFcUV4dkhjO0lBQTZEO0VyRTJ2SDNFO0VxRTF2SGM7SUFBNkQ7RXJFNnZIM0U7RXFFM3ZIYzs7SUFBQTtFQUdBO0lBQTZEO0VyRTh2SDNFO0VxRTd2SGM7SUFBNkQ7RXJFZ3dIM0U7RXFFL3ZIYztJQUE2RDtFckVrd0gzRTtFcUVqd0hjO0lBQTZEO0VyRW93SDNFO0VxRWx3SGM7O0lBQUE7RUFHQTtJQUE2RDtFckVxd0gzRTtFcUVwd0hjO0lBQTZEO0VyRXV3SDNFO0VxRXR3SGM7SUFBNkQ7RXJFeXdIM0U7RXFFeHdIYztJQUE2RDtFckUyd0gzRTtBQUNGO0FnQjM3SFk7RXFEc0ZJOztJQUFBO0VBR0E7SUFBNkQ7RXJFeTJIM0U7RXFFdjJIYzs7SUFBQTtFQUdBOzs7Ozs7SUFLNkQ7RXJFMDJIM0U7RXFFeDJIYzs7SUFBQTtFQUdBOzs7O0lBRzZEO0VyRTIySDNFO0VxRTEySGM7Ozs7SUFHNkQ7RXJFNjJIM0U7RXFFMzJIYzs7SUFBQTtFQUdBOzs7SUFFNkQ7RXJFODJIM0U7RXFFNzJIYzs7O0lBRTZEO0VyRWczSDNFO0VxRTkySGM7O0lBQUE7RUFHQTs7SUFDNkQ7RXJFaTNIM0U7RXFFaDNIYzs7SUFDNkQ7RXJFbTNIM0U7RXFFbDNIYzs7SUFDNkQ7RXJFcTNIM0U7RXFFcDNIYzs7SUFDNkQ7RXJFdTNIM0U7RXFFcjNIYzs7SUFBQTtFQUdBOztJQUM2RDtFckV3M0gzRTtFcUV2M0hjOztJQUM2RDtFckUwM0gzRTtFcUV4M0hjOztJQUFBO0VBR0E7SUFBNkQ7RXJFMjNIM0U7RXFFMTNIYztJQUE2RDtFckU2M0gzRTtFcUU1M0hjO0lBQTZEO0VyRSszSDNFO0VxRTkzSGM7SUFBNkQ7RXJFaTRIM0U7RXFFLzNIYzs7SUFBQTtFQUdBO0lBQTZEO0VyRWs0SDNFO0VxRWo0SGM7SUFBNkQ7RXJFbzRIM0U7RXFFbjRIYztJQUE2RDtFckVzNEgzRTtFcUVyNEhjO0lBQTZEO0VyRXc0SDNFO0VxRXY0SGM7SUFBNkQ7RXJFMDRIM0U7RXFFejRIYztJQUE2RDtFckU0NEgzRTtFcUUxNEhjOztJQUFBO0VBR0E7SUFBNkQ7RXJFNjRIM0U7RXFFNTRIYztJQUE2RDtFckUrNEgzRTtFcUU5NEhjO0lBQTZEO0VyRWk1SDNFO0VxRWg1SGM7SUFBNkQ7RXJFbTVIM0U7RXFFajVIYzs7SUFBQTtFQUdBO0lBQTZEO0VyRW81SDNFO0VxRW41SGM7SUFBNkQ7RXJFczVIM0U7RXFFcjVIYztJQUE2RDtFckV3NUgzRTtFcUV2NUhjO0lBQTZEO0VyRTA1SDNFO0FBQ0Y7QXNFNW5JQTs7dUNBQUE7QUFJQTs7Ozs7RUFBQTtBQWtESTs7OztFQUFBO0FBTUE7RUFBdUM7QXRFaWxJM0M7O0FzRWhsSUk7RUFBdUM7QXRFb2xJM0M7O0FzRW5sSUk7RUFBdUM7QXRFdWxJM0M7O0FzRXRsSUk7RUFBdUM7QXRFMGxJM0M7O0FzRXpsSUk7RUFBdUM7QXRFNmxJM0M7O0FzRTVsSUk7RUFBdUM7RUFBNkM7QXRFaW1JeEY7O0FzRWhtSUk7RUFBdUM7RUFBNkM7QXRFcW1JeEY7O0FzRTlsSUk7O0VBQUE7QUFJQTtFQUF1QztBdEVpbUkzQzs7QXNFaG1JSTtFQUF1QztBdEVvbUkzQzs7QXNFbm1JSTtFQUF1QztBdEV1bUkzQzs7QXNFdG1JSTtFQUF1QztBdEUwbUkzQzs7QXNFem1JSTtFQUF1QztBdEU2bUkzQzs7QXNFNW1JSTtFQUF1QztFQUFtRDtBdEVpbkk5Rjs7QXNFaG5JSTtFQUF1QztFQUFtRDtBdEVxbkk5Rjs7QXNFOW1JSTs7RUFBQTtBQUlBO0VBQXVDO0F0RWluSTNDOztBc0VobklJO0VBQXVDO0F0RW9uSTNDOztBc0VubklJO0VBQXVDO0F0RXVuSTNDOztBc0V0bklJO0VBQXVDO0F0RTBuSTNDOztBc0V6bklJO0VBQXVDO0F0RTZuSTNDOztBc0U1bklJO0VBQXVDO0VBQW9EO0F0RWlvSS9GOztBc0Vob0lJO0VBQXVDO0VBQW9EO0F0RXFvSS9GOztBc0U5bklJOztFQUFBO0FBSUE7RUFBdUM7QXRFaW9JM0M7O0FzRWhvSUk7RUFBdUM7QXRFb29JM0M7O0FzRW5vSUk7RUFBdUM7QXRFdW9JM0M7O0FzRXRvSUk7RUFBdUM7QXRFMG9JM0M7O0FzRXpvSUk7RUFBdUM7QXRFNm9JM0M7O0FzRTVvSUk7RUFBdUM7RUFBb0Q7QXRFaXBJL0Y7O0FzRWhwSUk7RUFBdUM7RUFBb0Q7QXRFcXBJL0Y7O0FzRTlvSUk7O0VBQUE7QUFJQTtFQUEyQztBdEVpcEkvQzs7QXNFaHBJSTtFQUEyQztBdEVvcEkvQzs7QXNFbnBJSTtFQUEyQztBdEV1cEkvQzs7QXNFdHBJSTtFQUEyQztBdEUwcEkvQzs7QXNFenBJSTtFQUEyQztBdEU2cEkvQzs7QXNFNXBJSTtFQUEyQztFQUFtRDtBdEVpcUlsRzs7QXNFaHFJSTtFQUEyQztFQUFtRDtBdEVxcUlsRzs7QXNFOXBJSTs7RUFBQTtBQUlBO0VBQXVDO0F0RWlxSTNDOztBc0VocUlJO0VBQXVDO0F0RW9xSTNDOztBc0VucUlJO0VBQXVDO0F0RXVxSTNDOztBc0V0cUlJO0VBQXVDO0F0RTBxSTNDOztBc0V6cUlJO0VBQXVDO0F0RTZxSTNDOztBc0U1cUlJO0VBQXVDO0VBQWdDO0F0RWlySTNFOztBc0VocklJO0VBQXVDO0VBQWdDO0F0RXFySTNFOztBc0V0bElJOzs7O0VBQUE7QUFNQTtFQUF1QztBdEV5bEkzQzs7QXNFeGxJSTtFQUF1QztBdEU0bEkzQzs7QXNFM2xJSTtFQUF1QztBdEUrbEkzQzs7QXNFOWxJSTtFQUF1QztBdEVrbUkzQzs7QXNFam1JSTtFQUF1QztBdEVxbUkzQzs7QXNFcG1JSTtFQUF1QztFQUE4QztBdEV5bUl6Rjs7QXNFeG1JSTtFQUF1QztFQUE4QztBdEU2bUl6Rjs7QXNFcGtJSTs7RUFBQTtBQUlBO0VBQXVDO0F0RXVrSTNDOztBc0V0a0lJO0VBQXVDO0F0RTBrSTNDOztBc0V6a0lJO0VBQXVDO0F0RTZrSTNDOztBc0U1a0lJO0VBQXVDO0F0RWdsSTNDOztBc0Uva0lJO0VBQXVDO0F0RW1sSTNDOztBc0VsbElJO0VBQXVDO0VBQXNEO0F0RXVsSWpHOztBc0V0bElJO0VBQXVDO0VBQXNEO0F0RTJsSWpHOztBc0VwbElJOztFQUFBO0FBSUE7RUFBMkM7QXRFdWxJL0M7O0FzRXRsSUk7RUFBMkM7QXRFMGxJL0M7O0FzRXpsSUk7RUFBMkM7QXRFNmxJL0M7O0FzRTVsSUk7RUFBMkM7QXRFZ21JL0M7O0FzRS9sSUk7RUFBMkM7QXRFbW1JL0M7O0FzRWxtSUk7RUFBMkM7RUFBcUQ7QXRFdW1JcEc7O0FzRXRtSUk7RUFBMkM7RUFBcUQ7QXRFMm1JcEc7O0F1RWo3SUE7Ozs7Ozs7Ozs7Ozs7Ozs7RUFBQTtBQXdCSTtFQUNJO0F2RTY2SVI7O0F1RTE2SUk7RUFDSTtBdkU2NklSOztBdUUxNklJO0VBQ0k7QXZFNjZJUjs7QXVFMTZJSTtFQUNJO0F2RTY2SVI7O0F1RTE2SUk7RUFDSTtBdkU2NklSOztBdUUxNklJO0VBQ0k7QXZFNjZJUjs7QXVFMTZJSTtFQUNJO0F2RTY2SVI7O0F1RTE2SUk7RUFDSTtBdkU2NklSOztBdUUxNklJO0VBQ0k7QXZFNjZJUjs7QWdCcDdJWTtFdUQxQlI7SUFDSTtFdkVrOUlOO0V1RS84SUU7SUFDSTtFdkVpOUlOO0V1RTk4SUU7SUFDSTtFdkVnOUlOO0V1RTc4SUU7SUFDSTtFdkUrOElOO0V1RTU4SUU7SUFDSTtFdkU4OElOO0V1RTM4SUU7SUFDSTtFdkU2OElOO0V1RTE4SUU7SUFDSTtFdkU0OElOO0V1RXo4SUU7SUFDSTtFdkUyOElOO0V1RXg4SUU7SUFDSTtFdkUwOElOO0FBQ0Y7QWdCbDlJWTtFdUQxQlI7SUFDSTtFdkUrK0lOO0V1RTUrSUU7SUFDSTtFdkU4K0lOO0V1RTMrSUU7SUFDSTtFdkU2K0lOO0V1RTErSUU7SUFDSTtFdkU0K0lOO0V1RXorSUU7SUFDSTtFdkUyK0lOO0V1RXgrSUU7SUFDSTtFdkUwK0lOO0V1RXYrSUU7SUFDSTtFdkV5K0lOO0V1RXQrSUU7SUFDSTtFdkV3K0lOO0V1RXIrSUU7SUFDSTtFdkV1K0lOO0FBQ0Y7QWdCLytJWTtFdUQxQlI7SUFDSTtFdkU0Z0pOO0V1RXpnSkU7SUFDSTtFdkUyZ0pOO0V1RXhnSkU7SUFDSTtFdkUwZ0pOO0V1RXZnSkU7SUFDSTtFdkV5Z0pOO0V1RXRnSkU7SUFDSTtFdkV3Z0pOO0V1RXJnSkU7SUFDSTtFdkV1Z0pOO0V1RXBnSkU7SUFDSTtFdkVzZ0pOO0V1RW5nSkU7SUFDSTtFdkVxZ0pOO0V1RWxnSkU7SUFDSTtFdkVvZ0pOO0FBQ0Y7QWdCNWdKWTtFdUQxQlI7SUFDSTtFdkV5aUpOO0V1RXRpSkU7SUFDSTtFdkV3aUpOO0V1RXJpSkU7SUFDSTtFdkV1aUpOO0V1RXBpSkU7SUFDSTtFdkVzaUpOO0V1RW5pSkU7SUFDSTtFdkVxaUpOO0V1RWxpSkU7SUFDSTtFdkVvaUpOO0V1RWppSkU7SUFDSTtFdkVtaUpOO0V1RWhpSkU7SUFDSTtFdkVraUpOO0V1RS9oSkU7SUFDSTtFdkVpaUpOO0FBQ0Y7QWdCemlKWTtFdUQxQlI7SUFDSTtFdkVza0pOO0V1RW5rSkU7SUFDSTtFdkVxa0pOO0V1RWxrSkU7SUFDSTtFdkVva0pOO0V1RWprSkU7SUFDSTtFdkVta0pOO0V1RWhrSkU7SUFDSTtFdkVra0pOO0V1RS9qSkU7SUFDSTtFdkVpa0pOO0V1RTlqSkU7SUFDSTtFdkVna0pOO0V1RTdqSkU7SUFDSTtFdkUrakpOO0V1RTVqSkU7SUFDSTtFdkU4akpOO0FBQ0Y7QWdCdGtKWTtFdUQxQlI7SUFDSTtFdkVtbUpOO0V1RWhtSkU7SUFDSTtFdkVrbUpOO0V1RS9sSkU7SUFDSTtFdkVpbUpOO0V1RTlsSkU7SUFDSTtFdkVnbUpOO0V1RTdsSkU7SUFDSTtFdkUrbEpOO0V1RTVsSkU7SUFDSTtFdkU4bEpOO0V1RTNsSkU7SUFDSTtFdkU2bEpOO0V1RTFsSkU7SUFDSTtFdkU0bEpOO0V1RXpsSkU7SUFDSTtFdkUybEpOO0FBQ0Y7QXdFcnBKQTs7Ozs7RUFBQTtBQVFJO0VBQ0k7QXhFcXBKUjs7QXdFbnBKSTtFQUNJO0F4RXNwSlI7O0F3RXBwSkk7RUFDSTtBeEV1cEpSOztBd0VycEpJO0VBQ0k7QXhFd3BKUjs7QXdFdHBKSTtFQUNJO0F4RXlwSlI7O0F3RXZwSkk7RUFDSTtBeEUwcEpSOztBd0V4cEpJO0VBQ0k7QXhFMnBKUjs7QXdFenBKSTtFQUNJO0F4RTRwSlI7O0F3RTFwSkk7RUFDSTtBeEU2cEpSOztBd0UzcEpJO0VBQ0k7QXhFOHBKUjs7QXdFNXBKSTtFQUNJO0F4RStwSlI7O0F3RTdwSkk7RUFDSTtBeEVncUpSOztBd0U5cEpJO0VBQ0k7QXhFaXFKUjs7QXdFL3BKSTtFQUNJO0F4RWtxSlI7O0F3RWhxSkk7RUFDSTtBeEVtcUpSOztBd0VqcUpJO0VBQ0k7QXhFb3FKUjs7QXdFbHFKSTtFQUNJO0F4RXFxSlI7O0F3RW5xSkk7RUFDSTtBeEVzcUpSOztBd0VwcUpJO0VBQ0k7QXhFdXFKUjs7QXdFcnFKSTtFQUNJO0F4RXdxSlI7O0F3RXRxSkk7RUFDSTtBeEV5cUpSOztBZ0I1ckpZO0V3RDFDUjtJQUNJO0V4RTB1Sk47RXdFeHVKRTtJQUNJO0V4RTB1Sk47RXdFeHVKRTtJQUNJO0V4RTB1Sk47RXdFeHVKRTtJQUNJO0V4RTB1Sk47RXdFeHVKRTtJQUNJO0V4RTB1Sk47RXdFeHVKRTtJQUNJO0V4RTB1Sk47RXdFeHVKRTtJQUNJO0V4RTB1Sk47RXdFeHVKRTtJQUNJO0V4RTB1Sk47RXdFeHVKRTtJQUNJO0V4RTB1Sk47RXdFeHVKRTtJQUNJO0V4RTB1Sk47RXdFeHVKRTtJQUNJO0V4RTB1Sk47RXdFeHVKRTtJQUNJO0V4RTB1Sk47RXdFeHVKRTtJQUNJO0V4RTB1Sk47RXdFeHVKRTtJQUNJO0V4RTB1Sk47RXdFeHVKRTtJQUNJO0V4RTB1Sk47RXdFeHVKRTtJQUNJO0V4RTB1Sk47RXdFeHVKRTtJQUNJO0V4RTB1Sk47RXdFeHVKRTtJQUNJO0V4RTB1Sk47RXdFeHVKRTtJQUNJO0V4RTB1Sk47RXdFeHVKRTtJQUNJO0V4RTB1Sk47RXdFeHVKRTtJQUNJO0V4RTB1Sk47QUFDRjtBZ0I5dkpZO0V3RDFDUjtJQUNJO0V4RTJ5Sk47RXdFenlKRTtJQUNJO0V4RTJ5Sk47RXdFenlKRTtJQUNJO0V4RTJ5Sk47RXdFenlKRTtJQUNJO0V4RTJ5Sk47RXdFenlKRTtJQUNJO0V4RTJ5Sk47RXdFenlKRTtJQUNJO0V4RTJ5Sk47RXdFenlKRTtJQUNJO0V4RTJ5Sk47RXdFenlKRTtJQUNJO0V4RTJ5Sk47RXdFenlKRTtJQUNJO0V4RTJ5Sk47RXdFenlKRTtJQUNJO0V4RTJ5Sk47RXdFenlKRTtJQUNJO0V4RTJ5Sk47RXdFenlKRTtJQUNJO0V4RTJ5Sk47RXdFenlKRTtJQUNJO0V4RTJ5Sk47RXdFenlKRTtJQUNJO0V4RTJ5Sk47RXdFenlKRTtJQUNJO0V4RTJ5Sk47RXdFenlKRTtJQUNJO0V4RTJ5Sk47RXdFenlKRTtJQUNJO0V4RTJ5Sk47RXdFenlKRTtJQUNJO0V4RTJ5Sk47RXdFenlKRTtJQUNJO0V4RTJ5Sk47RXdFenlKRTtJQUNJO0V4RTJ5Sk47RXdFenlKRTtJQUNJO0V4RTJ5Sk47QUFDRjtBZ0IvekpZO0V3RDFDUjtJQUNJO0V4RTQySk47RXdFMTJKRTtJQUNJO0V4RTQySk47RXdFMTJKRTtJQUNJO0V4RTQySk47RXdFMTJKRTtJQUNJO0V4RTQySk47RXdFMTJKRTtJQUNJO0V4RTQySk47RXdFMTJKRTtJQUNJO0V4RTQySk47RXdFMTJKRTtJQUNJO0V4RTQySk47RXdFMTJKRTtJQUNJO0V4RTQySk47RXdFMTJKRTtJQUNJO0V4RTQySk47RXdFMTJKRTtJQUNJO0V4RTQySk47RXdFMTJKRTtJQUNJO0V4RTQySk47RXdFMTJKRTtJQUNJO0V4RTQySk47RXdFMTJKRTtJQUNJO0V4RTQySk47RXdFMTJKRTtJQUNJO0V4RTQySk47RXdFMTJKRTtJQUNJO0V4RTQySk47RXdFMTJKRTtJQUNJO0V4RTQySk47RXdFMTJKRTtJQUNJO0V4RTQySk47RXdFMTJKRTtJQUNJO0V4RTQySk47RXdFMTJKRTtJQUNJO0V4RTQySk47RXdFMTJKRTtJQUNJO0V4RTQySk47RXdFMTJKRTtJQUNJO0V4RTQySk47QUFDRjtBZ0JoNEpZO0V3RDFDUjtJQUNJO0V4RTY2Sk47RXdFMzZKRTtJQUNJO0V4RTY2Sk47RXdFMzZKRTtJQUNJO0V4RTY2Sk47RXdFMzZKRTtJQUNJO0V4RTY2Sk47RXdFMzZKRTtJQUNJO0V4RTY2Sk47RXdFMzZKRTtJQUNJO0V4RTY2Sk47RXdFMzZKRTtJQUNJO0V4RTY2Sk47RXdFMzZKRTtJQUNJO0V4RTY2Sk47RXdFMzZKRTtJQUNJO0V4RTY2Sk47RXdFMzZKRTtJQUNJO0V4RTY2Sk47RXdFMzZKRTtJQUNJO0V4RTY2Sk47RXdFMzZKRTtJQUNJO0V4RTY2Sk47RXdFMzZKRTtJQUNJO0V4RTY2Sk47RXdFMzZKRTtJQUNJO0V4RTY2Sk47RXdFMzZKRTtJQUNJO0V4RTY2Sk47RXdFMzZKRTtJQUNJO0V4RTY2Sk47RXdFMzZKRTtJQUNJO0V4RTY2Sk47RXdFMzZKRTtJQUNJO0V4RTY2Sk47RXdFMzZKRTtJQUNJO0V4RTY2Sk47RXdFMzZKRTtJQUNJO0V4RTY2Sk47RXdFMzZKRTtJQUNJO0V4RTY2Sk47QUFDRjtBZ0JqOEpZO0V3RDFDUjtJQUNJO0V4RTgrSk47RXdFNStKRTtJQUNJO0V4RTgrSk47RXdFNStKRTtJQUNJO0V4RTgrSk47RXdFNStKRTtJQUNJO0V4RTgrSk47RXdFNStKRTtJQUNJO0V4RTgrSk47RXdFNStKRTtJQUNJO0V4RTgrSk47RXdFNStKRTtJQUNJO0V4RTgrSk47RXdFNStKRTtJQUNJO0V4RTgrSk47RXdFNStKRTtJQUNJO0V4RTgrSk47RXdFNStKRTtJQUNJO0V4RTgrSk47RXdFNStKRTtJQUNJO0V4RTgrSk47RXdFNStKRTtJQUNJO0V4RTgrSk47RXdFNStKRTtJQUNJO0V4RTgrSk47RXdFNStKRTtJQUNJO0V4RTgrSk47RXdFNStKRTtJQUNJO0V4RTgrSk47RXdFNStKRTtJQUNJO0V4RTgrSk47RXdFNStKRTtJQUNJO0V4RTgrSk47RXdFNStKRTtJQUNJO0V4RTgrSk47RXdFNStKRTtJQUNJO0V4RTgrSk47RXdFNStKRTtJQUNJO0V4RTgrSk47RXdFNStKRTtJQUNJO0V4RTgrSk47QUFDRjtBeUVwaktBOzs7Ozs7O0VBQUE7QXpEa0RZO0V5RFhSO0lBRUk7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtFekV1aEtOO0FBQ0Y7QWdCdGhLWTtFeURYUjtJQUVJO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7RXpFbWlLTjtBQUNGO0FnQmxpS1k7RXlEWFI7SUFFSTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0V6RStpS047QUFDRjtBZ0I5aUtZO0V5RFhSO0lBRUk7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtFekUyaktOO0FBQ0Y7QWdCMWpLWTtFeURYUjtJQUVJO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7RXpFdWtLTjtBQUNGO0F5RW5rS0E7RUFDSTtBekVxa0tKOztBeUVqa0tJO0VBQ0k7QXpFb2tLUjtBeUVua0tRO0VBQ0k7QXpFcWtLWjtBeUVqa0tJO0VBQ0k7QXpFbWtLUjs7QTBFcm9LQTs7Ozs7OztFQUFBO0FBU0E7RTNEZ0RJLGVOaERvQjtFTWlEcEI7RUFTUSxpQjJEeEQwQztBMUV3b0t0RDs7QTBFcm9LQTtFM0QyQ0ksZTJEekMwQjtFM0QwQzFCO0VBR0k7QWY0bEtSOztBQS9qS0E7RUFDSTtFQUNBLG1CTTVFdUI7QU44b0szQixDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vbWlzc2lvbnN0eWxlcy8uL3Jlc291cmNlcy9zYXNzL2FwcC5zY3NzIiwid2VicGFjazovL21pc3Npb25zdHlsZXMvLi9yZXNvdXJjZXMvc2Fzcy9zZXR0aW5ncy9fc2V0dGluZ3MuZGVmYXVsdHMuc2NzcyIsIndlYnBhY2s6Ly9taXNzaW9uc3R5bGVzLy4vcmVzb3VyY2VzL3Nhc3Mvc2V0dGluZ3MvX3NldHRpbmdzLnJlc3BvbnNpdmUuc2NzcyIsIndlYnBhY2s6Ly9taXNzaW9uc3R5bGVzLy4vcmVzb3VyY2VzL3Nhc3Mvc2V0dGluZ3MvX2NvbG91cnMuc2NzcyIsIndlYnBhY2s6Ly9taXNzaW9uc3R5bGVzLy4vcmVzb3VyY2VzL3Nhc3Mvc2V0dGluZ3MvX2FuaW1hdGlvbi5zY3NzIiwid2VicGFjazovL21pc3Npb25zdHlsZXMvLi9yZXNvdXJjZXMvc2Fzcy9zZXR0aW5ncy9fZm9udHMuc2NzcyIsIndlYnBhY2s6Ly9taXNzaW9uc3R5bGVzLy4vcmVzb3VyY2VzL3Nhc3Mvc2V0dGluZ3MvYm9uaXRvL19kZWZhdWx0LnNjc3MiLCJ3ZWJwYWNrOi8vbWlzc2lvbnN0eWxlcy8uL3Jlc291cmNlcy9zYXNzL3NldHRpbmdzL2Jvbml0by9fY29udGFpbmVyLnNjc3MiLCJ3ZWJwYWNrOi8vbWlzc2lvbnN0eWxlcy8uL3Jlc291cmNlcy9zYXNzL3NldHRpbmdzL2Jvbml0by9fbGF5b3V0LnNjc3MiLCJ3ZWJwYWNrOi8vbWlzc2lvbnN0eWxlcy8uL3Jlc291cmNlcy9zYXNzL3NldHRpbmdzL2Jvbml0by9faGVhZGluZ3Muc2NzcyIsIndlYnBhY2s6Ly9taXNzaW9uc3R5bGVzLy4vcmVzb3VyY2VzL3Nhc3Mvc2V0dGluZ3MvYm9uaXRvL19idXR0b25zLnNjc3MiLCJ3ZWJwYWNrOi8vbWlzc2lvbnN0eWxlcy8uL3Jlc291cmNlcy9zYXNzL3NldHRpbmdzL2Jvbml0by9fc3BhY2luZy5zY3NzIiwid2VicGFjazovL21pc3Npb25zdHlsZXMvLi9yZXNvdXJjZXMvc2Fzcy9zZXR0aW5ncy9ib25pdG8vX2FsaWdubWVudC5zY3NzIiwid2VicGFjazovL21pc3Npb25zdHlsZXMvLi9yZXNvdXJjZXMvc2Fzcy9zZXR0aW5ncy9ib25pdG8vX2ZsYWcuc2NzcyIsIndlYnBhY2s6Ly9taXNzaW9uc3R5bGVzLy4vcmVzb3VyY2VzL3Nhc3MvdG9vbHMvX3Rvb2xzLmZ1bmN0aW9ucy5zY3NzIiwid2VicGFjazovL21pc3Npb25zdHlsZXMvLi9yZXNvdXJjZXMvc2Fzcy90b29scy9fdG9vbHMubWl4aW5zLnNjc3MiLCJ3ZWJwYWNrOi8vbWlzc2lvbnN0eWxlcy8uL3Jlc291cmNlcy9zYXNzL3Rvb2xzL190b29scy5yZXNwb25zaXZlLnNjc3MiLCJ3ZWJwYWNrOi8vbWlzc2lvbnN0eWxlcy8uL3Jlc291cmNlcy9zYXNzL2dlbmVyaWMvX2dlbmVyaWMubm9ybWFsaXplLnNjc3MiLCJ3ZWJwYWNrOi8vbWlzc2lvbnN0eWxlcy8uL3Jlc291cmNlcy9zYXNzL2dlbmVyaWMvX2dlbmVyaWMucmVzZXQuc2NzcyIsIndlYnBhY2s6Ly9taXNzaW9uc3R5bGVzLy4vcmVzb3VyY2VzL3Nhc3MvZ2VuZXJpYy9fZ2VuZXJpYy5ib3gtc2l6aW5nLnNjc3MiLCJ3ZWJwYWNrOi8vbWlzc2lvbnN0eWxlcy8uL3Jlc291cmNlcy9zYXNzL2dlbmVyaWMvX2dlbmVyaWMuc2hhcmVkLnNjc3MiLCJ3ZWJwYWNrOi8vbWlzc2lvbnN0eWxlcy8uL3Jlc291cmNlcy9zYXNzL2Jhc2UvX2Jhc2UucGFnZS5zY3NzIiwid2VicGFjazovL21pc3Npb25zdHlsZXMvLi9yZXNvdXJjZXMvc2Fzcy9iYXNlL19iYXNlLmhlYWRpbmdzLnNjc3MiLCJ3ZWJwYWNrOi8vbWlzc2lvbnN0eWxlcy8uL3Jlc291cmNlcy9zYXNzL2Jhc2UvX2Jhc2UubGlzdHMuc2NzcyIsIndlYnBhY2s6Ly9taXNzaW9uc3R5bGVzLy4vcmVzb3VyY2VzL3Nhc3MvYmFzZS9fYmFzZS5pbWFnZXMuc2NzcyIsIndlYnBhY2s6Ly9taXNzaW9uc3R5bGVzLy4vcmVzb3VyY2VzL3Nhc3MvYmFzZS9fcGFnZS5zY3NzIiwid2VicGFjazovL21pc3Npb25zdHlsZXMvLi9yZXNvdXJjZXMvc2Fzcy9iYXNlL190eXBvZ3JhcGh5LnNjc3MiLCJ3ZWJwYWNrOi8vbWlzc2lvbnN0eWxlcy8uL3Jlc291cmNlcy9zYXNzL2Jhc2UvX2hlYWRpbmdzLnNjc3MiLCJ3ZWJwYWNrOi8vbWlzc2lvbnN0eWxlcy8uL3Jlc291cmNlcy9zYXNzL29iamVjdHMvX29iamVjdHMuYmxvY2suc2NzcyIsIndlYnBhY2s6Ly9taXNzaW9uc3R5bGVzLy4vcmVzb3VyY2VzL3Nhc3Mvb2JqZWN0cy9fb2JqZWN0cy5idXR0b25zLnNjc3MiLCJ3ZWJwYWNrOi8vbWlzc2lvbnN0eWxlcy8uL3Jlc291cmNlcy9zYXNzL29iamVjdHMvX29iamVjdHMuY29udGFpbmVyLnNjc3MiLCJ3ZWJwYWNrOi8vbWlzc2lvbnN0eWxlcy8uL3Jlc291cmNlcy9zYXNzL29iamVjdHMvX29iamVjdHMuZmxhZy5zY3NzIiwid2VicGFjazovL21pc3Npb25zdHlsZXMvLi9yZXNvdXJjZXMvc2Fzcy9vYmplY3RzL19vYmplY3RzLmxheW91dC5zY3NzIiwid2VicGFjazovL21pc3Npb25zdHlsZXMvLi9yZXNvdXJjZXMvc2Fzcy9vYmplY3RzL19vYmplY3RzLmxpc3QtaW5saW5lLnNjc3MiLCJ3ZWJwYWNrOi8vbWlzc2lvbnN0eWxlcy8uL3Jlc291cmNlcy9zYXNzL29iamVjdHMvX29iamVjdHMubGlzdC11aS5zY3NzIiwid2VicGFjazovL21pc3Npb25zdHlsZXMvLi9yZXNvdXJjZXMvc2Fzcy9vYmplY3RzL19vYmplY3RzLm1lZGlhLnNjc3MiLCJ3ZWJwYWNrOi8vbWlzc2lvbnN0eWxlcy8uL3Jlc291cmNlcy9zYXNzL29iamVjdHMvX29iamVjdHMucGFjay5zY3NzIiwid2VicGFjazovL21pc3Npb25zdHlsZXMvLi9yZXNvdXJjZXMvc2Fzcy9vYmplY3RzL19vYmplY3RzLnRhYmxlcy5zY3NzIiwid2VicGFjazovL21pc3Npb25zdHlsZXMvLi9yZXNvdXJjZXMvc2Fzcy9vYmplY3RzL19vYmplY3RzLnRhYnMuc2NzcyIsIndlYnBhY2s6Ly9taXNzaW9uc3R5bGVzLy4vcmVzb3VyY2VzL3Nhc3Mvb2JqZWN0cy9fY29tcG9uZW50LnNjc3MiLCJ3ZWJwYWNrOi8vbWlzc2lvbnN0eWxlcy8uL3Jlc291cmNlcy9zYXNzL29iamVjdHMvX2NvbnRhaW5lci5zY3NzIiwid2VicGFjazovL21pc3Npb25zdHlsZXMvLi9yZXNvdXJjZXMvc2Fzcy9vYmplY3RzL19oZWFkaW5ncy5zY3NzIiwid2VicGFjazovL21pc3Npb25zdHlsZXMvLi9yZXNvdXJjZXMvc2Fzcy9vYmplY3RzL19yZXNwb25zaXZlLWxheW91dC5zY3NzIiwid2VicGFjazovL21pc3Npb25zdHlsZXMvLi9yZXNvdXJjZXMvc2Fzcy9vYmplY3RzL19mbGFnLnNjc3MiLCJ3ZWJwYWNrOi8vbWlzc2lvbnN0eWxlcy8uL3Jlc291cmNlcy9zYXNzL29iamVjdHMvX3RvZ2dsZS5zY3NzIiwid2VicGFjazovL21pc3Npb25zdHlsZXMvLi9yZXNvdXJjZXMvc2Fzcy9vYmplY3RzL192aWRlby5zY3NzIiwid2VicGFjazovL21pc3Npb25zdHlsZXMvLi9yZXNvdXJjZXMvc2Fzcy9vYmplY3RzL19kaXZpZGVyLnNjc3MiLCJ3ZWJwYWNrOi8vbWlzc2lvbnN0eWxlcy8uL3Jlc291cmNlcy9zYXNzL2NvbXBvbmVudHMvX2J1dHRvbnMuc2NzcyIsIndlYnBhY2s6Ly9taXNzaW9uc3R5bGVzLy4vcmVzb3VyY2VzL3Nhc3MvY29tcG9uZW50cy9fZm9ybS5zY3NzIiwid2VicGFjazovL21pc3Npb25zdHlsZXMvLi9yZXNvdXJjZXMvc2Fzcy9jb21wb25lbnRzL19wcm9ncmVzcy5zY3NzIiwid2VicGFjazovL21pc3Npb25zdHlsZXMvLi9yZXNvdXJjZXMvc2Fzcy9jb21wb25lbnRzL19xdWVzdGlvbi5zY3NzIiwid2VicGFjazovL21pc3Npb25zdHlsZXMvLi9yZXNvdXJjZXMvc2Fzcy9jb21wb25lbnRzL19ncm91cC5zY3NzIiwid2VicGFjazovL21pc3Npb25zdHlsZXMvLi9yZXNvdXJjZXMvc2Fzcy9jb21wb25lbnRzL19oZXJvLnNjc3MiLCJ3ZWJwYWNrOi8vbWlzc2lvbnN0eWxlcy8uL3Jlc291cmNlcy9zYXNzL2NvbXBvbmVudHMvX2hlYWRlci5zY3NzIiwid2VicGFjazovL21pc3Npb25zdHlsZXMvLi9yZXNvdXJjZXMvc2Fzcy9jb21wb25lbnRzL19iYW5uZXIuc2NzcyIsIndlYnBhY2s6Ly9taXNzaW9uc3R5bGVzLy4vcmVzb3VyY2VzL3Nhc3MvY29tcG9uZW50cy9fcXVvdGUuc2NzcyIsIndlYnBhY2s6Ly9taXNzaW9uc3R5bGVzLy4vcmVzb3VyY2VzL3Nhc3MvY29tcG9uZW50cy9fZm9vdGVyLnNjc3MiLCJ3ZWJwYWNrOi8vbWlzc2lvbnN0eWxlcy8uL3Jlc291cmNlcy9zYXNzL2NvbXBvbmVudHMvX2dyb3Vwcy5zY3NzIiwid2VicGFjazovL21pc3Npb25zdHlsZXMvLi9yZXNvdXJjZXMvc2Fzcy9jb21wb25lbnRzL19zaGFyZS5zY3NzIiwid2VicGFjazovL21pc3Npb25zdHlsZXMvLi9yZXNvdXJjZXMvc2Fzcy9jb21wb25lbnRzL19tZW1iZXItdGFibGUuc2NzcyIsIndlYnBhY2s6Ly9taXNzaW9uc3R5bGVzLy4vcmVzb3VyY2VzL3Nhc3MvY29tcG9uZW50cy9fd3JhcHBlci5zY3NzIiwid2VicGFjazovL21pc3Npb25zdHlsZXMvLi9yZXNvdXJjZXMvc2Fzcy9jb21wb25lbnRzL19pbnZpdGUuc2NzcyIsIndlYnBhY2s6Ly9taXNzaW9uc3R5bGVzLy4vcmVzb3VyY2VzL3Nhc3MvY29tcG9uZW50cy9fdGlwLnNjc3MiLCJ3ZWJwYWNrOi8vbWlzc2lvbnN0eWxlcy8uL3Jlc291cmNlcy9zYXNzL2NvbXBvbmVudHMvX3N0aWNreS5zY3NzIiwid2VicGFjazovL21pc3Npb25zdHlsZXMvLi9yZXNvdXJjZXMvc2Fzcy9jb21wb25lbnRzL19jaG9zZW4uc2NzcyIsIndlYnBhY2s6Ly9taXNzaW9uc3R5bGVzLy4vcmVzb3VyY2VzL3Nhc3MvY29tcG9uZW50cy9fYmV0YS5zY3NzIiwid2VicGFjazovL21pc3Npb25zdHlsZXMvLi9yZXNvdXJjZXMvc2Fzcy90cnVtcHMvX3RydW1wcy5oZWFkaW5ncy5zY3NzIiwid2VicGFjazovL21pc3Npb25zdHlsZXMvLi9yZXNvdXJjZXMvc2Fzcy90cnVtcHMvX3RydW1wcy5jbGVhcmZpeC5zY3NzIiwid2VicGFjazovL21pc3Npb25zdHlsZXMvLi9yZXNvdXJjZXMvc2Fzcy90cnVtcHMvX3RydW1wcy53aWR0aHMuc2NzcyIsIndlYnBhY2s6Ly9taXNzaW9uc3R5bGVzLy4vcmVzb3VyY2VzL3Nhc3MvdHJ1bXBzL190cnVtcHMud2lkdGhzLXJlc3BvbnNpdmUuc2NzcyIsIndlYnBhY2s6Ly9taXNzaW9uc3R5bGVzLy4vcmVzb3VyY2VzL3Nhc3MvdHJ1bXBzL190cnVtcHMuc3BhY2luZy5zY3NzIiwid2VicGFjazovL21pc3Npb25zdHlsZXMvLi9yZXNvdXJjZXMvc2Fzcy90cnVtcHMvX2FsaWdubWVudC5zY3NzIiwid2VicGFjazovL21pc3Npb25zdHlsZXMvLi9yZXNvdXJjZXMvc2Fzcy90cnVtcHMvX3dpZHRocy10d2VudHl0d29zLnNjc3MiLCJ3ZWJwYWNrOi8vbWlzc2lvbnN0eWxlcy8uL3Jlc291cmNlcy9zYXNzL3RydW1wcy9fdmlzaWJpbGl0eS5zY3NzIiwid2VicGFjazovL21pc3Npb25zdHlsZXMvLi9yZXNvdXJjZXMvc2Fzcy90cnVtcHMvX2hlYWRpbmdzLnNjc3MiXSwic291cmNlc0NvbnRlbnQiOlsiQGNoYXJzZXQgXCJVVEYtOFwiO1xuXG4vLyBTZXR0aW5nc1xuQGltcG9ydCBcInNldHRpbmdzL3NldHRpbmdzLmRlZmF1bHRzXCI7XG5AaW1wb3J0IFwic2V0dGluZ3Mvc2V0dGluZ3MucmVzcG9uc2l2ZVwiO1xuQGltcG9ydCBcInNldHRpbmdzL2NvbG91cnNcIjtcbkBpbXBvcnQgXCJzZXR0aW5ncy9hbmltYXRpb25cIjtcbkBpbXBvcnQgXCJzZXR0aW5ncy9mb250c1wiO1xuQGltcG9ydCBcInNldHRpbmdzL2Jvbml0by9kZWZhdWx0XCI7XG5AaW1wb3J0IFwic2V0dGluZ3MvYm9uaXRvL2NvbnRhaW5lclwiO1xuQGltcG9ydCBcInNldHRpbmdzL2Jvbml0by9sYXlvdXRcIjtcbkBpbXBvcnQgXCJzZXR0aW5ncy9ib25pdG8vaGVhZGluZ3NcIjtcbkBpbXBvcnQgXCJzZXR0aW5ncy9ib25pdG8vYnV0dG9uc1wiO1xuQGltcG9ydCBcInNldHRpbmdzL2Jvbml0by9zcGFjaW5nXCI7XG5AaW1wb3J0IFwic2V0dGluZ3MvYm9uaXRvL2FsaWdubWVudFwiO1xuQGltcG9ydCBcInNldHRpbmdzL2Jvbml0by9mbGFnXCI7XG5cbi8vIFRvb2xzXG5AaW1wb3J0IFwidG9vbHMvdG9vbHMuZnVuY3Rpb25zXCI7XG5AaW1wb3J0IFwidG9vbHMvdG9vbHMubWl4aW5zXCI7XG5AaW1wb3J0IFwidG9vbHMvdG9vbHMucmVzcG9uc2l2ZVwiO1xuXG4vLyBHZW5lcmljXG5AaW1wb3J0IFwiZ2VuZXJpYy9nZW5lcmljLm5vcm1hbGl6ZVwiO1xuQGltcG9ydCBcImdlbmVyaWMvZ2VuZXJpYy5yZXNldFwiO1xuQGltcG9ydCBcImdlbmVyaWMvZ2VuZXJpYy5ib3gtc2l6aW5nXCI7XG5AaW1wb3J0IFwiZ2VuZXJpYy9nZW5lcmljLnNoYXJlZFwiO1xuXG4vLyBCYXNlXG5AaW1wb3J0IFwiYmFzZS9iYXNlLnBhZ2VcIjtcbkBpbXBvcnQgXCJiYXNlL2Jhc2UuaGVhZGluZ3NcIjtcbkBpbXBvcnQgXCJiYXNlL2Jhc2UubGlzdHNcIjtcbkBpbXBvcnQgXCJiYXNlL2Jhc2UuaW1hZ2VzXCI7XG5AaW1wb3J0IFwiYmFzZS9wYWdlXCI7XG5AaW1wb3J0IFwiYmFzZS90eXBvZ3JhcGh5XCI7XG5AaW1wb3J0IFwiYmFzZS9oZWFkaW5nc1wiO1xuXG4vLyBPYmplY3RzXG5AaW1wb3J0IFwib2JqZWN0cy9vYmplY3RzLmJsb2NrXCI7XG5AaW1wb3J0IFwib2JqZWN0cy9vYmplY3RzLmJ1dHRvbnNcIjtcbkBpbXBvcnQgXCJvYmplY3RzL29iamVjdHMuY29udGFpbmVyXCI7XG5AaW1wb3J0IFwib2JqZWN0cy9vYmplY3RzLmZsYWdcIjtcbkBpbXBvcnQgXCJvYmplY3RzL29iamVjdHMubGF5b3V0XCI7XG5AaW1wb3J0IFwib2JqZWN0cy9vYmplY3RzLmxpc3QtaW5saW5lXCI7XG5AaW1wb3J0IFwib2JqZWN0cy9vYmplY3RzLmxpc3QtdWlcIjtcbkBpbXBvcnQgXCJvYmplY3RzL29iamVjdHMubWVkaWFcIjtcbkBpbXBvcnQgXCJvYmplY3RzL29iamVjdHMucGFja1wiO1xuQGltcG9ydCBcIm9iamVjdHMvb2JqZWN0cy50YWJsZXNcIjtcbkBpbXBvcnQgXCJvYmplY3RzL29iamVjdHMudGFic1wiO1xuQGltcG9ydCBcIm9iamVjdHMvY29tcG9uZW50XCI7XG5AaW1wb3J0IFwib2JqZWN0cy9jb250YWluZXJcIjtcbkBpbXBvcnQgXCJvYmplY3RzL2hlYWRpbmdzXCI7XG5AaW1wb3J0IFwib2JqZWN0cy9yZXNwb25zaXZlLWxheW91dFwiO1xuQGltcG9ydCBcIm9iamVjdHMvZmxhZ1wiO1xuQGltcG9ydCBcIm9iamVjdHMvdG9nZ2xlXCI7XG5AaW1wb3J0IFwib2JqZWN0cy92aWRlb1wiO1xuQGltcG9ydCBcIm9iamVjdHMvZGl2aWRlclwiO1xuXG4vLyBDb21wb25lbnRzXG5AaW1wb3J0IFwiY29tcG9uZW50cy9idXR0b25zXCI7XG5AaW1wb3J0IFwiY29tcG9uZW50cy9mb3JtXCI7XG5AaW1wb3J0IFwiY29tcG9uZW50cy9wcm9ncmVzc1wiO1xuQGltcG9ydCBcImNvbXBvbmVudHMvcXVlc3Rpb25cIjtcbkBpbXBvcnQgXCJjb21wb25lbnRzL2dyb3VwXCI7XG5AaW1wb3J0IFwiY29tcG9uZW50cy9oZXJvXCI7XG5AaW1wb3J0IFwiY29tcG9uZW50cy9oZWFkZXJcIjtcbkBpbXBvcnQgXCJjb21wb25lbnRzL2Jhbm5lclwiO1xuQGltcG9ydCBcImNvbXBvbmVudHMvcXVvdGVcIjtcbkBpbXBvcnQgXCJjb21wb25lbnRzL2Zvb3RlclwiO1xuQGltcG9ydCBcImNvbXBvbmVudHMvZ3JvdXBzXCI7XG5AaW1wb3J0IFwiY29tcG9uZW50cy9zaGFyZVwiO1xuQGltcG9ydCBcImNvbXBvbmVudHMvbWVtYmVyLXRhYmxlXCI7XG5AaW1wb3J0IFwiY29tcG9uZW50cy93cmFwcGVyXCI7XG5AaW1wb3J0IFwiY29tcG9uZW50cy9pbnZpdGVcIjtcbkBpbXBvcnQgXCJjb21wb25lbnRzL3RpcFwiO1xuQGltcG9ydCBcImNvbXBvbmVudHMvc3RpY2t5XCI7XG5AaW1wb3J0IFwiY29tcG9uZW50cy9jaG9zZW5cIjtcbkBpbXBvcnQgXCJjb21wb25lbnRzL2JldGFcIjtcblxuLy8gVHJ1bXBzXG5AaW1wb3J0IFwidHJ1bXBzL3RydW1wcy5oZWFkaW5nc1wiO1xuQGltcG9ydCBcInRydW1wcy90cnVtcHMuY2xlYXJmaXhcIjtcbkBpbXBvcnQgXCJ0cnVtcHMvdHJ1bXBzLndpZHRoc1wiO1xuQGltcG9ydCBcInRydW1wcy90cnVtcHMud2lkdGhzLXJlc3BvbnNpdmVcIjtcbkBpbXBvcnQgXCJ0cnVtcHMvdHJ1bXBzLnNwYWNpbmdcIjtcbkBpbXBvcnQgXCJ0cnVtcHMvYWxpZ25tZW50XCI7XG5AaW1wb3J0IFwidHJ1bXBzL3dpZHRocy10d2VudHl0d29zXCI7XG5AaW1wb3J0IFwidHJ1bXBzL3Zpc2liaWxpdHlcIjtcbkBpbXBvcnQgXCJ0cnVtcHMvaGVhZGluZ3NcIjtcblxuLmJpYmxlLXN0dWR5IHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgbWFyZ2luLWJvdHRvbTogJGJvbml0by1iYXNlLXNwYWNpbmctdW5pdDtcbn0iLCIvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcXFxuICAgICNERUZBVUxUU1xuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuLy8gVGhlc2UgdmFyaWFibGVzIGFyZSB0aGUgZnJhbWV3b3JrIGRlZmF1bHRzOyB0aGV5IHNob3VsZCBub3QgYmUgbW9kaWZpZWQgb3Jcbi8vIGFkanVzdGVkIGRpcmVjdGx5OyB5b3Ugc2hvdWxkIHByZWRlZmluZSB0aGUgdmFyaWFibGVzIGluIHlvdXIgb3duIHByb2plY3QuXG5cblxuXG5cblxuLy8gSGlnaC1sZXZlbCBiYXNlIHNldHRpbmdzLlxuJGJvbml0by1iYXNlLWZvbnQtc2l6ZTogICAgICAgICAgMTZweCAhZGVmYXVsdDtcbiRib25pdG8tYmFzZS1saW5lLWhlaWdodDogICAgICAgIDI0cHggIWRlZmF1bHQ7XG4kYm9uaXRvLWJhc2UtdGV4dC1jb2xvcjogICAgICAgICAjMzMzICFkZWZhdWx0O1xuJGJvbml0by1iYXNlLWJhY2tncm91bmQtY29sb3I6ICAgI2ZmZiAhZGVmYXVsdDtcblxuXG5cblxuXG4vLyBOYW1lc3BhY2UuXG4vL1xuLy8gV291bGQgeW91IGxpa2UgdGhlIGZyYW1ld29yayBjbGFzc2VzIHRvIGJlIHByZXBlbmRlZCB3aXRoIGEgbmFtZXNwYWNlPyBJZiBzbyxcbi8vIGRlZmluZSBpdCBoZXJlLlxuJGJvbml0by1uYW1lc3BhY2U6ICAgICAgICAgICAgICAgbnVsbCAhZGVmYXVsdDtcblxuXG5cblxuXG4vLyBUaGVzZSB2YXJpYWJsZXMgYXJlIGZyYW1ld29yayB2YXJpYWJsZXMsIHNvdXJjZWQgZnJvbSB2YXJpYWJsZXMgZGVmaW5lZFxuLy8gYWJvdmUuIEZlZWwgZnJlZSB0byB1c2UgdGhlc2UgdmFyaWFibGVzIHRocm91Z2hvdXQgeW91ciBwcm9qZWN0LCBidXQgZG8gbm90XG4vLyBtb2RpZnkgb3IgcmVhc3NpZ24gdGhlbS5cbiRib25pdG8tYmFzZS1zcGFjaW5nLXVuaXQ6ICAgICAgICAgICAkYm9uaXRvLWJhc2UtbGluZS1oZWlnaHQ7XG4kYm9uaXRvLWJhc2Utc3BhY2luZy11bml0LS1zbWFsbDogICAgcm91bmQoJGJvbml0by1iYXNlLXNwYWNpbmctdW5pdCAvIDIpO1xuJGJvbml0by1iYXNlLXNwYWNpbmctdW5pdC0tbGFyZ2U6ICAgIHJvdW5kKCRib25pdG8tYmFzZS1zcGFjaW5nLXVuaXQgKiAyKTtcbiIsIi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlxcXG4gICAgI1NFVFRJTkdTLVJFU1BPTlNJVkVcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbi8vIEhvbGQgb3VyIGJyZWFrcG9pbnQgYWxpYXNlcyBhbmQgY29uZGl0aW9ucyBpbiBhIGxpc3QuXG4vL1xuLy8gVGhlc2UgY2FuIGJlIGludm9rZWQgbGF0ZXIgb24gdmlhIHRoZSBgbWVkaWEtcXVlcnkoKWAgbWl4aW4gZm91bmQgaW5cbi8vIGBfdG9vbHMucmVzcG9uc2l2ZWAuXG5cbiRicmVha3BvaW50czogKFxuICAgIFwicGFsbVwiICAgICAgICAgIFwic2NyZWVuIGFuZCAobWF4LXdpZHRoOiA0NC45Mzc1ZW0pXCIsXG4gICAgXCJsYXBcIiAgICAgICAgICAgXCJzY3JlZW4gYW5kIChtaW4td2lkdGg6IDQ1ZW0pIGFuZCAobWF4LXdpZHRoOiA2My45Mzc1ZW0pXCIsXG4gICAgXCJsYXAtYW5kLXVwXCIgICAgXCJzY3JlZW4gYW5kIChtaW4td2lkdGg6IDQ1ZW0pXCIsXG4gICAgXCJwb3J0YWJsZVwiICAgICAgXCJzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDYzLjkzNzVlbSlcIixcbiAgICBcImRlc2tcIiAgICAgICAgICBcInNjcmVlbiBhbmQgKG1pbi13aWR0aDogNjRlbSlcIixcbiAgICBcInJldGluYVwiICAgICAgICBcIigtd2Via2l0LW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86IDIpLCAobWluLXJlc29sdXRpb246IDE5MmRwaSksIChtaW4tcmVzb2x1dGlvbjogMmRwcHgpXCJcbikgIWRlZmF1bHQ7XG5cblxuXG5cblxuLy8gSWYgd2UgaGF2ZSBpbmNsdWRlZCB0aGlzIGZpbGUsIHNldCBhIHZhcmlhYmxlIHRvIHRlbGwgdGhlIHJlc3Qgb2YgdGhlXG4vLyBmcmFtZXdvcmsgdGhhdCB3ZSBoYXZlIHNvbWUgcmVzcG9uc2l2ZSBzZXR0aW5ncy5cbiRib25pdG8tcmVzcG9uc2l2ZS1zZXR0aW5nczogdHJ1ZTtcbiIsIi8qKlxuICogQ29sb3VyIHZhcmlhYmxlc1xuICpcbiAqIFRoZXNlIGFyZSB0aGUgY29sb3VycyB0aGF0IGFyZSB1c2VkIHRocm91Z2hvdXQgdGhlIHdlYnNpdGUuXG4gKi9cblxuLy8gTmFtZWQgY29sb3Vyc1xuJGNvbG9yLXdlcmUtYWxpdmU6ICNGRTg2MDA7XG4kY29sb3ItZ2xhc3Mtc3ByaW5nOiAjNTJCQkEzO1xuJGNvbG9yLWRhcmstZGFyay1uaWdodDogIzNCM0EzNjtcblxuLy8gQmFzZSBDb2xvdXJzXG4kY29sb3Itd2hpdGU6ICNmZmZmZmY7XG4kY29sb3ItYmxhY2s6ICMwMDAwMDA7XG5cbiRjb2xvci1vcmFuZ2U6ICRjb2xvci13ZXJlLWFsaXZlO1xuJGNvbG9yLW9yYW5nZS03NTogI0Y5QTU1ODtcbiRjb2xvci1vcmFuZ2UtNTA6ICNGQUMzOEY7XG5cbiRjb2xvci1ncmVlbjogJGNvbG9yLWdsYXNzLXNwcmluZztcbiRjb2xvci1ncmVlbi03NTogIzdFQ0NCQTtcbiRjb2xvci1ncmVlbi01MDogI0E4REREMTtcblxuJGNvbG9yLWdyZXk6ICRjb2xvci1kYXJrLWRhcmstbmlnaHQ7XG4kY29sb3ItZ3JleS03NTogIzVCNUI1QjtcbiRjb2xvci1ncmV5LTUwOiAjOUQ5QzlBO1xuJGNvbG9yLWdyZXktbGlnaHQ6ICNEREREREQ7XG4kY29sb3ItZ3JleS1saWdodGVyOiAjRjZGNkY2O1xuJGNvbG9yLWdyZXktZGFyazogIzlCOUI5QjtcblxuJGNvbG9yLWxpZ2h0LWJyb3duOiAjNjM2MjVCO1xuJGNvbG9yLWxpZ2h0ZXItYnJvd246ICM2RjZFNjY7XG5cbiRjb2xvci1ibHVlOiAjMEQ3Q0NCO1xuJGNvbG9yLWJsdWUtZGFyazogIzRBOTBFMjtcblxuLy8gU2VtYW50aWMgQ29sb3Vyc1xuJGNvbG9yLXByaW1hcnk6ICRjb2xvci1vcmFuZ2U7XG4kY29sb3Itc2Vjb25kYXJ5OiAkY29sb3ItZ3JlZW47XG4iLCIvKipcbiAqIEFuaW1hdGlvbiBTZXR0aW5nc1xuICpcbiAqIFRoZXNlIGFyZSB0aGUgc2V0dGluZ3MgdXNlZCBmb3IgYW5pbWF0aW9uIHB1cnBvc2VzXG4gKlxuICovXG5cbiR0aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllciguNCwgMCwgLjIsIDEpO1xuIiwiLyoqXG4gKiBGb250IHZhcmlhYmxlc1xuICpcbiAqIFRoZXNlIGFyZSB0aGUgZm9udHMgdGhhdCBhcmUgdXNlZCB0aHJvdWdob3V0IHRoZSB3ZWJzaXRlLlxuICovXG4kZm9udC1wcmltYXJ5OiBcImZ1dHVyYS1wdFwiLFRyZWJ1Y2hldCBNUywgQXJpYWwsIHNhbnMtc2VyaWY7IiwiLyoqXG4gKiBJbnVpdCBEZWZhdWx0IFNldHRpbmdzXG4gKlxuICogVGhlc2UgdmFyaWFibGVzIGFyZSB1c2VkIHRvIG92ZXJyaWRlIHRoZSBJbnVpdCBEZWZhdWx0IGRlZmF1bHRzXG4gKi9cblxuLy8gSGlnaC1sZXZlbCBiYXNlIHNldHRpbmdzLlxuJGJvbml0by1iYXNlLWZvbnQtc2l6ZTogMTZweDtcbiRib25pdG8tYmFzZS1saW5lLWhlaWdodDogMjBweDtcbiRib25pdG8tYmFzZS10ZXh0LWNvbG9yOiAkY29sb3Itd2hpdGU7XG4kYm9uaXRvLWJhc2UtYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yLWdyZXk7XG5cbi8vIE5hbWVzcGFjZS5cbi8vJGJvbml0by1uYW1lc3BhY2U6IG51bGw7XG5cbi8vIFNwYWNpbmcgVW5pdHNcbiRib25pdG8tYmFzZS1zcGFjaW5nLXVuaXQ6IDE2cHg7XG4kYm9uaXRvLWJhc2Utc3BhY2luZy11bml0LS10aW55OiByb3VuZCgkYm9uaXRvLWJhc2Utc3BhY2luZy11bml0IC8gNCk7XG4kYm9uaXRvLWJhc2Utc3BhY2luZy11bml0LS1zbWFsbDogcm91bmQoJGJvbml0by1iYXNlLXNwYWNpbmctdW5pdCAvIDIpO1xuJGJvbml0by1iYXNlLXNwYWNpbmctdW5pdC0tbGFyZ2U6IHJvdW5kKCRib25pdG8tYmFzZS1zcGFjaW5nLXVuaXQgKiAyKTtcbiRib25pdG8tYmFzZS1zcGFjaW5nLXVuaXQtLWh1Z2U6IHJvdW5kKCRib25pdG8tYmFzZS1zcGFjaW5nLXVuaXQgKiA0KTsiLCIvKipcbiAqIEJvbml0byBDb250YWluZXIgU2V0dGluZ3NcbiAqXG4gKiBUaGVzZSB2YXJpYWJsZXMgYXJlIHVzZWQgdG8gb3ZlcnJpZGUgdGhlIEJvbml0byBDb250YWluZXIgZGVmYXVsdHNcbiAqL1xuXG4vLyBDb250YWluZXIgc2V0dGluZ3Ncbi8vJGJvbml0by1jb250YWluZXItbmFtZXNwYWNlOiAkYm9uaXRvLW5hbWVzcGFjZSAhZGVmYXVsdDtcblxuJGJvbml0by1jb250YWluZXItd2lkdGg6IDk3MnB4OyIsIi8qKlxuICogQm9uaXRvIExheW91dCBTZXR0aW5nc1xuICpcbiAqIFRoZXNlIHZhcmlhYmxlcyBhcmUgdXNlZCB0byBvdmVycmlkZSB0aGUgQm9uaXRvIExheW91dGRlZmF1bHRzXG4gKi9cblxuLy8kYm9uaXRvLWxheW91dC1uYW1lc3BhY2U6ICAgICAgICAkYm9uaXRvLW5hbWVzcGFjZSAhZGVmYXVsdDtcblxuJGJvbml0by1sYXlvdXQtZ3V0dGVyOiA1cHg7XG4vLyRib25pdG8tbGF5b3V0LWd1dHRlci0tdGlueTogICAgICAgcXVhcnRlcigkYm9uaXRvLWxheW91dC1ndXR0ZXIpICFkZWZhdWx0O1xuLy8kYm9uaXRvLWxheW91dC1ndXR0ZXItLXNtYWxsOiAgICAgICAgaGFsdmUoJGJvbml0by1sYXlvdXQtZ3V0dGVyKSAhZGVmYXVsdDtcbi8vJGJvbml0by1sYXlvdXQtZ3V0dGVyLS1sYXJnZTogICAgICAgZG91YmxlKCRib25pdG8tbGF5b3V0LWd1dHRlcikgIWRlZmF1bHQ7XG4kYm9uaXRvLWxheW91dC1ndXR0ZXItLWh1Z2U6ICAgICAkYm9uaXRvLWJhc2Utc3BhY2luZy11bml0O1xuXG4vLyRib25pdG8tZW5hYmxlLWxheW91dC0tdGlueTogICAgIHRydWU7XG4vLyRib25pdG8tZW5hYmxlLWxheW91dC0tc21hbGw6ICAgIGZhbHNlICFkZWZhdWx0O1xuLy8kYm9uaXRvLWVuYWJsZS1sYXlvdXQtLWxhcmdlOiAgICBmYWxzZSAhZGVmYXVsdDtcbiRib25pdG8tZW5hYmxlLWxheW91dC0taHVnZTogICAgIHRydWU7XG4vLyRib25pdG8tZW5hYmxlLWxheW91dC0tZmx1c2g6ICAgIHRydWU7XG4vLyRib25pdG8tZW5hYmxlLWxheW91dC0tcmV2OiAgICAgIHRydWU7XG4kYm9uaXRvLWVuYWJsZS1sYXlvdXQtLW1pZGRsZTogICB0cnVlO1xuLy8kYm9uaXRvLWVuYWJsZS1sYXlvdXQtLWJvdHRvbTogICBmYWxzZSAhZGVmYXVsdDtcbi8vJGJvbml0by1lbmFibGUtbGF5b3V0LS1yaWdodDogICAgZmFsc2UgIWRlZmF1bHQ7XG4kYm9uaXRvLWVuYWJsZS1sYXlvdXQtLWNlbnRlcjogICB0cnVlO1xuLy8kYm9uaXRvLWVuYWJsZS1sYXlvdXQtLWF1dG86ICAgICBmYWxzZSAhZGVmYXVsdDsiLCIvKipcbiAqIEludWl0IEhlYWRpbmcgU2V0dGluZ3NcbiAqXG4gKiBUaGVzZSB2YXJpYWJsZXMgYXJlIHVzZWQgdG8gb3ZlcnJpZGUgdGhlIEludWl0IEhlYWRpbmcgZGVmYXVsdHNcbiAqL1xuXG4vLyBIZWFkaW5nIHNpemVzXG4kYm9uaXRvLWhlYWRpbmctc2l6ZS0xOiAzMnB4O1xuJGJvbml0by1oZWFkaW5nLXNpemUtMjogMjhweDtcbiRib25pdG8taGVhZGluZy1zaXplLTM6IDIwcHg7XG4kYm9uaXRvLWhlYWRpbmctc2l6ZS00OiAxNnB4O1xuJGJvbml0by1oZWFkaW5nLXNpemUtNTogMTZweDtcbiRib25pdG8taGVhZGluZy1zaXplLTY6IDE2cHg7XG4iLCIvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcXFxuICAgICNCVVRUT05TXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4vKipcbiAqIEEgc2ltcGxlIGJ1dHRvbiBvYmplY3QuXG4gKi9cblxuLy8gUHJlZGVmaW5lIHRoZSB2YXJpYWJsZXMgYmVsb3cgaW4gb3JkZXIgdG8gYWx0ZXIgYW5kIGVuYWJsZSBzcGVjaWZpYyBmZWF0dXJlcy5cbi8vJGJvbml0by1idG4tbmFtZXNwYWNlOiAgICAgICAkYm9uaXRvLW5hbWVzcGFjZSAhZGVmYXVsdDtcblxuLy8kYm9uaXRvLWJ0bi1wYWRkaW5nOiAgICAgICAgIGhhbHZlKCRib25pdG8tYmFzZS1zcGFjaW5nLXVuaXQpO1xuLy8kYm9uaXRvLWJ0bi1wYWRkaW5nLS1zbWFsbDogIGhhbHZlKCRib25pdG8tYnRuLXBhZGRpbmcpICFkZWZhdWx0O1xuLy8kYm9uaXRvLWJ0bi1wYWRkaW5nLS1sYXJnZTogIGRvdWJsZSgkYm9uaXRvLWJ0bi1wYWRkaW5nKSAhZGVmYXVsdDtcbiRib25pdG8tYnRuLWJhY2tncm91bmQ6ICAgICAgJGNvbG9yLXNlY29uZGFyeTtcbiRib25pdG8tYnRuLWNvbG9yOiAgICAgICAgICAgJGNvbG9yLXdoaXRlO1xuJGJvbml0by1idG4tYm9yZGVyLXdpZHRoOiAgICAwO1xuLy8kYm9uaXRvLWJ0bi1ib3JkZXItc3R5bGU6ICAgIHNvbGlkO1xuLy8kYm9uaXRvLWJ0bi1ib3JkZXItY29sb3I6ICAgICRjb2xvci13aGl0ZTtcbiRib25pdG8tYnRuLXJhZGl1czogICAgICAgICAgNXB4O1xuXG4vLyRib25pdG8tZW5hYmxlLWJ0bi0tc21hbGw6ICAgdHJ1ZTtcbi8vJGJvbml0by1lbmFibGUtYnRuLS1sYXJnZTogICBmYWxzZSAhZGVmYXVsdDtcbiRib25pdG8tZW5hYmxlLWJ0bi0tZnVsbDogICAgdHJ1ZTtcbiRib25pdG8tZW5hYmxlLWJ0bi0tcGlsbDogICAgZmFsc2UgIWRlZmF1bHQ7IiwiLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qXFxcbiAgICAjU1BBQ0lOR1xuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuLyoqXG4gKiBNYXJnaW4gYW5kIHBhZGRpbmcgaGVscGVyIGNsYXNzZXMuIFVzZSB0aGVzZSB0byB0d2VhayBsYXlvdXQgb24gYSBtaWNyb1xuICogbGV2ZWwuXG4gKlxuICogYC4obXxwKSh0fHJ8YnxsfGh8dikoLXwrfDApIHt9YCA9IG1hcmdpbi9wYWRkaW5nIHRvcC9yaWdodC9ib3R0b20vbGVmdC9ob3Jpem9udGFsL3ZlcnRpY2FsIGxlc3MvbW9yZS9ub25lXG4gKi9cblxuLy8gUHJlZGVmaW5lIHRoZSB2YXJpYWJsZXMgYmVsb3cgaW4gb3JkZXIgdG8gYWx0ZXIgYW5kIGVuYWJsZSBzcGVjaWZpYyBmZWF0dXJlcy5cbi8vJGJvbml0by1zcGFjaW5nLW5hbWVzcGFjZTogICAgICAgICAgICAgICAkYm9uaXRvLW5hbWVzcGFjZSAhZGVmYXVsdDtcbi8vXG4kYm9uaXRvLW1hcmdpbjogJGJvbml0by1iYXNlLXNwYWNpbmctdW5pdDtcbiRib25pdG8tbWFyZ2luLS1zbWFsbDogJGJvbml0by1iYXNlLXNwYWNpbmctdW5pdC0tc21hbGw7XG4kYm9uaXRvLW1hcmdpbi0tdGlueTogJGJvbml0by1iYXNlLXNwYWNpbmctdW5pdC0tdGlueTtcbiRib25pdG8tbWFyZ2luLS1sYXJnZTogJGJvbml0by1iYXNlLXNwYWNpbmctdW5pdC0tbGFyZ2U7XG4kYm9uaXRvLW1hcmdpbi0taHVnZTogJGJvbml0by1iYXNlLXNwYWNpbmctdW5pdC0taHVnZTtcbi8vXG4kYm9uaXRvLXBhZGRpbmc6ICRib25pdG8tYmFzZS1zcGFjaW5nLXVuaXQ7XG4kYm9uaXRvLXBhZGRpbmctLXNtYWxsOiAkYm9uaXRvLWJhc2Utc3BhY2luZy11bml0LS1zbWFsbDtcbiRib25pdG8tcGFkZGluZy0tdGlueTogJGJvbml0by1iYXNlLXNwYWNpbmctdW5pdC0tdGlueTtcbiRib25pdG8tcGFkZGluZy0tbGFyZ2U6ICRib25pdG8tYmFzZS1zcGFjaW5nLXVuaXQtLWxhcmdlO1xuJGJvbml0by1wYWRkaW5nLS1odWdlOiAkYm9uaXRvLWJhc2Utc3BhY2luZy11bml0LS1odWdlO1xuLy9cbiRib25pdG8tZW5hYmxlLW1hcmdpbnM6IHRydWU7XG4kYm9uaXRvLWVuYWJsZS1tYXJnaW5zLS10aW55OiB0cnVlO1xuJGJvbml0by1lbmFibGUtbWFyZ2lucy0tc21hbGw6IHRydWU7XG4kYm9uaXRvLWVuYWJsZS1tYXJnaW5zLS1sYXJnZTogdHJ1ZTtcbiRib25pdG8tZW5hYmxlLW1hcmdpbnMtLWh1Z2U6IHRydWU7XG4vL1xuLy8kYm9uaXRvLWVuYWJsZS1tYXJnaW5zLS1uZWdhdGl2ZTogICAgICAgIGZhbHNlICFkZWZhdWx0O1xuLy8kYm9uaXRvLWVuYWJsZS1tYXJnaW5zLS1uZWdhdGl2ZS10aW55OiAgIGZhbHNlICFkZWZhdWx0O1xuLy8kYm9uaXRvLWVuYWJsZS1tYXJnaW5zLS1uZWdhdGl2ZS1zbWFsbDogIGZhbHNlICFkZWZhdWx0O1xuLy8kYm9uaXRvLWVuYWJsZS1tYXJnaW5zLS1uZWdhdGl2ZS1sYXJnZTogIGZhbHNlICFkZWZhdWx0O1xuLy8kYm9uaXRvLWVuYWJsZS1tYXJnaW5zLS1uZWdhdGl2ZS1odWdlOiAgIGZhbHNlICFkZWZhdWx0O1xuLy9cbiRib25pdG8tZW5hYmxlLW1hcmdpbnMtLW5vbmU6IHRydWU7XG4vL1xuJGJvbml0by1lbmFibGUtcGFkZGluZ3M6IHRydWU7XG4vLyRib25pdG8tZW5hYmxlLXBhZGRpbmdzLS10aW55OiAgICAgICAgICAgZmFsc2UgIWRlZmF1bHQ7XG4vLyRib25pdG8tZW5hYmxlLXBhZGRpbmdzLS1zbWFsbDogICAgICAgICAgZmFsc2UgIWRlZmF1bHQ7XG4kYm9uaXRvLWVuYWJsZS1wYWRkaW5ncy0tbGFyZ2U6IHRydWU7XG4kYm9uaXRvLWVuYWJsZS1wYWRkaW5ncy0taHVnZTogICAgICAgICAgIHRydWU7XG4vL1xuLy8kYm9uaXRvLWVuYWJsZS1wYWRkaW5ncy0tbm9uZTogICAgICAgICAgIGZhbHNlICFkZWZhdWx0OyIsIi8qKlxuICogQm9uaXRvIEFsaWdubWVudCBTZXR0aW5nc1xuICpcbiAqIFRoZXNlIHZhcmlhYmxlcyBhcmUgdXNlZCB0byBvdmVycmlkZSB0aGUgQm9uaXRvIEFsaWdubWVudCBkZWZhdWx0c1xuICovXG5cbi8vIEFsaWdubWVudCBzZXR0aW5nc1xuLy8kYm9uaXRvLWFsaWdubWVudC1uYW1lc3BhY2U6IG51bGwgIWRlZmF1bHQ7XG4kYm9uaXRvLWVuYWJsZS1hbGlnbm1lbnQ6IHRydWU7IiwiLyoqXG4gKiBCb25pdG8gRmxhZyBTZXR0aW5nc1xuICpcbiAqIFRoZXNlIHZhcmlhYmxlcyBhcmUgdXNlZCB0byBvdmVycmlkZSB0aGUgQm9uaXRvIEFsaWdubWVudCBkZWZhdWx0c1xuICovXG5cbi8vIEZsYWcgc2V0dGluZ3Ncbi8vJGJvbml0by1mbGFnLW5hbWVzcGFjZTogICAgICAgICAgJGJvbml0by1uYW1lc3BhY2UgIWRlZmF1bHQ7XG5cbiRib25pdG8tZmxhZy1ndXR0ZXI6ICAgICAgICAgICAgICRib25pdG8tYmFzZS1zcGFjaW5nLXVuaXQ7XG4vLyRib25pdG8tZmxhZy1ndXR0ZXItLXRpbnk6ICAgICAgICAgcXVhcnRlcigkYm9uaXRvLWZsYWctZ3V0dGVyKSAhZGVmYXVsdDtcbi8vJGJvbml0by1mbGFnLWd1dHRlci0tc21hbGw6ICAgICAgICAgIGhhbHZlKCRib25pdG8tZmxhZy1ndXR0ZXIpICFkZWZhdWx0O1xuLy8kYm9uaXRvLWZsYWctZ3V0dGVyLS1sYXJnZTogICAgICAgICBkb3VibGUoJGJvbml0by1mbGFnLWd1dHRlcikgIWRlZmF1bHQ7XG4vLyRib25pdG8tZmxhZy1ndXR0ZXItLWh1Z2U6ICAgICAgIHF1YWRydXBsZSgkYm9uaXRvLWZsYWctZ3V0dGVyKSAhZGVmYXVsdDtcblxuLy8kYm9uaXRvLWVuYWJsZS1mbGFnLS10aW55OiAgICAgICBmYWxzZSAhZGVmYXVsdDtcbiRib25pdG8tZW5hYmxlLWZsYWctLXNtYWxsOiAgICAgIHRydWU7XG4vLyRib25pdG8tZW5hYmxlLWZsYWctLWxhcmdlOiAgICAgIGZhbHNlICFkZWZhdWx0O1xuLy8kYm9uaXRvLWVuYWJsZS1mbGFnLS1odWdlOiAgICAgICBmYWxzZSAhZGVmYXVsdDtcbi8vJGJvbml0by1lbmFibGUtZmxhZy0tcmV2OiAgICAgICAgZmFsc2UgIWRlZmF1bHQ7XG4vLyRib25pdG8tZW5hYmxlLWZsYWctLWZsdXNoOiAgICAgIGZhbHNlICFkZWZhdWx0O1xuLy8kYm9uaXRvLWVuYWJsZS1mbGFnLS10b3A6ICAgICAgICBmYWxzZSAhZGVmYXVsdDtcbi8vJGJvbml0by1lbmFibGUtZmxhZy0tYm90dG9tOiAgICAgZmFsc2UgIWRlZmF1bHQ7XG4vLyRib25pdG8tZW5hYmxlLWZsYWctLXJlc3BvbnNpdmU6IGZhbHNlICFkZWZhdWx0O1xuLy8kYm9uaXRvLWZsYWctY29sbGFwc2UtYXQ6ICAgICAgICA3MjBweCAhZGVmYXVsdDsiLCIvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcXFxuICAgICNGVU5DVElPTlNcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbi8vIFRoZSBmcmFtZXdvcmsgbWFrZXMgdXNlIG9mIGEgZmV3IGZ1bmN0aW9ucyB0aGF0IGFyZSBhbHNvIGF2YWlsYWJsZSBmb3IgeW91IHRvIHVzZVxuLy8gbGF0ZXIgb24gaW4geW91ciBleHRlbnNpb24gb2YgdGhlIGZyYW1ld29yay5cblxuXG5cblxuXG4vLyBNYXRocyBoZWxwZXJzLlxuLy9cbi8vIEhhbHZlIGFuZCBkb3VibGUgbnVtYmVycywgcmV0dXJuaW5nIHJvdW5kZWQgaW50ZWdlcnMuIEUuZy46XG4vL1xuLy8gLmZvbyB7XG4vLyAgICAgcGFkZGluZzogaGFsdmUoMy4ycHgpO1xuLy8gfVxuLy9cbkBmdW5jdGlvbiBxdWFydGVyKCRib25pdG8tbnVtYmVyKSB7XG4gICAgQHJldHVybiByb3VuZCgkYm9uaXRvLW51bWJlciAvIDQpO1xufVxuXG5AZnVuY3Rpb24gaGFsdmUoJGJvbml0by1udW1iZXIpIHtcbiAgICBAcmV0dXJuIHJvdW5kKCRib25pdG8tbnVtYmVyIC8gMik7XG59XG5cbkBmdW5jdGlvbiBkb3VibGUoJGJvbml0by1udW1iZXIpIHtcbiAgICBAcmV0dXJuIHJvdW5kKCRib25pdG8tbnVtYmVyICogMik7XG59XG5cbkBmdW5jdGlvbiBxdWFkcnVwbGUoJGJvbml0by1udW1iZXIpIHtcbiAgICBAcmV0dXJuIHJvdW5kKCRib25pdG8tbnVtYmVyICogNCk7XG59XG4iLCIvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcXFxuICAgICNNSVhJTlNcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbi8vIFRoZSBmcmFtZXdvcmsgaGFzIGEgbnVtYmVyIG9mIGRlZmF1bHQgbWl4aW5zIHRoYXQgdGhlIGZyYW1ld29yaywgYW5kIGRldmVsb3BlcnNcbi8vIHdvcmtpbmcgd2l0aCBpdCwgY2FuIG1ha2UgdXNlIG9mLlxuXG5cblxuXG5cbi8vIENyZWF0ZSBhIGZ1bGx5IGZvcm1lZCB0eXBlIHN0eWxlIChzaXppbmcgYW5kIHZlcnRpY2FsIHJoeXRobSkgYnkgcGFzc2luZyBpbiBhXG4vLyBzaW5nbGUgdmFsdWUsIGUuZy46XG4vL1xuLy8gLmZvbyB7XG4vLyAgICAgQGluY2x1ZGUgYm9uaXRvLWZvbnQtc2l6ZSgxMnB4KTtcbi8vIH1cbi8vXG4vLyBUaGlzIHdpbGwgZ2VuZXJhdGUgYSByZW0tYmFzZWQgZm9udC1zaXplIHdpdGggaXRzIHBpeGVsIGZhbGxiYWNrLCBhcyB3ZWxsIGFzXG4vLyBhIHVuaXRsZXNzIGxpbmUtaGVpZ2h0IHdoaWNoIHdpbGwgcGxhY2UgdGhlIGVsZW1lbnQgb24geW91ciBiYXNlbGluZSwgZS5nLjpcbi8vXG4vLyAuZm9vIHtcbi8vICAgICBmb250LXNpemU6IDEycHg7XG4vLyAgICAgZm9udC1zaXplOiAwLjc1cmVtO1xuLy8gICAgIGxpbmUtaGVpZ2h0OiAyO1xuLy8gfVxuLy9cbi8vIElmIHlvdSBkbyBub3Qgd2FudCB0byBnZW5lcmF0ZSBhIGxpbmUtaGVpZ2h0IGF1dG9tYXRpY2FsbHksIHlvdVxuLy8gc2ltcGx5IHBhc3MgaW4geW91ciBvd24gYXMgYSBzZWNvbmQgcGFyYW1ldGVyOlxuLy9cbi8vIC5mb28ge1xuLy8gICAgIEBpbmNsdWRlIGJvbml0by1mb250LXNpemUoMTJweCwgMS41KTtcbi8vIH1cbi8vXG4vLyBUaGlzIHdpbGwgeWllbGQ6XG4vL1xuLy8gLmZvbyB7XG4vLyAgICAgZm9udC1zaXplOiAxMnB4O1xuLy8gICAgIGZvbnQtc2l6ZTogMC43NXJlbTtcbi8vICAgICBsaW5lLWhlaWdodDogMS41O1xuLy8gfVxuLy9cbi8vIFRoaXMgcGFyYW1ldGVyIGNhbiBiZSBhbnkgaW50ZWdlciwg4oCYaW5oZXJpdOKAmSwgb3Ig4oCYbm9ybWFs4oCZLiBJZiB5b3UgZG9u4oCZdCB3YW50XG4vLyBhIGxpbmUtaGVpZ2h0IGF0IGFsbCwgcGFzcyBpbiBhIHNlY29uZCBwYXJhbWV0ZXIgb2Yg4oCYbm9uZeKAmSBvciDigJhmYWxzZeKAmTpcbi8vXG4vLyAuZm9vIHtcbi8vICAgICBAaW5jbHVkZSBib25pdG8tZm9udC1zaXplKDEycHgsIG5vbmUpO1xuLy8gfVxuLy9cbi8vIFRoaXMgd2lsbCB5aWVsZDpcbi8vXG4vLyAuZm9vIHtcbi8vICAgICBmb250LXNpemU6IDEycHg7XG4vLyAgICAgZm9udC1zaXplOiAwLjc1cmVtO1xuLy8gfVxuXG5AbWl4aW4gYm9uaXRvLWZvbnQtc2l6ZSgkYm9uaXRvLWZvbnQtc2l6ZSwgJGJvbml0by1saW5lLWhlaWdodDogYXV0bykge1xuICAgIGZvbnQtc2l6ZTogJGJvbml0by1mb250LXNpemU7XG4gICAgZm9udC1zaXplOiAoJGJvbml0by1mb250LXNpemUgLyAkYm9uaXRvLWJhc2UtZm9udC1zaXplKSAqIDFyZW07XG5cbiAgICBAaWYgJGJvbml0by1saW5lLWhlaWdodCA9PSBhdXRvIHtcbiAgICAgICAgbGluZS1oZWlnaHQ6IGNlaWwoJGJvbml0by1mb250LXNpemUgLyAkYm9uaXRvLWJhc2UtbGluZS1oZWlnaHQpICogKCRib25pdG8tYmFzZS1saW5lLWhlaWdodCAvICRib25pdG8tZm9udC1zaXplKTtcbiAgICB9XG5cbiAgICBAZWxzZSB7XG5cbiAgICAgICAgQGlmICh0eXBlLW9mKCRib25pdG8tbGluZS1oZWlnaHQpID09IG51bWJlciBvciAkYm9uaXRvLWxpbmUtaGVpZ2h0ID09IGluaGVyaXQgb3IgJGJvbml0by1saW5lLWhlaWdodCA9PSBub3JtYWwpIHtcbiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAkYm9uaXRvLWxpbmUtaGVpZ2h0O1xuICAgICAgICB9XG5cbiAgICAgICAgQGVsc2VpZiAoJGJvbml0by1saW5lLWhlaWdodCAhPSBub25lIGFuZCAkYm9uaXRvLWxpbmUtaGVpZ2h0ICE9IGZhbHNlKSB7XG4gICAgICAgICAgICBAd2FybiBcIkTigJlvaCEg4oCYI3skYm9uaXRvLWxpbmUtaGVpZ2h0feKAmSBpcyBub3QgYSB2YWxpZCB2YWx1ZSBmb3IgYGxpbmUtaGVpZ2h0YC5cIlxuICAgICAgICB9XG5cbiAgICB9XG5cbn1cbiIsIi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlxcXG4gICAgI1RPT0xTLVJFU1BPTlNJVkVcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbi8vIEhlcmUgd2Ugc2V0IGEgdmFyaWFibGUgYXNzdW1pbmcgdGhhdCByZXNwb25zaXZlIHNldHRpbmdzIGFyZSBub3Qgc2V0XG4vLyBnbG9iYWxseS4gSWYgdGhleSBoYXZlIGJlZW4gcHJldmlvdXNseSBiZWVuIGRlZmluZWQsIHRoZSBmb2xsb3dpbmcgdmFyaWFibGVcbi8vIHdpbGwgYmUgb3ZlcnJpZGVuIGFuZCB3aWxsIGJlIHNldCB0byBgdHJ1ZWAuXG4kYm9uaXRvLXJlc3BvbnNpdmUtc2V0dGluZ3M6IGZhbHNlICFkZWZhdWx0O1xuXG5AaWYgKCRib25pdG8tcmVzcG9uc2l2ZS1zZXR0aW5ncyA9PSBmYWxzZSkge1xuICAgIEB3YXJuIFwiT29wcyEgSGF2ZSB5b3UgaW5jbHVkZWQgYSByZXNwb25zaXZlIHNldHRpbmdzIGZpbGU/XCJcbn1cblxuXG5cblxuXG4vLyBBIHNpbXBsZSBtaXhpbiB0byBxdWlja2x5IGdlbmVyYXRlIHdob2xlIG1lZGlhIHF1ZXJpZXMgZnJvbSB0aGUgYWxpYXNlcyBhbmRcbi8vIGNvbmRpdGlvbnMgZGVmaW5lZCBpbiBgX3NldHRpbmdzLnJlc3BvbnNpdmUuc2Nzc2AuXG4vL1xuLy8gVXNhZ2U6XG4vL1xuLy8gLmZvbyB7XG4vLyAgICAgY29sb3I6IGdyZWVuO1xuLy9cbi8vICAgICBAaW5jbHVkZSBtZWRpYS1xdWVyeShwYWxtKSB7XG4vLyAgICAgICAgIGNvbG9yOiByZWQ7XG4vLyAgICAgfVxuLy9cbi8vIH1cblxuQG1peGluIG1lZGlhLXF1ZXJ5KCRtcSkge1xuXG4gICAgJGJyZWFrcG9pbnQtZm91bmQ6IGZhbHNlO1xuXG4gICAgLy8gTG9vcCB0aHJvdWdoIHRoZSBsaXN0IG9mIGJyZWFrcG9pbnRzIHdl4oCZdmUgcHJvdmlkZWQgaW4gb3VyIHNldHRpbmdzIGZpbGUuXG4gICAgQGVhY2ggJGJyZWFrcG9pbnQgaW4gJGJyZWFrcG9pbnRzIHtcblxuICAgICAgICAvLyBHcmFiIHRoZSBhbGlhcyBhbmQgdGhlIGNvbmRpdGlvbiBmcm9tIHRoZWlyIHJlc3BlY3RpdmUgbG9jYXRpb25zIGluXG4gICAgICAgIC8vIHRoZSBsaXN0LlxuICAgICAgICAkYWxpYXM6ICAgICBudGgoJGJyZWFrcG9pbnQsIDEpO1xuICAgICAgICAkY29uZGl0aW9uOiBudGgoJGJyZWFrcG9pbnQsIDIpO1xuXG4gICAgICAgIC8vIElmIHRoZSBtZWRpYSBxdWVyeSB3ZeKAmXZlIHNwZWNpZmllZCBoYXMgYW4gYWxpYXMgYW5kIGEgY29uZGl0aW9uLi4uXG4gICAgICAgIEBpZiAkbXEgPT0gJGFsaWFzIGFuZCAkY29uZGl0aW9uIHtcblxuICAgICAgICAgICAgLy8gLi4udGVsbCB0aGUgbWl4aW4gdGhhdCB3ZeKAmXZlIGZvdW5kIGl0Li4uXG4gICAgICAgICAgICAkYnJlYWtwb2ludC1mb3VuZDogdHJ1ZTtcblxuICAgICAgICAgICAgLy8gLi4uYW5kIHNwaXQgaXQgb3V0IGhlcmUuXG4gICAgICAgICAgICBAbWVkaWEgI3skY29uZGl0aW9ufSB7XG4gICAgICAgICAgICAgICAgQGNvbnRlbnQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuXG4gICAgfVxuXG4gICAgLy8gSWYgdGhlIHVzZXIgc3BlY2lmaWVzIGEgbm9uLWV4aXRlbnQgYWxpYXMsIHNlbmQgdGhlbSBhIHdhcm5pbmcuXG4gICAgQGlmICRicmVha3BvaW50LWZvdW5kID09IGZhbHNle1xuICAgICAgICBAd2FybiBcIk9vcHMhIEJyZWFrcG9pbnQg4oCYI3skbXF94oCZIGRvZXMgbm90IGV4aXN0LlwiXG4gICAgfVxuXG59XG4iLCIvKiEgbm9ybWFsaXplLmNzcyB2My4wLjMgfCBNSVQgTGljZW5zZSB8IGJpdGJ1Y2tldC5vcmcvbmVjb2xhcy9ub3JtYWxpemUuY3NzICovXG5cbi8qKlxuICogMS4gU2V0IGRlZmF1bHQgZm9udCBmYW1pbHkgdG8gc2Fucy1zZXJpZi5cbiAqIDIuIFByZXZlbnQgaU9TIGFuZCBJRSB0ZXh0IHNpemUgYWRqdXN0IGFmdGVyIGRldmljZSBvcmllbnRhdGlvbiBjaGFuZ2UsXG4gKiAgICB3aXRob3V0IGRpc2FibGluZyB1c2VyIHpvb20uXG4gKi9cblxuaHRtbCB7XG4gIGZvbnQtZmFtaWx5OiBzYW5zLXNlcmlmOyAvKiAxICovXG4gIC1tcy10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAvKiAyICovXG4gIC13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLyogMiAqL1xufVxuXG4vKipcbiAqIFJlbW92ZSBkZWZhdWx0IG1hcmdpbi5cbiAqL1xuXG5ib2R5IHtcbiAgbWFyZ2luOiAwO1xufVxuXG4vKiBIVE1MNSBkaXNwbGF5IGRlZmluaXRpb25zXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKipcbiAqIENvcnJlY3QgYGJsb2NrYCBkaXNwbGF5IG5vdCBkZWZpbmVkIGZvciBhbnkgSFRNTDUgZWxlbWVudCBpbiBJRSA4LzkuXG4gKiBDb3JyZWN0IGBibG9ja2AgZGlzcGxheSBub3QgZGVmaW5lZCBmb3IgYGRldGFpbHNgIG9yIGBzdW1tYXJ5YCBpbiBJRSAxMC8xMVxuICogYW5kIEZpcmVmb3guXG4gKiBDb3JyZWN0IGBibG9ja2AgZGlzcGxheSBub3QgZGVmaW5lZCBmb3IgYG1haW5gIGluIElFIDExLlxuICovXG5cbmFydGljbGUsXG5hc2lkZSxcbmRldGFpbHMsXG5maWdjYXB0aW9uLFxuZmlndXJlLFxuZm9vdGVyLFxuaGVhZGVyLFxubWFpbixcbm1lbnUsXG5uYXYsXG5zZWN0aW9uLFxuc3VtbWFyeSB7XG4gIGRpc3BsYXk6IGJsb2NrO1xufVxuXG4vKipcbiAqIDEuIENvcnJlY3QgYGlubGluZS1ibG9ja2AgZGlzcGxheSBub3QgZGVmaW5lZCBpbiBJRSA4LzkuXG4gKiAyLiBOb3JtYWxpemUgdmVydGljYWwgYWxpZ25tZW50IG9mIGBwcm9ncmVzc2AgaW4gQ2hyb21lLCBGaXJlZm94LCBhbmQgT3BlcmEuXG4gKi9cblxuYXVkaW8sXG5jYW52YXMsXG5wcm9ncmVzcyxcbnZpZGVvIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrOyAvKiAxICovXG4gIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTsgLyogMiAqL1xufVxuXG4vKipcbiAqIFByZXZlbnQgbW9kZXJuIGJyb3dzZXJzIGZyb20gZGlzcGxheWluZyBgYXVkaW9gIHdpdGhvdXQgY29udHJvbHMuXG4gKiBSZW1vdmUgZXhjZXNzIGhlaWdodCBpbiBpT1MgNSBkZXZpY2VzLlxuICovXG5cbmF1ZGlvOm5vdChbY29udHJvbHNdKSB7XG4gIGRpc3BsYXk6IG5vbmU7XG4gIGhlaWdodDogMDtcbn1cblxuLyoqXG4gKiBBZGRyZXNzIGBbaGlkZGVuXWAgc3R5bGluZyBub3QgcHJlc2VudCBpbiBJRSA4LzkvMTAuXG4gKiBIaWRlIHRoZSBgdGVtcGxhdGVgIGVsZW1lbnQgaW4gSUUgOC85LzEwLzExLCBTYWZhcmksIGFuZCBGaXJlZm94IDwgMjIuXG4gKi9cblxuW2hpZGRlbl0sXG50ZW1wbGF0ZSB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG5cbi8qIExpbmtzXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKipcbiAqIFJlbW92ZSB0aGUgZ3JheSBiYWNrZ3JvdW5kIGNvbG9yIGZyb20gYWN0aXZlIGxpbmtzIGluIElFIDEwLlxuICovXG5cbmEge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbn1cblxuLyoqXG4gKiBJbXByb3ZlIHJlYWRhYmlsaXR5IG9mIGZvY3VzZWQgZWxlbWVudHMgd2hlbiB0aGV5IGFyZSBhbHNvIGluIGFuXG4gKiBhY3RpdmUvaG92ZXIgc3RhdGUuXG4gKi9cblxuYTphY3RpdmUsXG5hOmhvdmVyIHtcbiAgb3V0bGluZTogMDtcbn1cblxuLyogVGV4dC1sZXZlbCBzZW1hbnRpY3NcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qKlxuICogQWRkcmVzcyBzdHlsaW5nIG5vdCBwcmVzZW50IGluIElFIDgvOS8xMC8xMSwgU2FmYXJpLCBhbmQgQ2hyb21lLlxuICovXG5cbmFiYnJbdGl0bGVdIHtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IGRvdHRlZDtcbn1cblxuLyoqXG4gKiBBZGRyZXNzIHN0eWxlIHNldCB0byBgYm9sZGVyYCBpbiBGaXJlZm94IDQrLCBTYWZhcmksIGFuZCBDaHJvbWUuXG4gKi9cblxuYixcbnN0cm9uZyB7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xufVxuXG4vKipcbiAqIEFkZHJlc3Mgc3R5bGluZyBub3QgcHJlc2VudCBpbiBTYWZhcmkgYW5kIENocm9tZS5cbiAqL1xuXG5kZm4ge1xuICBmb250LXN0eWxlOiBpdGFsaWM7XG59XG5cbi8qKlxuICogQWRkcmVzcyB2YXJpYWJsZSBgaDFgIGZvbnQtc2l6ZSBhbmQgbWFyZ2luIHdpdGhpbiBgc2VjdGlvbmAgYW5kIGBhcnRpY2xlYFxuICogY29udGV4dHMgaW4gRmlyZWZveCA0KywgU2FmYXJpLCBhbmQgQ2hyb21lLlxuICovXG5cbmgxIHtcbiAgZm9udC1zaXplOiAyZW07XG4gIG1hcmdpbjogMC42N2VtIDA7XG59XG5cbi8qKlxuICogQWRkcmVzcyBzdHlsaW5nIG5vdCBwcmVzZW50IGluIElFIDgvOS5cbiAqL1xuXG5tYXJrIHtcbiAgYmFja2dyb3VuZDogI2ZmMDtcbiAgY29sb3I6ICMwMDA7XG59XG5cbi8qKlxuICogQWRkcmVzcyBpbmNvbnNpc3RlbnQgYW5kIHZhcmlhYmxlIGZvbnQgc2l6ZSBpbiBhbGwgYnJvd3NlcnMuXG4gKi9cblxuc21hbGwge1xuICBmb250LXNpemU6IDgwJTtcbn1cblxuLyoqXG4gKiBQcmV2ZW50IGBzdWJgIGFuZCBgc3VwYCBhZmZlY3RpbmcgYGxpbmUtaGVpZ2h0YCBpbiBhbGwgYnJvd3NlcnMuXG4gKi9cblxuc3ViLFxuc3VwIHtcbiAgZm9udC1zaXplOiA3NSU7XG4gIGxpbmUtaGVpZ2h0OiAwO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTtcbn1cblxuc3VwIHtcbiAgdG9wOiAtMC41ZW07XG59XG5cbnN1YiB7XG4gIGJvdHRvbTogLTAuMjVlbTtcbn1cblxuLyogRW1iZWRkZWQgY29udGVudFxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyoqXG4gKiBSZW1vdmUgYm9yZGVyIHdoZW4gaW5zaWRlIGBhYCBlbGVtZW50IGluIElFIDgvOS8xMC5cbiAqL1xuXG5pbWcge1xuICBib3JkZXI6IDA7XG59XG5cbi8qKlxuICogQ29ycmVjdCBvdmVyZmxvdyBub3QgaGlkZGVuIGluIElFIDkvMTAvMTEuXG4gKi9cblxuc3ZnOm5vdCg6cm9vdCkge1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4vKiBHcm91cGluZyBjb250ZW50XG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKipcbiAqIEFkZHJlc3MgbWFyZ2luIG5vdCBwcmVzZW50IGluIElFIDgvOSBhbmQgU2FmYXJpLlxuICovXG5cbmZpZ3VyZSB7XG4gIG1hcmdpbjogMWVtIDQwcHg7XG59XG5cbi8qKlxuICogQWRkcmVzcyBkaWZmZXJlbmNlcyBiZXR3ZWVuIEZpcmVmb3ggYW5kIG90aGVyIGJyb3dzZXJzLlxuICovXG5cbmhyIHtcbiAgYm94LXNpemluZzogY29udGVudC1ib3g7XG4gIGhlaWdodDogMDtcbn1cblxuLyoqXG4gKiBDb250YWluIG92ZXJmbG93IGluIGFsbCBicm93c2Vycy5cbiAqL1xuXG5wcmUge1xuICBvdmVyZmxvdzogYXV0bztcbn1cblxuLyoqXG4gKiBBZGRyZXNzIG9kZCBgZW1gLXVuaXQgZm9udCBzaXplIHJlbmRlcmluZyBpbiBhbGwgYnJvd3NlcnMuXG4gKi9cblxuY29kZSxcbmtiZCxcbnByZSxcbnNhbXAge1xuICBmb250LWZhbWlseTogbW9ub3NwYWNlLCBtb25vc3BhY2U7XG4gIGZvbnQtc2l6ZTogMWVtO1xufVxuXG4vKiBGb3Jtc1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyoqXG4gKiBLbm93biBsaW1pdGF0aW9uOiBieSBkZWZhdWx0LCBDaHJvbWUgYW5kIFNhZmFyaSBvbiBPUyBYIGFsbG93IHZlcnkgbGltaXRlZFxuICogc3R5bGluZyBvZiBgc2VsZWN0YCwgdW5sZXNzIGEgYGJvcmRlcmAgcHJvcGVydHkgaXMgc2V0LlxuICovXG5cbi8qKlxuICogMS4gQ29ycmVjdCBjb2xvciBub3QgYmVpbmcgaW5oZXJpdGVkLlxuICogICAgS25vd24gaXNzdWU6IGFmZmVjdHMgY29sb3Igb2YgZGlzYWJsZWQgZWxlbWVudHMuXG4gKiAyLiBDb3JyZWN0IGZvbnQgcHJvcGVydGllcyBub3QgYmVpbmcgaW5oZXJpdGVkLlxuICogMy4gQWRkcmVzcyBtYXJnaW5zIHNldCBkaWZmZXJlbnRseSBpbiBGaXJlZm94IDQrLCBTYWZhcmksIGFuZCBDaHJvbWUuXG4gKi9cblxuYnV0dG9uLFxuaW5wdXQsXG5vcHRncm91cCxcbnNlbGVjdCxcbnRleHRhcmVhIHtcbiAgY29sb3I6IGluaGVyaXQ7IC8qIDEgKi9cbiAgZm9udDogaW5oZXJpdDsgLyogMiAqL1xuICBtYXJnaW46IDA7IC8qIDMgKi9cbn1cblxuLyoqXG4gKiBBZGRyZXNzIGBvdmVyZmxvd2Agc2V0IHRvIGBoaWRkZW5gIGluIElFIDgvOS8xMC8xMS5cbiAqL1xuXG5idXR0b24ge1xuICBvdmVyZmxvdzogdmlzaWJsZTtcbn1cblxuLyoqXG4gKiBBZGRyZXNzIGluY29uc2lzdGVudCBgdGV4dC10cmFuc2Zvcm1gIGluaGVyaXRhbmNlIGZvciBgYnV0dG9uYCBhbmQgYHNlbGVjdGAuXG4gKiBBbGwgb3RoZXIgZm9ybSBjb250cm9sIGVsZW1lbnRzIGRvIG5vdCBpbmhlcml0IGB0ZXh0LXRyYW5zZm9ybWAgdmFsdWVzLlxuICogQ29ycmVjdCBgYnV0dG9uYCBzdHlsZSBpbmhlcml0YW5jZSBpbiBGaXJlZm94LCBJRSA4LzkvMTAvMTEsIGFuZCBPcGVyYS5cbiAqIENvcnJlY3QgYHNlbGVjdGAgc3R5bGUgaW5oZXJpdGFuY2UgaW4gRmlyZWZveC5cbiAqL1xuXG5idXR0b24sXG5zZWxlY3Qge1xuICB0ZXh0LXRyYW5zZm9ybTogbm9uZTtcbn1cblxuLyoqXG4gKiAxLiBBdm9pZCB0aGUgV2ViS2l0IGJ1ZyBpbiBBbmRyb2lkIDQuMC4qIHdoZXJlICgyKSBkZXN0cm95cyBuYXRpdmUgYGF1ZGlvYFxuICogICAgYW5kIGB2aWRlb2AgY29udHJvbHMuXG4gKiAyLiBDb3JyZWN0IGluYWJpbGl0eSB0byBzdHlsZSBjbGlja2FibGUgYGlucHV0YCB0eXBlcyBpbiBpT1MuXG4gKiAzLiBJbXByb3ZlIHVzYWJpbGl0eSBhbmQgY29uc2lzdGVuY3kgb2YgY3Vyc29yIHN0eWxlIGJldHdlZW4gaW1hZ2UtdHlwZVxuICogICAgYGlucHV0YCBhbmQgb3RoZXJzLlxuICovXG5cbmJ1dHRvbixcbmh0bWwgaW5wdXRbdHlwZT1cImJ1dHRvblwiXSwgLyogMSAqL1xuaW5wdXRbdHlwZT1cInJlc2V0XCJdLFxuaW5wdXRbdHlwZT1cInN1Ym1pdFwiXSB7XG4gIC13ZWJraXQtYXBwZWFyYW5jZTogYnV0dG9uOyAvKiAyICovXG4gIGN1cnNvcjogcG9pbnRlcjsgLyogMyAqL1xufVxuXG4vKipcbiAqIFJlLXNldCBkZWZhdWx0IGN1cnNvciBmb3IgZGlzYWJsZWQgZWxlbWVudHMuXG4gKi9cblxuYnV0dG9uW2Rpc2FibGVkXSxcbmh0bWwgaW5wdXRbZGlzYWJsZWRdIHtcbiAgY3Vyc29yOiBkZWZhdWx0O1xufVxuXG4vKipcbiAqIFJlbW92ZSBpbm5lciBwYWRkaW5nIGFuZCBib3JkZXIgaW4gRmlyZWZveCA0Ky5cbiAqL1xuXG5idXR0b246Oi1tb3otZm9jdXMtaW5uZXIsXG5pbnB1dDo6LW1vei1mb2N1cy1pbm5lciB7XG4gIGJvcmRlcjogMDtcbiAgcGFkZGluZzogMDtcbn1cblxuLyoqXG4gKiBBZGRyZXNzIEZpcmVmb3ggNCsgc2V0dGluZyBgbGluZS1oZWlnaHRgIG9uIGBpbnB1dGAgdXNpbmcgYCFpbXBvcnRhbnRgIGluXG4gKiB0aGUgVUEgc3R5bGVzaGVldC5cbiAqL1xuXG5pbnB1dCB7XG4gIGxpbmUtaGVpZ2h0OiBub3JtYWw7XG59XG5cbi8qKlxuICogSXQncyByZWNvbW1lbmRlZCB0aGF0IHlvdSBkb24ndCBhdHRlbXB0IHRvIHN0eWxlIHRoZXNlIGVsZW1lbnRzLlxuICogRmlyZWZveCdzIGltcGxlbWVudGF0aW9uIGRvZXNuJ3QgcmVzcGVjdCBib3gtc2l6aW5nLCBwYWRkaW5nLCBvciB3aWR0aC5cbiAqXG4gKiAxLiBBZGRyZXNzIGJveCBzaXppbmcgc2V0IHRvIGBjb250ZW50LWJveGAgaW4gSUUgOC85LzEwLlxuICogMi4gUmVtb3ZlIGV4Y2VzcyBwYWRkaW5nIGluIElFIDgvOS8xMC5cbiAqL1xuXG5pbnB1dFt0eXBlPVwiY2hlY2tib3hcIl0sXG5pbnB1dFt0eXBlPVwicmFkaW9cIl0ge1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94OyAvKiAxICovXG4gIHBhZGRpbmc6IDA7IC8qIDIgKi9cbn1cblxuLyoqXG4gKiBGaXggdGhlIGN1cnNvciBzdHlsZSBmb3IgQ2hyb21lJ3MgaW5jcmVtZW50L2RlY3JlbWVudCBidXR0b25zLiBGb3IgY2VydGFpblxuICogYGZvbnQtc2l6ZWAgdmFsdWVzIG9mIHRoZSBgaW5wdXRgLCBpdCBjYXVzZXMgdGhlIGN1cnNvciBzdHlsZSBvZiB0aGVcbiAqIGRlY3JlbWVudCBidXR0b24gdG8gY2hhbmdlIGZyb20gYGRlZmF1bHRgIHRvIGB0ZXh0YC5cbiAqL1xuXG5pbnB1dFt0eXBlPVwibnVtYmVyXCJdOjotd2Via2l0LWlubmVyLXNwaW4tYnV0dG9uLFxuaW5wdXRbdHlwZT1cIm51bWJlclwiXTo6LXdlYmtpdC1vdXRlci1zcGluLWJ1dHRvbiB7XG4gIGhlaWdodDogYXV0bztcbn1cblxuLyoqXG4gKiAxLiBBZGRyZXNzIGBhcHBlYXJhbmNlYCBzZXQgdG8gYHNlYXJjaGZpZWxkYCBpbiBTYWZhcmkgYW5kIENocm9tZS5cbiAqIDIuIEFkZHJlc3MgYGJveC1zaXppbmdgIHNldCB0byBgYm9yZGVyLWJveGAgaW4gU2FmYXJpIGFuZCBDaHJvbWUuXG4gKi9cblxuaW5wdXRbdHlwZT1cInNlYXJjaFwiXSB7XG4gIC13ZWJraXQtYXBwZWFyYW5jZTogdGV4dGZpZWxkOyAvKiAxICovXG4gIGJveC1zaXppbmc6IGNvbnRlbnQtYm94OyAvKiAyICovXG59XG5cbi8qKlxuICogUmVtb3ZlIGlubmVyIHBhZGRpbmcgYW5kIHNlYXJjaCBjYW5jZWwgYnV0dG9uIGluIFNhZmFyaSBhbmQgQ2hyb21lIG9uIE9TIFguXG4gKiBTYWZhcmkgKGJ1dCBub3QgQ2hyb21lKSBjbGlwcyB0aGUgY2FuY2VsIGJ1dHRvbiB3aGVuIHRoZSBzZWFyY2ggaW5wdXQgaGFzXG4gKiBwYWRkaW5nIChhbmQgYHRleHRmaWVsZGAgYXBwZWFyYW5jZSkuXG4gKi9cblxuaW5wdXRbdHlwZT1cInNlYXJjaFwiXTo6LXdlYmtpdC1zZWFyY2gtY2FuY2VsLWJ1dHRvbixcbmlucHV0W3R5cGU9XCJzZWFyY2hcIl06Oi13ZWJraXQtc2VhcmNoLWRlY29yYXRpb24ge1xuICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG59XG5cbi8qKlxuICogRGVmaW5lIGNvbnNpc3RlbnQgYm9yZGVyLCBtYXJnaW4sIGFuZCBwYWRkaW5nLlxuICovXG5cbmZpZWxkc2V0IHtcbiAgYm9yZGVyOiAxcHggc29saWQgI2MwYzBjMDtcbiAgbWFyZ2luOiAwIDJweDtcbiAgcGFkZGluZzogMC4zNWVtIDAuNjI1ZW0gMC43NWVtO1xufVxuXG4vKipcbiAqIDEuIENvcnJlY3QgYGNvbG9yYCBub3QgYmVpbmcgaW5oZXJpdGVkIGluIElFIDgvOS8xMC8xMS5cbiAqIDIuIFJlbW92ZSBwYWRkaW5nIHNvIHBlb3BsZSBhcmVuJ3QgY2F1Z2h0IG91dCBpZiB0aGV5IHplcm8gb3V0IGZpZWxkc2V0cy5cbiAqL1xuXG5sZWdlbmQge1xuICBib3JkZXI6IDA7IC8qIDEgKi9cbiAgcGFkZGluZzogMDsgLyogMiAqL1xufVxuXG4vKipcbiAqIFJlbW92ZSBkZWZhdWx0IHZlcnRpY2FsIHNjcm9sbGJhciBpbiBJRSA4LzkvMTAvMTEuXG4gKi9cblxudGV4dGFyZWEge1xuICBvdmVyZmxvdzogYXV0bztcbn1cblxuLyoqXG4gKiBEb24ndCBpbmhlcml0IHRoZSBgZm9udC13ZWlnaHRgIChhcHBsaWVkIGJ5IGEgcnVsZSBhYm92ZSkuXG4gKiBOT1RFOiB0aGUgZGVmYXVsdCBjYW5ub3Qgc2FmZWx5IGJlIGNoYW5nZWQgaW4gQ2hyb21lIGFuZCBTYWZhcmkgb24gT1MgWC5cbiAqL1xuXG5vcHRncm91cCB7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xufVxuXG4vKiBUYWJsZXNcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qKlxuICogUmVtb3ZlIG1vc3Qgc3BhY2luZyBiZXR3ZWVuIHRhYmxlIGNlbGxzLlxuICovXG5cbnRhYmxlIHtcbiAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTtcbiAgYm9yZGVyLXNwYWNpbmc6IDA7XG59XG5cbnRkLFxudGgge1xuICBwYWRkaW5nOiAwO1xufSIsIi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlxcXG4gICAgI1JFU0VUXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4vKipcbiAqIEFzIHdlbGwgYXMgdXNpbmcgbm9ybWFsaXplLmNzcywgaXQgaXMgb2Z0ZW4gYWR2YW50YWdlb3VzIHRvIHJlbW92ZSBhbGxcbiAqIG1hcmdpbnMgZnJvbSBjZXJ0YWluIGVsZW1lbnRzLlxuICovXG5ib2R5LFxuaDEsIGgyLCBoMywgaDQsIGg1LCBoNixcbnAsIGJsb2NrcXVvdGUsIHByZSxcbmRsLCBkZCwgb2wsIHVsLFxuZm9ybSwgZmllbGRzZXQsIGxlZ2VuZCxcbmZpZ3VyZSxcbnRhYmxlLCB0aCwgdGQsIGNhcHRpb24sXG5ociB7XG4gICAgbWFyZ2luOiAgMDtcbiAgICBwYWRkaW5nOiAwO1xufVxuXG5cblxuXG5cbi8qKlxuICogR2l2ZSBhIGhlbHAgY3Vyc29yIHRvIGVsZW1lbnRzIHRoYXQgZ2l2ZSBleHRyYSBpbmZvIG9uIGA6aG92ZXJgLlxuICovXG5hYmJyW3RpdGxlXSxcbmRmblt0aXRsZV0ge1xuICAgIGN1cnNvcjogaGVscDtcbn1cblxuXG5cblxuXG4vKipcbiAqIFJlbW92ZSB1bmRlcmxpbmVzIGZyb20gcG90ZW50aWFsbHkgdHJvdWJsZXNvbWUgZWxlbWVudHMuXG4gKi9cbnUsXG5pbnMge1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbn1cblxuXG5cblxuXG4vKipcbiAqIEFwcGx5IGZhdXggdW5kZXJsaW5lcyB0byBpbnNlcnRlZCB0ZXh0IHZpYSBgYm9yZGVyLWJvdHRvbWAuXG4gKi9cbmlucyB7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkO1xufVxuIiwiLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qXFxcbiAgICAjQk9YLVNJWklOR1xuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuLyoqXG4gKiBTZXQgdGhlIGdsb2JhbCBgYm94LXNpemluZ2Agc3RhdGUgdG8gYGJvcmRlci1ib3hgLlxuICpcbiAqIGNzcy10cmlja3MuY29tL2luaGVyaXRpbmctYm94LXNpemluZy1wcm9iYWJseS1zbGlnaHRseS1iZXR0ZXItYmVzdC1wcmFjdGljZVxuICogcGF1bGlyaXNoLmNvbS8yMDEyL2JveC1zaXppbmctYm9yZGVyLWJveC1mdHdcbiAqL1xuaHRtbCB7XG4gICAgLXdlYmtpdC1ib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgICAgIC1tb3otYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICAgICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG59XG5cbioge1xuXG4gICAgJixcbiAgICAmOmJlZm9yZSxcbiAgICAmOmFmdGVyIHtcbiAgICAgICAgLXdlYmtpdC1ib3gtc2l6aW5nOiBpbmhlcml0O1xuICAgICAgICAgICAtbW96LWJveC1zaXppbmc6IGluaGVyaXQ7XG4gICAgICAgICAgICAgICAgYm94LXNpemluZzogaW5oZXJpdDtcbiAgICAgICAgfVxuXG59XG5cblxuXG5cblxuLy8gSWYgd2UgaGF2ZSBpbmNsdWRlZCB0aGlzIGZpbGUsIHNldCBhIHZhcmlhYmxlIHRvIHRlbGwgdGhlIHJlc3Qgb2YgdGhlXG4vLyBmcmFtZXdvcmsgdGhhdCBnbG9iYWwgYGJveC1zaXppbmc6IGJvcmRlci1ib3hgIGhhcyBiZWVuIHNldC5cbiRib25pdG8tZ2xvYmFsLWJvcmRlci1ib3g6IHRydWU7XG4iLCIvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcXFxuICAgICNTSEFSRURcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbi8qKlxuICogV2hlcmUgYG1hcmdpbi1ib3R0b21gIGlzIGNvbmNlcm5lZCx0aGlzIHZhbHVlIHdpbGwgYmUgdGhlIHNhbWUgYXMgdGhlXG4gKiBiYXNlIGxpbmUtaGVpZ2h0LiBUaGlzIGFsbG93cyB1cyB0byBrZWVwIGEgY29uc2lzdGVudCB2ZXJ0aWNhbCByaHl0aG0uXG4gKiBBcyBwZXI6IGNzc3dpemFyZHJ5LmNvbS8yMDEyLzA2L3NpbmdsZS1kaXJlY3Rpb24tbWFyZ2luLWRlY2xhcmF0aW9uc1xuICovXG5oMSwgaDIsIGgzLCBoNCwgaDUsIGg2LFxudWwsIG9sLCBkbCxcbmJsb2NrcXVvdGUsIHAsIGFkZHJlc3MsXG5ocixcbnRhYmxlLFxuZmllbGRzZXQsIGZpZ3VyZSxcbnByZSxcbiVtYXJnaW4tYm90dG9tIHtcbiAgICBtYXJnaW4tYm90dG9tOiAkYm9uaXRvLWJhc2Utc3BhY2luZy11bml0O1xuICAgIG1hcmdpbi1ib3R0b206ICgkYm9uaXRvLWJhc2Utc3BhY2luZy11bml0IC8gJGJvbml0by1iYXNlLWZvbnQtc2l6ZSkgKiAxcmVtO1xufVxuXG5cblxuXG5cbi8qKlxuICogV2hlcmUgYG1hcmdpbi1sZWZ0YCBpcyBjb25jZXJuZWQgd2Ugd2FudCB0byB0cnkgYW5kIGluZGVudCBjZXJ0YWluIGVsZW1lbnRzXG4gKiBieSBhIGNvbnNpc3RlbnQgYW1vdW50LiBEZWZpbmUgdGhhdCBhbW91bnQgb25jZSxoZXJlLlxuICovXG51bCwgb2wsIGRkLFxuJW1hcmdpbi1sZWZ0IHtcbiAgICBtYXJnaW4tbGVmdDogMiAqICRib25pdG8tYmFzZS1zcGFjaW5nLXVuaXQ7XG4gICAgbWFyZ2luLWxlZnQ6ICgyICogJGJvbml0by1iYXNlLXNwYWNpbmctdW5pdCAvICRib25pdG8tYmFzZS1mb250LXNpemUpICogMXJlbTtcbn1cbiIsIi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlxcXG4gICAgI1BBR0VcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbi8qKlxuICogSGlnaC0sIHBhZ2UtbGV2ZWwgc3R5bGluZy5cbiAqXG4gKiAxLiBTZXQgdGhlIGRlZmF1bHQgYGZvbnQtc2l6ZWAgYW5kIGBsaW5lLWhlaWdodGAgZm9yIHRoZSBlbnRpcmUgcHJvamVjdCxcbiAqICAgIHNvdXJjZWQgZnJvbSBvdXIgZGVmYXVsdCB2YXJpYWJsZXMuIFRoZSBgZm9udC1zaXplYCBpcyBjYWxjdWxhdGVkIHRvIGV4aXN0XG4gKiAgICBpbiBlbXMsIHRoZSBgbGluZS1oZWlnaHRgIGlzIGNhbGN1bGF0ZWQgdG8gZXhpc3QgdW5pdGxlc3NseS5cbiAqIDIuIEZvcmNlIHNjcm9sbGJhcnMgdG8gYWx3YXlzIGJlIHZpc2libGUgdG8gcHJldmVudCBhd2t3YXJkIOKAmGp1bXBz4oCZIHdoZW5cbiAqICAgIG5hdmlnYXRpbmcgYmV0d2VlbiBwYWdlcyB0aGF0IGRvL2RvIG5vdCBoYXZlIGVub3VnaCBjb250ZW50IHRvIHByb2R1Y2VcbiAqICAgIHNjcm9sbGJhcnMgbmF0dXJhbGx5LlxuICogMy4gRW5zdXJlIHRoZSBwYWdlIGFsd2F5cyBmaWxscyBhdCBsZWFzdCB0aGUgZW50aXJlIGhlaWdodCBvZiB0aGUgdmlld3BvcnQuXG4gKiA0LiBQcmV2ZW50IGNlcnRhaW4gbW9iaWxlIGJyb3dzZXJzIGZyb20gYXV0b21hdGljYWxseSB6b29taW5nIGZvbnRzLlxuICogNS4gRm9udHMgb24gT1NYIHdpbGwgbG9vayBtb3JlIGNvbnNpc3RlbnQgd2l0aCBvdGhlciBzeXN0ZW1zIHRoYXQgZG8gbm90XG4gKiAgICByZW5kZXIgdGV4dCB1c2luZyBzdWItcGl4ZWwgYW50aS1hbGlhc2luZy5cbiAqL1xuaHRtbCB7XG4gICAgZm9udC1zaXplOiAoJGJvbml0by1iYXNlLWZvbnQtc2l6ZSAvIDE2cHgpICogMWVtOyAvKiBbMV0gKi9cbiAgICBsaW5lLWhlaWdodDogJGJvbml0by1iYXNlLWxpbmUtaGVpZ2h0IC8gJGJvbml0by1iYXNlLWZvbnQtc2l6ZTsgLyogWzFdICovXG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGJvbml0by1iYXNlLWJhY2tncm91bmQtY29sb3I7XG4gICAgY29sb3I6ICRib25pdG8tYmFzZS10ZXh0LWNvbG9yO1xuICAgIG92ZXJmbG93LXk6IHNjcm9sbDsgLyogWzJdICovXG4gICAgbWluLWhlaWdodDogMTAwJTsgLyogWzNdICovXG4gICAgLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAvKiBbNF0gKi9cbiAgICAgICAgLW1zLXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7IC8qIFs0XSAqL1xuICAgIC1tb3otb3N4LWZvbnQtc21vb3RoaW5nOiBncmF5c2NhbGU7IC8qIFs1XSAqL1xuICAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDsgLyogWzVdICovXG59XG4iLCIvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcXFxuICAgICNIRUFESU5HU1xuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuLyoqXG4gKiBIZWFkaW5ncyAx4oCTNi5cbiAqL1xuXG4vLyBQcmVkZWZpbmUgdGhlIHZhcmlhYmxlcyBiZWxvdyBpbiBvcmRlciB0byBhbHRlciBhbmQgZW5hYmxlIHNwZWNpZmljIGZlYXR1cmVzLlxuJGJvbml0by1oZWFkaW5nLXNpemUtMTogIDM2cHggIWRlZmF1bHQ7XG4kYm9uaXRvLWhlYWRpbmctc2l6ZS0yOiAgMzBweCAhZGVmYXVsdDtcbiRib25pdG8taGVhZGluZy1zaXplLTM6ICAyNHB4ICFkZWZhdWx0O1xuJGJvbml0by1oZWFkaW5nLXNpemUtNDogIDIwcHggIWRlZmF1bHQ7XG4kYm9uaXRvLWhlYWRpbmctc2l6ZS01OiAgMTZweCAhZGVmYXVsdDtcbiRib25pdG8taGVhZGluZy1zaXplLTY6ICAxNHB4ICFkZWZhdWx0O1xuXG5oMSB7XG4gICAgQGluY2x1ZGUgYm9uaXRvLWZvbnQtc2l6ZSgkYm9uaXRvLWhlYWRpbmctc2l6ZS0xKTtcbn1cblxuaDIge1xuICAgIEBpbmNsdWRlIGJvbml0by1mb250LXNpemUoJGJvbml0by1oZWFkaW5nLXNpemUtMik7XG59XG5cbmgzIHtcbiAgICBAaW5jbHVkZSBib25pdG8tZm9udC1zaXplKCRib25pdG8taGVhZGluZy1zaXplLTMpO1xufVxuXG5oNCB7XG4gICAgQGluY2x1ZGUgYm9uaXRvLWZvbnQtc2l6ZSgkYm9uaXRvLWhlYWRpbmctc2l6ZS00KTtcbn1cblxuaDUge1xuICAgIEBpbmNsdWRlIGJvbml0by1mb250LXNpemUoJGJvbml0by1oZWFkaW5nLXNpemUtNSk7XG59XG5cbmg2IHtcbiAgICBAaW5jbHVkZSBib25pdG8tZm9udC1zaXplKCRib25pdG8taGVhZGluZy1zaXplLTYpO1xufVxuIiwiLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qXFxcbiAgICAjTElTVFNcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbi8qKlxuICogUmVtb3ZlIGV4dHJhIHZlcnRpY2FsIHNwYWNpbmcgd2hlbiBuZXN0aW5nIGxpc3RzLlxuICovXG5saSB7XG5cbiAgICA+IHVsLFxuICAgID4gb2wge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgIH1cblxufVxuIiwiLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qXFxcbiAgICAjSU1BR0VTXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4vKipcbiAqIDEuIEZsdWlkIGltYWdlcyBmb3IgcmVzcG9uc2l2ZSBwdXJwb3Nlcy5cbiAqIDIuIE9mZnNldCBgYWx0YCB0ZXh0IGZyb20gc3Vycm91bmRpbmcgY29weS5cbiAqIDMuIFNldHRpbmcgYHZlcnRpY2FsLWFsaWduYCByZW1vdmVzIHRoZSB3aGl0ZXNwYWNlIHRoYXQgYXBwZWFycyB1bmRlciBgaW1nYFxuICogICAgZWxlbWVudHMgd2hlbiB0aGV5IGFyZSBkcm9wcGVkIGludG8gYSBwYWdlIGFzLWlzLiBTYWZlciBhbHRlcm5hdGl2ZSB0b1xuICogICAgdXNpbmcgYGRpc3BsYXk6IGJsb2NrO2AuXG4gKi9cbmltZyB7XG4gICAgbWF4LXdpZHRoOiAxMDAlOyAvKiBbMV0gKi9cbiAgICBmb250LXN0eWxlOiBpdGFsaWM7IC8qIFsyXSAqL1xuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7IC8qIFszXSAqL1xufVxuXG5cblxuLyoqXG4gKiAxLiBHb29nbGUgTWFwcyBicmVha3MgaWYgYG1heC13aWR0aDogMTAwJWAgYWN0cyB1cG9uIGl0OyB1c2UgdGhlaXIgc2VsZWN0b3JcbiAqICAgIHRvIHJlbW92ZSB0aGUgZWZmZWN0cy5cbiAqIDIuIElmIGEgYHdpZHRoYCBhbmQvb3IgYGhlaWdodGAgYXR0cmlidXRlIGhhdmUgYmVlbiBleHBsaWNpdGx5IGRlZmluZWQsIGxldOKAmXNcbiAqICAgIG5vdCBtYWtlIHRoZSBpbWFnZSBmbHVpZC5cbiAqL1xuLmdtLXN0eWxlIGltZywgLyogWzFdICovXG5pbWdbd2lkdGhdLCAvKiBbMl0gKi9cbmltZ1toZWlnaHRdIHsgIC8qIFsyXSAqL1xuICAgIG1heC13aWR0aDogbm9uZTtcbn1cbiIsIi8qKlxuICogUGFnZSBCYXNlIFN0eWxpbmdcbiAqL1xuXG5odG1sIHtcbiAgICBoZWlnaHQ6IDEwMCU7XG5cbiAgICBjb2xvcjogJGNvbG9yLXdoaXRlO1xuICAgIGZvbnQtZmFtaWx5OiAkZm9udC1wcmltYXJ5O1xuXG4gICAgYmFja2dyb3VuZDogJGNvbG9yLXByaW1hcnk7XG59XG5cbmJvZHkge1xuICAgIGJhY2tncm91bmQ6ICRjb2xvci1ncmV5O1xuICAgIG1pbi1oZWlnaHQ6IDEwMCU7XG59XG5cbmEge1xuXHRjb2xvcjogJGNvbG9yLXdoaXRlO1xufSIsIi8qKlxuICogVHlwb2dyYXBoaWMgYmFzZSBzdHlsZXNcbiAqXG4gKiBGb2xsb3dzIFNpbHZlclN0cmlwZXMnIGNvbnZlbnRpb24gb2Ygd3JhcHBpbmcga2V5IHR5cG9ncmFwaGljIGVsZW1lbnRzIGluIGAudHlwb2dyYXBoeWBcbiAqXG4gKiBFeGFtcGxlOlxuICogIDxkaXYgY2xhc3M9XCJ0eXBvZ3JhcGh5XCI+XG4gKiAgICAgIDxwPiAuLi4gPC9wPlxuICogIDwvZGl2PlxuICovXG5cbi50eXBvZ3JhcGh5IHtcbiAgICBoMSwgaDIsIGgzLCBoNCwgaDUsIGg2IHtcbiAgICAgICAgY29sb3I6ICRjb2xvci1zZWNvbmRhcnk7XG4gICAgfVxuXG4gICAgYmxvY2txdW90ZSB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgcGFkZGluZzogJGJvbml0by1iYXNlLXNwYWNpbmctdW5pdDtcbiAgICAgICAgbWFyZ2luLWxlZnQ6ICRib25pdG8tYmFzZS1zcGFjaW5nLXVuaXQqNjtcbiAgICAgICAgbWFyZ2luLXRvcDogJGJvbml0by1iYXNlLXNwYWNpbmctdW5pdC0tbGFyZ2U7XG4gICAgICAgIG1hcmdpbi1ib3R0b206ICRib25pdG8tYmFzZS1zcGFjaW5nLXVuaXQtLWxhcmdlO1xuXG4gICAgICAgIEBpbmNsdWRlIGJvbml0by1mb250LXNpemUoMThweCwgMjJweCk7XG5cbiAgICAgICAgYm9yZGVyOiAxMHB4IHNvbGlkICRjb2xvci1zZWNvbmRhcnk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6ICRib25pdG8tYmFzZS1zcGFjaW5nLXVuaXQtLXRpbnk7XG5cbiAgICAgICAgJjpiZWZvcmUge1xuICAgICAgICAgICAgY29udGVudDogJyc7XG4gICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICB0b3A6IC0xMHB4O1xuICAgICAgICAgICAgbGVmdDogLTgwcHg7XG5cbiAgICAgICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgvaW1hZ2VzL3F1b3RlLW1hcmsuc3ZnKTtcbiAgICAgICAgICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG5cbiAgICAgICAgICAgIHdpZHRoOiA1NHB4O1xuICAgICAgICAgICAgaGVpZ2h0OiA0MnB4O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdWwge1xuXG4gICAgfVxuXG4gICAgYSB7XG4gICAgICAgIEBleHRlbmQgJWJ0bjtcbiAgICAgICAgQGV4dGVuZCAlYnRuLS1wcmltYXJ5O1xuICAgIH1cbn0iLCIvKipcbiAqIEhlYWRpbmdzIGJhc2Ugc3R5bGluZ1xuICpcbiAqL1xuXG5oMSxcbmgyLFxuaDMsXG5oNCxcbmg1LFxuaDYge1xuICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG59IiwiLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qXFxcbiAgICAjQkxPQ0tcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbi8qKlxuICogVGhlIGJsb2NrIG9iamVjdCBzaW1wbHkgc3RhY2tzIGFuIGltYWdlIG9uIHRvcCBvZiBzb21lIHRleHQtbGlrZSBjb250ZW50LlxuICovXG5cbi8vIFByZWRlZmluZSB0aGUgdmFyaWFibGVzIGJlbG93IGluIG9yZGVyIHRvIGFsdGVyIGFuZCBlbmFibGUgc3BlY2lmaWMgZmVhdHVyZXMuXG4kYm9uaXRvLWJsb2NrLW5hbWVzcGFjZTogICAgICRib25pdG8tbmFtZXNwYWNlICFkZWZhdWx0O1xuXG4kYm9uaXRvLWJsb2NrLWd1dHRlcjogICAgICAgICAgICAkYm9uaXRvLWJhc2Utc3BhY2luZy11bml0ICFkZWZhdWx0O1xuJGJvbml0by1ibG9jay1ndXR0ZXItLXRpbnk6ICAgICAgICBxdWFydGVyKCRib25pdG8tYmxvY2stZ3V0dGVyKSAhZGVmYXVsdDtcbiRib25pdG8tYmxvY2stZ3V0dGVyLS1zbWFsbDogICAgICAgICBoYWx2ZSgkYm9uaXRvLWJsb2NrLWd1dHRlcikgIWRlZmF1bHQ7XG4kYm9uaXRvLWJsb2NrLWd1dHRlci0tbGFyZ2U6ICAgICAgICBkb3VibGUoJGJvbml0by1ibG9jay1ndXR0ZXIpICFkZWZhdWx0O1xuJGJvbml0by1ibG9jay1ndXR0ZXItLWh1Z2U6ICAgICAgcXVhZHJ1cGxlKCRib25pdG8tYmxvY2stZ3V0dGVyKSAhZGVmYXVsdDtcblxuJGJvbml0by1lbmFibGUtYmxvY2stLWZsdXNoOiAgICAgZmFsc2UgIWRlZmF1bHQ7XG4kYm9uaXRvLWVuYWJsZS1ibG9jay0tdGlueTogICAgICBmYWxzZSAhZGVmYXVsdDtcbiRib25pdG8tZW5hYmxlLWJsb2NrLS1zbWFsbDogICAgIGZhbHNlICFkZWZhdWx0O1xuJGJvbml0by1lbmFibGUtYmxvY2stLWxhcmdlOiAgICAgZmFsc2UgIWRlZmF1bHQ7XG4kYm9uaXRvLWVuYWJsZS1ibG9jay0taHVnZTogICAgICBmYWxzZSAhZGVmYXVsdDtcbiRib25pdG8tZW5hYmxlLWJsb2NrLS1jZW50ZXI6ICAgIGZhbHNlICFkZWZhdWx0O1xuJGJvbml0by1lbmFibGUtYmxvY2stLXJpZ2h0OiAgICAgZmFsc2UgIWRlZmF1bHQ7XG5cblxuXG5cblxuLyoqXG4gKiBTdGFja2VkIGltYWdlLXdpdGgtdGV4dCBvYmplY3QuIEEgc2ltcGxlIGFic3RyYWN0aW9uIHRvIGNvdmVyIGEgdmVyeSBjb21tb25seVxuICogb2NjdXJyaW5nIGRlc2lnbiBwYXR0ZXJuLlxuICovXG4uI3skYm9uaXRvLWJsb2NrLW5hbWVzcGFjZX1ibG9jayxcbiUjeyRib25pdG8tYmxvY2stbmFtZXNwYWNlfWJsb2NrIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbn1cblxuXG4gICAgLyoqXG4gICAgICogMS4gRWxpbWluYXRlIHdoaXRlc3BhY2UgYXJvdW5kIGltYWdlcy5cbiAgICAgKi9cbiAgICAuI3skYm9uaXRvLWJsb2NrLW5hbWVzcGFjZX1ibG9ja19faW1nLFxuICAgICUjeyRib25pdG8tYmxvY2stbmFtZXNwYWNlfWJsb2NrX19pbWcge1xuICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOyAvKiBbMV0gKi9cbiAgICAgICAgbWFyZ2luLWJvdHRvbTogJGJvbml0by1ibG9jay1ndXR0ZXI7XG5cbiAgICAgICAgQGlmICgkYm9uaXRvLWVuYWJsZS1ibG9jay0tZmx1c2ggPT0gdHJ1ZSkge1xuXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE5vIHNwYWNlIGJldHdlZW4gdGhlIGltYWdlIGFuZCB0aGUgdGV4dCBjb250ZW50LlxuICAgICAgICAgICAgICovXG5cbiAgICAgICAgICAgIC4jeyRib25pdG8tYmxvY2stbmFtZXNwYWNlfWJsb2NrLS1mbHVzaCA+ICYsXG4gICAgICAgICAgICAlI3skYm9uaXRvLWJsb2NrLW5hbWVzcGFjZX1ibG9jay0tZmx1c2ggPiAmIHtcbiAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cblxuICAgICAgICBAaWYgKCRib25pdG8tZW5hYmxlLWJsb2NrLS10aW55ID09IHRydWUpIHtcblxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUaW55IHNwYWNlIGJldHdlZW4gdGhlIGltYWdlIGFuZCB0aGUgdGV4dCBjb250ZW50LlxuICAgICAgICAgICAgICovXG5cbiAgICAgICAgICAgIC4jeyRib25pdG8tYmxvY2stbmFtZXNwYWNlfWJsb2NrLS10aW55ID4gJixcbiAgICAgICAgICAgICUjeyRib25pdG8tYmxvY2stbmFtZXNwYWNlfWJsb2NrLS10aW55ID4gJiB7XG4gICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogJGJvbml0by1ibG9jay1ndXR0ZXItLXRpbnk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuXG4gICAgICAgIEBpZiAoJGJvbml0by1lbmFibGUtYmxvY2stLXNtYWxsID09IHRydWUpIHtcblxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTbWFsbCBzcGFjZSBiZXR3ZWVuIHRoZSBpbWFnZSBhbmQgdGhlIHRleHQgY29udGVudC5cbiAgICAgICAgICAgICAqL1xuXG4gICAgICAgICAgICAuI3skYm9uaXRvLWJsb2NrLW5hbWVzcGFjZX1ibG9jay0tc21hbGwgPiAmLFxuICAgICAgICAgICAgJSN7JGJvbml0by1ibG9jay1uYW1lc3BhY2V9YmxvY2stLXNtYWxsID4gJiB7XG4gICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogJGJvbml0by1ibG9jay1ndXR0ZXItLXNtYWxsXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuXG4gICAgICAgIEBpZiAoJGJvbml0by1lbmFibGUtYmxvY2stLWxhcmdlID09IHRydWUpIHtcblxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBMYXJnZSBzcGFjZSBiZXR3ZWVuIHRoZSBpbWFnZSBhbmQgdGhlIHRleHQgY29udGVudC5cbiAgICAgICAgICAgICAqL1xuXG4gICAgICAgICAgICAuI3skYm9uaXRvLWJsb2NrLW5hbWVzcGFjZX1ibG9jay0tbGFyZ2UgPiAmLFxuICAgICAgICAgICAgJSN7JGJvbml0by1ibG9jay1uYW1lc3BhY2V9YmxvY2stLWxhcmdlID4gJiB7XG4gICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogJGJvbml0by1ibG9jay1ndXR0ZXItLWxhcmdlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cblxuICAgICAgICBAaWYgKCRib25pdG8tZW5hYmxlLWJsb2NrLS1odWdlID09IHRydWUpIHtcblxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBIdWdlIHNwYWNlIGJldHdlZW4gdGhlIGltYWdlIGFuZCB0aGUgdGV4dCBjb250ZW50LlxuICAgICAgICAgICAgICovXG5cbiAgICAgICAgICAgIC4jeyRib25pdG8tYmxvY2stbmFtZXNwYWNlfWJsb2NrLS1odWdlID4gJixcbiAgICAgICAgICAgICUjeyRib25pdG8tYmxvY2stbmFtZXNwYWNlfWJsb2NrLS1odWdlID4gJiB7XG4gICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogJGJvbml0by1ibG9jay1ndXR0ZXItLWh1Z2U7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuXG4gICAgfVxuXG5cblxuXG5cbiAgICAvKipcbiAgICAgKiBUZXh0LWNvbnRlbnQuXG4gICAgICovXG4gICAgLiN7JGJvbml0by1ibG9jay1uYW1lc3BhY2V9YmxvY2tfX2JvZHksXG4gICAgJSN7JGJvbml0by1ibG9jay1uYW1lc3BhY2V9YmxvY2tfX2JvZHkge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICB9XG5cblxuXG5cblxuQGlmICgkYm9uaXRvLWVuYWJsZS1ibG9jay0tcmlnaHQgPT0gdHJ1ZSkge1xuXG4gICAgLyoqXG4gICAgICogUmlnaHQtYWxpZ25lZCBibG9ja3MuXG4gICAgICovXG5cbiAgICAuI3skYm9uaXRvLWJsb2NrLW5hbWVzcGFjZX1ibG9jay0tcmlnaHQsXG4gICAgJSN7JGJvbml0by1ibG9jay1uYW1lc3BhY2V9YmxvY2stLXJpZ2h0IHtcbiAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgfVxuXG59XG5cbkBpZiAoJGJvbml0by1lbmFibGUtYmxvY2stLWNlbnRlciA9PSB0cnVlKSB7XG5cbiAgICAvKipcbiAgICAgKiBDZW50ZXItYWxpZ25lZCBibG9ja3MuXG4gICAgICovXG5cbiAgICAuI3skYm9uaXRvLWJsb2NrLW5hbWVzcGFjZX1ibG9jay0tY2VudGVyLFxuICAgICUjeyRib25pdG8tYmxvY2stbmFtZXNwYWNlfWJsb2NrLS1jZW50ZXIge1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgfVxuXG59XG4iLCIvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcXFxuICAgICNCVVRUT05TXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4vKipcbiAqIEEgc2ltcGxlIGJ1dHRvbiBvYmplY3QuXG4gKi9cblxuLy8gUHJlZGVmaW5lIHRoZSB2YXJpYWJsZXMgYmVsb3cgaW4gb3JkZXIgdG8gYWx0ZXIgYW5kIGVuYWJsZSBzcGVjaWZpYyBmZWF0dXJlcy5cbiRib25pdG8tYnRuLW5hbWVzcGFjZTogICAgICAgJGJvbml0by1uYW1lc3BhY2UgIWRlZmF1bHQ7XG5cbiRib25pdG8tYnRuLXBhZGRpbmc6ICAgICAgICAgaGFsdmUoJGJvbml0by1iYXNlLXNwYWNpbmctdW5pdCkgIWRlZmF1bHQ7XG4kYm9uaXRvLWJ0bi1wYWRkaW5nLS1zbWFsbDogIGhhbHZlKCRib25pdG8tYnRuLXBhZGRpbmcpICFkZWZhdWx0O1xuJGJvbml0by1idG4tcGFkZGluZy0tbGFyZ2U6ICBkb3VibGUoJGJvbml0by1idG4tcGFkZGluZykgIWRlZmF1bHQ7XG4kYm9uaXRvLWJ0bi1iYWNrZ3JvdW5kOiAgICAgICM0YThlYzIgIWRlZmF1bHQ7XG4kYm9uaXRvLWJ0bi1jb2xvcjogICAgICAgICAgICNmZmYgIWRlZmF1bHQ7XG4kYm9uaXRvLWJ0bi1ib3JkZXItd2lkdGg6ICAgIDFweCAhZGVmYXVsdDtcbiRib25pdG8tYnRuLWJvcmRlci1zdHlsZTogICAgc29saWQgIWRlZmF1bHQ7XG4kYm9uaXRvLWJ0bi1ib3JkZXItY29sb3I6ICAgICRib25pdG8tYnRuLWJhY2tncm91bmQgIWRlZmF1bHQ7XG4kYm9uaXRvLWJ0bi1yYWRpdXM6ICAgICAgICAgIDAgIWRlZmF1bHQ7XG5cbiRib25pdG8tZW5hYmxlLWJ0bi0tc21hbGw6ICAgZmFsc2UgIWRlZmF1bHQ7XG4kYm9uaXRvLWVuYWJsZS1idG4tLWxhcmdlOiAgIGZhbHNlICFkZWZhdWx0O1xuJGJvbml0by1lbmFibGUtYnRuLS1mdWxsOiAgICBmYWxzZSAhZGVmYXVsdDtcbiRib25pdG8tZW5hYmxlLWJ0bi0tcGlsbDogICAgZmFsc2UgIWRlZmF1bHQ7XG5cblxuXG5cblxuLy8gSGVyZSB3ZSBzZXQgYSB2YXJpYWJsZSBhc3N1bWluZyB0aGF0IGBib3gtc2l6aW5nOiBib3JkZXItYm94O2AgaXMgbm90IHNldFxuLy8gZ2xvYmFsbHkuIElmIGl0IGhhcyBiZWVuIHByZXZpb3VzbHkgYmVlbiBkZWZpbmVkLCB0aGUgZm9sbG93aW5nIHZhcmlhYmxlIHdpbGxcbi8vIGJlIG92ZXJyaWRlbiBhbmQgd2lsbCBiZSBzZXQgdG8gYHRydWVgLlxuJGJvbml0by1nbG9iYWwtYm9yZGVyLWJveDogZmFsc2UgIWRlZmF1bHQ7XG5cblxuXG5cblxuLyoqXG4gKiAxLiBBbGxvdyB1cyB0byBzdHlsZSBib3ggbW9kZWwgcHJvcGVydGllcy5cbiAqIDIuIExpbmUgZGlmZmVyZW50IHNpemVkIGJ1dHRvbnMgdXAgYSBsaXR0bGUgbmljZXIuXG4gKiAzLiBNYWtlIGJ1dHRvbnMgaW5oZXJpdCBmb250IHN0eWxlcyAob2Z0ZW4gbmVjZXNzYXJ5IHdoZW4gc3R5bGluZyBgaW5wdXRgcyBhc1xuICogICAgYnV0dG9ucykuXG4gKiA0LiBSZXNldC9ub3JtYWxpemUgc29tZSBzdHlsZXMuXG4gKiA1LiBGb3JjZSBhbGwgYnV0dG9uLXN0eWxlZCBlbGVtZW50cyB0byBhcHBlYXIgY2xpY2thYmxlLlxuICogNi4gRml4ZXMgb2RkIGlubmVyIHNwYWNpbmcgaW4gSUU3LlxuICogNy4gU3VidHJhY3QgdGhlIGJvcmRlciBzaXplIGZyb20gdGhlIHBhZGRpbmcgdmFsdWUgc28gdGhhdCBidXR0b25zIGRvIG5vdFxuICogICAgZ3JvdyBsYXJnZXIgYXMgd2UgYWRkIGJvcmRlcnMuXG4gKi9cbi4jeyRib25pdG8tYnRuLW5hbWVzcGFjZX1idG4sXG4lI3skYm9uaXRvLWJ0bi1uYW1lc3BhY2V9YnRuIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IC8qIFsxXSAqL1xuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7IC8qIFsyXSAqL1xuICAgIGZvbnQ6IGluaGVyaXQ7IC8qIFszXSAqL1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjsgLyogWzRdICovXG4gICAgbWFyZ2luOiAgMDsgLyogWzRdICovXG4gICAgY3Vyc29yOiBwb2ludGVyOyAvKiBbNV0gKi9cbiAgICBvdmVyZmxvdzogdmlzaWJsZTsgLyogWzZdICovXG4gICAgcGFkZGluZzogJGJvbml0by1idG4tcGFkZGluZyAtICRib25pdG8tYnRuLWJvcmRlci13aWR0aCAgZG91YmxlKCRib25pdG8tYnRuLXBhZGRpbmcpIC0gJGJvbml0by1idG4tYm9yZGVyLXdpZHRoOyAvKiBbN10gKi9cbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYm9uaXRvLWJ0bi1iYWNrZ3JvdW5kO1xuXG4gICAgQGlmKCRib25pdG8tYnRuLWJvcmRlci13aWR0aCAhPSAwKSB7XG4gICAgICAgIGJvcmRlcjogJGJvbml0by1idG4tYm9yZGVyLXdpZHRoICRib25pdG8tYnRuLWJvcmRlci1zdHlsZSAkYm9uaXRvLWJ0bi1ib3JkZXItY29sb3I7XG4gICAgfSBAZWxzZSB7XG4gICAgICAgIGJvcmRlcjogbm9uZTsgLyogWzRdICovXG4gICAgfVxuXG4gICAgQGlmKCRib25pdG8tYnRuLXJhZGl1cyAhPSAwKSB7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6ICRib25pdG8tYnRuLXJhZGl1cztcbiAgICB9XG5cbiAgICAmLFxuICAgICY6aG92ZXIsXG4gICAgJjphY3RpdmUsXG4gICAgJjpmb2N1cyB7XG4gICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsgLyogWzRdICovXG4gICAgICAgIGNvbG9yOiAkYm9uaXRvLWJ0bi1jb2xvcjtcbiAgICB9XG5cbn1cblxuLyoqXG4gKiBGaXggYSBGaXJlZm94IGJ1ZyB3aGVyZWJ5IGBpbnB1dCB0eXBlPVwic3VibWl0XCJgIGdhaW5zIDJweCBleHRyYSBwYWRkaW5nLlxuICovXG4uI3skYm9uaXRvLWJ0bi1uYW1lc3BhY2V9YnRuOjotbW96LWZvY3VzLWlubmVyLFxuJSN7JGJvbml0by1idG4tbmFtZXNwYWNlfWJ0bjo6LW1vei1mb2N1cy1pbm5lciB7XG4gICAgYm9yZGVyOiAgMDtcbiAgICBwYWRkaW5nOiAwO1xufVxuXG5cblxuXG5cbkBpZiAoJGJvbml0by1lbmFibGUtYnRuLS1zbWFsbCA9PSB0cnVlKSB7XG5cbiAgICAvKipcbiAgICAgKiBTbWFsbCBidXR0b25zLlxuICAgICAqL1xuXG4gICAgLiN7JGJvbml0by1idG4tbmFtZXNwYWNlfWJ0bi0tc21hbGwsXG4gICAgJSN7JGJvbml0by1idG4tbmFtZXNwYWNlfWJ0bi0tc21hbGwge1xuICAgICAgICBwYWRkaW5nOiAkYm9uaXRvLWJ0bi1wYWRkaW5nLS1zbWFsbCAtICRib25pdG8tYnRuLWJvcmRlci13aWR0aCAgZG91YmxlKCRib25pdG8tYnRuLXBhZGRpbmctLXNtYWxsKSAtICRib25pdG8tYnRuLWJvcmRlci13aWR0aDsgLyogWzddICovXG4gICAgfVxuXG59XG5cbkBpZiAoJGJvbml0by1lbmFibGUtYnRuLS1sYXJnZSA9PSB0cnVlKSB7XG5cbiAgICAvKipcbiAgICAgKiBMYXJnZSBidXR0b25zLlxuICAgICAqL1xuXG4gICAgLiN7JGJvbml0by1idG4tbmFtZXNwYWNlfWJ0bi0tbGFyZ2UsXG4gICAgJSN7JGJvbml0by1idG4tbmFtZXNwYWNlfWJ0bi0tbGFyZ2Uge1xuICAgICAgICBwYWRkaW5nOiAkYm9uaXRvLWJ0bi1wYWRkaW5nLS1sYXJnZSAtICRib25pdG8tYnRuLWJvcmRlci13aWR0aCAgZG91YmxlKCRib25pdG8tYnRuLXBhZGRpbmctLWxhcmdlKSAtICRib25pdG8tYnRuLWJvcmRlci13aWR0aDsgLyogWzddICovXG4gICAgfVxuXG59XG5cblxuXG5cblxuQGlmICgkYm9uaXRvLWVuYWJsZS1idG4tLWZ1bGwgPT0gdHJ1ZSkge1xuXG4gICAgLyoqXG4gICAgICogRnVsbC13aWR0aCBidXR0b25zLlxuICAgICAqL1xuXG4gICAgLiN7JGJvbml0by1idG4tbmFtZXNwYWNlfWJ0bi0tZnVsbCxcbiAgICAlI3skYm9uaXRvLWJ0bi1uYW1lc3BhY2V9YnRuLS1mdWxsIHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG5cbiAgICAgICAgQGlmICRib25pdG8tZ2xvYmFsLWJvcmRlci1ib3ggPT0gZmFsc2Uge1xuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBSZW1vdmUgcGFkZGluZ3Mgc28gdGhhdCB3aWR0aHMgYW5kIHBhZGRpbmdzIGRvbuKAmXQgY29uZmxpY3QuXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IDA7XG4gICAgICAgICAgICBwYWRkaW5nLWxlZnQ6ICAwO1xuICAgICAgICB9XG5cbiAgICB9XG5cbn1cblxuXG5cblxuXG5AaWYgKCRib25pdG8tZW5hYmxlLWJ0bi0tcGlsbCA9PSB0cnVlKSB7XG5cbiAgICAvKipcbiAgICAgKiBSb3VuZC1lbmRlZCBidXR0b25zLlxuICAgICAqXG4gICAgICogMS4gT3Zlcmx5LWxhcmdlIHZhbHVlIHRvIGVuc3VyZSB0aGUgcmFkaXVzIHJvdW5kcyB0aGUgd2hvbGUgZW5kIG9mIHRoZVxuICAgICAqICAgIGJ1dHRvbi5cbiAgICAgKi9cblxuICAgIC4jeyRib25pdG8tYnRuLW5hbWVzcGFjZX1idG4tLXBpbGwsXG4gICAgJSN7JGJvbml0by1idG4tbmFtZXNwYWNlfWJ0bi0tcGlsbCB7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDEwMHB4OyAvKiBbMV0gKi9cbiAgICB9XG5cbn1cbiIsIi8qKlxuICogQ29udGFpbmVyIE9iamVjdFxuICpcbiAqIFRoZSBvYmplY3QgaXMgdXNlZCB0byBob3Jpem9udGFsbHkgYWxpZ24gYW4gZWxlbWVudCBwYXN0IGEgY2VydGFpbiBtYXggd2lkdGguXG4gKlxuICogRXhhbXBsZTpcbiAqICA8ZGl2IGNsYXNzPVwid3JhcHBlclwiPlxuICogICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXJcIj5cbiAqICAgICAgICAgIC4uLlxuICogICAgICA8L2Rpdj5cbiAqICA8L2Rpdj5cbiAqXG4gKi9cblxuLy8gVmFyaWFibGVzXG4kYm9uaXRvLWNvbnRhaW5lci1uYW1lc3BhY2U6ICRib25pdG8tbmFtZXNwYWNlICFkZWZhdWx0O1xuXG4kYm9uaXRvLWNvbnRhaW5lci13aWR0aDogOTYwcHggIWRlZmF1bHQ7XG5cbiRib25pdG8tZW5hYmxlLWNvbnRhaW5lci0tZmx1c2g6IGZhbHNlICFkZWZhdWx0O1xuXG4kYm9uaXRvLWNvbnRhaW5lci1yZXNwb25zaXZlOiBmYWxzZSAhZGVmYXVsdDtcbiRib25pdG8tY29udGFpbmVyLWJhc2UtcGFkZGluZzogJGJvbml0by1iYXNlLXNwYWNpbmctdW5pdCAhZGVmYXVsdDtcbiRib25pdG8tY29udGFpbmVyLWxhcC1wYWRkaW5nOiAkYm9uaXRvLWNvbnRhaW5lci1iYXNlLXBhZGRpbmcgIWRlZmF1bHQ7XG4kYm9uaXRvLWNvbnRhaW5lci1kZXNrLXBhZGRpbmc6ICRib25pdG8tY29udGFpbmVyLWJhc2UtcGFkZGluZyAhZGVmYXVsdDtcblxuLiN7JGJvbml0by1jb250YWluZXItbmFtZXNwYWNlfWNvbnRhaW5lcixcbiUjeyRib25pdG8tY29udGFpbmVyLW5hbWVzcGFjZX1jb250YWluZXIge1xuICAgIG1heC13aWR0aDogJGJvbml0by1jb250YWluZXItd2lkdGg7XG4gICAgbWFyZ2luOiAwIGF1dG87XG4gICAgcGFkZGluZzogMCAkYm9uaXRvLWNvbnRhaW5lci1iYXNlLXBhZGRpbmc7XG59XG5cbkBpZiAoJGJvbml0by1lbmFibGUtY29udGFpbmVyLS1mbHVzaCkge1xuICAgIC4jeyRib25pdG8tY29udGFpbmVyLW5hbWVzcGFjZX1jb250YWluZXItLWZsdXNoLFxuICAgICUjeyRib25pdG8tY29udGFpbmVyLW5hbWVzcGFjZX1jb250YWluZXItLWZsdXNoIHtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICB9XG59XG5cbkBpZiAoJGJvbml0by1jb250YWluZXItcmVzcG9uc2l2ZSA9PSB0cnVlKSB7XG5cbiAgICBAaW5jbHVkZSBtZWRpYS1xdWVyeShsYXApIHtcbiAgICAgICAgLiN7JGJvbml0by1jb250YWluZXItbmFtZXNwYWNlfWNvbnRhaW5lcixcbiAgICAgICAgJSN7JGJvbml0by1jb250YWluZXItbmFtZXNwYWNlfWNvbnRhaW5lciB7XG4gICAgICAgICAgICBwYWRkaW5nOiAwICRib25pdG8tY29udGFpbmVyLWxhcC1wYWRkaW5nO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgbWVkaWEtcXVlcnkoZGVzaykge1xuICAgICAgICAuI3skYm9uaXRvLWNvbnRhaW5lci1uYW1lc3BhY2V9Y29udGFpbmVyLFxuICAgICAgICAlI3skYm9uaXRvLWNvbnRhaW5lci1uYW1lc3BhY2V9Y29udGFpbmVyIHtcbiAgICAgICAgICAgIHBhZGRpbmc6IDAgJGJvbml0by1jb250YWluZXItZGVzay1wYWRkaW5nO1xuICAgICAgICB9XG4gICAgfVxuXG59XG4iLCIvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcXFxuICAgICNGTEFHXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4vKipcbiAqIFRoZSBmbGFnIG9iamVjdCBpcyBhIGRlc2lnbiBwYXR0ZXJuIHNpbWlsYXIgdG8gdGhlIG1lZGlhIG9iamVjdCwgaG93ZXZlciBpdFxuICogdXRpbGlzZXMgYGRpc3BsYXk6IHRhYmxlWy1jZWxsXTtgIHRvIGdpdmUgdXMgY29udHJvbCBvdmVyIHRoZSB2ZXJ0aWNhbFxuICogYWxpZ25tZW50cyBvZiB0aGUgdGV4dCBhbmQgaW1hZ2UuIGNzc3dpemFyZHJ5LmNvbS8yMDEzLzA1L3RoZS1mbGFnLW9iamVjdFxuICovXG5cbi8vIFByZWRlZmluZSB0aGUgdmFyaWFibGVzIGJlbG93IGluIG9yZGVyIHRvIGFsdGVyIGFuZCBlbmFibGUgc3BlY2lmaWMgZmVhdHVyZXMuXG4kYm9uaXRvLWZsYWctbmFtZXNwYWNlOiAgICAgICAgICAkYm9uaXRvLW5hbWVzcGFjZSAhZGVmYXVsdDtcblxuJGJvbml0by1mbGFnLWd1dHRlcjogICAgICAgICAgICAgJGJvbml0by1iYXNlLXNwYWNpbmctdW5pdCAhZGVmYXVsdDtcbiRib25pdG8tZmxhZy1ndXR0ZXItLXRpbnk6ICAgICAgICAgcXVhcnRlcigkYm9uaXRvLWZsYWctZ3V0dGVyKSAhZGVmYXVsdDtcbiRib25pdG8tZmxhZy1ndXR0ZXItLXNtYWxsOiAgICAgICAgICBoYWx2ZSgkYm9uaXRvLWZsYWctZ3V0dGVyKSAhZGVmYXVsdDtcbiRib25pdG8tZmxhZy1ndXR0ZXItLWxhcmdlOiAgICAgICAgIGRvdWJsZSgkYm9uaXRvLWZsYWctZ3V0dGVyKSAhZGVmYXVsdDtcbiRib25pdG8tZmxhZy1ndXR0ZXItLWh1Z2U6ICAgICAgIHF1YWRydXBsZSgkYm9uaXRvLWZsYWctZ3V0dGVyKSAhZGVmYXVsdDtcblxuJGJvbml0by1lbmFibGUtZmxhZy0tdGlueTogICAgICAgZmFsc2UgIWRlZmF1bHQ7XG4kYm9uaXRvLWVuYWJsZS1mbGFnLS1zbWFsbDogICAgICBmYWxzZSAhZGVmYXVsdDtcbiRib25pdG8tZW5hYmxlLWZsYWctLWxhcmdlOiAgICAgIGZhbHNlICFkZWZhdWx0O1xuJGJvbml0by1lbmFibGUtZmxhZy0taHVnZTogICAgICAgZmFsc2UgIWRlZmF1bHQ7XG4kYm9uaXRvLWVuYWJsZS1mbGFnLS1yZXY6ICAgICAgICBmYWxzZSAhZGVmYXVsdDtcbiRib25pdG8tZW5hYmxlLWZsYWctLWZsdXNoOiAgICAgIGZhbHNlICFkZWZhdWx0O1xuJGJvbml0by1lbmFibGUtZmxhZy0tdG9wOiAgICAgICAgZmFsc2UgIWRlZmF1bHQ7XG4kYm9uaXRvLWVuYWJsZS1mbGFnLS1ib3R0b206ICAgICBmYWxzZSAhZGVmYXVsdDtcbiRib25pdG8tZW5hYmxlLWZsYWctLXJlc3BvbnNpdmU6IGZhbHNlICFkZWZhdWx0O1xuJGJvbml0by1mbGFnLWNvbGxhcHNlLWF0OiAgICAgICAgNzIwcHggIWRlZmF1bHQ7XG5cblxuXG5cblxuLyoqXG4gKiAxLiBBbGxvd3MgdXMgdG8gY29udHJvbCB2ZXJ0aWNhbCBhbGlnbm1lbnRzXG4gKiAyLiBGb3JjZSB0aGUgb2JqZWN0IHRvIGJlIHRoZSBmdWxsIHdpZHRoIG9mIGl0cyBwYXJlbnQuIENvbWJpbmVkIHdpdGggWzFdLFxuICogICAgdGhpcyBtYWtlcyB0aGUgb2JqZWN0IGJlaGF2ZSBpbiBhIHF1YXNpLWBkaXNwbGF5OiBibG9jaztgIG1hbm5lci5cbiAqL1xuLiN7JGJvbml0by1mbGFnLW5hbWVzcGFjZX1mbGFnLFxuJSN7JGJvbml0by1mbGFnLW5hbWVzcGFjZX1mbGFnIHtcbiAgICBkaXNwbGF5OiB0YWJsZTsgLyogWzFdICovXG4gICAgd2lkdGg6IDEwMCU7IC8qIFsyXSAqL1xufVxuXG4gICAgLyoqXG4gICAgICogSXRlbXMgd2l0aGluIGEgZmxhZyBvYmplY3QuIFRoZXJlIHNob3VsZCBvbmx5IGV2ZXIgYmUgb25lIG9mIGVhY2guXG4gICAgICpcbiAgICAgKiAxLiBEZWZhdWx0IHRvIGFsaWduaW5nIGNvbnRlbnQgdG8gdGhlaXIgbWlkZGxlcy5cbiAgICAgKi9cbiAgICAuI3skYm9uaXRvLWZsYWctbmFtZXNwYWNlfWZsYWdfX2ltZyxcbiAgICAlI3skYm9uaXRvLWZsYWctbmFtZXNwYWNlfWZsYWdfX2ltZyxcbiAgICAuI3skYm9uaXRvLWZsYWctbmFtZXNwYWNlfWZsYWdfX2JvZHksXG4gICAgJSN7JGJvbml0by1mbGFnLW5hbWVzcGFjZX1mbGFnX19ib2R5IHtcbiAgICAgICAgZGlzcGxheTogdGFibGUtY2VsbDtcbiAgICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsgLyogWzFdICovXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRmxhZyBpbWFnZXMgaGF2ZSBhIHNwYWNlIGJldHdlZW4gdGhlbSBhbmQgdGhlIGJvZHkgb2YgdGhlIG9iamVjdC5cbiAgICAgKi9cbiAgICAuI3skYm9uaXRvLWZsYWctbmFtZXNwYWNlfWZsYWdfX2ltZyxcbiAgICAlI3skYm9uaXRvLWZsYWctbmFtZXNwYWNlfWZsYWdfX2ltZyB7XG4gICAgICAgIHBhZGRpbmctcmlnaHQ6ICRib25pdG8tZmxhZy1ndXR0ZXI7XG5cbiAgICAgICAgPiBpbWcge1xuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICBtYXgtd2lkdGg6IG5vbmU7XG4gICAgICAgIH1cblxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBjb250YWluZXIgZm9yIHRoZSBtYWluIGNvbnRlbnQgb2YgdGhlIGZsYWcgb2JqZWN0LlxuICAgICAqXG4gICAgICogMS4gRm9yY2VzIHRoZSBgLmZsYWdfX2JvZHlgIHRvIHRha2UgdXAgYWxsIHJlbWFpbmluZyBzcGFjZS5cbiAgICAgKi9cbiAgICAuI3skYm9uaXRvLWZsYWctbmFtZXNwYWNlfWZsYWdfX2JvZHksXG4gICAgJSN7JGJvbml0by1mbGFnLW5hbWVzcGFjZX1mbGFnX19ib2R5IHtcbiAgICAgICAgd2lkdGg6IDEwMCU7IC8qIFsxXSAqL1xuXG4gICAgICAgICYsXG4gICAgICAgID4gOmxhc3QtY2hpbGQge1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICAgICAgfVxuXG4gICAgfVxuXG5cblxuXG5cbkBpZiAoJGJvbml0by1lbmFibGUtZmxhZy0tdGlueSA9PSB0cnVlKSB7XG5cbiAgICAvKipcbiAgICAgKiBUaW55IGZsYWdzLlxuICAgICAqL1xuXG4gICAgLiN7JGJvbml0by1mbGFnLW5hbWVzcGFjZX1mbGFnLS10aW55LFxuICAgICUjeyRib25pdG8tZmxhZy1uYW1lc3BhY2V9ZmxhZy0tdGlueSB7XG5cbiAgICAgICAgPiAuI3skYm9uaXRvLWZsYWctbmFtZXNwYWNlfWZsYWdfX2ltZyxcbiAgICAgICAgPiAlI3skYm9uaXRvLWZsYWctbmFtZXNwYWNlfWZsYWdfX2ltZyB7XG4gICAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiAkYm9uaXRvLWZsYWctZ3V0dGVyLS10aW55O1xuICAgICAgICB9XG5cbiAgICAgICAgQGlmICgkYm9uaXRvLWVuYWJsZS1mbGFnLS1yZXYgPT0gdHJ1ZSkge1xuXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRpbnkgcmV2ZXJzZWQgZmxhZ3MuXG4gICAgICAgICAgICAgKi9cblxuICAgICAgICAgICAgJi4jeyRib25pdG8tZmxhZy1uYW1lc3BhY2V9ZmxhZy0tcmV2LFxuICAgICAgICAgICAgJiUjeyRib25pdG8tZmxhZy1uYW1lc3BhY2V9ZmxhZy0tcmV2IHtcblxuICAgICAgICAgICAgICAgID4gLiN7JGJvbml0by1mbGFnLW5hbWVzcGFjZX1mbGFnX19pbWcsXG4gICAgICAgICAgICAgICAgPiAlI3skYm9uaXRvLWZsYWctbmFtZXNwYWNlfWZsYWdfX2ltZyB7XG4gICAgICAgICAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IDA7XG4gICAgICAgICAgICAgICAgICAgIHBhZGRpbmctbGVmdDogICRib25pdG8tZmxhZy1ndXR0ZXItLXRpbnk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuXG4gICAgfVxuXG59XG5cbkBpZiAoJGJvbml0by1lbmFibGUtZmxhZy0tc21hbGwgPT0gdHJ1ZSkge1xuXG4gICAgLyoqXG4gICAgICogU21hbGwgZmxhZ3MuXG4gICAgICovXG5cbiAgICAuI3skYm9uaXRvLWZsYWctbmFtZXNwYWNlfWZsYWctLXNtYWxsLFxuICAgICUjeyRib25pdG8tZmxhZy1uYW1lc3BhY2V9ZmxhZy0tc21hbGwge1xuXG4gICAgICAgID4gLiN7JGJvbml0by1mbGFnLW5hbWVzcGFjZX1mbGFnX19pbWcsXG4gICAgICAgID4gJSN7JGJvbml0by1mbGFnLW5hbWVzcGFjZX1mbGFnX19pbWcge1xuICAgICAgICAgICAgcGFkZGluZy1yaWdodDogJGJvbml0by1mbGFnLWd1dHRlci0tc21hbGw7XG4gICAgICAgIH1cblxuICAgICAgICBAaWYgKCRib25pdG8tZW5hYmxlLWZsYWctLXJldiA9PSB0cnVlKSB7XG5cbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU21hbGwgcmV2ZXJzZWQgZmxhZ3MuXG4gICAgICAgICAgICAgKi9cblxuICAgICAgICAgICAgJi4jeyRib25pdG8tZmxhZy1uYW1lc3BhY2V9ZmxhZy0tcmV2LFxuICAgICAgICAgICAgJiUjeyRib25pdG8tZmxhZy1uYW1lc3BhY2V9ZmxhZy0tcmV2IHtcblxuICAgICAgICAgICAgICAgID4gLiN7JGJvbml0by1mbGFnLW5hbWVzcGFjZX1mbGFnX19pbWcsXG4gICAgICAgICAgICAgICAgPiAlI3skYm9uaXRvLWZsYWctbmFtZXNwYWNlfWZsYWdfX2ltZyB7XG4gICAgICAgICAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IDA7XG4gICAgICAgICAgICAgICAgICAgIHBhZGRpbmctbGVmdDogICRib25pdG8tZmxhZy1ndXR0ZXItLXNtYWxsO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cblxuICAgIH1cblxufVxuXG5AaWYgKCRib25pdG8tZW5hYmxlLWZsYWctLWxhcmdlID09IHRydWUpIHtcblxuICAgIC8qKlxuICAgICAqIExhcmdlIGZsYWdzLlxuICAgICAqL1xuXG4gICAgLiN7JGJvbml0by1mbGFnLW5hbWVzcGFjZX1mbGFnLS1sYXJnZSxcbiAgICAlI3skYm9uaXRvLWZsYWctbmFtZXNwYWNlfWZsYWctLWxhcmdlIHtcblxuICAgICAgICA+IC4jeyRib25pdG8tZmxhZy1uYW1lc3BhY2V9ZmxhZ19faW1nLFxuICAgICAgICA+ICUjeyRib25pdG8tZmxhZy1uYW1lc3BhY2V9ZmxhZ19faW1nIHtcbiAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6ICRib25pdG8tZmxhZy1ndXR0ZXItLWxhcmdlO1xuICAgICAgICB9XG5cbiAgICAgICAgQGlmICgkYm9uaXRvLWVuYWJsZS1mbGFnLS1yZXYgPT0gdHJ1ZSkge1xuXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIExhcmdlIHJldmVyc2VkIGZsYWdzLlxuICAgICAgICAgICAgICovXG5cbiAgICAgICAgICAgICYuI3skYm9uaXRvLWZsYWctbmFtZXNwYWNlfWZsYWctLXJldixcbiAgICAgICAgICAgICYlI3skYm9uaXRvLWZsYWctbmFtZXNwYWNlfWZsYWctLXJldiB7XG5cbiAgICAgICAgICAgICAgICA+IC4jeyRib25pdG8tZmxhZy1uYW1lc3BhY2V9ZmxhZ19faW1nLFxuICAgICAgICAgICAgICAgID4gJSN7JGJvbml0by1mbGFnLW5hbWVzcGFjZX1mbGFnX19pbWcge1xuICAgICAgICAgICAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiAwO1xuICAgICAgICAgICAgICAgICAgICBwYWRkaW5nLWxlZnQ6ICAkYm9uaXRvLWZsYWctZ3V0dGVyLS1sYXJnZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG5cbiAgICB9XG5cbn1cblxuQGlmICgkYm9uaXRvLWVuYWJsZS1mbGFnLS1odWdlID09IHRydWUpIHtcblxuICAgIC8qKlxuICAgICAqIEh1Z2UgZmxhZ3MuXG4gICAgICovXG5cbiAgICAuI3skYm9uaXRvLWZsYWctbmFtZXNwYWNlfWZsYWctLWh1Z2UsXG4gICAgJSN7JGJvbml0by1mbGFnLW5hbWVzcGFjZX1mbGFnLS1odWdlIHtcblxuICAgICAgICA+IC4jeyRib25pdG8tZmxhZy1uYW1lc3BhY2V9ZmxhZ19faW1nLFxuICAgICAgICA+ICUjeyRib25pdG8tZmxhZy1uYW1lc3BhY2V9ZmxhZ19faW1nIHtcbiAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6ICRib25pdG8tZmxhZy1ndXR0ZXItLWh1Z2U7XG4gICAgICAgIH1cblxuICAgICAgICBAaWYgKCRib25pdG8tZW5hYmxlLWZsYWctLXJldiA9PSB0cnVlKSB7XG5cbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogSHVnZSByZXZlcnNlZCBmbGFncy5cbiAgICAgICAgICAgICAqL1xuXG4gICAgICAgICAgICAmLiN7JGJvbml0by1mbGFnLW5hbWVzcGFjZX1mbGFnLS1yZXYsXG4gICAgICAgICAgICAmJSN7JGJvbml0by1mbGFnLW5hbWVzcGFjZX1mbGFnLS1yZXYge1xuXG4gICAgICAgICAgICAgICAgPiAuI3skYm9uaXRvLWZsYWctbmFtZXNwYWNlfWZsYWdfX2ltZyxcbiAgICAgICAgICAgICAgICA+ICUjeyRib25pdG8tZmxhZy1uYW1lc3BhY2V9ZmxhZ19faW1nIHtcbiAgICAgICAgICAgICAgICAgICAgcGFkZGluZy1yaWdodDogMDtcbiAgICAgICAgICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiAgJGJvbml0by1mbGFnLWd1dHRlci0taHVnZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG5cbiAgICB9XG5cbn1cblxuXG5cblxuXG5AaWYgKCRib25pdG8tZW5hYmxlLWZsYWctLXJldiA9PSB0cnVlKSB7XG5cbiAgICAvKipcbiAgICAgKiBSZXZlcnNlZCBmbGFnIG9iamVjdHMgaGF2ZSB0aGVpciBpbWFnZS1jb250ZW50IHRvIHRoZSByaWdodCwgYW5kIHRleHQtY29udGVudFxuICAgICAqIHRvIHRoZSBsZWZ0LlxuICAgICAqXG4gICAgICogMS4gU3dhcCB0aGUgcmVuZGVyZWQgZGlyZWN0aW9uIG9mIHRoZSBvYmplY3TigKZcbiAgICAgKiAyLiDigKZhbmQgcmVzZXQgaXQuXG4gICAgICogMy4gUmVhc3NpZ24gbWFyZ2lucyB0byB0aGUgY29ycmVjdCBzaWRlcy5cbiAgICAgKi9cblxuICAgIC4jeyRib25pdG8tZmxhZy1uYW1lc3BhY2V9ZmxhZy0tcmV2LFxuICAgICUjeyRib25pdG8tZmxhZy1uYW1lc3BhY2V9ZmxhZy0tcmV2IHtcbiAgICAgICAgZGlyZWN0aW9uOiBydGw7IC8qIFsxXSAqL1xuXG4gICAgICAgID4gLiN7JGJvbml0by1mbGFnLW5hbWVzcGFjZX1mbGFnX19pbWcsXG4gICAgICAgID4gJSN7JGJvbml0by1mbGFnLW5hbWVzcGFjZX1mbGFnX19pbWcsXG4gICAgICAgID4gLiN7JGJvbml0by1mbGFnLW5hbWVzcGFjZX1mbGFnX19ib2R5LFxuICAgICAgICA+ICUjeyRib25pdG8tZmxhZy1uYW1lc3BhY2V9ZmxhZ19fYm9keSB7XG4gICAgICAgICAgICBkaXJlY3Rpb246IGx0cjsgLyogWzJdICovXG4gICAgICAgIH1cblxuICAgICAgICA+IC4jeyRib25pdG8tZmxhZy1uYW1lc3BhY2V9ZmxhZ19faW1nLFxuICAgICAgICA+ICUjeyRib25pdG8tZmxhZy1uYW1lc3BhY2V9ZmxhZ19faW1nIHtcbiAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IDA7IC8qIFszXSAqL1xuICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiAkYm9uaXRvLWZsYWctZ3V0dGVyOyAvKiBbM10gKi9cbiAgICAgICAgfVxuXG4gICAgfVxuXG59XG5cblxuXG5cblxuQGlmICgkYm9uaXRvLWVuYWJsZS1mbGFnLS1mbHVzaCA9PSB0cnVlKSB7XG5cbiAgICAvKipcbiAgICAgKiBGbHVzaCBmbGFnIG9iamVjdHMgaGF2ZSBubyBzcGFjZSBiZXR3ZWVuIHRoZSBpbWFnZS0gYW5kIHRleHQtY29udGVudC5cbiAgICAgKi9cblxuICAgIC4jeyRib25pdG8tZmxhZy1uYW1lc3BhY2V9ZmxhZy0tZmx1c2gsXG4gICAgJSN7JGJvbml0by1mbGFnLW5hbWVzcGFjZX1mbGFnLS1mbHVzaCB7XG5cbiAgICAgICAgPiAuI3skYm9uaXRvLWZsYWctbmFtZXNwYWNlfWZsYWdfX2ltZyxcbiAgICAgICAgPiAlI3skYm9uaXRvLWZsYWctbmFtZXNwYWNlfWZsYWdfX2ltZyB7XG4gICAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiAwO1xuICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiAgMDtcbiAgICAgICAgfVxuXG4gICAgfVxuXG59XG5cblxuXG5cblxuQGlmICgkYm9uaXRvLWVuYWJsZS1mbGFnLS10b3AgPT0gdHJ1ZSkge1xuXG4gICAgLyoqXG4gICAgICogVmVydGljYWxseSB0b3AgYWxpZ25lZCBmbGFnIG9iamVjdHMuXG4gICAgICovXG5cbiAgICAuI3skYm9uaXRvLWZsYWctbmFtZXNwYWNlfWZsYWctLXRvcCxcbiAgICAlI3skYm9uaXRvLWZsYWctbmFtZXNwYWNlfWZsYWctLXRvcCB7XG5cbiAgICAgICAgPiAuI3skYm9uaXRvLWZsYWctbmFtZXNwYWNlfWZsYWdfX2ltZyxcbiAgICAgICAgPiAlI3skYm9uaXRvLWZsYWctbmFtZXNwYWNlfWZsYWdfX2ltZyxcbiAgICAgICAgPiAuI3skYm9uaXRvLWZsYWctbmFtZXNwYWNlfWZsYWdfX2JvZHksXG4gICAgICAgID4gJSN7JGJvbml0by1mbGFnLW5hbWVzcGFjZX1mbGFnX19ib2R5IHtcbiAgICAgICAgICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7XG4gICAgICAgIH1cblxuICAgIH1cblxufVxuXG5AaWYgKCRib25pdG8tZW5hYmxlLWZsYWctLWJvdHRvbSA9PSB0cnVlKSB7XG5cbiAgICAvKipcbiAgICAgKiBWZXJ0aWNhbGx5IGJvdHRvbSBhbGlnbmVkIGZsYWcgb2JqZWN0cy5cbiAgICAgKi9cblxuICAgIC4jeyRib25pdG8tZmxhZy1uYW1lc3BhY2V9ZmxhZy0tYm90dG9tLFxuICAgICUjeyRib25pdG8tZmxhZy1uYW1lc3BhY2V9ZmxhZy0tYm90dG9tIHtcblxuICAgICAgICA+IC4jeyRib25pdG8tZmxhZy1uYW1lc3BhY2V9ZmxhZ19faW1nLFxuICAgICAgICA+ICUjeyRib25pdG8tZmxhZy1uYW1lc3BhY2V9ZmxhZ19faW1nLFxuICAgICAgICA+IC4jeyRib25pdG8tZmxhZy1uYW1lc3BhY2V9ZmxhZ19fYm9keSxcbiAgICAgICAgPiAlI3skYm9uaXRvLWZsYWctbmFtZXNwYWNlfWZsYWdfX2JvZHkge1xuICAgICAgICAgICAgdmVydGljYWwtYWxpZ246IGJvdHRvbTtcbiAgICAgICAgfVxuXG4gICAgfVxuXG59XG5cblxuXG5cbkBpZiAoJGJvbml0by1lbmFibGUtZmxhZy0tcmVzcG9uc2l2ZSA9PSB0cnVlKSB7XG5cbiAgICAvKipcbiAgICAgKiBSZXNwb25zaXZlIGZsYWcgb2JqZWN0cy5cbiAgICAgKlxuICAgICAqIFRoZXJlIGlzIGEgdmVyeSBwcmFnbWF0aWMsIHNpbXBsZSBpbXBsZW1lbnRhdGlvbiBvZiBhIHJlc3BvbnNpdmUgZmxhZ1xuICAgICAqIG9iamVjdCwgd2hpY2ggc2ltcGx5IHBsYWNlcyB0aGUgdGV4dC1jb250ZW50IGJlbmVhdGggdGhlIGltYWdlLWNvbnRlbnQuXG4gICAgICpcbiAgICAgKiBXZSB1c2UgYSBgbWF4LXdpZHRoYCBtZWRpYSBxdWVyeSBiZWNhdXNlOlxuICAgICAqXG4gICAgICogYSkgaXQgaXMgdGhlIGxlYXN0IHZlcmJvc2UgbWV0aG9kIGluIHRlcm1zIG9mIGFtb3VudCBvZiBjb2RlIHJlcXVpcmVkLlxuICAgICAqIGIpIHRoZSBmbGFnIG9iamVjdOKAmXMgZGVmYXVsdCBzdGF0ZSBpcyBpbWFnZS1uZXh0LXRvLXRleHQsIHNvIGl0cyBzdGFja2VkXG4gICAgICogICAgc3RhdGUgaXMgdGhlIGV4Y2VwdGlvbiwgcmF0aGVyIHRoYW4gdGhlIHJ1bGUuXG4gICAgICovXG5cbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAkYm9uaXRvLWZsYWctY29sbGFwc2UtYXQpIHtcblxuICAgICAgICAuI3skYm9uaXRvLWZsYWctbmFtZXNwYWNlfWZsYWctLXJlc3BvbnNpdmUsXG4gICAgICAgICUjeyRib25pdG8tZmxhZy1uYW1lc3BhY2V9ZmxhZy0tcmVzcG9uc2l2ZSB7XG5cbiAgICAgICAgICAgIEBpZiAoJGJvbml0by1lbmFibGUtZmxhZy0tcmV2ID09IHRydWUpIHtcblxuICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICAgICAqIERpc2FibGUgcmV2ZXJzYWwgb2YgY29udGVudCBiZWNhdXNlIHRoZXJlIGlzIG5vIGNvbmNlcHQgb2ZcbiAgICAgICAgICAgICAgICAgKiDigJhyZXZlcnNlZOKAmSBpbiBhIHN0YWNrZWQgbGF5b3V0LlxuICAgICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAgIGRpcmVjdGlvbjogbHRyO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAmLFxuICAgICAgICAgICAgPiAuI3skYm9uaXRvLWZsYWctbmFtZXNwYWNlfWZsYWdfX2ltZyxcbiAgICAgICAgICAgID4gJSN7JGJvbml0by1mbGFnLW5hbWVzcGFjZX1mbGFnX19pbWcsXG4gICAgICAgICAgICA+IC4jeyRib25pdG8tZmxhZy1uYW1lc3BhY2V9ZmxhZ19fYm9keSxcbiAgICAgICAgICAgID4gJSN7JGJvbml0by1mbGFnLW5hbWVzcGFjZX1mbGFnX19ib2R5IHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBSZXdvcmsgdGhlIHNwYWNpbmdzIG9uIHJlZ3VsYXIgZmxhZyBvYmplY3RzLlxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICA+IC4jeyRib25pdG8tZmxhZy1uYW1lc3BhY2V9ZmxhZ19faW1nLFxuICAgICAgICAgICAgPiAlI3skYm9uaXRvLWZsYWctbmFtZXNwYWNlfWZsYWdfX2ltZyB7XG4gICAgICAgICAgICAgICAgcGFkZGluZy1yaWdodDogMDtcbiAgICAgICAgICAgICAgICBwYWRkaW5nLWxlZnQ6ICAwO1xuICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206ICRib25pdG8tZmxhZy1ndXR0ZXI7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIEBpZiAoJGJvbml0by1lbmFibGUtZmxhZy0tdGlueSA9PSB0cnVlKSB7XG5cbiAgICAgICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAgICAgKiBUaW55IHJlc3BvbnNpdmUgZmxhZ3MuXG4gICAgICAgICAgICAgICAgICpcbiAgICAgICAgICAgICAgICAgKiBUYWtlIGEgbGl0dGxlIG1vcmUgaGVhdnktaGFuZGVkIGFwcHJvYWNoIHRvIHJld29ya2luZ1xuICAgICAgICAgICAgICAgICAqIHNwYWNpbmdzIG9uIGZsYWdzIHRoYXQgYXJlIGFsc28gdGlueSBmbGFncyBpbiB0aGVpciByZWd1bGFyXG4gICAgICAgICAgICAgICAgICogc3RhdGUuXG4gICAgICAgICAgICAgICAgICovXG5cbiAgICAgICAgICAgICAgICAmLiN7JGJvbml0by1mbGFnLW5hbWVzcGFjZX1mbGFnLS10aW55LFxuICAgICAgICAgICAgICAgICYlI3skYm9uaXRvLWZsYWctbmFtZXNwYWNlfWZsYWctLXRpbnkge1xuXG4gICAgICAgICAgICAgICAgICAgID4gLiN7JGJvbml0by1mbGFnLW5hbWVzcGFjZX1mbGFnX19pbWcsXG4gICAgICAgICAgICAgICAgICAgID4gJSN7JGJvbml0by1mbGFnLW5hbWVzcGFjZX1mbGFnX19pbWcge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZy1yaWdodDogMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmctbGVmdDogIDA7XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAkYm9uaXRvLWZsYWctZ3V0dGVyLS10aW55O1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgQGlmICgkYm9uaXRvLWVuYWJsZS1mbGFnLS1zbWFsbCA9PSB0cnVlKSB7XG5cbiAgICAgICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAgICAgKiBTbWFsbCByZXNwb25zaXZlIGZsYWdzLlxuICAgICAgICAgICAgICAgICAqXG4gICAgICAgICAgICAgICAgICogVGFrZSBhIGxpdHRsZSBtb3JlIGhlYXZ5LWhhbmRlZCBhcHByb2FjaCB0byByZXdvcmtpbmdcbiAgICAgICAgICAgICAgICAgKiBzcGFjaW5ncyBvbiBmbGFncyB0aGF0IGFyZSBhbHNvIHNtYWxsIGZsYWdzIGluIHRoZWlyIHJlZ3VsYXJcbiAgICAgICAgICAgICAgICAgKiBzdGF0ZS5cbiAgICAgICAgICAgICAgICAgKi9cblxuICAgICAgICAgICAgICAgICYuI3skYm9uaXRvLWZsYWctbmFtZXNwYWNlfWZsYWctLXNtYWxsLFxuICAgICAgICAgICAgICAgICYlI3skYm9uaXRvLWZsYWctbmFtZXNwYWNlfWZsYWctLXNtYWxsIHtcblxuICAgICAgICAgICAgICAgICAgICA+IC4jeyRib25pdG8tZmxhZy1uYW1lc3BhY2V9ZmxhZ19faW1nLFxuICAgICAgICAgICAgICAgICAgICA+ICUjeyRib25pdG8tZmxhZy1uYW1lc3BhY2V9ZmxhZ19faW1nIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IDA7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nLWxlZnQ6ICAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogJGJvbml0by1mbGFnLWd1dHRlci0tc21hbGw7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBAaWYgKCRib25pdG8tZW5hYmxlLWZsYWctLWxhcmdlID09IHRydWUpIHtcblxuICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICAgICAqIExhcmdlIHJlc3BvbnNpdmUgZmxhZ3MuXG4gICAgICAgICAgICAgICAgICpcbiAgICAgICAgICAgICAgICAgKiBUYWtlIGEgbGl0dGxlIG1vcmUgaGVhdnktaGFuZGVkIGFwcHJvYWNoIHRvIHJld29ya2luZ1xuICAgICAgICAgICAgICAgICAqIHNwYWNpbmdzIG9uIGZsYWdzIHRoYXQgYXJlIGFsc28gbGFyZ2UgZmxhZ3MgaW4gdGhlaXIgcmVndWxhclxuICAgICAgICAgICAgICAgICAqIHN0YXRlLlxuICAgICAgICAgICAgICAgICAqL1xuXG4gICAgICAgICAgICAgICAgJi4jeyRib25pdG8tZmxhZy1uYW1lc3BhY2V9ZmxhZy0tbGFyZ2UsXG4gICAgICAgICAgICAgICAgJiUjeyRib25pdG8tZmxhZy1uYW1lc3BhY2V9ZmxhZy0tbGFyZ2Uge1xuXG4gICAgICAgICAgICAgICAgICAgID4gLiN7JGJvbml0by1mbGFnLW5hbWVzcGFjZX1mbGFnX19pbWcsXG4gICAgICAgICAgICAgICAgICAgID4gJSN7JGJvbml0by1mbGFnLW5hbWVzcGFjZX1mbGFnX19pbWcge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZy1yaWdodDogMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmctbGVmdDogIDA7XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAkYm9uaXRvLWZsYWctZ3V0dGVyLS1sYXJnZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIEBpZiAoJGJvbml0by1lbmFibGUtZmxhZy0taHVnZSA9PSB0cnVlKSB7XG5cbiAgICAgICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAgICAgKiBIdWdlIHJlc3BvbnNpdmUgZmxhZ3MuXG4gICAgICAgICAgICAgICAgICpcbiAgICAgICAgICAgICAgICAgKiBUYWtlIGEgbGl0dGxlIG1vcmUgaGVhdnktaGFuZGVkIGFwcHJvYWNoIHRvIHJld29ya2luZ1xuICAgICAgICAgICAgICAgICAqIHNwYWNpbmdzIG9uIGZsYWdzIHRoYXQgYXJlIGFsc28gaHVnZSBmbGFncyBpbiB0aGVpciByZWd1bGFyXG4gICAgICAgICAgICAgICAgICogc3RhdGUuXG4gICAgICAgICAgICAgICAgICovXG5cbiAgICAgICAgICAgICAgICAmLiN7JGJvbml0by1mbGFnLW5hbWVzcGFjZX1mbGFnLS1odWdlLFxuICAgICAgICAgICAgICAgICYlI3skYm9uaXRvLWZsYWctbmFtZXNwYWNlfWZsYWctLWh1Z2Uge1xuXG4gICAgICAgICAgICAgICAgICAgID4gLiN7JGJvbml0by1mbGFnLW5hbWVzcGFjZX1mbGFnX19pbWcsXG4gICAgICAgICAgICAgICAgICAgID4gJSN7JGJvbml0by1mbGFnLW5hbWVzcGFjZX1mbGFnX19pbWcge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZy1yaWdodDogMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmctbGVmdDogIDA7XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAkYm9uaXRvLWZsYWctZ3V0dGVyLS1odWdlO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG5cbiAgICB9XG5cbn1cbiIsIi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlxcXG4gICAgI0xBWU9VVFxuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuLyoqXG4gKiBUaGUgZnJhbWV3b3JrIGxheW91dCBzeXN0ZW0gdXNlcyBgYm94LXNpemluZzogYm9yZGVyLWJveDtgIGFuZFxuICogYGRpc3BsYXk6IGlubGluZS1ibG9jaztgIHRvIGNyZWF0ZSBhbiBleHRyZW1lbHkgcG93ZXJmdWwsIGZsZXhpYmxlXG4gKiBhbHRlcm5hdGl2ZSB0byB0aGUgdHJhZGl0aW9uYWwgZ3JpZCBzeXN0ZW0uIENvbWJpbmUgdGhlIGxheW91dCBpdGVtcyB3aXRoXG4gKiB0aGUgd2lkdGhzIGZvdW5kIGluIGB0cnVtcHMud2lkdGhzYC5cbiAqL1xuXG4vLyBQcmVkZWZpbmUgdGhlIHZhcmlhYmxlcyBiZWxvdyBpbiBvcmRlciB0byBhbHRlciBhbmQgZW5hYmxlIHNwZWNpZmljIGZlYXR1cmVzLlxuJGJvbml0by1sYXlvdXQtbmFtZXNwYWNlOiAgICAgICAgJGJvbml0by1uYW1lc3BhY2UgIWRlZmF1bHQ7XG5cbiRib25pdG8tbGF5b3V0LWd1dHRlcjogICAgICAgICAgICRib25pdG8tYmFzZS1zcGFjaW5nLXVuaXQgIWRlZmF1bHQ7XG4kYm9uaXRvLWxheW91dC1ndXR0ZXItLXRpbnk6ICAgICAgIHF1YXJ0ZXIoJGJvbml0by1sYXlvdXQtZ3V0dGVyKSAhZGVmYXVsdDtcbiRib25pdG8tbGF5b3V0LWd1dHRlci0tc21hbGw6ICAgICAgICBoYWx2ZSgkYm9uaXRvLWxheW91dC1ndXR0ZXIpICFkZWZhdWx0O1xuJGJvbml0by1sYXlvdXQtZ3V0dGVyLS1sYXJnZTogICAgICAgZG91YmxlKCRib25pdG8tbGF5b3V0LWd1dHRlcikgIWRlZmF1bHQ7XG4kYm9uaXRvLWxheW91dC1ndXR0ZXItLWh1Z2U6ICAgICBxdWFkcnVwbGUoJGJvbml0by1sYXlvdXQtZ3V0dGVyKSAhZGVmYXVsdDtcblxuJGJvbml0by1lbmFibGUtbGF5b3V0LS10aW55OiAgICAgZmFsc2UgIWRlZmF1bHQ7XG4kYm9uaXRvLWVuYWJsZS1sYXlvdXQtLXNtYWxsOiAgICBmYWxzZSAhZGVmYXVsdDtcbiRib25pdG8tZW5hYmxlLWxheW91dC0tbGFyZ2U6ICAgIGZhbHNlICFkZWZhdWx0O1xuJGJvbml0by1lbmFibGUtbGF5b3V0LS1odWdlOiAgICAgZmFsc2UgIWRlZmF1bHQ7XG4kYm9uaXRvLWVuYWJsZS1sYXlvdXQtLWZsdXNoOiAgICBmYWxzZSAhZGVmYXVsdDtcbiRib25pdG8tZW5hYmxlLWxheW91dC0tcmV2OiAgICAgIGZhbHNlICFkZWZhdWx0O1xuJGJvbml0by1lbmFibGUtbGF5b3V0LS1taWRkbGU6ICAgZmFsc2UgIWRlZmF1bHQ7XG4kYm9uaXRvLWVuYWJsZS1sYXlvdXQtLWJvdHRvbTogICBmYWxzZSAhZGVmYXVsdDtcbiRib25pdG8tZW5hYmxlLWxheW91dC0tcmlnaHQ6ICAgIGZhbHNlICFkZWZhdWx0O1xuJGJvbml0by1lbmFibGUtbGF5b3V0LS1jZW50ZXI6ICAgZmFsc2UgIWRlZmF1bHQ7XG4kYm9uaXRvLWVuYWJsZS1sYXlvdXQtLWF1dG86ICAgICBmYWxzZSAhZGVmYXVsdDtcblxuXG5cblxuXG4vLyBIZXJlIHdlIHNldCBhIHZhcmlhYmxlIGFzc3VtaW5nIHRoYXQgYGJveC1zaXppbmc6IGJvcmRlci1ib3g7YCBpcyBub3Qgc2V0XG4vLyBnbG9iYWxseS4gSWYgaXQgaGFzIGJlZW4gcHJldmlvdXNseSBiZWVuIGRlZmluZWQsIHRoZSBmb2xsb3dpbmcgdmFyaWFibGUgd2lsbFxuLy8gYmUgb3ZlcnJpZGVuIGFuZCB3aWxsIGJlIHNldCB0byBgdHJ1ZWAuXG4kYm9uaXRvLWdsb2JhbC1ib3JkZXItYm94OiBmYWxzZSAhZGVmYXVsdDtcblxuXG5cblxuXG4vKipcbiAqIEJlZ2luIGEgbGF5b3V0IGdyb3VwLlxuICovXG4uI3skYm9uaXRvLWxheW91dC1uYW1lc3BhY2V9bGF5b3V0LFxuJSN7JGJvbml0by1sYXlvdXQtbmFtZXNwYWNlfWxheW91dCB7XG4gICAgbGlzdC1zdHlsZTogbm9uZTtcbiAgICBtYXJnaW46ICAwO1xuICAgIHBhZGRpbmc6IDA7XG4gICAgbWFyZ2luLWxlZnQ6IC0kYm9uaXRvLWxheW91dC1ndXR0ZXI7XG59XG5cbiAgICAvKipcbiAgICAgKiAxLiBDYXVzZSBjb2x1bW5zIHRvIHN0YWNrIHNpZGUtYnktc2lkZS5cbiAgICAgKiAyLiBTcGFjZSBjb2x1bW5zIGFwYXJ0LlxuICAgICAqIDMuIEFsaWduIGNvbHVtbnMgdG8gdGhlIHRvcHMgb2YgZWFjaCBvdGhlci5cbiAgICAgKiA0LiBGdWxsLXdpZHRoIHVubGVzcyB0b2xkIHRvIGJlaGF2ZSBvdGhlcndpc2UuXG4gICAgICogNS4gUmVxdWlyZWQgdG8gY29tYmluZSBmbHVpZCB3aWR0aHMgYW5kIGZpeGVkIGd1dHRlcnMuXG4gICAgICovXG4gICAgLiN7JGJvbml0by1sYXlvdXQtbmFtZXNwYWNlfWxheW91dF9faXRlbSxcbiAgICAlI3skYm9uaXRvLWxheW91dC1uYW1lc3BhY2V9bGF5b3V0X19pdGVtIHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOyAvKiBbMV0gKi9cbiAgICAgICAgcGFkZGluZy1sZWZ0OiAkYm9uaXRvLWxheW91dC1ndXR0ZXI7IC8qIFsyXSAqL1xuICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wOyAvKiBbM10gKi9cbiAgICAgICAgd2lkdGg6IDEwMCU7IC8qIFs0XSAqL1xuXG4gICAgICAgIEBpZiAkYm9uaXRvLWdsb2JhbC1ib3JkZXItYm94ID09IGZhbHNlIHtcbiAgICAgICAgICAgIC13ZWJraXQtYm94LXNpemluZzogYm9yZGVyLWJveDsgLyogWzVdICovXG4gICAgICAgICAgICAgICAtbW96LWJveC1zaXppbmc6IGJvcmRlci1ib3g7IC8qIFs1XSAqL1xuICAgICAgICAgICAgICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OyAvKiBbNV0gKi9cbiAgICAgICAgfVxuXG4gICAgfVxuXG5cblxuXG5cbkBpZiAoJGJvbml0by1lbmFibGUtbGF5b3V0LS10aW55ID09IHRydWUpIHtcblxuICAgIC8qKlxuICAgICAqIExheW91dHMgd2l0aCB0aW55IGd1dHRlcnMuXG4gICAgICovXG5cbiAgICAuI3skYm9uaXRvLWxheW91dC1uYW1lc3BhY2V9bGF5b3V0LS10aW55LFxuICAgICUjeyRib25pdG8tbGF5b3V0LW5hbWVzcGFjZX1sYXlvdXQtLXRpbnkge1xuICAgICAgICBtYXJnaW4tbGVmdDogLSgkYm9uaXRvLWxheW91dC1ndXR0ZXItLXRpbnkpO1xuXG4gICAgICAgID4gLiN7JGJvbml0by1sYXlvdXQtbmFtZXNwYWNlfWxheW91dF9faXRlbSxcbiAgICAgICAgPiAlI3skYm9uaXRvLWxheW91dC1uYW1lc3BhY2V9bGF5b3V0X19pdGVtIHtcbiAgICAgICAgICAgIHBhZGRpbmctbGVmdDogJGJvbml0by1sYXlvdXQtZ3V0dGVyLS10aW55O1xuICAgICAgICB9XG5cbiAgICB9XG5cbn1cblxuQGlmICgkYm9uaXRvLWVuYWJsZS1sYXlvdXQtLXNtYWxsID09IHRydWUpIHtcblxuICAgIC8qKlxuICAgICAqIExheW91dHMgd2l0aCBzbWFsbCBndXR0ZXJzLlxuICAgICAqL1xuXG4gICAgLiN7JGJvbml0by1sYXlvdXQtbmFtZXNwYWNlfWxheW91dC0tc21hbGwsXG4gICAgJSN7JGJvbml0by1sYXlvdXQtbmFtZXNwYWNlfWxheW91dC0tc21hbGwge1xuICAgICAgICBtYXJnaW4tbGVmdDogLSgkYm9uaXRvLWxheW91dC1ndXR0ZXItLXNtYWxsKTtcblxuICAgICAgICA+IC4jeyRib25pdG8tbGF5b3V0LW5hbWVzcGFjZX1sYXlvdXRfX2l0ZW0sXG4gICAgICAgID4gJSN7JGJvbml0by1sYXlvdXQtbmFtZXNwYWNlfWxheW91dF9faXRlbSB7XG4gICAgICAgICAgICBwYWRkaW5nLWxlZnQ6ICRib25pdG8tbGF5b3V0LWd1dHRlci0tc21hbGw7XG4gICAgICAgIH1cblxuICAgIH1cblxufVxuXG5AaWYgKCRib25pdG8tZW5hYmxlLWxheW91dC0tbGFyZ2UgPT0gdHJ1ZSkge1xuXG4gICAgLyoqXG4gICAgICogTGF5b3V0cyB3aXRoIGxhcmdlIGd1dHRlcnMuXG4gICAgICovXG5cbiAgICAuI3skYm9uaXRvLWxheW91dC1uYW1lc3BhY2V9bGF5b3V0LS1sYXJnZSxcbiAgICAlI3skYm9uaXRvLWxheW91dC1uYW1lc3BhY2V9bGF5b3V0LS1sYXJnZSB7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAtKCRib25pdG8tbGF5b3V0LWd1dHRlci0tbGFyZ2UpO1xuXG4gICAgICAgID4gLiN7JGJvbml0by1sYXlvdXQtbmFtZXNwYWNlfWxheW91dF9faXRlbSxcbiAgICAgICAgPiAlI3skYm9uaXRvLWxheW91dC1uYW1lc3BhY2V9bGF5b3V0X19pdGVtIHtcbiAgICAgICAgICAgIHBhZGRpbmctbGVmdDogJGJvbml0by1sYXlvdXQtZ3V0dGVyLS1sYXJnZTtcbiAgICAgICAgfVxuXG4gICAgfVxuXG59XG5cbkBpZiAoJGJvbml0by1lbmFibGUtbGF5b3V0LS1odWdlID09IHRydWUpIHtcblxuICAgIC8qKlxuICAgICAqIExheW91dHMgd2l0aCBodWdlIGd1dHRlcnMuXG4gICAgICovXG5cbiAgICAuI3skYm9uaXRvLWxheW91dC1uYW1lc3BhY2V9bGF5b3V0LS1odWdlLFxuICAgICUjeyRib25pdG8tbGF5b3V0LW5hbWVzcGFjZX1sYXlvdXQtLWh1Z2Uge1xuICAgICAgICBtYXJnaW4tbGVmdDogLSgkYm9uaXRvLWxheW91dC1ndXR0ZXItLWh1Z2UpO1xuXG4gICAgICAgID4gLiN7JGJvbml0by1sYXlvdXQtbmFtZXNwYWNlfWxheW91dF9faXRlbSxcbiAgICAgICAgPiAlI3skYm9uaXRvLWxheW91dC1uYW1lc3BhY2V9bGF5b3V0X19pdGVtIHtcbiAgICAgICAgICAgIHBhZGRpbmctbGVmdDogJGJvbml0by1sYXlvdXQtZ3V0dGVyLS1odWdlO1xuICAgICAgICB9XG5cbiAgICB9XG5cbn1cblxuXG5cblxuXG5AaWYgKCRib25pdG8tZW5hYmxlLWxheW91dC0tZmx1c2ggPT0gdHJ1ZSkge1xuXG4gICAgLyoqXG4gICAgICogTGF5b3V0cyB3aXRoIG5vIGd1dHRlcnMuXG4gICAgICovXG5cbiAgICAuI3skYm9uaXRvLWxheW91dC1uYW1lc3BhY2V9bGF5b3V0LS1mbHVzaCxcbiAgICAlI3skYm9uaXRvLWxheW91dC1uYW1lc3BhY2V9bGF5b3V0LS1mbHVzaCB7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAwO1xuXG4gICAgICAgID4gLiN7JGJvbml0by1sYXlvdXQtbmFtZXNwYWNlfWxheW91dF9faXRlbSxcbiAgICAgICAgPiAlI3skYm9uaXRvLWxheW91dC1uYW1lc3BhY2V9bGF5b3V0X19pdGVtIHtcbiAgICAgICAgICAgIHBhZGRpbmctbGVmdDogMDtcbiAgICAgICAgfVxuXG4gICAgfVxuXG59XG5cblxuXG5cblxuQGlmICgkYm9uaXRvLWVuYWJsZS1sYXlvdXQtLXJldiA9PSB0cnVlKSB7XG5cbiAgICAvKipcbiAgICAgKiBSZXZlcnNlZCByZW5kZXJlZCBvcmRlciBvZiBsYXlvdXQgaXRlbXMsIGUuZy4gaXRlbXMgMSwgMiwgMywgNCBpbiB5b3VyXG4gICAgICogbWFya3VwIHdpbGwgZGlzcGxheSBpbiBvcmRlciA0LCAzLCAyLCAxIG9uIHlvdXIgcGFnZS5cbiAgICAgKi9cblxuICAgIC4jeyRib25pdG8tbGF5b3V0LW5hbWVzcGFjZX1sYXlvdXQtLXJldixcbiAgICAlI3skYm9uaXRvLWxheW91dC1uYW1lc3BhY2V9bGF5b3V0LS1yZXYge1xuICAgICAgICBkaXJlY3Rpb246IHJ0bDtcbiAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcblxuICAgICAgICA+IC4jeyRib25pdG8tbGF5b3V0LW5hbWVzcGFjZX1sYXlvdXRfX2l0ZW0sXG4gICAgICAgID4gJSN7JGJvbml0by1sYXlvdXQtbmFtZXNwYWNlfWxheW91dF9faXRlbSB7XG4gICAgICAgICAgICBkaXJlY3Rpb246IGx0cjtcbiAgICAgICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgICAgIH1cblxuICAgIH1cblxufVxuXG5cblxuXG5cbkBpZiAoJGJvbml0by1lbmFibGUtbGF5b3V0LS1taWRkbGUgPT0gdHJ1ZSkge1xuXG4gICAgLyoqXG4gICAgICogQWxpZ24gbGF5b3V0IGl0ZW1zIHRvIHRoZSB2ZXJ0aWNhbCBjZW50ZXJzIG9mIGVhY2ggb3RoZXIuXG4gICAgICovXG5cbiAgICAuI3skYm9uaXRvLWxheW91dC1uYW1lc3BhY2V9bGF5b3V0LS1taWRkbGUsXG4gICAgJSN7JGJvbml0by1sYXlvdXQtbmFtZXNwYWNlfWxheW91dC0tbWlkZGxlIHtcblxuICAgICAgICA+IC4jeyRib25pdG8tbGF5b3V0LW5hbWVzcGFjZX1sYXlvdXRfX2l0ZW0sXG4gICAgICAgID4gJSN7JGJvbml0by1sYXlvdXQtbmFtZXNwYWNlfWxheW91dF9faXRlbSB7XG4gICAgICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgICAgICB9XG5cbiAgICB9XG5cbn1cblxuQGlmICgkYm9uaXRvLWVuYWJsZS1sYXlvdXQtLWJvdHRvbSA9PSB0cnVlKSB7XG5cbiAgICAvKipcbiAgICAgKiBBbGlnbiBsYXlvdXQgaXRlbXMgdG8gdGhlIHZlcnRpY2FsIGJvdHRvbXMgb2YgZWFjaCBvdGhlci5cbiAgICAgKi9cblxuICAgIC4jeyRib25pdG8tbGF5b3V0LW5hbWVzcGFjZX1sYXlvdXQtLWJvdHRvbSxcbiAgICAlI3skYm9uaXRvLWxheW91dC1uYW1lc3BhY2V9bGF5b3V0LS1ib3R0b20ge1xuXG4gICAgICAgID4gLiN7JGJvbml0by1sYXlvdXQtbmFtZXNwYWNlfWxheW91dF9faXRlbSxcbiAgICAgICAgPiAlI3skYm9uaXRvLWxheW91dC1uYW1lc3BhY2V9bGF5b3V0X19pdGVtIHtcbiAgICAgICAgICAgIHZlcnRpY2FsLWFsaWduOiBib3R0b207XG4gICAgICAgIH1cblxuICAgIH1cblxufVxuXG5cblxuXG5cbkBpZiAoJGJvbml0by1lbmFibGUtbGF5b3V0LS1yaWdodCA9PSB0cnVlKSB7XG5cbiAgICAvKipcbiAgICAgKiBNYWtlIHRoZSBsYXlvdXQgaXRlbXMgZmlsbCB1cCBmcm9tIHRoZSByaWdodCBoYW5kIHNpZGUuXG4gICAgICovXG5cbiAgICAuI3skYm9uaXRvLWxheW91dC1uYW1lc3BhY2V9bGF5b3V0LS1yaWdodCxcbiAgICAlI3skYm9uaXRvLWxheW91dC1uYW1lc3BhY2V9bGF5b3V0LS1yaWdodCB7XG4gICAgICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuXG4gICAgICAgID4gLiN7JGJvbml0by1sYXlvdXQtbmFtZXNwYWNlfWxheW91dF9faXRlbSxcbiAgICAgICAgPiAlI3skYm9uaXRvLWxheW91dC1uYW1lc3BhY2V9bGF5b3V0X19pdGVtIHtcbiAgICAgICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgICAgIH1cblxuICAgIH1cblxufVxuXG5AaWYgKCRib25pdG8tZW5hYmxlLWxheW91dC0tY2VudGVyID09IHRydWUpIHtcblxuICAgIC8qKlxuICAgICAqIE1ha2UgdGhlIGxheW91dCBpdGVtcyBmaWxsIHVwIGZyb20gdGhlIGNlbnRlciBvdXR3YXJkLlxuICAgICAqL1xuXG4gICAgLiN7JGJvbml0by1sYXlvdXQtbmFtZXNwYWNlfWxheW91dC0tY2VudGVyLFxuICAgICUjeyRib25pdG8tbGF5b3V0LW5hbWVzcGFjZX1sYXlvdXQtLWNlbnRlciB7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcblxuICAgICAgICA+IC4jeyRib25pdG8tbGF5b3V0LW5hbWVzcGFjZX1sYXlvdXRfX2l0ZW0sXG4gICAgICAgID4gJSN7JGJvbml0by1sYXlvdXQtbmFtZXNwYWNlfWxheW91dF9faXRlbSB7XG4gICAgICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgICAgICB9XG5cbiAgICB9XG5cbn1cblxuXG5cblxuXG5AaWYgKCRib25pdG8tZW5hYmxlLWxheW91dC0tYXV0byA9PSB0cnVlKSB7XG5cbiAgICAvKipcbiAgICAgKiBDYXVzZSBsYXlvdXQgaXRlbXMgdG8gdGFrZSB1cCBhIG5vbi1leHBsaWNpdCBhbW91bnQgb2Ygd2lkdGguXG4gICAgICovXG4gICAgLiN7JGJvbml0by1sYXlvdXQtbmFtZXNwYWNlfWxheW91dC0tYXV0byxcbiAgICAlI3skYm9uaXRvLWxheW91dC1uYW1lc3BhY2V9bGF5b3V0LS1hdXRvIHtcblxuICAgICAgICA+IC4jeyRib25pdG8tbGF5b3V0LW5hbWVzcGFjZX1sYXlvdXRfX2l0ZW0sXG4gICAgICAgID4gJSN7JGJvbml0by1sYXlvdXQtbmFtZXNwYWNlfWxheW91dF9faXRlbSB7XG4gICAgICAgICAgICB3aWR0aDogYXV0bztcbiAgICAgICAgfVxuXG4gICAgfVxuXG59XG4iLCIvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcXFxuICAgICNMSVNULUlOTElORVxuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuLyoqXG4gKiBUaGUgbGlzdC1pbmxpbmUgb2JqZWN0IHNpbXBseSBkaXNwbGF5cyBhIGxpc3Qgb2YgaXRlbXMgaW4gb25lIGxpbmUuXG4gKi9cblxuLy8gUHJlZGVmaW5lIHRoZSB2YXJpYWJsZXMgYmVsb3cgaW4gb3JkZXIgdG8gYWx0ZXIgYW5kIGVuYWJsZSBzcGVjaWZpYyBmZWF0dXJlcy5cbiRib25pdG8tbGlzdC1pbmxpbmUtbmFtZXNwYWNlOiAgICAgICAgICAgJGJvbml0by1uYW1lc3BhY2UgIWRlZmF1bHQ7XG5cbiRib25pdG8tZW5hYmxlLWxpc3QtaW5saW5lLS1kZWxpbWl0ZWQ6ICAgZmFsc2UgIWRlZmF1bHQ7XG4kYm9uaXRvLWxpc3QtaW5saW5lLWRlbGltaXQtY2hhcmFjdGVyOiAgIFwiLFxcMDBBMFwiICFkZWZhdWx0O1xuXG4uI3skYm9uaXRvLWxpc3QtaW5saW5lLW5hbWVzcGFjZX1saXN0LWlubGluZSxcbiUjeyRib25pdG8tbGlzdC1pbmxpbmUtbmFtZXNwYWNlfWxpc3QtaW5saW5lIHtcbiAgICBtYXJnaW46ICAwO1xuICAgIHBhZGRpbmc6IDA7XG4gICAgbGlzdC1zdHlsZTogbm9uZTtcblxuICAgID4gbGkge1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgfVxuXG59XG5cblxuXG5cblxuQGlmICgkYm9uaXRvLWVuYWJsZS1saXN0LWlubGluZS0tZGVsaW1pdGVkID09IHRydWUpIHtcblxuICAgIC8qKlxuICAgICAqIENvbW1hIGRlbGltaXRlZCBsaXN0IHRvIHNlbWFudGljYWxseSBtYXJrIHVwIGxpc3RzIG9mIHRhZ3MsIGV0Yy5cbiAgICAgKlxuICAgICAqIE4uQi4gVGhpcyBjb21wb25lbnQgcmVxdWlyZXMgdGhhdCB5b3UgcmVtb3ZlIHRoZSB3aGl0ZXNwYWNlIGJldHdlZW4gTElzLlxuICAgICAqICAgICAgVGhlIHNpbXBsZXN0IChhbmQgdmFsaWQpIHdheSB0byBhY2hpZXZlIHRoaXMgaXMgYnkgb21pdHRpbmcgdGhlXG4gICAgICogICAgICBjbG9zaW5nIGA8L2xpPmAgdGFnLlxuICAgICAqL1xuXG4gICAgLiN7JGJvbml0by1saXN0LWlubGluZS1uYW1lc3BhY2V9bGlzdC1pbmxpbmUtLWRlbGltaXRlZCxcbiAgICAlI3skYm9uaXRvLWxpc3QtaW5saW5lLW5hbWVzcGFjZX1saXN0LWlubGluZS0tZGVsaW1pdGVkIHtcblxuICAgICAgICA+IGxpICsgbGkge1xuXG4gICAgICAgICAgICAmOmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgY29udGVudDogXCIjeyRib25pdG8tbGlzdC1pbmxpbmUtZGVsaW1pdC1jaGFyYWN0ZXJ9XCI7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuXG4gICAgfVxuXG59XG4iLCIvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcXFxuICAgICNMSVNULVVJXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4vKipcbiAqIFRoZSBVSSBsaXN0IG9iamVjdCBjcmVhdGVzIGJsb2NreSBsaXN0IGl0ZW1zIHdpdGggYSBrZXlsaW5lIHNlcGFyYXRvciBvdXQgb2ZcbiAqIGEgYHVsYCBvciBgb2xgLlxuICovXG5cbi8vIFByZWRlZmluZSB0aGUgdmFyaWFibGVzIGJlbG93IGluIG9yZGVyIHRvIGFsdGVyIGFuZCBlbmFibGUgc3BlY2lmaWMgZmVhdHVyZXMuXG4kYm9uaXRvLWxpc3QtdWktbmFtZXNwYWNlOiAgICAgICAkYm9uaXRvLW5hbWVzcGFjZSAhZGVmYXVsdDtcblxuJGJvbml0by1saXN0LXVpLXBhZGRpbmc6ICAgICAgICAgJGJvbml0by1iYXNlLXNwYWNpbmctdW5pdCAhZGVmYXVsdDtcbiRib25pdG8tbGlzdC11aS1wYWRkaW5nLS10aW55OiAgICAgcXVhcnRlcigkYm9uaXRvLWxpc3QtdWktcGFkZGluZykgIWRlZmF1bHQ7XG4kYm9uaXRvLWxpc3QtdWktcGFkZGluZy0tc21hbGw6ICAgICAgaGFsdmUoJGJvbml0by1saXN0LXVpLXBhZGRpbmcpICFkZWZhdWx0O1xuJGJvbml0by1saXN0LXVpLXBhZGRpbmctLWxhcmdlOiAgICAgZG91YmxlKCRib25pdG8tbGlzdC11aS1wYWRkaW5nKSAhZGVmYXVsdDtcbiRib25pdG8tbGlzdC11aS1wYWRkaW5nLS1odWdlOiAgIHF1YWRydXBsZSgkYm9uaXRvLWxpc3QtdWktcGFkZGluZykgIWRlZmF1bHQ7XG5cbiRib25pdG8tbGlzdC11aS1ib3JkZXItd2lkdGg6ICAgIDFweCAhZGVmYXVsdDtcbiRib25pdG8tbGlzdC11aS1ib3JkZXItc3R5bGU6ICAgIHNvbGlkICFkZWZhdWx0O1xuJGJvbml0by1saXN0LXVpLWJvcmRlci1jb2xvcjogICAgI2NjYyAhZGVmYXVsdDtcblxuJGJvbml0by1lbmFibGUtbGlzdC11aS0tdGlueTogICAgZmFsc2UgIWRlZmF1bHQ7XG4kYm9uaXRvLWVuYWJsZS1saXN0LXVpLS1zbWFsbDogICBmYWxzZSAhZGVmYXVsdDtcbiRib25pdG8tZW5hYmxlLWxpc3QtdWktLWxhcmdlOiAgIGZhbHNlICFkZWZhdWx0O1xuJGJvbml0by1lbmFibGUtbGlzdC11aS0taHVnZTogICAgZmFsc2UgIWRlZmF1bHQ7XG5cbi4jeyRib25pdG8tbGlzdC11aS1uYW1lc3BhY2V9bGlzdC11aSxcbiUjeyRib25pdG8tbGlzdC11aS1uYW1lc3BhY2V9bGlzdC11aSxcbiAgICAuI3skYm9uaXRvLWxpc3QtdWktbmFtZXNwYWNlfWxpc3QtdWlfX2l0ZW0sXG4gICAgJSN7JGJvbml0by1saXN0LXVpLW5hbWVzcGFjZX1saXN0LXVpX19pdGVtIHtcbiAgICAgICAgYm9yZGVyOiAwICRib25pdG8tbGlzdC11aS1ib3JkZXItc3R5bGUgJGJvbml0by1saXN0LXVpLWJvcmRlci1jb2xvcjtcbiAgICB9XG5cbi4jeyRib25pdG8tbGlzdC11aS1uYW1lc3BhY2V9bGlzdC11aSxcbiUjeyRib25pdG8tbGlzdC11aS1uYW1lc3BhY2V9bGlzdC11aSB7XG4gICAgbWFyZ2luOiAgMDtcbiAgICBwYWRkaW5nOiAwO1xuICAgIGxpc3Qtc3R5bGU6IG5vbmU7XG4gICAgYm9yZGVyLXRvcC13aWR0aDogJGJvbml0by1saXN0LXVpLWJvcmRlci13aWR0aDtcblxuICAgID4gbGkge1xuICAgICAgICBAZXh0ZW5kICUjeyRib25pdG8tbGlzdC11aS1uYW1lc3BhY2V9bGlzdC11aV9faXRlbTtcbiAgICB9XG5cbn1cblxuICAgIC4jeyRib25pdG8tbGlzdC11aS1uYW1lc3BhY2V9bGlzdC11aV9faXRlbSxcbiAgICAlI3skYm9uaXRvLWxpc3QtdWktbmFtZXNwYWNlfWxpc3QtdWlfX2l0ZW0ge1xuICAgICAgICBwYWRkaW5nOiAkYm9uaXRvLWxpc3QtdWktcGFkZGluZztcbiAgICAgICAgYm9yZGVyLWJvdHRvbS13aWR0aDogJGJvbml0by1saXN0LXVpLWJvcmRlci13aWR0aDtcbiAgICB9XG5cblxuXG5cblxuQGlmICgkYm9uaXRvLWVuYWJsZS1saXN0LXVpLS10aW55ID09IHRydWUpIHtcblxuICAgIC8qKlxuICAgICAqIFRpbnkgbGlzdC11aXMuXG4gICAgICovXG5cbiAgICAuI3skYm9uaXRvLWxpc3QtdWktbmFtZXNwYWNlfWxpc3QtdWktLXRpbnksXG4gICAgJSN7JGJvbml0by1saXN0LXVpLW5hbWVzcGFjZX1saXN0LXVpLS10aW55IHtcblxuICAgICAgICA+IC4jeyRib25pdG8tbGlzdC11aS1uYW1lc3BhY2V9bGlzdC11aV9faXRlbSxcbiAgICAgICAgPiAlI3skYm9uaXRvLWxpc3QtdWktbmFtZXNwYWNlfWxpc3QtdWlfX2l0ZW0ge1xuICAgICAgICAgICAgcGFkZGluZzogJGJvbml0by1saXN0LXVpLXBhZGRpbmctLXRpbnk7XG4gICAgICAgIH1cblxuICAgIH1cblxufVxuXG5AaWYgKCRib25pdG8tZW5hYmxlLWxpc3QtdWktLXNtYWxsID09IHRydWUpIHtcblxuICAgIC8qKlxuICAgICAqIFNtYWxsIGxpc3QtdWlzLlxuICAgICAqL1xuXG4gICAgLiN7JGJvbml0by1saXN0LXVpLW5hbWVzcGFjZX1saXN0LXVpLS1zbWFsbCxcbiAgICAlI3skYm9uaXRvLWxpc3QtdWktbmFtZXNwYWNlfWxpc3QtdWktLXNtYWxsIHtcblxuICAgICAgICA+IC4jeyRib25pdG8tbGlzdC11aS1uYW1lc3BhY2V9bGlzdC11aV9faXRlbSxcbiAgICAgICAgPiAlI3skYm9uaXRvLWxpc3QtdWktbmFtZXNwYWNlfWxpc3QtdWlfX2l0ZW0ge1xuICAgICAgICAgICAgcGFkZGluZzogJGJvbml0by1saXN0LXVpLXBhZGRpbmctLXNtYWxsO1xuICAgICAgICB9XG5cbiAgICB9XG5cbn1cblxuQGlmICgkYm9uaXRvLWVuYWJsZS1saXN0LXVpLS1sYXJnZSA9PSB0cnVlKSB7XG5cbiAgICAvKipcbiAgICAgKiBMYXJnZSBsaXN0LXVpcy5cbiAgICAgKi9cblxuICAgIC4jeyRib25pdG8tbGlzdC11aS1uYW1lc3BhY2V9bGlzdC11aS0tbGFyZ2UsXG4gICAgJSN7JGJvbml0by1saXN0LXVpLW5hbWVzcGFjZX1saXN0LXVpLS1sYXJnZSB7XG5cbiAgICAgICAgPiAuI3skYm9uaXRvLWxpc3QtdWktbmFtZXNwYWNlfWxpc3QtdWlfX2l0ZW0sXG4gICAgICAgID4gJSN7JGJvbml0by1saXN0LXVpLW5hbWVzcGFjZX1saXN0LXVpX19pdGVtIHtcbiAgICAgICAgICAgIHBhZGRpbmc6ICRib25pdG8tbGlzdC11aS1wYWRkaW5nLS1sYXJnZTtcbiAgICAgICAgfVxuXG4gICAgfVxuXG59XG5cbkBpZiAoJGJvbml0by1lbmFibGUtbGlzdC11aS0taHVnZSA9PSB0cnVlKSB7XG5cbiAgICAvKipcbiAgICAgKiBIdWdlIGxpc3QtdWlzLlxuICAgICAqL1xuXG4gICAgLiN7JGJvbml0by1saXN0LXVpLW5hbWVzcGFjZX1saXN0LXVpLS1odWdlLFxuICAgICUjeyRib25pdG8tbGlzdC11aS1uYW1lc3BhY2V9bGlzdC11aS0taHVnZSB7XG5cbiAgICAgICAgPiAuI3skYm9uaXRvLWxpc3QtdWktbmFtZXNwYWNlfWxpc3QtdWlfX2l0ZW0sXG4gICAgICAgID4gJSN7JGJvbml0by1saXN0LXVpLW5hbWVzcGFjZX1saXN0LXVpX19pdGVtIHtcbiAgICAgICAgICAgIHBhZGRpbmc6ICRib25pdG8tbGlzdC11aS1wYWRkaW5nLS1odWdlO1xuICAgICAgICB9XG5cbiAgICB9XG5cbn1cbiIsIi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlxcXG4gICAgI01FRElBXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4vKipcbiAqIFBsYWNlIGFueSBpbWFnZS0gYW5kIHRleHQtbGlrZSBjb250ZW50IHNpZGUtYnktc2lkZSwgYXMgcGVyOlxuICogc3R1YmJvcm5lbGxhLm9yZy9jb250ZW50LzIwMTAvMDYvMjUvdGhlLW1lZGlhLW9iamVjdC1zYXZlcy1odW5kcmVkcy1vZi1saW5lcy1vZi1jb2RlXG4gKi9cblxuLy8gUHJlZGVmaW5lIHRoZSB2YXJpYWJsZXMgYmVsb3cgaW4gb3JkZXIgdG8gYWx0ZXIgYW5kIGVuYWJsZSBzcGVjaWZpYyBmZWF0dXJlcy5cbiRib25pdG8tbWVkaWEtbmFtZXNwYWNlOiAgICAgICAgICAgICAkYm9uaXRvLW5hbWVzcGFjZSAhZGVmYXVsdDtcblxuJGJvbml0by1tZWRpYS1ndXR0ZXI6ICAgICAgICAgICAgICAgICRib25pdG8tYmFzZS1zcGFjaW5nLXVuaXQgIWRlZmF1bHQ7XG4kYm9uaXRvLW1lZGlhLWd1dHRlci0tdGlueTogICAgICAgICAgICBxdWFydGVyKCRib25pdG8tbWVkaWEtZ3V0dGVyKSAhZGVmYXVsdDtcbiRib25pdG8tbWVkaWEtZ3V0dGVyLS1zbWFsbDogICAgICAgICAgICAgaGFsdmUoJGJvbml0by1tZWRpYS1ndXR0ZXIpICFkZWZhdWx0O1xuJGJvbml0by1tZWRpYS1ndXR0ZXItLWxhcmdlOiAgICAgICAgICAgIGRvdWJsZSgkYm9uaXRvLW1lZGlhLWd1dHRlcikgIWRlZmF1bHQ7XG4kYm9uaXRvLW1lZGlhLWd1dHRlci0taHVnZTogICAgICAgICAgcXVhZHJ1cGxlKCRib25pdG8tbWVkaWEtZ3V0dGVyKSAhZGVmYXVsdDtcblxuJGJvbml0by1lbmFibGUtbWVkaWEtLXRpbnk6ICAgICAgICAgIGZhbHNlICFkZWZhdWx0O1xuJGJvbml0by1lbmFibGUtbWVkaWEtLXNtYWxsOiAgICAgICAgIGZhbHNlICFkZWZhdWx0O1xuJGJvbml0by1lbmFibGUtbWVkaWEtLWxhcmdlOiAgICAgICAgIGZhbHNlICFkZWZhdWx0O1xuJGJvbml0by1lbmFibGUtbWVkaWEtLWh1Z2U6ICAgICAgICAgIGZhbHNlICFkZWZhdWx0O1xuJGJvbml0by1lbmFibGUtbWVkaWEtLXJldjogICAgICAgICAgIGZhbHNlICFkZWZhdWx0O1xuJGJvbml0by1lbmFibGUtbWVkaWEtLWZsdXNoOiAgICAgICAgIGZhbHNlICFkZWZhdWx0O1xuJGJvbml0by1lbmFibGUtbWVkaWEtLXJlc3BvbnNpdmU6ICAgIGZhbHNlICFkZWZhdWx0O1xuJGJvbml0by1tZWRpYS1jb2xsYXBzZS1hdDogICAgICAgICAgIDcyMHB4ICFkZWZhdWx0O1xuXG5cblxuXG5cbi4jeyRib25pdG8tbWVkaWEtbmFtZXNwYWNlfW1lZGlhLFxuJSN7JGJvbml0by1tZWRpYS1uYW1lc3BhY2V9bWVkaWEge1xuICAgIEBleHRlbmQgJXUtY2xlYXJmaXg7XG4gICAgZGlzcGxheTogYmxvY2s7XG59XG5cbiAgICAuI3skYm9uaXRvLW1lZGlhLW5hbWVzcGFjZX1tZWRpYV9faW1nLFxuICAgICUjeyRib25pdG8tbWVkaWEtbmFtZXNwYWNlfW1lZGlhX19pbWcge1xuICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAkYm9uaXRvLW1lZGlhLWd1dHRlcjtcblxuICAgICAgICA+IGltZyB7XG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgfVxuXG4gICAgfVxuXG4gICAgLiN7JGJvbml0by1tZWRpYS1uYW1lc3BhY2V9bWVkaWFfX2JvZHksXG4gICAgJSN7JGJvbml0by1tZWRpYS1uYW1lc3BhY2V9bWVkaWFfX2JvZHkge1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcblxuICAgICAgICAmLFxuICAgICAgICA+IDpsYXN0LWNoaWxkIHtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgICAgIH1cblxuICAgIH1cblxuXG5cblxuXG5AaWYgKCRib25pdG8tZW5hYmxlLW1lZGlhLS10aW55ID09IHRydWUpIHtcblxuICAgIC8qKlxuICAgICAqIFRpbnkgbWVkaWEgb2JqZWN0cy5cbiAgICAgKi9cblxuICAgIC4jeyRib25pdG8tbWVkaWEtbmFtZXNwYWNlfW1lZGlhLS10aW55LFxuICAgICUjeyRib25pdG8tbWVkaWEtbmFtZXNwYWNlfW1lZGlhLS10aW55IHtcblxuICAgICAgICA+IC4jeyRib25pdG8tbWVkaWEtbmFtZXNwYWNlfW1lZGlhX19pbWcsXG4gICAgICAgID4gJSN7JGJvbml0by1tZWRpYS1uYW1lc3BhY2V9bWVkaWFfX2ltZyB7XG4gICAgICAgICAgICBtYXJnaW4tcmlnaHQ6ICRib25pdG8tbWVkaWEtZ3V0dGVyLS10aW55O1xuICAgICAgICB9XG5cbiAgICAgICAgQGlmICgkYm9uaXRvLWVuYWJsZS1tZWRpYS0tcmV2ID09IHRydWUpIHtcblxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUaW55IHJldmVyc2VkIG1lZGlhIG9iamVjdHMuXG4gICAgICAgICAgICAgKi9cblxuICAgICAgICAgICAgJi4jeyRib25pdG8tbWVkaWEtbmFtZXNwYWNlfW1lZGlhLS1yZXYsXG4gICAgICAgICAgICAmJSN7JGJvbml0by1tZWRpYS1uYW1lc3BhY2V9bWVkaWEtLXJldiB7XG5cbiAgICAgICAgICAgICAgICA+IC4jeyRib25pdG8tbWVkaWEtbmFtZXNwYWNlfW1lZGlhX19pbWcsXG4gICAgICAgICAgICAgICAgPiAlI3skYm9uaXRvLW1lZGlhLW5hbWVzcGFjZX1tZWRpYV9faW1nIHtcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAwO1xuICAgICAgICAgICAgICAgICAgICBtYXJnaW4tbGVmdDogICRib25pdG8tbWVkaWEtZ3V0dGVyLS10aW55O1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cblxuICAgIH1cblxufVxuXG5AaWYgKCRib25pdG8tZW5hYmxlLW1lZGlhLS1zbWFsbCA9PSB0cnVlKSB7XG5cbiAgICAvKipcbiAgICAgKiBTbWFsbCBtZWRpYSBvYmplY3RzLlxuICAgICAqL1xuXG4gICAgLiN7JGJvbml0by1tZWRpYS1uYW1lc3BhY2V9bWVkaWEtLXNtYWxsLFxuICAgICUjeyRib25pdG8tbWVkaWEtbmFtZXNwYWNlfW1lZGlhLS1zbWFsbCB7XG5cbiAgICAgICAgPiAuI3skYm9uaXRvLW1lZGlhLW5hbWVzcGFjZX1tZWRpYV9faW1nLFxuICAgICAgICA+ICUjeyRib25pdG8tbWVkaWEtbmFtZXNwYWNlfW1lZGlhX19pbWcge1xuICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAkYm9uaXRvLW1lZGlhLWd1dHRlci0tc21hbGw7XG4gICAgICAgIH1cblxuICAgICAgICBAaWYgKCRib25pdG8tZW5hYmxlLW1lZGlhLS1yZXYgPT0gdHJ1ZSkge1xuXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFNtYWxsIHJldmVyc2VkIG1lZGlhIG9iamVjdHMuXG4gICAgICAgICAgICAgKi9cblxuICAgICAgICAgICAgJi4jeyRib25pdG8tbWVkaWEtbmFtZXNwYWNlfW1lZGlhLS1yZXYsXG4gICAgICAgICAgICAmJSN7JGJvbml0by1tZWRpYS1uYW1lc3BhY2V9bWVkaWEtLXJldiB7XG5cbiAgICAgICAgICAgICAgICA+IC4jeyRib25pdG8tbWVkaWEtbmFtZXNwYWNlfW1lZGlhX19pbWcsXG4gICAgICAgICAgICAgICAgPiAlI3skYm9uaXRvLW1lZGlhLW5hbWVzcGFjZX1tZWRpYV9faW1nIHtcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAwO1xuICAgICAgICAgICAgICAgICAgICBtYXJnaW4tbGVmdDogICRib25pdG8tbWVkaWEtZ3V0dGVyLS1zbWFsbDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG5cbiAgICB9XG5cbn1cblxuQGlmICgkYm9uaXRvLWVuYWJsZS1tZWRpYS0tbGFyZ2UgPT0gdHJ1ZSkge1xuXG4gICAgLyoqXG4gICAgICogTGFyZ2UgbWVkaWEgb2JqZWN0cy5cbiAgICAgKi9cblxuICAgIC4jeyRib25pdG8tbWVkaWEtbmFtZXNwYWNlfW1lZGlhLS1sYXJnZSxcbiAgICAlI3skYm9uaXRvLW1lZGlhLW5hbWVzcGFjZX1tZWRpYS0tbGFyZ2Uge1xuXG4gICAgICAgID4gLiN7JGJvbml0by1tZWRpYS1uYW1lc3BhY2V9bWVkaWFfX2ltZyxcbiAgICAgICAgPiAlI3skYm9uaXRvLW1lZGlhLW5hbWVzcGFjZX1tZWRpYV9faW1nIHtcbiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogJGJvbml0by1tZWRpYS1ndXR0ZXItLWxhcmdlO1xuICAgICAgICB9XG5cbiAgICAgICAgQGlmICgkYm9uaXRvLWVuYWJsZS1tZWRpYS0tcmV2ID09IHRydWUpIHtcblxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBMYXJnZSByZXZlcnNlZCBtZWRpYSBvYmplY3RzLlxuICAgICAgICAgICAgICovXG5cbiAgICAgICAgICAgICYuI3skYm9uaXRvLW1lZGlhLW5hbWVzcGFjZX1tZWRpYS0tcmV2LFxuICAgICAgICAgICAgJiUjeyRib25pdG8tbWVkaWEtbmFtZXNwYWNlfW1lZGlhLS1yZXYge1xuXG4gICAgICAgICAgICAgICAgPiAubWVkaWFfX2ltZyxcbiAgICAgICAgICAgICAgICA+ICVtZWRpYV9faW1nIHtcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAwO1xuICAgICAgICAgICAgICAgICAgICBtYXJnaW4tbGVmdDogICRib25pdG8tbWVkaWEtZ3V0dGVyLS1sYXJnZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG5cbiAgICB9XG5cbn1cblxuQGlmICgkYm9uaXRvLWVuYWJsZS1tZWRpYS0taHVnZSA9PSB0cnVlKSB7XG5cbiAgICAvKipcbiAgICAgKiBIdWdlIG1lZGlhIG9iamVjdHMuXG4gICAgICovXG5cbiAgICAuI3skYm9uaXRvLW1lZGlhLW5hbWVzcGFjZX1tZWRpYS0taHVnZSxcbiAgICAlI3skYm9uaXRvLW1lZGlhLW5hbWVzcGFjZX1tZWRpYS0taHVnZSB7XG5cbiAgICAgICAgPiAuI3skYm9uaXRvLW1lZGlhLW5hbWVzcGFjZX1tZWRpYV9faW1nLFxuICAgICAgICA+ICUjeyRib25pdG8tbWVkaWEtbmFtZXNwYWNlfW1lZGlhX19pbWcge1xuICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAkYm9uaXRvLW1lZGlhLWd1dHRlci0taHVnZTtcbiAgICAgICAgfVxuXG4gICAgICAgIEBpZiAoJGJvbml0by1lbmFibGUtbWVkaWEtLXJldiA9PSB0cnVlKSB7XG5cbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogSHVnZSByZXZlcnNlZCBtZWRpYSBvYmplY3RzLlxuICAgICAgICAgICAgICovXG5cbiAgICAgICAgICAgICYuI3skYm9uaXRvLW1lZGlhLW5hbWVzcGFjZX1tZWRpYS0tcmV2LFxuICAgICAgICAgICAgJiUjeyRib25pdG8tbWVkaWEtbmFtZXNwYWNlfW1lZGlhLS1yZXYge1xuXG4gICAgICAgICAgICAgICAgPiAubWVkaWFfX2ltZyxcbiAgICAgICAgICAgICAgICA+ICVtZWRpYV9faW1nIHtcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAwO1xuICAgICAgICAgICAgICAgICAgICBtYXJnaW4tbGVmdDogICRib25pdG8tbWVkaWEtZ3V0dGVyLS1odWdlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cblxuICAgIH1cblxufVxuXG5cblxuXG5cbkBpZiAoJGJvbml0by1lbmFibGUtbWVkaWEtLXJldiA9PSB0cnVlKSB7XG5cbiAgICAvKipcbiAgICAgKiBSZXZlcnNlZCBpbWFnZSBsb2NhdGlvbiAocmlnaHQgaW5zdGVhZCBvZiBsZWZ0KS4gRXh0ZW5kcyBgLm1lZGlhYC5cbiAgICAgKi9cblxuICAgIC4jeyRib25pdG8tbWVkaWEtbmFtZXNwYWNlfW1lZGlhLS1yZXYsXG4gICAgJSN7JGJvbml0by1tZWRpYS1uYW1lc3BhY2V9bWVkaWEtLXJldiB7XG5cbiAgICAgICAgPiAuI3skYm9uaXRvLW1lZGlhLW5hbWVzcGFjZX1tZWRpYV9faW1nLFxuICAgICAgICA+ICUjeyRib25pdG8tbWVkaWEtbmFtZXNwYWNlfW1lZGlhX19pbWcge1xuICAgICAgICAgICAgZmxvYXQ6IHJpZ2h0O1xuICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAwO1xuICAgICAgICAgICAgbWFyZ2luLWxlZnQ6ICRib25pdG8tbWVkaWEtZ3V0dGVyO1xuICAgICAgICB9XG5cbiAgICB9XG5cbn1cblxuXG5cblxuXG5AaWYgKCRib25pdG8tZW5hYmxlLW1lZGlhLS1mbHVzaCA9PSB0cnVlKSB7XG5cbiAgICAvKipcbiAgICAgKiBGbHVzaCBtZWRpYSBvYmplY3RzIGhhdmUgbm8gc3BhY2UgYmV0d2VlbiB0aGUgaW1hZ2UtIGFuZCB0ZXh0LWNvbnRlbnQuXG4gICAgICovXG5cbiAgICAuI3skYm9uaXRvLW1lZGlhLW5hbWVzcGFjZX1tZWRpYS0tZmx1c2gsXG4gICAgJSN7JGJvbml0by1tZWRpYS1uYW1lc3BhY2V9bWVkaWEtLWZsdXNoIHtcblxuICAgICAgICA+IC4jeyRib25pdG8tbWVkaWEtbmFtZXNwYWNlfW1lZGlhX19pbWcsXG4gICAgICAgID4gJSN7JGJvbml0by1tZWRpYS1uYW1lc3BhY2V9bWVkaWFfX2ltZyB7XG4gICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gICAgICAgICAgICBtYXJnaW4tbGVmdDogIDA7XG4gICAgICAgIH1cblxuICAgIH1cblxufVxuXG5cblxuXG5cbkBpZiAoJGJvbml0by1lbmFibGUtbWVkaWEtLXJlc3BvbnNpdmUgPT0gdHJ1ZSkge1xuXG4gICAgLyoqXG4gICAgICogUmVzcG9uc2l2ZSBtZWRpYSBvYmplY3RzLlxuICAgICAqXG4gICAgICogVGhlcmUgaXMgYSB2ZXJ5IHByYWdtYXRpYywgc2ltcGxlIGltcGxlbWVudGF0aW9uIG9mIGEgcmVzcG9uc2l2ZSBtZWRpYVxuICAgICAqIG9iamVjdCwgd2hpY2ggc2ltcGx5IHBsYWNlcyB0aGUgdGV4dC1jb250ZW50IGJlbmVhdGggdGhlIGltYWdlLWNvbnRlbnQuXG4gICAgICpcbiAgICAgKiBXZSB1c2UgYSBgbWF4LXdpZHRoYCBtZWRpYSBxdWVyeSBiZWNhdXNlOlxuICAgICAqXG4gICAgICogYSkgaXQgaXMgdGhlIGxlYXN0IHZlcmJvc2UgbWV0aG9kIGluIHRlcm1zIG9mIGFtb3VudCBvZiBjb2RlIHJlcXVpcmVkLlxuICAgICAqIGIpIHRoZSBtZWRpYSBvYmplY3TigJlzIGRlZmF1bHQgc3RhdGUgaXMgaW1hZ2UtbmV4dC10by10ZXh0LCBzbyBpdHMgc3RhY2tlZFxuICAgICAqICAgIHN0YXRlIGlzIHRoZSBleGNlcHRpb24sIHJhdGhlciB0aGFuIHRoZSBydWxlLlxuICAgICAqL1xuXG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogJGJvbml0by1tZWRpYS1jb2xsYXBzZS1hdCkge1xuXG4gICAgICAgIC4jeyRib25pdG8tbWVkaWEtbmFtZXNwYWNlfW1lZGlhLS1yZXNwb25zaXZlLFxuICAgICAgICAlI3skYm9uaXRvLW1lZGlhLW5hbWVzcGFjZX1tZWRpYS0tcmVzcG9uc2l2ZSB7XG5cbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUmV3b3JrIHRoZSBzcGFjaW5ncyBvbiByZWd1bGFyIG1lZGlhIG9iamVjdHMuXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgID4gLiN7JGJvbml0by1tZWRpYS1uYW1lc3BhY2V9bWVkaWFfX2ltZyxcbiAgICAgICAgICAgID4gJSN7JGJvbml0by1tZWRpYS1uYW1lc3BhY2V9bWVkaWFfX2ltZyB7XG4gICAgICAgICAgICAgICAgZmxvYXQ6IG5vbmU7XG4gICAgICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAwO1xuICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206ICRib25pdG8tbWVkaWEtZ3V0dGVyO1xuICAgICAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAgMDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgQGlmICgkYm9uaXRvLWVuYWJsZS1tZWRpYS0tdGlueSA9PSB0cnVlKSB7XG5cbiAgICAgICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAgICAgKiBUaW55IHJlc3BvbnNpdmUgbWVkaWEgb2JqZWN0cy5cbiAgICAgICAgICAgICAgICAgKlxuICAgICAgICAgICAgICAgICAqIFRha2UgYSBsaXR0bGUgbW9yZSBoZWF2eS1oYW5kZWQgYXBwcm9hY2ggdG8gcmV3b3JraW5nXG4gICAgICAgICAgICAgICAgICogc3BhY2luZ3Mgb24gbWVkaWEgb2JqZWN0cyB0aGF0IGFyZSBhbHNvIHRpbnkgbWVkaWEgb2JqZWN0c1xuICAgICAgICAgICAgICAgICAqIGluIHRoZWlyIHJlZ3VsYXIgc3RhdGUuXG4gICAgICAgICAgICAgICAgICovXG5cbiAgICAgICAgICAgICAgICAmLiN7JGJvbml0by1tZWRpYS1uYW1lc3BhY2V9bWVkaWEtLXRpbnksXG4gICAgICAgICAgICAgICAgJiUjeyRib25pdG8tbWVkaWEtbmFtZXNwYWNlfW1lZGlhLS10aW55IHtcblxuICAgICAgICAgICAgICAgICAgICA+IC4jeyRib25pdG8tbWVkaWEtbmFtZXNwYWNlfW1lZGlhX19pbWcsXG4gICAgICAgICAgICAgICAgICAgID4gJSN7JGJvbml0by1tZWRpYS1uYW1lc3BhY2V9bWVkaWFfX2ltZyB7XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tbGVmdDogIDA7XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAkYm9uaXRvLW1lZGlhLWd1dHRlci0tdGlueTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIEBpZiAoJGJvbml0by1lbmFibGUtbWVkaWEtLXNtYWxsID09IHRydWUpIHtcblxuICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICAgICAqIFNtYWxsIHJlc3BvbnNpdmUgbWVkaWEgb2JqZWN0cy5cbiAgICAgICAgICAgICAgICAgKlxuICAgICAgICAgICAgICAgICAqIFRha2UgYSBsaXR0bGUgbW9yZSBoZWF2eS1oYW5kZWQgYXBwcm9hY2ggdG8gcmV3b3JraW5nXG4gICAgICAgICAgICAgICAgICogc3BhY2luZ3Mgb24gbWVkaWEgb2JqZWN0cyB0aGF0IGFyZSBhbHNvIHNtYWxsIG1lZGlhIG9iamVjdHNcbiAgICAgICAgICAgICAgICAgKiBpbiB0aGVpciByZWd1bGFyIHN0YXRlLlxuICAgICAgICAgICAgICAgICAqL1xuXG4gICAgICAgICAgICAgICAgJi4jeyRib25pdG8tbWVkaWEtbmFtZXNwYWNlfW1lZGlhLS1zbWFsbCxcbiAgICAgICAgICAgICAgICAmJSN7JGJvbml0by1tZWRpYS1uYW1lc3BhY2V9bWVkaWEtLXNtYWxsIHtcblxuICAgICAgICAgICAgICAgICAgICA+IC4jeyRib25pdG8tbWVkaWEtbmFtZXNwYWNlfW1lZGlhX19pbWcsXG4gICAgICAgICAgICAgICAgICAgID4gJSN7JGJvbml0by1tZWRpYS1uYW1lc3BhY2V9bWVkaWFfX2ltZyB7XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tbGVmdDogIDA7XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAkYm9uaXRvLW1lZGlhLWd1dHRlci0tc21hbGw7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBAaWYgKCRib25pdG8tZW5hYmxlLW1lZGlhLS1sYXJnZSA9PSB0cnVlKSB7XG5cbiAgICAgICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAgICAgKiBMYXJnZSByZXNwb25zaXZlIG1lZGlhIG9iamVjdHMuXG4gICAgICAgICAgICAgICAgICpcbiAgICAgICAgICAgICAgICAgKiBUYWtlIGEgbGl0dGxlIG1vcmUgaGVhdnktaGFuZGVkIGFwcHJvYWNoIHRvIHJld29ya2luZ1xuICAgICAgICAgICAgICAgICAqIHNwYWNpbmdzIG9uIG1lZGlhIG9iamVjdHMgdGhhdCBhcmUgYWxzbyBsYXJnZSBtZWRpYSBvYmplY3RzXG4gICAgICAgICAgICAgICAgICogaW4gdGhlaXIgcmVndWxhciBzdGF0ZS5cbiAgICAgICAgICAgICAgICAgKi9cblxuICAgICAgICAgICAgICAgICYuI3skYm9uaXRvLW1lZGlhLW5hbWVzcGFjZX1tZWRpYS0tbGFyZ2UsXG4gICAgICAgICAgICAgICAgJiUjeyRib25pdG8tbWVkaWEtbmFtZXNwYWNlfW1lZGlhLS1sYXJnZSB7XG5cbiAgICAgICAgICAgICAgICAgICAgPiAuI3skYm9uaXRvLW1lZGlhLW5hbWVzcGFjZX1tZWRpYV9faW1nLFxuICAgICAgICAgICAgICAgICAgICA+ICUjeyRib25pdG8tbWVkaWEtbmFtZXNwYWNlfW1lZGlhX19pbWcge1xuICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWxlZnQ6ICAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogJGJvbml0by1tZWRpYS1ndXR0ZXItLWxhcmdlO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgQGlmICgkYm9uaXRvLWVuYWJsZS1tZWRpYS0taHVnZSA9PSB0cnVlKSB7XG5cbiAgICAgICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAgICAgKiBIdWdlIHJlc3BvbnNpdmUgbWVkaWEgb2JqZWN0cy5cbiAgICAgICAgICAgICAgICAgKlxuICAgICAgICAgICAgICAgICAqIFRha2UgYSBsaXR0bGUgbW9yZSBoZWF2eS1oYW5kZWQgYXBwcm9hY2ggdG8gcmV3b3JraW5nXG4gICAgICAgICAgICAgICAgICogc3BhY2luZ3Mgb24gbWVkaWEgb2JqZWN0cyB0aGF0IGFyZSBhbHNvIGh1Z2UgbWVkaWEgb2JqZWN0c1xuICAgICAgICAgICAgICAgICAqIGluIHRoZWlyIHJlZ3VsYXIgc3RhdGUuXG4gICAgICAgICAgICAgICAgICovXG5cbiAgICAgICAgICAgICAgICAmLiN7JGJvbml0by1tZWRpYS1uYW1lc3BhY2V9bWVkaWEtLWh1Z2UsXG4gICAgICAgICAgICAgICAgJiUjeyRib25pdG8tbWVkaWEtbmFtZXNwYWNlfW1lZGlhLS1odWdlIHtcblxuICAgICAgICAgICAgICAgICAgICA+IC4jeyRib25pdG8tbWVkaWEtbmFtZXNwYWNlfW1lZGlhX19pbWcsXG4gICAgICAgICAgICAgICAgICAgID4gJSN7JGJvbml0by1tZWRpYS1uYW1lc3BhY2V9bWVkaWFfX2ltZyB7XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tbGVmdDogIDA7XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAkYm9uaXRvLW1lZGlhLWd1dHRlci0taHVnZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuXG4gICAgfVxuXG59XG4iLCIvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcXFxuICAgICNQQUNLXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4vKipcbiAqIFRoZSBwYWNrIG9iamVjdCBzaW1wbHkgY2F1c2VzIGFueSBudW1iZXIgb2YgZWxlbWVudHMgcGFjayB1cCBob3Jpem9udGFsbHkgdG9cbiAqIGF1dG9tYXRpY2FsbHkgZmlsbCBhbiBlcXVhbCwgZmx1aWQgd2lkdGggb2YgdGhlaXIgcGFyZW50LlxuICovXG5cbi8vIFByZWRlZmluZSB0aGUgdmFyaWFibGVzIGJlbG93IGluIG9yZGVyIHRvIGFsdGVyIGFuZCBlbmFibGUgc3BlY2lmaWMgZmVhdHVyZXMuXG4kYm9uaXRvLXBhY2stbmFtZXNwYWNlOiAgICAgICRib25pdG8tbmFtZXNwYWNlICFkZWZhdWx0O1xuXG4kYm9uaXRvLXBhY2stZ3V0dGVyOiAgICAgICAgICRib25pdG8tYmFzZS1zcGFjaW5nLXVuaXQgIWRlZmF1bHQ7XG4kYm9uaXRvLXBhY2stZ3V0dGVyLS10aW55OiAgICAgcXVhcnRlcigkYm9uaXRvLXBhY2stZ3V0dGVyKSAhZGVmYXVsdDtcbiRib25pdG8tcGFjay1ndXR0ZXItLXNtYWxsOiAgICAgIGhhbHZlKCRib25pdG8tcGFjay1ndXR0ZXIpICFkZWZhdWx0O1xuJGJvbml0by1wYWNrLWd1dHRlci0tbGFyZ2U6ICAgICBkb3VibGUoJGJvbml0by1wYWNrLWd1dHRlcikgIWRlZmF1bHQ7XG4kYm9uaXRvLXBhY2stZ3V0dGVyLS1odWdlOiAgIHF1YWRydXBsZSgkYm9uaXRvLXBhY2stZ3V0dGVyKSAhZGVmYXVsdDtcblxuJGJvbml0by1lbmFibGUtcGFjay0tYXV0bzogICBmYWxzZSAhZGVmYXVsdDtcbiRib25pdG8tZW5hYmxlLXBhY2stLXRpbnk6ICAgZmFsc2UgIWRlZmF1bHQ7XG4kYm9uaXRvLWVuYWJsZS1wYWNrLS1zbWFsbDogIGZhbHNlICFkZWZhdWx0O1xuJGJvbml0by1lbmFibGUtcGFjay0tbGFyZ2U6ICBmYWxzZSAhZGVmYXVsdDtcbiRib25pdG8tZW5hYmxlLXBhY2stLWh1Z2U6ICAgZmFsc2UgIWRlZmF1bHQ7XG4kYm9uaXRvLWVuYWJsZS1wYWNrLS1yZXY6ICAgIGZhbHNlICFkZWZhdWx0O1xuJGJvbml0by1lbmFibGUtcGFjay0tbWlkZGxlOiBmYWxzZSAhZGVmYXVsdDtcbiRib25pdG8tZW5hYmxlLXBhY2stLWJvdHRvbTogZmFsc2UgIWRlZmF1bHQ7XG5cblxuXG5cblxuLyoqXG4gKiAxLiBGaWxsIGFsbCBhdmFpbGFibGUgc3BhY2UuXG4gKiAyLiBDYXVzZSBjaGlsZHJlbiB0byBiZSBhdXRvbWF0aWNhbGx5IGVxdWFsbHkgc2l6ZWQuXG4gKi9cbi4jeyRib25pdG8tcGFjay1uYW1lc3BhY2V9cGFjayxcbiUjeyRib25pdG8tcGFjay1uYW1lc3BhY2V9cGFjayB7XG4gICAgd2lkdGg6IDEwMCU7IC8qIFsxXSAqL1xuICAgIGRpc3BsYXk6IHRhYmxlO1xuICAgIHRhYmxlLWxheW91dDogZml4ZWQ7IC8qIFsyXSAqL1xufVxuXG4gICAgLyoqXG4gICAgICogQ2F1c2UgY2hpbGRyZW4gdG8gYWRvcHQgdGFibGUtbGlrZSBzdHJ1Y3R1cmUuXG4gICAgICovXG4gICAgLiN7JGJvbml0by1wYWNrLW5hbWVzcGFjZX1wYWNrX19pdGVtLFxuICAgICUjeyRib25pdG8tcGFjay1uYW1lc3BhY2V9cGFja19faXRlbSB7XG4gICAgICAgIGRpc3BsYXk6IHRhYmxlLWNlbGw7XG5cbiAgICAgICAgQGlmICgkYm9uaXRvLWVuYWJsZS1wYWNrLS1taWRkbGUgPT0gdHJ1ZSkge1xuXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEFsbCBpdGVtcyBhcmUgYWxpZ25lZCB0byB0aGUgbWlkZGxlcyBvZiBlYWNoIG90aGVyLlxuICAgICAgICAgICAgICovXG5cbiAgICAgICAgICAgIC4jeyRib25pdG8tcGFjay1uYW1lc3BhY2V9cGFjay0tbWlkZGxlID4gJixcbiAgICAgICAgICAgICUjeyRib25pdG8tcGFjay1uYW1lc3BhY2V9cGFjay0tbWlkZGxlID4gJiB7XG4gICAgICAgICAgICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG5cbiAgICAgICAgQGlmICgkYm9uaXRvLWVuYWJsZS1wYWNrLS1ib3R0b20gPT0gdHJ1ZSkge1xuXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEFsbCBpdGVtcyBhcmUgYWxpZ25lZCB0byB0aGUgYm90dG9tcyBvZiBlYWNoIG90aGVyLlxuICAgICAgICAgICAgICovXG5cbiAgICAgICAgICAgIC4jeyRib25pdG8tcGFjay1uYW1lc3BhY2V9cGFjay0tYm90dG9tID4gJixcbiAgICAgICAgICAgICUjeyRib25pdG8tcGFjay1uYW1lc3BhY2V9cGFjay0tYm90dG9tID4gJiB7XG4gICAgICAgICAgICAgICAgdmVydGljYWwtYWxpZ246IGJvdHRvbTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG5cbiAgICB9XG5cblxuXG5cblxuQGlmICgkYm9uaXRvLWVuYWJsZS1wYWNrLS1hdXRvID09IHRydWUpIHtcblxuICAgIC8qKlxuICAgICAqIENhdXNlIGNoaWxkcmVuIHRvIHBhY2sgdXAgaW50byBhdmFpbGFibGUgc3BhY2UsIGJ1dCBub3QgZXF1YWxseSBzaXplZC5cbiAgICAgKi9cblxuICAgIC4jeyRib25pdG8tcGFjay1uYW1lc3BhY2V9cGFjay0tYXV0byxcbiAgICAlI3skYm9uaXRvLXBhY2stbmFtZXNwYWNlfXBhY2stLWF1dG8ge1xuICAgICAgICB0YWJsZS1sYXlvdXQ6IGF1dG87XG4gICAgfVxuXG59XG5cblxuXG5cblxuQGlmICgkYm9uaXRvLWVuYWJsZS1wYWNrLS10aW55ID09IHRydWUpIHtcblxuICAgIC8qKlxuICAgICAqIFRpbnkgZ3V0dGVycyBiZXR3ZWVuIGl0ZW1zLlxuICAgICAqL1xuXG4gICAgLiN7JGJvbml0by1wYWNrLW5hbWVzcGFjZX1wYWNrLS10aW55LFxuICAgICUjeyRib25pdG8tcGFjay1uYW1lc3BhY2V9cGFjay0tdGlueSB7XG4gICAgICAgIGJvcmRlci1zcGFjaW5nOiAkYm9uaXRvLXBhY2stZ3V0dGVyLS10aW55O1xuICAgIH1cblxufVxuXG5AaWYgKCRib25pdG8tZW5hYmxlLXBhY2stLXNtYWxsID09IHRydWUpIHtcblxuICAgIC8qKlxuICAgICAqIFNtYWxsIGd1dHRlcnMgYmV0d2VlbiBpdGVtcy5cbiAgICAgKi9cblxuICAgIC4jeyRib25pdG8tcGFjay1uYW1lc3BhY2V9cGFjay0tc21hbGwsXG4gICAgJSN7JGJvbml0by1wYWNrLW5hbWVzcGFjZX1wYWNrLS1zbWFsbCB7XG4gICAgICAgIGJvcmRlci1zcGFjaW5nOiAkYm9uaXRvLXBhY2stZ3V0dGVyLS1zbWFsbDtcbiAgICB9XG5cbn1cblxuQGlmICgkYm9uaXRvLWVuYWJsZS1wYWNrLS1sYXJnZSA9PSB0cnVlKSB7XG5cbiAgICAvKipcbiAgICAgKiBMYXJnZSBndXR0ZXJzIGJldHdlZW4gaXRlbXMuXG4gICAgICovXG5cbiAgICAuI3skYm9uaXRvLXBhY2stbmFtZXNwYWNlfXBhY2stLWxhcmdlLFxuICAgICUjeyRib25pdG8tcGFjay1uYW1lc3BhY2V9cGFjay0tbGFyZ2Uge1xuICAgICAgICBib3JkZXItc3BhY2luZzogJGJvbml0by1wYWNrLWd1dHRlci0tbGFyZ2U7XG4gICAgfVxuXG59XG5cbkBpZiAoJGJvbml0by1lbmFibGUtcGFjay0taHVnZSA9PSB0cnVlKSB7XG5cbiAgICAvKipcbiAgICAgKiBIdWdlIGd1dHRlcnMgYmV0d2VlbiBpdGVtcy5cbiAgICAgKi9cblxuICAgIC4jeyRib25pdG8tcGFjay1uYW1lc3BhY2V9cGFjay0taHVnZSxcbiAgICAlI3skYm9uaXRvLXBhY2stbmFtZXNwYWNlfXBhY2stLWh1Z2Uge1xuICAgICAgICBib3JkZXItc3BhY2luZzogJGJvbml0by1wYWNrLWd1dHRlci0taHVnZTtcbiAgICB9XG5cbn1cblxuXG5cblxuXG5AaWYgKCRib25pdG8tZW5hYmxlLXBhY2stLXJldiA9PSB0cnVlKSB7XG5cbiAgICAvKipcbiAgICAgKiBSZXZlcnNlZCBvcmRlciBwYWNrcy5cbiAgICAgKi9cbiAgICBcbiAgICAuI3skYm9uaXRvLXBhY2stbmFtZXNwYWNlfXBhY2stLXJldixcbiAgICAlI3skYm9uaXRvLXBhY2stbmFtZXNwYWNlfXBhY2stLXJldiB7XG4gICAgICAgIGRpcmVjdGlvbjogcnRsO1xuICAgIFxuICAgICAgICA+IC4jeyRib25pdG8tcGFjay1uYW1lc3BhY2V9cGFja19faXRlbSxcbiAgICAgICAgPiAlI3skYm9uaXRvLXBhY2stbmFtZXNwYWNlfXBhY2tfX2l0ZW0ge1xuICAgICAgICAgICAgZGlyZWN0aW9uOiBsdHI7XG4gICAgICAgIH1cbiAgICBcbiAgICB9XG5cbn1cbiIsIi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlxcXG4gICAgI1RBQkxFU1xuXFwqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuLy8gUHJlZGVmaW5lIHRoZSB2YXJpYWJsZXMgYmVsb3cgaW4gb3JkZXIgdG8gYWx0ZXIgYW5kIGVuYWJsZSBzcGVjaWZpYyBmZWF0dXJlcy5cbiRib25pdG8tdGFibGUtbmFtZXNwYWNlOiAgICAgICAgICRib25pdG8tbmFtZXNwYWNlICFkZWZhdWx0O1xuXG4kYm9uaXRvLXRhYmxlLXBhZGRpbmctLWNvbXBhY3Q6ICBxdWFydGVyKCRib25pdG8tYmFzZS1zcGFjaW5nLXVuaXQpICFkZWZhdWx0O1xuJGJvbml0by10YWJsZS1wYWRkaW5nLS1jb3N5OiAgICAgaGFsdmUoJGJvbml0by1iYXNlLXNwYWNpbmctdW5pdCkgIWRlZmF1bHQ7XG4kYm9uaXRvLXRhYmxlLXBhZGRpbmctLWNvbWZ5OiAgICAkYm9uaXRvLWJhc2Utc3BhY2luZy11bml0ICFkZWZhdWx0O1xuXG4kYm9uaXRvLXRhYmxlLWJvcmRlci13aWR0aDogICAgICAxcHggIWRlZmF1bHQ7XG4kYm9uaXRvLXRhYmxlLWJvcmRlci1zdHlsZTogICAgICBzb2xpZCAhZGVmYXVsdDtcbiRib25pdG8tdGFibGUtYm9yZGVyLWNvbG9yOiAgICAgICNjY2MgIWRlZmF1bHQ7XG5cbiRib25pdG8tZW5hYmxlLXRhYmxlLS1maXhlZDogICAgIGZhbHNlICFkZWZhdWx0O1xuJGJvbml0by1lbmFibGUtdGFibGUtLWNvbXBhY3Q6ICAgZmFsc2UgIWRlZmF1bHQ7XG4kYm9uaXRvLWVuYWJsZS10YWJsZS0tY29zeTogICAgICBmYWxzZSAhZGVmYXVsdDtcbiRib25pdG8tZW5hYmxlLXRhYmxlLS1jb21meTogICAgIGZhbHNlICFkZWZhdWx0O1xuJGJvbml0by1lbmFibGUtdGFibGUtLWNlbGxzOiAgICAgZmFsc2UgIWRlZmF1bHQ7XG4kYm9uaXRvLWVuYWJsZS10YWJsZS0tcm93czogICAgICBmYWxzZSAhZGVmYXVsdDtcbiRib25pdG8tZW5hYmxlLXRhYmxlLS1jb2x1bW5zOiAgIGZhbHNlICFkZWZhdWx0O1xuXG5cblxuXG5cbi4jeyRib25pdG8tdGFibGUtbmFtZXNwYWNlfXRhYmxlLFxuJSN7JGJvbml0by10YWJsZS1uYW1lc3BhY2V9dGFibGUge1xuICAgIHdpZHRoOiAxMDAlO1xufVxuXG5cblxuXG5cbkBpZiAoJGJvbml0by1lbmFibGUtdGFibGUtLWZpeGVkID09IHRydWUpIHtcblxuICAgIC8qKlxuICAgICAqIEZvcmNlIHRhYmxlcyBpbnRvIGhhdmluZyBlcXVhbC13aWR0aCBjb2x1bW5zLlxuICAgICAqL1xuICAgIC4jeyRib25pdG8tdGFibGUtbmFtZXNwYWNlfXRhYmxlLS1maXhlZCxcbiAgICAlI3skYm9uaXRvLXRhYmxlLW5hbWVzcGFjZX10YWJsZS0tZml4ZWQge1xuICAgICAgICB0YWJsZS1sYXlvdXQ6IGZpeGVkO1xuICAgIH1cblxufVxuXG5cblxuXG5cbkBpZiAoJGJvbml0by1lbmFibGUtdGFibGUtLWNvbXBhY3QgPT0gdHJ1ZSkge1xuXG4gICAgLyoqXG4gICAgICogVGFibGVzIHdpdGggdmVyeSB0aWdodGx5IHBhY2tlZCBjZWxscy5cbiAgICAgKi9cbiAgICAuI3skYm9uaXRvLXRhYmxlLW5hbWVzcGFjZX10YWJsZS0tY29tcGFjdCxcbiAgICAlI3skYm9uaXRvLXRhYmxlLW5hbWVzcGFjZX10YWJsZS0tY29tcGFjdCB7XG4gICAgXG4gICAgICAgIHRoLFxuICAgICAgICB0ZCB7XG4gICAgICAgICAgICBwYWRkaW5nOiAkYm9uaXRvLXRhYmxlLXBhZGRpbmctLWNvbXBhY3Q7XG4gICAgICAgIH1cbiAgICBcbiAgICB9XG5cbn1cblxuXG5cblxuXG5AaWYgKCRib25pdG8tZW5hYmxlLXRhYmxlLS1jb3N5ID09IHRydWUpIHtcblxuICAgIC8qKlxuICAgICAqIExpZ2h0bHkgcGFja2VkIGNlbGxzLlxuICAgICAqL1xuICAgIC4jeyRib25pdG8tdGFibGUtbmFtZXNwYWNlfXRhYmxlLS1jb3N5LFxuICAgICUjeyRib25pdG8tdGFibGUtbmFtZXNwYWNlfXRhYmxlLS1jb3N5IHtcbiAgICBcbiAgICAgICAgdGgsXG4gICAgICAgIHRkIHtcbiAgICAgICAgICAgIHBhZGRpbmc6ICRib25pdG8tdGFibGUtcGFkZGluZy0tY29zeTtcbiAgICAgICAgfVxuICAgIFxuICAgIH1cblxufVxuXG5cblxuXG5cbkBpZiAoJGJvbml0by1lbmFibGUtdGFibGUtLWNvbWZ5ID09IHRydWUpIHtcblxuICAgIC8qKlxuICAgICAqIFRhYmxlcyB3aXRoIHZlcnkgd2lkZWx5IHBhZGRlZCBjZWxscy5cbiAgICAgKi9cbiAgICAuI3skYm9uaXRvLXRhYmxlLW5hbWVzcGFjZX10YWJsZS0tY29tZnksXG4gICAgJSN7JGJvbml0by10YWJsZS1uYW1lc3BhY2V9dGFibGUtLWNvbWZ5IHtcbiAgICBcbiAgICAgICAgdGgsXG4gICAgICAgIHRkIHtcbiAgICAgICAgICAgIHBhZGRpbmc6ICRib25pdG8tdGFibGUtcGFkZGluZy0tY29tZnk7XG4gICAgICAgIH1cbiAgICBcbiAgICB9XG5cbn1cblxuXG5cblxuXG5AaWYgKCRib25pdG8tZW5hYmxlLXRhYmxlLS1jZWxscyA9PSB0cnVlKSB7XG5cbiAgICAvKipcbiAgICAgKiBBZGQgYm9yZGVycyBhcm91bmQgYSBgdGFibGVgLlxuICAgICAqL1xuICAgIC4jeyRib25pdG8tdGFibGUtbmFtZXNwYWNlfXRhYmxlLS1jZWxscyxcbiAgICAlI3skYm9uaXRvLXRhYmxlLW5hbWVzcGFjZX10YWJsZS0tY2VsbHMge1xuICAgIFxuICAgICAgICB0aCxcbiAgICAgICAgdGQge1xuICAgICAgICAgICAgYm9yZGVyOiAkYm9uaXRvLXRhYmxlLWJvcmRlci13aWR0aCAkYm9uaXRvLXRhYmxlLWJvcmRlci1zdHlsZSAkYm9uaXRvLXRhYmxlLWJvcmRlci1jb2xvcjtcbiAgICAgICAgfVxuICAgIFxuICAgIH1cblxufVxuXG5cblxuXG5cbkBpZiAoJGJvbml0by1lbmFibGUtdGFibGUtLXJvd3MgPT0gdHJ1ZSkge1xuXG4gICAgLyoqXG4gICAgICogQWRkIGJvcmRlcnMgb25seSB0byBgdGFibGVg4oCZcyByb3dzLlxuICAgICAqL1xuICAgIC4jeyRib25pdG8tdGFibGUtbmFtZXNwYWNlfXRhYmxlLS1yb3dzLFxuICAgICUjeyRib25pdG8tdGFibGUtbmFtZXNwYWNlfXRhYmxlLS1yb3dzIHtcbiAgICBcbiAgICAgICAgJixcbiAgICAgICAgdGgsXG4gICAgICAgIHRkIHtcbiAgICAgICAgICAgIGJvcmRlcjogMCAkYm9uaXRvLXRhYmxlLWJvcmRlci1zdHlsZSAkYm9uaXRvLXRhYmxlLWJvcmRlci1jb2xvcjtcbiAgICAgICAgfVxuICAgIFxuICAgIH1cbiAgICBcbiAgICAuI3skYm9uaXRvLXRhYmxlLW5hbWVzcGFjZX10YWJsZS0tcm93cyxcbiAgICAlI3skYm9uaXRvLXRhYmxlLW5hbWVzcGFjZX10YWJsZS0tcm93cyB7XG4gICAgICAgIGJvcmRlci10b3Atd2lkdGg6ICRib25pdG8tdGFibGUtYm9yZGVyLXdpZHRoO1xuICAgIFxuICAgICAgICB0aCxcbiAgICAgICAgdGQge1xuICAgICAgICAgICAgYm9yZGVyLWJvdHRvbS13aWR0aDogJGJvbml0by10YWJsZS1ib3JkZXItd2lkdGg7XG4gICAgICAgIH1cbiAgICB9XG5cbn1cblxuXG5cblxuXG5AaWYgKCRib25pdG8tZW5hYmxlLXRhYmxlLS1jb2x1bW5zID09IHRydWUpIHtcblxuICAgIC8qKlxuICAgICAqIEFkZCBib3JkZXJzIG9ubHkgdG8gYHRhYmxlYOKAmXMgY29sdW1ucy5cbiAgICAgKi9cbiAgICAuI3skYm9uaXRvLXRhYmxlLW5hbWVzcGFjZX10YWJsZS0tY29sdW1ucyxcbiAgICAlI3skYm9uaXRvLXRhYmxlLW5hbWVzcGFjZX10YWJsZS0tY29sdW1ucyB7XG4gICAgXG4gICAgICAgICYsXG4gICAgICAgIHRoLFxuICAgICAgICB0ZCB7XG4gICAgICAgICAgICBib3JkZXI6IDAgJGJvbml0by10YWJsZS1ib3JkZXItc3R5bGUgJGJvbml0by10YWJsZS1ib3JkZXItY29sb3I7XG4gICAgICAgIH1cbiAgICB9XG4gICAgXG4gICAgLiN7JGJvbml0by10YWJsZS1uYW1lc3BhY2V9dGFibGUtLWNvbHVtbnMsXG4gICAgJSN7JGJvbml0by10YWJsZS1uYW1lc3BhY2V9dGFibGUtLWNvbHVtbnMge1xuICAgICAgICBib3JkZXItbGVmdC13aWR0aDogJGJvbml0by10YWJsZS1ib3JkZXItd2lkdGg7XG4gICAgXG4gICAgICAgIHRoLFxuICAgICAgICB0ZCB7XG4gICAgICAgICAgICBib3JkZXItcmlnaHQtd2lkdGg6ICRib25pdG8tdGFibGUtYm9yZGVyLXdpZHRoO1xuICAgICAgICB9XG4gICAgfVxuXG59XG4iLCIvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcXFxuICAgICNUQUJTXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4vKipcbiAqIEEgc2ltcGxlIGFic3RyYWN0aW9uIGZvciBtYWtpbmcgZXF1YWwtd2lkdGggbmF2aWdhdGlvbiB0YWJzLlxuICovXG5cbi8vIFByZWRlZmluZSB0aGUgdmFyaWFibGVzIGJlbG93IGluIG9yZGVyIHRvIGFsdGVyIGFuZCBlbmFibGUgc3BlY2lmaWMgZmVhdHVyZXMuXG4kYm9uaXRvLXRhYnMtbmFtZXNwYWNlOiAkYm9uaXRvLW5hbWVzcGFjZSAhZGVmYXVsdDtcblxuLyoqXG4gKiAxLiBSZXNldCBhbnkgcmVzaWR1YWwgc3R5bGVzIChtb3N0IGxpa2VseSBmcm9tIGxpc3RzKS5cbiAqIDIuIFRhYmxlcyBmb3IgbGF5b3V0IVxuICogMy4gRm9yY2UgYWxsIGB0YWJsZS1jZWxsYCBjaGlsZHJlbiB0byBoYXZlIGVxdWFsIHdpZHRocy5cbiAqIDQuIEZvcmNlIHRoZSBvYmplY3QgdG8gYmUgdGhlIGZ1bGwgd2lkdGggb2YgaXRzIHBhcmVudC4gQ29tYmluZWQgd2l0aCBbMl0sXG4gKiAgICB0aGlzIG1ha2VzIHRoZSBvYmplY3QgYmVoYXZlIGluIGEgcXVhc2ktYGRpc3BsYXk6IGJsb2NrO2AgbWFubmVyLlxuICovXG4uI3skYm9uaXRvLXRhYnMtbmFtZXNwYWNlfXRhYnMsXG4lI3skYm9uaXRvLXRhYnMtbmFtZXNwYWNlfXRhYnMge1xuICAgIG1hcmdpbjogIDA7IC8qIFsxXSAqL1xuICAgIHBhZGRpbmc6IDA7IC8qIFsxXSAqL1xuICAgIGxpc3Qtc3R5bGU6IG5vbmU7IC8qIFsxXSAqL1xuICAgIGRpc3BsYXk6IHRhYmxlOyAvKiBbMl0gKi9cbiAgICB0YWJsZS1sYXlvdXQ6IGZpeGVkOyAvKiBbM10gKi9cbiAgICB3aWR0aDogMTAwJTsgLyogWzRdICovXG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuXG4gICAgLiN7JGJvbml0by10YWJzLW5hbWVzcGFjZX10YWJzX19pdGVtLFxuICAgICUjeyRib25pdG8tdGFicy1uYW1lc3BhY2V9dGFic19faXRlbSB7XG4gICAgICAgIGRpc3BsYXk6IHRhYmxlLWNlbGw7IC8qIFsyXSAqL1xuICAgIH1cblxuICAgICAgICAuI3skYm9uaXRvLXRhYnMtbmFtZXNwYWNlfXRhYnNfX2xpbmssXG4gICAgICAgICUjeyRib25pdG8tdGFicy1uYW1lc3BhY2V9dGFic19fbGluayB7XG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgfVxuIiwiLyoqIFxuICogQ29tcG9uZW50IE9iamVjdFxuICpcbiAqIFRoZXNlIHN0eWxpbmdzIGFyZSB1c2VkIHRvIHN0eWxlIHVwIHRoZSBwYXR0ZXJuIGxpYnJhcnlcbiAqXG4gKi9cblxuLmNvbXBvbmVudCB7XG4gICAgcGFkZGluZy10b3A6ICRib25pdG8tYmFzZS1zcGFjaW5nLXVuaXQ7XG4gICAgcGFkZGluZy1ib3R0b206ICRib25pdG8tYmFzZS1zcGFjaW5nLXVuaXQ7XG5cbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJGNvbG9yLXNlY29uZGFyeTtcbn1cblxuLmNvbXBvbmVudF9fdGl0bGUge1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkY29sb3Itc2Vjb25kYXJ5O1xuXG4gICAgbGluZS1oZWlnaHQ6IDJlbTtcbiAgICBtYXJnaW4tYm90dG9tOiAkYm9uaXRvLWJhc2Utc3BhY2luZy11bml0O1xufSIsIi8qKlxuICogQ29udGFpbmVyIHN0bHllc1xuICpcbiAqIEV4dHJhIG1vZGlmaWVycyBmb3IgdGhlIGNvbnRhaW5lclxuICpcbiAqIEV4YW1wbGU6XG4gKiAgPGRpdiBjbGFzcz1cImNvbnRhaW5lciBjb250YWluZXItLXNsaW1cIj48L2Rpdj5cbiAqL1xuXG4uY29udGFpbmVyLS1zbGltIHtcbiAgICBtYXgtd2lkdGg6IDU0MnB4O1xufVxuXG4uY29udGFpbmVyLS1zbGVuZGVyIHtcbiAgICBtYXgtd2lkdGg6IDU5NXB4O1xuICAgIHBhZGRpbmctbGVmdDogJGJvbml0by1iYXNlLXNwYWNpbmctdW5pdC0tbGFyZ2U7XG4gICAgcGFkZGluZy1yaWdodDogJGJvbml0by1iYXNlLXNwYWNpbmctdW5pdC0tbGFyZ2U7XG59IiwiLyoqXG4gKiBIZWFkaW5nIHN0eWxlc1xuICpcbiAqIFNwZWNpZmljIGhlYWRpbmcgc3R5bGVzXG4gKlxuICogRXhhbXBsZTpcbiAqICA8aDIgY2xhc3M9XCJoLXByaW1hcnlcIj4gLi4uIDwvaDI+XG4gKi9cblxuLy8gUHJpbWFyeSBoZWFkaW5nXG4uaC1wcmltYXJ5IHtcbiAgICBjb2xvcjogJGNvbG9yLXByaW1hcnk7XG59XG5cbi8vIFNlY29uZGFyeSBoZWFkaW5nXG4uaC1zZWNvbmRhcnkge1xuICAgIGNvbG9yOiAkY29sb3Itc2Vjb25kYXJ5O1xuICAgIEBpbmNsdWRlIGJvbml0by1mb250LXNpemUoMzJweCwgNDBweCk7XG59XG5cbi8vIFRlcnRpYXJ5IGhlYWRpbmdcbi5oLXRlcnRpYXJ5IHtcbiAgICBjb2xvcjogJGNvbG9yLXdoaXRlO1xuICAgIGNvbG9yOiByZ2JhKCRjb2xvci13aGl0ZSwgMC43KTtcbn1cblxuLy8gU3RhbmRvdXRcbi5oLXN0YW5kb3V0IHtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG5cbi8vIFN0YW5kb3V0IGRpc3BsYXkgYW5kIHRleHQgdHJuYXNmb3JtXG4uaC1zdGFuZG91dF9faGVhZGVyLXRvcCxcbi5oLXN0YW5kb3V0X19oZWFkZXItbWlkZGxlLFxuLmgtc3RhbmRvdXRfX2hlYWRlci1ib3R0b20ge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG59XG5cblxuLy8gU3RhbmRvdXQgb3V0IHRvcCBsaW5lXG4uaC1zdGFuZG91dF9faGVhZGVyLXRvcCB7XG4gICAgQGluY2x1ZGUgYm9uaXRvLWZvbnQtc2l6ZSg0MXB4LCA0NHB4KTtcbiAgICBmb250LXdlaWdodDogNzAwO1xufVxuXG4vLyBTdGFuZG91dCBvdXQgdG9wIGxpbmUgc2Vjb25kYXJ5XG4uaC1zdGFuZG91dF9faGVhZGVyLXRvcC0tc2Vjb25kYXJ5IHtcbiAgICBAaW5jbHVkZSBib25pdG8tZm9udC1zaXplKDM4cHgsIDQ4cHgpO1xuICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gICAgdGV4dC10cmFuc2Zvcm06IG5vbmU7XG4gICAgY29sb3I6ICRjb2xvci1zZWNvbmRhcnk7XG59XG5cbi8vIFN0YW5kb3V0IG91dCBtaWRkbGUgbGluZVxuLmgtc3RhbmRvdXRfX2hlYWRlci1taWRkbGUge1xuICAgIEBpbmNsdWRlIGJvbml0by1mb250LXNpemUoMTZweCwgMzJweCk7XG4gICAgbGV0dGVyLXNwYWNpbmc6IDdweDtcbn1cblxuLy8gU3RhbmRvdXQgb3V0IGJvdHRvbSBsaW5lXG4uaC1zdGFuZG91dF9faGVhZGVyLWJvdHRvbSB7XG4gICAgQGluY2x1ZGUgYm9uaXRvLWZvbnQtc2l6ZSg1NnB4LCA1NnB4KTtcbiAgICBsZXR0ZXItc3BhY2luZzogMTBweDtcbn0iLCIvKipcbiAqIFJlc3BvbnNpdmUgbGF5b3V0XG4gKlxuICogVGhpcyBvYmplY3QgZW5hYmxlcyB5b3UgdG8gdXNlIC5sYXlvdXQtLXJldiBhdCBkaWZmZXJlbnQgYnJlYWtwb2ludHNcbiAqXG4gKiBFeGFtcGxlOlxuICogIDxkaXYgY2xhc3M9XCJsYXlvdXQgbGF5b3V0LS1yZXYtbGFwLWFuZC11cD4gLi4uIDwvZGl2PlxuICovXG5cbkBlYWNoICRicmVha3BvaW50IGluICRicmVha3BvaW50cyB7XG5cbiAgICAkYWxpYXM6IG50aCgkYnJlYWtwb2ludCwgMSk7XG5cbiAgICAvLyBUaGlzIGlzbuKAmXQgaWRlYWwsIGJ1dCB3ZSBkZWZpbml0ZWx5IGRvbuKAmXQgd2FudCB0byBnZW5lcmF0ZSB3aWR0aHNcbiAgICAvLyBmb3IgcmV0aW5hIGRldmljZXMuIEV4Y2x1ZGUgcmV0aW5hIG1lZGlhLXFldXJpZXMgbWFudWFsbHkuXG4gICAgQGlmICgkYWxpYXMgIT0gXCJyZXRpbmFcIikge1xuXG4gICAgICAgIEBpbmNsdWRlIG1lZGlhLXF1ZXJ5KCRhbGlhcykge1xuXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFJldmVyc2VkIHJlbmRlcmVkIG9yZGVyIG9mIGxheW91dCBpdGVtcywgZS5nLiBpdGVtcyAxLCAyLCAzLCA0IGluIHlvdXJcbiAgICAgICAgICAgICAqIG1hcmt1cCB3aWxsIGRpc3BsYXkgaW4gb3JkZXIgNCwgMywgMiwgMSBvbiB5b3VyIHBhZ2UuXG4gICAgICAgICAgICAgKi9cblxuICAgICAgICAgICAgLiN7JGJvbml0by1sYXlvdXQtbmFtZXNwYWNlfWxheW91dC0tcmV2LSN7JGFsaWFzfSxcbiAgICAgICAgICAgICUjeyRib25pdG8tbGF5b3V0LW5hbWVzcGFjZX1sYXlvdXQtLXJldi0jeyRhbGlhc30ge1xuICAgICAgICAgICAgICAgIGRpcmVjdGlvbjogcnRsO1xuICAgICAgICAgICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG5cbiAgICAgICAgICAgICAgICA+IC4jeyRib25pdG8tbGF5b3V0LW5hbWVzcGFjZX1sYXlvdXRfX2l0ZW0sXG4gICAgICAgICAgICAgICAgPiAlI3skYm9uaXRvLWxheW91dC1uYW1lc3BhY2V9bGF5b3V0X19pdGVtIHtcbiAgICAgICAgICAgICAgICAgICAgZGlyZWN0aW9uOiBsdHI7XG4gICAgICAgICAgICAgICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuICAgIH1cbn1cblxuIiwiLyoqXG4gKiBGbGFnIHN0eWxpbmdcbiAqXG4gKiBFeHRyYSBmbGFnIG9wdGlvbnMgZm9yIHRoZSBCb25pdG8gRmxhZyBPYmplY3RcbiAqXG4gKiBFeGFtcGxlOlxuICogIDxkaXYgY2xhc3M9XCJmbGFnIGZsYWctLWlubGluZVwiPiAuLi4gPC9kaXY+XG4gKi9cblxuLy8gSW5jbHVkZSBTVkdzIGluIGZsYWdcbi5mbGFnX19pbWcge1xuICAgIHN2ZyB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIH1cbn1cblxuLy8gSW5saW5lIEZsYWcgb3B0aW9uXG4uZmxhZy0taW5saW5lIHtcbiAgICAuZmxhZ19fYm9keSB7XG4gICAgICAgIHdpZHRoOiBhdXRvO1xuICAgIH1cbn1cblxuQGluY2x1ZGUgbWVkaWEtcXVlcnkocGFsbSkge1xuICAgIC8vIFBhbG0gb25seSBmbHVzaCBndXR0ZXJpbmdcbiAgICAuI3skYm9uaXRvLWZsYWctbmFtZXNwYWNlfWZsYWctLWZsdXNoLXBhbG0sIFxuICAgICUjeyRib25pdG8tZmxhZy1uYW1lc3BhY2V9ZmxhZy0tZmx1c2gtcGFsbSB7XG5cbiAgICAgICAgPiAuI3skYm9uaXRvLWZsYWctbmFtZXNwYWNlfWZsYWdfX2ltZyxcbiAgICAgICAgPiAlI3skYm9uaXRvLWZsYWctbmFtZXNwYWNlfWZsYWdfX2ltZyB7XG4gICAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiAwO1xuICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiAgMDtcbiAgICAgICAgfVxuXG4gICAgfVxufSIsIi8qKlxuICogVG9nZ2xlIGRvY3VtZW50YXRpb25cbiAqXG4gKiBBbiBhYnN0cmFjdGVkIGFuZCByZW1peGVkIG9iamVjdCBiYXNlIHVwb24gSmVyZW15IEtpZXRoJ3MgYWNjZXNzaWJpbGl0eSB0b2dnbGVcbiAqIGh0dHBzOi8vYWRhY3Rpby5jb20vam91cm5hbC8xMDQ3NVxuICpcbiAqIEV4YW1wbGU6XG4gKlxuICovXG5cbi8vIEJhc2UgdG9nZ2xlIHN0eWxpbmdcbi50b2dnbGUge1xuICAgICYgW2FyaWEtaGlkZGVuPSd0cnVlJ10ge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cblxuICAgIC50b2dnbGVfX2NvbnRlbnQtLWlzLW9wZW4ge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICB9XG5cbiAgICAmICBbYXJpYS1oaWRkZW49J2ZhbHNlJ10ge1xuXG4gICAgfVxufVxuXG46Zm9jdXMge1xuICAgIG91dGxpbmU6IG5vbmU7XG59XG4iLCIvKipcbiAqIFZpZGVvIE9iamVjdFxuICpcbiAqIFRoaXMgY2xhc3MgaXMgdXNlZCBmb3IgcmVzcG9uc2l2ZSB5b3V0dWJlL3ZpZW1vIHZpZGVvc1xuICpcbiAqIEV4YW1wbGU6XG4gKiAgPGRpdiBjbGFzcz1cInZpZGVvXCI+XG4gKiAgICAgIDxpZnJhbWUgc3JjPVwiaHR0cHM6Ly93d3cueW91dHViZS5jb20vZW1iZWQvUkk4eldBbkdLdWdcIiBmcmFtZWJvcmRlcj1cIjBcIiBhbGxvd2Z1bGxzY3JlZW4+PC9pZnJhbWU+XG4gKiAgPC9kaXY+XG4gKlxuICovXG5cbi52aWRlbyB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHBhZGRpbmctYm90dG9tOiA1MyU7XG4gICAgcGFkZGluZy10b3A6IDI1cHg7XG4gICAgaGVpZ2h0OiAwO1xuICAgIG1hcmdpbi1ib3R0b206ICRib25pdG8tYmFzZS1zcGFjaW5nLXVuaXQtLWxhcmdlO1xuXG4gICAgaWZyYW1lIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB0b3A6IDA7XG4gICAgICAgIGxlZnQ6IDA7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgfVxufSIsIi8qKlxuICogRGl2aWRlciBPYmplY3RcbiAqXG4gKiBUaGlzIGlzIHVzZWQgdG8gc3R5bGUgZGl2aWRlcnNcbiAqXG4gKiBFeGFtcGxlOlxuICogIDxwIGNsYXNzPSdkaXZpZGVyJz48c3BhbiBjbGFzcz1cImRpdmlkZXJfX3RleHRcIj5vcjwvc3Bhbj48L3A+XG4gKi9cblxuLy8gRm9ybSBkaXZpZGVyXG4uZGl2aWRlciB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICAgQGluY2x1ZGUgYm9uaXRvLWZvbnQtc2l6ZSgxOHB4KTtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG5cbiAgICB6LWluZGV4OiAyO1xuXG4gICAgLmRpdmlkZXJfX3RleHQge1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvci1ncmV5LWxpZ2h0ZXI7XG4gICAgICAgIHBhZGRpbmc6IDAgJGJvbml0by1iYXNlLXNwYWNpbmctdW5pdDtcbiAgICB9XG5cbiAgICAmOmFmdGVyIHtcbiAgICAgICAgY29udGVudDogJyc7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgaGVpZ2h0OiAxcHg7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3ItZ3JleS03NTtcbiAgICAgICAgdG9wOiAxMHB4O1xuICAgICAgICBsZWZ0OiAwO1xuICAgICAgICB6LWluZGV4OiAtMTtcbiAgICB9XG59XG5cbi8vIEZvcm0gZGl2aWRlclxuLmRpdmlkZXItLXdoaXRlIHtcbiAgICAuZGl2aWRlcl9fdGV4dCB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvci1ncmV5O1xuXG4gICAgfVxuICAgICY6YWZ0ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3Itd2hpdGU7XG4gICAgfVxuXG59IiwiLyoqXG4gKiBCdXR0b25zIHN0eWxpbmdcbiAqXG4gKi9cblxuLy8gQmFzZSBidXR0b24gc3R5bGluZ1xuLmJ0biB7XG4gICAgQGluY2x1ZGUgYm9uaXRvLWZvbnQtc2l6ZSgyMHB4LCAzMnB4KTtcbiAgICBtYXJnaW4tYm90dG9tOiAkYm9uaXRvLWJhc2Utc3BhY2luZy11bml0O1xuICAgIHBhZGRpbmctdG9wOiAkYm9uaXRvLWJhc2Utc3BhY2luZy11bml0LS1zbWFsbDtcbiAgICBwYWRkaW5nLWJvdHRvbTogJGJvbml0by1iYXNlLXNwYWNpbmctdW5pdC0tc21hbGw7XG4gICAgcGFkZGluZy1sZWZ0OiAkYm9uaXRvLWJhc2Utc3BhY2luZy11bml0LS10aW55KjY7XG4gICAgcGFkZGluZy1yaWdodDogJGJvbml0by1iYXNlLXNwYWNpbmctdW5pdC0tdGlueSo2O1xuXG4gICAgY29sb3I6ICRjb2xvci13aGl0ZTtcblxuICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQgMC4ycyAkdGltaW5nLWZ1bmN0aW9uLCBjb2xvciAwLjJzICR0aW1pbmctZnVuY3Rpb247XG4gICAgJjpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQ6ICM3RUNDQkE7XG4gICAgfVxufVxuXG4vLyBCdXR0b24gUHJpbWFyeVxuJWJ0bi0tcHJpbWFyeSxcbi5idG4tLXByaW1hcnkge1xuICAgICY6aG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kOiAkY29sb3ItZ3JlZW4tNzU7XG4gICAgfVxufVxuXG4vLyBCdXR0b24gU2Vjb25kYXJ5XG4uYnRuLS1zZWNvbmRhcnkge1xuICAgIGJhY2tncm91bmQ6ICRjb2xvci1ibHVlLWRhcms7IC8qIE9sZCBicm93c2VycyAqL1xuICAgIGJhY2tncm91bmQ6IC1tb3otbGluZWFyLWdyYWRpZW50KHRvcCwgJGNvbG9yLWJsdWUgMCUsICRjb2xvci1ibHVlLWRhcmsgMTAwJSk7IC8qIEZGMy42LTE1ICovXG4gICAgYmFja2dyb3VuZDogLXdlYmtpdC1saW5lYXItZ3JhZGllbnQodG9wLCAkY29sb3ItYmx1ZSAwJSwkY29sb3ItYmx1ZS1kYXJrIDEwMCUpOyAvKiBDaHJvbWUxMC0yNSxTYWZhcmk1LjEtNiAqL1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sICRjb2xvci1ibHVlIDAlLCRjb2xvci1ibHVlLWRhcmsgMTAwJSk7IC8qIFczQywgSUUxMCssIEZGMTYrLCBDaHJvbWUyNissIE9wZXJhMTIrLCBTYWZhcmk3KyAqL1xuXG4gICAgYm94LXNoYWRvdzogaW5zZXQgMCAtMXB4IDFweCAwIHJnYmEoMCwwLDAsLjMzKTtcblxuICAgICY6aG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kOiAkY29sb3ItYmx1ZS1kYXJrOyAvKiBPbGQgYnJvd3NlcnMgKi9cbiAgICAgICAgYmFja2dyb3VuZDogLW1vei1saW5lYXItZ3JhZGllbnQodG9wLCAkY29sb3ItYmx1ZS1kYXJrIDAlLCAkY29sb3ItYmx1ZSAxMDAlKTsgLyogRkYzLjYtMTUgKi9cbiAgICAgICAgYmFja2dyb3VuZDogLXdlYmtpdC1saW5lYXItZ3JhZGllbnQodG9wLCAkY29sb3ItYmx1ZS1kYXJrIDAlLCRjb2xvci1ibHVlIDEwMCUpOyAvKiBDaHJvbWUxMC0yNSxTYWZhcmk1LjEtNiAqL1xuICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCAkY29sb3ItYmx1ZS1kYXJrIDAlLCRjb2xvci1ibHVlIDEwMCUpOyAvKiBXM0MsIElFMTArLCBGRjE2KywgQ2hyb21lMjYrLCBPcGVyYTEyKywgU2FmYXJpNysgKi9cbiAgICB9XG59XG5cbi8vIEJ1dHRvbiBUZXJ0aWFyeVxuLmJ0bi0tdGVydGlhcnkge1xuICAgIGJhY2tncm91bmQ6ICRjb2xvci1ncmV5LWRhcms7XG4gICAgY29sb3I6ICRjb2xvci13aGl0ZTtcblxuICAgIGJveC1zaGFkb3c6IGluc2V0IDAgLTFweCAxcHggMCByZ2JhKDAsMCwwLC4zMyk7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZDogJGNvbG9yLWdyZXktbGlnaHQ7XG4gICAgICAgIGNvbG9yOiAkY29sb3ItZ3JleTtcbiAgICB9XG59XG5cbi8vIEJ1dHRvbiBQaWxsXG4uYnRuLS1waWxsICB7XG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG5cbiAgICBib3JkZXI6IDJweCBzb2xpZCAkY29sb3Itd2hpdGU7XG4gICAgXG4gICAgJjpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQ6ICRjb2xvci1zZWNvbmRhcnk7XG4gICAgfVxufVxuXG4vLyBCYXNlIGJ1dHRvbiBzdHlsaW5nXG4uYnRuLS1zbWFsbCB7XG4gICAgQGluY2x1ZGUgYm9uaXRvLWZvbnQtc2l6ZSgxNnB4KTtcbiAgICBwYWRkaW5nLXRvcDogJGJvbml0by1iYXNlLXNwYWNpbmctdW5pdC0tc21hbGw7XG4gICAgcGFkZGluZy1ib3R0b206ICRib25pdG8tYmFzZS1zcGFjaW5nLXVuaXQtLXNtYWxsO1xuICAgIHBhZGRpbmctbGVmdDogJGJvbml0by1iYXNlLXNwYWNpbmctdW5pdC0tdGlueSo2O1xuICAgIHBhZGRpbmctcmlnaHQ6ICRib25pdG8tYmFzZS1zcGFjaW5nLXVuaXQtLXRpbnkqNjtcbn1cblxuQGluY2x1ZGUgbWVkaWEtcXVlcnkoJ3BhbG0nKSB7XG4gICAgLy8gQmFzZSBidXR0b24gc3R5bGluZ1xuICAgIC5idG4tLXBhbG0tdGlueSB7XG4gICAgICAgIEBpbmNsdWRlIGJvbml0by1mb250LXNpemUoMTNweCk7XG4gICAgICAgIHBhZGRpbmctdG9wOiAzcHg7XG4gICAgICAgIHBhZGRpbmctYm90dG9tOiAzcHg7XG4gICAgICAgIHBhZGRpbmctbGVmdDogJGJvbml0by1iYXNlLXNwYWNpbmctdW5pdC0tdGlueSo2O1xuICAgICAgICBwYWRkaW5nLXJpZ2h0OiAkYm9uaXRvLWJhc2Utc3BhY2luZy11bml0LS10aW55KjY7XG5cbiAgICAgICAgYm9yZGVyLXdpZHRoOiAxcHg7XG4gICAgfVxufVxuXG4iLCIvKipcbiAqIEZvcm0gc3R5bGVzXG4gKlxuICogRm9ybSBhbmQgZWxlbWVudHMgc3R5bGluZ1xuICpcbiAqL1xuXG4kYm9uaXRvLXNlbGVjdC1oZWlnaHQ6IDQ5cHg7XG4kYm9uaXRvLWxhYmVsLXdpZHRoOiAxNDJweDtcbiRib25pdG8teGwtbGFiZWwtd2lkdGg6IDE3OHB4O1xuXG4vLyBCYXNlIGZvcm1cbi5mb3JtIHtcbiAgICBwYWRkaW5nOiAkYm9uaXRvLWJhc2Utc3BhY2luZy11bml0LS1zbWFsbDtcbiAgICBtYXJnaW4tYm90dG9tOiAkYm9uaXRvLWJhc2Utc3BhY2luZy11bml0O1xuXG4gICAgY29sb3I6ICRjb2xvci1ncmV5LTc1O1xuXG4gICAgYmFja2dyb3VuZDogJGNvbG9yLWdyZXktbGlnaHRlcjtcbiAgICBib3JkZXItcmFkaXVzOiAkYm9uaXRvLWJhc2Utc3BhY2luZy11bml0LS1zbWFsbDtcbiAgICBib3gtc2hhZG93OiAwcHggMnB4IDRweCAwcHggcmdiYSgwLCAwLCAwLCAwLjUwKTtcblxuXG59XG5cbi8vIEZvcm0gbGFiZWxcbi5mb3JtX19sYWJlbCB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgbWFyZ2luLWJvdHRvbTogJGJvbml0by1iYXNlLXNwYWNpbmctdW5pdC0tc21hbGw7XG4gICAgQGluY2x1ZGUgYm9uaXRvLWZvbnQtc2l6ZSgxOHB4KTtcbiAgICBjb2xvcjogJGNvbG9yLXNlY29uZGFyeTtcbiAgICB0ZXh0LWFsaWduOiBsZWZ0O1xufVxuXG4vLyBGb3JtIGZpZWxkXG4uZm9ybV9fZmllbGQge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgIC5mb3JtX19sYWJlbCB7XG4gICAgICAgIHBhZGRpbmc6ICRib25pdG8tYmFzZS1zcGFjaW5nLXVuaXQgJGJvbml0by1iYXNlLXNwYWNpbmctdW5pdDtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgdG9wOiAwO1xuICAgICAgICBsZWZ0OiAwO1xuICAgICAgICB3aWR0aDogJGJvbml0by1sYWJlbC13aWR0aDtcblxuICAgICAgICB6LWluZGV4OiAyO1xuICAgIH1cbn1cblxuLy8gRk9ybSBsaW5rXG4uZm9ybV9fbGluayB7XG4gICAgY29sb3I6ICRjb2xvci1ncmV5LTc1O1xuICAgIGJhY2tncm91bmQ6IG5vbmU7XG4gICAgYm9yZGVyOiBub25lO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICAgIGNvbG9yOiAkY29sb3Itc2Vjb25kYXJ5O1xuICAgIH1cbn1cblxuLy8gRm9ybSBjb250cm9sXG4uZm9ybV9fY29udHJvbCB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHBhZGRpbmc6ICRib25pdG8tYmFzZS1zcGFjaW5nLXVuaXQtLXRpbnkqMyAkYm9uaXRvLWJhc2Utc3BhY2luZy11bml0ICRib25pdG8tYmFzZS1zcGFjaW5nLXVuaXQtLXRpbnkqMyAkYm9uaXRvLWxhYmVsLXdpZHRoO1xuICAgIGhlaWdodDogJGJvbml0by1zZWxlY3QtaGVpZ2h0O1xuXG4gICAgbWFyZ2luLWJvdHRvbTogJGJvbml0by1iYXNlLXNwYWNpbmctdW5pdC0tc21hbGw7XG4gICAgd2lkdGg6IDEwMCU7XG5cbiAgICBAaW5jbHVkZSBib25pdG8tZm9udC1zaXplKDE4cHgpO1xuXG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgYm9yZGVyOiAxcHggc29saWQgJGNvbG9yLXNlY29uZGFyeTtcbiAgICBib3JkZXItcmFkaXVzOiAkYm9uaXRvLWJhc2Utc3BhY2luZy11bml0LS1zbWFsbDtcblxuICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQgMC4ycyAkdGltaW5nLWZ1bmN0aW9uO1xuXG4gICAgJjpmb2N1cyB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvci13aGl0ZTtcbiAgICAgICAgb3V0bGluZTogbm9uZTtcbiAgICB9XG5cbiAgICAvLyBVbnN0eWxlIHRoZSBjYXJldCBvbiBgPHNlbGVjdD5gcyBpbiBJRTEwKy5cbiAgICAmOjotbXMtZXhwYW5kIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICAgIGJvcmRlcjogMDtcbiAgICB9XG5cbiAgICAmLmZvcm0tLWlzLXNlbGVjdGVkIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yLXdoaXRlO1xuXG4gICAgICAgIC5mb3JtX19zZWxlY3Q6YmVmb3JlIHtcbiAgICAgICAgICAgIGJvcmRlci10b3AtY29sb3I6ICRjb2xvci13aGl0ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5mb3JtX19zZWxlY3Qge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHRvcDogLTFweDtcbiAgICAgICAgbGVmdDogMDtcbiAgICAgICAgcmlnaHQ6IC0xcHg7XG4gICAgICAgIHBhZGRpbmctbGVmdDogJGJvbml0by1sYWJlbC13aWR0aDtcbiAgICAgICAgcGFkZGluZy1yaWdodDogJGJvbml0by1iYXNlLXNwYWNpbmctdW5pdCozLjU7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBoZWlnaHQ6ICRib25pdG8tc2VsZWN0LWhlaWdodDtcblxuICAgICAgICBsaW5lLWhlaWdodDogJGJvbml0by1zZWxlY3QtaGVpZ2h0O1xuXG4gICAgICAgIGFwcGVhcmFuY2U6IG5vbmU7XG4gICAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcblxuICAgICAgICB6LWluZGV4OiAxMDtcblxuICAgICAgICAmOmZvY3VzIHtcbiAgICAgICAgICAgIG91dGxpbmU6IG5vbmU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuZm9ybV9fbGFiZWwge1xuICAgICAgICB0b3A6IC0xcHg7XG4gICAgfVxuXG4gICAgJjphZnRlciB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBoZWlnaHQ6ICRib25pdG8tc2VsZWN0LWhlaWdodDtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB0b3A6IC0xcHg7XG4gICAgICAgIHJpZ2h0OiAtMXB4O1xuICAgICAgICB3aWR0aDogJGJvbml0by1iYXNlLXNwYWNpbmctdW5pdCozO1xuXG4gICAgICAgIGJhY2tncm91bmQ6ICRjb2xvci1zZWNvbmRhcnk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDAgJGJvbml0by1iYXNlLXNwYWNpbmctdW5pdC0tc21hbGwgJGJvbml0by1iYXNlLXNwYWNpbmctdW5pdC0tc21hbGwgMDtcblxuICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICB6LWluZGV4OiAxO1xuICAgIH1cblxuICAgICY6YmVmb3JlIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB0b3A6IDIxcHg7XG4gICAgICAgIHJpZ2h0OiAxM3B4O1xuICAgICAgICB3aWR0aDogMDtcbiAgICAgICAgaGVpZ2h0OiAwO1xuICAgICAgICBib3JkZXItbGVmdDogOXB4IHNvbGlkIHRyYW5zcGFyZW50O1xuICAgICAgICBib3JkZXItcmlnaHQ6IDlweCBzb2xpZCB0cmFuc3BhcmVudDtcblxuICAgICAgICBib3JkZXItdG9wOiAxMHB4IHNvbGlkICRjb2xvci13aGl0ZTtcblxuICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgei1pbmRleDogMjtcbiAgICB9XG5cbiAgICAmOmZvY3VzOjotbXMtdmFsdWUge1xuICAgICAgICAvLyBTdXBwcmVzcyB0aGUgbmVzdGVkIGRlZmF1bHQgd2hpdGUgdGV4dCBvbiBibHVlIGJhY2tncm91bmQgaGlnaGxpZ2h0IGdpdmVuIHRvXG4gICAgICAgIC8vIHRoZSBzZWxlY3RlZCBvcHRpb24gdGV4dCB3aGVuIHRoZSAoc3RpbGwgY2xvc2VkKSA8c2VsZWN0PiByZWNlaXZlcyBmb2N1c1xuICAgICAgICAvLyBpbiBJRSBhbmQgKHVuZGVyIGNlcnRhaW4gY29uZGl0aW9ucykgRWRnZSwgYXMgaXQgbG9va3MgYmFkIGFuZCBjYW5ub3QgYmUgbWFkZSB0b1xuICAgICAgICAvLyBtYXRjaCB0aGUgYXBwZWFyYW5jZSBvZiB0aGUgbmF0aXZlIHdpZGdldC5cbiAgICAgICAgLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9pc3N1ZXMvMTkzOTguXG4gICAgICAgIGNvbG9yOiAkY29sb3ItZ3JleTtcbiAgICAgICAgYmFja2dyb3VuZDogJGNvbG9yLXdoaXRlO1xuICAgIH1cbn1cblxuLy8gRm9ybSByYWRpb1xuLmZvcm1fX3JhZGlvIHtcbiAgICBkaXNwbGF5OiBub25lO1xuXG4gICAgKyAuZm9ybV9fcmFkaW8tbGFiZWwge1xuICAgICAgICBtYXJnaW4tcmlnaHQ6ICRib25pdG8tYmFzZS1zcGFjaW5nLXVuaXQtLXNtYWxsO1xuICAgICAgICBAaW5jbHVkZSBib25pdG8tZm9udC1zaXplKDE4cHgpO1xuICAgICAgICBjb2xvcjogJGNvbG9yLXNlY29uZGFyeTtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuXG4gICAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogJGJvbml0by1iYXNlLXNwYWNpbmctdW5pdC0tdGlueTtcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IDFweDtcblxuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yLWdyZXktbGlnaHQ7XG4gICAgICAgICAgICBoZWlnaHQ6ICRib25pdG8tYmFzZS1zcGFjaW5nLXVuaXQ7XG4gICAgICAgICAgICB3aWR0aDogJGJvbml0by1iYXNlLXNwYWNpbmctdW5pdDtcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6ICRib25pdG8tYmFzZS1zcGFjaW5nLXVuaXQ7XG5cbiAgICAgICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gU2VsZWN0ZWQgcmFkaW9cbiAgICAmOmNoZWNrZWQgKyAuZm9ybV9fcmFkaW8tbGFiZWw6YmVmb3JlIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yLXNlY29uZGFyeTtcbiAgICB9XG59XG5cbi8vIEVycm9yIGZvcm0gY29udHJvbFxuLmZvcm1fX2ZpZWxkLS1lcnJvciB7XG4gICAgLmZvcm1fX2xhYmVsIHtcbiAgICAgICAgY29sb3I6ICRjb2xvci1wcmltYXJ5O1xuICAgIH1cbiAgICAmLmZvcm1fX2NvbnRyb2wsXG4gICAgLmZvcm1fX2NvbnRyb2wge1xuICAgICAgICBib3JkZXItY29sb3I6ICRjb2xvci1wcmltYXJ5O1xuICAgICAgICBib3gtc2hhZG93OiAwIDAgMCAycHggJGNvbG9yLXByaW1hcnk7XG5cbiAgICAgICAgJjphZnRlciB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3ItcHJpbWFyeTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gRm9ybSBhY3Rpb25zXG4uZm9ybV9fYWN0aW9ucyB7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcblxuICAgIC5idG4ge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgIH1cbn1cblxuLy8gRm9ybSBtZXNzYWdlXG4uZm9ybV9fbWVzc2FnZSB7XG4gICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgZm9udC1zdHlsZTogaXRhbGljO1xuICAgIGNvbG9yOiAkY29sb3ItcHJpbWFyeTtcbn1cblxuc2VsZWN0OjotbXMtZXhwYW5kIHtcbiAgICBkaXNwbGF5OiBub25lO1xufVxuXG4ubHQtaWUxMCAuZm9ybV9fY29udHJvbCB7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAuZm9ybV9fc2VsZWN0IHtcbiAgICAgICAgcGFkZGluZy1yaWdodDogMDtcbiAgICB9XG4gICAgJjphZnRlcixcbiAgICAmOmJlZm9yZSB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxufVxuXG4uZm9ybV9fc21hbGwge1xuICAgIEBpbmNsdWRlIGJvbml0by1mb250LXNpemUoMTJweCk7XG5cbiAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgIGZvbnQtc3R5bGU6IGl0YWxpYztcbn1cblxuXG4uanMge1xuICAgIC5mb3JtX19maWVsZC5mb3JtX19jb250cm9sIHtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICB9XG59XG5cbi8vIEZvcm0gZ3JvdXAgd2l0aCBsYXJnZXIgbGFiZWxzXG4uZm9ybV9fZmllbGQteGwge1xuICAgIC5mb3JtX19sYWJlbCB7XG4gICAgICAgIHdpZHRoOiAkYm9uaXRvLXhsLWxhYmVsLXdpZHRoO1xuICAgIH1cblxuICAgIC5mb3JtX19jb250cm9sIHtcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAkYm9uaXRvLXhsLWxhYmVsLXdpZHRoO1xuICAgIH1cbn1cblxuQGluY2x1ZGUgbWVkaWEtcXVlcnkobGFwLWFuZC11cCkge1xuICAgIC5mb3JtLS1wYWRkZWQge1xuICAgICAgICBwYWRkaW5nOiAkYm9uaXRvLWJhc2Utc3BhY2luZy11bml0LS10aW55KjExO1xuICAgIH1cbn0iLCIvKipcbiAqIFByb2dyZXNzIHN0bHlpbmdcbiAqXG4gKiBVc2VkIHRvIGNyZWF0ZSAgYSBwcm9ncmVzIGJhclxuICpcbiAqIEV4YW1wbGU6XG4gKiAgPGRpdiBjbGFzcz1cInByb2dyZXNzXCIgZGF0YS1wcm9ncmVzcz1cIjc1JVwiPjwvZGl2PlxuICovXG5cbiRxdWVzdGlvbi1hbW91bnQ6IDQwO1xuXG4ucHJvZ3Jlc3Mge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6ICRib25pdG8tYmFzZS1zcGFjaW5nLXVuaXQ7XG4gICAgbWFyZ2luLWJvdHRvbTogJGJvbml0by1iYXNlLXNwYWNpbmctdW5pdDtcblxuICAgIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCgtOTBkZWcsICNFNEU0RTQgMSUsICNDRENCQ0IgOTglKTtcbiAgICBib3gtc2hhZG93OiBpbnNldCAwcHggMXB4IDFweCAwcHggcmdiYSgwLDAsMCwwLjMzKTtcbiAgICBib3JkZXItcmFkaXVzOiAkYm9uaXRvLWJhc2Utc3BhY2luZy11bml0LS10aW55O1xuICAgIFxuICAgICY6YWZ0ZXIge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgaGVpZ2h0OiAkYm9uaXRvLWJhc2Utc3BhY2luZy11bml0O1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHRvcDogMDtcbiAgICAgICAgbGVmdDogMDtcblxuICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQoLTE4MGRlZywgIzUyQ0NCMCAwJSwgJGNvbG9yLWdsYXNzLXNwcmluZyAxMDAlKTtcbiAgICAgICAgYm94LXNoYWRvdzogaW5zZXQgMHB4IC0xcHggMXB4IDBweCByZ2JhKDAsMCwwLDAuMzMpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAkYm9uaXRvLWJhc2Utc3BhY2luZy11bml0LS10aW55O1xuXG4gICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgIH1cbiAgICBcbn1cblxuLy8gQ3JlYXRlIGFsbCBvZiB0aGUgc3RlcHMgdGhhdCBlcXVhbCB0aGUgbnVtYmVyIG9mIHF1ZXN0aW9uc1xuQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAkcXVlc3Rpb24tYW1vdW50IHtcbiAgICAucHJvZ3Jlc3MtLSN7JGl9IHtcbiAgICAgICAgJjphZnRlciB7XG4gICAgICAgICAgICB3aWR0aDogJGkvJHF1ZXN0aW9uLWFtb3VudCAqIDEwMCU7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbiIsIi8qKlxuICogUXVlc3Rpb24gc3R5bGluZ1xuICpcbiAqIEV4YW1wbGU6XG4gKlxuICovXG5cbi8vIEJhc2UgcXVlc3Rpb24gc3R5bGluZ1xuLnF1ZXN0aW9uIHtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG5cbi5xdWVzdGlvbl9fbnVtYmVyIHtcbiAgICBAaW5jbHVkZSBib25pdG8tZm9udC1zaXplKDE0cHgpO1xuICAgIGNvbG9yOiAkY29sb3ItcHJpbWFyeTtcbn1cblxuLnF1ZXN0aW9uX19zdGF0ZW1lbnQge1xuICAgIEBpbmNsdWRlIGJvbml0by1mb250LXNpemUoMThweCwgMjRweCk7XG4gICAgbWFyZ2luLWxlZnQ6ICRib25pdG8tYmFzZS1zcGFjaW5nLXVuaXQtLWxhcmdlO1xuICAgIG1hcmdpbi1yaWdodDogJGJvbml0by1iYXNlLXNwYWNpbmctdW5pdC0tbGFyZ2U7XG4gICAgbWFyZ2luLWJvdHRvbTogJGJvbml0by1iYXNlLXNwYWNpbmctdW5pdCoxLjU7XG59XG5cbi5xdWVzdGlvbl9fbGFiZWwge1xuICAgIEBpbmNsdWRlIGJvbml0by1mb250LXNpemUoMTBweCwgMTJweCk7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgbWFyZ2luLWJvdHRvbTogJGJvbml0by1iYXNlLXNwYWNpbmctdW5pdCoxLjU7XG59XG5cbi5xdWVzdGlvbl9fYW5zd2VyIHtcbiAgICBkaXNwbGF5OiBub25lO1xufVxuXG4ucXVlc3Rpb25fX29wdGlvbiB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIG1hcmdpbi1yaWdodDogMDtcbiAgICBtYXJnaW4tbGVmdDogMDtcbiAgICBtYXJnaW4tYm90dG9tOiAkYm9uaXRvLWJhc2Utc3BhY2luZy11bml0KjEuNTtcblxuICAgIHRleHQtaW5kZW50OiAtOTk5OXB4O1xuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG5cbiAgICBib3JkZXI6IDNweCBzb2xpZCAkY29sb3Itc2Vjb25kYXJ5O1xuICAgIGJvcmRlci1yYWRpdXM6IDUwcHg7XG5cbiAgICBjdXJzb3I6IHBvaW50ZXI7XG5cbiAgICAmLTEge1xuICAgICAgICBoZWlnaHQ6IDIycHg7XG4gICAgICAgIHdpZHRoOiAyMnB4O1xuICAgIH1cblxuICAgICYtMiB7XG4gICAgICAgIGhlaWdodDogMzBweDtcbiAgICAgICAgd2lkdGg6IDMwcHg7XG4gICAgfVxuXG4gICAgJi0zIHtcbiAgICAgICAgaGVpZ2h0OiAzN3B4O1xuICAgICAgICB3aWR0aDogMzdweDtcbiAgICB9XG5cbiAgICAmLTQge1xuICAgICAgICBoZWlnaHQ6IDQ1cHg7XG4gICAgICAgIHdpZHRoOiA0NXB4O1xuICAgIH1cblxuICAgICYtNSB7XG4gICAgICAgIGhlaWdodDogNTJweDtcbiAgICAgICAgd2lkdGg6IDUycHg7XG4gICAgfVxufVxuXG4ucXVlc3Rpb25fX29wdGlvbjpob3Zlcixcbi5xdWVzdGlvbl9fYW5zd2VyOmNoZWNrZWQgKyAucXVlc3Rpb25fX29wdGlvbiB7XG4gICAgYmFja2dyb3VuZDogJGNvbG9yLXNlY29uZGFyeTtcbn1cblxuQGluY2x1ZGUgbWVkaWEtcXVlcnkobGFwLWFuZC11cCkge1xuICAgIC5xdWVzdGlvbl9fc3RhdGVtZW50IHtcbiAgICAgICAgQGluY2x1ZGUgYm9uaXRvLWZvbnQtc2l6ZSgyMnB4LCAyOHB4KTtcbiAgICB9XG5cbiAgICAucXVlc3Rpb25fX2xhYmVsIHtcbiAgICAgICAgQGluY2x1ZGUgYm9uaXRvLWZvbnQtc2l6ZSgxNnB4LCAyMHB4KTtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAkYm9uaXRvLWJhc2Utc3BhY2luZy11bml0LS10aW55O1xuICAgICAgICBtYXJnaW4tbGVmdDogJGJvbml0by1iYXNlLXNwYWNpbmctdW5pdC0tdGlueTtcbiAgICB9XG5cbiAgICAucXVlc3Rpb25fX29wdGlvbiB7XG4gICAgICAgIGJvcmRlci13aWR0aDogNXB4O1xuICAgICAgICBtYXJnaW4tcmlnaHQ6ICRib25pdG8tYmFzZS1zcGFjaW5nLXVuaXQtLXRpbnk7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAkYm9uaXRvLWJhc2Utc3BhY2luZy11bml0LS10aW55O1xuXG4gICAgICAgICYtMSB7XG4gICAgICAgICAgICBoZWlnaHQ6IDM1cHg7XG4gICAgICAgICAgICB3aWR0aDogMzVweDtcbiAgICAgICAgfVxuXG4gICAgICAgICYtMiB7XG4gICAgICAgICAgICBoZWlnaHQ6IDQ2cHg7XG4gICAgICAgICAgICB3aWR0aDogNDZweDtcbiAgICAgICAgfVxuXG4gICAgICAgICYtMyB7XG4gICAgICAgICAgICBoZWlnaHQ6IDU4cHg7XG4gICAgICAgICAgICB3aWR0aDogNThweDtcbiAgICAgICAgfVxuXG4gICAgICAgICYtNCB7XG4gICAgICAgICAgICBoZWlnaHQ6IDcwcHg7XG4gICAgICAgICAgICB3aWR0aDogNzBweDtcbiAgICAgICAgfVxuXG4gICAgICAgICYtNSB7XG4gICAgICAgICAgICBoZWlnaHQ6IDgwcHg7XG4gICAgICAgICAgICB3aWR0aDogODBweDtcbiAgICAgICAgfVxuICAgIH1cbn0iLCIvKipcbiAqIEdyb3VwIGNvbXBvbmVudFxuICpcbiAqIEEgY29tcG9uZW50IGRpY3RhdGluZyB0aGUgc3R5bGluZyBmb3IgYSBncm91cFxuICpcbiAqIEV4YW1wbGU6XG4gKiAgPGEgaHJlZj1cIiNcIiBjbGFzcz1cImdyb3VwXCI+XG4gKiAgICAgIDxkaXYgY2xhc3M9XCJncm91cF9faWNvblwiPiAuLi48L2Rpdj5cbiAqICAgICAgTmFtZTogPHNwYW4gY2xhc3M9XCJncm91cF9fbmFtZVwiPkVwaWMgQy5VIHN1cGVyIGxlZ2VuZOKAmXMgZ3JvdXAgb2Ygam95IChCaXJtaW5naGFtKTwvc3Bhbj5cbiAqICA8L2E+XG4gKi9cblxuLy8gQmFzZSBncm91cCBzdHlsaW5nXG4uZ3JvdXAge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHBhZGRpbmc6IDZweCAkYm9uaXRvLWJhc2Utc3BhY2luZy11bml0LS1zbWFsbDtcbiAgICBtYXJnaW4tYm90dG9tOiAkYm9uaXRvLWJhc2Utc3BhY2luZy11bml0LS1zbWFsbDtcblxuICAgIGNvbG9yOiAkY29sb3Itd2hpdGU7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIEBpbmNsdWRlIGJvbml0by1mb250LXNpemUoMThweCwgMjRweCk7XG5cbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3Itb3JhbmdlO1xuICAgIGJvcmRlci1yYWRpdXM6ICRib25pdG8tYmFzZS1zcGFjaW5nLXVuaXQtLXRpbnk7XG4gICAgXG4gICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAwLjJzICR0aW1pbmctZnVuY3Rpb247XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yLXNlY29uZGFyeTtcbiAgICB9XG59XG5cbi8vIE5hbWUgb2YgdGhlIGdyb3VwXG4uZ3JvdXBfX25hbWUge1xuICAgIGRpc3BsYXk6IG5vbmU7XG5cbiAgICBmb250LXN0eWxlOiBpdGFsaWM7XG4gICAgQGluY2x1ZGUgYm9uaXRvLWZvbnQtc2l6ZSgxOHB4LCAzNnB4KTtcbiAgICBtYXJnaW4tcmlnaHQ6ICRib25pdG8tYmFzZS1zcGFjaW5nLXVuaXQ7XG59XG5cbkBpbmNsdWRlIG1lZGlhLXF1ZXJ5KGxhcC1hbmQtdXApIHtcbiAgICAuZ3JvdXAge1xuICAgICAgICBAaW5jbHVkZSBib25pdG8tZm9udC1zaXplKDI2cHgsIDM2cHgpO1xuICAgIH1cblxuICAgIC5ncm91cF9fbmFtZSB7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICB9XG59IiwiLyoqXG4gKiBIZXJvIFN0eWxlc1xuICpcbiAqIFRoZSBzdHlsaW5nIGZvciB0aGUgaGVybyBlbGVtZW50XG4gKlxuICovXG5cbi8vIEJhc2UgaGVybyBlbGVtZW50XG4uaGVybyB7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuXG4gICAgYmFja2dyb3VuZDpcbiAgICAgICAgbGluZWFyLWdyYWRpZW50KFxuICAgICAgICAgIHJnYmEoMCwgMCwgMCwgMC4zMyksXG4gICAgICAgICAgcmdiYSgwLCAwLCAwLCAwLjMzKVxuICAgICAgICApLFxuICAgICAgICB1cmwoL2ltYWdlcy9oZXJvMy5qcGcpO1xuICAgIGJhY2tncm91bmQtc2l6ZTogY292ZXI7XG4gICAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyO1xuXG4gICAgJi0tYWx0IHtcbiAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICB9XG5cbiAgICAmLS00MDQge1xuICAgICAgICBwYWRkaW5nLXRvcDogJGJvbml0by1iYXNlLXNwYWNpbmctdW5pdDtcbiAgICAgICAgcGFkZGluZy1ib3R0b206ICRib25pdG8tYmFzZS1zcGFjaW5nLXVuaXQtLWxhcmdlO1xuICAgIH1cbn1cblxuLy8gSGVybyBzdWIgaGVhZGVyXG4uaGVyb19fc3ViLWhlYWRlcntcbiAgICBtYXJnaW4tYm90dG9tOiAkYm9uaXRvLWJhc2Utc3BhY2luZy11bml0KjEuNTtcblxuICAgIEBpbmNsdWRlIGJvbml0by1mb250LXNpemUoMjRweCwgMzBweCk7XG4gICAgY29sb3I6ICRjb2xvci1wcmltYXJ5O1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG59XG5cbi8vIEhlcm8gSGFzIEF2YXRhclxuLmhlcm8tLWhhcy1hdmF0YXIge1xuICAgIHBhZGRpbmctYm90dG9tOiAxMDRweDtcbn1cblxuLy8gSGVybyBjdXQgb3V0XG4uaGVyb19fY3V0LW91dCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yLWdyZXk7XG59XG5cbi8vIEhlcm8gY3V0IGluXG4uaGVyb19fY3V0LWluIHtcbiAgICBtYXJnaW4tdG9wOiAkYm9uaXRvLWJhc2Utc3BhY2luZy11bml0LS10aW55Ki0yMTtcbiAgICBtYXJnaW4tYm90dG9tOiAkYm9uaXRvLWJhc2Utc3BhY2luZy11bml0O1xufVxuXG4uaGVyb19faGVhZGVyLWh1Z2Uge1xuICAgIEBpbmNsdWRlIGJvbml0by1mb250LXNpemUoMTIwcHgpO1xufVxuXG4vLyBMYXAgYW5kIHVwXG5AaW5jbHVkZSBtZWRpYS1xdWVyeShsYXAtYW5kLXVwKSB7XG5cbiAgICAvLyBMQVUgLSBCYXNlIGhlcm8gc3R5bGluZ1xuICAgIC5oZXJvIHtcbiAgICAgICAgcGFkZGluZy10b3A6ICRib25pdG8tYmFzZS1zcGFjaW5nLXVuaXQtLWh1Z2UqMztcbiAgICAgICAgcGFkZGluZy1ib3R0b206ICRib25pdG8tYmFzZS1zcGFjaW5nLXVuaXQtLWh1Z2UqMztcblxuICAgICAgICAmLS1hbHQge1xuICAgICAgICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogODUlIGNlbnRlcjtcbiAgICAgICAgfVxuXG4gICAgICAgICYtLWN1dCB7XG4gICAgICAgICAgICBwYWRkaW5nLXRvcDogJGJvbml0by1iYXNlLXNwYWNpbmctdW5pdC0tdGlueSo0OTtcbiAgICAgICAgfVxuXG4gICAgICAgICYtLTQwNCB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoL2ltYWdlcy9oZXJvLTQwNC5qcGcpO1xuXG4gICAgICAgICAgICBwYWRkaW5nLXRvcDogJGJvbml0by1iYXNlLXNwYWNpbmctdW5pdDtcbiAgICAgICAgICAgIHBhZGRpbmctYm90dG9tOiAkYm9uaXRvLWJhc2Utc3BhY2luZy11bml0Kjg7XG4gICAgICAgIH1cblxuICAgIH1cblxuXG4gICAgLy8gTEFVIC0gSGVybyBjdXQgb3V0XG4gICAgLmhlcm9fX2N1dC1vdXQge1xuICAgICAgICBwYWRkaW5nLXRvcDogJGJvbml0by1iYXNlLXNwYWNpbmctdW5pdDtcbiAgICAgICAgbWFyZ2luLXRvcDogJGJvbml0by1iYXNlLXNwYWNpbmctdW5pdC0tdGlueSotMzI7XG4gICAgfVxuXG4gICAgLmhlcm9fX2hlYWRlci1odWdlIHtcbiAgICAgICAgQGluY2x1ZGUgYm9uaXRvLWZvbnQtc2l6ZSgyNDBweCk7XG4gICAgfVxuXG59XG4iLCIvKiogXG4gKiBIZWFkZXIgc3R5bGVzXG4gKlxuICogVGhlIGhlYWRlciBvZiB0aGUgd2ViIHBhZ2VcbiAqXG4gKiBFeGFtcGxlOlxuICogIFxuICovXG5cbi8vIEJhc2UgaGVhZGVyXG4uaGVhZGVyIHtcbiAgICBwYWRkaW5nLXRvcDogNTJweDtcblxuICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvci1ncmV5O1xufVxuXG4vLyBIZWFkZXIgbG9nb1xuLmhlYWRlcl9fbG9nbyB7XG4gICAgbWF4LXdpZHRoOiA3OHB4O1xuXG59XG5cbi8vIEhlYWRlciBhdmF0YXJcbi5oZWFkZXJfX2F2YXRhciB7XG4gICAgd2lkdGg6IDI4cHg7XG4gICAgaGVpZ2h0OiAyOHB4O1xufVxuXG4vLyBIZWFkZXIgbmF2XG4uaGVhZGVyX19uYXYge1xuICAgIG1hcmdpbi1ib3R0b206ICRib25pdG8tYmFzZS1zcGFjaW5nLXVuaXQ7XG4gICAgcGFkZGluZzogJGJvbml0by1iYXNlLXNwYWNpbmctdW5pdC0tc21hbGwgJGJvbml0by1iYXNlLXNwYWNpbmctdW5pdDtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgdG9wOiAwO1xuICAgIGxlZnQ6IDA7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiA0NHB4O1xuXG4gICAgYmFja2dyb3VuZDogJGNvbG9yLWdyZXk7O1xuXG4gICAgei1pbmRleDogMTAwO1xufVxuXG4uaGVhZGVyX191c2VyLFxuLmhlYWRlcl9fc2V0dGluZ3Mge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbn1cblxuLy8gSGVhZGVyIFVzZSBcbi5oZWFkZXJfX3VzZXIge1xuICAgIGZsb2F0OiBsZWZ0O1xuICAgIHdpZHRoOiA0NSU7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcblxuICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgbGluZS1oZWlnaHQ6IDI4cHg7XG5cbiAgICAuaGVhZGVyX19saW5rIHtcbiAgICAgICAgY29sb3I6ICRjb2xvci13aGl0ZTtcbiAgICB9XG59XG5cblxuLy8gSGVhZGVyIGxpbmtcbi5oZWFkZXJfX2xpbmsge1xuICAgIGNvbG9yOiAkY29sb3Itc2Vjb25kYXJ5O1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcblxuICAgICY6aG92ZXIge1xuICAgICAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbiAgICB9XG59XG5cbi8vIEhlYWRlciBsaW5rXG4uaGVhZGVyX19zZXR0aW5ncyB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIG1hcmdpbjogMCAkYm9uaXRvLWJhc2Utc3BhY2luZy11bml0LS10aW55O1xuICAgIFxuICAgIHN2ZyB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIH1cbn1cblxuQGluY2x1ZGUgbWVkaWEtcXVlcnkocGFsbSkge1xuICAgIC5oZWFkZXJfX2xpbmsge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAxMnB4O1xuICAgIH1cbn1cblxuLy8gTWFrZSBpbmxpbmUgd2l0aCBidXR0b25cbi5oZWFkZXJfX2lubGluZSB7XG4gICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xufVxuXG4vLyBIZWFkZXIgQnV0dG9uXG4uaGVhZGVyX19idXR0b24ge1xuICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbn1cblxuQGluY2x1ZGUgbWVkaWEtcXVlcnkobGFwLWFuZC11cCkge1xuICAgIC8vIExBVSBIZWFkZXJcbiAgICAuaGVhZGVyIHtcbiAgICAgICAgcGFkZGluZy10b3A6ICRib25pdG8tYmFzZS1zcGFjaW5nLXVuaXQ7XG4gICAgICAgIHBhZGRpbmctYm90dG9tOiAkYm9uaXRvLWJhc2Utc3BhY2luZy11bml0LS10aW55KjM7XG4gICAgfVxuXG4gICAgLy8gTEFVIEhlYWRlciBuYXYgQGxhdVxuICAgIC5oZWFkZXJfX25hdiB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogJGJvbml0by1iYXNlLXNwYWNpbmctdW5pdDtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgaGVpZ2h0OiBhdXRvO1xuXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIH1cblxuICAgIC8vIExBVSBIZWFkZXIgVXNlXG4gICAgLmhlYWRlcl9fdXNlciB7XG4gICAgICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgICAgICBmbG9hdDogbm9uZTtcbiAgICAgICAgd2lkdGg6IGF1dG87XG5cbiAgICAgICAgbGluZS1oZWlnaHQ6IDIwcHg7XG4gICAgfVxuXG4gICAgLy8gTEFVIEhlYWRlciBzZXR0aW5ncyBAbGF1XG4gICAgLmhlYWRlcl9fc2V0dGluZ3Mge1xuICAgICAgICBtYXJnaW46IDAgJGJvbml0by1iYXNlLXNwYWNpbmctdW5pdDtcbiAgICB9XG5cbiAgICAvLyBMQVUgSGVhZGVyIGJ1dHRvblxuICAgIC5oZWFkZXJfX2J1dHRvbiB7XG4gICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgfVxufSIsIi8qKlxuICogQmFubmVyIHN0eWxlc1xuICpcbiAqIFRoZSBiYW5uZXIgb24gdGhlIGhvbWVwYWdlIHdpdGggdGhlIGNvdW50IGluXG4gKlxuICovXG5cbi5iYW5uZXIge1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBtYXJnaW4tdG9wOiAtNDVweDtcbn1cblxuLmJhbm5lcl9fY291bnQge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIEBpbmNsdWRlIGJvbml0by1mb250LXNpemUoNjBweCwgNjBweCk7XG59XG5cbi5iYW5uZXJfX2NvcHkge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvci1wcmltYXJ5O1xuICAgIHBhZGRpbmctdG9wOiA0NXB4O1xuICAgIHBhZGRpbmctYm90dG9tOiAkYm9uaXRvLWJhc2Utc3BhY2luZy11bml0LS1sYXJnZTtcbiAgICBtYXJnaW4tdG9wOiAtNDVweDtcbn1cblxuLmJhbm5lcl9faWNvbiB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIG1hcmdpbjogYXV0bztcbiAgICBwYWRkaW5nLWxlZnQ6IDEzcHg7XG4gICAgcGFkZGluZy1yaWdodDogMTRweDtcbiAgICBwYWRkaW5nLXRvcDogMTRweDtcbiAgICBwYWRkaW5nLWJvdHRvbTogMTRweDtcbiAgICB3aWR0aDogOTFweDtcbiAgICBoZWlnaHQ6IDkxcHg7XG5cbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3ItcHJpbWFyeTtcbiAgICBib3JkZXItcmFkaXVzOiA1MHB4O1xufSIsIi8qKlxuICogUXVvdGUgc3R5bGVzXG4gKlxuICogVGhlIHF1b3RlIGJsb2NrcyBmb3IgdGhlIGhvbWVwYWdlXG4gKlxuICogRXhhbXBsZTpcbiAqICA8ZGl2IGNsYXNzPVwicXVvdGVcIj5cbiAqICAgICAgIDxpbWcgc3JjPVwiI1wiIGFsdD1cIlF1b3RlIGltYWdlXCIgY2xhc3M9XCJxdW90ZV9faW1nXCI+XG4gKiAgICAgICA8YmxvY2txdW90ZSBjbGFzcz1cInF1b3RlX19jb3B5XCI+XG4gKiAgICAgICAgICBLbm93aW5nIG91ciBncm91cOKAmXMgTWlzc2lvbiBTdHlsZSB3YXMgYW1hemluZy4gSXQgY2hhbmdlZCBob3cgd2UgZGlkIG91dHJlYWNoIGFuZCBtYWRlIHN1cmUgd2UgZ290IHRoZSByaWdodCBwZW9wbGUgaW4gdGhlIHJpZ2h0IHBsYWNlXG4gKiAgICAgICA8L2Jsb2NrcXVvdGU+XG4gKiAgICAgICA8cCBjbGFzcz1cInF1b3RlX19jaXRlXCI+PGNpdGU+TWlyaWFtIFN3YWZmaWVsZCAtIERhdWdodGVyIHRvIGEgS2luZzwvY2l0ZT48L3A+XG4gKiAgIDwvZGl2PlxuICovXG5cbi8vIFF1b3RlXG4ucXVvdGUge1xuICAgIEBpbmNsdWRlIGJvbml0by1mb250LXNpemUoMThweCwgMjZweCk7XG4gICAgbWFyZ2luLWJvdHRvbTogJGJvbml0by1iYXNlLXNwYWNpbmctdW5pdC0taHVnZTtcbiAgICBwYWRkaW5nLWxlZnQ6ICRib25pdG8tYmFzZS1zcGFjaW5nLXVuaXQtLXNtYWxsO1xuICAgIHBhZGRpbmctcmlnaHQ6ICRib25pdG8tYmFzZS1zcGFjaW5nLXVuaXQtLXNtYWxsO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBwYWRkaW5nLXRvcDogMC4zM2VtO1xuICAgICY6OmJlZm9yZSB7XG4gICAgICAgIGNvbnRlbnQ6IFwiXFxcIlwiO1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGxlZnQ6IC0wLjMzZW07XG4gICAgICAgIGNvbG9yOiAkY29sb3Itc2Vjb25kYXJ5O1xuICAgICAgICBmb250LXN0eWxlOiBpdGFsaWM7XG4gICAgICAgIGZvbnQtc2l6ZTogM2VtO1xuICAgIH1cbn1cblxuLnF1b3RlX19pbWcge1xuICAgIG1hcmdpbi1ib3R0b206ICRib25pdG8tYmFzZS1zcGFjaW5nLXVuaXQ7XG4gICAgaGVpZ2h0OiAyNzZweDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBtYXgtd2lkdGg6IDQyNHB4O1xuXG4gICAgYmFja2dyb3VuZC1zaXplOiBjb250YWluO1xuICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuXG4gICAgaW1nIHtcbiAgICAgICAgaGVpZ2h0OiAyNzZweDtcbiAgICAgICAgd2lkdGg6IDI3NnB4O1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgIG9iamVjdC1maXQ6IGNvdmVyO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgICAgIGJvcmRlcjogMnB4IHNvbGlkICRjb2xvci1vcmFuZ2U7XG4gICAgICAgIHBhZGRpbmc6IDFlbTtcbiAgICB9XG59XG5cbi5xdW90ZV9fY29weSB7XG4gICAgZm9udC1zdHlsZTogaXRhbGljO1xufVxuXG4ucXVvdGVfX2NpdGUge1xuICAgIGNpdGUge1xuICAgICAgICBmb250LXN0eWxlOiBub3JtYWw7XG4gICAgfVxuXG4gICAgYm9yZGVyLWJvdHRvbTogM3B4IHNvbGlkICRjb2xvci1zZWNvbmRhcnk7XG4gICAgcGFkZGluZy1ib3R0b206ICRib25pdG8tYmFzZS1zcGFjaW5nLXVuaXQ7XG59XG5cbkBpbmNsdWRlIG1lZGlhLXF1ZXJ5KGxhcC1hbmQtdXApIHtcbiAgICAucXVvdGUtLXB1c2gge1xuICAgICAgICBtYXJnaW4tdG9wOiAkYm9uaXRvLWJhc2Utc3BhY2luZy11bml0LS10aW55KjU5O1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAkYm9uaXRvLWJhc2Utc3BhY2luZy11bml0O1xuICAgIH1cbn1cblxuIiwiLyoqIFxuICogRm9vdGVyIHN0eWxlXG4gKlxuICogVGhlIHN0eWxpbmcgZm9yIHRoZSBmb290ZXIgZWxlbWVudFxuICpcbiAqL1xuXG4uZm9vdGVyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3ItZ3JleS03NTtcbiAgICBAaW5jbHVkZSBib25pdG8tZm9udC1zaXplKDEycHgsIDIwcHgpO1xuXG4gICAgcGFkZGluZy10b3A6ICRib25pdG8tYmFzZS1zcGFjaW5nLXVuaXQtLXRpbnkqMTE7XG4gICAgcGFkZGluZy1ib3R0b206ICRib25pdG8tYmFzZS1zcGFjaW5nLXVuaXQtLXNtYWxsO1xuXG4gICAgYSB7XG4gICAgICAgIGNvbG9yOiAkY29sb3Itd2hpdGU7XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICBjb2xvcjogJGNvbG9yLXNlY29uZGFyeTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuQGluY2x1ZGUgbWVkaWEtcXVlcnkobGFwLWFuZC11cCkge1xuICAgIC5mb290ZXIge1xuICAgICAgICB0ZXh0LWFsaWduOiByaWdodDtcbiAgICB9XG59IiwiLyoqIFxuICogR3JvdXAgTGlzdFxuICpcbiAqIFRoZSBsaXN0IG9mIGdyb3Vwc1xuICpcbiAqIEV4YW1wbGU6XG4gKiAgXG4gKi9cblxuLy8gQmFzZSBncm91cHMgbGlzdFxuLmdyb3VwcyB7XG4gICAgbWFyZ2luLWJvdHRvbTogJGJvbml0by1iYXNlLXNwYWNpbmctdW5pdC0taHVnZTtcbn1cblxuLy8gR3JvdXAgbGlzdCBoZWFkZXJcbi5ncm91cHNfX2hlYWRlciB7XG4gICAgbWFyZ2luLWJvdHRvbTogJGJvbml0by1iYXNlLXNwYWNpbmctdW5pdDtcblxuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkY29sb3Itd2hpdGU7XG59XG5cbi8vIEdyb3VwIGxpc3QgdGl0bGVcbi5ncm91cHNfX3RpdGxlIHtcbiAgICBtYXJnaW4tYm90dG9tOiAkYm9uaXRvLWJhc2Utc3BhY2luZy11bml0LS1zbWFsbDtcbn1cblxuQGluY2x1ZGUgbWVkaWEtcXVlcnkobGFwLWFuZC11cCkge1xuICAgIC8vIEdyb3VwIGxpc3QgdGl0bGVcbiAgICAuZ3JvdXBzX190aXRsZSB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206ICRib25pdG8tYmFzZS1zcGFjaW5nLXVuaXQ7XG4gICAgfVxufSIsIi8qKiBcbiAqIFNoYXJlIFdpZGdldFxuICpcbiAqIFRoZSBjb21wb25lbmV0IHVzZWQgZm9yIHNoYXJpbmdcbiAqXG4gKiBFeGFtcGxlOlxuICogIFxuICovXG5cblxuLy8gQmFzZSBzaGFyZVxuLnNoYXJlIHtcbiAgICBwYWRkaW5nOiAkYm9uaXRvLWJhc2Utc3BhY2luZy11bml0LS10aW55KjMgJGJvbml0by1iYXNlLXNwYWNpbmctdW5pdC0tdGlueSo2O1xuICAgIG1hcmdpbi1ib3R0b206ICRib25pdG8tYmFzZS1zcGFjaW5nLXVuaXQtLWh1Z2U7XG4gICAgYm9yZGVyOiAxcHggc29saWQgJGNvbG9yLXdoaXRlO1xuICAgIGJvcmRlci1yYWRpdXM6ICRib25pdG8tYmFzZS1zcGFjaW5nLXVuaXQtLXRpbnk7XG5cbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG5cbi5zaGFyZV9fdGl0bGUge1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG59XG5cbi5zaGFyZV9faWNvbnMge1xuICAgIGxpc3Qtc3R5bGU6IG5vbmU7XG4gICAgbWFyZ2luOiAwO1xuXG4gICAgPiBsaSB7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgbWFyZ2luOiAwICRib25pdG8tYmFzZS1zcGFjaW5nLXVuaXQtLXRpbnkgLTNweDtcbiAgICB9XG59XG5cbi8vIFNoYXJlIGxpbmtzXG4uc2hhcmVfX2xpbmsge1xuICAgIC5pIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgfVxuICAgIC8vIEhvdmVyIGNsYXNzIGluIHRoZSBpY29uXG4gICAgLmlfX2hvdmVyIHtcbiAgICAgICAgZmlsbDogdHJhbnNwYXJlbnQ7XG4gICAgICAgIHRyYW5zaXRpb246IGZpbGwgLjJzICR0aW1pbmctZnVuY3Rpb247XG4gICAgfVxuXG4gICAgJjpob3ZlciB7XG4gICAgICAgIC5pX19ob3ZlciB7XG4gICAgICAgICAgICBmaWxsOiAkY29sb3ItcHJpbWFyeTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuQGluY2x1ZGUgbWVkaWEtcXVlcnkobGFwLWFuZC11cCkge1xuICAgIC5zaGFyZSB7XG4gICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgfVxuXG4gICAgLnNoYXJlX19pY29ucyB7XG4gICAgICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgIH1cbn0iLCIvKipcbiAqIE1lbWJlciBUYWJsZVxuICpcbiAqIFRoZSBsaXN0IG9mIG1lbWJlcnMgb2YgYSBncm91cFxuICpcbiAqIEV4YW1wbGU6XG4gKlxuICovXG5cbi8vIEJhc2UgTWVtYmVyIFRhYmxlIFN0eWxlXG4ubWVtYmVyLXRhYmxlIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICB0YWJsZS1sYXlvdXQ6IGZpeGVkO1xuICAgIGJvcmRlci1jb2xsYXBzZTogdW5zZXQ7XG4gICAgYm9yZGVyLXNwYWNpbmc6IDAgJGJvbml0by1iYXNlLXNwYWNpbmctdW5pdC0tc21hbGw7XG5cbiAgICBAaW5jbHVkZSBib25pdG8tZm9udC1zaXplKDE2cHgsIDIwcHgpO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cblxuLy8gVGFibGUgaGVhZGVyXG4ubWVtYmVyLXRhYmxlX19oZWFkIHtcbiAgICBjb2xvcjogJGNvbG9yLXByaW1hcnk7XG5cbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3ItZ3JleTtcbn1cblxuLy8gVGFibGUgaGVhZGVyIGl0ZW1cbi5tZW1iZXItdGFibGVfX2hlYWQtaXRlbSB7XG4gICAgcGFkZGluZzogMjBweCAwO1xufVxuXG4vLyBUYWJsZSBoZWFkZXIgaXRlbSAtIG5hbWVcbi5tZW1iZXItdGFibGVfX2hlYWQtbmFtZSB7XG4gICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICBwYWRkaW5nLWxlZnQ6ICRib25pdG8tYmFzZS1zcGFjaW5nLXVuaXQqNTtcbn1cblxuLm1lbWJlci10YWJsZV9fcm93IHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgbWFyZ2luLWJvdHRvbTogJGJvbml0by1iYXNlLXNwYWNpbmctdW5pdC0tc21hbGw7XG5cbiAgICAubWVtYmVyLXRhYmxlX19yb3ctaXRlbTpsYXN0LWNoaWxkIHtcbiAgICAgICAgYm9yZGVyLXJpZ2h0OiAwO1xuICAgIH1cbn1cblxuLy8gVGFibGUgbWVtYmVyIHJvdyBpdGVtXG4ubWVtYmVyLXRhYmxlX19yb3ctaXRlbSB7XG4gICAgcGFkZGluZzogJGJvbml0by1iYXNlLXNwYWNpbmctdW5pdC0tdGlueSo0LjUgJGJvbml0by1iYXNlLXNwYWNpbmctdW5pdC0tc21hbGw7XG5cbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3ItbGlnaHQtYnJvd247XG4gICAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAkY29sb3ItbGlnaHRlci1icm93bjtcbiAgICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAkY29sb3ItbGlnaHRlci1icm93bjtcbn1cblxuLm1lbWJlci10YWJsZV9fcm93LWl0ZW0ge1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBwYWRkaW5nLXJpZ2h0OiAkYm9uaXRvLWJhc2Utc3BhY2luZy11bml0LS1zbWFsbDtcblxuICAgICY6YmVmb3JlIHtcbiAgICAgICAgY29udGVudDogYXR0cihkYXRhLXRpdGxlKTtcbiAgICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICAgIHBhZGRpbmctbGVmdDogJGJvbml0by1iYXNlLXNwYWNpbmctdW5pdC0tc21hbGw7XG4gICAgICAgIEBpbmNsdWRlIGJvbml0by1mb250LXNpemUoMTNweCwgMjBweCk7XG4gICAgICAgIGNvbG9yOiAkY29sb3ItcHJpbWFyeTtcbiAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICB9XG59XG5cbi8vIFRhYmxlIE1lbWJlciByb3cgaXRlbVxuLm1lbWJlci10YWJsZV9fcm93LW5hbWUge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBwYWRkaW5nLWxlZnQ6ICRib25pdG8tYmFzZS1zcGFjaW5nLXVuaXQqNTtcbiAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuXG4gICAgJjpiZWZvcmUge1xuICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgbGVmdDogMDtcbiAgICAgICAgdG9wOiAwO1xuICAgICAgICBib3R0b206IDA7XG4gICAgICAgIHdpZHRoOiAkYm9uaXRvLWJhc2Utc3BhY2luZy11bml0KjMuNTtcblxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3ItcHJpbWFyeTtcbiAgICB9XG59XG5cblxuLy8gSGlnaGxpZ2h0ZWQgY2VsbFxuLm1lbWJlci10YWJsZV9faGlnaGxpZ2h0IHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3ItcHJpbWFyeTtcbiAgICBjb2xvcjogYmxhY2s7XG5cbiAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIDAuMnMgJHRpbWluZy1mdW5jdGlvbjtcblxuICAgICY6YmVmb3JlIHtcbiAgICAgICAgY29sb3I6ICRjb2xvci1ibGFjaztcbiAgICB9XG59XG5cbi5tZW1iZXItdGFibGVfX3Jvdy1yZW1vdmUge1xuICAgIHBhZGRpbmc6IDA7XG5cbiAgICAmOmJlZm9yZSB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxufVxuXG4vLyBSZW1vdmUgaWNvblxuLm1lbWJlci10YWJsZV9fcmVtb3ZlIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAkYm9uaXRvLWJhc2Utc3BhY2luZy11bml0LS10aW55KjQuNTtcbiAgICByaWdodDogJGJvbml0by1iYXNlLXNwYWNpbmctdW5pdC0tc21hbGw7XG59XG5cbi8vIEkgZG9uJ3QgdXN1YWxseSBsaWtlIGRvaW5nIHBhbG0gc3BlY2lmaWMgbWVkaWEgcXVlcmllcywgYXMgSSBiZWxpZXZlIHdlIHNob3VsZCB3b3JrIG1vYmlsZSB1cC4gSG93ZXZlciwgZm9yIGNoYW5naW5nXG4vLyB0YWJsZSBkaXNwbGF5IG9wdGlvbnMgaXQgaXMgc2ltcGxlciB0byBvbmx5IGhhdmUgdG8gZG8gdGhhdCBvbmNlLlxuQGluY2x1ZGUgbWVkaWEtcXVlcnkocGFsbSkge1xuICAgIC8vIFJlbW92ZSB0aGUgdGhlYWQgZnJvbSB0aGUgcGFsbSB2aWV3XG4gICAgLm1lbWJlci10YWJsZV9faGVhZCB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuXG4gICAgLy8gQ2hhbmdlIHRoZSB0YWJsZSBkaXNwbGF5IHByb3BlcnRpZXNcbiAgICAubWVtYmVyLXRhYmxlIHtcbiAgICAgICAgdGJvZHksIHRkLCB0ciB7XG4gICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAubWVtYmVyLXRhYmxlX19yb3ctaXRlbSB7XG4gICAgICAgICY6YmVmb3Jle1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vIExBVSAtIExhcCBhbmQgdXAgc3R5bGluZ1xuQGluY2x1ZGUgbWVkaWEtcXVlcnkobGFwLWFuZC11cCkge1xuXG4gICAgLy8gTEFVIC0gVGFibGUgcm93IGl0ZW1cbiAgICAubWVtYmVyLXRhYmxlX19yb3ctaXRlbSB7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcblxuICAgICAgICAmOmJlZm9yZSB7XG4gICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gTEFVIC0gVGhlIG5hbWUgaXRlbSBpbiB0aGUgcm93XG4gICAgLm1lbWJlci10YWJsZV9fcm93LW5hbWUge1xuICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgICAgICAmOmJlZm9yZSB7XG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgfVxuICAgIH1cbiAgICAubWVtYmVyLXRhYmxlX19yb3ctcmVtb3ZlIHtcbiAgICAgICAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAkY29sb3ItbGlnaHRlci1icm93bjtcbiAgICB9XG5cbiAgICAvLyBMQVUgLSBNZW1iZXIgdGFibGUgcmVtb3ZlIGJ1dHRvbi4gUmVwb3NpdGlvbiBpY29uLlxuICAgIC5tZW1iZXItdGFibGVfX3JlbW92ZSB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgdG9wOiA0cHg7XG4gICAgICAgIHJpZ2h0OiBhdXRvO1xuXG4gICAgICAgIC5pX19ob3ZlciB7XG4gICAgICAgICAgICB0cmFuc2l0aW9uOiBmaWxsIDAuMnMgJHRpbWluZy1mdW5jdGlvbjtcbiAgICAgICAgfVxuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgLmlfX2hvdmVyIHtcbiAgICAgICAgICAgICAgICBmaWxsOiAkY29sb3Itd2hpdGU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59IiwiLyoqXG4gKiBXcmFwcGVyIHN0eWxlXG4gKlxuICogU3R5bGVzIGZvciB3cmFwcGluZyBjb250ZW50IGluIHRoZSBzaXRlXG4gKlxuICogRXhhbXBsZTpcbiAqICA8ZGl2IGNsYXNzPVwid3JhcHBlciB3cmFwcGVyLS1zdHlsZVwiPiAuLi4gPC9kaXY+XG4gKi9cblxuJGJvbml0by13cmFwcGVyLWN1dC1vdXQ6IDEwJTtcbiRib25pdG8td3JhcHBlci1jdXQtb3V0LWxhcDogMTI4cHg7XG5cbi8vIEJhc2UgV3JhcHBlciBzdHlsaW5nXG4ud3JhcHBlciB7XG4gICAgQGV4dGVuZCAldS1jbGVhcmZpeDtcbn1cblxuLy8gU3R5bGUgd3JhcHBlclxuLndyYXBwZXItLXN0eWxlIHtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yLWxpZ2h0LWJyb3duO1xuICAgIG1hcmdpbi1ib3R0b206ICRib25pdG8tYmFzZS1zcGFjaW5nLXVuaXQtLWh1Z2U7XG4gICAgcGFkZGluZy10b3A6ICRib25pdG8tYmFzZS1zcGFjaW5nLXVuaXQ7XG5cbiAgICAvL0BpbmNsdWRlIGJvbml0by1mb250LXNpemUoMTZweCwgMjRweCk7XG59XG5cbi8vIFdyYXBwZXIgQ3V0IG91dFxuLndyYXBwZXJfX2N1dC1vdXQge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBwYWRkaW5nOiA0OHB4IDI0cHggMDtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgbWFyZ2luLXRvcDogLSRib25pdG8td3JhcHBlci1jdXQtb3V0O1xuXG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yLWxpZ2h0LWJyb3duO1xuICAgIGJvcmRlci1yYWRpdXM6IDMwMHB4O1xufVxuXG4vLyBXcmFwcGVyIHNwYWNpb3VzXG4ud3JhcHBlci0tc3BhY2lvdXMge1xuICAgIHBhZGRpbmctdG9wOiAkYm9uaXRvLWJhc2Utc3BhY2luZy11bml0LS1odWdlO1xuICAgIHBhZGRpbmctYm90dG9tOiAkYm9uaXRvLWJhc2Utc3BhY2luZy11bml0LS1odWdlO1xuXG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuXG4vLyBXcmFwcGVyIGRhcmtcbi53cmFwcGVyLS1kYXJrIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3ItYmxhY2s7XG59XG5cbi8vIFdyYXBwZXIgYnJpZ2h0XG4ud3JhcHBlci0tYnJpZ2h0IHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3ItcHJpbWFyeTtcbn1cblxuLy8gV3JhcHBlciBjYWxsIHRvIGFjdGlvblxuLndyYXBwZXItLWN0YSB7IFxuICAgIHBhZGRpbmctdG9wOiAkYm9uaXRvLWJhc2Utc3BhY2luZy11bml0KjEyO1xuICAgIHBhZGRpbmctYm90dG9tOiAkYm9uaXRvLWJhc2Utc3BhY2luZy11bml0Kjg7XG5cbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG5cbiAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoLi4vLi4vaW1hZ2VzL2luZGl2aWR1YWwtY3RhLnN2Zyk7XG4gICAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXIgY2VudGVyO1xufVxuXG5AaW5jbHVkZSBtZWRpYS1xdWVyeShsYXAtYW5kLXVwKSB7XG4gICAgLndyYXBwZXJfX2N1dC1vdXQge1xuICAgICAgICBtYXJnaW4tdG9wOiAtJGJvbml0by13cmFwcGVyLWN1dC1vdXQtbGFwO1xuICAgIH1cbn0iLCIvKiogXG4gKiBJbnZpdGUgY29tb25lbnQgXG4gKlxuICogVGhlIHN0eWxlZCBibG9jayBmb3IgdGhlIGxpbmsgdG8gam9pbiBhIGdyb3VwXG4gKlxuICogRXhhbXBsZTpcbiAqICA8ZGl2IGNsYXNzPVwiaW52aXRlXCI+XG4gKiAgICAgICA8aDIgY2xhc3M9XCJpbnZpdGVfX3RpdGxlXCI+SW52aXRlIHBlb3BsZSB0byBqb2luIHRoaXMgZ3JvdXA6IDxzcGFuIGNsYXNzPVwiaW52aXRlX19hY3Rpb25cIj5zaGFyZSBsaW5rPC9zcGFuPjwvaDI+XG4gKiAgICAgICA8cCBjbGFzcz1cImludml0ZV9fbGlua1wiPnt7IHVybCgnZ3JvdXAvJy4kZ3JvdXAtPnNsdWcuJy9qb2luJykgfX08L3A+XG4gKiAgPC9kaXY+XG4gKi9cblxuLy8gQmFzZSBpbnZpdGUgZWxlbWVudFxuLmludml0ZSB7XG4gICAgYm9yZGVyOiAxcHggc29saWQgJGNvbG9yLXdoaXRlO1xuICAgIGJvcmRlci1yYWRpdXM6ICRib25pdG8tYmFzZS1zcGFjaW5nLXVuaXQtLXRpbnk7XG4gICAgbWFyZ2luLWJvdHRvbTogJGJvbml0by1iYXNlLXNwYWNpbmctdW5pdC0tbGFyZ2U7XG59XG5cbi8vIEludml0ZSB0aXRsZVxuLmludml0ZV9fdGl0bGUge1xuICAgIGxpbmUtaGVpZ2h0OiAoNjQvMjYpKjFlbTtcblxuICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvci1ncmV5O1xuICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6ICRib25pdG8tYmFzZS1zcGFjaW5nLXVuaXQtLXRpbnk7XG4gICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6ICRib25pdG8tYmFzZS1zcGFjaW5nLXVuaXQtLXRpbnk7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbn1cblxuLy8gSW52aXRlIGFjdGlvblxuLmludml0ZV9fYWN0aW9uIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICBAaW5jbHVkZSBib25pdG8tZm9udC1zaXplKDE2cHgsIDY0cHgpO1xuICAgIGNvbG9yOiAkY29sb3ItcHJpbWFyeTtcblxuICAgICY6YWZ0ZXIge1xuICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgcmlnaHQ6IC0kYm9uaXRvLWJhc2Utc3BhY2luZy11bml0O1xuICAgICAgICB0b3A6IDEwcHg7XG5cbiAgICAgICAgd2lkdGg6IDA7XG4gICAgICAgIGhlaWdodDogMDtcbiAgICAgICAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcbiAgICAgICAgYm9yZGVyLXdpZHRoOiAkYm9uaXRvLWJhc2Utc3BhY2luZy11bml0LS10aW55ICRib25pdG8tYmFzZS1zcGFjaW5nLXVuaXQtLXRpbnkgMCAkYm9uaXRvLWJhc2Utc3BhY2luZy11bml0LS10aW55O1xuICAgICAgICBib3JkZXItY29sb3I6ICRjb2xvci1wcmltYXJ5IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50O1xuICAgIH1cbn1cblxuLy8gSW52aXRlIGxpbmtcbi5pbnZpdGVfX2xpbmsge1xuICAgIGNvbG9yOiAkY29sb3ItcHJpbWFyeTtcbiAgICBsaW5lLWhlaWdodDogKDY0LzE2KSoxZW07XG5cbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3ItbGlnaHQtYnJvd247XG4gICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogJGJvbml0by1iYXNlLXNwYWNpbmctdW5pdC0tdGlueTtcbiAgICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogJGJvbml0by1iYXNlLXNwYWNpbmctdW5pdC0tdGlueTtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgIG92ZXJmbG93LXg6IHNjcm9sbDtcbn1cblxuLy8gSW52aXRlIFVSTFxuLmludml0ZV9fdXJsIHtcbiAgICBiYWNrZ3JvdW5kOiBub25lO1xuICAgIGJvcmRlcjogbm9uZTtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBwYWRkaW5nOiAwICRib25pdG8tYmFzZS1zcGFjaW5nLXVuaXQ7XG4gICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIC8qIFJlcXVpcmVkIGZvciB0ZXh0LW92ZXJmbG93IHRvIGRvIGFueXRoaW5nICovXG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcblxuICAgIGNvbG9yOiAkY29sb3ItcHJpbWFyeTtcblxuICAgICY6aG92ZXIge1xuICAgICAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbiAgICB9XG59XG5cbkBpbmNsdWRlIG1lZGlhLXF1ZXJ5KGRlc2spIHtcbiAgICAuaW52aXRlX19saW5rIHtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB9XG59IiwiLyoqXG4gKiBUaXAgc3R5bGluZ1xuICpcbiAqIFRoaXMgc3R5bGluZyBpcyBmb3IgdGhlIHRpcHMgbGlzdFxuICpcbiAqIEV4YW1wbGU6XG4gKiAgPHVsIGNsYXNzPVwidGlwc1wiPlxcXG4gKiAgICAgIDxsaSBjbGFzcz1cInRpcHNfX2l0ZW1cIj4gLi4uIDwvbGk+XG4gKiAgPC91bD5cbiAqL1xuXG4vLyBCYXNlIHRpcHMgc3R5bGluZ1xuLnRpcHMge1xuICAgIG1hcmdpbjogMCAoMS8yMikqMTAwJSAkYm9uaXRvLWJhc2Utc3BhY2luZy11bml0LS1sYXJnZTtcbiAgICBwYWRkaW5nOiAwO1xuICAgIGxpc3Qtc3R5bGU6IG5vbmU7XG59XG5cbi50aXBzX19pdGVtIHtcbiAgICBAaW5jbHVkZSBib25pdG8tZm9udC1zaXplKDIwcHgsIDFlbSk7XG4gICAgcGFkZGluZzogJGJvbml0by1iYXNlLXNwYWNpbmctdW5pdC0tdGlueSo1ICRib25pdG8tYmFzZS1zcGFjaW5nLXVuaXQqMi43NTtcbiAgICBtYXJnaW4tYm90dG9tOiAkYm9uaXRvLWJhc2Utc3BhY2luZy11bml0LS10aW55O1xuXG4gICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3ItZ3JleS01MDtcbiAgICBib3gtc2hhZG93OiAwcHggMCAwIDBweCAkY29sb3ItYmxhY2s7XG5cbiAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4ycyAkdGltaW5nLWZ1bmN0aW9uLCBib3gtc2hhZG93IDAuMnMgJHRpbWluZy1mdW5jdGlvbjtcbiAgICB6LWluZGV4OiAxO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMS4xLCAxLjEpO1xuICAgICAgICBib3gtc2hhZG93OiAwcHggMCAkYm9uaXRvLWJhc2Utc3BhY2luZy11bml0LS10aW55IDBweCAkY29sb3ItYmxhY2s7XG4gICAgICAgIHotaW5kZXg6IDI7XG4gICAgfVxufVxuIiwiLyoqXG4gKiBTdGlja3kgbmF2aWdhdGlvbiBiYXJcbiAqXG4gKiBUaGUgc3R5bGluZyBmb3IgYSBzdGlja3kgbmF2aWdhdGlvbiBnYXIgYXQgdGhlIHRvcCBvZiB0aGUgcGFnZVxuICpcbiAqIEV4YW1wbGU6XG4gKiAgPGRpdiBjbGFzcz1cInN0aWNreVwiPiAuLi4gPC9kaXY+XG4gKi9cblxuLnN0aWNreSB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgcGFkZGluZy1ib3R0b206ICRib25pdG8tYmFzZS1zcGFjaW5nLXVuaXQtLWxhcmdlO1xufVxuXG4uc3RpY2t5X19saW5rIHtcbiAgICBtYXJnaW4tYm90dG9tOiAkYm9uaXRvLWJhc2Utc3BhY2luZy11bml0O1xuICAgIGNvbG9yOiAkY29sb3Itd2hpdGU7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yLXByaW1hcnk7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICBwYWRkaW5nOiAkYm9uaXRvLWJhc2Utc3BhY2luZy11bml0LS1zbWFsbDtcblxuICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQgMC4ycyAkdGltaW5nLWZ1bmN0aW9uO1xuXG59XG5cbi5zdGlja3lfX2xpbms6aG92ZXIsXG4uc3RpY2t5X19hY3RpdmUge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvci13aGl0ZTtcbiAgICBjb2xvcjogJGNvbG9yLXByaW1hcnk7XG59XG5cbkBpbmNsdWRlIG1lZGlhLXF1ZXJ5KGxhcC1hbmQtdXApIHtcbiAgICAuc3RpY2t5LS1pcy1zdHVjayB7XG4gICAgICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICAgICAgcGFkZGluZy1ib3R0b206IDA7XG4gICAgICAgIHRvcDogMDtcbiAgICAgICAgei1pbmRleDogMTAwO1xuICAgIH1cbn0iLCIvKiFcbkNob3NlbiwgYSBTZWxlY3QgQm94IEVuaGFuY2VyIGZvciBqUXVlcnkgYW5kIFByb3RvdHlwZVxuYnkgUGF0cmljayBGaWxsZXIgZm9yIEhhcnZlc3QsIGh0dHA6Ly9nZXRoYXJ2ZXN0LmNvbVxuXG5WZXJzaW9uIDEuMy4wXG5GdWxsIHNvdXJjZSBhdCBodHRwczovL2dpdGh1Yi5jb20vaGFydmVzdGhxL2Nob3NlblxuQ29weXJpZ2h0IChjKSAyMDExLTIwMTQgSGFydmVzdCBodHRwOi8vZ2V0aGFydmVzdC5jb21cblxuTUlUIExpY2Vuc2UsIGh0dHBzOi8vZ2l0aHViLmNvbS9oYXJ2ZXN0aHEvY2hvc2VuL2Jsb2IvbWFzdGVyL0xJQ0VOU0UubWRcblRoaXMgZmlsZSBpcyBnZW5lcmF0ZWQgYnkgYGdydW50IGJ1aWxkYCwgZG8gbm90IGVkaXQgaXQgYnkgaGFuZC5cbiovXG5cbi8qIEBncm91cCBCYXNlICovXG4uY2hvc2VuLWNvbnRhaW5lciB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgIHpvb206IDE7XG4gICAgKmRpc3BsYXk6IGlubGluZTtcbiAgICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lO1xuICAgIC1tb3otdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgdXNlci1zZWxlY3Q6IG5vbmU7XG5cbiAgICBwYWRkaW5nLWxlZnQ6IDEzNHB4O1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogNDlweDtcbn1cbi5jaG9zZW4tY29udGFpbmVyICoge1xuICAgIC13ZWJraXQtYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICAtbW96LWJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbn1cbi5jaG9zZW4tY29udGFpbmVyIC5jaG9zZW4tZHJvcCB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMTAwJTtcbiAgICBsZWZ0OiAtOTk5OXB4O1xuICAgIHotaW5kZXg6IDEwMTA7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAkY29sb3Itc2Vjb25kYXJ5O1xuICAgIGJvcmRlci1yaWdodDogMXB4IHNvbGlkICRjb2xvci1zZWNvbmRhcnk7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICRjb2xvci1zZWNvbmRhcnk7XG4gICAgYm9yZGVyLXRvcDogMDtcbiAgICBiYWNrZ3JvdW5kOiAkY29sb3ItZ3JleS1saWdodGVyO1xuICAgIGJvcmRlci1yYWRpdXM6ICRib25pdG8tYmFzZS1zcGFjaW5nLXVuaXQtLXRpbnk7XG59XG4uY2hvc2VuLWNvbnRhaW5lci5jaG9zZW4td2l0aC1kcm9wIC5jaG9zZW4tZHJvcCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgcGFkZGluZy10b3A6IDEwcHg7XG4gICAgbWFyZ2luLXRvcDogLTEwcHg7XG4gICAgbGVmdDogLTFweDtcbiAgICB3aWR0aDogY2FsYygxMDAlICsgMnB4KTtcbiAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAkYm9uaXRvLWJhc2Utc3BhY2luZy11bml0LS10aW55O1xuICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAkYm9uaXRvLWJhc2Utc3BhY2luZy11bml0LS10aW55O1xufVxuLmNob3Nlbi1jb250YWluZXIgYSB7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xufVxuXG4vKiBAZW5kICovXG4vKiBAZ3JvdXAgU2luZ2xlIENob3NlbiAqL1xuLmNob3Nlbi1jb250YWluZXItc2luZ2xlIC5jaG9zZW4tc2luZ2xlIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICBwYWRkaW5nOiAwIDAgMCA4cHg7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgYmFja2dyb3VuZC1jbGlwOiBwYWRkaW5nLWJveDtcbiAgICBjb2xvcjogJGNvbG9yLWdyZXktNzU7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgbGluZS1oZWlnaHQ6IDQ5cHg7XG4gICAgei1pbmRleDogNDtcblxufVxuLmNob3Nlbi1jb250YWluZXItc2luZ2xlIC5jaG9zZW4tZGVmYXVsdCB7XG4gICAgY29sb3I6ICRjb2xvci1ncmV5LTc1O1xufVxuLmNob3Nlbi1jb250YWluZXItc2luZ2xlIC5jaG9zZW4tc2luZ2xlIHNwYW4ge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgbWFyZ2luLXJpZ2h0OiA1MnB4O1xuICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG59XG4uY2hvc2VuLWNvbnRhaW5lci1zaW5nbGUgLmNob3Nlbi1zaW5nbGUtd2l0aC1kZXNlbGVjdCBzcGFuIHtcbiAgICBtYXJnaW4tcmlnaHQ6IDM4cHg7XG59XG4uY2hvc2VuLWNvbnRhaW5lci1zaW5nbGUgLmNob3Nlbi1zaW5nbGUgYWJiciB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogNnB4O1xuICAgIHJpZ2h0OiAyNnB4O1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHdpZHRoOiAxMnB4O1xuICAgIGhlaWdodDogMTJweDtcbiAgICBiYWNrZ3JvdW5kOiB1cmwoJ2Nob3Nlbi1zcHJpdGUucG5nJykgLTQycHggMXB4IG5vLXJlcGVhdDtcbiAgICBmb250LXNpemU6IDFweDtcbn1cbi5jaG9zZW4tY29udGFpbmVyLXNpbmdsZSAuY2hvc2VuLXNpbmdsZSBhYmJyOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtNDJweCAtMTBweDtcbn1cbi5jaG9zZW4tY29udGFpbmVyLXNpbmdsZS5jaG9zZW4tZGlzYWJsZWQgLmNob3Nlbi1zaW5nbGUgYWJicjpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1wb3NpdGlvbjogLTQycHggLTEwcHg7XG59XG4uY2hvc2VuLWNvbnRhaW5lci1zaW5nbGUgLmNob3Nlbi1zaW5nbGUgZGl2IHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwO1xuICAgIHJpZ2h0OiAwO1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHdpZHRoOiAxOHB4O1xuICAgIGhlaWdodDogMTAwJTtcbn1cbi5jaG9zZW4tY29udGFpbmVyLXNpbmdsZSAuY2hvc2VuLXNpbmdsZSBkaXYgYiB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIGJhY2tncm91bmQ6IHVybCgnY2hvc2VuLXNwcml0ZS5wbmcnKSBuby1yZXBlYXQgMHB4IDJweDtcbn1cbi5jaG9zZW4tY29udGFpbmVyLXNpbmdsZSAuY2hvc2VuLXNlYXJjaCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yLWdyZXktbGlnaHRlcjtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgei1pbmRleDogMTAxMDtcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogM3B4ICRib25pdG8tYmFzZS1zcGFjaW5nLXVuaXQtLXRpbnk7XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbn1cbi5jaG9zZW4tY29udGFpbmVyLXNpbmdsZSAuY2hvc2VuLXNlYXJjaCBpbnB1dFt0eXBlPVwidGV4dFwiXSB7XG4gICAgbWFyZ2luOiAxcHggMDtcbiAgICBwYWRkaW5nOiAkYm9uaXRvLWJhc2Utc3BhY2luZy11bml0LS10aW55IDIwcHggJGJvbml0by1iYXNlLXNwYWNpbmctdW5pdC0tdGlueSAkYm9uaXRvLWJhc2Utc3BhY2luZy11bml0LS1sYXJnZTtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IGF1dG87XG4gICAgb3V0bGluZTogMDtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjYWFhO1xuICAgIGJhY2tncm91bmQ6ICRjb2xvci1ncmV5LWxpZ2h0ZXIgdXJsKC4uLy4uL2ltYWdlcy9pY29uLXNlYXJjaC5zdmcpIG5vLXJlcGVhdCA0cHggNXB4O1xuXG4gICAgYm9yZGVyLXJhZGl1czogMDtcbn1cbi5jaG9zZW4tY29udGFpbmVyLXNpbmdsZSAuY2hvc2VuLWRyb3Age1xuICAgIG1hcmdpbi10b3A6IC0xcHg7XG4gICAgYm9yZGVyLXJhZGl1czogMCAwICRib25pdG8tYmFzZS1zcGFjaW5nLXVuaXQtLXRpbnkgJGJvbml0by1iYXNlLXNwYWNpbmctdW5pdC0tdGlueTtcbiAgICBiYWNrZ3JvdW5kLWNsaXA6IHBhZGRpbmctYm94O1xufVxuLmNob3Nlbi1jb250YWluZXItc2luZ2xlLmNob3Nlbi1jb250YWluZXItc2luZ2xlLW5vc2VhcmNoIC5jaG9zZW4tc2VhcmNoIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgbGVmdDogLTk5OTlweDtcbn1cblxuLyogQGVuZCAqL1xuLyogQGdyb3VwIFJlc3VsdHMgKi9cbi5jaG9zZW4tY29udGFpbmVyIC5jaG9zZW4tcmVzdWx0cyB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yLWdyZXktbGlnaHRlcjtcbiAgICBjb2xvcjogJGNvbG9yLWdyZXktNzU7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIG92ZXJmbG93LXg6IGhpZGRlbjtcbiAgICBvdmVyZmxvdy15OiBhdXRvO1xuICAgIHBhZGRpbmc6IDAgMCAkYm9uaXRvLWJhc2Utc3BhY2luZy11bml0LS10aW55IDA7XG4gICAgbWFyZ2luOiAwO1xuICAgIG1heC1oZWlnaHQ6IDI0MHB4O1xuICAgIC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaDtcbiAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAkYm9uaXRvLWJhc2Utc3BhY2luZy11bml0LS10aW55O1xuICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAkYm9uaXRvLWJhc2Utc3BhY2luZy11bml0LS10aW55O1xufVxuLmNob3Nlbi1jb250YWluZXIgLmNob3Nlbi1yZXN1bHRzIGxpIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiA4cHggMTZweDtcbiAgICBsaXN0LXN0eWxlOiBub25lO1xuICAgIGxpbmUtaGVpZ2h0OiAxZW07XG4gICAgd29yZC13cmFwOiBicmVhay13b3JkO1xuICAgIC13ZWJraXQtdG91Y2gtY2FsbG91dDogbm9uZTtcbiAgICBcbiAgICAmOmhvdmVyIHtcbiAgICAgICAgY29sb3I6ICRjb2xvci1ncmV5LWxpZ2h0ZXI7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvci1zZWNvbmRhcnk7XG4gICAgfVxufVxuLmNob3Nlbi1jb250YWluZXIgLmNob3Nlbi1yZXN1bHRzIGxpLmFjdGl2ZS1yZXN1bHQge1xuICAgIGRpc3BsYXk6IGxpc3QtaXRlbTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG59XG4uY2hvc2VuLWNvbnRhaW5lciAuY2hvc2VuLXJlc3VsdHMgbGkuZGlzYWJsZWQtcmVzdWx0IHtcbiAgICBkaXNwbGF5OiBsaXN0LWl0ZW07XG4gICAgY29sb3I6ICNjY2M7XG4gICAgY3Vyc29yOiBkZWZhdWx0O1xufVxuLmNob3Nlbi1jb250YWluZXIgLmNob3Nlbi1yZXN1bHRzIGxpLm5vLXJlc3VsdHMge1xuICAgIGNvbG9yOiAjNzc3O1xuICAgIGRpc3BsYXk6IGxpc3QtaXRlbTtcbiAgICBiYWNrZ3JvdW5kOiAjZjRmNGY0O1xufVxuLmNob3Nlbi1jb250YWluZXIgLmNob3Nlbi1yZXN1bHRzIGxpLmdyb3VwLXJlc3VsdCB7XG4gICAgZGlzcGxheTogbGlzdC1pdGVtO1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIGN1cnNvcjogZGVmYXVsdDtcbn1cbi5jaG9zZW4tY29udGFpbmVyIC5jaG9zZW4tcmVzdWx0cyBsaS5ncm91cC1vcHRpb24ge1xuICAgIHBhZGRpbmctbGVmdDogMTVweDtcbn1cbi5jaG9zZW4tY29udGFpbmVyIC5jaG9zZW4tcmVzdWx0cyBsaSBlbSB7XG4gICAgZm9udC1zdHlsZTogbm9ybWFsO1xuICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xufVxuXG4vKiBAZW5kICovXG4vKiBAZ3JvdXAgTXVsdGkgQ2hvc2VuICovXG4uY2hvc2VuLWNvbnRhaW5lci1tdWx0aSAuY2hvc2VuLWNob2ljZXMge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAwIDVweDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IGF1dG8gIWltcG9ydGFudDtcbiAgICBoZWlnaHQ6IDElO1xuICAgIGJvcmRlcjogbm9uZTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3ItZ3JleS1saWdodGVyO1xuICAgIGN1cnNvcjogdGV4dDtcbn1cbi5jaG9zZW4tY29udGFpbmVyLW11bHRpIC5jaG9zZW4tY2hvaWNlcyBsaSB7XG4gICAgZmxvYXQ6IGxlZnQ7XG4gICAgbGlzdC1zdHlsZTogbm9uZTtcbn1cbi5jaG9zZW4tY29udGFpbmVyLW11bHRpIC5jaG9zZW4tY2hvaWNlcyBsaS5zZWFyY2gtZmllbGQge1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAwO1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG59XG4uY2hvc2VuLWNvbnRhaW5lci1tdWx0aSAuY2hvc2VuLWNob2ljZXMgbGkuc2VhcmNoLWZpZWxkIGlucHV0W3R5cGU9XCJ0ZXh0XCJdIHtcbiAgICBtYXJnaW46IDFweCAwO1xuICAgIHBhZGRpbmc6IDA7XG4gICAgaGVpZ2h0OiAyNXB4O1xuICAgIG91dGxpbmU6IDA7XG4gICAgYm9yZGVyOiAwICFpbXBvcnRhbnQ7XG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcbiAgICBib3gtc2hhZG93OiBub25lO1xuICAgIGNvbG9yOiAkY29sb3ItZ3JleS03NTtcbiAgICBmb250LXNpemU6IDEwMCU7XG4gICAgZm9udC1mYW1pbHk6IHNhbnMtc2VyaWY7XG4gICAgbGluZS1oZWlnaHQ6IG5vcm1hbDtcbiAgICBib3JkZXItcmFkaXVzOiAwO1xufVxuLmNob3Nlbi1jb250YWluZXItbXVsdGkgLmNob3Nlbi1jaG9pY2VzIGxpLnNlYXJjaC1jaG9pY2Uge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBtYXJnaW46IDNweCA1cHggM3B4IDA7XG4gICAgcGFkZGluZzogM3B4IDIwcHggM3B4IDVweDtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjYWFhO1xuICAgIG1heC13aWR0aDogMTAwJTtcbiAgICBib3JkZXItcmFkaXVzOiAzcHg7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yLWdyZXktbGlnaHRlcjtcbiAgICBiYWNrZ3JvdW5kLXNpemU6IDEwMCUgMTlweDtcbiAgICBiYWNrZ3JvdW5kLXJlcGVhdDogcmVwZWF0LXg7XG4gICAgYmFja2dyb3VuZC1jbGlwOiBwYWRkaW5nLWJveDtcbiAgICBjb2xvcjogJGNvbG9yLWdyZXktNzU7XG4gICAgbGluZS1oZWlnaHQ6IDEzcHg7XG4gICAgY3Vyc29yOiBkZWZhdWx0O1xufVxuLmNob3Nlbi1jb250YWluZXItbXVsdGkgLmNob3Nlbi1jaG9pY2VzIGxpLnNlYXJjaC1jaG9pY2Ugc3BhbiB7XG4gICAgd29yZC13cmFwOiBicmVhay13b3JkO1xufVxuLmNob3Nlbi1jb250YWluZXItbXVsdGkgLmNob3Nlbi1jaG9pY2VzIGxpLnNlYXJjaC1jaG9pY2UgLnNlYXJjaC1jaG9pY2UtY2xvc2Uge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6ICRib25pdG8tYmFzZS1zcGFjaW5nLXVuaXQtLXRpbnk7XG4gICAgcmlnaHQ6IDNweDtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICB3aWR0aDogMTJweDtcbiAgICBoZWlnaHQ6IDEycHg7XG4gICAgYmFja2dyb3VuZDogdXJsKCdjaG9zZW4tc3ByaXRlLnBuZycpIC00MnB4IDFweCBuby1yZXBlYXQ7XG4gICAgZm9udC1zaXplOiAxcHg7XG59XG4uY2hvc2VuLWNvbnRhaW5lci1tdWx0aSAuY2hvc2VuLWNob2ljZXMgbGkuc2VhcmNoLWNob2ljZSAuc2VhcmNoLWNob2ljZS1jbG9zZTpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1wb3NpdGlvbjogLTQycHggLTEwcHg7XG59XG4uY2hvc2VuLWNvbnRhaW5lci1tdWx0aSAuY2hvc2VuLWNob2ljZXMgbGkuc2VhcmNoLWNob2ljZS1kaXNhYmxlZCB7XG4gICAgcGFkZGluZy1yaWdodDogNXB4O1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICNjY2M7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2U0ZTRlNDtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LWdyYWRpZW50KGxpbmVhciwgNTAlIDAlLCA1MCUgMTAwJSwgY29sb3Itc3RvcCgyMCUsICNmNGY0ZjQpLCBjb2xvci1zdG9wKDUwJSwgI2YwZjBmMCksIGNvbG9yLXN0b3AoNTIlLCAjZThlOGU4KSwgY29sb3Itc3RvcCgxMDAlLCAjZWVlZWVlKSk7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1saW5lYXItZ3JhZGllbnQodG9wLCAjZjRmNGY0IDIwJSwgI2YwZjBmMCA1MCUsICNlOGU4ZTggNTIlLCAjZWVlZWVlIDEwMCUpO1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IC1tb3otbGluZWFyLWdyYWRpZW50KHRvcCwgI2Y0ZjRmNCAyMCUsICNmMGYwZjAgNTAlLCAjZThlOGU4IDUyJSwgI2VlZWVlZSAxMDAlKTtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiAtby1saW5lYXItZ3JhZGllbnQodG9wLCAjZjRmNGY0IDIwJSwgI2YwZjBmMCA1MCUsICNlOGU4ZTggNTIlLCAjZWVlZWVlIDEwMCUpO1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sICNmNGY0ZjQgMjAlLCAjZjBmMGYwIDUwJSwgI2U4ZThlOCA1MiUsICNlZWVlZWUgMTAwJSk7XG4gICAgY29sb3I6ICM2NjY7XG59XG4uY2hvc2VuLWNvbnRhaW5lci1tdWx0aSAuY2hvc2VuLWNob2ljZXMgbGkuc2VhcmNoLWNob2ljZS1mb2N1cyB7XG4gICAgYmFja2dyb3VuZDogI2Q0ZDRkNDtcbn1cbi5jaG9zZW4tY29udGFpbmVyLW11bHRpIC5jaG9zZW4tY2hvaWNlcyBsaS5zZWFyY2gtY2hvaWNlLWZvY3VzIC5zZWFyY2gtY2hvaWNlLWNsb3NlIHtcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtNDJweCAtMTBweDtcbn1cbi5jaG9zZW4tY29udGFpbmVyLW11bHRpIC5jaG9zZW4tcmVzdWx0cyB7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IDA7XG59XG4uY2hvc2VuLWNvbnRhaW5lci1tdWx0aSAuY2hvc2VuLWRyb3AgLnJlc3VsdC1zZWxlY3RlZCB7XG4gICAgZGlzcGxheTogbGlzdC1pdGVtO1xuICAgIGNvbG9yOiAjY2NjO1xuICAgIGN1cnNvcjogZGVmYXVsdDtcbn1cblxuLyogQGVuZCAqL1xuLyogQGdyb3VwIEFjdGl2ZSAgKi9cblxuLmNob3Nlbi1jb250YWluZXItYWN0aXZlLmNob3Nlbi13aXRoLWRyb3AgLmNob3Nlbi1zaW5nbGUge1xuICAgIC1tb3otYm9yZGVyLXJhZGl1cy1ib3R0b21yaWdodDogMDtcbiAgICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMDtcbiAgICAtbW96LWJvcmRlci1yYWRpdXMtYm90dG9tbGVmdDogMDtcbiAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xufVxuLmNob3Nlbi1jb250YWluZXItYWN0aXZlLmNob3Nlbi13aXRoLWRyb3AgLmNob3Nlbi1zaW5nbGUgZGl2IHtcbiAgICBib3JkZXItbGVmdDogbm9uZTtcbiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbn1cbi5jaG9zZW4tY29udGFpbmVyLWFjdGl2ZS5jaG9zZW4td2l0aC1kcm9wIC5jaG9zZW4tc2luZ2xlIGRpdiBiIHtcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMThweCAycHg7XG59XG4uY2hvc2VuLWNvbnRhaW5lci1hY3RpdmUgLmNob3Nlbi1jaG9pY2VzIHtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjNTg5N2ZiO1xuICAgIGJveC1zaGFkb3c6IDAgMCA1cHggcmdiYSgwLCAwLCAwLCAwLjMpO1xufVxuLmNob3Nlbi1jb250YWluZXItYWN0aXZlIC5jaG9zZW4tY2hvaWNlcyBsaS5zZWFyY2gtZmllbGQgaW5wdXRbdHlwZT1cInRleHRcIl0ge1xuICAgIGNvbG9yOiAkY29sb3ItZ3JleS03NSAhaW1wb3J0YW50O1xufVxuXG4vKiBAZW5kICovXG4vKiBAZ3JvdXAgRGlzYWJsZWQgU3VwcG9ydCAqL1xuLmNob3Nlbi1kaXNhYmxlZCB7XG4gICAgb3BhY2l0eTogMC41ICFpbXBvcnRhbnQ7XG4gICAgY3Vyc29yOiBkZWZhdWx0O1xufVxuLmNob3Nlbi1kaXNhYmxlZCAuY2hvc2VuLXNpbmdsZSB7XG4gICAgY3Vyc29yOiBkZWZhdWx0O1xufVxuLmNob3Nlbi1kaXNhYmxlZCAuY2hvc2VuLWNob2ljZXMgLnNlYXJjaC1jaG9pY2UgLnNlYXJjaC1jaG9pY2UtY2xvc2Uge1xuICAgIGN1cnNvcjogZGVmYXVsdDtcbn1cblxuLyogQGVuZCAqL1xuLyogQGdyb3VwIFJpZ2h0IHRvIExlZnQgKi9cbi5jaG9zZW4tcnRsIHtcbiAgICB0ZXh0LWFsaWduOiByaWdodDtcbn1cbi5jaG9zZW4tcnRsIC5jaG9zZW4tc2luZ2xlIHtcbiAgICBvdmVyZmxvdzogdmlzaWJsZTtcbiAgICBwYWRkaW5nOiAwIDhweCAwIDA7XG59XG4uY2hvc2VuLXJ0bCAuY2hvc2VuLXNpbmdsZSBzcGFuIHtcbiAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gICAgbWFyZ2luLWxlZnQ6IDI2cHg7XG4gICAgZGlyZWN0aW9uOiBydGw7XG59XG4uY2hvc2VuLXJ0bCAuY2hvc2VuLXNpbmdsZS13aXRoLWRlc2VsZWN0IHNwYW4ge1xuICAgIG1hcmdpbi1sZWZ0OiAzOHB4O1xufVxuLmNob3Nlbi1ydGwgLmNob3Nlbi1zaW5nbGUgZGl2IHtcbiAgICByaWdodDogYXV0bztcbiAgICBsZWZ0OiAzcHg7XG59XG4uY2hvc2VuLXJ0bCAuY2hvc2VuLXNpbmdsZSBhYmJyIHtcbiAgICByaWdodDogYXV0bztcbiAgICBsZWZ0OiAyNnB4O1xufVxuLmNob3Nlbi1ydGwgLmNob3Nlbi1jaG9pY2VzIGxpIHtcbiAgICBmbG9hdDogcmlnaHQ7XG59XG4uY2hvc2VuLXJ0bCAuY2hvc2VuLWNob2ljZXMgbGkuc2VhcmNoLWZpZWxkIGlucHV0W3R5cGU9XCJ0ZXh0XCJdIHtcbiAgICBkaXJlY3Rpb246IHJ0bDtcbn1cbi5jaG9zZW4tcnRsIC5jaG9zZW4tY2hvaWNlcyBsaS5zZWFyY2gtY2hvaWNlIHtcbiAgICBtYXJnaW46IDNweCA1cHggM3B4IDA7XG4gICAgcGFkZGluZzogM3B4IDVweCAzcHggMTlweDtcbn1cbi5jaG9zZW4tcnRsIC5jaG9zZW4tY2hvaWNlcyBsaS5zZWFyY2gtY2hvaWNlIC5zZWFyY2gtY2hvaWNlLWNsb3NlIHtcbiAgICByaWdodDogYXV0bztcbiAgICBsZWZ0OiAkYm9uaXRvLWJhc2Utc3BhY2luZy11bml0LS10aW55O1xufVxuLmNob3Nlbi1ydGwuY2hvc2VuLWNvbnRhaW5lci1zaW5nbGUtbm9zZWFyY2ggLmNob3Nlbi1zZWFyY2gsXG4uY2hvc2VuLXJ0bCAuY2hvc2VuLWRyb3Age1xuICAgIGxlZnQ6IDk5OTlweDtcbn1cbi5jaG9zZW4tcnRsLmNob3Nlbi1jb250YWluZXItc2luZ2xlIC5jaG9zZW4tcmVzdWx0cyB7XG4gICAgbWFyZ2luOiAwIDAgOHB4ICRib25pdG8tYmFzZS1zcGFjaW5nLXVuaXQtLXRpbnk7XG4gICAgcGFkZGluZzogMCAkYm9uaXRvLWJhc2Utc3BhY2luZy11bml0LS10aW55IDAgMDtcbn1cbi5jaG9zZW4tcnRsIC5jaG9zZW4tcmVzdWx0cyBsaS5ncm91cC1vcHRpb24ge1xuICAgIHBhZGRpbmctcmlnaHQ6IDE1cHg7XG4gICAgcGFkZGluZy1sZWZ0OiAwO1xufVxuLmNob3Nlbi1ydGwuY2hvc2VuLWNvbnRhaW5lci1hY3RpdmUuY2hvc2VuLXdpdGgtZHJvcCAuY2hvc2VuLXNpbmdsZSBkaXYge1xuICAgIGJvcmRlci1yaWdodDogbm9uZTtcbn1cbi5jaG9zZW4tcnRsIC5jaG9zZW4tc2VhcmNoIGlucHV0W3R5cGU9XCJ0ZXh0XCJdIHtcbiAgICBwYWRkaW5nOiAkYm9uaXRvLWJhc2Utc3BhY2luZy11bml0LS10aW55IDVweCAkYm9uaXRvLWJhc2Utc3BhY2luZy11bml0LS10aW55IDIwcHg7XG4gICAgYmFja2dyb3VuZDogd2hpdGUgdXJsKCdjaG9zZW4tc3ByaXRlLnBuZycpIG5vLXJlcGVhdCAtMzBweCAtMjBweDtcbiAgICBiYWNrZ3JvdW5kOiB1cmwoJ2Nob3Nlbi1zcHJpdGUucG5nJykgbm8tcmVwZWF0IC0zMHB4IC0yMHB4O1xuICAgIGRpcmVjdGlvbjogcnRsO1xufVxuLmNob3Nlbi1ydGwuY2hvc2VuLWNvbnRhaW5lci1zaW5nbGUgLmNob3Nlbi1zaW5nbGUgZGl2IGIge1xuICAgIGJhY2tncm91bmQtcG9zaXRpb246IDZweCAycHg7XG59XG4uY2hvc2VuLXJ0bC5jaG9zZW4tY29udGFpbmVyLXNpbmdsZS5jaG9zZW4td2l0aC1kcm9wIC5jaG9zZW4tc2luZ2xlIGRpdiBiIHtcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTJweCAycHg7XG59XG5cbi8qIEBlbmQgKi9cbi8qIEBncm91cCBSZXRpbmEgY29tcGF0aWJpbGl0eSAqL1xuQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAoLXdlYmtpdC1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAyKSwgb25seSBzY3JlZW4gYW5kIChtaW4tcmVzb2x1dGlvbjogMTQ0ZHBpKSB7XG4gICAgLmNob3Nlbi1ydGwgLmNob3Nlbi1zZWFyY2ggaW5wdXRbdHlwZT1cInRleHRcIl0sXG4gICAgLmNob3Nlbi1jb250YWluZXItc2luZ2xlIC5jaG9zZW4tc2luZ2xlIGFiYnIsXG4gICAgLmNob3Nlbi1jb250YWluZXItc2luZ2xlIC5jaG9zZW4tc2luZ2xlIGRpdiBiLFxuICAgIC5jaG9zZW4tY29udGFpbmVyLXNpbmdsZSAuY2hvc2VuLXNlYXJjaCBpbnB1dFt0eXBlPVwidGV4dFwiXSxcbiAgICAuY2hvc2VuLWNvbnRhaW5lci1tdWx0aSAuY2hvc2VuLWNob2ljZXMgLnNlYXJjaC1jaG9pY2UgLnNlYXJjaC1jaG9pY2UtY2xvc2UsXG4gICAgLmNob3Nlbi1jb250YWluZXIgLmNob3Nlbi1yZXN1bHRzLXNjcm9sbC1kb3duIHNwYW4sXG4gICAgLmNob3Nlbi1jb250YWluZXIgLmNob3Nlbi1yZXN1bHRzLXNjcm9sbC11cCBzcGFuIHtcbiAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCdjaG9zZW4tc3ByaXRlQDJ4LnBuZycpICFpbXBvcnRhbnQ7XG4gICAgICAgIGJhY2tncm91bmQtc2l6ZTogNTJweCAzN3B4ICFpbXBvcnRhbnQ7XG4gICAgICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQgIWltcG9ydGFudDtcbiAgICB9XG59XG4vKiBAZW5kICovXG4iLCIuYmV0YSB7XG4gICAgQGV4dGVuZCAlbWFyZ2luLWJvdHRvbTtcbiAgICBwYWRkaW5nOiAkYm9uaXRvLXBhZGRpbmctLWxhcmdlICRib25pdG8tcGFkZGluZy0tbGFyZ2UgKiAxLjU7XG5cbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3Itb3JhbmdlO1xuXG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuXG4gICAgdHJhbnNpdGlvbjogb3BhY2l0eSA2MDBtcztcblxuICAgICYuYmV0YS0taGlkZGVuIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBvcGFjaXR5OiAwO1xuICAgIH1cbn1cblxuLmJldGFfX2NvbnRlbnQge1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG5cbiAgICBAaW5jbHVkZSBib25pdG8tZm9udC1zaXplKDIwcHgsIGZhbHNlKTtcbiAgICBsaW5lLWhlaWdodDogMS4yO1xuXG4gICAgYSB7XG4gICAgICAgICYsXG4gICAgICAgICY6bGluayxcbiAgICAgICAgJjp2aXNpdGVkLFxuICAgICAgICAmOmFjdGl2ZSB7XG4gICAgICAgICAgICBjb2xvcjogJGNvbG9yLXdoaXRlO1xuICAgICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgICAgICB9XG5cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLmJldGFfX2Nsb3NlIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgdG9wOiAtNHB4O1xuICAgIHJpZ2h0OiAtKCRib25pdG8tcGFkZGluZy0tbGFyZ2UvMik7XG4gICAgY29sb3I6IGluaGVyaXQ7XG5cbiAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG4gICAgcGFkZGluZzogMDtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgYmFja2dyb3VuZDogMCAwO1xuICAgIGJvcmRlcjogMDtcblxuICAgIGZsb2F0OiByaWdodDtcbiAgICBmb250LXNpemU6ICRib25pdG8tcGFkZGluZy0tbGFyZ2U7XG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICBsaW5lLWhlaWdodDogMTtcbiAgICBjb2xvcjogIzAwMDtcbiAgICB0ZXh0LXNoYWRvdzogMCAxcHggMCAjZmZmO1xuICAgIGZpbHRlcjogYWxwaGEob3BhY2l0eT0yMCk7XG4gICAgb3BhY2l0eTogLjI7XG59IiwiLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qXFxcbiAgICAjSEVBRElOR1NcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbi8qKlxuICogSGVhZGluZ3MgMeKAkzbigJlzIGNvcnJlc3BvbmRpbmcgR3JlZWstYWxwaGFiZXQgYWJzdHJhY3QgY2xhc3NlcyBmb3IgZG91YmxlLVxuICogc3RyYW5kZWQgaGVhZGluZyBoaWVyYXJjaHk6IGNzc3dpemFyZHJ5LmNvbS8yMDEyLzAyL3ByYWdtYXRpYy1wcmFjdGljYWwtZm9udC1zaXppbmctaW4tY3NzXG4gKlxuICogVXNlIHRoZXNlIGhlbHBlciBjbGFzc2VzIHRvIGNhdXNlIG90aGVyIGVsZW1lbnRzIHRvIGFkb3B0IHRoZSBzdHlsaW5nIG9mIHRoZVxuICogcmVzcGVjdGl2ZSBoZWFkaW5nLCBlLmcuOlxuICpcbiAgIDxoMiBjbGFzcz1cImFscGhhXCI+TG9yZW0gaXBzdW08L2gyPlxuICpcbiAqL1xuXG4uI3skYm9uaXRvLW5hbWVzcGFjZX11LWFscGhhLFxuJSN7JGJvbml0by1uYW1lc3BhY2V9dS1hbHBoYSB7XG4gICAgQGluY2x1ZGUgYm9uaXRvLWZvbnQtc2l6ZSgkYm9uaXRvLWhlYWRpbmctc2l6ZS0xKTtcbn1cblxuLiN7JGJvbml0by1uYW1lc3BhY2V9dS1iZXRhLFxuJSN7JGJvbml0by1uYW1lc3BhY2V9dS1iZXRhIHtcbiAgICBAaW5jbHVkZSBib25pdG8tZm9udC1zaXplKCRib25pdG8taGVhZGluZy1zaXplLTIpO1xufVxuXG4uI3skYm9uaXRvLW5hbWVzcGFjZX11LWdhbW1hLFxuJSN7JGJvbml0by1uYW1lc3BhY2V9dS1nYW1tYSB7XG4gICAgQGluY2x1ZGUgYm9uaXRvLWZvbnQtc2l6ZSgkYm9uaXRvLWhlYWRpbmctc2l6ZS0zKTtcbn1cblxuLiN7JGJvbml0by1uYW1lc3BhY2V9dS1kZWx0YSxcbiUjeyRib25pdG8tbmFtZXNwYWNlfXUtZGVsdGEge1xuICAgIEBpbmNsdWRlIGJvbml0by1mb250LXNpemUoJGJvbml0by1oZWFkaW5nLXNpemUtNCk7XG59XG5cbi4jeyRib25pdG8tbmFtZXNwYWNlfXUtZXBzaWxvbixcbiUjeyRib25pdG8tbmFtZXNwYWNlfXUtZXBzaWxvbiB7XG4gICAgQGluY2x1ZGUgYm9uaXRvLWZvbnQtc2l6ZSgkYm9uaXRvLWhlYWRpbmctc2l6ZS01KTtcbn1cblxuLiN7JGJvbml0by1uYW1lc3BhY2V9dS16ZXRhLFxuJSN7JGJvbml0by1uYW1lc3BhY2V9dS16ZXRhIHtcbiAgICBAaW5jbHVkZSBib25pdG8tZm9udC1zaXplKCRib25pdG8taGVhZGluZy1zaXplLTYpO1xufVxuIiwiLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qXFxcbiAgICAjQ0xFQVJGSVhcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbi8qKlxuICogTWljcm8gY2xlYXJmaXgsIGFzIHBlcjogY3NzLTEwMS5vcmcvYXJ0aWNsZXMvY2xlYXJmaXgvbGF0ZXN0LW5ldy1jbGVhcmZpeC1zby1mYXIucGhwXG4gKiBFeHRlbmQgdGhlIGNsZWFyZml4IGNsYXNzIHdpdGggU2FzcyB0byBhdm9pZCB0aGUgYC5jbGVhcmZpeGAgY2xhc3MgYXBwZWFyaW5nXG4gKiBvdmVyIGFuZCBvdmVyIGluIHlvdXIgbWFya3VwLlxuICovXG4udS1jbGVhcmZpeCxcbiV1LWNsZWFyZml4IHtcblxuICAgICY6YWZ0ZXIge1xuICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICBkaXNwbGF5OiB0YWJsZTtcbiAgICAgICAgY2xlYXI6IGJvdGg7XG4gICAgfVxuXG59XG4iLCIvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcXFxuICAgICNXSURUSFNcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbi8qKlxuICogQSBzZXJpZXMgb2Ygd2lkdGggaGVscGVyIGNsYXNzZXMgdGhhdCB5b3UgY2FuIHVzZSB0byBzaXplIHRoaW5ncyBsaWtlIGdyaWRcbiAqIHN5c3RlbXMuIENsYXNzZXMgY2FuIHRha2UgYSBmcmFjdGlvbi1saWtlIGZvcm1hdCAoZS5nLiBgLjIvM2ApIG9yIGEgc3Bva2VuLVxuICogd29yZCBmb3JtYXQgKGUuZy4gYHR3by10aGlyZHNgKS4gVG9nZ2xlIGZvcm1hdHMgYnkgb3ZlcnJpZGluZyB0aGVcbiAqIGAkYm9uaXRvLXVzZS1mcmFjdGlvbnNgIHZhcmlhYmxlIGRlZmluZWQgYmVsb3cuXG4gKi9cblxuLy8gUHJlZGVmaW5lIHRoZSB2YXJpYWJsZXMgYmVsb3cgaW4gb3JkZXIgdG8gYWx0ZXIgYW5kIGVuYWJsZSBzcGVjaWZpYyBmZWF0dXJlcy5cbiRib25pdG8td2lkdGhzLW5hbWVzcGFjZTogJGJvbml0by1uYW1lc3BhY2UgIWRlZmF1bHQ7XG4kYm9uaXRvLXVzZS1mcmFjdGlvbnM6ICAgIGZhbHNlICFkZWZhdWx0O1xuXG5AaWYgJGJvbml0by11c2UtZnJhY3Rpb25zID09IHRydWUge1xuXG4gICAgLyoqXG4gICAgICogV2hvbGUuXG4gICAgICovXG4gICAgW2NsYXNzfj1cIiN7JGJvbml0by13aWR0aHMtbmFtZXNwYWNlfXUtMS8xXCJdICAgICAgIHsgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsgfVxuXG4gICAgLyoqXG4gICAgICogSGFsdmVzLlxuICAgICAqL1xuICAgIFtjbGFzc349XCIjeyRib25pdG8td2lkdGhzLW5hbWVzcGFjZX11LTEvMlwiXSxcbiAgICBbY2xhc3N+PVwiI3skYm9uaXRvLXdpZHRocy1uYW1lc3BhY2V9dS0yLzRcIl0sXG4gICAgW2NsYXNzfj1cIiN7JGJvbml0by13aWR0aHMtbmFtZXNwYWNlfXUtMy82XCJdLFxuICAgIFtjbGFzc349XCIjeyRib25pdG8td2lkdGhzLW5hbWVzcGFjZX11LTQvOFwiXSxcbiAgICBbY2xhc3N+PVwiI3skYm9uaXRvLXdpZHRocy1uYW1lc3BhY2V9dS01LzEwXCJdLFxuICAgIFtjbGFzc349XCIjeyRib25pdG8td2lkdGhzLW5hbWVzcGFjZX11LTYvMTJcIl0gICAgICB7IHdpZHRoOiA1MCUgIWltcG9ydGFudDsgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcmRzLlxuICAgICAqL1xuICAgIFtjbGFzc349XCIjeyRib25pdG8td2lkdGhzLW5hbWVzcGFjZX11LTEvM1wiXSxcbiAgICBbY2xhc3N+PVwiI3skYm9uaXRvLXdpZHRocy1uYW1lc3BhY2V9dS0yLzZcIl0sXG4gICAgW2NsYXNzfj1cIiN7JGJvbml0by13aWR0aHMtbmFtZXNwYWNlfXUtMy85XCJdLFxuICAgIFtjbGFzc349XCIjeyRib25pdG8td2lkdGhzLW5hbWVzcGFjZX11LTQvMTJcIl0gICAgICB7IHdpZHRoOiAzMy4zMzMzMzMzJSAhaW1wb3J0YW50OyB9XG4gICAgW2NsYXNzfj1cIiN7JGJvbml0by13aWR0aHMtbmFtZXNwYWNlfXUtMi8zXCJdLFxuICAgIFtjbGFzc349XCIjeyRib25pdG8td2lkdGhzLW5hbWVzcGFjZX11LTQvNlwiXSxcbiAgICBbY2xhc3N+PVwiI3skYm9uaXRvLXdpZHRocy1uYW1lc3BhY2V9dS02LzlcIl0sXG4gICAgW2NsYXNzfj1cIiN7JGJvbml0by13aWR0aHMtbmFtZXNwYWNlfXUtOC8xMlwiXSAgICAgIHsgd2lkdGg6IDY2LjY2NjY2NjYlICFpbXBvcnRhbnQ7IH1cblxuICAgIC8qKlxuICAgICAqIFF1YXJ0ZXJzLlxuICAgICAqL1xuICAgIFtjbGFzc349XCIjeyRib25pdG8td2lkdGhzLW5hbWVzcGFjZX11LTEvNFwiXSxcbiAgICBbY2xhc3N+PVwiI3skYm9uaXRvLXdpZHRocy1uYW1lc3BhY2V9dS0yLzhcIl0sXG4gICAgW2NsYXNzfj1cIiN7JGJvbml0by13aWR0aHMtbmFtZXNwYWNlfXUtMy8xMlwiXSAgICAgIHsgd2lkdGg6IDI1JSAhaW1wb3J0YW50OyB9XG4gICAgW2NsYXNzfj1cIiN7JGJvbml0by13aWR0aHMtbmFtZXNwYWNlfXUtMy80XCJdLFxuICAgIFtjbGFzc349XCIjeyRib25pdG8td2lkdGhzLW5hbWVzcGFjZX11LTYvOFwiXSxcbiAgICBbY2xhc3N+PVwiI3skYm9uaXRvLXdpZHRocy1uYW1lc3BhY2V9dS05LzEyXCJdICAgICAgeyB3aWR0aDogNzUlICFpbXBvcnRhbnQ7IH1cblxuICAgIC8qKlxuICAgICAqIEZpZnRocy5cbiAgICAgKi9cbiAgICBbY2xhc3N+PVwiI3skYm9uaXRvLXdpZHRocy1uYW1lc3BhY2V9dS0xLzVcIl0sXG4gICAgW2NsYXNzfj1cIiN7JGJvbml0by13aWR0aHMtbmFtZXNwYWNlfXUtMi8xMFwiXSAgICAgIHsgd2lkdGg6IDIwJSAhaW1wb3J0YW50OyB9XG4gICAgW2NsYXNzfj1cIiN7JGJvbml0by13aWR0aHMtbmFtZXNwYWNlfXUtMi81XCJdLFxuICAgIFtjbGFzc349XCIjeyRib25pdG8td2lkdGhzLW5hbWVzcGFjZX11LTQvMTBcIl0gICAgICB7IHdpZHRoOiA0MCUgIWltcG9ydGFudDsgfVxuICAgIFtjbGFzc349XCIjeyRib25pdG8td2lkdGhzLW5hbWVzcGFjZX11LTMvNVwiXSxcbiAgICBbY2xhc3N+PVwiI3skYm9uaXRvLXdpZHRocy1uYW1lc3BhY2V9dS02LzEwXCJdICAgICAgeyB3aWR0aDogNjAlICFpbXBvcnRhbnQ7IH1cbiAgICBbY2xhc3N+PVwiI3skYm9uaXRvLXdpZHRocy1uYW1lc3BhY2V9dS00LzVcIl0sXG4gICAgW2NsYXNzfj1cIiN7JGJvbml0by13aWR0aHMtbmFtZXNwYWNlfXUtOC8xMFwiXSAgICAgIHsgd2lkdGg6IDgwJSAhaW1wb3J0YW50OyB9XG5cbiAgICAvKipcbiAgICAgKiBTaXh0aHMuXG4gICAgICovXG4gICAgW2NsYXNzfj1cIiN7JGJvbml0by13aWR0aHMtbmFtZXNwYWNlfXUtMS82XCJdLFxuICAgIFtjbGFzc349XCIjeyRib25pdG8td2lkdGhzLW5hbWVzcGFjZX11LTIvMTJcIl0gICAgICB7IHdpZHRoOiAxNi42NjY2NjY2JSAhaW1wb3J0YW50OyB9XG4gICAgW2NsYXNzfj1cIiN7JGJvbml0by13aWR0aHMtbmFtZXNwYWNlfXUtNS82XCJdLFxuICAgIFtjbGFzc349XCIjeyRib25pdG8td2lkdGhzLW5hbWVzcGFjZX11LTEwLzEyXCJdICAgICB7IHdpZHRoOiA4My4zMzMzMzMzJSAhaW1wb3J0YW50OyB9XG4gICAgLyoqXG4gICAgICogRWlnaHRocy5cbiAgICAgKi9cbiAgICBbY2xhc3N+PVwiI3skYm9uaXRvLXdpZHRocy1uYW1lc3BhY2V9dS0xLzhcIl0gICAgICAgeyB3aWR0aDogMTIuNSUgIWltcG9ydGFudDsgfVxuICAgIFtjbGFzc349XCIjeyRib25pdG8td2lkdGhzLW5hbWVzcGFjZX11LTMvOFwiXSAgICAgICB7IHdpZHRoOiAzNy41JSAhaW1wb3J0YW50OyB9XG4gICAgW2NsYXNzfj1cIiN7JGJvbml0by13aWR0aHMtbmFtZXNwYWNlfXUtNS84XCJdICAgICAgIHsgd2lkdGg6IDYyLjUlICFpbXBvcnRhbnQ7IH1cbiAgICBbY2xhc3N+PVwiI3skYm9uaXRvLXdpZHRocy1uYW1lc3BhY2V9dS03LzhcIl0gICAgICAgeyB3aWR0aDogODcuNSUgIWltcG9ydGFudDsgfVxuXG4gICAgLyoqXG4gICAgICogTmludGhzLlxuICAgICAqL1xuICAgIFtjbGFzc349XCIjeyRib25pdG8td2lkdGhzLW5hbWVzcGFjZX11LTEvOVwiXSAgICAgICB7IHdpZHRoOiAxMS4xMTExMTExJSAhaW1wb3J0YW50OyB9XG4gICAgW2NsYXNzfj1cIiN7JGJvbml0by13aWR0aHMtbmFtZXNwYWNlfXUtMi85XCJdICAgICAgIHsgd2lkdGg6IDIyLjIyMjIyMjIlICFpbXBvcnRhbnQ7IH1cbiAgICBbY2xhc3N+PVwiI3skYm9uaXRvLXdpZHRocy1uYW1lc3BhY2V9dS00LzlcIl0gICAgICAgeyB3aWR0aDogNDQuNDQ0NDQ0NCUgIWltcG9ydGFudDsgfVxuICAgIFtjbGFzc349XCIjeyRib25pdG8td2lkdGhzLW5hbWVzcGFjZX11LTUvOVwiXSAgICAgICB7IHdpZHRoOiA1NS41NTU1NTU1JSAhaW1wb3J0YW50OyB9XG4gICAgW2NsYXNzfj1cIiN7JGJvbml0by13aWR0aHMtbmFtZXNwYWNlfXUtNy85XCJdICAgICAgIHsgd2lkdGg6IDc3Ljc3Nzc3NzclICFpbXBvcnRhbnQ7IH1cbiAgICBbY2xhc3N+PVwiI3skYm9uaXRvLXdpZHRocy1uYW1lc3BhY2V9dS04LzlcIl0gICAgICAgeyB3aWR0aDogODguODg4ODg4OCUgIWltcG9ydGFudDsgfVxuXG4gICAgLyoqXG4gICAgICogVGVudGhzLlxuICAgICAqL1xuICAgIFtjbGFzc349XCIjeyRib25pdG8td2lkdGhzLW5hbWVzcGFjZX11LTEvMTBcIl0gICAgICB7IHdpZHRoOiAxMCUgIWltcG9ydGFudDsgfVxuICAgIFtjbGFzc349XCIjeyRib25pdG8td2lkdGhzLW5hbWVzcGFjZX11LTMvMTBcIl0gICAgICB7IHdpZHRoOiAzMCUgIWltcG9ydGFudDsgfVxuICAgIFtjbGFzc349XCIjeyRib25pdG8td2lkdGhzLW5hbWVzcGFjZX11LTcvMTBcIl0gICAgICB7IHdpZHRoOiA3MCUgIWltcG9ydGFudDsgfVxuICAgIFtjbGFzc349XCIjeyRib25pdG8td2lkdGhzLW5hbWVzcGFjZX11LTkvMTBcIl0gICAgICB7IHdpZHRoOiA5MCUgIWltcG9ydGFudDsgfVxuXG4gICAgLyoqXG4gICAgICogVHdlbGZ0aHMuXG4gICAgICovXG4gICAgW2NsYXNzfj1cIiN7JGJvbml0by13aWR0aHMtbmFtZXNwYWNlfXUtMS8xMlwiXSAgICAgIHsgd2lkdGg6ICA4LjMzMzMzMzMlICFpbXBvcnRhbnQ7IH1cbiAgICBbY2xhc3N+PVwiI3skYm9uaXRvLXdpZHRocy1uYW1lc3BhY2V9dS01LzEyXCJdICAgICAgeyB3aWR0aDogNDEuNjY2NjY2NiUgIWltcG9ydGFudDsgfVxuICAgIFtjbGFzc349XCIjeyRib25pdG8td2lkdGhzLW5hbWVzcGFjZX11LTcvMTJcIl0gICAgICB7IHdpZHRoOiA1OC4zMzMzMzMzJSAhaW1wb3J0YW50OyB9XG4gICAgW2NsYXNzfj1cIiN7JGJvbml0by13aWR0aHMtbmFtZXNwYWNlfXUtMTEvMTJcIl0gICAgIHsgd2lkdGg6IDkxLjY2NjY2NjYlICFpbXBvcnRhbnQ7IH1cblxufSAvLyBDbG9zZSBmcmFjdGlvbnMgQGlmLlxuXG5cblxuXG5cbkBlbHNlIHtcblxuICAgIC8qKlxuICAgICAqIFdob2xlLlxuICAgICAqL1xuICAgIC4jeyRib25pdG8td2lkdGhzLW5hbWVzcGFjZX11LW9uZS13aG9sZSAgICAgICAgICAgeyB3aWR0aDogMTAwJSAhaW1wb3J0YW50OyB9XG5cbiAgICAvKipcbiAgICAgKiBIYWx2ZXMuXG4gICAgICovXG4gICAgLiN7JGJvbml0by13aWR0aHMtbmFtZXNwYWNlfXUtb25lLWhhbGYsXG4gICAgLiN7JGJvbml0by13aWR0aHMtbmFtZXNwYWNlfXUtdHdvLXF1YXJ0ZXJzLFxuICAgIC4jeyRib25pdG8td2lkdGhzLW5hbWVzcGFjZX11LXRocmVlLXNpeHRocyxcbiAgICAuI3skYm9uaXRvLXdpZHRocy1uYW1lc3BhY2V9dS1mb3VyLWVpZ2h0aHMsXG4gICAgLiN7JGJvbml0by13aWR0aHMtbmFtZXNwYWNlfXUtZml2ZS10ZW50aHMsXG4gICAgLiN7JGJvbml0by13aWR0aHMtbmFtZXNwYWNlfXUtc2l4LXR3ZWxmdGhzICAgICAgICB7IHdpZHRoOiA1MCUgIWltcG9ydGFudDsgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcmRzLlxuICAgICAqL1xuICAgIC4jeyRib25pdG8td2lkdGhzLW5hbWVzcGFjZX11LW9uZS10aGlyZCxcbiAgICAuI3skYm9uaXRvLXdpZHRocy1uYW1lc3BhY2V9dS10d28tc2l4dGhzLFxuICAgIC4jeyRib25pdG8td2lkdGhzLW5hbWVzcGFjZX11LXRocmVlLW5pbnRocyxcbiAgICAuI3skYm9uaXRvLXdpZHRocy1uYW1lc3BhY2V9dS1mb3VyLXR3ZWxmdGhzICAgICAgIHsgd2lkdGg6IDMzLjMzMzMzMzMlICFpbXBvcnRhbnQ7IH1cbiAgICAuI3skYm9uaXRvLXdpZHRocy1uYW1lc3BhY2V9dS10d28tdGhpcmRzLFxuICAgIC4jeyRib25pdG8td2lkdGhzLW5hbWVzcGFjZX11LWZvdXItc2l4dGhzLFxuICAgIC4jeyRib25pdG8td2lkdGhzLW5hbWVzcGFjZX11LXNpeC1uaW50aHMsXG4gICAgLiN7JGJvbml0by13aWR0aHMtbmFtZXNwYWNlfXUtZWlnaHQtdHdlbGZ0aHMgICAgICB7IHdpZHRoOiA2Ni42NjY2NjY2JSAhaW1wb3J0YW50OyB9XG5cbiAgICAvKipcbiAgICAgKiBRdWFydGVycy5cbiAgICAgKi9cbiAgICAuI3skYm9uaXRvLXdpZHRocy1uYW1lc3BhY2V9dS1vbmUtcXVhcnRlcixcbiAgICAuI3skYm9uaXRvLXdpZHRocy1uYW1lc3BhY2V9dS10d28tZWlnaHRocyxcbiAgICAuI3skYm9uaXRvLXdpZHRocy1uYW1lc3BhY2V9dS10aHJlZS10d2VsZnRocyAgICAgIHsgd2lkdGg6IDI1JSAhaW1wb3J0YW50OyB9XG4gICAgLiN7JGJvbml0by13aWR0aHMtbmFtZXNwYWNlfXUtdGhyZWUtcXVhcnRlcnMsXG4gICAgLiN7JGJvbml0by13aWR0aHMtbmFtZXNwYWNlfXUtc2l4LWVpZ2h0aHMsXG4gICAgLiN7JGJvbml0by13aWR0aHMtbmFtZXNwYWNlfXUtbmluZS10d2VsZnRocyAgICAgICB7IHdpZHRoOiA3NSUgIWltcG9ydGFudDsgfVxuXG4gICAgLyoqXG4gICAgICogRmlmdGhzLlxuICAgICAqL1xuICAgIC4jeyRib25pdG8td2lkdGhzLW5hbWVzcGFjZX11LW9uZS1maWZ0aCxcbiAgICAuI3skYm9uaXRvLXdpZHRocy1uYW1lc3BhY2V9dS10d28tdGVudGhzICAgICAgICAgIHsgd2lkdGg6IDIwJSAhaW1wb3J0YW50OyB9XG4gICAgLiN7JGJvbml0by13aWR0aHMtbmFtZXNwYWNlfXUtdHdvLWZpZnRocyxcbiAgICAuI3skYm9uaXRvLXdpZHRocy1uYW1lc3BhY2V9dS1mb3VyLXRlbnRocyAgICAgICAgIHsgd2lkdGg6IDQwJSAhaW1wb3J0YW50OyB9XG4gICAgLiN7JGJvbml0by13aWR0aHMtbmFtZXNwYWNlfXUtdGhyZWUtZmlmdGhzLFxuICAgIC4jeyRib25pdG8td2lkdGhzLW5hbWVzcGFjZX11LXNpeC10ZW50aHMgICAgICAgICAgeyB3aWR0aDogNjAlICFpbXBvcnRhbnQ7IH1cbiAgICAuI3skYm9uaXRvLXdpZHRocy1uYW1lc3BhY2V9dS1mb3VyLWZpZnRocyxcbiAgICAuI3skYm9uaXRvLXdpZHRocy1uYW1lc3BhY2V9dS1laWdodC10ZW50aHMgICAgICAgIHsgd2lkdGg6IDgwJSAhaW1wb3J0YW50OyB9XG5cbiAgICAvKipcbiAgICAgKiBTaXh0aHMuXG4gICAgICovXG4gICAgLiN7JGJvbml0by13aWR0aHMtbmFtZXNwYWNlfXUtb25lLXNpeHRoLFxuICAgIC4jeyRib25pdG8td2lkdGhzLW5hbWVzcGFjZX11LXR3by10d2VsZnRocyAgICAgICAgeyB3aWR0aDogMTYuNjY2NjY2NiUgIWltcG9ydGFudDsgfVxuICAgIC4jeyRib25pdG8td2lkdGhzLW5hbWVzcGFjZX11LWZpdmUtc2l4dGhzLFxuICAgIC4jeyRib25pdG8td2lkdGhzLW5hbWVzcGFjZX11LXRlbi10d2VsZnRocyAgICAgICAgeyB3aWR0aDogODMuMzMzMzMzMyUgIWltcG9ydGFudDsgfVxuXG4gICAgLyoqXG4gICAgICogRWlnaHRocy5cbiAgICAgKi9cbiAgICAuI3skYm9uaXRvLXdpZHRocy1uYW1lc3BhY2V9dS1vbmUtZWlnaHRoICAgICAgICAgIHsgd2lkdGg6IDEyLjUlICFpbXBvcnRhbnQ7IH1cbiAgICAuI3skYm9uaXRvLXdpZHRocy1uYW1lc3BhY2V9dS10aHJlZS1laWdodGhzICAgICAgIHsgd2lkdGg6IDM3LjUlICFpbXBvcnRhbnQ7IH1cbiAgICAuI3skYm9uaXRvLXdpZHRocy1uYW1lc3BhY2V9dS1maXZlLWVpZ2h0aHMgICAgICAgIHsgd2lkdGg6IDYyLjUlICFpbXBvcnRhbnQ7IH1cbiAgICAuI3skYm9uaXRvLXdpZHRocy1uYW1lc3BhY2V9dS1zZXZlbi1laWdodGhzICAgICAgIHsgd2lkdGg6IDg3LjUlICFpbXBvcnRhbnQ7IH1cblxuICAgIC8qKlxuICAgICAqIE5pbnRocy5cbiAgICAgKi9cbiAgICAuI3skYm9uaXRvLXdpZHRocy1uYW1lc3BhY2V9dS1vbmUtbmludGggICAgICAgICAgIHsgd2lkdGg6IDExLjExMTExMTElICFpbXBvcnRhbnQ7IH1cbiAgICAuI3skYm9uaXRvLXdpZHRocy1uYW1lc3BhY2V9dS10d28tbmludGhzICAgICAgICAgIHsgd2lkdGg6IDIyLjIyMjIyMjIlICFpbXBvcnRhbnQ7IH1cbiAgICAuI3skYm9uaXRvLXdpZHRocy1uYW1lc3BhY2V9dS1mb3VyLW5pbnRocyAgICAgICAgIHsgd2lkdGg6IDQ0LjQ0NDQ0NDQlICFpbXBvcnRhbnQ7IH1cbiAgICAuI3skYm9uaXRvLXdpZHRocy1uYW1lc3BhY2V9dS1maXZlLW5pbnRocyAgICAgICAgIHsgd2lkdGg6IDU1LjU1NTU1NTUlICFpbXBvcnRhbnQ7IH1cbiAgICAuI3skYm9uaXRvLXdpZHRocy1uYW1lc3BhY2V9dS1zZXZlbi1uaW50aHMgICAgICAgIHsgd2lkdGg6IDc3Ljc3Nzc3NzclICFpbXBvcnRhbnQ7IH1cbiAgICAuI3skYm9uaXRvLXdpZHRocy1uYW1lc3BhY2V9dS1laWdodC1uaW50aHMgICAgICAgIHsgd2lkdGg6IDg4Ljg4ODg4ODglICFpbXBvcnRhbnQ7IH1cblxuICAgIC8qKlxuICAgICAqIFRlbnRocy5cbiAgICAgKi9cbiAgICAuI3skYm9uaXRvLXdpZHRocy1uYW1lc3BhY2V9dS1vbmUtdGVudGggICAgICAgICAgIHsgd2lkdGg6IDEwJSAhaW1wb3J0YW50OyB9XG4gICAgLiN7JGJvbml0by13aWR0aHMtbmFtZXNwYWNlfXUtdGhyZWUtdGVudGhzICAgICAgICB7IHdpZHRoOiAzMCUgIWltcG9ydGFudDsgfVxuICAgIC4jeyRib25pdG8td2lkdGhzLW5hbWVzcGFjZX11LXNldmVuLXRlbnRocyAgICAgICAgeyB3aWR0aDogNzAlICFpbXBvcnRhbnQ7IH1cbiAgICAuI3skYm9uaXRvLXdpZHRocy1uYW1lc3BhY2V9dS1uaW5lLXRlbnRocyAgICAgICAgIHsgd2lkdGg6IDkwJSAhaW1wb3J0YW50OyB9XG5cbiAgICAvKipcbiAgICAgKiBUd2VsZnRocy5cbiAgICAgKi9cbiAgICAuI3skYm9uaXRvLXdpZHRocy1uYW1lc3BhY2V9dS1vbmUtdHdlbGZ0aCAgICAgICAgIHsgd2lkdGg6ICA4LjMzMzMzMzMlICFpbXBvcnRhbnQ7IH1cbiAgICAuI3skYm9uaXRvLXdpZHRocy1uYW1lc3BhY2V9dS1maXZlLXR3ZWxmdGhzICAgICAgIHsgd2lkdGg6IDQxLjY2NjY2NjYlICFpbXBvcnRhbnQ7IH1cbiAgICAuI3skYm9uaXRvLXdpZHRocy1uYW1lc3BhY2V9dS1zZXZlbi10d2VsZnRocyAgICAgIHsgd2lkdGg6IDU4LjMzMzMzMzMlICFpbXBvcnRhbnQ7IH1cbiAgICAuI3skYm9uaXRvLXdpZHRocy1uYW1lc3BhY2V9dS1lbGV2ZW4tdHdlbGZ0aHMgICAgIHsgd2lkdGg6IDkxLjY2NjY2NjYlICFpbXBvcnRhbnQ7IH1cblxufSAvLyBDbG9zZSBmcmFjdGlvbnMgQGlmLiIsIi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlxcXG4gICAgI1dJRFRIUy1SRVNQT05TSVZFXG5cXCotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG4vKipcbiAqIFJlc3BvbnNpdmUgd2lkdGggY2xhc3NlcyBiYXNlZCBvbiB5b3VyIHJlc3BvbnNpdmUgc2V0dGluZ3MuXG4gKi9cblxuQGlmICRib25pdG8tdXNlLWZyYWN0aW9ucyA9PSB0cnVlIHtcblxuICAgIEBlYWNoICRicmVha3BvaW50IGluICRicmVha3BvaW50cyB7XG5cbiAgICAgICAgJGFsaWFzOiAgICAgbnRoKCRicmVha3BvaW50LCAxKTtcbiAgICAgICAgJGNvbmRpdGlvbjogbnRoKCRicmVha3BvaW50LCAyKTtcblxuICAgICAgICAvLyBUaGlzIGlzbuKAmXQgaWRlYWwsIGJ1dCB3ZSBkZWZpbml0ZWx5IGRvbuKAmXQgd2FudCB0byBnZW5lcmF0ZSB3aWR0aHNcbiAgICAgICAgLy8gZm9yIHJldGluYSBkZXZpY2VzLiBFeGNsdWRlIHJldGluYSBtZWRpYS1xZXVyaWVzIG1hbnVhbGx5LlxuICAgICAgICBAaWYgKCRhbGlhcyAhPSBcInJldGluYVwiKSB7XG5cbiAgICAgICAgICAgIEBpbmNsdWRlIG1lZGlhLXF1ZXJ5KCRhbGlhcykge1xuXG4gICAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgICAgICogV2hvbGUuXG4gICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgW2NsYXNzfj1cIiN7JGJvbml0by13aWR0aHMtbmFtZXNwYWNlfXUtI3skYWxpYXN9LTEvMVwiXSAgICAgeyB3aWR0aDogMTAwJSAhaW1wb3J0YW50OyB9XG5cbiAgICAgICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAgICAgKiBIYWx2ZXMuXG4gICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgW2NsYXNzfj1cIiN7JGJvbml0by13aWR0aHMtbmFtZXNwYWNlfXUtI3skYWxpYXN9LTEvMlwiXSxcbiAgICAgICAgICAgICAgICBbY2xhc3N+PVwiI3skYm9uaXRvLXdpZHRocy1uYW1lc3BhY2V9dS0jeyRhbGlhc30tMi80XCJdLFxuICAgICAgICAgICAgICAgIFtjbGFzc349XCIjeyRib25pdG8td2lkdGhzLW5hbWVzcGFjZX11LSN7JGFsaWFzfS0zLzZcIl0sXG4gICAgICAgICAgICAgICAgW2NsYXNzfj1cIiN7JGJvbml0by13aWR0aHMtbmFtZXNwYWNlfXUtI3skYWxpYXN9LTQvOFwiXSxcbiAgICAgICAgICAgICAgICBbY2xhc3N+PVwiI3skYm9uaXRvLXdpZHRocy1uYW1lc3BhY2V9dS0jeyRhbGlhc30tNS8xMFwiXSxcbiAgICAgICAgICAgICAgICBbY2xhc3N+PVwiI3skYm9uaXRvLXdpZHRocy1uYW1lc3BhY2V9dS0jeyRhbGlhc30tNi8xMlwiXSAgICAgeyB3aWR0aDogNTAlICFpbXBvcnRhbnQ7IH1cblxuICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICAgICAqIFRoaXJkcy5cbiAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICBbY2xhc3N+PVwiI3skYm9uaXRvLXdpZHRocy1uYW1lc3BhY2V9dS0jeyRhbGlhc30tMS8zXCJdLFxuICAgICAgICAgICAgICAgIFtjbGFzc349XCIjeyRib25pdG8td2lkdGhzLW5hbWVzcGFjZX11LSN7JGFsaWFzfS0yLzZcIl0sXG4gICAgICAgICAgICAgICAgW2NsYXNzfj1cIiN7JGJvbml0by13aWR0aHMtbmFtZXNwYWNlfXUtI3skYWxpYXN9LTMvOVwiXSxcbiAgICAgICAgICAgICAgICBbY2xhc3N+PVwiI3skYm9uaXRvLXdpZHRocy1uYW1lc3BhY2V9dS0jeyRhbGlhc30tNC8xMlwiXSAgICAgeyB3aWR0aDogMzMuMzMzMzMzMyUgIWltcG9ydGFudDsgfVxuICAgICAgICAgICAgICAgIFtjbGFzc349XCIjeyRib25pdG8td2lkdGhzLW5hbWVzcGFjZX11LSN7JGFsaWFzfS0yLzNcIl0sXG4gICAgICAgICAgICAgICAgW2NsYXNzfj1cIiN7JGJvbml0by13aWR0aHMtbmFtZXNwYWNlfXUtI3skYWxpYXN9LTQvNlwiXSxcbiAgICAgICAgICAgICAgICBbY2xhc3N+PVwiI3skYm9uaXRvLXdpZHRocy1uYW1lc3BhY2V9dS0jeyRhbGlhc30tNi85XCJdLFxuICAgICAgICAgICAgICAgIFtjbGFzc349XCIjeyRib25pdG8td2lkdGhzLW5hbWVzcGFjZX11LSN7JGFsaWFzfS04LzEyXCJdICAgICB7IHdpZHRoOiA2Ni42NjY2NjY2JSAhaW1wb3J0YW50OyB9XG5cbiAgICAgICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAgICAgKiBRdWFydGVycy5cbiAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICBbY2xhc3N+PVwiI3skYm9uaXRvLXdpZHRocy1uYW1lc3BhY2V9dS0jeyRhbGlhc30tMS80XCJdLFxuICAgICAgICAgICAgICAgIFtjbGFzc349XCIjeyRib25pdG8td2lkdGhzLW5hbWVzcGFjZX11LSN7JGFsaWFzfS0yLzhcIl0sXG4gICAgICAgICAgICAgICAgW2NsYXNzfj1cIiN7JGJvbml0by13aWR0aHMtbmFtZXNwYWNlfXUtI3skYWxpYXN9LTMvMTJcIl0gICAgIHsgd2lkdGg6IDI1JSAhaW1wb3J0YW50OyB9XG4gICAgICAgICAgICAgICAgW2NsYXNzfj1cIiN7JGJvbml0by13aWR0aHMtbmFtZXNwYWNlfXUtI3skYWxpYXN9LTMvNFwiXSxcbiAgICAgICAgICAgICAgICBbY2xhc3N+PVwiI3skYm9uaXRvLXdpZHRocy1uYW1lc3BhY2V9dS0jeyRhbGlhc30tNi84XCJdLFxuICAgICAgICAgICAgICAgIFtjbGFzc349XCIjeyRib25pdG8td2lkdGhzLW5hbWVzcGFjZX11LSN7JGFsaWFzfS05LzEyXCJdICAgICB7IHdpZHRoOiA3NSUgIWltcG9ydGFudDsgfVxuXG4gICAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgICAgICogRmlmdGhzLlxuICAgICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAgIFtjbGFzc349XCIjeyRib25pdG8td2lkdGhzLW5hbWVzcGFjZX11LSN7JGFsaWFzfS0xLzVcIl0sXG4gICAgICAgICAgICAgICAgW2NsYXNzfj1cIiN7JGJvbml0by13aWR0aHMtbmFtZXNwYWNlfXUtI3skYWxpYXN9LTIvMTBcIl0gICAgIHsgd2lkdGg6IDIwJSAhaW1wb3J0YW50OyB9XG4gICAgICAgICAgICAgICAgW2NsYXNzfj1cIiN7JGJvbml0by13aWR0aHMtbmFtZXNwYWNlfXUtI3skYWxpYXN9LTIvNVwiXSxcbiAgICAgICAgICAgICAgICBbY2xhc3N+PVwiI3skYm9uaXRvLXdpZHRocy1uYW1lc3BhY2V9dS0jeyRhbGlhc30tNC8xMFwiXSAgICAgeyB3aWR0aDogNDAlICFpbXBvcnRhbnQ7IH1cbiAgICAgICAgICAgICAgICBbY2xhc3N+PVwiI3skYm9uaXRvLXdpZHRocy1uYW1lc3BhY2V9dS0jeyRhbGlhc30tMy81XCJdLFxuICAgICAgICAgICAgICAgIFtjbGFzc349XCIjeyRib25pdG8td2lkdGhzLW5hbWVzcGFjZX11LSN7JGFsaWFzfS02LzEwXCJdICAgICB7IHdpZHRoOiA2MCUgIWltcG9ydGFudDsgfVxuICAgICAgICAgICAgICAgIFtjbGFzc349XCIjeyRib25pdG8td2lkdGhzLW5hbWVzcGFjZX11LSN7JGFsaWFzfS00LzVcIl0sXG4gICAgICAgICAgICAgICAgW2NsYXNzfj1cIiN7JGJvbml0by13aWR0aHMtbmFtZXNwYWNlfXUtI3skYWxpYXN9LTgvMTBcIl0gICAgIHsgd2lkdGg6IDgwJSAhaW1wb3J0YW50OyB9XG5cbiAgICAgICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAgICAgKiBTaXh0aHMuXG4gICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgW2NsYXNzfj1cIiN7JGJvbml0by13aWR0aHMtbmFtZXNwYWNlfXUtI3skYWxpYXN9LTEvNlwiXSxcbiAgICAgICAgICAgICAgICBbY2xhc3N+PVwiI3skYm9uaXRvLXdpZHRocy1uYW1lc3BhY2V9dS0jeyRhbGlhc30tMi8xMlwiXSAgICAgeyB3aWR0aDogMTYuNjY2NjY2NiUgIWltcG9ydGFudDsgfVxuICAgICAgICAgICAgICAgIFtjbGFzc349XCIjeyRib25pdG8td2lkdGhzLW5hbWVzcGFjZX11LSN7JGFsaWFzfS01LzZcIl0sXG4gICAgICAgICAgICAgICAgW2NsYXNzfj1cIiN7JGJvbml0by13aWR0aHMtbmFtZXNwYWNlfXUtI3skYWxpYXN9LTEwLzEyXCJdICAgIHsgd2lkdGg6IDgzLjMzMzMzMzMlICFpbXBvcnRhbnQ7IH1cbiAgICAgICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAgICAgKiBFaWdodGhzLlxuICAgICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAgIFtjbGFzc349XCIjeyRib25pdG8td2lkdGhzLW5hbWVzcGFjZX11LSN7JGFsaWFzfS0xLzhcIl0gICAgICB7IHdpZHRoOiAxMi41JSAhaW1wb3J0YW50OyB9XG4gICAgICAgICAgICAgICAgW2NsYXNzfj1cIiN7JGJvbml0by13aWR0aHMtbmFtZXNwYWNlfXUtI3skYWxpYXN9LTMvOFwiXSAgICAgIHsgd2lkdGg6IDM3LjUlICFpbXBvcnRhbnQ7IH1cbiAgICAgICAgICAgICAgICBbY2xhc3N+PVwiI3skYm9uaXRvLXdpZHRocy1uYW1lc3BhY2V9dS0jeyRhbGlhc30tNS84XCJdICAgICAgeyB3aWR0aDogNjIuNSUgIWltcG9ydGFudDsgfVxuICAgICAgICAgICAgICAgIFtjbGFzc349XCIjeyRib25pdG8td2lkdGhzLW5hbWVzcGFjZX11LSN7JGFsaWFzfS03LzhcIl0gICAgICB7IHdpZHRoOiA4Ny41JSAhaW1wb3J0YW50OyB9XG5cbiAgICAgICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAgICAgKiBOaW50aHMuXG4gICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgW2NsYXNzfj1cIiN7JGJvbml0by13aWR0aHMtbmFtZXNwYWNlfXUtI3skYWxpYXN9LTEvOVwiXSAgICAgIHsgd2lkdGg6IDExLjExMTExMTElICFpbXBvcnRhbnQ7IH1cbiAgICAgICAgICAgICAgICBbY2xhc3N+PVwiI3skYm9uaXRvLXdpZHRocy1uYW1lc3BhY2V9dS0jeyRhbGlhc30tMi85XCJdICAgICAgeyB3aWR0aDogMjIuMjIyMjIyMiUgIWltcG9ydGFudDsgfVxuICAgICAgICAgICAgICAgIFtjbGFzc349XCIjeyRib25pdG8td2lkdGhzLW5hbWVzcGFjZX11LSN7JGFsaWFzfS00LzlcIl0gICAgICB7IHdpZHRoOiA0NC40NDQ0NDQ0JSAhaW1wb3J0YW50OyB9XG4gICAgICAgICAgICAgICAgW2NsYXNzfj1cIiN7JGJvbml0by13aWR0aHMtbmFtZXNwYWNlfXUtI3skYWxpYXN9LTUvOVwiXSAgICAgIHsgd2lkdGg6IDU1LjU1NTU1NTUlICFpbXBvcnRhbnQ7IH1cbiAgICAgICAgICAgICAgICBbY2xhc3N+PVwiI3skYm9uaXRvLXdpZHRocy1uYW1lc3BhY2V9dS0jeyRhbGlhc30tNy85XCJdICAgICAgeyB3aWR0aDogNzcuNzc3Nzc3NyUgIWltcG9ydGFudDsgfVxuICAgICAgICAgICAgICAgIFtjbGFzc349XCIjeyRib25pdG8td2lkdGhzLW5hbWVzcGFjZX11LSN7JGFsaWFzfS04LzlcIl0gICAgICB7IHdpZHRoOiA4OC44ODg4ODg4JSAhaW1wb3J0YW50OyB9XG5cbiAgICAgICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAgICAgKiBUZW50aHMuXG4gICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgW2NsYXNzfj1cIiN7JGJvbml0by13aWR0aHMtbmFtZXNwYWNlfXUtI3skYWxpYXN9LTEvMTBcIl0gICAgIHsgd2lkdGg6IDEwJSAhaW1wb3J0YW50OyB9XG4gICAgICAgICAgICAgICAgW2NsYXNzfj1cIiN7JGJvbml0by13aWR0aHMtbmFtZXNwYWNlfXUtI3skYWxpYXN9LTMvMTBcIl0gICAgIHsgd2lkdGg6IDMwJSAhaW1wb3J0YW50OyB9XG4gICAgICAgICAgICAgICAgW2NsYXNzfj1cIiN7JGJvbml0by13aWR0aHMtbmFtZXNwYWNlfXUtI3skYWxpYXN9LTcvMTBcIl0gICAgIHsgd2lkdGg6IDcwJSAhaW1wb3J0YW50OyB9XG4gICAgICAgICAgICAgICAgW2NsYXNzfj1cIiN7JGJvbml0by13aWR0aHMtbmFtZXNwYWNlfXUtI3skYWxpYXN9LTkvMTBcIl0gICAgIHsgd2lkdGg6IDkwJSAhaW1wb3J0YW50OyB9XG5cbiAgICAgICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAgICAgKiBUd2VsZnRocy5cbiAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICBbY2xhc3N+PVwiI3skYm9uaXRvLXdpZHRocy1uYW1lc3BhY2V9dS0jeyRhbGlhc30tMS8xMlwiXSAgICAgeyB3aWR0aDogIDguMzMzMzMzMyUgIWltcG9ydGFudDsgfVxuICAgICAgICAgICAgICAgIFtjbGFzc349XCIjeyRib25pdG8td2lkdGhzLW5hbWVzcGFjZX11LSN7JGFsaWFzfS01LzEyXCJdICAgICB7IHdpZHRoOiA0MS42NjY2NjY2JSAhaW1wb3J0YW50OyB9XG4gICAgICAgICAgICAgICAgW2NsYXNzfj1cIiN7JGJvbml0by13aWR0aHMtbmFtZXNwYWNlfXUtI3skYWxpYXN9LTcvMTJcIl0gICAgIHsgd2lkdGg6IDU4LjMzMzMzMzMlICFpbXBvcnRhbnQ7IH1cbiAgICAgICAgICAgICAgICBbY2xhc3N+PVwiI3skYm9uaXRvLXdpZHRocy1uYW1lc3BhY2V9dS0jeyRhbGlhc30tMTEvMTJcIl0gICAgeyB3aWR0aDogOTEuNjY2NjY2NiUgIWltcG9ydGFudDsgfVxuXG4gICAgICAgICAgICB9IC8vIENsb3NlIG1lZGlhIHF1ZXJ5LlxuXG4gICAgICAgIH0gLy8gQ2xvc2UgcmV0aW5hIGNoZWNrLlxuXG4gICAgfSAvLyBDbG9zZSBicmVha3BvaW50cyBsb29wLlxuXG59IC8vIENsb3NlIGZyYWN0aW9ucyBAaWYuXG5cblxuXG5cblxuQGVsc2Uge1xuXG4gICAgQGVhY2ggJGJyZWFrcG9pbnQgaW4gJGJyZWFrcG9pbnRzIHtcblxuICAgICAgICAkYWxpYXM6ICAgICBudGgoJGJyZWFrcG9pbnQsIDEpO1xuICAgICAgICAkY29uZGl0aW9uOiBudGgoJGJyZWFrcG9pbnQsIDIpO1xuXG4gICAgICAgIC8vIFRoaXMgaXNu4oCZdCBpZGVhbCwgYnV0IHdlIGRlZmluaXRlbHkgZG9u4oCZdCB3YW50IHRvIGdlbmVyYXRlIHdpZHRoc1xuICAgICAgICAvLyBmb3IgcmV0aW5hIGRldmljZXMuIEV4Y2x1ZGUgcmV0aW5hIG1lZGlhLXFldXJpZXMgbWFudWFsbHkuXG4gICAgICAgIEBpZiAoJGFsaWFzICE9IHJldGluYSkge1xuXG4gICAgICAgICAgICBAaW5jbHVkZSBtZWRpYS1xdWVyeSgkYWxpYXMpIHtcblxuICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICAgICAqIFdob2xlLlxuICAgICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAgIC4jeyRib25pdG8td2lkdGhzLW5hbWVzcGFjZX11LSN7JGFsaWFzfS1vbmUtd2hvbGUgICAgICAgICAgeyB3aWR0aDogMTAwJSAhaW1wb3J0YW50OyB9XG5cbiAgICAgICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAgICAgKiBIYWx2ZXMuXG4gICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgLiN7JGJvbml0by13aWR0aHMtbmFtZXNwYWNlfXUtI3skYWxpYXN9LW9uZS1oYWxmLFxuICAgICAgICAgICAgICAgIC4jeyRib25pdG8td2lkdGhzLW5hbWVzcGFjZX11LSN7JGFsaWFzfS10d28tcXVhcnRlcnMsXG4gICAgICAgICAgICAgICAgLiN7JGJvbml0by13aWR0aHMtbmFtZXNwYWNlfXUtI3skYWxpYXN9LXRocmVlLXNpeHRocyxcbiAgICAgICAgICAgICAgICAuI3skYm9uaXRvLXdpZHRocy1uYW1lc3BhY2V9dS0jeyRhbGlhc30tZm91ci1laWdodGhzLFxuICAgICAgICAgICAgICAgIC4jeyRib25pdG8td2lkdGhzLW5hbWVzcGFjZX11LSN7JGFsaWFzfS1maXZlLXRlbnRocyxcbiAgICAgICAgICAgICAgICAuI3skYm9uaXRvLXdpZHRocy1uYW1lc3BhY2V9dS0jeyRhbGlhc30tc2l4LXR3ZWxmdGhzICAgICAgIHsgd2lkdGg6IDUwJSAhaW1wb3J0YW50OyB9XG5cbiAgICAgICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAgICAgKiBUaGlyZHMuXG4gICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgLiN7JGJvbml0by13aWR0aHMtbmFtZXNwYWNlfXUtI3skYWxpYXN9LW9uZS10aGlyZCxcbiAgICAgICAgICAgICAgICAuI3skYm9uaXRvLXdpZHRocy1uYW1lc3BhY2V9dS0jeyRhbGlhc30tdHdvLXNpeHRocyxcbiAgICAgICAgICAgICAgICAuI3skYm9uaXRvLXdpZHRocy1uYW1lc3BhY2V9dS0jeyRhbGlhc30tdGhyZWUtbmludGhzLFxuICAgICAgICAgICAgICAgIC4jeyRib25pdG8td2lkdGhzLW5hbWVzcGFjZX11LSN7JGFsaWFzfS1mb3VyLXR3ZWxmdGhzICAgICAgeyB3aWR0aDogMzMuMzMzMzMzMyUgIWltcG9ydGFudDsgfVxuICAgICAgICAgICAgICAgIC4jeyRib25pdG8td2lkdGhzLW5hbWVzcGFjZX11LSN7JGFsaWFzfS10d28tdGhpcmRzLFxuICAgICAgICAgICAgICAgIC4jeyRib25pdG8td2lkdGhzLW5hbWVzcGFjZX11LSN7JGFsaWFzfS1mb3VyLXNpeHRocyxcbiAgICAgICAgICAgICAgICAuI3skYm9uaXRvLXdpZHRocy1uYW1lc3BhY2V9dS0jeyRhbGlhc30tc2l4LW5pbnRocyxcbiAgICAgICAgICAgICAgICAuI3skYm9uaXRvLXdpZHRocy1uYW1lc3BhY2V9dS0jeyRhbGlhc30tZWlnaHQtdHdlbGZ0aHMgICAgIHsgd2lkdGg6IDY2LjY2NjY2NjYlICFpbXBvcnRhbnQ7IH1cblxuICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICAgICAqIFF1YXJ0ZXJzLlxuICAgICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAgIC4jeyRib25pdG8td2lkdGhzLW5hbWVzcGFjZX11LSN7JGFsaWFzfS1vbmUtcXVhcnRlcixcbiAgICAgICAgICAgICAgICAuI3skYm9uaXRvLXdpZHRocy1uYW1lc3BhY2V9dS0jeyRhbGlhc30tdHdvLWVpZ2h0aHMsXG4gICAgICAgICAgICAgICAgLiN7JGJvbml0by13aWR0aHMtbmFtZXNwYWNlfXUtI3skYWxpYXN9LXRocmVlLXR3ZWxmdGhzICAgICB7IHdpZHRoOiAyNSUgIWltcG9ydGFudDsgfVxuICAgICAgICAgICAgICAgIC4jeyRib25pdG8td2lkdGhzLW5hbWVzcGFjZX11LSN7JGFsaWFzfS10aHJlZS1xdWFydGVycyxcbiAgICAgICAgICAgICAgICAuI3skYm9uaXRvLXdpZHRocy1uYW1lc3BhY2V9dS0jeyRhbGlhc30tc2l4LWVpZ2h0aHMsXG4gICAgICAgICAgICAgICAgLiN7JGJvbml0by13aWR0aHMtbmFtZXNwYWNlfXUtI3skYWxpYXN9LW5pbmUtdHdlbGZ0aHMgICAgICB7IHdpZHRoOiA3NSUgIWltcG9ydGFudDsgfVxuXG4gICAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgICAgICogRmlmdGhzLlxuICAgICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAgIC4jeyRib25pdG8td2lkdGhzLW5hbWVzcGFjZX11LSN7JGFsaWFzfS1vbmUtZmlmdGgsXG4gICAgICAgICAgICAgICAgLiN7JGJvbml0by13aWR0aHMtbmFtZXNwYWNlfXUtI3skYWxpYXN9LXR3by10ZW50aHMgICAgICAgICB7IHdpZHRoOiAyMCUgIWltcG9ydGFudDsgfVxuICAgICAgICAgICAgICAgIC4jeyRib25pdG8td2lkdGhzLW5hbWVzcGFjZX11LSN7JGFsaWFzfS10d28tZmlmdGhzLFxuICAgICAgICAgICAgICAgIC4jeyRib25pdG8td2lkdGhzLW5hbWVzcGFjZX11LSN7JGFsaWFzfS1mb3VyLXRlbnRocyAgICAgICAgeyB3aWR0aDogNDAlICFpbXBvcnRhbnQ7IH1cbiAgICAgICAgICAgICAgICAuI3skYm9uaXRvLXdpZHRocy1uYW1lc3BhY2V9dS0jeyRhbGlhc30tdGhyZWUtZmlmdGhzLFxuICAgICAgICAgICAgICAgIC4jeyRib25pdG8td2lkdGhzLW5hbWVzcGFjZX11LSN7JGFsaWFzfS1zaXgtdGVudGhzICAgICAgICAgeyB3aWR0aDogNjAlICFpbXBvcnRhbnQ7IH1cbiAgICAgICAgICAgICAgICAuI3skYm9uaXRvLXdpZHRocy1uYW1lc3BhY2V9dS0jeyRhbGlhc30tZm91ci1maWZ0aHMsXG4gICAgICAgICAgICAgICAgLiN7JGJvbml0by13aWR0aHMtbmFtZXNwYWNlfXUtI3skYWxpYXN9LWVpZ2h0LXRlbnRocyAgICAgICB7IHdpZHRoOiA4MCUgIWltcG9ydGFudDsgfVxuXG4gICAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgICAgICogU2l4dGhzLlxuICAgICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAgIC4jeyRib25pdG8td2lkdGhzLW5hbWVzcGFjZX11LSN7JGFsaWFzfS1vbmUtc2l4dGgsXG4gICAgICAgICAgICAgICAgLiN7JGJvbml0by13aWR0aHMtbmFtZXNwYWNlfXUtI3skYWxpYXN9LXR3by10d2VsZnRocyAgICAgICB7IHdpZHRoOiAxNi42NjY2NjY2JSAhaW1wb3J0YW50OyB9XG4gICAgICAgICAgICAgICAgLiN7JGJvbml0by13aWR0aHMtbmFtZXNwYWNlfXUtI3skYWxpYXN9LWZpdmUtc2l4dGhzLFxuICAgICAgICAgICAgICAgIC4jeyRib25pdG8td2lkdGhzLW5hbWVzcGFjZX11LSN7JGFsaWFzfS10ZW4tdHdlbGZ0aHMgICAgICAgeyB3aWR0aDogODMuMzMzMzMzMyUgIWltcG9ydGFudDsgfVxuXG4gICAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgICAgICogRWlnaHRocy5cbiAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICAuI3skYm9uaXRvLXdpZHRocy1uYW1lc3BhY2V9dS0jeyRhbGlhc30tb25lLWVpZ2h0aCAgICAgICAgIHsgd2lkdGg6IDEyLjUlICFpbXBvcnRhbnQ7IH1cbiAgICAgICAgICAgICAgICAuI3skYm9uaXRvLXdpZHRocy1uYW1lc3BhY2V9dS0jeyRhbGlhc30tdGhyZWUtZWlnaHRocyAgICAgIHsgd2lkdGg6IDM3LjUlICFpbXBvcnRhbnQ7IH1cbiAgICAgICAgICAgICAgICAuI3skYm9uaXRvLXdpZHRocy1uYW1lc3BhY2V9dS0jeyRhbGlhc30tZml2ZS1laWdodGhzICAgICAgIHsgd2lkdGg6IDYyLjUlICFpbXBvcnRhbnQ7IH1cbiAgICAgICAgICAgICAgICAuI3skYm9uaXRvLXdpZHRocy1uYW1lc3BhY2V9dS0jeyRhbGlhc30tc2V2ZW4tZWlnaHRocyAgICAgIHsgd2lkdGg6IDg3LjUlICFpbXBvcnRhbnQ7IH1cblxuICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICAgICAqIE5pbnRocy5cbiAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICAuI3skYm9uaXRvLXdpZHRocy1uYW1lc3BhY2V9dS0jeyRhbGlhc30tb25lLW5pbnRoICAgICAgICAgIHsgd2lkdGg6IDExLjExMTExMTElICFpbXBvcnRhbnQ7IH1cbiAgICAgICAgICAgICAgICAuI3skYm9uaXRvLXdpZHRocy1uYW1lc3BhY2V9dS0jeyRhbGlhc30tdHdvLW5pbnRocyAgICAgICAgIHsgd2lkdGg6IDIyLjIyMjIyMjIlICFpbXBvcnRhbnQ7IH1cbiAgICAgICAgICAgICAgICAuI3skYm9uaXRvLXdpZHRocy1uYW1lc3BhY2V9dS0jeyRhbGlhc30tZm91ci1uaW50aHMgICAgICAgIHsgd2lkdGg6IDQ0LjQ0NDQ0NDQlICFpbXBvcnRhbnQ7IH1cbiAgICAgICAgICAgICAgICAuI3skYm9uaXRvLXdpZHRocy1uYW1lc3BhY2V9dS0jeyRhbGlhc30tZml2ZS1uaW50aHMgICAgICAgIHsgd2lkdGg6IDU1LjU1NTU1NTUlICFpbXBvcnRhbnQ7IH1cbiAgICAgICAgICAgICAgICAuI3skYm9uaXRvLXdpZHRocy1uYW1lc3BhY2V9dS0jeyRhbGlhc30tc2V2ZW4tbmludGhzICAgICAgIHsgd2lkdGg6IDc3Ljc3Nzc3NzclICFpbXBvcnRhbnQ7IH1cbiAgICAgICAgICAgICAgICAuI3skYm9uaXRvLXdpZHRocy1uYW1lc3BhY2V9dS0jeyRhbGlhc30tZWlnaHQtbmludGhzICAgICAgIHsgd2lkdGg6IDg4Ljg4ODg4ODglICFpbXBvcnRhbnQ7IH1cblxuICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICAgICAqIFRlbnRocy5cbiAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICAuI3skYm9uaXRvLXdpZHRocy1uYW1lc3BhY2V9dS0jeyRhbGlhc30tb25lLXRlbnRoICAgICAgICAgIHsgd2lkdGg6IDEwJSAhaW1wb3J0YW50OyB9XG4gICAgICAgICAgICAgICAgLiN7JGJvbml0by13aWR0aHMtbmFtZXNwYWNlfXUtI3skYWxpYXN9LXRocmVlLXRlbnRocyAgICAgICB7IHdpZHRoOiAzMCUgIWltcG9ydGFudDsgfVxuICAgICAgICAgICAgICAgIC4jeyRib25pdG8td2lkdGhzLW5hbWVzcGFjZX11LSN7JGFsaWFzfS1zZXZlbi10ZW50aHMgICAgICAgeyB3aWR0aDogNzAlICFpbXBvcnRhbnQ7IH1cbiAgICAgICAgICAgICAgICAuI3skYm9uaXRvLXdpZHRocy1uYW1lc3BhY2V9dS0jeyRhbGlhc30tbmluZS10ZW50aHMgICAgICAgIHsgd2lkdGg6IDkwJSAhaW1wb3J0YW50OyB9XG5cbiAgICAgICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAgICAgKiBUd2VsZnRocy5cbiAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICAuI3skYm9uaXRvLXdpZHRocy1uYW1lc3BhY2V9dS0jeyRhbGlhc30tb25lLXR3ZWxmdGggICAgICAgIHsgd2lkdGg6ICA4LjMzMzMzMzMlICFpbXBvcnRhbnQ7IH1cbiAgICAgICAgICAgICAgICAuI3skYm9uaXRvLXdpZHRocy1uYW1lc3BhY2V9dS0jeyRhbGlhc30tZml2ZS10d2VsZnRocyAgICAgIHsgd2lkdGg6IDQxLjY2NjY2NjYlICFpbXBvcnRhbnQ7IH1cbiAgICAgICAgICAgICAgICAuI3skYm9uaXRvLXdpZHRocy1uYW1lc3BhY2V9dS0jeyRhbGlhc30tc2V2ZW4tdHdlbGZ0aHMgICAgIHsgd2lkdGg6IDU4LjMzMzMzMzMlICFpbXBvcnRhbnQ7IH1cbiAgICAgICAgICAgICAgICAuI3skYm9uaXRvLXdpZHRocy1uYW1lc3BhY2V9dS0jeyRhbGlhc30tZWxldmVuLXR3ZWxmdGhzICAgIHsgd2lkdGg6IDkxLjY2NjY2NjYlICFpbXBvcnRhbnQ7IH1cblxuICAgICAgICAgICAgfSAvLyBDbG9zZSBtZWRpYSBxdWVyeS5cblxuICAgICAgICB9IC8vIENsb3NlIHJldGluYSBjaGVjay5cblxuICAgIH0gLy8gQ2xvc2UgYnJlYWtwb2ludHMgbG9vcC5cblxufSAvLyBDbG9zZSBmcmFjdGlvbnMgQGlmLiIsIi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKlxcXG4gICAgI1NQQUNJTkdcblxcKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbi8qKlxuICogTWFyZ2luIGFuZCBwYWRkaW5nIGhlbHBlciBjbGFzc2VzLiBVc2UgdGhlc2UgdG8gdHdlYWsgbGF5b3V0IG9uIGEgbWljcm9cbiAqIGxldmVsLlxuICpcbiAqIGAuKG18cCkodHxyfGJ8bHxofHYpKC18K3wwKSB7fWAgPSBtYXJnaW4vcGFkZGluZyB0b3AvcmlnaHQvYm90dG9tL2xlZnQvaG9yaXpvbnRhbC92ZXJ0aWNhbCBsZXNzL21vcmUvbm9uZVxuICovXG5cbi8vIFByZWRlZmluZSB0aGUgdmFyaWFibGVzIGJlbG93IGluIG9yZGVyIHRvIGFsdGVyIGFuZCBlbmFibGUgc3BlY2lmaWMgZmVhdHVyZXMuXG4kYm9uaXRvLXNwYWNpbmctbmFtZXNwYWNlOiAgICAgICAgICAgICAgICRib25pdG8tbmFtZXNwYWNlICFkZWZhdWx0O1xuXG4kYm9uaXRvLW1hcmdpbjogICAgICAgICAgICAgICAgICAgICAgICAgICRib25pdG8tYmFzZS1zcGFjaW5nLXVuaXQgIWRlZmF1bHQ7XG4kYm9uaXRvLW1hcmdpbi0tc21hbGw6ICAgICAgICAgICAgICAgICAgICAgICBoYWx2ZSgkYm9uaXRvLW1hcmdpbikgIWRlZmF1bHQ7XG4kYm9uaXRvLW1hcmdpbi0tdGlueTogICAgICAgICAgICAgICAgICAgICAgcXVhcnRlcigkYm9uaXRvLW1hcmdpbikgIWRlZmF1bHQ7XG4kYm9uaXRvLW1hcmdpbi0tbGFyZ2U6ICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSgkYm9uaXRvLW1hcmdpbikgIWRlZmF1bHQ7XG4kYm9uaXRvLW1hcmdpbi0taHVnZTogICAgICAgICAgICAgICAgICAgIHF1YWRydXBsZSgkYm9uaXRvLW1hcmdpbikgIWRlZmF1bHQ7XG5cbiRib25pdG8tcGFkZGluZzogICAgICAgICAgICAgICAgICAgICAgICAgJGJvbml0by1iYXNlLXNwYWNpbmctdW5pdCAhZGVmYXVsdDtcbiRib25pdG8tcGFkZGluZy0tc21hbGw6ICAgICAgICAgICAgICAgICAgICAgIGhhbHZlKCRib25pdG8tcGFkZGluZykgIWRlZmF1bHQ7XG4kYm9uaXRvLXBhZGRpbmctLXRpbnk6ICAgICAgICAgICAgICAgICAgICAgcXVhcnRlcigkYm9uaXRvLXBhZGRpbmcpICFkZWZhdWx0O1xuJGJvbml0by1wYWRkaW5nLS1sYXJnZTogICAgICAgICAgICAgICAgICAgICBkb3VibGUoJGJvbml0by1wYWRkaW5nKSAhZGVmYXVsdDtcbiRib25pdG8tcGFkZGluZy0taHVnZTogICAgICAgICAgICAgICAgICAgcXVhZHJ1cGxlKCRib25pdG8tcGFkZGluZykgIWRlZmF1bHQ7XG5cbiRib25pdG8tZW5hYmxlLW1hcmdpbnM6ICAgICAgICAgICAgICAgICAgZmFsc2UgIWRlZmF1bHQ7XG4kYm9uaXRvLWVuYWJsZS1tYXJnaW5zLS10aW55OiAgICAgICAgICAgIGZhbHNlICFkZWZhdWx0O1xuJGJvbml0by1lbmFibGUtbWFyZ2lucy0tc21hbGw6ICAgICAgICAgICBmYWxzZSAhZGVmYXVsdDtcbiRib25pdG8tZW5hYmxlLW1hcmdpbnMtLWxhcmdlOiAgICAgICAgICAgZmFsc2UgIWRlZmF1bHQ7XG4kYm9uaXRvLWVuYWJsZS1tYXJnaW5zLS1odWdlOiAgICAgICAgICAgIGZhbHNlICFkZWZhdWx0O1xuXG4kYm9uaXRvLWVuYWJsZS1tYXJnaW5zLS1uZWdhdGl2ZTogICAgICAgIGZhbHNlICFkZWZhdWx0O1xuJGJvbml0by1lbmFibGUtbWFyZ2lucy0tbmVnYXRpdmUtdGlueTogICBmYWxzZSAhZGVmYXVsdDtcbiRib25pdG8tZW5hYmxlLW1hcmdpbnMtLW5lZ2F0aXZlLXNtYWxsOiAgZmFsc2UgIWRlZmF1bHQ7XG4kYm9uaXRvLWVuYWJsZS1tYXJnaW5zLS1uZWdhdGl2ZS1sYXJnZTogIGZhbHNlICFkZWZhdWx0O1xuJGJvbml0by1lbmFibGUtbWFyZ2lucy0tbmVnYXRpdmUtaHVnZTogICBmYWxzZSAhZGVmYXVsdDtcblxuJGJvbml0by1lbmFibGUtbWFyZ2lucy0tbm9uZTogICAgICAgICAgICBmYWxzZSAhZGVmYXVsdDtcblxuJGJvbml0by1lbmFibGUtcGFkZGluZ3M6ICAgICAgICAgICAgICAgICBmYWxzZSAhZGVmYXVsdDtcbiRib25pdG8tZW5hYmxlLXBhZGRpbmdzLS10aW55OiAgICAgICAgICAgZmFsc2UgIWRlZmF1bHQ7XG4kYm9uaXRvLWVuYWJsZS1wYWRkaW5ncy0tc21hbGw6ICAgICAgICAgIGZhbHNlICFkZWZhdWx0O1xuJGJvbml0by1lbmFibGUtcGFkZGluZ3MtLWxhcmdlOiAgICAgICAgICBmYWxzZSAhZGVmYXVsdDtcbiRib25pdG8tZW5hYmxlLXBhZGRpbmdzLS1odWdlOiAgICAgICAgICAgZmFsc2UgIWRlZmF1bHQ7XG5cbiRib25pdG8tZW5hYmxlLXBhZGRpbmdzLS1ub25lOiAgICAgICAgICAgZmFsc2UgIWRlZmF1bHQ7XG5cblxuXG5cblxuQGlmICgkYm9uaXRvLWVuYWJsZS1tYXJnaW5zID09IHRydWUpIHtcblxuICAgIC8qKlxuICAgICAqIE1hcmdpbiBoZWxwZXIgY2xhc3Nlcy5cbiAgICAgKlxuICAgICAqIEFkZCBtYXJnaW5zLlxuICAgICAqL1xuXG4gICAgLiN7JGJvbml0by1zcGFjaW5nLW5hbWVzcGFjZX11LW0gICAgIHsgbWFyZ2luOiAgICAgICAgICAgJGJvbml0by1tYXJnaW4gIWltcG9ydGFudDsgfVxuICAgIC4jeyRib25pdG8tc3BhY2luZy1uYW1lc3BhY2V9dS1tdCAgICB7IG1hcmdpbi10b3A6ICAgICAgICRib25pdG8tbWFyZ2luICFpbXBvcnRhbnQ7IH1cbiAgICAuI3skYm9uaXRvLXNwYWNpbmctbmFtZXNwYWNlfXUtbXIgICAgeyBtYXJnaW4tcmlnaHQ6ICAgICAkYm9uaXRvLW1hcmdpbiAhaW1wb3J0YW50OyB9XG4gICAgLiN7JGJvbml0by1zcGFjaW5nLW5hbWVzcGFjZX11LW1iICAgIHsgbWFyZ2luLWJvdHRvbTogICAgJGJvbml0by1tYXJnaW4gIWltcG9ydGFudDsgfVxuICAgIC4jeyRib25pdG8tc3BhY2luZy1uYW1lc3BhY2V9dS1tbCAgICB7IG1hcmdpbi1sZWZ0OiAgICAgICRib25pdG8tbWFyZ2luICFpbXBvcnRhbnQ7IH1cbiAgICAuI3skYm9uaXRvLXNwYWNpbmctbmFtZXNwYWNlfXUtbWggICAgeyBtYXJnaW4tcmlnaHQ6ICAgICAkYm9uaXRvLW1hcmdpbiAhaW1wb3J0YW50OyBtYXJnaW4tbGVmdDogICAgICAkYm9uaXRvLW1hcmdpbiAhaW1wb3J0YW50OyB9XG4gICAgLiN7JGJvbml0by1zcGFjaW5nLW5hbWVzcGFjZX11LW12ICAgIHsgbWFyZ2luLXRvcDogICAgICAgJGJvbml0by1tYXJnaW4gIWltcG9ydGFudDsgbWFyZ2luLWJvdHRvbTogICAgJGJvbml0by1tYXJnaW4gIWltcG9ydGFudDsgfVxuXG59XG5cblxuQGlmICgkYm9uaXRvLWVuYWJsZS1tYXJnaW5zLS10aW55ID09IHRydWUpIHtcblxuICAgIC8qKlxuICAgICAqIEFkZCB0aW55IG1hcmdpbnMuXG4gICAgICovXG5cbiAgICAuI3skYm9uaXRvLXNwYWNpbmctbmFtZXNwYWNlfXUtbS0tICAgeyBtYXJnaW46ICAgICAgICAgICAkYm9uaXRvLW1hcmdpbi0tdGlueSAhaW1wb3J0YW50OyB9XG4gICAgLiN7JGJvbml0by1zcGFjaW5nLW5hbWVzcGFjZX11LW10LS0gIHsgbWFyZ2luLXRvcDogICAgICAgJGJvbml0by1tYXJnaW4tLXRpbnkgIWltcG9ydGFudDsgfVxuICAgIC4jeyRib25pdG8tc3BhY2luZy1uYW1lc3BhY2V9dS1tci0tICB7IG1hcmdpbi1yaWdodDogICAgICRib25pdG8tbWFyZ2luLS10aW55ICFpbXBvcnRhbnQ7IH1cbiAgICAuI3skYm9uaXRvLXNwYWNpbmctbmFtZXNwYWNlfXUtbWItLSAgeyBtYXJnaW4tYm90dG9tOiAgICAkYm9uaXRvLW1hcmdpbi0tdGlueSAhaW1wb3J0YW50OyB9XG4gICAgLiN7JGJvbml0by1zcGFjaW5nLW5hbWVzcGFjZX11LW1sLS0gIHsgbWFyZ2luLWxlZnQ6ICAgICAgJGJvbml0by1tYXJnaW4tLXRpbnkgIWltcG9ydGFudDsgfVxuICAgIC4jeyRib25pdG8tc3BhY2luZy1uYW1lc3BhY2V9dS1taC0tICB7IG1hcmdpbi1yaWdodDogICAgICRib25pdG8tbWFyZ2luLS10aW55ICFpbXBvcnRhbnQ7IG1hcmdpbi1sZWZ0OiAgICAgJGJvbml0by1tYXJnaW4tLXRpbnkgIWltcG9ydGFudDsgfVxuICAgIC4jeyRib25pdG8tc3BhY2luZy1uYW1lc3BhY2V9dS1tdi0tICB7IG1hcmdpbi10b3A6ICAgICAgICRib25pdG8tbWFyZ2luLS10aW55ICFpbXBvcnRhbnQ7IG1hcmdpbi1ib3R0b206ICAgJGJvbml0by1tYXJnaW4tLXRpbnkgIWltcG9ydGFudDsgfVxuXG59XG5cblxuQGlmICgkYm9uaXRvLWVuYWJsZS1tYXJnaW5zLS1zbWFsbCA9PSB0cnVlKSB7XG5cbiAgICAvKipcbiAgICAgKiBBZGQgc21hbGwgbWFyZ2lucy5cbiAgICAgKi9cblxuICAgIC4jeyRib25pdG8tc3BhY2luZy1uYW1lc3BhY2V9dS1tLSAgICB7IG1hcmdpbjogICAgICAgICAgICRib25pdG8tbWFyZ2luLS1zbWFsbCAhaW1wb3J0YW50OyB9XG4gICAgLiN7JGJvbml0by1zcGFjaW5nLW5hbWVzcGFjZX11LW10LSAgIHsgbWFyZ2luLXRvcDogICAgICAgJGJvbml0by1tYXJnaW4tLXNtYWxsICFpbXBvcnRhbnQ7IH1cbiAgICAuI3skYm9uaXRvLXNwYWNpbmctbmFtZXNwYWNlfXUtbXItICAgeyBtYXJnaW4tcmlnaHQ6ICAgICAkYm9uaXRvLW1hcmdpbi0tc21hbGwgIWltcG9ydGFudDsgfVxuICAgIC4jeyRib25pdG8tc3BhY2luZy1uYW1lc3BhY2V9dS1tYi0gICB7IG1hcmdpbi1ib3R0b206ICAgICRib25pdG8tbWFyZ2luLS1zbWFsbCAhaW1wb3J0YW50OyB9XG4gICAgLiN7JGJvbml0by1zcGFjaW5nLW5hbWVzcGFjZX11LW1sLSAgIHsgbWFyZ2luLWxlZnQ6ICAgICAgJGJvbml0by1tYXJnaW4tLXNtYWxsICFpbXBvcnRhbnQ7IH1cbiAgICAuI3skYm9uaXRvLXNwYWNpbmctbmFtZXNwYWNlfXUtbWgtICAgeyBtYXJnaW4tcmlnaHQ6ICAgICAkYm9uaXRvLW1hcmdpbi0tc21hbGwgIWltcG9ydGFudDsgbWFyZ2luLWxlZnQ6ICAgJGJvbml0by1tYXJnaW4tLXNtYWxsICFpbXBvcnRhbnQ7IH1cbiAgICAuI3skYm9uaXRvLXNwYWNpbmctbmFtZXNwYWNlfXUtbXYtICAgeyBtYXJnaW4tdG9wOiAgICAgICAkYm9uaXRvLW1hcmdpbi0tc21hbGwgIWltcG9ydGFudDsgbWFyZ2luLWJvdHRvbTogJGJvbml0by1tYXJnaW4tLXNtYWxsICFpbXBvcnRhbnQ7IH1cblxufVxuXG5cbkBpZiAoJGJvbml0by1lbmFibGUtbWFyZ2lucy0tbGFyZ2UgPT0gdHJ1ZSkge1xuXG4gICAgLyoqXG4gICAgICogQWRkIGxhcmdlIG1hcmdpbnMuXG4gICAgICovXG5cbiAgICAuI3skYm9uaXRvLXNwYWNpbmctbmFtZXNwYWNlfXUtbVxcKyAgIHsgbWFyZ2luOiAgICAgICAgICAgJGJvbml0by1tYXJnaW4tLWxhcmdlICFpbXBvcnRhbnQ7IH1cbiAgICAuI3skYm9uaXRvLXNwYWNpbmctbmFtZXNwYWNlfXUtbXRcXCsgIHsgbWFyZ2luLXRvcDogICAgICAgJGJvbml0by1tYXJnaW4tLWxhcmdlICFpbXBvcnRhbnQ7IH1cbiAgICAuI3skYm9uaXRvLXNwYWNpbmctbmFtZXNwYWNlfXUtbXJcXCsgIHsgbWFyZ2luLXJpZ2h0OiAgICAgJGJvbml0by1tYXJnaW4tLWxhcmdlICFpbXBvcnRhbnQ7IH1cbiAgICAuI3skYm9uaXRvLXNwYWNpbmctbmFtZXNwYWNlfXUtbWJcXCsgIHsgbWFyZ2luLWJvdHRvbTogICAgJGJvbml0by1tYXJnaW4tLWxhcmdlICFpbXBvcnRhbnQ7IH1cbiAgICAuI3skYm9uaXRvLXNwYWNpbmctbmFtZXNwYWNlfXUtbWxcXCsgIHsgbWFyZ2luLWxlZnQ6ICAgICAgJGJvbml0by1tYXJnaW4tLWxhcmdlICFpbXBvcnRhbnQ7IH1cbiAgICAuI3skYm9uaXRvLXNwYWNpbmctbmFtZXNwYWNlfXUtbWhcXCsgIHsgbWFyZ2luLXJpZ2h0OiAgICAgJGJvbml0by1tYXJnaW4tLWxhcmdlICFpbXBvcnRhbnQ7IG1hcmdpbi1sZWZ0OiAgICAgICRib25pdG8tbWFyZ2luLS1sYXJnZSAhaW1wb3J0YW50OyB9XG4gICAgLiN7JGJvbml0by1zcGFjaW5nLW5hbWVzcGFjZX11LW12XFwrICB7IG1hcmdpbi10b3A6ICAgICAgICRib25pdG8tbWFyZ2luLS1sYXJnZSAhaW1wb3J0YW50OyBtYXJnaW4tYm90dG9tOiAgICAkYm9uaXRvLW1hcmdpbi0tbGFyZ2UgIWltcG9ydGFudDsgfVxuXG59XG5cblxuQGlmICgkYm9uaXRvLWVuYWJsZS1tYXJnaW5zLS1odWdlID09IHRydWUpIHtcblxuICAgIC8qKlxuICAgICAqIEFkZCBodWdlIG1hcmdpbnMuXG4gICAgICovXG5cbiAgICAuI3skYm9uaXRvLXNwYWNpbmctbmFtZXNwYWNlfXUtbVxcK1xcKyAgICAgeyBtYXJnaW46ICAgICAgICAgICAkYm9uaXRvLW1hcmdpbi0taHVnZSAhaW1wb3J0YW50OyB9XG4gICAgLiN7JGJvbml0by1zcGFjaW5nLW5hbWVzcGFjZX11LW10XFwrXFwrICAgIHsgbWFyZ2luLXRvcDogICAgICAgJGJvbml0by1tYXJnaW4tLWh1Z2UgIWltcG9ydGFudDsgfVxuICAgIC4jeyRib25pdG8tc3BhY2luZy1uYW1lc3BhY2V9dS1tclxcK1xcKyAgICB7IG1hcmdpbi1yaWdodDogICAgICRib25pdG8tbWFyZ2luLS1odWdlICFpbXBvcnRhbnQ7IH1cbiAgICAuI3skYm9uaXRvLXNwYWNpbmctbmFtZXNwYWNlfXUtbWJcXCtcXCsgICAgeyBtYXJnaW4tYm90dG9tOiAgICAkYm9uaXRvLW1hcmdpbi0taHVnZSAhaW1wb3J0YW50OyB9XG4gICAgLiN7JGJvbml0by1zcGFjaW5nLW5hbWVzcGFjZX11LW1sXFwrXFwrICAgIHsgbWFyZ2luLWxlZnQ6ICAgICAgJGJvbml0by1tYXJnaW4tLWh1Z2UgIWltcG9ydGFudDsgfVxuICAgIC4jeyRib25pdG8tc3BhY2luZy1uYW1lc3BhY2V9dS1taFxcK1xcKyAgICB7IG1hcmdpbi1yaWdodDogICAgICRib25pdG8tbWFyZ2luLS1odWdlICFpbXBvcnRhbnQ7IG1hcmdpbi1sZWZ0OiAgICRib25pdG8tbWFyZ2luLS1odWdlICFpbXBvcnRhbnQ7IH1cbiAgICAuI3skYm9uaXRvLXNwYWNpbmctbmFtZXNwYWNlfXUtbXZcXCtcXCsgICAgeyBtYXJnaW4tdG9wOiAgICAgICAkYm9uaXRvLW1hcmdpbi0taHVnZSAhaW1wb3J0YW50OyBtYXJnaW4tYm90dG9tOiAkYm9uaXRvLW1hcmdpbi0taHVnZSAhaW1wb3J0YW50OyB9XG5cbn1cblxuXG5AaWYgKCRib25pdG8tZW5hYmxlLW1hcmdpbnMtLW5vbmUgPT0gdHJ1ZSkge1xuXG4gICAgLyoqXG4gICAgICogUmVtb3ZlIG1hcmdpbnMuXG4gICAgICovXG5cbiAgICAuI3skYm9uaXRvLXNwYWNpbmctbmFtZXNwYWNlfXUtbTAgICAgeyBtYXJnaW46ICAgICAgICAgICAwICFpbXBvcnRhbnQ7IH1cbiAgICAuI3skYm9uaXRvLXNwYWNpbmctbmFtZXNwYWNlfXUtbXQwICAgeyBtYXJnaW4tdG9wOiAgICAgICAwICFpbXBvcnRhbnQ7IH1cbiAgICAuI3skYm9uaXRvLXNwYWNpbmctbmFtZXNwYWNlfXUtbXIwICAgeyBtYXJnaW4tcmlnaHQ6ICAgICAwICFpbXBvcnRhbnQ7IH1cbiAgICAuI3skYm9uaXRvLXNwYWNpbmctbmFtZXNwYWNlfXUtbWIwICAgeyBtYXJnaW4tYm90dG9tOiAgICAwICFpbXBvcnRhbnQ7IH1cbiAgICAuI3skYm9uaXRvLXNwYWNpbmctbmFtZXNwYWNlfXUtbWwwICAgeyBtYXJnaW4tbGVmdDogICAgICAwICFpbXBvcnRhbnQ7IH1cbiAgICAuI3skYm9uaXRvLXNwYWNpbmctbmFtZXNwYWNlfXUtbWgwICAgeyBtYXJnaW4tcmlnaHQ6ICAgICAwICFpbXBvcnRhbnQ7IG1hcmdpbi1sZWZ0OiAgICAgIDAgIWltcG9ydGFudDsgfVxuICAgIC4jeyRib25pdG8tc3BhY2luZy1uYW1lc3BhY2V9dS1tdjAgICB7IG1hcmdpbi10b3A6ICAgICAgIDAgIWltcG9ydGFudDsgbWFyZ2luLWJvdHRvbTogICAgMCAhaW1wb3J0YW50OyB9XG5cbn1cblxuXG5AaWYgKCRib25pdG8tZW5hYmxlLW1hcmdpbnMtLW5lZ2F0aXZlID09IHRydWUpIHtcblxuICAgIC8qKlxuICAgICAqIE5lZ2F0aXZlIG1hcmdpbnMuXG4gICAgICovXG5cbiAgICAuI3skYm9uaXRvLXNwYWNpbmctbmFtZXNwYWNlfXUtLW0gICAgeyBtYXJnaW46ICAgICAgICAgICAtJGJvbml0by1tYXJnaW4gIWltcG9ydGFudDsgfVxuICAgIC4jeyRib25pdG8tc3BhY2luZy1uYW1lc3BhY2V9dS0tbXQgICB7IG1hcmdpbi10b3A6ICAgICAgIC0kYm9uaXRvLW1hcmdpbiAhaW1wb3J0YW50OyB9XG4gICAgLiN7JGJvbml0by1zcGFjaW5nLW5hbWVzcGFjZX11LS1tciAgIHsgbWFyZ2luLXJpZ2h0OiAgICAgLSRib25pdG8tbWFyZ2luICFpbXBvcnRhbnQ7IH1cbiAgICAuI3skYm9uaXRvLXNwYWNpbmctbmFtZXNwYWNlfXUtLW1iICAgeyBtYXJnaW4tYm90dG9tOiAgICAtJGJvbml0by1tYXJnaW4gIWltcG9ydGFudDsgfVxuICAgIC4jeyRib25pdG8tc3BhY2luZy1uYW1lc3BhY2V9dS0tbWwgICB7IG1hcmdpbi1sZWZ0OiAgICAgIC0kYm9uaXRvLW1hcmdpbiAhaW1wb3J0YW50OyB9XG4gICAgLiN7JGJvbml0by1zcGFjaW5nLW5hbWVzcGFjZX11LS1taCAgIHsgbWFyZ2luLXJpZ2h0OiAgICAgLSRib25pdG8tbWFyZ2luICFpbXBvcnRhbnQ7IG1hcmdpbi1sZWZ0OiAgICAgIC0kYm9uaXRvLW1hcmdpbiAhaW1wb3J0YW50OyB9XG4gICAgLiN7JGJvbml0by1zcGFjaW5nLW5hbWVzcGFjZX11LS1tdiAgIHsgbWFyZ2luLXRvcDogICAgICAgLSRib25pdG8tbWFyZ2luICFpbXBvcnRhbnQ7IG1hcmdpbi1ib3R0b206ICAgIC0kYm9uaXRvLW1hcmdpbiAhaW1wb3J0YW50OyB9XG5cbn1cblxuXG5AaWYgKCRib25pdG8tZW5hYmxlLW1hcmdpbnMtLW5lZ2F0aXZlLXRpbnkgPT0gdHJ1ZSkge1xuXG4gICAgLyoqXG4gICAgICogVGlueSBuZWdhdGl2ZSBtYXJnaW5zLlxuICAgICAqL1xuXG4gICAgLiN7JGJvbml0by1zcGFjaW5nLW5hbWVzcGFjZX11LS1tLS0gIHsgbWFyZ2luOiAgICAgICAgICAgLSRib25pdG8tbWFyZ2luLS10aW55ICFpbXBvcnRhbnQ7IH1cbiAgICAuI3skYm9uaXRvLXNwYWNpbmctbmFtZXNwYWNlfXUtLW10LS0geyBtYXJnaW4tdG9wOiAgICAgICAtJGJvbml0by1tYXJnaW4tLXRpbnkgIWltcG9ydGFudDsgfVxuICAgIC4jeyRib25pdG8tc3BhY2luZy1uYW1lc3BhY2V9dS0tbXItLSB7IG1hcmdpbi1yaWdodDogICAgIC0kYm9uaXRvLW1hcmdpbi0tdGlueSAhaW1wb3J0YW50OyB9XG4gICAgLiN7JGJvbml0by1zcGFjaW5nLW5hbWVzcGFjZX11LS1tYi0tIHsgbWFyZ2luLWJvdHRvbTogICAgLSRib25pdG8tbWFyZ2luLS10aW55ICFpbXBvcnRhbnQ7IH1cbiAgICAuI3skYm9uaXRvLXNwYWNpbmctbmFtZXNwYWNlfXUtLW1sLS0geyBtYXJnaW4tbGVmdDogICAgICAtJGJvbml0by1tYXJnaW4tLXRpbnkgIWltcG9ydGFudDsgfVxuICAgIC4jeyRib25pdG8tc3BhY2luZy1uYW1lc3BhY2V9dS0tbWgtLSB7IG1hcmdpbi1yaWdodDogICAgIC0kYm9uaXRvLW1hcmdpbi0tdGlueSAhaW1wb3J0YW50OyBtYXJnaW4tbGVmdDogICAgIC0kYm9uaXRvLW1hcmdpbi0tdGlueSAhaW1wb3J0YW50OyB9XG4gICAgLiN7JGJvbml0by1zcGFjaW5nLW5hbWVzcGFjZX11LS1tdi0tIHsgbWFyZ2luLXRvcDogICAgICAgLSRib25pdG8tbWFyZ2luLS10aW55ICFpbXBvcnRhbnQ7IG1hcmdpbi1ib3R0b206ICAgLSRib25pdG8tbWFyZ2luLS1odWdlICFpbXBvcnRhbnQ7IH1cblxufVxuXG5cbkBpZiAoJGJvbml0by1lbmFibGUtbWFyZ2lucy0tbmVnYXRpdmUtc21hbGwgPT0gdHJ1ZSkge1xuXG4gICAgLyoqXG4gICAgICogU21hbGwgbmVnYXRpdmUgbWFyZ2lucy5cbiAgICAgKi9cblxuICAgIC4jeyRib25pdG8tc3BhY2luZy1uYW1lc3BhY2V9dS0tbS0gICB7IG1hcmdpbjogICAgICAgICAgIC0kYm9uaXRvLW1hcmdpbi0tc21hbGwgIWltcG9ydGFudDsgfVxuICAgIC4jeyRib25pdG8tc3BhY2luZy1uYW1lc3BhY2V9dS0tbXQtICB7IG1hcmdpbi10b3A6ICAgICAgIC0kYm9uaXRvLW1hcmdpbi0tc21hbGwgIWltcG9ydGFudDsgfVxuICAgIC4jeyRib25pdG8tc3BhY2luZy1uYW1lc3BhY2V9dS0tbXItICB7IG1hcmdpbi1yaWdodDogICAgIC0kYm9uaXRvLW1hcmdpbi0tc21hbGwgIWltcG9ydGFudDsgfVxuICAgIC4jeyRib25pdG8tc3BhY2luZy1uYW1lc3BhY2V9dS0tbWItICB7IG1hcmdpbi1ib3R0b206ICAgIC0kYm9uaXRvLW1hcmdpbi0tc21hbGwgIWltcG9ydGFudDsgfVxuICAgIC4jeyRib25pdG8tc3BhY2luZy1uYW1lc3BhY2V9dS0tbWwtICB7IG1hcmdpbi1sZWZ0OiAgICAgIC0kYm9uaXRvLW1hcmdpbi0tc21hbGwgIWltcG9ydGFudDsgfVxuICAgIC4jeyRib25pdG8tc3BhY2luZy1uYW1lc3BhY2V9dS0tbWgtICB7IG1hcmdpbi1yaWdodDogICAgIC0kYm9uaXRvLW1hcmdpbi0tc21hbGwgIWltcG9ydGFudDsgbWFyZ2luLWxlZnQ6ICAgLSRib25pdG8tbWFyZ2luLS1zbWFsbCAhaW1wb3J0YW50OyB9XG4gICAgLiN7JGJvbml0by1zcGFjaW5nLW5hbWVzcGFjZX11LS1tdi0gIHsgbWFyZ2luLXRvcDogICAgICAgLSRib25pdG8tbWFyZ2luLS1zbWFsbCAhaW1wb3J0YW50OyBtYXJnaW4tYm90dG9tOiAtJGJvbml0by1tYXJnaW4tLXNtYWxsICFpbXBvcnRhbnQ7IH1cblxufVxuXG5cbkBpZiAoJGJvbml0by1lbmFibGUtbWFyZ2lucy0tbmVnYXRpdmUtbGFyZ2UgPT0gdHJ1ZSkge1xuXG4gICAgLyoqXG4gICAgICogTGFyZ2UgbmVnYXRpdmUgbWFyZ2lucy5cbiAgICAgKi9cblxuICAgIC4jeyRib25pdG8tc3BhY2luZy1uYW1lc3BhY2V9dS0tbVxcKyAgeyBtYXJnaW46ICAgICAgICAgICAtJGJvbml0by1tYXJnaW4tLWxhcmdlICFpbXBvcnRhbnQ7IH1cbiAgICAuI3skYm9uaXRvLXNwYWNpbmctbmFtZXNwYWNlfXUtLW10XFwrIHsgbWFyZ2luLXRvcDogICAgICAgLSRib25pdG8tbWFyZ2luLS1sYXJnZSAhaW1wb3J0YW50OyB9XG4gICAgLiN7JGJvbml0by1zcGFjaW5nLW5hbWVzcGFjZX11LS1tclxcKyB7IG1hcmdpbi1yaWdodDogICAgIC0kYm9uaXRvLW1hcmdpbi0tbGFyZ2UgIWltcG9ydGFudDsgfVxuICAgIC4jeyRib25pdG8tc3BhY2luZy1uYW1lc3BhY2V9dS0tbWJcXCsgeyBtYXJnaW4tYm90dG9tOiAgICAtJGJvbml0by1tYXJnaW4tLWxhcmdlICFpbXBvcnRhbnQ7IH1cbiAgICAuI3skYm9uaXRvLXNwYWNpbmctbmFtZXNwYWNlfXUtLW1sXFwrIHsgbWFyZ2luLWxlZnQ6ICAgICAgLSRib25pdG8tbWFyZ2luLS1sYXJnZSAhaW1wb3J0YW50OyB9XG4gICAgLiN7JGJvbml0by1zcGFjaW5nLW5hbWVzcGFjZX11LS1taFxcKyB7IG1hcmdpbi1yaWdodDogICAgIC0kYm9uaXRvLW1hcmdpbi0tbGFyZ2UgIWltcG9ydGFudDsgbWFyZ2luLWxlZnQ6ICAgICAgLSRib25pdG8tbWFyZ2luLS1sYXJnZSAhaW1wb3J0YW50OyB9XG4gICAgLiN7JGJvbml0by1zcGFjaW5nLW5hbWVzcGFjZX11LS1tdlxcKyB7IG1hcmdpbi10b3A6ICAgICAgIC0kYm9uaXRvLW1hcmdpbi0tbGFyZ2UgIWltcG9ydGFudDsgbWFyZ2luLWJvdHRvbTogICAgLSRib25pdG8tbWFyZ2luLS1sYXJnZSAhaW1wb3J0YW50OyB9XG5cbn1cblxuXG5AaWYgKCRib25pdG8tZW5hYmxlLW1hcmdpbnMtLW5lZ2F0aXZlLWh1Z2UgPT0gdHJ1ZSkge1xuXG4gICAgLyoqXG4gICAgICogSHVnZSBuZWdhdGl2ZSBtYXJnaW5zLlxuICAgICAqL1xuXG4gICAgLiN7JGJvbml0by1zcGFjaW5nLW5hbWVzcGFjZX11LS1tXFwrXFwrICAgIHsgbWFyZ2luOiAgICAgICAgICAgLSRib25pdG8tbWFyZ2luLS1odWdlICFpbXBvcnRhbnQ7IH1cbiAgICAuI3skYm9uaXRvLXNwYWNpbmctbmFtZXNwYWNlfXUtLW10XFwrXFwrICAgeyBtYXJnaW4tdG9wOiAgICAgICAtJGJvbml0by1tYXJnaW4tLWh1Z2UgIWltcG9ydGFudDsgfVxuICAgIC4jeyRib25pdG8tc3BhY2luZy1uYW1lc3BhY2V9dS0tbXJcXCtcXCsgICB7IG1hcmdpbi1yaWdodDogICAgIC0kYm9uaXRvLW1hcmdpbi0taHVnZSAhaW1wb3J0YW50OyB9XG4gICAgLiN7JGJvbml0by1zcGFjaW5nLW5hbWVzcGFjZX11LS1tYlxcK1xcKyAgIHsgbWFyZ2luLWJvdHRvbTogICAgLSRib25pdG8tbWFyZ2luLS1odWdlICFpbXBvcnRhbnQ7IH1cbiAgICAuI3skYm9uaXRvLXNwYWNpbmctbmFtZXNwYWNlfXUtLW1sXFwrXFwrICAgeyBtYXJnaW4tbGVmdDogICAgICAtJGJvbml0by1tYXJnaW4tLWh1Z2UgIWltcG9ydGFudDsgfVxuICAgIC4jeyRib25pdG8tc3BhY2luZy1uYW1lc3BhY2V9dS0tbWhcXCtcXCsgICB7IG1hcmdpbi1yaWdodDogICAgIC0kYm9uaXRvLW1hcmdpbi0taHVnZSAhaW1wb3J0YW50OyBtYXJnaW4tbGVmdDogICAtJGJvbml0by1tYXJnaW4tLWh1Z2UgIWltcG9ydGFudDsgfVxuICAgIC4jeyRib25pdG8tc3BhY2luZy1uYW1lc3BhY2V9dS0tbXZcXCtcXCsgICB7IG1hcmdpbi10b3A6ICAgICAgIC0kYm9uaXRvLW1hcmdpbi0taHVnZSAhaW1wb3J0YW50OyBtYXJnaW4tYm90dG9tOiAtJGJvbml0by1tYXJnaW4tLWh1Z2UgIWltcG9ydGFudDsgfVxuXG59XG5cblxuXG5cblxuQGlmICgkYm9uaXRvLWVuYWJsZS1wYWRkaW5ncyA9PSB0cnVlKSB7XG5cbiAgICAvKipcbiAgICAgKiBQYWRkaW5nIGhlbHBlciBjbGFzc2VzLlxuICAgICAqXG4gICAgICogQWRkIHBhZGRpbmdzLlxuICAgICAqL1xuXG4gICAgLiN7JGJvbml0by1zcGFjaW5nLW5hbWVzcGFjZX11LXAgICAgIHsgcGFkZGluZzogICAgICAgICAgJGJvbml0by1wYWRkaW5nICFpbXBvcnRhbnQ7IH1cbiAgICAuI3skYm9uaXRvLXNwYWNpbmctbmFtZXNwYWNlfXUtcHQgICAgeyBwYWRkaW5nLXRvcDogICAgICAkYm9uaXRvLXBhZGRpbmcgIWltcG9ydGFudDsgfVxuICAgIC4jeyRib25pdG8tc3BhY2luZy1uYW1lc3BhY2V9dS1wciAgICB7IHBhZGRpbmctcmlnaHQ6ICAgICRib25pdG8tcGFkZGluZyAhaW1wb3J0YW50OyB9XG4gICAgLiN7JGJvbml0by1zcGFjaW5nLW5hbWVzcGFjZX11LXBiICAgIHsgcGFkZGluZy1ib3R0b206ICAgJGJvbml0by1wYWRkaW5nICFpbXBvcnRhbnQ7IH1cbiAgICAuI3skYm9uaXRvLXNwYWNpbmctbmFtZXNwYWNlfXUtcGwgICAgeyBwYWRkaW5nLWxlZnQ6ICAgICAkYm9uaXRvLXBhZGRpbmcgIWltcG9ydGFudDsgfVxuICAgIC4jeyRib25pdG8tc3BhY2luZy1uYW1lc3BhY2V9dS1waCAgICB7IHBhZGRpbmctcmlnaHQ6ICAgICRib25pdG8tcGFkZGluZyAhaW1wb3J0YW50OyBwYWRkaW5nLWxlZnQ6ICAgICRib25pdG8tcGFkZGluZyAhaW1wb3J0YW50OyB9XG4gICAgLiN7JGJvbml0by1zcGFjaW5nLW5hbWVzcGFjZX11LXB2ICAgIHsgcGFkZGluZy10b3A6ICAgICAgJGJvbml0by1wYWRkaW5nICFpbXBvcnRhbnQ7IHBhZGRpbmctYm90dG9tOiAgJGJvbml0by1wYWRkaW5nICFpbXBvcnRhbnQ7IH1cblxufVxuXG5cbkBpZiAoJGJvbml0by1lbmFibGUtcGFkZGluZ3MtLXRpbnkgPT0gdHJ1ZSkge1xuXG4gICAgLyoqXG4gICAgICogQWRkIHRpbnkgcGFkZGluZ3MuXG4gICAgICovXG5cbiAgICAuI3skYm9uaXRvLXNwYWNpbmctbmFtZXNwYWNlfXUtcC0tICAgeyBwYWRkaW5nOiAgICAgICAgICAgJGJvbml0by1wYWRkaW5nLS10aW55ICFpbXBvcnRhbnQ7IH1cbiAgICAuI3skYm9uaXRvLXNwYWNpbmctbmFtZXNwYWNlfXUtcHQtLSAgeyBwYWRkaW5nLXRvcDogICAgICAgJGJvbml0by1wYWRkaW5nLS10aW55ICFpbXBvcnRhbnQ7IH1cbiAgICAuI3skYm9uaXRvLXNwYWNpbmctbmFtZXNwYWNlfXUtcHItLSAgeyBwYWRkaW5nLXJpZ2h0OiAgICAgJGJvbml0by1wYWRkaW5nLS10aW55ICFpbXBvcnRhbnQ7IH1cbiAgICAuI3skYm9uaXRvLXNwYWNpbmctbmFtZXNwYWNlfXUtcGItLSAgeyBwYWRkaW5nLWJvdHRvbTogICAgJGJvbml0by1wYWRkaW5nLS10aW55ICFpbXBvcnRhbnQ7IH1cbiAgICAuI3skYm9uaXRvLXNwYWNpbmctbmFtZXNwYWNlfXUtcGwtLSAgeyBwYWRkaW5nLWxlZnQ6ICAgICAgJGJvbml0by1wYWRkaW5nLS10aW55ICFpbXBvcnRhbnQ7IH1cbiAgICAuI3skYm9uaXRvLXNwYWNpbmctbmFtZXNwYWNlfXUtcGgtLSAgeyBwYWRkaW5nLXJpZ2h0OiAgICAgJGJvbml0by1wYWRkaW5nLS10aW55ICFpbXBvcnRhbnQ7IHBhZGRpbmctbGVmdDogICAgICAkYm9uaXRvLXBhZGRpbmctLXRpbnkgIWltcG9ydGFudDsgfVxuICAgIC4jeyRib25pdG8tc3BhY2luZy1uYW1lc3BhY2V9dS1wdi0tICB7IHBhZGRpbmctdG9wOiAgICAgICAkYm9uaXRvLXBhZGRpbmctLXRpbnkgIWltcG9ydGFudDsgcGFkZGluZy1ib3R0b206ICAgICRib25pdG8tcGFkZGluZy0tdGlueSAhaW1wb3J0YW50OyB9XG5cbn1cblxuXG5AaWYgKCRib25pdG8tZW5hYmxlLXBhZGRpbmdzLS1zbWFsbCA9PSB0cnVlKSB7XG5cbiAgICAvKipcbiAgICAgKiBBZGQgc21hbGwgcGFkZGluZ3MuXG4gICAgICovXG5cbiAgICAuI3skYm9uaXRvLXNwYWNpbmctbmFtZXNwYWNlfXUtcC0gICAgeyBwYWRkaW5nOiAgICAgICAgICAgJGJvbml0by1wYWRkaW5nLS1zbWFsbCAhaW1wb3J0YW50OyB9XG4gICAgLiN7JGJvbml0by1zcGFjaW5nLW5hbWVzcGFjZX11LXB0LSAgIHsgcGFkZGluZy10b3A6ICAgICAgICRib25pdG8tcGFkZGluZy0tc21hbGwgIWltcG9ydGFudDsgfVxuICAgIC4jeyRib25pdG8tc3BhY2luZy1uYW1lc3BhY2V9dS1wci0gICB7IHBhZGRpbmctcmlnaHQ6ICAgICAkYm9uaXRvLXBhZGRpbmctLXNtYWxsICFpbXBvcnRhbnQ7IH1cbiAgICAuI3skYm9uaXRvLXNwYWNpbmctbmFtZXNwYWNlfXUtcGItICAgeyBwYWRkaW5nLWJvdHRvbTogICAgJGJvbml0by1wYWRkaW5nLS1zbWFsbCAhaW1wb3J0YW50OyB9XG4gICAgLiN7JGJvbml0by1zcGFjaW5nLW5hbWVzcGFjZX11LXBsLSAgIHsgcGFkZGluZy1sZWZ0OiAgICAgICRib25pdG8tcGFkZGluZy0tc21hbGwgIWltcG9ydGFudDsgfVxuICAgIC4jeyRib25pdG8tc3BhY2luZy1uYW1lc3BhY2V9dS1waC0gICB7IHBhZGRpbmctcmlnaHQ6ICAgICAkYm9uaXRvLXBhZGRpbmctLXNtYWxsICFpbXBvcnRhbnQ7IHBhZGRpbmctbGVmdDogICAgJGJvbml0by1wYWRkaW5nLS1zbWFsbCAhaW1wb3J0YW50OyB9XG4gICAgLiN7JGJvbml0by1zcGFjaW5nLW5hbWVzcGFjZX11LXB2LSAgIHsgcGFkZGluZy10b3A6ICAgICAgICRib25pdG8tcGFkZGluZy0tc21hbGwgIWltcG9ydGFudDsgcGFkZGluZy1ib3R0b206ICAkYm9uaXRvLXBhZGRpbmctLXNtYWxsICFpbXBvcnRhbnQ7IH1cblxufVxuXG5cbkBpZiAoJGJvbml0by1lbmFibGUtcGFkZGluZ3MtLWxhcmdlID09IHRydWUpIHtcblxuICAgIC8qKlxuICAgICAqIEFkZCBsYXJnZSBwYWRkaW5ncy5cbiAgICAgKi9cblxuICAgIC4jeyRib25pdG8tc3BhY2luZy1uYW1lc3BhY2V9dS1wXFwrICAgeyBwYWRkaW5nOiAgICAgICAgICAgJGJvbml0by1wYWRkaW5nLS1sYXJnZSAhaW1wb3J0YW50OyB9XG4gICAgLiN7JGJvbml0by1zcGFjaW5nLW5hbWVzcGFjZX11LXB0XFwrICB7IHBhZGRpbmctdG9wOiAgICAgICAkYm9uaXRvLXBhZGRpbmctLWxhcmdlICFpbXBvcnRhbnQ7IH1cbiAgICAuI3skYm9uaXRvLXNwYWNpbmctbmFtZXNwYWNlfXUtcHJcXCsgIHsgcGFkZGluZy1yaWdodDogICAgICRib25pdG8tcGFkZGluZy0tbGFyZ2UgIWltcG9ydGFudDsgfVxuICAgIC4jeyRib25pdG8tc3BhY2luZy1uYW1lc3BhY2V9dS1wYlxcKyAgeyBwYWRkaW5nLWJvdHRvbTogICAgJGJvbml0by1wYWRkaW5nLS1sYXJnZSAhaW1wb3J0YW50OyB9XG4gICAgLiN7JGJvbml0by1zcGFjaW5nLW5hbWVzcGFjZX11LXBsXFwrICB7IHBhZGRpbmctbGVmdDogICAgICAkYm9uaXRvLXBhZGRpbmctLWxhcmdlICFpbXBvcnRhbnQ7IH1cbiAgICAuI3skYm9uaXRvLXNwYWNpbmctbmFtZXNwYWNlfXUtcGhcXCsgIHsgcGFkZGluZy1yaWdodDogICAgICRib25pdG8tcGFkZGluZy0tbGFyZ2UgIWltcG9ydGFudDsgcGFkZGluZy1sZWZ0OiAgICRib25pdG8tcGFkZGluZy0tbGFyZ2UgIWltcG9ydGFudDsgfVxuICAgIC4jeyRib25pdG8tc3BhY2luZy1uYW1lc3BhY2V9dS1wdlxcKyAgeyBwYWRkaW5nLXRvcDogICAgICAgJGJvbml0by1wYWRkaW5nLS1sYXJnZSAhaW1wb3J0YW50OyBwYWRkaW5nLWJvdHRvbTogJGJvbml0by1wYWRkaW5nLS1sYXJnZSAhaW1wb3J0YW50OyB9XG5cbn1cblxuXG5AaWYgKCRib25pdG8tZW5hYmxlLXBhZGRpbmdzLS1odWdlID09IHRydWUpIHtcblxuICAgIC8qKlxuICAgICAqIEFkZCBodWdlIHBhZGRpbmdzLlxuICAgICAqL1xuXG4gICAgLiN7JGJvbml0by1zcGFjaW5nLW5hbWVzcGFjZX11LXBcXCtcXCsgICAgIHsgcGFkZGluZzogICAgICAgICAgICRib25pdG8tcGFkZGluZy0taHVnZSAhaW1wb3J0YW50OyB9XG4gICAgLiN7JGJvbml0by1zcGFjaW5nLW5hbWVzcGFjZX11LXB0XFwrXFwrICAgIHsgcGFkZGluZy10b3A6ICAgICAgICRib25pdG8tcGFkZGluZy0taHVnZSAhaW1wb3J0YW50OyB9XG4gICAgLiN7JGJvbml0by1zcGFjaW5nLW5hbWVzcGFjZX11LXByXFwrXFwrICAgIHsgcGFkZGluZy1yaWdodDogICAgICRib25pdG8tcGFkZGluZy0taHVnZSAhaW1wb3J0YW50OyB9XG4gICAgLiN7JGJvbml0by1zcGFjaW5nLW5hbWVzcGFjZX11LXBiXFwrXFwrICAgIHsgcGFkZGluZy1ib3R0b206ICAgICRib25pdG8tcGFkZGluZy0taHVnZSAhaW1wb3J0YW50OyB9XG4gICAgLiN7JGJvbml0by1zcGFjaW5nLW5hbWVzcGFjZX11LXBsXFwrXFwrICAgIHsgcGFkZGluZy1sZWZ0OiAgICAgICRib25pdG8tcGFkZGluZy0taHVnZSAhaW1wb3J0YW50OyB9XG4gICAgLiN7JGJvbml0by1zcGFjaW5nLW5hbWVzcGFjZX11LXBoXFwrXFwrICAgIHsgcGFkZGluZy1yaWdodDogICAgICRib25pdG8tcGFkZGluZy0taHVnZSAhaW1wb3J0YW50OyBwYWRkaW5nLWxlZnQ6ICAgICRib25pdG8tcGFkZGluZy0taHVnZSAhaW1wb3J0YW50OyB9XG4gICAgLiN7JGJvbml0by1zcGFjaW5nLW5hbWVzcGFjZX11LXB2XFwrXFwrICAgIHsgcGFkZGluZy10b3A6ICAgICAgICRib25pdG8tcGFkZGluZy0taHVnZSAhaW1wb3J0YW50OyBwYWRkaW5nLWJvdHRvbTogICRib25pdG8tcGFkZGluZy0taHVnZSAhaW1wb3J0YW50OyB9XG5cbn1cblxuXG5AaWYgKCRib25pdG8tZW5hYmxlLXBhZGRpbmdzLS1ub25lID09IHRydWUpIHtcblxuICAgIC8qKlxuICAgICAqIFJlbW92ZSBwYWRkaW5ncy5cbiAgICAgKi9cblxuICAgIC4jeyRib25pdG8tc3BhY2luZy1uYW1lc3BhY2V9dS1wMCAgICB7IHBhZGRpbmc6ICAgICAgICAgIDAgIWltcG9ydGFudDsgfVxuICAgIC4jeyRib25pdG8tc3BhY2luZy1uYW1lc3BhY2V9dS1wdDAgICB7IHBhZGRpbmctdG9wOiAgICAgIDAgIWltcG9ydGFudDsgfVxuICAgIC4jeyRib25pdG8tc3BhY2luZy1uYW1lc3BhY2V9dS1wcjAgICB7IHBhZGRpbmctcmlnaHQ6ICAgIDAgIWltcG9ydGFudDsgfVxuICAgIC4jeyRib25pdG8tc3BhY2luZy1uYW1lc3BhY2V9dS1wYjAgICB7IHBhZGRpbmctYm90dG9tOiAgIDAgIWltcG9ydGFudDsgfVxuICAgIC4jeyRib25pdG8tc3BhY2luZy1uYW1lc3BhY2V9dS1wbDAgICB7IHBhZGRpbmctbGVmdDogICAgIDAgIWltcG9ydGFudDsgfVxuICAgIC4jeyRib25pdG8tc3BhY2luZy1uYW1lc3BhY2V9dS1waDAgICB7IHBhZGRpbmctcmlnaHQ6ICAgIDAgIWltcG9ydGFudDsgcGFkZGluZy1sZWZ0OiAgICAgMCAhaW1wb3J0YW50OyB9XG4gICAgLiN7JGJvbml0by1zcGFjaW5nLW5hbWVzcGFjZX11LXB2MCAgIHsgcGFkZGluZy10b3A6ICAgICAgMCAhaW1wb3J0YW50OyBwYWRkaW5nLWJvdHRvbTogICAwICFpbXBvcnRhbnQ7IH1cblxufVxuIiwiLyoqXG4gKiBBbGlnbm1lbnQgSGVscGVyIENsYXNzZXNcbiAqXG4gKiBUaGVzZSB1dGlsaXRpZXMgZW5hYmxlIHlvdSB0byBhbGlnbiB0ZXh0IGxlZnQgYW5kIHJpZ2h0IHNpbXBseVxuICpcbiAqYC51LXR8ZihyfGx8Y3xqXCJpKSB7fWAgPSB0ZXh0LWFsaWduL2Zsb2F0IHJpZ2h0L2xlZnQvY2VudGVyL2p1c3RpZnkvaW5pdGlhbFxuICogRXhhbXBsZTpcbiAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dF9faXRlbSB1LTEtb2YtMlwiPlxuICAgICAgICAgICAgICAgIDxhIGhyZWY9XCIjXCIgY2xhc3M9XCJcIj5Db250YWN0IFVzPC9hPlxuICAgICAgICAgICAgPC9kaXY+PCEtLVxuICAgICAgICAtLS0+PGRpdiBjbGFzcz1cImxheW91dF9faXRlbSB1LTEtb2YtMiB1LXRyXCI+XG4gICAgICAgICAgICA8YSBocmVmPVwiI1wiIGNsYXNzPVwiZm9vdGVyX19hY3Rpb25cIj5OZWVkIGhlbHA/PC9hPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICpcbiAqL1xuXG4vLyBWYXJpYWJsZXNcbiRib25pdG8tYWxpZ25tZW50LW5hbWVzcGFjZTogbnVsbCAhZGVmYXVsdDtcbiRib25pdG8tZW5hYmxlLWFsaWdubWVudDogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIE1peGluIGZvciB0aGUgc3R5bGVzXG5AbWl4aW4gYWxpZ25tZW50KCRhbGlhczogJycpIHtcbiAgICAuI3skYm9uaXRvLWFsaWdubWVudC1uYW1lc3BhY2V9dS10ciN7JGFsaWFzfSB7XG4gICAgICAgIHRleHQtYWxpZ246IHJpZ2h0ICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgLiN7JGJvbml0by1hbGlnbm1lbnQtbmFtZXNwYWNlfXUtdGwjeyRhbGlhc30ge1xuICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0ICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgLiN7JGJvbml0by1hbGlnbm1lbnQtbmFtZXNwYWNlfXUtdGMjeyRhbGlhc30ge1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICAuI3skYm9uaXRvLWFsaWdubWVudC1uYW1lc3BhY2V9dS10aiN7JGFsaWFzfSB7XG4gICAgICAgIHRleHQtYWxpZ246IGp1c3RpZnkgIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICAuI3skYm9uaXRvLWFsaWdubWVudC1uYW1lc3BhY2V9dS10aSN7JGFsaWFzfSB7XG4gICAgICAgIHRleHQtYWxpZ246IGluaXRpYWwgIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICAuI3skYm9uaXRvLWFsaWdubWVudC1uYW1lc3BhY2V9dS1mciN7JGFsaWFzfSB7XG4gICAgICAgIGZsb2F0OiByaWdodCAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIC4jeyRib25pdG8tYWxpZ25tZW50LW5hbWVzcGFjZX11LWZsI3skYWxpYXN9IHtcbiAgICAgICAgZmxvYXQ6IGxlZnQgIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICAuI3skYm9uaXRvLWFsaWdubWVudC1uYW1lc3BhY2V9dS1mbiN7JGFsaWFzfSB7XG4gICAgICAgIGZsb2F0OiBub25lICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgLiN7JGJvbml0by1hbGlnbm1lbnQtbmFtZXNwYWNlfXUtZmkjeyRhbGlhc30ge1xuICAgICAgICBmbG9hdDogaW5oZXJpdCAhaW1wb3J0YW50O1xuICAgIH1cbn1cblxuQGlmICgkYm9uaXRvLWVuYWJsZS1hbGlnbm1lbnQgPT0gdHJ1ZSkge1xuXG4gICAgQGluY2x1ZGUgYWxpZ25tZW50KCcnKTtcblxuICAgIEBlYWNoICRicmVha3BvaW50IGluICRicmVha3BvaW50cyB7XG5cbiAgICAgICAgLy8gR2V0IHRoZSBuYW1lIG9mIHRoZSBicmVha3BvaW50LlxuICAgICAgICAkYWxpYXM6IG50aCgkYnJlYWtwb2ludCwgMSk7XG5cbiAgICAgICAgQGluY2x1ZGUgbWVkaWEtcXVlcnkoJGFsaWFzKSB7XG4gICAgICAgICAgICBAaW5jbHVkZSBhbGlnbm1lbnQoLSN7JGFsaWFzfSk7XG4gICAgICAgIH1cbiAgICB9XG59IiwiLyoqXG4gKiAxNCBjb2x1bW4gZ3JpZFxuICpcbiAqIFdpZHRocyAoaW5jbHVkaW5nIHJlc3BvbnNpdmUgd2lkdGhzKSBmb3IgYSAxNCBjb2x1bW4gZ3JpZFxuICpcbiAqL1xuXG5AbWl4aW4gdHdlbnR5dHdvcygkYWxpYXMpIHtcbiAgICAuI3skYm9uaXRvLXdpZHRocy1uYW1lc3BhY2V9dSN7JGFsaWFzfS1vbmUtdHdlbnR5dHdvcyB7XG4gICAgICAgIHdpZHRoOiAoMS8yMikgKiAxMDAlICFpbXBvcnRhbnQ7XG4gICAgfVxuICAgIC4jeyRib25pdG8td2lkdGhzLW5hbWVzcGFjZX11I3skYWxpYXN9LXR3by10d2VudHl0d29zIHtcbiAgICAgICAgd2lkdGg6ICgyLzIyKSAqIDEwMCUgIWltcG9ydGFudDtcbiAgICB9XG4gICAgLiN7JGJvbml0by13aWR0aHMtbmFtZXNwYWNlfXUjeyRhbGlhc30tdGhyZWUtdHdlbnR5dHdvcyB7XG4gICAgICAgIHdpZHRoOiAoMy8yMikgKiAxMDAlICFpbXBvcnRhbnQ7XG4gICAgfVxuICAgIC4jeyRib25pdG8td2lkdGhzLW5hbWVzcGFjZX11I3skYWxpYXN9LWZvdXItdHdlbnR5dHdvcyB7XG4gICAgICAgIHdpZHRoOiAoNC8yMikgKiAxMDAlICFpbXBvcnRhbnQ7XG4gICAgfVxuICAgIC4jeyRib25pdG8td2lkdGhzLW5hbWVzcGFjZX11I3skYWxpYXN9LWZpdmUtdHdlbnR5dHdvcyB7XG4gICAgICAgIHdpZHRoOiAoNS8yMikgKiAxMDAlICFpbXBvcnRhbnQ7XG4gICAgfVxuICAgIC4jeyRib25pdG8td2lkdGhzLW5hbWVzcGFjZX11I3skYWxpYXN9LXNpeC10d2VudHl0d29zIHtcbiAgICAgICAgd2lkdGg6ICg2LzIyKSAqIDEwMCUgIWltcG9ydGFudDtcbiAgICB9XG4gICAgLiN7JGJvbml0by13aWR0aHMtbmFtZXNwYWNlfXUjeyRhbGlhc30tc2V2ZXJuLXR3ZW50eXR3b3Mge1xuICAgICAgICB3aWR0aDogKDcvMjIpICogMTAwJSAhaW1wb3J0YW50O1xuICAgIH1cbiAgICAuI3skYm9uaXRvLXdpZHRocy1uYW1lc3BhY2V9dSN7JGFsaWFzfS1laWdodC10d2VudHl0d29zIHtcbiAgICAgICAgd2lkdGg6ICg4LzIyKSAqIDEwMCUgIWltcG9ydGFudDtcbiAgICB9XG4gICAgLiN7JGJvbml0by13aWR0aHMtbmFtZXNwYWNlfXUjeyRhbGlhc30tbmluZS10d2VudHl0d29zIHtcbiAgICAgICAgd2lkdGg6ICg5LzIyKSAqIDEwMCUgIWltcG9ydGFudDtcbiAgICB9XG4gICAgLiN7JGJvbml0by13aWR0aHMtbmFtZXNwYWNlfXUjeyRhbGlhc30tdGVuLXR3ZW50eXR3b3Mge1xuICAgICAgICB3aWR0aDogKDEwLzIyKSAqIDEwMCUgIWltcG9ydGFudDtcbiAgICB9XG4gICAgLiN7JGJvbml0by13aWR0aHMtbmFtZXNwYWNlfXUjeyRhbGlhc30tZWxldmVuLXR3ZW50eXR3b3Mge1xuICAgICAgICB3aWR0aDogKDExLzIyKSAqIDEwMCUgIWltcG9ydGFudDtcbiAgICB9XG4gICAgLiN7JGJvbml0by13aWR0aHMtbmFtZXNwYWNlfXUjeyRhbGlhc30tdHdlbHZlLXR3ZW50eXR3b3Mge1xuICAgICAgICB3aWR0aDogKDEyLzIyKSAqIDEwMCUgIWltcG9ydGFudDtcbiAgICB9XG4gICAgLiN7JGJvbml0by13aWR0aHMtbmFtZXNwYWNlfXUjeyRhbGlhc30tdGhpcnRlZW4tdHdlbnR5dHdvcyB7XG4gICAgICAgIHdpZHRoOiAoMTMvMjIpICogMTAwJSAhaW1wb3J0YW50O1xuICAgIH1cbiAgICAuI3skYm9uaXRvLXdpZHRocy1uYW1lc3BhY2V9dSN7JGFsaWFzfS1mb3VydGVlbi10d2VudHl0d29zIHtcbiAgICAgICAgd2lkdGg6ICgxNC8yMikgKiAxMDAlICFpbXBvcnRhbnQ7XG4gICAgfVxuICAgIC4jeyRib25pdG8td2lkdGhzLW5hbWVzcGFjZX11I3skYWxpYXN9LWZpZnRlZW4tdHdlbnR5dHdvcyB7XG4gICAgICAgIHdpZHRoOiAoMTUvMjIpICogMTAwJSAhaW1wb3J0YW50O1xuICAgIH1cbiAgICAuI3skYm9uaXRvLXdpZHRocy1uYW1lc3BhY2V9dSN7JGFsaWFzfS1zaXh0ZWVuLXR3ZW50eXR3b3Mge1xuICAgICAgICB3aWR0aDogKDE2LzIyKSAqIDEwMCUgIWltcG9ydGFudDtcbiAgICB9XG4gICAgLiN7JGJvbml0by13aWR0aHMtbmFtZXNwYWNlfXUjeyRhbGlhc30tc2V2ZW50ZWVuLXR3ZW50eXR3b3Mge1xuICAgICAgICB3aWR0aDogKDE3LzIyKSAqIDEwMCUgIWltcG9ydGFudDtcbiAgICB9XG4gICAgLiN7JGJvbml0by13aWR0aHMtbmFtZXNwYWNlfXUjeyRhbGlhc30tZWlnaHRlZW4tdHdlbnR5dHdvcyB7XG4gICAgICAgIHdpZHRoOiAoMTgvMjIpICogMTAwJSAhaW1wb3J0YW50O1xuICAgIH1cbiAgICAuI3skYm9uaXRvLXdpZHRocy1uYW1lc3BhY2V9dSN7JGFsaWFzfS1uaW5ldGVlbi10d2VudHl0d29zIHtcbiAgICAgICAgd2lkdGg6ICgxOS8yMikgKiAxMDAlICFpbXBvcnRhbnQ7XG4gICAgfVxuICAgIC4jeyRib25pdG8td2lkdGhzLW5hbWVzcGFjZX11I3skYWxpYXN9LXR3ZW50eS10d2VudHl0d29zIHtcbiAgICAgICAgd2lkdGg6ICgyMC8yMikgKiAxMDAlICFpbXBvcnRhbnQ7XG4gICAgfVxuICAgIC4jeyRib25pdG8td2lkdGhzLW5hbWVzcGFjZX11I3skYWxpYXN9LXR3ZW50eW9uZS10d2VudHl0d29zIHtcbiAgICAgICAgd2lkdGg6ICgyMS8yMikgKiAxMDAlICFpbXBvcnRhbnQ7XG4gICAgfVxufVxuXG5AaW5jbHVkZSB0d2VudHl0d29zKCcnKTtcblxuQGVhY2ggJGJyZWFrcG9pbnQgaW4gJGJyZWFrcG9pbnRzIHtcblxuICAgICRhbGlhczogbnRoKCRicmVha3BvaW50LCAxKTtcbiAgICAkY29uZGl0aW9uOiBudGgoJGJyZWFrcG9pbnQsIDIpO1xuXG4gICAgLy8gVGhpcyBpc27igJl0IGlkZWFsLCBidXQgd2UgZGVmaW5pdGVseSBkb27igJl0IHdhbnQgdG8gZ2VuZXJhdGUgd2lkdGhzXG4gICAgLy8gZm9yIHJldGluYSBkZXZpY2VzLiBFeGNsdWRlIHJldGluYSBtZWRpYS1xZXVyaWVzIG1hbnVhbGx5LlxuICAgIEBpZiAoJGFsaWFzICE9IFwicmV0aW5hXCIpIHtcblxuICAgICAgICBAaW5jbHVkZSBtZWRpYS1xdWVyeSgkYWxpYXMpIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIHR3ZW50eXR3b3MoJy0jeyRhbGlhc30nKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBDbG9zZSBtZWRpYSBxdWVyeS5cblxuICAgIH1cbiAgICAvLyBDbG9zZSByZXRpbmEgY2hlY2suXG5cbn1cblxuLy8gQ2xvc2UgYnJlYWtwb2ludHMgbG9vcC4iLCIvKiogXG4gKiBWaXNpYmlsaXR5IFRvb2xcbiAqXG4gKiBBIGNvbGxlY3Rpb24gb2YgY2xhc3NlcyB0byBoaWRlIGVsZW1lbnRzIGRlcGVuZGFudCBvbiBzY3JlZW4gc2l6ZVxuICpcbiAqIEV4YW1wbGU6XG4gKiAgXG4gKi9cblxuQG1peGluIGJvbml0by1nZW5lcmF0ZS12aXNpYmlsaXR5KCkge1xuXG4gICAgLy8gTG9vcCB0aHJvdWdoIG91ciBwcmV2aW91c2x5LWRlZmluZWQgYnJlYWtwb2ludHMuXG4gICAgQGVhY2ggJGJyZWFrcG9pbnQgaW4gJGJyZWFrcG9pbnRzIHtcblxuICAgICAgICAkYm9uaXRvLWdlbmVyYXRlLXZpc2liaWxpdHktYWxpYXM6IG50aCgkYnJlYWtwb2ludCwgMSkgIWdsb2JhbDtcbiAgICAgICAgJGJvbml0by1nZW5lcmF0ZS12aXNpYmlsaXR5LWNvbmRpdGlvbjogbnRoKCRicmVha3BvaW50LCAyKTtcblxuICAgICAgICAvLyBUaGlzIGlzbuKAmXQgaWRlYWwsIGJ1dCB3ZSBkZWZpbml0ZWx5IGRvbuKAmXQgd2FudCB0byBnZW5lcmF0ZSB2aXNpYmlsaXR5XG4gICAgICAgIC8vIGZvciByZXRpbmEgZGV2aWNlcy4gRXhjbHVkZSByZXRpbmEgbWVkaWEtcWV1cmllcyBtYW51YWxseS5cbiAgICAgICAgQGlmICgkYm9uaXRvLWdlbmVyYXRlLXZpc2liaWxpdHktYWxpYXMgIT0gXCJyZXRpbmFcIikge1xuXG4gICAgICAgICAgICBAaW5jbHVkZSBtZWRpYS1xdWVyeSgkYm9uaXRvLWdlbmVyYXRlLXZpc2liaWxpdHktYWxpYXMpIHtcbiAgICAgICAgICAgICAgICBAY29udGVudDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIENsb3NlIG1lZGlhIHF1ZXJ5LlxuXG4gICAgICAgIH1cbiAgICAgICAgLy8gQ2xvc2UgcmV0aW5hIGNoZWNrLlxuXG4gICAgICAgIC8vIFRha2UgdGhlIGdsb2JhbCB2YXJpYWJsZSBiYWNrIG91dCBvZiBzY29wZS5cbiAgICAgICAgJGJvbml0by1nZW5lcmF0ZS12aXNpYmlsaXR5LWFsaWFzOiBudWxsICFnbG9iYWw7XG5cbiAgICB9XG4gICAgLy8gQ2xvc2UgYnJlYWtwb2ludHMgbG9vcC5cblxufVxuXG5AaW5jbHVkZSBib25pdG8tZ2VuZXJhdGUtdmlzaWJpbGl0eSgpIHtcblxuICAgIC4jeyRib25pdG8tc3BhY2luZy1uYW1lc3BhY2V9dS0jeyRib25pdG8tZ2VuZXJhdGUtdmlzaWJpbGl0eS1hbGlhc30taGlkZSxcbiAgICAlI3skYm9uaXRvLXNwYWNpbmctbmFtZXNwYWNlfXUtI3skYm9uaXRvLWdlbmVyYXRlLXZpc2liaWxpdHktYWxpYXN9LWhpZGUge1xuICAgICAgICBib3JkZXI6MCFpbXBvcnRhbnQ7XG4gICAgICAgIGNsaXA6cmVjdCgwIDAgMCAwKSFpbXBvcnRhbnQ7XG4gICAgICAgIGhlaWdodDoxcHghaW1wb3J0YW50O1xuICAgICAgICBtYXJnaW46LTFweCFpbXBvcnRhbnQ7XG4gICAgICAgIG92ZXJmbG93OmhpZGRlbiFpbXBvcnRhbnQ7XG4gICAgICAgIHBhZGRpbmc6MCFpbXBvcnRhbnQ7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZSFpbXBvcnRhbnQ7XG4gICAgICAgIHdpZHRoOjFweCFpbXBvcnRhbnQ7XG4gICAgfVxuXG59XG5cbi5qcy1kaXNwbGF5IHtcbiAgICBkaXNwbGF5OiBub25lO1xufVxuXG4uanMge1xuICAgIC5qcy1pbnZpc2libGUge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICAmLmpzLXZpc2libGUge1xuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuanMtZGlzcGxheSB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIH1cbn0iLCIvKipcbiAqIEhlYWRpbmcgdHJ1bXBzXG4gKlxuICogT3ZlcmlkZSB0aGUgQm9uaXRvIEhlYWRpbmcgc2V0dGluZ3NcbiAqXG4gKiBFeGFtcGxlOlxuICogIDxoMSBjbGFzcz1cInUtYWxwaGFcIj4gLi4uIDwvaDE+XG4gKi9cblxuLiN7JGJvbml0by1uYW1lc3BhY2V9dS1nYW1tYSxcbiUjeyRib25pdG8tbmFtZXNwYWNlfXUtZ2FtbWEge1xuICAgIEBpbmNsdWRlIGJvbml0by1mb250LXNpemUoJGJvbml0by1oZWFkaW5nLXNpemUtMywgMjRweCk7XG59XG5cbi4jeyRib25pdG8tbmFtZXNwYWNlfXUta2lsbyxcbiUjeyRib25pdG8tbmFtZXNwYWNlfXUta2lsbyB7XG4gICAgQGluY2x1ZGUgYm9uaXRvLWZvbnQtc2l6ZSgzNnB4KTtcbn0iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=*/