@import url(https://fonts.googleapis.com/css?family=Open+Sans:300,700&display=swap);
/*! tailwindcss v2.2.19 | MIT License | https://tailwindcss.com */
/*! modern-normalize v1.1.0 | MIT License | https://github.com/sindresorhus/modern-normalize */
/*
Document
========
*/
/**
Use a better box model (opinionated).
*/
*,
::before,
::after {
	box-sizing: border-box;
}
/**
Use a more readable tab size (opinionated).
*/
html {
	-moz-tab-size: 4;
	-o-tab-size: 4;
	   tab-size: 4;
}
/**
1. Correct the line height in all browsers.
2. Prevent adjustments of font size after orientation changes in iOS.
*/
html {
	line-height: 1.15; /* 1 */
	-webkit-text-size-adjust: 100%; /* 2 */
}
/*
Sections
========
*/
/**
Remove the margin in all browsers.
*/
body {
	margin: 0;
}
/**
Improve consistency of default fonts in all browsers. (https://github.com/sindresorhus/modern-normalize/issues/3)
*/
body {
	font-family:
		system-ui,
		-apple-system, /* Firefox supports this but not yet `system-ui` */
		'Segoe UI',
		Roboto,
		Helvetica,
		Arial,
		sans-serif,
		'Apple Color Emoji',
		'Segoe UI Emoji';
}
/*
Grouping content
================
*/
/**
1. Add the correct height in Firefox.
2. Correct the inheritance of border color in Firefox. (https://bugzilla.mozilla.org/show_bug.cgi?id=190655)
*/
hr {
	height: 0; /* 1 */
	color: inherit; /* 2 */
}
/*
Text-level semantics
====================
*/
/**
Add the correct text decoration in Chrome, Edge, and Safari.
*/
abbr[title] {
	-webkit-text-decoration: underline dotted;
	        text-decoration: underline dotted;
}
/**
Add the correct font weight in Edge and Safari.
*/
b,
strong {
	font-weight: bolder;
}
/**
1. Improve consistency of default fonts in all browsers. (https://github.com/sindresorhus/modern-normalize/issues/3)
2. Correct the odd 'em' font sizing in all browsers.
*/
code,
kbd,
samp,
pre {
	font-family:
		ui-monospace,
		SFMono-Regular,
		Consolas,
		'Liberation Mono',
		Menlo,
		monospace; /* 1 */
	font-size: 1em; /* 2 */
}
/**
Add the correct font size in all browsers.
*/
small {
	font-size: 80%;
}
/**
Prevent 'sub' and 'sup' elements from affecting the line height in all browsers.
*/
sub,
sup {
	font-size: 75%;
	line-height: 0;
	position: relative;
	vertical-align: baseline;
}
sub {
	bottom: -0.25em;
}
sup {
	top: -0.5em;
}
/*
Tabular data
============
*/
/**
1. Remove text indentation from table contents in Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=999088, https://bugs.webkit.org/show_bug.cgi?id=201297)
2. Correct table border color inheritance in all Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=935729, https://bugs.webkit.org/show_bug.cgi?id=195016)
*/
table {
	text-indent: 0; /* 1 */
	border-color: inherit; /* 2 */
}
/*
Forms
=====
*/
/**
1. Change the font styles in all browsers.
2. Remove the margin in Firefox and Safari.
*/
button,
input,
optgroup,
select,
textarea {
	font-family: inherit; /* 1 */
	font-size: 100%; /* 1 */
	line-height: 1.15; /* 1 */
	margin: 0; /* 2 */
}
/**
Remove the inheritance of text transform in Edge and Firefox.
1. Remove the inheritance of text transform in Firefox.
*/
button,
select { /* 1 */
	text-transform: none;
}
/**
Correct the inability to style clickable types in iOS and Safari.
*/
button,
[type='button'],
[type='reset'],
[type='submit'] {
	-webkit-appearance: button;
}
/**
Remove the inner border and padding in Firefox.
*/
::-moz-focus-inner {
	border-style: none;
	padding: 0;
}
/**
Restore the focus styles unset by the previous rule.
*/
:-moz-focusring {
	outline: 1px dotted ButtonText;
}
/**
Remove the additional ':invalid' styles in Firefox.
See: https://github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d494c9be1/layout/style/res/forms.css#L728-L737
*/
:-moz-ui-invalid {
	box-shadow: none;
}
/**
Remove the padding so developers are not caught out when they zero out 'fieldset' elements in all browsers.
*/
legend {
	padding: 0;
}
/**
Add the correct vertical alignment in Chrome and Firefox.
*/
progress {
	vertical-align: baseline;
}
/**
Correct the cursor style of increment and decrement buttons in Safari.
*/
::-webkit-inner-spin-button,
::-webkit-outer-spin-button {
	height: auto;
}
/**
1. Correct the odd appearance in Chrome and Safari.
2. Correct the outline style in Safari.
*/
[type='search'] {
	-webkit-appearance: textfield; /* 1 */
	outline-offset: -2px; /* 2 */
}
/**
Remove the inner padding in Chrome and Safari on macOS.
*/
::-webkit-search-decoration {
	-webkit-appearance: none;
}
/**
1. Correct the inability to style clickable types in iOS and Safari.
2. Change font properties to 'inherit' in Safari.
*/
::-webkit-file-upload-button {
	-webkit-appearance: button; /* 1 */
	font: inherit; /* 2 */
}
/*
Interactive
===========
*/
/*
Add the correct display in Chrome and Safari.
*/
summary {
	display: list-item;
}
/**
 * Manually forked from SUIT CSS Base: https://github.com/suitcss/base
 * A thin layer on top of normalize.css that provides a starting point more
 * suitable for web applications.
 */
/**
 * Removes the default spacing and border for appropriate elements.
 */
blockquote,
dl,
dd,
h1,
h2,
h3,
h4,
h5,
h6,
hr,
figure,
p,
pre {
  margin: 0;
}
button {
  background-color: transparent;
  background-image: none;
}
fieldset {
  margin: 0;
  padding: 0;
}
ol,
ul {
  list-style: none;
  margin: 0;
  padding: 0;
}
/**
 * Tailwind custom reset styles
 */
/**
 * 1. Use the user's configured `sans` font-family (with Tailwind's default
 *    sans-serif font stack as a fallback) as a sane default.
 * 2. Use Tailwind's default "normal" line-height so the user isn't forced
 *    to override it to ensure consistency even when using the default theme.
 */
html {
  font-family: "Helvetica", "Arial", sans-serif; /* 1 */
  line-height: 1.5; /* 2 */
}
/**
 * Inherit font-family and line-height from `html` so users can set them as
 * a class directly on the `html` element.
 */
body {
  font-family: inherit;
  line-height: inherit;
}
/**
 * 1. Prevent padding and border from affecting element width.
 *
 *    We used to set this in the html element and inherit from
 *    the parent element for everything else. This caused issues
 *    in shadow-dom-enhanced elements like <details> where the content
 *    is wrapped by a div with box-sizing set to `content-box`.
 *
 *    https://github.com/mozdevs/cssremedy/issues/4
 *
 *
 * 2. Allow adding a border to an element by just adding a border-width.
 *
 *    By default, the way the browser specifies that an element should have no
 *    border is by setting it's border-style to `none` in the user-agent
 *    stylesheet.
 *
 *    In order to easily add borders to elements by just setting the `border-width`
 *    property, we change the default border-style for all elements to `solid`, and
 *    use border-width to hide them instead. This way our `border` utilities only
 *    need to set the `border-width` property instead of the entire `border`
 *    shorthand, making our border utilities much more straightforward to compose.
 *
 *    https://github.com/tailwindcss/tailwindcss/pull/116
 */
*,
::before,
::after {
  box-sizing: border-box; /* 1 */
  border-width: 0; /* 2 */
  border-style: solid; /* 2 */
  border-color: currentColor; /* 2 */
}
/*
 * Ensure horizontal rules are visible by default
 */
hr {
  border-top-width: 1px;
}
/**
 * Undo the `border-style: none` reset that Normalize applies to images so that
 * our `border-{width}` utilities have the expected effect.
 *
 * The Normalize reset is unnecessary for us since we default the border-width
 * to 0 on all elements.
 *
 * https://github.com/tailwindcss/tailwindcss/issues/362
 */
img {
  border-style: solid;
}
textarea {
  resize: vertical;
}
input::-moz-placeholder, textarea::-moz-placeholder {
  opacity: 1;
  color: #a1a1aa;
}
input::placeholder,
textarea::placeholder {
  opacity: 1;
  color: #a1a1aa;
}
button,
[role="button"] {
  cursor: pointer;
}
/**
 * Override legacy focus reset from Normalize with modern Firefox focus styles.
 *
 * This is actually an improvement over the new defaults in Firefox in our testing,
 * as it triggers the better focus styles even for links, which still use a dotted
 * outline in Firefox by default.
 */
:-moz-focusring {
	outline: auto;
}
table {
  border-collapse: collapse;
}
h1,
h2,
h3,
h4,
h5,
h6 {
  font-size: inherit;
  font-weight: inherit;
}
/**
 * Reset links to optimize for opt-in styling instead of
 * opt-out.
 */
a {
  color: inherit;
  text-decoration: inherit;
}
/**
 * Reset form element properties that are easy to forget to
 * style explicitly so you don't inadvertently introduce
 * styles that deviate from your design system. These styles
 * supplement a partial reset that is already applied by
 * normalize.css.
 */
button,
input,
optgroup,
select,
textarea {
  padding: 0;
  line-height: inherit;
  color: inherit;
}
/**
 * Use the configured 'mono' font family for elements that
 * are expected to be rendered with a monospace font, falling
 * back to the system monospace stack if there is no configured
 * 'mono' font family.
 */
pre,
code,
kbd,
samp {
  font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
}
/**
 * 1. Make replaced elements `display: block` by default as that's
 *    the behavior you want almost all of the time. Inspired by
 *    CSS Remedy, with `svg` added as well.
 *
 *    https://github.com/mozdevs/cssremedy/issues/14
 * 
 * 2. Add `vertical-align: middle` to align replaced elements more
 *    sensibly by default when overriding `display` by adding a
 *    utility like `inline`.
 *
 *    This can trigger a poorly considered linting error in some
 *    tools but is included by design.
 * 
 *    https://github.com/jensimmons/cssremedy/issues/14#issuecomment-634934210
 */
img,
svg,
video,
canvas,
audio,
iframe,
embed,
object {
  display: block; /* 1 */
  vertical-align: middle; /* 2 */
}
/**
 * Constrain images and videos to the parent width and preserve
 * their intrinsic aspect ratio.
 *
 * https://github.com/mozdevs/cssremedy/issues/14
 */
img,
video {
  max-width: 100%;
  height: auto;
}
/**
 * Ensure the default browser behavior of the `hidden` attribute.
 */
[hidden] {
  display: none;
}
*, ::before, ::after{
	border-color: currentColor;
	--tw-ring-offset-shadow: 0 0 #0000;
	--tw-ring-shadow: 0 0 #0000;
	--tw-shadow: 0 0 #0000;
	--tw-blur: var(--tw-empty,/*!*/ /*!*/);
	--tw-brightness: var(--tw-empty,/*!*/ /*!*/);
	--tw-contrast: var(--tw-empty,/*!*/ /*!*/);
	--tw-grayscale: var(--tw-empty,/*!*/ /*!*/);
	--tw-hue-rotate: var(--tw-empty,/*!*/ /*!*/);
	--tw-invert: var(--tw-empty,/*!*/ /*!*/);
	--tw-saturate: var(--tw-empty,/*!*/ /*!*/);
	--tw-sepia: var(--tw-empty,/*!*/ /*!*/);
	--tw-drop-shadow: var(--tw-empty,/*!*/ /*!*/);
	--tw-filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
}
.aspect-w-1,
.aspect-w-2,
.aspect-w-3,
.aspect-w-4,
.aspect-w-5,
.aspect-w-6,
.aspect-w-7,
.aspect-w-8,
.aspect-w-9,
.aspect-w-10,
.aspect-w-11,
.aspect-w-12,
.aspect-w-13,
.aspect-w-14,
.aspect-w-15,
.aspect-w-16{
	position: relative;
	padding-bottom: calc(var(--tw-aspect-h) / var(--tw-aspect-w) * 100%);
}
.aspect-w-1 > *,
.aspect-w-2 > *,
.aspect-w-3 > *,
.aspect-w-4 > *,
.aspect-w-5 > *,
.aspect-w-6 > *,
.aspect-w-7 > *,
.aspect-w-8 > *,
.aspect-w-9 > *,
.aspect-w-10 > *,
.aspect-w-11 > *,
.aspect-w-12 > *,
.aspect-w-13 > *,
.aspect-w-14 > *,
.aspect-w-15 > *,
.aspect-w-16 > *{
	position: absolute;
	height: 100%;
	width: 100%;
	top: 0;
	right: 0;
	bottom: 0;
	left: 0;
}
.aspect-w-16{
	--tw-aspect-w: 16;
}
.aspect-h-9{
	--tw-aspect-h: 9;
}
.container, .container-fluid{
	width: 100%;
	margin-right: auto;
	margin-left: auto;
	padding-right: var(--bs-gutter-x, calc(30px / 2));
	padding-left: var(--bs-gutter-x, calc(30px / 2));
}
@media (min-width: 400px){
	.container{
		max-width: 400px;
	}
}
@media (min-width: 575px){
	.container{
		max-width: 575px;
	}
}
@media (min-width: 768px){
	.container{
		max-width: 768px;
	}
}
@media (min-width: 992px){
	.container{
		max-width: 992px;
	}
}
@media (min-width: 1200px){
	.container{
		max-width: 1200px;
	}
}
@media (min-width: 1400px){
	.container{
		max-width: 1400px;
	}
}
.row{
	--bs-gutter-x: 30px;
	--bs-gutter-y: 0;
	display: flex;
	flex-wrap: wrap;
	margin-top: calc(var(--bs-gutter-y) * -1);
	margin-right: calc(var(--bs-gutter-x) / -2);
	margin-left: calc(var(--bs-gutter-x) / -2);
}
.row > *{
	box-sizing: border-box;
	flex-shrink: 0;
	width: 100%;
	max-width: 100%;
	padding-right: calc(var(--bs-gutter-x) / 2);
	padding-left: calc(var(--bs-gutter-x) / 2);
	margin-top: var(--bs-gutter-y);
}
.col{
	flex: 1 0 0%;
}
.col-12{
	flex: 0 0 auto;
	width: 100%;
}
.order-1{
	order: 1;
}
.order-2{
	order: 2;
}
:root {
  --black: #000000;
  --white: #fff;
  --grey: #565656;
  --light-grey: #ececec;
  --primary-colour: #BF181A;
  --success: #38a169;
  --danger: #e53e3e;
}

a:not(.site-header a, footer a, .btn, .case-study a, .pagination a) {
  color: var(--primary-colour);
}

.flex-grid-row{
	display: flex;
	flex-wrap: wrap;
	overflow: visible;
  margin-left: -15px;
  margin-right: -15px;
}

.flex-grid-col {
  flex: 1 0;
  max-width: 100%;
  flex-grow: 1;
  flex-direction: column;
  flex-wrap: wrap;
  overflow: visible;
  padding-left: 15px;
  padding-right: 15px;
  min-width: 8.3333%;
}
@media screen and (max-width: 1199px) {
  .flex-grid-col.lg-half {
    flex: 0 0 50%;
    max-width: 50%;
  }
}
@media screen and (max-width: 991px) {
  .flex-grid-col.md-full {
    flex: 0 0 100%;
    max-width: 100%;
  }
}
@media screen and (max-width: 767px) {
  .flex-grid-col.sm-third {
    flex: 0 0 33.33333%;
    max-width: 33.33333%;
  }
  .flex-grid-col.sm-half {
    flex: 0 0 50%;
    max-width: 50%;
  }
  .flex-grid-col.sm-full {
    flex: 0 0 100%;
    max-width: 100%;
  }
}
.flex-grid-col-3{
	flex-grow: 1;
	flex-direction: column;
	flex-wrap: wrap;
	overflow: visible;
  padding-left: 15px;
  padding-right: 15px;
  min-width: 8.3333%;
  flex: 0 0 25%;
  max-width: 25%;
}
@media screen and (max-width: 1199px) {
  .flex-grid-col-3.lg-half {
    flex: 0 0 50%;
    max-width: 50%;
  }
}
@media screen and (max-width: 991px) {
  .flex-grid-col-3.md-full {
    flex: 0 0 100%;
    max-width: 100%;
  }
}
@media screen and (max-width: 767px) {
  .flex-grid-col-3.sm-third {
    flex: 0 0 33.33333%;
    max-width: 33.33333%;
  }
  .flex-grid-col-3.sm-half {
    flex: 0 0 50%;
    max-width: 50%;
  }
  .flex-grid-col-3.sm-full {
    flex: 0 0 100%;
    max-width: 100%;
  }
}
.flex-grid-col-4{
	flex-grow: 1;
	flex-direction: column;
	flex-wrap: wrap;
	overflow: visible;
  padding-left: 15px;
  padding-right: 15px;
  min-width: 8.3333%;
  flex: 0 0 33.3333%;
  max-width: 33.3333%;
}
@media screen and (max-width: 1199px) {
  .flex-grid-col-4.lg-half {
    flex: 0 0 50%;
    max-width: 50%;
  }
}
@media screen and (max-width: 991px) {
  .flex-grid-col-4.md-full {
    flex: 0 0 100%;
    max-width: 100%;
  }
}
@media screen and (max-width: 767px) {
  .flex-grid-col-4.sm-third {
    flex: 0 0 33.33333%;
    max-width: 33.33333%;
  }
  .flex-grid-col-4.sm-half {
    flex: 0 0 50%;
    max-width: 50%;
  }
  .flex-grid-col-4.sm-full {
    flex: 0 0 100%;
    max-width: 100%;
  }
}
.flex-grid-col-5{
	flex-grow: 1;
	flex-direction: column;
	flex-wrap: wrap;
	overflow: visible;
  padding-left: 15px;
  padding-right: 15px;
  min-width: 8.3333%;
  flex: 0 0 41.6665%;
  max-width: 41.6665%;
}
@media screen and (max-width: 1199px) {
  .flex-grid-col-5.lg-half {
    flex: 0 0 50%;
    max-width: 50%;
  }
}
@media screen and (max-width: 991px) {
  .flex-grid-col-5.md-full {
    flex: 0 0 100%;
    max-width: 100%;
  }
}
@media screen and (max-width: 767px) {
  .flex-grid-col-5.sm-third {
    flex: 0 0 33.33333%;
    max-width: 33.33333%;
  }
  .flex-grid-col-5.sm-half {
    flex: 0 0 50%;
    max-width: 50%;
  }
  .flex-grid-col-5.sm-full {
    flex: 0 0 100%;
    max-width: 100%;
  }
}
.flex-grid-col-6{
	flex-grow: 1;
	flex-direction: column;
	flex-wrap: wrap;
	overflow: visible;
  padding-left: 15px;
  padding-right: 15px;
  min-width: 8.3333%;
  flex: 0 0 50%;
  max-width: 50%;
}
@media screen and (max-width: 1199px) {
  .flex-grid-col-6.lg-half {
    flex: 0 0 50%;
    max-width: 50%;
  }
}
@media screen and (max-width: 991px) {
  .flex-grid-col-6.md-full {
    flex: 0 0 100%;
    max-width: 100%;
  }
}
@media screen and (max-width: 767px) {
  .flex-grid-col-6.sm-third {
    flex: 0 0 33.33333%;
    max-width: 33.33333%;
  }
  .flex-grid-col-6.sm-half {
    flex: 0 0 50%;
    max-width: 50%;
  }
  .flex-grid-col-6.sm-full {
    flex: 0 0 100%;
    max-width: 100%;
  }
}
.flex-grid-col-7{
	flex-grow: 1;
	flex-direction: column;
	flex-wrap: wrap;
	overflow: visible;
  padding-left: 15px;
  padding-right: 15px;
  min-width: 8.3333%;
  flex: 0 0 58.3333%;
  max-width: 58.3333%;
}
@media screen and (max-width: 1199px) {
  .flex-grid-col-7.lg-half {
    flex: 0 0 50%;
    max-width: 50%;
  }
}
@media screen and (max-width: 991px) {
  .flex-grid-col-7.md-full {
    flex: 0 0 100%;
    max-width: 100%;
  }
}
@media screen and (max-width: 767px) {
  .flex-grid-col-7.sm-third {
    flex: 0 0 33.33333%;
    max-width: 33.33333%;
  }
  .flex-grid-col-7.sm-half {
    flex: 0 0 50%;
    max-width: 50%;
  }
  .flex-grid-col-7.sm-full {
    flex: 0 0 100%;
    max-width: 100%;
  }
}
.flex-grid-col-8{
	flex-grow: 1;
	flex-direction: column;
	flex-wrap: wrap;
	overflow: visible;
  padding-left: 15px;
  padding-right: 15px;
  min-width: 8.3333%;
  flex: 0 0 66.6667%;
  max-width: 66.6667%;
}
@media screen and (max-width: 1199px) {
  .flex-grid-col-8.lg-half {
    flex: 0 0 50%;
    max-width: 50%;
  }
}
@media screen and (max-width: 991px) {
  .flex-grid-col-8.md-full {
    flex: 0 0 100%;
    max-width: 100%;
  }
}
@media screen and (max-width: 767px) {
  .flex-grid-col-8.sm-third {
    flex: 0 0 33.33333%;
    max-width: 33.33333%;
  }
  .flex-grid-col-8.sm-half {
    flex: 0 0 50%;
    max-width: 50%;
  }
  .flex-grid-col-8.sm-full {
    flex: 0 0 100%;
    max-width: 100%;
  }
}
.flex-grid-col-10{
	flex-grow: 1;
	flex-direction: column;
	flex-wrap: wrap;
	overflow: visible;
  padding-left: 15px;
  padding-right: 15px;
  min-width: 8.3333%;
  flex: 0 0 83.3333%;
  max-width: 83.3333%;
}
@media screen and (max-width: 1199px) {
  .flex-grid-col-10.lg-half {
    flex: 0 0 50%;
    max-width: 50%;
  }
}
@media screen and (max-width: 991px) {
  .flex-grid-col-10.md-full {
    flex: 0 0 100%;
    max-width: 100%;
  }
}
@media screen and (max-width: 767px) {
  .flex-grid-col-10.sm-third {
    flex: 0 0 33.33333%;
    max-width: 33.33333%;
  }
  .flex-grid-col-10.sm-half {
    flex: 0 0 50%;
    max-width: 50%;
  }
  .flex-grid-col-10.sm-full {
    flex: 0 0 100%;
    max-width: 100%;
  }
}
.flex-grid-col-fifth{
	flex-grow: 1;
	flex-direction: column;
	flex-wrap: wrap;
	overflow: visible;
  padding-left: 15px;
  padding-right: 15px;
  min-width: 8.3333%;
  flex: 0 0 20%;
  max-width: 20%;
}
@media screen and (max-width: 1199px) {
  .flex-grid-col-fifth.lg-half {
    flex: 0 0 50%;
    max-width: 50%;
  }
}
@media screen and (max-width: 991px) {
  .flex-grid-col-fifth.md-full {
    flex: 0 0 100%;
    max-width: 100%;
  }
}
@media screen and (max-width: 767px) {
  .flex-grid-col-fifth.sm-third {
    flex: 0 0 33.33333%;
    max-width: 33.33333%;
  }
  .flex-grid-col-fifth.sm-half {
    flex: 0 0 50%;
    max-width: 50%;
  }
  .flex-grid-col-fifth.sm-full {
    flex: 0 0 100%;
    max-width: 100%;
  }
}
.flex-grid-col-offset-1 {
  margin-left: 8.3333%;
}
@media screen and (max-width: 991px) {
  .flex-grid-col-offset-1 {
    margin-left: 0;
  }
}
.flex-grid-col-offset-2 {
  margin-left: 16.6666%;
}
@media screen and (max-width: 991px) {
  .flex-grid-col-offset-2 {
    margin-left: 0;
  }
}

body {
  font-size: 16px;
  line-height: 2em;
}

h1,
.h1 {
  font-size: 3rem;
  margin-top: 1rem;
  margin-bottom: 1rem;
  font-weight: bold;
  line-height: 60px;
}
@media screen and (max-width: 767px) {
  h1,
  .h1 {
    font-size: 2rem;
    margin-top: 0.5rem;
    margin-bottom: 0.5rem;
    line-height: 40px;
  }
}

h3,
.h3,
h2,
.h2 {
  font-size: 2.5em;
  margin-bottom: 0.75em;
  line-height: 1.1em;
  font-weight: 400;
}
@media screen and (max-width: 767px) {
  h3,
  .h3,
  h2,
  .h2 {
    font-size: 1.875em;
    line-height: 1.075em;
  }
}
h3--sm,
.h3--sm,
h2--sm,
.h2--sm {
  font-size: 1.875em;
  line-height: 1.075em;
}

h4,
.h4 {
  font-size: 1em;
  line-height: 2em;
  font-weight: 700;
  margin-bottom: 1em;
}

ul{
	margin-bottom: 1.5rem;
  list-style-type: disc;
  padding-left: 18px;
}
ul:last-of-type{
	margin-bottom: 0px;
}
ul:last-of-type + *{
	margin-top: 1.5rem;
}

ol{
	margin-bottom: 1.5rem;
  list-style-type: lower-alpha;
  padding-left: 18px;
}
ol:last-of-type{
	margin-bottom: 0px;
}
ol:last-of-type + *{
	margin-top: 1.5rem;
}

.display-1 {
  font-size: 3.75em;
  line-height: 1em;
  margin-bottom: 0;
}
@media screen and (max-width: 767px) {
  .display-1 {
    font-size: 2.25em;
  }
}

p{
	margin-bottom: 1.5rem;
}
p:last-of-type{
	margin-bottom: 0px;
}
p:last-of-type + ul, p:last-of-type + ol{
	margin-top: 1.5rem;
}

.py-20px {
  padding-top: 20px;
  padding-bottom: 20px;
}

.mt-30px {
  margin-top: 30px;
}
.mt-60px {
  margin-top: 60px;
}

.mb-60px {
  margin-bottom: 60px;
}
.mb-30px {
  margin-bottom: 30px;
}

section {
  margin-bottom: 60px;
}
section.about {
  margin-bottom: 0;
  padding: 60px 0;
}
@media screen and (max-width: 991px) {
  section.about {
    padding: 60px 0 0 0;
  }
}
section + .bg-fixed {
  margin-top: 60px;
  margin-bottom: 60px;
}
section.about-pt-0 {
  padding-top: 0;
}
section.faq:has(+ footer), section.faq :has(+ section) {
  margin-bottom: 60px;
}
section.section-grey {
  background-color: rgba(0, 0, 0, 0.1);
  padding: 60px 0;
}
section.section-grey:has(+ .bg-black) {
  margin-bottom: 0px;
}
section.section-grey p:last-of-type {
  margin-bottom: 0;
}
@media screen and (max-width: 991px) {
  section.section-grey {
    padding: 60px 0 60px 0;
  }
}
section.section-grey h4 {
  margin-bottom: 10px;
}
section:last-of-type {
  margin-bottom: 0;
}
section:last-of-type.services {
  padding-bottom: 60px;
}
@media screen and (max-width: 991px) {
  section:last-of-type.services {
    padding-bottom: 0;
  }
}
section.contact-page {
  margin-top: 60px;
}
@media screen and (max-width: 991px) {
  section.contact-page {
    margin-top: 60px;
  }
  section.contact {
    margin-bottom: 60px;
  }
}

.contact__title {
  line-height: 32px;
}
@media screen and (max-width: 767px) {
  .contact .contact-info {
    padding: 5px 15px;
  }
}

.container-lg {
  max-width: 1500px;
  width: 100%;
  padding-left: 15px;
  padding-right: 15px;
}

.container-sm {
  width: 100%;
  padding-left: 15px;
  padding-right: 15px;
}
@media (min-width: 575px) {
  .container-sm {
    max-width: 575px;
  }
}
@media screen and (min-width: 768px) {
  .container-sm {
    max-width: 768px;
  }
}
@media (min-width: 990px) {
  .container-sm {
    max-width: 990px;
  }
}

.el-shadow {
  overflow: visible;
  position: relative;
}
.el-shadow:after {
  content: "";
  background-color: rgba(0, 0, 0, 0.1);
  position: absolute;
  width: 100%;
  height: 100%;
  z-index: -1;
}
.el-shadow--bl:after {
  bottom: -60px;
  left: -60px;
}
@media screen and (max-width: 991px) {
  .el-shadow--bl-about > img {
    width: 100%;
  }
}
.el-shadow--bl-about:after {
  height: calc(100% - 60px);
  bottom: 0;
  left: -60px;
}

.icon-wrapper {
  background-color: var(--grey);
  display: flex;
  align-items: center;
  justify-content: center;
  height: 100px;
  width: 100%;
}
@media screen and (max-width: 991px) {
  .icon-wrapper {
    width: 100%;
    margin-left: 0;
  }
}

#map {
  background-color: aliceblue;
  height: 300px;
  margin-bottom: 60px;
}

