@eui/showcase 15.0.0-rc.10 → 15.0.0-rc.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/components/doc-page/doc-page.component.mjs +8 -3
- package/esm2020/lib/components/doc-page-pattern/doc-page-pattern.component.mjs +5 -5
- package/esm2020/lib/components/doc-sample/doc-sample.component.mjs +6 -3
- package/esm2020/lib/components/playground/playground.component.mjs +1 -1
- package/fesm2015/eui-showcase.mjs +16 -8
- package/fesm2015/eui-showcase.mjs.map +1 -1
- package/fesm2020/eui-showcase.mjs +16 -8
- package/fesm2020/eui-showcase.mjs.map +1 -1
- package/lib/components/doc-page/doc-page.component.d.ts.map +1 -1
- package/lib/components/doc-page-pattern/doc-page-pattern.component.d.ts +2 -2
- package/lib/components/doc-page-pattern/doc-page-pattern.component.d.ts.map +1 -1
- package/lib/components/doc-sample/doc-sample.component.d.ts +2 -1
- package/lib/components/doc-sample/doc-sample.component.d.ts.map +1 -1
- package/lib/components/playground/playground.component.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -60,6 +60,11 @@ export class DocPageComponent {
|
|
|
60
60
|
this.stateTypeClass = 'danger';
|
|
61
61
|
this.isLegacy = true;
|
|
62
62
|
break;
|
|
63
|
+
case 'info':
|
|
64
|
+
this.stateLabel = 'NOT READY';
|
|
65
|
+
this.stateTypeClass = 'accent';
|
|
66
|
+
this.isNotReady = true;
|
|
67
|
+
break;
|
|
63
68
|
}
|
|
64
69
|
// construct cmp module import string
|
|
65
70
|
// eslint-disable-next-line
|
|
@@ -217,10 +222,10 @@ export class DocPageComponent {
|
|
|
217
222
|
}
|
|
218
223
|
}
|
|
219
224
|
/** @nocollapse */ DocPageComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0", ngImport: i0, type: DocPageComponent, deps: [{ token: i1.Router }, { token: i1.ActivatedRoute }, { token: i2.UxAppShellService }, { token: i3.DomSanitizer }, { token: i4.Location }], target: i0.ɵɵFactoryTarget.Component });
|
|
220
|
-
/** @nocollapse */ DocPageComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.0", type: DocPageComponent, selector: "eui-showcase-doc-page", inputs: { id: "id", label: "label", subLabel: "subLabel", isNotReady: "isNotReady", isDeprecated: "isDeprecated", isLegacy: "isLegacy", codeFolder: "codeFolder", showcase: "showcase", isNavigationVisible: "isNavigationVisible" }, queries: [{ propertyName: "samples", predicate: DocSampleComponent, descendants: true }, { propertyName: "sections", predicate: DocSectionComponent, descendants: true }, { propertyName: "pageOverviewContent", predicate: i0.forwardRef(function () { return DocPageOverviewContentDirective; }) }, { propertyName: "pageSamplesContent", predicate: i0.forwardRef(function () { return DocPageSamplesContentDirective; }) }, { propertyName: "pageSectionsContent", predicate: i0.forwardRef(function () { return DocPageSectionsContentDirective; }) }, { propertyName: "pageInteractiveContent", predicate: i0.forwardRef(function () { return DocPageInteractiveContentDirective; }) }, { propertyName: "pageAccessibilityContent", predicate: i0.forwardRef(function () { return DocPageAccessibilityContentDirective; }) }, { propertyName: "pageApiContent", predicate: i0.forwardRef(function () { return DocPageApiContentDirective; }) }, { propertyName: "pageThemingContent", predicate: i0.forwardRef(function () { return DocPageThemingContentDirective; }) }], viewQueries: [{ propertyName: "tabsContent", first: true, predicate: ["tabsContent"], descendants: true }], ngImport: i0, template: "<div class=\"doc-page-navigation-wrapper\" [class.eui-u-hidden]=\"isLoading\">\n <div class=\"doc-page-main-column\">\n <eui-page>\n <eui-page-header label=\"{{label}}\" subLabel=\"{{subLabel}}\">\n <eui-page-header-action-items>\n <eui-showcase-doc-page-code *ngIf=\"codeFolder\" codeFolder=\"{{codeFolder}}\" showcase=\"{{showcase}}\"></eui-showcase-doc-page-code>\n <eui-chip *ngIf=\"stateLabel\" [euiSuccess]=\"stateLabel === 'ACTIVE'\" [euiWarning]=\"stateLabel === 'DEPRECATED'\" [euiDanger]=\"isLegacy\">\n <span euiLabel><strong>{{stateLabel}}</strong></span>\n </eui-chip>\n </eui-page-header-action-items>\n </eui-page-header>\n\n <eui-page-content>\n <eui-alert *ngIf=\"stateLabel === 'LEGACY' || isLegacy\" euiDanger>\n <p>\n This component will be <strong class=\"eui-u-color-danger\">removed</strong> in the next version of eUI !!\n </p>\n <div *ngIf=\"cmp\">\n <div *ngIf=\"cmp.cmpReplacement !== 'NONE'\">\n It has been replaced by : <strong class=\"eui-u-color-success-darkest\">{{cmp.cmpReplacement}}</strong>\n <!-- <div *ngIf=\"cmp.cmpReplacementUrl\">\n <br><br>\n You can find more information on the new component here : <a [routerLink]=\"cmp.cmpReplacementUrl\">{{cmp.cmpReplacementUrl}}</a>\n </div> -->\n </div>\n <div *ngIf=\"cmp.cmpReplacement === 'NONE'\">\n This component will be <strong class=\"eui-u-color-danger\">discontinued in future version of eUI</strong>\n </div>\n <div *ngIf=\"cmp.cmpReplacementNote\">\n <strong class=\"eui-u-color-warning\">{{cmp.cmpReplacementNote}}</strong>\n </div>\n </div>\n </eui-alert>\n\n <eui-alert *ngIf=\"stateLabel === 'DEPRECATED' || isDeprecated\" euiWarning>\n <p>\n This component has been <strong class=\"eui-u-color-danger\">deprecated</strong>\n </p>\n <div *ngIf=\"cmp\">\n This component has no replacement in current version AND won't have replacement in next version of eUI, it is kept for <strong class=\"eui-u-color-warning\">historical usage only</strong>\n </div>\n </eui-alert>\n\n <div *ngIf=\"(stateLabel || isNotReady || isDeprecated) && stateLabel !== 'ACTIVE'\" class=\"mb-5\"></div>\n\n\n <eui-tabs #tabsContent *ngIf=\"pageSectionsContent.length === 0\" (tabSelected)=\"onTabSelected($event)\">\n <eui-tab>\n <euiTabLabel>\n API\n </euiTabLabel>\n <euiTabContent>\n <ng-container *ngIf=\"apiUrlSafe\">\n <div class=\"flex-container\">\n <a href=\"{{apiUrl}}\" target=\"_blank\" class=\"ms-auto pb-2 eui-u-text-link-external\">Open API page</a>\n </div>\n <div class=\"doc-page-api-iframe-wrapper\">\n <iframe id=\"iframe_api\" [width]=\"'100%'\" height=\"700px\" frameBorder=\"0\" [src]=\"apiUrlSafe\"></iframe>\n </div>\n </ng-container>\n </euiTabContent>\n </eui-tab>\n\n <eui-tab>\n <euiTabLabel>\n A11Y\n </euiTabLabel>\n <euiTabContent>\n <h3 id=\"accessibility\" class=\"eui-u-font-bold eui-u-color-info mt-3 mb-2\">Accessibility</h3>\n <ng-content select=\"docPageAccessibility\"></ng-content>\n </euiTabContent>\n </eui-tab>\n\n <eui-tab>\n <euiTabLabel>\n OPTIONS & SAMPLES\n </euiTabLabel>\n <euiTabContent>\n <ng-container *ngIf=\"cmp && cmp.metadata\">\n <h3 class=\"eui-u-font-bold eui-u-color-info mt-3 mb-3\">Module import</h3>\n <pre><code class=\"language-javascript eui-u-bg-color-grey-5\" euiCode>{{ cmpModuleImport }}</code></pre>\n <br>\n </ng-container>\n\n <h3 id=\"overview\" class=\"eui-u-font-bold eui-u-color-info mt-3 mb-3\">Overview & setup</h3>\n <div *ngIf=\"pageOverviewContent.length > 0; else noOverview\">\n <ng-content select=\"docPageOverview\"></ng-content>\n </div>\n <ng-template #noOverview>\n Coming soon...\n </ng-template>\n <br>\n\n <h3 id=\"samples\" class=\"eui-u-font-bold eui-u-color-info mt-8 mb-2\">Options & samples</h3>\n <ng-content select=\"docPageSamples\"></ng-content>\n </euiTabContent>\n </eui-tab>\n\n <eui-tab *ngIf=\"pageThemingContent.length > 0\">\n <euiTabLabel>\n THEMING\n </euiTabLabel>\n <euiTabContent>\n <h3 id=\"theming\" class=\"eui-u-font-bold eui-u-color-info mt-3 mb-2\">Theming</h3>\n <ng-content select=\"docPageTheming\"></ng-content>\n </euiTabContent>\n </eui-tab>\n\n <eui-tab *ngIf=\"pageInteractiveContent.length > 0\">\n <euiTabLabel>\n {{pageInteractiveContent.first.title}}\n </euiTabLabel>\n <euiTabContent>\n <h3 id=\"interactive\" class=\"eui-u-font-bold eui-u-color-info mt-3 mb-2\">\n {{pageInteractiveContent.first.subTitle}}\n </h3>\n <ng-content select=\"docPageInteractive\"></ng-content>\n </euiTabContent>\n </eui-tab>\n </eui-tabs>\n\n <ng-container *ngIf=\"pageSectionsContent.length > 0\">\n <h3 id=\"demo\" *ngIf=\"sections.length === 0\" class=\"eui-u-font-bold eui-u-color-info mt-3 mb-2\">Demo</h3>\n <ng-content select=\"docPageSections\"></ng-content>\n </ng-container>\n </eui-page-content>\n </eui-page>\n </div>\n\n <div *ngIf=\"isNavigationVisible\" class=\"doc-page-navigation-column eui-u-hidden-desktop-down\">\n <div id=\"doc-page-nav\">\n <div class=\"doc-page-navigation-title\">In this page</div>\n <div class=\"doc-page-navigation-content\" tabindex=\"0\">\n <ul class=\"doc-page-navigation\">\n <ng-container *ngIf=\"pageSectionsContent.length === 0\">\n <!-- ALWAYS PRESENT in each page-->\n <!-- <li class=\"doc-page-navigation-item\" [class.doc-page-navigation-item--selected]=\"fragmentId === 'overview'\" (click)=\"onNavClick('overview', 0)\"><span>OVERVIEW</span></li> -->\n <li class=\"doc-page-navigation-item\" [class.doc-page-navigation-item--selected]=\"fragmentId === 'api'\" (click)=\"onNavClick('api', 0)\"><span>API</span></li>\n <li class=\"doc-page-navigation-item\" [class.doc-page-navigation-item--selected]=\"fragmentId === 'a11y'\" (click)=\"onNavClick('a11y', 1)\"><span>A11Y</span></li>\n <li class=\"doc-page-navigation-item\" [class.doc-page-navigation-item--selected]=\"fragmentId === 'samples'\" (click)=\"onNavClick('samples', 2)\"><span>OPTIONS & SAMPLES</span></li>\n <li class=\"doc-page-navigation-item doc-page-navigation-sub\">\n <ul *ngFor=\"let sample of samples\" class=\"doc-page-navigation-list\">\n <li class=\"doc-page-navigation-item\" [class.doc-page-navigation-item--selected]=\"fragmentId === sample.id\" (click)=\"onNavClick(sample.id, 2)\"><span>{{sample.label}}</span></li>\n </ul>\n </li>\n\n <!-- OPTIONAL TABS-->\n <ng-container *ngIf=\"pageThemingContent.length > 0\">\n <li *ngIf=\"pageThemingContent.length > 0\" class=\"doc-page-navigation-item\" [class.doc-page-navigation-item--selected]=\"fragmentId === 'theming'\" (click)=\"onNavClick('theming', 3)\"><span>THEMING</span></li>\n <li *ngIf=\"pageInteractiveContent.length > 0\" class=\"doc-page-navigation-item\" [class.doc-page-navigation-item--selected]=\"fragmentId === 'advanced'\" (click)=\"onNavClick('advanced', 4)\">\n <span>{{pageInteractiveContent.first.title}}</span>\n </li>\n </ng-container>\n <ng-container *ngIf=\"pageThemingContent.length === 0\">\n <li *ngIf=\"pageInteractiveContent.length > 0\" class=\"doc-page-navigation-item\" [class.doc-page-navigation-item--selected]=\"fragmentId === 'advanced'\" (click)=\"onNavClick('advanced', 3)\">\n <span>{{pageInteractiveContent.first.title}}</span>\n </li>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"pageSectionsContent.length > 0\">\n <li class=\"doc-page-navigation-item\" [class.doc-page-navigation-item--selected]=\"fragmentId === 'sections'\" (click)=\"onNavClick('sections', null)\"><span>Sections</span></li>\n <li *ngIf=\"sections.length === 0\" class=\"doc-page-navigation-item\" [class.doc-page-navigation-item--selected]=\"fragmentId === 'demo'\" (click)=\"onNavClick('demo', null)\"><span>Demo</span></li>\n <li *ngIf=\"sections.length > 0\" class=\"doc-page-navigation-item doc-page-navigation-sub\">\n <ul *ngFor=\"let section of sections\">\n <li class=\"doc-page-navigation-item\" [class.doc-page-navigation-item--selected]=\"fragmentId === section.id\" (click)=\"onNavClick(section.id, null)\"><span>{{section.label}}</span></li>\n </ul>\n </li>\n </ng-container>\n </ul>\n </div>\n </div>\n </div>\n</div>\n", styles: [".doc-page-navigation-wrapper{display:flex;flex-wrap:wrap;width:100%}.doc-page-navigation-wrapper .doc-page-main-column{padding-right:var(--eui-base-spacing-m);width:calc(100% - 400px)}.doc-page-navigation-wrapper .doc-page-navigation-column{background:var(--eui-base-color-white);box-shadow:0 8px 10px #b7c0ce33;position:fixed;right:0;transition:all ease-in-out .25s;width:400px;z-index:auto;box-shadow:var(--eui-base-shadow-1)}.doc-page-navigation-wrapper .doc-page-navigation-column:hover{width:400px}.doc-page-navigation-title{font-weight:700;padding:var(--eui-base-spacing-s)}.doc-page-navigation-content{display:block;height:100vh;max-height:calc(100vh - 6rem);overflow-y:auto;width:100%}.doc-page-navigation-content::-webkit-scrollbar{display:inherit;height:6px;width:6px;background-color:var(--eui-base-color-grey-10)}.doc-page-navigation-content::-webkit-scrollbar-thumb{background-color:var(--eui-base-color-grey-20);border-radius:5rem}.doc-page-navigation-content::-webkit-scrollbar-thumb:hover{background-color:var(--eui-base-color-grey-25)}.doc-page-navigation-content::-webkit-scrollbar-track{background-color:var(--eui-base-color-grey-10);border-radius:0}.doc-page-navigation{background-color:transparent;border-left:2px solid transparent;padding-top:var(--eui-base-spacing-xs);margin:0;padding:0}.doc-page-navigation .doc-page-navigation-list{margin:0;padding:0}.doc-page-navigation .doc-page-navigation-item{color:var(--eui-base-color-primary-100);cursor:pointer;line-height:1.5;overflow:hidden;padding:var(--eui-base-spacing-2xs);text-overflow:ellipsis;transition:background-color ease-in .2s;white-space:nowrap;list-style:none}.doc-page-navigation .doc-page-navigation-item span{font-weight:700;padding-left:var(--eui-base-spacing-xs)}.doc-page-navigation .doc-page-navigation-item:not(.doc-page-navigation-sub):hover{background-color:var(--eui-base-color-grey-5);border-left:2px solid var(--eui-base-color-info-100)}.doc-page-navigation .doc-page-navigation-item.doc-page-navigation-sub .doc-page-navigation-item span{font-weight:400;padding-left:var(--eui-base-spacing-m)}.doc-page-navigation .doc-page-navigation-item.doc-page-navigation-sub .doc-page-navigation-item:hover{background-color:var(--eui-base-color-grey-5);border-left:2px solid var(--eui-base-color-grey-15)}.doc-page-navigation .doc-page-navigation-item.doc-page-navigation-item--selected{background-color:var(--eui-base-color-grey-5);border-left:2px solid var(--eui-base-color-info-100)}.doc-page-api-iframe-wrapper{display:flex;justify-content:space-around;margin:0}@media screen and (max-width: 767px){.doc-page-navigation-wrapper .doc-page-main-column{padding-right:0;width:100%}.doc-page-navigation-wrapper .doc-page-navigation-column{display:none;width:0}}@media screen and (min-width: 768px) and (max-width: 995px){.doc-page-navigation-wrapper .doc-page-main-column{width:80%}.doc-page-navigation-wrapper .doc-page-navigation-column{width:20%}}@media screen and (max-width: 1550px){.doc-page-api-iframe-wrapper{display:none}}\n"], dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.EuiTabsComponent, selector: "eui-tabs", inputs: ["styleClass", "tabs", "activeTabIndex", "e2eAttr", "pathMatch", "isMainNavigation", "isSubTabs", "isVerticalTabs"], outputs: ["tabClosed", "tabSelected", "tabClose", "tabSelect"] }, { kind: "component", type: i5.EuiTabComponent, selector: "eui-tab", inputs: ["url", "e2eAttr", "tooltip", "isClosable", "isVisible", "isActive", "isDisabled", "hasBackgroundFilled", "isHandleCloseOnClose"] }, { kind: "component", type: i5.EuiTabLabelComponent, selector: "eui-tab-label, euiTabLabel" }, { kind: "component", type: i5.EuiTabContentComponent, selector: "eui-tab-content, euiTabContent", inputs: ["hasNoContentPadding"] }, { kind: "component", type: i6.EuiPageComponent, selector: "eui-page" }, { kind: "component", type: i6.EuiPageContentComponent, selector: "eui-page-content" }, { kind: "component", type: i6.EuiPageHeaderComponent, selector: "eui-page-header", inputs: ["label", "subLabel", "isCollapsible", "isCollapsed", "collapsedLabel", "expandedLabel"], outputs: ["collapse"] }, { kind: "directive", type: i6.EuiPageHeaderActionItemsContentDirective, selector: "eui-page-header-action-items" }, { kind: "component", type: i7.EuiChipComponent, selector: "eui-chip, span[euiChip], li[euiChip]", inputs: ["euiInternalId", "tooltipMessage", "id", "data", "isChipRemovable", "isSquared"], outputs: ["remove"] }, { kind: "component", type: i8.EuiAlertComponent, selector: "div[euiAlert], eui-alert", inputs: ["euiAlertMuted", "isCloseable"], outputs: ["close"] }, { kind: "directive", type: i9.EuiCodeHighlighterDirective, selector: "[euiCode]" }, { kind: "component", type: i10.DocPageCodeComponent, selector: "eui-showcase-doc-page-code", inputs: ["codeFolder", "showcase"] }], encapsulation: i0.ViewEncapsulation.None });
|
|
225
|
+
/** @nocollapse */ DocPageComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.0", type: DocPageComponent, selector: "eui-showcase-doc-page", inputs: { id: "id", label: "label", subLabel: "subLabel", isNotReady: "isNotReady", isDeprecated: "isDeprecated", isLegacy: "isLegacy", codeFolder: "codeFolder", showcase: "showcase", isNavigationVisible: "isNavigationVisible" }, queries: [{ propertyName: "samples", predicate: DocSampleComponent, descendants: true }, { propertyName: "sections", predicate: DocSectionComponent, descendants: true }, { propertyName: "pageOverviewContent", predicate: i0.forwardRef(function () { return DocPageOverviewContentDirective; }) }, { propertyName: "pageSamplesContent", predicate: i0.forwardRef(function () { return DocPageSamplesContentDirective; }) }, { propertyName: "pageSectionsContent", predicate: i0.forwardRef(function () { return DocPageSectionsContentDirective; }) }, { propertyName: "pageInteractiveContent", predicate: i0.forwardRef(function () { return DocPageInteractiveContentDirective; }) }, { propertyName: "pageAccessibilityContent", predicate: i0.forwardRef(function () { return DocPageAccessibilityContentDirective; }) }, { propertyName: "pageApiContent", predicate: i0.forwardRef(function () { return DocPageApiContentDirective; }) }, { propertyName: "pageThemingContent", predicate: i0.forwardRef(function () { return DocPageThemingContentDirective; }) }], viewQueries: [{ propertyName: "tabsContent", first: true, predicate: ["tabsContent"], descendants: true }], ngImport: i0, template: "<div class=\"doc-page-navigation-wrapper\" [class.eui-u-hidden]=\"isLoading\">\n <div class=\"doc-page-main-column\">\n <eui-page>\n <eui-page-header label=\"{{label}}\" subLabel=\"{{subLabel}}\">\n <eui-page-header-action-items>\n <eui-showcase-doc-page-code *ngIf=\"codeFolder\" codeFolder=\"{{codeFolder}}\" showcase=\"{{showcase}}\"></eui-showcase-doc-page-code>\n <eui-chip *ngIf=\"stateLabel\" [euiSuccess]=\"stateLabel === 'ACTIVE'\" [euiWarning]=\"stateLabel === 'DEPRECATED'\" [euiDanger]=\"isLegacy\">\n <span euiLabel><strong>{{stateLabel}}</strong></span>\n </eui-chip>\n </eui-page-header-action-items>\n </eui-page-header>\n\n <eui-page-content>\n <eui-alert *ngIf=\"stateLabel === 'LEGACY' || isLegacy\" euiDanger>\n <p>\n This component will be <strong class=\"eui-u-color-danger\">removed</strong> in the next version of eUI !!\n </p>\n <div *ngIf=\"cmp\">\n <div *ngIf=\"cmp.cmpReplacement !== 'NONE'\">\n It has been replaced by : <strong class=\"eui-u-color-success-darkest\">{{cmp.cmpReplacement}}</strong>\n <!-- <div *ngIf=\"cmp.cmpReplacementUrl\">\n <br><br>\n You can find more information on the new component here : <a [routerLink]=\"cmp.cmpReplacementUrl\">{{cmp.cmpReplacementUrl}}</a>\n </div> -->\n </div>\n <div *ngIf=\"cmp.cmpReplacement === 'NONE'\">\n This component will be <strong class=\"eui-u-color-danger\">discontinued in future version of eUI</strong>\n </div>\n <div *ngIf=\"cmp.cmpReplacementNote\">\n <strong class=\"eui-u-color-warning\">{{cmp.cmpReplacementNote}}</strong>\n </div>\n </div>\n </eui-alert>\n\n <eui-alert *ngIf=\"stateLabel === 'DEPRECATED' || isDeprecated\" euiWarning>\n <p>\n This component has been <strong class=\"eui-u-color-danger\">deprecated</strong>\n </p>\n <div *ngIf=\"cmp\">\n This component has no replacement in current version AND won't have replacement in next version of eUI, it is kept for <strong class=\"eui-u-color-warning\">historical usage only</strong>\n </div>\n </eui-alert>\n\n <eui-alert *ngIf=\"stateLabel === 'NOT_READY' || isNotReady\" euiInfo>\n <p>\n This component is <strong class=\"eui-u-color-info\">NOT READY</strong>\n </p>\n <div *ngIf=\"cmp\">\n This component is under development / some features might be missing, it'll be available in a future release once validated.\n </div>\n </eui-alert>\n\n <div *ngIf=\"(stateLabel || isNotReady || isDeprecated) && stateLabel !== 'ACTIVE'\" class=\"mb-5\"></div>\n\n\n <eui-tabs #tabsContent *ngIf=\"pageSectionsContent.length === 0\" (tabSelected)=\"onTabSelected($event)\">\n <eui-tab>\n <euiTabLabel>\n API\n </euiTabLabel>\n <euiTabContent>\n <ng-container *ngIf=\"apiUrlSafe\">\n <div class=\"flex-container\">\n <a href=\"{{apiUrl}}\" target=\"_blank\" class=\"ms-auto pb-2 eui-u-text-link-external\">Open API page</a>\n </div>\n <div class=\"doc-page-api-iframe-wrapper\">\n <iframe id=\"iframe_api\" [width]=\"'100%'\" height=\"700px\" frameBorder=\"0\" [src]=\"apiUrlSafe\"></iframe>\n </div>\n </ng-container>\n </euiTabContent>\n </eui-tab>\n\n <eui-tab>\n <euiTabLabel>\n A11Y\n </euiTabLabel>\n <euiTabContent>\n <h3 id=\"accessibility\" class=\"eui-u-font-bold eui-u-color-info mt-3 mb-2\">Accessibility</h3>\n <ng-content select=\"docPageAccessibility\"></ng-content>\n </euiTabContent>\n </eui-tab>\n\n <eui-tab>\n <euiTabLabel>\n OPTIONS & SAMPLES\n </euiTabLabel>\n <euiTabContent>\n <ng-container *ngIf=\"cmp && cmp.metadata\">\n <h3 class=\"eui-u-font-bold eui-u-color-info mt-3 mb-3\">Module import</h3>\n <pre><code class=\"language-javascript eui-u-bg-color-grey-5\" euiCode>{{ cmpModuleImport }}</code></pre>\n <br>\n </ng-container>\n\n <h3 id=\"overview\" class=\"eui-u-font-bold eui-u-color-info mt-3 mb-3\">Overview & setup</h3>\n <div *ngIf=\"pageOverviewContent.length > 0; else noOverview\">\n <ng-content select=\"docPageOverview\"></ng-content>\n </div>\n <ng-template #noOverview>\n Coming soon...\n </ng-template>\n <br>\n\n <h3 id=\"samples\" class=\"eui-u-font-bold eui-u-color-info mt-8 mb-2\">Options & samples</h3>\n <ng-content select=\"docPageSamples\"></ng-content>\n </euiTabContent>\n </eui-tab>\n\n <eui-tab *ngIf=\"pageThemingContent.length > 0\">\n <euiTabLabel>\n THEMING\n </euiTabLabel>\n <euiTabContent>\n <h3 id=\"theming\" class=\"eui-u-font-bold eui-u-color-info mt-3 mb-2\">Theming</h3>\n <ng-content select=\"docPageTheming\"></ng-content>\n </euiTabContent>\n </eui-tab>\n\n <eui-tab *ngIf=\"pageInteractiveContent.length > 0\">\n <euiTabLabel>\n {{pageInteractiveContent.first.title}}\n </euiTabLabel>\n <euiTabContent>\n <h3 id=\"interactive\" class=\"eui-u-font-bold eui-u-color-info mt-3 mb-2\">\n {{pageInteractiveContent.first.subTitle}}\n </h3>\n <ng-content select=\"docPageInteractive\"></ng-content>\n </euiTabContent>\n </eui-tab>\n </eui-tabs>\n\n <ng-container *ngIf=\"pageSectionsContent.length > 0\">\n <h3 id=\"demo\" *ngIf=\"sections.length === 0\" class=\"eui-u-font-bold eui-u-color-info mt-3 mb-2\">Demo</h3>\n <ng-content select=\"docPageSections\"></ng-content>\n </ng-container>\n </eui-page-content>\n </eui-page>\n </div>\n\n <div *ngIf=\"isNavigationVisible\" class=\"doc-page-navigation-column eui-u-hidden-desktop-down\">\n <div id=\"doc-page-nav\">\n <div class=\"doc-page-navigation-title\">In this page</div>\n <div class=\"doc-page-navigation-content\" tabindex=\"0\">\n <ul class=\"doc-page-navigation\">\n <ng-container *ngIf=\"pageSectionsContent.length === 0\">\n <!-- ALWAYS PRESENT in each page-->\n <!-- <li class=\"doc-page-navigation-item\" [class.doc-page-navigation-item--selected]=\"fragmentId === 'overview'\" (click)=\"onNavClick('overview', 0)\"><span>OVERVIEW</span></li> -->\n <li class=\"doc-page-navigation-item\" [class.doc-page-navigation-item--selected]=\"fragmentId === 'api'\" (click)=\"onNavClick('api', 0)\"><span>API</span></li>\n <li class=\"doc-page-navigation-item\" [class.doc-page-navigation-item--selected]=\"fragmentId === 'a11y'\" (click)=\"onNavClick('a11y', 1)\"><span>A11Y</span></li>\n <li class=\"doc-page-navigation-item\" [class.doc-page-navigation-item--selected]=\"fragmentId === 'samples'\" (click)=\"onNavClick('samples', 2)\"><span>OPTIONS & SAMPLES</span></li>\n <li class=\"doc-page-navigation-item doc-page-navigation-sub\">\n <ul *ngFor=\"let sample of samples\" class=\"doc-page-navigation-list\">\n <li class=\"doc-page-navigation-item\" [class.doc-page-navigation-item--selected]=\"fragmentId === sample.id\" (click)=\"onNavClick(sample.id, 2)\"><span>{{sample.label}}</span></li>\n </ul>\n </li>\n\n <!-- OPTIONAL TABS-->\n <ng-container *ngIf=\"pageThemingContent.length > 0\">\n <li *ngIf=\"pageThemingContent.length > 0\" class=\"doc-page-navigation-item\" [class.doc-page-navigation-item--selected]=\"fragmentId === 'theming'\" (click)=\"onNavClick('theming', 3)\"><span>THEMING</span></li>\n <li *ngIf=\"pageInteractiveContent.length > 0\" class=\"doc-page-navigation-item\" [class.doc-page-navigation-item--selected]=\"fragmentId === 'advanced'\" (click)=\"onNavClick('advanced', 4)\">\n <span>{{pageInteractiveContent.first.title}}</span>\n </li>\n </ng-container>\n <ng-container *ngIf=\"pageThemingContent.length === 0\">\n <li *ngIf=\"pageInteractiveContent.length > 0\" class=\"doc-page-navigation-item\" [class.doc-page-navigation-item--selected]=\"fragmentId === 'advanced'\" (click)=\"onNavClick('advanced', 3)\">\n <span>{{pageInteractiveContent.first.title}}</span>\n </li>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"pageSectionsContent.length > 0\">\n <li class=\"doc-page-navigation-item\" [class.doc-page-navigation-item--selected]=\"fragmentId === 'sections'\" (click)=\"onNavClick('sections', null)\"><span>Sections</span></li>\n <li *ngIf=\"sections.length === 0\" class=\"doc-page-navigation-item\" [class.doc-page-navigation-item--selected]=\"fragmentId === 'demo'\" (click)=\"onNavClick('demo', null)\"><span>Demo</span></li>\n <li *ngIf=\"sections.length > 0\" class=\"doc-page-navigation-item doc-page-navigation-sub\">\n <ul *ngFor=\"let section of sections\">\n <li class=\"doc-page-navigation-item\" [class.doc-page-navigation-item--selected]=\"fragmentId === section.id\" (click)=\"onNavClick(section.id, null)\"><span>{{section.label}}</span></li>\n </ul>\n </li>\n </ng-container>\n </ul>\n </div>\n </div>\n </div>\n</div>\n", styles: [".doc-page-navigation-wrapper{display:flex;flex-wrap:wrap;width:100%}.doc-page-navigation-wrapper .doc-page-main-column{padding-right:var(--eui-base-spacing-m);width:calc(100% - 400px)}.doc-page-navigation-wrapper .doc-page-navigation-column{background:var(--eui-base-color-white);box-shadow:0 8px 10px #b7c0ce33;position:fixed;right:0;transition:all ease-in-out .25s;width:400px;z-index:auto;box-shadow:var(--eui-base-shadow-1)}.doc-page-navigation-wrapper .doc-page-navigation-column:hover{width:400px}.doc-page-navigation-title{font-weight:700;padding:var(--eui-base-spacing-s)}.doc-page-navigation-content{display:block;height:100vh;max-height:calc(100vh - 6rem);overflow-y:auto;width:100%}.doc-page-navigation-content::-webkit-scrollbar{display:inherit;height:6px;width:6px;background-color:var(--eui-base-color-grey-10)}.doc-page-navigation-content::-webkit-scrollbar-thumb{background-color:var(--eui-base-color-grey-20);border-radius:5rem}.doc-page-navigation-content::-webkit-scrollbar-thumb:hover{background-color:var(--eui-base-color-grey-25)}.doc-page-navigation-content::-webkit-scrollbar-track{background-color:var(--eui-base-color-grey-10);border-radius:0}.doc-page-navigation{background-color:transparent;border-left:2px solid transparent;padding-top:var(--eui-base-spacing-xs);margin:0;padding:0}.doc-page-navigation .doc-page-navigation-list{margin:0;padding:0}.doc-page-navigation .doc-page-navigation-item{color:var(--eui-base-color-primary-100);cursor:pointer;line-height:1.5;overflow:hidden;padding:var(--eui-base-spacing-2xs);text-overflow:ellipsis;transition:background-color ease-in .2s;white-space:nowrap;list-style:none}.doc-page-navigation .doc-page-navigation-item span{font-weight:700;padding-left:var(--eui-base-spacing-xs)}.doc-page-navigation .doc-page-navigation-item:not(.doc-page-navigation-sub):hover{background-color:var(--eui-base-color-grey-5);border-left:2px solid var(--eui-base-color-info-100)}.doc-page-navigation .doc-page-navigation-item.doc-page-navigation-sub .doc-page-navigation-item span{font-weight:400;padding-left:var(--eui-base-spacing-m)}.doc-page-navigation .doc-page-navigation-item.doc-page-navigation-sub .doc-page-navigation-item:hover{background-color:var(--eui-base-color-grey-5);border-left:2px solid var(--eui-base-color-grey-15)}.doc-page-navigation .doc-page-navigation-item.doc-page-navigation-item--selected{background-color:var(--eui-base-color-grey-5);border-left:2px solid var(--eui-base-color-info-100)}.doc-page-api-iframe-wrapper{display:flex;justify-content:space-around;margin:0}@media screen and (max-width: 767px){.doc-page-navigation-wrapper .doc-page-main-column{padding-right:0;width:100%}.doc-page-navigation-wrapper .doc-page-navigation-column{display:none;width:0}}@media screen and (min-width: 768px) and (max-width: 995px){.doc-page-navigation-wrapper .doc-page-main-column{width:80%}.doc-page-navigation-wrapper .doc-page-navigation-column{width:20%}}@media screen and (max-width: 1550px){.doc-page-api-iframe-wrapper{display:none}}\n"], dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.EuiTabsComponent, selector: "eui-tabs", inputs: ["styleClass", "tabs", "activeTabIndex", "e2eAttr", "pathMatch", "isMainNavigation", "isSubTabs", "isVerticalTabs"], outputs: ["tabClosed", "tabSelected", "tabClose", "tabSelect"] }, { kind: "component", type: i5.EuiTabComponent, selector: "eui-tab", inputs: ["url", "e2eAttr", "tooltip", "isClosable", "isVisible", "isActive", "isDisabled", "hasBackgroundFilled", "isHandleCloseOnClose"] }, { kind: "component", type: i5.EuiTabLabelComponent, selector: "eui-tab-label, euiTabLabel" }, { kind: "component", type: i5.EuiTabContentComponent, selector: "eui-tab-content, euiTabContent", inputs: ["hasNoContentPadding"] }, { kind: "component", type: i6.EuiPageComponent, selector: "eui-page" }, { kind: "component", type: i6.EuiPageContentComponent, selector: "eui-page-content" }, { kind: "component", type: i6.EuiPageHeaderComponent, selector: "eui-page-header", inputs: ["label", "subLabel", "isCollapsible", "isCollapsed", "collapsedLabel", "expandedLabel"], outputs: ["collapse"] }, { kind: "directive", type: i6.EuiPageHeaderActionItemsContentDirective, selector: "eui-page-header-action-items" }, { kind: "component", type: i7.EuiChipComponent, selector: "eui-chip, span[euiChip], li[euiChip]", inputs: ["euiInternalId", "tooltipMessage", "id", "data", "isChipRemovable", "isSquared"], outputs: ["remove"] }, { kind: "component", type: i8.EuiAlertComponent, selector: "div[euiAlert], eui-alert", inputs: ["euiAlertMuted", "isCloseable"], outputs: ["close"] }, { kind: "directive", type: i9.EuiCodeHighlighterDirective, selector: "[euiCode]" }, { kind: "component", type: i10.DocPageCodeComponent, selector: "eui-showcase-doc-page-code", inputs: ["codeFolder", "showcase"] }], encapsulation: i0.ViewEncapsulation.None });
|
|
221
226
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0", ngImport: i0, type: DocPageComponent, decorators: [{
|
|
222
227
|
type: Component,
|
|
223
|
-
args: [{ selector: 'eui-showcase-doc-page', encapsulation: ViewEncapsulation.None, template: "<div class=\"doc-page-navigation-wrapper\" [class.eui-u-hidden]=\"isLoading\">\n <div class=\"doc-page-main-column\">\n <eui-page>\n <eui-page-header label=\"{{label}}\" subLabel=\"{{subLabel}}\">\n <eui-page-header-action-items>\n <eui-showcase-doc-page-code *ngIf=\"codeFolder\" codeFolder=\"{{codeFolder}}\" showcase=\"{{showcase}}\"></eui-showcase-doc-page-code>\n <eui-chip *ngIf=\"stateLabel\" [euiSuccess]=\"stateLabel === 'ACTIVE'\" [euiWarning]=\"stateLabel === 'DEPRECATED'\" [euiDanger]=\"isLegacy\">\n <span euiLabel><strong>{{stateLabel}}</strong></span>\n </eui-chip>\n </eui-page-header-action-items>\n </eui-page-header>\n\n <eui-page-content>\n <eui-alert *ngIf=\"stateLabel === 'LEGACY' || isLegacy\" euiDanger>\n <p>\n This component will be <strong class=\"eui-u-color-danger\">removed</strong> in the next version of eUI !!\n </p>\n <div *ngIf=\"cmp\">\n <div *ngIf=\"cmp.cmpReplacement !== 'NONE'\">\n It has been replaced by : <strong class=\"eui-u-color-success-darkest\">{{cmp.cmpReplacement}}</strong>\n <!-- <div *ngIf=\"cmp.cmpReplacementUrl\">\n <br><br>\n You can find more information on the new component here : <a [routerLink]=\"cmp.cmpReplacementUrl\">{{cmp.cmpReplacementUrl}}</a>\n </div> -->\n </div>\n <div *ngIf=\"cmp.cmpReplacement === 'NONE'\">\n This component will be <strong class=\"eui-u-color-danger\">discontinued in future version of eUI</strong>\n </div>\n <div *ngIf=\"cmp.cmpReplacementNote\">\n <strong class=\"eui-u-color-warning\">{{cmp.cmpReplacementNote}}</strong>\n </div>\n </div>\n </eui-alert>\n\n <eui-alert *ngIf=\"stateLabel === 'DEPRECATED' || isDeprecated\" euiWarning>\n <p>\n This component has been <strong class=\"eui-u-color-danger\">deprecated</strong>\n </p>\n <div *ngIf=\"cmp\">\n This component has no replacement in current version AND won't have replacement in next version of eUI, it is kept for <strong class=\"eui-u-color-warning\">historical usage only</strong>\n </div>\n </eui-alert>\n\n <div *ngIf=\"(stateLabel || isNotReady || isDeprecated) && stateLabel !== 'ACTIVE'\" class=\"mb-5\"></div>\n\n\n <eui-tabs #tabsContent *ngIf=\"pageSectionsContent.length === 0\" (tabSelected)=\"onTabSelected($event)\">\n <eui-tab>\n <euiTabLabel>\n API\n </euiTabLabel>\n <euiTabContent>\n <ng-container *ngIf=\"apiUrlSafe\">\n <div class=\"flex-container\">\n <a href=\"{{apiUrl}}\" target=\"_blank\" class=\"ms-auto pb-2 eui-u-text-link-external\">Open API page</a>\n </div>\n <div class=\"doc-page-api-iframe-wrapper\">\n <iframe id=\"iframe_api\" [width]=\"'100%'\" height=\"700px\" frameBorder=\"0\" [src]=\"apiUrlSafe\"></iframe>\n </div>\n </ng-container>\n </euiTabContent>\n </eui-tab>\n\n <eui-tab>\n <euiTabLabel>\n A11Y\n </euiTabLabel>\n <euiTabContent>\n <h3 id=\"accessibility\" class=\"eui-u-font-bold eui-u-color-info mt-3 mb-2\">Accessibility</h3>\n <ng-content select=\"docPageAccessibility\"></ng-content>\n </euiTabContent>\n </eui-tab>\n\n <eui-tab>\n <euiTabLabel>\n OPTIONS & SAMPLES\n </euiTabLabel>\n <euiTabContent>\n <ng-container *ngIf=\"cmp && cmp.metadata\">\n <h3 class=\"eui-u-font-bold eui-u-color-info mt-3 mb-3\">Module import</h3>\n <pre><code class=\"language-javascript eui-u-bg-color-grey-5\" euiCode>{{ cmpModuleImport }}</code></pre>\n <br>\n </ng-container>\n\n <h3 id=\"overview\" class=\"eui-u-font-bold eui-u-color-info mt-3 mb-3\">Overview & setup</h3>\n <div *ngIf=\"pageOverviewContent.length > 0; else noOverview\">\n <ng-content select=\"docPageOverview\"></ng-content>\n </div>\n <ng-template #noOverview>\n Coming soon...\n </ng-template>\n <br>\n\n <h3 id=\"samples\" class=\"eui-u-font-bold eui-u-color-info mt-8 mb-2\">Options & samples</h3>\n <ng-content select=\"docPageSamples\"></ng-content>\n </euiTabContent>\n </eui-tab>\n\n <eui-tab *ngIf=\"pageThemingContent.length > 0\">\n <euiTabLabel>\n THEMING\n </euiTabLabel>\n <euiTabContent>\n <h3 id=\"theming\" class=\"eui-u-font-bold eui-u-color-info mt-3 mb-2\">Theming</h3>\n <ng-content select=\"docPageTheming\"></ng-content>\n </euiTabContent>\n </eui-tab>\n\n <eui-tab *ngIf=\"pageInteractiveContent.length > 0\">\n <euiTabLabel>\n {{pageInteractiveContent.first.title}}\n </euiTabLabel>\n <euiTabContent>\n <h3 id=\"interactive\" class=\"eui-u-font-bold eui-u-color-info mt-3 mb-2\">\n {{pageInteractiveContent.first.subTitle}}\n </h3>\n <ng-content select=\"docPageInteractive\"></ng-content>\n </euiTabContent>\n </eui-tab>\n </eui-tabs>\n\n <ng-container *ngIf=\"pageSectionsContent.length > 0\">\n <h3 id=\"demo\" *ngIf=\"sections.length === 0\" class=\"eui-u-font-bold eui-u-color-info mt-3 mb-2\">Demo</h3>\n <ng-content select=\"docPageSections\"></ng-content>\n </ng-container>\n </eui-page-content>\n </eui-page>\n </div>\n\n <div *ngIf=\"isNavigationVisible\" class=\"doc-page-navigation-column eui-u-hidden-desktop-down\">\n <div id=\"doc-page-nav\">\n <div class=\"doc-page-navigation-title\">In this page</div>\n <div class=\"doc-page-navigation-content\" tabindex=\"0\">\n <ul class=\"doc-page-navigation\">\n <ng-container *ngIf=\"pageSectionsContent.length === 0\">\n <!-- ALWAYS PRESENT in each page-->\n <!-- <li class=\"doc-page-navigation-item\" [class.doc-page-navigation-item--selected]=\"fragmentId === 'overview'\" (click)=\"onNavClick('overview', 0)\"><span>OVERVIEW</span></li> -->\n <li class=\"doc-page-navigation-item\" [class.doc-page-navigation-item--selected]=\"fragmentId === 'api'\" (click)=\"onNavClick('api', 0)\"><span>API</span></li>\n <li class=\"doc-page-navigation-item\" [class.doc-page-navigation-item--selected]=\"fragmentId === 'a11y'\" (click)=\"onNavClick('a11y', 1)\"><span>A11Y</span></li>\n <li class=\"doc-page-navigation-item\" [class.doc-page-navigation-item--selected]=\"fragmentId === 'samples'\" (click)=\"onNavClick('samples', 2)\"><span>OPTIONS & SAMPLES</span></li>\n <li class=\"doc-page-navigation-item doc-page-navigation-sub\">\n <ul *ngFor=\"let sample of samples\" class=\"doc-page-navigation-list\">\n <li class=\"doc-page-navigation-item\" [class.doc-page-navigation-item--selected]=\"fragmentId === sample.id\" (click)=\"onNavClick(sample.id, 2)\"><span>{{sample.label}}</span></li>\n </ul>\n </li>\n\n <!-- OPTIONAL TABS-->\n <ng-container *ngIf=\"pageThemingContent.length > 0\">\n <li *ngIf=\"pageThemingContent.length > 0\" class=\"doc-page-navigation-item\" [class.doc-page-navigation-item--selected]=\"fragmentId === 'theming'\" (click)=\"onNavClick('theming', 3)\"><span>THEMING</span></li>\n <li *ngIf=\"pageInteractiveContent.length > 0\" class=\"doc-page-navigation-item\" [class.doc-page-navigation-item--selected]=\"fragmentId === 'advanced'\" (click)=\"onNavClick('advanced', 4)\">\n <span>{{pageInteractiveContent.first.title}}</span>\n </li>\n </ng-container>\n <ng-container *ngIf=\"pageThemingContent.length === 0\">\n <li *ngIf=\"pageInteractiveContent.length > 0\" class=\"doc-page-navigation-item\" [class.doc-page-navigation-item--selected]=\"fragmentId === 'advanced'\" (click)=\"onNavClick('advanced', 3)\">\n <span>{{pageInteractiveContent.first.title}}</span>\n </li>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"pageSectionsContent.length > 0\">\n <li class=\"doc-page-navigation-item\" [class.doc-page-navigation-item--selected]=\"fragmentId === 'sections'\" (click)=\"onNavClick('sections', null)\"><span>Sections</span></li>\n <li *ngIf=\"sections.length === 0\" class=\"doc-page-navigation-item\" [class.doc-page-navigation-item--selected]=\"fragmentId === 'demo'\" (click)=\"onNavClick('demo', null)\"><span>Demo</span></li>\n <li *ngIf=\"sections.length > 0\" class=\"doc-page-navigation-item doc-page-navigation-sub\">\n <ul *ngFor=\"let section of sections\">\n <li class=\"doc-page-navigation-item\" [class.doc-page-navigation-item--selected]=\"fragmentId === section.id\" (click)=\"onNavClick(section.id, null)\"><span>{{section.label}}</span></li>\n </ul>\n </li>\n </ng-container>\n </ul>\n </div>\n </div>\n </div>\n</div>\n", styles: [".doc-page-navigation-wrapper{display:flex;flex-wrap:wrap;width:100%}.doc-page-navigation-wrapper .doc-page-main-column{padding-right:var(--eui-base-spacing-m);width:calc(100% - 400px)}.doc-page-navigation-wrapper .doc-page-navigation-column{background:var(--eui-base-color-white);box-shadow:0 8px 10px #b7c0ce33;position:fixed;right:0;transition:all ease-in-out .25s;width:400px;z-index:auto;box-shadow:var(--eui-base-shadow-1)}.doc-page-navigation-wrapper .doc-page-navigation-column:hover{width:400px}.doc-page-navigation-title{font-weight:700;padding:var(--eui-base-spacing-s)}.doc-page-navigation-content{display:block;height:100vh;max-height:calc(100vh - 6rem);overflow-y:auto;width:100%}.doc-page-navigation-content::-webkit-scrollbar{display:inherit;height:6px;width:6px;background-color:var(--eui-base-color-grey-10)}.doc-page-navigation-content::-webkit-scrollbar-thumb{background-color:var(--eui-base-color-grey-20);border-radius:5rem}.doc-page-navigation-content::-webkit-scrollbar-thumb:hover{background-color:var(--eui-base-color-grey-25)}.doc-page-navigation-content::-webkit-scrollbar-track{background-color:var(--eui-base-color-grey-10);border-radius:0}.doc-page-navigation{background-color:transparent;border-left:2px solid transparent;padding-top:var(--eui-base-spacing-xs);margin:0;padding:0}.doc-page-navigation .doc-page-navigation-list{margin:0;padding:0}.doc-page-navigation .doc-page-navigation-item{color:var(--eui-base-color-primary-100);cursor:pointer;line-height:1.5;overflow:hidden;padding:var(--eui-base-spacing-2xs);text-overflow:ellipsis;transition:background-color ease-in .2s;white-space:nowrap;list-style:none}.doc-page-navigation .doc-page-navigation-item span{font-weight:700;padding-left:var(--eui-base-spacing-xs)}.doc-page-navigation .doc-page-navigation-item:not(.doc-page-navigation-sub):hover{background-color:var(--eui-base-color-grey-5);border-left:2px solid var(--eui-base-color-info-100)}.doc-page-navigation .doc-page-navigation-item.doc-page-navigation-sub .doc-page-navigation-item span{font-weight:400;padding-left:var(--eui-base-spacing-m)}.doc-page-navigation .doc-page-navigation-item.doc-page-navigation-sub .doc-page-navigation-item:hover{background-color:var(--eui-base-color-grey-5);border-left:2px solid var(--eui-base-color-grey-15)}.doc-page-navigation .doc-page-navigation-item.doc-page-navigation-item--selected{background-color:var(--eui-base-color-grey-5);border-left:2px solid var(--eui-base-color-info-100)}.doc-page-api-iframe-wrapper{display:flex;justify-content:space-around;margin:0}@media screen and (max-width: 767px){.doc-page-navigation-wrapper .doc-page-main-column{padding-right:0;width:100%}.doc-page-navigation-wrapper .doc-page-navigation-column{display:none;width:0}}@media screen and (min-width: 768px) and (max-width: 995px){.doc-page-navigation-wrapper .doc-page-main-column{width:80%}.doc-page-navigation-wrapper .doc-page-navigation-column{width:20%}}@media screen and (max-width: 1550px){.doc-page-api-iframe-wrapper{display:none}}\n"] }]
|
|
228
|
+
args: [{ selector: 'eui-showcase-doc-page', encapsulation: ViewEncapsulation.None, template: "<div class=\"doc-page-navigation-wrapper\" [class.eui-u-hidden]=\"isLoading\">\n <div class=\"doc-page-main-column\">\n <eui-page>\n <eui-page-header label=\"{{label}}\" subLabel=\"{{subLabel}}\">\n <eui-page-header-action-items>\n <eui-showcase-doc-page-code *ngIf=\"codeFolder\" codeFolder=\"{{codeFolder}}\" showcase=\"{{showcase}}\"></eui-showcase-doc-page-code>\n <eui-chip *ngIf=\"stateLabel\" [euiSuccess]=\"stateLabel === 'ACTIVE'\" [euiWarning]=\"stateLabel === 'DEPRECATED'\" [euiDanger]=\"isLegacy\">\n <span euiLabel><strong>{{stateLabel}}</strong></span>\n </eui-chip>\n </eui-page-header-action-items>\n </eui-page-header>\n\n <eui-page-content>\n <eui-alert *ngIf=\"stateLabel === 'LEGACY' || isLegacy\" euiDanger>\n <p>\n This component will be <strong class=\"eui-u-color-danger\">removed</strong> in the next version of eUI !!\n </p>\n <div *ngIf=\"cmp\">\n <div *ngIf=\"cmp.cmpReplacement !== 'NONE'\">\n It has been replaced by : <strong class=\"eui-u-color-success-darkest\">{{cmp.cmpReplacement}}</strong>\n <!-- <div *ngIf=\"cmp.cmpReplacementUrl\">\n <br><br>\n You can find more information on the new component here : <a [routerLink]=\"cmp.cmpReplacementUrl\">{{cmp.cmpReplacementUrl}}</a>\n </div> -->\n </div>\n <div *ngIf=\"cmp.cmpReplacement === 'NONE'\">\n This component will be <strong class=\"eui-u-color-danger\">discontinued in future version of eUI</strong>\n </div>\n <div *ngIf=\"cmp.cmpReplacementNote\">\n <strong class=\"eui-u-color-warning\">{{cmp.cmpReplacementNote}}</strong>\n </div>\n </div>\n </eui-alert>\n\n <eui-alert *ngIf=\"stateLabel === 'DEPRECATED' || isDeprecated\" euiWarning>\n <p>\n This component has been <strong class=\"eui-u-color-danger\">deprecated</strong>\n </p>\n <div *ngIf=\"cmp\">\n This component has no replacement in current version AND won't have replacement in next version of eUI, it is kept for <strong class=\"eui-u-color-warning\">historical usage only</strong>\n </div>\n </eui-alert>\n\n <eui-alert *ngIf=\"stateLabel === 'NOT_READY' || isNotReady\" euiInfo>\n <p>\n This component is <strong class=\"eui-u-color-info\">NOT READY</strong>\n </p>\n <div *ngIf=\"cmp\">\n This component is under development / some features might be missing, it'll be available in a future release once validated.\n </div>\n </eui-alert>\n\n <div *ngIf=\"(stateLabel || isNotReady || isDeprecated) && stateLabel !== 'ACTIVE'\" class=\"mb-5\"></div>\n\n\n <eui-tabs #tabsContent *ngIf=\"pageSectionsContent.length === 0\" (tabSelected)=\"onTabSelected($event)\">\n <eui-tab>\n <euiTabLabel>\n API\n </euiTabLabel>\n <euiTabContent>\n <ng-container *ngIf=\"apiUrlSafe\">\n <div class=\"flex-container\">\n <a href=\"{{apiUrl}}\" target=\"_blank\" class=\"ms-auto pb-2 eui-u-text-link-external\">Open API page</a>\n </div>\n <div class=\"doc-page-api-iframe-wrapper\">\n <iframe id=\"iframe_api\" [width]=\"'100%'\" height=\"700px\" frameBorder=\"0\" [src]=\"apiUrlSafe\"></iframe>\n </div>\n </ng-container>\n </euiTabContent>\n </eui-tab>\n\n <eui-tab>\n <euiTabLabel>\n A11Y\n </euiTabLabel>\n <euiTabContent>\n <h3 id=\"accessibility\" class=\"eui-u-font-bold eui-u-color-info mt-3 mb-2\">Accessibility</h3>\n <ng-content select=\"docPageAccessibility\"></ng-content>\n </euiTabContent>\n </eui-tab>\n\n <eui-tab>\n <euiTabLabel>\n OPTIONS & SAMPLES\n </euiTabLabel>\n <euiTabContent>\n <ng-container *ngIf=\"cmp && cmp.metadata\">\n <h3 class=\"eui-u-font-bold eui-u-color-info mt-3 mb-3\">Module import</h3>\n <pre><code class=\"language-javascript eui-u-bg-color-grey-5\" euiCode>{{ cmpModuleImport }}</code></pre>\n <br>\n </ng-container>\n\n <h3 id=\"overview\" class=\"eui-u-font-bold eui-u-color-info mt-3 mb-3\">Overview & setup</h3>\n <div *ngIf=\"pageOverviewContent.length > 0; else noOverview\">\n <ng-content select=\"docPageOverview\"></ng-content>\n </div>\n <ng-template #noOverview>\n Coming soon...\n </ng-template>\n <br>\n\n <h3 id=\"samples\" class=\"eui-u-font-bold eui-u-color-info mt-8 mb-2\">Options & samples</h3>\n <ng-content select=\"docPageSamples\"></ng-content>\n </euiTabContent>\n </eui-tab>\n\n <eui-tab *ngIf=\"pageThemingContent.length > 0\">\n <euiTabLabel>\n THEMING\n </euiTabLabel>\n <euiTabContent>\n <h3 id=\"theming\" class=\"eui-u-font-bold eui-u-color-info mt-3 mb-2\">Theming</h3>\n <ng-content select=\"docPageTheming\"></ng-content>\n </euiTabContent>\n </eui-tab>\n\n <eui-tab *ngIf=\"pageInteractiveContent.length > 0\">\n <euiTabLabel>\n {{pageInteractiveContent.first.title}}\n </euiTabLabel>\n <euiTabContent>\n <h3 id=\"interactive\" class=\"eui-u-font-bold eui-u-color-info mt-3 mb-2\">\n {{pageInteractiveContent.first.subTitle}}\n </h3>\n <ng-content select=\"docPageInteractive\"></ng-content>\n </euiTabContent>\n </eui-tab>\n </eui-tabs>\n\n <ng-container *ngIf=\"pageSectionsContent.length > 0\">\n <h3 id=\"demo\" *ngIf=\"sections.length === 0\" class=\"eui-u-font-bold eui-u-color-info mt-3 mb-2\">Demo</h3>\n <ng-content select=\"docPageSections\"></ng-content>\n </ng-container>\n </eui-page-content>\n </eui-page>\n </div>\n\n <div *ngIf=\"isNavigationVisible\" class=\"doc-page-navigation-column eui-u-hidden-desktop-down\">\n <div id=\"doc-page-nav\">\n <div class=\"doc-page-navigation-title\">In this page</div>\n <div class=\"doc-page-navigation-content\" tabindex=\"0\">\n <ul class=\"doc-page-navigation\">\n <ng-container *ngIf=\"pageSectionsContent.length === 0\">\n <!-- ALWAYS PRESENT in each page-->\n <!-- <li class=\"doc-page-navigation-item\" [class.doc-page-navigation-item--selected]=\"fragmentId === 'overview'\" (click)=\"onNavClick('overview', 0)\"><span>OVERVIEW</span></li> -->\n <li class=\"doc-page-navigation-item\" [class.doc-page-navigation-item--selected]=\"fragmentId === 'api'\" (click)=\"onNavClick('api', 0)\"><span>API</span></li>\n <li class=\"doc-page-navigation-item\" [class.doc-page-navigation-item--selected]=\"fragmentId === 'a11y'\" (click)=\"onNavClick('a11y', 1)\"><span>A11Y</span></li>\n <li class=\"doc-page-navigation-item\" [class.doc-page-navigation-item--selected]=\"fragmentId === 'samples'\" (click)=\"onNavClick('samples', 2)\"><span>OPTIONS & SAMPLES</span></li>\n <li class=\"doc-page-navigation-item doc-page-navigation-sub\">\n <ul *ngFor=\"let sample of samples\" class=\"doc-page-navigation-list\">\n <li class=\"doc-page-navigation-item\" [class.doc-page-navigation-item--selected]=\"fragmentId === sample.id\" (click)=\"onNavClick(sample.id, 2)\"><span>{{sample.label}}</span></li>\n </ul>\n </li>\n\n <!-- OPTIONAL TABS-->\n <ng-container *ngIf=\"pageThemingContent.length > 0\">\n <li *ngIf=\"pageThemingContent.length > 0\" class=\"doc-page-navigation-item\" [class.doc-page-navigation-item--selected]=\"fragmentId === 'theming'\" (click)=\"onNavClick('theming', 3)\"><span>THEMING</span></li>\n <li *ngIf=\"pageInteractiveContent.length > 0\" class=\"doc-page-navigation-item\" [class.doc-page-navigation-item--selected]=\"fragmentId === 'advanced'\" (click)=\"onNavClick('advanced', 4)\">\n <span>{{pageInteractiveContent.first.title}}</span>\n </li>\n </ng-container>\n <ng-container *ngIf=\"pageThemingContent.length === 0\">\n <li *ngIf=\"pageInteractiveContent.length > 0\" class=\"doc-page-navigation-item\" [class.doc-page-navigation-item--selected]=\"fragmentId === 'advanced'\" (click)=\"onNavClick('advanced', 3)\">\n <span>{{pageInteractiveContent.first.title}}</span>\n </li>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"pageSectionsContent.length > 0\">\n <li class=\"doc-page-navigation-item\" [class.doc-page-navigation-item--selected]=\"fragmentId === 'sections'\" (click)=\"onNavClick('sections', null)\"><span>Sections</span></li>\n <li *ngIf=\"sections.length === 0\" class=\"doc-page-navigation-item\" [class.doc-page-navigation-item--selected]=\"fragmentId === 'demo'\" (click)=\"onNavClick('demo', null)\"><span>Demo</span></li>\n <li *ngIf=\"sections.length > 0\" class=\"doc-page-navigation-item doc-page-navigation-sub\">\n <ul *ngFor=\"let section of sections\">\n <li class=\"doc-page-navigation-item\" [class.doc-page-navigation-item--selected]=\"fragmentId === section.id\" (click)=\"onNavClick(section.id, null)\"><span>{{section.label}}</span></li>\n </ul>\n </li>\n </ng-container>\n </ul>\n </div>\n </div>\n </div>\n</div>\n", styles: [".doc-page-navigation-wrapper{display:flex;flex-wrap:wrap;width:100%}.doc-page-navigation-wrapper .doc-page-main-column{padding-right:var(--eui-base-spacing-m);width:calc(100% - 400px)}.doc-page-navigation-wrapper .doc-page-navigation-column{background:var(--eui-base-color-white);box-shadow:0 8px 10px #b7c0ce33;position:fixed;right:0;transition:all ease-in-out .25s;width:400px;z-index:auto;box-shadow:var(--eui-base-shadow-1)}.doc-page-navigation-wrapper .doc-page-navigation-column:hover{width:400px}.doc-page-navigation-title{font-weight:700;padding:var(--eui-base-spacing-s)}.doc-page-navigation-content{display:block;height:100vh;max-height:calc(100vh - 6rem);overflow-y:auto;width:100%}.doc-page-navigation-content::-webkit-scrollbar{display:inherit;height:6px;width:6px;background-color:var(--eui-base-color-grey-10)}.doc-page-navigation-content::-webkit-scrollbar-thumb{background-color:var(--eui-base-color-grey-20);border-radius:5rem}.doc-page-navigation-content::-webkit-scrollbar-thumb:hover{background-color:var(--eui-base-color-grey-25)}.doc-page-navigation-content::-webkit-scrollbar-track{background-color:var(--eui-base-color-grey-10);border-radius:0}.doc-page-navigation{background-color:transparent;border-left:2px solid transparent;padding-top:var(--eui-base-spacing-xs);margin:0;padding:0}.doc-page-navigation .doc-page-navigation-list{margin:0;padding:0}.doc-page-navigation .doc-page-navigation-item{color:var(--eui-base-color-primary-100);cursor:pointer;line-height:1.5;overflow:hidden;padding:var(--eui-base-spacing-2xs);text-overflow:ellipsis;transition:background-color ease-in .2s;white-space:nowrap;list-style:none}.doc-page-navigation .doc-page-navigation-item span{font-weight:700;padding-left:var(--eui-base-spacing-xs)}.doc-page-navigation .doc-page-navigation-item:not(.doc-page-navigation-sub):hover{background-color:var(--eui-base-color-grey-5);border-left:2px solid var(--eui-base-color-info-100)}.doc-page-navigation .doc-page-navigation-item.doc-page-navigation-sub .doc-page-navigation-item span{font-weight:400;padding-left:var(--eui-base-spacing-m)}.doc-page-navigation .doc-page-navigation-item.doc-page-navigation-sub .doc-page-navigation-item:hover{background-color:var(--eui-base-color-grey-5);border-left:2px solid var(--eui-base-color-grey-15)}.doc-page-navigation .doc-page-navigation-item.doc-page-navigation-item--selected{background-color:var(--eui-base-color-grey-5);border-left:2px solid var(--eui-base-color-info-100)}.doc-page-api-iframe-wrapper{display:flex;justify-content:space-around;margin:0}@media screen and (max-width: 767px){.doc-page-navigation-wrapper .doc-page-main-column{padding-right:0;width:100%}.doc-page-navigation-wrapper .doc-page-navigation-column{display:none;width:0}}@media screen and (min-width: 768px) and (max-width: 995px){.doc-page-navigation-wrapper .doc-page-main-column{width:80%}.doc-page-navigation-wrapper .doc-page-navigation-column{width:20%}}@media screen and (max-width: 1550px){.doc-page-api-iframe-wrapper{display:none}}\n"] }]
|
|
224
229
|
}], ctorParameters: function () { return [{ type: i1.Router }, { type: i1.ActivatedRoute }, { type: i2.UxAppShellService }, { type: i3.DomSanitizer }, { type: i4.Location }]; }, propDecorators: { id: [{
|
|
225
230
|
type: Input
|
|
226
231
|
}], label: [{
|
|
@@ -335,4 +340,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0", ngImpor
|
|
|
335
340
|
type: Directive,
|
|
336
341
|
args: [{ selector: 'docPageTheming' }]
|
|
337
342
|
}] });
|
|
338
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jLXBhZ2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL2RvYy1wYWdlL2RvYy1wYWdlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9kb2MtcGFnZS9kb2MtcGFnZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUNULEtBQUssRUFDTCxTQUFTLEVBRVQsZUFBZSxFQUNmLFVBQVUsRUFHVixpQkFBaUIsRUFDakIsU0FBUyxHQUVaLE1BQU0sZUFBZSxDQUFDO0FBSXZCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDOzs7Ozs7Ozs7Ozs7QUFVM0UsTUFBTSxPQUFPLGdCQUFnQjtJQTJEekIsWUFDWSxNQUFjLEVBQ2QsS0FBcUIsRUFDckIsU0FBNEIsRUFDN0IsU0FBdUIsRUFDdEIsUUFBa0I7UUFKbEIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBQ3JCLGNBQVMsR0FBVCxTQUFTLENBQW1CO1FBQzdCLGNBQVMsR0FBVCxTQUFTLENBQWM7UUFDdEIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQTVEckIsZUFBVSxHQUFHLEtBQUssQ0FBQztRQUNuQixpQkFBWSxHQUFHLEtBQUssQ0FBQztRQUNyQixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBRWpCLGFBQVEsR0FBVyxJQUFJLENBQUM7UUFDeEIsd0JBQW1CLEdBQVksSUFBSSxDQUFDO1FBYTdDLGNBQVMsR0FBRyxJQUFJLENBQUM7UUFDakIsaUJBQVksR0FBRyxJQUFJLENBQUM7UUE0QlosYUFBUSxHQUFHO1lBQ2YsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxLQUFL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QjsyRkFBOUIsOEJBQThCO2tCQUQxQyxTQUFTO21CQUFDLEVBQUUsUUFBUSxFQUFFLGdCQUFnQixFQUFFOztBQUd6QyxNQUFNLE9BQU8sK0JBQStCOzsrSUFBL0IsK0JBQStCO21JQUEvQiwrQkFBK0I7MkZBQS9CLCtCQUErQjtrQkFEM0MsU0FBUzttQkFBQyxFQUFFLFFBQVEsRUFBRSxpQkFBaUIsRUFBRTs7QUFHMUMsTUFBTSxPQUFPLG9DQUFvQzs7b0pBQXBDLG9DQUFvQzt3SUFBcEMsb0NBQW9DOzJGQUFwQyxvQ0FBb0M7a0JBRGhELFNBQVM7bUJBQUMsRUFBRSxRQUFRLEVBQUUsc0JBQXNCLEVBQUU7O0FBRy9DLE1BQU0sT0FBTywwQkFBMEI7OzBJQUExQiwwQkFBMEI7OEhBQTFCLDBCQUEwQjsyRkFBMUIsMEJBQTBCO2tCQUR0QyxTQUFTO21CQUFDLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRTs7QUFJckMsTUFBTSxPQUFPLDhCQUE4Qjs7OElBQTlCLDhCQUE4QjtrSUFBOUIsOEJBQThCOzJGQUE5Qiw4QkFBOEI7a0JBRDFDLFNBQVM7bUJBQUMsRUFBRSxRQUFRLEVBQUUsZ0JBQWdCLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBJbnB1dCxcbiAgICBEaXJlY3RpdmUsXG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDb250ZW50Q2hpbGRyZW4sXG4gICAgZm9yd2FyZFJlZixcbiAgICBPbkluaXQsXG4gICAgUXVlcnlMaXN0LFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uLFxuICAgIFZpZXdDaGlsZCxcbiAgICBFbGVtZW50UmVmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IExvY2F0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFNhZmVSZXNvdXJjZVVybCwgRG9tU2FuaXRpemVyIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQgeyBSb3V0ZXIsIEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IERvY1NhbXBsZUNvbXBvbmVudCB9IGZyb20gJy4uL2RvYy1zYW1wbGUvZG9jLXNhbXBsZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgRG9jU2VjdGlvbkNvbXBvbmVudCB9IGZyb20gJy4uL2RvYy1zZWN0aW9uL2RvYy1zZWN0aW9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBVeEFwcFNoZWxsU2VydmljZSB9IGZyb20gJ0BldWkvY29yZSc7XG5pbXBvcnQgeyBFdWlUYWJzQ29tcG9uZW50IH0gZnJvbSAnQGV1aS9jb21wb25lbnRzL2V1aS10YWJzJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdldWktc2hvd2Nhc2UtZG9jLXBhZ2UnLFxuICAgIHRlbXBsYXRlVXJsOiAnZG9jLXBhZ2UuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2RvYy1wYWdlLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgRG9jUGFnZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCB7XG4gICAgQElucHV0KCkgaWQ7XG4gICAgQElucHV0KCkgbGFiZWw7XG4gICAgQElucHV0KCkgc3ViTGFiZWw6IHN0cmluZztcbiAgICBASW5wdXQoKSBpc05vdFJlYWR5ID0gZmFsc2U7XG4gICAgQElucHV0KCkgaXNEZXByZWNhdGVkID0gZmFsc2U7XG4gICAgQElucHV0KCkgaXNMZWdhY3kgPSBmYWxzZTtcbiAgICBASW5wdXQoKSBjb2RlRm9sZGVyOiBzdHJpbmc7XG4gICAgQElucHV0KCkgc2hvd2Nhc2U6IHN0cmluZyA9ICd1eCc7XG4gICAgQElucHV0KCkgaXNOYXZpZ2F0aW9uVmlzaWJsZTogYm9vbGVhbiA9IHRydWU7XG5cbiAgICBzdGF0ZVR5cGVDbGFzcztcbiAgICBzdGF0ZUxhYmVsO1xuICAgIGNtcDtcbiAgICBmcmFnbWVudElkO1xuICAgIGNtcE1vZHVsZUltcG9ydDtcbiAgICBhcHBNZXRhZGF0YTtcblxuICAgIGFwaVVybFNhZmU6IFNhZmVSZXNvdXJjZVVybDtcbiAgICBhcGlVcmw6IHN0cmluZztcbiAgICBpRnJhbWVDb250ZW50O1xuXG4gICAgaXNMb2FkaW5nID0gdHJ1ZTtcbiAgICBpc05hdkNsaWNrZWQgPSB0cnVlO1xuXG4gICAgQENvbnRlbnRDaGlsZHJlbihEb2NTYW1wbGVDb21wb25lbnQsIHsgZGVzY2VuZGFudHM6IHRydWUgfSkgc2FtcGxlczogUXVlcnlMaXN0PERvY1NhbXBsZUNvbXBvbmVudD47XG4gICAgQENvbnRlbnRDaGlsZHJlbihEb2NTZWN0aW9uQ29tcG9uZW50LCB7IGRlc2NlbmRhbnRzOiB0cnVlIH0pIHNlY3Rpb25zOiBRdWVyeUxpc3Q8RG9jU2VjdGlvbkNvbXBvbmVudD47XG5cbiAgICBAQ29udGVudENoaWxkcmVuKGZvcndhcmRSZWYoKCkgPT4gRG9jUGFnZU92ZXJ2aWV3Q29udGVudERpcmVjdGl2ZSkpXG4gICAgcGFnZU92ZXJ2aWV3Q29udGVudDogUXVlcnlMaXN0PERvY1BhZ2VPdmVydmlld0NvbnRlbnREaXJlY3RpdmU+O1xuXG4gICAgQENvbnRlbnRDaGlsZHJlbihmb3J3YXJkUmVmKCgpID0+IERvY1BhZ2VTYW1wbGVzQ29udGVudERpcmVjdGl2ZSkpXG4gICAgcGFnZVNhbXBsZXNDb250ZW50OiBRdWVyeUxpc3Q8RG9jUGFnZVNhbXBsZXNDb250ZW50RGlyZWN0aXZlPjtcblxuICAgIEBDb250ZW50Q2hpbGRyZW4oZm9yd2FyZFJlZigoKSA9PiBEb2NQYWdlU2VjdGlvbnNDb250ZW50RGlyZWN0aXZlKSlcbiAgICBwYWdlU2VjdGlvbnNDb250ZW50OiBRdWVyeUxpc3Q8RG9jUGFnZVNlY3Rpb25zQ29udGVudERpcmVjdGl2ZT47XG5cbiAgICBAQ29udGVudENoaWxkcmVuKGZvcndhcmRSZWYoKCkgPT4gRG9jUGFnZUludGVyYWN0aXZlQ29udGVudERpcmVjdGl2ZSkpXG4gICAgcGFnZUludGVyYWN0aXZlQ29udGVudDogUXVlcnlMaXN0PERvY1BhZ2VJbnRlcmFjdGl2ZUNvbnRlbnREaXJlY3RpdmU+O1xuXG4gICAgQENvbnRlbnRDaGlsZHJlbihmb3J3YXJkUmVmKCgpID0+IERvY1BhZ2VBY2Nlc3NpYmlsaXR5Q29udGVudERpcmVjdGl2ZSkpXG4gICAgcGFnZUFjY2Vzc2liaWxpdHlDb250ZW50OiBRdWVyeUxpc3Q8RG9jUGFnZUFjY2Vzc2liaWxpdHlDb250ZW50RGlyZWN0aXZlPjtcblxuICAgIEBDb250ZW50Q2hpbGRyZW4oZm9yd2FyZFJlZigoKSA9PiBEb2NQYWdlQXBpQ29udGVudERpcmVjdGl2ZSkpXG4gICAgcGFnZUFwaUNvbnRlbnQ6IFF1ZXJ5TGlzdDxEb2NQYWdlQXBpQ29udGVudERpcmVjdGl2ZT47XG5cbiAgICBAQ29udGVudENoaWxkcmVuKGZvcndhcmRSZWYoKCkgPT4gRG9jUGFnZVRoZW1pbmdDb250ZW50RGlyZWN0aXZlKSlcbiAgICBwYWdlVGhlbWluZ0NvbnRlbnQ6IFF1ZXJ5TGlzdDxEb2NQYWdlVGhlbWluZ0NvbnRlbnREaXJlY3RpdmU+O1xuXG4gICAgQFZpZXdDaGlsZCgndGFic0NvbnRlbnQnKSB0YWJzQ29udGVudDogRXVpVGFic0NvbXBvbmVudDtcblxuICAgIHByaXZhdGUgVEFCU19ERUYgPSBbXG4gICAgICAgIHsgaW5kZXg6IDAsIGlkOiAnYXBpJyB9LFxuICAgICAgICB7IGluZGV4OiAxLCBpZDogJ2ExMXknIH0sXG4gICAgICAgIHsgaW5kZXg6IDIsIGlkOiAnc2FtcGxlcycgfSxcbiAgICAgICAgeyBpbmRleDogMywgaWQ6ICd0aGVtaW5nJyB9LFxuICAgICAgICB7IGluZGV4OiA0LCBpZDogJ2FkdmFuY2VkJyB9LFxuICAgIF07XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICAgICAgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgICAgIHByaXZhdGUgYXNTZXJ2aWNlOiBVeEFwcFNoZWxsU2VydmljZSxcbiAgICAgICAgcHVibGljIHNhbml0aXplcjogRG9tU2FuaXRpemVyLFxuICAgICAgICBwcml2YXRlIGxvY2F0aW9uOiBMb2NhdGlvbixcbiAgICApIHtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmFzU2VydmljZS5pc0Jsb2NrRG9jdW1lbnRBY3RpdmUgPSB0cnVlO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmFwcE1ldGFkYXRhID0gdGhpcy5hc1NlcnZpY2Uuc3RhdGUuYXBwTWV0YWRhdGE7XG5cbiAgICAgICAgaWYgKHRoaXMuaWQgJiYgIXRoaXMubGFiZWwpIHtcbiAgICAgICAgICAgIHRoaXMubGFiZWwgPSB0aGlzLmlkO1xuICAgICAgICB9XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHRoaXMuY21wID0gdGhpcy5fZ2V0Q29tcG9uZW50U3RhdHVzKHRoaXMuaWQpO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5jbXApIHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKHRoaXMuY21wLnN0YXR1cykge1xuICAgICAgICAgICAgICAgIGNhc2UgJ3N1Y2Nlc3MnOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YXRlTGFiZWwgPSAnQUNUSVZFJztcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGF0ZVR5cGVDbGFzcyA9ICdzdWNjZXNzJztcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlICd3YXJuaW5nJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGF0ZUxhYmVsID0gJ0RFUFJFQ0FURUQnO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YXRlVHlwZUNsYXNzID0gJ3dhcm5pbmcnO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzRGVwcmVjYXRlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSAnZGFuZ2VyJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGF0ZUxhYmVsID0gJ0xFR0FDWSAtIHdpbGwgYmUgcmVtb3ZlZCBpbiBuZXh0IHZlcnNpb24nO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YXRlVHlwZUNsYXNzID0gJ2Rhbmdlcic7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNMZWdhY3kgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAvLyBjb25zdHJ1Y3QgY21wIG1vZHVsZSBpbXBvcnQgc3RyaW5nXG4gICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gICAgICAgICAgICAgICAgdGhpcy5jbXBNb2R1bGVJbXBvcnQgPSBgaW1wb3J0IHsgJHt0aGlzLmNtcC5tZXRhZGF0YT8ubW9kdWxlTmFtZX0gfSBmcm9tICdAZXVpLyR7dGhpcy5jbXAubWV0YWRhdGE/LnN1YkVudHJ5TmFtZX0nO2A7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdXYXJuaW5nLCBlcnJvcnMgZGV0ZWN0ZWQgd2hpbGUgZ2V0dGluZyBwYWdlIHN0YXRlJyk7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhlKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmZyYWdtZW50SWQgPSB0aGlzLnJvdXRlLnNuYXBzaG90LmZyYWdtZW50O1xuXG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAgICAvLyBnZXR0aW5nIEFQSSB1cmxcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHRoaXMuYXBpVXJsID0gdGhpcy5fZ2V0QXBpVXJsKCk7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgRmV0Y2hpbmcgQVBJIHVybCBmcm9tIDogJHt0aGlzLmFwaVVybH1gKTtcblxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5hcGlVcmxTYWZlID0gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFJlc291cmNlVXJsKHRoaXMuYXBpVXJsKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgbGV0IHRhYiA9IHRoaXMuVEFCU19ERUYuZmlsdGVyKHQgPT4gdC5pZCA9PT0gdGhpcy5mcmFnbWVudElkKVswXTtcbiAgICAgICAgICAgIGxldCB0YWJJbmRleDtcblxuICAgICAgICAgICAgaWYgKCF0YWIpIHtcbiAgICAgICAgICAgICAgICB0YWJJbmRleCA9IDI7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRhYkluZGV4ID0gdGFiLmluZGV4O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLl9zY3JvbGxUb0ZyYWdtZW50KHRoaXMuZnJhZ21lbnRJZCwgdGFiSW5kZXgsIHRydWUsIHRydWUpO1xuXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmFzU2VydmljZS5pc0Jsb2NrRG9jdW1lbnRBY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG9uTmF2Q2xpY2soZnJhZ21lbnRJZDogc3RyaW5nLCB0YWJJbmRleDogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuZnJhZ21lbnRJZCA9IGZyYWdtZW50SWQ7XG4gICAgICAgIHRoaXMuaXNOYXZDbGlja2VkID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5fc2Nyb2xsVG9GcmFnbWVudCh0aGlzLmZyYWdtZW50SWQsIHRhYkluZGV4LCBmYWxzZSwgdHJ1ZSk7XG4gICAgfVxuXG4gICAgb25UYWJTZWxlY3RlZChldmVudDogYW55KSB7XG4gICAgICAgIGlmICghdGhpcy5pc0xvYWRpbmcgJiYgIXRoaXMuaXNOYXZDbGlja2VkKSB7XG4gICAgICAgICAgICBsZXQgdGFiSWQgPSB0aGlzLlRBQlNfREVGLmZpbHRlcih0ID0+IHQuaW5kZXggPT09IGV2ZW50LmluZGV4KVswXS5pZDtcbiAgICAgICAgICAgIHRoaXMuX3Njcm9sbFRvRnJhZ21lbnQodGFiSWQsIGV2ZW50LmluZGV4LCBmYWxzZSwgZmFsc2UpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuaXNOYXZDbGlja2VkID0gZmFsc2U7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfc2Nyb2xsVG9GcmFnbWVudChmcmFnbWVudElkOiBzdHJpbmcsIHRhYkluZGV4OiBudW1iZXIsIGluaXQ6IGJvb2xlYW4sIGNoYW5nZVRhYjogYm9vbGVhbikge1xuICAgICAgICBpZiAoaW5pdCkge1xuICAgICAgICAgICAgaWYgKHRoaXMudGFic0NvbnRlbnQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnRhYnNDb250ZW50LmNoYW5nZVRhYih0YWJJbmRleCk7XG5cbiAgICAgICAgICAgICAgICBpZiAoZnJhZ21lbnRJZCkge1xuICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGZnbSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGZyYWdtZW50SWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgeU9mZnNldCA9IC04MDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmZ20pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB5ID0gZmdtLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcCArIHdpbmRvdy5wYWdlWU9mZnNldCArIHlPZmZzZXQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93LnNjcm9sbFRvKHt0b3A6IHl9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKGNoYW5nZVRhYikge1xuICAgICAgICAgICAgICAgIHRoaXMucm91dGVyLm9uU2FtZVVybE5hdmlnYXRpb24gPSAncmVsb2FkJztcbiAgICAgICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy4nXSwgeyByZWxhdGl2ZVRvOiB0aGlzLnJvdXRlLCBmcmFnbWVudDogZnJhZ21lbnRJZCB9KS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMudGFic0NvbnRlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGFic0NvbnRlbnQuY2hhbmdlVGFiKHRhYkluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCByb3V0ZVJvb3QgPSB0aGlzLnJvdXRlci51cmwuc3BsaXQoJyMnKVswXTtcbiAgICAgICAgICAgICAgICB0aGlzLmxvY2F0aW9uLmdvKGAke3JvdXRlUm9vdH0jJHtmcmFnbWVudElkfWApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfZ2V0Q29tcG9uZW50U3RhdHVzKGlkKSB7XG5cbiAgICAgICAgY29uc3QgZmxhdHRlbiA9IChsaW5rcykgPT4gbGlua3MgPyBsaW5rcy5yZWR1Y2UoKHJlc3VsdCwgaXRlbSkgPT4gW1xuICAgICAgICAgICAgICAgIC4uLnJlc3VsdCxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBpdGVtLmxhYmVsLFxuICAgICAgICAgICAgICAgICAgICBhbHRlcm5hdGVJZDogaXRlbS5uYW1lLFxuICAgICAgICAgICAgICAgICAgICBzdGF0dXM6IGl0ZW0ubWFya2VyVHlwZUNsYXNzLFxuICAgICAgICAgICAgICAgICAgICBjbXBSZXBsYWNlbWVudDogaXRlbS5jbXBSZXBsYWNlbWVudCxcbiAgICAgICAgICAgICAgICAgICAgY21wUmVwbGFjZW1lbnRVcmw6IGl0ZW0uY21wUmVwbGFjZW1lbnRVcmwsXG4gICAgICAgICAgICAgICAgICAgIGNtcFJlcGxhY2VtZW50Tm90ZTogaXRlbS5jbXBSZXBsYWNlbWVudE5vdGUsXG4gICAgICAgICAgICAgICAgICAgIGFsdGVybmF0ZUFwaUNhdGVnb3J5OiBpdGVtLmFsdGVybmF0ZUFwaUNhdGVnb3J5LFxuICAgICAgICAgICAgICAgICAgICBtZXRhZGF0YTogaXRlbS5tZXRhZGF0YSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIC4uLmZsYXR0ZW4oaXRlbS5jaGlsZHJlbilcbiAgICAgICAgICAgIF0sIFtdKSA6IFtdO1xuXG4gICAgICAgIGNvbnN0IGZsYXRMaW5rcyA9IGZsYXR0ZW4odGhpcy5hc1NlcnZpY2Uuc3RhdGUuc2lkZWJhckxpbmtzKTtcbiAgICAgICAgY29uc3QgaWRCYXNlZENtcCA9IGZsYXRMaW5rcy5maWx0ZXIoKGl0ZW0pID0+IGl0ZW0uaWQgPT09IGlkKVswXTtcbiAgICAgICAgaWYgKGlkQmFzZWRDbXApIHtcbiAgICAgICAgICAgIHJldHVybiBpZEJhc2VkQ21wO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgYWx0ZXJuYXRlSWRCYXNlZENtcCA9IGZsYXRMaW5rcy5maWx0ZXIoKGl0ZW0pID0+IGl0ZW0uYWx0ZXJuYXRlSWQgPT09IGlkKVswXTtcbiAgICAgICAgICAgIHJldHVybiBhbHRlcm5hdGVJZEJhc2VkQ21wO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfZ2V0QXBpVXJsKCkge1xuICAgICAgICBjb25zdCB1cmwgPSB3aW5kb3cubG9jYXRpb247XG4gICAgICAgIGNvbnN0IHByb3RvY29sID0gdXJsLnByb3RvY29sO1xuICAgICAgICBjb25zdCBob3N0ID0gdXJsLmhvc3Q7XG4gICAgICAgIGNvbnN0IHBhdGhOYW1lID0gdXJsLnBhdGhuYW1lO1xuICAgICAgICBjb25zdCBwYXRoTmFtZUFycmF5ID0gcGF0aE5hbWUuc3BsaXQoJy8nKTtcbiAgICAgICAgY29uc3QgbmFtZSA9IHBhdGhOYW1lQXJyYXlbcGF0aE5hbWVBcnJheS5sZW5ndGggLSAxXTtcbiAgICAgICAgbGV0IGNhdGVnb3J5ID0gcGF0aE5hbWVBcnJheVtwYXRoTmFtZUFycmF5Lmxlbmd0aCAtIDJdO1xuXG4gICAgICAgIGxldCBwcm90b2NvbEdlbiA9IHByb3RvY29sLCBob3N0R2VuID0gaG9zdDtcblxuICAgICAgICBpZiAoaG9zdC5pbmRleE9mKCdsb2NhbGhvc3QnKSA+IC0xKSB7XG4gICAgICAgICAgICBwcm90b2NvbEdlbiA9ICdodHRwczonO1xuICAgICAgICAgICAgaG9zdEdlbiA9ICdldWlkZXYuZWNkZXZvcHMuZXUnO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgYXBwVmVyc2lvbk51bWJlciA9IHRoaXMuYXBwTWV0YWRhdGEuYXBwVmVyc2lvbi5zcGxpdCgnLicpWzBdO1xuICAgICAgICBjb25zdCBkb2NUeXBlUm9vdCA9IGBldWktZG9jcy1ldWktJHthcHBWZXJzaW9uTnVtYmVyfS54YDtcblxuICAgICAgICBpZiAoY2F0ZWdvcnkgPT09ICdsYXlvdXQtY29tcG9uZW50cycgfHwgY2F0ZWdvcnkgPT09ICdleHRlcm5hbHMnKSB7XG4gICAgICAgICAgICBjYXRlZ29yeSA9ICdjb21wb25lbnRzJztcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGNtcCA9IHRoaXMuX2dldENvbXBvbmVudFN0YXR1cyhuYW1lKTtcblxuICAgICAgICBpZiAoY21wLmFsdGVybmF0ZUFwaUNhdGVnb3J5KSB7XG4gICAgICAgICAgICBjYXRlZ29yeSA9IGNtcC5hbHRlcm5hdGVBcGlDYXRlZ29yeTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGZvcm1hdHRlZE5hbWUgPSB0aGlzLl9jYW1lbENhc2VTdHJpbmcobmFtZSArICctJyArIGNhdGVnb3J5LnNsaWNlKDAsIC0xKSwgJy0nLCB0cnVlKTtcbiAgICAgICAgY29uc3QgZG9jUGF0aCA9IGAke3Byb3RvY29sR2VufS8vJHtob3N0R2VufS8ke2RvY1R5cGVSb290fS8ke2NhdGVnb3J5fS8ke2Zvcm1hdHRlZE5hbWV9Lmh0bWxgO1xuXG4gICAgICAgIGNvbnNvbGUubG9nKGBmZXRjaGluZyBBUEkgZnJvbTogJHtkb2NQYXRofWApO1xuXG4gICAgICAgIHJldHVybiBkb2NQYXRoO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2NhbWVsQ2FzZVN0cmluZyhzdHJpbmcsIHNlcGFyYXRvciwgZmlyc3QpIHtcbiAgICAgICAgY29uc3Qgc3RyaW5nQXJyYXkgPSBzdHJpbmcuc3BsaXQoc2VwYXJhdG9yKTtcbiAgICAgICAgbGV0IHJlc3VsdCA9ICcnO1xuICAgICAgICBsZXQgcztcblxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHN0cmluZ0FycmF5Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBzID0gc3RyaW5nQXJyYXlbaV07XG4gICAgICAgICAgICBpZiAoaSA9PT0gMCkge1xuICAgICAgICAgICAgICAgIGlmIChmaXJzdCkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gcy5zdWJzdHJpbmcoMCwgMSkudG9VcHBlckNhc2UoKSArIHMuc3Vic3RyKDEpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSBzO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0ICs9IHMuc3Vic3RyaW5nKDAsIDEpLnRvVXBwZXJDYXNlKCkgKyBzLnN1YnN0cigxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG59XG5cbi8qIGVzbGludC1kaXNhYmxlIEBhbmd1bGFyLWVzbGludC9kaXJlY3RpdmUtc2VsZWN0b3IgKi9cbkBEaXJlY3RpdmUoeyBzZWxlY3RvcjogJ2RvY1BhZ2VPdmVydmlldycgfSlcbmV4cG9ydCBjbGFzcyBEb2NQYWdlT3ZlcnZpZXdDb250ZW50RGlyZWN0aXZlIHsgfVxuQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnZG9jUGFnZUludGVyYWN0aXZlJyB9KVxuZXhwb3J0IGNsYXNzIERvY1BhZ2VJbnRlcmFjdGl2ZUNvbnRlbnREaXJlY3RpdmUge1xuICAgIEBJbnB1dCgpIHRpdGxlOiBzdHJpbmcgPSAnQURWQU5DRUQgRVhBTVBMRVMnO1xuICAgIEBJbnB1dCgpIHN1YlRpdGxlOiBzdHJpbmcgPSAnQWR2YW5jZWQgdXNlIGNhc2VzJztcbn1cbkBEaXJlY3RpdmUoeyBzZWxlY3RvcjogJ2RvY1BhZ2VTYW1wbGVzJyB9KVxuZXhwb3J0IGNsYXNzIERvY1BhZ2VTYW1wbGVzQ29udGVudERpcmVjdGl2ZSB7IH1cbkBEaXJlY3RpdmUoeyBzZWxlY3RvcjogJ2RvY1BhZ2VTZWN0aW9ucycgfSlcbmV4cG9ydCBjbGFzcyBEb2NQYWdlU2VjdGlvbnNDb250ZW50RGlyZWN0aXZlIHsgfVxuQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnZG9jUGFnZUFjY2Vzc2liaWxpdHknIH0pXG5leHBvcnQgY2xhc3MgRG9jUGFnZUFjY2Vzc2liaWxpdHlDb250ZW50RGlyZWN0aXZlIHsgfVxuQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnZG9jUGFnZUFwaScgfSlcbmV4cG9ydCBjbGFzcyBEb2NQYWdlQXBpQ29udGVudERpcmVjdGl2ZSB7IH1cblxuQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnZG9jUGFnZVRoZW1pbmcnIH0pXG5leHBvcnQgY2xhc3MgRG9jUGFnZVRoZW1pbmdDb250ZW50RGlyZWN0aXZlIHsgfVxuLyogZXNsaW50LWVuYWJsZSBAYW5ndWxhci1lc2xpbnQvZGlyZWN0aXZlLXNlbGVjdG9yICovXG4iLCI8ZGl2IGNsYXNzPVwiZG9jLXBhZ2UtbmF2aWdhdGlvbi13cmFwcGVyXCIgW2NsYXNzLmV1aS11LWhpZGRlbl09XCJpc0xvYWRpbmdcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZG9jLXBhZ2UtbWFpbi1jb2x1bW5cIj5cbiAgICAgICAgPGV1aS1wYWdlPlxuICAgICAgICAgICAgPGV1aS1wYWdlLWhlYWRlciBsYWJlbD1cInt7bGFiZWx9fVwiIHN1YkxhYmVsPVwie3tzdWJMYWJlbH19XCI+XG4gICAgICAgICAgICAgICAgPGV1aS1wYWdlLWhlYWRlci1hY3Rpb24taXRlbXM+XG4gICAgICAgICAgICAgICAgICAgIDxldWktc2hvd2Nhc2UtZG9jLXBhZ2UtY29kZSAqbmdJZj1cImNvZGVGb2xkZXJcIiBjb2RlRm9sZGVyPVwie3tjb2RlRm9sZGVyfX1cIiBzaG93Y2FzZT1cInt7c2hvd2Nhc2V9fVwiPjwvZXVpLXNob3djYXNlLWRvYy1wYWdlLWNvZGU+XG4gICAgICAgICAgICAgICAgICAgIDxldWktY2hpcCAqbmdJZj1cInN0YXRlTGFiZWxcIiBbZXVpU3VjY2Vzc109XCJzdGF0ZUxhYmVsID09PSAnQUNUSVZFJ1wiIFtldWlXYXJuaW5nXT1cInN0YXRlTGFiZWwgPT09ICdERVBSRUNBVEVEJ1wiIFtldWlEYW5nZXJdPVwiaXNMZWdhY3lcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGV1aUxhYmVsPjxzdHJvbmc+e3tzdGF0ZUxhYmVsfX08L3N0cm9uZz48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvZXVpLWNoaXA+XG4gICAgICAgICAgICAgICAgPC9ldWktcGFnZS1oZWFkZXItYWN0aW9uLWl0ZW1zPlxuICAgICAgICAgICAgPC9ldWktcGFnZS1oZWFkZXI+XG5cbiAgICAgICAgICAgIDxldWktcGFnZS1jb250ZW50PlxuICAgICAgICAgICAgICAgIDxldWktYWxlcnQgKm5nSWY9XCJzdGF0ZUxhYmVsID09PSAnTEVHQUNZJyB8fCBpc0xlZ2FjeVwiIGV1aURhbmdlcj5cbiAgICAgICAgICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGNvbXBvbmVudCB3aWxsIGJlIDxzdHJvbmcgY2xhc3M9XCJldWktdS1jb2xvci1kYW5nZXJcIj5yZW1vdmVkPC9zdHJvbmc+IGluIHRoZSBuZXh0IHZlcnNpb24gb2YgZVVJICEhXG4gICAgICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImNtcFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImNtcC5jbXBSZXBsYWNlbWVudCAhPT0gJ05PTkUnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgSXQgaGFzIGJlZW4gcmVwbGFjZWQgYnkgOiA8c3Ryb25nIGNsYXNzPVwiZXVpLXUtY29sb3Itc3VjY2Vzcy1kYXJrZXN0XCI+e3tjbXAuY21wUmVwbGFjZW1lbnR9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGRpdiAqbmdJZj1cImNtcC5jbXBSZXBsYWNlbWVudFVybFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnI+PGJyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIGZpbmQgbW9yZSBpbmZvcm1hdGlvbiBvbiB0aGUgbmV3IGNvbXBvbmVudCBoZXJlIDogPGEgW3JvdXRlckxpbmtdPVwiY21wLmNtcFJlcGxhY2VtZW50VXJsXCI+e3tjbXAuY21wUmVwbGFjZW1lbnRVcmx9fTwvYT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJjbXAuY21wUmVwbGFjZW1lbnQgPT09ICdOT05FJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgY29tcG9uZW50IHdpbGwgYmUgPHN0cm9uZyBjbGFzcz1cImV1aS11LWNvbG9yLWRhbmdlclwiPmRpc2NvbnRpbnVlZCBpbiBmdXR1cmUgdmVyc2lvbiBvZiBlVUk8L3N0cm9uZz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImNtcC5jbXBSZXBsYWNlbWVudE5vdGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nIGNsYXNzPVwiZXVpLXUtY29sb3Itd2FybmluZ1wiPnt7Y21wLmNtcFJlcGxhY2VtZW50Tm90ZX19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9ldWktYWxlcnQ+XG5cbiAgICAgICAgICAgICAgICA8ZXVpLWFsZXJ0ICpuZ0lmPVwic3RhdGVMYWJlbCA9PT0gJ0RFUFJFQ0FURUQnIHx8IGlzRGVwcmVjYXRlZFwiIGV1aVdhcm5pbmc+XG4gICAgICAgICAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBjb21wb25lbnQgaGFzIGJlZW4gPHN0cm9uZyBjbGFzcz1cImV1aS11LWNvbG9yLWRhbmdlclwiPmRlcHJlY2F0ZWQ8L3N0cm9uZz5cbiAgICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiY21wXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGNvbXBvbmVudCBoYXMgbm8gcmVwbGFjZW1lbnQgaW4gY3VycmVudCB2ZXJzaW9uIEFORCB3b24ndCBoYXZlIHJlcGxhY2VtZW50IGluIG5leHQgdmVyc2lvbiBvZiBlVUksIGl0IGlzIGtlcHQgZm9yIDxzdHJvbmcgY2xhc3M9XCJldWktdS1jb2xvci13YXJuaW5nXCI+aGlzdG9yaWNhbCB1c2FnZSBvbmx5PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZXVpLWFsZXJ0PlxuXG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIihzdGF0ZUxhYmVsIHx8IGlzTm90UmVhZHkgfHwgaXNEZXByZWNhdGVkKSAmJiBzdGF0ZUxhYmVsICE9PSAnQUNUSVZFJ1wiIGNsYXNzPVwibWItNVwiPjwvZGl2PlxuXG5cbiAgICAgICAgICAgICAgICA8ZXVpLXRhYnMgI3RhYnNDb250ZW50ICpuZ0lmPVwicGFnZVNlY3Rpb25zQ29udGVudC5sZW5ndGggPT09IDBcIiAodGFiU2VsZWN0ZWQpPVwib25UYWJTZWxlY3RlZCgkZXZlbnQpXCI+XG4gICAgICAgICAgICAgICAgICAgIDxldWktdGFiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGV1aVRhYkxhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFQSVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9ldWlUYWJMYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxldWlUYWJDb250ZW50PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhcGlVcmxTYWZlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4LWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj1cInt7YXBpVXJsfX1cIiB0YXJnZXQ9XCJfYmxhbmtcIiBjbGFzcz1cIm1zLWF1dG8gcGItMiBldWktdS10ZXh0LWxpbmstZXh0ZXJuYWxcIj5PcGVuIEFQSSBwYWdlPC9hPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRvYy1wYWdlLWFwaS1pZnJhbWUtd3JhcHBlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlmcmFtZSBpZD1cImlmcmFtZV9hcGlcIiBbd2lkdGhdPVwiJzEwMCUnXCIgaGVpZ2h0PVwiNzAwcHhcIiBmcmFtZUJvcmRlcj1cIjBcIiBbc3JjXT1cImFwaVVybFNhZmVcIj48L2lmcmFtZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2V1aVRhYkNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgICAgIDwvZXVpLXRhYj5cblxuICAgICAgICAgICAgICAgICAgICA8ZXVpLXRhYj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxldWlUYWJMYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBBMTFZXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2V1aVRhYkxhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGV1aVRhYkNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgzIGlkPVwiYWNjZXNzaWJpbGl0eVwiIGNsYXNzPVwiZXVpLXUtZm9udC1ib2xkIGV1aS11LWNvbG9yLWluZm8gbXQtMyBtYi0yXCI+QWNjZXNzaWJpbGl0eTwvaDM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiZG9jUGFnZUFjY2Vzc2liaWxpdHlcIj48L25nLWNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2V1aVRhYkNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgICAgIDwvZXVpLXRhYj5cblxuICAgICAgICAgICAgICAgICAgICA8ZXVpLXRhYj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxldWlUYWJMYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUFRJT05TICYgU0FNUExFU1xuICAgICAgICAgICAgICAgICAgICAgICAgPC9ldWlUYWJMYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxldWlUYWJDb250ZW50PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjbXAgJiYgY21wLm1ldGFkYXRhXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz1cImV1aS11LWZvbnQtYm9sZCBldWktdS1jb2xvci1pbmZvIG10LTMgbWItM1wiPk1vZHVsZSBpbXBvcnQ8L2gzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJlPjxjb2RlIGNsYXNzPVwibGFuZ3VhZ2UtamF2YXNjcmlwdCBldWktdS1iZy1jb2xvci1ncmV5LTVcIiBldWlDb2RlPnt7IGNtcE1vZHVsZUltcG9ydCB9fTwvY29kZT48L3ByZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgzIGlkPVwib3ZlcnZpZXdcIiBjbGFzcz1cImV1aS11LWZvbnQtYm9sZCBldWktdS1jb2xvci1pbmZvIG10LTMgbWItM1wiPk92ZXJ2aWV3ICYgc2V0dXA8L2gzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJwYWdlT3ZlcnZpZXdDb250ZW50Lmxlbmd0aCA+IDA7IGVsc2Ugbm9PdmVydmlld1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJkb2NQYWdlT3ZlcnZpZXdcIj48L25nLWNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNub092ZXJ2aWV3PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb21pbmcgc29vbi4uLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJyPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgzIGlkPVwic2FtcGxlc1wiIGNsYXNzPVwiZXVpLXUtZm9udC1ib2xkIGV1aS11LWNvbG9yLWluZm8gbXQtOCBtYi0yXCI+T3B0aW9ucyAmIHNhbXBsZXM8L2gzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImRvY1BhZ2VTYW1wbGVzXCI+PC9uZy1jb250ZW50PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9ldWlUYWJDb250ZW50PlxuICAgICAgICAgICAgICAgICAgICA8L2V1aS10YWI+XG5cbiAgICAgICAgICAgICAgICAgICAgPGV1aS10YWIgKm5nSWY9XCJwYWdlVGhlbWluZ0NvbnRlbnQubGVuZ3RoID4gMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGV1aVRhYkxhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRIRU1JTkdcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZXVpVGFiTGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZXVpVGFiQ29udGVudD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDMgaWQ9XCJ0aGVtaW5nXCIgY2xhc3M9XCJldWktdS1mb250LWJvbGQgZXVpLXUtY29sb3ItaW5mbyBtdC0zIG1iLTJcIj5UaGVtaW5nPC9oMz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJkb2NQYWdlVGhlbWluZ1wiPjwvbmctY29udGVudD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZXVpVGFiQ29udGVudD5cbiAgICAgICAgICAgICAgICAgICAgPC9ldWktdGFiPlxuXG4gICAgICAgICAgICAgICAgICAgIDxldWktdGFiICpuZ0lmPVwicGFnZUludGVyYWN0aXZlQ29udGVudC5sZW5ndGggPiAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZXVpVGFiTGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3twYWdlSW50ZXJhY3RpdmVDb250ZW50LmZpcnN0LnRpdGxlfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZXVpVGFiTGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZXVpVGFiQ29udGVudD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDMgaWQ9XCJpbnRlcmFjdGl2ZVwiIGNsYXNzPVwiZXVpLXUtZm9udC1ib2xkIGV1aS11LWNvbG9yLWluZm8gbXQtMyBtYi0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7cGFnZUludGVyYWN0aXZlQ29udGVudC5maXJzdC5zdWJUaXRsZX19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9oMz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJkb2NQYWdlSW50ZXJhY3RpdmVcIj48L25nLWNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2V1aVRhYkNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgICAgIDwvZXVpLXRhYj5cbiAgICAgICAgICAgICAgICA8L2V1aS10YWJzPlxuXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInBhZ2VTZWN0aW9uc0NvbnRlbnQubGVuZ3RoID4gMFwiPlxuICAgICAgICAgICAgICAgICAgICA8aDMgaWQ9XCJkZW1vXCIgKm5nSWY9XCJzZWN0aW9ucy5sZW5ndGggPT09IDBcIiBjbGFzcz1cImV1aS11LWZvbnQtYm9sZCBldWktdS1jb2xvci1pbmZvIG10LTMgbWItMlwiPkRlbW88L2gzPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJkb2NQYWdlU2VjdGlvbnNcIj48L25nLWNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2V1aS1wYWdlLWNvbnRlbnQ+XG4gICAgICAgIDwvZXVpLXBhZ2U+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2ICpuZ0lmPVwiaXNOYXZpZ2F0aW9uVmlzaWJsZVwiIGNsYXNzPVwiZG9jLXBhZ2UtbmF2aWdhdGlvbi1jb2x1bW4gZXVpLXUtaGlkZGVuLWRlc2t0b3AtZG93blwiPlxuICAgICAgICA8ZGl2IGlkPVwiZG9jLXBhZ2UtbmF2XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZG9jLXBhZ2UtbmF2aWdhdGlvbi10aXRsZVwiPkluIHRoaXMgcGFnZTwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRvYy1wYWdlLW5hdmlnYXRpb24tY29udGVudFwiIHRhYmluZGV4PVwiMFwiPlxuICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cImRvYy1wYWdlLW5hdmlnYXRpb25cIj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInBhZ2VTZWN0aW9uc0NvbnRlbnQubGVuZ3RoID09PSAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIEFMV0FZUyBQUkVTRU5UIGluIGVhY2ggcGFnZS0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8bGkgY2xhc3M9XCJkb2MtcGFnZS1uYXZpZ2F0aW9uLWl0ZW1cIiBbY2xhc3MuZG9jLXBhZ2UtbmF2aWdhdGlvbi1pdGVtLS1zZWxlY3RlZF09XCJmcmFnbWVudElkID09PSAnb3ZlcnZpZXcnXCIgKGNsaWNrKT1cIm9uTmF2Q2xpY2soJ292ZXJ2aWV3JywgMClcIj48c3Bhbj5PVkVSVklFVzwvc3Bhbj48L2xpPiAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cImRvYy1wYWdlLW5hdmlnYXRpb24taXRlbVwiIFtjbGFzcy5kb2MtcGFnZS1uYXZpZ2F0aW9uLWl0ZW0tLXNlbGVjdGVkXT1cImZyYWdtZW50SWQgPT09ICdhcGknXCIgKGNsaWNrKT1cIm9uTmF2Q2xpY2soJ2FwaScsIDApXCI+PHNwYW4+QVBJPC9zcGFuPjwvbGk+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJkb2MtcGFnZS1uYXZpZ2F0aW9uLWl0ZW1cIiBbY2xhc3MuZG9jLXBhZ2UtbmF2aWdhdGlvbi1pdGVtLS1zZWxlY3RlZF09XCJmcmFnbWVudElkID09PSAnYTExeSdcIiAoY2xpY2spPVwib25OYXZDbGljaygnYTExeScsIDEpXCI+PHNwYW4+QTExWTwvc3Bhbj48L2xpPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwiZG9jLXBhZ2UtbmF2aWdhdGlvbi1pdGVtXCIgW2NsYXNzLmRvYy1wYWdlLW5hdmlnYXRpb24taXRlbS0tc2VsZWN0ZWRdPVwiZnJhZ21lbnRJZCA9PT0gJ3NhbXBsZXMnXCIgKGNsaWNrKT1cIm9uTmF2Q2xpY2soJ3NhbXBsZXMnLCAyKVwiPjxzcGFuPk9QVElPTlMgJiBTQU1QTEVTPC9zcGFuPjwvbGk+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJkb2MtcGFnZS1uYXZpZ2F0aW9uLWl0ZW0gZG9jLXBhZ2UtbmF2aWdhdGlvbi1zdWJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgKm5nRm9yPVwibGV0IHNhbXBsZSBvZiBzYW1wbGVzXCIgY2xhc3M9XCJkb2MtcGFnZS1uYXZpZ2F0aW9uLWxpc3RcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwiZG9jLXBhZ2UtbmF2aWdhdGlvbi1pdGVtXCIgW2NsYXNzLmRvYy1wYWdlLW5hdmlnYXRpb24taXRlbS0tc2VsZWN0ZWRdPVwiZnJhZ21lbnRJZCA9PT0gc2FtcGxlLmlkXCIgKGNsaWNrKT1cIm9uTmF2Q2xpY2soc2FtcGxlLmlkLCAyKVwiPjxzcGFuPnt7c2FtcGxlLmxhYmVsfX08L3NwYW4+PC9saT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBPUFRJT05BTCBUQUJTLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicGFnZVRoZW1pbmdDb250ZW50Lmxlbmd0aCA+IDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgKm5nSWY9XCJwYWdlVGhlbWluZ0NvbnRlbnQubGVuZ3RoID4gMFwiIGNsYXNzPVwiZG9jLXBhZ2UtbmF2aWdhdGlvbi1pdGVtXCIgW2NsYXNzLmRvYy1wYWdlLW5hdmlnYXRpb24taXRlbS0tc2VsZWN0ZWRdPVwiZnJhZ21lbnRJZCA9PT0gJ3RoZW1pbmcnXCIgKGNsaWNrKT1cIm9uTmF2Q2xpY2soJ3RoZW1pbmcnLCAzKVwiPjxzcGFuPlRIRU1JTkc8L3NwYW4+PC9saT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgKm5nSWY9XCJwYWdlSW50ZXJhY3RpdmVDb250ZW50Lmxlbmd0aCA+IDBcIiBjbGFzcz1cImRvYy1wYWdlLW5hdmlnYXRpb24taXRlbVwiIFtjbGFzcy5kb2MtcGFnZS1uYXZpZ2F0aW9uLWl0ZW0tLXNlbGVjdGVkXT1cImZyYWdtZW50SWQgPT09ICdhZHZhbmNlZCdcIiAoY2xpY2spPVwib25OYXZDbGljaygnYWR2YW5jZWQnLCA0KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57e3BhZ2VJbnRlcmFjdGl2ZUNvbnRlbnQuZmlyc3QudGl0bGV9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicGFnZVRoZW1pbmdDb250ZW50Lmxlbmd0aCAgPT09IDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgKm5nSWY9XCJwYWdlSW50ZXJhY3RpdmVDb250ZW50Lmxlbmd0aCA+IDBcIiBjbGFzcz1cImRvYy1wYWdlLW5hdmlnYXRpb24taXRlbVwiIFtjbGFzcy5kb2MtcGFnZS1uYXZpZ2F0aW9uLWl0ZW0tLXNlbGVjdGVkXT1cImZyYWdtZW50SWQgPT09ICdhZHZhbmNlZCdcIiAoY2xpY2spPVwib25OYXZDbGljaygnYWR2YW5jZWQnLCAzKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57e3BhZ2VJbnRlcmFjdGl2ZUNvbnRlbnQuZmlyc3QudGl0bGV9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJwYWdlU2VjdGlvbnNDb250ZW50Lmxlbmd0aCA+IDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cImRvYy1wYWdlLW5hdmlnYXRpb24taXRlbVwiIFtjbGFzcy5kb2MtcGFnZS1uYXZpZ2F0aW9uLWl0ZW0tLXNlbGVjdGVkXT1cImZyYWdtZW50SWQgPT09ICdzZWN0aW9ucydcIiAoY2xpY2spPVwib25OYXZDbGljaygnc2VjdGlvbnMnLCBudWxsKVwiPjxzcGFuPlNlY3Rpb25zPC9zcGFuPjwvbGk+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bGkgKm5nSWY9XCJzZWN0aW9ucy5sZW5ndGggPT09IDBcIiBjbGFzcz1cImRvYy1wYWdlLW5hdmlnYXRpb24taXRlbVwiIFtjbGFzcy5kb2MtcGFnZS1uYXZpZ2F0aW9uLWl0ZW0tLXNlbGVjdGVkXT1cImZyYWdtZW50SWQgPT09ICdkZW1vJ1wiIChjbGljayk9XCJvbk5hdkNsaWNrKCdkZW1vJywgbnVsbClcIj48c3Bhbj5EZW1vPC9zcGFuPjwvbGk+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bGkgKm5nSWY9XCJzZWN0aW9ucy5sZW5ndGggPiAwXCIgY2xhc3M9XCJkb2MtcGFnZS1uYXZpZ2F0aW9uLWl0ZW0gZG9jLXBhZ2UtbmF2aWdhdGlvbi1zdWJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgKm5nRm9yPVwibGV0IHNlY3Rpb24gb2Ygc2VjdGlvbnNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwiZG9jLXBhZ2UtbmF2aWdhdGlvbi1pdGVtXCIgW2NsYXNzLmRvYy1wYWdlLW5hdmlnYXRpb24taXRlbS0tc2VsZWN0ZWRdPVwiZnJhZ21lbnRJZCA9PT0gc2VjdGlvbi5pZFwiIChjbGljayk9XCJvbk5hdkNsaWNrKHNlY3Rpb24uaWQsIG51bGwpXCI+PHNwYW4+e3tzZWN0aW9uLmxhYmVsfX08L3NwYW4+PC9saT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
343
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jLXBhZ2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL2RvYy1wYWdlL2RvYy1wYWdlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9kb2MtcGFnZS9kb2MtcGFnZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUNULEtBQUssRUFDTCxTQUFTLEVBRVQsZUFBZSxFQUNmLFVBQVUsRUFHVixpQkFBaUIsRUFDakIsU0FBUyxHQUVaLE1BQU0sZUFBZSxDQUFDO0FBSXZCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDOzs7Ozs7Ozs7Ozs7QUFVM0UsTUFBTSxPQUFPLGdCQUFnQjtJQTJEekIsWUFDWSxNQUFjLEVBQ2QsS0FBcUIsRUFDckIsU0FBNEIsRUFDN0IsU0FBdUIsRUFDdEIsUUFBa0I7UUFKbEIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBQ3JCLGNBQVMsR0FBVCxTQUFTLENBQW1CO1FBQzdCLGNBQVMsR0FBVCxTQUFTLENBQWM7UUFDdEIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQTVEckIsZUFBVSxHQUFHLEtBQUssQ0FBQztRQUNuQixpQkFBWSxHQUFHLEtBQUssQ0FBQztRQUNyQixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBRWpCLGFBQVEsR0FBVyxJQUFJLENBQUM7UUFDeEIsd0JBQW1CLEdBQVksSUFBSSxDQUFDO1FBYTdDLGNBQVMsR0FBRyxJQUFJLENBQUM7UUFDakIsaUJBQVksR0FBRyxJQUFJLENBQUM7UUE0QlosYUFBUSxHQUFHO1lBQ2YsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxLQUFL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RDlDLFNBQVM7bUJBQUMsRUFBRSxRQUFRLEVBQUUsb0JBQW9CLEVBQUU7OEJBRWhDLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLOztBQUdWLE1BQU0sT0FBTyw4QkFBOEI7OzhJQUE5Qiw4QkFBOEI7a0lBQTlCLDhCQUE4QjsyRkFBOUIsOEJBQThCO2tCQUQxQyxTQUFTO21CQUFDLEVBQUUsUUFBUSxFQUFFLGdCQUFnQixFQUFFOztBQUd6QyxNQUFNLE9BQU8sK0JBQStCOzsrSUFBL0IsK0JBQStCO21JQUEvQiwrQkFBK0I7MkZBQS9CLCtCQUErQjtrQkFEM0MsU0FBUzttQkFBQyxFQUFFLFFBQVEsRUFBRSxpQkFBaUIsRUFBRTs7QUFHMUMsTUFBTSxPQUFPLG9DQUFvQzs7b0pBQXBDLG9DQUFvQzt3SUFBcEMsb0NBQW9DOzJGQUFwQyxvQ0FBb0M7a0JBRGhELFNBQVM7bUJBQUMsRUFBRSxRQUFRLEVBQUUsc0JBQXNCLEVBQUU7O0FBRy9DLE1BQU0sT0FBTywwQkFBMEI7OzBJQUExQiwwQkFBMEI7OEhBQTFCLDBCQUEwQjsyRkFBMUIsMEJBQTBCO2tCQUR0QyxTQUFTO21CQUFDLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRTs7QUFJckMsTUFBTSxPQUFPLDhCQUE4Qjs7OElBQTlCLDhCQUE4QjtrSUFBOUIsOEJBQThCOzJGQUE5Qiw4QkFBOEI7a0JBRDFDLFNBQVM7bUJBQUMsRUFBRSxRQUFRLEVBQUUsZ0JBQWdCLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBJbnB1dCxcbiAgICBEaXJlY3RpdmUsXG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDb250ZW50Q2hpbGRyZW4sXG4gICAgZm9yd2FyZFJlZixcbiAgICBPbkluaXQsXG4gICAgUXVlcnlMaXN0LFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uLFxuICAgIFZpZXdDaGlsZCxcbiAgICBFbGVtZW50UmVmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IExvY2F0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFNhZmVSZXNvdXJjZVVybCwgRG9tU2FuaXRpemVyIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQgeyBSb3V0ZXIsIEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IERvY1NhbXBsZUNvbXBvbmVudCB9IGZyb20gJy4uL2RvYy1zYW1wbGUvZG9jLXNhbXBsZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgRG9jU2VjdGlvbkNvbXBvbmVudCB9IGZyb20gJy4uL2RvYy1zZWN0aW9uL2RvYy1zZWN0aW9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBVeEFwcFNoZWxsU2VydmljZSB9IGZyb20gJ0BldWkvY29yZSc7XG5pbXBvcnQgeyBFdWlUYWJzQ29tcG9uZW50IH0gZnJvbSAnQGV1aS9jb21wb25lbnRzL2V1aS10YWJzJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdldWktc2hvd2Nhc2UtZG9jLXBhZ2UnLFxuICAgIHRlbXBsYXRlVXJsOiAnZG9jLXBhZ2UuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2RvYy1wYWdlLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgRG9jUGFnZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCB7XG4gICAgQElucHV0KCkgaWQ7XG4gICAgQElucHV0KCkgbGFiZWw7XG4gICAgQElucHV0KCkgc3ViTGFiZWw6IHN0cmluZztcbiAgICBASW5wdXQoKSBpc05vdFJlYWR5ID0gZmFsc2U7XG4gICAgQElucHV0KCkgaXNEZXByZWNhdGVkID0gZmFsc2U7XG4gICAgQElucHV0KCkgaXNMZWdhY3kgPSBmYWxzZTtcbiAgICBASW5wdXQoKSBjb2RlRm9sZGVyOiBzdHJpbmc7XG4gICAgQElucHV0KCkgc2hvd2Nhc2U6IHN0cmluZyA9ICd1eCc7XG4gICAgQElucHV0KCkgaXNOYXZpZ2F0aW9uVmlzaWJsZTogYm9vbGVhbiA9IHRydWU7XG5cbiAgICBzdGF0ZVR5cGVDbGFzcztcbiAgICBzdGF0ZUxhYmVsO1xuICAgIGNtcDtcbiAgICBmcmFnbWVudElkO1xuICAgIGNtcE1vZHVsZUltcG9ydDtcbiAgICBhcHBNZXRhZGF0YTtcblxuICAgIGFwaVVybFNhZmU6IFNhZmVSZXNvdXJjZVVybDtcbiAgICBhcGlVcmw6IHN0cmluZztcbiAgICBpRnJhbWVDb250ZW50O1xuXG4gICAgaXNMb2FkaW5nID0gdHJ1ZTtcbiAgICBpc05hdkNsaWNrZWQgPSB0cnVlO1xuXG4gICAgQENvbnRlbnRDaGlsZHJlbihEb2NTYW1wbGVDb21wb25lbnQsIHsgZGVzY2VuZGFudHM6IHRydWUgfSkgc2FtcGxlczogUXVlcnlMaXN0PERvY1NhbXBsZUNvbXBvbmVudD47XG4gICAgQENvbnRlbnRDaGlsZHJlbihEb2NTZWN0aW9uQ29tcG9uZW50LCB7IGRlc2NlbmRhbnRzOiB0cnVlIH0pIHNlY3Rpb25zOiBRdWVyeUxpc3Q8RG9jU2VjdGlvbkNvbXBvbmVudD47XG5cbiAgICBAQ29udGVudENoaWxkcmVuKGZvcndhcmRSZWYoKCkgPT4gRG9jUGFnZU92ZXJ2aWV3Q29udGVudERpcmVjdGl2ZSkpXG4gICAgcGFnZU92ZXJ2aWV3Q29udGVudDogUXVlcnlMaXN0PERvY1BhZ2VPdmVydmlld0NvbnRlbnREaXJlY3RpdmU+O1xuXG4gICAgQENvbnRlbnRDaGlsZHJlbihmb3J3YXJkUmVmKCgpID0+IERvY1BhZ2VTYW1wbGVzQ29udGVudERpcmVjdGl2ZSkpXG4gICAgcGFnZVNhbXBsZXNDb250ZW50OiBRdWVyeUxpc3Q8RG9jUGFnZVNhbXBsZXNDb250ZW50RGlyZWN0aXZlPjtcblxuICAgIEBDb250ZW50Q2hpbGRyZW4oZm9yd2FyZFJlZigoKSA9PiBEb2NQYWdlU2VjdGlvbnNDb250ZW50RGlyZWN0aXZlKSlcbiAgICBwYWdlU2VjdGlvbnNDb250ZW50OiBRdWVyeUxpc3Q8RG9jUGFnZVNlY3Rpb25zQ29udGVudERpcmVjdGl2ZT47XG5cbiAgICBAQ29udGVudENoaWxkcmVuKGZvcndhcmRSZWYoKCkgPT4gRG9jUGFnZUludGVyYWN0aXZlQ29udGVudERpcmVjdGl2ZSkpXG4gICAgcGFnZUludGVyYWN0aXZlQ29udGVudDogUXVlcnlMaXN0PERvY1BhZ2VJbnRlcmFjdGl2ZUNvbnRlbnREaXJlY3RpdmU+O1xuXG4gICAgQENvbnRlbnRDaGlsZHJlbihmb3J3YXJkUmVmKCgpID0+IERvY1BhZ2VBY2Nlc3NpYmlsaXR5Q29udGVudERpcmVjdGl2ZSkpXG4gICAgcGFnZUFjY2Vzc2liaWxpdHlDb250ZW50OiBRdWVyeUxpc3Q8RG9jUGFnZUFjY2Vzc2liaWxpdHlDb250ZW50RGlyZWN0aXZlPjtcblxuICAgIEBDb250ZW50Q2hpbGRyZW4oZm9yd2FyZFJlZigoKSA9PiBEb2NQYWdlQXBpQ29udGVudERpcmVjdGl2ZSkpXG4gICAgcGFnZUFwaUNvbnRlbnQ6IFF1ZXJ5TGlzdDxEb2NQYWdlQXBpQ29udGVudERpcmVjdGl2ZT47XG5cbiAgICBAQ29udGVudENoaWxkcmVuKGZvcndhcmRSZWYoKCkgPT4gRG9jUGFnZVRoZW1pbmdDb250ZW50RGlyZWN0aXZlKSlcbiAgICBwYWdlVGhlbWluZ0NvbnRlbnQ6IFF1ZXJ5TGlzdDxEb2NQYWdlVGhlbWluZ0NvbnRlbnREaXJlY3RpdmU+O1xuXG4gICAgQFZpZXdDaGlsZCgndGFic0NvbnRlbnQnKSB0YWJzQ29udGVudDogRXVpVGFic0NvbXBvbmVudDtcblxuICAgIHByaXZhdGUgVEFCU19ERUYgPSBbXG4gICAgICAgIHsgaW5kZXg6IDAsIGlkOiAnYXBpJyB9LFxuICAgICAgICB7IGluZGV4OiAxLCBpZDogJ2ExMXknIH0sXG4gICAgICAgIHsgaW5kZXg6IDIsIGlkOiAnc2FtcGxlcycgfSxcbiAgICAgICAgeyBpbmRleDogMywgaWQ6ICd0aGVtaW5nJyB9LFxuICAgICAgICB7IGluZGV4OiA0LCBpZDogJ2FkdmFuY2VkJyB9LFxuICAgIF07XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICAgICAgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgICAgIHByaXZhdGUgYXNTZXJ2aWNlOiBVeEFwcFNoZWxsU2VydmljZSxcbiAgICAgICAgcHVibGljIHNhbml0aXplcjogRG9tU2FuaXRpemVyLFxuICAgICAgICBwcml2YXRlIGxvY2F0aW9uOiBMb2NhdGlvbixcbiAgICApIHtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmFzU2VydmljZS5pc0Jsb2NrRG9jdW1lbnRBY3RpdmUgPSB0cnVlO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmFwcE1ldGFkYXRhID0gdGhpcy5hc1NlcnZpY2Uuc3RhdGUuYXBwTWV0YWRhdGE7XG5cbiAgICAgICAgaWYgKHRoaXMuaWQgJiYgIXRoaXMubGFiZWwpIHtcbiAgICAgICAgICAgIHRoaXMubGFiZWwgPSB0aGlzLmlkO1xuICAgICAgICB9XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHRoaXMuY21wID0gdGhpcy5fZ2V0Q29tcG9uZW50U3RhdHVzKHRoaXMuaWQpO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5jbXApIHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKHRoaXMuY21wLnN0YXR1cykge1xuICAgICAgICAgICAgICAgIGNhc2UgJ3N1Y2Nlc3MnOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YXRlTGFiZWwgPSAnQUNUSVZFJztcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGF0ZVR5cGVDbGFzcyA9ICdzdWNjZXNzJztcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlICd3YXJuaW5nJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGF0ZUxhYmVsID0gJ0RFUFJFQ0FURUQnO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YXRlVHlwZUNsYXNzID0gJ3dhcm5pbmcnO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzRGVwcmVjYXRlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSAnZGFuZ2VyJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGF0ZUxhYmVsID0gJ0xFR0FDWSAtIHdpbGwgYmUgcmVtb3ZlZCBpbiBuZXh0IHZlcnNpb24nO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YXRlVHlwZUNsYXNzID0gJ2Rhbmdlcic7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNMZWdhY3kgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgJ2luZm8nOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YXRlTGFiZWwgPSAnTk9UIFJFQURZJztcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGF0ZVR5cGVDbGFzcyA9ICdhY2NlbnQnO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzTm90UmVhZHkgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAvLyBjb25zdHJ1Y3QgY21wIG1vZHVsZSBpbXBvcnQgc3RyaW5nXG4gICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gICAgICAgICAgICAgICAgdGhpcy5jbXBNb2R1bGVJbXBvcnQgPSBgaW1wb3J0IHsgJHt0aGlzLmNtcC5tZXRhZGF0YT8ubW9kdWxlTmFtZX0gfSBmcm9tICdAZXVpLyR7dGhpcy5jbXAubWV0YWRhdGE/LnN1YkVudHJ5TmFtZX0nO2A7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdXYXJuaW5nLCBlcnJvcnMgZGV0ZWN0ZWQgd2hpbGUgZ2V0dGluZyBwYWdlIHN0YXRlJyk7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhlKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmZyYWdtZW50SWQgPSB0aGlzLnJvdXRlLnNuYXBzaG90LmZyYWdtZW50O1xuXG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAgICAvLyBnZXR0aW5nIEFQSSB1cmxcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHRoaXMuYXBpVXJsID0gdGhpcy5fZ2V0QXBpVXJsKCk7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgRmV0Y2hpbmcgQVBJIHVybCBmcm9tIDogJHt0aGlzLmFwaVVybH1gKTtcblxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5hcGlVcmxTYWZlID0gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFJlc291cmNlVXJsKHRoaXMuYXBpVXJsKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgbGV0IHRhYiA9IHRoaXMuVEFCU19ERUYuZmlsdGVyKHQgPT4gdC5pZCA9PT0gdGhpcy5mcmFnbWVudElkKVswXTtcbiAgICAgICAgICAgIGxldCB0YWJJbmRleDtcblxuICAgICAgICAgICAgaWYgKCF0YWIpIHtcbiAgICAgICAgICAgICAgICB0YWJJbmRleCA9IDI7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRhYkluZGV4ID0gdGFiLmluZGV4O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLl9zY3JvbGxUb0ZyYWdtZW50KHRoaXMuZnJhZ21lbnRJZCwgdGFiSW5kZXgsIHRydWUsIHRydWUpO1xuXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmFzU2VydmljZS5pc0Jsb2NrRG9jdW1lbnRBY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG9uTmF2Q2xpY2soZnJhZ21lbnRJZDogc3RyaW5nLCB0YWJJbmRleDogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuZnJhZ21lbnRJZCA9IGZyYWdtZW50SWQ7XG4gICAgICAgIHRoaXMuaXNOYXZDbGlja2VkID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5fc2Nyb2xsVG9GcmFnbWVudCh0aGlzLmZyYWdtZW50SWQsIHRhYkluZGV4LCBmYWxzZSwgdHJ1ZSk7XG4gICAgfVxuXG4gICAgb25UYWJTZWxlY3RlZChldmVudDogYW55KSB7XG4gICAgICAgIGlmICghdGhpcy5pc0xvYWRpbmcgJiYgIXRoaXMuaXNOYXZDbGlja2VkKSB7XG4gICAgICAgICAgICBsZXQgdGFiSWQgPSB0aGlzLlRBQlNfREVGLmZpbHRlcih0ID0+IHQuaW5kZXggPT09IGV2ZW50LmluZGV4KVswXS5pZDtcbiAgICAgICAgICAgIHRoaXMuX3Njcm9sbFRvRnJhZ21lbnQodGFiSWQsIGV2ZW50LmluZGV4LCBmYWxzZSwgZmFsc2UpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuaXNOYXZDbGlja2VkID0gZmFsc2U7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfc2Nyb2xsVG9GcmFnbWVudChmcmFnbWVudElkOiBzdHJpbmcsIHRhYkluZGV4OiBudW1iZXIsIGluaXQ6IGJvb2xlYW4sIGNoYW5nZVRhYjogYm9vbGVhbikge1xuICAgICAgICBpZiAoaW5pdCkge1xuICAgICAgICAgICAgaWYgKHRoaXMudGFic0NvbnRlbnQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnRhYnNDb250ZW50LmNoYW5nZVRhYih0YWJJbmRleCk7XG5cbiAgICAgICAgICAgICAgICBpZiAoZnJhZ21lbnRJZCkge1xuICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGZnbSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGZyYWdtZW50SWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgeU9mZnNldCA9IC04MDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmZ20pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB5ID0gZmdtLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcCArIHdpbmRvdy5wYWdlWU9mZnNldCArIHlPZmZzZXQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93LnNjcm9sbFRvKHt0b3A6IHl9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKGNoYW5nZVRhYikge1xuICAgICAgICAgICAgICAgIHRoaXMucm91dGVyLm9uU2FtZVVybE5hdmlnYXRpb24gPSAncmVsb2FkJztcbiAgICAgICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy4nXSwgeyByZWxhdGl2ZVRvOiB0aGlzLnJvdXRlLCBmcmFnbWVudDogZnJhZ21lbnRJZCB9KS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMudGFic0NvbnRlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGFic0NvbnRlbnQuY2hhbmdlVGFiKHRhYkluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCByb3V0ZVJvb3QgPSB0aGlzLnJvdXRlci51cmwuc3BsaXQoJyMnKVswXTtcbiAgICAgICAgICAgICAgICB0aGlzLmxvY2F0aW9uLmdvKGAke3JvdXRlUm9vdH0jJHtmcmFnbWVudElkfWApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfZ2V0Q29tcG9uZW50U3RhdHVzKGlkKSB7XG5cbiAgICAgICAgY29uc3QgZmxhdHRlbiA9IChsaW5rcykgPT4gbGlua3MgPyBsaW5rcy5yZWR1Y2UoKHJlc3VsdCwgaXRlbSkgPT4gW1xuICAgICAgICAgICAgICAgIC4uLnJlc3VsdCxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiBpdGVtLmxhYmVsLFxuICAgICAgICAgICAgICAgICAgICBhbHRlcm5hdGVJZDogaXRlbS5uYW1lLFxuICAgICAgICAgICAgICAgICAgICBzdGF0dXM6IGl0ZW0ubWFya2VyVHlwZUNsYXNzLFxuICAgICAgICAgICAgICAgICAgICBjbXBSZXBsYWNlbWVudDogaXRlbS5jbXBSZXBsYWNlbWVudCxcbiAgICAgICAgICAgICAgICAgICAgY21wUmVwbGFjZW1lbnRVcmw6IGl0ZW0uY21wUmVwbGFjZW1lbnRVcmwsXG4gICAgICAgICAgICAgICAgICAgIGNtcFJlcGxhY2VtZW50Tm90ZTogaXRlbS5jbXBSZXBsYWNlbWVudE5vdGUsXG4gICAgICAgICAgICAgICAgICAgIGFsdGVybmF0ZUFwaUNhdGVnb3J5OiBpdGVtLmFsdGVybmF0ZUFwaUNhdGVnb3J5LFxuICAgICAgICAgICAgICAgICAgICBtZXRhZGF0YTogaXRlbS5tZXRhZGF0YSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIC4uLmZsYXR0ZW4oaXRlbS5jaGlsZHJlbilcbiAgICAgICAgICAgIF0sIFtdKSA6IFtdO1xuXG4gICAgICAgIGNvbnN0IGZsYXRMaW5rcyA9IGZsYXR0ZW4odGhpcy5hc1NlcnZpY2Uuc3RhdGUuc2lkZWJhckxpbmtzKTtcbiAgICAgICAgY29uc3QgaWRCYXNlZENtcCA9IGZsYXRMaW5rcy5maWx0ZXIoKGl0ZW0pID0+IGl0ZW0uaWQgPT09IGlkKVswXTtcbiAgICAgICAgaWYgKGlkQmFzZWRDbXApIHtcbiAgICAgICAgICAgIHJldHVybiBpZEJhc2VkQ21wO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgYWx0ZXJuYXRlSWRCYXNlZENtcCA9IGZsYXRMaW5rcy5maWx0ZXIoKGl0ZW0pID0+IGl0ZW0uYWx0ZXJuYXRlSWQgPT09IGlkKVswXTtcbiAgICAgICAgICAgIHJldHVybiBhbHRlcm5hdGVJZEJhc2VkQ21wO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfZ2V0QXBpVXJsKCkge1xuICAgICAgICBjb25zdCB1cmwgPSB3aW5kb3cubG9jYXRpb247XG4gICAgICAgIGNvbnN0IHByb3RvY29sID0gdXJsLnByb3RvY29sO1xuICAgICAgICBjb25zdCBob3N0ID0gdXJsLmhvc3Q7XG4gICAgICAgIGNvbnN0IHBhdGhOYW1lID0gdXJsLnBhdGhuYW1lO1xuICAgICAgICBjb25zdCBwYXRoTmFtZUFycmF5ID0gcGF0aE5hbWUuc3BsaXQoJy8nKTtcbiAgICAgICAgY29uc3QgbmFtZSA9IHBhdGhOYW1lQXJyYXlbcGF0aE5hbWVBcnJheS5sZW5ndGggLSAxXTtcbiAgICAgICAgbGV0IGNhdGVnb3J5ID0gcGF0aE5hbWVBcnJheVtwYXRoTmFtZUFycmF5Lmxlbmd0aCAtIDJdO1xuXG4gICAgICAgIGxldCBwcm90b2NvbEdlbiA9IHByb3RvY29sLCBob3N0R2VuID0gaG9zdDtcblxuICAgICAgICBpZiAoaG9zdC5pbmRleE9mKCdsb2NhbGhvc3QnKSA+IC0xKSB7XG4gICAgICAgICAgICBwcm90b2NvbEdlbiA9ICdodHRwczonO1xuICAgICAgICAgICAgaG9zdEdlbiA9ICdldWlkZXYuZWNkZXZvcHMuZXUnO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgYXBwVmVyc2lvbk51bWJlciA9IHRoaXMuYXBwTWV0YWRhdGEuYXBwVmVyc2lvbi5zcGxpdCgnLicpWzBdO1xuICAgICAgICBjb25zdCBkb2NUeXBlUm9vdCA9IGBldWktZG9jcy1ldWktJHthcHBWZXJzaW9uTnVtYmVyfS54YDtcblxuICAgICAgICBpZiAoY2F0ZWdvcnkgPT09ICdsYXlvdXQtY29tcG9uZW50cycgfHwgY2F0ZWdvcnkgPT09ICdleHRlcm5hbHMnKSB7XG4gICAgICAgICAgICBjYXRlZ29yeSA9ICdjb21wb25lbnRzJztcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGNtcCA9IHRoaXMuX2dldENvbXBvbmVudFN0YXR1cyhuYW1lKTtcblxuICAgICAgICBpZiAoY21wLmFsdGVybmF0ZUFwaUNhdGVnb3J5KSB7XG4gICAgICAgICAgICBjYXRlZ29yeSA9IGNtcC5hbHRlcm5hdGVBcGlDYXRlZ29yeTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGZvcm1hdHRlZE5hbWUgPSB0aGlzLl9jYW1lbENhc2VTdHJpbmcobmFtZSArICctJyArIGNhdGVnb3J5LnNsaWNlKDAsIC0xKSwgJy0nLCB0cnVlKTtcbiAgICAgICAgY29uc3QgZG9jUGF0aCA9IGAke3Byb3RvY29sR2VufS8vJHtob3N0R2VufS8ke2RvY1R5cGVSb290fS8ke2NhdGVnb3J5fS8ke2Zvcm1hdHRlZE5hbWV9Lmh0bWxgO1xuXG4gICAgICAgIGNvbnNvbGUubG9nKGBmZXRjaGluZyBBUEkgZnJvbTogJHtkb2NQYXRofWApO1xuXG4gICAgICAgIHJldHVybiBkb2NQYXRoO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2NhbWVsQ2FzZVN0cmluZyhzdHJpbmcsIHNlcGFyYXRvciwgZmlyc3QpIHtcbiAgICAgICAgY29uc3Qgc3RyaW5nQXJyYXkgPSBzdHJpbmcuc3BsaXQoc2VwYXJhdG9yKTtcbiAgICAgICAgbGV0IHJlc3VsdCA9ICcnO1xuICAgICAgICBsZXQgcztcblxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHN0cmluZ0FycmF5Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBzID0gc3RyaW5nQXJyYXlbaV07XG4gICAgICAgICAgICBpZiAoaSA9PT0gMCkge1xuICAgICAgICAgICAgICAgIGlmIChmaXJzdCkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gcy5zdWJzdHJpbmcoMCwgMSkudG9VcHBlckNhc2UoKSArIHMuc3Vic3RyKDEpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSBzO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0ICs9IHMuc3Vic3RyaW5nKDAsIDEpLnRvVXBwZXJDYXNlKCkgKyBzLnN1YnN0cigxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG59XG5cbi8qIGVzbGludC1kaXNhYmxlIEBhbmd1bGFyLWVzbGludC9kaXJlY3RpdmUtc2VsZWN0b3IgKi9cbkBEaXJlY3RpdmUoeyBzZWxlY3RvcjogJ2RvY1BhZ2VPdmVydmlldycgfSlcbmV4cG9ydCBjbGFzcyBEb2NQYWdlT3ZlcnZpZXdDb250ZW50RGlyZWN0aXZlIHsgfVxuQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnZG9jUGFnZUludGVyYWN0aXZlJyB9KVxuZXhwb3J0IGNsYXNzIERvY1BhZ2VJbnRlcmFjdGl2ZUNvbnRlbnREaXJlY3RpdmUge1xuICAgIEBJbnB1dCgpIHRpdGxlOiBzdHJpbmcgPSAnQURWQU5DRUQgRVhBTVBMRVMnO1xuICAgIEBJbnB1dCgpIHN1YlRpdGxlOiBzdHJpbmcgPSAnQWR2YW5jZWQgdXNlIGNhc2VzJztcbn1cbkBEaXJlY3RpdmUoeyBzZWxlY3RvcjogJ2RvY1BhZ2VTYW1wbGVzJyB9KVxuZXhwb3J0IGNsYXNzIERvY1BhZ2VTYW1wbGVzQ29udGVudERpcmVjdGl2ZSB7IH1cbkBEaXJlY3RpdmUoeyBzZWxlY3RvcjogJ2RvY1BhZ2VTZWN0aW9ucycgfSlcbmV4cG9ydCBjbGFzcyBEb2NQYWdlU2VjdGlvbnNDb250ZW50RGlyZWN0aXZlIHsgfVxuQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnZG9jUGFnZUFjY2Vzc2liaWxpdHknIH0pXG5leHBvcnQgY2xhc3MgRG9jUGFnZUFjY2Vzc2liaWxpdHlDb250ZW50RGlyZWN0aXZlIHsgfVxuQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnZG9jUGFnZUFwaScgfSlcbmV4cG9ydCBjbGFzcyBEb2NQYWdlQXBpQ29udGVudERpcmVjdGl2ZSB7IH1cblxuQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnZG9jUGFnZVRoZW1pbmcnIH0pXG5leHBvcnQgY2xhc3MgRG9jUGFnZVRoZW1pbmdDb250ZW50RGlyZWN0aXZlIHsgfVxuLyogZXNsaW50LWVuYWJsZSBAYW5ndWxhci1lc2xpbnQvZGlyZWN0aXZlLXNlbGVjdG9yICovXG4iLCI8ZGl2IGNsYXNzPVwiZG9jLXBhZ2UtbmF2aWdhdGlvbi13cmFwcGVyXCIgW2NsYXNzLmV1aS11LWhpZGRlbl09XCJpc0xvYWRpbmdcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZG9jLXBhZ2UtbWFpbi1jb2x1bW5cIj5cbiAgICAgICAgPGV1aS1wYWdlPlxuICAgICAgICAgICAgPGV1aS1wYWdlLWhlYWRlciBsYWJlbD1cInt7bGFiZWx9fVwiIHN1YkxhYmVsPVwie3tzdWJMYWJlbH19XCI+XG4gICAgICAgICAgICAgICAgPGV1aS1wYWdlLWhlYWRlci1hY3Rpb24taXRlbXM+XG4gICAgICAgICAgICAgICAgICAgIDxldWktc2hvd2Nhc2UtZG9jLXBhZ2UtY29kZSAqbmdJZj1cImNvZGVGb2xkZXJcIiBjb2RlRm9sZGVyPVwie3tjb2RlRm9sZGVyfX1cIiBzaG93Y2FzZT1cInt7c2hvd2Nhc2V9fVwiPjwvZXVpLXNob3djYXNlLWRvYy1wYWdlLWNvZGU+XG4gICAgICAgICAgICAgICAgICAgIDxldWktY2hpcCAqbmdJZj1cInN0YXRlTGFiZWxcIiBbZXVpU3VjY2Vzc109XCJzdGF0ZUxhYmVsID09PSAnQUNUSVZFJ1wiIFtldWlXYXJuaW5nXT1cInN0YXRlTGFiZWwgPT09ICdERVBSRUNBVEVEJ1wiIFtldWlEYW5nZXJdPVwiaXNMZWdhY3lcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGV1aUxhYmVsPjxzdHJvbmc+e3tzdGF0ZUxhYmVsfX08L3N0cm9uZz48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvZXVpLWNoaXA+XG4gICAgICAgICAgICAgICAgPC9ldWktcGFnZS1oZWFkZXItYWN0aW9uLWl0ZW1zPlxuICAgICAgICAgICAgPC9ldWktcGFnZS1oZWFkZXI+XG5cbiAgICAgICAgICAgIDxldWktcGFnZS1jb250ZW50PlxuICAgICAgICAgICAgICAgIDxldWktYWxlcnQgKm5nSWY9XCJzdGF0ZUxhYmVsID09PSAnTEVHQUNZJyB8fCBpc0xlZ2FjeVwiIGV1aURhbmdlcj5cbiAgICAgICAgICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGNvbXBvbmVudCB3aWxsIGJlIDxzdHJvbmcgY2xhc3M9XCJldWktdS1jb2xvci1kYW5nZXJcIj5yZW1vdmVkPC9zdHJvbmc+IGluIHRoZSBuZXh0IHZlcnNpb24gb2YgZVVJICEhXG4gICAgICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImNtcFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImNtcC5jbXBSZXBsYWNlbWVudCAhPT0gJ05PTkUnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgSXQgaGFzIGJlZW4gcmVwbGFjZWQgYnkgOiA8c3Ryb25nIGNsYXNzPVwiZXVpLXUtY29sb3Itc3VjY2Vzcy1kYXJrZXN0XCI+e3tjbXAuY21wUmVwbGFjZW1lbnR9fTwvc3Ryb25nPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGRpdiAqbmdJZj1cImNtcC5jbXBSZXBsYWNlbWVudFVybFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnI+PGJyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIGZpbmQgbW9yZSBpbmZvcm1hdGlvbiBvbiB0aGUgbmV3IGNvbXBvbmVudCBoZXJlIDogPGEgW3JvdXRlckxpbmtdPVwiY21wLmNtcFJlcGxhY2VtZW50VXJsXCI+e3tjbXAuY21wUmVwbGFjZW1lbnRVcmx9fTwvYT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJjbXAuY21wUmVwbGFjZW1lbnQgPT09ICdOT05FJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgY29tcG9uZW50IHdpbGwgYmUgPHN0cm9uZyBjbGFzcz1cImV1aS11LWNvbG9yLWRhbmdlclwiPmRpc2NvbnRpbnVlZCBpbiBmdXR1cmUgdmVyc2lvbiBvZiBlVUk8L3N0cm9uZz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImNtcC5jbXBSZXBsYWNlbWVudE5vdGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nIGNsYXNzPVwiZXVpLXUtY29sb3Itd2FybmluZ1wiPnt7Y21wLmNtcFJlcGxhY2VtZW50Tm90ZX19PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9ldWktYWxlcnQ+XG5cbiAgICAgICAgICAgICAgICA8ZXVpLWFsZXJ0ICpuZ0lmPVwic3RhdGVMYWJlbCA9PT0gJ0RFUFJFQ0FURUQnIHx8IGlzRGVwcmVjYXRlZFwiIGV1aVdhcm5pbmc+XG4gICAgICAgICAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBjb21wb25lbnQgaGFzIGJlZW4gPHN0cm9uZyBjbGFzcz1cImV1aS11LWNvbG9yLWRhbmdlclwiPmRlcHJlY2F0ZWQ8L3N0cm9uZz5cbiAgICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiY21wXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGNvbXBvbmVudCBoYXMgbm8gcmVwbGFjZW1lbnQgaW4gY3VycmVudCB2ZXJzaW9uIEFORCB3b24ndCBoYXZlIHJlcGxhY2VtZW50IGluIG5leHQgdmVyc2lvbiBvZiBlVUksIGl0IGlzIGtlcHQgZm9yIDxzdHJvbmcgY2xhc3M9XCJldWktdS1jb2xvci13YXJuaW5nXCI+aGlzdG9yaWNhbCB1c2FnZSBvbmx5PC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZXVpLWFsZXJ0PlxuXG4gICAgICAgICAgICAgICAgPGV1aS1hbGVydCAqbmdJZj1cInN0YXRlTGFiZWwgPT09ICdOT1RfUkVBRFknIHx8IGlzTm90UmVhZHlcIiBldWlJbmZvPlxuICAgICAgICAgICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgY29tcG9uZW50IGlzIDxzdHJvbmcgY2xhc3M9XCJldWktdS1jb2xvci1pbmZvXCI+Tk9UIFJFQURZPC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImNtcFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBjb21wb25lbnQgaXMgdW5kZXIgZGV2ZWxvcG1lbnQgLyBzb21lIGZlYXR1cmVzIG1pZ2h0IGJlIG1pc3NpbmcsIGl0J2xsIGJlIGF2YWlsYWJsZSBpbiBhIGZ1dHVyZSByZWxlYXNlIG9uY2UgdmFsaWRhdGVkLlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2V1aS1hbGVydD5cblxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIoc3RhdGVMYWJlbCB8fCBpc05vdFJlYWR5IHx8IGlzRGVwcmVjYXRlZCkgJiYgc3RhdGVMYWJlbCAhPT0gJ0FDVElWRSdcIiBjbGFzcz1cIm1iLTVcIj48L2Rpdj5cblxuXG4gICAgICAgICAgICAgICAgPGV1aS10YWJzICN0YWJzQ29udGVudCAqbmdJZj1cInBhZ2VTZWN0aW9uc0NvbnRlbnQubGVuZ3RoID09PSAwXCIgKHRhYlNlbGVjdGVkKT1cIm9uVGFiU2VsZWN0ZWQoJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgICAgICA8ZXVpLXRhYj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxldWlUYWJMYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBBUElcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZXVpVGFiTGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZXVpVGFiQ29udGVudD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYXBpVXJsU2FmZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleC1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9XCJ7e2FwaVVybH19XCIgdGFyZ2V0PVwiX2JsYW5rXCIgY2xhc3M9XCJtcy1hdXRvIHBiLTIgZXVpLXUtdGV4dC1saW5rLWV4dGVybmFsXCI+T3BlbiBBUEkgcGFnZTwvYT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkb2MtcGFnZS1hcGktaWZyYW1lLXdyYXBwZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpZnJhbWUgaWQ9XCJpZnJhbWVfYXBpXCIgW3dpZHRoXT1cIicxMDAlJ1wiIGhlaWdodD1cIjcwMHB4XCIgZnJhbWVCb3JkZXI9XCIwXCIgW3NyY109XCJhcGlVcmxTYWZlXCI+PC9pZnJhbWU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9ldWlUYWJDb250ZW50PlxuICAgICAgICAgICAgICAgICAgICA8L2V1aS10YWI+XG5cbiAgICAgICAgICAgICAgICAgICAgPGV1aS10YWI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZXVpVGFiTGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQTExWVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9ldWlUYWJMYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxldWlUYWJDb250ZW50PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMyBpZD1cImFjY2Vzc2liaWxpdHlcIiBjbGFzcz1cImV1aS11LWZvbnQtYm9sZCBldWktdS1jb2xvci1pbmZvIG10LTMgbWItMlwiPkFjY2Vzc2liaWxpdHk8L2gzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImRvY1BhZ2VBY2Nlc3NpYmlsaXR5XCI+PC9uZy1jb250ZW50PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9ldWlUYWJDb250ZW50PlxuICAgICAgICAgICAgICAgICAgICA8L2V1aS10YWI+XG5cbiAgICAgICAgICAgICAgICAgICAgPGV1aS10YWI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZXVpVGFiTGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BUSU9OUyAmIFNBTVBMRVNcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZXVpVGFiTGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZXVpVGFiQ29udGVudD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY21wICYmIGNtcC5tZXRhZGF0YVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9XCJldWktdS1mb250LWJvbGQgZXVpLXUtY29sb3ItaW5mbyBtdC0zIG1iLTNcIj5Nb2R1bGUgaW1wb3J0PC9oMz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByZT48Y29kZSBjbGFzcz1cImxhbmd1YWdlLWphdmFzY3JpcHQgZXVpLXUtYmctY29sb3ItZ3JleS01XCIgZXVpQ29kZT57eyBjbXBNb2R1bGVJbXBvcnQgfX08L2NvZGU+PC9wcmU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxicj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMyBpZD1cIm92ZXJ2aWV3XCIgY2xhc3M9XCJldWktdS1mb250LWJvbGQgZXVpLXUtY29sb3ItaW5mbyBtdC0zIG1iLTNcIj5PdmVydmlldyAmIHNldHVwPC9oMz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicGFnZU92ZXJ2aWV3Q29udGVudC5sZW5ndGggPiAwOyBlbHNlIG5vT3ZlcnZpZXdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiZG9jUGFnZU92ZXJ2aWV3XCI+PC9uZy1jb250ZW50PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbm9PdmVydmlldz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29taW5nIHNvb24uLi5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxicj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMyBpZD1cInNhbXBsZXNcIiBjbGFzcz1cImV1aS11LWZvbnQtYm9sZCBldWktdS1jb2xvci1pbmZvIG10LTggbWItMlwiPk9wdGlvbnMgJiBzYW1wbGVzPC9oMz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJkb2NQYWdlU2FtcGxlc1wiPjwvbmctY29udGVudD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZXVpVGFiQ29udGVudD5cbiAgICAgICAgICAgICAgICAgICAgPC9ldWktdGFiPlxuXG4gICAgICAgICAgICAgICAgICAgIDxldWktdGFiICpuZ0lmPVwicGFnZVRoZW1pbmdDb250ZW50Lmxlbmd0aCA+IDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxldWlUYWJMYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSEVNSU5HXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2V1aVRhYkxhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGV1aVRhYkNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgzIGlkPVwidGhlbWluZ1wiIGNsYXNzPVwiZXVpLXUtZm9udC1ib2xkIGV1aS11LWNvbG9yLWluZm8gbXQtMyBtYi0yXCI+VGhlbWluZzwvaDM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiZG9jUGFnZVRoZW1pbmdcIj48L25nLWNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2V1aVRhYkNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgICAgIDwvZXVpLXRhYj5cblxuICAgICAgICAgICAgICAgICAgICA8ZXVpLXRhYiAqbmdJZj1cInBhZ2VJbnRlcmFjdGl2ZUNvbnRlbnQubGVuZ3RoID4gMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGV1aVRhYkxhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7cGFnZUludGVyYWN0aXZlQ29udGVudC5maXJzdC50aXRsZX19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2V1aVRhYkxhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGV1aVRhYkNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgzIGlkPVwiaW50ZXJhY3RpdmVcIiBjbGFzcz1cImV1aS11LWZvbnQtYm9sZCBldWktdS1jb2xvci1pbmZvIG10LTMgbWItMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e3BhZ2VJbnRlcmFjdGl2ZUNvbnRlbnQuZmlyc3Quc3ViVGl0bGV9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaDM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiZG9jUGFnZUludGVyYWN0aXZlXCI+PC9uZy1jb250ZW50PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9ldWlUYWJDb250ZW50PlxuICAgICAgICAgICAgICAgICAgICA8L2V1aS10YWI+XG4gICAgICAgICAgICAgICAgPC9ldWktdGFicz5cblxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJwYWdlU2VjdGlvbnNDb250ZW50Lmxlbmd0aCA+IDBcIj5cbiAgICAgICAgICAgICAgICAgICAgPGgzIGlkPVwiZGVtb1wiICpuZ0lmPVwic2VjdGlvbnMubGVuZ3RoID09PSAwXCIgY2xhc3M9XCJldWktdS1mb250LWJvbGQgZXVpLXUtY29sb3ItaW5mbyBtdC0zIG1iLTJcIj5EZW1vPC9oMz5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiZG9jUGFnZVNlY3Rpb25zXCI+PC9uZy1jb250ZW50PlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9ldWktcGFnZS1jb250ZW50PlxuICAgICAgICA8L2V1aS1wYWdlPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiAqbmdJZj1cImlzTmF2aWdhdGlvblZpc2libGVcIiBjbGFzcz1cImRvYy1wYWdlLW5hdmlnYXRpb24tY29sdW1uIGV1aS11LWhpZGRlbi1kZXNrdG9wLWRvd25cIj5cbiAgICAgICAgPGRpdiBpZD1cImRvYy1wYWdlLW5hdlwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRvYy1wYWdlLW5hdmlnYXRpb24tdGl0bGVcIj5JbiB0aGlzIHBhZ2U8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkb2MtcGFnZS1uYXZpZ2F0aW9uLWNvbnRlbnRcIiB0YWJpbmRleD1cIjBcIj5cbiAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJkb2MtcGFnZS1uYXZpZ2F0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJwYWdlU2VjdGlvbnNDb250ZW50Lmxlbmd0aCA9PT0gMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBBTFdBWVMgUFJFU0VOVCBpbiBlYWNoIHBhZ2UtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGxpIGNsYXNzPVwiZG9jLXBhZ2UtbmF2aWdhdGlvbi1pdGVtXCIgW2NsYXNzLmRvYy1wYWdlLW5hdmlnYXRpb24taXRlbS0tc2VsZWN0ZWRdPVwiZnJhZ21lbnRJZCA9PT0gJ292ZXJ2aWV3J1wiIChjbGljayk9XCJvbk5hdkNsaWNrKCdvdmVydmlldycsIDApXCI+PHNwYW4+T1ZFUlZJRVc8L3NwYW4+PC9saT4gLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJkb2MtcGFnZS1uYXZpZ2F0aW9uLWl0ZW1cIiBbY2xhc3MuZG9jLXBhZ2UtbmF2aWdhdGlvbi1pdGVtLS1zZWxlY3RlZF09XCJmcmFnbWVudElkID09PSAnYXBpJ1wiIChjbGljayk9XCJvbk5hdkNsaWNrKCdhcGknLCAwKVwiPjxzcGFuPkFQSTwvc3Bhbj48L2xpPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwiZG9jLXBhZ2UtbmF2aWdhdGlvbi1pdGVtXCIgW2NsYXNzLmRvYy1wYWdlLW5hdmlnYXRpb24taXRlbS0tc2VsZWN0ZWRdPVwiZnJhZ21lbnRJZCA9PT0gJ2ExMXknXCIgKGNsaWNrKT1cIm9uTmF2Q2xpY2soJ2ExMXknLCAxKVwiPjxzcGFuPkExMVk8L3NwYW4+PC9saT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cImRvYy1wYWdlLW5hdmlnYXRpb24taXRlbVwiIFtjbGFzcy5kb2MtcGFnZS1uYXZpZ2F0aW9uLWl0ZW0tLXNlbGVjdGVkXT1cImZyYWdtZW50SWQgPT09ICdzYW1wbGVzJ1wiIChjbGljayk9XCJvbk5hdkNsaWNrKCdzYW1wbGVzJywgMilcIj48c3Bhbj5PUFRJT05TICYgU0FNUExFUzwvc3Bhbj48L2xpPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwiZG9jLXBhZ2UtbmF2aWdhdGlvbi1pdGVtIGRvYy1wYWdlLW5hdmlnYXRpb24tc3ViXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsICpuZ0Zvcj1cImxldCBzYW1wbGUgb2Ygc2FtcGxlc1wiIGNsYXNzPVwiZG9jLXBhZ2UtbmF2aWdhdGlvbi1saXN0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cImRvYy1wYWdlLW5hdmlnYXRpb24taXRlbVwiIFtjbGFzcy5kb2MtcGFnZS1uYXZpZ2F0aW9uLWl0ZW0tLXNlbGVjdGVkXT1cImZyYWdtZW50SWQgPT09IHNhbXBsZS5pZFwiIChjbGljayk9XCJvbk5hdkNsaWNrKHNhbXBsZS5pZCwgMilcIj48c3Bhbj57e3NhbXBsZS5sYWJlbH19PC9zcGFuPjwvbGk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gT1BUSU9OQUwgVEFCUy0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInBhZ2VUaGVtaW5nQ29udGVudC5sZW5ndGggPiAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpICpuZ0lmPVwicGFnZVRoZW1pbmdDb250ZW50Lmxlbmd0aCA+IDBcIiBjbGFzcz1cImRvYy1wYWdlLW5hdmlnYXRpb24taXRlbVwiIFtjbGFzcy5kb2MtcGFnZS1uYXZpZ2F0aW9uLWl0ZW0tLXNlbGVjdGVkXT1cImZyYWdtZW50SWQgPT09ICd0aGVtaW5nJ1wiIChjbGljayk9XCJvbk5hdkNsaWNrKCd0aGVtaW5nJywgMylcIj48c3Bhbj5USEVNSU5HPC9zcGFuPjwvbGk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpICpuZ0lmPVwicGFnZUludGVyYWN0aXZlQ29udGVudC5sZW5ndGggPiAwXCIgY2xhc3M9XCJkb2MtcGFnZS1uYXZpZ2F0aW9uLWl0ZW1cIiBbY2xhc3MuZG9jLXBhZ2UtbmF2aWdhdGlvbi1pdGVtLS1zZWxlY3RlZF09XCJmcmFnbWVudElkID09PSAnYWR2YW5jZWQnXCIgKGNsaWNrKT1cIm9uTmF2Q2xpY2soJ2FkdmFuY2VkJywgNClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3twYWdlSW50ZXJhY3RpdmVDb250ZW50LmZpcnN0LnRpdGxlfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInBhZ2VUaGVtaW5nQ29udGVudC5sZW5ndGggID09PSAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpICpuZ0lmPVwicGFnZUludGVyYWN0aXZlQ29udGVudC5sZW5ndGggPiAwXCIgY2xhc3M9XCJkb2MtcGFnZS1uYXZpZ2F0aW9uLWl0ZW1cIiBbY2xhc3MuZG9jLXBhZ2UtbmF2aWdhdGlvbi1pdGVtLS1zZWxlY3RlZF09XCJmcmFnbWVudElkID09PSAnYWR2YW5jZWQnXCIgKGNsaWNrKT1cIm9uTmF2Q2xpY2soJ2FkdmFuY2VkJywgMylcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3twYWdlSW50ZXJhY3RpdmVDb250ZW50LmZpcnN0LnRpdGxlfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicGFnZVNlY3Rpb25zQ29udGVudC5sZW5ndGggPiAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJkb2MtcGFnZS1uYXZpZ2F0aW9uLWl0ZW1cIiBbY2xhc3MuZG9jLXBhZ2UtbmF2aWdhdGlvbi1pdGVtLS1zZWxlY3RlZF09XCJmcmFnbWVudElkID09PSAnc2VjdGlvbnMnXCIgKGNsaWNrKT1cIm9uTmF2Q2xpY2soJ3NlY3Rpb25zJywgbnVsbClcIj48c3Bhbj5TZWN0aW9uczwvc3Bhbj48L2xpPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpICpuZ0lmPVwic2VjdGlvbnMubGVuZ3RoID09PSAwXCIgY2xhc3M9XCJkb2MtcGFnZS1uYXZpZ2F0aW9uLWl0ZW1cIiBbY2xhc3MuZG9jLXBhZ2UtbmF2aWdhdGlvbi1pdGVtLS1zZWxlY3RlZF09XCJmcmFnbWVudElkID09PSAnZGVtbydcIiAoY2xpY2spPVwib25OYXZDbGljaygnZGVtbycsIG51bGwpXCI+PHNwYW4+RGVtbzwvc3Bhbj48L2xpPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpICpuZ0lmPVwic2VjdGlvbnMubGVuZ3RoID4gMFwiIGNsYXNzPVwiZG9jLXBhZ2UtbmF2aWdhdGlvbi1pdGVtIGRvYy1wYWdlLW5hdmlnYXRpb24tc3ViXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsICpuZ0Zvcj1cImxldCBzZWN0aW9uIG9mIHNlY3Rpb25zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cImRvYy1wYWdlLW5hdmlnYXRpb24taXRlbVwiIFtjbGFzcy5kb2MtcGFnZS1uYXZpZ2F0aW9uLWl0ZW0tLXNlbGVjdGVkXT1cImZyYWdtZW50SWQgPT09IHNlY3Rpb24uaWRcIiAoY2xpY2spPVwib25OYXZDbGljayhzZWN0aW9uLmlkLCBudWxsKVwiPjxzcGFuPnt7c2VjdGlvbi5sYWJlbH19PC9zcGFuPjwvbGk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|