ngx-analog-wrist-watch
Version:
This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 8.2.14.
736 lines (695 loc) • 46.1 kB
JavaScript
/**
* @fileoverview added by tsickle
* Generated from: lib/ngx-analog-wrist-watch.service.ts
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { Injectable } from '@angular/core';
import * as i0 from "@angular/core";
/** @type {?} */
const watchStraps = [
{
styleClassName: ['strap-primary-top-left', 'border-color']
},
{
styleClassName: ['strap-primary-top-middle', 'border-color']
},
{
styleClassName: ['strap-primary-top-right', 'border-color']
},
{
styleClassName: ['strap-secondary-top-left']
},
{
styleClassName: ['strap-secondary-top-middle']
},
{
styleClassName: ['strap-secondary-top-right']
},
{
styleClassName: ['strap-tertiary-top-left']
},
{
styleClassName: ['strap-tertiary-top-middle']
},
{
styleClassName: ['strap-tertiary-top-right']
},
{
styleClassName: ['strap-primary-bottom-left', 'border-color']
},
{
styleClassName: ['strap-primary-bottom-middle', 'border-color']
},
{
styleClassName: ['strap-primary-bottom-right', 'border-color']
},
{
styleClassName: ['strap-secondary-bottom-left']
},
{
styleClassName: ['strap-secondary-bottom-middle']
},
{
styleClassName: ['strap-secondary-bottom-right']
},
{
styleClassName: ['strap-tertiary-bottom-left']
},
{
styleClassName: ['strap-tertiary-bottom-middle']
},
{
styleClassName: ['strap-tertiary-bottom-right']
},
];
/** @type {?} */
const dugHoles = ['topLeftDugHole', 'topRightDugHole', 'bottomLeftDugHole', 'bottomRightDugHole'];
/** @type {?} */
const internalStyle = `
:root {
--color:#2F4F4F;
--border-color:black;
--border-green:green;
--absolute:absolute;
--transparent:transparent;
}
span + .toggle-time {
display:flex!important;
}
div .top-left-dughole::before{
content: "";
border-right: 15px solid var(--color);
position: var(--absolute);
left: 0px;
border-top: 16px solid var(--transparent);
border-bottom: 0px solid var(--color);
width: 0px;
bottom: 0px;
}
div .top-right-dughole::before{
content: "";
border-left: 15px solid var(--color);
position: var(--absolute);
left: 0px;
border-top: 15px solid var(--transparent);
border-bottom: 0px solid var(--color);
bottom: 0px;
}
div .strap-primary-top-left {
position: var(--absolute);
left: 42%;
top: 31%;
height: 40px;
background:var(--color);
margin: 3px;
width: 25px;
}
div .border-color{
box-shadow: 0px 0px 1px 1px var(--border-green);
}
div .strap-primary-top-middle{
position: var(--absolute);
left: 47%;
top: 30%;
height: 40px;
background:var(--color);
margin: 1px;
width: 38px;
}
div .strap-primary-top-right {
position: var(--absolute);
left: 53%;
top: 201px;
height: 42px;
background:var(--color);
width: 25px;
margin: 6px;
}
div .bottom-left-dughole{
position: var(--absolute);
width: 15px;
border-top: 54px solid rgb(47, 79, 79);
border-left: 16px solid white;
top: 64%;
left: 37%;
}
div .bottom-left-dughole::before{
content: "";
border-right: 15px solid var(--color);
position: var(--absolute);
left: 0px;
border-top: 0px solid var(--color);
border-bottom: 14px solid var(--transparent);
width: 0px;
}
div .strap-primary-bottom-left {
position: var(--absolute);
left: 42%;
top: 444px;
height: 35px;
background:var(--color);
margin: 3px;
width: 25px;
}
div .strap-primary-bottom-middle{
position: var(--absolute);
left: 47%;
top: 67%;
height: 40px;
background:var(--color);
margin: 1px;
width: 38px;
}
div .strap-primary-bottom-right {
position: var(--absolute);
left: 55%;
top: 440px;
height: 44px;
background:var(--color);
width: 25px;
margin: -4px
}
div .bottom-right-dughole{
position: var(--absolute);
width: 15px;
border-top: 61px solid rgb(47, 79, 79);
border-right: 16px solid white;
top: 408px;
left: 57%;
margin: 11px;
border-top-left-radius: 19px;
}
div .bottom-right-dughole::before{
content: "";
border-left: 15px solid var(--color);
position: var(--absolute);
left: 0px;
border-top: 0px solid var(--color);
border-bottom: 14px solid var(--transparent);
width: 0px;
}
div .strap-secondary-top-left{
top: 133px;
left: 241px;
position: var(--absolute);
width: 20px;
height: 30px;
border-bottom: 43px solid var(--color);
border-left: 4px solid var(--transparent);
}
div .strap-secondary-top-middle{
top: 150px;
left: 265px;
position: var(--absolute);
width: 40px;
height: 48px;
background-color:var(--color);
box-shadow: 0px 0px 0px 1px var(--border-green);
}
div .strap-secondary-top-right{
top: 132px;
left: 306px;
position: var(--absolute);
width: 20px;
height: 29px;
border-bottom: 43px solid var(--color);
border-right: 4px solid var(--transparent);
}
div .strap-tertiary-top-left{
top: 88px;
left: 241px;
position: var(--absolute);
width: 20px;
height: 30px;
border-bottom: 43px solid var(--color);
border-left: 4px solid var(--transparent);
}
div .strap-tertiary-top-middle{
top: 100px;
left: 265px;
position: var(--absolute);
width: 40px;
height: 48px;
background-color:var(--color);
box-shadow: 0px 0px 0px 1px var(--border-green);
}
div .strap-tertiary-top-right{
top: 87px;
left: 306px;
position: var(--absolute);
width: 20px;
height: 29px;
border-bottom: 43px solid var(--color);
border-right: 4px solid var(--transparent);
}
div .strap-secondary-bottom-left{
top: 485px;
left: 241px;
position: var(--absolute);
width: 20px;
height: 30px;
border-top: 43px solid var(--color);
border-left: 4px solid var(--transparent);
}
div .strap-secondary-bottom-middle{
top: 485px;
left: 265px;
position: var(--absolute);
width: 40px;
height: 48px;
background-color:var(--color);
box-shadow: 0px 0px 0px 1px var(--border-green);
}
div .strap-secondary-bottom-right{
top: 483px;
left: 306px;
position: var(--absolute);
width: 20px;
height: 30px;
border-top: 45px solid var(--color);
border-right: 4px solid var(--transparent);
}
div .strap-tertiary-bottom-left{
top: 530px;
left: 241px;
position: var(--absolute);
width: 20px;
height: 30px;
border-top: 43px solid var(--color);
border-left: 4px solid var(--transparent);
}
div .strap-tertiary-bottom-middle{
top: 530px;
left: 265px;
position: var(--absolute);
width: 40px;
height: 48px;
background-color:var(--color);
box-shadow: 0px 0px 0px 1px var(--border-green);
}
div .strap-tertiary-bottom-right{
top: 530px;
left: 306px;
position: var(--absolute);
width: 20px;
height: 30px;
border-top: 45px solid var(--color);
border-right: 4px solid var(--transparent);
}
div .hour-hand {
border: 1px solid var(--border-color);
position: var(--absolute);
top: 61px;
height: 40px;
left: 82px;
width: 5px;
}
div .hour-hand::before {
position: var(--absolute);
content: "";
border-radius: 50%;
width: 15px;
height: 15px;
border: 1px solid var(--border-color);
top: -17px;
left: -6px;
}
div .second-hand{
position: var(--absolute);
width: 112px;
border-bottom: 1px solid black;
left: 10px;
}
div .second-hand::after {
content: "";
width: 10px;
background: var(--border-color);
height: 10px;
position: var(--absolute);
left: 111px;
top: -5px;
border-radius: 50%;
}
div .second-hand::before {
content: "";
width: 15px;
background: var(--border-color);
height: 15px;
position: var(--absolute);
left: 23px;
top: -7px;
border-radius: 50%;
background-image: radial-gradient(circle, black, white, black);
}
div .minute-hand {
border: 1px solid var(--border-color);
position: var(--absolute);
top: 51px;
height: 50px;
left: 85px;
width: 5px;
}
div .minute-hand::before {
position: var(--absolute);
content: "";
border-right: 4px solid var(--transparent);
border-left: 3px solid var(--transparent);
top: -24px;
left: -1px;
border-bottom: 23px solid var(--border-color);
}
div .hour-hand-round {
position: var(--absolute);
height: 9px;
border-left: 1px solid var(--border-color);
left: 35%;
top: -10px;
}
div .hour-hand-round::before {
position: var(--absolute);
content: "";
height: 7px;
border-left: 1px solid var(--border-color);
right: 3px;
top: -5px;
transform: rotate(120deg);
}
div .hour-hand-round::after {
position: var(--absolute);
content: "";
height: 7px;
border-left: 1px solid var(--border-color);
left: 2px;
top: -5px;
transform: rotate(63deg);
}
div .hour-hand-arrow{
position: var(--absolute);
content: "";
border-right: 6px solid var(--transparent);
border-left: 6px solid var(--transparent);
top: -31px;
left: -4px;
border-bottom: 15px solid var(--border-color);
border-bottom-left-radius: 6px;
border-bottom-right-radius: 6px;
}
div .hour {
transform-origin: 70% 85%;
transition: all 0.05s;
transform: rotate(90deg);
transition-timing-function: cubic-bezier(0.1, 2.7, 0.58, 1);
}
div .hand {
top: 51%;
position: var(--absolute);
transform-origin: 70%;
transition: all 0.05s;
transform: rotate(90deg);
transition-timing-function: cubic-bezier(0.1, 2.7, 0.58, 1);
}
div .axis-circle {
height: 10px;
width: 10px;
border: 5px solid var(--border-color);
border-radius: 50%;
position: var(--absolute);
top: 85px;
left: 78px;
background-color: var(--border-color);
z-index:1;
}
div .axis-circle .dot-puncture {
z-index: 1;
width: 6px;
background: silver;
height: 6px;
position: var(--absolute);
left: 2px;
top: 2px;
border-radius: 50%;
}
div .clock-crown {
position :absolute;
left:201px;
top:51%;
transform: rotate(90deg);
z-index:1;
}
div .clock-crown::before {
content:"";
position :var(--absolute);
width: 10px;
height: 0;
border-left: 2px solid var(--transparent);
border-right: 2px solid var(--transparent);
border-bottom: 10px solid var(--color);
top:-10px;
left:-1px;
}
div .spindle {
position :absolute;
left:216px;
top:49%;
transform: rotate(90deg);
transition:all 2s;
}
div .spindle::after {
content: "";
position: var(--absolute);
width: 4px;
left: 8px;
border-bottom: 14px solid var(--color);
opacity:0
}
div .spindle-move::after {
opacity:1;
}
div .clock-crown-drag {
left:215px;
}
div .change-hour {
transform-origin: 70% 85%;
transition: all 0.05s;
transform: rotate(90deg);
transition-timing-function: cubic-bezier(0.1, 2.7, 0.58, 1);
}
`;
export class NgxAnalogWristWatchService {
constructor() {
this.CLOCK_NUMBER = 12;
this.inlineStyleInfo = {
border: 'none',
borderBottom: '2px solid teal',
inputBorderBottom: '2px solid blue',
outline: 'none',
color: 'blue',
fontSize: '18px',
labelFontSize: '14px',
left: '10px',
bottom: '10px',
relative: 'relative',
absolute: 'absolute',
display: 'inline-block',
marginbottom: '25px',
float: 'left',
marginright: '25px',
padding: '2rem',
top: '15px',
width: '250px',
boxShadow: '#ded9d9 0px 3px 4px',
boxWidth: '500px',
boxHeight: '575px',
inherit: 'inherit',
transistionTop: 'top 2s cubic-bezier(0.53, 0.49, 0.35, 0.39) 0s',
marginLeft: '-15px',
iconTop: '24px',
iconFontSize: '20px',
boxDisplayNone: 'none',
boxDisplayFlex: 'flex',
justifyContent: 'center',
alignItems: 'center',
cursor: 'pointer',
primaryWidth: '202px',
primaryHeight: '202px',
primaryBorderRadius: '50%',
primaryBorder: '10px solid var(--color)',
secondaryWidth: '193px',
secondaryHeight: '193px',
secondaryBorderRadius: '50%',
secondaryBorder: '6px solid gray',
thirdWidth: '184px',
thirdHeight: '185px',
thirdBorderRadius: '50%',
thirdBorder: '5px solid var(--border-color)',
thirdTop: '-1px',
numLeft: '133px',
numTop: '14px',
clockNum: [
{
left: '130px',
top: '18px'
},
{
left: '160px',
top: '49px',
},
{
left: '165px',
top: '89px',
},
{
left: '151px',
top: '128px',
},
{
left: '125px',
top: '153px',
},
{
left: '86px',
top: '162px',
},
{
left: '49px',
top: '153px',
},
{
left: '19px',
top: '127px',
},
{
left: '7px',
top: '89px',
},
{
left: '13px',
top: '48px',
},
{
left: '39px',
top: '20px',
},
{
left: '81px',
top: '3px',
}
],
beltTop: '-143px',
beltLeft: '85px',
beltWidth: '38px',
beltHeight: '48px',
beltBackgroundColor: '#2F4F4F',
wrapWidth: '15px',
wrapBorderBottom: '54px solid var(--color)',
wrapBorderLeft: '16px solid white',
wrapLeft: '37%',
wrapTop: '207px',
rightWrapWidth: '15px',
rightBorderRightRadius: '9px',
rightWrapBorderBottom: '63px solid var(--color)',
rightWrapBorderright: '16px solid white',
rightWrapLeft: '60%',
rightWrapTop: '32%',
rightWrapMargin: '-7px',
rightBorderLeftRadius: '10px',
};
this.watchElements = ['label', 'input', 'span', 'primaryCricle',
'secondaryCircle', 'teritaryCircle', 'clockBox', 'hourHand', 'minuteHand', 'secondHand'];
}
/**
* @return {?}
*/
fetchInternalStyle() {
return internalStyle;
}
/**
* @return {?}
*/
fetchInLineStyle() {
return this.inlineStyleInfo;
}
/**
* @param {?} wrapper
* @param {?} renderer
* @return {?}
*/
createDugHoles(wrapper, renderer) {
/** @type {?} */
const styleToDugHole = {};
dugHoles.forEach((/**
* @param {?} dugHole
* @return {?}
*/
dugHole => {
/** @type {?} */
const dugHol = renderer.createElement('span');
renderer.appendChild(wrapper, dugHol);
styleToDugHole[dugHole] = dugHol;
}));
return styleToDugHole;
}
/**
* @param {?} wrapper
* @param {?} renderer
* @return {?}
*/
createWatchStraps(wrapper, renderer) {
/** @type {?} */
const styleToWatchStrap = {};
watchStraps.forEach((/**
* @param {?} watchStrap
* @param {?} index
* @return {?}
*/
(watchStrap, index) => {
/** @type {?} */
const strap = renderer.createElement('span');
renderer.appendChild(wrapper, strap);
styleToWatchStrap['elementName' + index] = strap;
styleToWatchStrap['className' + index] = watchStrap.styleClassName.map((/**
* @param {?} className
* @return {?}
*/
className => {
return className;
}));
}));
return styleToWatchStrap;
}
/**
* @param {?} thirdCircle
* @param {?} applyStyleInClockNum
* @param {?} renderer
* @return {?}
*/
addClockNumbers(thirdCircle, applyStyleInClockNum, renderer) {
for (let pos = 0; pos < this.CLOCK_NUMBER; pos++) {
/** @type {?} */
const numSpan = renderer.createElement('span');
/** @type {?} */
const num = renderer.createText((pos + 1).toString());
renderer.appendChild(numSpan, num);
renderer.appendChild(thirdCircle, numSpan);
renderer.setProperty(numSpan, '[timeChange]', 'onNumClick()');
applyStyleInClockNum(numSpan, pos, this.inlineStyleInfo);
}
}
}
NgxAnalogWristWatchService.decorators = [
{ type: Injectable, args: [{
providedIn: 'root'
},] }
];
/** @nocollapse */
NgxAnalogWristWatchService.ctorParameters = () => [];
/** @nocollapse */ NgxAnalogWristWatchService.ngInjectableDef = i0.ɵɵdefineInjectable({ factory: function NgxAnalogWristWatchService_Factory() { return new NgxAnalogWristWatchService(); }, token: NgxAnalogWristWatchService, providedIn: "root" });
if (false) {
/** @type {?} */
NgxAnalogWristWatchService.prototype.CLOCK_NUMBER;
/** @type {?} */
NgxAnalogWristWatchService.prototype.inlineStyleInfo;
/** @type {?} */
NgxAnalogWristWatchService.prototype.watchElements;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWFuYWxvZy13cmlzdC13YXRjaC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmd4LWFuYWxvZy13cmlzdC13YXRjaC8iLCJzb3VyY2VzIjpbImxpYi9uZ3gtYW5hbG9nLXdyaXN0LXdhdGNoLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7TUFDckMsV0FBVyxHQUFHO0lBQ2xCO1FBQ0UsY0FBYyxFQUFFLENBQUMsd0JBQXdCLEVBQUUsY0FBYyxDQUFDO0tBQzNEO0lBQ0Q7UUFDRSxjQUFjLEVBQUUsQ0FBQywwQkFBMEIsRUFBRSxjQUFjLENBQUM7S0FDN0Q7SUFDRDtRQUVFLGNBQWMsRUFBRSxDQUFDLHlCQUF5QixFQUFFLGNBQWMsQ0FBQztLQUM1RDtJQUNEO1FBRUUsY0FBYyxFQUFFLENBQUMsMEJBQTBCLENBQUM7S0FDN0M7SUFDRDtRQUVFLGNBQWMsRUFBRSxDQUFDLDRCQUE0QixDQUFDO0tBQy9DO0lBQ0Q7UUFFRSxjQUFjLEVBQUUsQ0FBQywyQkFBMkIsQ0FBQztLQUM5QztJQUNEO1FBQ0UsY0FBYyxFQUFFLENBQUMseUJBQXlCLENBQUM7S0FDNUM7SUFDRDtRQUVFLGNBQWMsRUFBRSxDQUFDLDJCQUEyQixDQUFDO0tBQzlDO0lBQ0Q7UUFFRSxjQUFjLEVBQUUsQ0FBQywwQkFBMEIsQ0FBQztLQUM3QztJQUNEO1FBRUUsY0FBYyxFQUFFLENBQUMsMkJBQTJCLEVBQUUsY0FBYyxDQUFDO0tBQzlEO0lBQ0Q7UUFFRSxjQUFjLEVBQUUsQ0FBQyw2QkFBNkIsRUFBRSxjQUFjLENBQUM7S0FDaEU7SUFDRDtRQUVFLGNBQWMsRUFBRSxDQUFDLDRCQUE0QixFQUFFLGNBQWMsQ0FBQztLQUMvRDtJQUNEO1FBQ0UsY0FBYyxFQUFFLENBQUMsNkJBQTZCLENBQUM7S0FDaEQ7SUFDRDtRQUNFLGNBQWMsRUFBRSxDQUFDLCtCQUErQixDQUFDO0tBQ2xEO0lBQ0Q7UUFDRSxjQUFjLEVBQUUsQ0FBQyw4QkFBOEIsQ0FBQztLQUNqRDtJQUNEO1FBRUUsY0FBYyxFQUFFLENBQUMsNEJBQTRCLENBQUM7S0FDL0M7SUFDRDtRQUNFLGNBQWMsRUFBRSxDQUFDLDhCQUE4QixDQUFDO0tBQ2pEO0lBQ0Q7UUFFRSxjQUFjLEVBQUUsQ0FBQyw2QkFBNkIsQ0FBQztLQUNoRDtDQUVGOztNQUNLLFFBQVEsR0FBRyxDQUFDLGdCQUFnQixFQUFFLGlCQUFpQixFQUFFLG1CQUFtQixFQUFFLG9CQUFvQixDQUFDOztNQUMzRixhQUFhLEdBQUk7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQWtjdEI7QUFJRCxNQUFNLE9BQU8sMEJBQTBCO0lBeUhyQztRQXhIQSxpQkFBWSxHQUFHLEVBQUUsQ0FBQztRQUNsQixvQkFBZSxHQUFRO1lBQ3JCLE1BQU0sRUFBRSxNQUFNO1lBQ2QsWUFBWSxFQUFFLGdCQUFnQjtZQUM5QixpQkFBaUIsRUFBRSxnQkFBZ0I7WUFDbkMsT0FBTyxFQUFFLE1BQU07WUFDZixLQUFLLEVBQUUsTUFBTTtZQUNiLFFBQVEsRUFBRSxNQUFNO1lBQ2hCLGFBQWEsRUFBRSxNQUFNO1lBQ3JCLElBQUksRUFBRSxNQUFNO1lBQ1osTUFBTSxFQUFFLE1BQU07WUFDZCxRQUFRLEVBQUUsVUFBVTtZQUNwQixRQUFRLEVBQUUsVUFBVTtZQUNwQixPQUFPLEVBQUUsY0FBYztZQUN2QixZQUFZLEVBQUUsTUFBTTtZQUNwQixLQUFLLEVBQUUsTUFBTTtZQUNiLFdBQVcsRUFBRSxNQUFNO1lBQ25CLE9BQU8sRUFBRSxNQUFNO1lBQ2YsR0FBRyxFQUFFLE1BQU07WUFDWCxLQUFLLEVBQUUsT0FBTztZQUNkLFNBQVMsRUFBRSxxQkFBcUI7WUFDaEMsUUFBUSxFQUFFLE9BQU87WUFDakIsU0FBUyxFQUFFLE9BQU87WUFDbEIsT0FBTyxFQUFFLFNBQVM7WUFDbEIsY0FBYyxFQUFFLGdEQUFnRDtZQUNoRSxVQUFVLEVBQUUsT0FBTztZQUNuQixPQUFPLEVBQUUsTUFBTTtZQUNmLFlBQVksRUFBRSxNQUFNO1lBQ3BCLGNBQWMsRUFBRSxNQUFNO1lBQ3RCLGNBQWMsRUFBRSxNQUFNO1lBQ3RCLGNBQWMsRUFBRSxRQUFRO1lBQ3hCLFVBQVUsRUFBRSxRQUFRO1lBQ3BCLE1BQU0sRUFBRSxTQUFTO1lBQ2pCLFlBQVksRUFBRSxPQUFPO1lBQ3JCLGFBQWEsRUFBRSxPQUFPO1lBQ3RCLG1CQUFtQixFQUFFLEtBQUs7WUFDMUIsYUFBYSxFQUFFLHlCQUF5QjtZQUN4QyxjQUFjLEVBQUUsT0FBTztZQUN2QixlQUFlLEVBQUUsT0FBTztZQUN4QixxQkFBcUIsRUFBRSxLQUFLO1lBQzVCLGVBQWUsRUFBRSxnQkFBZ0I7WUFDakMsVUFBVSxFQUFFLE9BQU87WUFDbkIsV0FBVyxFQUFFLE9BQU87WUFDcEIsaUJBQWlCLEVBQUUsS0FBSztZQUN4QixXQUFXLEVBQUUsK0JBQStCO1lBQzVDLFFBQVEsRUFBRSxNQUFNO1lBQ2hCLE9BQU8sRUFBRSxPQUFPO1lBQ2hCLE1BQU0sRUFBRSxNQUFNO1lBQ2QsUUFBUSxFQUFFO2dCQUNSO29CQUNFLElBQUksRUFBRSxPQUFPO29CQUNiLEdBQUcsRUFBRSxNQUFNO2lCQUNaO2dCQUNEO29CQUNFLElBQUksRUFBRSxPQUFPO29CQUNiLEdBQUcsRUFBRSxNQUFNO2lCQUNaO2dCQUNEO29CQUNFLElBQUksRUFBRSxPQUFPO29CQUNiLEdBQUcsRUFBRSxNQUFNO2lCQUNaO2dCQUNEO29CQUNFLElBQUksRUFBRSxPQUFPO29CQUNiLEdBQUcsRUFBRSxPQUFPO2lCQUNiO2dCQUNEO29CQUNFLElBQUksRUFBRSxPQUFPO29CQUNiLEdBQUcsRUFBRSxPQUFPO2lCQUNiO2dCQUNEO29CQUNFLElBQUksRUFBRSxNQUFNO29CQUNaLEdBQUcsRUFBRSxPQUFPO2lCQUNiO2dCQUNEO29CQUNFLElBQUksRUFBRSxNQUFNO29CQUNaLEdBQUcsRUFBRSxPQUFPO2lCQUNiO2dCQUNEO29CQUNFLElBQUksRUFBRSxNQUFNO29CQUNaLEdBQUcsRUFBRSxPQUFPO2lCQUNiO2dCQUNEO29CQUNFLElBQUksRUFBRSxLQUFLO29CQUNYLEdBQUcsRUFBRSxNQUFNO2lCQUNaO2dCQUNEO29CQUNFLElBQUksRUFBRSxNQUFNO29CQUNaLEdBQUcsRUFBRSxNQUFNO2lCQUNaO2dCQUNEO29CQUNFLElBQUksRUFBRSxNQUFNO29CQUNaLEdBQUcsRUFBRSxNQUFNO2lCQUNaO2dCQUNEO29CQUNFLElBQUksRUFBRSxNQUFNO29CQUNaLEdBQUcsRUFBRSxLQUFLO2lCQUNYO2FBQ0Y7WUFDRCxPQUFPLEVBQUUsUUFBUTtZQUNqQixRQUFRLEVBQUUsTUFBTTtZQUNoQixTQUFTLEVBQUUsTUFBTTtZQUNqQixVQUFVLEVBQUUsTUFBTTtZQUNsQixtQkFBbUIsRUFBRSxTQUFTO1lBQzlCLFNBQVMsRUFBRSxNQUFNO1lBQ2pCLGdCQUFnQixFQUFFLHlCQUF5QjtZQUMzQyxjQUFjLEVBQUUsa0JBQWtCO1lBQ2xDLFFBQVEsRUFBRSxLQUFLO1lBQ2YsT0FBTyxFQUFFLE9BQU87WUFDaEIsY0FBYyxFQUFFLE1BQU07WUFDdEIsc0JBQXNCLEVBQUUsS0FBSztZQUM3QixxQkFBcUIsRUFBRSx5QkFBeUI7WUFDaEQsb0JBQW9CLEVBQUUsa0JBQWtCO1lBQ3hDLGFBQWEsRUFBRSxLQUFLO1lBQ3BCLFlBQVksRUFBRSxLQUFLO1lBQ25CLGVBQWUsRUFBRSxNQUFNO1lBQ3ZCLHFCQUFxQixFQUFFLE1BQU07U0FDOUIsQ0FBQztRQUNGLGtCQUFhLEdBQUcsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxlQUFlO1lBQ3hELGlCQUFpQixFQUFFLGdCQUFnQixFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLFlBQVksQ0FBQyxDQUFDO0lBRTNFLENBQUM7Ozs7SUFFakIsa0JBQWtCO1FBQ2hCLE9BQU8sYUFBYSxDQUFDO0lBQ3ZCLENBQUM7Ozs7SUFFRCxnQkFBZ0I7UUFDZCxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUM7SUFDOUIsQ0FBQzs7Ozs7O0lBR0QsY0FBYyxDQUFDLE9BQU8sRUFBRSxRQUFROztjQUN4QixjQUFjLEdBQUcsRUFBRTtRQUN6QixRQUFRLENBQUMsT0FBTzs7OztRQUFDLE9BQU8sQ0FBQyxFQUFFOztrQkFDbkIsTUFBTSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDO1lBQzdDLFFBQVEsQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQ3RDLGNBQWMsQ0FBQyxPQUFPLENBQUMsR0FBRyxNQUFNLENBQUM7UUFDbkMsQ0FBQyxFQUFDLENBQUM7UUFDSCxPQUFPLGNBQWMsQ0FBQztJQUN4QixDQUFDOzs7Ozs7SUFFRCxpQkFBaUIsQ0FBQyxPQUFPLEVBQUUsUUFBUTs7Y0FDM0IsaUJBQWlCLEdBQUcsRUFBRTtRQUM1QixXQUFXLENBQUMsT0FBTzs7Ozs7UUFBQyxDQUFDLFVBQVUsRUFBRSxLQUFLLEVBQUUsRUFBRTs7a0JBQ2xDLEtBQUssR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQztZQUM1QyxRQUFRLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztZQUNyQyxpQkFBaUIsQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDLEdBQUcsS0FBSyxDQUFDO1lBQ2pELGlCQUFpQixDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUMsR0FBRyxVQUFVLENBQUMsY0FBYyxDQUFDLEdBQUc7Ozs7WUFBQyxTQUFTLENBQUMsRUFBRTtnQkFDakYsT0FBTyxTQUFTLENBQUM7WUFDbkIsQ0FBQyxFQUFDLENBQUM7UUFDTCxDQUFDLEVBQUMsQ0FBQztRQUNILE9BQU8saUJBQWlCLENBQUM7SUFDM0IsQ0FBQzs7Ozs7OztJQUVELGVBQWUsQ0FBQyxXQUFXLEVBQUUsb0JBQW9CLEVBQUUsUUFBUTtRQUN6RCxLQUFLLElBQUksR0FBRyxHQUFHLENBQUMsRUFBRSxHQUFHLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRSxHQUFHLEVBQUUsRUFBRTs7a0JBQzFDLE9BQU8sR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQzs7a0JBQ3hDLEdBQUcsR0FBRyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3JELFFBQVEsQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQ25DLFFBQVEsQ0FBQyxXQUFXLENBQUMsV0FBVyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQzNDLFFBQVEsQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLGNBQWMsRUFBRSxjQUFjLENBQUMsQ0FBQztZQUM5RCxvQkFBb0IsQ0FBQyxPQUFPLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztTQUMxRDtJQUNILENBQUM7OztZQXZLRixVQUFVLFNBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkI7Ozs7Ozs7SUFFQyxrREFBa0I7O0lBQ2xCLHFEQW1IRTs7SUFDRixtREFDMkYiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5jb25zdCB3YXRjaFN0cmFwcyA9IFtcbiAge1xuICAgIHN0eWxlQ2xhc3NOYW1lOiBbJ3N0cmFwLXByaW1hcnktdG9wLWxlZnQnLCAnYm9yZGVyLWNvbG9yJ11cbiAgfSxcbiAge1xuICAgIHN0eWxlQ2xhc3NOYW1lOiBbJ3N0cmFwLXByaW1hcnktdG9wLW1pZGRsZScsICdib3JkZXItY29sb3InXVxuICB9LFxuICB7XG5cbiAgICBzdHlsZUNsYXNzTmFtZTogWydzdHJhcC1wcmltYXJ5LXRvcC1yaWdodCcsICdib3JkZXItY29sb3InXVxuICB9LFxuICB7XG5cbiAgICBzdHlsZUNsYXNzTmFtZTogWydzdHJhcC1zZWNvbmRhcnktdG9wLWxlZnQnXVxuICB9LFxuICB7XG5cbiAgICBzdHlsZUNsYXNzTmFtZTogWydzdHJhcC1zZWNvbmRhcnktdG9wLW1pZGRsZSddXG4gIH0sXG4gIHtcblxuICAgIHN0eWxlQ2xhc3NOYW1lOiBbJ3N0cmFwLXNlY29uZGFyeS10b3AtcmlnaHQnXVxuICB9LFxuICB7XG4gICAgc3R5bGVDbGFzc05hbWU6IFsnc3RyYXAtdGVydGlhcnktdG9wLWxlZnQnXVxuICB9LFxuICB7XG5cbiAgICBzdHlsZUNsYXNzTmFtZTogWydzdHJhcC10ZXJ0aWFyeS10b3AtbWlkZGxlJ11cbiAgfSxcbiAge1xuXG4gICAgc3R5bGVDbGFzc05hbWU6IFsnc3RyYXAtdGVydGlhcnktdG9wLXJpZ2h0J11cbiAgfSxcbiAge1xuXG4gICAgc3R5bGVDbGFzc05hbWU6IFsnc3RyYXAtcHJpbWFyeS1ib3R0b20tbGVmdCcsICdib3JkZXItY29sb3InXVxuICB9LFxuICB7XG5cbiAgICBzdHlsZUNsYXNzTmFtZTogWydzdHJhcC1wcmltYXJ5LWJvdHRvbS1taWRkbGUnLCAnYm9yZGVyLWNvbG9yJ11cbiAgfSxcbiAge1xuXG4gICAgc3R5bGVDbGFzc05hbWU6IFsnc3RyYXAtcHJpbWFyeS1ib3R0b20tcmlnaHQnLCAnYm9yZGVyLWNvbG9yJ11cbiAgfSxcbiAge1xuICAgIHN0eWxlQ2xhc3NOYW1lOiBbJ3N0cmFwLXNlY29uZGFyeS1ib3R0b20tbGVmdCddXG4gIH0sXG4gIHtcbiAgICBzdHlsZUNsYXNzTmFtZTogWydzdHJhcC1zZWNvbmRhcnktYm90dG9tLW1pZGRsZSddXG4gIH0sXG4gIHtcbiAgICBzdHlsZUNsYXNzTmFtZTogWydzdHJhcC1zZWNvbmRhcnktYm90dG9tLXJpZ2h0J11cbiAgfSxcbiAge1xuXG4gICAgc3R5bGVDbGFzc05hbWU6IFsnc3RyYXAtdGVydGlhcnktYm90dG9tLWxlZnQnXVxuICB9LFxuICB7XG4gICAgc3R5bGVDbGFzc05hbWU6IFsnc3RyYXAtdGVydGlhcnktYm90dG9tLW1pZGRsZSddXG4gIH0sXG4gIHtcblxuICAgIHN0eWxlQ2xhc3NOYW1lOiBbJ3N0cmFwLXRlcnRpYXJ5LWJvdHRvbS1yaWdodCddXG4gIH0sXG5cbl07XG5jb25zdCBkdWdIb2xlcyA9IFsndG9wTGVmdER1Z0hvbGUnLCAndG9wUmlnaHREdWdIb2xlJywgJ2JvdHRvbUxlZnREdWdIb2xlJywgJ2JvdHRvbVJpZ2h0RHVnSG9sZSddO1xuY29uc3QgaW50ZXJuYWxTdHlsZSA9ICBgXG46cm9vdCB7XG4gIC0tY29sb3I6IzJGNEY0RjtcbiAgLS1ib3JkZXItY29sb3I6YmxhY2s7XG4gIC0tYm9yZGVyLWdyZWVuOmdyZWVuO1xuICAtLWFic29sdXRlOmFic29sdXRlO1xuICAtLXRyYW5zcGFyZW50OnRyYW5zcGFyZW50O1xufVxuc3BhbiArIC50b2dnbGUtdGltZSB7XG4gICAgICBkaXNwbGF5OmZsZXghaW1wb3J0YW50O1xufVxuZGl2IC50b3AtbGVmdC1kdWdob2xlOjpiZWZvcmV7XG4gICAgY29udGVudDogXCJcIjtcbiAgICBib3JkZXItcmlnaHQ6IDE1cHggc29saWQgdmFyKC0tY29sb3IpO1xuICAgIHBvc2l0aW9uOiB2YXIoLS1hYnNvbHV0ZSk7XG4gICAgbGVmdDogMHB4O1xuICAgIGJvcmRlci10b3A6IDE2cHggc29saWQgdmFyKC0tdHJhbnNwYXJlbnQpO1xuICAgIGJvcmRlci1ib3R0b206IDBweCBzb2xpZCB2YXIoLS1jb2xvcik7XG4gICAgd2lkdGg6IDBweDtcbiAgICBib3R0b206IDBweDtcbn1cbmRpdiAudG9wLXJpZ2h0LWR1Z2hvbGU6OmJlZm9yZXtcbiAgY29udGVudDogXCJcIjtcbiAgYm9yZGVyLWxlZnQ6IDE1cHggc29saWQgdmFyKC0tY29sb3IpO1xuICBwb3NpdGlvbjogdmFyKC0tYWJzb2x1dGUpO1xuICBsZWZ0OiAwcHg7XG4gIGJvcmRlci10b3A6IDE1cHggc29saWQgdmFyKC0tdHJhbnNwYXJlbnQpO1xuICBib3JkZXItYm90dG9tOiAwcHggc29saWQgdmFyKC0tY29sb3IpO1xuICBib3R0b206IDBweDtcbn1cblxuZGl2IC5zdHJhcC1wcmltYXJ5LXRvcC1sZWZ0IHtcbiAgICBwb3NpdGlvbjogdmFyKC0tYWJzb2x1dGUpO1xuICAgIGxlZnQ6IDQyJTtcbiAgICB0b3A6IDMxJTtcbiAgICBoZWlnaHQ6IDQwcHg7XG4gICAgYmFja2dyb3VuZDp2YXIoLS1jb2xvcik7XG4gICAgbWFyZ2luOiAzcHg7XG4gICAgd2lkdGg6IDI1cHg7XG59XG5cbmRpdiAuYm9yZGVyLWNvbG9ye1xuICAgIGJveC1zaGFkb3c6IDBweCAwcHggMXB4IDFweCB2YXIoLS1ib3JkZXItZ3JlZW4pO1xufVxuXG5kaXYgLnN0cmFwLXByaW1hcnktdG9wLW1pZGRsZXtcbiAgICBwb3NpdGlvbjogdmFyKC0tYWJzb2x1dGUpO1xuICAgIGxlZnQ6IDQ3JTtcbiAgICB0b3A6IDMwJTtcbiAgICBoZWlnaHQ6IDQwcHg7XG4gICAgYmFja2dyb3VuZDp2YXIoLS1jb2xvcik7XG4gICAgbWFyZ2luOiAxcHg7XG4gICAgd2lkdGg6IDM4cHg7XG59XG5cbmRpdiAuc3RyYXAtcHJpbWFyeS10b3AtcmlnaHQge1xuICAgIHBvc2l0aW9uOiB2YXIoLS1hYnNvbHV0ZSk7XG4gICAgbGVmdDogNTMlO1xuICAgIHRvcDogMjAxcHg7XG4gICAgaGVpZ2h0OiA0MnB4O1xuICAgIGJhY2tncm91bmQ6dmFyKC0tY29sb3IpO1xuICAgIHdpZHRoOiAyNXB4O1xuICAgIG1hcmdpbjogNnB4O1xufVxuXG5kaXYgLmJvdHRvbS1sZWZ0LWR1Z2hvbGV7XG4gICBwb3NpdGlvbjogdmFyKC0tYWJzb2x1dGUpO1xuICAgd2lkdGg6IDE1cHg7XG4gICBib3JkZXItdG9wOiA1NHB4IHNvbGlkIHJnYig0NywgNzksIDc5KTtcbiAgIGJvcmRlci1sZWZ0OiAxNnB4IHNvbGlkIHdoaXRlO1xuICAgdG9wOiA2NCU7XG4gICBsZWZ0OiAzNyU7XG59XG5cbmRpdiAuYm90dG9tLWxlZnQtZHVnaG9sZTo6YmVmb3Jle1xuICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgYm9yZGVyLXJpZ2h0OiAxNXB4IHNvbGlkIHZhcigtLWNvbG9yKTtcbiAgICBwb3NpdGlvbjogdmFyKC0tYWJzb2x1dGUpO1xuICAgIGxlZnQ6IDBweDtcbiAgICBib3JkZXItdG9wOiAwcHggc29saWQgdmFyKC0tY29sb3IpO1xuICAgIGJvcmRlci1ib3R0b206IDE0cHggc29saWQgdmFyKC0tdHJhbnNwYXJlbnQpO1xuICAgIHdpZHRoOiAwcHg7XG59XG5cbmRpdiAuc3RyYXAtcHJpbWFyeS1ib3R0b20tbGVmdCB7XG4gICAgcG9zaXRpb246IHZhcigtLWFic29sdXRlKTtcbiAgICBsZWZ0OiA0MiU7XG4gICAgdG9wOiA0NDRweDtcbiAgICBoZWlnaHQ6IDM1cHg7XG4gICAgYmFja2dyb3VuZDp2YXIoLS1jb2xvcik7XG4gICAgbWFyZ2luOiAzcHg7XG4gICAgd2lkdGg6IDI1cHg7XG59XG5cbmRpdiAuc3RyYXAtcHJpbWFyeS1ib3R0b20tbWlkZGxle1xuICAgIHBvc2l0aW9uOiB2YXIoLS1hYnNvbHV0ZSk7XG4gICAgbGVmdDogNDclO1xuICAgIHRvcDogNjclO1xuICAgIGhlaWdodDogNDBweDtcbiAgICBiYWNrZ3JvdW5kOnZhcigtLWNvbG9yKTtcbiAgICBtYXJnaW46IDFweDtcbiAgICB3aWR0aDogMzhweDtcbn1cblxuZGl2IC5zdHJhcC1wcmltYXJ5LWJvdHRvbS1yaWdodCB7XG4gICAgcG9zaXRpb246IHZhcigtLWFic29sdXRlKTtcbiAgICBsZWZ0OiA1NSU7XG4gICAgdG9wOiA0NDBweDtcbiAgICBoZWlnaHQ6IDQ0cHg7XG4gICAgYmFja2dyb3VuZDp2YXIoLS1jb2xvcik7XG4gICAgd2lkdGg6IDI1cHg7XG4gICAgbWFyZ2luOiAtNHB4XG59XG5cbmRpdiAuYm90dG9tLXJpZ2h0LWR1Z2hvbGV7XG4gIHBvc2l0aW9uOiB2YXIoLS1hYnNvbHV0ZSk7XG4gIHdpZHRoOiAxNXB4O1xuICBib3JkZXItdG9wOiA2MXB4IHNvbGlkIHJnYig0NywgNzksIDc5KTtcbiAgYm9yZGVyLXJpZ2h0OiAxNnB4IHNvbGlkIHdoaXRlO1xuICB0b3A6IDQwOHB4O1xuICBsZWZ0OiA1NyU7XG4gIG1hcmdpbjogMTFweDtcbiAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMTlweDtcbn1cbmRpdiAuYm90dG9tLXJpZ2h0LWR1Z2hvbGU6OmJlZm9yZXtcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIGJvcmRlci1sZWZ0OiAxNXB4IHNvbGlkIHZhcigtLWNvbG9yKTtcbiAgICBwb3NpdGlvbjogdmFyKC0tYWJzb2x1dGUpO1xuICAgIGxlZnQ6IDBweDtcbiAgICBib3JkZXItdG9wOiAwcHggc29saWQgdmFyKC0tY29sb3IpO1xuICAgIGJvcmRlci1ib3R0b206IDE0cHggc29saWQgdmFyKC0tdHJhbnNwYXJlbnQpO1xuICAgIHdpZHRoOiAwcHg7XG59XG4gZGl2IC5zdHJhcC1zZWNvbmRhcnktdG9wLWxlZnR7XG4gICAgdG9wOiAxMzNweDtcbiAgICBsZWZ0OiAyNDFweDtcbiAgICBwb3NpdGlvbjogdmFyKC0tYWJzb2x1dGUpO1xuICAgIHdpZHRoOiAyMHB4O1xuICAgIGhlaWdodDogMzBweDtcbiAgICBib3JkZXItYm90dG9tOiA0M3B4IHNvbGlkIHZhcigtLWNvbG9yKTtcbiAgICBib3JkZXItbGVmdDogNHB4IHNvbGlkIHZhcigtLXRyYW5zcGFyZW50KTtcbn1cblxuZGl2IC5zdHJhcC1zZWNvbmRhcnktdG9wLW1pZGRsZXtcbiAgICB0b3A6IDE1MHB4O1xuICAgIGxlZnQ6IDI2NXB4O1xuICAgIHBvc2l0aW9uOiB2YXIoLS1hYnNvbHV0ZSk7XG4gICAgd2lkdGg6IDQwcHg7XG4gICAgaGVpZ2h0OiA0OHB4O1xuICAgIGJhY2tncm91bmQtY29sb3I6dmFyKC0tY29sb3IpO1xuICAgIGJveC1zaGFkb3c6IDBweCAwcHggMHB4IDFweCB2YXIoLS1ib3JkZXItZ3JlZW4pO1xufVxuXG5kaXYgLnN0cmFwLXNlY29uZGFyeS10b3AtcmlnaHR7XG4gICAgdG9wOiAxMzJweDtcbiAgICBsZWZ0OiAzMDZweDtcbiAgICBwb3NpdGlvbjogdmFyKC0tYWJzb2x1dGUpO1xuICAgIHdpZHRoOiAyMHB4O1xuICAgIGhlaWdodDogMjlweDtcbiAgICBib3JkZXItYm90dG9tOiA0M3B4IHNvbGlkIHZhcigtLWNvbG9yKTtcbiAgICBib3JkZXItcmlnaHQ6IDRweCBzb2xpZCB2YXIoLS10cmFuc3BhcmVudCk7XG59XG5cblxuZGl2IC5zdHJhcC10ZXJ0aWFyeS10b3AtbGVmdHtcbiAgdG9wOiA4OHB4O1xuICBsZWZ0OiAyNDFweDtcbiAgcG9zaXRpb246IHZhcigtLWFic29sdXRlKTtcbiAgd2lkdGg6IDIwcHg7XG4gIGhlaWdodDogMzBweDtcbiAgYm9yZGVyLWJvdHRvbTogNDNweCBzb2xpZCB2YXIoLS1jb2xvcik7XG4gIGJvcmRlci1sZWZ0OiA0cHggc29saWQgdmFyKC0tdHJhbnNwYXJlbnQpO1xufVxuXG5kaXYgLnN0cmFwLXRlcnRpYXJ5LXRvcC1taWRkbGV7XG4gIHRvcDogMTAwcHg7XG4gIGxlZnQ6IDI2NXB4O1xuICBwb3NpdGlvbjogdmFyKC0tYWJzb2x1dGUpO1xuICB3aWR0aDogNDBweDtcbiAgaGVpZ2h0OiA0OHB4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNvbG9yKTtcbiAgYm94LXNoYWRvdzogMHB4IDBweCAwcHggMXB4IHZhcigtLWJvcmRlci1ncmVlbik7XG59XG5cbmRpdiAuc3RyYXAtdGVydGlhcnktdG9wLXJpZ2h0e1xuICB0b3A6IDg3cHg7XG4gIGxlZnQ6IDMwNnB4O1xuICBwb3NpdGlvbjogdmFyKC0tYWJzb2x1dGUpO1xuICB3aWR0aDogMjBweDtcbiAgaGVpZ2h0OiAyOXB4O1xuICBib3JkZXItYm90dG9tOiA0M3B4IHNvbGlkIHZhcigtLWNvbG9yKTtcbiAgYm9yZGVyLXJpZ2h0OiA0cHggc29saWQgdmFyKC0tdHJhbnNwYXJlbnQpO1xufVxuXG5kaXYgLnN0cmFwLXNlY29uZGFyeS1ib3R0b20tbGVmdHtcbiAgdG9wOiA0ODVweDtcbiAgbGVmdDogMjQxcHg7XG4gIHBvc2l0aW9uOiB2YXIoLS1hYnNvbHV0ZSk7XG4gIHdpZHRoOiAyMHB4O1xuICBoZWlnaHQ6IDMwcHg7XG4gIGJvcmRlci10b3A6IDQzcHggc29saWQgdmFyKC0tY29sb3IpO1xuICBib3JkZXItbGVmdDogNHB4IHNvbGlkIHZhcigtLXRyYW5zcGFyZW50KTtcbn1cblxuXG5kaXYgLnN0cmFwLXNlY29uZGFyeS1ib3R0b20tbWlkZGxle1xuICAgIHRvcDogNDg1cHg7XG4gICAgbGVmdDogMjY1cHg7XG4gICAgcG9zaXRpb246IHZhcigtLWFic29sdXRlKTtcbiAgICB3aWR0aDogNDBweDtcbiAgICBoZWlnaHQ6IDQ4cHg7XG4gICAgYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1jb2xvcik7XG4gICAgYm94LXNoYWRvdzogMHB4IDBweCAwcHggMXB4IHZhcigtLWJvcmRlci1ncmVlbik7XG59XG5cbmRpdiAuc3RyYXAtc2Vjb25kYXJ5LWJvdHRvbS1yaWdodHtcbiAgdG9wOiA0ODNweDtcbiAgbGVmdDogMzA2cHg7XG4gIHBvc2l0aW9uOiB2YXIoLS1hYnNvbHV0ZSk7XG4gIHdpZHRoOiAyMHB4O1xuICBoZWlnaHQ6IDMwcHg7XG4gIGJvcmRlci10b3A6IDQ1cHggc29saWQgdmFyKC0tY29sb3IpO1xuICBib3JkZXItcmlnaHQ6IDRweCBzb2xpZCB2YXIoLS10cmFuc3BhcmVudCk7XG59XG5cbmRpdiAuc3RyYXAtdGVydGlhcnktYm90dG9tLWxlZnR7XG4gIHRvcDogNTMwcHg7XG4gIGxlZnQ6IDI0MXB4O1xuICBwb3NpdGlvbjogdmFyKC0tYWJzb2x1dGUpO1xuICB3aWR0aDogMjBweDtcbiAgaGVpZ2h0OiAzMHB4O1xuICBib3JkZXItdG9wOiA0M3B4IHNvbGlkIHZhcigtLWNvbG9yKTtcbiAgYm9yZGVyLWxlZnQ6IDRweCBzb2xpZCB2YXIoLS10cmFuc3BhcmVudCk7XG59XG5cbmRpdiAuc3RyYXAtdGVydGlhcnktYm90dG9tLW1pZGRsZXtcbiAgdG9wOiA1MzBweDtcbiAgbGVmdDogMjY1cHg7XG4gIHBvc2l0aW9uOiB2YXIoLS1hYnNvbHV0ZSk7XG4gIHdpZHRoOiA0MHB4O1xuICBoZWlnaHQ6IDQ4cHg7XG4gIGJhY2tncm91bmQtY29sb3I6dmFyKC0tY29sb3IpO1xuICBib3gtc2hhZG93OiAwcHggMHB4IDBweCAxcHggdmFyKC0tYm9yZGVyLWdyZWVuKTtcbn1cblxuZGl2IC5zdHJhcC10ZXJ0aWFyeS1ib3R0b20tcmlnaHR7XG4gIHRvcDogNTMwcHg7XG4gIGxlZnQ6IDMwNnB4O1xuICBwb3NpdGlvbjogdmFyKC0tYWJzb2x1dGUpO1xuICB3aWR0aDogMjBweDtcbiAgaGVpZ2h0OiAzMHB4O1xuICBib3JkZXItdG9wOiA0NXB4IHNvbGlkIHZhcigtLWNvbG9yKTtcbiAgYm9yZGVyLXJpZ2h0OiA0cHggc29saWQgdmFyKC0tdHJhbnNwYXJlbnQpO1xufVxuXG5kaXYgLmhvdXItaGFuZCB7XG4gICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1ib3JkZXItY29sb3IpO1xuICAgIHBvc2l0aW9uOiB2YXIoLS1hYnNvbHV0ZSk7XG4gICAgdG9wOiA2MXB4O1xuICAgIGhlaWdodDogNDBweDtcbiAgICBsZWZ0OiA4MnB4O1xuICAgIHdpZHRoOiA1cHg7XG59XG5cbmRpdiAuaG91ci1oYW5kOjpiZWZvcmUge1xuICBwb3NpdGlvbjogdmFyKC0tYWJzb2x1dGUpO1xuICBjb250ZW50OiBcIlwiO1xuICBib3JkZXItcmFkaXVzOiA1MCU7XG4gIHdpZHRoOiAxNXB4O1xuICBoZWlnaHQ6IDE1cHg7XG4gIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWJvcmRlci1jb2xvcik7XG4gIHRvcDogLTE3cHg7XG4gIGxlZnQ6IC02cHg7XG59XG5cbmRpdiAuc2Vjb25kLWhhbmR7XG4gICAgcG9zaXRpb246IHZhcigtLWFic29sdXRlKTtcbiAgICB3aWR0aDogMTEycHg7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIGJsYWNrO1xuICAgIGxlZnQ6IDEwcHg7XG59XG5kaXYgLnNlY29uZC1oYW5kOjphZnRlciB7XG4gIGNvbnRlbnQ6IFwiXCI7XG4gIHdpZHRoOiAxMHB4O1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1ib3JkZXItY29sb3IpO1xuICBoZWlnaHQ6IDEwcHg7XG4gIHBvc2l0aW9uOiB2YXIoLS1hYnNvbHV0ZSk7XG4gIGxlZnQ6IDExMXB4O1xuICB0b3A6IC01cHg7XG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcbn1cblxuZGl2IC5zZWNvbmQtaGFuZDo6YmVmb3JlIHtcbiAgY29udGVudDogXCJcIjtcbiAgd2lkdGg6IDE1cHg7XG4gIGJhY2tncm91bmQ6IHZhcigtLWJvcmRlci1jb2xvcik7XG4gIGhlaWdodDogMTVweDtcbiAgcG9zaXRpb246IHZhcigtLWFic29sdXRlKTtcbiAgbGVmdDogMjNweDtcbiAgdG9wOiAtN3B4O1xuICBib3JkZXItcmFkaXVzOiA1MCU7XG4gIGJhY2tncm91bmQtaW1hZ2U6IHJhZGlhbC1ncmFkaWVudChjaXJjbGUsIGJsYWNrLCB3aGl0ZSwgYmxhY2spO1xufVxuXG5kaXYgLm1pbnV0ZS1oYW5kIHtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1ib3JkZXItY29sb3IpO1xuICAgIHBvc2l0aW9uOiB2YXIoLS1hYnNvbHV0ZSk7XG4gICAgdG9wOiA1MXB4O1xuICAgIGhlaWdodDogNTBweDtcbiAgICBsZWZ0OiA4NXB4O1xuICAgIHdpZHRoOiA1cHg7XG59XG5cbmRpdiAubWludXRlLWhhbmQ6OmJlZm9yZSB7XG4gICAgcG9zaXRpb246IHZhcigtLWFic29sdXRlKTtcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIGJvcmRlci1yaWdodDogNHB4IHNvbGlkIHZhcigtLXRyYW5zcGFyZW50KTtcbiAgICBib3JkZXItbGVmdDogM3B4IHNvbGlkIHZhcigtLXRyYW5zcGFyZW50KTtcbiAgICB0b3A6IC0yNHB4O1xuICAgIGxlZnQ6IC0xcHg7XG4gICAgYm9yZGVyLWJvdHRvbTogMjNweCBzb2xpZCB2YXIoLS1ib3JkZXItY29sb3IpO1xufVxuXG5kaXYgLmhvdXItaGFuZC1yb3VuZCB7XG4gIHBvc2l0aW9uOiB2YXIoLS1hYnNvbHV0ZSk7XG4gIGhlaWdodDogOXB4O1xuICBib3JkZXItbGVmdDogMXB4IHNvbGlkIHZhcigtLWJvcmRlci1jb2xvcik7XG4gIGxlZnQ6IDM1JTtcbiAgdG9wOiAtMTBweDtcbn1cblxuZGl2IC5ob3VyLWhhbmQtcm91bmQ6OmJlZm9yZSB7XG4gICAgcG9zaXRpb246IHZhcigtLWFic29sdXRlKTtcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIGhlaWdodDogN3B4O1xuICAgIGJvcmRlci1sZWZ0OiAxcHggc29saWQgdmFyKC0tYm9yZGVyLWNvbG9yKTtcbiAgICByaWdodDogM3B4O1xuICAgIHRvcDogLTVweDtcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgxMjBkZWcpO1xufVxuXG5kaXYgLmhvdXItaGFuZC1yb3VuZDo6YWZ0ZXIge1xuICAgIHBvc2l0aW9uOiB2YXIoLS1hYnNvbHV0ZSk7XG4gICAgY29udGVudDogXCJcIjtcbiAgICBoZWlnaHQ6IDdweDtcbiAgICBib3JkZXItbGVmdDogMXB4IHNvbGlkIHZhcigtLWJvcmRlci1jb2xvcik7XG4gICAgbGVmdDogMnB4O1xuICAgIHRvcDogLTVweDtcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSg2M2RlZyk7XG59XG5cbmRpdiAuaG91ci1oYW5kLWFycm93e1xuICBwb3NpdGlvbjogdmFyKC0tYWJzb2x1dGUpO1xuICBjb250ZW50OiBcIlwiO1xuICBib3JkZXItcmlnaHQ6IDZweCBzb2xpZCB2YXIoLS10cmFuc3BhcmVudCk7XG4gIGJvcmRlci1sZWZ0OiA2cHggc29saWQgdmFyKC0tdHJhbnNwYXJlbnQpO1xuICB0b3A6IC0zMXB4O1xuICBsZWZ0OiAtNHB4O1xuICBib3JkZXItYm90dG9tOiAxNXB4IHNvbGlkIHZhcigtLWJvcmRlci1jb2xvcik7XG4gIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDZweDtcbiAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDZweDtcbn1cblxuZGl2IC5ob3VyIHtcbiAgICB0cmFuc2Zvcm0tb3JpZ2luOiA3MCUgODUlO1xuICAgIHRyYW5zaXRpb246IGFsbCAwLjA1cztcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZyk7XG4gICAgdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjEsIDIuNywgMC41OCwgMSk7XG59XG5cbmRpdiAuaGFuZCB7XG4gIHRvcDogNTElO1xuICBwb3NpdGlvbjogdmFyKC0tYWJzb2x1dGUpO1xuICB0cmFuc2Zvcm0tb3JpZ2luOiA3MCU7XG4gIHRyYW5zaXRpb246IGFsbCAwLjA1cztcbiAgdHJhbnNmb3JtOiByb3RhdGUoOTBkZWcpO1xuICB0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjogY3ViaWMtYmV6aWVyKDAuMSwgMi43LCAwLjU4LCAxKTtcbn1cblxuZGl2IC5heGlzLWNpcmNsZSB7XG4gIGhlaWdodDogMTBweDtcbiAgd2lkdGg6IDEwcHg7XG4gIGJvcmRlcjogNXB4IHNvbGlkIHZhcigtLWJvcmRlci1jb2xvcik7XG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgcG9zaXRpb246IHZhcigtLWFic29sdXRlKTtcbiAgdG9wOiA4NXB4O1xuICBsZWZ0OiA3OHB4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1ib3JkZXItY29sb3IpO1xuICB6LWluZGV4OjE7XG4gfVxuXG5kaXYgLmF4aXMtY2lyY2xlIC5kb3QtcHVuY3R1cmUge1xuICB6LWluZGV4OiAxO1xuICB3aWR0aDogNnB4O1xuICBiYWNrZ3JvdW5kOiBzaWx2ZXI7XG4gIGhlaWdodDogNnB4O1xuICBwb3NpdGlvbjogdmFyKC0tYWJzb2x1dGUpO1xuICBsZWZ0OiAycHg7XG4gIHRvcDogMnB4O1xuICBib3JkZXItcmFkaXVzOiA1MCU7XG4gfVxuIGRpdiAuY2xvY2stY3Jvd24ge1xuICBwb3NpdGlvbiA6YWJzb2x1dGU7XG4gIGxlZnQ6MjAxcHg7XG4gIHRvcDo1MSU7XG4gIHRyYW5zZm9ybTogcm90YXRlKDkwZGVnKTtcbiAgei1pbmRleDoxO1xuIH1cbiBkaXYgLmNsb2NrLWNyb3duOjpiZWZvcmUge1xuICBjb250ZW50OlwiXCI7XG4gIHBvc2l0aW9uIDp2YXIoLS1hYnNvbHV0ZSk7XG4gIHdpZHRoOiAxMHB4O1xuICBoZWlnaHQ6IDA7XG4gIGJvcmRlci1sZWZ0OiAycHggc29saWQgdmFyKC0tdHJhbnNwYXJlbnQpO1xuICBib3JkZXItcmlnaHQ6IDJweCBzb2xpZCB2YXIoLS10cmFuc3BhcmVudCk7XG4gIGJvcmRlci1ib3R0b206IDEwcHggc29saWQgdmFyKC0tY29sb3IpO1xuICB0b3A6LTEwcHg7XG4gIGxlZnQ6LTFweDtcbiB9XG4gZGl2ICAuc3BpbmRsZSB7XG4gIHBvc2l0aW9uIDphYnNvbHV0ZTtcbiAgbGVmdDoyMTZweDtcbiAgdG9wOjQ5JTtcbiAgdHJhbnNmb3JtOiByb3RhdGUoOTBkZWcpO1xuICB0cmFuc2l0aW9uOmFsbCAycztcblxuIH1cbiBkaXYgLnNwaW5kbGU6OmFmdGVyIHtcbiAgY29udGVudDogXCJcIjtcbiAgcG9zaXRpb246IHZhcigtLWFic29sdXRlKTtcbiAgd2lkdGg6IDRweDtcbiAgbGVmdDogOHB4O1xuICBib3JkZXItYm90dG9tOiAxNHB4IHNvbGlkIHZhcigtLWNvbG9yKTtcbiAgb3BhY2l0eTowXG4gfVxuXG4gZGl2IC5zcGluZGxlLW1vdmU6OmFmdGVyIHtcbiAgIG9wYWNpdHk6MTtcblxuIH1cblxuIGRpdiAuY2xvY2stY3Jvd24tZHJhZyB7XG4gICBsZWZ0OjIxNXB4O1xuIH1cbiBkaXYgLmNoYW5nZS1ob3VyIHtcbiAgICB0cmFuc2Zvcm0tb3JpZ2luOiA3MCUgODUlO1xuICAgIHRyYW5zaXRpb246IGFsbCAwLjA1cztcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZyk7XG4gICAgdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246IGN1YmljLWJlemllcigwLjEsIDIuNywgMC41OCwgMSk7XG4gfVxuYDtcbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIE5neEFuYWxvZ1dyaXN0V2F0Y2hTZXJ2aWNlIHtcbiAgQ0xPQ0tfTlVNQkVSID0gMTI7XG4gIGlubGluZVN0eWxlSW5mbzogYW55ID0ge1xuICAgIGJvcmRlcjogJ25vbmUnLFxuICAgIGJvcmRlckJvdHRvbTogJzJweCBzb2xpZCB0ZWFsJyxcbiAgICBpbnB1dEJvcmRlckJvdHRvbTogJzJweCBzb2xpZCBibHVlJyxcbiAgICBvdXRsaW5lOiAnbm9uZScsXG4gICAgY29sb3I6ICdibHVlJyxcbiAgICBmb250U2l6ZTogJzE4cHgnLFxuICAgIGxhYmVsRm9udFNpemU6ICcxNHB4JyxcbiAgICBsZWZ0OiAnMTBweCcsXG4gICAgYm90dG9tOiAnMTBweCcsXG4gICAgcmVsYXRpdmU6ICdyZWxhdGl2ZScsXG4gICAgYWJzb2x1dGU6ICdhYnNvbHV0ZScsXG4gICAgZGlzcGxheTogJ2lubGluZS1ibG9jaycsXG4gICAgbWFyZ2luYm90dG9tOiAnMjVweCcsXG4gICAgZmxvYXQ6ICdsZWZ0JyxcbiAgICBtYXJnaW5yaWdodDogJzI1cHgnLFxuICAgIHBhZGRpbmc6ICcycmVtJyxcbiAgICB0b3A6ICcxNXB4JyxcbiAgICB3aWR0aDogJzI1MHB4JyxcbiAgICBib3hTaGFkb3c6ICcjZGVkOWQ5IDBweCAzcHggNHB4JyxcbiAgICBib3hXaWR0aDogJzUwMHB4JyxcbiAgICBib3hIZWlnaHQ6ICc1NzVweCcsXG4gICAgaW5oZXJpdDogJ2luaGVyaXQnLFxuICAgIHRyYW5zaXN0aW9uVG9wOiAndG9wIDJzIGN1YmljLWJlemllcigwLjUzLCAwLjQ5LCAwLjM1LCAwLjM5KSAwcycsXG4gICAgbWFyZ2luTGVmdDogJy0xNXB4JyxcbiAgICBpY29uVG9wOiAnMjRweCcsXG4gICAgaWNvbkZvbnRTaXplOiAnMjBweCcsXG4gICAgYm94RGlzcGxheU5vbmU6ICdub25lJyxcbiAgICBib3hEaXNwbGF5RmxleDogJ2ZsZXgnLFxuICAgIGp1c3RpZnlDb250ZW50OiAnY2VudGVyJyxcbiAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICBjdXJzb3I6ICdwb2ludGVyJyxcbiAgICBwcmltYXJ5V2lkdGg6ICcyMDJweCcsXG4gICAgcHJpbWFyeUhlaWdodDogJzIwMnB4JyxcbiAgICBwcmltYXJ5Qm9yZGVyUmFkaXVzOiAnNTAlJyxcbiAgICBwcmltYXJ5Qm9yZGVyOiAnMTBweCBzb2xpZCB2YXIoLS1jb2xvciknLFxuICAgIHNlY29uZGFyeVdpZHRoOiAnMTkzcHgnLFxuICAgIHNlY29uZGFyeUhlaWdodDogJzE5M3B4JyxcbiAgICBzZWNvbmRhcnlCb3JkZXJSYWRpdXM6ICc1MCUnLFxuICAgIHNlY29uZGFyeUJvcmRlcjogJzZweCBzb2xpZCBncmF5JyxcbiAgICB0aGlyZFdpZHRoOiAnMTg0cHgnLFxuICAgIHRoaXJkSGVpZ2h0OiAnMTg1cHgnLFxuICAgIHRoaXJkQm9yZGVyUmFkaXVzOiAnNTAlJyxcbiAgICB0aGlyZEJvcmRlcjogJzVweCBzb2xpZCB2YXIoLS1ib3JkZXItY29sb3IpJyxcbiAgICB0aGlyZFRvcDogJy0xcHgnLFxuICAgIG51bUxlZnQ6ICcxMzNweCcsXG4gICAgbnVtVG9wOiAnMTRweCcsXG4gICAgY2xvY2tOdW06IFtcbiAgICAgIHtcbiAgICAgICAgbGVmdDogJzEzMHB4JyxcbiAgICAgICAgdG9wOiAnMThweCdcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGxlZnQ6ICcxNjBweCcsXG4gICAgICAgIHRvcDogJzQ5cHgnLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbGVmdDogJzE2NXB4JyxcbiAgICAgICAgdG9wOiAnODlweCcsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBsZWZ0OiAnMTUxcHgnLFxuICAgICAgICB0b3A6ICcxMjhweCcsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBsZWZ0OiAnMTI1cHgnLFxuICAgICAgICB0b3A6ICcxNTNweCcsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBsZWZ0OiAnODZweCcsXG4gICAgICAgIHRvcDogJzE2MnB4JyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGxlZnQ6ICc0OXB4JyxcbiAgICAgICAgdG9wOiAnMTUzcHgnLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbGVmdDogJzE5cHgnLFxuICAgICAgICB0b3A6ICcxMjdweCcsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBsZWZ0OiAnN3B4JyxcbiAgICAgICAgdG9wOiAnODlweCcsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBsZWZ0OiAnMTNweCcsXG4gICAgICAgIHRvcDogJzQ4cHgnLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbGVmdDogJzM5cHgnLFxuICAgICAgICB0b3A6ICcyMHB4JyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGxlZnQ6ICc4MXB4JyxcbiAgICAgICAgdG9wOiAnM3B4JyxcbiAgICAgIH1cbiAgICBdLFxuICAgIGJlbHRUb3A6ICctMTQzcHgnLFxuICAgIGJlbHRMZWZ0OiAnODVweCcsXG4gICAgYmVsdFdpZHRoOiAnMzhweCcsXG4gICAgYmVsdEhlaWdodDogJzQ4cHgnLFxuICAgIGJlbHRCYWNrZ3JvdW5kQ29sb3I6ICcjMkY0RjRGJyxcbiAgICB3cmFwV2lkdGg6ICcxNXB4JyxcbiAgICB3cmFwQm9yZGVyQm90dG9tOiAnNTRweCBzb2xpZCB2YXIoLS1jb2xvciknLFxuICAgIHdyYXBCb3JkZXJMZWZ0OiAnMTZweCBzb2xpZCB3aGl0ZScsXG4gICAgd3JhcExlZnQ6ICczNyUnLFxuICAgIHdyYXBUb3A6ICcyMDdweCcsXG4gICAgcmlnaHRXcmFwV2lkdGg6ICcxNXB4JyxcbiAgICByaWdodEJvcmRlclJpZ2h0UmFkaXVzOiAnOXB4JyxcbiAgICByaWdodFdyYXBCb3JkZXJCb3R0b206ICc2M3B4IHNvbGlkIHZhcigtLWNvbG9yKScsXG4gICAgcmlnaHRXcmFwQm9yZGVycmlnaHQ6ICcxNnB4IHNvbGlkIHdoaXRlJyxcbiAgICByaWdodFdyYXBMZWZ0OiAnNjAlJyxcbiAgICByaWdodFdyYXBUb3A6ICczMiUnLFxuICAgIHJpZ2h0V3JhcE1hcmdpbjogJy03cHgnLFxuICAgIHJpZ2h0Qm9yZGVyTGVmdFJhZGl1czogJzEwcHgnLFxuICB9O1xuICB3YXRjaEVsZW1lbnRzID0gWydsYWJlbCcsICdpbnB1dCcsICdzcGFuJywgJ3ByaW1hcnlDcmljbGUnLFxuICAgICdzZWNvbmRhcnlDaXJjbGUnLCAndGVyaXRhcnlDaXJjbGUnLCAnY2xvY2tCb3gnLCAnaG91ckhhbmQnLCAnbWludXRlSGFuZCcsICdzZWNvbmRIYW5kJ107XG5cbiAgY29uc3RydWN0b3IoKSB7IH1cblxuICBmZXRjaEludGVybmFsU3R5bGUoKSB7XG4gICAgcmV0dXJuIGludGVybmFsU3R5bGU7XG4gIH1cblxuICBmZXRjaEluTGluZVN0eWxlKCkge1xuICAgIHJldHVybiB0aGlzLmlubGluZVN0eWxlSW5mbztcbiAgfVxuXG5cbiAgY3JlYXRlRHVnSG9sZXMod3JhcHBlciwgcmVuZGVyZXIpIHtcbiAgICBjb25zdCBzdHlsZVRvRHVnSG9sZSA9IHt9O1xuICAgIGR1Z0hvbGVzLmZvckVhY2goZHVnSG9sZSA9PiB7XG4gICAgICBjb25zdCBkdWdIb2wgPSByZW5kZXJlci5jcmVhdGVFbGVtZW50KCdzcGFuJyk7XG4gICAgICByZW5kZXJlci5hcHBlbmRDaGlsZCh3cmFwcGVyLCBkdWdIb2wpO1xuICAgICAgc3R5bGVUb0R1Z0hvbGVbZHVnSG9sZV0gPSBkdWdIb2w7XG4gICAgfSk7XG4gICAgcmV0dXJuIHN0eWxlVG9EdWdIb2xlO1xuICB9XG5cbiAgY3JlYXRlV2F0Y2hTdHJhcHMod3JhcHBlciwgcmVuZGVyZXIpIHtcbiAgICBjb25zdCBzdHlsZVRvV2F0Y2hTdHJhcCA9IHt9O1xuICAgIHdhdGNoU3RyYXBzLmZvckVhY2goKHdhdGNoU3RyYXAsIGluZGV4KSA9PiB7XG4gICAgICBjb25zdCBzdHJhcCA9IHJlbmRlcmVyLmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtcbiAgICAgIHJlbmRlcmVyLmFwcGVuZENoaWxkKHdyYXBwZXIsIHN0cmFwKTtcbiAgICAgIHN0eWxlVG9XYXRjaFN0cmFwWydlbGVtZW50TmFtZScgKyBpbmRleF0gPSBzdHJhcDtcbiAgICAgIHN0eWxlVG9XYXRjaFN0cmFwWydjbGFzc05hbWUnICsgaW5kZXhdID0gd2F0Y2hTdHJhcC5zdHlsZUNsYXNzTmFtZS5tYXAoY2xhc3NOYW1lID0+IHtcbiAgICAgICAgcmV0dXJuIGNsYXNzTmFtZTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIHJldHVybiBzdHlsZVRvV2F0Y2hTdHJhcDtcbiAgfVxuXG4gIGFkZENsb2NrTnVtYmVycyh0aGlyZENpcmNsZSwgYXBwbHlTdHlsZUluQ2xvY2tOdW0sIHJlbmRlcmVyKSB7XG4gICAgZm9yIChsZXQgcG9zID0gMDsgcG9zIDwgdGhpcy5DTE9DS19OVU1CRVI7IHBvcysrKSB7XG4gICAgICBjb25zdCBudW1TcGFuID0gcmVuZGVyZXIuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuICAgICAgY29uc3QgbnVtID0gcmVuZGVyZXIuY3JlYXRlVGV4dCgocG9zICsgMSkudG9TdHJpbmcoKSk7XG4gICAgICByZW5kZXJlci5hcHBlbmRDaGlsZChudW1TcGFuLCBudW0pO1xuICAgICAgcmVuZGVyZXIuYXBwZW5kQ2hpbGQodGhpcmRDaXJjbGUsIG51bVNwYW4pO1xuICAgICAgcmVuZGVyZXIuc2V0UHJvcGVydHkobnVtU3BhbiwgJ1t0aW1lQ2hhbmdlXScsICdvbk51bUNsaWNrKCknKTtcbiAgICAgIGFwcGx5U3R5bGVJbkNsb2NrTnVtKG51bVNwYW4sIHBvcywgdGhpcy5pbmxpbmVTdHlsZUluZm8pO1xuICAgIH1cbiAgfVxuXG59XG5cblxuIl19