.contact-page #map {
  margin-top: 60px;
}

.client-slider .slick-slide > div {
  min-height: 84px;
}

.brand-slider .slick-slide > div {
  min-height: 84px;
}

.testimonial-slider {
  padding: 0 60px;
}
.testimonial-slider .slick-arrow {
  position: absolute;
  top: 15px;
  font-size: 0;
  color: transparent;
  width: 45px;
  height: 30px;
  display: flex;
  align-items: center;
  justify-content: center;
  font-weight: 900;
}
.testimonial-slider .slick-arrow:after {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  color: var(--primary-colour);
  font-size: 32px;
  line-height: 32px;
  font-family: "Font Awesome 6 Pro";
}
.testimonial-slider p{
	margin-bottom: 0.25rem;
}
.testimonial-slider .slick-next {
  right: 0;
}
.testimonial-slider .slick-next:after {
  content: "\f356";
}
.testimonial-slider .slick-prev {
  left: 0;
}
.testimonial-slider .slick-prev:after {
  content: "\f355";
}
.testimonial-slider button:focus {
  outline: none;
}

.text-slider {
  padding: 0 60px;
}
.text-slider .slick-arrow {
  position: absolute;
  top: calc(50% - 15px);
  font-size: 0;
  color: transparent;
  width: 45px;
  height: 30px;
  display: flex;
  align-items: center;
  justify-content: center;
  font-weight: 900;
}
.text-slider .slick-arrow:after {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  color: var(--primary-colour);
  font-size: 32px;
  line-height: 32px;
  font-family: "Font Awesome 6 Pro";
}
.text-slider .slick-next {
  right: 0;
}
.text-slider .slick-next:after {
  content: "\f356";
}
.text-slider .slick-prev {
  left: 0;
}
.text-slider .slick-prev:after {
  content: "\f355";
}
.text-slider button:focus {
  outline: none;
}

/* purgecss start ignore */
/* purgecss end ignore */
.social ul {
  display: inline;
  padding-left: 0;
}
.social ul > li {
  display: inline;
}
.social ul > li + li {
  margin-left: 10px;
}
.social ul a {
  padding: 6px;
}
@media screen and (max-width: 767px) {
  .social {
    display: block;
    margin-top: 10px;
  }
  .social ul {
    padding-left: 0;
  }
}

#header ul {
  list-style-type: none;
  margin-bottom: 0;
  padding-left: 0;
}
#header ul a:hover{
	color: var(--primary-colour);
}

@media (min-width: 992px) {
  #mainNav .submenu {
    display: none;
  }
  #mainNav li:hover .submenu {
    display: block;
  }
}
.submenu a{
	display: inline-block;
	padding-top: 0.25rem;
	padding-bottom: 0.25rem;
	padding-left: 1rem;
	padding-right: 1rem;
	line-height: 1.25;
	color: var(--black);
	text-decoration: none;
}

.testimonial-block{
	background-size: cover;
	background-position: center;
	background-repeat: no-repeat;
  background-image: url(/build/images/testimonial-bg.160a7fc3.jpg);
}

.rating1 .rating__star2, .rating1 .rating__star3, .rating1 .rating__star4, .rating1 .rating__star5{
	display: none;
}

.rating2 .rating__star1, .rating2 .rating__star3, .rating2 .rating__star4, .rating2 .rating__star5{
	display: none;
}

.rating3 .rating__star1, .rating3 .rating__star2, .rating3 .rating__star4, .rating3 .rating__star5{
	display: none;
}

.rating4 .rating__star1, .rating4 .rating__star2, .rating4 .rating__star3, .rating4 .rating__star5{
	display: none;
}

.rating5 .rating__star1, .rating5 .rating__star2, .rating5 .rating__star3, .rating5 .rating__star4{
	display: none;
}

.testimonial__text p{
	margin-bottom: 0.5rem;
}
.testimonial__text p:last-of-type{
	margin-bottom: 0px;
}

.study-grad:after {
  content: "";
  position: absolute;
  top: 0px;
  left: 0px;
  z-index: 10;
  height: 100%;
  width: 100%;
  mix-blend-mode: multiply;
  background: #000000;
  background: linear-gradient(0deg, rgb(0, 0, 0) 0%, rgba(255, 255, 255, 0) 100%);
}
.study-grad:before {
  content: "";
  position: absolute;
  top: 0px;
  left: 0px;
  z-index: 0;
  height: 100%;
  width: 100%;
  background-color: var(--primary-colour);
  mix-blend-mode: multiply;
  mix-blend-mode: multiply;
}
.study-grad .container{
	position: relative;
	z-index: 20;
}

.study-text h2, .study-text h3, .study-text h4, .study-text h5, .study-text h6, .study-text .h2, .study-text .h3, .study-text .h4, .study-text .h5, .study-text .h6{
	color: var(--primary-colour);
}
.study-text h3{
	font-size: 1.875rem;
	line-height: 2.25rem;
}
.study-text table{
	margin-bottom: 1.5rem;
	width: 100%;
	border-width: 1px;
	border-color: var(--black);
}
.study-text table td{
	border-right-width: 1px;
	border-color: var(--black);
	padding: 0.75rem;
}
.study-text table td::last-of-type{
	border-style: none;
}
.study-text table thead{
	background-color: var(--primary-colour);
	color: var(--white);
}
.study-text table thead td{
	border-bottom-width: 1px;
	border-color: var(--black);
}

.landing-text h2, .landing-text h3, .landing-text h4, .landing-text h5, .landing-text h6, .landing-text .h2, .landing-text .h3, .landing-text .h4, .landing-text .h5, .landing-text .h6{
	color: var(--primary-colour);
}

.service-link:hover {
  filter: brightness(0) saturate(100%) invert(12%) sepia(45%) saturate(6460%) hue-rotate(349deg) brightness(110%) contrast(98%);
}

.text-cols p:nth-child(2), .text-cols p:nth-child(3){
	display: inline-block;
  width: calc(50% - 30px);
}
.text-cols p:nth-child(2) {
  margin-right: 15px;
}
.text-cols p:nth-child(3) {
  margin-left: 15px;
}

.text-and-image:has(+ .text-and-image) {
  margin-bottom: 0 !important;
}

details > summary {
  list-style-type: none;
}
details > summary:hover{
	cursor: pointer;
}

details > summary::-webkit-details-marker {
  display: none;
}

details > summary::after{
	position: absolute;
	right: 1.5rem;
	font-family: "Font Awesome 6 Pro";
  content: "\f078";
}

details[open] > summary::after {
  content: "\f077";
}

.textslider--content ul, .textslider--content ol {
  list-style: none;
}

.menu-wrapper{
	max-height: 80vh;
	overflow-y: auto;
}
@media (min-width: 992px) {
  .menu-wrapper {
    max-height: auto;
  }
  .menu-wrapper{
		overflow-y: visible;
	}
}

section.section-service-news:has(+ .section-grey, + .bg-black){
	padding-bottom: 0px;
}

.header-primary h1, .header-primary h2, .header-primary h4, .header-primary h4{
	color: var(--primary-colour);
}

body.error {
  background-color: var(--primary-colour);
}

#header .social {
  padding-left: 0;
  padding-right: 15px;
  margin-top: 10px;
}
@media screen and (max-width: 991px) {
  #header .social {
    padding-left: 0;
    display: block;
  }
}
@media (min-width: 768px) {
  #header .social{
		margin-top: 0px;
	}
}

#mainNav:not(.areas-footer-menu ul) .active {
  color: var(--primary-colour);
}

.site-header:after {
  content: "";
  position: absolute;
  top: 0px;
  left: 0px;
  z-index: 10;
  height: 100%;
  width: 100%;
  background-color: var(--white);
  opacity: 0.65;
  transition: all 1s;
}
.site-header .container{
	position: relative;
	z-index: 20;
}

.site-header--border,
.site-header--border-const {
  border-bottom: 1px solid var(--primary-colour);
}

.site-header--opacity:after {
  opacity: 1;
  transition: all 1s;
}

button#nav-toggle:focus{
	outline: 2px solid transparent;
	outline-offset: 2px;
}
button#nav-toggle svg {
  fill: var(--primary-colour);
}

.brand-logo {
  max-width: 100%;
}

.strapline {
  max-width: 100%;
}

@media screen and (max-width: 1500px) {
  .brand-logo {
    max-width: 175px;
  }
  .strapline {
    max-width: 250px;
  }
}
@media screen and (max-width: 768px) {
  .strapline {
    max-width: 250px;
  }
}
/* Magnific Popup CSS */
/* purgecss start ignore */
.mfp-bg {
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  z-index: 1042;
  overflow: hidden;
  position: fixed;
  background: #0b0b0b;
  opacity: 0.8;
}

.mfp-wrap {
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  z-index: 1043;
  position: fixed;
  outline: none !important;
  -webkit-backface-visibility: hidden;
}

.mfp-container {
  text-align: center;
  position: absolute;
  width: 100%;
  height: 100%;
  left: 0;
  top: 0;
  padding: 0 8px;
  box-sizing: border-box;
}

.mfp-container:before {
  content: "";
  display: inline-block;
  height: 100%;
  vertical-align: middle;
}

.mfp-align-top .mfp-container:before {
  display: none;
}

.mfp-content {
  position: relative;
  display: inline-block;
  vertical-align: middle;
  margin: 0 auto;
  text-align: left;
  z-index: 1045;
}

.mfp-inline-holder .mfp-content,
.mfp-ajax-holder .mfp-content {
  width: 100%;
  cursor: auto;
}

.mfp-ajax-cur {
  cursor: progress;
}

.mfp-zoom-out-cur,
.mfp-zoom-out-cur .mfp-image-holder .mfp-close {
  cursor: zoom-out;
}

.mfp-zoom {
  cursor: pointer;
  cursor: zoom-in;
}

.mfp-auto-cursor .mfp-content {
  cursor: auto;
}

.mfp-close,
.mfp-arrow,
.mfp-preloader,
.mfp-counter {
  -webkit-user-select: none;
  -moz-user-select: none;
  user-select: none;
}

.mfp-loading.mfp-figure {
  display: none;
}

.mfp-hide {
  display: none !important;
}

.mfp-preloader {
  color: #CCC;
  position: absolute;
  top: 50%;
  width: auto;
  text-align: center;
  margin-top: -0.8em;
  left: 8px;
  right: 8px;
  z-index: 1044;
}

.mfp-preloader a {
  color: #CCC;
}

.mfp-preloader a:hover {
  color: #FFF;
}

.mfp-s-ready .mfp-preloader {
  display: none;
}

.mfp-s-error .mfp-content {
  display: none;
}

button.mfp-close,
button.mfp-arrow {
  overflow: visible;
  cursor: pointer;
  background: transparent;
  border: 0;
  -webkit-appearance: none;
  display: block;
  outline: none;
  padding: 0;
  z-index: 1046;
  box-shadow: none;
  touch-action: manipulation;
}

button::-moz-focus-inner {
  padding: 0;
  border: 0;
}

.mfp-close {
  width: 44px;
  height: 44px;
  line-height: 44px;
  position: absolute;
  right: 0;
  top: 0;
  text-decoration: none;
  text-align: center;
  opacity: 0.65;
  padding: 0 0 18px 10px;
  color: #FFF;
  font-style: normal;
  font-size: 28px;
  font-family: Arial, Baskerville, monospace;
}

.mfp-close:hover,
.mfp-close:focus {
  opacity: 1;
}

.mfp-close:active {
  top: 1px;
}

.mfp-close-btn-in .mfp-close {
  color: #333;
}

.mfp-image-holder .mfp-close,
.mfp-iframe-holder .mfp-close {
  color: #FFF;
  right: -6px;
  text-align: right;
  padding-right: 6px;
  width: 100%;
}

.mfp-counter {
  position: absolute;
  top: 0;
  right: 0;
  color: #CCC;
  font-size: 12px;
  line-height: 18px;
  white-space: nowrap;
}

.mfp-arrow {
  position: absolute;
  opacity: 0.65;
  margin: 0;
  top: 50%;
  margin-top: -55px;
  padding: 0;
  width: 90px;
  height: 110px;
  -webkit-tap-highlight-color: transparent;
}

.mfp-arrow:active {
  margin-top: -54px;
}

.mfp-arrow:hover,
.mfp-arrow:focus {
  opacity: 1;
}

.mfp-arrow:before,
.mfp-arrow:after {
  content: "";
  display: block;
  width: 0;
  height: 0;
  position: absolute;
  left: 0;
  top: 0;
  margin-top: 35px;
  margin-left: 35px;
  border: medium inset transparent;
}

.mfp-arrow:after {
  border-top-width: 13px;
  border-bottom-width: 13px;
  top: 8px;
}

.mfp-arrow:before {
  border-top-width: 21px;
  border-bottom-width: 21px;
  opacity: 0.7;
}

.mfp-arrow-left {
  left: 0;
}

.mfp-arrow-left:after {
  border-right: 17px solid #FFF;
  margin-left: 31px;
}

.mfp-arrow-left:before {
  margin-left: 25px;
  border-right: 27px solid #3F3F3F;
}

.mfp-arrow-right {
  right: 0;
}

.mfp-arrow-right:after {
  border-left: 17px solid #FFF;
  margin-left: 39px;
}

.mfp-arrow-right:before {
  border-left: 27px solid #3F3F3F;
}

.mfp-iframe-holder {
  padding-top: 40px;
  padding-bottom: 40px;
}

.mfp-iframe-holder .mfp-content {
  line-height: 0;
  width: 100%;
  max-width: 900px;
}

.mfp-iframe-holder .mfp-close {
  top: -40px;
}

.mfp-iframe-scaler {
  width: 100%;
  height: 0;
  overflow: hidden;
  padding-top: 56.25%;
}

.mfp-iframe-scaler iframe {
  position: absolute;
  display: block;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  box-shadow: 0 0 8px rgba(0, 0, 0, 0.6);
  background: #000;
}

/* Main image in popup */
img.mfp-img {
  width: auto;
  max-width: 100%;
  height: auto;
  display: block;
  line-height: 0;
  box-sizing: border-box;
  padding: 40px 0 40px;
  margin: 0 auto;
}

/* The shadow behind the image */
.mfp-figure {
  line-height: 0;
}

.mfp-figure:after {
  content: "";
  position: absolute;
  left: 0;
  top: 40px;
  bottom: 40px;
  display: block;
  right: 0;
  width: auto;
  height: auto;
  z-index: -1;
  box-shadow: 0 0 8px rgba(0, 0, 0, 0.6);
  background: #444;
}

.mfp-figure small {
  color: #BDBDBD;
  display: block;
  font-size: 12px;
  line-height: 14px;
}

.mfp-figure figure {
  margin: 0;
}

.mfp-bottom-bar {
  margin-top: -36px;
  position: absolute;
  top: 100%;
  left: 0;
  width: 100%;
  cursor: auto;
}

.mfp-title {
  text-align: left;
  line-height: 18px;
  color: #F3F3F3;
  word-wrap: break-word;
  padding-right: 36px;
}

.mfp-image-holder .mfp-content {
  max-width: 100%;
}

.mfp-gallery .mfp-image-holder .mfp-figure {
  cursor: pointer;
}

@media screen and (max-width: 800px) and (orientation: landscape), screen and (max-height: 300px) {
  /**
   * Remove all paddings around the image on small screen
   */
  .mfp-img-mobile .mfp-image-holder {
    padding-left: 0;
    padding-right: 0;
  }
  .mfp-img-mobile img.mfp-img {
    padding: 0;
  }
  .mfp-img-mobile .mfp-figure:after {
    top: 0;
    bottom: 0;
  }
  .mfp-img-mobile .mfp-figure small {
    display: inline;
    margin-left: 5px;
  }
  .mfp-img-mobile .mfp-bottom-bar {
    background: rgba(0, 0, 0, 0.6);
    bottom: 0;
    margin: 0;
    top: auto;
    padding: 3px 5px;
    position: fixed;
    box-sizing: border-box;
  }
  .mfp-img-mobile .mfp-bottom-bar:empty {
    padding: 0;
  }
  .mfp-img-mobile .mfp-counter {
    right: 5px;
    top: 3px;
  }
  .mfp-img-mobile .mfp-close {
    top: 0;
    right: 0;
    width: 35px;
    height: 35px;
    line-height: 35px;
    background: rgba(0, 0, 0, 0.6);
    position: fixed;
    text-align: center;
    padding: 0;
  }
}
@media all and (max-width: 900px) {
  .mfp-arrow {
    transform: scale(0.75);
  }
  .mfp-arrow-left {
    transform-origin: 0;
  }
  .mfp-arrow-right {
    transform-origin: 100%;
  }
  .mfp-container {
    padding-left: 6px;
    padding-right: 6px;
  }
}
/* purgecss end ignore */
.slide {
  background-size: cover;
  background-position: center;
  min-height: 600px;
}
.slide__logos {
  padding-top: 30px;
  background-color: rgba(var(--white), 0.8);
}
.slide__logos-image {
  display: block;
  margin: 0 auto;
  max-width: 100%;
  height: auto;
}

.hero{
	position: relative;
  margin-bottom: 0;
}
.hero .slide > div:after {
  content: "";
  position: absolute;
  top: 0px;
  left: 0px;
  z-index: 10;
  height: 100%;
  width: 100%;
  mix-blend-mode: multiply;
  background: #000000;
  background: linear-gradient(360deg, rgb(0, 0, 0) 0%, rgba(255, 255, 255, 0) 100%);
}
.hero .slide__label{
	position: relative;
	z-index: 20;
}
@media screen and (max-width: 1199px) {
  .hero {
    margin-bottom: 0;
  }
}

section.video{
	position: relative;
	height: 750px;
	width: 100vw;
	background-color: var(--black);
}
@media screen and (max-width: 990px) {
  section.video{
		height: 100vh;
	}
}
section.video #myVideo{
	position: absolute;
	top: 0px;
	left: 0px;
	z-index: 0;
	height: 100%;
	width: 100%;
	-o-object-fit: cover;
	   object-fit: cover;
}
section.video:before {
  content: "";
  position: absolute;
  top: 0px;
  left: 0px;
  z-index: 20;
  height: 100%;
  width: 100%;
  background-color: var(--black);
  opacity: 0.7;
}

.btn{
	display: inline-flex;
	width: 100%;
	align-items: center;
	justify-content: center;
	border-radius: 9999px;
	background-color: var(--primary-colour);
	padding-top: 0.5rem;
	padding-bottom: 0.5rem;
	padding-left: 1rem;
	padding-right: 1rem;
	text-align: center;
  margin-top: 30px;
  border: 1px solid var(--primary-colour);
  color: var(--white);
  max-width: 200px;
  min-height: 64px;
}
.btn:hover {
  background-color: var(--white);
  color: var(--primary-colour);
}
.btn--fluid {
  max-width: none;
}
.btn--white {
  border: 1px solid var(--white);
  color: var(--white);
}

.btn-wide {
  max-width: 375px;
}

.btn-sm {
  max-width: 150px;
}

.btn-video{
	font-size: 0.75rem;
	line-height: 1rem;
  background-color: rgba(0, 0, 0, 0.45);
  min-height: 50px;
  max-height: 50px;
  border: 2px solid var(--primary-colour);
}
.btn-video:hover {
  background-color: var(--primary-colour);
  color: var(--white);
}

.services-single__link{
	position: relative;
	display: flex;
	flex-direction: column;
	justify-content: flex-end;
	background-size: cover;
  border-bottom: 10px solid var(--grey);
  margin-bottom: 30px;
  min-height: 550px;
  padding: 30px 20px;
  background-position: center;
  background-color: var(--primary-colour);
  transition: all 0.5s;
}
.services-single__link:before {
  content: "";
  position: absolute;
  bottom: 0px;
  left: 0px;
  width: 100%;
  background-image: linear-gradient(rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.9));
  height: 50%;
}
.services-single__link:hover {
  background-blend-mode: multiply;
  border-bottom: 10px solid var(--black);
}
.services-single__link:hover:before {
  display: none;
}
.services-single__link:hover .services-single__icon {
  transform: scale(120%);
}
@media screen and (max-width: 767px) {
  .services-single__link {
    min-height: 250px;
  }
}
.services-single__icon {
  margin-bottom: 20px;
  position: relative;
  z-index: 1;
  transition: all 0.5s;
}
.services-single__title {
  margin-bottom: 0;
  position: relative;
  z-index: 1;
}
.services-single:nth-last-child(-n+3) .services-single__link {
  margin-bottom: 0;
}
@media screen and (max-width: 1199px) {
  .services-single:nth-last-child(-n+3) .services-single__link {
    margin-bottom: 30px;
  }
}
.services-single:nth-last-child(-n+2) .services-single__link {
  margin-bottom: 0;
}
@media screen and (max-width: 767px) {
  .services-single:nth-last-child(-n+2) .services-single__link {
    margin-bottom: 30px;
  }
}
.services-single:nth-last-child(-n+1) .services-single__link {
  margin-bottom: 0;
}

.work-single__title {
  margin-bottom: 0;
  padding: 30px 0;
}

.gallery-single {
  margin-bottom: 30px;
}
.gallery-single__link {
  padding-bottom: 54%;
  display: block;
  background-position: center;
  background-size: cover;
}

section.services.gallery {
  padding-bottom: 30px;
}

footer .legal .separator {
  margin: 0 10px;
}
@media screen and (max-width: 991px) {
  footer .legal .separator:first-of-type{
		display: none;
	}
}
footer a:hover{
	color: var(--black);
}

