@ethlete/cdk 4.17.1 → 4.18.0
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/CHANGELOG.md +16 -0
- package/esm2022/lib/components/overlay/components/overlay/components/overlay-container/overlay-container.component.mjs +3 -3
- package/esm2022/lib/components/overlay/utils/overlay-dismiss-checker.util.mjs +5 -3
- package/esm2022/lib/components/tabs/components/inline-tabs/inline-tabs.component.mjs +3 -3
- package/fesm2022/ethlete-cdk.mjs +8 -6
- package/fesm2022/ethlete-cdk.mjs.map +1 -1
- package/lib/components/overlay/utils/overlay-dismiss-checker.util.d.ts +8 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,21 @@
|
|
|
1
1
|
# @ethlete/cdk
|
|
2
2
|
|
|
3
|
+
## 4.18.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- [`04718f6`](https://github.com/ethlete-io/ethdk/commit/04718f6607268c14168316b164d2541166d4c1c8) Thanks [@TomTomB](https://github.com/TomTomB)! - Add compare fn option to the overlay dismiss checker util
|
|
8
|
+
|
|
9
|
+
### Patch Changes
|
|
10
|
+
|
|
11
|
+
- [`6beb34e`](https://github.com/ethlete-io/ethdk/commit/6beb34ea2c00259b1e224cd4548625c709ae6af3) Thanks [@TomTomB](https://github.com/TomTomB)! - Fix overflow issues when the overlay main is not applied via host directive but instead is a sibling of the host element.
|
|
12
|
+
|
|
13
|
+
## 4.17.2
|
|
14
|
+
|
|
15
|
+
### Patch Changes
|
|
16
|
+
|
|
17
|
+
- [`ece485f`](https://github.com/ethlete-io/ethdk/commit/ece485f51b3bcd132c4ea19a9a9fda2ed4dc5021) Thanks [@TomTomB](https://github.com/TomTomB)! - Set the inline tabs body wrapper to display grid to prevent layout issues when preserve content is set to true.
|
|
18
|
+
|
|
3
19
|
## 4.17.1
|
|
4
20
|
|
|
5
21
|
### Patch Changes
|
|
@@ -265,7 +265,7 @@ export class OverlayContainerComponent extends CdkDialogContainer {
|
|
|
265
265
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.4", type: OverlayContainerComponent, isStandalone: true, selector: "et-overlay-container", host: { attributes: { "tabindex": "-1" }, properties: { "attr.aria-modal": "_config.ariaModal", "id": "_config.id", "attr.role": "_config.role", "attr.aria-labelledby": "_config.ariaLabel ? null : _ariaLabelledBy", "attr.aria-label": "_config.ariaLabel", "attr.aria-describedby": "_config.ariaDescribedBy || null", "class.et-with-default-animation": "!_config.customAnimated" }, classAttribute: "et-overlay" }, usesInheritance: true, hostDirectives: [{ directive: i1.RootBoundaryDirective }, { directive: i1.AnimatedLifecycleDirective }, { directive: i2.ProvideThemeDirective }], ngImport: i0, template: `
|
|
266
266
|
<div class="et-overlay-container-drag-handle"></div>
|
|
267
267
|
<ng-template cdkPortalOutlet />
|
|
268
|
-
`, isInline: true, styles: [".et-overlay{--et-overlay-padding-inline: 16px;--et-overlay-padding-block: 16px;--et-overlay-header-padding-block-end: 16px;--et-overlay-body-padding-block: 0;--et-overlay-footer-padding-block-start: 16px;--et-overlay-body-divider-color: #565656;--et-overlay-body-min-block-size: 100px;--_et-overlay-drag-handle-inline-size: 32px;--_et-overlay-drag-handle-block-size: 4px;--_et-overlay-drag-handle-block-margin: 22px;--_et-overlay-drag-handle-color: #565656;--_et-overlay-drag-handle-radius: 5px;position:relative;display:grid;overflow:hidden;pointer-events:all;outline:none}.et-overlay>:nth-child(2){overflow:auto}.et-overlay.et-overlay--bottom-sheet .et-overlay-container-drag-handle{display:flex}.et-overlay:has(.et-overlay-sidebar-host)>:nth-child(2){display:grid;grid-template-columns:0 1fr}.et-overlay:has(.et-overlay-sidebar-host):has(.et-overlay-sidebar--visible)>:nth-child(2){grid-template-columns:auto 1fr}.et-overlay:has(.et-overlay-sidebar-host) .et-overlay-router-outlet-host{display:grid;min-block-size:0}.et-overlay:has(.et-overlay-sidebar-host) .et-overlay-router-outlet-page{display:grid;grid-template-rows:minmax(0,1fr)}.et-overlay-sidebar-host{overflow:auto}.et-overlay-main{display:grid;grid-template-rows:minmax(0,1fr)}.et-overlay-main:has(.et-overlay-header):has(.et-overlay-body):has(.et-overlay-footer){grid-template-rows:auto minmax(var(--et-overlay-body-min-block-size),1fr) auto}.et-overlay-main:has(.et-overlay-header):has(.et-overlay-body){grid-template-rows:auto minmax(var(--et-overlay-body-min-block-size),1fr)}.et-overlay-main:has(.et-overlay-body):has(.et-overlay-footer){grid-template-rows:minmax(var(--et-overlay-body-min-block-size),1fr) auto}.et-overlay-main:not(:has(.et-overlay-footer)){grid-template-rows:minmax(var(--et-overlay-body-min-block-size),1fr) auto}.et-overlay-container-drag-handle{block-size:var(--_et-overlay-drag-handle-block-size);margin-block:var(--_et-overlay-drag-handle-block-margin);display:none;justify-content:center}.et-overlay-container-drag-handle:before{content:\"\";position:static;inline-size:var(--_et-overlay-drag-handle-inline-size);block-size:var(--_et-overlay-drag-handle-block-size);background-color:var(--_et-overlay-drag-handle-color);border-radius:var(--_et-overlay-drag-handle-radius)}.et-overlay-body{display:block;overflow:auto;padding-inline:var(--et-overlay-padding-inline);padding-block:var(--et-overlay-body-padding-block)}.et-overlay-body:has(.et-overlay-router-outlet-host){padding:0;display:grid;overflow:visible;grid-template-columns:minmax(0,1fr);grid-auto-rows:minmax(0,1fr)}.et-overlay-body:has(.et-overlay-router-outlet-host) .et-overlay-body-container{display:grid;grid-auto-rows:minmax(0,1fr);min-height:0}.et-overlay-body:has(.et-overlay-router-outlet-host) .et-overlay-router-outlet-host{display:grid}.et-overlay-body:has(.et-overlay-router-outlet-host) .et-overlay-router-outlet-page{padding-inline:var(--et-overlay-padding-inline);padding-block:var(--et-overlay-body-padding-block);overflow:auto;display:grid;grid-template-columns:minmax(0,1fr);grid-auto-rows:minmax(0,1fr)}.et-overlay-body.et-overlay-body--enable-divider-animations{transition:border-color .3s var(--ease-1)}.et-overlay-main:has(.et-overlay-header) .et-overlay-body.et-overlay-body--render-dividers{border-block-start:1px solid var(--et-overlay-body-divider-color)}.et-overlay-main:has(.et-overlay-footer) .et-overlay-body.et-overlay-body--render-dividers{border-block-end:1px solid var(--et-overlay-body-divider-color)}.et-overlay-body.et-overlay-body--render-dividers.et-overlay-body--dynamic-dividers{border-color:var(--et-overlay-body-divider-color)}.et-overlay-body.et-overlay-body--render-dividers.et-overlay-body--dynamic-dividers.et-scrollable-body--is-at-start{border-block-start-color:transparent}.et-overlay-body.et-overlay-body--render-dividers.et-overlay-body--dynamic-dividers.et-scrollable-body--is-at-end{border-block-end-color:transparent}.et-overlay-body .et-overlay-body-container{position:relative}.et-overlay-body .et-overlay-body-container .et-overlay-body-start-element,.et-overlay-body .et-overlay-body-container .et-overlay-body-end-element{position:absolute;block-size:1px;pointer-events:none}.et-overlay-body .et-overlay-body-container .et-overlay-body-start-element{inset-inline:1px;inset-block-start:1px}.et-overlay-body .et-overlay-body-container .et-overlay-body-end-element{inset-inline:1px;inset-block-end:1px}.et-overlay-header{padding-block-start:var(--et-overlay-padding-block);padding-inline:var(--et-overlay-padding-inline);padding-block-end:var(--et-overlay-header-padding-block-end)}.et-overlay-footer{padding-block-end:var(--et-overlay-padding-block);padding-inline:var(--et-overlay-padding-inline);padding-block-start:var(--et-overlay-footer-padding-block-start)}.et-overlay-pane{pointer-events:none}.et-overlay.et-with-default-animation.et-overlay--full-screen-dialog.et-animation-enter-from,.et-overlay.et-with-default-animation.et-overlay--full-screen-dialog.et-animation-leave-to{transform:scale(0)!important;border-radius:250px}.et-overlay.et-with-default-animation.et-overlay--full-screen-dialog.et-animation-enter-active{transition:transform .3s var(--ease-out-5),border-radius .3s var(--ease-out-5)}@supports (transition-timing-function: linear(0,1)){.et-overlay.et-with-default-animation.et-overlay--full-screen-dialog.et-animation-enter-active{transition:transform .3s var(--ease-spring-1),border-radius .3s var(--ease-spring-1)}}.et-overlay.et-with-default-animation.et-overlay--full-screen-dialog.et-animation-leave-active{transition:transform .15s var(--ease-in-5),border-radius .15s var(--ease-in-5)}.et-overlay.et-with-default-animation.et-overlay--bottom-sheet{bottom:-50px;padding-bottom:50px}.et-overlay.et-with-default-animation.et-overlay--bottom-sheet.et-animation-enter-from,.et-overlay.et-with-default-animation.et-overlay--bottom-sheet.et-animation-leave-to{transform:translateY(100%)!important}.et-overlay.et-with-default-animation.et-overlay--bottom-sheet.et-animation-enter-active{transition:transform .3s var(--ease-out-5)}@supports (transition-timing-function: linear(0,1)){.et-overlay.et-with-default-animation.et-overlay--bottom-sheet.et-animation-enter-active{transition:transform .3s var(--ease-spring-1)}}.et-overlay.et-with-default-animation.et-overlay--bottom-sheet.et-animation-leave-active{transition:transform .15s var(--ease-in-5)}.et-overlay.et-with-default-animation.et-overlay--top-sheet{top:-50px;padding-top:50px}.et-overlay.et-with-default-animation.et-overlay--top-sheet.et-animation-enter-from,.et-overlay.et-with-default-animation.et-overlay--top-sheet.et-animation-leave-to{transform:translateY(-100%)!important}.et-overlay.et-with-default-animation.et-overlay--top-sheet.et-animation-enter-active{transition:transform .3s var(--ease-out-5)}@supports (transition-timing-function: linear(0,1)){.et-overlay.et-with-default-animation.et-overlay--top-sheet.et-animation-enter-active{transition:transform .3s var(--ease-spring-1)}}.et-overlay.et-with-default-animation.et-overlay--top-sheet.et-animation-leave-active{transition:transform .15s var(--ease-in-5)}.et-overlay.et-with-default-animation.et-overlay--left-sheet{left:-50px;padding-left:50px}.et-overlay.et-with-default-animation.et-overlay--left-sheet.et-animation-enter-from,.et-overlay.et-with-default-animation.et-overlay--left-sheet.et-animation-leave-to{transform:translate(-100%)!important}.et-overlay.et-with-default-animation.et-overlay--left-sheet.et-animation-enter-active{transition:transform .3s var(--ease-out-5)}@supports (transition-timing-function: linear(0,1)){.et-overlay.et-with-default-animation.et-overlay--left-sheet.et-animation-enter-active{transition:transform .3s var(--ease-spring-1)}}.et-overlay.et-with-default-animation.et-overlay--left-sheet.et-animation-leave-active{transition:transform .15s var(--ease-in-5)}.et-overlay.et-with-default-animation.et-overlay--right-sheet{right:-50px;padding-right:50px}.et-overlay.et-with-default-animation.et-overlay--right-sheet.et-animation-enter-from,.et-overlay.et-with-default-animation.et-overlay--right-sheet.et-animation-leave-to{transform:translate(100%)!important}.et-overlay.et-with-default-animation.et-overlay--right-sheet.et-animation-enter-active{transition:transform .3s var(--ease-out-5)}@supports (transition-timing-function: linear(0,1)){.et-overlay.et-with-default-animation.et-overlay--right-sheet.et-animation-enter-active{transition:transform .3s var(--ease-spring-1)}}.et-overlay.et-with-default-animation.et-overlay--right-sheet.et-animation-leave-active{transition:transform .15s var(--ease-in-5)}.et-overlay.et-with-default-animation.et-overlay--dialog.et-animation-enter-from{opacity:0!important;transform:scale(.85)!important}.et-overlay.et-with-default-animation.et-overlay--dialog.et-animation-leave-to{opacity:0!important;transform:scale(.7)!important}.et-overlay.et-with-default-animation.et-overlay--dialog.et-animation-enter-active{transition:transform .3s var(--ease-out-5),opacity .3s var(--ease-out-5)}@supports (transition-timing-function: linear(0,1)){.et-overlay.et-with-default-animation.et-overlay--dialog.et-animation-enter-active{transition:transform .3s var(--ease-spring-2),opacity .3s var(--ease-out-5)}}.et-overlay.et-with-default-animation.et-overlay--dialog.et-animation-leave-active{transition:transform .15s var(--ease-out-5),opacity .15s var(--ease-out-5)}\n"], dependencies: [{ kind: "ngmodule", type: PortalModule }, { kind: "directive", type: i3.CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
268
|
+
`, isInline: true, styles: [".et-overlay{--et-overlay-padding-inline: 16px;--et-overlay-padding-block: 16px;--et-overlay-header-padding-block-end: 16px;--et-overlay-body-padding-block: 0;--et-overlay-footer-padding-block-start: 16px;--et-overlay-body-divider-color: #565656;--et-overlay-body-min-block-size: 100px;--_et-overlay-drag-handle-inline-size: 32px;--_et-overlay-drag-handle-block-size: 4px;--_et-overlay-drag-handle-block-margin: 22px;--_et-overlay-drag-handle-color: #565656;--_et-overlay-drag-handle-radius: 5px;position:relative;display:grid;overflow:hidden;pointer-events:all;outline:none}.et-overlay>:nth-child(2){overflow:auto}.et-overlay>:nth-child(2):not(.et-overlay-main){display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(0,1fr)}.et-overlay.et-overlay--bottom-sheet .et-overlay-container-drag-handle{display:flex}.et-overlay:has(.et-overlay-sidebar-host)>:nth-child(2){display:grid;grid-template-columns:0 1fr}.et-overlay:has(.et-overlay-sidebar-host):has(.et-overlay-sidebar--visible)>:nth-child(2){grid-template-columns:auto 1fr}.et-overlay:has(.et-overlay-sidebar-host) .et-overlay-router-outlet-host{display:grid;min-block-size:0}.et-overlay:has(.et-overlay-sidebar-host) .et-overlay-router-outlet-page{display:grid;grid-template-rows:minmax(0,1fr)}.et-overlay-sidebar-host{overflow:auto}.et-overlay-main{display:grid;grid-template-rows:minmax(0,1fr)}.et-overlay-main:has(.et-overlay-header):has(.et-overlay-body):has(.et-overlay-footer){grid-template-rows:auto minmax(var(--et-overlay-body-min-block-size),1fr) auto}.et-overlay-main:has(.et-overlay-header):has(.et-overlay-body){grid-template-rows:auto minmax(var(--et-overlay-body-min-block-size),1fr)}.et-overlay-main:has(.et-overlay-body):has(.et-overlay-footer){grid-template-rows:minmax(var(--et-overlay-body-min-block-size),1fr) auto}.et-overlay-main:not(:has(.et-overlay-footer)){grid-template-rows:minmax(var(--et-overlay-body-min-block-size),1fr) auto}.et-overlay-container-drag-handle{block-size:var(--_et-overlay-drag-handle-block-size);margin-block:var(--_et-overlay-drag-handle-block-margin);display:none;justify-content:center}.et-overlay-container-drag-handle:before{content:\"\";position:static;inline-size:var(--_et-overlay-drag-handle-inline-size);block-size:var(--_et-overlay-drag-handle-block-size);background-color:var(--_et-overlay-drag-handle-color);border-radius:var(--_et-overlay-drag-handle-radius)}.et-overlay-body{display:block;overflow:auto;padding-inline:var(--et-overlay-padding-inline);padding-block:var(--et-overlay-body-padding-block)}.et-overlay-body:has(.et-overlay-router-outlet-host){padding:0;display:grid;overflow:visible;grid-template-columns:minmax(0,1fr);grid-auto-rows:minmax(0,1fr)}.et-overlay-body:has(.et-overlay-router-outlet-host) .et-overlay-body-container{display:grid;grid-auto-rows:minmax(0,1fr);min-height:0}.et-overlay-body:has(.et-overlay-router-outlet-host) .et-overlay-router-outlet-host{display:grid}.et-overlay-body:has(.et-overlay-router-outlet-host) .et-overlay-router-outlet-page{padding-inline:var(--et-overlay-padding-inline);padding-block:var(--et-overlay-body-padding-block);overflow:auto;display:grid;grid-template-columns:minmax(0,1fr);grid-auto-rows:minmax(0,1fr)}.et-overlay-body.et-overlay-body--enable-divider-animations{transition:border-color .3s var(--ease-1)}.et-overlay-main:has(.et-overlay-header) .et-overlay-body.et-overlay-body--render-dividers{border-block-start:1px solid var(--et-overlay-body-divider-color)}.et-overlay-main:has(.et-overlay-footer) .et-overlay-body.et-overlay-body--render-dividers{border-block-end:1px solid var(--et-overlay-body-divider-color)}.et-overlay-body.et-overlay-body--render-dividers.et-overlay-body--dynamic-dividers{border-color:var(--et-overlay-body-divider-color)}.et-overlay-body.et-overlay-body--render-dividers.et-overlay-body--dynamic-dividers.et-scrollable-body--is-at-start{border-block-start-color:transparent}.et-overlay-body.et-overlay-body--render-dividers.et-overlay-body--dynamic-dividers.et-scrollable-body--is-at-end{border-block-end-color:transparent}.et-overlay-body .et-overlay-body-container{position:relative}.et-overlay-body .et-overlay-body-container .et-overlay-body-start-element,.et-overlay-body .et-overlay-body-container .et-overlay-body-end-element{position:absolute;block-size:1px;pointer-events:none}.et-overlay-body .et-overlay-body-container .et-overlay-body-start-element{inset-inline:1px;inset-block-start:1px}.et-overlay-body .et-overlay-body-container .et-overlay-body-end-element{inset-inline:1px;inset-block-end:1px}.et-overlay-header{padding-block-start:var(--et-overlay-padding-block);padding-inline:var(--et-overlay-padding-inline);padding-block-end:var(--et-overlay-header-padding-block-end)}.et-overlay-footer{padding-block-end:var(--et-overlay-padding-block);padding-inline:var(--et-overlay-padding-inline);padding-block-start:var(--et-overlay-footer-padding-block-start)}.et-overlay-pane{pointer-events:none}.et-overlay.et-with-default-animation.et-overlay--full-screen-dialog.et-animation-enter-from,.et-overlay.et-with-default-animation.et-overlay--full-screen-dialog.et-animation-leave-to{transform:scale(0)!important;border-radius:250px}.et-overlay.et-with-default-animation.et-overlay--full-screen-dialog.et-animation-enter-active{transition:transform .3s var(--ease-out-5),border-radius .3s var(--ease-out-5)}@supports (transition-timing-function: linear(0,1)){.et-overlay.et-with-default-animation.et-overlay--full-screen-dialog.et-animation-enter-active{transition:transform .3s var(--ease-spring-1),border-radius .3s var(--ease-spring-1)}}.et-overlay.et-with-default-animation.et-overlay--full-screen-dialog.et-animation-leave-active{transition:transform .15s var(--ease-in-5),border-radius .15s var(--ease-in-5)}.et-overlay.et-with-default-animation.et-overlay--bottom-sheet{bottom:-50px;padding-bottom:50px}.et-overlay.et-with-default-animation.et-overlay--bottom-sheet.et-animation-enter-from,.et-overlay.et-with-default-animation.et-overlay--bottom-sheet.et-animation-leave-to{transform:translateY(100%)!important}.et-overlay.et-with-default-animation.et-overlay--bottom-sheet.et-animation-enter-active{transition:transform .3s var(--ease-out-5)}@supports (transition-timing-function: linear(0,1)){.et-overlay.et-with-default-animation.et-overlay--bottom-sheet.et-animation-enter-active{transition:transform .3s var(--ease-spring-1)}}.et-overlay.et-with-default-animation.et-overlay--bottom-sheet.et-animation-leave-active{transition:transform .15s var(--ease-in-5)}.et-overlay.et-with-default-animation.et-overlay--top-sheet{top:-50px;padding-top:50px}.et-overlay.et-with-default-animation.et-overlay--top-sheet.et-animation-enter-from,.et-overlay.et-with-default-animation.et-overlay--top-sheet.et-animation-leave-to{transform:translateY(-100%)!important}.et-overlay.et-with-default-animation.et-overlay--top-sheet.et-animation-enter-active{transition:transform .3s var(--ease-out-5)}@supports (transition-timing-function: linear(0,1)){.et-overlay.et-with-default-animation.et-overlay--top-sheet.et-animation-enter-active{transition:transform .3s var(--ease-spring-1)}}.et-overlay.et-with-default-animation.et-overlay--top-sheet.et-animation-leave-active{transition:transform .15s var(--ease-in-5)}.et-overlay.et-with-default-animation.et-overlay--left-sheet{left:-50px;padding-left:50px}.et-overlay.et-with-default-animation.et-overlay--left-sheet.et-animation-enter-from,.et-overlay.et-with-default-animation.et-overlay--left-sheet.et-animation-leave-to{transform:translate(-100%)!important}.et-overlay.et-with-default-animation.et-overlay--left-sheet.et-animation-enter-active{transition:transform .3s var(--ease-out-5)}@supports (transition-timing-function: linear(0,1)){.et-overlay.et-with-default-animation.et-overlay--left-sheet.et-animation-enter-active{transition:transform .3s var(--ease-spring-1)}}.et-overlay.et-with-default-animation.et-overlay--left-sheet.et-animation-leave-active{transition:transform .15s var(--ease-in-5)}.et-overlay.et-with-default-animation.et-overlay--right-sheet{right:-50px;padding-right:50px}.et-overlay.et-with-default-animation.et-overlay--right-sheet.et-animation-enter-from,.et-overlay.et-with-default-animation.et-overlay--right-sheet.et-animation-leave-to{transform:translate(100%)!important}.et-overlay.et-with-default-animation.et-overlay--right-sheet.et-animation-enter-active{transition:transform .3s var(--ease-out-5)}@supports (transition-timing-function: linear(0,1)){.et-overlay.et-with-default-animation.et-overlay--right-sheet.et-animation-enter-active{transition:transform .3s var(--ease-spring-1)}}.et-overlay.et-with-default-animation.et-overlay--right-sheet.et-animation-leave-active{transition:transform .15s var(--ease-in-5)}.et-overlay.et-with-default-animation.et-overlay--dialog.et-animation-enter-from{opacity:0!important;transform:scale(.85)!important}.et-overlay.et-with-default-animation.et-overlay--dialog.et-animation-leave-to{opacity:0!important;transform:scale(.7)!important}.et-overlay.et-with-default-animation.et-overlay--dialog.et-animation-enter-active{transition:transform .3s var(--ease-out-5),opacity .3s var(--ease-out-5)}@supports (transition-timing-function: linear(0,1)){.et-overlay.et-with-default-animation.et-overlay--dialog.et-animation-enter-active{transition:transform .3s var(--ease-spring-2),opacity .3s var(--ease-out-5)}}.et-overlay.et-with-default-animation.et-overlay--dialog.et-animation-leave-active{transition:transform .15s var(--ease-out-5),opacity .15s var(--ease-out-5)}\n"], dependencies: [{ kind: "ngmodule", type: PortalModule }, { kind: "directive", type: i3.CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
269
269
|
}
|
|
270
270
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: OverlayContainerComponent, decorators: [{
|
|
271
271
|
type: Component,
|
|
@@ -282,6 +282,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImpor
|
|
|
282
282
|
'[attr.aria-label]': '_config.ariaLabel',
|
|
283
283
|
'[attr.aria-describedby]': '_config.ariaDescribedBy || null',
|
|
284
284
|
'[class.et-with-default-animation]': '!_config.customAnimated',
|
|
285
|
-
}, standalone: true, imports: [PortalModule], hostDirectives: [RootBoundaryDirective, AnimatedLifecycleDirective, ProvideThemeDirective], styles: [".et-overlay{--et-overlay-padding-inline: 16px;--et-overlay-padding-block: 16px;--et-overlay-header-padding-block-end: 16px;--et-overlay-body-padding-block: 0;--et-overlay-footer-padding-block-start: 16px;--et-overlay-body-divider-color: #565656;--et-overlay-body-min-block-size: 100px;--_et-overlay-drag-handle-inline-size: 32px;--_et-overlay-drag-handle-block-size: 4px;--_et-overlay-drag-handle-block-margin: 22px;--_et-overlay-drag-handle-color: #565656;--_et-overlay-drag-handle-radius: 5px;position:relative;display:grid;overflow:hidden;pointer-events:all;outline:none}.et-overlay>:nth-child(2){overflow:auto}.et-overlay.et-overlay--bottom-sheet .et-overlay-container-drag-handle{display:flex}.et-overlay:has(.et-overlay-sidebar-host)>:nth-child(2){display:grid;grid-template-columns:0 1fr}.et-overlay:has(.et-overlay-sidebar-host):has(.et-overlay-sidebar--visible)>:nth-child(2){grid-template-columns:auto 1fr}.et-overlay:has(.et-overlay-sidebar-host) .et-overlay-router-outlet-host{display:grid;min-block-size:0}.et-overlay:has(.et-overlay-sidebar-host) .et-overlay-router-outlet-page{display:grid;grid-template-rows:minmax(0,1fr)}.et-overlay-sidebar-host{overflow:auto}.et-overlay-main{display:grid;grid-template-rows:minmax(0,1fr)}.et-overlay-main:has(.et-overlay-header):has(.et-overlay-body):has(.et-overlay-footer){grid-template-rows:auto minmax(var(--et-overlay-body-min-block-size),1fr) auto}.et-overlay-main:has(.et-overlay-header):has(.et-overlay-body){grid-template-rows:auto minmax(var(--et-overlay-body-min-block-size),1fr)}.et-overlay-main:has(.et-overlay-body):has(.et-overlay-footer){grid-template-rows:minmax(var(--et-overlay-body-min-block-size),1fr) auto}.et-overlay-main:not(:has(.et-overlay-footer)){grid-template-rows:minmax(var(--et-overlay-body-min-block-size),1fr) auto}.et-overlay-container-drag-handle{block-size:var(--_et-overlay-drag-handle-block-size);margin-block:var(--_et-overlay-drag-handle-block-margin);display:none;justify-content:center}.et-overlay-container-drag-handle:before{content:\"\";position:static;inline-size:var(--_et-overlay-drag-handle-inline-size);block-size:var(--_et-overlay-drag-handle-block-size);background-color:var(--_et-overlay-drag-handle-color);border-radius:var(--_et-overlay-drag-handle-radius)}.et-overlay-body{display:block;overflow:auto;padding-inline:var(--et-overlay-padding-inline);padding-block:var(--et-overlay-body-padding-block)}.et-overlay-body:has(.et-overlay-router-outlet-host){padding:0;display:grid;overflow:visible;grid-template-columns:minmax(0,1fr);grid-auto-rows:minmax(0,1fr)}.et-overlay-body:has(.et-overlay-router-outlet-host) .et-overlay-body-container{display:grid;grid-auto-rows:minmax(0,1fr);min-height:0}.et-overlay-body:has(.et-overlay-router-outlet-host) .et-overlay-router-outlet-host{display:grid}.et-overlay-body:has(.et-overlay-router-outlet-host) .et-overlay-router-outlet-page{padding-inline:var(--et-overlay-padding-inline);padding-block:var(--et-overlay-body-padding-block);overflow:auto;display:grid;grid-template-columns:minmax(0,1fr);grid-auto-rows:minmax(0,1fr)}.et-overlay-body.et-overlay-body--enable-divider-animations{transition:border-color .3s var(--ease-1)}.et-overlay-main:has(.et-overlay-header) .et-overlay-body.et-overlay-body--render-dividers{border-block-start:1px solid var(--et-overlay-body-divider-color)}.et-overlay-main:has(.et-overlay-footer) .et-overlay-body.et-overlay-body--render-dividers{border-block-end:1px solid var(--et-overlay-body-divider-color)}.et-overlay-body.et-overlay-body--render-dividers.et-overlay-body--dynamic-dividers{border-color:var(--et-overlay-body-divider-color)}.et-overlay-body.et-overlay-body--render-dividers.et-overlay-body--dynamic-dividers.et-scrollable-body--is-at-start{border-block-start-color:transparent}.et-overlay-body.et-overlay-body--render-dividers.et-overlay-body--dynamic-dividers.et-scrollable-body--is-at-end{border-block-end-color:transparent}.et-overlay-body .et-overlay-body-container{position:relative}.et-overlay-body .et-overlay-body-container .et-overlay-body-start-element,.et-overlay-body .et-overlay-body-container .et-overlay-body-end-element{position:absolute;block-size:1px;pointer-events:none}.et-overlay-body .et-overlay-body-container .et-overlay-body-start-element{inset-inline:1px;inset-block-start:1px}.et-overlay-body .et-overlay-body-container .et-overlay-body-end-element{inset-inline:1px;inset-block-end:1px}.et-overlay-header{padding-block-start:var(--et-overlay-padding-block);padding-inline:var(--et-overlay-padding-inline);padding-block-end:var(--et-overlay-header-padding-block-end)}.et-overlay-footer{padding-block-end:var(--et-overlay-padding-block);padding-inline:var(--et-overlay-padding-inline);padding-block-start:var(--et-overlay-footer-padding-block-start)}.et-overlay-pane{pointer-events:none}.et-overlay.et-with-default-animation.et-overlay--full-screen-dialog.et-animation-enter-from,.et-overlay.et-with-default-animation.et-overlay--full-screen-dialog.et-animation-leave-to{transform:scale(0)!important;border-radius:250px}.et-overlay.et-with-default-animation.et-overlay--full-screen-dialog.et-animation-enter-active{transition:transform .3s var(--ease-out-5),border-radius .3s var(--ease-out-5)}@supports (transition-timing-function: linear(0,1)){.et-overlay.et-with-default-animation.et-overlay--full-screen-dialog.et-animation-enter-active{transition:transform .3s var(--ease-spring-1),border-radius .3s var(--ease-spring-1)}}.et-overlay.et-with-default-animation.et-overlay--full-screen-dialog.et-animation-leave-active{transition:transform .15s var(--ease-in-5),border-radius .15s var(--ease-in-5)}.et-overlay.et-with-default-animation.et-overlay--bottom-sheet{bottom:-50px;padding-bottom:50px}.et-overlay.et-with-default-animation.et-overlay--bottom-sheet.et-animation-enter-from,.et-overlay.et-with-default-animation.et-overlay--bottom-sheet.et-animation-leave-to{transform:translateY(100%)!important}.et-overlay.et-with-default-animation.et-overlay--bottom-sheet.et-animation-enter-active{transition:transform .3s var(--ease-out-5)}@supports (transition-timing-function: linear(0,1)){.et-overlay.et-with-default-animation.et-overlay--bottom-sheet.et-animation-enter-active{transition:transform .3s var(--ease-spring-1)}}.et-overlay.et-with-default-animation.et-overlay--bottom-sheet.et-animation-leave-active{transition:transform .15s var(--ease-in-5)}.et-overlay.et-with-default-animation.et-overlay--top-sheet{top:-50px;padding-top:50px}.et-overlay.et-with-default-animation.et-overlay--top-sheet.et-animation-enter-from,.et-overlay.et-with-default-animation.et-overlay--top-sheet.et-animation-leave-to{transform:translateY(-100%)!important}.et-overlay.et-with-default-animation.et-overlay--top-sheet.et-animation-enter-active{transition:transform .3s var(--ease-out-5)}@supports (transition-timing-function: linear(0,1)){.et-overlay.et-with-default-animation.et-overlay--top-sheet.et-animation-enter-active{transition:transform .3s var(--ease-spring-1)}}.et-overlay.et-with-default-animation.et-overlay--top-sheet.et-animation-leave-active{transition:transform .15s var(--ease-in-5)}.et-overlay.et-with-default-animation.et-overlay--left-sheet{left:-50px;padding-left:50px}.et-overlay.et-with-default-animation.et-overlay--left-sheet.et-animation-enter-from,.et-overlay.et-with-default-animation.et-overlay--left-sheet.et-animation-leave-to{transform:translate(-100%)!important}.et-overlay.et-with-default-animation.et-overlay--left-sheet.et-animation-enter-active{transition:transform .3s var(--ease-out-5)}@supports (transition-timing-function: linear(0,1)){.et-overlay.et-with-default-animation.et-overlay--left-sheet.et-animation-enter-active{transition:transform .3s var(--ease-spring-1)}}.et-overlay.et-with-default-animation.et-overlay--left-sheet.et-animation-leave-active{transition:transform .15s var(--ease-in-5)}.et-overlay.et-with-default-animation.et-overlay--right-sheet{right:-50px;padding-right:50px}.et-overlay.et-with-default-animation.et-overlay--right-sheet.et-animation-enter-from,.et-overlay.et-with-default-animation.et-overlay--right-sheet.et-animation-leave-to{transform:translate(100%)!important}.et-overlay.et-with-default-animation.et-overlay--right-sheet.et-animation-enter-active{transition:transform .3s var(--ease-out-5)}@supports (transition-timing-function: linear(0,1)){.et-overlay.et-with-default-animation.et-overlay--right-sheet.et-animation-enter-active{transition:transform .3s var(--ease-spring-1)}}.et-overlay.et-with-default-animation.et-overlay--right-sheet.et-animation-leave-active{transition:transform .15s var(--ease-in-5)}.et-overlay.et-with-default-animation.et-overlay--dialog.et-animation-enter-from{opacity:0!important;transform:scale(.85)!important}.et-overlay.et-with-default-animation.et-overlay--dialog.et-animation-leave-to{opacity:0!important;transform:scale(.7)!important}.et-overlay.et-with-default-animation.et-overlay--dialog.et-animation-enter-active{transition:transform .3s var(--ease-out-5),opacity .3s var(--ease-out-5)}@supports (transition-timing-function: linear(0,1)){.et-overlay.et-with-default-animation.et-overlay--dialog.et-animation-enter-active{transition:transform .3s var(--ease-spring-2),opacity .3s var(--ease-out-5)}}.et-overlay.et-with-default-animation.et-overlay--dialog.et-animation-leave-active{transition:transform .15s var(--ease-out-5),opacity .15s var(--ease-out-5)}\n"] }]
|
|
285
|
+
}, standalone: true, imports: [PortalModule], hostDirectives: [RootBoundaryDirective, AnimatedLifecycleDirective, ProvideThemeDirective], styles: [".et-overlay{--et-overlay-padding-inline: 16px;--et-overlay-padding-block: 16px;--et-overlay-header-padding-block-end: 16px;--et-overlay-body-padding-block: 0;--et-overlay-footer-padding-block-start: 16px;--et-overlay-body-divider-color: #565656;--et-overlay-body-min-block-size: 100px;--_et-overlay-drag-handle-inline-size: 32px;--_et-overlay-drag-handle-block-size: 4px;--_et-overlay-drag-handle-block-margin: 22px;--_et-overlay-drag-handle-color: #565656;--_et-overlay-drag-handle-radius: 5px;position:relative;display:grid;overflow:hidden;pointer-events:all;outline:none}.et-overlay>:nth-child(2){overflow:auto}.et-overlay>:nth-child(2):not(.et-overlay-main){display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(0,1fr)}.et-overlay.et-overlay--bottom-sheet .et-overlay-container-drag-handle{display:flex}.et-overlay:has(.et-overlay-sidebar-host)>:nth-child(2){display:grid;grid-template-columns:0 1fr}.et-overlay:has(.et-overlay-sidebar-host):has(.et-overlay-sidebar--visible)>:nth-child(2){grid-template-columns:auto 1fr}.et-overlay:has(.et-overlay-sidebar-host) .et-overlay-router-outlet-host{display:grid;min-block-size:0}.et-overlay:has(.et-overlay-sidebar-host) .et-overlay-router-outlet-page{display:grid;grid-template-rows:minmax(0,1fr)}.et-overlay-sidebar-host{overflow:auto}.et-overlay-main{display:grid;grid-template-rows:minmax(0,1fr)}.et-overlay-main:has(.et-overlay-header):has(.et-overlay-body):has(.et-overlay-footer){grid-template-rows:auto minmax(var(--et-overlay-body-min-block-size),1fr) auto}.et-overlay-main:has(.et-overlay-header):has(.et-overlay-body){grid-template-rows:auto minmax(var(--et-overlay-body-min-block-size),1fr)}.et-overlay-main:has(.et-overlay-body):has(.et-overlay-footer){grid-template-rows:minmax(var(--et-overlay-body-min-block-size),1fr) auto}.et-overlay-main:not(:has(.et-overlay-footer)){grid-template-rows:minmax(var(--et-overlay-body-min-block-size),1fr) auto}.et-overlay-container-drag-handle{block-size:var(--_et-overlay-drag-handle-block-size);margin-block:var(--_et-overlay-drag-handle-block-margin);display:none;justify-content:center}.et-overlay-container-drag-handle:before{content:\"\";position:static;inline-size:var(--_et-overlay-drag-handle-inline-size);block-size:var(--_et-overlay-drag-handle-block-size);background-color:var(--_et-overlay-drag-handle-color);border-radius:var(--_et-overlay-drag-handle-radius)}.et-overlay-body{display:block;overflow:auto;padding-inline:var(--et-overlay-padding-inline);padding-block:var(--et-overlay-body-padding-block)}.et-overlay-body:has(.et-overlay-router-outlet-host){padding:0;display:grid;overflow:visible;grid-template-columns:minmax(0,1fr);grid-auto-rows:minmax(0,1fr)}.et-overlay-body:has(.et-overlay-router-outlet-host) .et-overlay-body-container{display:grid;grid-auto-rows:minmax(0,1fr);min-height:0}.et-overlay-body:has(.et-overlay-router-outlet-host) .et-overlay-router-outlet-host{display:grid}.et-overlay-body:has(.et-overlay-router-outlet-host) .et-overlay-router-outlet-page{padding-inline:var(--et-overlay-padding-inline);padding-block:var(--et-overlay-body-padding-block);overflow:auto;display:grid;grid-template-columns:minmax(0,1fr);grid-auto-rows:minmax(0,1fr)}.et-overlay-body.et-overlay-body--enable-divider-animations{transition:border-color .3s var(--ease-1)}.et-overlay-main:has(.et-overlay-header) .et-overlay-body.et-overlay-body--render-dividers{border-block-start:1px solid var(--et-overlay-body-divider-color)}.et-overlay-main:has(.et-overlay-footer) .et-overlay-body.et-overlay-body--render-dividers{border-block-end:1px solid var(--et-overlay-body-divider-color)}.et-overlay-body.et-overlay-body--render-dividers.et-overlay-body--dynamic-dividers{border-color:var(--et-overlay-body-divider-color)}.et-overlay-body.et-overlay-body--render-dividers.et-overlay-body--dynamic-dividers.et-scrollable-body--is-at-start{border-block-start-color:transparent}.et-overlay-body.et-overlay-body--render-dividers.et-overlay-body--dynamic-dividers.et-scrollable-body--is-at-end{border-block-end-color:transparent}.et-overlay-body .et-overlay-body-container{position:relative}.et-overlay-body .et-overlay-body-container .et-overlay-body-start-element,.et-overlay-body .et-overlay-body-container .et-overlay-body-end-element{position:absolute;block-size:1px;pointer-events:none}.et-overlay-body .et-overlay-body-container .et-overlay-body-start-element{inset-inline:1px;inset-block-start:1px}.et-overlay-body .et-overlay-body-container .et-overlay-body-end-element{inset-inline:1px;inset-block-end:1px}.et-overlay-header{padding-block-start:var(--et-overlay-padding-block);padding-inline:var(--et-overlay-padding-inline);padding-block-end:var(--et-overlay-header-padding-block-end)}.et-overlay-footer{padding-block-end:var(--et-overlay-padding-block);padding-inline:var(--et-overlay-padding-inline);padding-block-start:var(--et-overlay-footer-padding-block-start)}.et-overlay-pane{pointer-events:none}.et-overlay.et-with-default-animation.et-overlay--full-screen-dialog.et-animation-enter-from,.et-overlay.et-with-default-animation.et-overlay--full-screen-dialog.et-animation-leave-to{transform:scale(0)!important;border-radius:250px}.et-overlay.et-with-default-animation.et-overlay--full-screen-dialog.et-animation-enter-active{transition:transform .3s var(--ease-out-5),border-radius .3s var(--ease-out-5)}@supports (transition-timing-function: linear(0,1)){.et-overlay.et-with-default-animation.et-overlay--full-screen-dialog.et-animation-enter-active{transition:transform .3s var(--ease-spring-1),border-radius .3s var(--ease-spring-1)}}.et-overlay.et-with-default-animation.et-overlay--full-screen-dialog.et-animation-leave-active{transition:transform .15s var(--ease-in-5),border-radius .15s var(--ease-in-5)}.et-overlay.et-with-default-animation.et-overlay--bottom-sheet{bottom:-50px;padding-bottom:50px}.et-overlay.et-with-default-animation.et-overlay--bottom-sheet.et-animation-enter-from,.et-overlay.et-with-default-animation.et-overlay--bottom-sheet.et-animation-leave-to{transform:translateY(100%)!important}.et-overlay.et-with-default-animation.et-overlay--bottom-sheet.et-animation-enter-active{transition:transform .3s var(--ease-out-5)}@supports (transition-timing-function: linear(0,1)){.et-overlay.et-with-default-animation.et-overlay--bottom-sheet.et-animation-enter-active{transition:transform .3s var(--ease-spring-1)}}.et-overlay.et-with-default-animation.et-overlay--bottom-sheet.et-animation-leave-active{transition:transform .15s var(--ease-in-5)}.et-overlay.et-with-default-animation.et-overlay--top-sheet{top:-50px;padding-top:50px}.et-overlay.et-with-default-animation.et-overlay--top-sheet.et-animation-enter-from,.et-overlay.et-with-default-animation.et-overlay--top-sheet.et-animation-leave-to{transform:translateY(-100%)!important}.et-overlay.et-with-default-animation.et-overlay--top-sheet.et-animation-enter-active{transition:transform .3s var(--ease-out-5)}@supports (transition-timing-function: linear(0,1)){.et-overlay.et-with-default-animation.et-overlay--top-sheet.et-animation-enter-active{transition:transform .3s var(--ease-spring-1)}}.et-overlay.et-with-default-animation.et-overlay--top-sheet.et-animation-leave-active{transition:transform .15s var(--ease-in-5)}.et-overlay.et-with-default-animation.et-overlay--left-sheet{left:-50px;padding-left:50px}.et-overlay.et-with-default-animation.et-overlay--left-sheet.et-animation-enter-from,.et-overlay.et-with-default-animation.et-overlay--left-sheet.et-animation-leave-to{transform:translate(-100%)!important}.et-overlay.et-with-default-animation.et-overlay--left-sheet.et-animation-enter-active{transition:transform .3s var(--ease-out-5)}@supports (transition-timing-function: linear(0,1)){.et-overlay.et-with-default-animation.et-overlay--left-sheet.et-animation-enter-active{transition:transform .3s var(--ease-spring-1)}}.et-overlay.et-with-default-animation.et-overlay--left-sheet.et-animation-leave-active{transition:transform .15s var(--ease-in-5)}.et-overlay.et-with-default-animation.et-overlay--right-sheet{right:-50px;padding-right:50px}.et-overlay.et-with-default-animation.et-overlay--right-sheet.et-animation-enter-from,.et-overlay.et-with-default-animation.et-overlay--right-sheet.et-animation-leave-to{transform:translate(100%)!important}.et-overlay.et-with-default-animation.et-overlay--right-sheet.et-animation-enter-active{transition:transform .3s var(--ease-out-5)}@supports (transition-timing-function: linear(0,1)){.et-overlay.et-with-default-animation.et-overlay--right-sheet.et-animation-enter-active{transition:transform .3s var(--ease-spring-1)}}.et-overlay.et-with-default-animation.et-overlay--right-sheet.et-animation-leave-active{transition:transform .15s var(--ease-in-5)}.et-overlay.et-with-default-animation.et-overlay--dialog.et-animation-enter-from{opacity:0!important;transform:scale(.85)!important}.et-overlay.et-with-default-animation.et-overlay--dialog.et-animation-leave-to{opacity:0!important;transform:scale(.7)!important}.et-overlay.et-with-default-animation.et-overlay--dialog.et-animation-enter-active{transition:transform .3s var(--ease-out-5),opacity .3s var(--ease-out-5)}@supports (transition-timing-function: linear(0,1)){.et-overlay.et-with-default-animation.et-overlay--dialog.et-animation-enter-active{transition:transform .3s var(--ease-spring-2),opacity .3s var(--ease-out-5)}}.et-overlay.et-with-default-animation.et-overlay--dialog.et-animation-leave-active{transition:transform .15s var(--ease-out-5),opacity .15s var(--ease-out-5)}\n"] }]
|
|
286
286
|
}], ctorParameters: () => [] });
|
|
287
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcmxheS1jb250YWluZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvc3JjL2xpYi9jb21wb25lbnRzL292ZXJsYXkvY29tcG9uZW50cy9vdmVybGF5L2NvbXBvbmVudHMvb3ZlcmxheS1jb250YWluZXIvb3ZlcmxheS1jb250YWluZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsZ0JBQWdCLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN6RixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsVUFBVSxJQUFJLGFBQWEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ25FLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsSCxPQUFPLEVBQ0wsd0JBQXdCLEVBQ3hCLDBCQUEwQixFQUMxQixxQkFBcUIsRUFDckIsZ0JBQWdCLEVBQ2hCLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUscUJBQXFCLEVBQUUsY0FBYyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDekUsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDakUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFakUsT0FBTyxFQUFFLGNBQWMsRUFBRSxN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TyxJQUFJLENBQUM7WUFDZCxDQUFDO1FBQ0gsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLFNBQVMsR0FBRyxvQkFBb0IsSUFBSSxlQUFlLEdBQUcsb0JBQW9CLEVBQUUsQ0FBQztnQkFDL0UsT0FBTztvQkFDTCxTQUFTLEVBQUUsZUFBZTtvQkFDMUIsVUFBVSxFQUFFLG1DQUFtQztvQkFDL0MsT0FBTyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxTQUFTO2lCQUN6QyxDQUFDO1lBQ0osQ0FBQztpQkFBTSxDQUFDO2dCQUNOLE9BQU8sSUFBSSxDQUFDO1lBQ2QsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDOzhHQTFTVSx5QkFBeUI7a0dBQXpCLHlCQUF5QixvcEJBckIxQjs7O0dBR1QsMHZTQWVTLFlBQVk7OzJGQUdYLHlCQUF5QjtrQkF4QnJDLFNBQVM7K0JBQ0Usc0JBQXNCLFlBRXRCOzs7R0FHVCxpQkFDYyxpQkFBaUIsQ0FBQyxJQUFJLG1CQUNwQix1QkFBdUIsQ0FBQyxNQUFNLFFBQ3pDO3dCQUNKLEtBQUssRUFBRSxZQUFZO3dCQUNuQixRQUFRLEVBQUUsSUFBSTt3QkFDZCxtQkFBbUIsRUFBRSxtQkFBbUI7d0JBQ3hDLE1BQU0sRUFBRSxZQUFZO3dCQUNwQixhQUFhLEVBQUUsY0FBYzt3QkFDN0Isd0JBQXdCLEVBQUUsNENBQTRDO3dCQUN0RSxtQkFBbUIsRUFBRSxtQkFBbUI7d0JBQ3hDLHlCQUF5QixFQUFFLGlDQUFpQzt3QkFDNUQsbUNBQW1DLEVBQUUseUJBQXlCO3FCQUMvRCxjQUNXLElBQUksV0FDUCxDQUFDLFlBQVksQ0FBQyxrQkFDUCxDQUFDLHFCQUFxQixFQUFFLDBCQUEwQixFQUFFLHFCQUFxQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRm9jdXNNb25pdG9yLCBGb2N1c1RyYXBGYWN0b3J5LCBJbnRlcmFjdGl2aXR5Q2hlY2tlciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7IENka0RpYWxvZ0NvbnRhaW5lciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9kaWFsb2cnO1xuaW1wb3J0IHsgT3ZlcmxheVJlZiBhcyBDZGtPdmVybGF5UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgUG9ydGFsTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5pbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBOZ1pvbmUsIFZpZXdFbmNhcHN1bGF0aW9uLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEFOSU1BVEVEX0xJRkVDWUNMRV9UT0tFTixcbiAgQW5pbWF0ZWRMaWZlY3ljbGVEaXJlY3RpdmUsXG4gIFJvb3RCb3VuZGFyeURpcmVjdGl2ZSxcbiAgZWxlbWVudENhblNjcm9sbCxcbiAgbmV4dEZyYW1lLFxufSBmcm9tICdAZXRobGV0ZS9jb3JlJztcbmltcG9ydCB7IFByb3ZpZGVUaGVtZURpcmVjdGl2ZSwgVEhFTUVfUFJPVklERVIgfSBmcm9tICdAZXRobGV0ZS90aGVtaW5nJztcbmltcG9ydCB7IFN1YmplY3QsIGZyb21FdmVudCwgbWVyZ2UsIHRha2VVbnRpbCwgdGFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBTd2lwZUhhbmRsZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vc2VydmljZXMnO1xuaW1wb3J0IHsgU3dpcGVFbmRFdmVudCwgU3dpcGVVcGRhdGVFdmVudCB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL3R5cGVzJztcbmltcG9ydCB7IE9WRVJMQVlfQ09ORklHIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IE92ZXJsYXlDb25maWcsIE92ZXJsYXlEcmFnVG9EaXNtaXNzQ29uZmlnIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHsgT3ZlcmxheVJlZiB9IGZyb20gJy4uLy4uL3V0aWxzJztcblxuY29uc3QgaXNUb3VjaEV2ZW50ID0gKGV2ZW50OiBFdmVudCk6IGV2ZW50IGlzIFRvdWNoRXZlbnQgPT4ge1xuICByZXR1cm4gZXZlbnQudHlwZVswXSA9PT0gJ3QnO1xufTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZXQtb3ZlcmxheS1jb250YWluZXInLFxuICBzdHlsZVVybHM6IFsnLi9vdmVybGF5LWNvbnRhaW5lci5jb21wb25lbnQuc2NzcyddLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgY2xhc3M9XCJldC1vdmVybGF5LWNvbnRhaW5lci1kcmFnLWhhbmRsZVwiPjwvZGl2PlxuICAgIDxuZy10ZW1wbGF0ZSBjZGtQb3J0YWxPdXRsZXQgLz5cbiAgYCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGhvc3Q6IHtcbiAgICBjbGFzczogJ2V0LW92ZXJsYXknLFxuICAgIHRhYmluZGV4OiAnLTEnLFxuICAgICdbYXR0ci5hcmlhLW1vZGFsXSc6ICdfY29uZmlnLmFyaWFNb2RhbCcsXG4gICAgJ1tpZF0nOiAnX2NvbmZpZy5pZCcsXG4gICAgJ1thdHRyLnJvbGVdJzogJ19jb25maWcucm9sZScsXG4gICAgJ1thdHRyLmFyaWEtbGFiZWxsZWRieV0nOiAnX2NvbmZpZy5hcmlhTGFiZWwgPyBudWxsIDogX2FyaWFMYWJlbGxlZEJ5JyxcbiAgICAnW2F0dHIuYXJpYS1sYWJlbF0nOiAnX2NvbmZpZy5hcmlhTGFiZWwnLFxuICAgICdbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XSc6ICdfY29uZmlnLmFyaWFEZXNjcmliZWRCeSB8fCBudWxsJyxcbiAgICAnW2NsYXNzLmV0LXdpdGgtZGVmYXVsdC1hbmltYXRpb25dJzogJyFfY29uZmlnLmN1c3RvbUFuaW1hdGVkJyxcbiAgfSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1BvcnRhbE1vZHVsZV0sXG4gIGhvc3REaXJlY3RpdmVzOiBbUm9vdEJvdW5kYXJ5RGlyZWN0aXZlLCBBbmltYXRlZExpZmVjeWNsZURpcmVjdGl2ZSwgUHJvdmlkZVRoZW1lRGlyZWN0aXZlXSxcbn0pXG5leHBvcnQgY2xhc3MgT3ZlcmxheUNvbnRhaW5lckNvbXBvbmVudCBleHRlbmRzIENka0RpYWxvZ0NvbnRhaW5lcjxPdmVybGF5Q29uZmlnPiB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3N3aXBlSGFuZGxlclNlcnZpY2UgPSBpbmplY3QoU3dpcGVIYW5kbGVyU2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2RyYWdUb0Rpc21pc3NTdG9wJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIHJlYWRvbmx5IF90aGVtZVByb3ZpZGVyID0gaW5qZWN0KFRIRU1FX1BST1ZJREVSKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfcGFyZW50VGhlbWVQcm92aWRlciA9IGluamVjdChUSEVNRV9QUk9WSURFUiwgeyBvcHRpb25hbDogdHJ1ZSwgc2tpcFNlbGY6IHRydWUgfSk7XG4gIHJlYWRvbmx5IF9yb290Qm91bmRhcnkgPSBpbmplY3QoUm9vdEJvdW5kYXJ5RGlyZWN0aXZlKTtcblxuICByZWFkb25seSBfYW5pbWF0ZWRMaWZlY3ljbGUgPSBpbmplY3QoQU5JTUFURURfTElGRUNZQ0xFX1RPS0VOKTtcbiAgcmVhZG9ubHkgY2RrT3ZlcmxheVJlZiA9IGluamVjdChDZGtPdmVybGF5UmVmKTtcblxuICBvdmVybGF5UmVmOiBPdmVybGF5UmVmIHwgbnVsbCA9IG51bGw7XG5cbiAgcmVhZG9ubHkgZWxlbWVudFJlZiA9IHRoaXMuX2VsZW1lbnRSZWY7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoXG4gICAgICBpbmplY3QoRWxlbWVudFJlZiksXG4gICAgICBpbmplY3QoRm9jdXNUcmFwRmFjdG9yeSksXG4gICAgICBpbmplY3QoRE9DVU1FTlQpLFxuICAgICAgaW5qZWN0KE9WRVJMQVlfQ09ORklHKSxcbiAgICAgIGluamVjdChJbnRlcmFjdGl2aXR5Q2hlY2tlciksXG4gICAgICBpbmplY3QoTmdab25lKSxcbiAgICAgIGluamVjdChDZGtPdmVybGF5UmVmKSxcbiAgICAgIGluamVjdChGb2N1c01vbml0b3IpLFxuICAgICk7XG5cbiAgICBpZiAodGhpcy5fcGFyZW50VGhlbWVQcm92aWRlcikge1xuICAgICAgdGhpcy5fdGhlbWVQcm92aWRlci5zeW5jV2l0aFByb3ZpZGVyKHRoaXMuX3BhcmVudFRoZW1lUHJvdmlkZXIpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSBfY29udGVudEF0dGFjaGVkKCk6IHZvaWQge1xuICAgIHN1cGVyLl9jb250ZW50QXR0YWNoZWQoKTtcblxuICAgIHRoaXMuX3Jvb3RCb3VuZGFyeS5ib3VuZGFyeUVsZW1lbnQgPSB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICBuZXh0RnJhbWUoKCkgPT4ge1xuICAgICAgdGhpcy5fYW5pbWF0ZWRMaWZlY3ljbGUuZW50ZXIoKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSBfY2FwdHVyZUluaXRpYWxGb2N1cygpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX2NvbmZpZy5kZWxheUZvY3VzVHJhcCkge1xuICAgICAgdGhpcy5fdHJhcEZvY3VzKCk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIF9vcGVuQW5pbWF0aW9uRG9uZSgpIHtcbiAgICBpZiAodGhpcy5fY29uZmlnLmRlbGF5Rm9jdXNUcmFwKSB7XG4gICAgICB0aGlzLl90cmFwRm9jdXMoKTtcbiAgICB9XG4gIH1cblxuICBfZW5hYmxlRHJhZ1RvRGlzbWlzcyhjb25maWc6IE92ZXJsYXlEcmFnVG9EaXNtaXNzQ29uZmlnKSB7XG4gICAgaWYgKCF0aGlzLm92ZXJsYXlSZWYpIHJldHVybjtcblxuICAgIHRoaXMuX2RyYWdUb0Rpc21pc3NTdG9wJC5uZXh0KCk7XG5cbiAgICBjb25zdCBlbCA9IHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudDtcbiAgICBsZXQgc3dpcGVJZDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG4gICAgbGV0IGlzU2VsZWN0aW9uQWN0aXZlID0gZmFsc2U7XG5cbiAgICBjb25zdCBjYW5jZWxEcmFnID0gKCkgPT4ge1xuICAgICAgZWwuc3R5bGUuc2V0UHJvcGVydHkoJ3RyYW5zaXRpb24nLCAndHJhbnNmb3JtIDEwMG1zIHZhcigtLWVhc2Utb3V0LTEpJyk7XG4gICAgICBlbC5zdHlsZS50cmFuc2Zvcm0gPVxuICAgICAgICBjb25maWcuZGlyZWN0aW9uID09PSAndG8tYm90dG9tJyB8fCBjb25maWcuZGlyZWN0aW9uID09PSAndG8tdG9wJyA/ICd0cmFuc2xhdGVZKDApJyA6ICd0cmFuc2xhdGVYKDApJztcbiAgICAgIHN3aXBlSWQgPSBudWxsO1xuXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgZWwuc3R5bGUucmVtb3ZlUHJvcGVydHkoJ3RyYW5zaXRpb24nKTtcbiAgICAgICAgZWwuc3R5bGUucmVtb3ZlUHJvcGVydHkoJ3RyYW5zZm9ybScpO1xuICAgICAgfSwgMTAwKTtcbiAgICB9O1xuXG4gICAgbWVyZ2UoZnJvbUV2ZW50PFRvdWNoRXZlbnQ+KGVsLCAndG91Y2hzdGFydCcpLCBmcm9tRXZlbnQ8TW91c2VFdmVudD4oZWwsICdtb3VzZWRvd24nKSlcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlVW50aWwodGhpcy5fZHJhZ1RvRGlzbWlzc1N0b3AkKSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMub3ZlcmxheVJlZi5hZnRlckNsb3NlZCgpKSxcbiAgICAgICAgdGFwKChldmVudCkgPT4ge1xuICAgICAgICAgIGlmIChpc1NlbGVjdGlvbkFjdGl2ZSkgcmV0dXJuO1xuXG4gICAgICAgICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xuICAgICAgICAgIGNvbnN0IHRhZyA9IHRhcmdldC50YWdOYW1lLnRvTG93ZXJDYXNlKCk7XG5cbiAgICAgICAgICBpZiAodGFnID09PSAnaW5wdXQnIHx8IHRhZyA9PT0gJ3RleHRhcmVhJyB8fCB0YWcgPT09ICdzZWxlY3QnIHx8IHRhZyA9PT0gJ2J1dHRvbicgfHwgdGFnID09PSAnYScpIHJldHVybjtcblxuICAgICAgICAgIHN3aXBlSWQgPSB0aGlzLl9zd2lwZUhhbmRsZXJTZXJ2aWNlLnN0YXJ0U3dpcGUoZXZlbnQpO1xuICAgICAgICB9KSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcblxuICAgIGZyb21FdmVudDxFdmVudD4oZG9jdW1lbnQsICdzZWxlY3Rpb25jaGFuZ2UnKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuX2RyYWdUb0Rpc21pc3NTdG9wJCksIHRha2VVbnRpbCh0aGlzLm92ZXJsYXlSZWYuYWZ0ZXJDbG9zZWQoKSkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgY29uc3Qgc2VsZWN0aW9uID0gZG9jdW1lbnQuZ2V0U2VsZWN0aW9uKCk7XG5cbiAgICAgICAgaWYgKCFzZWxlY3Rpb24gfHwgIXNlbGVjdGlvbi50b1N0cmluZygpLmxlbmd0aCkge1xuICAgICAgICAgIGlzU2VsZWN0aW9uQWN0aXZlID0gZmFsc2U7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaXNTZWxlY3Rpb25BY3RpdmUgPSB0cnVlO1xuXG4gICAgICAgIGNhbmNlbERyYWcoKTtcbiAgICAgIH0pO1xuXG4gICAgbWVyZ2UoZnJvbUV2ZW50PFRvdWNoRXZlbnQ+KGVsLCAndG91Y2htb3ZlJyksIGZyb21FdmVudDxNb3VzZUV2ZW50PihlbCwgJ21vdXNlbW92ZScpKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9kcmFnVG9EaXNtaXNzU3RvcCQpLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5vdmVybGF5UmVmLmFmdGVyQ2xvc2VkKCkpLFxuICAgICAgICB0YXAoKGV2ZW50KSA9PiB7XG4gICAgICAgICAgaWYgKHN3aXBlSWQgPT09IG51bGwgfHwgaXNTZWxlY3Rpb25BY3RpdmUpIHJldHVybjtcblxuICAgICAgICAgIGlmIChpc1RvdWNoRXZlbnQoZXZlbnQpKSB7XG4gICAgICAgICAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XG5cbiAgICAgICAgICAgIGNvbnN0IHJlY3Vyc2l2ZUZpbmRTY3JvbGxhYmxlUGFyZW50ID0gKGVsOiBIVE1MRWxlbWVudCk6IEhUTUxFbGVtZW50IHwgbnVsbCA9PiB7XG4gICAgICAgICAgICAgIGlmICghZWwpIHJldHVybiBudWxsO1xuXG4gICAgICAgICAgICAgIGlmIChjb25maWcuZGlyZWN0aW9uID09PSAndG8tYm90dG9tJyB8fCBjb25maWcuZGlyZWN0aW9uID09PSAndG8tdG9wJykge1xuICAgICAgICAgICAgICAgIGlmIChlbGVtZW50Q2FuU2Nyb2xsKGVsLCAneScpKSB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gZWw7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmIChlbGVtZW50Q2FuU2Nyb2xsKGVsLCAneCcpKSB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gZWw7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgaWYgKCFlbC5wYXJlbnRFbGVtZW50IHx8IGVsLnRhZ05hbWUudG9Mb3dlckNhc2UoKSA9PT0gJ2V0LW92ZXJsYXktY29udGFpbmVyJykgcmV0dXJuIG51bGw7XG5cbiAgICAgICAgICAgICAgcmV0dXJuIHJlY3Vyc2l2ZUZpbmRTY3JvbGxhYmxlUGFyZW50KGVsLnBhcmVudEVsZW1lbnQpO1xuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgY29uc3Qgc2Nyb2xsYWJsZUVsZW1lbnQgPSByZWN1cnNpdmVGaW5kU2Nyb2xsYWJsZVBhcmVudCh0YXJnZXQpO1xuXG4gICAgICAgICAgICBpZiAoc2Nyb2xsYWJsZUVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgbGV0IGNhbmNlbCA9IGZhbHNlO1xuICAgICAgICAgICAgICBpZiAoY29uZmlnLmRpcmVjdGlvbiA9PT0gJ3RvLWJvdHRvbScpIHtcbiAgICAgICAgICAgICAgICBpZiAoc2Nyb2xsYWJsZUVsZW1lbnQuc2Nyb2xsVG9wICE9PSAwKSB7XG4gICAgICAgICAgICAgICAgICBjYW5jZWwgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSBlbHNlIGlmIChjb25maWcuZGlyZWN0aW9uID09PSAndG8tdG9wJykge1xuICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgIE1hdGgucm91bmQoc2Nyb2xsYWJsZUVsZW1lbnQuc2Nyb2xsVG9wKSAhPT1cbiAgICAgICAgICAgICAgICAgIHNjcm9sbGFibGVFbGVtZW50LnNjcm9sbEhlaWdodCAtIHNjcm9sbGFibGVFbGVtZW50LmNsaWVudEhlaWdodFxuICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgY2FuY2VsID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAoY29uZmlnLmRpcmVjdGlvbiA9PT0gJ3RvLXJpZ2h0Jykge1xuICAgICAgICAgICAgICAgIGlmIChzY3JvbGxhYmxlRWxlbWVudC5zY3JvbGxMZWZ0ICE9PSAwKSB7XG4gICAgICAgICAgICAgICAgICBjYW5jZWwgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICBNYXRoLnJvdW5kKHNjcm9sbGFibGVFbGVtZW50LnNjcm9sbExlZnQpICE9PVxuICAgICAgICAgICAgICAgICAgc2Nyb2xsYWJsZUVsZW1lbnQuc2Nyb2xsV2lkdGggLSBzY3JvbGxhYmxlRWxlbWVudC5jbGllbnRXaWR0aFxuICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgY2FuY2VsID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBpZiAoY2FuY2VsKSB7XG4gICAgICAgICAgICAgICAgY2FuY2VsRHJhZygpO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3Qgc3dpcGVEYXRhID0gdGhpcy5fc3dpcGVIYW5kbGVyU2VydmljZS51cGRhdGVTd2lwZShzd2lwZUlkLCBldmVudCk7XG5cbiAgICAgICAgICBpZiAoIXN3aXBlRGF0YSkgcmV0dXJuO1xuXG4gICAgICAgICAgY29uc3QgY3NzID0gdGhpcy5fZGVmYXVsdFN3aXBlTW92ZVN0eWxlSW50ZXJwb2xhdG9yKHN3aXBlRGF0YSwgY29uZmlnKTtcblxuICAgICAgICAgIE9iamVjdC5lbnRyaWVzKGNzcykuZm9yRWFjaCgoW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICAgICAgICBlbC5zdHlsZS5zZXRQcm9wZXJ0eShrZXksIHZhbHVlKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG5cbiAgICBtZXJnZShmcm9tRXZlbnQ8VG91Y2hFdmVudD4oZWwsICd0b3VjaGVuZCcpLCBmcm9tRXZlbnQ8TW91c2VFdmVudD4oZWwsICdtb3VzZXVwJykpXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX2RyYWdUb0Rpc21pc3NTdG9wJCksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLm92ZXJsYXlSZWYuYWZ0ZXJDbG9zZWQoKSksXG4gICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgaWYgKHN3aXBlSWQgPT09IG51bGwgfHwgaXNTZWxlY3Rpb25BY3RpdmUpIHJldHVybjtcblxuICAgICAgICAgIGNvbnN0IHN3aXBlRGF0YSA9IHRoaXMuX3N3aXBlSGFuZGxlclNlcnZpY2UuZW5kU3dpcGUoc3dpcGVJZCk7XG4gICAgICAgICAgc3dpcGVJZCA9IG51bGw7XG5cbiAgICAgICAgICBpZiAoIXN3aXBlRGF0YSkgcmV0dXJuO1xuXG4gICAgICAgICAgY29uc3QgY3NzID0gdGhpcy5fZGVmYXVsdFN3aXBlRW5kU3R5bGVJbnRlcnBvbGF0b3Ioc3dpcGVEYXRhLCBjb25maWcpO1xuXG4gICAgICAgICAgaWYgKCFjc3MpIHtcbiAgICAgICAgICAgIHRoaXMub3ZlcmxheVJlZj8uX2Nsb3NlT3ZlcmxheVZpYSgndG91Y2gnKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBPYmplY3QuZW50cmllcyhjc3MpLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgICAgICAgaWYgKGtleSA9PT0gJ2NsZWFuVXAnKSB7XG4gICAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnIHx8ICF2YWx1ZSkgcmV0dXJuO1xuXG4gICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHZhbHVlLmZuKGVsKTtcbiAgICAgICAgICAgICAgfSwgdmFsdWUuZGVsYXkpO1xuXG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZWwuc3R5bGUuc2V0UHJvcGVydHkoa2V5LCB2YWx1ZSBhcyBzdHJpbmcpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9KSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIF9kaXNhYmxlRHJhZ1RvRGlzbWlzcygpIHtcbiAgICB0aGlzLl9kcmFnVG9EaXNtaXNzU3RvcCQubmV4dCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfZGVmYXVsdFN3aXBlTW92ZVN0eWxlSW50ZXJwb2xhdG9yKGV2ZW50OiBTd2lwZVVwZGF0ZUV2ZW50LCBjb25maWc6IE92ZXJsYXlEcmFnVG9EaXNtaXNzQ29uZmlnKSB7XG4gICAgY29uc3QgeyBkaXJlY3Rpb24gfSA9IGNvbmZpZztcbiAgICBjb25zdCB7IG1vdmVtZW50WCwgbW92ZW1lbnRZIH0gPSBldmVudDtcblxuICAgIGlmIChkaXJlY3Rpb24gPT09ICd0by1ib3R0b20nKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0cmFuc2Zvcm06IGB0cmFuc2xhdGVZKCR7bW92ZW1lbnRZIDwgMCA/IDAgOiBtb3ZlbWVudFl9cHgpYCxcbiAgICAgIH07XG4gICAgfSBlbHNlIGlmIChkaXJlY3Rpb24gPT09ICd0by10b3AnKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0cmFuc2Zvcm06IGB0cmFuc2xhdGVZKCR7bW92ZW1lbnRZID4gMCA/IDAgOiBtb3ZlbWVudFl9cHgpYCxcbiAgICAgIH07XG4gICAgfSBlbHNlIGlmIChkaXJlY3Rpb24gPT09ICd0by1sZWZ0Jykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHJhbnNmb3JtOiBgdHJhbnNsYXRlWCgke21vdmVtZW50WCA+IDAgPyAwIDogbW92ZW1lbnRYfXB4KWAsXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0cmFuc2Zvcm06IGB0cmFuc2xhdGVYKCR7bW92ZW1lbnRYIDwgMCA/IDAgOiBtb3ZlbWVudFh9cHgpYCxcbiAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfZGVmYXVsdFN3aXBlRW5kU3R5bGVJbnRlcnBvbGF0b3IoZXZlbnQ6IFN3aXBlRW5kRXZlbnQsIGNvbmZpZzogT3ZlcmxheURyYWdUb0Rpc21pc3NDb25maWcpIHtcbiAgICBjb25zdCB7IGRpcmVjdGlvbiwgbWluRGlzdGFuY2VUb0Rpc21pc3MgPSAxNTAsIG1pblZlbG9jaXR5VG9EaXNtaXNzID0gMTUwIH0gPSBjb25maWc7XG4gICAgY29uc3QgeyBtb3ZlbWVudFgsIG1vdmVtZW50WSwgcGl4ZWxQZXJTZWNvbmRYLCBwaXhlbFBlclNlY29uZFkgfSA9IGV2ZW50O1xuXG4gICAgY29uc3QgY2xlYW5VcCA9IHtcbiAgICAgIGRlbGF5OiAxMDAsXG4gICAgICBmbjogKGVsOiBIVE1MRWxlbWVudCkgPT4gZWwuc3R5bGUucmVtb3ZlUHJvcGVydHkoJ3RyYW5zaXRpb24nKSxcbiAgICB9O1xuXG4gICAgaWYgKGRpcmVjdGlvbiA9PT0gJ3RvLWJvdHRvbScpIHtcbiAgICAgIGlmIChtb3ZlbWVudFkgPCBtaW5EaXN0YW5jZVRvRGlzbWlzcyAmJiBwaXhlbFBlclNlY29uZFkgPCBtaW5WZWxvY2l0eVRvRGlzbWlzcykge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHRyYW5zZm9ybTogYHRyYW5zbGF0ZVkoMClgLFxuICAgICAgICAgIHRyYW5zaXRpb246ICd0cmFuc2Zvcm0gMTAwbXMgdmFyKC0tZWFzZS1vdXQtMSknLFxuICAgICAgICAgIGNsZWFuVXA6IG1vdmVtZW50WSA/IGNsZWFuVXAgOiB1bmRlZmluZWQsXG4gICAgICAgIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGRpcmVjdGlvbiA9PT0gJ3RvLXRvcCcpIHtcbiAgICAgIGlmIChtb3ZlbWVudFkgPiAtbWluRGlzdGFuY2VUb0Rpc21pc3MgJiYgcGl4ZWxQZXJTZWNvbmRZID4gLW1pblZlbG9jaXR5VG9EaXNtaXNzKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdHJhbnNmb3JtOiBgdHJhbnNsYXRlWSgwKWAsXG4gICAgICAgICAgdHJhbnNpdGlvbjogJ3RyYW5zZm9ybSAxMDBtcyB2YXIoLS1lYXNlLW91dC0xKScsXG4gICAgICAgICAgY2xlYW5VcDogbW92ZW1lbnRZID8gY2xlYW5VcCA6IHVuZGVmaW5lZCxcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoZGlyZWN0aW9uID09PSAndG8tbGVmdCcpIHtcbiAgICAgIGlmIChtb3ZlbWVudFggPiAtbWluRGlzdGFuY2VUb0Rpc21pc3MgJiYgcGl4ZWxQZXJTZWNvbmRYID4gLW1pblZlbG9jaXR5VG9EaXNtaXNzKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdHJhbnNmb3JtOiBgdHJhbnNsYXRlWCgwKWAsXG4gICAgICAgICAgdHJhbnNpdGlvbjogJ3RyYW5zZm9ybSAxMDBtcyB2YXIoLS1lYXNlLW91dC0xKScsXG4gICAgICAgICAgY2xlYW5VcDogbW92ZW1lbnRYID8gY2xlYW5VcCA6IHVuZGVmaW5lZCxcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAobW92ZW1lbnRYIDwgbWluRGlzdGFuY2VUb0Rpc21pc3MgJiYgcGl4ZWxQZXJTZWNvbmRYIDwgbWluVmVsb2NpdHlUb0Rpc21pc3MpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB0cmFuc2Zvcm06IGB0cmFuc2xhdGVYKDApYCxcbiAgICAgICAgICB0cmFuc2l0aW9uOiAndHJhbnNmb3JtIDEwMG1zIHZhcigtLWVhc2Utb3V0LTEpJyxcbiAgICAgICAgICBjbGVhblVwOiBtb3ZlbWVudFggPyBjbGVhblVwIDogdW5kZWZpbmVkLFxuICAgICAgICB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
287
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcmxheS1jb250YWluZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvc3JjL2xpYi9jb21wb25lbnRzL292ZXJsYXkvY29tcG9uZW50cy9vdmVybGF5L2NvbXBvbmVudHMvb3ZlcmxheS1jb250YWluZXIvb3ZlcmxheS1jb250YWluZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsZ0JBQWdCLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN6RixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsVUFBVSxJQUFJLGFBQWEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ25FLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsSCxPQUFPLEVBQ0wsd0JBQXdCLEVBQ3hCLDBCQUEwQixFQUMxQixxQkFBcUIsRUFDckIsZ0JBQWdCLEVBQ2hCLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUscUJBQXFCLEVBQUUsY0FBYyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDekUsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDakUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFakUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7OztBQUlqRCxNQUFNLFlBQVksR0FBRyxDQUFDLEtBQVksRUFBdUIsRUFBRTtJQUN6RCxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDO0FBQy9CLENBQUMsQ0FBQztBQTBCRixNQUFNLE9BQU8seUJBQTBCLFNBQVEsa0JBQWlDO0lBYzlFO1FBQ0UsS0FBSyxDQUNILE1BQU0sQ0FBQyxVQUFVLENBQUMsRUFDbEIsTUFBTSxDQUFDLGdCQUFnQixDQUFDLEVBQ3hCLE1BQU0sQ0FBQyxRQUFRLENBQUMsRUFDaEIsTUFBTSxDQUFDLGNBQWMsQ0FBQyxFQUN0QixNQUFNLENBQUMsb0JBQW9CLENBQUMsRUFDNUIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUNkLE1BQU0sQ0FBQyxhQUFhLENBQUMsRUFDckIsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUNyQixDQUFDO1FBdkJhLHlCQUFvQixHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQ25ELHdCQUFtQixHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFDbEQsbUJBQWMsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDaEMseUJBQW9CLEdBQUcsTUFBTSxDQUFDLGNBQWMsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDMUYsa0JBQWEsR0FBRyxNQUFNLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUU5Qyx1QkFBa0IsR0FBRyxNQUFNLENBQUMsd0JBQXdCLENBQUMsQ0FBQztRQUN0RCxrQkFBYSxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUUvQyxlQUFVLEdBQXNCLElBQUksQ0FBQztRQUU1QixlQUFVLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztRQWNyQyxJQUFJLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1lBQzlCLElBQUksQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFDbEUsQ0FBQztJQUNILENBQUM7SUFFa0IsZ0JBQWdCO1FBQ2pDLEtBQUssQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBRXpCLElBQUksQ0FBQyxhQUFhLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDO1FBRXBFLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDYixJQUFJLENBQUMsa0JBQWtCLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDbEMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRWtCLG9CQUFvQjtRQUNyQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUNqQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDcEIsQ0FBQztJQUNILENBQUM7SUFFUyxrQkFBa0I7UUFDMUIsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ2hDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNwQixDQUFDO0lBQ0gsQ0FBQztJQUVELG9CQUFvQixDQUFDLE1BQWtDO1FBQ3JELElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVTtZQUFFLE9BQU87UUFFN0IsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksRUFBRSxDQUFDO1FBRWhDLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBNEIsQ0FBQztRQUN6RCxJQUFJLE9BQU8sR0FBa0IsSUFBSSxDQUFDO1FBQ2xDLElBQUksaUJBQWlCLEdBQUcsS0FBSyxDQUFDO1FBRTlCLE1BQU0sVUFBVSxHQUFHLEdBQUcsRUFBRTtZQUN0QixFQUFFLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxZQUFZLEVBQUUsbUNBQW1DLENBQUMsQ0FBQztZQUN4RSxFQUFFLENBQUMsS0FBSyxDQUFDLFNBQVM7Z0JBQ2hCLE1BQU0sQ0FBQyxTQUFTLEtBQUssV0FBVyxJQUFJLE1BQU0sQ0FBQyxTQUFTLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQztZQUN4RyxPQUFPLEdBQUcsSUFBSSxDQUFDO1lBRWYsVUFBVSxDQUFDLEdBQUcsRUFBRTtnQkFDZCxFQUFFLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQUMsQ0FBQztnQkFDdEMsRUFBRSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDdkMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ1YsQ0FBQyxDQUFDO1FBRUYsS0FBSyxDQUFDLFNBQVMsQ0FBYSxFQUFFLEVBQUUsWUFBWSxDQUFDLEVBQUUsU0FBUyxDQUFhLEVBQUUsRUFBRSxXQUFXLENBQUMsQ0FBQzthQUNuRixJQUFJLENBQ0gsU0FBUyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxFQUNuQyxTQUFTLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxFQUN4QyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNaLElBQUksaUJBQWlCO2dCQUFFLE9BQU87WUFFOUIsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQXFCLENBQUM7WUFDM0MsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUV6QyxJQUFJLEdBQUcsS0FBSyxPQUFPLElBQUksR0FBRyxLQUFLLFVBQVUsSUFBSSxHQUFHLEtBQUssUUFBUSxJQUFJLEdBQUcsS0FBSyxRQUFRLElBQUksR0FBRyxLQUFLLEdBQUc7Z0JBQUUsT0FBTztZQUV6RyxPQUFPLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN4RCxDQUFDLENBQUMsQ0FDSDthQUNBLFNBQVMsRUFBRSxDQUFDO1FBRWYsU0FBUyxDQUFRLFFBQVEsRUFBRSxpQkFBaUIsQ0FBQzthQUMxQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7YUFDbkYsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNkLE1BQU0sU0FBUyxHQUFHLFFBQVEsQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUUxQyxJQUFJLENBQUMsU0FBUyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUMvQyxpQkFBaUIsR0FBRyxLQUFLLENBQUM7Z0JBQzFCLE9BQU87WUFDVCxDQUFDO1lBRUQsaUJBQWlCLEdBQUcsSUFBSSxDQUFDO1lBRXpCLFVBQVUsRUFBRSxDQUFDO1FBQ2YsQ0FBQyxDQUFDLENBQUM7UUFFTCxLQUFLLENBQUMsU0FBUyxDQUFhLEVBQUUsRUFBRSxXQUFXLENBQUMsRUFBRSxTQUFTLENBQWEsRUFBRSxFQUFFLFdBQVcsQ0FBQyxDQUFDO2FBQ2xGLElBQUksQ0FDSCxTQUFTLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEVBQ25DLFNBQVMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsRUFBRSxDQUFDLEVBQ3hDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ1osSUFBSSxPQUFPLEtBQUssSUFBSSxJQUFJLGlCQUFpQjtnQkFBRSxPQUFPO1lBRWxELElBQUksWUFBWSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQ3hCLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFxQixDQUFDO2dCQUUzQyxNQUFNLDZCQUE2QixHQUFHLENBQUMsRUFBZSxFQUFzQixFQUFFO29CQUM1RSxJQUFJLENBQUMsRUFBRTt3QkFBRSxPQUFPLElBQUksQ0FBQztvQkFFckIsSUFBSSxNQUFNLENBQUMsU0FBUyxLQUFLLFdBQVcsSUFBSSxNQUFNLENBQUMsU0FBUyxLQUFLLFFBQVEsRUFBRSxDQUFDO3dCQUN0RSxJQUFJLGdCQUFnQixDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDOzRCQUM5QixPQUFPLEVBQUUsQ0FBQzt3QkFDWixDQUFDO29CQUNILENBQUM7eUJBQU0sQ0FBQzt3QkFDTixJQUFJLGdCQUFnQixDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDOzRCQUM5QixPQUFPLEVBQUUsQ0FBQzt3QkFDWixDQUFDO29CQUNILENBQUM7b0JBRUQsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLElBQUksRUFBRSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsS0FBSyxzQkFBc0I7d0JBQUUsT0FBTyxJQUFJLENBQUM7b0JBRTFGLE9BQU8sNkJBQTZCLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxDQUFDO2dCQUN6RCxDQUFDLENBQUM7Z0JBRUYsTUFBTSxpQkFBaUIsR0FBRyw2QkFBNkIsQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFFaEUsSUFBSSxpQkFBaUIsRUFBRSxDQUFDO29CQUN0QixJQUFJLE1BQU0sR0FBRyxLQUFLLENBQUM7b0JBQ25CLElBQUksTUFBTSxDQUFDLFNBQVMsS0FBSyxXQUFXLEVBQUUsQ0FBQzt3QkFDckMsSUFBSSxpQkFBaUIsQ0FBQyxTQUFTLEtBQUssQ0FBQyxFQUFFLENBQUM7NEJBQ3RDLE1BQU0sR0FBRyxJQUFJLENBQUM7d0JBQ2hCLENBQUM7b0JBQ0gsQ0FBQzt5QkFBTSxJQUFJLE1BQU0sQ0FBQyxTQUFTLEtBQUssUUFBUSxFQUFFLENBQUM7d0JBQ3pDLElBQ0UsSUFBSSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLENBQUM7NEJBQ3ZDLGlCQUFpQixDQUFDLFlBQVksR0FBRyxpQkFBaUIsQ0FBQyxZQUFZLEVBQy9ELENBQUM7NEJBQ0QsTUFBTSxHQUFHLElBQUksQ0FBQzt3QkFDaEIsQ0FBQztvQkFDSCxDQUFDO3lCQUFNLElBQUksTUFBTSxDQUFDLFNBQVMsS0FBSyxVQUFVLEVBQUUsQ0FBQzt3QkFDM0MsSUFBSSxpQkFBaUIsQ0FBQyxVQUFVLEtBQUssQ0FBQyxFQUFFLENBQUM7NEJBQ3ZDLE1BQU0sR0FBRyxJQUFJLENBQUM7d0JBQ2hCLENBQUM7b0JBQ0gsQ0FBQzt5QkFBTSxDQUFDO3dCQUNOLElBQ0UsSUFBSSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLENBQUM7NEJBQ3hDLGlCQUFpQixDQUFDLFdBQVcsR0FBRyxpQkFBaUIsQ0FBQyxXQUFXLEVBQzdELENBQUM7NEJBQ0QsTUFBTSxHQUFHLElBQUksQ0FBQzt3QkFDaEIsQ0FBQztvQkFDSCxDQUFDO29CQUVELElBQUksTUFBTSxFQUFFLENBQUM7d0JBQ1gsVUFBVSxFQUFFLENBQUM7d0JBRWIsT0FBTztvQkFDVCxDQUFDO2dCQUNILENBQUM7WUFDSCxDQUFDO1lBRUQsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFFeEUsSUFBSSxDQUFDLFNBQVM7Z0JBQUUsT0FBTztZQUV2QixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsa0NBQWtDLENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBRXZFLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRTtnQkFDM0MsRUFBRSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ25DLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQ0g7YUFDQSxTQUFTLEVBQUUsQ0FBQztRQUVmLEtBQUssQ0FBQyxTQUFTLENBQWEsRUFBRSxFQUFFLFVBQVUsQ0FBQyxFQUFFLFNBQVMsQ0FBYSxFQUFFLEVBQUUsU0FBUyxDQUFDLENBQUM7YUFDL0UsSUFBSSxDQUNILFNBQVMsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsRUFDbkMsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxFQUFFLENBQUMsRUFDeEMsR0FBRyxDQUFDLEdBQUcsRUFBRTtZQUNQLElBQUksT0FBTyxLQUFLLElBQUksSUFBSSxpQkFBaUI7Z0JBQUUsT0FBTztZQUVsRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzlELE9BQU8sR0FBRyxJQUFJLENBQUM7WUFFZixJQUFJLENBQUMsU0FBUztnQkFBRSxPQUFPO1lBRXZCLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxpQ0FBaUMsQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFFdEUsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO2dCQUNULElBQUksQ0FBQyxVQUFVLEVBQUUsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQzNDLE9BQU87WUFDVCxDQUFDO1lBRUQsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFO2dCQUMzQyxJQUFJLEdBQUcsS0FBSyxTQUFTLEVBQUUsQ0FBQztvQkFDdEIsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksQ0FBQyxLQUFLO3dCQUFFLE9BQU87b0JBRWhELFVBQVUsQ0FBQyxHQUFHLEVBQUU7d0JBQ2QsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztvQkFDZixDQUFDLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUVoQixPQUFPO2dCQUNULENBQUM7Z0JBRUQsRUFBRSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsR0FBRyxFQUFFLEtBQWUsQ0FBQyxDQUFDO1lBQzdDLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQ0g7YUFDQSxTQUFTLEVBQUUsQ0FBQztJQUNqQixDQUFDO0lBRUQscUJBQXFCO1FBQ25CLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNsQyxDQUFDO0lBRU8sa0NBQWtDLENBQUMsS0FBdUIsRUFBRSxNQUFrQztRQUNwRyxNQUFNLEVBQUUsU0FBUyxFQUFFLEdBQUcsTUFBTSxDQUFDO1FBQzdCLE1BQU0sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLEdBQUcsS0FBSyxDQUFDO1FBRXZDLElBQUksU0FBUyxLQUFLLFdBQVcsRUFBRSxDQUFDO1lBQzlCLE9BQU87Z0JBQ0wsU0FBUyxFQUFFLGNBQWMsU0FBUyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLEtBQUs7YUFDNUQsQ0FBQztRQUNKLENBQUM7YUFBTSxJQUFJLFNBQVMsS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUNsQyxPQUFPO2dCQUNMLFNBQVMsRUFBRSxjQUFjLFNBQVMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxLQUFLO2FBQzVELENBQUM7UUFDSixDQUFDO2FBQU0sSUFBSSxTQUFTLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDbkMsT0FBTztnQkFDTCxTQUFTLEVBQUUsY0FBYyxTQUFTLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsS0FBSzthQUM1RCxDQUFDO1FBQ0osQ0FBQzthQUFNLENBQUM7WUFDTixPQUFPO2dCQUNMLFNBQVMsRUFBRSxjQUFjLFNBQVMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxLQUFLO2FBQzVELENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQztJQUVPLGlDQUFpQyxDQUFDLEtBQW9CLEVBQUUsTUFBa0M7UUFDaEcsTUFBTSxFQUFFLFNBQVMsRUFBRSxvQkFBb0IsR0FBRyxHQUFHLEVBQUUsb0JBQW9CLEdBQUcsR0FBRyxFQUFFLEdBQUcsTUFBTSxDQUFDO1FBQ3JGLE1BQU0sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxlQUFlLEVBQUUsR0FBRyxLQUFLLENBQUM7UUFFekUsTUFBTSxPQUFPLEdBQUc7WUFDZCxLQUFLLEVBQUUsR0FBRztZQUNWLEVBQUUsRUFBRSxDQUFDLEVBQWUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsWUFBWSxDQUFDO1NBQy9ELENBQUM7UUFFRixJQUFJLFNBQVMsS0FBSyxXQUFXLEVBQUUsQ0FBQztZQUM5QixJQUFJLFNBQVMsR0FBRyxvQkFBb0IsSUFBSSxlQUFlLEdBQUcsb0JBQW9CLEVBQUUsQ0FBQztnQkFDL0UsT0FBTztvQkFDTCxTQUFTLEVBQUUsZUFBZTtvQkFDMUIsVUFBVSxFQUFFLG1DQUFtQztvQkFDL0MsT0FBTyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxTQUFTO2lCQUN6QyxDQUFDO1lBQ0osQ0FBQztpQkFBTSxDQUFDO2dCQUNOLE9BQU8sSUFBSSxDQUFDO1lBQ2QsQ0FBQztRQUNILENBQUM7UUFDRCxJQUFJLFNBQVMsS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUMzQixJQUFJLFNBQVMsR0FBRyxDQUFDLG9CQUFvQixJQUFJLGVBQWUsR0FBRyxDQUFDLG9CQUFvQixFQUFFLENBQUM7Z0JBQ2pGLE9BQU87b0JBQ0wsU0FBUyxFQUFFLGVBQWU7b0JBQzFCLFVBQVUsRUFBRSxtQ0FBbUM7b0JBQy9DLE9BQU8sRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsU0FBUztpQkFDekMsQ0FBQztZQUNKLENBQUM7aUJBQU0sQ0FBQztnQkFDTixPQUFPLElBQUksQ0FBQztZQUNkLENBQUM7UUFDSCxDQUFDO2FBQU0sSUFBSSxTQUFTLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDbkMsSUFBSSxTQUFTLEdBQUcsQ0FBQyxvQkFBb0IsSUFBSSxlQUFlLEdBQUcsQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO2dCQUNqRixPQUFPO29CQUNMLFNBQVMsRUFBRSxlQUFlO29CQUMxQixVQUFVLEVBQUUsbUNBQW1DO29CQUMvQyxPQUFPLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFNBQVM7aUJBQ3pDLENBQUM7WUFDSixDQUFDO2lCQUFNLENBQUM7Z0JBQ04sT0FBTyxJQUFJLENBQUM7WUFDZCxDQUFDO1FBQ0gsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLFNBQVMsR0FBRyxvQkFBb0IsSUFBSSxlQUFlLEdBQUcsb0JBQW9CLEVBQUUsQ0FBQztnQkFDL0UsT0FBTztvQkFDTCxTQUFTLEVBQUUsZUFBZTtvQkFDMUIsVUFBVSxFQUFFLG1DQUFtQztvQkFDL0MsT0FBTyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxTQUFTO2lCQUN6QyxDQUFDO1lBQ0osQ0FBQztpQkFBTSxDQUFDO2dCQUNOLE9BQU8sSUFBSSxDQUFDO1lBQ2QsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDOzhHQTFTVSx5QkFBeUI7a0dBQXpCLHlCQUF5QixvcEJBckIxQjs7O0dBR1QsNDNTQWVTLFlBQVk7OzJGQUdYLHlCQUF5QjtrQkF4QnJDLFNBQVM7K0JBQ0Usc0JBQXNCLFlBRXRCOzs7R0FHVCxpQkFDYyxpQkFBaUIsQ0FBQyxJQUFJLG1CQUNwQix1QkFBdUIsQ0FBQyxNQUFNLFFBQ3pDO3dCQUNKLEtBQUssRUFBRSxZQUFZO3dCQUNuQixRQUFRLEVBQUUsSUFBSTt3QkFDZCxtQkFBbUIsRUFBRSxtQkFBbUI7d0JBQ3hDLE1BQU0sRUFBRSxZQUFZO3dCQUNwQixhQUFhLEVBQUUsY0FBYzt3QkFDN0Isd0JBQXdCLEVBQUUsNENBQTRDO3dCQUN0RSxtQkFBbUIsRUFBRSxtQkFBbUI7d0JBQ3hDLHlCQUF5QixFQUFFLGlDQUFpQzt3QkFDNUQsbUNBQW1DLEVBQUUseUJBQXlCO3FCQUMvRCxjQUNXLElBQUksV0FDUCxDQUFDLFlBQVksQ0FBQyxrQkFDUCxDQUFDLHFCQUFxQixFQUFFLDBCQUEwQixFQUFFLHFCQUFxQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRm9jdXNNb25pdG9yLCBGb2N1c1RyYXBGYWN0b3J5LCBJbnRlcmFjdGl2aXR5Q2hlY2tlciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7IENka0RpYWxvZ0NvbnRhaW5lciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9kaWFsb2cnO1xuaW1wb3J0IHsgT3ZlcmxheVJlZiBhcyBDZGtPdmVybGF5UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgUG9ydGFsTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5pbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBOZ1pvbmUsIFZpZXdFbmNhcHN1bGF0aW9uLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEFOSU1BVEVEX0xJRkVDWUNMRV9UT0tFTixcbiAgQW5pbWF0ZWRMaWZlY3ljbGVEaXJlY3RpdmUsXG4gIFJvb3RCb3VuZGFyeURpcmVjdGl2ZSxcbiAgZWxlbWVudENhblNjcm9sbCxcbiAgbmV4dEZyYW1lLFxufSBmcm9tICdAZXRobGV0ZS9jb3JlJztcbmltcG9ydCB7IFByb3ZpZGVUaGVtZURpcmVjdGl2ZSwgVEhFTUVfUFJPVklERVIgfSBmcm9tICdAZXRobGV0ZS90aGVtaW5nJztcbmltcG9ydCB7IFN1YmplY3QsIGZyb21FdmVudCwgbWVyZ2UsIHRha2VVbnRpbCwgdGFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBTd2lwZUhhbmRsZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vc2VydmljZXMnO1xuaW1wb3J0IHsgU3dpcGVFbmRFdmVudCwgU3dpcGVVcGRhdGVFdmVudCB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL3R5cGVzJztcbmltcG9ydCB7IE9WRVJMQVlfQ09ORklHIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IE92ZXJsYXlDb25maWcsIE92ZXJsYXlEcmFnVG9EaXNtaXNzQ29uZmlnIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHsgT3ZlcmxheVJlZiB9IGZyb20gJy4uLy4uL3V0aWxzJztcblxuY29uc3QgaXNUb3VjaEV2ZW50ID0gKGV2ZW50OiBFdmVudCk6IGV2ZW50IGlzIFRvdWNoRXZlbnQgPT4ge1xuICByZXR1cm4gZXZlbnQudHlwZVswXSA9PT0gJ3QnO1xufTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZXQtb3ZlcmxheS1jb250YWluZXInLFxuICBzdHlsZVVybHM6IFsnLi9vdmVybGF5LWNvbnRhaW5lci5jb21wb25lbnQuc2NzcyddLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgY2xhc3M9XCJldC1vdmVybGF5LWNvbnRhaW5lci1kcmFnLWhhbmRsZVwiPjwvZGl2PlxuICAgIDxuZy10ZW1wbGF0ZSBjZGtQb3J0YWxPdXRsZXQgLz5cbiAgYCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGhvc3Q6IHtcbiAgICBjbGFzczogJ2V0LW92ZXJsYXknLFxuICAgIHRhYmluZGV4OiAnLTEnLFxuICAgICdbYXR0ci5hcmlhLW1vZGFsXSc6ICdfY29uZmlnLmFyaWFNb2RhbCcsXG4gICAgJ1tpZF0nOiAnX2NvbmZpZy5pZCcsXG4gICAgJ1thdHRyLnJvbGVdJzogJ19jb25maWcucm9sZScsXG4gICAgJ1thdHRyLmFyaWEtbGFiZWxsZWRieV0nOiAnX2NvbmZpZy5hcmlhTGFiZWwgPyBudWxsIDogX2FyaWFMYWJlbGxlZEJ5JyxcbiAgICAnW2F0dHIuYXJpYS1sYWJlbF0nOiAnX2NvbmZpZy5hcmlhTGFiZWwnLFxuICAgICdbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XSc6ICdfY29uZmlnLmFyaWFEZXNjcmliZWRCeSB8fCBudWxsJyxcbiAgICAnW2NsYXNzLmV0LXdpdGgtZGVmYXVsdC1hbmltYXRpb25dJzogJyFfY29uZmlnLmN1c3RvbUFuaW1hdGVkJyxcbiAgfSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1BvcnRhbE1vZHVsZV0sXG4gIGhvc3REaXJlY3RpdmVzOiBbUm9vdEJvdW5kYXJ5RGlyZWN0aXZlLCBBbmltYXRlZExpZmVjeWNsZURpcmVjdGl2ZSwgUHJvdmlkZVRoZW1lRGlyZWN0aXZlXSxcbn0pXG5leHBvcnQgY2xhc3MgT3ZlcmxheUNvbnRhaW5lckNvbXBvbmVudCBleHRlbmRzIENka0RpYWxvZ0NvbnRhaW5lcjxPdmVybGF5Q29uZmlnPiB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3N3aXBlSGFuZGxlclNlcnZpY2UgPSBpbmplY3QoU3dpcGVIYW5kbGVyU2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2RyYWdUb0Rpc21pc3NTdG9wJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIHJlYWRvbmx5IF90aGVtZVByb3ZpZGVyID0gaW5qZWN0KFRIRU1FX1BST1ZJREVSKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfcGFyZW50VGhlbWVQcm92aWRlciA9IGluamVjdChUSEVNRV9QUk9WSURFUiwgeyBvcHRpb25hbDogdHJ1ZSwgc2tpcFNlbGY6IHRydWUgfSk7XG4gIHJlYWRvbmx5IF9yb290Qm91bmRhcnkgPSBpbmplY3QoUm9vdEJvdW5kYXJ5RGlyZWN0aXZlKTtcblxuICByZWFkb25seSBfYW5pbWF0ZWRMaWZlY3ljbGUgPSBpbmplY3QoQU5JTUFURURfTElGRUNZQ0xFX1RPS0VOKTtcbiAgcmVhZG9ubHkgY2RrT3ZlcmxheVJlZiA9IGluamVjdChDZGtPdmVybGF5UmVmKTtcblxuICBvdmVybGF5UmVmOiBPdmVybGF5UmVmIHwgbnVsbCA9IG51bGw7XG5cbiAgcmVhZG9ubHkgZWxlbWVudFJlZiA9IHRoaXMuX2VsZW1lbnRSZWY7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoXG4gICAgICBpbmplY3QoRWxlbWVudFJlZiksXG4gICAgICBpbmplY3QoRm9jdXNUcmFwRmFjdG9yeSksXG4gICAgICBpbmplY3QoRE9DVU1FTlQpLFxuICAgICAgaW5qZWN0KE9WRVJMQVlfQ09ORklHKSxcbiAgICAgIGluamVjdChJbnRlcmFjdGl2aXR5Q2hlY2tlciksXG4gICAgICBpbmplY3QoTmdab25lKSxcbiAgICAgIGluamVjdChDZGtPdmVybGF5UmVmKSxcbiAgICAgIGluamVjdChGb2N1c01vbml0b3IpLFxuICAgICk7XG5cbiAgICBpZiAodGhpcy5fcGFyZW50VGhlbWVQcm92aWRlcikge1xuICAgICAgdGhpcy5fdGhlbWVQcm92aWRlci5zeW5jV2l0aFByb3ZpZGVyKHRoaXMuX3BhcmVudFRoZW1lUHJvdmlkZXIpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSBfY29udGVudEF0dGFjaGVkKCk6IHZvaWQge1xuICAgIHN1cGVyLl9jb250ZW50QXR0YWNoZWQoKTtcblxuICAgIHRoaXMuX3Jvb3RCb3VuZGFyeS5ib3VuZGFyeUVsZW1lbnQgPSB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICBuZXh0RnJhbWUoKCkgPT4ge1xuICAgICAgdGhpcy5fYW5pbWF0ZWRMaWZlY3ljbGUuZW50ZXIoKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSBfY2FwdHVyZUluaXRpYWxGb2N1cygpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX2NvbmZpZy5kZWxheUZvY3VzVHJhcCkge1xuICAgICAgdGhpcy5fdHJhcEZvY3VzKCk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIF9vcGVuQW5pbWF0aW9uRG9uZSgpIHtcbiAgICBpZiAodGhpcy5fY29uZmlnLmRlbGF5Rm9jdXNUcmFwKSB7XG4gICAgICB0aGlzLl90cmFwRm9jdXMoKTtcbiAgICB9XG4gIH1cblxuICBfZW5hYmxlRHJhZ1RvRGlzbWlzcyhjb25maWc6IE92ZXJsYXlEcmFnVG9EaXNtaXNzQ29uZmlnKSB7XG4gICAgaWYgKCF0aGlzLm92ZXJsYXlSZWYpIHJldHVybjtcblxuICAgIHRoaXMuX2RyYWdUb0Rpc21pc3NTdG9wJC5uZXh0KCk7XG5cbiAgICBjb25zdCBlbCA9IHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudDtcbiAgICBsZXQgc3dpcGVJZDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG4gICAgbGV0IGlzU2VsZWN0aW9uQWN0aXZlID0gZmFsc2U7XG5cbiAgICBjb25zdCBjYW5jZWxEcmFnID0gKCkgPT4ge1xuICAgICAgZWwuc3R5bGUuc2V0UHJvcGVydHkoJ3RyYW5zaXRpb24nLCAndHJhbnNmb3JtIDEwMG1zIHZhcigtLWVhc2Utb3V0LTEpJyk7XG4gICAgICBlbC5zdHlsZS50cmFuc2Zvcm0gPVxuICAgICAgICBjb25maWcuZGlyZWN0aW9uID09PSAndG8tYm90dG9tJyB8fCBjb25maWcuZGlyZWN0aW9uID09PSAndG8tdG9wJyA/ICd0cmFuc2xhdGVZKDApJyA6ICd0cmFuc2xhdGVYKDApJztcbiAgICAgIHN3aXBlSWQgPSBudWxsO1xuXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgZWwuc3R5bGUucmVtb3ZlUHJvcGVydHkoJ3RyYW5zaXRpb24nKTtcbiAgICAgICAgZWwuc3R5bGUucmVtb3ZlUHJvcGVydHkoJ3RyYW5zZm9ybScpO1xuICAgICAgfSwgMTAwKTtcbiAgICB9O1xuXG4gICAgbWVyZ2UoZnJvbUV2ZW50PFRvdWNoRXZlbnQ+KGVsLCAndG91Y2hzdGFydCcpLCBmcm9tRXZlbnQ8TW91c2VFdmVudD4oZWwsICdtb3VzZWRvd24nKSlcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlVW50aWwodGhpcy5fZHJhZ1RvRGlzbWlzc1N0b3AkKSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMub3ZlcmxheVJlZi5hZnRlckNsb3NlZCgpKSxcbiAgICAgICAgdGFwKChldmVudCkgPT4ge1xuICAgICAgICAgIGlmIChpc1NlbGVjdGlvbkFjdGl2ZSkgcmV0dXJuO1xuXG4gICAgICAgICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xuICAgICAgICAgIGNvbnN0IHRhZyA9IHRhcmdldC50YWdOYW1lLnRvTG93ZXJDYXNlKCk7XG5cbiAgICAgICAgICBpZiAodGFnID09PSAnaW5wdXQnIHx8IHRhZyA9PT0gJ3RleHRhcmVhJyB8fCB0YWcgPT09ICdzZWxlY3QnIHx8IHRhZyA9PT0gJ2J1dHRvbicgfHwgdGFnID09PSAnYScpIHJldHVybjtcblxuICAgICAgICAgIHN3aXBlSWQgPSB0aGlzLl9zd2lwZUhhbmRsZXJTZXJ2aWNlLnN0YXJ0U3dpcGUoZXZlbnQpO1xuICAgICAgICB9KSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcblxuICAgIGZyb21FdmVudDxFdmVudD4oZG9jdW1lbnQsICdzZWxlY3Rpb25jaGFuZ2UnKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuX2RyYWdUb0Rpc21pc3NTdG9wJCksIHRha2VVbnRpbCh0aGlzLm92ZXJsYXlSZWYuYWZ0ZXJDbG9zZWQoKSkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgY29uc3Qgc2VsZWN0aW9uID0gZG9jdW1lbnQuZ2V0U2VsZWN0aW9uKCk7XG5cbiAgICAgICAgaWYgKCFzZWxlY3Rpb24gfHwgIXNlbGVjdGlvbi50b1N0cmluZygpLmxlbmd0aCkge1xuICAgICAgICAgIGlzU2VsZWN0aW9uQWN0aXZlID0gZmFsc2U7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaXNTZWxlY3Rpb25BY3RpdmUgPSB0cnVlO1xuXG4gICAgICAgIGNhbmNlbERyYWcoKTtcbiAgICAgIH0pO1xuXG4gICAgbWVyZ2UoZnJvbUV2ZW50PFRvdWNoRXZlbnQ+KGVsLCAndG91Y2htb3ZlJyksIGZyb21FdmVudDxNb3VzZUV2ZW50PihlbCwgJ21vdXNlbW92ZScpKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9kcmFnVG9EaXNtaXNzU3RvcCQpLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5vdmVybGF5UmVmLmFmdGVyQ2xvc2VkKCkpLFxuICAgICAgICB0YXAoKGV2ZW50KSA9PiB7XG4gICAgICAgICAgaWYgKHN3aXBlSWQgPT09IG51bGwgfHwgaXNTZWxlY3Rpb25BY3RpdmUpIHJldHVybjtcblxuICAgICAgICAgIGlmIChpc1RvdWNoRXZlbnQoZXZlbnQpKSB7XG4gICAgICAgICAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XG5cbiAgICAgICAgICAgIGNvbnN0IHJlY3Vyc2l2ZUZpbmRTY3JvbGxhYmxlUGFyZW50ID0gKGVsOiBIVE1MRWxlbWVudCk6IEhUTUxFbGVtZW50IHwgbnVsbCA9PiB7XG4gICAgICAgICAgICAgIGlmICghZWwpIHJldHVybiBudWxsO1xuXG4gICAgICAgICAgICAgIGlmIChjb25maWcuZGlyZWN0aW9uID09PSAndG8tYm90dG9tJyB8fCBjb25maWcuZGlyZWN0aW9uID09PSAndG8tdG9wJykge1xuICAgICAgICAgICAgICAgIGlmIChlbGVtZW50Q2FuU2Nyb2xsKGVsLCAneScpKSB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gZWw7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmIChlbGVtZW50Q2FuU2Nyb2xsKGVsLCAneCcpKSB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gZWw7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgaWYgKCFlbC5wYXJlbnRFbGVtZW50IHx8IGVsLnRhZ05hbWUudG9Mb3dlckNhc2UoKSA9PT0gJ2V0LW92ZXJsYXktY29udGFpbmVyJykgcmV0dXJuIG51bGw7XG5cbiAgICAgICAgICAgICAgcmV0dXJuIHJlY3Vyc2l2ZUZpbmRTY3JvbGxhYmxlUGFyZW50KGVsLnBhcmVudEVsZW1lbnQpO1xuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgY29uc3Qgc2Nyb2xsYWJsZUVsZW1lbnQgPSByZWN1cnNpdmVGaW5kU2Nyb2xsYWJsZVBhcmVudCh0YXJnZXQpO1xuXG4gICAgICAgICAgICBpZiAoc2Nyb2xsYWJsZUVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgbGV0IGNhbmNlbCA9IGZhbHNlO1xuICAgICAgICAgICAgICBpZiAoY29uZmlnLmRpcmVjdGlvbiA9PT0gJ3RvLWJvdHRvbScpIHtcbiAgICAgICAgICAgICAgICBpZiAoc2Nyb2xsYWJsZUVsZW1lbnQuc2Nyb2xsVG9wICE9PSAwKSB7XG4gICAgICAgICAgICAgICAgICBjYW5jZWwgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSBlbHNlIGlmIChjb25maWcuZGlyZWN0aW9uID09PSAndG8tdG9wJykge1xuICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgIE1hdGgucm91bmQoc2Nyb2xsYWJsZUVsZW1lbnQuc2Nyb2xsVG9wKSAhPT1cbiAgICAgICAgICAgICAgICAgIHNjcm9sbGFibGVFbGVtZW50LnNjcm9sbEhlaWdodCAtIHNjcm9sbGFibGVFbGVtZW50LmNsaWVudEhlaWdodFxuICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgY2FuY2VsID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAoY29uZmlnLmRpcmVjdGlvbiA9PT0gJ3RvLXJpZ2h0Jykge1xuICAgICAgICAgICAgICAgIGlmIChzY3JvbGxhYmxlRWxlbWVudC5zY3JvbGxMZWZ0ICE9PSAwKSB7XG4gICAgICAgICAgICAgICAgICBjYW5jZWwgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICBNYXRoLnJvdW5kKHNjcm9sbGFibGVFbGVtZW50LnNjcm9sbExlZnQpICE9PVxuICAgICAgICAgICAgICAgICAgc2Nyb2xsYWJsZUVsZW1lbnQuc2Nyb2xsV2lkdGggLSBzY3JvbGxhYmxlRWxlbWVudC5jbGllbnRXaWR0aFxuICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgY2FuY2VsID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBpZiAoY2FuY2VsKSB7XG4gICAgICAgICAgICAgICAgY2FuY2VsRHJhZygpO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3Qgc3dpcGVEYXRhID0gdGhpcy5fc3dpcGVIYW5kbGVyU2VydmljZS51cGRhdGVTd2lwZShzd2lwZUlkLCBldmVudCk7XG5cbiAgICAgICAgICBpZiAoIXN3aXBlRGF0YSkgcmV0dXJuO1xuXG4gICAgICAgICAgY29uc3QgY3NzID0gdGhpcy5fZGVmYXVsdFN3aXBlTW92ZVN0eWxlSW50ZXJwb2xhdG9yKHN3aXBlRGF0YSwgY29uZmlnKTtcblxuICAgICAgICAgIE9iamVjdC5lbnRyaWVzKGNzcykuZm9yRWFjaCgoW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICAgICAgICBlbC5zdHlsZS5zZXRQcm9wZXJ0eShrZXksIHZhbHVlKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG5cbiAgICBtZXJnZShmcm9tRXZlbnQ8VG91Y2hFdmVudD4oZWwsICd0b3VjaGVuZCcpLCBmcm9tRXZlbnQ8TW91c2VFdmVudD4oZWwsICdtb3VzZXVwJykpXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX2RyYWdUb0Rpc21pc3NTdG9wJCksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLm92ZXJsYXlSZWYuYWZ0ZXJDbG9zZWQoKSksXG4gICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgaWYgKHN3aXBlSWQgPT09IG51bGwgfHwgaXNTZWxlY3Rpb25BY3RpdmUpIHJldHVybjtcblxuICAgICAgICAgIGNvbnN0IHN3aXBlRGF0YSA9IHRoaXMuX3N3aXBlSGFuZGxlclNlcnZpY2UuZW5kU3dpcGUoc3dpcGVJZCk7XG4gICAgICAgICAgc3dpcGVJZCA9IG51bGw7XG5cbiAgICAgICAgICBpZiAoIXN3aXBlRGF0YSkgcmV0dXJuO1xuXG4gICAgICAgICAgY29uc3QgY3NzID0gdGhpcy5fZGVmYXVsdFN3aXBlRW5kU3R5bGVJbnRlcnBvbGF0b3Ioc3dpcGVEYXRhLCBjb25maWcpO1xuXG4gICAgICAgICAgaWYgKCFjc3MpIHtcbiAgICAgICAgICAgIHRoaXMub3ZlcmxheVJlZj8uX2Nsb3NlT3ZlcmxheVZpYSgndG91Y2gnKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBPYmplY3QuZW50cmllcyhjc3MpLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgICAgICAgaWYgKGtleSA9PT0gJ2NsZWFuVXAnKSB7XG4gICAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnIHx8ICF2YWx1ZSkgcmV0dXJuO1xuXG4gICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHZhbHVlLmZuKGVsKTtcbiAgICAgICAgICAgICAgfSwgdmFsdWUuZGVsYXkpO1xuXG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZWwuc3R5bGUuc2V0UHJvcGVydHkoa2V5LCB2YWx1ZSBhcyBzdHJpbmcpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9KSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIF9kaXNhYmxlRHJhZ1RvRGlzbWlzcygpIHtcbiAgICB0aGlzLl9kcmFnVG9EaXNtaXNzU3RvcCQubmV4dCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfZGVmYXVsdFN3aXBlTW92ZVN0eWxlSW50ZXJwb2xhdG9yKGV2ZW50OiBTd2lwZVVwZGF0ZUV2ZW50LCBjb25maWc6IE92ZXJsYXlEcmFnVG9EaXNtaXNzQ29uZmlnKSB7XG4gICAgY29uc3QgeyBkaXJlY3Rpb24gfSA9IGNvbmZpZztcbiAgICBjb25zdCB7IG1vdmVtZW50WCwgbW92ZW1lbnRZIH0gPSBldmVudDtcblxuICAgIGlmIChkaXJlY3Rpb24gPT09ICd0by1ib3R0b20nKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0cmFuc2Zvcm06IGB0cmFuc2xhdGVZKCR7bW92ZW1lbnRZIDwgMCA/IDAgOiBtb3ZlbWVudFl9cHgpYCxcbiAgICAgIH07XG4gICAgfSBlbHNlIGlmIChkaXJlY3Rpb24gPT09ICd0by10b3AnKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0cmFuc2Zvcm06IGB0cmFuc2xhdGVZKCR7bW92ZW1lbnRZID4gMCA/IDAgOiBtb3ZlbWVudFl9cHgpYCxcbiAgICAgIH07XG4gICAgfSBlbHNlIGlmIChkaXJlY3Rpb24gPT09ICd0by1sZWZ0Jykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHJhbnNmb3JtOiBgdHJhbnNsYXRlWCgke21vdmVtZW50WCA+IDAgPyAwIDogbW92ZW1lbnRYfXB4KWAsXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0cmFuc2Zvcm06IGB0cmFuc2xhdGVYKCR7bW92ZW1lbnRYIDwgMCA/IDAgOiBtb3ZlbWVudFh9cHgpYCxcbiAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfZGVmYXVsdFN3aXBlRW5kU3R5bGVJbnRlcnBvbGF0b3IoZXZlbnQ6IFN3aXBlRW5kRXZlbnQsIGNvbmZpZzogT3ZlcmxheURyYWdUb0Rpc21pc3NDb25maWcpIHtcbiAgICBjb25zdCB7IGRpcmVjdGlvbiwgbWluRGlzdGFuY2VUb0Rpc21pc3MgPSAxNTAsIG1pblZlbG9jaXR5VG9EaXNtaXNzID0gMTUwIH0gPSBjb25maWc7XG4gICAgY29uc3QgeyBtb3ZlbWVudFgsIG1vdmVtZW50WSwgcGl4ZWxQZXJTZWNvbmRYLCBwaXhlbFBlclNlY29uZFkgfSA9IGV2ZW50O1xuXG4gICAgY29uc3QgY2xlYW5VcCA9IHtcbiAgICAgIGRlbGF5OiAxMDAsXG4gICAgICBmbjogKGVsOiBIVE1MRWxlbWVudCkgPT4gZWwuc3R5bGUucmVtb3ZlUHJvcGVydHkoJ3RyYW5zaXRpb24nKSxcbiAgICB9O1xuXG4gICAgaWYgKGRpcmVjdGlvbiA9PT0gJ3RvLWJvdHRvbScpIHtcbiAgICAgIGlmIChtb3ZlbWVudFkgPCBtaW5EaXN0YW5jZVRvRGlzbWlzcyAmJiBwaXhlbFBlclNlY29uZFkgPCBtaW5WZWxvY2l0eVRvRGlzbWlzcykge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHRyYW5zZm9ybTogYHRyYW5zbGF0ZVkoMClgLFxuICAgICAgICAgIHRyYW5zaXRpb246ICd0cmFuc2Zvcm0gMTAwbXMgdmFyKC0tZWFzZS1vdXQtMSknLFxuICAgICAgICAgIGNsZWFuVXA6IG1vdmVtZW50WSA/IGNsZWFuVXAgOiB1bmRlZmluZWQsXG4gICAgICAgIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGRpcmVjdGlvbiA9PT0gJ3RvLXRvcCcpIHtcbiAgICAgIGlmIChtb3ZlbWVudFkgPiAtbWluRGlzdGFuY2VUb0Rpc21pc3MgJiYgcGl4ZWxQZXJTZWNvbmRZID4gLW1pblZlbG9jaXR5VG9EaXNtaXNzKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdHJhbnNmb3JtOiBgdHJhbnNsYXRlWSgwKWAsXG4gICAgICAgICAgdHJhbnNpdGlvbjogJ3RyYW5zZm9ybSAxMDBtcyB2YXIoLS1lYXNlLW91dC0xKScsXG4gICAgICAgICAgY2xlYW5VcDogbW92ZW1lbnRZID8gY2xlYW5VcCA6IHVuZGVmaW5lZCxcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoZGlyZWN0aW9uID09PSAndG8tbGVmdCcpIHtcbiAgICAgIGlmIChtb3ZlbWVudFggPiAtbWluRGlzdGFuY2VUb0Rpc21pc3MgJiYgcGl4ZWxQZXJTZWNvbmRYID4gLW1pblZlbG9jaXR5VG9EaXNtaXNzKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdHJhbnNmb3JtOiBgdHJhbnNsYXRlWCgwKWAsXG4gICAgICAgICAgdHJhbnNpdGlvbjogJ3RyYW5zZm9ybSAxMDBtcyB2YXIoLS1lYXNlLW91dC0xKScsXG4gICAgICAgICAgY2xlYW5VcDogbW92ZW1lbnRYID8gY2xlYW5VcCA6IHVuZGVmaW5lZCxcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAobW92ZW1lbnRYIDwgbWluRGlzdGFuY2VUb0Rpc21pc3MgJiYgcGl4ZWxQZXJTZWNvbmRYIDwgbWluVmVsb2NpdHlUb0Rpc21pc3MpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB0cmFuc2Zvcm06IGB0cmFuc2xhdGVYKDApYCxcbiAgICAgICAgICB0cmFuc2l0aW9uOiAndHJhbnNmb3JtIDEwMG1zIHZhcigtLWVhc2Utb3V0LTEpJyxcbiAgICAgICAgICBjbGVhblVwOiBtb3ZlbWVudFggPyBjbGVhblVwIDogdW5kZWZpbmVkLFxuICAgICAgICB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
@@ -9,7 +9,7 @@ import { OverlayRef } from '../components/overlay/utils';
|
|
|
9
9
|
*/
|
|
10
10
|
export const createOverlayDismissChecker = (config) => {
|
|
11
11
|
assertInInjectionContext(createOverlayDismissChecker);
|
|
12
|
-
const { form, dismissEvents = { backdropClick: true, escapeKey: true, closeCall: true }, dismissCheckFn } = config;
|
|
12
|
+
const { form, dismissEvents = { backdropClick: true, escapeKey: true, closeCall: true }, dismissCheckFn, compareFn, } = config;
|
|
13
13
|
let { defaultValue = form.getRawValue() } = config;
|
|
14
14
|
const checkBackdropClick = dismissEvents.backdropClick ?? true;
|
|
15
15
|
const checkEscapeKey = dismissEvents.escapeKey ?? true;
|
|
@@ -44,7 +44,9 @@ export const createOverlayDismissChecker = (config) => {
|
|
|
44
44
|
}
|
|
45
45
|
const sub = merge(...eventStreams)
|
|
46
46
|
.pipe(switchMap((eventOrResult) => {
|
|
47
|
-
const isDefaultFormValue =
|
|
47
|
+
const isDefaultFormValue = compareFn
|
|
48
|
+
? compareFn(form.getRawValue(), defaultValue)
|
|
49
|
+
: equal(form.getRawValue(), defaultValue);
|
|
48
50
|
if (isDefaultFormValue) {
|
|
49
51
|
return of(eventOrResult).pipe(tap(() => {
|
|
50
52
|
sub.unsubscribe();
|
|
@@ -100,4 +102,4 @@ export const createOverlayDismissChecker = (config) => {
|
|
|
100
102
|
},
|
|
101
103
|
};
|
|
102
104
|
};
|
|
103
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcmxheS1kaXNtaXNzLWNoZWNrZXIudXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY2RrL3NyYy9saWIvY29tcG9uZW50cy9vdmVybGF5L3V0aWxzL292ZXJsYXktZGlzbWlzcy1jaGVja2VyLnV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQy9DLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTVFLE9BQU8sRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDckcsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBNEV6RDs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSwyQkFBMkIsR0FBRyxDQUN6QyxNQUE0QyxFQUNsQixFQUFFO0lBQzVCLHdCQUF3QixDQUFDLDJCQUEyQixDQUFDLENBQUM7SUFFdEQsTUFBTSxFQUFFLElBQUksRUFBRSxhQUFhLEdBQUcsRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxFQUFFLGNBQWMsRUFBRSxHQUFHLE1BQU0sQ0FBQztJQUNuSCxJQUFJLEVBQUUsWUFBWSxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFBRSxHQUFHLE1BQU0sQ0FBQztJQUVuRCxNQUFNLGtCQUFrQixHQUFHLGFBQWEsQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDO0lBQy9ELE1BQU0s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QUFHLENBQUMsV0FBVyxFQUFFLENBQUM7b0JBRWxCLElBQUksYUFBYSxLQUFLLFVBQVUsSUFBSSxhQUFhLEtBQUssT0FBTyxFQUFFLENBQUM7d0JBQzlELFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLEVBQUUsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDO29CQUM5RCxDQUFDO3lCQUFNLENBQUM7d0JBQ04sVUFBVSxDQUFDLEtBQUssQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLENBQUM7b0JBQ3hDLENBQUM7Z0JBQ0gsQ0FBQyxDQUFDLENBQ0gsQ0FBQztZQUNKLENBQUMsQ0FBQyxDQUNILENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQyxDQUFDLEVBQ0YsU0FBUyxDQUFDLFFBQVEsQ0FBQyxFQUNuQixRQUFRLENBQUMsR0FBRyxFQUFFO1FBQ1osVUFBVSxDQUFDLG9DQUFvQyxHQUFHLEtBQUssQ0FBQztRQUN4RCxVQUFVLENBQUMsK0JBQStCLEdBQUcsS0FBSyxDQUFDO1FBQ25ELFVBQVUsQ0FBQyxtQ0FBbUMsR0FBRyxLQUFLLENBQUM7SUFDekQsQ0FBQyxDQUFDLENBQ0g7U0FDQSxTQUFTLEVBQUUsQ0FBQztJQUVmLE9BQU87UUFDTCxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRTtRQUNoQyx1QkFBdUIsRUFBRSxHQUFHLEVBQUU7WUFDNUIsWUFBWSxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNwQyxDQUFDO0tBQ0YsQ0FBQztBQUNKLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVTQ0FQRSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9rZXljb2Rlcyc7XG5pbXBvcnQgeyBhc3NlcnRJbkluamVjdGlvbkNvbnRleHQsIGluamVjdCwgaXNEZXZNb2RlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBjcmVhdGVEZXN0cm95LCBlcXVhbCB9IGZyb20gJ0BldGhsZXRlL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgZmlsdGVyLCBmaW5hbGl6ZSwgZnJvbSwgbWFwLCBtZXJnZSwgb2YsIHN3aXRjaE1hcCwgdGFrZVVudGlsLCB0YXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IE92ZXJsYXlSZWYgfSBmcm9tICcuLi9jb21wb25lbnRzL292ZXJsYXkvdXRpbHMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIE92ZXJsYXlEaXNtaXNzQ2hlY2tlclJlZiB7XG4gIC8qKlxuICAgKiBEZXN0cm95cyB0aGUgZGlzbWlzcyBjaGVja2VyLiBObyBmdXJ0aGVyIGNoZWNrcyB3aWxsIGJlIHBlcmZvcm1lZC5cbiAgICovXG4gIGRlc3Ryb3k6ICgpID0+IHZvaWQ7XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgZGVmYXVsdCBmb3JtIHZhbHVlIHRvIHRoZSBjdXJyZW50IGZvcm0gdmFsdWUuXG4gICAqIFVzZWZ1bCB3aGVuIHRoZSBmb3JtIHZhbHVlIGNoYW5nZXMgYWZ0ZXIgdGhlIG92ZXJsYXkgaXMgb3BlbmVkLlxuICAgKlxuICAgKiAoZS5nLiB3aGVuIGEgaHR0cCByZXF1ZXN0IHdhcyBuZWVkZWQgdG8gZmlsbCB0aGUgcmVtYWluaW5nIGZvcm0gZmllbGRzIHRvIHRoZWlyIGRlZmF1bHQgdmFsdWVzKVxuICAgKi9cbiAgcmVmcmVzaERlZmF1bHRGb3JtVmFsdWU6ICgpID0+IHZvaWQ7XG59XG5cbmV4cG9ydCB0eXBlIENyZWF0ZU92ZXJsYXlEaXNtaXNzQ2hlY2tlckNvbmZpZzxUIGV4dGVuZHMgQWJzdHJhY3RDb250cm9sPiA9IHtcbiAgLyoqXG4gICAqIFRoZSBmb3JtIHRvIGNoZWNrIGZvciBjaGFuZ2VzXG4gICAqL1xuICBmb3JtOiBUO1xuXG4gIC8qKlxuICAgKiBUaGUgZGVmYXVsdCB2YWx1ZSB0byBjb21wYXJlIHRoZSBjdXJyZW50IGZvcm0gdmFsdWUgdG9cbiAgICpcbiAgICogQGRlZmF1bHQgZm9ybS5nZXRSYXdWYWx1ZSgpXG4gICAqL1xuICBkZWZhdWx0VmFsdWU/OiB1bmtub3duO1xuXG4gIC8qKlxuICAgKiBUaGUgZXZlbnRzIHRoYXQgc2hvdWxkIHRyaWdnZXIgdGhlIGRpc21pc3MgY2hlY2tcbiAgICpcbiAgICogQGRlZmF1bHQgeyBiYWNrZHJvcENsaWNrOiB0cnVlLCBlc2NhcGVLZXk6IHRydWUsIGNsb3NlQ2FsbDogdHJ1ZSB9XG4gICAqL1xuICBkaXNtaXNzRXZlbnRzPzoge1xuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdGhlIGJhY2tkcm9wIGNsaWNrIHNob3VsZCB0cmlnZ2VyIHRoZSBkaXNtaXNzIGNoZWNrXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCB0cnVlXG4gICAgICovXG4gICAgYmFja2Ryb3BDbGljaz86IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRoZSBlc2NhcGUga2V5IHNob3VsZCB0cmlnZ2VyIHRoZSBkaXNtaXNzIGNoZWNrXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCB0cnVlXG4gICAgICovXG4gICAgZXNjYXBlS2V5PzogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdGhlIGNsb3NlIGNhbGwgc2hvdWxkIHRyaWdnZXIgdGhlIGRpc21pc3MgY2hlY2suXG4gICAgICogKGUuZy4gYG92ZXJsYXlSZWYuY2xvc2UoKWApXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCB0cnVlXG4gICAgICovXG4gICAgY2xvc2VDYWxsPzogYm9vbGVhbjtcbiAgfTtcblxuICAvKipcbiAgICogVGhpcyBmdW5jdGlvbiB3aWxsIGJlIGNhbGxlZCB3aGVuIHRoZSBjdXJyZW50IGZvcm0gdmFsdWUgaXMgbm90IGVxdWFsIHRvIHRoZSBkZWZhdWx0IHZhbHVlLlxuICAgKiBVc2UgdGhpcyB0byBzaG93IGEgY29uZmlybWF0aW9uIGRpYWxvZyBvciBzaW1pbGFyLlxuICAgKlxuICAgKiBAZXhhbXBsZSBTaG93IGEgY29uZmlybWF0aW9uIGRpYWxvZzpcbiAgICogYGBgdHNcbiAgICogKCkgPT4gdGhpcy5vdmVybGF5U2VydmljZVxuICAgKiAgIC5zaG93KFNvbWVDb25maXJtYXRpb25Db21wb25lbnQpXG4gICAqICAgLmFmdGVyQ2xvc2VkKClcbiAgICogICAucGlwZShtYXAoKHJlc3VsdCkgPT4gISFyZXN1bHQ/LmNvbmZpcm1lZCkpXG4gICAqIGBgYFxuICAgKlxuICAgKiBAcGFyYW0gdiBUaGUgY3VycmVudCBmb3JtIHZhbHVlXG4gICAqL1xuICBkaXNtaXNzQ2hlY2tGbjogKHY6IFJldHVyblR5cGU8VFsnZ2V0UmF3VmFsdWUnXT4pID0+IHVua25vd24gfCBQcm9taXNlPHVua25vd24+IHwgT2JzZXJ2YWJsZTx1bmtub3duPjtcbn07XG5cbi8qKlxuICogQSB1dGlsaXR5IGZ1bmN0aW9uIHRvIGVuaGFuY2UgdGhlIHV4IG9mIG92ZXJsYXlzIGNvbnRhaW5pbmcgZm9ybXMuXG4gKiBJdCBjYW4gcHJldmVudCB0aGUgdXNlciBmcm9tIGFjY2lkZW50YWxseSBjbG9zaW5nIHRoZSBvdmVybGF5IHdoZW4gdGhlIGZvcm0gdmFsdWUgaXMgbm90IGVxdWFsIHRvIHRoZSBkZWZhdWx0IHZhbHVlLlxuICovXG5leHBvcnQgY29uc3QgY3JlYXRlT3ZlcmxheURpc21pc3NDaGVja2VyID0gPFQgZXh0ZW5kcyBBYnN0cmFjdENvbnRyb2w+KFxuICBjb25maWc6IENyZWF0ZU92ZXJsYXlEaXNtaXNzQ2hlY2tlckNvbmZpZzxUPixcbik6IE92ZXJsYXlEaXNtaXNzQ2hlY2tlclJlZiA9PiB7XG4gIGFzc2VydEluSW5qZWN0aW9uQ29udGV4dChjcmVhdGVPdmVybGF5RGlzbWlzc0NoZWNrZXIpO1xuXG4gIGNvbnN0IHsgZm9ybSwgZGlzbWlzc0V2ZW50cyA9IHsgYmFja2Ryb3BDbGljazogdHJ1ZSwgZXNjYXBlS2V5OiB0cnVlLCBjbG9zZUNhbGw6IHRydWUgfSwgZGlzbWlzc0NoZWNrRm4gfSA9IGNvbmZpZztcbiAgbGV0IHsgZGVmYXVsdFZhbHVlID0gZm9ybS5nZXRSYXdWYWx1ZSgpIH0gPSBjb25maWc7XG5cbiAgY29uc3QgY2hlY2tCYWNrZHJvcENsaWNrID0gZGlzbWlzc0V2ZW50cy5iYWNrZHJvcENsaWNrID8/IHRydWU7XG4gIGNvbnN0IGNoZWNrRXNjYXBlS2V5ID0gZGlzbWlzc0V2ZW50cy5lc2NhcGVLZXkgPz8gdHJ1ZTtcbiAgY29uc3QgY2hlY2tDbG9zZUNhbGwgPSBkaXNtaXNzRXZlbnRzLmNsb3NlQ2FsbCA/PyB0cnVlO1xuXG4gIGlmICghY2hlY2tCYWNrZHJvcENsaWNrICYmICFjaGVja0VzY2FwZUtleSAmJiAhY2hlY2tDbG9zZUNhbGwpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0F0IGxlYXN0IG9uZSBkaXNtaXNzIGV2ZW50IG11c3QgYmUgZW5hYmxlZCcpO1xuICB9XG5cbiAgY29uc3QgZGVzdHJveSQgPSBjcmVhdGVEZXN0cm95KCk7XG4gIGNvbnN0IG92ZXJsYXlSZWYgPSBpbmplY3QoT3ZlcmxheVJlZik7XG5cbiAgb3ZlcmxheVJlZi5faXNCYWNrZHJvcENsb3NlQ29udHJvbGxlZEV4dGVybmFsbHkgPSBjaGVja0JhY2tkcm9wQ2xpY2s7XG4gIG92ZXJsYXlSZWYuX2lzRXNjQ2xvc2VDb250cm9sbGVkRXh0ZXJuYWxseSA9IGNoZWNrRXNjYXBlS2V5O1xuICBvdmVybGF5UmVmLl9pc0Nsb3NlRm5DbG9zZUNvbnRyb2xsZWRFeHRlcm5hbGx5ID0gY2hlY2tDbG9zZUNhbGw7XG5cbiAgY29uc3QgZXZlbnRTdHJlYW1zOiBPYnNlcnZhYmxlPCdtb3VzZScgfCAna2V5Ym9hcmQnIHwgdW5rbm93bj5bXSA9IFtdO1xuXG4gIGlmIChjaGVja0JhY2tkcm9wQ2xpY2spIHtcbiAgICBpZiAoIW92ZXJsYXlSZWYuZGlzYWJsZUNsb3NlKSB7XG4gICAgICBldmVudFN0cmVhbXMucHVzaChvdmVybGF5UmVmLmJhY2tkcm9wQ2xpY2soKS5waXBlKG1hcCgoKSA9PiAnbW91c2UnKSkpO1xuICAgIH0gZWxzZSBpZiAoaXNEZXZNb2RlKCkgJiYgZGlzbWlzc0V2ZW50cy5iYWNrZHJvcENsaWNrKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ2Rpc21pc3NFdmVudHMuYmFja2Ryb3BDbGljayBiZWluZyBzZXQgdG8gdHJ1ZSBoYXMgbm8gZWZmZWN0IHdoZW4gb3ZlcmxheVJlZi5kaXNhYmxlQ2xvc2UgaXMgdHJ1ZS4nKTtcbiAgICB9XG4gIH1cblxuICBpZiAoY2hlY2tFc2NhcGVLZXkpIHtcbiAgICBpZiAoIW92ZXJsYXlSZWYuZGlzYWJsZUNsb3NlKSB7XG4gICAgICBldmVudFN0cmVhbXMucHVzaChcbiAgICAgICAgb3ZlcmxheVJlZi5rZXlkb3duRXZlbnRzKCkucGlwZShcbiAgICAgICAgICBmaWx0ZXIoKGV2ZW50KSA9PiBldmVudC5rZXlDb2RlID09PSBFU0NBUEUpLFxuICAgICAgICAgIG1hcCgoKSA9PiAna2V5Ym9hcmQnKSxcbiAgICAgICAgKSxcbiAgICAgICk7XG4gICAgfSBlbHNlIGlmIChpc0Rldk1vZGUoKSAmJiBkaXNtaXNzRXZlbnRzLmVzY2FwZUtleSkge1xuICAgICAgY29uc29sZS53YXJuKCdkaXNtaXNzRXZlbnRzLmVzY2FwZUtleSBiZWluZyBzZXQgdG8gdHJ1ZSBoYXMgbm8gZWZmZWN0IHdoZW4gb3ZlcmxheVJlZi5kaXNhYmxlQ2xvc2UgaXMgdHJ1ZS4nKTtcbiAgICB9XG4gIH1cblxuICBpZiAoY2hlY2tDbG9zZUNhbGwpIHtcbiAgICBldmVudFN0cmVhbXMucHVzaChcbiAgICAgIG92ZXJsYXlSZWYuY2xvc2VDYWxsZWQoKS5waXBlKFxuICAgICAgICBmaWx0ZXIoKGUpID0+ICFlLmZvcmNlZCksXG4gICAgICAgIG1hcCgoZSkgPT4gZS5yZXN1bHQpLFxuICAgICAgKSxcbiAgICApO1xuICB9XG5cbiAgY29uc3Qgc3ViID0gbWVyZ2UoLi4uZXZlbnRTdHJlYW1zKVxuICAgIC5waXBlKFxuICAgICAgc3dpdGNoTWFwKChldmVudE9yUmVzdWx0KSA9PiB7XG4gICAgICAgIGNvbnN0IGlzRGVmYXVsdEZvcm1WYWx1ZSA9IGVxdWFsKGZvcm0uZ2V0UmF3VmFsdWUoKSwgZGVmYXVsdFZhbHVlKTtcblxuICAgICAgICBpZiAoaXNEZWZhdWx0Rm9ybVZhbHVlKSB7XG4gICAgICAgICAgcmV0dXJuIG9mKGV2ZW50T3JSZXN1bHQpLnBpcGUoXG4gICAgICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgICAgICBzdWIudW5zdWJzY3JpYmUoKTtcblxuICAgICAgICAgICAgICBpZiAoZXZlbnRPclJlc3VsdCA9PT0gJ2tleWJvYXJkJyB8fCBldmVudE9yUmVzdWx0ID09PSAnbW91c2UnKSB7XG4gICAgICAgICAgICAgICAgb3ZlcmxheVJlZi5fY2xvc2VPdmVybGF5VmlhKGV2ZW50T3JSZXN1bHQsIHVuZGVmaW5lZCwgdHJ1ZSk7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgb3ZlcmxheVJlZi5jbG9zZShldmVudE9yUmVzdWx0LCB0cnVlKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gb2YoZXZlbnRPclJlc3VsdCkucGlwZShcbiAgICAgICAgICAgIGZpbHRlcigoKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IHdhc0tleWJvYXJkID0gb3ZlcmxheVJlZi5fY2xvc2VJbnRlcmFjdGlvblR5cGUgPT09ICdrZXlib2FyZCc7XG4gICAgICAgICAgICAgIGNvbnN0IHdhc01vdXNlID0gb3ZlcmxheVJlZi5fY2xvc2VJbnRlcmFjdGlvblR5cGUgPT09ICdtb3VzZSc7XG5cbiAgICAgICAgICAgICAgaWYgKCh3YXNLZXlib2FyZCAmJiAhY2hlY2tFc2NhcGVLZXkpIHx8ICh3YXNNb3VzZSAmJiAhY2hlY2tCYWNrZHJvcENsaWNrKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHJldHVybiAhb3ZlcmxheVJlZi5faW50ZXJuYWxEaXNhYmxlQ2xvc2U7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIHN3aXRjaE1hcCgoKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IGNoZWNrUmVzcG9uc2UgPSBkaXNtaXNzQ2hlY2tGbihmb3JtLmdldFJhd1ZhbHVlKCkpO1xuXG4gICAgICAgICAgICAgIGxldCBuZXh0T2JzZXJ2YWJsZTogT2JzZXJ2YWJsZTx1bmtub3duPjtcblxuICAgICAgICAgICAgICBpZiAoY2hlY2tSZXNwb25zZSBpbnN0YW5jZW9mIE9ic2VydmFibGUpIHtcbiAgICAgICAgICAgICAgICBuZXh0T2JzZXJ2YWJsZSA9IGNoZWNrUmVzcG9uc2U7XG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAoY2hlY2tSZXNwb25zZSBpbnN0YW5jZW9mIFByb21pc2UpIHtcbiAgICAgICAgICAgICAgICBuZXh0T2JzZXJ2YWJsZSA9IGZyb20oY2hlY2tSZXNwb25zZSk7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbmV4dE9ic2VydmFibGUgPSBvZihjaGVja1Jlc3BvbnNlKTtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHJldHVybiBuZXh0T2JzZXJ2YWJsZS5waXBlKFxuICAgICAgICAgICAgICAgIGZpbHRlcigoY2hlY2tGblJlc3VsdCkgPT4gISFjaGVja0ZuUmVzdWx0KSxcbiAgICAgICAgICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgc3ViLnVuc3Vic2NyaWJlKCk7XG5cbiAgICAgICAgICAgICAgICAgIGlmIChldmVudE9yUmVzdWx0ID09PSAna2V5Ym9hcmQnIHx8IGV2ZW50T3JSZXN1bHQgPT09ICdtb3VzZScpIHtcbiAgICAgICAgICAgICAgICAgICAgb3ZlcmxheVJlZi5fY2xvc2VPdmVybGF5VmlhKGV2ZW50T3JSZXN1bHQsIHVuZGVmaW5lZCwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBvdmVybGF5UmVmLmNsb3NlKGV2ZW50T3JSZXN1bHQsIHRydWUpO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgICB0YWtlVW50aWwoZGVzdHJveSQpLFxuICAgICAgZmluYWxpemUoKCkgPT4ge1xuICAgICAgICBvdmVybGF5UmVmLl9pc0JhY2tkcm9wQ2xvc2VDb250cm9sbGVkRXh0ZXJuYWxseSA9IGZhbHNlO1xuICAgICAgICBvdmVybGF5UmVmLl9pc0VzY0Nsb3NlQ29udHJvbGxlZEV4dGVybmFsbHkgPSBmYWxzZTtcbiAgICAgICAgb3ZlcmxheVJlZi5faXNDbG9zZUZuQ2xvc2VDb250cm9sbGVkRXh0ZXJuYWxseSA9IGZhbHNlO1xuICAgICAgfSksXG4gICAgKVxuICAgIC5zdWJzY3JpYmUoKTtcblxuICByZXR1cm4ge1xuICAgIGRlc3Ryb3k6ICgpID0+IHN1Yi51bnN1YnNjcmliZSgpLFxuICAgIHJlZnJlc2hEZWZhdWx0Rm9ybVZhbHVlOiAoKSA9PiB7XG4gICAgICBkZWZhdWx0VmFsdWUgPSBmb3JtLmdldFJhd1ZhbHVlKCk7XG4gICAgfSxcbiAgfTtcbn07XG4iXX0=
|
|
105
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcmxheS1kaXNtaXNzLWNoZWNrZXIudXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY2RrL3NyYy9saWIvY29tcG9uZW50cy9vdmVybGF5L3V0aWxzL292ZXJsYXktZGlzbWlzcy1jaGVja2VyLnV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQy9DLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTVFLE9BQU8sRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDckcsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBb0Z6RDs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSwyQkFBMkIsR0FBRyxDQUN6QyxNQUE0QyxFQUNsQixFQUFFO0lBQzVCLHdCQUF3QixDQUFDLDJCQUEyQixDQUFDLENBQUM7SUFFdEQsTUFBTSxFQUNKLElBQUksRUFDSixhQUFhLEdBQUcsRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxFQUN6RSxjQUFjLEVBQ2QsU0FBUyxHQUNWLEdBQUcsTUFBTSxDQUFDO0lBQ1gsSUFBSSxFQUFFLFlBQVksR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLEVBQUUsR0FBRyxNQUFNLENBQUM7SUFFbkQsTUFBTSxrQkFBa0IsR0FBRyxhQUFhLENBQUMsYUFBYSxJQUFJLElBQUksQ0FBQztJ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Q3hCLE1BQU0sQ0FBQyxDQUFDLGFBQWEsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxFQUMxQyxHQUFHLENBQUMsR0FBRyxFQUFFO29CQUNQLEdBQUcsQ0FBQyxXQUFXLEVBQUUsQ0FBQztvQkFFbEIsSUFBSSxhQUFhLEtBQUssVUFBVSxJQUFJLGFBQWEsS0FBSyxPQUFPLEVBQUUsQ0FBQzt3QkFDOUQsVUFBVSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUM7b0JBQzlELENBQUM7eUJBQU0sQ0FBQzt3QkFDTixVQUFVLENBQUMsS0FBSyxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsQ0FBQztvQkFDeEMsQ0FBQztnQkFDSCxDQUFDLENBQUMsQ0FDSCxDQUFDO1lBQ0osQ0FBQyxDQUFDLENBQ0gsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDLENBQUMsRUFDRixTQUFTLENBQUMsUUFBUSxDQUFDLEVBQ25CLFFBQVEsQ0FBQyxHQUFHLEVBQUU7UUFDWixVQUFVLENBQUMsb0NBQW9DLEdBQUcsS0FBSyxDQUFDO1FBQ3hELFVBQVUsQ0FBQywrQkFBK0IsR0FBRyxLQUFLLENBQUM7UUFDbkQsVUFBVSxDQUFDLG1DQUFtQyxHQUFHLEtBQUssQ0FBQztJQUN6RCxDQUFDLENBQUMsQ0FDSDtTQUNBLFNBQVMsRUFBRSxDQUFDO0lBRWYsT0FBTztRQUNMLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFO1FBQ2hDLHVCQUF1QixFQUFFLEdBQUcsRUFBRTtZQUM1QixZQUFZLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3BDLENBQUM7S0FDRixDQUFDO0FBQ0osQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRVNDQVBFIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2tleWNvZGVzJztcbmltcG9ydCB7IGFzc2VydEluSW5qZWN0aW9uQ29udGV4dCwgaW5qZWN0LCBpc0Rldk1vZGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IGNyZWF0ZURlc3Ryb3ksIGVxdWFsIH0gZnJvbSAnQGV0aGxldGUvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBmaWx0ZXIsIGZpbmFsaXplLCBmcm9tLCBtYXAsIG1lcmdlLCBvZiwgc3dpdGNoTWFwLCB0YWtlVW50aWwsIHRhcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgT3ZlcmxheVJlZiB9IGZyb20gJy4uL2NvbXBvbmVudHMvb3ZlcmxheS91dGlscyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgT3ZlcmxheURpc21pc3NDaGVja2VyUmVmIHtcbiAgLyoqXG4gICAqIERlc3Ryb3lzIHRoZSBkaXNtaXNzIGNoZWNrZXIuIE5vIGZ1cnRoZXIgY2hlY2tzIHdpbGwgYmUgcGVyZm9ybWVkLlxuICAgKi9cbiAgZGVzdHJveTogKCkgPT4gdm9pZDtcblxuICAvKipcbiAgICogU2V0IHRoZSBkZWZhdWx0IGZvcm0gdmFsdWUgdG8gdGhlIGN1cnJlbnQgZm9ybSB2YWx1ZS5cbiAgICogVXNlZnVsIHdoZW4gdGhlIGZvcm0gdmFsdWUgY2hhbmdlcyBhZnRlciB0aGUgb3ZlcmxheSBpcyBvcGVuZWQuXG4gICAqXG4gICAqIChlLmcuIHdoZW4gYSBodHRwIHJlcXVlc3Qgd2FzIG5lZWRlZCB0byBmaWxsIHRoZSByZW1haW5pbmcgZm9ybSBmaWVsZHMgdG8gdGhlaXIgZGVmYXVsdCB2YWx1ZXMpXG4gICAqL1xuICByZWZyZXNoRGVmYXVsdEZvcm1WYWx1ZTogKCkgPT4gdm9pZDtcbn1cblxuZXhwb3J0IHR5cGUgQ3JlYXRlT3ZlcmxheURpc21pc3NDaGVja2VyQ29uZmlnPFQgZXh0ZW5kcyBBYnN0cmFjdENvbnRyb2w+ID0ge1xuICAvKipcbiAgICogVGhlIGZvcm0gdG8gY2hlY2sgZm9yIGNoYW5nZXNcbiAgICovXG4gIGZvcm06IFQ7XG5cbiAgLyoqXG4gICAqIFRoZSBkZWZhdWx0IHZhbHVlIHRvIGNvbXBhcmUgdGhlIGN1cnJlbnQgZm9ybSB2YWx1ZSB0b1xuICAgKlxuICAgKiBAZGVmYXVsdCBmb3JtLmdldFJhd1ZhbHVlKClcbiAgICovXG4gIGRlZmF1bHRWYWx1ZT86IFJldHVyblR5cGU8VFsnZ2V0UmF3VmFsdWUnXT47XG5cbiAgLyoqXG4gICAqIFRoZSBldmVudHMgdGhhdCBzaG91bGQgdHJpZ2dlciB0aGUgZGlzbWlzcyBjaGVja1xuICAgKlxuICAgKiBAZGVmYXVsdCB7IGJhY2tkcm9wQ2xpY2s6IHRydWUsIGVzY2FwZUtleTogdHJ1ZSwgY2xvc2VDYWxsOiB0cnVlIH1cbiAgICovXG4gIGRpc21pc3NFdmVudHM/OiB7XG4gICAgLyoqXG4gICAgICogV2hldGhlciB0aGUgYmFja2Ryb3AgY2xpY2sgc2hvdWxkIHRyaWdnZXIgdGhlIGRpc21pc3MgY2hlY2tcbiAgICAgKlxuICAgICAqIEBkZWZhdWx0IHRydWVcbiAgICAgKi9cbiAgICBiYWNrZHJvcENsaWNrPzogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdGhlIGVzY2FwZSBrZXkgc2hvdWxkIHRyaWdnZXIgdGhlIGRpc21pc3MgY2hlY2tcbiAgICAgKlxuICAgICAqIEBkZWZhdWx0IHRydWVcbiAgICAgKi9cbiAgICBlc2NhcGVLZXk/OiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogV2hldGhlciB0aGUgY2xvc2UgY2FsbCBzaG91bGQgdHJpZ2dlciB0aGUgZGlzbWlzcyBjaGVjay5cbiAgICAgKiAoZS5nLiBgb3ZlcmxheVJlZi5jbG9zZSgpYClcbiAgICAgKlxuICAgICAqIEBkZWZhdWx0IHRydWVcbiAgICAgKi9cbiAgICBjbG9zZUNhbGw/OiBib29sZWFuO1xuICB9O1xuXG4gIC8qKlxuICAgKiBUaGlzIGZ1bmN0aW9uIHdpbGwgYmUgY2FsbGVkIHdoZW4gdGhlIGN1cnJlbnQgZm9ybSB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gdGhlIGRlZmF1bHQgdmFsdWUuXG4gICAqIFVzZSB0aGlzIHRvIHNob3cgYSBjb25maXJtYXRpb24gZGlhbG9nIG9yIHNpbWlsYXIuXG4gICAqXG4gICAqIEBleGFtcGxlIFNob3cgYSBjb25maXJtYXRpb24gZGlhbG9nOlxuICAgKiBgYGB0c1xuICAgKiAoKSA9PiB0aGlzLm92ZXJsYXlTZXJ2aWNlXG4gICAqICAgLnNob3coU29tZUNvbmZpcm1hdGlvbkNvbXBvbmVudClcbiAgICogICAuYWZ0ZXJDbG9zZWQoKVxuICAgKiAgIC5waXBlKG1hcCgocmVzdWx0KSA9PiAhIXJlc3VsdD8uY29uZmlybWVkKSlcbiAgICogYGBgXG4gICAqXG4gICAqIEBwYXJhbSB2IFRoZSBjdXJyZW50IGZvcm0gdmFsdWVcbiAgICovXG4gIGRpc21pc3NDaGVja0ZuOiAodjogUmV0dXJuVHlwZTxUWydnZXRSYXdWYWx1ZSddPikgPT4gdW5rbm93biB8IFByb21pc2U8dW5rbm93bj4gfCBPYnNlcnZhYmxlPHVua25vd24+O1xuXG4gIC8qKlxuICAgKiBBIGN1c3RvbSBjb21wYXJlIGZ1bmN0aW9uIHRvIGNvbXBhcmUgdGhlIGN1cnJlbnQgZm9ybSB2YWx1ZSB0byB0aGUgZGVmYXVsdCB2YWx1ZS5cbiAgICogQnkgZGVmYXVsdCwgYSBkZWVwIGNvbXBhcmlzb24gd2lsbCBiZSB1c2VkLlxuICAgKlxuICAgKiBAZGVmYXVsdCAoY3VycmVudFZhbHVlLCBkZWZhdWx0VmFsdWUpID0+IGVxdWFsKGN1cnJlbnRWYWx1ZSwgZGVmYXVsdFZhbHVlKVxuICAgKi9cbiAgY29tcGFyZUZuPzogKGN1cnJlbnRWYWx1ZTogUmV0dXJuVHlwZTxUWydnZXRSYXdWYWx1ZSddPiwgZGVmYXVsdFZhbHVlOiBSZXR1cm5UeXBlPFRbJ2dldFJhd1ZhbHVlJ10+KSA9PiBib29sZWFuO1xufTtcblxuLyoqXG4gKiBBIHV0aWxpdHkgZnVuY3Rpb24gdG8gZW5oYW5jZSB0aGUgdXggb2Ygb3ZlcmxheXMgY29udGFpbmluZyBmb3Jtcy5cbiAqIEl0IGNhbiBwcmV2ZW50IHRoZSB1c2VyIGZyb20gYWNjaWRlbnRhbGx5IGNsb3NpbmcgdGhlIG92ZXJsYXkgd2hlbiB0aGUgZm9ybSB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gdGhlIGRlZmF1bHQgdmFsdWUuXG4gKi9cbmV4cG9ydCBjb25zdCBjcmVhdGVPdmVybGF5RGlzbWlzc0NoZWNrZXIgPSA8VCBleHRlbmRzIEFic3RyYWN0Q29udHJvbD4oXG4gIGNvbmZpZzogQ3JlYXRlT3ZlcmxheURpc21pc3NDaGVja2VyQ29uZmlnPFQ+LFxuKTogT3ZlcmxheURpc21pc3NDaGVja2VyUmVmID0+IHtcbiAgYXNzZXJ0SW5JbmplY3Rpb25Db250ZXh0KGNyZWF0ZU92ZXJsYXlEaXNtaXNzQ2hlY2tlcik7XG5cbiAgY29uc3Qge1xuICAgIGZvcm0sXG4gICAgZGlzbWlzc0V2ZW50cyA9IHsgYmFja2Ryb3BDbGljazogdHJ1ZSwgZXNjYXBlS2V5OiB0cnVlLCBjbG9zZUNhbGw6IHRydWUgfSxcbiAgICBkaXNtaXNzQ2hlY2tGbixcbiAgICBjb21wYXJlRm4sXG4gIH0gPSBjb25maWc7XG4gIGxldCB7IGRlZmF1bHRWYWx1ZSA9IGZvcm0uZ2V0UmF3VmFsdWUoKSB9ID0gY29uZmlnO1xuXG4gIGNvbnN0IGNoZWNrQmFja2Ryb3BDbGljayA9IGRpc21pc3NFdmVudHMuYmFja2Ryb3BDbGljayA/PyB0cnVlO1xuICBjb25zdCBjaGVja0VzY2FwZUtleSA9IGRpc21pc3NFdmVudHMuZXNjYXBlS2V5ID8/IHRydWU7XG4gIGNvbnN0IGNoZWNrQ2xvc2VDYWxsID0gZGlzbWlzc0V2ZW50cy5jbG9zZUNhbGwgPz8gdHJ1ZTtcblxuICBpZiAoIWNoZWNrQmFja2Ryb3BDbGljayAmJiAhY2hlY2tFc2NhcGVLZXkgJiYgIWNoZWNrQ2xvc2VDYWxsKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdBdCBsZWFzdCBvbmUgZGlzbWlzcyBldmVudCBtdXN0IGJlIGVuYWJsZWQnKTtcbiAgfVxuXG4gIGNvbnN0IGRlc3Ryb3kkID0gY3JlYXRlRGVzdHJveSgpO1xuICBjb25zdCBvdmVybGF5UmVmID0gaW5qZWN0KE92ZXJsYXlSZWYpO1xuXG4gIG92ZXJsYXlSZWYuX2lzQmFja2Ryb3BDbG9zZUNvbnRyb2xsZWRFeHRlcm5hbGx5ID0gY2hlY2tCYWNrZHJvcENsaWNrO1xuICBvdmVybGF5UmVmLl9pc0VzY0Nsb3NlQ29udHJvbGxlZEV4dGVybmFsbHkgPSBjaGVja0VzY2FwZUtleTtcbiAgb3ZlcmxheVJlZi5faXNDbG9zZUZuQ2xvc2VDb250cm9sbGVkRXh0ZXJuYWxseSA9IGNoZWNrQ2xvc2VDYWxsO1xuXG4gIGNvbnN0IGV2ZW50U3RyZWFtczogT2JzZXJ2YWJsZTwnbW91c2UnIHwgJ2tleWJvYXJkJyB8IHVua25vd24+W10gPSBbXTtcblxuICBpZiAoY2hlY2tCYWNrZHJvcENsaWNrKSB7XG4gICAgaWYgKCFvdmVybGF5UmVmLmRpc2FibGVDbG9zZSkge1xuICAgICAgZXZlbnRTdHJlYW1zLnB1c2gob3ZlcmxheVJlZi5iYWNrZHJvcENsaWNrKCkucGlwZShtYXAoKCkgPT4gJ21vdXNlJykpKTtcbiAgICB9IGVsc2UgaWYgKGlzRGV2TW9kZSgpICYmIGRpc21pc3NFdmVudHMuYmFja2Ryb3BDbGljaykge1xuICAgICAgY29uc29sZS53YXJuKCdkaXNtaXNzRXZlbnRzLmJhY2tkcm9wQ2xpY2sgYmVpbmcgc2V0IHRvIHRydWUgaGFzIG5vIGVmZmVjdCB3aGVuIG92ZXJsYXlSZWYuZGlzYWJsZUNsb3NlIGlzIHRydWUuJyk7XG4gICAgfVxuICB9XG5cbiAgaWYgKGNoZWNrRXNjYXBlS2V5KSB7XG4gICAgaWYgKCFvdmVybGF5UmVmLmRpc2FibGVDbG9zZSkge1xuICAgICAgZXZlbnRTdHJlYW1zLnB1c2goXG4gICAgICAgIG92ZXJsYXlSZWYua2V5ZG93bkV2ZW50cygpLnBpcGUoXG4gICAgICAgICAgZmlsdGVyKChldmVudCkgPT4gZXZlbnQua2V5Q29kZSA9PT0gRVNDQVBFKSxcbiAgICAgICAgICBtYXAoKCkgPT4gJ2tleWJvYXJkJyksXG4gICAgICAgICksXG4gICAgICApO1xuICAgIH0gZWxzZSBpZiAoaXNEZXZNb2RlKCkgJiYgZGlzbWlzc0V2ZW50cy5lc2NhcGVLZXkpIHtcbiAgICAgIGNvbnNvbGUud2FybignZGlzbWlzc0V2ZW50cy5lc2NhcGVLZXkgYmVpbmcgc2V0IHRvIHRydWUgaGFzIG5vIGVmZmVjdCB3aGVuIG92ZXJsYXlSZWYuZGlzYWJsZUNsb3NlIGlzIHRydWUuJyk7XG4gICAgfVxuICB9XG5cbiAgaWYgKGNoZWNrQ2xvc2VDYWxsKSB7XG4gICAgZXZlbnRTdHJlYW1zLnB1c2goXG4gICAgICBvdmVybGF5UmVmLmNsb3NlQ2FsbGVkKCkucGlwZShcbiAgICAgICAgZmlsdGVyKChlKSA9PiAhZS5mb3JjZWQpLFxuICAgICAgICBtYXAoKGUpID0+IGUucmVzdWx0KSxcbiAgICAgICksXG4gICAgKTtcbiAgfVxuXG4gIGNvbnN0IHN1YiA9IG1lcmdlKC4uLmV2ZW50U3RyZWFtcylcbiAgICAucGlwZShcbiAgICAgIHN3aXRjaE1hcCgoZXZlbnRPclJlc3VsdCkgPT4ge1xuICAgICAgICBjb25zdCBpc0RlZmF1bHRGb3JtVmFsdWUgPSBjb21wYXJlRm5cbiAgICAgICAgICA/IGNvbXBhcmVGbihmb3JtLmdldFJhd1ZhbHVlKCksIGRlZmF1bHRWYWx1ZSlcbiAgICAgICAgICA6IGVxdWFsKGZvcm0uZ2V0UmF3VmFsdWUoKSwgZGVmYXVsdFZhbHVlKTtcblxuICAgICAgICBpZiAoaXNEZWZhdWx0Rm9ybVZhbHVlKSB7XG4gICAgICAgICAgcmV0dXJuIG9mKGV2ZW50T3JSZXN1bHQpLnBpcGUoXG4gICAgICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgICAgICBzdWIudW5zdWJzY3JpYmUoKTtcblxuICAgICAgICAgICAgICBpZiAoZXZlbnRPclJlc3VsdCA9PT0gJ2tleWJvYXJkJyB8fCBldmVudE9yUmVzdWx0ID09PSAnbW91c2UnKSB7XG4gICAgICAgICAgICAgICAgb3ZlcmxheVJlZi5fY2xvc2VPdmVybGF5VmlhKGV2ZW50T3JSZXN1bHQsIHVuZGVmaW5lZCwgdHJ1ZSk7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgb3ZlcmxheVJlZi5jbG9zZShldmVudE9yUmVzdWx0LCB0cnVlKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gb2YoZXZlbnRPclJlc3VsdCkucGlwZShcbiAgICAgICAgICAgIGZpbHRlcigoKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IHdhc0tleWJvYXJkID0gb3ZlcmxheVJlZi5fY2xvc2VJbnRlcmFjdGlvblR5cGUgPT09ICdrZXlib2FyZCc7XG4gICAgICAgICAgICAgIGNvbnN0IHdhc01vdXNlID0gb3ZlcmxheVJlZi5fY2xvc2VJbnRlcmFjdGlvblR5cGUgPT09ICdtb3VzZSc7XG5cbiAgICAgICAgICAgICAgaWYgKCh3YXNLZXlib2FyZCAmJiAhY2hlY2tFc2NhcGVLZXkpIHx8ICh3YXNNb3VzZSAmJiAhY2hlY2tCYWNrZHJvcENsaWNrKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHJldHVybiAhb3ZlcmxheVJlZi5faW50ZXJuYWxEaXNhYmxlQ2xvc2U7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIHN3aXRjaE1hcCgoKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IGNoZWNrUmVzcG9uc2UgPSBkaXNtaXNzQ2hlY2tGbihmb3JtLmdldFJhd1ZhbHVlKCkpO1xuXG4gICAgICAgICAgICAgIGxldCBuZXh0T2JzZXJ2YWJsZTogT2JzZXJ2YWJsZTx1bmtub3duPjtcblxuICAgICAgICAgICAgICBpZiAoY2hlY2tSZXNwb25zZSBpbnN0YW5jZW9mIE9ic2VydmFibGUpIHtcbiAgICAgICAgICAgICAgICBuZXh0T2JzZXJ2YWJsZSA9IGNoZWNrUmVzcG9uc2U7XG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAoY2hlY2tSZXNwb25zZSBpbnN0YW5jZW9mIFByb21pc2UpIHtcbiAgICAgICAgICAgICAgICBuZXh0T2JzZXJ2YWJsZSA9IGZyb20oY2hlY2tSZXNwb25zZSk7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbmV4dE9ic2VydmFibGUgPSBvZihjaGVja1Jlc3BvbnNlKTtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHJldHVybiBuZXh0T2JzZXJ2YWJsZS5waXBlKFxuICAgICAgICAgICAgICAgIGZpbHRlcigoY2hlY2tGblJlc3VsdCkgPT4gISFjaGVja0ZuUmVzdWx0KSxcbiAgICAgICAgICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgc3ViLnVuc3Vic2NyaWJlKCk7XG5cbiAgICAgICAgICAgICAgICAgIGlmIChldmVudE9yUmVzdWx0ID09PSAna2V5Ym9hcmQnIHx8IGV2ZW50T3JSZXN1bHQgPT09ICdtb3VzZScpIHtcbiAgICAgICAgICAgICAgICAgICAgb3ZlcmxheVJlZi5fY2xvc2VPdmVybGF5VmlhKGV2ZW50T3JSZXN1bHQsIHVuZGVmaW5lZCwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBvdmVybGF5UmVmLmNsb3NlKGV2ZW50T3JSZXN1bHQsIHRydWUpO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgICB0YWtlVW50aWwoZGVzdHJveSQpLFxuICAgICAgZmluYWxpemUoKCkgPT4ge1xuICAgICAgICBvdmVybGF5UmVmLl9pc0JhY2tkcm9wQ2xvc2VDb250cm9sbGVkRXh0ZXJuYWxseSA9IGZhbHNlO1xuICAgICAgICBvdmVybGF5UmVmLl9pc0VzY0Nsb3NlQ29udHJvbGxlZEV4dGVybmFsbHkgPSBmYWxzZTtcbiAgICAgICAgb3ZlcmxheVJlZi5faXNDbG9zZUZuQ2xvc2VDb250cm9sbGVkRXh0ZXJuYWxseSA9IGZhbHNlO1xuICAgICAgfSksXG4gICAgKVxuICAgIC5zdWJzY3JpYmUoKTtcblxuICByZXR1cm4ge1xuICAgIGRlc3Ryb3k6ICgpID0+IHN1Yi51bnN1YnNjcmliZSgpLFxuICAgIHJlZnJlc2hEZWZhdWx0Rm9ybVZhbHVlOiAoKSA9PiB7XG4gICAgICBkZWZhdWx0VmFsdWUgPSBmb3JtLmdldFJhd1ZhbHVlKCk7XG4gICAgfSxcbiAgfTtcbn07XG4iXX0=
|
|
@@ -194,7 +194,7 @@ export class InlineTabsComponent {
|
|
|
194
194
|
provide: TAB_GROUP,
|
|
195
195
|
useExisting: InlineTabsComponent,
|
|
196
196
|
},
|
|
197
|
-
], queries: [{ propertyName: "_allTabs", predicate: InlineTabComponent, descendants: true }], viewQueries: [{ propertyName: "_tabBodyWrapper", first: true, predicate: ["tabBodyWrapper"], descendants: true }, { propertyName: "_tabHeader", first: true, predicate: ["tabHeader"], descendants: true }], ngImport: i0, template: "<et-inline-tab-header\n #tabHeader\n [selectedIndex]=\"selectedIndex || 0\"\n [ngClass]=\"tabHeaderClasses\"\n [itemSize]=\"itemSize\"\n [renderButtons]=\"renderButtons\"\n [scrollableClass]=\"scrollableClass\"\n [renderMasks]=\"renderMasks\"\n [renderScrollbars]=\"renderScrollbars\"\n (indexFocused)=\"_focusChanged($event)\"\n (selectFocusedIndex)=\"_handleEnter($event)\"\n>\n @for (tab of _tabs; track trackByTabFn(i, tab); let i = $index) {\n <!-- eslint-disable-next-line @angular-eslint/template/click-events-have-key-events -->\n <div\n [id]=\"_getTabLabelId(i)\"\n [attr.tabIndex]=\"_getTabIndex(tab, i)\"\n [attr.aria-posinset]=\"i + 1\"\n [attr.aria-setsize]=\"_tabs.length\"\n [attr.aria-controls]=\"_getTabContentId(i)\"\n [attr.aria-selected]=\"selectedIndex === i\"\n [attr.aria-label]=\"tab.ariaLabel || null\"\n [attr.aria-labelledby]=\"!tab.ariaLabel && tab.ariaLabelledby ? tab.ariaLabelledby : null\"\n [disabled]=\"tab.disabled\"\n [class.et-inline-tab-label--active]=\"selectedIndex === i\"\n [class.et-inline-tab-label--is-text]=\"!!tab.textLabel\"\n [fitUnderlineToContent]=\"tab.fitUnderlineToContent\"\n (click)=\"_handleClick(tab, tabHeader, i)\"\n (cdkFocusChange)=\"_tabFocusChanged($event, i)\"\n role=\"tab\"\n etInlineTabLabelWrapper\n cdkMonitorElementFocus\n >\n <span class=\"et-tab-content\">\n @if (tab.templateLabel) {\n <ng-template [cdkPortalOutlet]=\"tab.templateLabel\" />\n } @else {\n {{ tab.textLabel }}\n }\n </span>\n </div>\n }\n</et-inline-tab-header>\n\n<div #tabBodyWrapper>\n @for (tab of _tabs; track trackByTabFn(i, tab); let i = $index) {\n <et-inline-tab-body\n [id]=\"_getTabContentId(i)\"\n [attr.tabindex]=\"contentTabIndex !== null && selectedIndex === i ? contentTabIndex : null\"\n [attr.aria-labelledby]=\"_getTabLabelId(i)\"\n [class.cdk-visually-hidden]=\"selectedIndex !== i\"\n [ngClass]=\"tab.bodyClass\"\n [class.sr-only]=\"selectedIndex !== i\"\n [content]=\"tab.content!\"\n [position]=\"tab.position!\"\n [origin]=\"tab.origin\"\n [preserveContent]=\"preserveContent\"\n role=\"tabpanel\"\n animationDuration=\"0ms\"\n />\n }\n</div>\n", styles: [".et-inline-tabs{display:block}.et-inline-tabs .et-inline-tab-label--is-text{white-space:nowrap}.et-inline-tabs .et-inline-tab-label-wrapper:not([aria-disabled=true]){cursor:pointer}.et-inline-tabs .et-scrollable-container{position:relative}\n"], dependencies: [{ kind: "component", type: InlineTabHeaderComponent, selector: "et-inline-tab-header" }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: InlineTabLabelWrapperDirective, selector: "[etInlineTabLabelWrapper]", inputs: ["disabled"] }, { kind: "ngmodule", type: A11yModule }, { kind: "directive", type: i1.CdkMonitorFocus, selector: "[cdkMonitorElementFocus], [cdkMonitorSubtreeFocus]", outputs: ["cdkFocusChange"], exportAs: ["cdkMonitorFocus"] }, { kind: "component", type: InlineTabBodyComponent, selector: "et-inline-tab-body", inputs: ["content", "origin", "animationDuration", "preserveContent", "position"], outputs: ["_onCentering", "_beforeCentering", "_afterLeavingCenter", "_onCentered"] }, { kind: "ngmodule", type: PortalModule }, { kind: "directive", type: i2.CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None }); }
|
|
197
|
+
], queries: [{ propertyName: "_allTabs", predicate: InlineTabComponent, descendants: true }], viewQueries: [{ propertyName: "_tabBodyWrapper", first: true, predicate: ["tabBodyWrapper"], descendants: true }, { propertyName: "_tabHeader", first: true, predicate: ["tabHeader"], descendants: true }], ngImport: i0, template: "<et-inline-tab-header\n #tabHeader\n [selectedIndex]=\"selectedIndex || 0\"\n [ngClass]=\"tabHeaderClasses\"\n [itemSize]=\"itemSize\"\n [renderButtons]=\"renderButtons\"\n [scrollableClass]=\"scrollableClass\"\n [renderMasks]=\"renderMasks\"\n [renderScrollbars]=\"renderScrollbars\"\n (indexFocused)=\"_focusChanged($event)\"\n (selectFocusedIndex)=\"_handleEnter($event)\"\n>\n @for (tab of _tabs; track trackByTabFn(i, tab); let i = $index) {\n <!-- eslint-disable-next-line @angular-eslint/template/click-events-have-key-events -->\n <div\n [id]=\"_getTabLabelId(i)\"\n [attr.tabIndex]=\"_getTabIndex(tab, i)\"\n [attr.aria-posinset]=\"i + 1\"\n [attr.aria-setsize]=\"_tabs.length\"\n [attr.aria-controls]=\"_getTabContentId(i)\"\n [attr.aria-selected]=\"selectedIndex === i\"\n [attr.aria-label]=\"tab.ariaLabel || null\"\n [attr.aria-labelledby]=\"!tab.ariaLabel && tab.ariaLabelledby ? tab.ariaLabelledby : null\"\n [disabled]=\"tab.disabled\"\n [class.et-inline-tab-label--active]=\"selectedIndex === i\"\n [class.et-inline-tab-label--is-text]=\"!!tab.textLabel\"\n [fitUnderlineToContent]=\"tab.fitUnderlineToContent\"\n (click)=\"_handleClick(tab, tabHeader, i)\"\n (cdkFocusChange)=\"_tabFocusChanged($event, i)\"\n role=\"tab\"\n etInlineTabLabelWrapper\n cdkMonitorElementFocus\n >\n <span class=\"et-tab-content\">\n @if (tab.templateLabel) {\n <ng-template [cdkPortalOutlet]=\"tab.templateLabel\" />\n } @else {\n {{ tab.textLabel }}\n }\n </span>\n </div>\n }\n</et-inline-tab-header>\n\n<div #tabBodyWrapper class=\"et-inline-tabs-body-wrapper\">\n @for (tab of _tabs; track trackByTabFn(i, tab); let i = $index) {\n <et-inline-tab-body\n [id]=\"_getTabContentId(i)\"\n [attr.tabindex]=\"contentTabIndex !== null && selectedIndex === i ? contentTabIndex : null\"\n [attr.aria-labelledby]=\"_getTabLabelId(i)\"\n [class.cdk-visually-hidden]=\"selectedIndex !== i\"\n [ngClass]=\"tab.bodyClass\"\n [class.sr-only]=\"selectedIndex !== i\"\n [content]=\"tab.content!\"\n [position]=\"tab.position!\"\n [origin]=\"tab.origin\"\n [preserveContent]=\"preserveContent\"\n role=\"tabpanel\"\n animationDuration=\"0ms\"\n />\n }\n</div>\n", styles: [".et-inline-tabs{display:block}.et-inline-tabs .et-inline-tab-label--is-text{white-space:nowrap}.et-inline-tabs .et-inline-tab-label-wrapper:not([aria-disabled=true]){cursor:pointer}.et-inline-tabs .et-scrollable-container{position:relative}.et-inline-tabs .et-inline-tabs-body-wrapper{display:grid}\n"], dependencies: [{ kind: "component", type: InlineTabHeaderComponent, selector: "et-inline-tab-header" }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: InlineTabLabelWrapperDirective, selector: "[etInlineTabLabelWrapper]", inputs: ["disabled"] }, { kind: "ngmodule", type: A11yModule }, { kind: "directive", type: i1.CdkMonitorFocus, selector: "[cdkMonitorElementFocus], [cdkMonitorSubtreeFocus]", outputs: ["cdkFocusChange"], exportAs: ["cdkMonitorFocus"] }, { kind: "component", type: InlineTabBodyComponent, selector: "et-inline-tab-body", inputs: ["content", "origin", "animationDuration", "preserveContent", "position"], outputs: ["_onCentering", "_beforeCentering", "_afterLeavingCenter", "_onCentered"] }, { kind: "ngmodule", type: PortalModule }, { kind: "directive", type: i2.CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None }); }
|
|
198
198
|
}
|
|
199
199
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: InlineTabsComponent, decorators: [{
|
|
200
200
|
type: Component,
|
|
@@ -212,7 +212,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImpor
|
|
|
212
212
|
PortalModule,
|
|
213
213
|
], host: {
|
|
214
214
|
class: 'et-inline-tabs',
|
|
215
|
-
}, template: "<et-inline-tab-header\n #tabHeader\n [selectedIndex]=\"selectedIndex || 0\"\n [ngClass]=\"tabHeaderClasses\"\n [itemSize]=\"itemSize\"\n [renderButtons]=\"renderButtons\"\n [scrollableClass]=\"scrollableClass\"\n [renderMasks]=\"renderMasks\"\n [renderScrollbars]=\"renderScrollbars\"\n (indexFocused)=\"_focusChanged($event)\"\n (selectFocusedIndex)=\"_handleEnter($event)\"\n>\n @for (tab of _tabs; track trackByTabFn(i, tab); let i = $index) {\n <!-- eslint-disable-next-line @angular-eslint/template/click-events-have-key-events -->\n <div\n [id]=\"_getTabLabelId(i)\"\n [attr.tabIndex]=\"_getTabIndex(tab, i)\"\n [attr.aria-posinset]=\"i + 1\"\n [attr.aria-setsize]=\"_tabs.length\"\n [attr.aria-controls]=\"_getTabContentId(i)\"\n [attr.aria-selected]=\"selectedIndex === i\"\n [attr.aria-label]=\"tab.ariaLabel || null\"\n [attr.aria-labelledby]=\"!tab.ariaLabel && tab.ariaLabelledby ? tab.ariaLabelledby : null\"\n [disabled]=\"tab.disabled\"\n [class.et-inline-tab-label--active]=\"selectedIndex === i\"\n [class.et-inline-tab-label--is-text]=\"!!tab.textLabel\"\n [fitUnderlineToContent]=\"tab.fitUnderlineToContent\"\n (click)=\"_handleClick(tab, tabHeader, i)\"\n (cdkFocusChange)=\"_tabFocusChanged($event, i)\"\n role=\"tab\"\n etInlineTabLabelWrapper\n cdkMonitorElementFocus\n >\n <span class=\"et-tab-content\">\n @if (tab.templateLabel) {\n <ng-template [cdkPortalOutlet]=\"tab.templateLabel\" />\n } @else {\n {{ tab.textLabel }}\n }\n </span>\n </div>\n }\n</et-inline-tab-header>\n\n<div #tabBodyWrapper>\n @for (tab of _tabs; track trackByTabFn(i, tab); let i = $index) {\n <et-inline-tab-body\n [id]=\"_getTabContentId(i)\"\n [attr.tabindex]=\"contentTabIndex !== null && selectedIndex === i ? contentTabIndex : null\"\n [attr.aria-labelledby]=\"_getTabLabelId(i)\"\n [class.cdk-visually-hidden]=\"selectedIndex !== i\"\n [ngClass]=\"tab.bodyClass\"\n [class.sr-only]=\"selectedIndex !== i\"\n [content]=\"tab.content!\"\n [position]=\"tab.position!\"\n [origin]=\"tab.origin\"\n [preserveContent]=\"preserveContent\"\n role=\"tabpanel\"\n animationDuration=\"0ms\"\n />\n }\n</div>\n", styles: [".et-inline-tabs{display:block}.et-inline-tabs .et-inline-tab-label--is-text{white-space:nowrap}.et-inline-tabs .et-inline-tab-label-wrapper:not([aria-disabled=true]){cursor:pointer}.et-inline-tabs .et-scrollable-container{position:relative}\n"] }]
|
|
215
|
+
}, template: "<et-inline-tab-header\n #tabHeader\n [selectedIndex]=\"selectedIndex || 0\"\n [ngClass]=\"tabHeaderClasses\"\n [itemSize]=\"itemSize\"\n [renderButtons]=\"renderButtons\"\n [scrollableClass]=\"scrollableClass\"\n [renderMasks]=\"renderMasks\"\n [renderScrollbars]=\"renderScrollbars\"\n (indexFocused)=\"_focusChanged($event)\"\n (selectFocusedIndex)=\"_handleEnter($event)\"\n>\n @for (tab of _tabs; track trackByTabFn(i, tab); let i = $index) {\n <!-- eslint-disable-next-line @angular-eslint/template/click-events-have-key-events -->\n <div\n [id]=\"_getTabLabelId(i)\"\n [attr.tabIndex]=\"_getTabIndex(tab, i)\"\n [attr.aria-posinset]=\"i + 1\"\n [attr.aria-setsize]=\"_tabs.length\"\n [attr.aria-controls]=\"_getTabContentId(i)\"\n [attr.aria-selected]=\"selectedIndex === i\"\n [attr.aria-label]=\"tab.ariaLabel || null\"\n [attr.aria-labelledby]=\"!tab.ariaLabel && tab.ariaLabelledby ? tab.ariaLabelledby : null\"\n [disabled]=\"tab.disabled\"\n [class.et-inline-tab-label--active]=\"selectedIndex === i\"\n [class.et-inline-tab-label--is-text]=\"!!tab.textLabel\"\n [fitUnderlineToContent]=\"tab.fitUnderlineToContent\"\n (click)=\"_handleClick(tab, tabHeader, i)\"\n (cdkFocusChange)=\"_tabFocusChanged($event, i)\"\n role=\"tab\"\n etInlineTabLabelWrapper\n cdkMonitorElementFocus\n >\n <span class=\"et-tab-content\">\n @if (tab.templateLabel) {\n <ng-template [cdkPortalOutlet]=\"tab.templateLabel\" />\n } @else {\n {{ tab.textLabel }}\n }\n </span>\n </div>\n }\n</et-inline-tab-header>\n\n<div #tabBodyWrapper class=\"et-inline-tabs-body-wrapper\">\n @for (tab of _tabs; track trackByTabFn(i, tab); let i = $index) {\n <et-inline-tab-body\n [id]=\"_getTabContentId(i)\"\n [attr.tabindex]=\"contentTabIndex !== null && selectedIndex === i ? contentTabIndex : null\"\n [attr.aria-labelledby]=\"_getTabLabelId(i)\"\n [class.cdk-visually-hidden]=\"selectedIndex !== i\"\n [ngClass]=\"tab.bodyClass\"\n [class.sr-only]=\"selectedIndex !== i\"\n [content]=\"tab.content!\"\n [position]=\"tab.position!\"\n [origin]=\"tab.origin\"\n [preserveContent]=\"preserveContent\"\n role=\"tabpanel\"\n animationDuration=\"0ms\"\n />\n }\n</div>\n", styles: [".et-inline-tabs{display:block}.et-inline-tabs .et-inline-tab-label--is-text{white-space:nowrap}.et-inline-tabs .et-inline-tab-label-wrapper:not([aria-disabled=true]){cursor:pointer}.et-inline-tabs .et-scrollable-container{position:relative}.et-inline-tabs .et-inline-tabs-body-wrapper{display:grid}\n"] }]
|
|
216
216
|
}], propDecorators: { selectedIndex: [{
|
|
217
217
|
type: Input,
|
|
218
218
|
args: [{ transform: numberAttribute }]
|
|
@@ -253,4 +253,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImpor
|
|
|
253
253
|
type: ViewChild,
|
|
254
254
|
args: ['tabHeader']
|
|
255
255
|
}] } });
|
|
256
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5saW5lLXRhYnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvc3JjL2xpYi9jb21wb25lbnRzL3RhYnMvY29tcG9uZW50cy9pbmxpbmUtdGFicy9pbmxpbmUtdGFicy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay9zcmMvbGliL2NvbXBvbmVudHMvdGFicy9jb21wb25lbnRzL2lubGluZS10YWJzL2lubGluZS10YWJzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQWUsTUFBTSxtQkFBbUIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbkQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzFDLE9BQU8sRUFHTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxlQUFlLEVBRWYsWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBRU4sU0FBUyxFQUNULGlCQUFpQixFQUNqQixnQkFBZ0IsRUFDaEIsTUFBTSxFQUNOLGVBQWUsR0FDaEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFlLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1RCxPQUFPLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLFNBQVMsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQ3BGLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQ3hGLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLHFEQUFxRCxD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Z0JBSXJDLGVBQWU7c0JBRGQsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFJdEMsZ0JBQWdCO3NCQURmLEtBQUs7Z0JBSU4sUUFBUTtzQkFEUCxLQUFLO2dCQUlOLGVBQWU7c0JBRGQsS0FBSztnQkFJTixXQUFXO3NCQURWLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBSXRDLGFBQWE7c0JBRFosS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFJdEMsZ0JBQWdCO3NCQURmLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBSTdCLG1CQUFtQjtzQkFEM0IsTUFBTTtnQkFJRSxXQUFXO3NCQURuQixNQUFNO2dCQUlFLGlCQUFpQjtzQkFEekIsTUFBTTtnQkFJUCxRQUFRO3NCQURQLGVBQWU7dUJBQUMsa0JBQWtCLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFO2dCQUkxRCxlQUFlO3NCQURkLFNBQVM7dUJBQUMsZ0JBQWdCO2dCQUkzQixVQUFVO3NCQURULFNBQVM7dUJBQUMsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEExMXlNb2R1bGUsIEZvY3VzT3JpZ2luIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xuaW1wb3J0IHsgUG9ydGFsTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5pbXBvcnQgeyBOZ0NsYXNzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIEFmdGVyQ29udGVudENoZWNrZWQsXG4gIEFmdGVyQ29udGVudEluaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT3V0cHV0LFxuICBUcmFja0J5RnVuY3Rpb24sXG4gIFZpZXdDaGlsZCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG4gIGJvb2xlYW5BdHRyaWJ1dGUsXG4gIGluamVjdCxcbiAgbnVtYmVyQXR0cmlidXRlLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5nQ2xhc3NUeXBlLCBUeXBlZFF1ZXJ5TGlzdCB9IGZyb20gJ0BldGhsZXRlL2NvcmUnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uLCBtZXJnZSwgc3RhcnRXaXRoIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBJbmxpbmVUYWJDb21wb25lbnQsIFRBQl9HUk9VUCB9IGZyb20gJy4uLy4uL3BhcnRpYWxzL2lubGluZS10YWJzL2lubGluZS10YWInO1xuaW1wb3J0IHsgSW5saW5lVGFiQm9keUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL3BhcnRpYWxzL2lubGluZS10YWJzL2lubGluZS10YWItYm9keSc7XG5pbXBvcnQgeyBJbmxpbmVUYWJIZWFkZXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi9wYXJ0aWFscy9pbmxpbmUtdGFicy9pbmxpbmUtdGFiLWhlYWRlcic7XG5pbXBvcnQgeyBJbmxpbmVUYWJMYWJlbFdyYXBwZXJEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9wYXJ0aWFscy9pbmxpbmUtdGFicy9pbmxpbmUtdGFiLWxhYmVsLXdyYXBwZXInO1xuXG5sZXQgbmV4dElkID0gMDtcblxuZXhwb3J0IGNsYXNzIElubGluZVRhYkNoYW5nZUV2ZW50IHtcbiAgaW5kZXghOiBudW1iZXI7XG4gIHRhYiE6IElubGluZVRhYkNvbXBvbmVudDtcbn1cblxuaW50ZXJmYWNlIElubGluZVRhYnNCYXNlSGVhZGVyIHtcbiAgX2FsaWduSW5rQmFyVG9TZWxlY3RlZFRhYigpOiB2b2lkO1xuICB1cGRhdGVQYWdpbmF0aW9uKCk6IHZvaWQ7XG4gIGZvY3VzSW5kZXg6IG51bWJlcjtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZXQtaW5saW5lLXRhYnMnLFxuICB0ZW1wbGF0ZVVybDogJ2lubGluZS10YWJzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJ2lubGluZS10YWJzLmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuRGVmYXVsdCxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogVEFCX0dST1VQLFxuICAgICAgdXNlRXhpc3Rpbmc6IElubGluZVRhYnNDb21wb25lbnQsXG4gICAgfSxcbiAgXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIElubGluZVRhYkhlYWRlckNvbXBvbmVudCxcbiAgICBOZ0NsYXNzLFxuICAgIElubGluZVRhYkxhYmVsV3JhcHBlckRpcmVjdGl2ZSxcbiAgICBBMTF5TW9kdWxlLFxuICAgIElubGluZVRhYkJvZHlDb21wb25lbnQsXG4gICAgUG9ydGFsTW9kdWxlLFxuICBdLFxuICBob3N0OiB7XG4gICAgY2xhc3M6ICdldC1pbmxpbmUtdGFicycsXG4gIH0sXG59KVxuZXhwb3J0IGNsYXNzIElubGluZVRhYnNDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0LCBBZnRlckNvbnRlbnRDaGVja2VkLCBPbkRlc3Ryb3kge1xuICBwcml2YXRlIF9jZHIgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogbnVtYmVyQXR0cmlidXRlIH0pXG4gIHNlbGVjdGVkSW5kZXg6IG51bWJlciB8IG51bGwgPSBudWxsO1xuXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogbnVtYmVyQXR0cmlidXRlIH0pXG4gIGNvbnRlbnRUYWJJbmRleDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG5cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gIHByZXNlcnZlQ29udGVudCA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIHRhYkhlYWRlckNsYXNzZXM6IE5nQ2xhc3NUeXBlO1xuXG4gIEBJbnB1dCgpXG4gIGl0ZW1TaXplOiAnYXV0bycgfCAnc2FtZScgPSAnYXV0byc7XG5cbiAgQElucHV0KClcbiAgc2Nyb2xsYWJsZUNsYXNzPzogTmdDbGFzc1R5cGU7XG5cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gIHJlbmRlck1hc2tzID0gdHJ1ZTtcblxuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgcmVuZGVyQnV0dG9ucyA9IHRydWU7XG5cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gIHJlbmRlclNjcm9sbGJhcnMgPSBmYWxzZTtcblxuICBAT3V0cHV0KClcbiAgcmVhZG9ubHkgc2VsZWN0ZWRJbmRleENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuXG4gIEBPdXRwdXQoKVxuICByZWFkb25seSBmb2N1c0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8SW5saW5lVGFiQ2hhbmdlRXZlbnQ+KCk7XG5cbiAgQE91dHB1dCgpXG4gIHJlYWRvbmx5IHNlbGVjdGVkVGFiQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxJbmxpbmVUYWJDaGFuZ2VFdmVudD4odHJ1ZSk7XG5cbiAgQENvbnRlbnRDaGlsZHJlbihJbmxpbmVUYWJDb21wb25lbnQsIHsgZGVzY2VuZGFudHM6IHRydWUgfSlcbiAgX2FsbFRhYnMhOiBUeXBlZFF1ZXJ5TGlzdDxJbmxpbmVUYWJDb21wb25lbnQ+O1xuXG4gIEBWaWV3Q2hpbGQoJ3RhYkJvZHlXcmFwcGVyJylcbiAgX3RhYkJvZHlXcmFwcGVyOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PiB8IG51bGwgPSBudWxsO1xuXG4gIEBWaWV3Q2hpbGQoJ3RhYkhlYWRlcicpXG4gIF90YWJIZWFkZXIhOiBJbmxpbmVUYWJzQmFzZUhlYWRlcjtcblxuICBfdGFiczogVHlwZWRRdWVyeUxpc3Q8SW5saW5lVGFiQ29tcG9uZW50PiA9IG5ldyBUeXBlZFF1ZXJ5TGlzdDxJbmxpbmVUYWJDb21wb25lbnQ+KCk7XG5cbiAgcHJpdmF0ZSBfZ3JvdXBJZCA9IG5leHRJZCsrO1xuICBwcml2YXRlIF9sYXN0Rm9jdXNlZFRhYkluZGV4OiBudW1iZXIgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBfdGFic1N1YnNjcmlwdGlvbiA9IFN1YnNjcmlwdGlvbi5FTVBUWTtcbiAgcHJpdmF0ZSBfdGFiTGFiZWxTdWJzY3JpcHRpb24gPSBTdWJzY3JpcHRpb24uRU1QVFk7XG5cbiAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICAgIHRoaXMuX3N1YnNjcmliZVRvQWxsVGFiQ2hhbmdlcygpO1xuICAgIHRoaXMuX3N1YnNjcmliZVRvVGFiTGFiZWxzKCk7XG5cbiAgICB0aGlzLl90YWJzU3Vic2NyaXB0aW9uID0gdGhpcy5fdGFicy5jaGFuZ2VzLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICBjb25zdCBpbmRleFRvU2VsZWN0ID0gdGhpcy5fY2xhbXBUYWJJbmRleCh0aGlzLnNlbGVjdGVkSW5kZXgpO1xuXG4gICAgICBpZiAoaW5kZXhUb1NlbGVjdCA9PT0gdGhpcy5zZWxlY3RlZEluZGV4KSB7XG4gICAgICAgIGNvbnN0IHRhYnMgPSB0aGlzLl90YWJzLnRvQXJyYXkoKTtcbiAgICAgICAgbGV0IHNlbGVjdGVkVGFiOiBJbmxpbmVUYWJDb21wb25lbnQgfCB1bmRlZmluZWQ7XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0YWJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgaWYgKHRhYnNbaV0/LmlzQWN0aXZlKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkSW5kZXggPSBpO1xuICAgICAgICAgICAgdGhpcy5fbGFzdEZvY3VzZWRUYWJJbmRleCA9IG51bGw7XG4gICAgICAgICAgICBzZWxlY3RlZFRhYiA9IHRhYnNbaV07XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXNlbGVjdGVkVGFiICYmIHRhYnNbaW5kZXhUb1NlbGVjdF0pIHtcbiAgICAgICAgICBQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHQgPSB0YWJzW2luZGV4VG9TZWxlY3RdO1xuXG4gICAgICAgICAgICBpZiAoIXQpIHJldHVybjtcblxuICAgICAgICAgICAgdC5pc0FjdGl2ZSA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkVGFiQ2hhbmdlLmVtaXQodGhpcy5fY3JlYXRlQ2hhbmdlRXZlbnQoaW5kZXhUb1NlbGVjdCkpO1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEluZGV4Q2hhbmdlLmVtaXQoaW5kZXhUb1NlbGVjdCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdGhpcy5fY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIH0pO1xuICB9XG5cbiAgbmdBZnRlckNvbnRlbnRDaGVja2VkKCkge1xuICAgIGNvbnN0IGluZGV4VG9TZWxlY3QgPSAodGhpcy5zZWxlY3RlZEluZGV4ID0gdGhpcy5fY2xhbXBUYWJJbmRleCh0aGlzLnNlbGVjdGVkSW5kZXgpKTtcblxuICAgIGlmICh0aGlzLnNlbGVjdGVkSW5kZXggIT0gaW5kZXhUb1NlbGVjdCAmJiB0aGlzLl90YWJCb2R5V3JhcHBlcikge1xuICAgICAgY29uc3QgaXNGaXJzdFJ1biA9IHRoaXMuc2VsZWN0ZWRJbmRleCA9PSBudWxsO1xuXG4gICAgICBpZiAoIWlzRmlyc3RSdW4pIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFRhYkNoYW5nZS5lbWl0KHRoaXMuX2NyZWF0ZUNoYW5nZUV2ZW50KGluZGV4VG9TZWxlY3QpKTtcblxuICAgICAgICBjb25zdCB3cmFwcGVyID0gdGhpcy5fdGFiQm9keVdyYXBwZXI/Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIHdyYXBwZXIuc3R5bGUubWluSGVpZ2h0ID0gd3JhcHBlci5jbGllbnRIZWlnaHQgKyAncHgnO1xuICAgICAgfVxuXG4gICAgICBQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpID0+IHtcbiAgICAgICAgdGhpcy5fdGFic1xuICAgICAgICAgIC5maWx0ZXIoKHQpOiB0IGlzIElubGluZVRhYkNvbXBvbmVudCA9PiAhIXQpXG4gICAgICAgICAgLmZvckVhY2goKHRhYiwgaW5kZXgpID0+ICh0YWIuaXNBY3RpdmUgPSBpbmRleCA9PT0gaW5kZXhUb1NlbGVjdCkpO1xuXG4gICAgICAgIGlmICghaXNGaXJzdFJ1bikge1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJbmRleENoYW5nZS5lbWl0KGluZGV4VG9TZWxlY3QpO1xuXG4gICAgICAgICAgaWYgKHRoaXMuX3RhYkJvZHlXcmFwcGVyKSB7XG4gICAgICAgICAgICB0aGlzLl90YWJCb2R5V3JhcHBlci5uYXRpdmVFbGVtZW50LnN0eWxlLm1pbkhlaWdodCA9ICcnO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgdGhpcy5fdGFicy5mb3JFYWNoKCh0YWIsIGluZGV4KSA9PiB7XG4gICAgICBpZiAoIXRhYikgcmV0dXJuO1xuXG4gICAgICB0YWIucG9zaXRpb24gPSBpbmRleCAtIGluZGV4VG9TZWxlY3Q7XG5cbiAgICAgIGlmICh0aGlzLnNlbGVjdGVkSW5kZXggIT0gbnVsbCAmJiB0YWIucG9zaXRpb24gPT0gMCAmJiAhdGFiLm9yaWdpbikge1xuICAgICAgICB0YWIub3JpZ2luID0gaW5kZXhUb1NlbGVjdCAtIHRoaXMuc2VsZWN0ZWRJbmRleDtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGlmICh0aGlzLnNlbGVjdGVkSW5kZXggIT09IGluZGV4VG9TZWxlY3QpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRJbmRleCA9IGluZGV4VG9TZWxlY3Q7XG4gICAgICB0aGlzLl9sYXN0Rm9jdXNlZFRhYkluZGV4ID0gbnVsbDtcbiAgICAgIHRoaXMuX2Nkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLl90YWJzLmRlc3Ryb3koKTtcbiAgICB0aGlzLl90YWJzU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5fdGFiTGFiZWxTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHRyYWNrQnlUYWJGbjogVHJhY2tCeUZ1bmN0aW9uPElubGluZVRhYkNvbXBvbmVudD4gPSAoaW5kZXgpID0+IGluZGV4O1xuXG4gIHJlYWxpZ25JbmtCYXIoKSB7XG4gICAgaWYgKHRoaXMuX3RhYkhlYWRlcikge1xuICAgICAgdGhpcy5fdGFiSGVhZGVyLl9hbGlnbklua0JhclRvU2VsZWN0ZWRUYWIoKTtcbiAgICB9XG4gIH1cblxuICB1cGRhdGVQYWdpbmF0aW9uKCkge1xuICAgIGlmICh0aGlzLl90YWJIZWFkZXIpIHtcbiAgICAgIHRoaXMuX3RhYkhlYWRlci51cGRhdGVQYWdpbmF0aW9uKCk7XG4gICAgfVxuICB9XG5cbiAgZm9jdXNUYWIoaW5kZXg6IG51bWJlcikge1xuICAgIGNvbnN0IGhlYWRlciA9IHRoaXMuX3RhYkhlYWRlcjtcblxuICAgIGlmIChoZWFkZXIpIHtcbiAgICAgIGhlYWRlci5mb2N1c0luZGV4ID0gaW5kZXg7XG4gICAgfVxuICB9XG5cbiAgX2ZvY3VzQ2hhbmdlZChpbmRleDogbnVtYmVyKSB7XG4gICAgdGhpcy5fbGFzdEZvY3VzZWRUYWJJbmRleCA9IGluZGV4O1xuICAgIHRoaXMuZm9jdXNDaGFuZ2UuZW1pdCh0aGlzLl9jcmVhdGVDaGFuZ2VFdmVudChpbmRleCkpO1xuICB9XG5cbiAgX2dldFRhYkxhYmVsSWQoaTogbnVtYmVyKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYGV0LWlubGluZS10YWItbGFiZWwtJHt0aGlzLl9ncm91cElkfS0ke2l9YDtcbiAgfVxuXG4gIF9nZXRUYWJDb250ZW50SWQoaTogbnVtYmVyKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYGV0LWlubGluZS10YWItY29udGVudC0ke3RoaXMuX2dyb3VwSWR9LSR7aX1gO1xuICB9XG5cbiAgX2hhbmRsZUNsaWNrKHRhYjogSW5saW5lVGFiQ29tcG9uZW50LCB0YWJIZWFkZXI6IElubGluZVRhYnNCYXNlSGVhZGVyLCBpbmRleDogbnVtYmVyKSB7XG4gICAgaWYgKCF0YWIuZGlzYWJsZWQgJiYgdGhpcy5zZWxlY3RlZEluZGV4ICE9PSBpbmRleCkge1xuICAgICAgdGhpcy5zZWxlY3RlZEluZGV4ID0gdGFiSGVhZGVyLmZvY3VzSW5kZXggPSBpbmRleDtcbiAgICAgIHRoaXMuc2VsZWN0ZWRJbmRleENoYW5nZS5lbWl0KGluZGV4KTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRUYWJDaGFuZ2UuZW1pdCh0aGlzLl9jcmVhdGVDaGFuZ2VFdmVudChpbmRleCkpO1xuICAgIH1cbiAgfVxuXG4gIF9oYW5kbGVFbnRlcihpbmRleDogbnVtYmVyKSB7XG4gICAgY29uc3QgdGFiID0gdGhpcy5fdGFicy50b0FycmF5KClbaW5kZXhdO1xuICAgIGlmICghdGFiIHx8IHRhYi5kaXNhYmxlZCB8fCB0aGlzLnNlbGVjdGVkSW5kZXggPT09IGluZGV4KSByZXR1cm47XG5cbiAgICB0aGlzLnNlbGVjdGVkSW5kZXggPSBpbmRleDtcbiAgICB0aGlzLnNlbGVjdGVkSW5kZXhDaGFuZ2UuZW1pdChpbmRleCk7XG4gICAgdGhpcy5zZWxlY3RlZFRhYkNoYW5nZS5lbWl0KHRoaXMuX2NyZWF0ZUNoYW5nZUV2ZW50KGluZGV4KSk7XG4gIH1cblxuICBfZ2V0VGFiSW5kZXgodGFiOiBJbmxpbmVUYWJDb21wb25lbnQsIGluZGV4OiBudW1iZXIpOiBudW1iZXIgfCBudWxsIHtcbiAgICBpZiAodGFiLmRpc2FibGVkKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgY29uc3QgdGFyZ2V0SW5kZXggPSB0aGlzLl9sYXN0Rm9jdXNlZFRhYkluZGV4ID8/IHRoaXMuc2VsZWN0ZWRJbmRleDtcbiAgICByZXR1cm4gaW5kZXggPT09IHRhcmdldEluZGV4ID8gMCA6IC0xO1xuICB9XG5cbiAgX3RhYkZvY3VzQ2hhbmdlZChmb2N1c09yaWdpbjogRm9jdXNPcmlnaW4sIGluZGV4OiBudW1iZXIpIHtcbiAgICBpZiAoZm9jdXNPcmlnaW4gJiYgZm9jdXNPcmlnaW4gIT09ICdtb3VzZScgJiYgZm9jdXNPcmlnaW4gIT09ICd0b3VjaCcpIHtcbiAgICAgIHRoaXMuX3RhYkhlYWRlci5mb2N1c0luZGV4ID0gaW5kZXg7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfc3Vic2NyaWJlVG9BbGxUYWJDaGFuZ2VzKCkge1xuICAgIHRoaXMuX2FsbFRhYnMuY2hhbmdlcy5waXBlKHN0YXJ0V2l0aCh0aGlzLl9hbGxUYWJzKSkuc3Vic2NyaWJlKCh0YWJzKSA9PiB7XG4gICAgICB0aGlzLl90YWJzLnJlc2V0KFxuICAgICAgICB0YWJzXG4gICAgICAgICAgLmZpbHRlcigodCk6IHQgaXMgSW5saW5lVGFiQ29tcG9uZW50ID0+ICEhdClcbiAgICAgICAgICAuZmlsdGVyKCh0YWIpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB0YWIuX2Nsb3Nlc3RUYWJHcm91cCA9PT0gdGhpcyB8fCAhdGFiLl9jbG9zZXN0VGFiR3JvdXA7XG4gICAgICAgICAgfSksXG4gICAgICApO1xuICAgICAgdGhpcy5fdGFicy5ub3RpZnlPbkNoYW5nZXMoKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX2NsYW1wVGFiSW5kZXgoaW5kZXg6IG51bWJlciB8IG51bGwpOiBudW1iZXIge1xuICAgIHJldHVybiBNYXRoLm1pbih0aGlzLl90YWJzLmxlbmd0aCAtIDEsIE1hdGgubWF4KGluZGV4IHx8IDAsIDApKTtcbiAgfVxuXG4gIHByaXZhdGUgX3N1YnNjcmliZVRvVGFiTGFiZWxzKCkge1xuICAgIGlmICh0aGlzLl90YWJMYWJlbFN1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5fdGFiTGFiZWxTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICB0aGlzLl90YWJMYWJlbFN1YnNjcmlwdGlvbiA9IG1lcmdlKFxuICAgICAgLi4udGhpcy5fdGFicy5maWx0ZXIoKHQpOiB0IGlzIElubGluZVRhYkNvbXBvbmVudCA9PiAhIXQpLm1hcCgodGFiKSA9PiB0YWIuX3N0YXRlQ2hhbmdlcyksXG4gICAgKS5zdWJzY3JpYmUoKCkgPT4gdGhpcy5fY2RyLm1hcmtGb3JDaGVjaygpKTtcbiAgfVxuXG4gIHByaXZhdGUgX2NyZWF0ZUNoYW5nZUV2ZW50KGluZGV4OiBudW1iZXIpOiBJbmxpbmVUYWJDaGFuZ2VFdmVudCB7XG4gICAgY29uc3QgZXZlbnQgPSBuZXcgSW5saW5lVGFiQ2hhbmdlRXZlbnQoKTtcbiAgICBldmVudC5pbmRleCA9IGluZGV4O1xuICAgIGlmICh0aGlzLl90YWJzICYmIHRoaXMuX3RhYnMubGVuZ3RoKSB7XG4gICAgICBjb25zdCB0YWIgPSB0aGlzLl90YWJzLnRvQXJyYXkoKVtpbmRleF07XG5cbiAgICAgIGlmICh0YWIpIHtcbiAgICAgICAgZXZlbnQudGFiID0gdGFiO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZXZlbnQ7XG4gIH1cbn1cbiIsIjxldC1pbmxpbmUtdGFiLWhlYWRlclxuICAjdGFiSGVhZGVyXG4gIFtzZWxlY3RlZEluZGV4XT1cInNlbGVjdGVkSW5kZXggfHwgMFwiXG4gIFtuZ0NsYXNzXT1cInRhYkhlYWRlckNsYXNzZXNcIlxuICBbaXRlbVNpemVdPVwiaXRlbVNpemVcIlxuICBbcmVuZGVyQnV0dG9uc109XCJyZW5kZXJCdXR0b25zXCJcbiAgW3Njcm9sbGFibGVDbGFzc109XCJzY3JvbGxhYmxlQ2xhc3NcIlxuICBbcmVuZGVyTWFza3NdPVwicmVuZGVyTWFza3NcIlxuICBbcmVuZGVyU2Nyb2xsYmFyc109XCJyZW5kZXJTY3JvbGxiYXJzXCJcbiAgKGluZGV4Rm9jdXNlZCk9XCJfZm9jdXNDaGFuZ2VkKCRldmVudClcIlxuICAoc2VsZWN0Rm9jdXNlZEluZGV4KT1cIl9oYW5kbGVFbnRlcigkZXZlbnQpXCJcbj5cbiAgQGZvciAodGFiIG9mIF90YWJzOyB0cmFjayB0cmFja0J5VGFiRm4oaSwgdGFiKTsgbGV0IGkgPSAkaW5kZXgpIHtcbiAgICA8IS0tIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvdGVtcGxhdGUvY2xpY2stZXZlbnRzLWhhdmUta2V5LWV2ZW50cyAtLT5cbiAgICA8ZGl2XG4gICAgICBbaWRdPVwiX2dldFRhYkxhYmVsSWQoaSlcIlxuICAgICAgW2F0dHIudGFiSW5kZXhdPVwiX2dldFRhYkluZGV4KHRhYiwgaSlcIlxuICAgICAgW2F0dHIuYXJpYS1wb3NpbnNldF09XCJpICsgMVwiXG4gICAgICBbYXR0ci5hcmlhLXNldHNpemVdPVwiX3RhYnMubGVuZ3RoXCJcbiAgICAgIFthdHRyLmFyaWEtY29udHJvbHNdPVwiX2dldFRhYkNvbnRlbnRJZChpKVwiXG4gICAgICBbYXR0ci5hcmlhLXNlbGVjdGVkXT1cInNlbGVjdGVkSW5kZXggPT09IGlcIlxuICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJ0YWIuYXJpYUxhYmVsIHx8IG51bGxcIlxuICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cIiF0YWIuYXJpYUxhYmVsICYmIHRhYi5hcmlhTGFiZWxsZWRieSA/IHRhYi5hcmlhTGFiZWxsZWRieSA6IG51bGxcIlxuICAgICAgW2Rpc2FibGVkXT1cInRhYi5kaXNhYmxlZFwiXG4gICAgICBbY2xhc3MuZXQtaW5saW5lLXRhYi1sYWJlbC0tYWN0aXZlXT1cInNlbGVjdGVkSW5kZXggPT09IGlcIlxuICAgICAgW2NsYXNzLmV0LWlubGluZS10YWItbGFiZWwtLWlzLXRleHRdPVwiISF0YWIudGV4dExhYmVsXCJcbiAgICAgIFtmaXRVbmRlcmxpbmVUb0NvbnRlbnRdPVwidGFiLmZpdFVuZGVybGluZVRvQ29udGVudFwiXG4gICAgICAoY2xpY2spPVwiX2hhbmRsZUNsaWNrKHRhYiwgdGFiSGVhZGVyLCBpKVwiXG4gICAgICAoY2RrRm9jdXNDaGFuZ2UpPVwiX3RhYkZvY3VzQ2hhbmdlZCgkZXZlbnQsIGkpXCJcbiAgICAgIHJvbGU9XCJ0YWJcIlxuICAgICAgZXRJbmxpbmVUYWJMYWJlbFdyYXBwZXJcbiAgICAgIGNka01vbml0b3JFbGVtZW50Rm9jdXNcbiAgICA+XG4gICAgICA8c3BhbiBjbGFzcz1cImV0LXRhYi1jb250ZW50XCI+XG4gICAgICAgIEBpZiAodGFiLnRlbXBsYXRlTGFiZWwpIHtcbiAgICAgICAgICA8bmctdGVtcGxhdGUgW2Nka1BvcnRhbE91dGxldF09XCJ0YWIudGVtcGxhdGVMYWJlbFwiIC8+XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgIHt7IHRhYi50ZXh0TGFiZWwgfX1cbiAgICAgICAgfVxuICAgICAgPC9zcGFuPlxuICAgIDwvZGl2PlxuICB9XG48L2V0LWlubGluZS10YWItaGVhZGVyPlxuXG48ZGl2ICN0YWJCb2R5V3JhcHBlcj5cbiAgQGZvciAodGFiIG9mIF90YWJzOyB0cmFjayB0cmFja0J5VGFiRm4oaSwgdGFiKTsgbGV0IGkgPSAkaW5kZXgpIHtcbiAgICA8ZXQtaW5saW5lLXRhYi1ib2R5XG4gICAgICBbaWRdPVwiX2dldFRhYkNvbnRlbnRJZChpKVwiXG4gICAgICBbYXR0ci50YWJpbmRleF09XCJjb250ZW50VGFiSW5kZXggIT09IG51bGwgJiYgc2VsZWN0ZWRJbmRleCA9PT0gaSA/IGNvbnRlbnRUYWJJbmRleCA6IG51bGxcIlxuICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cIl9nZXRUYWJMYWJlbElkKGkpXCJcbiAgICAgIFtjbGFzcy5jZGstdmlzdWFsbHktaGlkZGVuXT1cInNlbGVjdGVkSW5kZXggIT09IGlcIlxuICAgICAgW25nQ2xhc3NdPVwidGFiLmJvZHlDbGFzc1wiXG4gICAgICBbY2xhc3Muc3Itb25seV09XCJzZWxlY3RlZEluZGV4ICE9PSBpXCJcbiAgICAgIFtjb250ZW50XT1cInRhYi5jb250ZW50IVwiXG4gICAgICBbcG9zaXRpb25dPVwidGFiLnBvc2l0aW9uIVwiXG4gICAgICBbb3JpZ2luXT1cInRhYi5vcmlnaW5cIlxuICAgICAgW3ByZXNlcnZlQ29udGVudF09XCJwcmVzZXJ2ZUNvbnRlbnRcIlxuICAgICAgcm9sZT1cInRhYnBhbmVsXCJcbiAgICAgIGFuaW1hdGlvbkR1cmF0aW9uPVwiMG1zXCJcbiAgICAvPlxuICB9XG48L2Rpdj5cbiJdfQ==
|
|
256
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5saW5lLXRhYnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvc3JjL2xpYi9jb21wb25lbnRzL3RhYnMvY29tcG9uZW50cy9pbmxpbmUtdGFicy9pbmxpbmUtdGFicy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay9zcmMvbGliL2NvbXBvbmVudHMvdGFicy9jb21wb25lbnRzL2lubGluZS10YWJzL2lubGluZS10YWJzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQWUsTUFBTSxtQkFBbUIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbkQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzFDLE9BQU8sRUFHTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxlQUFlLEVBRWYsWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBRU4sU0FBUyxFQUNULGlCQUFpQixFQUNqQixnQkFBZ0IsRUFDaEIsTUFBTSxFQUNOLGVBQWUsR0FDaEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFlLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1RCxPQUFPLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLFNBQVMsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQ3BGLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQ3hGLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLHFEQUFxRCxD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Z0JBSXJDLGVBQWU7c0JBRGQsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFJdEMsZ0JBQWdCO3NCQURmLEtBQUs7Z0JBSU4sUUFBUTtzQkFEUCxLQUFLO2dCQUlOLGVBQWU7c0JBRGQsS0FBSztnQkFJTixXQUFXO3NCQURWLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBSXRDLGFBQWE7c0JBRFosS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFJdEMsZ0JBQWdCO3NCQURmLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBSTdCLG1CQUFtQjtzQkFEM0IsTUFBTTtnQkFJRSxXQUFXO3NCQURuQixNQUFNO2dCQUlFLGlCQUFpQjtzQkFEekIsTUFBTTtnQkFJUCxRQUFRO3NCQURQLGVBQWU7dUJBQUMsa0JBQWtCLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFO2dCQUkxRCxlQUFlO3NCQURkLFNBQVM7dUJBQUMsZ0JBQWdCO2dCQUkzQixVQUFVO3NCQURULFNBQVM7dUJBQUMsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEExMXlNb2R1bGUsIEZvY3VzT3JpZ2luIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xuaW1wb3J0IHsgUG9ydGFsTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5pbXBvcnQgeyBOZ0NsYXNzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIEFmdGVyQ29udGVudENoZWNrZWQsXG4gIEFmdGVyQ29udGVudEluaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT3V0cHV0LFxuICBUcmFja0J5RnVuY3Rpb24sXG4gIFZpZXdDaGlsZCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG4gIGJvb2xlYW5BdHRyaWJ1dGUsXG4gIGluamVjdCxcbiAgbnVtYmVyQXR0cmlidXRlLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5nQ2xhc3NUeXBlLCBUeXBlZFF1ZXJ5TGlzdCB9IGZyb20gJ0BldGhsZXRlL2NvcmUnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uLCBtZXJnZSwgc3RhcnRXaXRoIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBJbmxpbmVUYWJDb21wb25lbnQsIFRBQl9HUk9VUCB9IGZyb20gJy4uLy4uL3BhcnRpYWxzL2lubGluZS10YWJzL2lubGluZS10YWInO1xuaW1wb3J0IHsgSW5saW5lVGFiQm9keUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL3BhcnRpYWxzL2lubGluZS10YWJzL2lubGluZS10YWItYm9keSc7XG5pbXBvcnQgeyBJbmxpbmVUYWJIZWFkZXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi9wYXJ0aWFscy9pbmxpbmUtdGFicy9pbmxpbmUtdGFiLWhlYWRlcic7XG5pbXBvcnQgeyBJbmxpbmVUYWJMYWJlbFdyYXBwZXJEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9wYXJ0aWFscy9pbmxpbmUtdGFicy9pbmxpbmUtdGFiLWxhYmVsLXdyYXBwZXInO1xuXG5sZXQgbmV4dElkID0gMDtcblxuZXhwb3J0IGNsYXNzIElubGluZVRhYkNoYW5nZUV2ZW50IHtcbiAgaW5kZXghOiBudW1iZXI7XG4gIHRhYiE6IElubGluZVRhYkNvbXBvbmVudDtcbn1cblxuaW50ZXJmYWNlIElubGluZVRhYnNCYXNlSGVhZGVyIHtcbiAgX2FsaWduSW5rQmFyVG9TZWxlY3RlZFRhYigpOiB2b2lkO1xuICB1cGRhdGVQYWdpbmF0aW9uKCk6IHZvaWQ7XG4gIGZvY3VzSW5kZXg6IG51bWJlcjtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZXQtaW5saW5lLXRhYnMnLFxuICB0ZW1wbGF0ZVVybDogJ2lubGluZS10YWJzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJ2lubGluZS10YWJzLmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuRGVmYXVsdCxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogVEFCX0dST1VQLFxuICAgICAgdXNlRXhpc3Rpbmc6IElubGluZVRhYnNDb21wb25lbnQsXG4gICAgfSxcbiAgXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIElubGluZVRhYkhlYWRlckNvbXBvbmVudCxcbiAgICBOZ0NsYXNzLFxuICAgIElubGluZVRhYkxhYmVsV3JhcHBlckRpcmVjdGl2ZSxcbiAgICBBMTF5TW9kdWxlLFxuICAgIElubGluZVRhYkJvZHlDb21wb25lbnQsXG4gICAgUG9ydGFsTW9kdWxlLFxuICBdLFxuICBob3N0OiB7XG4gICAgY2xhc3M6ICdldC1pbmxpbmUtdGFicycsXG4gIH0sXG59KVxuZXhwb3J0IGNsYXNzIElubGluZVRhYnNDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0LCBBZnRlckNvbnRlbnRDaGVja2VkLCBPbkRlc3Ryb3kge1xuICBwcml2YXRlIF9jZHIgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogbnVtYmVyQXR0cmlidXRlIH0pXG4gIHNlbGVjdGVkSW5kZXg6IG51bWJlciB8IG51bGwgPSBudWxsO1xuXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogbnVtYmVyQXR0cmlidXRlIH0pXG4gIGNvbnRlbnRUYWJJbmRleDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG5cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gIHByZXNlcnZlQ29udGVudCA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIHRhYkhlYWRlckNsYXNzZXM6IE5nQ2xhc3NUeXBlO1xuXG4gIEBJbnB1dCgpXG4gIGl0ZW1TaXplOiAnYXV0bycgfCAnc2FtZScgPSAnYXV0byc7XG5cbiAgQElucHV0KClcbiAgc2Nyb2xsYWJsZUNsYXNzPzogTmdDbGFzc1R5cGU7XG5cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gIHJlbmRlck1hc2tzID0gdHJ1ZTtcblxuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgcmVuZGVyQnV0dG9ucyA9IHRydWU7XG5cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gIHJlbmRlclNjcm9sbGJhcnMgPSBmYWxzZTtcblxuICBAT3V0cHV0KClcbiAgcmVhZG9ubHkgc2VsZWN0ZWRJbmRleENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuXG4gIEBPdXRwdXQoKVxuICByZWFkb25seSBmb2N1c0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8SW5saW5lVGFiQ2hhbmdlRXZlbnQ+KCk7XG5cbiAgQE91dHB1dCgpXG4gIHJlYWRvbmx5IHNlbGVjdGVkVGFiQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxJbmxpbmVUYWJDaGFuZ2VFdmVudD4odHJ1ZSk7XG5cbiAgQENvbnRlbnRDaGlsZHJlbihJbmxpbmVUYWJDb21wb25lbnQsIHsgZGVzY2VuZGFudHM6IHRydWUgfSlcbiAgX2FsbFRhYnMhOiBUeXBlZFF1ZXJ5TGlzdDxJbmxpbmVUYWJDb21wb25lbnQ+O1xuXG4gIEBWaWV3Q2hpbGQoJ3RhYkJvZHlXcmFwcGVyJylcbiAgX3RhYkJvZHlXcmFwcGVyOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PiB8IG51bGwgPSBudWxsO1xuXG4gIEBWaWV3Q2hpbGQoJ3RhYkhlYWRlcicpXG4gIF90YWJIZWFkZXIhOiBJbmxpbmVUYWJzQmFzZUhlYWRlcjtcblxuICBfdGFiczogVHlwZWRRdWVyeUxpc3Q8SW5saW5lVGFiQ29tcG9uZW50PiA9IG5ldyBUeXBlZFF1ZXJ5TGlzdDxJbmxpbmVUYWJDb21wb25lbnQ+KCk7XG5cbiAgcHJpdmF0ZSBfZ3JvdXBJZCA9IG5leHRJZCsrO1xuICBwcml2YXRlIF9sYXN0Rm9jdXNlZFRhYkluZGV4OiBudW1iZXIgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBfdGFic1N1YnNjcmlwdGlvbiA9IFN1YnNjcmlwdGlvbi5FTVBUWTtcbiAgcHJpdmF0ZSBfdGFiTGFiZWxTdWJzY3JpcHRpb24gPSBTdWJzY3JpcHRpb24uRU1QVFk7XG5cbiAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICAgIHRoaXMuX3N1YnNjcmliZVRvQWxsVGFiQ2hhbmdlcygpO1xuICAgIHRoaXMuX3N1YnNjcmliZVRvVGFiTGFiZWxzKCk7XG5cbiAgICB0aGlzLl90YWJzU3Vic2NyaXB0aW9uID0gdGhpcy5fdGFicy5jaGFuZ2VzLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICBjb25zdCBpbmRleFRvU2VsZWN0ID0gdGhpcy5fY2xhbXBUYWJJbmRleCh0aGlzLnNlbGVjdGVkSW5kZXgpO1xuXG4gICAgICBpZiAoaW5kZXhUb1NlbGVjdCA9PT0gdGhpcy5zZWxlY3RlZEluZGV4KSB7XG4gICAgICAgIGNvbnN0IHRhYnMgPSB0aGlzLl90YWJzLnRvQXJyYXkoKTtcbiAgICAgICAgbGV0IHNlbGVjdGVkVGFiOiBJbmxpbmVUYWJDb21wb25lbnQgfCB1bmRlZmluZWQ7XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0YWJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgaWYgKHRhYnNbaV0/LmlzQWN0aXZlKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkSW5kZXggPSBpO1xuICAgICAgICAgICAgdGhpcy5fbGFzdEZvY3VzZWRUYWJJbmRleCA9IG51bGw7XG4gICAgICAgICAgICBzZWxlY3RlZFRhYiA9IHRhYnNbaV07XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXNlbGVjdGVkVGFiICYmIHRhYnNbaW5kZXhUb1NlbGVjdF0pIHtcbiAgICAgICAgICBQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHQgPSB0YWJzW2luZGV4VG9TZWxlY3RdO1xuXG4gICAgICAgICAgICBpZiAoIXQpIHJldHVybjtcblxuICAgICAgICAgICAgdC5pc0FjdGl2ZSA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkVGFiQ2hhbmdlLmVtaXQodGhpcy5fY3JlYXRlQ2hhbmdlRXZlbnQoaW5kZXhUb1NlbGVjdCkpO1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEluZGV4Q2hhbmdlLmVtaXQoaW5kZXhUb1NlbGVjdCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdGhpcy5fY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIH0pO1xuICB9XG5cbiAgbmdBZnRlckNvbnRlbnRDaGVja2VkKCkge1xuICAgIGNvbnN0IGluZGV4VG9TZWxlY3QgPSAodGhpcy5zZWxlY3RlZEluZGV4ID0gdGhpcy5fY2xhbXBUYWJJbmRleCh0aGlzLnNlbGVjdGVkSW5kZXgpKTtcblxuICAgIGlmICh0aGlzLnNlbGVjdGVkSW5kZXggIT0gaW5kZXhUb1NlbGVjdCAmJiB0aGlzLl90YWJCb2R5V3JhcHBlcikge1xuICAgICAgY29uc3QgaXNGaXJzdFJ1biA9IHRoaXMuc2VsZWN0ZWRJbmRleCA9PSBudWxsO1xuXG4gICAgICBpZiAoIWlzRmlyc3RSdW4pIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFRhYkNoYW5nZS5lbWl0KHRoaXMuX2NyZWF0ZUNoYW5nZUV2ZW50KGluZGV4VG9TZWxlY3QpKTtcblxuICAgICAgICBjb25zdCB3cmFwcGVyID0gdGhpcy5fdGFiQm9keVdyYXBwZXI/Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIHdyYXBwZXIuc3R5bGUubWluSGVpZ2h0ID0gd3JhcHBlci5jbGllbnRIZWlnaHQgKyAncHgnO1xuICAgICAgfVxuXG4gICAgICBQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpID0+IHtcbiAgICAgICAgdGhpcy5fdGFic1xuICAgICAgICAgIC5maWx0ZXIoKHQpOiB0IGlzIElubGluZVRhYkNvbXBvbmVudCA9PiAhIXQpXG4gICAgICAgICAgLmZvckVhY2goKHRhYiwgaW5kZXgpID0+ICh0YWIuaXNBY3RpdmUgPSBpbmRleCA9PT0gaW5kZXhUb1NlbGVjdCkpO1xuXG4gICAgICAgIGlmICghaXNGaXJzdFJ1bikge1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJbmRleENoYW5nZS5lbWl0KGluZGV4VG9TZWxlY3QpO1xuXG4gICAgICAgICAgaWYgKHRoaXMuX3RhYkJvZHlXcmFwcGVyKSB7XG4gICAgICAgICAgICB0aGlzLl90YWJCb2R5V3JhcHBlci5uYXRpdmVFbGVtZW50LnN0eWxlLm1pbkhlaWdodCA9ICcnO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgdGhpcy5fdGFicy5mb3JFYWNoKCh0YWIsIGluZGV4KSA9PiB7XG4gICAgICBpZiAoIXRhYikgcmV0dXJuO1xuXG4gICAgICB0YWIucG9zaXRpb24gPSBpbmRleCAtIGluZGV4VG9TZWxlY3Q7XG5cbiAgICAgIGlmICh0aGlzLnNlbGVjdGVkSW5kZXggIT0gbnVsbCAmJiB0YWIucG9zaXRpb24gPT0gMCAmJiAhdGFiLm9yaWdpbikge1xuICAgICAgICB0YWIub3JpZ2luID0gaW5kZXhUb1NlbGVjdCAtIHRoaXMuc2VsZWN0ZWRJbmRleDtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGlmICh0aGlzLnNlbGVjdGVkSW5kZXggIT09IGluZGV4VG9TZWxlY3QpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRJbmRleCA9IGluZGV4VG9TZWxlY3Q7XG4gICAgICB0aGlzLl9sYXN0Rm9jdXNlZFRhYkluZGV4ID0gbnVsbDtcbiAgICAgIHRoaXMuX2Nkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLl90YWJzLmRlc3Ryb3koKTtcbiAgICB0aGlzLl90YWJzU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5fdGFiTGFiZWxTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHRyYWNrQnlUYWJGbjogVHJhY2tCeUZ1bmN0aW9uPElubGluZVRhYkNvbXBvbmVudD4gPSAoaW5kZXgpID0+IGluZGV4O1xuXG4gIHJlYWxpZ25JbmtCYXIoKSB7XG4gICAgaWYgKHRoaXMuX3RhYkhlYWRlcikge1xuICAgICAgdGhpcy5fdGFiSGVhZGVyLl9hbGlnbklua0JhclRvU2VsZWN0ZWRUYWIoKTtcbiAgICB9XG4gIH1cblxuICB1cGRhdGVQYWdpbmF0aW9uKCkge1xuICAgIGlmICh0aGlzLl90YWJIZWFkZXIpIHtcbiAgICAgIHRoaXMuX3RhYkhlYWRlci51cGRhdGVQYWdpbmF0aW9uKCk7XG4gICAgfVxuICB9XG5cbiAgZm9jdXNUYWIoaW5kZXg6IG51bWJlcikge1xuICAgIGNvbnN0IGhlYWRlciA9IHRoaXMuX3RhYkhlYWRlcjtcblxuICAgIGlmIChoZWFkZXIpIHtcbiAgICAgIGhlYWRlci5mb2N1c0luZGV4ID0gaW5kZXg7XG4gICAgfVxuICB9XG5cbiAgX2ZvY3VzQ2hhbmdlZChpbmRleDogbnVtYmVyKSB7XG4gICAgdGhpcy5fbGFzdEZvY3VzZWRUYWJJbmRleCA9IGluZGV4O1xuICAgIHRoaXMuZm9jdXNDaGFuZ2UuZW1pdCh0aGlzLl9jcmVhdGVDaGFuZ2VFdmVudChpbmRleCkpO1xuICB9XG5cbiAgX2dldFRhYkxhYmVsSWQoaTogbnVtYmVyKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYGV0LWlubGluZS10YWItbGFiZWwtJHt0aGlzLl9ncm91cElkfS0ke2l9YDtcbiAgfVxuXG4gIF9nZXRUYWJDb250ZW50SWQoaTogbnVtYmVyKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYGV0LWlubGluZS10YWItY29udGVudC0ke3RoaXMuX2dyb3VwSWR9LSR7aX1gO1xuICB9XG5cbiAgX2hhbmRsZUNsaWNrKHRhYjogSW5saW5lVGFiQ29tcG9uZW50LCB0YWJIZWFkZXI6IElubGluZVRhYnNCYXNlSGVhZGVyLCBpbmRleDogbnVtYmVyKSB7XG4gICAgaWYgKCF0YWIuZGlzYWJsZWQgJiYgdGhpcy5zZWxlY3RlZEluZGV4ICE9PSBpbmRleCkge1xuICAgICAgdGhpcy5zZWxlY3RlZEluZGV4ID0gdGFiSGVhZGVyLmZvY3VzSW5kZXggPSBpbmRleDtcbiAgICAgIHRoaXMuc2VsZWN0ZWRJbmRleENoYW5nZS5lbWl0KGluZGV4KTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRUYWJDaGFuZ2UuZW1pdCh0aGlzLl9jcmVhdGVDaGFuZ2VFdmVudChpbmRleCkpO1xuICAgIH1cbiAgfVxuXG4gIF9oYW5kbGVFbnRlcihpbmRleDogbnVtYmVyKSB7XG4gICAgY29uc3QgdGFiID0gdGhpcy5fdGFicy50b0FycmF5KClbaW5kZXhdO1xuICAgIGlmICghdGFiIHx8IHRhYi5kaXNhYmxlZCB8fCB0aGlzLnNlbGVjdGVkSW5kZXggPT09IGluZGV4KSByZXR1cm47XG5cbiAgICB0aGlzLnNlbGVjdGVkSW5kZXggPSBpbmRleDtcbiAgICB0aGlzLnNlbGVjdGVkSW5kZXhDaGFuZ2UuZW1pdChpbmRleCk7XG4gICAgdGhpcy5zZWxlY3RlZFRhYkNoYW5nZS5lbWl0KHRoaXMuX2NyZWF0ZUNoYW5nZUV2ZW50KGluZGV4KSk7XG4gIH1cblxuICBfZ2V0VGFiSW5kZXgodGFiOiBJbmxpbmVUYWJDb21wb25lbnQsIGluZGV4OiBudW1iZXIpOiBudW1iZXIgfCBudWxsIHtcbiAgICBpZiAodGFiLmRpc2FibGVkKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgY29uc3QgdGFyZ2V0SW5kZXggPSB0aGlzLl9sYXN0Rm9jdXNlZFRhYkluZGV4ID8/IHRoaXMuc2VsZWN0ZWRJbmRleDtcbiAgICByZXR1cm4gaW5kZXggPT09IHRhcmdldEluZGV4ID8gMCA6IC0xO1xuICB9XG5cbiAgX3RhYkZvY3VzQ2hhbmdlZChmb2N1c09yaWdpbjogRm9jdXNPcmlnaW4sIGluZGV4OiBudW1iZXIpIHtcbiAgICBpZiAoZm9jdXNPcmlnaW4gJiYgZm9jdXNPcmlnaW4gIT09ICdtb3VzZScgJiYgZm9jdXNPcmlnaW4gIT09ICd0b3VjaCcpIHtcbiAgICAgIHRoaXMuX3RhYkhlYWRlci5mb2N1c0luZGV4ID0gaW5kZXg7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfc3Vic2NyaWJlVG9BbGxUYWJDaGFuZ2VzKCkge1xuICAgIHRoaXMuX2FsbFRhYnMuY2hhbmdlcy5waXBlKHN0YXJ0V2l0aCh0aGlzLl9hbGxUYWJzKSkuc3Vic2NyaWJlKCh0YWJzKSA9PiB7XG4gICAgICB0aGlzLl90YWJzLnJlc2V0KFxuICAgICAgICB0YWJzXG4gICAgICAgICAgLmZpbHRlcigodCk6IHQgaXMgSW5saW5lVGFiQ29tcG9uZW50ID0+ICEhdClcbiAgICAgICAgICAuZmlsdGVyKCh0YWIpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB0YWIuX2Nsb3Nlc3RUYWJHcm91cCA9PT0gdGhpcyB8fCAhdGFiLl9jbG9zZXN0VGFiR3JvdXA7XG4gICAgICAgICAgfSksXG4gICAgICApO1xuICAgICAgdGhpcy5fdGFicy5ub3RpZnlPbkNoYW5nZXMoKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX2NsYW1wVGFiSW5kZXgoaW5kZXg6IG51bWJlciB8IG51bGwpOiBudW1iZXIge1xuICAgIHJldHVybiBNYXRoLm1pbih0aGlzLl90YWJzLmxlbmd0aCAtIDEsIE1hdGgubWF4KGluZGV4IHx8IDAsIDApKTtcbiAgfVxuXG4gIHByaXZhdGUgX3N1YnNjcmliZVRvVGFiTGFiZWxzKCkge1xuICAgIGlmICh0aGlzLl90YWJMYWJlbFN1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5fdGFiTGFiZWxTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICB0aGlzLl90YWJMYWJlbFN1YnNjcmlwdGlvbiA9IG1lcmdlKFxuICAgICAgLi4udGhpcy5fdGFicy5maWx0ZXIoKHQpOiB0IGlzIElubGluZVRhYkNvbXBvbmVudCA9PiAhIXQpLm1hcCgodGFiKSA9PiB0YWIuX3N0YXRlQ2hhbmdlcyksXG4gICAgKS5zdWJzY3JpYmUoKCkgPT4gdGhpcy5fY2RyLm1hcmtGb3JDaGVjaygpKTtcbiAgfVxuXG4gIHByaXZhdGUgX2NyZWF0ZUNoYW5nZUV2ZW50KGluZGV4OiBudW1iZXIpOiBJbmxpbmVUYWJDaGFuZ2VFdmVudCB7XG4gICAgY29uc3QgZXZlbnQgPSBuZXcgSW5saW5lVGFiQ2hhbmdlRXZlbnQoKTtcbiAgICBldmVudC5pbmRleCA9IGluZGV4O1xuICAgIGlmICh0aGlzLl90YWJzICYmIHRoaXMuX3RhYnMubGVuZ3RoKSB7XG4gICAgICBjb25zdCB0YWIgPSB0aGlzLl90YWJzLnRvQXJyYXkoKVtpbmRleF07XG5cbiAgICAgIGlmICh0YWIpIHtcbiAgICAgICAgZXZlbnQudGFiID0gdGFiO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZXZlbnQ7XG4gIH1cbn1cbiIsIjxldC1pbmxpbmUtdGFiLWhlYWRlclxuICAjdGFiSGVhZGVyXG4gIFtzZWxlY3RlZEluZGV4XT1cInNlbGVjdGVkSW5kZXggfHwgMFwiXG4gIFtuZ0NsYXNzXT1cInRhYkhlYWRlckNsYXNzZXNcIlxuICBbaXRlbVNpemVdPVwiaXRlbVNpemVcIlxuICBbcmVuZGVyQnV0dG9uc109XCJyZW5kZXJCdXR0b25zXCJcbiAgW3Njcm9sbGFibGVDbGFzc109XCJzY3JvbGxhYmxlQ2xhc3NcIlxuICBbcmVuZGVyTWFza3NdPVwicmVuZGVyTWFza3NcIlxuICBbcmVuZGVyU2Nyb2xsYmFyc109XCJyZW5kZXJTY3JvbGxiYXJzXCJcbiAgKGluZGV4Rm9jdXNlZCk9XCJfZm9jdXNDaGFuZ2VkKCRldmVudClcIlxuICAoc2VsZWN0Rm9jdXNlZEluZGV4KT1cIl9oYW5kbGVFbnRlcigkZXZlbnQpXCJcbj5cbiAgQGZvciAodGFiIG9mIF90YWJzOyB0cmFjayB0cmFja0J5VGFiRm4oaSwgdGFiKTsgbGV0IGkgPSAkaW5kZXgpIHtcbiAgICA8IS0tIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvdGVtcGxhdGUvY2xpY2stZXZlbnRzLWhhdmUta2V5LWV2ZW50cyAtLT5cbiAgICA8ZGl2XG4gICAgICBbaWRdPVwiX2dldFRhYkxhYmVsSWQoaSlcIlxuICAgICAgW2F0dHIudGFiSW5kZXhdPVwiX2dldFRhYkluZGV4KHRhYiwgaSlcIlxuICAgICAgW2F0dHIuYXJpYS1wb3NpbnNldF09XCJpICsgMVwiXG4gICAgICBbYXR0ci5hcmlhLXNldHNpemVdPVwiX3RhYnMubGVuZ3RoXCJcbiAgICAgIFthdHRyLmFyaWEtY29udHJvbHNdPVwiX2dldFRhYkNvbnRlbnRJZChpKVwiXG4gICAgICBbYXR0ci5hcmlhLXNlbGVjdGVkXT1cInNlbGVjdGVkSW5kZXggPT09IGlcIlxuICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJ0YWIuYXJpYUxhYmVsIHx8IG51bGxcIlxuICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cIiF0YWIuYXJpYUxhYmVsICYmIHRhYi5hcmlhTGFiZWxsZWRieSA/IHRhYi5hcmlhTGFiZWxsZWRieSA6IG51bGxcIlxuICAgICAgW2Rpc2FibGVkXT1cInRhYi5kaXNhYmxlZFwiXG4gICAgICBbY2xhc3MuZXQtaW5saW5lLXRhYi1sYWJlbC0tYWN0aXZlXT1cInNlbGVjdGVkSW5kZXggPT09IGlcIlxuICAgICAgW2NsYXNzLmV0LWlubGluZS10YWItbGFiZWwtLWlzLXRleHRdPVwiISF0YWIudGV4dExhYmVsXCJcbiAgICAgIFtmaXRVbmRlcmxpbmVUb0NvbnRlbnRdPVwidGFiLmZpdFVuZGVybGluZVRvQ29udGVudFwiXG4gICAgICAoY2xpY2spPVwiX2hhbmRsZUNsaWNrKHRhYiwgdGFiSGVhZGVyLCBpKVwiXG4gICAgICAoY2RrRm9jdXNDaGFuZ2UpPVwiX3RhYkZvY3VzQ2hhbmdlZCgkZXZlbnQsIGkpXCJcbiAgICAgIHJvbGU9XCJ0YWJcIlxuICAgICAgZXRJbmxpbmVUYWJMYWJlbFdyYXBwZXJcbiAgICAgIGNka01vbml0b3JFbGVtZW50Rm9jdXNcbiAgICA+XG4gICAgICA8c3BhbiBjbGFzcz1cImV0LXRhYi1jb250ZW50XCI+XG4gICAgICAgIEBpZiAodGFiLnRlbXBsYXRlTGFiZWwpIHtcbiAgICAgICAgICA8bmctdGVtcGxhdGUgW2Nka1BvcnRhbE91dGxldF09XCJ0YWIudGVtcGxhdGVMYWJlbFwiIC8+XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgIHt7IHRhYi50ZXh0TGFiZWwgfX1cbiAgICAgICAgfVxuICAgICAgPC9zcGFuPlxuICAgIDwvZGl2PlxuICB9XG48L2V0LWlubGluZS10YWItaGVhZGVyPlxuXG48ZGl2ICN0YWJCb2R5V3JhcHBlciBjbGFzcz1cImV0LWlubGluZS10YWJzLWJvZHktd3JhcHBlclwiPlxuICBAZm9yICh0YWIgb2YgX3RhYnM7IHRyYWNrIHRyYWNrQnlUYWJGbihpLCB0YWIpOyBsZXQgaSA9ICRpbmRleCkge1xuICAgIDxldC1pbmxpbmUtdGFiLWJvZHlcbiAgICAgIFtpZF09XCJfZ2V0VGFiQ29udGVudElkKGkpXCJcbiAgICAgIFthdHRyLnRhYmluZGV4XT1cImNvbnRlbnRUYWJJbmRleCAhPT0gbnVsbCAmJiBzZWxlY3RlZEluZGV4ID09PSBpID8gY29udGVudFRhYkluZGV4IDogbnVsbFwiXG4gICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiX2dldFRhYkxhYmVsSWQoaSlcIlxuICAgICAgW2NsYXNzLmNkay12aXN1YWxseS1oaWRkZW5dPVwic2VsZWN0ZWRJbmRleCAhPT0gaVwiXG4gICAgICBbbmdDbGFzc109XCJ0YWIuYm9keUNsYXNzXCJcbiAgICAgIFtjbGFzcy5zci1vbmx5XT1cInNlbGVjdGVkSW5kZXggIT09IGlcIlxuICAgICAgW2NvbnRlbnRdPVwidGFiLmNvbnRlbnQhXCJcbiAgICAgIFtwb3NpdGlvbl09XCJ0YWIucG9zaXRpb24hXCJcbiAgICAgIFtvcmlnaW5dPVwidGFiLm9yaWdpblwiXG4gICAgICBbcHJlc2VydmVDb250ZW50XT1cInByZXNlcnZlQ29udGVudFwiXG4gICAgICByb2xlPVwidGFicGFuZWxcIlxuICAgICAgYW5pbWF0aW9uRHVyYXRpb249XCIwbXNcIlxuICAgIC8+XG4gIH1cbjwvZGl2PlxuIl19
|