kepler.gl.geoiq
Version:
kepler.gl is a webgl based application to visualize large scale location data in the browser
283 lines (237 loc) • 59.3 kB
JavaScript
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.WidgetContainer = exports.Tooltip = exports.Table = exports.StyledType = exports.StyledPanelHeader = exports.StyledPanelDropdown = exports.StyledModalContent = exports.StyledMapContainer = exports.StyledFilteredOption = exports.StyledFilterPanel = exports.StyledFilterHeader = exports.StyledFilterContent = exports.StyledExportSection = exports.SpaceBetweenFlexbox = exports.SidePanelSection = exports.SidePanelDivider = exports.SelectionButton = exports.SelectTextBold = exports.SelectText = exports.SBFlexboxItem = exports.PanelValue = exports.PanelLabelWrapper = exports.PanelLabelBold = exports.PanelLabel = exports.PanelHeaderTitle = exports.PanelHeaderContent = exports.PanelContent = exports.MapControlButton = exports.InputLight = exports.Input = exports.InlineInput = exports.IconRoundSmall = exports.DatasetSquare = exports.CenterFlexbox = exports.ButtonGroup = exports.Button = exports.BottomWidgetInner = void 0;
var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
var _styledComponents = _interopRequireDefault(require("styled-components"));
var _reactTooltip = _interopRequireDefault(require("react-tooltip"));
var _mediaBreakpoints = require("../../styles/media-breakpoints");
var _colorUtils = require("../../utils/color-utils");
var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11, _templateObject12, _templateObject13, _templateObject14, _templateObject15, _templateObject16, _templateObject17, _templateObject18, _templateObject19, _templateObject20, _templateObject21, _templateObject22, _templateObject23, _templateObject24, _templateObject25, _templateObject26, _templateObject27, _templateObject28, _templateObject29, _templateObject30, _templateObject31, _templateObject32, _templateObject33, _templateObject34, _templateObject35, _templateObject36, _templateObject37, _templateObject38;
var SelectText = exports.SelectText = _styledComponents["default"].span(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n color: ", ";\n font-size: ", ";\n font-weight: 400;\n\n i {\n font-size: 13px;\n margin-right: 6px;\n }\n"])), function (props) {
return props.theme.labelColor;
}, function (props) {
return props.theme.selectFontSize;
});
var SelectTextBold = exports.SelectTextBold = (0, _styledComponents["default"])(SelectText)(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n color: ", ";\n font-weight: 500;\n"])), function (props) {
return props.theme.textColor;
});
var IconRoundSmall = exports.IconRoundSmall = _styledComponents["default"].div(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n width: 18px;\n height: 18px;\n border-radius: 9px;\n background-color: ", "; // updated after checking sketch file\n color: ", ";\n align-items: center;\n justify-content: center;\n\n :hover {\n cursor: pointer;\n background-color: ", ";\n }\n"])), function (props) {
return props.theme.secondaryBtnBgdHover;
}, function (props) {
return props.theme.secondaryBtnColor;
}, function (props) {
return props.theme.secondaryBtnBgdHover;
});
var CenterFlexbox = exports.CenterFlexbox = _styledComponents["default"].div(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n align-items: center;\n"])));
var SpaceBetweenFlexbox = exports.SpaceBetweenFlexbox = _styledComponents["default"].div(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n justify-content: space-between;\n margin-left: -16px;\n"])));
var SBFlexboxItem = exports.SBFlexboxItem = _styledComponents["default"].div(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2["default"])(["\n flex-grow: 1;\n margin-left: 16px;\n"])));
var PanelLabel = exports.PanelLabel = _styledComponents["default"].label.attrs({
className: 'side-panel-panel__label'
})(_templateObject7 || (_templateObject7 = (0, _taggedTemplateLiteral2["default"])(["\n color: ", ";\n display: inline-block;\n font-size: 11px;\n font-weight: 400;\n margin-bottom: 4px;\n text-transform: capitalize;\n"])), function (props) {
return props.theme.labelColor;
});
var PanelValue = exports.PanelValue = _styledComponents["default"].label.attrs({
className: 'side-panel-panel__value'
})(_templateObject8 || (_templateObject8 = (0, _taggedTemplateLiteral2["default"])(["\n color: ", ";\n display: inline-block;\n font-size: 11px;\n font-weight: 400;\n margin-bottom: 4px;\n text-transform: capitalize;\n"])), function (props) {
return props.theme.textColor;
});
var PanelLabelWrapper = exports.PanelLabelWrapper = _styledComponents["default"].div.attrs({
className: 'side-panel-panel__label-wrapper'
})(_templateObject9 || (_templateObject9 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n align-items: self-start;\n"])));
var PanelLabelBold = exports.PanelLabelBold = (0, _styledComponents["default"])(PanelLabel)(_templateObject10 || (_templateObject10 = (0, _taggedTemplateLiteral2["default"])(["\n font-weight: 500;\n"])));
var PanelHeaderTitle = exports.PanelHeaderTitle = _styledComponents["default"].span.attrs({
className: 'side-panel-panel__header__title'
})(_templateObject11 || (_templateObject11 = (0, _taggedTemplateLiteral2["default"])(["\n color: ", ";\n font-size: 13px;\n letter-spacing: 0.43px;\n text-transform: capitalize;\n"])), function (props) {
return props.theme.textColor;
});
var PanelHeaderContent = exports.PanelHeaderContent = _styledComponents["default"].div(_templateObject12 || (_templateObject12 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n align-items: center;\n color: ", ";\n padding-left: 12px;\n\n .icon {\n color: ", ";\n display: flex;\n align-items: center;\n margin-right: 12px;\n }\n"])), function (props) {
return props.theme.textColor;
}, function (props) {
return props.theme.labelColor;
});
var PanelContent = exports.PanelContent = _styledComponents["default"].div.attrs({
className: 'side-panel-panel__content'
})(_templateObject13 || (_templateObject13 = (0, _taggedTemplateLiteral2["default"])(["\n background-color: ", ";\n padding: 12px;\n"])), function (props) {
return props.theme.panelBackground;
});
var SidePanelSection = exports.SidePanelSection = _styledComponents["default"].div.attrs({
className: 'side-panel-section'
})(_templateObject14 || (_templateObject14 = (0, _taggedTemplateLiteral2["default"])(["\n margin-bottom: 12px;\n opacity: ", ";\n pointer-events: ", ";\n"])), function (props) {
return props.disabled ? 0.4 : 1;
}, function (props) {
return props.disabled ? 'none' : 'all';
});
var SidePanelDivider = exports.SidePanelDivider = _styledComponents["default"].div.attrs({
className: 'side-panel-divider'
})(_templateObject15 || (_templateObject15 = (0, _taggedTemplateLiteral2["default"])(["\n border-bottom: 1px solid ", ";\n height: 12px;\n margin-bottom: 12px;\n"])), function (props) {
return props.theme.panelBorderColor;
});
var Tooltip = exports.Tooltip = (0, _styledComponents["default"])(_reactTooltip["default"])(_templateObject16 || (_templateObject16 = (0, _taggedTemplateLiteral2["default"])(["\n &.__react_component_tooltip {\n font-size: 9.5px;\n font-weight: 500;\n padding: 7px 18px;\n\n &.type-dark {\n background-color: ", ";\n color: ", ";\n &.place-bottom {\n :after {\n border-bottom-color: ", ";\n }\n }\n\n &.place-top {\n :after {\n border-top-color: ", ";\n }\n }\n\n &.place-right {\n :after {\n border-right-color: ", ";\n }\n }\n\n &.place-left {\n :after {\n border-left-color: ", ";\n }\n }\n }\n }\n"])), function (props) {
return props.theme.tooltipBg;
}, function (props) {
return props.theme.tooltipColor;
}, function (props) {
return props.theme.tooltipBg;
}, function (props) {
return props.theme.tooltipBg;
}, function (props) {
return props.theme.tooltipBg;
}, function (props) {
return props.theme.tooltipBg;
});
var Button = exports.Button = _styledComponents["default"].div.attrs({
className: 'button'
})(_templateObject17 || (_templateObject17 = (0, _taggedTemplateLiteral2["default"])(["\n align-items: center;\n background-color: ", ";\n border-radius: ", ";\n color: ", ";\n cursor: pointer;\n display: inline-flex;\n font-size: ", ";\n font-weight: 500;\n justify-content: center;\n letter-spacing: 0.3px;\n line-height: 14px;\n outline: 0;\n padding: ", ";\n text-align: center;\n transition: ", ";\n vertical-align: middle;\n width: ", ";\n opacity: ", ";\n pointer-events: ", ";\n margin: ", ";\n\n :hover,\n :focus,\n :active,\n &.active {\n background-color: ", ";\n color: ", ";\n }\n\n svg {\n margin-right: 8px;\n }\n"])), function (props) {
return props.negative ? props.theme.negativeBtnBgd : props.secondary ? props.theme.secondaryBtnBgd : props.link ? props.theme.linkBtnBgd : props.theme.primaryBtnBgd;
}, function (props) {
return props.theme.primaryBtnRadius;
}, function (props) {
return props.negative ? props.theme.negativeBtnColor : props.secondary ? props.theme.secondaryBtnColor : props.link ? props.theme.linkBtnColor : props.theme.primaryBtnColor;
}, function (props) {
return props.large ? '14px' : props.small ? '10px' : '11px';
}, function (props) {
return props.large ? '14px 32px' : props.small ? '6px 9px' : '9px 12px';
}, function (props) {
return props.theme.transition;
}, function (props) {
return props.width || 'auto';
}, function (props) {
return props.disabled ? 0.4 : 1;
}, function (props) {
return props.disabled ? 'none' : 'all';
}, function (props) {
return props.margin ? '0px 0px 0px 16px' : '0px';
}, function (props) {
return props.negative ? props.theme.negativeBtnBgdHover : props.secondary ? props.theme.secondaryBtnBgdHover : props.link ? props.theme.linkBtnActBgdHover : props.theme.primaryBtnBgdHover;
}, function (props) {
return props.negative ? props.theme.negativeBtnActColor : props.secondary ? props.theme.secondaryBtnActColor : props.link ? props.theme.linkBtnActColor : props.theme.primaryBtnActColor;
});
var Input = exports.Input = _styledComponents["default"].input(_templateObject18 || (_templateObject18 = (0, _taggedTemplateLiteral2["default"])(["\n ", ";\n"])), function (props) {
return props.secondary ? props.theme.secondaryInput : props.theme.input;
});
var InputLight = exports.InputLight = _styledComponents["default"].input(_templateObject19 || (_templateObject19 = (0, _taggedTemplateLiteral2["default"])(["\n ", "\n"])), function (props) {
return props.theme.inputLT;
});
var InlineInput = exports.InlineInput = (0, _styledComponents["default"])(Input)(_templateObject20 || (_templateObject20 = (0, _taggedTemplateLiteral2["default"])(["\n ", ";\n"])), function (props) {
return props.theme.inlineInput;
});
var StyledPanelHeader = exports.StyledPanelHeader = _styledComponents["default"].div(_templateObject21 || (_templateObject21 = (0, _taggedTemplateLiteral2["default"])(["\n background-color: ", ";\n border-left: 3px solid\n rgb(\n ", "\n );\n padding: 0 10px 0 0;\n height: ", "px;\n display: flex;\n justify-content: space-between;\n align-items: center;\n transition: ", ";\n"])), function (props) {
return props.active ? props.theme.panelBackgroundHover : props.theme.panelBackground;
}, function (props) {
return props.labelRCGColorValues ? props.labelRCGColorValues.join(',') : 'transparent';
}, function (props) {
return props.theme.panelHeaderHeight;
}, function (props) {
return props.theme.transition;
});
var StyledPanelDropdown = exports.StyledPanelDropdown = _styledComponents["default"].div(_templateObject22 || (_templateObject22 = (0, _taggedTemplateLiteral2["default"])(["\n ", "\n background-color: ", ";\n overflow-y: auto;\n box-shadow: ", ";\n border-radius: ", ";\n margin-top: 2px;\n max-height: 500px;\n position: relative;\n z-index: 999;\n"])), function (props) {
return props.theme.panelDropdownScrollBar;
}, function (props) {
return props.theme.panelBackground;
}, function (props) {
return props.theme.panelBoxShadow;
}, function (props) {
return props.theme.panelBorderRadius;
});
var ButtonGroup = exports.ButtonGroup = _styledComponents["default"].div(_templateObject23 || (_templateObject23 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n .button {\n border-radius: 0;\n margin-left: 2px;\n }\n .button:first-child {\n border-bottom-left-radius: ", ";\n border-top-left-radius: ", ";\n margin-left: 0;\n }\n .button:last-child {\n border-bottom-right-radius: ", ";\n border-top-right-radius: ", ";\n }\n"])), function (props) {
return props.theme.primaryBtnRadius;
}, function (props) {
return props.theme.primaryBtnRadius;
}, function (props) {
return props.theme.primaryBtnRadius;
}, function (props) {
return props.theme.primaryBtnRadius;
});
var DatasetSquare = exports.DatasetSquare = _styledComponents["default"].div(_templateObject24 || (_templateObject24 = (0, _taggedTemplateLiteral2["default"])(["\n display: inline-block;\n width: 8px;\n height: 8px;\n background-color: rgb(", ");\n margin-right: 12px;\n"])), function (props) {
return props.color.join(',');
});
var SelectionButton = exports.SelectionButton = _styledComponents["default"].div(_templateObject25 || (_templateObject25 = (0, _taggedTemplateLiteral2["default"])(["\n border-radius: 2px;\n border: 1px solid\n ", ";\n color: ", ";\n cursor: pointer;\n font-weight: 500;\n margin-right: 6px;\n padding: 6px 10px;\n\n :hover {\n color: ", ";\n border: 1px solid ", ";\n }\n"])), function (props) {
return props.selected ? props.theme.primaryBtnBgd : props.theme.selectBorderColorLT;
}, function (props) {
return props.selected ? props.theme.primaryBtnBgd : props.theme.selectBorderColorLT;
}, function (props) {
return props.available && props.theme.primaryBtnBgd;
}, function (props) {
return props.available && props.theme.primaryBtnBgd;
});
var Table = exports.Table = _styledComponents["default"].table(_templateObject26 || (_templateObject26 = (0, _taggedTemplateLiteral2["default"])(["\n width: 100%;\n border-spacing: 0;\n\n thead {\n tr th {\n background: ", ";\n color: ", ";\n padding: 18px 12px;\n text-align: start;\n }\n }\n\n tbody {\n tr td {\n border-bottom: ", ";\n padding: 12px;\n }\n }\n"])), function (props) {
return props.theme.panelBackgroundLT;
}, function (props) {
return props.theme.titleColorLT;
}, function (props) {
return props.theme.panelBorderLT;
});
var StyledModalContent = exports.StyledModalContent = _styledComponents["default"].div(_templateObject27 || (_templateObject27 = (0, _taggedTemplateLiteral2["default"])(["\n background: ", ";\n color: ", ";\n display: flex;\n flex-direction: row;\n font-size: 10px;\n padding: 24px ", ";\n margin: 0 -", ";\n justify-content: space-between;\n ", ";\n"])), function (props) {
return props.theme.panelBackgroundLT;
}, function (props) {
return props.theme.textColorLT;
}, function (props) {
return props.theme.modalLateralPadding;
}, function (props) {
return props.theme.modalLateralPadding;
}, _mediaBreakpoints.media.portable(_templateObject28 || (_templateObject28 = (0, _taggedTemplateLiteral2["default"])(["\n flex-direction: column;\n padding: 16px ", ";\n margin: 0 -", ";\n "])), function (props) {
return props.theme.modalPortableLateralPadding;
}, function (props) {
return props.theme.modalPortableLateralPadding;
}));
/**
* Newer versions of mapbox.gl display an error message banner on top of the map by default
* which will cause the map to display points in the wrong locations
* This workaround will hide the error banner.
*/
var StyledMapContainer = exports.StyledMapContainer = _styledComponents["default"].div(_templateObject29 || (_templateObject29 = (0, _taggedTemplateLiteral2["default"])(["\n .mapboxgl-map .mapboxgl-missing-css {\n display: none;\n }\n"])));
var StyledExportSection = exports.StyledExportSection = _styledComponents["default"].div(_templateObject30 || (_templateObject30 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-direction: row;\n margin: 35px 0;\n width: 100%;\n\n .description {\n width: 185px;\n\n .title {\n font-weight: 500;\n color: ", ";\n font-size: 12px;\n }\n .subtitle {\n color: ", ";\n font-size: 11px;\n }\n }\n\n .selection {\n display: flex;\n flex-wrap: wrap;\n flex: 1;\n padding-left: 50px;\n\n select {\n background-color: white;\n border-radius: 1px;\n display: inline-block;\n font: inherit;\n line-height: 1.5em;\n padding: 0.5em 3.5em 0.5em 1em;\n margin: 0;\n box-sizing: border-box;\n appearance: none;\n width: 250px;\n height: 36px;\n\n background-image: linear-gradient(45deg, transparent 50%, gray 50%),\n linear-gradient(135deg, gray 50%, transparent 50%),\n linear-gradient(to right, #ccc, #ccc);\n background-position: calc(100% - 20px) calc(1em + 2px),\n calc(100% - 15px) calc(1em + 2px), calc(100% - 2.5em) 4.5em;\n background-size: 5px 5px, 5px 5px, 1px 1.5em;\n background-repeat: no-repeat;\n }\n\n select:focus {\n background-image: linear-gradient(45deg, green 50%, transparent 50%),\n linear-gradient(135deg, transparent 50%, green 50%),\n linear-gradient(to right, #ccc, #ccc);\n background-position: calc(100% - 15px) 1em, calc(100% - 20px) 1em,\n calc(100% - 2.5em) 4.5em;\n background-size: 5px 5px, 5px 5px, 1px 1.5em;\n background-repeat: no-repeat;\n border-color: green;\n outline: 0;\n }\n }\n"])), function (props) {
return props.theme.textColorLT;
}, function (props) {
return props.theme.textColor;
});
var StyledFilteredOption = exports.StyledFilteredOption = _styledComponents["default"].div(_templateObject31 || (_templateObject31 = (0, _taggedTemplateLiteral2["default"])(["\n align-items: center;\n border-radius: 2px;\n border: 1px solid\n ", ";\n cursor: pointer;\n display: flex;\n flex-direction: column;\n height: 60px;\n justify-content: center;\n margin: 4px;\n padding: 8px 12px;\n width: 140px;\n\n :hover {\n border: 1px solid ", ";\n }\n\n .filtered-title {\n color: ", ";\n font-size: 12px;\n font-weight: 500;\n }\n .filtered-subtitle {\n color: ", ";\n font-size: 11px;\n }\n"])), function (props) {
return props.selected ? props.theme.primaryBtnBgd : props.theme.selectBorderColorLT;
}, function (props) {
return props.theme.primaryBtnBgd;
}, function (props) {
return props.theme.textColorLT;
}, function (props) {
return props.theme.textColor;
});
var StyledType = exports.StyledType = _styledComponents["default"].div(_templateObject32 || (_templateObject32 = (0, _taggedTemplateLiteral2["default"])(["\n border-radius: 2px;\n border: 1px solid\n ", ";\n color: ", ";\n cursor: pointer;\n font-weight: 500;\n height: 100px;\n margin: 4px;\n padding: 6px 10px;\n width: 100px;\n\n :hover {\n color: ", ";\n border: 1px solid ", ";\n }\n"])), function (props) {
return props.selected ? props.theme.primaryBtnBgd : props.theme.selectBorderColorLT;
}, function (props) {
return props.selected ? props.theme.primaryBtnBgd : props.theme.selectBorderColorLT;
}, function (props) {
return props.available && props.theme.primaryBtnBgd;
}, function (props) {
return props.available && props.theme.primaryBtnBgd;
});
var WidgetContainer = exports.WidgetContainer = _styledComponents["default"].div(_templateObject33 || (_templateObject33 = (0, _taggedTemplateLiteral2["default"])(["\n z-index: 1;\n"])));
var BottomWidgetInner = exports.BottomWidgetInner = _styledComponents["default"].div(_templateObject34 || (_templateObject34 = (0, _taggedTemplateLiteral2["default"])(["\n background-color: ", ";\n padding: ", ";\n position: relative;\n margin-top: ", "px;\n"])), function (props) {
return props.theme.panelBackground;
}, function (props) {
return "".concat(props.theme.bottomInnerPdVert, "px ").concat(props.theme.bottomInnerPdSide, "px");
}, function (props) {
return props.theme.bottomPanelGap;
});
var MapControlButton = exports.MapControlButton = _styledComponents["default"].div.attrs({
className: 'map-control-button'
})(_templateObject35 || (_templateObject35 = (0, _taggedTemplateLiteral2["default"])(["\n align-items: center;\n background-color: ", ";\n border: 0;\n box-shadow: 0 6px 12px 0 rgba(0, 0, 0, 0.16);\n color: ", ";\n cursor: pointer;\n display: flex;\n height: 32px;\n justify-content: center;\n margin: 0;\n outline: none;\n padding: 0;\n transition: ", ";\n width: 32px;\n\n :focus {\n outline: none;\n }\n\n :hover {\n cursor: pointer;\n background-color: ", ";\n color: ", ";\n }\n"])), function (props) {
return props.active ? props.theme.panelBackgroundHover : props.theme.panelBackground;
}, function (props) {
return props.theme.primaryBtnColor;
}, function (props) {
return props.theme.transition;
}, function (props) {
return props.theme.secondaryBtnActBgd;
}, function (props) {
return props.theme.secondaryBtnActColor;
});
var StyledFilterPanel = exports.StyledFilterPanel = _styledComponents["default"].div(_templateObject36 || (_templateObject36 = (0, _taggedTemplateLiteral2["default"])(["\n margin-bottom: 12px;\n border-radius: 1px;\n\n .filter-panel__filter {\n margin-top: 24px;\n }\n"])));
var StyledFilterHeader = exports.StyledFilterHeader = (0, _styledComponents["default"])(StyledPanelHeader)(_templateObject37 || (_templateObject37 = (0, _taggedTemplateLiteral2["default"])(["\n cursor: pointer;\n padding: 10px 12px;\n\n .field-selector {\n flex: 2;\n }\n\n border-left: 3px solid;\n ", "\n"])), function (props) {
return props.labelRCGColorValues && props.labelRCGColorValues.length > 0 ? "border-image: ".concat((0, _colorUtils.createLinearGradient)('bottom', props.labelRCGColorValues), " 3;") : 'border-color: transparent;';
});
var StyledFilterContent = exports.StyledFilterContent = _styledComponents["default"].div(_templateObject38 || (_templateObject38 = (0, _taggedTemplateLiteral2["default"])(["\n background-color: ", ";\n padding: 12px;\n"])), function (props) {
return props.theme.panelBackground;
});
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2NvbW1vbi9zdHlsZWQtY29tcG9uZW50cy5qcyJdLCJuYW1lcyI6WyJTZWxlY3RUZXh0Iiwic3R5bGVkIiwic3BhbiIsInByb3BzIiwidGhlbWUiLCJsYWJlbENvbG9yIiwic2VsZWN0Rm9udFNpemUiLCJTZWxlY3RUZXh0Qm9sZCIsInRleHRDb2xvciIsIkljb25Sb3VuZFNtYWxsIiwiZGl2Iiwic2Vjb25kYXJ5QnRuQmdkSG92ZXIiLCJzZWNvbmRhcnlCdG5Db2xvciIsIkNlbnRlckZsZXhib3giLCJTcGFjZUJldHdlZW5GbGV4Ym94IiwiU0JGbGV4Ym94SXRlbSIsIlBhbmVsTGFiZWwiLCJsYWJlbCIsImF0dHJzIiwiY2xhc3NOYW1lIiwiUGFuZWxWYWx1ZSIsIlBhbmVsTGFiZWxXcmFwcGVyIiwiUGFuZWxMYWJlbEJvbGQiLCJQYW5lbEhlYWRlclRpdGxlIiwiUGFuZWxIZWFkZXJDb250ZW50IiwiUGFuZWxDb250ZW50IiwicGFuZWxCYWNrZ3JvdW5kIiwiU2lkZVBhbmVsU2VjdGlvbiIsImRpc2FibGVkIiwiU2lkZVBhbmVsRGl2aWRlciIsInBhbmVsQm9yZGVyQ29sb3IiLCJUb29sdGlwIiwiUmVhY3RUb29sdGlwIiwidG9vbHRpcEJnIiwidG9vbHRpcENvbG9yIiwiQnV0dG9uIiwibmVnYXRpdmUiLCJuZWdhdGl2ZUJ0bkJnZCIsInNlY29uZGFyeSIsInNlY29uZGFyeUJ0bkJnZCIsImxpbmsiLCJsaW5rQnRuQmdkIiwicHJpbWFyeUJ0bkJnZCIsInByaW1hcnlCdG5SYWRpdXMiLCJuZWdhdGl2ZUJ0bkNvbG9yIiwibGlua0J0bkNvbG9yIiwicHJpbWFyeUJ0bkNvbG9yIiwibGFyZ2UiLCJzbWFsbCIsInRyYW5zaXRpb24iLCJ3aWR0aCIsIm1hcmdpbiIsIm5lZ2F0aXZlQnRuQmdkSG92ZXIiLCJsaW5rQnRuQWN0QmdkSG92ZXIiLCJwcmltYXJ5QnRuQmdkSG92ZXIiLCJuZWdhdGl2ZUJ0bkFjdENvbG9yIiwic2Vjb25kYXJ5QnRuQWN0Q29sb3IiLCJsaW5rQnRuQWN0Q29sb3IiLCJwcmltYXJ5QnRuQWN0Q29sb3IiLCJJbnB1dCIsImlucHV0Iiwic2Vjb25kYXJ5SW5wdXQiLCJJbnB1dExpZ2h0IiwiaW5wdXRMVCIsIklubGluZUlucHV0IiwiaW5saW5lSW5wdXQiLCJTdHlsZWRQYW5lbEhlYWRlciIsImFjdGl2ZSIsInBhbmVsQmFja2dyb3VuZEhvdmVyIiwibGFiZWxSQ0dDb2xvclZhbHVlcyIsImpvaW4iLCJwYW5lbEhlYWRlckhlaWdodCIsIlN0eWxlZFBhbmVsRHJvcGRvd24iLCJwYW5lbERyb3Bkb3duU2Nyb2xsQmFyIiwicGFuZWxCb3hTaGFkb3ciLCJwYW5lbEJvcmRlclJhZGl1cyIsIkJ1dHRvbkdyb3VwIiwiRGF0YXNldFNxdWFyZSIsImNvbG9yIiwiU2VsZWN0aW9uQnV0dG9uIiwic2VsZWN0ZWQiLCJzZWxlY3RCb3JkZXJDb2xvckxUIiwiYXZhaWxhYmxlIiwiVGFibGUiLCJ0YWJsZSIsInBhbmVsQmFja2dyb3VuZExUIiwidGl0bGVDb2xvckxUIiwicGFuZWxCb3JkZXJMVCIsIlN0eWxlZE1vZGFsQ29udGVudCIsInRleHRDb2xvckxUIiwibW9kYWxMYXRlcmFsUGFkZGluZyIsIm1lZGlhIiwicG9ydGFibGUiLCJtb2RhbFBvcnRhYmxlTGF0ZXJhbFBhZGRpbmciLCJTdHlsZWRNYXBDb250YWluZXIiLCJTdHlsZWRFeHBvcnRTZWN0aW9uIiwiU3R5bGVkRmlsdGVyZWRPcHRpb24iLCJTdHlsZWRUeXBlIiwiV2lkZ2V0Q29udGFpbmVyIiwiQm90dG9tV2lkZ2V0SW5uZXIiLCJib3R0b21Jbm5lclBkVmVydCIsImJvdHRvbUlubmVyUGRTaWRlIiwiYm90dG9tUGFuZWxHYXAiLCJNYXBDb250cm9sQnV0dG9uIiwic2Vjb25kYXJ5QnRuQWN0QmdkIiwiU3R5bGVkRmlsdGVyUGFuZWwiLCJTdHlsZWRGaWx0ZXJIZWFkZXIiLCJsZW5ndGgiLCJTdHlsZWRGaWx0ZXJDb250ZW50Il0sIm1hcHBp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O0FBQUEsU0FBSUEsS0FBSyxDQUFDQyxLQUFOLENBQVlvRyxrQkFBaEI7QUFBQSxDQTNCQSxFQTRCaEIsVUFBQXJHLEtBQUs7QUFBQSxTQUFJQSxLQUFLLENBQUNDLEtBQU4sQ0FBWW9ELG9CQUFoQjtBQUFBLENBNUJXLENBQXRCOztBQWdDQSxJQUFNaUQsaUJBQWlCLCtCQUFHeEcsNkJBQU9TLEdBQVYsb01BQXZCOztBQVNBLElBQU1nRyxrQkFBa0IsZ0NBQUcsa0NBQU94QyxpQkFBUCxDQUFILHVOQVMzQixVQUFBL0QsS0FBSztBQUFBLFNBQ0xBLEtBQUssQ0FBQ2tFLG1CQUFOLElBQTZCbEUsS0FBSyxDQUFDa0UsbUJBQU4sQ0FBMEJzQyxNQUExQixHQUFtQyxDQUFoRSwyQkFDcUIsc0NBQ2YsUUFEZSxFQUVmeEcsS0FBSyxDQUFDa0UsbUJBRlMsQ0FEckIsV0FLSSw0QkFOQztBQUFBLENBVHNCLENBQXhCOztBQWtCQSxJQUFNdUMsbUJBQW1CLGlDQUFHM0csNkJBQU9TLEdBQVYsMElBQ1YsVUFBQVAsS0FBSztBQUFBLFNBQUlBLEtBQUssQ0FBQ0MsS0FBTixDQUFZc0IsZUFBaEI7QUFBQSxDQURLLENBQXpCIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSAyMDIzIFViZXIgVGVjaG5vbG9naWVzLCBJbmMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vIFRIRSBTT0ZUV0FSRS5cblxuaW1wb3J0IHN0eWxlZCBmcm9tICdzdHlsZWQtY29tcG9uZW50cyc7XG5pbXBvcnQgUmVhY3RUb29sdGlwIGZyb20gJ3JlYWN0LXRvb2x0aXAnO1xuaW1wb3J0IHttZWRpYX0gZnJvbSAnc3R5bGVzL21lZGlhLWJyZWFrcG9pbnRzJztcbmltcG9ydCB7Y3JlYXRlTGluZWFyR3JhZGllbnR9IGZyb20gJ3V0aWxzL2NvbG9yLXV0aWxzJztcblxuZXhwb3J0IGNvbnN0IFNlbGVjdFRleHQgPSBzdHlsZWQuc3BhbmBcbiAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUubGFiZWxDb2xvcn07XG4gIGZvbnQtc2l6ZTogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5zZWxlY3RGb250U2l6ZX07XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG5cbiAgaSB7XG4gICAgZm9udC1zaXplOiAxM3B4O1xuICAgIG1hcmdpbi1yaWdodDogNnB4O1xuICB9XG5gO1xuXG5leHBvcnQgY29uc3QgU2VsZWN0VGV4dEJvbGQgPSBzdHlsZWQoU2VsZWN0VGV4dClgXG4gIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnRleHRDb2xvcn07XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG5gO1xuXG5leHBvcnQgY29uc3QgSWNvblJvdW5kU21hbGwgPSBzdHlsZWQuZGl2YFxuICBkaXNwbGF5OiBmbGV4O1xuICB3aWR0aDogMThweDtcbiAgaGVpZ2h0OiAxOHB4O1xuICBib3JkZXItcmFkaXVzOiA5cHg7XG4gIGJhY2tncm91bmQtY29sb3I6ICR7cHJvcHMgPT5cbiAgICBwcm9wcy50aGVtZS5zZWNvbmRhcnlCdG5CZ2RIb3Zlcn07IC8vIHVwZGF0ZWQgYWZ0ZXIgY2hlY2tpbmcgc2tldGNoIGZpbGVcbiAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuc2Vjb25kYXJ5QnRuQ29sb3J9O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcblxuICA6aG92ZXIge1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnNlY29uZGFyeUJ0bkJnZEhvdmVyfTtcbiAgfVxuYDtcblxuZXhwb3J0IGNvbnN0IENlbnRlckZsZXhib3ggPSBzdHlsZWQuZGl2YFxuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuYDtcblxuZXhwb3J0IGNvbnN0IFNwYWNlQmV0d2VlbkZsZXhib3ggPSBzdHlsZWQuZGl2YFxuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIG1hcmdpbi1sZWZ0OiAtMTZweDtcbmA7XG5cbmV4cG9ydCBjb25zdCBTQkZsZXhib3hJdGVtID0gc3R5bGVkLmRpdmBcbiAgZmxleC1ncm93OiAxO1xuICBtYXJnaW4tbGVmdDogMTZweDtcbmA7XG5cbmV4cG9ydCBjb25zdCBQYW5lbExhYmVsID0gc3R5bGVkLmxhYmVsLmF0dHJzKHtcbiAgY2xhc3NOYW1lOiAnc2lkZS1wYW5lbC1wYW5lbF9fbGFiZWwnXG59KWBcbiAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUubGFiZWxDb2xvcn07XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgZm9udC1zaXplOiAxMXB4O1xuICBmb250LXdlaWdodDogNDAwO1xuICBtYXJnaW4tYm90dG9tOiA0cHg7XG4gIHRleHQtdHJhbnNmb3JtOiBjYXBpdGFsaXplO1xuYDtcblxuZXhwb3J0IGNvbnN0IFBhbmVsVmFsdWUgPSBzdHlsZWQubGFiZWwuYXR0cnMoe1xuICBjbGFzc05hbWU6ICdzaWRlLXBhbmVsLXBhbmVsX192YWx1ZSdcbn0pYFxuICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS50ZXh0Q29sb3J9O1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIGZvbnQtc2l6ZTogMTFweDtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgbWFyZ2luLWJvdHRvbTogNHB4O1xuICB0ZXh0LXRyYW5zZm9ybTogY2FwaXRhbGl6ZTtcbmA7XG5cbmV4cG9ydCBjb25zdCBQYW5lbExhYmVsV3JhcHBlciA9IHN0eWxlZC5kaXYuYXR0cnMoe1xuICBjbGFzc05hbWU6ICdzaWRlLXBhbmVsLXBhbmVsX19sYWJlbC13cmFwcGVyJ1xufSlgXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBzZWxmLXN0YXJ0O1xuYDtcblxuZXhwb3J0IGNvbnN0IFBhbmVsTGFiZWxCb2xkID0gc3R5bGVkKFBhbmVsTGFiZWwpYFxuICBmb250LXdlaWdodDogNTAwO1xuYDtcblxuZXhwb3J0IGNvbnN0IFBhbmVsSGVhZGVyVGl0bGUgPSBzdHlsZWQuc3Bhbi5hdHRycyh7XG4gIGNsYXNzTmFtZTogJ3NpZGUtcGFuZWwtcGFuZWxfX2hlYWRlcl9fdGl0bGUnXG59KWBcbiAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUudGV4dENvbG9yfTtcbiAgZm9udC1zaXplOiAxM3B4O1xuICBsZXR0ZXItc3BhY2luZzogMC40M3B4O1xuICB0ZXh0LXRyYW5zZm9ybTogY2FwaXRhbGl6ZTtcbmA7XG5cbmV4cG9ydCBjb25zdCBQYW5lbEhlYWRlckNvbnRlbnQgPSBzdHlsZWQuZGl2YFxuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS50ZXh0Q29sb3J9O1xuICBwYWRkaW5nLWxlZnQ6IDEycHg7XG5cbiAgLmljb24ge1xuICAgIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmxhYmVsQ29sb3J9O1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBtYXJnaW4tcmlnaHQ6IDEycHg7XG4gIH1cbmA7XG5cbmV4cG9ydCBjb25zdCBQYW5lbENvbnRlbnQgPSBzdHlsZWQuZGl2LmF0dHJzKHtcbiAgY2xhc3NOYW1lOiAnc2lkZS1wYW5lbC1wYW5lbF9fY29udGVudCdcbn0pYFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnBhbmVsQmFja2dyb3VuZH07XG4gIHBhZGRpbmc6IDEycHg7XG5gO1xuXG5leHBvcnQgY29uc3QgU2lkZVBhbmVsU2VjdGlvbiA9IHN0eWxlZC5kaXYuYXR0cnMoe1xuICBjbGFzc05hbWU6ICdzaWRlLXBhbmVsLXNlY3Rpb24nXG59KWBcbiAgbWFyZ2luLWJvdHRvbTogMTJweDtcbiAgb3BhY2l0eTogJHtwcm9wcyA9PiAocHJvcHMuZGlzYWJsZWQgPyAwLjQgOiAxKX07XG4gIHBvaW50ZXItZXZlbnRzOiAke3Byb3BzID0+IChwcm9wcy5kaXNhYmxlZCA/ICdub25lJyA6ICdhbGwnKX07XG5gO1xuXG5leHBvcnQgY29uc3QgU2lkZVBhbmVsRGl2aWRlciA9IHN0eWxlZC5kaXYuYXR0cnMoe1xuICBjbGFzc05hbWU6ICdzaWRlLXBhbmVsLWRpdmlkZXInXG59KWBcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICR7cHJvcHMgPT4gcHJvcHMudGhlbWUucGFuZWxCb3JkZXJDb2xvcn07XG4gIGhlaWdodDogMTJweDtcbiAgbWFyZ2luLWJvdHRvbTogMTJweDtcbmA7XG5cbmV4cG9ydCBjb25zdCBUb29sdGlwID0gc3R5bGVkKFJlYWN0VG9vbHRpcClgXG4gICYuX19yZWFjdF9jb21wb25lbnRfdG9vbHRpcCB7XG4gICAgZm9udC1zaXplOiA5LjVweDtcbiAgICBmb250LXdlaWdodDogNTAwO1xuICAgIHBhZGRpbmc6IDdweCAxOHB4O1xuXG4gICAgJi50eXBlLWRhcmsge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS50b29sdGlwQmd9O1xuICAgICAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUudG9vbHRpcENvbG9yfTtcbiAgICAgICYucGxhY2UtYm90dG9tIHtcbiAgICAgICAgOmFmdGVyIHtcbiAgICAgICAgICBib3JkZXItYm90dG9tLWNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnRvb2x0aXBCZ307XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgJi5wbGFjZS10b3Age1xuICAgICAgICA6YWZ0ZXIge1xuICAgICAgICAgIGJvcmRlci10b3AtY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUudG9vbHRpcEJnfTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAmLnBsYWNlLXJpZ2h0IHtcbiAgICAgICAgOmFmdGVyIHtcbiAgICAgICAgICBib3JkZXItcmlnaHQtY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUudG9vbHRpcEJnfTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAmLnBsYWNlLWxlZnQge1xuICAgICAgICA6YWZ0ZXIge1xuICAgICAgICAgIGJvcmRlci1sZWZ0LWNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnRvb2x0aXBCZ307XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbmA7XG5cbmV4cG9ydCBjb25zdCBCdXR0b24gPSBzdHlsZWQuZGl2LmF0dHJzKHtcbiAgY2xhc3NOYW1lOiAnYnV0dG9uJ1xufSlgXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGJhY2tncm91bmQtY29sb3I6ICR7cHJvcHMgPT5cbiAgICBwcm9wcy5uZWdhdGl2ZVxuICAgICAgPyBwcm9wcy50aGVtZS5uZWdhdGl2ZUJ0bkJnZFxuICAgICAgOiBwcm9wcy5zZWNvbmRhcnlcbiAgICAgID8gcHJvcHMudGhlbWUuc2Vjb25kYXJ5QnRuQmdkXG4gICAgICA6IHByb3BzLmxpbmtcbiAgICAgID8gcHJvcHMudGhlbWUubGlua0J0bkJnZFxuICAgICAgOiBwcm9wcy50aGVtZS5wcmltYXJ5QnRuQmdkfTtcbiAgYm9yZGVyLXJhZGl1czogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5wcmltYXJ5QnRuUmFkaXVzfTtcbiAgY29sb3I6ICR7cHJvcHMgPT5cbiAgICBwcm9wcy5uZWdhdGl2ZVxuICAgICAgPyBwcm9wcy50aGVtZS5uZWdhdGl2ZUJ0bkNvbG9yXG4gICAgICA6IHByb3BzLnNlY29uZGFyeVxuICAgICAgPyBwcm9wcy50aGVtZS5zZWNvbmRhcnlCdG5Db2xvclxuICAgICAgOiBwcm9wcy5saW5rXG4gICAgICA/IHByb3BzLnRoZW1lLmxpbmtCdG5Db2xvclxuICAgICAgOiBwcm9wcy50aGVtZS5wcmltYXJ5QnRuQ29sb3J9O1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICBmb250LXNpemU6ICR7cHJvcHMgPT4gKHByb3BzLmxhcmdlID8gJzE0cHgnIDogcHJvcHMuc21hbGwgPyAnMTBweCcgOiAnMTFweCcpfTtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGxldHRlci1zcGFjaW5nOiAwLjNweDtcbiAgbGluZS1oZWlnaHQ6IDE0cHg7XG4gIG91dGxpbmU6IDA7XG4gIHBhZGRpbmc6ICR7cHJvcHMgPT5cbiAgICBwcm9wcy5sYXJnZSA/ICcxNHB4IDMycHgnIDogcHJvcHMuc21hbGwgPyAnNnB4IDlweCcgOiAnOXB4IDEycHgnfTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICB0cmFuc2l0aW9uOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnRyYW5zaXRpb259O1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICB3aWR0aDogJHtwcm9wcyA9PiBwcm9wcy53aWR0aCB8fCAnYXV0byd9O1xuICBvcGFjaXR5OiAke3Byb3BzID0+IChwcm9wcy5kaXNhYmxlZCA/IDAuNCA6IDEpfTtcbiAgcG9pbnRlci1ldmVudHM6ICR7cHJvcHMgPT4gKHByb3BzLmRpc2FibGVkID8gJ25vbmUnIDogJ2FsbCcpfTtcbiAgbWFyZ2luOiAke3Byb3BzID0+IChwcm9wcy5tYXJnaW4gPyAnMHB4IDBweCAwcHggMTZweCcgOiAnMHB4Jyl9O1xuXG4gIDpob3ZlcixcbiAgOmZvY3VzLFxuICA6YWN0aXZlLFxuICAmLmFjdGl2ZSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHtwcm9wcyA9PlxuICAgICAgcHJvcHMubmVnYXRpdmVcbiAgICAgICAgPyBwcm9wcy50aGVtZS5uZWdhdGl2ZUJ0bkJnZEhvdmVyXG4gICAgICAgIDogcHJvcHMuc2Vjb25kYXJ5XG4gICAgICAgID8gcHJvcHMudGhlbWUuc2Vjb25kYXJ5QnRuQmdkSG92ZXJcbiAgICAgICAgOiBwcm9wcy5saW5rXG4gICAgICAgID8gcHJvcHMudGhlbWUubGlua0J0bkFjdEJnZEhvdmVyXG4gICAgICAgIDogcHJvcHMudGhlbWUucHJpbWFyeUJ0bkJnZEhvdmVyfTtcbiAgICBjb2xvcjogJHtwcm9wcyA9PlxuICAgICAgcHJvcHMubmVnYXRpdmVcbiAgICAgICAgPyBwcm9wcy50aGVtZS5uZWdhdGl2ZUJ0bkFjdENvbG9yXG4gICAgICAgIDogcHJvcHMuc2Vjb25kYXJ5XG4gICAgICAgID8gcHJvcHMudGhlbWUuc2Vjb25kYXJ5QnRuQWN0Q29sb3JcbiAgICAgICAgOiBwcm9wcy5saW5rXG4gICAgICAgID8gcHJvcHMudGhlbWUubGlua0J0bkFjdENvbG9yXG4gICAgICAgIDogcHJvcHMudGhlbWUucHJpbWFyeUJ0bkFjdENvbG9yfTtcbiAgfVxuXG4gIHN2ZyB7XG4gICAgbWFyZ2luLXJpZ2h0OiA4cHg7XG4gIH1cbmA7XG5cbmV4cG9ydCBjb25zdCBJbnB1dCA9IHN0eWxlZC5pbnB1dGBcbiAgJHtwcm9wcyA9PlxuICAgIHByb3BzLnNlY29uZGFyeSA/IHByb3BzLnRoZW1lLnNlY29uZGFyeUlucHV0IDogcHJvcHMudGhlbWUuaW5wdXR9O1xuYDtcblxuZXhwb3J0IGNvbnN0IElucHV0TGlnaHQgPSBzdHlsZWQuaW5wdXRgXG4gICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuaW5wdXRMVH1cbmA7XG5cbmV4cG9ydCBjb25zdCBJbmxpbmVJbnB1dCA9IHN0eWxlZChJbnB1dClgXG4gICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuaW5saW5lSW5wdXR9O1xuYDtcblxuZXhwb3J0IGNvbnN0IFN0eWxlZFBhbmVsSGVhZGVyID0gc3R5bGVkLmRpdmBcbiAgYmFja2dyb3VuZC1jb2xvcjogJHtwcm9wcyA9PlxuICAgIHByb3BzLmFjdGl2ZVxuICAgICAgPyBwcm9wcy50aGVtZS5wYW5lbEJhY2tncm91bmRIb3ZlclxuICAgICAgOiBwcm9wcy50aGVtZS5wYW5lbEJhY2tncm91bmR9O1xuICBib3JkZXItbGVmdDogM3B4IHNvbGlkXG4gICAgcmdiKFxuICAgICAgJHtwcm9wcyA9PlxuICAgICAgICBwcm9wcy5sYWJlbFJDR0NvbG9yVmFsdWVzXG4gICAgICAgICAgPyBwcm9wcy5sYWJlbFJDR0NvbG9yVmFsdWVzLmpvaW4oJywnKVxuICAgICAgICAgIDogJ3RyYW5zcGFyZW50J31cbiAgICApO1xuICBwYWRkaW5nOiAwIDEwcHggMCAwO1xuICBoZWlnaHQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUucGFuZWxIZWFkZXJIZWlnaHR9cHg7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgdHJhbnNpdGlvbjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS50cmFuc2l0aW9ufTtcbmA7XG5cbmV4cG9ydCBjb25zdCBTdHlsZWRQYW5lbERyb3Bkb3duID0gc3R5bGVkLmRpdmBcbiAgJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5wYW5lbERyb3Bkb3duU2Nyb2xsQmFyfVxuICBiYWNrZ3JvdW5kLWNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnBhbmVsQmFja2dyb3VuZH07XG4gIG92ZXJmbG93LXk6IGF1dG87XG4gIGJveC1zaGFkb3c6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUucGFuZWxCb3hTaGFkb3d9O1xuICBib3JkZXItcmFkaXVzOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnBhbmVsQm9yZGVyUmFkaXVzfTtcbiAgbWFyZ2luLXRvcDogMnB4O1xuICBtYXgtaGVpZ2h0OiA1MDBweDtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB6LWluZGV4OiA5OTk7XG5gO1xuXG5leHBvcnQgY29uc3QgQnV0dG9uR3JvdXAgPSBzdHlsZWQuZGl2YFxuICBkaXNwbGF5OiBmbGV4O1xuICAuYnV0dG9uIHtcbiAgICBib3JkZXItcmFkaXVzOiAwO1xuICAgIG1hcmdpbi1sZWZ0OiAycHg7XG4gIH1cbiAgLmJ1dHRvbjpmaXJzdC1jaGlsZCB7XG4gICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5wcmltYXJ5QnRuUmFkaXVzfTtcbiAgICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLnByaW1hcnlCdG5SYWRpdXN9O1xuICAgIG1hcmdpbi1sZWZ0OiAwO1xuICB9XG4gIC5idXR0b246bGFzdC1jaGlsZCB7XG4gICAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUucHJpbWFyeUJ0blJhZGl1c307XG4gICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUucHJpbWFyeUJ0blJhZGl1c307XG4gIH1cbmA7XG5c