.footer__logos {
  margin-bottom: 30px;
}
.footer__logos-image {
  display: block;
  margin: 0 auto;
  width: 100px;
  max-width: 100%;
  height: auto;
}

.title-red h2, .title-red h3, .title-red h4{
	color: var(--primary-colour);
}

.areas-footer-menu ul{
	margin: 0px;
	display: block;
	list-style-type: none;
	padding: 0px;
}

ul.pagination{
	margin-bottom: 3rem;
	display: flex;
	list-style-type: none;
	align-items: center;
	justify-content: center;
	gap: 1rem;
	text-align: center;
}
ul.pagination li{
	display: flex;
	height: 3rem;
	width: 3rem;
	align-items: center;
	justify-content: center;
	border-radius: 9999px;
	background-color: var(--primary-colour);
	line-height: 1;
	color: var(--white);
}
ul.pagination li a{
	display: flex;
	height: 100%;
	width: 100%;
	align-items: center;
	justify-content: center;
	padding: 0.75rem;
	line-height: 1;
}
ul.pagination li.active{
	background-color: var(--black);
}
ul.pagination li.disabled{
	cursor: not-allowed;
	opacity: 0.5;
}
ul.pagination li:has(a):hover{
	background-color: var(--black);
}

.success-message{
	font-size: 1.125rem;
	line-height: 1.75rem;
	font-weight: 700;
	color: var(--success);
}

.error-message{
	font-size: 1.125rem;
	line-height: 1.75rem;
	font-weight: 700;
	color: var(--danger);
}

span.help-block{
	color: var(--danger);
}

#cookies-bar{
	position: fixed;
	bottom: 0px;
	left: 0px;
	z-index: 50;
	width: 100%;
	border-top-width: 1px;
	border-color: var(--primary-colour);
	background-color: var(--white);
	padding: 2rem;
	text-align: left;
	color: var(--black);
}

#cookies-bar-tab{
	display: flex;
	height: 4rem;
	width: 4rem;
	cursor: pointer;
	align-items: center;
	justify-content: center;
	border-radius: 9999px;
	border-width: 1px;
	border-color: var(--black);
	background-color: var(--white);
	text-align: center;
	font-size: 2.25rem;
	line-height: 2.5rem;
	color: var(--black);
  position: fixed;
  bottom: 15px;
  left: 10px;
  z-index: 10000;
}

.sr-only{
	position: absolute;
	width: 1px;
	height: 1px;
	padding: 0;
	margin: -1px;
	overflow: hidden;
	clip: rect(0, 0, 0, 0);
	white-space: nowrap;
	border-width: 0;
}

.invisible{
	visibility: hidden;
}

.static{
	position: static;
}

.fixed{
	position: fixed;
}

.absolute{
	position: absolute;
}

.relative{
	position: relative;
}

.sticky{
	position: sticky;
}

.top-0{
	top: 0px;
}

.left-0{
	left: 0px;
}

.right-2{
	right: 0.5rem;
}

.z-30{
	z-index: 30;
}

.z-20{
	z-index: 20;
}

.order-1{
	order: 1;
}

.order-2{
	order: 2;
}

.col-span-12{
	grid-column: span 12 / span 12;
}

.mx-auto{
	margin-left: auto;
	margin-right: auto;
}

.my-12{
	margin-top: 3rem;
	margin-bottom: 3rem;
}

.my-4{
	margin-top: 1rem;
	margin-bottom: 1rem;
}

.mx-8{
	margin-left: 2rem;
	margin-right: 2rem;
}

.mb-6{
	margin-bottom: 1.5rem;
}

.mr-6{
	margin-right: 1.5rem;
}

.mb-2{
	margin-bottom: 0.5rem;
}

.\!mt-6{
	margin-top: 1.5rem !important;
}

.mt-6{
	margin-top: 1.5rem;
}

.mt-4{
	margin-top: 1rem;
}

.mr-4{
	margin-right: 1rem;
}

.mb-3{
	margin-bottom: 0.75rem;
}

.\!mb-6{
	margin-bottom: 1.5rem !important;
}

.mb-10{
	margin-bottom: 2.5rem;
}

.mb-0{
	margin-bottom: 0px;
}

.mt-10{
	margin-top: 2.5rem;
}

.mr-auto{
	margin-right: auto;
}

.ml-auto{
	margin-left: auto;
}

.\!mt-8{
	margin-top: 2rem !important;
}

.\!mb-4{
	margin-bottom: 1rem !important;
}

.mt-auto{
	margin-top: auto;
}

.\!mb-12{
	margin-bottom: 3rem !important;
}

.mt-12{
	margin-top: 3rem;
}

.mb-12{
	margin-bottom: 3rem;
}

.mb-4{
	margin-bottom: 1rem;
}

.mt-2{
	margin-top: 0.5rem;
}

.mt-0{
	margin-top: 0px;
}

.mb-1{
	margin-bottom: 0.25rem;
}

.mr-10{
	margin-right: 2.5rem;
}

.ml-4{
	margin-left: 1rem;
}

.ml-6{
	margin-left: 1.5rem;
}

.mr-2{
	margin-right: 0.5rem;
}

.mt-5{
	margin-top: 1.25rem;
}

.mb-8{
	margin-bottom: 2rem;
}

.mt-8{
	margin-top: 2rem;
}

.mt-24{
	margin-top: 6rem;
}

.\!mb-0{
	margin-bottom: 0px !important;
}

.mt-16{
	margin-top: 4rem;
}

.block{
	display: block;
}

.inline-block{
	display: inline-block;
}

.flex{
	display: flex;
}

.table{
	display: table;
}

.grid{
	display: grid;
}

.hidden{
	display: none;
}

.h-auto{
	height: auto;
}

.h-\[600px\]{
	height: 600px;
}

.h-full{
	height: 100%;
}

.h-6{
	height: 1.5rem;
}

.min-h-\[600px\]{
	min-height: 600px;
}

.w-full{
	width: 100%;
}

.w-6{
	width: 1.5rem;
}

.w-1\/2{
	width: 50%;
}

.min-w-\[650px\]{
	min-width: 650px;
}

.max-w-full{
	max-width: 100%;
}

.max-w-\[75\%\]{
	max-width: 75%;
}

.flex-1{
	flex: 1 1 0%;
}

.flex-grow{
	flex-grow: 1;
}

.resize{
	resize: both;
}

.grid-cols-12{
	grid-template-columns: repeat(12, minmax(0, 1fr));
}

.flex-col{
	flex-direction: column;
}

.flex-wrap{
	flex-wrap: wrap;
}

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

.justify-start{
	justify-content: flex-start;
}

.justify-end{
	justify-content: flex-end;
}

.justify-center{
	justify-content: center;
}

.justify-between{
	justify-content: space-between;
}

.justify-around{
	justify-content: space-around;
}

.gap-4{
	gap: 1rem;
}

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

.rounded-xl{
	border-radius: 0.75rem;
}

.rounded-lg{
	border-radius: 0.5rem;
}

.rounded{
	border-radius: 0.25rem;
}

.border{
	border-width: 1px;
}

.border-primary{
	border-color: var(--primary-colour);
}

.bg-primary{
	background-color: var(--primary-colour);
}

.bg-black{
	background-color: var(--black);
}

.bg-white{
	background-color: var(--white);
}

.bg-lightgrey{
	background-color: var(--light-grey);
}

.bg-cover{
	background-size: cover;
}

.bg-center{
	background-position: center;
}

.bg-no-repeat{
	background-repeat: no-repeat;
}

.p-1{
	padding: 0.25rem;
}

.p-4{
	padding: 1rem;
}

.p-12{
	padding: 3rem;
}

.p-6{
	padding: 1.5rem;
}

.p-0{
	padding: 0px;
}

.py-10{
	padding-top: 2.5rem;
	padding-bottom: 2.5rem;
}

.px-4{
	padding-left: 1rem;
	padding-right: 1rem;
}

.py-2{
	padding-top: 0.5rem;
	padding-bottom: 0.5rem;
}

.px-12{
	padding-left: 3rem;
	padding-right: 3rem;
}

.py-16{
	padding-top: 4rem;
	padding-bottom: 4rem;
}

.py-8{
	padding-top: 2rem;
	padding-bottom: 2rem;
}

.px-6{
	padding-left: 1.5rem;
	padding-right: 1.5rem;
}

.py-4{
	padding-top: 1rem;
	padding-bottom: 1rem;
}

.py-3{
	padding-top: 0.75rem;
	padding-bottom: 0.75rem;
}

.py-6{
	padding-top: 1.5rem;
	padding-bottom: 1.5rem;
}

.py-24{
	padding-top: 6rem;
	padding-bottom: 6rem;
}

.px-0{
	padding-left: 0px;
	padding-right: 0px;
}

.px-2{
	padding-left: 0.5rem;
	padding-right: 0.5rem;
}

.px-8{
	padding-left: 2rem;
	padding-right: 2rem;
}

.py-12{
	padding-top: 3rem;
	padding-bottom: 3rem;
}

.px-10{
	padding-left: 2.5rem;
	padding-right: 2.5rem;
}

.py-20{
	padding-top: 5rem;
	padding-bottom: 5rem;
}

.pb-12{
	padding-bottom: 3rem;
}

.pt-6{
	padding-top: 1.5rem;
}

.pl-6{
	padding-left: 1.5rem;
}

.pr-16{
	padding-right: 4rem;
}

.pr-4{
	padding-right: 1rem;
}

.pb-16{
	padding-bottom: 4rem;
}

.pr-8{
	padding-right: 2rem;
}

.\!pt-0{
	padding-top: 0px !important;
}

.\!pb-0{
	padding-bottom: 0px !important;
}

.pb-8{
	padding-bottom: 2rem;
}

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

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

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

.text-6xl{
	font-size: 3.75rem;
	line-height: 1;
}

.text-sm{
	font-size: 0.875rem;
	line-height: 1.25rem;
}

.text-4xl{
	font-size: 2.25rem;
	line-height: 2.5rem;
}

.text-3xl{
	font-size: 1.875rem;
	line-height: 2.25rem;
}

.text-xl{
	font-size: 1.25rem;
	line-height: 1.75rem;
}

.text-lg{
	font-size: 1.125rem;
	line-height: 1.75rem;
}

.text-2xl{
	font-size: 1.5rem;
	line-height: 2rem;
}

.font-bold{
	font-weight: 700;
}

.font-light{
	font-weight: 300;
}

.font-normal{
	font-weight: 400;
}

.uppercase{
	text-transform: uppercase;
}

.capitalize{
	text-transform: capitalize;
}

.leading-loose{
	line-height: 2;
}

.leading-normal{
	line-height: 1.5;
}

.leading-relaxed{
	line-height: 1.625;
}

.leading-tight{
	line-height: 1.25;
}

.tracking-normal{
	letter-spacing: 0em;
}

.text-success{
	color: var(--success);
}

.text-danger{
	color: var(--danger);
}

.text-white{
	color: var(--white);
}

.text-primary{
	color: var(--primary-colour);
}

.text-black{
	color: var(--black);
}

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

.shadow{
	--tw-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06);
	box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
}

.brightness-0{
	--tw-brightness: brightness(0);
	filter: var(--tw-filter);
}

.invert{
	--tw-invert: invert(100%);
	filter: var(--tw-filter);
}
::backdrop {
  background-color: rgba(0, 0, 0, 0.5);
}

dialog{
	border-radius: 0.5rem;
	background-color: var(--white);
	--tw-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);
	box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
}

.video-testimonial-carousel {
  position: relative;
  display: flex;
  align-items: center;
  gap: 15px;
  margin-top: 30px;
}

.video-testimonial-viewport {
  width: 100%;
  overflow: hidden;
}

.video-testimonial-track {
  display: flex;
  gap: 20px;
  padding-bottom: 4px;
  overflow-x: auto;
  scroll-snap-type: x mandatory;
  scrollbar-width: none;
  -ms-overflow-style: none;
}

.video-testimonial-track::-webkit-scrollbar {
  display: none;
}

.video-testimonial-arrow {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 45px;
  height: 30px;
  min-width: 45px;
  padding: 0;
  border: 0;
  background: transparent;
  font-size: 0;
  cursor: pointer;
}

.video-testimonial-arrow::after {
  font-size: 32px;
  line-height: 32px;
  font-family: "Font Awesome 6 Pro", "Font Awesome 6 Free", sans-serif;
  font-weight: 900;
  color: #bf181a;
}

.video-testimonial-arrow--next::after {
  content: "\f356";
}

.video-testimonial-arrow--prev::after {
  content: "\f355";
}

.video-testimonial-arrow:disabled {
  opacity: 0.3;
  cursor: not-allowed;
}

.video-testimonial-arrow:focus {
  outline: none;
}

.testimonial-video-card {
  flex: 0 0 calc((100% - 40px) / 3);
  display: block;
  width: 100%;
  padding: 0;
  overflow: hidden;
  scroll-snap-align: start;
  text-align: left;
  text-decoration: none;
  cursor: pointer;
  background: #fff;
}

.testimonial-video-card:hover,
.testimonial-video-card:focus-visible {
  text-decoration: none;
}

.testimonial-video-card img {
  display: block;
  width: 100%;
  aspect-ratio: 16/9;
  -o-object-fit: cover;
     object-fit: cover;
  transition: transform 0.2s ease;
}

.testimonial-video-card:hover img,
.testimonial-video-card:focus-visible img {
  transform: scale(1.06);
}

.testimonial-video-modal {
  display: none;
  position: fixed;
  inset: 0;
  z-index: 1200;
  align-items: center;
  justify-content: center;
}

.testimonial-video-modal.is-open {
  display: flex;
}

.testimonial-video-modal__backdrop {
  position: absolute;
  inset: 0;
  background: rgba(0, 0, 0, 0.8);
}

.testimonial-video-modal__content {
  position: relative;
  z-index: 1;
  width: min(960px, 100% - 30px);
}

.testimonial-video-modal__close {
  position: absolute;
  top: -42px;
  right: 0;
  border: 0;
  background: transparent;
  color: #fff;
  font-size: 32px;
  line-height: 1;
  cursor: pointer;
}

.testimonial-video-modal__frame {
  position: relative;
  width: 100%;
  padding-top: 56.25%;
  background: #000;
}

.testimonial-video-modal__frame iframe {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
}

body.modal-open {
  overflow: hidden;
}

@media screen and (max-width: 991px) {
  .video-testimonial-carousel {
    gap: 8px;
  }
  .testimonial-video-card {
    flex: 0 0 calc((100% - 20px) / 2);
  }
}
@media screen and (max-width: 767px) {
  .video-testimonial-arrow {
    width: 35px;
    min-width: 35px;
  }
  .testimonial-video-card {
    flex: 0 0 100%;
  }
}
.testimonial-video-card__media {
  position: relative;
  display: block;
  width: 100%;
}

.testimonial-video-card__media::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 1;
  background: rgba(0, 0, 0, 0.2);
  pointer-events: none;
  transition: background 0.2s ease;
}

.testimonial-video-card:hover .testimonial-video-card__media::before,
.testimonial-video-card:focus-visible .testimonial-video-card__media::before {
  background: rgba(0, 0, 0, 0.35);
}

.testimonial-video-card__play {
  position: absolute;
  top: 50%;
  left: 50%;
  z-index: 2;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 56px;
  height: 56px;
  border-radius: 50%;
  background: rgba(191, 24, 26, 0.92);
  box-shadow: 0 4px 16px rgba(0, 0, 0, 0.25);
  transform: translate(-50%, -50%);
  pointer-events: none;
  transition: transform 0.2s ease, background 0.2s ease;
}

.testimonial-video-card__play::after {
  content: "\f04b";
  margin-left: 3px;
  font-family: "Font Awesome 6 Pro", "Font Awesome 6 Free", sans-serif;
  font-size: 20px;
  font-weight: 900;
  line-height: 1;
  color: #fff;
}

.testimonial-video-card:hover .testimonial-video-card__play,
.testimonial-video-card:focus-visible .testimonial-video-card__play {
  transform: translate(-50%, -50%) scale(1.06);
  background: #bf181a;
}

@media screen and (max-width: 767px) {
  .testimonial-video-card__play {
    width: 48px;
    height: 48px;
  }
  .testimonial-video-card__play::after {
    font-size: 17px;
  }
}

.hover\:no-underline:hover{
	text-decoration: none;
}

.hover\:outline-none:hover{
	outline: 2px solid transparent;
	outline-offset: 2px;
}

@media (min-width: 575px){
	.sm\:col-3{
		flex: 0 0 auto;
		width: 25%;
	}
	.sm\:col-4{
		flex: 0 0 auto;
		width: 33.333333333333336%;
	}
	.sm\:col-5{
		flex: 0 0 auto;
		width: 41.66666666666667%;
	}
	.sm\:col-6{
		flex: 0 0 auto;
		width: 50%;
	}
	.sm\:col-7{
		flex: 0 0 auto;
		width: 58.333333333333336%;
	}
	.sm\:col-9{
		flex: 0 0 auto;
		width: 75%;
	}
	.sm\:col-12{
		flex: 0 0 auto;
		width: 100%;
	}
	.sm\:mt-0{
		margin-top: 0px;
	}
	.sm\:ml-6{
		margin-left: 1.5rem;
	}
	.sm\:mt-16{
		margin-top: 4rem;
	}
	.sm\:bg-fixed{
		background-attachment: fixed;
	}
	.sm\:text-right{
		text-align: right;
	}
	.sm\:text-3xl{
		font-size: 1.875rem;
		line-height: 2.25rem;
	}
}

@media (min-width: 768px){
	.md\:col-2{
		flex: 0 0 auto;
		width: 16.666666666666668%;
	}
	.md\:col-3{
		flex: 0 0 auto;
		width: 25%;
	}
	.md\:col-4{
		flex: 0 0 auto;
		width: 33.333333333333336%;
	}
	.md\:col-6{
		flex: 0 0 auto;
		width: 50%;
	}
	.md\:col-8{
		flex: 0 0 auto;
		width: 66.66666666666667%;
	}
	.md\:col-10{
		flex: 0 0 auto;
		width: 83.33333333333334%;
	}
	.md\:order-1{
		order: 1;
	}
	.md\:order-2{
		order: 2;
	}
	.md\:order-1{
		order: 1;
	}
	.md\:order-2{
		order: 2;
	}
	.md\:col-span-8{
		grid-column: span 8 / span 8;
	}
	.md\:col-start-3{
		grid-column-start: 3;
	}
	.md\:mb-0{
		margin-bottom: 0px;
	}
	.md\:mt-8{
		margin-top: 2rem;
	}
	.md\:mt-0{
		margin-top: 0px;
	}
	.md\:mb-4{
		margin-bottom: 1rem;
	}
	.md\:p-6{
		padding: 1.5rem;
	}
	.md\:p-8{
		padding: 2rem;
	}
	.md\:py-48{
		padding-top: 12rem;
		padding-bottom: 12rem;
	}
	.md\:px-6{
		padding-left: 1.5rem;
		padding-right: 1.5rem;
	}
	.md\:text-4xl{
		font-size: 2.25rem;
		line-height: 2.5rem;
	}
}

@media (min-width: 992px){
	.lg\:col-4{
		flex: 0 0 auto;
		width: 33.333333333333336%;
	}
	.lg\:col-6{
		flex: 0 0 auto;
		width: 50%;
	}
	.lg\:absolute{
		position: absolute;
	}
	.lg\:relative{
		position: relative;
	}
	.lg\:my-0{
		margin-top: 0px;
		margin-bottom: 0px;
	}
	.lg\:mb-0{
		margin-bottom: 0px;
	}
	.lg\:mb-12{
		margin-bottom: 3rem;
	}
	.lg\:ml-0{
		margin-left: 0px;
	}
	.lg\:mt-0{
		margin-top: 0px;
	}
	.lg\:flex{
		display: flex;
	}
	.lg\:hidden{
		display: none;
	}
	.lg\:w-auto{
		width: auto;
	}
	.lg\:w-2\/3{
		width: 66.666667%;
	}
	.lg\:w-1\/3{
		width: 33.333333%;
	}
	.lg\:w-1\/2{
		width: 50%;
	}
	.lg\:flex-row{
		flex-direction: row;
	}
	.lg\:flex-row-reverse{
		flex-direction: row-reverse;
	}
	.lg\:flex-col{
		flex-direction: column;
	}
	.lg\:flex-col-reverse{
		flex-direction: column-reverse;
	}
	.lg\:items-center{
		align-items: center;
	}
	.lg\:bg-white{
		background-color: var(--white);
	}
	.lg\:bg-transparent{
		background-color: transparent;
	}
	.lg\:p-0{
		padding: 0px;
	}
	.lg\:p-12{
		padding: 3rem;
	}
	.lg\:py-12{
		padding-top: 3rem;
		padding-bottom: 3rem;
	}
	.lg\:px-8{
		padding-left: 2rem;
		padding-right: 2rem;
	}
	.lg\:text-4xl{
		font-size: 2.25rem;
		line-height: 2.5rem;
	}
	.lg\:text-5xl{
		font-size: 3rem;
		line-height: 1;
	}
}

@media (min-width: 1200px){
	.xl\:mt-10{
		margin-top: 2.5rem;
	}
	.xl\:ml-12{
		margin-left: 3rem;
	}
	.xl\:mb-0{
		margin-bottom: 0px;
	}
	.xl\:flex{
		display: flex;
	}
}

