@libs-ui/components-drag-drop 0.2.330-0 → 0.2.331-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/drag-item.directive.d.ts +2 -1
- package/esm2022/demo/demo.component.mjs +2 -2
- package/esm2022/drag-item-in-container-virtual-scroll.directive.mjs +13 -9
- package/esm2022/drag-item.directive.mjs +10 -2
- package/esm2022/interfaces/event.interface.mjs +1 -1
- package/fesm2022/libs-ui-components-drag-drop.mjs +22 -10
- package/fesm2022/libs-ui-components-drag-drop.mjs.map +1 -1
- package/interfaces/event.interface.d.ts +1 -0
- package/package.json +3 -3
package/drag-item.directive.d.ts
CHANGED
|
@@ -17,6 +17,7 @@ export declare class LibsUiDragItemDirective extends LibsUiDragItemInContainerVi
|
|
|
17
17
|
readonly elementContainer: import("@angular/core").InputSignal<HTMLElement | undefined>;
|
|
18
18
|
readonly zIndex: import("@angular/core").InputSignalWithTransform<number, number | undefined>;
|
|
19
19
|
readonly disable: import("@angular/core").InputSignal<boolean | undefined>;
|
|
20
|
+
readonly ignoreUserSelectNone: import("@angular/core").InputSignal<boolean | undefined>;
|
|
20
21
|
readonly outDragStart: import("@angular/core").OutputEmitterRef<IDragStart>;
|
|
21
22
|
readonly outDragOver: import("@angular/core").OutputEmitterRef<IDragOver>;
|
|
22
23
|
readonly outDragLeave: import("@angular/core").OutputEmitterRef<IDragLeave>;
|
|
@@ -26,5 +27,5 @@ export declare class LibsUiDragItemDirective extends LibsUiDragItemInContainerVi
|
|
|
26
27
|
constructor();
|
|
27
28
|
ngAfterViewInit(): void;
|
|
28
29
|
static ɵfac: i0.ɵɵFactoryDeclaration<LibsUiDragItemDirective, never>;
|
|
29
|
-
static ɵdir: i0.ɵɵDirectiveDeclaration<LibsUiDragItemDirective, "[LibsUiDragItemDirective]", never, { "fieldId": { "alias": "fieldId"; "required": false; "isSignal": true; }; "item": { "alias": "item"; "required": false; "isSignal": true; }; "itemInContainerVirtualScroll": { "alias": "itemInContainerVirtualScroll"; "required": false; "isSignal": true; }; "throttleTimeHandlerDraggingEvent": { "alias": "throttleTimeHandlerDraggingEvent"; "required": false; "isSignal": true; }; "ignoreStopEvent": { "alias": "ignoreStopEvent"; "required": false; "isSignal": true; }; "onlyMouseDownStopEvent": { "alias": "onlyMouseDownStopEvent"; "required": false; "isSignal": true; }; "dragRootElement": { "alias": "dragRootElement"; "required": false; "isSignal": true; }; "dragBoundary": { "alias": "dragBoundary"; "required": false; "isSignal": true; }; "dragBoundaryAcceptMouseLeaveContainer": { "alias": "dragBoundaryAcceptMouseLeaveContainer"; "required": false; "isSignal": true; }; "elementContainer": { "alias": "elementContainer"; "required": false; "isSignal": true; }; "zIndex": { "alias": "zIndex"; "required": false; "isSignal": true; }; "disable": { "alias": "disable"; "required": false; "isSignal": true; }; }, { "outDragStart": "outDragStart"; "outDragOver": "outDragOver"; "outDragLeave": "outDragLeave"; "outDragEnd": "outDragEnd"; "outDropped": "outDropped"; }, never, never, true, never>;
|
|
30
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<LibsUiDragItemDirective, "[LibsUiDragItemDirective]", never, { "fieldId": { "alias": "fieldId"; "required": false; "isSignal": true; }; "item": { "alias": "item"; "required": false; "isSignal": true; }; "itemInContainerVirtualScroll": { "alias": "itemInContainerVirtualScroll"; "required": false; "isSignal": true; }; "throttleTimeHandlerDraggingEvent": { "alias": "throttleTimeHandlerDraggingEvent"; "required": false; "isSignal": true; }; "ignoreStopEvent": { "alias": "ignoreStopEvent"; "required": false; "isSignal": true; }; "onlyMouseDownStopEvent": { "alias": "onlyMouseDownStopEvent"; "required": false; "isSignal": true; }; "dragRootElement": { "alias": "dragRootElement"; "required": false; "isSignal": true; }; "dragBoundary": { "alias": "dragBoundary"; "required": false; "isSignal": true; }; "dragBoundaryAcceptMouseLeaveContainer": { "alias": "dragBoundaryAcceptMouseLeaveContainer"; "required": false; "isSignal": true; }; "elementContainer": { "alias": "elementContainer"; "required": false; "isSignal": true; }; "zIndex": { "alias": "zIndex"; "required": false; "isSignal": true; }; "disable": { "alias": "disable"; "required": false; "isSignal": true; }; "ignoreUserSelectNone": { "alias": "ignoreUserSelectNone"; "required": false; "isSignal": true; }; }, { "outDragStart": "outDragStart"; "outDragOver": "outDragOver"; "outDragLeave": "outDragLeave"; "outDragEnd": "outDragEnd"; "outDropped": "outDropped"; }, never, never, true, never>;
|
|
30
31
|
}
|
|
@@ -588,7 +588,7 @@ export class LibsUiDragDropDemoComponent {
|
|
|
588
588
|
</section>
|
|
589
589
|
</main>
|
|
590
590
|
</div>
|
|
591
|
-
`, isInline: true, styles: [".page-container{max-width:1200px;margin:0 auto;padding:20px;font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif;line-height:1.6;color:#333}header{text-align:center;padding:40px 0;background-color:#fff;border-radius:8px;margin-bottom:30px;box-shadow:0 2px 5px #0000001a}header h1{font-size:2.5rem;color:#2c3e50;margin-bottom:10px}header p{font-size:1.2rem;color:#7f8c8d}section{background-color:#fff;border-radius:8px;padding:30px;margin-bottom:30px;box-shadow:0 2px 5px #0000001a}h2{font-size:1.8rem;color:#2c3e50;margin-bottom:20px;padding-bottom:10px;border-bottom:2px solid #ecf0f1}h3{font-size:1.4rem;color:#34495e;margin-bottom:15px}h4{font-size:1.2rem;color:#34495e;margin-bottom:10px}p{margin-bottom:15px}code{font-family:Courier New,Courier,monospace;background-color:#f7f7f7;padding:2px 5px;border-radius:3px;font-size:.9em}pre{background-color:#f7f7f7;padding:15px;border-radius:5px;overflow-x:auto;margin-bottom:20px;display:flex;align-items:center;justify-content:space-between}pre code{background-color:transparent;padding:0}.installation-section .install-command{position:relative;margin-bottom:20px}.installation-section .copy-button{position:absolute;top:10px;right:10px;background:#3498db;color:#fff;border:none;border-radius:4px;padding:5px 10px;font-size:.9rem;cursor:pointer;transition:background .2s}.installation-section .copy-button:hover{background:#2980b9}.demo-container{display:grid;grid-template-columns:1fr;gap:30px}.demo-example{background:#f7f7f7;padding:20px;border-radius:8px;margin-bottom:20px}.list-container{max-width:400px;margin:20px auto}.list-item{padding:12px;margin:8px 0;background:#fff;border:1px solid #e0e0e0;border-radius:6px;display:flex;align-items:center;transition:transform .2s,box-shadow .2s}.list-item:hover{transform:translateY(-2px);box-shadow:0 4px 8px #0000001a}.item-icon{margin-right:12px;font-size:1.2em}.kanban-board{display:flex;gap:20px;padding:20px;overflow-x:auto}.kanban-column{flex:1;min-width:300px;background:#f5f5f5;padding:15px;border-radius:8px}.kanban-item{background:#fff;padding:12px;margin:8px 0;border-radius:6px;box-shadow:0 1px 3px #0000001a}.kanban-item-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.item-title{font-weight:500}.item-status{padding:4px 8px;border-radius:4px;font-size:.8em}.status-todo{background:#ffebee;color:#c62828}.status-in-progress{background:#fff3e0;color:#ef6c00}.status-done{background:#e8f5e9;color:#2e7d32}.item-description{font-size:.9em;color:#666}.nested-container{max-width:800px;margin:0 auto}.nested-item{background:#fff;border:1px solid #e0e0e0;border-radius:8px;margin:12px 0;overflow:hidden}.nested-item-header{padding:12px;background:#f5f5f5;border-bottom:1px solid #e0e0e0}.nested-item-content{padding:12px}.sub-item{padding:8px;margin:4px 0;background:#f9f9f9;border:1px solid #e0e0e0;border-radius:4px}.api-doc-section{margin-bottom:40px}.table-container{overflow-x:auto;margin-bottom:30px}.api-table{width:100%;border-collapse:collapse;margin-bottom:20px}.api-table th,.api-table td{padding:12px 15px;text-align:left;border-bottom:1px solid #e1e1e1}.api-table th{background-color:#f5f5f5;font-weight:700}.api-table tbody tr:hover{background-color:#f9f9f9}.features-section ul{list-style:none}.features-section li{display:flex;margin-bottom:25px;align-items:flex-start}.feature-icon{font-size:2rem;margin-right:20px;min-width:40px;text-align:center}.feature-info{flex:1}.code-examples{display:grid;grid-template-columns:1fr;gap:20px}@media (min-width: 768px){.code-examples{grid-template-columns:repeat(2,1fr)}}@media (min-width: 992px){.code-examples{grid-template-columns:repeat(3,1fr)}}.code-example{border:1px solid #ecf0f1;border-radius:5px;padding:15px}@media (max-width: 768px){header{padding:30px 0}header h1{font-size:2rem}section{padding:20px}.kanban-board{flex-direction:column}.kanban-column{min-width:100%}.feature-icon{font-size:1.5rem;margin-right:15px}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: LibsUiComponentsDragContainerDirective, selector: "[LibsUiComponentsDragContainerDirective]", inputs: ["disableDragContainer", "mode", "directionDrag", "viewEncapsulation", "acceptDragSameGroup", "placeholder", "groupName", "dropToGroupName", "items", "stylesOverride"], outputs: ["itemsChange", "outDragStartContainer", "outDragOverContainer", "outDragLeaveContainer", "outDragEndContainer", "outDroppedContainer", "outDroppedContainerEmpty", "outFunctionControl"] }, { kind: "directive", type: LibsUiDragItemDirective, selector: "[LibsUiDragItemDirective]", inputs: ["fieldId", "item", "itemInContainerVirtualScroll", "throttleTimeHandlerDraggingEvent", "ignoreStopEvent", "onlyMouseDownStopEvent", "dragRootElement", "dragBoundary", "dragBoundaryAcceptMouseLeaveContainer", "elementContainer", "zIndex", "disable"], outputs: ["outDragStart", "outDragOver", "outDragLeave", "outDragEnd", "outDropped"] }, { kind: "component", type: LibsUiComponentsButtonsButtonComponent, selector: "libs_ui-components-buttons-button", inputs: ["flagMouse", "type", "buttonCustom", "sizeButton", "label", "disable", "isPending", "imageLeft", "classInclude", "classIconLeft", "classIconRight", "classLabel", "iconOnlyType", "popover", "ignoreStopPropagationEvent", "zIndex", "widthLabelPopover", "styleIconLeft", "styleButton", "ignoreFocusWhenInputTab", "ignoreSetClickWhenShowPopover", "ignorePointerEvent", "isActive", "isHandlerEnterDocumentClickButton"], outputs: ["outClick", "outPopoverEvent", "outFunctionsControl"] }] });
|
|
591
|
+
`, isInline: true, styles: [".page-container{max-width:1200px;margin:0 auto;padding:20px;font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif;line-height:1.6;color:#333}header{text-align:center;padding:40px 0;background-color:#fff;border-radius:8px;margin-bottom:30px;box-shadow:0 2px 5px #0000001a}header h1{font-size:2.5rem;color:#2c3e50;margin-bottom:10px}header p{font-size:1.2rem;color:#7f8c8d}section{background-color:#fff;border-radius:8px;padding:30px;margin-bottom:30px;box-shadow:0 2px 5px #0000001a}h2{font-size:1.8rem;color:#2c3e50;margin-bottom:20px;padding-bottom:10px;border-bottom:2px solid #ecf0f1}h3{font-size:1.4rem;color:#34495e;margin-bottom:15px}h4{font-size:1.2rem;color:#34495e;margin-bottom:10px}p{margin-bottom:15px}code{font-family:Courier New,Courier,monospace;background-color:#f7f7f7;padding:2px 5px;border-radius:3px;font-size:.9em}pre{background-color:#f7f7f7;padding:15px;border-radius:5px;overflow-x:auto;margin-bottom:20px;display:flex;align-items:center;justify-content:space-between}pre code{background-color:transparent;padding:0}.installation-section .install-command{position:relative;margin-bottom:20px}.installation-section .copy-button{position:absolute;top:10px;right:10px;background:#3498db;color:#fff;border:none;border-radius:4px;padding:5px 10px;font-size:.9rem;cursor:pointer;transition:background .2s}.installation-section .copy-button:hover{background:#2980b9}.demo-container{display:grid;grid-template-columns:1fr;gap:30px}.demo-example{background:#f7f7f7;padding:20px;border-radius:8px;margin-bottom:20px}.list-container{max-width:400px;margin:20px auto}.list-item{padding:12px;margin:8px 0;background:#fff;border:1px solid #e0e0e0;border-radius:6px;display:flex;align-items:center;transition:transform .2s,box-shadow .2s}.list-item:hover{transform:translateY(-2px);box-shadow:0 4px 8px #0000001a}.item-icon{margin-right:12px;font-size:1.2em}.kanban-board{display:flex;gap:20px;padding:20px;overflow-x:auto}.kanban-column{flex:1;min-width:300px;background:#f5f5f5;padding:15px;border-radius:8px}.kanban-item{background:#fff;padding:12px;margin:8px 0;border-radius:6px;box-shadow:0 1px 3px #0000001a}.kanban-item-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.item-title{font-weight:500}.item-status{padding:4px 8px;border-radius:4px;font-size:.8em}.status-todo{background:#ffebee;color:#c62828}.status-in-progress{background:#fff3e0;color:#ef6c00}.status-done{background:#e8f5e9;color:#2e7d32}.item-description{font-size:.9em;color:#666}.nested-container{max-width:800px;margin:0 auto}.nested-item{background:#fff;border:1px solid #e0e0e0;border-radius:8px;margin:12px 0;overflow:hidden}.nested-item-header{padding:12px;background:#f5f5f5;border-bottom:1px solid #e0e0e0}.nested-item-content{padding:12px}.sub-item{padding:8px;margin:4px 0;background:#f9f9f9;border:1px solid #e0e0e0;border-radius:4px}.api-doc-section{margin-bottom:40px}.table-container{overflow-x:auto;margin-bottom:30px}.api-table{width:100%;border-collapse:collapse;margin-bottom:20px}.api-table th,.api-table td{padding:12px 15px;text-align:left;border-bottom:1px solid #e1e1e1}.api-table th{background-color:#f5f5f5;font-weight:700}.api-table tbody tr:hover{background-color:#f9f9f9}.features-section ul{list-style:none}.features-section li{display:flex;margin-bottom:25px;align-items:flex-start}.feature-icon{font-size:2rem;margin-right:20px;min-width:40px;text-align:center}.feature-info{flex:1}.code-examples{display:grid;grid-template-columns:1fr;gap:20px}@media (min-width: 768px){.code-examples{grid-template-columns:repeat(2,1fr)}}@media (min-width: 992px){.code-examples{grid-template-columns:repeat(3,1fr)}}.code-example{border:1px solid #ecf0f1;border-radius:5px;padding:15px}@media (max-width: 768px){header{padding:30px 0}header h1{font-size:2rem}section{padding:20px}.kanban-board{flex-direction:column}.kanban-column{min-width:100%}.feature-icon{font-size:1.5rem;margin-right:15px}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: LibsUiComponentsDragContainerDirective, selector: "[LibsUiComponentsDragContainerDirective]", inputs: ["disableDragContainer", "mode", "directionDrag", "viewEncapsulation", "acceptDragSameGroup", "placeholder", "groupName", "dropToGroupName", "items", "stylesOverride"], outputs: ["itemsChange", "outDragStartContainer", "outDragOverContainer", "outDragLeaveContainer", "outDragEndContainer", "outDroppedContainer", "outDroppedContainerEmpty", "outFunctionControl"] }, { kind: "directive", type: LibsUiDragItemDirective, selector: "[LibsUiDragItemDirective]", inputs: ["fieldId", "item", "itemInContainerVirtualScroll", "throttleTimeHandlerDraggingEvent", "ignoreStopEvent", "onlyMouseDownStopEvent", "dragRootElement", "dragBoundary", "dragBoundaryAcceptMouseLeaveContainer", "elementContainer", "zIndex", "disable", "ignoreUserSelectNone"], outputs: ["outDragStart", "outDragOver", "outDragLeave", "outDragEnd", "outDropped"] }, { kind: "component", type: LibsUiComponentsButtonsButtonComponent, selector: "libs_ui-components-buttons-button", inputs: ["flagMouse", "type", "buttonCustom", "sizeButton", "label", "disable", "isPending", "imageLeft", "classInclude", "classIconLeft", "classIconRight", "classLabel", "iconOnlyType", "popover", "ignoreStopPropagationEvent", "zIndex", "widthLabelPopover", "styleIconLeft", "styleButton", "ignoreFocusWhenInputTab", "ignoreSetClickWhenShowPopover", "ignorePointerEvent", "isActive", "isHandlerEnterDocumentClickButton"], outputs: ["outClick", "outPopoverEvent", "outFunctionsControl"] }] });
|
|
592
592
|
}
|
|
593
593
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LibsUiDragDropDemoComponent, decorators: [{
|
|
594
594
|
type: Component,
|
|
@@ -830,4 +830,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
830
830
|
</div>
|
|
831
831
|
`, styles: [".page-container{max-width:1200px;margin:0 auto;padding:20px;font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif;line-height:1.6;color:#333}header{text-align:center;padding:40px 0;background-color:#fff;border-radius:8px;margin-bottom:30px;box-shadow:0 2px 5px #0000001a}header h1{font-size:2.5rem;color:#2c3e50;margin-bottom:10px}header p{font-size:1.2rem;color:#7f8c8d}section{background-color:#fff;border-radius:8px;padding:30px;margin-bottom:30px;box-shadow:0 2px 5px #0000001a}h2{font-size:1.8rem;color:#2c3e50;margin-bottom:20px;padding-bottom:10px;border-bottom:2px solid #ecf0f1}h3{font-size:1.4rem;color:#34495e;margin-bottom:15px}h4{font-size:1.2rem;color:#34495e;margin-bottom:10px}p{margin-bottom:15px}code{font-family:Courier New,Courier,monospace;background-color:#f7f7f7;padding:2px 5px;border-radius:3px;font-size:.9em}pre{background-color:#f7f7f7;padding:15px;border-radius:5px;overflow-x:auto;margin-bottom:20px;display:flex;align-items:center;justify-content:space-between}pre code{background-color:transparent;padding:0}.installation-section .install-command{position:relative;margin-bottom:20px}.installation-section .copy-button{position:absolute;top:10px;right:10px;background:#3498db;color:#fff;border:none;border-radius:4px;padding:5px 10px;font-size:.9rem;cursor:pointer;transition:background .2s}.installation-section .copy-button:hover{background:#2980b9}.demo-container{display:grid;grid-template-columns:1fr;gap:30px}.demo-example{background:#f7f7f7;padding:20px;border-radius:8px;margin-bottom:20px}.list-container{max-width:400px;margin:20px auto}.list-item{padding:12px;margin:8px 0;background:#fff;border:1px solid #e0e0e0;border-radius:6px;display:flex;align-items:center;transition:transform .2s,box-shadow .2s}.list-item:hover{transform:translateY(-2px);box-shadow:0 4px 8px #0000001a}.item-icon{margin-right:12px;font-size:1.2em}.kanban-board{display:flex;gap:20px;padding:20px;overflow-x:auto}.kanban-column{flex:1;min-width:300px;background:#f5f5f5;padding:15px;border-radius:8px}.kanban-item{background:#fff;padding:12px;margin:8px 0;border-radius:6px;box-shadow:0 1px 3px #0000001a}.kanban-item-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.item-title{font-weight:500}.item-status{padding:4px 8px;border-radius:4px;font-size:.8em}.status-todo{background:#ffebee;color:#c62828}.status-in-progress{background:#fff3e0;color:#ef6c00}.status-done{background:#e8f5e9;color:#2e7d32}.item-description{font-size:.9em;color:#666}.nested-container{max-width:800px;margin:0 auto}.nested-item{background:#fff;border:1px solid #e0e0e0;border-radius:8px;margin:12px 0;overflow:hidden}.nested-item-header{padding:12px;background:#f5f5f5;border-bottom:1px solid #e0e0e0}.nested-item-content{padding:12px}.sub-item{padding:8px;margin:4px 0;background:#f9f9f9;border:1px solid #e0e0e0;border-radius:4px}.api-doc-section{margin-bottom:40px}.table-container{overflow-x:auto;margin-bottom:30px}.api-table{width:100%;border-collapse:collapse;margin-bottom:20px}.api-table th,.api-table td{padding:12px 15px;text-align:left;border-bottom:1px solid #e1e1e1}.api-table th{background-color:#f5f5f5;font-weight:700}.api-table tbody tr:hover{background-color:#f9f9f9}.features-section ul{list-style:none}.features-section li{display:flex;margin-bottom:25px;align-items:flex-start}.feature-icon{font-size:2rem;margin-right:20px;min-width:40px;text-align:center}.feature-info{flex:1}.code-examples{display:grid;grid-template-columns:1fr;gap:20px}@media (min-width: 768px){.code-examples{grid-template-columns:repeat(2,1fr)}}@media (min-width: 992px){.code-examples{grid-template-columns:repeat(3,1fr)}}.code-example{border:1px solid #ecf0f1;border-radius:5px;padding:15px}@media (max-width: 768px){header{padding:30px 0}header h1{font-size:2rem}section{padding:20px}.kanban-board{flex-direction:column}.kanban-column{min-width:100%}.feature-icon{font-size:1.5rem;margin-right:15px}}\n"] }]
|
|
832
832
|
}] });
|
|
833
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVtby5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvZHJhZy1kcm9wL3NyYy9kZW1vL2RlbW8uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxzQ0FBc0MsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzVGLE9BQU8sRUFBRSxzQ0FBc0MsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2hGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDOztBQW9tQmpFLE1BQU0sT0FBTywyQkFBMkI7SUFDdEMsbUJBQW1CO0lBQ25CLFVBQVUsR0FBRyxDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUVoRSx1QkFBdUI7SUFDdkIsVUFBVSxHQUFHLENBQUMsTUFBTSxFQUFFLGFBQWEsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUM3QyxPQUFPLEdBQWE7UUFDbEI7WUFDRSxFQUFFLEVBQUUsTUFBTTtZQUNWLEtBQUssRUFBRSxPQUFPO1lBQ2QsS0FBSyxFQUFFO2dCQUNMO29CQUNFLEVBQUUsRUFBRSxDQUFDO29CQUNMLEtBQUssRUFBRSx5QkFBeUI7b0JBQ2hDLFdBQVcsRUFBRSxrREFBa0Q7b0JBQy9ELE1BQU0sRUFBRSxNQUFNO2lCQUNmO2dCQUNEO29CQUNFLEVBQUUsRUFBRSxDQUFDO29CQUNMLEtBQUssRUFBRSxnQkFBZ0I7b0JBQ3ZCLFdBQVcsRUFBRSwrQ0FBK0M7b0JBQzVELE1BQU0sRUFBRSxNQUFNO2lCQUNmO2FBQ0Y7U0FDRjtRQUNEO1lBQ0UsRUFBRSxFQUFFLGFBQWE7WUFDakIsS0FBSyxFQUFF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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E0T1QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBMaWJzVWlDb21wb25lbnRzQnV0dG9uc0J1dHRvbkNvbXBvbmVudCB9IGZyb20gJ0BsaWJzLXVpL2NvbXBvbmVudHMtYnV0dG9ucy1idXR0b24nO1xuaW1wb3J0IHsgTGlic1VpQ29tcG9uZW50c0RyYWdDb250YWluZXJEaXJlY3RpdmUgfSBmcm9tICcuLi9kcmFnLWRyb3AuZGlyZWN0aXZlJztcbmltcG9ydCB7IExpYnNVaURyYWdJdGVtRGlyZWN0aXZlIH0gZnJvbSAnLi4vZHJhZy1pdGVtLmRpcmVjdGl2ZSc7XG5cbmludGVyZmFjZSBUYXNrIHtcbiAgaWQ6IG51bWJlcjtcbiAgdGl0bGU6IHN0cmluZztcbiAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgc3RhdHVzOiAndG9kbycgfCAnaW4tcHJvZ3Jlc3MnIHwgJ2RvbmUnO1xufVxuXG5pbnRlcmZhY2UgQ29sdW1uIHtcbiAgaWQ6IHN0cmluZztcbiAgdGl0bGU6IHN0cmluZztcbiAgaXRlbXM6IFRhc2tbXTtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbGliLWRyYWctZHJvcC1kZW1vJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgTGlic1VpQ29tcG9uZW50c0RyYWdDb250YWluZXJEaXJlY3RpdmUsIExpYnNVaURyYWdJdGVtRGlyZWN0aXZlLCBMaWJzVWlDb21wb25lbnRzQnV0dG9uc0J1dHRvbkNvbXBvbmVudF0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBjbGFzcz1cInBhZ2UtY29udGFpbmVyXCI+XG4gICAgICA8aGVhZGVyPlxuICAgICAgICA8aDE+RGVtbyBEcmFnIGFuZCBEcm9wIENvbXBvbmVudDwvaDE+XG4gICAgICAgIDxwPkFuZ3VsYXIgY29tcG9uZW50IGxpYnJhcnkgZm9yIGRyYWcgYW5kIGRyb3AgZnVuY3Rpb25hbGl0eTwvcD5cbiAgICAgIDwvaGVhZGVyPlxuXG4gICAgICA8bWFpbj5cbiAgICAgICAgPHNlY3Rpb24gY2xhc3M9XCJpbnRyby1zZWN0aW9uXCI+XG4gICAgICAgICAgPGgyPkludHJvZHVjdGlvbjwvaDI+XG4gICAgICAgICAgPHA+XG4gICAgICAgICAgICA8Y29kZT4mIzY0O2xpYnMtdWkvY29tcG9uZW50cy1kcmFnLWRyb3A8L2NvZGU+XG4gICAgICAgICAgICBpcyBhIHBvd2VyZnVsIEFuZ3VsYXIgY29tcG9uZW50IHRoYXQgZW5hYmxlcyBkcmFnIGFuZCBkcm9wIGZ1bmN0aW9uYWxpdHkgd2l0aCBmZWF0dXJlcyBsaWtlIHZpcnR1YWwgc2Nyb2xsaW5nLCBtdWx0aS1zZWxlY3Rpb24sIGFuZCBjdXN0b20gYm91bmRhcmllcy5cbiAgICAgICAgICA8L3A+XG4gICAgICAgIDwvc2VjdGlvbj5cblxuICAgICAgICA8c2VjdGlvbiBjbGFzcz1cImluc3RhbGxhdGlvbi1zZWN0aW9uXCI+XG4gICAgICAgICAgPGgyPkluc3RhbGxhdGlvbjwvaDI+XG4gICAgICAgICAgPHA+VG8gaW5zdGFsbCB0aGUgbGlicmFyeSwgdXNlIG5wbSBvciB5YXJuOjwvcD5cblxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnN0YWxsLWNvbW1hbmRcIj5cbiAgICAgICAgICAgIDxwcmU+XG4gICAgICAgICAgICAgIDxjb2RlPm5wbSBpbnN0YWxsICYjNjQ7bGlicy11aS9jb21wb25lbnRzLWRyYWctZHJvcDwvY29kZT5cbiAgICAgICAgICAgICAgPGxpYnNfdWktY29tcG9uZW50cy1idXR0b25zLWJ1dHRvblxuICAgICAgICAgICAgICAgIFtsYWJlbF09XCInQ29weSdcIlxuICAgICAgICAgICAgICAgIChvdXRDbGljayk9XCJjb3B5VG9DbGlwYm9hcmQoJ25wbSBpbnN0YWxsIEBsaWJzLXVpL2NvbXBvbmVudHMtZHJhZy1kcm9wJylcIiAvPlxuICAgICAgICAgICAgPC9wcmU+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8cD5PciB3aXRoIHlhcm46PC9wPlxuXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImluc3RhbGwtY29tbWFuZFwiPlxuICAgICAgICAgICAgPHByZT5cbiAgICAgICAgICAgICAgPGNvZGU+eWFybiBhZGQgJiM2NDtsaWJzLXVpL2NvbXBvbmVudHMtZHJhZy1kcm9wPC9jb2RlPlxuICAgICAgICAgICAgICA8bGlic191aS1jb21wb25lbnRzLWJ1dHRvbnMtYnV0dG9uXG4gICAgICAgICAgICAgICAgW2xhYmVsXT1cIidDb3B5J1wiXG4gICAgICAgICAgICAgICAgKG91dENsaWNrKT1cImNvcHlUb0NsaXBib2FyZCgneWFybiBhZGQgQGxpYnMtdWkvY29tcG9uZW50cy1kcmFnLWRyb3AnKVwiIC8+XG4gICAgICAgICAgICA8L3ByZT5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9zZWN0aW9uPlxuXG4gICAgICAgIDxzZWN0aW9uIGNsYXNzPVwiZGVtby1zZWN0aW9uXCI+XG4gICAgICAgICAgPGgyPkxpdmUgRGVtbzwvaDI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImRlbW8tY29udGFpbmVyXCI+XG4gICAgICAgICAgICA8IS0tIEJhc2ljIExpc3QgRGVtbyAtLT5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkZW1vLWV4YW1wbGVcIj5cbiAgICAgICAgICAgICAgPGgzPkJhc2ljIExpc3Q8L2gzPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGlzdC1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICBMaWJzVWlDb21wb25lbnRzRHJhZ0NvbnRhaW5lckRpcmVjdGl2ZVxuICAgICAgICAgICAgICAgICAgWyhpdGVtcyldPVwiYmFzaWNJdGVtc1wiXG4gICAgICAgICAgICAgICAgICBbYWNjZXB0RHJhZ1NhbWVHcm91cF09XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgICBAZm9yIChpdGVtIG9mIGJhc2ljSXRlbXM7IHRyYWNrIGl0ZW0pIHtcbiAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibGlzdC1pdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICBMaWJzVWlEcmFnSXRlbURpcmVjdGl2ZT5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIml0ZW0taWNvblwiPvCfk4s8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpdGVtLXRleHRcIj57eyBpdGVtIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPCEtLSBLYW5iYW4gQm9hcmQgRGVtbyAtLT5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkZW1vLWV4YW1wbGVcIj5cbiAgICAgICAgICAgICAgPGgzPkthbmJhbiBCb2FyZDwvaDM+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJrYW5iYW4tYm9hcmRcIj5cbiAgICAgICAgICAgICAgICBAZm9yIChjb2x1bW4gb2YgY29sdW1uczsgdHJhY2sgY29sdW1uKSB7XG4gICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwia2FuYmFuLWNvbHVtblwiXG4gICAgICAgICAgICAgICAgICAgIExpYnNVaUNvbXBvbmVudHNEcmFnQ29udGFpbmVyRGlyZWN0aXZlXG4gICAgICAgICAgICAgICAgICAgIFsoaXRlbXMpXT1cImNvbHVtbi5pdGVtc1wiXG4gICAgICAgICAgICAgICAgICAgIFtncm91cE5hbWVdPVwiY29sdW1uLmlkXCJcbiAgICAgICAgICAgICAgICAgICAgW2Ryb3BUb0dyb3VwTmFtZV09XCJjb2x1bW5zSWRzXCJcbiAgICAgICAgICAgICAgICAgICAgW2FjY2VwdERyYWdTYW1lR3JvdXBdPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgICAgICA8aDQ+e3sgY29sdW1uLnRpdGxlIH19PC9oND5cbiAgICAgICAgICAgICAgICAgICAgQGZvciAoaXRlbSBvZiBjb2x1bW4uaXRlbXM7IHRyYWNrIGl0ZW0pIHtcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImthbmJhbi1pdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIExpYnNVaURyYWdJdGVtRGlyZWN0aXZlPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImthbmJhbi1pdGVtLWhlYWRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIml0ZW0tdGl0bGVcIj57eyBpdGVtLnRpdGxlIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaXRlbS1zdGF0dXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCInc3RhdHVzLScgKyBpdGVtLnN0YXR1c1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGl0ZW0uc3RhdHVzIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJpdGVtLWRlc2NyaXB0aW9uXCI+e3sgaXRlbS5kZXNjcmlwdGlvbiB9fTwvcD5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8IS0tIE5lc3RlZCBDb250YWluZXJzIERlbW8gLS0+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGVtby1leGFtcGxlXCI+XG4gICAgICAgICAgICAgIDxoMz5OZXN0ZWQgQ29udGFpbmVycyBjb3B5PC9oMz5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5lc3RlZC1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICBMaWJzVWlDb21wb25lbnRzRHJhZ0NvbnRhaW5lckRpcmVjdGl2ZVxuICAgICAgICAgICAgICAgICAgWyhpdGVtcyldPVwibmVzdGVkSXRlbXNcIlxuICAgICAgICAgICAgICAgICAgW2dyb3VwTmFtZV09XCIncGFyZW50J1wiXG4gICAgICAgICAgICAgICAgICBbbW9kZV09XCInY29weSdcIlxuICAgICAgICAgICAgICAgICAgW2FjY2VwdERyYWdTYW1lR3JvdXBdPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgICAgQGZvciAoaXRlbSBvZiBuZXN0ZWRJdGVtczsgdHJhY2sgaXRlbSkge1xuICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJuZXN0ZWQtaXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgTGlic1VpRHJhZ0l0ZW1EaXJlY3RpdmU+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5lc3RlZC1pdGVtLWhlYWRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpdGVtLXRpdGxlXCI+e3sgaXRlbS50aXRsZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibmVzdGVkLWl0ZW0tY29udGVudFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICBMaWJzVWlDb21wb25lbnRzRHJhZ0NvbnRhaW5lckRpcmVjdGl2ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICBbKGl0ZW1zKV09XCJpdGVtLnN1Ykl0ZW1zXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2dyb3VwTmFtZV09XCInY2hpbGQnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2FjY2VwdERyYWdTYW1lR3JvdXBdPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBAZm9yIChzdWJJdGVtIG9mIGl0ZW0uc3ViSXRlbXM7IHRyYWNrIHN1Ykl0ZW0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInN1Yi1pdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpYnNVaURyYWdJdGVtRGlyZWN0aXZlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgc3ViSXRlbSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvc2VjdGlvbj5cblxuICAgICAgICA8c2VjdGlvbiBjbGFzcz1cImFwaS1kb2Mtc2VjdGlvblwiPlxuICAgICAgICAgIDxoMj5BUEkgRG9jdW1lbnRhdGlvbjwvaDI+XG5cbiAgICAgICAgICA8aDM+SW5wdXRzPC9oMz5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtY29udGFpbmVyXCI+XG4gICAgICAgICAgICA8dGFibGUgY2xhc3M9XCJhcGktdGFibGVcIj5cbiAgICAgICAgICAgICAgPHRoZWFkPlxuICAgICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICAgIDx0aD5OYW1lPC90aD5cbiAgICAgICAgICAgICAgICAgIDx0aD5UeXBlPC90aD5cbiAgICAgICAgICAgICAgICAgIDx0aD5EZWZhdWx0PC90aD5cbiAgICAgICAgICAgICAgICAgIDx0aD5EZXNjcmlwdGlvbjwvdGg+XG4gICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgPC90aGVhZD5cbiAgICAgICAgICAgICAgPHRib2R5PlxuICAgICAgICAgICAgICAgIEBmb3IgKGlucHV0IG9mIGlucHV0c0RvYzsgdHJhY2sgaW5wdXQubmFtZSkge1xuICAgICAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICAgICAgICAgICAgPGNvZGU+e3sgaW5wdXQubmFtZSB9fTwvY29kZT5cbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgPHRkPlxuICAgICAgICAgICAgICAgICAgICAgIDxjb2RlPnt7IGlucHV0LnR5cGUgfX08L2NvZGU+XG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIDx0ZD57eyBpbnB1dC5kZWZhdWx0IH19PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgPHRkPnt7IGlucHV0LmRlc2NyaXB0aW9uIH19PC90ZD5cbiAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8L3Rib2R5PlxuICAgICAgICAgICAgPC90YWJsZT5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxoMz5PdXRwdXRzPC9oMz5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtY29udGFpbmVyXCI+XG4gICAgICAgICAgICA8dGFibGUgY2xhc3M9XCJhcGktdGFibGVcIj5cbiAgICAgICAgICAgICAgPHRoZWFkPlxuICAgICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICAgIDx0aD5OYW1lPC90aD5cbiAgICAgICAgICAgICAgICAgIDx0aD5UeXBlPC90aD5cbiAgICAgICAgICAgICAgICAgIDx0aD5EZXNjcmlwdGlvbjwvdGg+XG4gICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgPC90aGVhZD5cbiAgICAgICAgICAgICAgPHRib2R5PlxuICAgICAgICAgICAgICAgIEBmb3IgKG91dHB1dCBvZiBvdXRwdXRzRG9jOyB0cmFjayBvdXRwdXQubmFtZSkge1xuICAgICAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICAgICAgICAgICAgPGNvZGU+e3sgb3V0cHV0Lm5hbWUgfX08L2NvZGU+XG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgICAgICAgICAgICA8Y29kZT57eyBvdXRwdXQudHlwZSB9fTwvY29kZT5cbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgPHRkPnt7IG91dHB1dC5kZXNjcmlwdGlvbiB9fTwvdGQ+XG4gICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPC90Ym9keT5cbiAgICAgICAgICAgIDwvdGFibGU+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvc2VjdGlvbj5cblxuICAgICAgICA8c2VjdGlvbiBjbGFzcz1cImludGVyZmFjZXMtc2VjdGlvblwiPlxuICAgICAgICAgIDxoMj5JbnRlcmZhY2VzPC9oMj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW50ZXJmYWNlLWRvY3NcIj5cbiAgICAgICAgICAgIEBmb3IgKGludGVyZmFjZUl0ZW0gb2YgaW50ZXJmYWNlc0RvYzsgdHJhY2sgaW50ZXJmYWNlSXRlbS5uYW1lKSB7XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnRlcmZhY2UtaXRlbVwiPlxuICAgICAgICAgICAgICAgIDxoMz57eyBpbnRlcmZhY2VJdGVtLm5hbWUgfX08L2gzPlxuICAgICAgICAgICAgICAgIDxwcmU+PGNvZGU+e3tpbnRlcmZhY2VJdGVtLmNvZGV9fTwvY29kZT48L3ByZT5cbiAgICAgICAgICAgICAgICA8cD57eyBpbnRlcmZhY2VJdGVtLmRlc2NyaXB0aW9uIH19PC9wPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9zZWN0aW9uPlxuXG4gICAgICAgIDxzZWN0aW9uIGNsYXNzPVwiZmVhdHVyZXMtc2VjdGlvblwiPlxuICAgICAgICAgIDxoMj5GZWF0dXJlczwvaDI+XG4gICAgICAgICAgPHVsPlxuICAgICAgICAgICAgQGZvciAoZmVhdHVyZSBvZiBmZWF0dXJlczsgdHJhY2sgZmVhdHVyZS5pZCkge1xuICAgICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmZWF0dXJlLWljb25cIj57eyBmZWF0dXJlLmljb24gfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZlYXR1cmUtaW5mb1wiPlxuICAgICAgICAgICAgICAgICAgPGgzPnt7IGZlYXR1cmUudGl0bGUgfX08L2gzPlxuICAgICAgICAgICAgICAgICAgPHA+e3sgZmVhdHVyZS5kZXNjcmlwdGlvbiB9fTwvcD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L3VsPlxuICAgICAgICA8L3NlY3Rpb24+XG5cbiAgICAgICAgPHNlY3Rpb24gY2xhc3M9XCJ1c2FnZS1zZWN0aW9uXCI+XG4gICAgICAgICAgPGgyPlVzYWdlPC9oMj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29kZS1leGFtcGxlc1wiPlxuICAgICAgICAgICAgQGZvciAoZXhhbXBsZSBvZiBjb2RlRXhhbXBsZXM7IHRyYWNrIGV4YW1wbGUuaWQpIHtcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvZGUtZXhhbXBsZVwiPlxuICAgICAgICAgICAgICAgIDxoMz57eyBleGFtcGxlLnRpdGxlIH19PC9oMz5cbiAgICAgICAgICAgICAgICA8cHJlPjxjb2RlIFtpbm5lckhUTUxdPVwiZXhhbXBsZS5jb2RlXCI+PC9jb2RlPjwvcHJlPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9zZWN0aW9uPlxuICAgICAgPC9tYWluPlxuICAgIDwvZGl2PlxuICBgLFxuICBzdHlsZXM6IFtcbiAgICBgXG4gICAgICAucGFnZS1jb250YWluZXIge1xuICAgICAgICBtYXgtd2lkdGg6IDEyMDBweDtcbiAgICAgICAgbWFyZ2luOiAwIGF1dG87XG4gICAgICAgIHBhZGRpbmc6IDIwcHg7XG4gICAgICAgIGZvbnQtZmFtaWx5OiAnU2Vnb2UgVUknLCBUYWhvbWEsIEdlbmV2YSwgVmVyZGFuYSwgc2Fucy1zZXJpZjtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuNjtcbiAgICAgICAgY29sb3I6ICMzMzM7XG4gICAgICB9XG5cbiAgICAgIGhlYWRlciB7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgcGFkZGluZzogNDBweCAwO1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDMwcHg7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMnB4IDVweCByZ2JhKDAsIDAsIDAsIDAuMSk7XG4gICAgICB9XG5cbiAgICAgIGhlYWRlciBoMSB7XG4gICAgICAgIGZvbnQtc2l6ZTogMi41cmVtO1xuICAgICAgICBjb2xvcjogIzJjM2U1MDtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTBweDtcbiAgICAgIH1cblxuICAgICAgaGVhZGVyIHAge1xuICAgICAgICBmb250LXNpemU6IDEuMnJlbTtcbiAgICAgICAgY29sb3I6ICM3ZjhjOGQ7XG4gICAgICB9XG5cbiAgICAgIHNlY3Rpb24ge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7XG4gICAgICAgIHBhZGRpbmc6IDMwcHg7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDMwcHg7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMnB4IDVweCByZ2JhKDAsIDAsIDAsIDAuMSk7XG4gICAgICB9XG5cbiAgICAgIGgyIHtcbiAgICAgICAgZm9udC1zaXplOiAxLjhyZW07XG4gICAgICAgIGNvbG9yOiAjMmMzZTUwO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAyMHB4O1xuICAgICAgICBwYWRkaW5nLWJvdHRvbTogMTBweDtcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkICNlY2YwZjE7XG4gICAgICB9XG5cbiAgICAgIGgzIHtcbiAgICAgICAgZm9udC1zaXplOiAxLjRyZW07XG4gICAgICAgIGNvbG9yOiAjMzQ0OTVlO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAxNXB4O1xuICAgICAgfVxuXG4gICAgICBoNCB7XG4gICAgICAgIGZvbnQtc2l6ZTogMS4ycmVtO1xuICAgICAgICBjb2xvcjogIzM0NDk1ZTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTBweDtcbiAgICAgIH1cblxuICAgICAgcCB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDE1cHg7XG4gICAgICB9XG5cbiAgICAgIGNvZGUge1xuICAgICAgICBmb250LWZhbWlseTogJ0NvdXJpZXIgTmV3JywgQ291cmllciwgbW9ub3NwYWNlO1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjdmN2Y3O1xuICAgICAgICBwYWRkaW5nOiAycHggNXB4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiAzcHg7XG4gICAgICAgIGZvbnQtc2l6ZTogMC45ZW07XG4gICAgICB9XG5cbiAgICAgIHByZSB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmN2Y3Zjc7XG4gICAgICAgIHBhZGRpbmc6IDE1cHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDVweDtcbiAgICAgICAgb3ZlcmZsb3cteDogYXV0bztcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMjBweDtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgICAgfVxuXG4gICAgICBwcmUgY29kZSB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgfVxuXG4gICAgICAvKiBJbnN0YWxsYXRpb24gc2VjdGlvbiBzdHlsZXMgKi9cbiAgICAgIC5pbnN0YWxsYXRpb24tc2VjdGlvbiAuaW5zdGFsbC1jb21tYW5kIHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAyMHB4O1xuICAgICAgfVxuXG4gICAgICAuaW5zdGFsbGF0aW9uLXNlY3Rpb24gLmNvcHktYnV0dG9uIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB0b3A6IDEwcHg7XG4gICAgICAgIHJpZ2h0OiAxMHB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiAjMzQ5OGRiO1xuICAgICAgICBjb2xvcjogd2hpdGU7XG4gICAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4O1xuICAgICAgICBwYWRkaW5nOiA1cHggMTBweDtcbiAgICAgICAgZm9udC1zaXplOiAwLjlyZW07XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAwLjJzO1xuICAgICAgfVxuXG4gICAgICAuaW5zdGFsbGF0aW9uLXNlY3Rpb24gLmNvcHktYnV0dG9uOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZDogIzI5ODBiOTtcbiAgICAgIH1cblxuICAgICAgLyogRGVtbyBzZWN0aW9uIHN0eWxlcyAqL1xuICAgICAgLmRlbW8tY29udGFpbmVyIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XG4gICAgICAgIGdhcDogMzBweDtcbiAgICAgIH1cblxuICAgICAgLmRlbW8tZXhhbXBsZSB7XG4gICAgICAgIGJhY2tncm91bmQ6ICNmN2Y3Zjc7XG4gICAgICAgIHBhZGRpbmc6IDIwcHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMjBweDtcbiAgICAgIH1cblxuICAgICAgLyogTGlzdCBzdHlsZXMgKi9cbiAgICAgIC5saXN0LWNvbnRhaW5lciB7XG4gICAgICAgIG1heC13aWR0aDogNDAwcHg7XG4gICAgICAgIG1hcmdpbjogMjBweCBhdXRvO1xuICAgICAgfVxuXG4gICAgICAubGlzdC1pdGVtIHtcbiAgICAgICAgcGFkZGluZzogMTJweDtcbiAgICAgICAgbWFyZ2luOiA4cHggMDtcbiAgICAgICAgYmFja2dyb3VuZDogd2hpdGU7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICNlMGUwZTA7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDZweDtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgdHJhbnNpdGlvbjpcbiAgICAgICAgICB0cmFuc2Zvcm0gMC4ycyxcbiAgICAgICAgICBib3gtc2hhZG93IDAuMnM7XG4gICAgICB9XG5cbiAgICAgIC5saXN0LWl0ZW06aG92ZXIge1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTJweCk7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgNHB4IDhweCByZ2JhKDAsIDAsIDAsIDAuMSk7XG4gICAgICB9XG5cbiAgICAgIC5pdGVtLWljb24ge1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDEycHg7XG4gICAgICAgIGZvbnQtc2l6ZTogMS4yZW07XG4gICAgICB9XG5cbiAgICAgIC8qIEthbmJhbiBzdHlsZXMgKi9cbiAgICAgIC5rYW5iYW4tYm9hcmQge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBnYXA6IDIwcHg7XG4gICAgICAgIHBhZGRpbmc6IDIwcHg7XG4gICAgICAgIG92ZXJmbG93LXg6IGF1dG87XG4gICAgICB9XG5cbiAgICAgIC5rYW5iYW4tY29sdW1uIHtcbiAgICAgICAgZmxleDogMTtcbiAgICAgICAgbWluLXdpZHRoOiAzMDBweDtcbiAgICAgICAgYmFja2dyb3VuZDogI2Y1ZjVmNTtcbiAgICAgICAgcGFkZGluZzogMTVweDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgICAgfVxuXG4gICAgICAua2FuYmFuLWl0ZW0ge1xuICAgICAgICBiYWNrZ3JvdW5kOiB3aGl0ZTtcbiAgICAgICAgcGFkZGluZzogMTJweDtcbiAgICAgICAgbWFyZ2luOiA4cHggMDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNnB4O1xuICAgICAgICBib3gtc2hhZG93OiAwIDFweCAzcHggcmdiYSgwLCAwLCAwLCAwLjEpO1xuICAgICAgfVxuXG4gICAgICAua2FuYmFuLWl0ZW0taGVhZGVyIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiA4cHg7XG4gICAgICB9XG5cbiAgICAgIC5pdGVtLXRpdGxlIHtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICAgIH1cblxuICAgICAgLml0ZW0tc3RhdHVzIHtcbiAgICAgICAgcGFkZGluZzogNHB4IDhweDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4O1xuICAgICAgICBmb250LXNpemU6IDAuOGVtO1xuICAgICAgfVxuXG4gICAgICAuc3RhdHVzLXRvZG8ge1xuICAgICAgICBiYWNrZ3JvdW5kOiAjZmZlYmVlO1xuICAgICAgICBjb2xvcjogI2M2MjgyODtcbiAgICAgIH1cblxuICAgICAgLnN0YXR1cy1pbi1wcm9ncmVzcyB7XG4gICAgICAgIGJhY2tncm91bmQ6ICNmZmYzZTA7XG4gICAgICAgIGNvbG9yOiAjZWY2YzAwO1xuICAgICAgfVxuXG4gICAgICAuc3RhdHVzLWRvbmUge1xuICAgICAgICBiYWNrZ3JvdW5kOiAjZThmNWU5O1xuICAgICAgICBjb2xvcjogIzJlN2QzMjtcbiAgICAgIH1cblxuICAgICAgLml0ZW0tZGVzY3JpcHRpb24ge1xuICAgICAgICBmb250LXNpemU6IDAuOWVtO1xuICAgICAgICBjb2xvcjogIzY2NjtcbiAgICAgIH1cblxuICAgICAgLyogTmVzdGVkIGNvbnRhaW5lcnMgc3R5bGVzICovXG4gICAgICAubmVzdGVkLWNvbnRhaW5lciB7XG4gICAgICAgIG1heC13aWR0aDogODAwcHg7XG4gICAgICAgIG1hcmdpbjogMCBhdXRvO1xuICAgICAgfVxuXG4gICAgICAubmVzdGVkLWl0ZW0ge1xuICAgICAgICBiYWNrZ3JvdW5kOiB3aGl0ZTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgI2UwZTBlMDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgICAgICBtYXJnaW46IDEycHggMDtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgIH1cblxuICAgICAgLm5lc3RlZC1pdGVtLWhlYWRlciB7XG4gICAgICAgIHBhZGRpbmc6IDEycHg7XG4gICAgICAgIGJhY2tncm91bmQ6ICNmNWY1ZjU7XG4gICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZTBlMGUwO1xuICAgICAgfVxuXG4gICAgICAubmVzdGVkLWl0ZW0tY29udGVudCB7XG4gICAgICAgIHBhZGRpbmc6IDEycHg7XG4gICAgICB9XG5cbiAgICAgIC5zdWItaXRlbSB7XG4gICAgICAgIHBhZGRpbmc6IDhweDtcbiAgICAgICAgbWFyZ2luOiA0cHggMDtcbiAgICAgICAgYmFja2dyb3VuZDogI2Y5ZjlmOTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgI2UwZTBlMDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4O1xuICAgICAgfVxuXG4gICAgICAvKiBBUEkgZG9jdW1lbnRhdGlvbiBzdHlsZXMgKi9cbiAgICAgIC5hcGktZG9jLXNlY3Rpb24ge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiA0MHB4O1xuICAgICAgfVxuXG4gICAgICAudGFibGUtY29udGFpbmVyIHtcbiAgICAgICAgb3ZlcmZsb3cteDogYXV0bztcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMzBweDtcbiAgICAgIH1cblxuICAgICAgLmFwaS10YWJsZSB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAyMHB4O1xuICAgICAgfVxuXG4gICAgICAuYXBpLXRhYmxlIHRoLFxuICAgICAgLmFwaS10YWJsZSB0ZCB7XG4gICAgICAgIHBhZGRpbmc6IDEycHggMTVweDtcbiAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNlMWUxZTE7XG4gICAgICB9XG5cbiAgICAgIC5hcGktdGFibGUgdGgge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjVmNWY1O1xuICAgICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgIH1cblxuICAgICAgLmFwaS10YWJsZSB0Ym9keSB0cjpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmOWY5Zjk7XG4gICAgICB9XG5cbiAgICAgIC8qIEZlYXR1cmVzIHNlY3Rpb24gKi9cbiAgICAgIC5mZWF0dXJlcy1zZWN0aW9uIHVsIHtcbiAgICAgICAgbGlzdC1zdHlsZTogbm9uZTtcbiAgICAgIH1cblxuICAgICAgLmZlYXR1cmVzLXNlY3Rpb24gbGkge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAyNXB4O1xuICAgICAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgICAgIH1cblxuICAgICAgLmZlYXR1cmUtaWNvbiB7XG4gICAgICAgIGZvbnQtc2l6ZTogMnJlbTtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAyMHB4O1xuICAgICAgICBtaW4td2lkdGg6IDQwcHg7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgIH1cblxuICAgICAgLmZlYXR1cmUtaW5mbyB7XG4gICAgICAgIGZsZXg6IDE7XG4gICAgICB9XG5cbiAgICAgIC8qIENvZGUgZXhhbXBsZXMgKi9cbiAgICAgIC5jb2RlLWV4YW1wbGVzIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XG4gICAgICAgIGdhcDogMjBweDtcbiAgICAgIH1cblxuICAgICAgQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7XG4gICAgICAgIC5jb2RlLWV4YW1wbGVzIHtcbiAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgyLCAxZnIpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIEBtZWRpYSAobWluLXdpZHRoOiA5OTJweCkge1xuICAgICAgICAuY29kZS1leGFtcGxlcyB7XG4gICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMywgMWZyKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAuY29kZS1leGFtcGxlIHtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgI2VjZjBmMTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNXB4O1xuICAgICAgICBwYWRkaW5nOiAxNXB4O1xuICAgICAgfVxuXG4gICAgICAvKiBSZXNwb25zaXZlIGFkanVzdG1lbnRzICovXG4gICAgICBAbWVkaWEgKG1heC13aWR0aDogNzY4cHgpIHtcbiAgICAgICAgaGVhZGVyIHtcbiAgICAgICAgICBwYWRkaW5nOiAzMHB4IDA7XG4gICAgICAgIH1cblxuICAgICAgICBoZWFkZXIgaDEge1xuICAgICAgICAgIGZvbnQtc2l6ZTogMnJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIHNlY3Rpb24ge1xuICAgICAgICAgIHBhZGRpbmc6IDIwcHg7XG4gICAgICAgIH1cblxuICAgICAgICAua2FuYmFuLWJvYXJkIHtcbiAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICB9XG5cbiAgICAgICAgLmthbmJhbi1jb2x1bW4ge1xuICAgICAgICAgIG1pbi13aWR0aDogMTAwJTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5mZWF0dXJlLWljb24ge1xuICAgICAgICAgIGZvbnQtc2l6ZTogMS41cmVtO1xuICAgICAgICAgIG1hcmdpbi1yaWdodDogMTVweDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIGAsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIExpYnNVaURyYWdEcm9wRGVtb0NvbXBvbmVudCB7XG4gIC8vIEJhc2ljIExpc3QgSXRlbXNcbiAgYmFzaWNJdGVtcyA9IFsnVGFzayAxJywgJ1Rhc2sgMicsICdUYXNrIDMnLCAnVGFzayA0JywgJ1Rhc2sgNSddO1xuXG4gIC8vIEthbmJhbiBCb2FyZCBDb2x1bW5zXG4gIGNvbHVtbnNJZHMgPSBbJ3RvZG8nLCAnaW4tcHJvZ3Jlc3MnLCAnZG9uZSddO1xuICBjb2x1bW5zOiBDb2x1bW5bXSA9IFtcbiAgICB7XG4gICAgICBpZDogJ3RvZG8nLFxuICAgICAgdGl0bGU6ICdUbyBEbycsXG4gICAgICBpdGVtczogW1xuICAgICAgICB7XG4gICAgICAgICAgaWQ6IDEsXG4gICAgICAgICAgdGl0bGU6ICdJbXBsZW1lbnQgZHJhZyBhbmQgZHJvcCcsXG4gICAgICAgICAgZGVzY3JpcHRpb246ICdBZGQgZHJhZyBhbmQgZHJvcCBmdW5jdGlvbmFsaXR5IHRvIHRoZSBjb21wb25lbnQnLFxuICAgICAgICAgIHN0YXR1czogJ3RvZG8nLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgaWQ6IDIsXG4gICAgICAgICAgdGl0bGU6ICdBZGQgYW5pbWF0aW9ucycsXG4gICAgICAgICAgZGVzY3JpcHRpb246ICdJbXBsZW1lbnQgc21vb3RoIGFuaW1hdGlvbnMgZm9yIGRyYWcgYW5kIGRyb3AnLFxuICAgICAgICAgIHN0YXR1czogJ3RvZG8nLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIGlkOiAnaW4tcHJvZ3Jlc3MnLFxuICAgICAgdGl0bGU6ICdJbiBQcm9ncmVzcycsXG4gICAgICBpdGVtczogW1xuICAgICAgICB7XG4gICAgICAgICAgaWQ6IDMsXG4gICAgICAgICAgdGl0bGU6ICdGaXggc3R5bGluZyBpc3N1ZXMnLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiAnUmVzb2x2ZSBDU1MgY29uZmxpY3RzIGluIHRoZSBjb21wb25lbnQnLFxuICAgICAgICAgIHN0YXR1czogJ2luLXByb2dyZXNzJyxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSxcbiAgICB7XG4gICAgICBpZDogJ2RvbmUnLFxuICAgICAgdGl0bGU6ICdEb25lJyxcbiAgICAgIGl0ZW1zOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBpZDogNCxcbiAgICAgICAgICB0aXRsZTogJ1NldHVwIHByb2plY3Qgc3RydWN0dXJlJyxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogJ0luaXRpYWxpemUgdGhlIHByb2plY3Qgd2l0aCBuZWNlc3NhcnkgY29uZmlndXJhdGlvbnMnLFxuICAgICAgICAgIHN0YXR1czogJ2RvbmUnLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9LFxuICBdO1xuXG4gIC8vIE5lc3RlZCBJdGVtc1xuICBuZXN0ZWRJdGVtcyA9IFtcbiAgICB7XG4gICAgICBpZDogMSxcbiAgICAgIHRpdGxlOiAnUHJvamVjdCBBJyxcbiAgICAgIHN1Ykl0ZW1zOiBbJ1Rhc2sgMScsICdUYXNrIDInLCAnVGFzayAzJ10sXG4gICAgfSxcbiAgICB7XG4gICAgICBpZDogMixcbiAgICAgIHRpdGxlOiAnUHJvamVjdCBCJyxcbiAgICAgIHN1Ykl0ZW1zOiBbJ1Rhc2sgNCcsICdUYXNrIDUnXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIGlkOiAzLFxuICAgICAgdGl0bGU6ICdQcm9qZWN0IEMnLFxuICAgICAgc3ViSXRlbXM6IFsnVGFzayA2JywgJ1Rhc2sgNycsICdUYXNrIDgnXSxcbiAgICB9LFxuICBdO1xuXG4gIC8vIEFQSSBEb2N1bWVudGF0aW9uXG4gIGlucHV0c0RvYyA9IFtcbiAgICB7XG4gICAgICBuYW1lOiAnaXRlbXMnLFxuICAgICAgdHlwZTogJ0FycmF5PHVua25vd24+JyxcbiAgICAgIGRlZmF1bHQ6ICdbXScsXG4gICAgICBkZXNjcmlwdGlvbjogJ0FycmF5IG9mIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgY29udGFpbmVyJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6ICdtb2RlJyxcbiAgICAgIHR5cGU6IFwiJ21vdmUnIHwgJ2NvcHknIHwgJ2RlZXBDb3B5J1wiLFxuICAgICAgZGVmYXVsdDogXCInbW92ZSdcIixcbiAgICAgIGRlc2NyaXB0aW9uOiAnTW9kZSBmb3IgZHJhZyBhbmQgZHJvcCBvcGVyYXRpb25zJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6ICdkaXJlY3Rpb25EcmFnJyxcbiAgICAgIHR5cGU6IFwiJ2hvcml6b250YWwnIHwgJ3ZlcnRpY2FsJ1wiLFxuICAgICAgZGVmYXVsdDogJ3VuZGVmaW5lZCcsXG4gICAgICBkZXNjcmlwdGlvbjogJ0RpcmVjdGlvbiBvZiBkcmFnIG1vdmVtZW50JyxcbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6ICd2aWV3RW5jYXBzdWxhdGlvbicsXG4gICAgICB0eXBlOiBcIidlbXVsYXRlZCcgfCAnbm9uZSdcIixcbiAgICAgIGRlZmF1bHQ6IFwiJ2VtdWxhdGVkJ1wiLFxuICAgICAgZGVzY3JpcHRpb246ICdWaWV3IGVuY2Fwc3VsYXRpb24gbW9kZSBmb3Igc3R5bGluZycsXG4gICAgfSxcbiAgICB7XG4gICAgICBuYW1lOiAnZGlzYWJsZURyYWdDb250YWluZXInLFxuICAgICAgdHlwZTogJ2Jvb2xlYW4nLFxuICAgICAgZGVmYXVsdDogJ3VuZGVmaW5lZCcsXG4gICAgICBkZXNjcmlwdGlvbjogJ1doZXRoZXIgdG8gZGlzYWJsZSBkcmFnIG9wZXJhdGlvbnMgZm9yIHRoZSBjb250YWluZXInLFxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogJ2FjY2VwdERyYWdTYW1lR3JvdXAnLFxuICAgICAgdHlwZTogJ2Jvb2xlYW4nLFxuICAgICAgZGVmYXVsdDogJ2ZhbHNlJyxcbiAgICAgIGRlc2NyaXB0aW9uOiAnV2hldGhlciB0byBhY2NlcHQgZHJhZyBvcGVyYXRpb25zIHdpdGhpbiB0aGUgc2FtZSBncm91cCcsXG4gICAgfSxcbiAgICB7XG4gICAgICBuYW1lOiAncGxhY2Vob2xkZXInLFxuICAgICAgdHlwZTogJ2Jvb2xlYW4nLFxuICAgICAgZGVmYXVsdDogJ3RydWUnLFxuICAgICAgZGVzY3JpcHRpb246ICdXaGV0aGVyIHRvIHNob3cgcGxhY2Vob2xkZXIgZHVyaW5nIGRyYWcnLFxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogJ2dyb3VwTmFtZScsXG4gICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgIGRlZmF1bHQ6IFwiJ2dyb3VwRHJhZ0FuZERyb3BEZWZhdWx0J1wiLFxuICAgICAgZGVzY3JpcHRpb246ICdOYW1lIG9mIHRoZSBncm91cCBmb3IgZHJhZyBhbmQgZHJvcCBvcGVyYXRpb25zJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6ICdkcm9wVG9Hcm91cE5hbWUnLFxuICAgICAgdHlwZTogJ0FycmF5PHN0cmluZz4gfCBudWxsJyxcbiAgICAgIGRlZmF1bHQ6ICdudWxsJyxcbiAgICAgIGRlc2NyaXB0aW9uOiAnTGlzdCBvZiBncm91cCBuYW1lcyB0aGF0IGNhbiBhY2NlcHQgZHJvcHMgZnJvbSB0aGlzIGNvbnRhaW5lcicsXG4gICAgfSxcbiAgICB7XG4gICAgICBuYW1lOiAnc3R5bGVzT3ZlcnJpZGUnLFxuICAgICAgdHlwZTogJ0FycmF5PHsgY2xhc3NOYW1lOiBzdHJpbmcsIHN0eWxlczogc3RyaW5nIH0+JyxcbiAgICAgIGRlZmF1bHQ6ICd1bmRlZmluZWQnLFxuICAgICAgZGVzY3JpcHRpb246ICdDdXN0b20gc3R5bGVzIHRvIG92ZXJyaWRlIGRlZmF1bHQgZHJhZy1kcm9wIHN0eWxpbmcnLFxuICAgIH0sXG4gIF07XG5cbiAgb3V0cHV0c0RvYyA9IFtcbiAgICB7XG4gICAgICBuYW1lOiAnb3V0RHJhZ1N0YXJ0Q29udGFpbmVyJyxcbiAgICAgIHR5cGU6ICdJRHJhZ1N0YXJ0JyxcbiAgICAgIGRlc2NyaXB0aW9uOiAnRXZlbnQgZW1pdHRlZCB3aGVuIGRyYWdnaW5nIHN0YXJ0cyBpbiB0aGUgY29udGFpbmVyJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6ICdvdXREcmFnT3ZlckNvbnRhaW5lcicsXG4gICAgICB0eXBlOiAnSURyYWdPdmVyJyxcbiAgICAgIGRlc2NyaXB0aW9uOiAnRXZlbnQgZW1pdHRlZCB3aGVuIGRyYWdnaW5nIG92ZXIgdGhlIGNvbnRhaW5lcicsXG4gICAgfSxcbiAgICB7XG4gICAgICBuYW1lOiAnb3V0RHJhZ0xlYXZlQ29udGFpbmVyJyxcbiAgICAgIHR5cGU6ICdJRHJhZ0xlYXZlJyxcbiAgICAgIGRlc2NyaXB0aW9uOiAnRXZlbnQgZW1pdHRlZCB3aGVuIGRyYWdnaW5nIGxlYXZlcyB0aGUgY29udGFpbmVyJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6ICdvdXREcmFnRW5kQ29udGFpbmVyJyxcbiAgICAgIHR5cGU6ICdJRHJhZ0VuZCcsXG4gICAgICBkZXNjcmlwdGlvbjogJ0V2ZW50IGVtaXR0ZWQgd2hlbiBkcmFnZ2luZyBlbmRzIGluIHRoZSBjb250YWluZXInLFxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogJ291dERyb3BwZWRDb250YWluZXInLFxuICAgICAgdHlwZTogJ0lEcm9wJyxcbiAgICAgIGRlc2NyaXB0aW9uOiAnRXZlbnQgZW1pdHRlZCB3aGVuIGFuIGl0ZW0gaXMgZHJvcHBlZCBpbiB0aGUgY29udGFpbmVyJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6ICdvdXREcm9wcGVkQ29udGFpbmVyRW1wdHknLFxuICAgICAgdHlwZTogJ0lEcm9wJyxcbiAgICAgIGRlc2NyaXB0aW9uOiAnRXZlbnQgZW1pdHRlZCB3aGVuIGFuIGl0ZW0gaXMgZHJvcHBlZCBpbiBhbiBlbXB0eSBjb250YWluZXInLFxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogJ291dEZ1bmN0aW9uQ29udHJvbCcsXG4gICAgICB0eXBlOiAnSURyYWdEcm9wRnVuY3Rpb25Db250cm9sRXZlbnQnLFxuICAgICAgZGVzY3JpcHRpb246ICdFdmVudCBlbWl0dGVkIHRvIGNvbnRyb2wgZHJhZy1kcm9wIGZ1bmN0aW9uYWxpdHknLFxuICAgIH0sXG4gIF07XG5cbiAgLy8gSW50ZXJmYWNlIERvY3VtZW50YXRpb25cbiAgaW50ZXJmYWNlc0RvYyA9IFtcbiAgICB7XG4gICAgICBuYW1lOiAnSURyYWdnaW5nJyxcbiAgICAgIGNvZGU6IGBpbnRlcmZhY2UgSURyYWdnaW5nIHtcbiAgbW91c2VQb3NpdGlvbjogSU1vdXNlUG9zaXRpb247XG4gIGVsZW1lbnREcmFnOiBIVE1MRWxlbWVudDtcbiAgZWxlbWVudEtlZXBDb250YWluZXI/OiBib29sZWFuO1xuICBpdGVtRHJhZ0luZm8/OiBJSXRlbURyYWdJbmZvO1xufWAsXG4gICAgICBkZXNjcmlwdGlvbjogJ0ludGVyZmFjZSBmb3IgZHJhZyBvcGVyYXRpb24gZXZlbnRzLCBjb250YWluaW5nIGluZm9ybWF0aW9uIGFib3V0IHRoZSBkcmFnZ2VkIGVsZW1lbnQgYW5kIG1vdXNlIHBvc2l0aW9uJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6ICdJRHJhZ1N0YXJ0JyxcbiAgICAgIGNvZGU6IGBpbnRlcmZhY2UgSURyYWdTdGFydCB7XG4gIG1vdXNlUG9zaXRpb246IElNb3VzZVBvc2l0aW9uO1xuICBlbGVtZW50RHJhZzogSFRNTEVsZW1lbnQ7XG4gIGl0ZW1EcmFnSW5mbz86IElJdGVtRHJhZ0luZm87XG59YCxcbiAgICAgIGRlc2NyaXB0aW9uOiAnSW50ZXJmYWNlIGZvciBkcmFnIHN0YXJ0IGV2ZW50cywgdHJpZ2dlcmVkIHdoZW4gZHJhZ2dpbmcgYmVnaW5zJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6ICdJRHJhZ092ZXInLFxuICAgICAgY29kZTogYGludGVyZmFjZSBJRHJhZ092ZXIge1xuICBtb3VzZVBvc2l0aW9uOiBJTW91c2VQb3NpdGlvbjtcbiAgZWxlbWVudERyYWc6IEhUTUxFbGVtZW50O1xuICBlbGVtZW50RHJhZ092ZXI6IEhUTUxFbGVtZW50O1xuICBpdGVtRHJhZ0luZm8/OiBJSXRlbURyYWdJbmZvO1xufWAsXG4gICAgICBkZXNjcmlwdGlvbjogJ0ludGVyZmFjZSBmb3IgZHJhZyBvdmVyIGV2ZW50cywgdHJpZ2dlcmVkIHdoZW4gYW4gZWxlbWVudCBpcyBkcmFnZ2VkIG92ZXIgYW5vdGhlciBlbGVtZW50JyxcbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6ICdJRHJhZ0xlYXZlJyxcbiAgICAgIGNvZGU6IGBpbnRlcmZhY2UgSURyYWdMZWF2ZSB7XG4gIGVsZW1lbnREcmFnOiBIVE1MRWxlbWVudDtcbiAgZWxlbWVudERyYWdMZWF2ZTogSFRNTEVsZW1lbnQ7XG4gIGl0ZW1EcmFnSW5mbz86IElJdGVtRHJhZ0luZm87XG59YCxcbiAgICAgIGRlc2NyaXB0aW9uOiAnSW50ZXJmYWNlIGZvciBkcmFnIGxlYXZlIGV2ZW50cywgdHJpZ2dlcmVkIHdoZW4gYSBkcmFnZ2VkIGVsZW1lbnQgbGVhdmVzIGFub3RoZXIgZWxlbWVudCcsXG4gICAgfSxcbiAgICB7XG4gICAgICBuYW1lOiAnSURyYWdFbmQnLFxuICAgICAgY29kZTogYGludGVyZmFjZSBJRHJhZ0VuZCB7XG4gIG1vdXNlUG9zaXRpb246IElNb3VzZVBvc2l0aW9uO1xuICBlbGVtZW50RHJhZzogSFRNTEVsZW1lbnQ7XG4gIGl0ZW1EcmFnSW5mbz86IElJdGVtRHJhZ0luZm87XG59YCxcbiAgICAgIGRlc2NyaXB0aW9uOiAnSW50ZXJmYWNlIGZvciBkcmFnIGVuZCBldmVudHMsIHRyaWdnZXJlZCB3aGVuIGRyYWdnaW5nIGVuZHMnLFxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogJ0lEcm9wJyxcbiAgICAgIGNvZGU6IGBpbnRlcmZhY2UgSURyb3Age1xuICBlbGVtZW50RHJhZzogSFRNTEVsZW1lbnQ7XG4gIGVsZW1lbnREcm9wOiBIVE1MRWxlbWVudDtcbiAgaXRlbURyYWdJbmZvPzogSUl0ZW1EcmFnSW5mbztcbn1gLFxuICAgICAgZGVzY3JpcHRpb246ICdJbnRlcmZhY2UgZm9yIGRyb3AgZXZlbnRzLCB0cmlnZ2VyZWQgd2hlbiBhbiBlbGVtZW50IGlzIGRyb3BwZWQnLFxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogJ0lJdGVtRHJhZ0luZm8nLFxuICAgICAgY29kZTogYGludGVyZmFjZSBJSXRlbURyYWdJbmZvIHtcbiAgaXRlbTogb2JqZWN0O1xuICBpdGVtc01vdmU/OiBXcml0YWJsZVNpZ25hbDxBcnJheTx1bmtub3duPj47XG4gIGluZGV4RHJhZz86IG51bWJlcjtcbiAgaW5kZXhEcm9wPzogbnVtYmVyO1xuICBpdGVtc0RyYWc6IFdyaXRhYmxlU2lnbmFsPEFycmF5PHVua25vd24+PjtcbiAgaXRlbXNEcm9wPzogV3JpdGFibGVTaWduYWw8QXJyYXk8dW5rbm93bj4+O1xuICBjb250YWluZXJEcmFnPzogSFRNTEVsZW1lbnQ7XG4gIGNvbnRhaW5lckRyb3A/OiBIVE1MRWxlbWVudDtcbn1gLFxuICAgICAgZGVzY3JpcHRpb246ICdJbnRlcmZhY2UgY29udGFpbmluZyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgZHJhZ2dlZCBpdGVtIGFuZCBpdHMgY29udGFpbmVycycsXG4gICAgfSxcbiAgICB7XG4gICAgICBuYW1lOiAnSURyYWdJdGVtSW5Db250YWluZXJWaXJ0dWFsU2Nyb2xsJyxcbiAgICAgIGNvZGU6IGBpbnRlcmZhY2UgSURyYWdJdGVtSW5Db250YWluZXJWaXJ0dWFsU2Nyb2xsIHtcbiAgaXRlbURyYWdJbmZvPzogSUl0ZW1EcmFnSW5mbztcbiAgZWxlbWVudERyYWc6IEhUTUxFbGVtZW50O1xuICBkaXN0YW5jZVN0YXJ0RWxlbWVudEFuZE1vdXNlVG9wOiBudW1iZXI7XG4gIGRpc3RhbmNlU3RhcnRFbGVtZW50QW5kTW91c2VMZWZ0OiBudW1iZXI7XG4gIGVsZW1lbnRDb250YWluZXI/OiBIVE1MRWxlbWVudDtcbiAgZHJhZ0JvdW5kYXJ5PzogYm9vbGVhbjtcbiAgZHJhZ0JvdW5kYXJ5QWNjZXB0TW91c2VMZWF2ZUNvbnRhaW5lcj86IGJvb2xlYW47XG4gIGlnbm9yZVN0b3BFdmVudD86IGJvb2xlYW47XG59YCxcbiAgICAgIGRlc2NyaXB0aW9uOiAnSW50ZXJmYWNlIGZvciB2aXJ0dWFsIHNjcm9sbGluZyBkcmFnIG9wZXJhdGlvbnMsIGNvbnRhaW5pbmcgaW5mb3JtYXRpb24gYWJvdXQgZHJhZyBib3VuZGFyaWVzIGFuZCBjb250YWluZXIgZWxlbWVudHMnLFxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogJ0lNb3VzZVBvc2l0aW9uJyxcbiAgICAgIGNvZGU6IGBpbnRlcmZhY2UgSU1vdXNlUG9zaXRpb24ge1xuICBjbGllbnRYOiBudW1iZXI7XG4gIGNsaWVudFk6IG51bWJlcjtcbn1gLFxuICAgICAgZGVzY3JpcHRpb246ICdJbnRlcmZhY2UgcmVwcmVzZW50aW5nIG1vdXNlIHBvc2l0aW9uIGNvb3JkaW5hdGVzJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6ICdJRHJhZ0Ryb3BGdW5jdGlvbkNvbnRyb2xFdmVudCcsXG4gICAgICBjb2RlOiBgaW50ZXJmYWNlIElEcmFnRHJvcEZ1bmN0aW9uQ29udHJvbEV2ZW50IHtcbiAgc2V0QXR0cmlidXRlRWxlbWVudEFuZEl0ZW1EcmFnOiAoKSA9PiBQcm9taXNlPHZvaWQ+O1xufWAsXG4gICAgICBkZXNjcmlwdGlvbjogJ0ludGVyZmFjZSBmb3IgZHJhZyBhbmQgZHJvcCBjb250cm9sIGZ1bmN0aW9ucycsXG4gICAgfSxcbiAgXTtcblxuICAvLyBGZWF0dXJlc1xuICBmZWF0dXJlcyA9IFtcbiAgICB7XG4gICAgICBpZDogMSxcbiAgICAgIGljb246ICfwn5SEJyxcbiAgICAgIHRpdGxlOiAnRmxleGlibGUgRHJhZyBhbmQgRHJvcCcsXG4gICAgICBkZXNjcmlwdGlvbjogJ1N1cHBvcnQgZm9yIGNvbnRhaW5lci10by1jb250YWluZXIgZHJhZ2dpbmcgd2l0aCBjdXN0b21pemFibGUgZ3JvdXAgbmFtZXMgYW5kIGRyb3Agem9uZXMnLFxuICAgIH0sXG4gICAge1xuICAgICAgaWQ6IDIsXG4gICAgICBpY29uOiAn8J+TnCcsXG4gICAgICB0aXRsZTogJ1ZpcnR1YWwgU2Nyb2xsaW5nJyxcbiAgICAgIGRlc2NyaXB0aW9uOiAnRWZmaWNpZW50IGhhbmRsaW5nIG9mIGxhcmdlIGxpc3RzIHdpdGggdmlydHVhbCBzY3JvbGxpbmcgc3VwcG9ydCcsXG4gICAgfSxcbiAgICB7XG4gICAgICBpZDogMyxcbiAgICAgIGljb246ICfwn46vJyxcbiAgICAgIHRpdGxlOiAnQ3VzdG9tIEJvdW5kYXJpZXMnLFxuICAgICAgZGVzY3JpcHRpb246ICdEZWZpbmUgY3VzdG9tIGRyYWcgYm91bmRhcmllcyBhbmQgZHJvcCB6b25lcyBmb3IgcHJlY2lzZSBjb250cm9sJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIGlkOiA0LFxuICAgICAgaWNvbjogJ/CfjqgnLFxuICAgICAgdGl0bGU6ICdTdHlsaW5nIE9wdGlvbnMnLFxuICAgICAgZGVzY3JpcHRpb246ICdDdXN0b21pemFibGUgc3R5bGVzIGZvciBkcmFnIGl0ZW1zIGFuZCBjb250YWluZXJzJyxcbiAgICB9LFxuICBdO1xuXG4gIC8vIENvZGUgRXhhbXBsZXNcbiAgY29kZUV4YW1wbGVzID0gW1xuICAgIHtcbiAgICAgIGlkOiAxLFxuICAgICAgdGl0bGU6ICdCYXNpYyBVc2FnZScsXG4gICAgICBjb2RlOiBgJmx0O2RpdiBMaWJzVWlDb21wb25lbnRzRHJhZ0NvbnRhaW5lckRpcmVjdGl2ZSBcbiAgWyhpdGVtcyldPVwiaXRlbXNcIlxuICBbZ3JvdXBOYW1lXT1cIidteUdyb3VwJ1wiXG4gIFthY2NlcHREcmFnU2FtZUdyb3VwXT1cInRydWVcIiZndDtcbiAgQGZvciAoaXRlbSBvZiBpdGVtczsgdHJhY2sgaXRlbSkge1xuICAgICZsdDtkaXYgTGlic1VpRHJhZ0l0ZW1EaXJlY3RpdmUmZ3Q7XG4gICAgICB7eyBpdGVtIH19XG4gICAgJmx0Oy9kaXYmZ3Q7XG4gIH1cbiZsdDsvZGl2Jmd0O2AsXG4gICAgfSxcbiAgICB7XG4gICAgICBpZDogMixcbiAgICAgIHRpdGxlOiAnQ29udGFpbmVyLXRvLUNvbnRhaW5lcicsXG4gICAgICBjb2RlOiBgJmx0O2RpdiBMaWJzVWlDb21wb25lbnRzRHJhZ0NvbnRhaW5lckRpcmVjdGl2ZSBcbiAgWyhpdGVtcyldPVwic291cmNlSXRlbXNcIlxuICBbZ3JvdXBOYW1lXT1cIidzb3VyY2UnXCImZ3Q7XG4gIEBmb3IgKGl0ZW0gb2Ygc291cmNlSXRlbXM7IHRyYWNrIGl0ZW0pIHtcbiAgICAmbHQ7ZGl2IExpYnNVaURyYWdJdGVtRGlyZWN0aXZlJmd0O1xuICAgICAge3sgaXRlbSB9fVxuICAgICZsdDsvZGl2Jmd0O1xuICB9XG4mbHQ7L2RpdiZndDtcblxuJmx0O2RpdiBMaWJzVWlDb21wb25lbnRzRHJhZ0NvbnRhaW5lckRpcmVjdGl2ZSBcbiAgWyhpdGVtcyldPVwidGFyZ2V0SXRlbXNcIlxuICBbZ3JvdXBOYW1lXT1cIid0YXJnZXQnXCJcbiAgW2Ryb3BUb0dyb3VwTmFtZV09XCJbJ3NvdXJjZSddXCImZ3Q7XG4gIEBmb3IgKGl0ZW0gb2YgdGFyZ2V0SXRlbXM7IHRyYWNrIGl0ZW0pIHtcbiAgICAmbHQ7ZGl2IExpYnNVaURyYWdJdGVtRGlyZWN0aXZlJmd0O1xuICAgICAge3sgaXRlbSB9fVxuICAgICZsdDsvZGl2Jmd0O1xuICB9XG4mbHQ7L2RpdiZndDtgLFxuICAgIH0sXG4gIF07XG5cbiAgLyoqXG4gICAqIENvcHkgdGV4dCB0byBjbGlwYm9hcmRcbiAgICovXG4gIGNvcHlUb0NsaXBib2FyZCh0ZXh0OiBzdHJpbmcpIHtcbiAgICBuYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlVGV4dCh0ZXh0KS50aGVuKFxuICAgICAgKCkgPT4ge1xuICAgICAgICBhbGVydCgnQ29waWVkIHRvIGNsaXBib2FyZCcpO1xuICAgICAgfSxcbiAgICAgIChlcnIpID0+IHtcbiAgICAgICAgY29uc29sZS5lcnJvcignQ291bGQgbm90IGNvcHkgdGV4dDogJywgZXJyKTtcbiAgICAgIH1cbiAgICApO1xuICB9XG59XG4iXX0=
|
|
833
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVtby5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvZHJhZy1kcm9wL3NyYy9kZW1vL2RlbW8uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxzQ0FBc0MsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzVGLE9BQU8sRUFBRSxzQ0FBc0MsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2hGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDOztBQW9tQmpFLE1BQU0sT0FBTywyQkFBMkI7SUFDdEMsbUJBQW1CO0lBQ25CLFVBQVUsR0FBRyxDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUVoRSx1QkFBdUI7SUFDdkIsVUFBVSxHQUFHLENBQUMsTUFBTSxFQUFFLGFBQWEsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUM3QyxPQUFPLEdBQWE7UUFDbEI7WUFDRSxFQUFFLEVBQUUsTUFBTTtZQUNWLEtBQUssRUFBRSxPQUFPO1lBQ2QsS0FBSyxFQUFFO2dCQUNMO29CQUNFLEVBQUUsRUFBRSxDQUFDO29CQUNMLEtBQUssRUFBRSx5QkFBeUI7b0JBQ2hDLFdBQVcsRUFBRSxrREFBa0Q7b0JBQy9ELE1BQU0sRUFBRSxNQUFNO2lCQUNmO2dCQUNEO29CQUNFLEVBQUUsRUFBRSxDQUFDO29CQUNMLEtBQUssRUFBRSxnQkFBZ0I7b0JBQ3ZCLFdBQVcsRUFBRSwrQ0FBK0M7b0JBQzVELE1BQU0sRUFBRSxNQUFNO2lCQUNmO2FBQ0Y7U0FDRjtRQUNEO1lBQ0UsRUFBRSxFQUFFLGFBQWE7WUFDakIsS0FBSyxFQUFF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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E0T1QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBMaWJzVWlDb21wb25lbnRzQnV0dG9uc0J1dHRvbkNvbXBvbmVudCB9IGZyb20gJ0BsaWJzLXVpL2NvbXBvbmVudHMtYnV0dG9ucy1idXR0b24nO1xuaW1wb3J0IHsgTGlic1VpQ29tcG9uZW50c0RyYWdDb250YWluZXJEaXJlY3RpdmUgfSBmcm9tICcuLi9kcmFnLWRyb3AuZGlyZWN0aXZlJztcbmltcG9ydCB7IExpYnNVaURyYWdJdGVtRGlyZWN0aXZlIH0gZnJvbSAnLi4vZHJhZy1pdGVtLmRpcmVjdGl2ZSc7XG5cbmludGVyZmFjZSBUYXNrIHtcbiAgaWQ6IG51bWJlcjtcbiAgdGl0bGU6IHN0cmluZztcbiAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgc3RhdHVzOiAndG9kbycgfCAnaW4tcHJvZ3Jlc3MnIHwgJ2RvbmUnO1xufVxuXG5pbnRlcmZhY2UgQ29sdW1uIHtcbiAgaWQ6IHN0cmluZztcbiAgdGl0bGU6IHN0cmluZztcbiAgaXRlbXM6IFRhc2tbXTtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbGliLWRyYWctZHJvcC1kZW1vJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgTGlic1VpQ29tcG9uZW50c0RyYWdDb250YWluZXJEaXJlY3RpdmUsIExpYnNVaURyYWdJdGVtRGlyZWN0aXZlLCBMaWJzVWlDb21wb25lbnRzQnV0dG9uc0J1dHRvbkNvbXBvbmVudF0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBjbGFzcz1cInBhZ2UtY29udGFpbmVyXCI+XG4gICAgICA8aGVhZGVyPlxuICAgICAgICA8aDE+RGVtbyBEcmFnIGFuZCBEcm9wIENvbXBvbmVudDwvaDE+XG4gICAgICAgIDxwPkFuZ3VsYXIgY29tcG9uZW50IGxpYnJhcnkgZm9yIGRyYWcgYW5kIGRyb3AgZnVuY3Rpb25hbGl0eTwvcD5cbiAgICAgIDwvaGVhZGVyPlxuXG4gICAgICA8bWFpbj5cbiAgICAgICAgPHNlY3Rpb24gY2xhc3M9XCJpbnRyby1zZWN0aW9uXCI+XG4gICAgICAgICAgPGgyPkludHJvZHVjdGlvbjwvaDI+XG4gICAgICAgICAgPHA+XG4gICAgICAgICAgICA8Y29kZT4mIzY0O2xpYnMtdWkvY29tcG9uZW50cy1kcmFnLWRyb3A8L2NvZGU+XG4gICAgICAgICAgICBpcyBhIHBvd2VyZnVsIEFuZ3VsYXIgY29tcG9uZW50IHRoYXQgZW5hYmxlcyBkcmFnIGFuZCBkcm9wIGZ1bmN0aW9uYWxpdHkgd2l0aCBmZWF0dXJlcyBsaWtlIHZpcnR1YWwgc2Nyb2xsaW5nLCBtdWx0aS1zZWxlY3Rpb24sIGFuZCBjdXN0b20gYm91bmRhcmllcy5cbiAgICAgICAgICA8L3A+XG4gICAgICAgIDwvc2VjdGlvbj5cblxuICAgICAgICA8c2VjdGlvbiBjbGFzcz1cImluc3RhbGxhdGlvbi1zZWN0aW9uXCI+XG4gICAgICAgICAgPGgyPkluc3RhbGxhdGlvbjwvaDI+XG4gICAgICAgICAgPHA+VG8gaW5zdGFsbCB0aGUgbGlicmFyeSwgdXNlIG5wbSBvciB5YXJuOjwvcD5cblxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnN0YWxsLWNvbW1hbmRcIj5cbiAgICAgICAgICAgIDxwcmU+XG4gICAgICAgICAgICAgIDxjb2RlPm5wbSBpbnN0YWxsICYjNjQ7bGlicy11aS9jb21wb25lbnRzLWRyYWctZHJvcDwvY29kZT5cbiAgICAgICAgICAgICAgPGxpYnNfdWktY29tcG9uZW50cy1idXR0b25zLWJ1dHRvblxuICAgICAgICAgICAgICAgIFtsYWJlbF09XCInQ29weSdcIlxuICAgICAgICAgICAgICAgIChvdXRDbGljayk9XCJjb3B5VG9DbGlwYm9hcmQoJ25wbSBpbnN0YWxsIEBsaWJzLXVpL2NvbXBvbmVudHMtZHJhZy1kcm9wJylcIiAvPlxuICAgICAgICAgICAgPC9wcmU+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8cD5PciB3aXRoIHlhcm46PC9wPlxuXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImluc3RhbGwtY29tbWFuZFwiPlxuICAgICAgICAgICAgPHByZT5cbiAgICAgICAgICAgICAgPGNvZGU+eWFybiBhZGQgJiM2NDtsaWJzLXVpL2NvbXBvbmVudHMtZHJhZy1kcm9wPC9jb2RlPlxuICAgICAgICAgICAgICA8bGlic191aS1jb21wb25lbnRzLWJ1dHRvbnMtYnV0dG9uXG4gICAgICAgICAgICAgICAgW2xhYmVsXT1cIidDb3B5J1wiXG4gICAgICAgICAgICAgICAgKG91dENsaWNrKT1cImNvcHlUb0NsaXBib2FyZCgneWFybiBhZGQgQGxpYnMtdWkvY29tcG9uZW50cy1kcmFnLWRyb3AnKVwiIC8+XG4gICAgICAgICAgICA8L3ByZT5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9zZWN0aW9uPlxuXG4gICAgICAgIDxzZWN0aW9uIGNsYXNzPVwiZGVtby1zZWN0aW9uXCI+XG4gICAgICAgICAgPGgyPkxpdmUgRGVtbzwvaDI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImRlbW8tY29udGFpbmVyXCI+XG4gICAgICAgICAgICA8IS0tIEJhc2ljIExpc3QgRGVtbyAtLT5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkZW1vLWV4YW1wbGVcIj5cbiAgICAgICAgICAgICAgPGgzPkJhc2ljIExpc3Q8L2gzPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGlzdC1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICBMaWJzVWlDb21wb25lbnRzRHJhZ0NvbnRhaW5lckRpcmVjdGl2ZVxuICAgICAgICAgICAgICAgICAgWyhpdGVtcyldPVwiYmFzaWNJdGVtc1wiXG4gICAgICAgICAgICAgICAgICBbYWNjZXB0RHJhZ1NhbWVHcm91cF09XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgICBAZm9yIChpdGVtIG9mIGJhc2ljSXRlbXM7IHRyYWNrIGl0ZW0pIHtcbiAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibGlzdC1pdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICBMaWJzVWlEcmFnSXRlbURpcmVjdGl2ZT5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIml0ZW0taWNvblwiPvCfk4s8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpdGVtLXRleHRcIj57eyBpdGVtIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPCEtLSBLYW5iYW4gQm9hcmQgRGVtbyAtLT5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkZW1vLWV4YW1wbGVcIj5cbiAgICAgICAgICAgICAgPGgzPkthbmJhbiBCb2FyZDwvaDM+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJrYW5iYW4tYm9hcmRcIj5cbiAgICAgICAgICAgICAgICBAZm9yIChjb2x1bW4gb2YgY29sdW1uczsgdHJhY2sgY29sdW1uKSB7XG4gICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwia2FuYmFuLWNvbHVtblwiXG4gICAgICAgICAgICAgICAgICAgIExpYnNVaUNvbXBvbmVudHNEcmFnQ29udGFpbmVyRGlyZWN0aXZlXG4gICAgICAgICAgICAgICAgICAgIFsoaXRlbXMpXT1cImNvbHVtbi5pdGVtc1wiXG4gICAgICAgICAgICAgICAgICAgIFtncm91cE5hbWVdPVwiY29sdW1uLmlkXCJcbiAgICAgICAgICAgICAgICAgICAgW2Ryb3BUb0dyb3VwTmFtZV09XCJjb2x1bW5zSWRzXCJcbiAgICAgICAgICAgICAgICAgICAgW2FjY2VwdERyYWdTYW1lR3JvdXBdPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgICAgICA8aDQ+e3sgY29sdW1uLnRpdGxlIH19PC9oND5cbiAgICAgICAgICAgICAgICAgICAgQGZvciAoaXRlbSBvZiBjb2x1bW4uaXRlbXM7IHRyYWNrIGl0ZW0pIHtcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImthbmJhbi1pdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIExpYnNVaURyYWdJdGVtRGlyZWN0aXZlPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImthbmJhbi1pdGVtLWhlYWRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIml0ZW0tdGl0bGVcIj57eyBpdGVtLnRpdGxlIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaXRlbS1zdGF0dXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCInc3RhdHVzLScgKyBpdGVtLnN0YXR1c1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGl0ZW0uc3RhdHVzIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJpdGVtLWRlc2NyaXB0aW9uXCI+e3sgaXRlbS5kZXNjcmlwdGlvbiB9fTwvcD5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8IS0tIE5lc3RlZCBDb250YWluZXJzIERlbW8gLS0+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGVtby1leGFtcGxlXCI+XG4gICAgICAgICAgICAgIDxoMz5OZXN0ZWQgQ29udGFpbmVycyBjb3B5PC9oMz5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5lc3RlZC1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICBMaWJzVWlDb21wb25lbnRzRHJhZ0NvbnRhaW5lckRpcmVjdGl2ZVxuICAgICAgICAgICAgICAgICAgWyhpdGVtcyldPVwibmVzdGVkSXRlbXNcIlxuICAgICAgICAgICAgICAgICAgW2dyb3VwTmFtZV09XCIncGFyZW50J1wiXG4gICAgICAgICAgICAgICAgICBbbW9kZV09XCInY29weSdcIlxuICAgICAgICAgICAgICAgICAgW2FjY2VwdERyYWdTYW1lR3JvdXBdPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgICAgQGZvciAoaXRlbSBvZiBuZXN0ZWRJdGVtczsgdHJhY2sgaXRlbSkge1xuICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJuZXN0ZWQtaXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgTGlic1VpRHJhZ0l0ZW1EaXJlY3RpdmU+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5lc3RlZC1pdGVtLWhlYWRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpdGVtLXRpdGxlXCI+e3sgaXRlbS50aXRsZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibmVzdGVkLWl0ZW0tY29udGVudFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICBMaWJzVWlDb21wb25lbnRzRHJhZ0NvbnRhaW5lckRpcmVjdGl2ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICBbKGl0ZW1zKV09XCJpdGVtLnN1Ykl0ZW1zXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2dyb3VwTmFtZV09XCInY2hpbGQnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2FjY2VwdERyYWdTYW1lR3JvdXBdPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBAZm9yIChzdWJJdGVtIG9mIGl0ZW0uc3ViSXRlbXM7IHRyYWNrIHN1Ykl0ZW0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInN1Yi1pdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpYnNVaURyYWdJdGVtRGlyZWN0aXZlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgc3ViSXRlbSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvc2VjdGlvbj5cblxuICAgICAgICA8c2VjdGlvbiBjbGFzcz1cImFwaS1kb2Mtc2VjdGlvblwiPlxuICAgICAgICAgIDxoMj5BUEkgRG9jdW1lbnRhdGlvbjwvaDI+XG5cbiAgICAgICAgICA8aDM+SW5wdXRzPC9oMz5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtY29udGFpbmVyXCI+XG4gICAgICAgICAgICA8dGFibGUgY2xhc3M9XCJhcGktdGFibGVcIj5cbiAgICAgICAgICAgICAgPHRoZWFkPlxuICAgICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICAgIDx0aD5OYW1lPC90aD5cbiAgICAgICAgICAgICAgICAgIDx0aD5UeXBlPC90aD5cbiAgICAgICAgICAgICAgICAgIDx0aD5EZWZhdWx0PC90aD5cbiAgICAgICAgICAgICAgICAgIDx0aD5EZXNjcmlwdGlvbjwvdGg+XG4gICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgPC90aGVhZD5cbiAgICAgICAgICAgICAgPHRib2R5PlxuICAgICAgICAgICAgICAgIEBmb3IgKGlucHV0IG9mIGlucHV0c0RvYzsgdHJhY2sgaW5wdXQubmFtZSkge1xuICAgICAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICAgICAgICAgICAgPGNvZGU+e3sgaW5wdXQubmFtZSB9fTwvY29kZT5cbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgPHRkPlxuICAgICAgICAgICAgICAgICAgICAgIDxjb2RlPnt7IGlucHV0LnR5cGUgfX08L2NvZGU+XG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIDx0ZD57eyBpbnB1dC5kZWZhdWx0IH19PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgPHRkPnt7IGlucHV0LmRlc2NyaXB0aW9uIH19PC90ZD5cbiAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8L3Rib2R5PlxuICAgICAgICAgICAgPC90YWJsZT5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxoMz5PdXRwdXRzPC9oMz5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtY29udGFpbmVyXCI+XG4gICAgICAgICAgICA8dGFibGUgY2xhc3M9XCJhcGktdGFibGVcIj5cbiAgICAgICAgICAgICAgPHRoZWFkPlxuICAgICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICAgIDx0aD5OYW1lPC90aD5cbiAgICAgICAgICAgICAgICAgIDx0aD5UeXBlPC90aD5cbiAgICAgICAgICAgICAgICAgIDx0aD5EZXNjcmlwdGlvbjwvdGg+XG4gICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgPC90aGVhZD5cbiAgICAgICAgICAgICAgPHRib2R5PlxuICAgICAgICAgICAgICAgIEBmb3IgKG91dHB1dCBvZiBvdXRwdXRzRG9jOyB0cmFjayBvdXRwdXQubmFtZSkge1xuICAgICAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICAgICAgICAgICAgPGNvZGU+e3sgb3V0cHV0Lm5hbWUgfX08L2NvZGU+XG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgICAgICAgICAgICA8Y29kZT57eyBvdXRwdXQudHlwZSB9fTwvY29kZT5cbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgPHRkPnt7IG91dHB1dC5kZXNjcmlwdGlvbiB9fTwvdGQ+XG4gICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPC90Ym9keT5cbiAgICAgICAgICAgIDwvdGFibGU+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvc2VjdGlvbj5cblxuICAgICAgICA8c2VjdGlvbiBjbGFzcz1cImludGVyZmFjZXMtc2VjdGlvblwiPlxuICAgICAgICAgIDxoMj5JbnRlcmZhY2VzPC9oMj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW50ZXJmYWNlLWRvY3NcIj5cbiAgICAgICAgICAgIEBmb3IgKGludGVyZmFjZUl0ZW0gb2YgaW50ZXJmYWNlc0RvYzsgdHJhY2sgaW50ZXJmYWNlSXRlbS5uYW1lKSB7XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnRlcmZhY2UtaXRlbVwiPlxuICAgICAgICAgICAgICAgIDxoMz57eyBpbnRlcmZhY2VJdGVtLm5hbWUgfX08L2gzPlxuICAgICAgICAgICAgICAgIDxwcmU+PGNvZGU+e3tpbnRlcmZhY2VJdGVtLmNvZGV9fTwvY29kZT48L3ByZT5cbiAgICAgICAgICAgICAgICA8cD57eyBpbnRlcmZhY2VJdGVtLmRlc2NyaXB0aW9uIH19PC9wPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9zZWN0aW9uPlxuXG4gICAgICAgIDxzZWN0aW9uIGNsYXNzPVwiZmVhdHVyZXMtc2VjdGlvblwiPlxuICAgICAgICAgIDxoMj5GZWF0dXJlczwvaDI+XG4gICAgICAgICAgPHVsPlxuICAgICAgICAgICAgQGZvciAoZmVhdHVyZSBvZiBmZWF0dXJlczsgdHJhY2sgZmVhdHVyZS5pZCkge1xuICAgICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmZWF0dXJlLWljb25cIj57eyBmZWF0dXJlLmljb24gfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZlYXR1cmUtaW5mb1wiPlxuICAgICAgICAgICAgICAgICAgPGgzPnt7IGZlYXR1cmUudGl0bGUgfX08L2gzPlxuICAgICAgICAgICAgICAgICAgPHA+e3sgZmVhdHVyZS5kZXNjcmlwdGlvbiB9fTwvcD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L3VsPlxuICAgICAgICA8L3NlY3Rpb24+XG5cbiAgICAgICAgPHNlY3Rpb24gY2xhc3M9XCJ1c2FnZS1zZWN0aW9uXCI+XG4gICAgICAgICAgPGgyPlVzYWdlPC9oMj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29kZS1leGFtcGxlc1wiPlxuICAgICAgICAgICAgQGZvciAoZXhhbXBsZSBvZiBjb2RlRXhhbXBsZXM7IHRyYWNrIGV4YW1wbGUuaWQpIHtcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvZGUtZXhhbXBsZVwiPlxuICAgICAgICAgICAgICAgIDxoMz57eyBleGFtcGxlLnRpdGxlIH19PC9oMz5cbiAgICAgICAgICAgICAgICA8cHJlPjxjb2RlIFtpbm5lckhUTUxdPVwiZXhhbXBsZS5jb2RlXCI+PC9jb2RlPjwvcHJlPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9zZWN0aW9uPlxuICAgICAgPC9tYWluPlxuICAgIDwvZGl2PlxuICBgLFxuICBzdHlsZXM6IFtcbiAgICBgXG4gICAgICAucGFnZS1jb250YWluZXIge1xuICAgICAgICBtYXgtd2lkdGg6IDEyMDBweDtcbiAgICAgICAgbWFyZ2luOiAwIGF1dG87XG4gICAgICAgIHBhZGRpbmc6IDIwcHg7XG4gICAgICAgIGZvbnQtZmFtaWx5OiAnU2Vnb2UgVUknLCBUYWhvbWEsIEdlbmV2YSwgVmVyZGFuYSwgc2Fucy1zZXJpZjtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuNjtcbiAgICAgICAgY29sb3I6ICMzMzM7XG4gICAgICB9XG5cbiAgICAgIGhlYWRlciB7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgcGFkZGluZzogNDBweCAwO1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDMwcHg7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMnB4IDVweCByZ2JhKDAsIDAsIDAsIDAuMSk7XG4gICAgICB9XG5cbiAgICAgIGhlYWRlciBoMSB7XG4gICAgICAgIGZvbnQtc2l6ZTogMi41cmVtO1xuICAgICAgICBjb2xvcjogIzJjM2U1MDtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTBweDtcbiAgICAgIH1cblxuICAgICAgaGVhZGVyIHAge1xuICAgICAgICBmb250LXNpemU6IDEuMnJlbTtcbiAgICAgICAgY29sb3I6ICM3ZjhjOGQ7XG4gICAgICB9XG5cbiAgICAgIHNlY3Rpb24ge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7XG4gICAgICAgIHBhZGRpbmc6IDMwcHg7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDMwcHg7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMnB4IDVweCByZ2JhKDAsIDAsIDAsIDAuMSk7XG4gICAgICB9XG5cbiAgICAgIGgyIHtcbiAgICAgICAgZm9udC1zaXplOiAxLjhyZW07XG4gICAgICAgIGNvbG9yOiAjMmMzZTUwO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAyMHB4O1xuICAgICAgICBwYWRkaW5nLWJvdHRvbTogMTBweDtcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkICNlY2YwZjE7XG4gICAgICB9XG5cbiAgICAgIGgzIHtcbiAgICAgICAgZm9udC1zaXplOiAxLjRyZW07XG4gICAgICAgIGNvbG9yOiAjMzQ0OTVlO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAxNXB4O1xuICAgICAgfVxuXG4gICAgICBoNCB7XG4gICAgICAgIGZvbnQtc2l6ZTogMS4ycmVtO1xuICAgICAgICBjb2xvcjogIzM0NDk1ZTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTBweDtcbiAgICAgIH1cblxuICAgICAgcCB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDE1cHg7XG4gICAgICB9XG5cbiAgICAgIGNvZGUge1xuICAgICAgICBmb250LWZhbWlseTogJ0NvdXJpZXIgTmV3JywgQ291cmllciwgbW9ub3NwYWNlO1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjdmN2Y3O1xuICAgICAgICBwYWRkaW5nOiAycHggNXB4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiAzcHg7XG4gICAgICAgIGZvbnQtc2l6ZTogMC45ZW07XG4gICAgICB9XG5cbiAgICAgIHByZSB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmN2Y3Zjc7XG4gICAgICAgIHBhZGRpbmc6IDE1cHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDVweDtcbiAgICAgICAgb3ZlcmZsb3cteDogYXV0bztcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMjBweDtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgICAgfVxuXG4gICAgICBwcmUgY29kZSB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgfVxuXG4gICAgICAvKiBJbnN0YWxsYXRpb24gc2VjdGlvbiBzdHlsZXMgKi9cbiAgICAgIC5pbnN0YWxsYXRpb24tc2VjdGlvbiAuaW5zdGFsbC1jb21tYW5kIHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAyMHB4O1xuICAgICAgfVxuXG4gICAgICAuaW5zdGFsbGF0aW9uLXNlY3Rpb24gLmNvcHktYnV0dG9uIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB0b3A6IDEwcHg7XG4gICAgICAgIHJpZ2h0OiAxMHB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiAjMzQ5OGRiO1xuICAgICAgICBjb2xvcjogd2hpdGU7XG4gICAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4O1xuICAgICAgICBwYWRkaW5nOiA1cHggMTBweDtcbiAgICAgICAgZm9udC1zaXplOiAwLjlyZW07XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAwLjJzO1xuICAgICAgfVxuXG4gICAgICAuaW5zdGFsbGF0aW9uLXNlY3Rpb24gLmNvcHktYnV0dG9uOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZDogIzI5ODBiOTtcbiAgICAgIH1cblxuICAgICAgLyogRGVtbyBzZWN0aW9uIHN0eWxlcyAqL1xuICAgICAgLmRlbW8tY29udGFpbmVyIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XG4gICAgICAgIGdhcDogMzBweDtcbiAgICAgIH1cblxuICAgICAgLmRlbW8tZXhhbXBsZSB7XG4gICAgICAgIGJhY2tncm91bmQ6ICNmN2Y3Zjc7XG4gICAgICAgIHBhZGRpbmc6IDIwcHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMjBweDtcbiAgICAgIH1cblxuICAgICAgLyogTGlzdCBzdHlsZXMgKi9cbiAgICAgIC5saXN0LWNvbnRhaW5lciB7XG4gICAgICAgIG1heC13aWR0aDogNDAwcHg7XG4gICAgICAgIG1hcmdpbjogMjBweCBhdXRvO1xuICAgICAgfVxuXG4gICAgICAubGlzdC1pdGVtIHtcbiAgICAgICAgcGFkZGluZzogMTJweDtcbiAgICAgICAgbWFyZ2luOiA4cHggMDtcbiAgICAgICAgYmFja2dyb3VuZDogd2hpdGU7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICNlMGUwZTA7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDZweDtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgdHJhbnNpdGlvbjpcbiAgICAgICAgICB0cmFuc2Zvcm0gMC4ycyxcbiAgICAgICAgICBib3gtc2hhZG93IDAuMnM7XG4gICAgICB9XG5cbiAgICAgIC5saXN0LWl0ZW06aG92ZXIge1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTJweCk7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgNHB4IDhweCByZ2JhKDAsIDAsIDAsIDAuMSk7XG4gICAgICB9XG5cbiAgICAgIC5pdGVtLWljb24ge1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDEycHg7XG4gICAgICAgIGZvbnQtc2l6ZTogMS4yZW07XG4gICAgICB9XG5cbiAgICAgIC8qIEthbmJhbiBzdHlsZXMgKi9cbiAgICAgIC5rYW5iYW4tYm9hcmQge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBnYXA6IDIwcHg7XG4gICAgICAgIHBhZGRpbmc6IDIwcHg7XG4gICAgICAgIG92ZXJmbG93LXg6IGF1dG87XG4gICAgICB9XG5cbiAgICAgIC5rYW5iYW4tY29sdW1uIHtcbiAgICAgICAgZmxleDogMTtcbiAgICAgICAgbWluLXdpZHRoOiAzMDBweDtcbiAgICAgICAgYmFja2dyb3VuZDogI2Y1ZjVmNTtcbiAgICAgICAgcGFkZGluZzogMTVweDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgICAgfVxuXG4gICAgICAua2FuYmFuLWl0ZW0ge1xuICAgICAgICBiYWNrZ3JvdW5kOiB3aGl0ZTtcbiAgICAgICAgcGFkZGluZzogMTJweDtcbiAgICAgICAgbWFyZ2luOiA4cHggMDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNnB4O1xuICAgICAgICBib3gtc2hhZG93OiAwIDFweCAzcHggcmdiYSgwLCAwLCAwLCAwLjEpO1xuICAgICAgfVxuXG4gICAgICAua2FuYmFuLWl0ZW0taGVhZGVyIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiA4cHg7XG4gICAgICB9XG5cbiAgICAgIC5pdGVtLXRpdGxlIHtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICAgIH1cblxuICAgICAgLml0ZW0tc3RhdHVzIHtcbiAgICAgICAgcGFkZGluZzogNHB4IDhweDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4O1xuICAgICAgICBmb250LXNpemU6IDAuOGVtO1xuICAgICAgfVxuXG4gICAgICAuc3RhdHVzLXRvZG8ge1xuICAgICAgICBiYWNrZ3JvdW5kOiAjZmZlYmVlO1xuICAgICAgICBjb2xvcjogI2M2MjgyODtcbiAgICAgIH1cblxuICAgICAgLnN0YXR1cy1pbi1wcm9ncmVzcyB7XG4gICAgICAgIGJhY2tncm91bmQ6ICNmZmYzZTA7XG4gICAgICAgIGNvbG9yOiAjZWY2YzAwO1xuICAgICAgfVxuXG4gICAgICAuc3RhdHVzLWRvbmUge1xuICAgICAgICBiYWNrZ3JvdW5kOiAjZThmNWU5O1xuICAgICAgICBjb2xvcjogIzJlN2QzMjtcbiAgICAgIH1cblxuICAgICAgLml0ZW0tZGVzY3JpcHRpb24ge1xuICAgICAgICBmb250LXNpemU6IDAuOWVtO1xuICAgICAgICBjb2xvcjogIzY2NjtcbiAgICAgIH1cblxuICAgICAgLyogTmVzdGVkIGNvbnRhaW5lcnMgc3R5bGVzICovXG4gICAgICAubmVzdGVkLWNvbnRhaW5lciB7XG4gICAgICAgIG1heC13aWR0aDogODAwcHg7XG4gICAgICAgIG1hcmdpbjogMCBhdXRvO1xuICAgICAgfVxuXG4gICAgICAubmVzdGVkLWl0ZW0ge1xuICAgICAgICBiYWNrZ3JvdW5kOiB3aGl0ZTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgI2UwZTBlMDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgICAgICBtYXJnaW46IDEycHggMDtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgIH1cblxuICAgICAgLm5lc3RlZC1pdGVtLWhlYWRlciB7XG4gICAgICAgIHBhZGRpbmc6IDEycHg7XG4gICAgICAgIGJhY2tncm91bmQ6ICNmNWY1ZjU7XG4gICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZTBlMGUwO1xuICAgICAgfVxuXG4gICAgICAubmVzdGVkLWl0ZW0tY29udGVudCB7XG4gICAgICAgIHBhZGRpbmc6IDEycHg7XG4gICAgICB9XG5cbiAgICAgIC5zdWItaXRlbSB7XG4gICAgICAgIHBhZGRpbmc6IDhweDtcbiAgICAgICAgbWFyZ2luOiA0cHggMDtcbiAgICAgICAgYmFja2dyb3VuZDogI2Y5ZjlmOTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgI2UwZTBlMDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4O1xuICAgICAgfVxuXG4gICAgICAvKiBBUEkgZG9jdW1lbnRhdGlvbiBzdHlsZXMgKi9cbiAgICAgIC5hcGktZG9jLXNlY3Rpb24ge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiA0MHB4O1xuICAgICAgfVxuXG4gICAgICAudGFibGUtY29udGFpbmVyIHtcbiAgICAgICAgb3ZlcmZsb3cteDogYXV0bztcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMzBweDtcbiAgICAgIH1cblxuICAgICAgLmFwaS10YWJsZSB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAyMHB4O1xuICAgICAgfVxuXG4gICAgICAuYXBpLXRhYmxlIHRoLFxuICAgICAgLmFwaS10YWJsZSB0ZCB7XG4gICAgICAgIHBhZGRpbmc6IDEycHggMTVweDtcbiAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNlMWUxZTE7XG4gICAgICB9XG5cbiAgICAgIC5hcGktdGFibGUgdGgge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjVmNWY1O1xuICAgICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgIH1cblxuICAgICAgLmFwaS10YWJsZSB0Ym9keSB0cjpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmOWY5Zjk7XG4gICAgICB9XG5cbiAgICAgIC8qIEZlYXR1cmVzIHNlY3Rpb24gKi9cbiAgICAgIC5mZWF0dXJlcy1zZWN0aW9uIHVsIHtcbiAgICAgICAgbGlzdC1zdHlsZTogbm9uZTtcbiAgICAgIH1cblxuICAgICAgLmZlYXR1cmVzLXNlY3Rpb24gbGkge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAyNXB4O1xuICAgICAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgICAgIH1cblxuICAgICAgLmZlYXR1cmUtaWNvbiB7XG4gICAgICAgIGZvbnQtc2l6ZTogMnJlbTtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAyMHB4O1xuICAgICAgICBtaW4td2lkdGg6IDQwcHg7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgIH1cblxuICAgICAgLmZlYXR1cmUtaW5mbyB7XG4gICAgICAgIGZsZXg6IDE7XG4gICAgICB9XG5cbiAgICAgIC8qIENvZGUgZXhhbXBsZXMgKi9cbiAgICAgIC5jb2RlLWV4YW1wbGVzIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7XG4gICAgICAgIGdhcDogMjBweDtcbiAgICAgIH1cblxuICAgICAgQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7XG4gICAgICAgIC5jb2RlLWV4YW1wbGVzIHtcbiAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgyLCAxZnIpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIEBtZWRpYSAobWluLXdpZHRoOiA5OTJweCkge1xuICAgICAgICAuY29kZS1leGFtcGxlcyB7XG4gICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMywgMWZyKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAuY29kZS1leGFtcGxlIHtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgI2VjZjBmMTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNXB4O1xuICAgICAgICBwYWRkaW5nOiAxNXB4O1xuICAgICAgfVxuXG4gICAgICAvKiBSZXNwb25zaXZlIGFkanVzdG1lbnRzICovXG4gICAgICBAbWVkaWEgKG1heC13aWR0aDogNzY4cHgpIHtcbiAgICAgICAgaGVhZGVyIHtcbiAgICAgICAgICBwYWRkaW5nOiAzMHB4IDA7XG4gICAgICAgIH1cblxuICAgICAgICBoZWFkZXIgaDEge1xuICAgICAgICAgIGZvbnQtc2l6ZTogMnJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIHNlY3Rpb24ge1xuICAgICAgICAgIHBhZGRpbmc6IDIwcHg7XG4gICAgICAgIH1cblxuICAgICAgICAua2FuYmFuLWJvYXJkIHtcbiAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICB9XG5cbiAgICAgICAgLmthbmJhbi1jb2x1bW4ge1xuICAgICAgICAgIG1pbi13aWR0aDogMTAwJTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5mZWF0dXJlLWljb24ge1xuICAgICAgICAgIGZvbnQtc2l6ZTogMS41cmVtO1xuICAgICAgICAgIG1hcmdpbi1yaWdodDogMTVweDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIGAsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIExpYnNVaURyYWdEcm9wRGVtb0NvbXBvbmVudCB7XG4gIC8vIEJhc2ljIExpc3QgSXRlbXNcbiAgYmFzaWNJdGVtcyA9IFsnVGFzayAxJywgJ1Rhc2sgMicsICdUYXNrIDMnLCAnVGFzayA0JywgJ1Rhc2sgNSddO1xuXG4gIC8vIEthbmJhbiBCb2FyZCBDb2x1bW5zXG4gIGNvbHVtbnNJZHMgPSBbJ3RvZG8nLCAnaW4tcHJvZ3Jlc3MnLCAnZG9uZSddO1xuICBjb2x1bW5zOiBDb2x1bW5bXSA9IFtcbiAgICB7XG4gICAgICBpZDogJ3RvZG8nLFxuICAgICAgdGl0bGU6ICdUbyBEbycsXG4gICAgICBpdGVtczogW1xuICAgICAgICB7XG4gICAgICAgICAgaWQ6IDEsXG4gICAgICAgICAgdGl0bGU6ICdJbXBsZW1lbnQgZHJhZyBhbmQgZHJvcCcsXG4gICAgICAgICAgZGVzY3JpcHRpb246ICdBZGQgZHJhZyBhbmQgZHJvcCBmdW5jdGlvbmFsaXR5IHRvIHRoZSBjb21wb25lbnQnLFxuICAgICAgICAgIHN0YXR1czogJ3RvZG8nLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgaWQ6IDIsXG4gICAgICAgICAgdGl0bGU6ICdBZGQgYW5pbWF0aW9ucycsXG4gICAgICAgICAgZGVzY3JpcHRpb246ICdJbXBsZW1lbnQgc21vb3RoIGFuaW1hdGlvbnMgZm9yIGRyYWcgYW5kIGRyb3AnLFxuICAgICAgICAgIHN0YXR1czogJ3RvZG8nLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIGlkOiAnaW4tcHJvZ3Jlc3MnLFxuICAgICAgdGl0bGU6ICdJbiBQcm9ncmVzcycsXG4gICAgICBpdGVtczogW1xuICAgICAgICB7XG4gICAgICAgICAgaWQ6IDMsXG4gICAgICAgICAgdGl0bGU6ICdGaXggc3R5bGluZyBpc3N1ZXMnLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiAnUmVzb2x2ZSBDU1MgY29uZmxpY3RzIGluIHRoZSBjb21wb25lbnQnLFxuICAgICAgICAgIHN0YXR1czogJ2luLXByb2dyZXNzJyxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSxcbiAgICB7XG4gICAgICBpZDogJ2RvbmUnLFxuICAgICAgdGl0bGU6ICdEb25lJyxcbiAgICAgIGl0ZW1zOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBpZDogNCxcbiAgICAgICAgICB0aXRsZTogJ1NldHVwIHByb2plY3Qgc3RydWN0dXJlJyxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogJ0luaXRpYWxpemUgdGhlIHByb2plY3Qgd2l0aCBuZWNlc3NhcnkgY29uZmlndXJhdGlvbnMnLFxuICAgICAgICAgIHN0YXR1czogJ2RvbmUnLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9LFxuICBdO1xuXG4gIC8vIE5lc3RlZCBJdGVtc1xuICBuZXN0ZWRJdGVtcyA9IFtcbiAgICB7XG4gICAgICBpZDogMSxcbiAgICAgIHRpdGxlOiAnUHJvamVjdCBBJyxcbiAgICAgIHN1Ykl0ZW1zOiBbJ1Rhc2sgMScsICdUYXNrIDInLCAnVGFzayAzJ10sXG4gICAgfSxcbiAgICB7XG4gICAgICBpZDogMixcbiAgICAgIHRpdGxlOiAnUHJvamVjdCBCJyxcbiAgICAgIHN1Ykl0ZW1zOiBbJ1Rhc2sgNCcsICdUYXNrIDUnXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIGlkOiAzLFxuICAgICAgdGl0bGU6ICdQcm9qZWN0IEMnLFxuICAgICAgc3ViSXRlbXM6IFsnVGFzayA2JywgJ1Rhc2sgNycsICdUYXNrIDgnXSxcbiAgICB9LFxuICBdO1xuXG4gIC8vIEFQSSBEb2N1bWVudGF0aW9uXG4gIGlucHV0c0RvYyA9IFtcbiAgICB7XG4gICAgICBuYW1lOiAnaXRlbXMnLFxuICAgICAgdHlwZTogJ0FycmF5PHVua25vd24+JyxcbiAgICAgIGRlZmF1bHQ6ICdbXScsXG4gICAgICBkZXNjcmlwdGlvbjogJ0FycmF5IG9mIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgY29udGFpbmVyJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6ICdtb2RlJyxcbiAgICAgIHR5cGU6IFwiJ21vdmUnIHwgJ2NvcHknIHwgJ2RlZXBDb3B5J1wiLFxuICAgICAgZGVmYXVsdDogXCInbW92ZSdcIixcbiAgICAgIGRlc2NyaXB0aW9uOiAnTW9kZSBmb3IgZHJhZyBhbmQgZHJvcCBvcGVyYXRpb25zJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6ICdkaXJlY3Rpb25EcmFnJyxcbiAgICAgIHR5cGU6IFwiJ2hvcml6b250YWwnIHwgJ3ZlcnRpY2FsJ1wiLFxuICAgICAgZGVmYXVsdDogJ3VuZGVmaW5lZCcsXG4gICAgICBkZXNjcmlwdGlvbjogJ0RpcmVjdGlvbiBvZiBkcmFnIG1vdmVtZW50JyxcbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6ICd2aWV3RW5jYXBzdWxhdGlvbicsXG4gICAgICB0eXBlOiBcIidlbXVsYXRlZCcgfCAnbm9uZSdcIixcbiAgICAgIGRlZmF1bHQ6IFwiJ2VtdWxhdGVkJ1wiLFxuICAgICAgZGVzY3JpcHRpb246ICdWaWV3IGVuY2Fwc3VsYXRpb24gbW9kZSBmb3Igc3R5bGluZycsXG4gICAgfSxcbiAgICB7XG4gICAgICBuYW1lOiAnZGlzYWJsZURyYWdDb250YWluZXInLFxuICAgICAgdHlwZTogJ2Jvb2xlYW4nLFxuICAgICAgZGVmYXVsdDogJ3VuZGVmaW5lZCcsXG4gICAgICBkZXNjcmlwdGlvbjogJ1doZXRoZXIgdG8gZGlzYWJsZSBkcmFnIG9wZXJhdGlvbnMgZm9yIHRoZSBjb250YWluZXInLFxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogJ2FjY2VwdERyYWdTYW1lR3JvdXAnLFxuICAgICAgdHlwZTogJ2Jvb2xlYW4nLFxuICAgICAgZGVmYXVsdDogJ2ZhbHNlJyxcbiAgICAgIGRlc2NyaXB0aW9uOiAnV2hldGhlciB0byBhY2NlcHQgZHJhZyBvcGVyYXRpb25zIHdpdGhpbiB0aGUgc2FtZSBncm91cCcsXG4gICAgfSxcbiAgICB7XG4gICAgICBuYW1lOiAncGxhY2Vob2xkZXInLFxuICAgICAgdHlwZTogJ2Jvb2xlYW4nLFxuICAgICAgZGVmYXVsdDogJ3RydWUnLFxuICAgICAgZGVzY3JpcHRpb246ICdXaGV0aGVyIHRvIHNob3cgcGxhY2Vob2xkZXIgZHVyaW5nIGRyYWcnLFxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogJ2dyb3VwTmFtZScsXG4gICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgIGRlZmF1bHQ6IFwiJ2dyb3VwRHJhZ0FuZERyb3BEZWZhdWx0J1wiLFxuICAgICAgZGVzY3JpcHRpb246ICdOYW1lIG9mIHRoZSBncm91cCBmb3IgZHJhZyBhbmQgZHJvcCBvcGVyYXRpb25zJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6ICdkcm9wVG9Hcm91cE5hbWUnLFxuICAgICAgdHlwZTogJ0FycmF5PHN0cmluZz4gfCBudWxsJyxcbiAgICAgIGRlZmF1bHQ6ICdudWxsJyxcbiAgICAgIGRlc2NyaXB0aW9uOiAnTGlzdCBvZiBncm91cCBuYW1lcyB0aGF0IGNhbiBhY2NlcHQgZHJvcHMgZnJvbSB0aGlzIGNvbnRhaW5lcicsXG4gICAgfSxcbiAgICB7XG4gICAgICBuYW1lOiAnc3R5bGVzT3ZlcnJpZGUnLFxuICAgICAgdHlwZTogJ0FycmF5PHsgY2xhc3NOYW1lOiBzdHJpbmcsIHN0eWxlczogc3RyaW5nIH0+JyxcbiAgICAgIGRlZmF1bHQ6ICd1bmRlZmluZWQnLFxuICAgICAgZGVzY3JpcHRpb246ICdDdXN0b20gc3R5bGVzIHRvIG92ZXJyaWRlIGRlZmF1bHQgZHJhZy1kcm9wIHN0eWxpbmcnLFxuICAgIH0sXG4gIF07XG5cbiAgb3V0cHV0c0RvYyA9IFtcbiAgICB7XG4gICAgICBuYW1lOiAnb3V0RHJhZ1N0YXJ0Q29udGFpbmVyJyxcbiAgICAgIHR5cGU6ICdJRHJhZ1N0YXJ0JyxcbiAgICAgIGRlc2NyaXB0aW9uOiAnRXZlbnQgZW1pdHRlZCB3aGVuIGRyYWdnaW5nIHN0YXJ0cyBpbiB0aGUgY29udGFpbmVyJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6ICdvdXREcmFnT3ZlckNvbnRhaW5lcicsXG4gICAgICB0eXBlOiAnSURyYWdPdmVyJyxcbiAgICAgIGRlc2NyaXB0aW9uOiAnRXZlbnQgZW1pdHRlZCB3aGVuIGRyYWdnaW5nIG92ZXIgdGhlIGNvbnRhaW5lcicsXG4gICAgfSxcbiAgICB7XG4gICAgICBuYW1lOiAnb3V0RHJhZ0xlYXZlQ29udGFpbmVyJyxcbiAgICAgIHR5cGU6ICdJRHJhZ0xlYXZlJyxcbiAgICAgIGRlc2NyaXB0aW9uOiAnRXZlbnQgZW1pdHRlZCB3aGVuIGRyYWdnaW5nIGxlYXZlcyB0aGUgY29udGFpbmVyJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6ICdvdXREcmFnRW5kQ29udGFpbmVyJyxcbiAgICAgIHR5cGU6ICdJRHJhZ0VuZCcsXG4gICAgICBkZXNjcmlwdGlvbjogJ0V2ZW50IGVtaXR0ZWQgd2hlbiBkcmFnZ2luZyBlbmRzIGluIHRoZSBjb250YWluZXInLFxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogJ291dERyb3BwZWRDb250YWluZXInLFxuICAgICAgdHlwZTogJ0lEcm9wJyxcbiAgICAgIGRlc2NyaXB0aW9uOiAnRXZlbnQgZW1pdHRlZCB3aGVuIGFuIGl0ZW0gaXMgZHJvcHBlZCBpbiB0aGUgY29udGFpbmVyJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6ICdvdXREcm9wcGVkQ29udGFpbmVyRW1wdHknLFxuICAgICAgdHlwZTogJ0lEcm9wJyxcbiAgICAgIGRlc2NyaXB0aW9uOiAnRXZlbnQgZW1pdHRlZCB3aGVuIGFuIGl0ZW0gaXMgZHJvcHBlZCBpbiBhbiBlbXB0eSBjb250YWluZXInLFxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogJ291dEZ1bmN0aW9uQ29udHJvbCcsXG4gICAgICB0eXBlOiAnSURyYWdEcm9wRnVuY3Rpb25Db250cm9sRXZlbnQnLFxuICAgICAgZGVzY3JpcHRpb246ICdFdmVudCBlbWl0dGVkIHRvIGNvbnRyb2wgZHJhZy1kcm9wIGZ1bmN0aW9uYWxpdHknLFxuICAgIH0sXG4gIF07XG5cbiAgLy8gSW50ZXJmYWNlIERvY3VtZW50YXRpb25cbiAgaW50ZXJmYWNlc0RvYyA9IFtcbiAgICB7XG4gICAgICBuYW1lOiAnSURyYWdnaW5nJyxcbiAgICAgIGNvZGU6IGBpbnRlcmZhY2UgSURyYWdnaW5nIHtcbiAgbW91c2VQb3NpdGlvbjogSU1vdXNlUG9zaXRpb247XG4gIGVsZW1lbnREcmFnOiBIVE1MRWxlbWVudDtcbiAgZWxlbWVudEtlZXBDb250YWluZXI/OiBib29sZWFuO1xuICBpdGVtRHJhZ0luZm8/OiBJSXRlbURyYWdJbmZvO1xufWAsXG4gICAgICBkZXNjcmlwdGlvbjogJ0ludGVyZmFjZSBmb3IgZHJhZyBvcGVyYXRpb24gZXZlbnRzLCBjb250YWluaW5nIGluZm9ybWF0aW9uIGFib3V0IHRoZSBkcmFnZ2VkIGVsZW1lbnQgYW5kIG1vdXNlIHBvc2l0aW9uJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6ICdJRHJhZ1N0YXJ0JyxcbiAgICAgIGNvZGU6IGBpbnRlcmZhY2UgSURyYWdTdGFydCB7XG4gIG1vdXNlUG9zaXRpb246IElNb3VzZVBvc2l0aW9uO1xuICBlbGVtZW50RHJhZzogSFRNTEVsZW1lbnQ7XG4gIGl0ZW1EcmFnSW5mbz86IElJdGVtRHJhZ0luZm87XG59YCxcbiAgICAgIGRlc2NyaXB0aW9uOiAnSW50ZXJmYWNlIGZvciBkcmFnIHN0YXJ0IGV2ZW50cywgdHJpZ2dlcmVkIHdoZW4gZHJhZ2dpbmcgYmVnaW5zJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6ICdJRHJhZ092ZXInLFxuICAgICAgY29kZTogYGludGVyZmFjZSBJRHJhZ092ZXIge1xuICBtb3VzZVBvc2l0aW9uOiBJTW91c2VQb3NpdGlvbjtcbiAgZWxlbWVudERyYWc6IEhUTUxFbGVtZW50O1xuICBlbGVtZW50RHJhZ092ZXI6IEhUTUxFbGVtZW50O1xuICBpdGVtRHJhZ0luZm8/OiBJSXRlbURyYWdJbmZvO1xufWAsXG4gICAgICBkZXNjcmlwdGlvbjogJ0ludGVyZmFjZSBmb3IgZHJhZyBvdmVyIGV2ZW50cywgdHJpZ2dlcmVkIHdoZW4gYW4gZWxlbWVudCBpcyBkcmFnZ2VkIG92ZXIgYW5vdGhlciBlbGVtZW50JyxcbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6ICdJRHJhZ0xlYXZlJyxcbiAgICAgIGNvZGU6IGBpbnRlcmZhY2UgSURyYWdMZWF2ZSB7XG4gIGVsZW1lbnREcmFnOiBIVE1MRWxlbWVudDtcbiAgZWxlbWVudERyYWdMZWF2ZTogSFRNTEVsZW1lbnQ7XG4gIGl0ZW1EcmFnSW5mbz86IElJdGVtRHJhZ0luZm87XG59YCxcbiAgICAgIGRlc2NyaXB0aW9uOiAnSW50ZXJmYWNlIGZvciBkcmFnIGxlYXZlIGV2ZW50cywgdHJpZ2dlcmVkIHdoZW4gYSBkcmFnZ2VkIGVsZW1lbnQgbGVhdmVzIGFub3RoZXIgZWxlbWVudCcsXG4gICAgfSxcbiAgICB7XG4gICAgICBuYW1lOiAnSURyYWdFbmQnLFxuICAgICAgY29kZTogYGludGVyZmFjZSBJRHJhZ0VuZCB7XG4gIG1vdXNlUG9zaXRpb246IElNb3VzZVBvc2l0aW9uO1xuICBlbGVtZW50RHJhZzogSFRNTEVsZW1lbnQ7XG4gIGl0ZW1EcmFnSW5mbz86IElJdGVtRHJhZ0luZm87XG59YCxcbiAgICAgIGRlc2NyaXB0aW9uOiAnSW50ZXJmYWNlIGZvciBkcmFnIGVuZCBldmVudHMsIHRyaWdnZXJlZCB3aGVuIGRyYWdnaW5nIGVuZHMnLFxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogJ0lEcm9wJyxcbiAgICAgIGNvZGU6IGBpbnRlcmZhY2UgSURyb3Age1xuICBlbGVtZW50RHJhZzogSFRNTEVsZW1lbnQ7XG4gIGVsZW1lbnREcm9wOiBIVE1MRWxlbWVudDtcbiAgaXRlbURyYWdJbmZvPzogSUl0ZW1EcmFnSW5mbztcbn1gLFxuICAgICAgZGVzY3JpcHRpb246ICdJbnRlcmZhY2UgZm9yIGRyb3AgZXZlbnRzLCB0cmlnZ2VyZWQgd2hlbiBhbiBlbGVtZW50IGlzIGRyb3BwZWQnLFxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogJ0lJdGVtRHJhZ0luZm8nLFxuICAgICAgY29kZTogYGludGVyZmFjZSBJSXRlbURyYWdJbmZvIHtcbiAgaXRlbTogb2JqZWN0O1xuICBpdGVtc01vdmU/OiBXcml0YWJsZVNpZ25hbDxBcnJheTx1bmtub3duPj47XG4gIGluZGV4RHJhZz86IG51bWJlcjtcbiAgaW5kZXhEcm9wPzogbnVtYmVyO1xuICBpdGVtc0RyYWc6IFdyaXRhYmxlU2lnbmFsPEFycmF5PHVua25vd24+PjtcbiAgaXRlbXNEcm9wPzogV3JpdGFibGVTaWduYWw8QXJyYXk8dW5rbm93bj4+O1xuICBjb250YWluZXJEcmFnPzogSFRNTEVsZW1lbnQ7XG4gIGNvbnRhaW5lckRyb3A/OiBIVE1MRWxlbWVudDtcbn1gLFxuICAgICAgZGVzY3JpcHRpb246ICdJbnRlcmZhY2UgY29udGFpbmluZyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgZHJhZ2dlZCBpdGVtIGFuZCBpdHMgY29udGFpbmVycycsXG4gICAgfSxcbiAgICB7XG4gICAgICBuYW1lOiAnSURyYWdJdGVtSW5Db250YWluZXJWaXJ0dWFsU2Nyb2xsJyxcbiAgICAgIGNvZGU6IGBpbnRlcmZhY2UgSURyYWdJdGVtSW5Db250YWluZXJWaXJ0dWFsU2Nyb2xsIHtcbiAgaXRlbURyYWdJbmZvPzogSUl0ZW1EcmFnSW5mbztcbiAgZWxlbWVudERyYWc6IEhUTUxFbGVtZW50O1xuICBkaXN0YW5jZVN0YXJ0RWxlbWVudEFuZE1vdXNlVG9wOiBudW1iZXI7XG4gIGRpc3RhbmNlU3RhcnRFbGVtZW50QW5kTW91c2VMZWZ0OiBudW1iZXI7XG4gIGVsZW1lbnRDb250YWluZXI/OiBIVE1MRWxlbWVudDtcbiAgZHJhZ0JvdW5kYXJ5PzogYm9vbGVhbjtcbiAgZHJhZ0JvdW5kYXJ5QWNjZXB0TW91c2VMZWF2ZUNvbnRhaW5lcj86IGJvb2xlYW47XG4gIGlnbm9yZVN0b3BFdmVudD86IGJvb2xlYW47XG59YCxcbiAgICAgIGRlc2NyaXB0aW9uOiAnSW50ZXJmYWNlIGZvciB2aXJ0dWFsIHNjcm9sbGluZyBkcmFnIG9wZXJhdGlvbnMsIGNvbnRhaW5pbmcgaW5mb3JtYXRpb24gYWJvdXQgZHJhZyBib3VuZGFyaWVzIGFuZCBjb250YWluZXIgZWxlbWVudHMnLFxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogJ0lNb3VzZVBvc2l0aW9uJyxcbiAgICAgIGNvZGU6IGBpbnRlcmZhY2UgSU1vdXNlUG9zaXRpb24ge1xuICBjbGllbnRYOiBudW1iZXI7XG4gIGNsaWVudFk6IG51bWJlcjtcbn1gLFxuICAgICAgZGVzY3JpcHRpb246ICdJbnRlcmZhY2UgcmVwcmVzZW50aW5nIG1vdXNlIHBvc2l0aW9uIGNvb3JkaW5hdGVzJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6ICdJRHJhZ0Ryb3BGdW5jdGlvbkNvbnRyb2xFdmVudCcsXG4gICAgICBjb2RlOiBgaW50ZXJmYWNlIElEcmFnRHJvcEZ1bmN0aW9uQ29udHJvbEV2ZW50IHtcbiAgc2V0QXR0cmlidXRlRWxlbWVudEFuZEl0ZW1EcmFnOiAoKSA9PiBQcm9taXNlPHZvaWQ+O1xufWAsXG4gICAgICBkZXNjcmlwdGlvbjogJ0ludGVyZmFjZSBmb3IgZHJhZyBhbmQgZHJvcCBjb250cm9sIGZ1bmN0aW9ucycsXG4gICAgfSxcbiAgXTtcblxuICAvLyBGZWF0dXJlc1xuICBmZWF0dXJlcyA9IFtcbiAgICB7XG4gICAgICBpZDogMSxcbiAgICAgIGljb246ICfwn5SEJyxcbiAgICAgIHRpdGxlOiAnRmxleGlibGUgRHJhZyBhbmQgRHJvcCcsXG4gICAgICBkZXNjcmlwdGlvbjogJ1N1cHBvcnQgZm9yIGNvbnRhaW5lci10by1jb250YWluZXIgZHJhZ2dpbmcgd2l0aCBjdXN0b21pemFibGUgZ3JvdXAgbmFtZXMgYW5kIGRyb3Agem9uZXMnLFxuICAgIH0sXG4gICAge1xuICAgICAgaWQ6IDIsXG4gICAgICBpY29uOiAn8J+TnCcsXG4gICAgICB0aXRsZTogJ1ZpcnR1YWwgU2Nyb2xsaW5nJyxcbiAgICAgIGRlc2NyaXB0aW9uOiAnRWZmaWNpZW50IGhhbmRsaW5nIG9mIGxhcmdlIGxpc3RzIHdpdGggdmlydHVhbCBzY3JvbGxpbmcgc3VwcG9ydCcsXG4gICAgfSxcbiAgICB7XG4gICAgICBpZDogMyxcbiAgICAgIGljb246ICfwn46vJyxcbiAgICAgIHRpdGxlOiAnQ3VzdG9tIEJvdW5kYXJpZXMnLFxuICAgICAgZGVzY3JpcHRpb246ICdEZWZpbmUgY3VzdG9tIGRyYWcgYm91bmRhcmllcyBhbmQgZHJvcCB6b25lcyBmb3IgcHJlY2lzZSBjb250cm9sJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIGlkOiA0LFxuICAgICAgaWNvbjogJ/CfjqgnLFxuICAgICAgdGl0bGU6ICdTdHlsaW5nIE9wdGlvbnMnLFxuICAgICAgZGVzY3JpcHRpb246ICdDdXN0b21pemFibGUgc3R5bGVzIGZvciBkcmFnIGl0ZW1zIGFuZCBjb250YWluZXJzJyxcbiAgICB9LFxuICBdO1xuXG4gIC8vIENvZGUgRXhhbXBsZXNcbiAgY29kZUV4YW1wbGVzID0gW1xuICAgIHtcbiAgICAgIGlkOiAxLFxuICAgICAgdGl0bGU6ICdCYXNpYyBVc2FnZScsXG4gICAgICBjb2RlOiBgJmx0O2RpdiBMaWJzVWlDb21wb25lbnRzRHJhZ0NvbnRhaW5lckRpcmVjdGl2ZSBcbiAgWyhpdGVtcyldPVwiaXRlbXNcIlxuICBbZ3JvdXBOYW1lXT1cIidteUdyb3VwJ1wiXG4gIFthY2NlcHREcmFnU2FtZUdyb3VwXT1cInRydWVcIiZndDtcbiAgQGZvciAoaXRlbSBvZiBpdGVtczsgdHJhY2sgaXRlbSkge1xuICAgICZsdDtkaXYgTGlic1VpRHJhZ0l0ZW1EaXJlY3RpdmUmZ3Q7XG4gICAgICB7eyBpdGVtIH19XG4gICAgJmx0Oy9kaXYmZ3Q7XG4gIH1cbiZsdDsvZGl2Jmd0O2AsXG4gICAgfSxcbiAgICB7XG4gICAgICBpZDogMixcbiAgICAgIHRpdGxlOiAnQ29udGFpbmVyLXRvLUNvbnRhaW5lcicsXG4gICAgICBjb2RlOiBgJmx0O2RpdiBMaWJzVWlDb21wb25lbnRzRHJhZ0NvbnRhaW5lckRpcmVjdGl2ZSBcbiAgWyhpdGVtcyldPVwic291cmNlSXRlbXNcIlxuICBbZ3JvdXBOYW1lXT1cIidzb3VyY2UnXCImZ3Q7XG4gIEBmb3IgKGl0ZW0gb2Ygc291cmNlSXRlbXM7IHRyYWNrIGl0ZW0pIHtcbiAgICAmbHQ7ZGl2IExpYnNVaURyYWdJdGVtRGlyZWN0aXZlJmd0O1xuICAgICAge3sgaXRlbSB9fVxuICAgICZsdDsvZGl2Jmd0O1xuICB9XG4mbHQ7L2RpdiZndDtcblxuJmx0O2RpdiBMaWJzVWlDb21wb25lbnRzRHJhZ0NvbnRhaW5lckRpcmVjdGl2ZSBcbiAgWyhpdGVtcyldPVwidGFyZ2V0SXRlbXNcIlxuICBbZ3JvdXBOYW1lXT1cIid0YXJnZXQnXCJcbiAgW2Ryb3BUb0dyb3VwTmFtZV09XCJbJ3NvdXJjZSddXCImZ3Q7XG4gIEBmb3IgKGl0ZW0gb2YgdGFyZ2V0SXRlbXM7IHRyYWNrIGl0ZW0pIHtcbiAgICAmbHQ7ZGl2IExpYnNVaURyYWdJdGVtRGlyZWN0aXZlJmd0O1xuICAgICAge3sgaXRlbSB9fVxuICAgICZsdDsvZGl2Jmd0O1xuICB9XG4mbHQ7L2RpdiZndDtgLFxuICAgIH0sXG4gIF07XG5cbiAgLyoqXG4gICAqIENvcHkgdGV4dCB0byBjbGlwYm9hcmRcbiAgICovXG4gIGNvcHlUb0NsaXBib2FyZCh0ZXh0OiBzdHJpbmcpIHtcbiAgICBuYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlVGV4dCh0ZXh0KS50aGVuKFxuICAgICAgKCkgPT4ge1xuICAgICAgICBhbGVydCgnQ29waWVkIHRvIGNsaXBib2FyZCcpO1xuICAgICAgfSxcbiAgICAgIChlcnIpID0+IHtcbiAgICAgICAgY29uc29sZS5lcnJvcignQ291bGQgbm90IGNvcHkgdGV4dDogJywgZXJyKTtcbiAgICAgIH1cbiAgICApO1xuICB9XG59XG4iXX0=
|
|
@@ -11,19 +11,23 @@ export class LibsUiDragItemInContainerVirtualScrollDirective {
|
|
|
11
11
|
// #region INJECT
|
|
12
12
|
dragDropService = inject(MoLibsSharedDragDropService);
|
|
13
13
|
ngAfterViewInit() {
|
|
14
|
-
const addClass = () => {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
const removeClass = () => {
|
|
19
|
-
document.body.classList.add('!select-none');
|
|
14
|
+
const addClass = (ignoreUserSelectNone) => {
|
|
15
|
+
if (!ignoreUserSelectNone) {
|
|
16
|
+
document.body.classList.add('!select-none');
|
|
17
|
+
}
|
|
20
18
|
document.body.classList.add('!cursor-move');
|
|
21
19
|
};
|
|
20
|
+
const removeClass = (ignoreUserSelectNone) => {
|
|
21
|
+
if (!ignoreUserSelectNone) {
|
|
22
|
+
document.body.classList.remove('!select-none');
|
|
23
|
+
}
|
|
24
|
+
document.body.classList.remove('!cursor-move');
|
|
25
|
+
};
|
|
22
26
|
this.dragDropService.OnDragEnd.pipe(takeUntil(this.onDestroy)).subscribe((e) => {
|
|
23
27
|
this.outDragEndContainer.emit(e);
|
|
24
28
|
});
|
|
25
29
|
this.dragDropService.OnDragItemInContainerVirtualScroll.pipe(takeUntil(this.onDestroy)).subscribe((dragItemInContainerVirtualScrollEvent) => {
|
|
26
|
-
addClass();
|
|
30
|
+
addClass(dragItemInContainerVirtualScrollEvent.ignoreUserSelectNone);
|
|
27
31
|
const stopEventMouse = (mouseEvent) => {
|
|
28
32
|
if (!dragItemInContainerVirtualScrollEvent.ignoreStopEvent) {
|
|
29
33
|
mouseEvent.preventDefault();
|
|
@@ -43,7 +47,7 @@ export class LibsUiDragItemInContainerVirtualScrollDirective {
|
|
|
43
47
|
this.dragDropService.ItemDragInfo = undefined;
|
|
44
48
|
this.dragDropService.OnDragEnd.next(dragEndEvent);
|
|
45
49
|
dragItemInContainerVirtualScrollEvent.elementDrag.remove();
|
|
46
|
-
removeClass();
|
|
50
|
+
removeClass(dragItemInContainerVirtualScrollEvent.ignoreUserSelectNone);
|
|
47
51
|
}));
|
|
48
52
|
fromEvent(document, 'mousemove')
|
|
49
53
|
.pipe(tap((eventMousemove) => {
|
|
@@ -131,4 +135,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
131
135
|
standalone: true,
|
|
132
136
|
}]
|
|
133
137
|
}] });
|
|
134
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhZy1pdGVtLWluLWNvbnRhaW5lci12aXJ0dWFsLXNjcm9sbC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvZHJhZy1kcm9wL3NyYy9kcmFnLWl0ZW0taW4tY29udGFpbmVyLXZpcnR1YWwtc2Nyb2xsLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBYSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXBGLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2RSxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzFELE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHFCQUFxQixDQUFDOztBQVFsRSxNQUFNLE9BQU8sK0NBQStDO0lBQzFELG1CQUFtQjtJQUNULFNBQVMsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO0lBRTFDLGlCQUFpQjtJQUNSLG1CQUFtQixHQUFHLE1BQU0sRUFBWSxDQUFDO0lBRWxELGlCQUFpQjtJQUNQLGVBQWUsR0FBRyxNQUFNLENBQUMsMkJBQTJCLENBQUMsQ0FBQztJQUVoRSxlQUFlO1FBQ2IsTUFBTSxRQUFRLEdBQUcsR0FBRyxFQUFFO1lBQ3BCLFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUMvQyxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDakQsQ0FBQyxDQUFDO1FBQ0YsTUFBTSxXQUFXLEdBQUcsR0FBRyxFQUFFO1lBQ3ZCLFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQztZ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NEZBQS9DLCtDQUErQzs7NEZBQS9DLCtDQUErQztrQkFMM0QsU0FBUzttQkFBQztvQkFDVCw4REFBOEQ7b0JBQzlELFFBQVEsRUFBRSxtREFBbUQ7b0JBQzdELFVBQVUsRUFBRSxJQUFJO2lCQUNqQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIERpcmVjdGl2ZSwgT25EZXN0cm95LCBpbmplY3QsIG91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSUJvdW5kaW5nQ2xpZW50UmVjdCB9IGZyb20gJ0BsaWJzLXVpL2ludGVyZmFjZXMtdHlwZXMnO1xuaW1wb3J0IHsgY2xvbmVJQm91bmRpbmdDbGllbnRSZWN0LCBnZXRWaWV3cG9ydCB9IGZyb20gJ0BsaWJzLXVpL3V0aWxzJztcbmltcG9ydCB7IFN1YmplY3QsIGZyb21FdmVudCwgdGFrZVVudGlsLCB0YXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IE1vTGlic1NoYXJlZERyYWdEcm9wU2VydmljZSB9IGZyb20gJy4vZHJhZy1kcm9wLnNlcnZpY2UnO1xuaW1wb3J0IHsgSURyYWdFbmQgfSBmcm9tICcuL2ludGVyZmFjZXMvZXZlbnQuaW50ZXJmYWNlJztcblxuQERpcmVjdGl2ZSh7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvZGlyZWN0aXZlLXNlbGVjdG9yXG4gIHNlbGVjdG9yOiAnW0xpYnNVaURyYWdJdGVtSW5Db250YWluZXJWaXJ0dWFsU2Nyb2xsRGlyZWN0aXZlXScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIExpYnNVaURyYWdJdGVtSW5Db250YWluZXJWaXJ0dWFsU2Nyb2xsRGlyZWN0aXZlIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgLy8gI3JlZ2lvbiBQUk9QRVJUWVxuICBwcm90ZWN0ZWQgb25EZXN0cm95ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAvLyAjcmVnaW9uIE9VVFBVVFxuICByZWFkb25seSBvdXREcmFnRW5kQ29udGFpbmVyID0gb3V0cHV0PElEcmFnRW5kPigpO1xuXG4gIC8vICNyZWdpb24gSU5KRUNUXG4gIHByb3RlY3RlZCBkcmFnRHJvcFNlcnZpY2UgPSBpbmplY3QoTW9MaWJzU2hhcmVkRHJhZ0Ryb3BTZXJ2aWNlKTtcblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgY29uc3QgYWRkQ2xhc3MgPSAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5yZW1vdmUoJyFzZWxlY3Qtbm9uZScpO1xuICAgICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QucmVtb3ZlKCchY3Vyc29yLW1vdmUnKTtcbiAgICB9O1xuICAgIGNvbnN0IHJlbW92ZUNsYXNzID0gKCkgPT4ge1xuICAgICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuYWRkKCchc2VsZWN0LW5vbmUnKTtcbiAgICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmFkZCgnIWN1cnNvci1tb3ZlJyk7XG4gICAgfTtcbiAgICB0aGlzLmRyYWdEcm9wU2VydmljZS5PbkRyYWdFbmQucGlwZSh0YWtlVW50aWwodGhpcy5vbkRlc3Ryb3kpKS5zdWJzY3JpYmUoKGUpID0+IHtcbiAgICAgIHRoaXMub3V0RHJhZ0VuZENvbnRhaW5lci5lbWl0KGUpO1xuICAgIH0pO1xuICAgIHRoaXMuZHJhZ0Ryb3BTZXJ2aWNlLk9uRHJhZ0l0ZW1JbkNvbnRhaW5lclZpcnR1YWxTY3JvbGwucGlwZSh0YWtlVW50aWwodGhpcy5vbkRlc3Ryb3kpKS5zdWJzY3JpYmUoKGRyYWdJdGVtSW5Db250YWluZXJWaXJ0dWFsU2Nyb2xsRXZlbnQpID0+IHtcbiAgICAgIGFkZENsYXNzKCk7XG4gICAgICBjb25zdCBzdG9wRXZlbnRNb3VzZSA9IChtb3VzZUV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgIGlmICghZHJhZ0l0ZW1JbkNvbnRhaW5lclZpcnR1YWxTY3JvbGxFdmVudC5pZ25vcmVTdG9wRXZlbnQpIHtcbiAgICAgICAgICBtb3VzZUV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgbW91c2VFdmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICAgIGNvbnN0IGRvY3VtZW50TW91c2VVcCA9IGZyb21FdmVudDxNb3VzZUV2ZW50Pihkb2N1bWVudCwgJ21vdXNldXAnKS5waXBlKFxuICAgICAgICB0YXAoKGV2ZW50TW91c2VVcCkgPT4ge1xuICAgICAgICAgIHRoaXMudXBkYXRlTW91c2VFdmVudHNXaGVuTW92ZU92ZXJJZnJhbWUoJ2F1dG8nKTtcbiAgICAgICAgICBzdG9wRXZlbnRNb3VzZShldmVudE1vdXNlVXApO1xuICAgICAgICAgIGNvbnN0IG1vdXNlUG9zaXRpb24gPSB7IGNsaWVudFg6IGV2ZW50TW91c2VVcC5jbGllbnRYLCBjbGllbnRZOiBldmVudE1vdXNlVXAuY2xpZW50WSB9O1xuXG4gICAgICAgICAgaWYgKGRyYWdJdGVtSW5Db250YWluZXJWaXJ0dWFsU2Nyb2xsRXZlbnQuZHJhZ0JvdW5kYXJ5ICYmIGRyYWdJdGVtSW5Db250YWluZXJWaXJ0dWFsU2Nyb2xsRXZlbnQuZHJhZ0JvdW5kYXJ5QWNjZXB0TW91c2VMZWF2ZUNvbnRhaW5lcikge1xuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy5nZXRDbGllbnRQb3NpdGlvbihcbiAgICAgICAgICAgICAgZHJhZ0l0ZW1JbkNvbnRhaW5lclZpcnR1YWxTY3JvbGxFdmVudC5lbGVtZW50RHJhZyxcbiAgICAgICAgICAgICAgbW91c2VQb3NpdGlvbixcbiAgICAgICAgICAgICAgZHJhZ0l0ZW1JbkNvbnRhaW5lclZpcnR1YWxTY3JvbGxFdmVudC5kaXN0YW5jZVN0YXJ0RWxlbWVudEFuZE1vdXNlTGVmdCxcbiAgICAgICAgICAgICAgZHJhZ0l0ZW1JbkNvbnRhaW5lclZpcnR1YWxTY3JvbGxFdmVudC5kaXN0YW5jZVN0YXJ0RWxlbWVudEFuZE1vdXNlVG9wLFxuICAgICAgICAgICAgICBkcmFnSXRlbUluQ29udGFpbmVyVmlydHVhbFNjcm9sbEV2ZW50LmRyYWdCb3VuZGFyeSxcbiAgICAgICAgICAgICAgZHJhZ0l0ZW1JbkNvbnRhaW5lclZpcnR1YWxTY3JvbGxFdmVudC5lbGVtZW50Q29udGFpbmVyXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBtb3VzZVBvc2l0aW9uLmNsaWVudFggPSByZXN1bHQuY2xpZW50WDtcbiAgICAgICAgICAgIG1vdXNlUG9zaXRpb24uY2xpZW50WSA9IHJlc3VsdC5jbGllbnRZO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCBkcmFnRW5kRXZlbnQgPSB7IG1vdXNlUG9zaXRpb24sIGVsZW1lbnREcmFnOiBkcmFnSXRlbUluQ29udGFpbmVyVmlydHVhbFNjcm9sbEV2ZW50LmVsZW1lbnREcmFnLCBpdGVtRHJhZ0luZm86IHRoaXMuZHJhZ0Ryb3BTZXJ2aWNlLkl0ZW1EcmFnSW5mbyB9O1xuXG4gICAgICAgICAgdGhpcy5kcmFnRHJvcFNlcnZpY2UuSXRlbURyYWdJbmZvID0gdW5kZWZpbmVkO1xuICAgICAgICAgIHRoaXMuZHJhZ0Ryb3BTZXJ2aWNlLk9uRHJhZ0VuZC5uZXh0KGRyYWdFbmRFdmVudCk7XG4gICAgICAgICAgZHJhZ0l0ZW1JbkNvbnRhaW5lclZpcnR1YWxTY3JvbGxFdmVudC5lbGVtZW50RHJhZy5yZW1vdmUoKTtcbiAgICAgICAgICByZW1vdmVDbGFzcygpO1xuICAgICAgICB9KVxuICAgICAgKTtcblxuICAgICAgZnJvbUV2ZW50PE1vdXNlRXZlbnQ+KGRvY3VtZW50LCAnbW91c2Vtb3ZlJylcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgdGFwKChldmVudE1vdXNlbW92ZSkgPT4ge1xuICAgICAgICAgICAgc3RvcEV2ZW50TW91c2UoZXZlbnRNb3VzZW1vdmUpO1xuICAgICAgICAgICAgY29uc3QgeyBjbGllbnRYLCBjbGllbnRZIH0gPSBldmVudE1vdXNlbW92ZTtcbiAgICAgICAgICAgIGNvbnN0IG1vdXNlUG9zaXRpb24gPSB7IGNsaWVudFgsIGNsaWVudFkgfTtcblxuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy5nZXRDbGllbnRQb3NpdGlvbihcbiAgICAgICAgICAgICAgZHJhZ0l0ZW1JbkNvbnRhaW5lclZpcnR1YWxTY3JvbGxFdmVudC5lbGVtZW50RHJhZyxcbiAgICAgICAgICAgICAgbW91c2VQb3NpdGlvbixcbiAgICAgICAgICAgICAgZHJhZ0l0ZW1JbkNvbnRhaW5lclZpcnR1YWxTY3JvbGxFdmVudC5kaXN0YW5jZVN0YXJ0RWxlbWVudEFuZE1vdXNlTGVmdCxcbiAgICAgICAgICAgICAgZHJhZ0l0ZW1JbkNvbnRhaW5lclZpcnR1YWxTY3JvbGxFdmVudC5kaXN0YW5jZVN0YXJ0RWxlbWVudEFuZE1vdXNlVG9wLFxuICAgICAgICAgICAgICBkcmFnSXRlbUluQ29udGFpbmVyVmlydHVhbFNjcm9sbEV2ZW50LmRyYWdCb3VuZGFyeSxcbiAgICAgICAgICAgICAgZHJhZ0l0ZW1JbkNvbnRhaW5lclZpcnR1YWxTY3JvbGxFdmVudC5lbGVtZW50Q29udGFpbmVyXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgY29uc3QgZWxlbWVudEtlZXBDb250YWluZXIgPSByZXN1bHQuZWxlbWVudEtlZXBDb250YWluZXI7XG4gICAgICAgICAgICBjb25zdCBsZWZ0ID0gcmVzdWx0LmNsaWVudFggLSBkcmFnSXRlbUluQ29udGFpbmVyVmlydHVhbFNjcm9sbEV2ZW50LmRpc3RhbmNlU3RhcnRFbGVtZW50QW5kTW91c2VMZWZ0O1xuICAgICAgICAgICAgY29uc3QgdG9wID0gcmVzdWx0LmNsaWVudFkgLSBkcmFnSXRlbUluQ29udGFpbmVyVmlydHVhbFNjcm9sbEV2ZW50LmRpc3RhbmNlU3RhcnRFbGVtZW50QW5kTW91c2VUb3A7XG5cbiAgICAgICAgICAgIGlmIChkcmFnSXRlbUluQ29udGFpbmVyVmlydHVhbFNjcm9sbEV2ZW50LmRyYWdCb3VuZGFyeSAmJiBkcmFnSXRlbUluQ29udGFpbmVyVmlydHVhbFNjcm9sbEV2ZW50LmRyYWdCb3VuZGFyeUFjY2VwdE1vdXNlTGVhdmVDb250YWluZXIpIHtcbiAgICAgICAgICAgICAgaWYgKGNsaWVudFggPCByZXN1bHQudmlld3BvcnQubGVmdCkge1xuICAgICAgICAgICAgICAgIG1vdXNlUG9zaXRpb24uY2xpZW50WCA9IHJlc3VsdC52aWV3cG9ydC5sZWZ0O1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmIChjbGllbnRYID4gcmVzdWx0LnZpZXdwb3J0LndpZHRoKSB7XG4gICAgICAgICAgICAgICAgbW91c2VQb3NpdGlvbi5jbGllbnRYID0gcmVzdWx0LnZpZXdwb3J0LndpZHRoO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmIChjbGllbnRZIDwgcmVzdWx0LnZpZXdwb3J0LnRvcCkge1xuICAgICAgICAgICAgICAgIG1vdXNlUG9zaXRpb24uY2xpZW50WSA9IHJlc3VsdC52aWV3cG9ydC50b3A7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaWYgKGNsaWVudFkgPiByZXN1bHQudmlld3BvcnQuaGVpZ2h0KSB7XG4gICAgICAgICAgICAgICAgbW91c2VQb3NpdGlvbi5jbGllbnRZID0gcmVzdWx0LnZpZXdwb3J0LmhlaWdodDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZHJhZ0l0ZW1JbkNvbnRhaW5lclZpcnR1YWxTY3JvbGxFdmVudC5lbGVtZW50RHJhZy5zdHlsZS5sZWZ0ID0gYCR7bGVmdH1weGA7XG4gICAgICAgICAgICBkcmFnSXRlbUluQ29udGFpbmVyVmlydHVhbFNjcm9sbEV2ZW50LmVsZW1lbnREcmFnLnN0eWxlLnRvcCA9IGAke3RvcH1weGA7XG5cbiAgICAgICAgICAgIHRoaXMuZHJhZ0Ryb3BTZXJ2aWNlLk9uRHJhZ2dpbmcubmV4dCh7IG1vdXNlUG9zaXRpb24sIGVsZW1lbnREcmFnOiBkcmFnSXRlbUluQ29udGFpbmVyVmlydHVhbFNjcm9sbEV2ZW50LmVsZW1lbnREcmFnLCBlbGVtZW50S2VlcENvbnRhaW5lciwgaXRlbURyYWdJbmZvOiB0aGlzLmRyYWdEcm9wU2VydmljZS5JdGVtRHJhZ0luZm8gfSk7XG4gICAgICAgICAgfSksXG4gICAgICAgICAgdGFrZVVudGlsKGRvY3VtZW50TW91c2VVcCksXG4gICAgICAgICAgdGFrZVVudGlsKHRoaXMub25EZXN0cm95KVxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qIEZVTkNUSU9OUyAqL1xuXG4gIHByb3RlY3RlZCBnZXRDbGllbnRQb3NpdGlvbihcbiAgICBlbGVtZW50OiBIVE1MRWxlbWVudCxcbiAgICBtb3VzZVBvc2l0aW9uOiB7IGNsaWVudFg6IG51bWJlcjsgY2xpZW50WTogbnVtYmVyIH0sXG4gICAgZGlzdGFuY2VTdGFydEVsZW1lbnRBbmRNb3VzZUxlZnQ6IG51bWJlcixcbiAgICBkaXN0YW5jZVN0YXJ0RWxlbWVudEFuZE1vdXNlVG9wOiBudW1iZXIsXG4gICAgZHJhZ0JvdW5kYXJ5PzogYm9vbGVhbixcbiAgICBlbGVtZW50Q29udGFpbmVyPzogSFRNTEVsZW1lbnRcbiAgKTogeyBjbGllbnRYOiBudW1iZXI7IGNsaWVudFk6IG51bWJlcjsgZWxlbWVudEtlZXBDb250YWluZXI6IGJvb2xlYW47IHZpZXdwb3J0OiBJQm91bmRpbmdDbGllbnRSZWN0IH0ge1xuICAgIGxldCB2aWV3cG9ydCA9IGdldFZpZXdwb3J0KCkgYXMgSUJvdW5kaW5nQ2xpZW50UmVjdDtcbiAgICBjb25zdCByZWN0RWxlbWVudCA9IGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgY29uc3QgY29udGFpbmVyQnlJZCA9IHRoaXMuZHJhZ0Ryb3BTZXJ2aWNlLkNvbnRhaW5lcigpLmdldChlbGVtZW50LmdldEF0dHJpYnV0ZSgnZ3JvdXBJRCcpIHx8ICcnKTtcbiAgICBjb25zdCBjb250YWluZXJJdGVtID0gZWxlbWVudENvbnRhaW5lciB8fCBjb250YWluZXJCeUlkPy5lbGVtZW50U2Nyb2xsIHx8IGNvbnRhaW5lckJ5SWQ/LmVsZW1lbnQgfHwgZG9jdW1lbnQuYm9keTtcbiAgICBsZXQgeyBjbGllbnRYLCBjbGllbnRZIH0gPSBtb3VzZVBvc2l0aW9uO1xuXG4gICAgdmlld3BvcnQubGVmdCA9IDA7XG4gICAgdmlld3BvcnQudG9wID0gMDtcbiAgICBpZiAoZHJhZ0JvdW5kYXJ5KSB7XG4gICAgICB2aWV3cG9ydCA9IGNsb25lSUJvdW5kaW5nQ2xpZW50UmVjdChjb250YWluZXJJdGVtLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpKTtcbiAgICAgIHZpZXdwb3J0LmhlaWdodCA9IHZpZXdwb3J0LnRvcCArIHZpZXdwb3J0LmhlaWdodDtcbiAgICAgIHZpZXdwb3J0LndpZHRoID0gdmlld3BvcnQubGVmdCArIHZpZXdwb3J0LndpZHRoO1xuICAgIH1cbiAgICBsZXQgZWxlbWVudEtlZXBDb250YWluZXIgPSBmYWxzZTtcblxuICAgIGlmICgoY2xpZW50WCA+IHZpZXdwb3J0LndpZHRoICYmIGNsaWVudFkgPiB2aWV3cG9ydC5oZWlnaHQpIHx8IChjbGllbnRYIDwgdmlld3BvcnQubGVmdCAmJiBjbGllbnRZIDwgdmlld3BvcnQudG9wKSkge1xuICAgICAgZWxlbWVudEtlZXBDb250YWluZXIgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmIChjbGllbnRYICsgKHJlY3RFbGVtZW50LndpZHRoIC0gZGlzdGFuY2VTdGFydEVsZW1lbnRBbmRNb3VzZUxlZnQpID4gdmlld3BvcnQud2lkdGgpIHtcbiAgICAgIGNsaWVudFggLT0gY2xpZW50WCArIChyZWN0RWxlbWVudC53aWR0aCAtIGRpc3RhbmNlU3RhcnRFbGVtZW50QW5kTW91c2VMZWZ0KSAtIHZpZXdwb3J0LndpZHRoO1xuICAgIH1cbiAgICBpZiAoY2xpZW50WSArIChyZWN0RWxlbWVudC5oZWlnaHQgLSBkaXN0YW5jZVN0YXJ0RWxlbWVudEFuZE1vdXNlVG9wKSA+IHZpZXdwb3J0LmhlaWdodCkge1xuICAgICAgY2xpZW50WSAtPSBjbGllbnRZICsgKHJlY3RFbGVtZW50LmhlaWdodCAtIGRpc3RhbmNlU3RhcnRFbGVtZW50QW5kTW91c2VUb3ApIC0gdmlld3BvcnQuaGVpZ2h0O1xuICAgIH1cbiAgICBpZiAoY2xpZW50WCAtIGRpc3RhbmNlU3RhcnRFbGVtZW50QW5kTW91c2VMZWZ0IDwgKGRyYWdCb3VuZGFyeSAmJiBjb250YWluZXJJdGVtID8gdmlld3BvcnQubGVmdCA6IDApKSB7XG4gICAgICBjbGllbnRYID0gKGRyYWdCb3VuZGFyeSAmJiBjb250YWluZXJJdGVtID8gdmlld3BvcnQubGVmdCA6IDApICsgZGlzdGFuY2VTdGFydEVsZW1lbnRBbmRNb3VzZUxlZnQ7XG4gICAgfVxuICAgIGlmIChjbGllbnRZIC0gZGlzdGFuY2VTdGFydEVsZW1lbnRBbmRNb3VzZVRvcCA8IChkcmFnQm91bmRhcnkgJiYgY29udGFpbmVySXRlbSA/IHZpZXdwb3J0LnRvcCA6IDApKSB7XG4gICAgICBjbGllbnRZID0gKGRyYWdCb3VuZGFyeSAmJiBjb250YWluZXJJdGVtID8gdmlld3BvcnQudG9wIDogMCkgKyBkaXN0YW5jZVN0YXJ0RWxlbWVudEFuZE1vdXNlVG9wO1xuICAgIH1cblxuICAgIHJldHVybiB7IGNsaWVudFgsIGNsaWVudFksIGVsZW1lbnRLZWVwQ29udGFpbmVyLCB2aWV3cG9ydCB9O1xuICB9XG5cbiAgcHJvdGVjdGVkIHVwZGF0ZU1vdXNlRXZlbnRzV2hlbk1vdmVPdmVySWZyYW1lKHBvaW50ZXJFdmVudHM6ICdub25lJyB8ICdhdXRvJykge1xuICAgIGNvbnN0IGZyYW1lcyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdpZnJhbWUnKTtcblxuICAgIGlmICghZnJhbWVzPy5sZW5ndGgpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZyYW1lcy5sZW5ndGg7ICsraSkge1xuICAgICAgZnJhbWVzW2ldLnN0eWxlLnBvaW50ZXJFdmVudHMgPSBwb2ludGVyRXZlbnRzO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMub25EZXN0cm95Lm5leHQoKTtcbiAgICB0aGlzLm9uRGVzdHJveS5jb21wbGV0ZSgpO1xuICB9XG59XG4iXX0=
|
|
138
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhZy1pdGVtLWluLWNvbnRhaW5lci12aXJ0dWFsLXNjcm9sbC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvZHJhZy1kcm9wL3NyYy9kcmFnLWl0ZW0taW4tY29udGFpbmVyLXZpcnR1YWwtc2Nyb2xsLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBYSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXBGLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2RSxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzFELE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHFCQUFxQixDQUFDOztBQVFsRSxNQUFNLE9BQU8sK0NBQStDO0lBQzFELG1CQUFtQjtJQUNULFNBQVMsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO0lBRTFDLGlCQUFpQjtJQUNSLG1CQUFtQixHQUFHLE1BQU0sRUFBWSxDQUFDO0lBRWxELGlCQUFpQjtJQUNQLGVBQWUsR0FBRyxNQUFNLENBQUMsMkJBQTJCLENBQUMsQ0FBQztJQUVoRSxlQUFlO1FBQ2IsTUFBTSxRQUFRLEdBQUcsQ0FBQyxvQkFBNkIsRUFBRSxFQUFFO1lBQ2pELElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO2dCQUMxQixRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLENBQUM7WUFDOUMsQ0FBQztZQUNELFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUM5QyxDQUFDLENBQUM7UUFDRixNQUFNLFdBQVcsR0FBRyxDQUFDLG9CQUE2QixFQUFF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QUFDLGFBQWEsR0FBRyxhQUFhLENBQUM7UUFDaEQsQ0FBQztJQUNILENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzVCLENBQUM7d0dBdktVLCtDQUErQzs0RkFBL0MsK0NBQStDOzs0RkFBL0MsK0NBQStDO2tCQUwzRCxTQUFTO21CQUFDO29CQUNULDhEQUE4RDtvQkFDOUQsUUFBUSxFQUFFLG1EQUFtRDtvQkFDN0QsVUFBVSxFQUFFLElBQUk7aUJBQ2pCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgRGlyZWN0aXZlLCBPbkRlc3Ryb3ksIGluamVjdCwgb3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJQm91bmRpbmdDbGllbnRSZWN0IH0gZnJvbSAnQGxpYnMtdWkvaW50ZXJmYWNlcy10eXBlcyc7XG5pbXBvcnQgeyBjbG9uZUlCb3VuZGluZ0NsaWVudFJlY3QsIGdldFZpZXdwb3J0IH0gZnJvbSAnQGxpYnMtdWkvdXRpbHMnO1xuaW1wb3J0IHsgU3ViamVjdCwgZnJvbUV2ZW50LCB0YWtlVW50aWwsIHRhcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTW9MaWJzU2hhcmVkRHJhZ0Ryb3BTZXJ2aWNlIH0gZnJvbSAnLi9kcmFnLWRyb3Auc2VydmljZSc7XG5pbXBvcnQgeyBJRHJhZ0VuZCB9IGZyb20gJy4vaW50ZXJmYWNlcy9ldmVudC5pbnRlcmZhY2UnO1xuXG5ARGlyZWN0aXZlKHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9kaXJlY3RpdmUtc2VsZWN0b3JcbiAgc2VsZWN0b3I6ICdbTGlic1VpRHJhZ0l0ZW1JbkNvbnRhaW5lclZpcnR1YWxTY3JvbGxEaXJlY3RpdmVdJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgTGlic1VpRHJhZ0l0ZW1JbkNvbnRhaW5lclZpcnR1YWxTY3JvbGxEaXJlY3RpdmUgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICAvLyAjcmVnaW9uIFBST1BFUlRZXG4gIHByb3RlY3RlZCBvbkRlc3Ryb3kgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIC8vICNyZWdpb24gT1VUUFVUXG4gIHJlYWRvbmx5IG91dERyYWdFbmRDb250YWluZXIgPSBvdXRwdXQ8SURyYWdFbmQ+KCk7XG5cbiAgLy8gI3JlZ2lvbiBJTkpFQ1RcbiAgcHJvdGVjdGVkIGRyYWdEcm9wU2VydmljZSA9IGluamVjdChNb0xpYnNTaGFyZWREcmFnRHJvcFNlcnZpY2UpO1xuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICBjb25zdCBhZGRDbGFzcyA9IChpZ25vcmVVc2VyU2VsZWN0Tm9uZTogYm9vbGVhbikgPT4ge1xuICAgICAgaWYgKCFpZ25vcmVVc2VyU2VsZWN0Tm9uZSkge1xuICAgICAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5hZGQoJyFzZWxlY3Qtbm9uZScpO1xuICAgICAgfVxuICAgICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuYWRkKCchY3Vyc29yLW1vdmUnKTtcbiAgICB9O1xuICAgIGNvbnN0IHJlbW92ZUNsYXNzID0gKGlnbm9yZVVzZXJTZWxlY3ROb25lOiBib29sZWFuKSA9PiB7XG4gICAgICBpZiAoIWlnbm9yZVVzZXJTZWxlY3ROb25lKSB7XG4gICAgICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnJlbW92ZSgnIXNlbGVjdC1ub25lJyk7XG4gICAgICB9XG4gICAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5yZW1vdmUoJyFjdXJzb3ItbW92ZScpO1xuICAgIH07XG4gICAgdGhpcy5kcmFnRHJvcFNlcnZpY2UuT25EcmFnRW5kLnBpcGUodGFrZVVudGlsKHRoaXMub25EZXN0cm95KSkuc3Vic2NyaWJlKChlKSA9PiB7XG4gICAgICB0aGlzLm91dERyYWdFbmRDb250YWluZXIuZW1pdChlKTtcbiAgICB9KTtcbiAgICB0aGlzLmRyYWdEcm9wU2VydmljZS5PbkRyYWdJdGVtSW5Db250YWluZXJWaXJ0dWFsU2Nyb2xsLnBpcGUodGFrZVVudGlsKHRoaXMub25EZXN0cm95KSkuc3Vic2NyaWJlKChkcmFnSXRlbUluQ29udGFpbmVyVmlydHVhbFNjcm9sbEV2ZW50KSA9PiB7XG4gICAgICBhZGRDbGFzcyhkcmFnSXRlbUluQ29udGFpbmVyVmlydHVhbFNjcm9sbEV2ZW50Lmlnbm9yZVVzZXJTZWxlY3ROb25lKTtcbiAgICAgIGNvbnN0IHN0b3BFdmVudE1vdXNlID0gKG1vdXNlRXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgICAgaWYgKCFkcmFnSXRlbUluQ29udGFpbmVyVmlydHVhbFNjcm9sbEV2ZW50Lmlnbm9yZVN0b3BFdmVudCkge1xuICAgICAgICAgIG1vdXNlRXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICBtb3VzZUV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICB9XG4gICAgICB9O1xuICAgICAgY29uc3QgZG9jdW1lbnRNb3VzZVVwID0gZnJvbUV2ZW50PE1vdXNlRXZlbnQ+KGRvY3VtZW50LCAnbW91c2V1cCcpLnBpcGUoXG4gICAgICAgIHRhcCgoZXZlbnRNb3VzZVVwKSA9PiB7XG4gICAgICAgICAgdGhpcy51cGRhdGVNb3VzZUV2ZW50c1doZW5Nb3ZlT3ZlcklmcmFtZSgnYXV0bycpO1xuICAgICAgICAgIHN0b3BFdmVudE1vdXNlKGV2ZW50TW91c2VVcCk7XG4gICAgICAgICAgY29uc3QgbW91c2VQb3NpdGlvbiA9IHsgY2xpZW50WDogZXZlbnRNb3VzZVVwLmNsaWVudFgsIGNsaWVudFk6IGV2ZW50TW91c2VVcC5jbGllbnRZIH07XG5cbiAgICAgICAgICBpZiAoZHJhZ0l0ZW1JbkNvbnRhaW5lclZpcnR1YWxTY3JvbGxFdmVudC5kcmFnQm91bmRhcnkgJiYgZHJhZ0l0ZW1JbkNvbnRhaW5lclZpcnR1YWxTY3JvbGxFdmVudC5kcmFnQm91bmRhcnlBY2NlcHRNb3VzZUxlYXZlQ29udGFpbmVyKSB7XG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSB0aGlzLmdldENsaWVudFBvc2l0aW9uKFxuICAgICAgICAgICAgICBkcmFnSXRlbUluQ29udGFpbmVyVmlydHVhbFNjcm9sbEV2ZW50LmVsZW1lbnREcmFnLFxuICAgICAgICAgICAgICBtb3VzZVBvc2l0aW9uLFxuICAgICAgICAgICAgICBkcmFnSXRlbUluQ29udGFpbmVyVmlydHVhbFNjcm9sbEV2ZW50LmRpc3RhbmNlU3RhcnRFbGVtZW50QW5kTW91c2VMZWZ0LFxuICAgICAgICAgICAgICBkcmFnSXRlbUluQ29udGFpbmVyVmlydHVhbFNjcm9sbEV2ZW50LmRpc3RhbmNlU3RhcnRFbGVtZW50QW5kTW91c2VUb3AsXG4gICAgICAgICAgICAgIGRyYWdJdGVtSW5Db250YWluZXJWaXJ0dWFsU2Nyb2xsRXZlbnQuZHJhZ0JvdW5kYXJ5LFxuICAgICAgICAgICAgICBkcmFnSXRlbUluQ29udGFpbmVyVmlydHVhbFNjcm9sbEV2ZW50LmVsZW1lbnRDb250YWluZXJcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIG1vdXNlUG9zaXRpb24uY2xpZW50WCA9IHJlc3VsdC5jbGllbnRYO1xuICAgICAgICAgICAgbW91c2VQb3NpdGlvbi5jbGllbnRZID0gcmVzdWx0LmNsaWVudFk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IGRyYWdFbmRFdmVudCA9IHsgbW91c2VQb3NpdGlvbiwgZWxlbWVudERyYWc6IGRyYWdJdGVtSW5Db250YWluZXJWaXJ0dWFsU2Nyb2xsRXZlbnQuZWxlbWVudERyYWcsIGl0ZW1EcmFnSW5mbzogdGhpcy5kcmFnRHJvcFNlcnZpY2UuSXRlbURyYWdJbmZvIH07XG5cbiAgICAgICAgICB0aGlzLmRyYWdEcm9wU2VydmljZS5JdGVtRHJhZ0luZm8gPSB1bmRlZmluZWQ7XG4gICAgICAgICAgdGhpcy5kcmFnRHJvcFNlcnZpY2UuT25EcmFnRW5kLm5leHQoZHJhZ0VuZEV2ZW50KTtcbiAgICAgICAgICBkcmFnSXRlbUluQ29udGFpbmVyVmlydHVhbFNjcm9sbEV2ZW50LmVsZW1lbnREcmFnLnJlbW92ZSgpO1xuICAgICAgICAgIHJlbW92ZUNsYXNzKGRyYWdJdGVtSW5Db250YWluZXJWaXJ0dWFsU2Nyb2xsRXZlbnQuaWdub3JlVXNlclNlbGVjdE5vbmUpO1xuICAgICAgICB9KVxuICAgICAgKTtcblxuICAgICAgZnJvbUV2ZW50PE1vdXNlRXZlbnQ+KGRvY3VtZW50LCAnbW91c2Vtb3ZlJylcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgdGFwKChldmVudE1vdXNlbW92ZSkgPT4ge1xuICAgICAgICAgICAgc3RvcEV2ZW50TW91c2UoZXZlbnRNb3VzZW1vdmUpO1xuICAgICAgICAgICAgY29uc3QgeyBjbGllbnRYLCBjbGllbnRZIH0gPSBldmVudE1vdXNlbW92ZTtcbiAgICAgICAgICAgIGNvbnN0IG1vdXNlUG9zaXRpb24gPSB7IGNsaWVudFgsIGNsaWVudFkgfTtcblxuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy5nZXRDbGllbnRQb3NpdGlvbihcbiAgICAgICAgICAgICAgZHJhZ0l0ZW1JbkNvbnRhaW5lclZpcnR1YWxTY3JvbGxFdmVudC5lbGVtZW50RHJhZyxcbiAgICAgICAgICAgICAgbW91c2VQb3NpdGlvbixcbiAgICAgICAgICAgICAgZHJhZ0l0ZW1JbkNvbnRhaW5lclZpcnR1YWxTY3JvbGxFdmVudC5kaXN0YW5jZVN0YXJ0RWxlbWVudEFuZE1vdXNlTGVmdCxcbiAgICAgICAgICAgICAgZHJhZ0l0ZW1JbkNvbnRhaW5lclZpcnR1YWxTY3JvbGxFdmVudC5kaXN0YW5jZVN0YXJ0RWxlbWVudEFuZE1vdXNlVG9wLFxuICAgICAgICAgICAgICBkcmFnSXRlbUluQ29udGFpbmVyVmlydHVhbFNjcm9sbEV2ZW50LmRyYWdCb3VuZGFyeSxcbiAgICAgICAgICAgICAgZHJhZ0l0ZW1JbkNvbnRhaW5lclZpcnR1YWxTY3JvbGxFdmVudC5lbGVtZW50Q29udGFpbmVyXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgY29uc3QgZWxlbWVudEtlZXBDb250YWluZXIgPSByZXN1bHQuZWxlbWVudEtlZXBDb250YWluZXI7XG4gICAgICAgICAgICBjb25zdCBsZWZ0ID0gcmVzdWx0LmNsaWVudFggLSBkcmFnSXRlbUluQ29udGFpbmVyVmlydHVhbFNjcm9sbEV2ZW50LmRpc3RhbmNlU3RhcnRFbGVtZW50QW5kTW91c2VMZWZ0O1xuICAgICAgICAgICAgY29uc3QgdG9wID0gcmVzdWx0LmNsaWVudFkgLSBkcmFnSXRlbUluQ29udGFpbmVyVmlydHVhbFNjcm9sbEV2ZW50LmRpc3RhbmNlU3RhcnRFbGVtZW50QW5kTW91c2VUb3A7XG5cbiAgICAgICAgICAgIGlmIChkcmFnSXRlbUluQ29udGFpbmVyVmlydHVhbFNjcm9sbEV2ZW50LmRyYWdCb3VuZGFyeSAmJiBkcmFnSXRlbUluQ29udGFpbmVyVmlydHVhbFNjcm9sbEV2ZW50LmRyYWdCb3VuZGFyeUFjY2VwdE1vdXNlTGVhdmVDb250YWluZXIpIHtcbiAgICAgICAgICAgICAgaWYgKGNsaWVudFggPCByZXN1bHQudmlld3BvcnQubGVmdCkge1xuICAgICAgICAgICAgICAgIG1vdXNlUG9zaXRpb24uY2xpZW50WCA9IHJlc3VsdC52aWV3cG9ydC5sZWZ0O1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmIChjbGllbnRYID4gcmVzdWx0LnZpZXdwb3J0LndpZHRoKSB7XG4gICAgICAgICAgICAgICAgbW91c2VQb3NpdGlvbi5jbGllbnRYID0gcmVzdWx0LnZpZXdwb3J0LndpZHRoO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmIChjbGllbnRZIDwgcmVzdWx0LnZpZXdwb3J0LnRvcCkge1xuICAgICAgICAgICAgICAgIG1vdXNlUG9zaXRpb24uY2xpZW50WSA9IHJlc3VsdC52aWV3cG9ydC50b3A7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaWYgKGNsaWVudFkgPiByZXN1bHQudmlld3BvcnQuaGVpZ2h0KSB7XG4gICAgICAgICAgICAgICAgbW91c2VQb3NpdGlvbi5jbGllbnRZID0gcmVzdWx0LnZpZXdwb3J0LmhlaWdodDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZHJhZ0l0ZW1JbkNvbnRhaW5lclZpcnR1YWxTY3JvbGxFdmVudC5lbGVtZW50RHJhZy5zdHlsZS5sZWZ0ID0gYCR7bGVmdH1weGA7XG4gICAgICAgICAgICBkcmFnSXRlbUluQ29udGFpbmVyVmlydHVhbFNjcm9sbEV2ZW50LmVsZW1lbnREcmFnLnN0eWxlLnRvcCA9IGAke3RvcH1weGA7XG5cbiAgICAgICAgICAgIHRoaXMuZHJhZ0Ryb3BTZXJ2aWNlLk9uRHJhZ2dpbmcubmV4dCh7IG1vdXNlUG9zaXRpb24sIGVsZW1lbnREcmFnOiBkcmFnSXRlbUluQ29udGFpbmVyVmlydHVhbFNjcm9sbEV2ZW50LmVsZW1lbnREcmFnLCBlbGVtZW50S2VlcENvbnRhaW5lciwgaXRlbURyYWdJbmZvOiB0aGlzLmRyYWdEcm9wU2VydmljZS5JdGVtRHJhZ0luZm8gfSk7XG4gICAgICAgICAgfSksXG4gICAgICAgICAgdGFrZVVudGlsKGRvY3VtZW50TW91c2VVcCksXG4gICAgICAgICAgdGFrZVVudGlsKHRoaXMub25EZXN0cm95KVxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qIEZVTkNUSU9OUyAqL1xuXG4gIHByb3RlY3RlZCBnZXRDbGllbnRQb3NpdGlvbihcbiAgICBlbGVtZW50OiBIVE1MRWxlbWVudCxcbiAgICBtb3VzZVBvc2l0aW9uOiB7IGNsaWVudFg6IG51bWJlcjsgY2xpZW50WTogbnVtYmVyIH0sXG4gICAgZGlzdGFuY2VTdGFydEVsZW1lbnRBbmRNb3VzZUxlZnQ6IG51bWJlcixcbiAgICBkaXN0YW5jZVN0YXJ0RWxlbWVudEFuZE1vdXNlVG9wOiBudW1iZXIsXG4gICAgZHJhZ0JvdW5kYXJ5PzogYm9vbGVhbixcbiAgICBlbGVtZW50Q29udGFpbmVyPzogSFRNTEVsZW1lbnRcbiAgKTogeyBjbGllbnRYOiBudW1iZXI7IGNsaWVudFk6IG51bWJlcjsgZWxlbWVudEtlZXBDb250YWluZXI6IGJvb2xlYW47IHZpZXdwb3J0OiBJQm91bmRpbmdDbGllbnRSZWN0IH0ge1xuICAgIGxldCB2aWV3cG9ydCA9IGdldFZpZXdwb3J0KCkgYXMgSUJvdW5kaW5nQ2xpZW50UmVjdDtcbiAgICBjb25zdCByZWN0RWxlbWVudCA9IGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgY29uc3QgY29udGFpbmVyQnlJZCA9IHRoaXMuZHJhZ0Ryb3BTZXJ2aWNlLkNvbnRhaW5lcigpLmdldChlbGVtZW50LmdldEF0dHJpYnV0ZSgnZ3JvdXBJRCcpIHx8ICcnKTtcbiAgICBjb25zdCBjb250YWluZXJJdGVtID0gZWxlbWVudENvbnRhaW5lciB8fCBjb250YWluZXJCeUlkPy5lbGVtZW50U2Nyb2xsIHx8IGNvbnRhaW5lckJ5SWQ/LmVsZW1lbnQgfHwgZG9jdW1lbnQuYm9keTtcbiAgICBsZXQgeyBjbGllbnRYLCBjbGllbnRZIH0gPSBtb3VzZVBvc2l0aW9uO1xuXG4gICAgdmlld3BvcnQubGVmdCA9IDA7XG4gICAgdmlld3BvcnQudG9wID0gMDtcbiAgICBpZiAoZHJhZ0JvdW5kYXJ5KSB7XG4gICAgICB2aWV3cG9ydCA9IGNsb25lSUJvdW5kaW5nQ2xpZW50UmVjdChjb250YWluZXJJdGVtLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpKTtcbiAgICAgIHZpZXdwb3J0LmhlaWdodCA9IHZpZXdwb3J0LnRvcCArIHZpZXdwb3J0LmhlaWdodDtcbiAgICAgIHZpZXdwb3J0LndpZHRoID0gdmlld3BvcnQubGVmdCArIHZpZXdwb3J0LndpZHRoO1xuICAgIH1cbiAgICBsZXQgZWxlbWVudEtlZXBDb250YWluZXIgPSBmYWxzZTtcblxuICAgIGlmICgoY2xpZW50WCA+IHZpZXdwb3J0LndpZHRoICYmIGNsaWVudFkgPiB2aWV3cG9ydC5oZWlnaHQpIHx8IChjbGllbnRYIDwgdmlld3BvcnQubGVmdCAmJiBjbGllbnRZIDwgdmlld3BvcnQudG9wKSkge1xuICAgICAgZWxlbWVudEtlZXBDb250YWluZXIgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmIChjbGllbnRYICsgKHJlY3RFbGVtZW50LndpZHRoIC0gZGlzdGFuY2VTdGFydEVsZW1lbnRBbmRNb3VzZUxlZnQpID4gdmlld3BvcnQud2lkdGgpIHtcbiAgICAgIGNsaWVudFggLT0gY2xpZW50WCArIChyZWN0RWxlbWVudC53aWR0aCAtIGRpc3RhbmNlU3RhcnRFbGVtZW50QW5kTW91c2VMZWZ0KSAtIHZpZXdwb3J0LndpZHRoO1xuICAgIH1cbiAgICBpZiAoY2xpZW50WSArIChyZWN0RWxlbWVudC5oZWlnaHQgLSBkaXN0YW5jZVN0YXJ0RWxlbWVudEFuZE1vdXNlVG9wKSA+IHZpZXdwb3J0LmhlaWdodCkge1xuICAgICAgY2xpZW50WSAtPSBjbGllbnRZICsgKHJlY3RFbGVtZW50LmhlaWdodCAtIGRpc3RhbmNlU3RhcnRFbGVtZW50QW5kTW91c2VUb3ApIC0gdmlld3BvcnQuaGVpZ2h0O1xuICAgIH1cbiAgICBpZiAoY2xpZW50WCAtIGRpc3RhbmNlU3RhcnRFbGVtZW50QW5kTW91c2VMZWZ0IDwgKGRyYWdCb3VuZGFyeSAmJiBjb250YWluZXJJdGVtID8gdmlld3BvcnQubGVmdCA6IDApKSB7XG4gICAgICBjbGllbnRYID0gKGRyYWdCb3VuZGFyeSAmJiBjb250YWluZXJJdGVtID8gdmlld3BvcnQubGVmdCA6IDApICsgZGlzdGFuY2VTdGFydEVsZW1lbnRBbmRNb3VzZUxlZnQ7XG4gICAgfVxuICAgIGlmIChjbGllbnRZIC0gZGlzdGFuY2VTdGFydEVsZW1lbnRBbmRNb3VzZVRvcCA8IChkcmFnQm91bmRhcnkgJiYgY29udGFpbmVySXRlbSA/IHZpZXdwb3J0LnRvcCA6IDApKSB7XG4gICAgICBjbGllbnRZID0gKGRyYWdCb3VuZGFyeSAmJiBjb250YWluZXJJdGVtID8gdmlld3BvcnQudG9wIDogMCkgKyBkaXN0YW5jZVN0YXJ0RWxlbWVudEFuZE1vdXNlVG9wO1xuICAgIH1cblxuICAgIHJldHVybiB7IGNsaWVudFgsIGNsaWVudFksIGVsZW1lbnRLZWVwQ29udGFpbmVyLCB2aWV3cG9ydCB9O1xuICB9XG5cbiAgcHJvdGVjdGVkIHVwZGF0ZU1vdXNlRXZlbnRzV2hlbk1vdmVPdmVySWZyYW1lKHBvaW50ZXJFdmVudHM6ICdub25lJyB8ICdhdXRvJykge1xuICAgIGNvbnN0IGZyYW1lcyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdpZnJhbWUnKTtcblxuICAgIGlmICghZnJhbWVzPy5sZW5ndGgpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZyYW1lcy5sZW5ndGg7ICsraSkge1xuICAgICAgZnJhbWVzW2ldLnN0eWxlLnBvaW50ZXJFdmVudHMgPSBwb2ludGVyRXZlbnRzO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMub25EZXN0cm95Lm5leHQoKTtcbiAgICB0aGlzLm9uRGVzdHJveS5jb21wbGV0ZSgpO1xuICB9XG59XG4iXX0=
|