/*# sourceMappingURL=data:application/json;charset=utf-8;base64,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QTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBSmdISjs7QUk3R0E7RUFDSTtFQUNBO0FKZ0hKOztBSTdHQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUpnSEo7O0FJN0dBOztFQUVJO0FKZ0hKOztBSTdHQTtFQUNJO0FKZ0hKOztBSTdHQTtFQUNJO0FKZ0hKOztBSTdHQTs7RUFFSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FKZ0hKOztBSTdHQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FKZ0hKOztBSTdHQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBSmdISjs7QUk3R0E7RUFDSTtBSmdISjs7QUk3R0E7O0VBRUk7QUpnSEo7O0FJN0dBOztFQUVJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FKZ0hKOztBSTdHQTtFQUNJO0VBQ0E7RUFDQTtBSmdISjs7QUk3R0E7RUFDSTtFQUNBO0VBQ0E7QUpnSEo7O0FJN0dBO0VBQ0k7QUpnSEo7O0FJN0dBO0VBQ0k7RUFDQTtBSmdISjs7QUk3R0E7RUFDSTtFQUNBO0FKZ0hKOztBSTdHQTtFQUNJO0FKZ0hKOztBSTdHQTtFQUNJO0VBQ0E7QUpnSEo7O0FJN0dBO0VBQ0k7QUpnSEo7O0FJN0dBO0VBQ0k7RUFDQTtBSmdISjs7QUk3R0E7RUFDSTtFQUNBO0VBQ0E7QUpnSEo7O0FJN0dBO0VBQ0k7QUpnSEo7O0FJN0dBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QUpnSEo7O0FJN0dBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBSmdISjs7QUk3R0E7QUFDQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUpnSEo7O0FJN0dBO0FBQ0E7RUFDSTtBSmdISjs7QUk3R0E7RUFDSTtFQUNBO0VBQ0E7RUFD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WjtFQUFBO0VBQUE7QUhzbERBO0FHdGxEQTtDQUFBO0NBQUE7O0FDbWhESTtFQUNJO0FKeUVSO0FJdEVJO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBSndFUjs7QUdwbURBO0NBQUE7Q0FBQTs7QUFBQTtDQUFBO0NBQUE7Q0FBQTtDQUFBO0NBQUE7O0FBQUE7Q0FBQTtDQUFBO0NBQUE7Q0FBQTtDQUFBO0NBQUE7Q0FBQTtDQUFBO0FBQUE7Q0FBQTtDQUFBO0NBQUE7Q0FBQTtDQUFBO0NBQUE7Q0FBQTtDQUFBO0NBQUE7Q0FBQTtBQUFBO0NBQUE7Q0FBQTtDQUFBO0NBQUE7Q0FBQTtDQUFBO0NBQUE7Q0FBQTtBQUFBO0NBQUE7Q0FBQTtBQUFBO0NBQUE7Q0FBQTtDQUFBO0FBQUE7Q0FBQTtDQUFBOztBQUFBO0NBQUE7Q0FBQTtDQUFBO0NBQUE7Q0FBQTs7QUFBQTtDQUFBO0NBQUE7Q0FBQTtDQUFBO0NBQUE7O0FBQUE7Q0FBQTtDQUFBOztBQUFBO0NBQUE7Q0FBQTtDQUFBO0NBQUE7Q0FBQTtDQUFBO0NBQUE7Q0FBQTtDQUFBO0NBQUE7Q0FBQTtDQUFBOztBQUFBO0NBQUE7Q0FBQTtDQUFBO0NBQUE7Q0FBQTtDQUFBO0NBQUE7Q0FBQTtDQUFBO0NBQUE7Q0FBQTtDQUFBO0NBQUE7Q0FBQTtFRVFRO0VBQ0E7RUFDQTtFQUNBO0NGWFI7O0FIT0E7Q0dQQTtDQUFBO0NBQUE7Q0FBQTtDQUFBO0NBQUE7Q0FBQTtDQUFBO0NBQUE7QUhPQTs7QUFBQTtDR1BBO0FIT0E7O0FBQUE7Q0dQQTtBSE9BOztBQUFBO0NHUEE7QUhPQTs7QUFBQTtDR1BBO0FIT0E7O0FBQUE7Q0dQQTtBSE9BOztBQUFBO0NHUEE7QUhPQTs7QUFBQTtDR1BBO0FIT0E7O0FBQUE7Q0dQQTtBSE9BOztBQUFBO0NHUEE7QUhPQTs7QUFBQTtDR1BBO0FIT0E7O0FBQUE7Q0dQQTtBSE9BOztBQUFBO0NHUEE7QUhPQTs7QUFBQTtDR1BBO0FIT0E7O0FBQUE7Q0dQQTtBSE9BOztBQUFBO0NHUEE7Q0FBQTtBSE9BOztBQUFBO0NHUEE7Q0FBQTtBSE9BOztBQUFBO0NHUEE7Q0FBQTtBSE9BOztBQUFBO0NHUEE7Q0FBQTtBSE9BOztBQUFBO0NHUEE7QUhPQTs7QUFBQTtDR1BBO0FIT0E7O0FBQUE7Q0dQQTtBSE9BOztBQUFBO0NHUEE7QUhPQTs7QUFBQTtDR1BBO0FIT0E7O0FBQUE7Q0dQQTtBSE9BOztBQUFBO0NHUEE7QUhPQTs7QUFBQTtDR1BBO0FIT0E7O0FBQUE7Q0dQQTtBSE9BOztBQUFBO0NHUEE7QUhPQTs7QUFBQTtDR1BBO0FIT0E7O0FBQUE7Q0dQQTtBSE9BOztBQUFBO0NHUEE7QUhPQTs7QUFBQTtDR1BBO0FIT0E7O0FBQUE7Q0dQQTtBSE9BOztBQUFBO0NHUEE7QUhPQTs7QUFBQTtDR1BBO0FIT0E7O0FBQUE7Q0dQQTtBSE9BOztBQUFBO0NHUEE7QUhPQTs7QUFBQTtDR1BBO0FIT0E7O0FBQUE7Q0dQQTtBSE9BOztBQUFBO0NHUEE7QUhPQTs7QUFBQTtDR1BBO0FIT0E7O0FBQUE7Q0dQQTtBSE9BOztBQUFBO0NHUEE7QUhPQTs7QUFBQTtDR1BBO0FIT0E7O0FBQUE7Q0dQQTtBSE9BOztBQUFBO0NHUEE7QUhPQTs7QUFBQTtDR1BBO0FIT0E7O0FBQUE7Q0dQQTtBSE9BOztBQUFBO0NHUEE7QUhPQTs7QUFBQTtDR1BBO0FIT0E7O0FBQUE7Q0dQQTtBSE9BOztBQUFBO0NHUEE7QUhPQTs7QUFBQTtDR1BBO0FIT0E7O0FBQUE7Q0dQQTtBSE9BOztBQUFBO0NHUEE7QUhPQTs7QUFBQTtDR1BBO0FIT0E7O0FBQUE7Q0dQQTtBSE9BOztBQUFBO0NHUEE7QUhPQTs7QUFBQTtDR1BBO0FIT0E7O0FBQUE7Q0dQQTtBSE9BOztBQUFBO0NHUEE7QUhPQTs7QUFBQTtDR1BBO0FIT0E7O0FBQUE7Q0dQQTtBSE9BOztBQUFBO0NHUEE7QUhPQTs7QUFBQTtDR1BBO0FIT0E7O0FBQUE7Q0dQQTtBSE9BOztBQUFBO0NHUEE7QUhPQTs7QUFBQTtDR1BBO0FIT0E7O0FBQUE7Q0dQQTtBSE9BOztBQUFBO0NHUEE7QUhPQTs7QUFBQTtDR1BBO0FIT0E7O0FBQUE7Q0dQQTtBSE9BOztBQUFBO0NHUEE7QUhPQTs7QUFBQTtDR1BBO0FIT0E7O0FBQUE7Q0dQQTtBSE9BOztBQUFBO0NHUEE7QUhPQTs7QUFBQTtDR1BBO0FIT0E7O0FBQUE7Q0dQQTtBSE9BOztBQUFBO0NHUEE7QUhPQTs7QUFBQTtDR1BBO0FIT0E7O0FBQUE7Q0dQQTtBSE9BOztBQUFBO0NHUEE7QUhPQTs7QUFBQTtDR1BBO0FIT0E7O0FBQUE7Q0dQQTtBSE9BOztBQUFBO0NHUEE7QUhPQTs7QUFBQTtDR1BBO0FIT0E7O0FBQUE7Q0dQQTtBSE9BOztBQUFBO0NHUEE7QUhPQTs7QUFBQTtDR1BBO0FIT0E7O0FBQUE7Q0dQQTtBSE9BOztBQUFBO0NHUEE7QUhPQTs7QUFBQTtDR1BBO0FIT0E7O0FBQUE7Q0dQQTtBSE9BOztBQUFBO0NHUEE7QUhPQTs7QUFBQTtDR1BBO0FIT0E7O0FBQUE7Q0dQQTtBSE9BOztBQUFBO0NHUEE7QUhPQTs7QUFBQTtDR1BBO0FIT0E7O0FBQUE7Q0dQQTtBSE9BOztBQUFBO0NHUEE7QUhPQTs7QUFBQTtDR1BBO0NBQUE7QUhPQTs7QUFBQTtDR1BBO0NBQUE7QUhPQTs7QUFBQTtDR1BBO0NBQUE7QUhPQTs7QUFBQTtDR1BBO0NBQUE7QUhPQTs7QUFBQTtDR1BBO0NBQUE7QUhPQTs7QUFBQTtDR1BBO0NBQUE7QUhPQTs7QUFBQTtDR1BBO0NBQUE7QUhPQTs7QUFBQTtDR1BBO0NBQUE7QUhPQTs7QUFBQTtDR1BBO0NBQUE7QUhPQTs7QUFBQTtDR1BBO0NBQUE7QUhPQTs7QUFBQTtDR1BBO0NBQUE7QUhPQTs7QUFBQTtDR1BBO0NBQUE7QUhPQTs7QUFBQTtDR1BBO0NBQUE7QUhPQTs7QUFBQTtDR1BBO0NBQUE7QUhPQTs7QUFBQTtDR1BBO0NBQUE7QUhPQTs7QUFBQTtDR1BBO0NBQUE7QUhPQTs7QUFBQTtDR1BBO0NBQUE7QUhPQTs7QUFBQTtDR1BBO0FIT0E7O0FBQUE7Q0dQQTtBSE9BOztBQUFBO0NHUEE7QUhPQTs7QUFBQTtDR1BBO0FIT0E7O0FBQUE7Q0dQQTtBSE9BOztBQUFBO0NHUEE7QUhPQTs7QUFBQTtDR1BBO0FIT0E7O0FBQUE7Q0dQQTtBSE9BOztBQUFBO0NHUEE7QUhPQTs7QUFBQTtDR1BBO0FIT0E7O0FBQUE7Q0dQQTtBSE9BOztBQUFBO0NHUEE7QUhPQTs7QUFBQTtDR1BBO0FIT0E7O0FBQUE7Q0dQQTtDQUFBO0FIT0E7O0FBQUE7Q0dQQTtDQUFBO0FIT0E7O0FBQUE7Q0dQQTtDQUFBO0FIT0E7O0FBQUE7Q0dQQTtDQUFBO0FIT0E7O0FBQUE7Q0dQQTtDQUFBO0FIT0E7O0FBQUE7Q0dQQTtDQUFBO0FIT0E7O0FBQUE7Q0dQQTtDQUFBO0FIT0E7O0FBQUE7Q0dQQTtBSE9BOztBQUFBO0NHUEE7QUhPQTs7QUFBQTtDR1BBO0FIT0E7O0FBQUE7Q0dQQTtBSE9BOztBQUFBO0NHUEE7QUhPQTs7QUFBQTtDR1BBO0FIT0E7O0FBQUE7Q0dQQTtBSE9BOztBQUFBO0NHUEE7QUhPQTs7QUFBQTtDR1BBO0FIT0E7O0FBQUE7Q0dQQTtBSE9BOztBQUFBO0NHUEE7QUhPQTs7QUFBQTtDR1BBO0FIT0E7O0FBQUE7Q0dQQTtBSE9BOztBQUFBO0NHUEE7QUhPQTs7QUFBQTtDR1BBO0FIT0E7O0FBQUE7Q0dQQTtBSE9BOztBQUFBO0NHUEE7Q0FBQTtBSE9BOztBQUFBO0NHUEE7Q0FBQTtBSE9BOztBQUFBO0NHUEE7Q0FBQTtBSE9BO0FBRUE7RUFDSTtBQWtwREo7O0FHNXBEQTtDQUFBO0NBQUE7Q0FBQTtDQUFBO0NBQUE7O0FIaUJBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBQWtwREo7O0FBL29EQTtFQUNJO0VBQ0E7QUFrcERKOztBQS9vREE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBQWtwREo7O0FBL29EQTtFQUNJO0FBa3BESjs7QUEvb0RBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FBa3BESjs7QUEvb0RBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBQWtwREo7O0FBL29EQTtFQUNJO0FBa3BESjs7QUEvb0RBO0VBQ0k7QUFrcERKOztBQS9vREE7RUFDSTtFQUNBO0FBa3BESjs7QUEvb0RBO0VBQ0k7QUFrcERKOztBQS9vREE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBQWtwREo7O0FBL29EQTs7RUFFSTtBQWtwREo7O0FBL29EQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0tBQUE7RUFDQTtBQWtwREo7O0FBL29EQTs7RUFFSTtBQWtwREo7O0FBL29EQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBQWtwREo7O0FBL29EQTtFQUNJO0FBa3BESjs7QUEvb0RBO0VBQ0k7RUFDQTtFQUNBO0FBa3BESjs7QUEvb0RBO0VBQ0k7RUFDQTtFQUNBO0FBa3BESjs7QUEvb0RBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FBa3BESjs7QUEvb0RBO0VBQ0k7RUFDQTtFQUNBO0VBQ0E7QUFrcERKOztBQS9vREE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtBQWtwREo7O0FBL29EQTtFQUNJO0FBa3BESjs7QUEvb0RBO0VBQ0k7SUFDSTtFQWtwRE47RUEvb0RFO0lBQ0k7RUFpcEROO0FBQ0Y7QUE5b0RBO0VBQ0k7SUFDSTtJQUNBO0VBZ3BETjtFQTdvREU7SUFDSTtFQStvRE47QUFDRjtBQTVvREE7RUFDSTtFQUNBO0VBQ0E7QUE4b0RKOztBQTNvREE7RUFDSTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBQThvREo7O0FBM29EQTs7RUFFSTtBQThvREo7O0FBM29EQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQSxxREFDSTtBQTZvRFI7O0FBem9EQTtFQUNJO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FBNG9ESjs7QUF6b0RBOztFQUVJO0VBQ0E7QUE0b0RKOztBQTFvREE7RUFDSTtJQUNJO0lBQ0E7RUE2b0ROO0VBM29ERTtJQUNJO0VBNm9ETjtBQUNGOztBSXg0RFE7Q0RIUjtBSDI0REE7O0FJeDREUTtDREhSO0NBQUE7QUgyNERBOztBSXg0RFE7Q0RIUjtFQUFBO0VBQUE7RUFBQTtDQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0VBQUE7RUFBQTtDQUFBO0VBQUE7RUFBQTtDQUFBO0VBQUE7RUFBQTtDQUFBO0VBQUE7RUFBQTtDQUFBO0VBQUE7RUFBQTtDQUFBO0VBQUE7RUFBQTtFQUFBO0FIMjREQTs7QUl4NERRO0NESFI7RUFBQTtFQUFBO0VBQUE7Q0FBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7RUFBQTtFQUFBO0NBQUE7RUFBQTtFQUFBO0NBQUE7RUFBQTtFQUFBO0NBQUE7RUFBQTtFQUFBO0NBQUE7RUFBQTtFQUFBO0NBQUE7RUFBQTtFQUFBO0NBQUE7RUFBQTtFQUFBO0NBQUE7RUFBQTtFQUFBO0NBQUE7RUFBQTtFQUFBO0NBQUE7RUFBQTtFQUFBO0NBQUE7RUFBQTtFQUFBO0NBQUE7RUFBQTtFQUFBO0NBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0VBQUE7RUFBQTtFQUFBO0FIMjREQTs7QUl4NERRO0NESFI7RUFBQTtFQUFBO0VBQUE7Q0FBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0VBQUE7RUFBQTtDQUFBO0VBQUE7RUFBQTtDQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7RUFBQTtFQUFBO0NBQUE7RUFBQTtFQUFBO0NBQUE7RUFBQTtFQUFBO0NBQUE7RUFBQTtFQUFBO0NBQUE7RUFBQTtFQUFBO0NBQUE7RUFBQTtFQUFBO0NBQUE7RUFBQTtFQUFBO0NBQUE7RUFBQTtFQUFBO0NBQUE7RUFBQTtFQUFBO0NBQUE7RUFBQTtFQUFBO0NBQUE7RUFBQTtFQUFBO0NBQUE7RUFBQTtFQUFBO0NBQUE7RUFBQTtFQUFBO0NBQUE7RUFBQTtFQUFBO0NBQUE7RUFBQTtFQUFBO0NBQUE7RUFBQTtFQUFBO0NBQUE7RUFBQTtFQUFBO0NBQUE7RUFBQTtFQUFBO0NBQUE7RUFBQTtFQUFBO0NBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7RUFBQTtFQUFBO0VBQUE7QUgyNERBOztBSXg0RFE7Q0RIUjtFQUFBO0VBQUE7Q0FBQTtFQUFBO0VBQUE7Q0FBQTtFQUFBO0VBQUE7Q0FBQTtFQUFBO0VBQUE7QUgyNERBLEMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9mbGlnaHRjbXMvLi9hcHAuc2NzcyIsIndlYnBhY2s6Ly9mbGlnaHRjbXMvLi9hc3NldHMvc2Nzcy8lM0NpbnB1dCUyMGNzcyUyMENEbVdrLSUzRSIsIndlYnBhY2s6Ly9mbGlnaHRjbXMvLi9hc3NldHMvc2Nzcy8lM0NpbnB1dCUyMGNzcyUyMDR6cnhPZSUzRSIsIndlYnBhY2s6Ly9mbGlnaHRjbXMvPG5vIHNvdXJjZT4iLCJ3ZWJwYWNrOi8vZmxpZ2h0Y21zLy4vX2N0ZS5zY3NzIiwid2VicGFjazovL2ZsaWdodGNtcy8uL29iamVjdHMvX2NvbnNlbnQuc2NzcyJdLCJzb3VyY2VzQ29udGVudCI6WyJAdGFpbHdpbmQgYmFzZTtcblxuQHRhaWx3aW5kIGNvbXBvbmVudHM7XG5cbkBpbXBvcnQgXCJjdGVcIjtcbkBpbXBvcnQgXCIuL29iamVjdHMvY29uc2VudFwiO1xuXG5AdGFpbHdpbmQgdXRpbGl0aWVzO1xuXG46OmJhY2tkcm9wIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNSk7XG59XG5cbmRpYWxvZyB7XG4gICAgQGFwcGx5IGJnLXdoaXRlIHJvdW5kZWQtbGcgc2hhZG93LWxnO1xufVxuXG4udmlkZW8tdGVzdGltb25pYWwtY2Fyb3VzZWwge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiAxNXB4O1xuICAgIG1hcmdpbi10b3A6IDMwcHg7XG59XG5cbi52aWRlby10ZXN0aW1vbmlhbC12aWV3cG9ydCB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLnZpZGVvLXRlc3RpbW9uaWFsLXRyYWNrIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGdhcDogMjBweDtcbiAgICBwYWRkaW5nLWJvdHRvbTogNHB4O1xuICAgIG92ZXJmbG93LXg6IGF1dG87XG4gICAgc2Nyb2xsLXNuYXAtdHlwZTogeCBtYW5kYXRvcnk7XG4gICAgc2Nyb2xsYmFyLXdpZHRoOiBub25lO1xuICAgIC1tcy1vdmVyZmxvdy1zdHlsZTogbm9uZTtcbn1cblxuLnZpZGVvLXRlc3RpbW9uaWFsLXRyYWNrOjotd2Via2l0LXNjcm9sbGJhciB7XG4gICAgZGlzcGxheTogbm9uZTtcbn1cblxuLnZpZGVvLXRlc3RpbW9uaWFsLWFycm93IHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIHdpZHRoOiA0NXB4O1xuICAgIGhlaWdodDogMzBweDtcbiAgICBtaW4td2lkdGg6IDQ1cHg7XG4gICAgcGFkZGluZzogMDtcbiAgICBib3JkZXI6IDA7XG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgZm9udC1zaXplOiAwO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbn1cblxuLnZpZGVvLXRlc3RpbW9uaWFsLWFycm93OjphZnRlciB7XG4gICAgZm9udC1zaXplOiAzMnB4O1xuICAgIGxpbmUtaGVpZ2h0OiAzMnB4O1xuICAgIGZvbnQtZmFtaWx5OiBcIkZvbnQgQXdlc29tZSA2IFByb1wiLCBcIkZvbnQgQXdlc29tZSA2IEZyZWVcIiwgc2Fucy1zZXJpZjtcbiAgICBmb250LXdlaWdodDogOTAwO1xuICAgIGNvbG9yOiAjYmYxODFhO1xufVxuXG4udmlkZW8tdGVzdGltb25pYWwtYXJyb3ctLW5leHQ6OmFmdGVyIHtcbiAgICBjb250ZW50OiBcIlxcZjM1NlwiO1xufVxuXG4udmlkZW8tdGVzdGltb25pYWwtYXJyb3ctLXByZXY6OmFmdGVyIHtcbiAgICBjb250ZW50OiBcIlxcZjM1NVwiO1xufVxuXG4udmlkZW8tdGVzdGltb25pYWwtYXJyb3c6ZGlzYWJsZWQge1xuICAgIG9wYWNpdHk6IDAuMztcbiAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xufVxuXG4udmlkZW8tdGVzdGltb25pYWwtYXJyb3c6Zm9jdXMge1xuICAgIG91dGxpbmU6IG5vbmU7XG59XG5cbi50ZXN0aW1vbmlhbC12aWRlby1jYXJkIHtcbiAgICBmbGV4OiAwIDAgY2FsYygoMTAwJSAtIDQwcHgpIC8gMyk7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgcGFkZGluZzogMDtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIHNjcm9sbC1zbmFwLWFsaWduOiBzdGFydDtcbiAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgYmFja2dyb3VuZDogI2ZmZjtcbn1cblxuLnRlc3RpbW9uaWFsLXZpZGVvLWNhcmQ6aG92ZXIsXG4udGVzdGltb25pYWwtdmlkZW8tY2FyZDpmb2N1cy12aXNpYmxlIHtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG59XG5cbi50ZXN0aW1vbmlhbC12aWRlby1jYXJkIGltZyB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgYXNwZWN0LXJhdGlvOiAxNiAvIDk7XG4gICAgb2JqZWN0LWZpdDogY292ZXI7XG4gICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuMnMgZWFzZTtcbn1cblxuLnRlc3RpbW9uaWFsLXZpZGVvLWNhcmQ6aG92ZXIgaW1nLFxuLnRlc3RpbW9uaWFsLXZpZGVvLWNhcmQ6Zm9jdXMtdmlzaWJsZSBpbWcge1xuICAgIHRyYW5zZm9ybTogc2NhbGUoMS4wNik7XG59XG5cbi50ZXN0aW1vbmlhbC12aWRlby1tb2RhbCB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgaW5zZXQ6IDA7XG4gICAgei1pbmRleDogMTIwMDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xufVxuXG4udGVzdGltb25pYWwtdmlkZW8tbW9kYWwuaXMtb3BlbiB7XG4gICAgZGlzcGxheTogZmxleDtcbn1cblxuLnRlc3RpbW9uaWFsLXZpZGVvLW1vZGFsX19iYWNrZHJvcCB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGluc2V0OiAwO1xuICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC44KTtcbn1cblxuLnRlc3RpbW9uaWFsLXZpZGVvLW1vZGFsX19jb250ZW50IHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgei1pbmRleDogMTtcbiAgICB3aWR0aDogbWluKDk2MHB4LCBjYWxjKDEwMCUgLSAzMHB4KSk7XG59XG5cbi50ZXN0aW1vbmlhbC12aWRlby1tb2RhbF9fY2xvc2Uge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IC00MnB4O1xuICAgIHJpZ2h0OiAwO1xuICAgIGJvcmRlcjogMDtcbiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICBjb2xvcjogI2ZmZjtcbiAgICBmb250LXNpemU6IDMycHg7XG4gICAgbGluZS1oZWlnaHQ6IDE7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xufVxuXG4udGVzdGltb25pYWwtdmlkZW8tbW9kYWxfX2ZyYW1lIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgcGFkZGluZy10b3A6IDU2LjI1JTtcbiAgICBiYWNrZ3JvdW5kOiAjMDAwO1xufVxuXG4udGVzdGltb25pYWwtdmlkZW8tbW9kYWxfX2ZyYW1lIGlmcmFtZSB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGluc2V0OiAwO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbn1cblxuYm9keS5tb2RhbC1vcGVuIHtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xufVxuXG5AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA5OTFweCkge1xuICAgIC52aWRlby10ZXN0aW1vbmlhbC1jYXJvdXNlbCB7XG4gICAgICAgIGdhcDogOHB4O1xuICAgIH1cblxuICAgIC50ZXN0aW1vbmlhbC12aWRlby1jYXJkIHtcbiAgICAgICAgZmxleDogMCAwIGNhbGMoKDEwMCUgLSAyMHB4KSAvIDIpO1xuICAgIH1cbn1cblxuQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNzY3cHgpIHtcbiAgICAudmlkZW8tdGVzdGltb25pYWwtYXJyb3cge1xuICAgICAgICB3aWR0aDogMzVweDtcbiAgICAgICAgbWluLXdpZHRoOiAzNXB4O1xuICAgIH1cblxuICAgIC50ZXN0aW1vbmlhbC12aWRlby1jYXJkIHtcbiAgICAgICAgZmxleDogMCAwIDEwMCU7XG4gICAgfVxufVxuXG4udGVzdGltb25pYWwtdmlkZW8tY2FyZF9fbWVkaWEge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICB3aWR0aDogMTAwJTtcbn1cblxuLnRlc3RpbW9uaWFsLXZpZGVvLWNhcmRfX21lZGlhOjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGluc2V0OiAwO1xuICAgIHotaW5kZXg6IDE7XG4gICAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwLjIpO1xuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQgMC4ycyBlYXNlO1xufVxuXG4udGVzdGltb25pYWwtdmlkZW8tY2FyZDpob3ZlciAudGVzdGltb25pYWwtdmlkZW8tY2FyZF9fbWVkaWE6OmJlZm9yZSxcbi50ZXN0aW1vbmlhbC12aWRlby1jYXJkOmZvY3VzLXZpc2libGUgLnRlc3RpbW9uaWFsLXZpZGVvLWNhcmRfX21lZGlhOjpiZWZvcmUge1xuICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC4zNSk7XG59XG5cbi50ZXN0aW1vbmlhbC12aWRlby1jYXJkX19wbGF5IHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiA1MCU7XG4gICAgbGVmdDogNTAlO1xuICAgIHotaW5kZXg6IDI7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIHdpZHRoOiA1NnB4O1xuICAgIGhlaWdodDogNTZweDtcbiAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgYmFja2dyb3VuZDogcmdiYSgxOTEsIDI0LCAyNiwgMC45Mik7XG4gICAgYm94LXNoYWRvdzogMCA0cHggMTZweCByZ2JhKDAsIDAsIDAsIDAuMjUpO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgIHRyYW5zaXRpb246XG4gICAgICAgIHRyYW5zZm9ybSAwLjJzIGVhc2UsXG4gICAgICAgIGJhY2tncm91bmQgMC4ycyBlYXNlO1xufVxuXG4udGVzdGltb25pYWwtdmlkZW8tY2FyZF9fcGxheTo6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6IFwiXFxmMDRiXCI7XG4gICAgbWFyZ2luLWxlZnQ6IDNweDtcbiAgICBmb250LWZhbWlseTogXCJGb250IEF3ZXNvbWUgNiBQcm9cIiwgXCJGb250IEF3ZXNvbWUgNiBGcmVlXCIsIHNhbnMtc2VyaWY7XG4gICAgZm9udC1zaXplOiAyMHB4O1xuICAgIGZvbnQtd2VpZ2h0OiA5MDA7XG4gICAgbGluZS1oZWlnaHQ6IDE7XG4gICAgY29sb3I6ICNmZmY7XG59XG5cbi50ZXN0aW1vbmlhbC12aWRlby1jYXJkOmhvdmVyIC50ZXN0aW1vbmlhbC12aWRlby1jYXJkX19wbGF5LFxuLnRlc3RpbW9uaWFsLXZpZGVvLWNhcmQ6Zm9jdXMtdmlzaWJsZSAudGVzdGltb25pYWwtdmlkZW8tY2FyZF9fcGxheSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSkgc2NhbGUoMS4wNik7XG4gICAgYmFja2dyb3VuZDogI2JmMTgxYTtcbn1cbkBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDc2N3B4KSB7XG4gICAgLnRlc3RpbW9uaWFsLXZpZGVvLWNhcmRfX3BsYXkge1xuICAgICAgICB3aWR0aDogNDhweDtcbiAgICAgICAgaGVpZ2h0OiA0OHB4O1xuICAgIH1cbiAgICAudGVzdGltb25pYWwtdmlkZW8tY2FyZF9fcGxheTo6YWZ0ZXIge1xuICAgICAgICBmb250LXNpemU6IDE3cHg7XG4gICAgfVxufVxuIiwiLyohIG1vZGVybi1ub3JtYWxpemUgdjEuMS4wIHwgTUlUIExpY2Vuc2UgfCBodHRwczovL2dpdGh1Yi5jb20vc2luZHJlc29yaHVzL21vZGVybi1ub3JtYWxpemUgKi9cblxuLypcbkRvY3VtZW50XG49PT09PT09PVxuKi9cblxuLyoqXG5Vc2UgYSBiZXR0ZXIgYm94IG1vZGVsIChvcGluaW9uYXRlZCkuXG4qL1xuXG4qLFxuOjpiZWZvcmUsXG46OmFmdGVyIHtcblx0Ym94LXNpemluZzogYm9yZGVyLWJveDtcbn1cblxuLyoqXG5Vc2UgYSBtb3JlIHJlYWRhYmxlIHRhYiBzaXplIChvcGluaW9uYXRlZCkuXG4qL1xuXG5odG1sIHtcblx0LW1vei10YWItc2l6ZTogNDtcblx0dGFiLXNpemU6IDQ7XG59XG5cbi8qKlxuMS4gQ29ycmVjdCB0aGUgbGluZSBoZWlnaHQgaW4gYWxsIGJyb3dzZXJzLlxuMi4gUHJldmVudCBhZGp1c3RtZW50cyBvZiBmb250IHNpemUgYWZ0ZXIgb3JpZW50YXRpb24gY2hhbmdlcyBpbiBpT1MuXG4qL1xuXG5odG1sIHtcblx0bGluZS1oZWlnaHQ6IDEuMTU7IC8qIDEgKi9cblx0LXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiAxMDAlOyAvKiAyICovXG59XG5cbi8qXG5TZWN0aW9uc1xuPT09PT09PT1cbiovXG5cbi8qKlxuUmVtb3ZlIHRoZSBtYXJnaW4gaW4gYWxsIGJyb3dzZXJzLlxuKi9cblxuYm9keSB7XG5cdG1hcmdpbjogMDtcbn1cblxuLyoqXG5JbXByb3ZlIGNvbnNpc3RlbmN5IG9mIGRlZmF1bHQgZm9udHMgaW4gYWxsIGJyb3dzZXJzLiAoaHR0cHM6Ly9naXRodWIuY29tL3NpbmRyZXNvcmh1cy9tb2Rlcm4tbm9ybWFsaXplL2lzc3Vlcy8zKVxuKi9cblxuYm9keSB7XG5cdGZvbnQtZmFtaWx5OlxuXHRcdHN5c3RlbS11aSxcblx0XHQtYXBwbGUtc3lzdGVtLCAvKiBGaXJlZm94IHN1cHBvcnRzIHRoaXMgYnV0IG5vdCB5ZXQgYHN5c3RlbS11aWAgKi9cblx0XHQnU2Vnb2UgVUknLFxuXHRcdFJvYm90byxcblx0XHRIZWx2ZXRpY2EsXG5cdFx0QXJpYWwsXG5cdFx0c2Fucy1zZXJpZixcblx0XHQnQXBwbGUgQ29sb3IgRW1vamknLFxuXHRcdCdTZWdvZSBVSSBFbW9qaSc7XG59XG5cbi8qXG5Hcm91cGluZyBjb250ZW50XG49PT09PT09PT09PT09PT09XG4qL1xuXG4vKipcbjEuIEFkZCB0aGUgY29ycmVjdCBoZWlnaHQgaW4gRmlyZWZveC5cbjIuIENvcnJlY3QgdGhlIGluaGVyaXRhbmNlIG9mIGJvcmRlciBjb2xvciBpbiBGaXJlZm94LiAoaHR0cHM6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkwNjU1KVxuKi9cblxuaHIge1xuXHRoZWlnaHQ6IDA7IC8qIDEgKi9cblx0Y29sb3I6IGluaGVyaXQ7IC8qIDIgKi9cbn1cblxuLypcblRleHQtbGV2ZWwgc2VtYW50aWNzXG49PT09PT09PT09PT09PT09PT09PVxuKi9cblxuLyoqXG5BZGQgdGhlIGNvcnJlY3QgdGV4dCBkZWNvcmF0aW9uIGluIENocm9tZSwgRWRnZSwgYW5kIFNhZmFyaS5cbiovXG5cbmFiYnJbdGl0bGVdIHtcblx0dGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmUgZG90dGVkO1xufVxuXG4vKipcbkFkZCB0aGUgY29ycmVjdCBmb250IHdlaWdodCBpbiBFZGdlIGFuZCBTYWZhcmkuXG4qL1xuXG5iLFxuc3Ryb25nIHtcblx0Zm9udC13ZWlnaHQ6IGJvbGRlcjtcbn1cblxuLyoqXG4xLiBJbXByb3ZlIGNvbnNpc3RlbmN5IG9mIGRlZmF1bHQgZm9udHMgaW4gYWxsIGJyb3dzZXJzLiAoaHR0cHM6Ly9naXRodWIuY29tL3NpbmRyZXNvcmh1cy9tb2Rlcm4tbm9ybWFsaXplL2lzc3Vlcy8zKVxuMi4gQ29ycmVjdCB0aGUgb2RkICdlbScgZm9udCBzaXppbmcgaW4gYWxsIGJyb3dzZXJzLlxuKi9cblxuY29kZSxcbmtiZCxcbnNhbXAsXG5wcmUge1xuXHRmb250LWZhbWlseTpcblx0XHR1aS1tb25vc3BhY2UsXG5cdFx0U0ZNb25vLVJlZ3VsYXIsXG5cdFx0Q29uc29sYXMsXG5cdFx0J0xpYmVyYXRpb24gTW9ubycsXG5cdFx0TWVubG8sXG5cdFx0bW9ub3NwYWNlOyAvKiAxICovXG5cdGZvbnQtc2l6ZTogMWVtOyAvKiAyICovXG59XG5cbi8qKlxuQWRkIHRoZSBjb3JyZWN0IGZvbnQgc2l6ZSBpbiBhbGwgYnJvd3NlcnMuXG4qL1xuXG5zbWFsbCB7XG5cdGZvbnQtc2l6ZTogODAlO1xufVxuXG4vKipcblByZXZlbnQgJ3N1YicgYW5kICdzdXAnIGVsZW1lbnRzIGZyb20gYWZmZWN0aW5nIHRoZSBsaW5lIGhlaWdodCBpbiBhbGwgYnJvd3NlcnMuXG4qL1xuXG5zdWIsXG5zdXAge1xuXHRmb250LXNpemU6IDc1JTtcblx0bGluZS1oZWlnaHQ6IDA7XG5cdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0dmVydGljYWwtYWxpZ246IGJhc2VsaW5lO1xufVxuXG5zdWIge1xuXHRib3R0b206IC0wLjI1ZW07XG59XG5cbnN1cCB7XG5cdHRvcDogLTAuNWVtO1xufVxuXG4vKlxuVGFidWxhciBkYXRhXG49PT09PT09PT09PT1cbiovXG5cbi8qKlxuMS4gUmVtb3ZlIHRleHQgaW5kZW50YXRpb24gZnJvbSB0YWJsZSBjb250ZW50cyBpbiBDaHJvbWUgYW5kIFNhZmFyaS4gKGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lkPTk5OTA4OCwgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMTI5NylcbjIuIENvcnJlY3QgdGFibGUgYm9yZGVyIGNvbG9yIGluaGVyaXRhbmNlIGluIGFsbCBDaHJvbWUgYW5kIFNhZmFyaS4gKGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lkPTkzNTcyOSwgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NTAxNilcbiovXG5cbnRhYmxlIHtcblx0dGV4dC1pbmRlbnQ6IDA7IC8qIDEgKi9cblx0Ym9yZGVyLWNvbG9yOiBpbmhlcml0OyAvKiAyICovXG59XG5cbi8qXG5Gb3Jtc1xuPT09PT1cbiovXG5cbi8qKlxuMS4gQ2hhbmdlIHRoZSBmb250IHN0eWxlcyBpbiBhbGwgYnJvd3NlcnMuXG4yLiBSZW1vdmUgdGhlIG1hcmdpbiBpbiBGaXJlZm94IGFuZCBTYWZhcmkuXG4qL1xuXG5idXR0b24sXG5pbnB1dCxcbm9wdGdyb3VwLFxuc2VsZWN0LFxudGV4dGFyZWEge1xuXHRmb250LWZhbWlseTogaW5oZXJpdDsgLyogMSAqL1xuXHRmb250LXNpemU6IDEwMCU7IC8qIDEgKi9cblx0bGluZS1oZWlnaHQ6IDEuMTU7IC8qIDEgKi9cblx0bWFyZ2luOiAwOyAvKiAyICovXG59XG5cbi8qKlxuUmVtb3ZlIHRoZSBpbmhlcml0YW5jZSBvZiB0ZXh0IHRyYW5zZm9ybSBpbiBFZGdlIGFuZCBGaXJlZm94LlxuMS4gUmVtb3ZlIHRoZSBpbmhlcml0YW5jZSBvZiB0ZXh0IHRyYW5zZm9ybSBpbiBGaXJlZm94LlxuKi9cblxuYnV0dG9uLFxuc2VsZWN0IHsgLyogMSAqL1xuXHR0ZXh0LXRyYW5zZm9ybTogbm9uZTtcbn1cblxuLyoqXG5Db3JyZWN0IHRoZSBpbmFiaWxpdHkgdG8gc3R5bGUgY2xpY2thYmxlIHR5cGVzIGluIGlPUyBhbmQgU2FmYXJpLlxuKi9cblxuYnV0dG9uLFxuW3R5cGU9J2J1dHRvbiddLFxuW3R5cGU9J3Jlc2V0J10sXG5bdHlwZT0nc3VibWl0J10ge1xuXHQtd2Via2l0LWFwcGVhcmFuY2U6IGJ1dHRvbjtcbn1cblxuLyoqXG5SZW1vdmUgdGhlIGlubmVyIGJvcmRlciBhbmQgcGFkZGluZyBpbiBGaXJlZm94LlxuKi9cblxuOjotbW96LWZvY3VzLWlubmVyIHtcblx0Ym9yZGVyLXN0eWxlOiBub25lO1xuXHRwYWRkaW5nOiAwO1xufVxuXG4vKipcblJlc3RvcmUgdGhlIGZvY3VzIHN0eWxlcyB1bnNldCBieSB0aGUgcHJldmlvdXMgcnVsZS5cbiovXG5cbjotbW96LWZvY3VzcmluZyB7XG5cdG91dGxpbmU6IDFweCBkb3R0ZWQgQnV0dG9uVGV4dDtcbn1cblxuLyoqXG5SZW1vdmUgdGhlIGFkZGl0aW9uYWwgJzppbnZhbGlkJyBzdHlsZXMgaW4gRmlyZWZveC5cblNlZTogaHR0cHM6Ly9naXRodWIuY29tL21vemlsbGEvZ2Vja28tZGV2L2Jsb2IvMmY5ZWFjZDlkM2Q5OTVjOTM3YjQyNTFhNTU1N2Q5NWQ0OTRjOWJlMS9sYXlvdXQvc3R5bGUvcmVzL2Zvcm1zLmNzcyNMNzI4LUw3MzdcbiovXG5cbjotbW96LXVpLWludmFsaWQge1xuXHRib3gtc2hhZG93OiBub25lO1xufVxuXG4vKipcblJlbW92ZSB0aGUgcGFkZGluZyBzbyBkZXZlbG9wZXJzIGFyZSBub3QgY2F1Z2h0IG91dCB3aGVuIHRoZXkgemVybyBvdXQgJ2ZpZWxkc2V0JyBlbGVtZW50cyBpbiBhbGwgYnJvd3NlcnMuXG4qL1xuXG5sZWdlbmQge1xuXHRwYWRkaW5nOiAwO1xufVxuXG4vKipcbkFkZCB0aGUgY29ycmVjdCB2ZXJ0aWNhbCBhbGlnbm1lbnQgaW4gQ2hyb21lIGFuZCBGaXJlZm94LlxuKi9cblxucHJvZ3Jlc3Mge1xuXHR2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7XG59XG5cbi8qKlxuQ29ycmVjdCB0aGUgY3Vyc29yIHN0eWxlIG9mIGluY3JlbWVudCBhbmQgZGVjcmVtZW50IGJ1dHRvbnMgaW4gU2FmYXJpLlxuKi9cblxuOjotd2Via2l0LWlubmVyLXNwaW4tYnV0dG9uLFxuOjotd2Via2l0LW91dGVyLXNwaW4tYnV0dG9uIHtcblx0aGVpZ2h0OiBhdXRvO1xufVxuXG4vKipcbjEuIENvcnJlY3QgdGhlIG9kZCBhcHBlYXJhbmNlIGluIENocm9tZSBhbmQgU2FmYXJpLlxuMi4gQ29ycmVjdCB0aGUgb3V0bGluZSBzdHlsZSBpbiBTYWZhcmkuXG4qL1xuXG5bdHlwZT0nc2VhcmNoJ10ge1xuXHQtd2Via2l0LWFwcGVhcmFuY2U6IHRleHRmaWVsZDsgLyogMSAqL1xuXHRvdXRsaW5lLW9mZnNldDogLTJweDsgLyogMiAqL1xufVxuXG4vKipcblJlbW92ZSB0aGUgaW5uZXIgcGFkZGluZyBpbiBDaHJvbWUgYW5kIFNhZmFyaSBvbiBtYWNPUy5cbiovXG5cbjo6LXdlYmtpdC1zZWFyY2gtZGVjb3JhdGlvbiB7XG5cdC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcbn1cblxuLyoqXG4xLiBDb3JyZWN0IHRoZSBpbmFiaWxpdHkgdG8gc3R5bGUgY2xpY2thYmxlIHR5cGVzIGluIGlPUyBhbmQgU2FmYXJpLlxuMi4gQ2hhbmdlIGZvbnQgcHJvcGVydGllcyB0byAnaW5oZXJpdCcgaW4gU2FmYXJpLlxuKi9cblxuOjotd2Via2l0LWZpbGUtdXBsb2FkLWJ1dHRvbiB7XG5cdC13ZWJraXQtYXBwZWFyYW5jZTogYnV0dG9uOyAvKiAxICovXG5cdGZvbnQ6IGluaGVyaXQ7IC8qIDIgKi9cbn1cblxuLypcbkludGVyYWN0aXZlXG49PT09PT09PT09PVxuKi9cblxuLypcbkFkZCB0aGUgY29ycmVjdCBkaXNwbGF5IGluIENocm9tZSBhbmQgU2FmYXJpLlxuKi9cblxuc3VtbWFyeSB7XG5cdGRpc3BsYXk6IGxpc3QtaXRlbTtcbn1cbiIsIi8qKlxuICogTWFudWFsbHkgZm9ya2VkIGZyb20gU1VJVCBDU1MgQmFzZTogaHR0cHM6Ly9naXRodWIuY29tL3N1aXRjc3MvYmFzZVxuICogQSB0aGluIGxheWVyIG9uIHRvcCBvZiBub3JtYWxpemUuY3NzIHRoYXQgcHJvdmlkZXMgYSBzdGFydGluZyBwb2ludCBtb3JlXG4gKiBzdWl0YWJsZSBmb3Igd2ViIGFwcGxpY2F0aW9ucy5cbiAqL1xuXG4vKipcbiAqIFJlbW92ZXMgdGhlIGRlZmF1bHQgc3BhY2luZyBhbmQgYm9yZGVyIGZvciBhcHByb3ByaWF0ZSBlbGVtZW50cy5cbiAqL1xuXG5ibG9ja3F1b3RlLFxuZGwsXG5kZCxcbmgxLFxuaDIsXG5oMyxcbmg0LFxuaDUsXG5oNixcbmhyLFxuZmlndXJlLFxucCxcbnByZSB7XG4gIG1hcmdpbjogMDtcbn1cblxuYnV0dG9uIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7XG59XG5cbmZpZWxkc2V0IHtcbiAgbWFyZ2luOiAwO1xuICBwYWRkaW5nOiAwO1xufVxuXG5vbCxcbnVsIHtcbiAgbGlzdC1zdHlsZTogbm9uZTtcbiAgbWFyZ2luOiAwO1xuICBwYWRkaW5nOiAwO1xufVxuXG4vKipcbiAqIFRhaWx3aW5kIGN1c3RvbSByZXNldCBzdHlsZXNcbiAqL1xuXG4vKipcbiAqIDEuIFVzZSB0aGUgdXNlcidzIGNvbmZpZ3VyZWQgYHNhbnNgIGZvbnQtZmFtaWx5ICh3aXRoIFRhaWx3aW5kJ3MgZGVmYXVsdFxuICogICAgc2Fucy1zZXJpZiBmb250IHN0YWNrIGFzIGEgZmFsbGJhY2spIGFzIGEgc2FuZSBkZWZhdWx0LlxuICogMi4gVXNlIFRhaWx3aW5kJ3MgZGVmYXVsdCBcIm5vcm1hbFwiIGxpbmUtaGVpZ2h0IHNvIHRoZSB1c2VyIGlzbid0IGZvcmNlZFxuICogICAgdG8gb3ZlcnJpZGUgaXQgdG8gZW5zdXJlIGNvbnNpc3RlbmN5IGV2ZW4gd2hlbiB1c2luZyB0aGUgZGVmYXVsdCB0aGVtZS5cbiAqL1xuXG5odG1sIHtcbiAgZm9udC1mYW1pbHk6IHRoZW1lKCdmb250RmFtaWx5LnNhbnMnLCB1aS1zYW5zLXNlcmlmLCBzeXN0ZW0tdWksIC1hcHBsZS1zeXN0ZW0sIEJsaW5rTWFjU3lzdGVtRm9udCwgXCJTZWdvZSBVSVwiLCBSb2JvdG8sIFwiSGVsdmV0aWNhIE5ldWVcIiwgQXJpYWwsIFwiTm90byBTYW5zXCIsIHNhbnMtc2VyaWYsIFwiQXBwbGUgQ29sb3IgRW1vamlcIiwgXCJTZWdvZSBVSSBFbW9qaVwiLCBcIlNlZ29lIFVJIFN5bWJvbFwiLCBcIk5vdG8gQ29sb3IgRW1vamlcIik7IC8qIDEgKi9cbiAgbGluZS1oZWlnaHQ6IDEuNTsgLyogMiAqL1xufVxuXG5cbi8qKlxuICogSW5oZXJpdCBmb250LWZhbWlseSBhbmQgbGluZS1oZWlnaHQgZnJvbSBgaHRtbGAgc28gdXNlcnMgY2FuIHNldCB0aGVtIGFzXG4gKiBhIGNsYXNzIGRpcmVjdGx5IG9uIHRoZSBgaHRtbGAgZWxlbWVudC5cbiAqL1xuXG5ib2R5IHtcbiAgZm9udC1mYW1pbHk6IGluaGVyaXQ7XG4gIGxpbmUtaGVpZ2h0OiBpbmhlcml0O1xufVxuXG4vKipcbiAqIDEuIFByZXZlbnQgcGFkZGluZyBhbmQgYm9yZGVyIGZyb20gYWZmZWN0aW5nIGVsZW1lbnQgd2lkdGguXG4gKlxuICogICAgV2UgdXNlZCB0byBzZXQgdGhpcyBpbiB0aGUgaHRtbCBlbGVtZW50IGFuZCBpbmhlcml0IGZyb21cbiAqICAgIHRoZSBwYXJlbnQgZWxlbWVudCBmb3IgZXZlcnl0aGluZyBlbHNlLiBUaGlzIGNhdXNlZCBpc3N1ZXNcbiAqICAgIGluIHNoYWRvdy1kb20tZW5oYW5jZWQgZWxlbWVudHMgbGlrZSA8ZGV0YWlscz4gd2hlcmUgdGhlIGNvbnRlbnRcbiAqICAgIGlzIHdyYXBwZWQgYnkgYSBkaXYgd2l0aCBib3gtc2l6aW5nIHNldCB0byBgY29udGVudC1ib3hgLlxuICpcbiAqICAgIGh0dHBzOi8vZ2l0aHViLmNvbS9tb3pkZXZzL2Nzc3JlbWVkeS9pc3N1ZXMvNFxuICpcbiAqXG4gKiAyLiBBbGxvdyBhZGRpbmcgYSBib3JkZXIgdG8gYW4gZWxlbWVudCBieSBqdXN0IGFkZGluZyBhIGJvcmRlci13aWR0aC5cbiAqXG4gKiAgICBCeSBkZWZhdWx0LCB0aGUgd2F5IHRoZSBicm93c2VyIHNwZWNpZmllcyB0aGF0IGFuIGVsZW1lbnQgc2hvdWxkIGhhdmUgbm9cbiAqICAgIGJvcmRlciBpcyBieSBzZXR0aW5nIGl0J3MgYm9yZGVyLXN0eWxlIHRvIGBub25lYCBpbiB0aGUgdXNlci1hZ2VudFxuICogICAgc3R5bGVzaGVldC5cbiAqXG4gKiAgICBJbiBvcmRlciB0byBlYXNpbHkgYWRkIGJvcmRlcnMgdG8gZWxlbWVudHMgYnkganVzdCBzZXR0aW5nIHRoZSBgYm9yZGVyLXdpZHRoYFxuICogICAgcHJvcGVydHksIHdlIGNoYW5nZSB0aGUgZGVmYXVsdCBib3JkZXItc3R5bGUgZm9yIGFsbCBlbGVtZW50cyB0byBgc29saWRgLCBhbmRcbiAqICAgIHVzZSBib3JkZXItd2lkdGggdG8gaGlkZSB0aGVtIGluc3RlYWQuIFRoaXMgd2F5IG91ciBgYm9yZGVyYCB1dGlsaXRpZXMgb25seVxuICogICAgbmVlZCB0byBzZXQgdGhlIGBib3JkZXItd2lkdGhgIHByb3BlcnR5IGluc3RlYWQgb2YgdGhlIGVudGlyZSBgYm9yZGVyYFxuICogICAgc2hvcnRoYW5kLCBtYWtpbmcgb3VyIGJvcmRlciB1dGlsaXRpZXMgbXVjaCBtb3JlIHN0cmFpZ2h0Zm9yd2FyZCB0byBjb21wb3NlLlxuICpcbiAqICAgIGh0dHBzOi8vZ2l0aHViLmNvbS90YWlsd2luZGNzcy90YWlsd2luZGNzcy9wdWxsLzExNlxuICovXG5cbiosXG46OmJlZm9yZSxcbjo6YWZ0ZXIge1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94OyAvKiAxICovXG4gIGJvcmRlci13aWR0aDogMDsgLyogMiAqL1xuICBib3JkZXItc3R5bGU6IHNvbGlkOyAvKiAyICovXG4gIGJvcmRlci1jb2xvcjogY3VycmVudENvbG9yOyAvKiAyICovXG59XG5cbi8qXG4gKiBFbnN1cmUgaG9yaXpvbnRhbCBydWxlcyBhcmUgdmlzaWJsZSBieSBkZWZhdWx0XG4gKi9cblxuaHIge1xuICBib3JkZXItdG9wLXdpZHRoOiAxcHg7XG59XG5cbi8qKlxuICogVW5kbyB0aGUgYGJvcmRlci1zdHlsZTogbm9uZWAgcmVzZXQgdGhhdCBOb3JtYWxpemUgYXBwbGllcyB0byBpbWFnZXMgc28gdGhhdFxuICogb3VyIGBib3JkZXIte3dpZHRofWAgdXRpbGl0aWVzIGhhdmUgdGhlIGV4cGVjdGVkIGVmZmVjdC5cbiAqXG4gKiBUaGUgTm9ybWFsaXplIHJlc2V0IGlzIHVubmVjZXNzYXJ5IGZvciB1cyBzaW5jZSB3ZSBkZWZhdWx0IHRoZSBib3JkZXItd2lkdGhcbiAqIHRvIDAgb24gYWxsIGVsZW1lbnRzLlxuICpcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS90YWlsd2luZGNzcy90YWlsd2luZGNzcy9pc3N1ZXMvMzYyXG4gKi9cblxuaW1nIHtcbiAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcbn1cblxudGV4dGFyZWEge1xuICByZXNpemU6IHZlcnRpY2FsO1xufVxuXG5pbnB1dDo6cGxhY2Vob2xkZXIsXG50ZXh0YXJlYTo6cGxhY2Vob2xkZXIge1xuICBvcGFjaXR5OiAxO1xuICBjb2xvcjogdGhlbWUoJ2NvbG9ycy5ncmF5LjQwMCcsICNhMWExYWEpO1xufVxuXG5idXR0b24sXG5bcm9sZT1cImJ1dHRvblwiXSB7XG4gIGN1cnNvcjogcG9pbnRlcjtcbn1cblxuLyoqXG4gKiBPdmVycmlkZSBsZWdhY3kgZm9jdXMgcmVzZXQgZnJvbSBOb3JtYWxpemUgd2l0aCBtb2Rlcm4gRmlyZWZveCBmb2N1cyBzdHlsZXMuXG4gKlxuICogVGhpcyBpcyBhY3R1YWxseSBhbiBpbXByb3ZlbWVudCBvdmVyIHRoZSBuZXcgZGVmYXVsdHMgaW4gRmlyZWZveCBpbiBvdXIgdGVzdGluZyxcbiAqIGFzIGl0IHRyaWdnZXJzIHRoZSBiZXR0ZXIgZm9jdXMgc3R5bGVzIGV2ZW4gZm9yIGxpbmtzLCB3aGljaCBzdGlsbCB1c2UgYSBkb3R0ZWRcbiAqIG91dGxpbmUgaW4gRmlyZWZveCBieSBkZWZhdWx0LlxuICovXG4gXG46LW1vei1mb2N1c3Jpbmcge1xuXHRvdXRsaW5lOiBhdXRvO1xufVxuXG50YWJsZSB7XG4gIGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7XG59XG5cbmgxLFxuaDIsXG5oMyxcbmg0LFxuaDUsXG5oNiB7XG4gIGZvbnQtc2l6ZTogaW5oZXJpdDtcbiAgZm9udC13ZWlnaHQ6IGluaGVyaXQ7XG59XG5cbi8qKlxuICogUmVzZXQgbGlua3MgdG8gb3B0aW1pemUgZm9yIG9wdC1pbiBzdHlsaW5nIGluc3RlYWQgb2ZcbiAqIG9wdC1vdXQuXG4gKi9cblxuYSB7XG4gIGNvbG9yOiBpbmhlcml0O1xuICB0ZXh0LWRlY29yYXRpb246IGluaGVyaXQ7XG59XG5cbi8qKlxuICogUmVzZXQgZm9ybSBlbGVtZW50IHByb3BlcnRpZXMgdGhhdCBhcmUgZWFzeSB0byBmb3JnZXQgdG9cbiAqIHN0eWxlIGV4cGxpY2l0bHkgc28geW91IGRvbid0IGluYWR2ZXJ0ZW50bHkgaW50cm9kdWNlXG4gKiBzdHlsZXMgdGhhdCBkZXZpYXRlIGZyb20geW91ciBkZXNpZ24gc3lzdGVtLiBUaGVzZSBzdHlsZXNcbiAqIHN1cHBsZW1lbnQgYSBwYXJ0aWFsIHJlc2V0IHRoYXQgaXMgYWxyZWFkeSBhcHBsaWVkIGJ5XG4gKiBub3JtYWxpemUuY3NzLlxuICovXG5cbmJ1dHRvbixcbmlucHV0LFxub3B0Z3JvdXAsXG5zZWxlY3QsXG50ZXh0YXJlYSB7XG4gIHBhZGRpbmc6IDA7XG4gIGxpbmUtaGVpZ2h0OiBpbmhlcml0O1xuICBjb2xvcjogaW5oZXJpdDtcbn1cblxuLyoqXG4gKiBVc2UgdGhlIGNvbmZpZ3VyZWQgJ21vbm8nIGZvbnQgZmFtaWx5IGZvciBlbGVtZW50cyB0aGF0XG4gKiBhcmUgZXhwZWN0ZWQgdG8gYmUgcmVuZGVyZWQgd2l0aCBhIG1vbm9zcGFjZSBmb250LCBmYWxsaW5nXG4gKiBiYWNrIHRvIHRoZSBzeXN0ZW0gbW9ub3NwYWNlIHN0YWNrIGlmIHRoZXJlIGlzIG5vIGNvbmZpZ3VyZWRcbiAqICdtb25vJyBmb250IGZhbWlseS5cbiAqL1xuXG5wcmUsXG5jb2RlLFxua2JkLFxuc2FtcCB7XG4gIGZvbnQtZmFtaWx5OiB0aGVtZSgnZm9udEZhbWlseS5tb25vJywgdWktbW9ub3NwYWNlLCBTRk1vbm8tUmVndWxhciwgTWVubG8sIE1vbmFjbywgQ29uc29sYXMsIFwiTGliZXJhdGlvbiBNb25vXCIsIFwiQ291cmllciBOZXdcIiwgbW9ub3NwYWNlKTtcbn1cblxuLyoqXG4gKiAxLiBNYWtlIHJlcGxhY2VkIGVsZW1lbnRzIGBkaXNwbGF5OiBibG9ja2AgYnkgZGVmYXVsdCBhcyB0aGF0J3NcbiAqICAgIHRoZSBiZWhhdmlvciB5b3Ugd2FudCBhbG1vc3QgYWxsIG9mIHRoZSB0aW1lLiBJbnNwaXJlZCBieVxuICogICAgQ1NTIFJlbWVkeSwgd2l0aCBgc3ZnYCBhZGRlZCBhcyB3ZWxsLlxuICpcbiAqICAgIGh0dHBzOi8vZ2l0aHViLmNvbS9tb3pkZXZzL2Nzc3JlbWVkeS9pc3N1ZXMvMTRcbiAqIFxuICogMi4gQWRkIGB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlYCB0byBhbGlnbiByZXBsYWNlZCBlbGVtZW50cyBtb3JlXG4gKiAgICBzZW5zaWJseSBieSBkZWZhdWx0IHdoZW4gb3ZlcnJpZGluZyBgZGlzcGxheWAgYnkgYWRkaW5nIGFcbiAqICAgIHV0aWxpdHkgbGlrZSBgaW5saW5lYC5cbiAqXG4gKiAgICBUaGlzIGNhbiB0cmlnZ2VyIGEgcG9vcmx5IGNvbnNpZGVyZWQgbGludGluZyBlcnJvciBpbiBzb21lXG4gKiAgICB0b29scyBidXQgaXMgaW5jbHVkZWQgYnkgZGVzaWduLlxuICogXG4gKiAgICBodHRwczovL2dpdGh1Yi5jb20vamVuc2ltbW9ucy9jc3NyZW1lZHkvaXNzdWVzLzE0I2lzc3VlY29tbWVudC02MzQ5MzQyMTBcbiAqL1xuXG5pbWcsXG5zdmcsXG52aWRlbyxcbmNhbnZhcyxcbmF1ZGlvLFxuaWZyYW1lLFxuZW1iZWQsXG5vYmplY3Qge1xuICBkaXNwbGF5OiBibG9jazsgLyogMSAqL1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOyAvKiAyICovXG59XG5cbi8qKlxuICogQ29uc3RyYWluIGltYWdlcyBhbmQgdmlkZW9zIHRvIHRoZSBwYXJlbnQgd2lkdGggYW5kIHByZXNlcnZlXG4gKiB0aGVpciBpbnRyaW5zaWMgYXNwZWN0IHJhdGlvLlxuICpcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9tb3pkZXZzL2Nzc3JlbWVkeS9pc3N1ZXMvMTRcbiAqL1xuXG5pbWcsXG52aWRlbyB7XG4gIG1heC13aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiBhdXRvO1xufVxuXG4vKipcbiAqIEVuc3VyZSB0aGUgZGVmYXVsdCBicm93c2VyIGJlaGF2aW9yIG9mIHRoZSBgaGlkZGVuYCBhdHRyaWJ1dGUuXG4gKi9cblxuW2hpZGRlbl0ge1xuICBkaXNwbGF5OiBub25lO1xufVxuIixudWxsLCIvLyBDT05GSUdcbi8vIEZPTlRTXG5cbkBpbXBvcnQgdXJsKCdodHRwczovL2ZvbnRzLmdvb2dsZWFwaXMuY29tL2Nzcz9mYW1pbHk9T3BlbitTYW5zOjMwMCw3MDAmZGlzcGxheT1zd2FwJyk7XG5cbiRvcGVuOiAnT3BlbiBTYW5zJztcblxuLy9CUkVBS1BPSU5UU1xuXG4kZGVza3RvcDogMTM2NnB4O1xuJHRhYmxldDogOTkxcHg7XG4kbW9iaWxlOiA3NjdweDtcbiR0aW55OiA1NzVweDtcblxuOnJvb3Qge1xuICAgIC0tYmxhY2s6ICMwMDAwMDA7XG4gICAgLS13aGl0ZTogI2ZmZjtcbiAgICAtLWdyZXk6ICM1NjU2NTY7XG4gICAgLS1saWdodC1ncmV5OiAjZWNlY2VjO1xuICAgIC0tcHJpbWFyeS1jb2xvdXI6ICNCRjE4MUE7XG4gICAgLS1zdWNjZXNzOiAjMzhhMTY5O1xuICAgIC0tZGFuZ2VyOiAjZTUzZTNlO1xufVxuXG5hOm5vdCguc2l0ZS1oZWFkZXIgYSwgZm9vdGVyIGEsIC5idG4sIC5jYXNlLXN0dWR5IGEsIC5wYWdpbmF0aW9uIGEpIHtcbiAgICBjb2xvcjogdmFyKC0tcHJpbWFyeS1jb2xvdXIpO1xufVxuXG4vL0NPTE9VUlNcbiRibGFjazogdmFyKC0tYmxhY2spO1xuJHdoaXRlOiB2YXIoLS13aGl0ZSk7XG4kZ3JleTogdmFyKC0tZ3JleSk7XG4kcHJpbWFyeS1jb2xvdXI6IHZhcigtLXByaW1hcnktY29sb3VyKTtcbi8vIEVORCBDT05GSUdcblxuLy8gR1JJRFxuQG1peGluIGNvbCgpIHtcbiAgICBAYXBwbHkgZmxleC1ncm93IGZsZXgtd3JhcCBmbGV4LWNvbCBvdmVyZmxvdy12aXNpYmxlO1xuICAgIHBhZGRpbmctbGVmdDogMTVweDtcbiAgICBwYWRkaW5nLXJpZ2h0OiAxNXB4O1xuICAgIG1pbi13aWR0aDogOC4zMzMzJTtcblxuICAgICYubGctaGFsZiB7XG4gICAgICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDExOTlweCkge1xuICAgICAgICAgICAgZmxleDogMCAwIDUwJTtcbiAgICAgICAgICAgIG1heC13aWR0aDogNTAlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgJi5tZC1mdWxsIHtcbiAgICAgICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogOTkxcHgpIHtcbiAgICAgICAgICAgIGZsZXg6IDAgMCAxMDAlO1xuICAgICAgICAgICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgJi5zbS10aGlyZCB7XG4gICAgICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDc2N3B4KSB7XG4gICAgICAgICAgICBmbGV4OiAwIDAgMzMuMzMzMzMlO1xuICAgICAgICAgICAgbWF4LXdpZHRoOiAzMy4zMzMzMyU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmLnNtLWhhbGYge1xuICAgICAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA3NjdweCkge1xuICAgICAgICAgICAgZmxleDogMCAwIDUwJTtcbiAgICAgICAgICAgIG1heC13aWR0aDogNTAlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgJi5zbS1mdWxsIHtcbiAgICAgICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNzY3cHgpIHtcbiAgICAgICAgICAgIGZsZXg6IDAgMCAxMDAlO1xuICAgICAgICAgICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4uZmxleC1ncmlkLXJvdyB7XG4gICAgQGFwcGx5IGZsZXggZmxleC13cmFwIG92ZXJmbG93LXZpc2libGU7XG4gICAgbWFyZ2luLWxlZnQ6IC0xNXB4O1xuICAgIG1hcmdpbi1yaWdodDogLTE1cHg7XG59XG5cbi5mbGV4LWdyaWQtY29sIHtcbiAgICBmbGV4OiAxIDA7XG4gICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgIEBpbmNsdWRlIGNvbCgpO1xuXG4gICAgJi0zIHtcbiAgICAgICAgQGluY2x1ZGUgY29sKCk7XG4gICAgICAgIGZsZXg6IDAgMCAyNSU7XG4gICAgICAgIG1heC13aWR0aDogMjUlO1xuICAgIH1cblxuICAgICYtNCB7XG4gICAgICAgIEBpbmNsdWRlIGNvbCgpO1xuICAgICAgICBmbGV4OiAwIDAgMzMuMzMzMyU7XG4gICAgICAgIG1heC13aWR0aDogMzMuMzMzMyU7XG4gICAgfVxuXG4gICAgJi01IHtcbiAgICAgICAgQGluY2x1ZGUgY29sKCk7XG4gICAgICAgIGZsZXg6IDAgMCA0MS42NjY1JTtcbiAgICAgICAgbWF4LXdpZHRoOiA0MS42NjY1JTtcbiAgICB9XG5cbiAgICAmLTYge1xuICAgICAgICBAaW5jbHVkZSBjb2woKTtcbiAgICAgICAgLy8gQVJFIFRIRVNFIFdST05HP1xuICAgICAgICAvLyBmbGV4OiAwIDAgMTYuNjY2NiU7XG4gICAgICAgIC8vIG1heC13aWR0aDogMTYuNjY2NiU7XG4gICAgICAgIGZsZXg6IDAgMCA1MCU7XG4gICAgICAgIG1heC13aWR0aDogNTAlO1xuICAgIH1cblxuICAgICYtNyB7XG4gICAgICAgIEBpbmNsdWRlIGNvbCgpO1xuICAgICAgICAvLyBBUkUgVEhFU0UgV1JPTkc/XG4gICAgICAgIC8vIGZsZXg6IDAgMCAxNC4yODU3JTtcbiAgICAgICAgLy8gbWF4LXdpZHRoOiAxNC4yODU3JTtcbiAgICAgICAgZmxleDogMCAwIDU4LjMzMzMlO1xuICAgICAgICBtYXgtd2lkdGg6IDU4LjMzMzMlO1xuICAgIH1cblxuICAgICYtOCB7XG4gICAgICAgIEBpbmNsdWRlIGNvbCgpO1xuICAgICAgICBmbGV4OiAwIDAgNjYuNjY2NyU7XG4gICAgICAgIG1heC13aWR0aDogNjYuNjY2NyU7XG4gICAgfVxuXG4gICAgJi0xMCB7XG4gICAgICAgIEBpbmNsdWRlIGNvbCgpO1xuICAgICAgICBmbGV4OiAwIDAgODMuMzMzMyU7XG4gICAgICAgIG1heC13aWR0aDogODMuMzMzMyU7XG4gICAgfVxuXG4gICAgJi1maWZ0aCB7XG4gICAgICAgIEBpbmNsdWRlIGNvbCgpO1xuICAgICAgICBmbGV4OiAwIDAgMjAlO1xuICAgICAgICBtYXgtd2lkdGg6IDIwJTtcbiAgICB9XG5cbiAgICAmLW9mZnNldCB7XG4gICAgICAgICYtMSB7XG4gICAgICAgICAgbWFyZ2luLWxlZnQ6IDguMzMzMyU7XG4gICAgICAgICAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA5OTFweCkge1xuICAgICAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAwO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgICYtMiB7XG4gICAgICAgICAgICBtYXJnaW4tbGVmdDogMTYuNjY2NiU7XG5cbiAgICAgICAgICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDk5MXB4KSB7XG4gICAgICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vIEVORCBHUklEXG5cbi8vIEJBU0VcbmJvZHkge1xuICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgICBsaW5lLWhlaWdodDogMmVtO1xufVxuXG5oMSxcbi5oMSB7XG4gICAgZm9udC1zaXplOiAzcmVtO1xuICAgIG1hcmdpbi10b3A6IDFyZW07XG4gICAgbWFyZ2luLWJvdHRvbTogMXJlbTtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICBsaW5lLWhlaWdodDogNjBweDtcbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA3NjdweCkge1xuICAgICAgICBmb250LXNpemU6IDJyZW07XG4gICAgICAgIG1hcmdpbi10b3A6IDAuNXJlbTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMC41cmVtO1xuICAgICAgICBsaW5lLWhlaWdodDogNDBweDtcbiAgICB9XG59XG5cbmgzLFxuLmgzLFxuaDIsXG4uaDIge1xuICAgIGZvbnQtc2l6ZTogMi41ZW07XG4gICAgbWFyZ2luLWJvdHRvbTogMC43NWVtO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjFlbTtcbiAgICBmb250LXdlaWdodDogNDAwO1xuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDc2N3B4KSB7XG4gICAgICAgIGZvbnQtc2l6ZTogMS44NzVlbTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMDc1ZW07XG4gICAgfVxuICAgICYtLXNtIHtcbiAgICAgICAgZm9udC1zaXplOiAxLjg3NWVtO1xuICAgICAgICBsaW5lLWhlaWdodDogMS4wNzVlbTtcbiAgICB9XG59XG5cbmg0LFxuLmg0IHtcbiAgICBmb250LXNpemU6IDFlbTtcbiAgICBsaW5lLWhlaWdodDogMmVtO1xuICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgbWFyZ2luLWJvdHRvbTogMWVtO1xufVxuXG51bCB7XG4gICAgQGFwcGx5IG1iLTY7XG4gICAgbGlzdC1zdHlsZS10eXBlOiBkaXNjO1xuICAgIHBhZGRpbmctbGVmdDogMThweDtcbiAgICAmOmxhc3Qtb2YtdHlwZSB7XG4gICAgICAgIEBhcHBseSBtYi0wO1xuICAgICAgICAmICsgKiB7XG4gICAgICAgICAgICBAYXBwbHkgbXQtNjtcbiAgICAgICAgfVxuICAgIH1cbn1cblxub2wge1xuICAgIEBhcHBseSBtYi02O1xuICAgIGxpc3Qtc3R5bGUtdHlwZTogbG93ZXItYWxwaGE7XG4gICAgcGFkZGluZy1sZWZ0OiAxOHB4O1xuICAgICY6bGFzdC1vZi10eXBlIHtcbiAgICAgICAgQGFwcGx5IG1iLTA7XG4gICAgICAgICYgKyAqIHtcbiAgICAgICAgICAgIEBhcHBseSBtdC02O1xuICAgICAgICB9XG4gICAgfVxufVxuXG4uZGlzcGxheS0xIHtcbiAgICBmb250LXNpemU6IDMuNzVlbTtcbiAgICBsaW5lLWhlaWdodDogMWVtO1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG5cbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA3NjdweCkge1xuICAgICAgICBmb250LXNpemU6IDIuMjVlbTtcbiAgICB9XG59XG5cbnAge1xuICAgIEBhcHBseSBtYi02O1xuICAgICY6bGFzdC1vZi10eXBlIHtcbiAgICAgICAgQGFwcGx5IG1iLTA7XG4gICAgICAgICYgKyB1bCwgJiArIG9sIHtcbiAgICAgICAgICAgICBAYXBwbHkgbXQtNjtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLnB5LTIwcHgge1xuICAgIHBhZGRpbmctdG9wOiAyMHB4O1xuICAgIHBhZGRpbmctYm90dG9tOiAyMHB4O1xufVxuXG4ubXQge1xuICAgICYtMzBweCB7XG4gICAgICAgIG1hcmdpbi10b3A6IDMwcHg7XG4gICAgfVxuXG4gICAgJi02MHB4IHtcbiAgICAgICAgbWFyZ2luLXRvcDogNjBweDtcbiAgICB9XG59XG5cbi5tYiB7XG4gICAgJi02MHB4IHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogNjBweDtcbiAgICB9XG5cbiAgICAmLTMwcHgge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAzMHB4O1xuICAgIH1cbn1cblxuc2VjdGlvbiB7XG4gICAgbWFyZ2luLWJvdHRvbTogNjBweDtcblxuICAgICYuYWJvdXQge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgICAgICBwYWRkaW5nOiA2MHB4IDA7XG5cbiAgICAgICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogOTkxcHgpIHtcbiAgICAgICAgICAgIHBhZGRpbmc6IDYwcHggMCAwIDA7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAmKy5iZy1maXhlZCB7XG4gICAgICAgIG1hcmdpbi10b3A6IDYwcHg7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDYwcHg7XG4gICAgfVxuXG4gICAgJi5hYm91dC1wdC0wIHtcbiAgICAgICAgcGFkZGluZy10b3A6IDA7XG4gICAgfVxuXG4gICAgJi5mYXEge1xuICAgICAgICAmOmhhcygrZm9vdGVyKSwgOmhhcygrc2VjdGlvbikge1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNjBweDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgICYuc2VjdGlvbi1ncmV5IHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgjMDAwLCAwLjEpO1xuICAgICAgICBwYWRkaW5nOiA2MHB4IDA7XG5cbiAgICAgICAgJjpoYXMoKy5iZy1ibGFjaykge1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMHB4O1xuICAgICAgICB9XG5cbiAgICAgICAgICAvLyAqIHtcbiAgICAgICAgLy8gICAgIGNvbG9yOiAkd2hpdGU7XG4gICAgICAgIC8vIH1cblxuXG4gICAgICAgIHA6bGFzdC1vZi10eXBlIHtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgICAgIH1cblxuICAgICAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA5OTFweCkge1xuICAgICAgICAgICAgcGFkZGluZzogNjBweCAwIDYwcHggMDtcbiAgICAgICAgfVxuXG4gICAgICAgIGg0IHtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDEwcHg7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyAmLnRleHQge1xuICAgIC8vICAgICBwIHtcbiAgICAvLyAgICAgICAgIG1hcmdpbi1ib3R0b206IDNlbTtcbiAgICAvLyAgICAgfVxuICAgIC8vIH1cblxuICAgICY6bGFzdC1vZi10eXBlIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcblxuICAgICAgICAmLnNlcnZpY2VzIHtcbiAgICAgICAgICAgIHBhZGRpbmctYm90dG9tOiA2MHB4O1xuXG4gICAgICAgICAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA5OTFweCkge1xuICAgICAgICAgICAgICAgIHBhZGRpbmctYm90dG9tOiAwO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgJi5jb250YWN0LXBhZ2Uge1xuICAgICAgICBtYXJnaW4tdG9wOiA2MHB4O1xuXG4gICAgICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDk5MXB4KSB7XG4gICAgICAgICAgICBtYXJnaW4tdG9wOiA2MHB4O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgJi5jb250YWN0IHtcbiAgICAgICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogOTkxcHgpIHtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDYwcHg7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5jb250YWN0IHtcbiAgICAmX190aXRsZSB7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAzMnB4O1xuICAgIH1cblxuICAgIC5jb250YWN0LWluZm8ge1xuICAgICAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOjc2N3B4KSB7XG4gICAgICAgICAgICBwYWRkaW5nOiA1cHggMTVweDtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLmNvbnRhaW5lci1sZyB7XG4gICAgbWF4LXdpZHRoOiAxNTAwcHg7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgcGFkZGluZy1sZWZ0OiAxNXB4O1xuICAgIHBhZGRpbmctcmlnaHQ6IDE1cHg7XG59XG5cbi5jb250YWluZXItc20ge1xuICAgIEBtZWRpYSAobWluLXdpZHRoOiA1NzVweCkge1xuICAgICAgICBtYXgtd2lkdGg6IDU3NXB4O1xuICAgIH1cbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOjc2OHB4KSB7XG4gICAgICAgIG1heC13aWR0aDogNzY4cHg7XG4gICAgfVxuICAgIEBtZWRpYSAobWluLXdpZHRoOiA5OTBweCkge1xuICAgICAgICBtYXgtd2lkdGg6IDk5MHB4O1xuICAgIH1cbiAgICB3aWR0aDogMTAwJTtcbiAgICBwYWRkaW5nLWxlZnQ6IDE1cHg7XG4gICAgcGFkZGluZy1yaWdodDogMTVweDtcbn1cblxuLmVsLXNoYWRvdyB7XG4gICAgb3ZlcmZsb3c6IHZpc2libGU7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICAgJjphZnRlciB7XG4gICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKCMwMDAsIDAuMSk7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgei1pbmRleDogLTE7XG4gICAgfVxuXG4gICAgJi0tYmwge1xuICAgICAgICAmOmFmdGVyIHtcbiAgICAgICAgICAgIGJvdHRvbTogLTYwcHg7XG4gICAgICAgICAgICBsZWZ0OiAtNjBweFxuICAgICAgICB9XG4gICAgfVxuXG4gICAgJi0tYmwtYWJvdXQge1xuICAgICAgICA+aW1nIHtcbiAgICAgICAgICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDk5MXB4KSB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAmOmFmdGVyIHtcbiAgICAgICAgICAgIGhlaWdodDogY2FsYygxMDAlIC0gNjBweCk7XG4gICAgICAgICAgICBib3R0b206IDA7XG4gICAgICAgICAgICBsZWZ0OiAtNjBweDtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLmljb24td3JhcHBlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGdyZXk7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGhlaWdodDogMTAwcHg7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogOTkxcHgpIHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAwO1xuICAgIH1cbn1cblxuI21hcCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogYWxpY2VibHVlO1xuICAgIGhlaWdodDogMzAwcHg7XG4gICAgbWFyZ2luLWJvdHRvbTogNjBweDtcbn1cblxuLmNvbnRhY3QtcGFnZSAjbWFwIHtcbiAgICBtYXJnaW4tdG9wOiA2MHB4O1xufVxuXG4uY2xpZW50LXNsaWRlciB7XG4gICAgLnNsaWNrLXNsaWRlPmRpdiB7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDg0cHg7XG4gICAgfVxufVxuXG4uYnJhbmQtc2xpZGVyIHtcbiAgICAuc2xpY2stc2xpZGU+ZGl2IHtcbiAgICAgICAgbWluLWhlaWdodDogODRweDtcbiAgICB9XG59XG5cbi50ZXN0aW1vbmlhbC1zbGlkZXIge1xuICAgIHBhZGRpbmc6IDAgNjBweDtcblxuICAgIC5zbGljay1hcnJvdyB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgdG9wOiAxNXB4O1xuICAgICAgICBmb250LXNpemU6IDA7XG4gICAgICAgIGNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICAgICAgd2lkdGg6IDQ1cHg7XG4gICAgICAgIGhlaWdodDogMzBweDtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5MDA7XG5cbiAgICAgICAgJjphZnRlciB7XG4gICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICB0b3A6IDA7XG4gICAgICAgICAgICBsZWZ0OiAwO1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgICAgICBjb2xvcjogJHByaW1hcnktY29sb3VyO1xuICAgICAgICAgICAgZm9udC1zaXplOiAzMnB4O1xuICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDMycHg7XG4gICAgICAgICAgICBmb250LWZhbWlseTogXCJGb250IEF3ZXNvbWUgNiBQcm9cIjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHAge1xuICAgICAgICBAYXBwbHkgbWItMTtcbiAgICB9XG5cbiAgICAuc2xpY2stbmV4dCB7XG4gICAgICAgIHJpZ2h0OiAwO1xuXG4gICAgICAgICY6YWZ0ZXIge1xuICAgICAgICAgICAgY29udGVudDogJ1xcZjM1Nic7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuc2xpY2stcHJldiB7XG4gICAgICAgIGxlZnQ6IDA7XG5cbiAgICAgICAgJjphZnRlciB7XG4gICAgICAgICAgICBjb250ZW50OiAnXFxmMzU1JztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGJ1dHRvbjpmb2N1cyB7XG4gICAgICAgIG91dGxpbmU6IG5vbmU7XG4gICAgfVxufVxuXG4udGV4dC1zbGlkZXIge1xuICAgIHBhZGRpbmc6IDAgNjBweDtcblxuICAgIC5zbGljay1hcnJvdyB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgdG9wOiBjYWxjKDUwJSAtIDE1cHgpO1xuICAgICAgICBmb250LXNpemU6IDA7XG4gICAgICAgIGNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICAgICAgd2lkdGg6IDQ1cHg7XG4gICAgICAgIGhlaWdodDogMzBweDtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA5MDA7XG5cbiAgICAgICAgJjphZnRlciB7XG4gICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICB0b3A6IDA7XG4gICAgICAgICAgICBsZWZ0OiAwO1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgICAgICBjb2xvcjogJHByaW1hcnktY29sb3VyO1xuICAgICAgICAgICAgZm9udC1zaXplOiAzMnB4O1xuICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDMycHg7XG4gICAgICAgICAgICBmb250LWZhbWlseTogXCJGb250IEF3ZXNvbWUgNiBQcm9cIjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5zbGljay1uZXh0IHtcbiAgICAgICAgcmlnaHQ6IDA7XG5cbiAgICAgICAgJjphZnRlciB7XG4gICAgICAgICAgICBjb250ZW50OiAnXFxmMzU2JztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5zbGljay1wcmV2IHtcbiAgICAgICAgbGVmdDogMDtcblxuICAgICAgICAmOmFmdGVyIHtcbiAgICAgICAgICAgIGNvbnRlbnQ6ICdcXGYzNTUnO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYnV0dG9uOmZvY3VzIHtcbiAgICAgICAgb3V0bGluZTogbm9uZTtcbiAgICB9XG59XG5cbi8qIHB1cmdlY3NzIHN0YXJ0IGlnbm9yZSAqL1xuXG4vLyAjbWFya2V0aW5nLWNvbnNlbnQsXG4vLyAjZW5xdWlyeV9hZ3JlZUNvbnRhY3Qge1xuLy8gICAgIGRpc3BsYXk6IG5vbmU7XG5cbi8vICAgICArbGFiZWwge1xuLy8gICAgICAgICAmOmJlZm9yZSB7XG4vLyAgICAgICAgICAgICBjb250ZW50OiAnXFxmMGM4Jztcbi8vICAgICAgICAgICAgIGZvbnQtZmFtaWx5OiAnRm9udCBBd2Vzb21lIDUgUHJvJztcbi8vICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiAzMDA7XG4vLyAgICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDEwcHg7XG4vLyAgICAgICAgIH1cbi8vICAgICB9XG5cbi8vICAgICAmOmNoZWNrZWQrbGFiZWw6YmVmb3JlIHtcbi8vICAgICAgICAgY29udGVudDogJ1xcZjE0YSc7XG4vLyAgICAgfVxuLy8gfVxuXG4vKiBwdXJnZWNzcyBlbmQgaWdub3JlICovXG5cbi5zb2NpYWwge1xuICAgIHVsIHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lO1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IDA7XG5cbiAgICAgICAgPmxpIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZTtcblxuICAgICAgICAgICAgK2xpIHtcbiAgICAgICAgICAgICAgICBtYXJnaW4tbGVmdDogMTBweDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBhIHtcbiAgICAgICAgICAgIHBhZGRpbmc6IDZweDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDc2N3B4KSB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBtYXJnaW4tdG9wOiAxMHB4O1xuICAgICAgICB1bCB7XG4gICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDA7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbiNoZWFkZXIgdWwge1xuICAgIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgIHBhZGRpbmctbGVmdDogMDtcbiAgICBhOmhvdmVyIHtcbiAgICAgICAgQGFwcGx5IHRleHQtcHJpbWFyeTtcbiAgICB9XG59XG5cbi8vIFRBSUxXSU5EIE9OTFlcblxuQHNjcmVlbiBsZyB7XG4gICAgI21haW5OYXYgLnN1Ym1lbnUge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cblxuICAgICNtYWluTmF2IGxpOmhvdmVyIC5zdWJtZW51IHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgfVxufVxuXG4uc3VibWVudSBhIHtcbiAgICBAYXBwbHkgaW5saW5lLWJsb2NrIHRleHQtYmxhY2sgbm8tdW5kZXJsaW5lIHB5LTEgcHgtNCBsZWFkaW5nLXRpZ2h0O1xufVxuXG4udGVzdGltb25pYWwtYmxvY2sge1xuICAgIEBhcHBseSBiZy1jb3ZlciBiZy1uby1yZXBlYXQgYmctY2VudGVyO1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgnLi4vaW1hZ2VzL3Rlc3RpbW9uaWFsLWJnLmpwZycpO1xufVxuXG4ucmF0aW5nMSB7XG4gICAgLnJhdGluZ19fc3RhcjIsIC5yYXRpbmdfX3N0YXIzLCAucmF0aW5nX19zdGFyNCwgLnJhdGluZ19fc3RhcjUge1xuICAgICAgICBAYXBwbHkgaGlkZGVuO1xuICAgIH1cbn1cblxuLnJhdGluZzIge1xuICAgIC5yYXRpbmdfX3N0YXIxLCAucmF0aW5nX19zdGFyMywgLnJhdGluZ19fc3RhcjQsIC5yYXRpbmdfX3N0YXI1IHtcbiAgICAgICAgQGFwcGx5IGhpZGRlbjtcbiAgICB9XG59XG5cbi5yYXRpbmczIHtcbiAgICAucmF0aW5nX19zdGFyMSwgLnJhdGluZ19fc3RhcjIsIC5yYXRpbmdfX3N0YXI0LCAucmF0aW5nX19zdGFyNSB7XG4gICAgICAgIEBhcHBseSBoaWRkZW47XG4gICAgfVxufVxuXG4ucmF0aW5nNCB7XG4gICAgLnJhdGluZ19fc3RhcjEsIC5yYXRpbmdfX3N0YXIyLCAucmF0aW5nX19zdGFyMywgLnJhdGluZ19fc3RhcjUge1xuICAgICAgICBAYXBwbHkgaGlkZGVuO1xuICAgIH1cbn1cblxuLnJhdGluZzUge1xuICAgIC5yYXRpbmdfX3N0YXIxLCAucmF0aW5nX19zdGFyMiwgLnJhdGluZ19fc3RhcjMsIC5yYXRpbmdfX3N0YXI0IHtcbiAgICAgICAgQGFwcGx5IGhpZGRlbjtcbiAgICB9XG59XG5cbi50ZXN0aW1vbmlhbF9fdGV4dCB7XG4gICAgcCB7XG4gICAgICAgIEBhcHBseSBtYi0yO1xuICAgICAgICAmOmxhc3Qtb2YtdHlwZSB7XG4gICAgICAgICAgICBAYXBwbHkgbWItMDtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLnN0dWR5LWdyYWQge1xuICAgICY6YWZ0ZXIge1xuICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgQGFwcGx5IGFic29sdXRlIHRvcC0wIGxlZnQtMCB3LWZ1bGwgaC1mdWxsIG1peC1ibGVuZC1tdWx0aXBseSB6LTEwO1xuICAgICAgICBiYWNrZ3JvdW5kOiAjMDAwMDAwO1xuICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMGRlZyxyZ2JhKDAsIDAsIDAsIDEpIDAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDApIDEwMCUpO1xuICAgIH1cbiAgICAmOmJlZm9yZSB7XG4gICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICBAYXBwbHkgYWJzb2x1dGUgdG9wLTAgbGVmdC0wIHctZnVsbCBoLWZ1bGwgbWl4LWJsZW5kLW11bHRpcGx5IHotMCBiZy1wcmltYXJ5IG1peC1ibGVuZC1tdWx0aXBseTtcbiAgICB9XG4gICAgLmNvbnRhaW5lciB7XG4gICAgICAgIEBhcHBseSByZWxhdGl2ZSB6LTIwO1xuICAgIH1cbn1cblxuLnN0dWR5LXRleHQge1xuICAgIGgyLCBoMywgaDQsIGg1LCBoNiwgLmgyLCAuaDMsIC5oNCwgLmg1LCAuaDYge1xuICAgICAgICBAYXBwbHkgdGV4dC1wcmltYXJ5O1xuICAgIH1cbiAgICBoMyB7XG4gICAgICAgIEBhcHBseSB0ZXh0LTN4bDtcbiAgICB9XG4gICAgdGFibGUge1xuICAgICAgICBAYXBwbHkgdy1mdWxsIG1iLTYgYm9yZGVyIGJvcmRlci1ibGFjaztcbiAgICAgICAgIHRkIHtcbiAgICAgICAgICAgIEBhcHBseSBwLTMgYm9yZGVyLXIgYm9yZGVyLWJsYWNrO1xuICAgICAgICAgICAgJjo6bGFzdC1vZi10eXBlIHtcbiAgICAgICAgICAgICAgICBAYXBwbHkgYm9yZGVyLW5vbmU7XG4gICAgICAgICAgICB9XG4gICAgICAgICB9XG4gICAgICAgIHRoZWFkIHtcbiAgICAgICAgICAgIEBhcHBseSBiZy1wcmltYXJ5IHRleHQtd2hpdGU7XG4gICAgICAgICAgICB0ZCB7XG4gICAgICAgICAgICAgICAgQGFwcGx5IGJvcmRlci1ibGFjayBib3JkZXItYjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuLmxhbmRpbmctdGV4dCB7XG4gICAgaDIsIGgzLCBoNCwgaDUsIGg2LCAuaDIsIC5oMywgLmg0LCAuaDUsIC5oNiB7XG4gICAgICAgIEBhcHBseSB0ZXh0LXByaW1hcnk7XG4gICAgfVxufVxuXG4uc2VydmljZS1saW5rIHtcbiAgICAmOmhvdmVyIHtcbiAgICAgICAgZmlsdGVyOiBicmlnaHRuZXNzKDApIHNhdHVyYXRlKDEwMCUpIGludmVydCgxMiUpIHNlcGlhKDQ1JSkgc2F0dXJhdGUoNjQ2MCUpIGh1ZS1yb3RhdGUoMzQ5ZGVnKSBicmlnaHRuZXNzKDExMCUpIGNvbnRyYXN0KDk4JSk7XG4gICAgfVxufVxuXG4udGV4dC1jb2xzIHtcbiAgICBwOm50aC1jaGlsZCgyKSwgcDpudGgtY2hpbGQoMykge1xuICAgICAgICBAYXBwbHkgaW5saW5lLWJsb2NrO1xuICAgICAgICB3aWR0aDogY2FsYyg1MCUgLSAzMHB4KTtcbiAgICB9XG4gICAgcDpudGgtY2hpbGQoMikge1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDE1cHg7XG4gICAgfVxuICAgIHA6bnRoLWNoaWxkKDMpIHtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDE1cHg7XG4gICAgfVxufVxuXG4udGV4dC1hbmQtaW1hZ2U6aGFzKCsgLnRleHQtYW5kLWltYWdlKSB7XG4gICAgbWFyZ2luLWJvdHRvbTogMCFpbXBvcnRhbnQ7XG59XG5cbmRldGFpbHMgPiBzdW1tYXJ5IHtcbiAgICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG4gICAgJjpob3ZlciB7XG4gICAgICAgIEBhcHBseSBjdXJzb3ItcG9pbnRlcjtcbiAgICB9XG59XG5cbmRldGFpbHMgPiBzdW1tYXJ5Ojotd2Via2l0LWRldGFpbHMtbWFya2VyIHtcbiAgICBkaXNwbGF5OiBub25lO1xufVxuXG5kZXRhaWxzID4gc3VtbWFyeTo6YWZ0ZXIge1xuICAgIEBhcHBseSBmb250LWljb25zIGFic29sdXRlIHJpZ2h0LTY7XG4gICAgY29udGVudDogJ1xcZjA3OCc7XG59XG5cbmRldGFpbHNbb3Blbl0gPiBzdW1tYXJ5OjphZnRlciB7XG4gICAgY29udGVudDogJ1xcZjA3Nyc7XG59XG5cbi50ZXh0c2xpZGVyLS1jb250ZW50IHtcbiAgICB1bCwgb2wge1xuICAgICAgICBsaXN0LXN0eWxlOiBub25lO1xuICAgIH1cbn1cblxuLm1lbnUtd3JhcHBlciB7XG4gICAgQGFwcGx5IG1heC1oLVs4MHZoXSBvdmVyZmxvdy15LWF1dG87XG4gICAgQHNjcmVlbiBsZyB7XG4gICAgICAgIG1heC1oZWlnaHQ6YXV0bztcbiAgICAgICAgQGFwcGx5IG92ZXJmbG93LXktdmlzaWJsZTtcbiAgICB9XG59XG5cbnNlY3Rpb24uc2VjdGlvbi1zZXJ2aWNlLW5ld3M6aGFzKCsuc2VjdGlvbi1ncmV5LCArLmJnLWJsYWNrKSB7XG4gICAgQGFwcGx5IHBiLTA7XG59XG5cbi5oZWFkZXItcHJpbWFyeSB7XG4gICAgaDEsIGgyLCBoNCwgaDQge1xuICAgICAgICBAYXBwbHkgdGV4dC1wcmltYXJ5O1xuICAgIH1cbn1cblxuLy8gRU5EIEJBU0VcblxuLy8gRVJST1JcbmJvZHkuZXJyb3Ige1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRwcmltYXJ5LWNvbG91cjtcbn1cblxuLy8gRU5EIEVSUk9SXG5cbi8vIE5BVlxuI2hlYWRlciB7XG4gICAgLnNvY2lhbCB7XG4gICAgICAgIHBhZGRpbmctbGVmdDogMDtcbiAgICAgICAgcGFkZGluZy1yaWdodDogMTVweDtcbiAgICAgICAgbWFyZ2luLXRvcDogMTBweDtcblxuICAgICAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA5OTFweCkge1xuICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiAwO1xuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIH1cblxuICAgICAgICBAc2NyZWVuIG1kIHtcbiAgICAgICAgICAgIEBhcHBseSBtdC0wO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4jbWFpbk5hdjpub3QoLmFyZWFzLWZvb3Rlci1tZW51IHVsKSAuYWN0aXZlIHtcbiAgICBjb2xvcjogJHByaW1hcnktY29sb3VyO1xufVxuXG4uc2l0ZS1oZWFkZXIge1xuICAgICY6YWZ0ZXIge1xuICAgICAgICBjb250ZW50OiAnJztcbiAgICAgICAgQGFwcGx5IGFic29sdXRlIHRvcC0wIGxlZnQtMCB3LWZ1bGwgaC1mdWxsIGJnLXdoaXRlIHotMTA7XG4gICAgICAgIG9wYWNpdHk6IDAuNjU7XG4gICAgICAgIHRyYW5zaXRpb246IGFsbCAxcztcbiAgICB9XG5cbiAgICAuY29udGFpbmVyIHtcbiAgICAgICAgQGFwcGx5IHJlbGF0aXZlIHotMjA7XG4gICAgfVxufVxuXG4uc2l0ZS1oZWFkZXItLWJvcmRlcixcbi5zaXRlLWhlYWRlci0tYm9yZGVyLWNvbnN0IHtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJHByaW1hcnktY29sb3VyO1xufVxuXG4uc2l0ZS1oZWFkZXItLW9wYWNpdHkge1xuICAgICY6YWZ0ZXIge1xuICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMXM7XG4gICAgfVxufVxuXG5idXR0b24jbmF2LXRvZ2dsZSB7XG4gICAgJjpmb2N1cyB7XG4gICAgICAgIEBhcHBseSBvdXRsaW5lLW5vbmU7XG4gICAgfVxuXG4gICAgc3ZnIHtcbiAgICAgICAgZmlsbDogJHByaW1hcnktY29sb3VyO1xuICAgIH1cbn1cblxuLmJyYW5kLWxvZ28ge1xuICAgIG1heC13aWR0aDogMTAwJTtcbn1cblxuLnN0cmFwbGluZSB7XG4gICAgbWF4LXdpZHRoOiAxMDAlO1xufVxuXG5AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAxNTAwcHgpIHtcbiAgICAuYnJhbmQtbG9nbyB7XG4gICAgICAgIG1heC13aWR0aDogMTc1cHg7XG4gICAgfVxuICAgIC5zdHJhcGxpbmUge1xuICAgICAgICBtYXgtd2lkdGg6IDI1MHB4O1xuICAgIH1cbn1cblxuQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNzY4cHgpIHtcblxuICAgIC5zdHJhcGxpbmUge1xuICAgICAgICBtYXgtd2lkdGg6IDI1MHB4O1xuICAgIH1cbn1cblxuLy8gRU5EIE5BVlxuXG4vLyBQT1BVUFxuLyogTWFnbmlmaWMgUG9wdXAgQ1NTICovXG4vKiBwdXJnZWNzcyBzdGFydCBpZ25vcmUgKi9cbi5tZnAtYmcge1xuICAgIHRvcDogMDtcbiAgICBsZWZ0OiAwO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICB6LWluZGV4OiAxMDQyO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgcG9zaXRpb246IGZpeGVkO1xuICAgIGJhY2tncm91bmQ6ICMwYjBiMGI7XG4gICAgb3BhY2l0eTogMC44O1xufVxuXG4ubWZwLXdyYXAge1xuICAgIHRvcDogMDtcbiAgICBsZWZ0OiAwO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICB6LWluZGV4OiAxMDQzO1xuICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICBvdXRsaW5lOiBub25lICFpbXBvcnRhbnQ7XG4gICAgLXdlYmtpdC1iYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47XG59XG5cbi5tZnAtY29udGFpbmVyIHtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBsZWZ0OiAwO1xuICAgIHRvcDogMDtcbiAgICBwYWRkaW5nOiAwIDhweDtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xufVxuXG4ubWZwLWNvbnRhaW5lcjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICcnO1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbn1cblxuLm1mcC1hbGlnbi10b3AgLm1mcC1jb250YWluZXI6YmVmb3JlIHtcbiAgICBkaXNwbGF5OiBub25lO1xufVxuXG4ubWZwLWNvbnRlbnQge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICBtYXJnaW46IDAgYXV0bztcbiAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgIHotaW5kZXg6IDEwNDU7XG59XG5cbi5tZnAtaW5saW5lLWhvbGRlciAubWZwLWNvbnRlbnQsXG4ubWZwLWFqYXgtaG9sZGVyIC5tZnAtY29udGVudCB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgY3Vyc29yOiBhdXRvO1xufVxuXG4ubWZwLWFqYXgtY3VyIHtcbiAgICBjdXJzb3I6IHByb2dyZXNzO1xufVxuXG4ubWZwLXpvb20tb3V0LWN1cixcbi5tZnAtem9vbS1vdXQtY3VyIC5tZnAtaW1hZ2UtaG9sZGVyIC5tZnAtY2xvc2Uge1xuICAgIGN1cnNvcjogLW1vei16b29tLW91dDtcbiAgICBjdXJzb3I6IC13ZWJraXQtem9vbS1vdXQ7XG4gICAgY3Vyc29yOiB6b29tLW91dDtcbn1cblxuLm1mcC16b29tIHtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgY3Vyc29yOiAtd2Via2l0LXpvb20taW47XG4gICAgY3Vyc29yOiAtbW96LXpvb20taW47XG4gICAgY3Vyc29yOiB6b29tLWluO1xufVxuXG4ubWZwLWF1dG8tY3Vyc29yIC5tZnAtY29udGVudCB7XG4gICAgY3Vyc29yOiBhdXRvO1xufVxuXG4ubWZwLWNsb3NlLFxuLm1mcC1hcnJvdyxcbi5tZnAtcHJlbG9hZGVyLFxuLm1mcC1jb3VudGVyIHtcbiAgICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lO1xuICAgIC1tb3otdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgdXNlci1zZWxlY3Q6IG5vbmU7XG59XG5cbi5tZnAtbG9hZGluZy5tZnAtZmlndXJlIHtcbiAgICBkaXNwbGF5OiBub25lO1xufVxuXG4ubWZwLWhpZGUge1xuICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbn1cblxuLm1mcC1wcmVsb2FkZXIge1xuICAgIGNvbG9yOiAjQ0NDO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDUwJTtcbiAgICB3aWR0aDogYXV0bztcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgbWFyZ2luLXRvcDogLTAuOGVtO1xuICAgIGxlZnQ6IDhweDtcbiAgICByaWdodDogOHB4O1xuICAgIHotaW5kZXg6IDEwNDQ7XG59XG5cbi5tZnAtcHJlbG9hZGVyIGEge1xuICAgIGNvbG9yOiAjQ0NDO1xufVxuXG4ubWZwLXByZWxvYWRlciBhOmhvdmVyIHtcbiAgICBjb2xvcjogI0ZGRjtcbn1cblxuLm1mcC1zLXJlYWR5IC5tZnAtcHJlbG9hZGVyIHtcbiAgICBkaXNwbGF5OiBub25lO1xufVxuXG4ubWZwLXMtZXJyb3IgLm1mcC1jb250ZW50IHtcbiAgICBkaXNwbGF5OiBub25lO1xufVxuXG5idXR0b24ubWZwLWNsb3NlLFxuYnV0dG9uLm1mcC1hcnJvdyB7XG4gICAgb3ZlcmZsb3c6IHZpc2libGU7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAgIGJvcmRlcjogMDtcbiAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgb3V0bGluZTogbm9uZTtcbiAgICBwYWRkaW5nOiAwO1xuICAgIHotaW5kZXg6IDEwNDY7XG4gICAgYm94LXNoYWRvdzogbm9uZTtcbiAgICB0b3VjaC1hY3Rpb246IG1hbmlwdWxhdGlvbjtcbn1cblxuYnV0dG9uOjotbW96LWZvY3VzLWlubmVyIHtcbiAgICBwYWRkaW5nOiAwO1xuICAgIGJvcmRlcjogMDtcbn1cblxuLm1mcC1jbG9zZSB7XG4gICAgd2lkdGg6IDQ0cHg7XG4gICAgaGVpZ2h0OiA0NHB4O1xuICAgIGxpbmUtaGVpZ2h0OiA0NHB4O1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICByaWdodDogMDtcbiAgICB0b3A6IDA7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBvcGFjaXR5OiAwLjY1O1xuICAgIHBhZGRpbmc6IDAgMCAxOHB4IDEwcHg7XG4gICAgY29sb3I6ICNGRkY7XG4gICAgZm9udC1zdHlsZTogbm9ybWFsO1xuICAgIGZvbnQtc2l6ZTogMjhweDtcbiAgICBmb250LWZhbWlseTogQXJpYWwsIEJhc2tlcnZpbGxlLCBtb25vc3BhY2U7XG59XG5cbi5tZnAtY2xvc2U6aG92ZXIsXG4ubWZwLWNsb3NlOmZvY3VzIHtcbiAgICBvcGFjaXR5OiAxO1xufVxuXG4ubWZwLWNsb3NlOmFjdGl2ZSB7XG4gICAgdG9wOiAxcHg7XG59XG5cbi5tZnAtY2xvc2UtYnRuLWluIC5tZnAtY2xvc2Uge1xuICAgIGNvbG9yOiAjMzMzO1xufVxuXG4ubWZwLWltYWdlLWhvbGRlciAubWZwLWNsb3NlLFxuLm1mcC1pZnJhbWUtaG9sZGVyIC5tZnAtY2xvc2Uge1xuICAgIGNvbG9yOiAjRkZGO1xuICAgIHJpZ2h0OiAtNnB4O1xuICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgIHBhZGRpbmctcmlnaHQ6IDZweDtcbiAgICB3aWR0aDogMTAwJTtcbn1cblxuLm1mcC1jb3VudGVyIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwO1xuICAgIHJpZ2h0OiAwO1xuICAgIGNvbG9yOiAjQ0NDO1xuICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICBsaW5lLWhlaWdodDogMThweDtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xufVxuXG4ubWZwLWFycm93IHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgb3BhY2l0eTogMC42NTtcbiAgICBtYXJnaW46IDA7XG4gICAgdG9wOiA1MCU7XG4gICAgbWFyZ2luLXRvcDogLTU1cHg7XG4gICAgcGFkZGluZzogMDtcbiAgICB3aWR0aDogOTBweDtcbiAgICBoZWlnaHQ6IDExMHB4O1xuICAgIC13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjogdHJhbnNwYXJlbnQ7XG59XG5cbi5tZnAtYXJyb3c6YWN0aXZlIHtcbiAgICBtYXJnaW4tdG9wOiAtNTRweDtcbn1cblxuLm1mcC1hcnJvdzpob3Zlcixcbi5tZnAtYXJyb3c6Zm9jdXMge1xuICAgIG9wYWNpdHk6IDE7XG59XG5cbi5tZnAtYXJyb3c6YmVmb3JlLFxuLm1mcC1hcnJvdzphZnRlciB7XG4gICAgY29udGVudDogJyc7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgd2lkdGg6IDA7XG4gICAgaGVpZ2h0OiAwO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBsZWZ0OiAwO1xuICAgIHRvcDogMDtcbiAgICBtYXJnaW4tdG9wOiAzNXB4O1xuICAgIG1hcmdpbi1sZWZ0OiAzNXB4O1xuICAgIGJvcmRlcjogbWVkaXVtIGluc2V0IHRyYW5zcGFyZW50O1xufVxuXG4ubWZwLWFycm93OmFmdGVyIHtcbiAgICBib3JkZXItdG9wLXdpZHRoOiAxM3B4O1xuICAgIGJvcmRlci1ib3R0b20td2lkdGg6IDEzcHg7XG4gICAgdG9wOiA4cHg7XG59XG5cbi5tZnAtYXJyb3c6YmVmb3JlIHtcbiAgICBib3JkZXItdG9wLXdpZHRoOiAyMXB4O1xuICAgIGJvcmRlci1ib3R0b20td2lkdGg6IDIxcHg7XG4gICAgb3BhY2l0eTogMC43O1xufVxuXG4ubWZwLWFycm93LWxlZnQge1xuICAgIGxlZnQ6IDA7XG59XG5cbi5tZnAtYXJyb3ctbGVmdDphZnRlciB7XG4gICAgYm9yZGVyLXJpZ2h0OiAxN3B4IHNvbGlkICNGRkY7XG4gICAgbWFyZ2luLWxlZnQ6IDMxcHg7XG59XG5cbi5tZnAtYXJyb3ctbGVmdDpiZWZvcmUge1xuICAgIG1hcmdpbi1sZWZ0OiAyNXB4O1xuICAgIGJvcmRlci1yaWdodDogMjdweCBzb2xpZCAjM0YzRjNGO1xufVxuXG4ubWZwLWFycm93LXJpZ2h0IHtcbiAgICByaWdodDogMDtcbn1cblxuLm1mcC1hcnJvdy1yaWdodDphZnRlciB7XG4gICAgYm9yZGVyLWxlZnQ6IDE3cHggc29saWQgI0ZGRjtcbiAgICBtYXJnaW4tbGVmdDogMzlweDtcbn1cblxuLm1mcC1hcnJvdy1yaWdodDpiZWZvcmUge1xuICAgIGJvcmRlci1sZWZ0OiAyN3B4IHNvbGlkICMzRjNGM0Y7XG59XG5cbi5tZnAtaWZyYW1lLWhvbGRlciB7XG4gICAgcGFkZGluZy10b3A6IDQwcHg7XG4gICAgcGFkZGluZy1ib3R0b206IDQwcHg7XG59XG5cbi5tZnAtaWZyYW1lLWhvbGRlciAubWZwLWNvbnRlbnQge1xuICAgIGxpbmUtaGVpZ2h0OiAwO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIG1heC13aWR0aDogOTAwcHg7XG59XG5cbi5tZnAtaWZyYW1lLWhvbGRlciAubWZwLWNsb3NlIHtcbiAgICB0b3A6IC00MHB4O1xufVxuXG4ubWZwLWlmcmFtZS1zY2FsZXIge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMDtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIHBhZGRpbmctdG9wOiA1Ni4yNSU7XG59XG5cbi5tZnAtaWZyYW1lLXNjYWxlciBpZnJhbWUge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICB0b3A6IDA7XG4gICAgbGVmdDogMDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgYm94LXNoYWRvdzogMCAwIDhweCByZ2JhKDAsIDAsIDAsIDAuNik7XG4gICAgYmFja2dyb3VuZDogIzAwMDtcbn1cblxuLyogTWFpbiBpbWFnZSBpbiBwb3B1cCAqL1xuaW1nLm1mcC1pbWcge1xuICAgIHdpZHRoOiBhdXRvO1xuICAgIG1heC13aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IGF1dG87XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgbGluZS1oZWlnaHQ6IDA7XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICBwYWRkaW5nOiA0MHB4IDAgNDBweDtcbiAgICBtYXJnaW46IDAgYXV0bztcbn1cblxuLyogVGhlIHNoYWRvdyBiZWhpbmQgdGhlIGltYWdlICovXG4ubWZwLWZpZ3VyZSB7XG4gICAgbGluZS1oZWlnaHQ6IDA7XG59XG5cbi5tZnAtZmlndXJlOmFmdGVyIHtcbiAgICBjb250ZW50OiAnJztcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgbGVmdDogMDtcbiAgICB0b3A6IDQwcHg7XG4gICAgYm90dG9tOiA0MHB4O1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHJpZ2h0OiAwO1xuICAgIHdpZHRoOiBhdXRvO1xuICAgIGhlaWdodDogYXV0bztcbiAgICB6LWluZGV4OiAtMTtcbiAgICBib3gtc2hhZG93OiAwIDAgOHB4IHJnYmEoMCwgMCwgMCwgMC42KTtcbiAgICBiYWNrZ3JvdW5kOiAjNDQ0O1xufVxuXG4ubWZwLWZpZ3VyZSBzbWFsbCB7XG4gICAgY29sb3I6ICNCREJEQkQ7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgZm9udC1zaXplOiAxMnB4O1xuICAgIGxpbmUtaGVpZ2h0OiAxNHB4O1xufVxuXG4ubWZwLWZpZ3VyZSBmaWd1cmUge1xuICAgIG1hcmdpbjogMDtcbn1cblxuLm1mcC1ib3R0b20tYmFyIHtcbiAgICBtYXJnaW4tdG9wOiAtMzZweDtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAxMDAlO1xuICAgIGxlZnQ6IDA7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgY3Vyc29yOiBhdXRvO1xufVxuXG4ubWZwLXRpdGxlIHtcbiAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgIGxpbmUtaGVpZ2h0OiAxOHB4O1xuICAgIGNvbG9yOiAjRjNGM0YzO1xuICAgIHdvcmQtd3JhcDogYnJlYWstd29yZDtcbiAgICBwYWRkaW5nLXJpZ2h0OiAzNnB4O1xufVxuXG4ubWZwLWltYWdlLWhvbGRlciAubWZwLWNvbnRlbnQge1xuICAgIG1heC13aWR0aDogMTAwJTtcbn1cblxuLm1mcC1nYWxsZXJ5IC5tZnAtaW1hZ2UtaG9sZGVyIC5tZnAtZmlndXJlIHtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG59XG5cbkBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDgwMHB4KSBhbmQgKG9yaWVudGF0aW9uOiBsYW5kc2NhcGUpLFxuc2NyZWVuIGFuZCAobWF4LWhlaWdodDogMzAwcHgpIHtcblxuICAgIC8qKlxuICAgICAqIFJlbW92ZSBhbGwgcGFkZGluZ3MgYXJvdW5kIHRoZSBpbWFnZSBvbiBzbWFsbCBzY3JlZW5cbiAgICAgKi9cbiAgICAubWZwLWltZy1tb2JpbGUgLm1mcC1pbWFnZS1ob2xkZXIge1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IDA7XG4gICAgICAgIHBhZGRpbmctcmlnaHQ6IDA7XG4gICAgfVxuXG4gICAgLm1mcC1pbWctbW9iaWxlIGltZy5tZnAtaW1nIHtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICB9XG5cbiAgICAubWZwLWltZy1tb2JpbGUgLm1mcC1maWd1cmU6YWZ0ZXIge1xuICAgICAgICB0b3A6IDA7XG4gICAgICAgIGJvdHRvbTogMDtcbiAgICB9XG5cbiAgICAubWZwLWltZy1tb2JpbGUgLm1mcC1maWd1cmUgc21hbGwge1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmU7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiA1cHg7XG4gICAgfVxuXG4gICAgLm1mcC1pbWctbW9iaWxlIC5tZnAtYm90dG9tLWJhciB7XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC42KTtcbiAgICAgICAgYm90dG9tOiAwO1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIHRvcDogYXV0bztcbiAgICAgICAgcGFkZGluZzogM3B4IDVweDtcbiAgICAgICAgcG9zaXRpb246IGZpeGVkO1xuICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgIH1cblxuICAgIC5tZnAtaW1nLW1vYmlsZSAubWZwLWJvdHRvbS1iYXI6ZW1wdHkge1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgIH1cblxuICAgIC5tZnAtaW1nLW1vYmlsZSAubWZwLWNvdW50ZXIge1xuICAgICAgICByaWdodDogNXB4O1xuICAgICAgICB0b3A6IDNweDtcbiAgICB9XG5cbiAgICAubWZwLWltZy1tb2JpbGUgLm1mcC1jbG9zZSB7XG4gICAgICAgIHRvcDogMDtcbiAgICAgICAgcmlnaHQ6IDA7XG4gICAgICAgIHdpZHRoOiAzNXB4O1xuICAgICAgICBoZWlnaHQ6IDM1cHg7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAzNXB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuNik7XG4gICAgICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgIH1cbn1cblxuQG1lZGlhIGFsbCBhbmQgKG1heC13aWR0aDogOTAwcHgpIHtcbiAgICAubWZwLWFycm93IHtcbiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDAuNzUpO1xuICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDAuNzUpO1xuICAgIH1cblxuICAgIC5tZnAtYXJyb3ctbGVmdCB7XG4gICAgICAgIC13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjogMDtcbiAgICAgICAgdHJhbnNmb3JtLW9yaWdpbjogMDtcbiAgICB9XG5cbiAgICAubWZwLWFycm93LXJpZ2h0IHtcbiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOiAxMDAlO1xuICAgICAgICB0cmFuc2Zvcm0tb3JpZ2luOiAxMDAlO1xuICAgIH1cblxuICAgIC5tZnAtY29udGFpbmVyIHtcbiAgICAgICAgcGFkZGluZy1sZWZ0OiA2cHg7XG4gICAgICAgIHBhZGRpbmctcmlnaHQ6IDZweDtcbiAgICB9XG59XG4vKiBwdXJnZWNzcyBlbmQgaWdub3JlICovXG4vLyBFTkQgUE9QVVBcblxuLy8gQ09NUE9ORU5UUyBIRVJPXG4uc2xpZGUge1xuICAgIGJhY2tncm91bmQtc2l6ZTogY292ZXI7XG4gICAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyO1xuICAgIG1pbi1oZWlnaHQ6IDYwMHB4O1xuXG4gICAgJl9fbG9nb3Mge1xuICAgICAgICBwYWRkaW5nLXRvcDozMHB4O1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKCR3aGl0ZSwgMC44KTtcbiAgICB9XG5cbiAgICAmX19sb2dvcy1pbWFnZSB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBtYXJnaW46IDAgYXV0bztcbiAgICAgICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgICAgICBoZWlnaHQ6IGF1dG87XG4gICAgfVxufVxuXG4uaGVybyB7XG4gICAgQGFwcGx5IHJlbGF0aXZlO1xuICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgLnNsaWRlID4gZGl2OmFmdGVyIHtcbiAgICAgICAgY29udGVudDogJyc7XG4gICAgICAgIEBhcHBseSBhYnNvbHV0ZSB0b3AtMCBsZWZ0LTAgdy1mdWxsIGgtZnVsbCB6LTEwIG1peC1ibGVuZC1tdWx0aXBseTtcbiAgICAgICAgYmFja2dyb3VuZDogIzAwMDAwMDtcbiAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDM2MGRlZywgcmdiYSgwLCAwLCAwLCAxKSAwJSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwKSAxMDAlKTtcbiAgICB9XG4gICAgLnNsaWRlX19sYWJlbCB7XG4gICAgICAgIEBhcHBseSByZWxhdGl2ZSB6LTIwO1xuICAgIH1cbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAxMTk5cHgpIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICB9XG59XG5cbnNlY3Rpb24udmlkZW8ge1xuICAgIEBhcHBseSByZWxhdGl2ZSB3LXNjcmVlbiBoLVs3NTBweF0gYmctYmxhY2s7XG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogOTkwcHgpIHtcbiAgICAgICAgQGFwcGx5IGgtc2NyZWVuO1xuICAgIH1cbiAgICAjbXlWaWRlbyB7XG4gICAgICAgIEBhcHBseSBhYnNvbHV0ZSB0b3AtMCBsZWZ0LTAgei0wIGgtZnVsbCB3LWZ1bGwgb2JqZWN0LWNvdmVyO1xuICAgIH1cbiAgICAmOmJlZm9yZSB7XG4gICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICBAYXBwbHkgYWJzb2x1dGUgdG9wLTAgbGVmdC0wIHctZnVsbCBoLWZ1bGwgYmctYmxhY2sgb3BhY2l0eS03MCB6LTIwO1xuICAgIH1cbn1cblxuLy8gRU5EIENPTVBPTkVOVFMgSEVST1xuXG4vLyBDT01QT05FTlRTIEJVVFRPTlNcbi5idG4ge1xuICAgIEBhcHBseSBiZy1wcmltYXJ5IGlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBweS0yIHB4LTQgdy1mdWxsIHJvdW5kZWQtZnVsbCB0ZXh0LWNlbnRlcjtcbiAgICBtYXJnaW4tdG9wOiAzMHB4O1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICRwcmltYXJ5LWNvbG91cjtcbiAgICBjb2xvcjogJHdoaXRlO1xuICAgIG1heC13aWR0aDogMjAwcHg7XG4gICAgbWluLWhlaWdodDogNjRweDtcbiAgICAmOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHdoaXRlO1xuICAgICAgICBjb2xvcjogJHByaW1hcnktY29sb3VyO1xuICAgIH1cbiAgICAmLS1mbHVpZCB7XG4gICAgICAgIG1heC13aWR0aDogbm9uZTtcbiAgICB9XG4gICAgJi0td2hpdGUge1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAkd2hpdGU7XG4gICAgICAgIGNvbG9yOiAkd2hpdGU7XG4gICAgfVxufVxuXG4uYnRuLXdpZGUge1xuICAgIG1heC13aWR0aDogMzc1cHg7XG59XG5cbi5idG4tc20ge1xuICAgIG1heC13aWR0aDogMTUwcHg7XG59XG5cbi5idG4tdmlkZW97XG4gICAgQGFwcGx5IHRleHQteHM7XG4gICAgYmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsIDAsIDAsIDAuNDUpO1xuICAgIG1pbi1oZWlnaHQ6IDUwcHg7XG4gICAgbWF4LWhlaWdodDogNTBweDtcbiAgICBib3JkZXI6IDJweCBzb2xpZCAkcHJpbWFyeS1jb2xvdXI7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHByaW1hcnktY29sb3VyO1xuICAgICAgICBjb2xvcjogJHdoaXRlO1xuICAgIH1cbn1cbi8vIEVORCBDT01QT05FTlRTIEJVVFRPTlNcblxuLy8gQ09NUE9ORU5UUyBTRVJWSUNFU1xuLnNlcnZpY2VzIHtcbiAgICAmLXNpbmdsZSB7XG4gICAgICAgICZfX2xpbmsge1xuICAgICAgICAgICAgQGFwcGx5IGZsZXggZmxleC1jb2wganVzdGlmeS1lbmQgYmctY292ZXIgcmVsYXRpdmU7XG4gICAgICAgICAgICBib3JkZXItYm90dG9tOiAxMHB4IHNvbGlkICRncmV5O1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMzBweDtcbiAgICAgICAgICAgIG1pbi1oZWlnaHQ6IDU1MHB4O1xuICAgICAgICAgICAgcGFkZGluZzogMzBweCAyMHB4O1xuICAgICAgICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyO1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHByaW1hcnktY29sb3VyO1xuICAgICAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuNXM7XG4gICAgICAgICAgICAmOmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgY29udGVudDogJyc7XG4gICAgICAgICAgICAgICAgQGFwcGx5IGFic29sdXRlIGJvdHRvbS0wIGxlZnQtMCB3LWZ1bGw7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHJnYmEoIzAwMCwgMCksIHJnYmEoIzAwMCwgMC45KSk7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiA1MCU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWJsZW5kLW1vZGU6IG11bHRpcGx5O1xuICAgICAgICAgICAgICAgIGJvcmRlci1ib3R0b206IDEwcHggc29saWQgJGJsYWNrO1xuICAgICAgICAgICAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLnNlcnZpY2VzLXNpbmdsZV9faWNvbiB7XG4gICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMTIwJSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNzY3cHgpIHtcbiAgICAgICAgICAgICAgICBtaW4taGVpZ2h0OiAyNTBweDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAmX19pY29uIHtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDIwcHg7XG4gICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICB6LWluZGV4OiAxO1xuICAgICAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuNXM7XG4gICAgICAgIH1cbiAgICAgICAgJl9fdGl0bGUge1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgIHotaW5kZXg6IDE7XG4gICAgICAgIH1cbiAgICAgICAgJjpudGgtbGFzdC1jaGlsZCgtbiszKSB7XG4gICAgICAgICAgICAuc2VydmljZXMtc2luZ2xlX19saW5rIHtcbiAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgICAgICAgICAgICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDExOTlweCkge1xuICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAzMHB4O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAmOm50aC1sYXN0LWNoaWxkKC1uKzIpIHtcbiAgICAgICAgICAgIC5zZXJ2aWNlcy1zaW5nbGVfX2xpbmsge1xuICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgICAgICAgICAgICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNzY3cHgpIHtcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMzBweDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgJjpudGgtbGFzdC1jaGlsZCgtbisxKSB7XG4gICAgICAgICAgICAuc2VydmljZXMtc2luZ2xlX19saW5rIHtcbiAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG4ud29yayB7XG4gICAgJi1zaW5nbGUge1xuICAgICAgICAmX190aXRsZSB7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgICAgICAgICAgcGFkZGluZzogMzBweCAwO1xuICAgICAgICB9XG4gICAgfVxufVxuLy8gRU5EIENPTVBPTkVOVFMgU0VSVklDRVNcblxuLy8gQ09NUE9ORU5UUyBHQUxMRVJZXG4uZ2FsbGVyeS1zaW5nbGUge1xuXG4gICAgbWFyZ2luLWJvdHRvbTogMzBweDtcblxuICAgICZfX2xpbmsge1xuICAgICAgICBwYWRkaW5nLWJvdHRvbTogNTQlO1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyO1xuICAgICAgICBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyO1xuICAgIH1cbn1cblxuc2VjdGlvbi5zZXJ2aWNlcy5nYWxsZXJ5IHtcbiAgICBwYWRkaW5nLWJvdHRvbTogMzBweDtcbn1cbi8vIEVORCBDT01QT05FTlRTIEdBTExFUllcblxuLy8gQ09NUE9ORU5UUyBGT09URVJcbmZvb3RlciB7XG4gICAgLmxlZ2FsIHtcbiAgICAgICAgLnNlcGFyYXRvciB7XG4gICAgICAgICAgICBtYXJnaW46IDAgMTBweDtcbiAgICAgICAgICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDk5MXB4KSB7XG4gICAgICAgICAgICAgICAgJjpmaXJzdC1vZi10eXBlIHtcbiAgICAgICAgICAgICAgICAgICAgQGFwcGx5IGhpZGRlbjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgYTpob3ZlciB7XG4gICAgICAgIEBhcHBseSB0ZXh0LWJsYWNrO1xuICAgIH1cbn1cblxuLmZvb3RlciB7XG4gICAgJl9fbG9nb3Mge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAzMHB4O1xuICAgIH1cblxuICAgICZfX2xvZ29zLWltYWdlIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIG1hcmdpbjogMCBhdXRvO1xuICAgICAgICB3aWR0aDogMTAwcHg7XG4gICAgICAgIG1heC13aWR0aDogMTAwJTtcbiAgICAgICAgaGVpZ2h0OiBhdXRvO1xuICAgIH1cblxufVxuLy8gRU5EIENPTVBPTkVOVFMgRk9PVEVSXG5cbi50aXRsZS1yZWQge1xuICAgIGgyLCBoMywgaDQge1xuICAgICAgICBAYXBwbHkgdGV4dC1wcmltYXJ5O1xuICAgIH1cbn1cblxuXG4uYXJlYXMtZm9vdGVyLW1lbnUgdWwge1xuICAgIEBhcHBseSBibG9jayBsaXN0LW5vbmUgcC0wIG0tMDtcbn1cblxudWwucGFnaW5hdGlvbiB7XG4gICAgQGFwcGx5IGxpc3Qtbm9uZSB0ZXh0LWNlbnRlciBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBnYXAtNCBtYi0xMjtcbiAgICBsaSB7XG4gICAgICAgIEBhcHBseSBiZy1wcmltYXJ5IHRleHQtd2hpdGUgcm91bmRlZC1mdWxsIGxlYWRpbmctbm9uZSB3LTEyIGgtMTIgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXI7XG4gICAgICAgIGEge1xuICAgICAgICAgICAgQGFwcGx5IHctZnVsbCBoLWZ1bGwgcC0zIGxlYWRpbmctbm9uZSBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlcjtcbiAgICAgICAgfVxuICAgICAgICAmLmFjdGl2ZSB7XG4gICAgICAgICAgICBAYXBwbHkgYmctYmxhY2s7XG4gICAgICAgIH1cbiAgICAgICAgJi5kaXNhYmxlZCB7XG4gICAgICAgICAgICBAYXBwbHkgY3Vyc29yLW5vdC1hbGxvd2VkIG9wYWNpdHktNTA7XG4gICAgICAgIH1cbiAgICAgICAgJjpoYXMoYSk6aG92ZXIge1xuICAgICAgICAgICAgQGFwcGx5IGJnLWJsYWNrO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4uc3VjY2Vzcy1tZXNzYWdlIHtcbiAgICBAYXBwbHkgdGV4dC1zdWNjZXNzIGZvbnQtYm9sZCB0ZXh0LWxnO1xufVxuXG4uZXJyb3ItbWVzc2FnZSB7XG4gICAgQGFwcGx5IHRleHQtZGFuZ2VyIGZvbnQtYm9sZCB0ZXh0LWxnO1xufVxuXG5cbnNwYW4uaGVscC1ibG9jayB7XG4gICAgQGFwcGx5IHRleHQtZGFuZ2VyO1xufVxuIiwiI2Nvb2tpZXMtYmFyIHtcbiAgICBAYXBwbHkgZml4ZWQgYm90dG9tLTAgbGVmdC0wIHctZnVsbCBwLTggYm9yZGVyLXQgYm9yZGVyLXByaW1hcnkgYmctd2hpdGUgei01MCB0ZXh0LWJsYWNrIHRleHQtbGVmdDtcblxuXG59XG5cbiNjb29raWVzLWJhci10YWIge1xuICAgIEBhcHBseSBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBjdXJzb3ItcG9pbnRlciB0ZXh0LWNlbnRlciBiZy13aGl0ZSB0ZXh0LTR4bCB0ZXh0LWJsYWNrIGJvcmRlciBib3JkZXItYmxhY2sgaC0xNiB3LTE2IHJvdW5kZWQtZnVsbDtcbiAgICAgICAgcG9zaXRpb246IGZpeGVkO1xuICAgICAgICBib3R0b206IDE1cHg7XG4gICAgICAgIGxlZnQ6IDEwcHg7XG4gICAgICAgIHotaW5kZXg6IDEwMDAwO1xuICAgICAgICAvLyBmb250LXNpemU6IDQwcHg7XG4gICAgICAgIC8vIGJhY2tncm91bmQ6IHdoaXRlO1xuICAgICAgICAvLyBib3JkZXI6IGJsYWNrIDJweCBzb2xpZDtcbiAgICAgICAgLy8gYm9yZGVyLXJhZGl1czogNTAlO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9*/