footprintjs 10.1.0 → 10.2.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/CLAUDE.md +18 -0
- package/dist/esm/index.d.ts +2 -0
- package/dist/esm/index.js +1 -1
- package/dist/esm/lib/attempt/category.d.ts +6 -0
- package/dist/esm/lib/attempt/category.js +26 -2
- package/dist/esm/lib/attempt/runner.d.ts +3 -1
- package/dist/esm/lib/attempt/runner.js +26 -6
- package/dist/esm/lib/engine/handlers/ChildrenExecutor.js +36 -6
- package/dist/esm/lib/engine/handlers/DeciderHandler.js +9 -5
- package/dist/esm/lib/engine/handlers/SelectorHandler.js +6 -5
- package/dist/esm/lib/engine/handlers/SubflowExecutor.js +5 -2
- package/dist/esm/lib/engine/handlers/commitStage.d.ts +7 -0
- package/dist/esm/lib/engine/handlers/commitStage.js +22 -4
- package/dist/esm/lib/engine/handlers/stageError.d.ts +2 -0
- package/dist/esm/lib/engine/handlers/stageError.js +13 -1
- package/dist/esm/lib/engine/narrative/FlowRecorderDispatcher.d.ts +2 -1
- package/dist/esm/lib/engine/narrative/FlowRecorderDispatcher.js +6 -2
- package/dist/esm/lib/engine/narrative/types.d.ts +4 -1
- package/dist/esm/lib/engine/narrative/types.js +1 -1
- package/dist/esm/lib/engine/traversal/FlowchartTraverser.js +14 -6
- package/dist/esm/lib/errors/terminalFailure.d.ts +29 -0
- package/dist/esm/lib/errors/terminalFailure.js +60 -0
- package/dist/esm/lib/memory/StageContext.d.ts +14 -0
- package/dist/esm/lib/memory/StageContext.js +32 -1
- package/dist/esm/lib/memory/attention.d.ts +26 -0
- package/dist/esm/lib/memory/attention.js +171 -0
- package/dist/esm/lib/memory/frameTypes.d.ts +8 -0
- package/dist/esm/lib/memory/frameTypes.js +1 -1
- package/dist/esm/lib/recorder/ControlDepRecorder.d.ts +14 -0
- package/dist/esm/lib/recorder/ControlDepRecorder.js +18 -1
- package/dist/esm/lib/runner/FlowChartExecutor.d.ts +4 -0
- package/dist/esm/lib/runner/FlowChartExecutor.js +163 -127
- package/dist/index.js +1 -1
- package/dist/lib/attempt/category.js +27 -2
- package/dist/lib/attempt/runner.js +25 -5
- package/dist/lib/engine/handlers/ChildrenExecutor.js +36 -6
- package/dist/lib/engine/handlers/DeciderHandler.js +7 -3
- package/dist/lib/engine/handlers/SelectorHandler.js +4 -3
- package/dist/lib/engine/handlers/SubflowExecutor.js +5 -2
- package/dist/lib/engine/handlers/commitStage.js +24 -5
- package/dist/lib/engine/handlers/stageError.js +15 -2
- package/dist/lib/engine/narrative/FlowRecorderDispatcher.js +6 -2
- package/dist/lib/engine/narrative/types.js +1 -1
- package/dist/lib/engine/traversal/FlowchartTraverser.js +12 -4
- package/dist/lib/errors/terminalFailure.js +64 -0
- package/dist/lib/memory/StageContext.js +32 -1
- package/dist/lib/memory/attention.js +175 -0
- package/dist/lib/memory/frameTypes.js +1 -1
- package/dist/lib/recorder/ControlDepRecorder.js +18 -1
- package/dist/lib/runner/FlowChartExecutor.js +163 -127
- package/dist/types/index.d.ts +2 -0
- package/dist/types/lib/attempt/category.d.ts +6 -0
- package/dist/types/lib/attempt/runner.d.ts +3 -1
- package/dist/types/lib/engine/handlers/commitStage.d.ts +7 -0
- package/dist/types/lib/engine/handlers/stageError.d.ts +2 -0
- package/dist/types/lib/engine/narrative/FlowRecorderDispatcher.d.ts +2 -1
- package/dist/types/lib/engine/narrative/types.d.ts +4 -1
- package/dist/types/lib/errors/terminalFailure.d.ts +29 -0
- package/dist/types/lib/memory/StageContext.d.ts +14 -0
- package/dist/types/lib/memory/attention.d.ts +26 -0
- package/dist/types/lib/memory/frameTypes.d.ts +8 -0
- package/dist/types/lib/recorder/ControlDepRecorder.d.ts +14 -0
- package/dist/types/lib/runner/FlowChartExecutor.d.ts +4 -0
- package/package.json +6 -6
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
import type { AttemptRecord } from '../../attempt/types.js';
|
|
14
14
|
import type { DecisionEvidence, SelectionEvidence } from '../../decide/types.js';
|
|
15
15
|
import type { StructuredErrorInfo } from '../../errors/errorInfo.js';
|
|
16
|
+
import type { TerminalFailureContext } from '../../errors/terminalFailure.js';
|
|
16
17
|
import type { FlowRecorder, IControlFlowNarrative, StageType, TraversalContext } from './types.js';
|
|
17
18
|
export declare class FlowRecorderDispatcher implements IControlFlowNarrative {
|
|
18
19
|
private recorders;
|
|
@@ -42,7 +43,7 @@ export declare class FlowRecorderDispatcher implements IControlFlowNarrative {
|
|
|
42
43
|
onResume(stageName: string, stageId: string, hasInput: boolean, traversalContext?: TraversalContext): void;
|
|
43
44
|
onRunStart(input: unknown, traversalContext?: TraversalContext): void;
|
|
44
45
|
onRunEnd(output: unknown, traversalContext?: TraversalContext): void;
|
|
45
|
-
onRunFailed(error: StructuredErrorInfo, traversalContext?: TraversalContext): void;
|
|
46
|
+
onRunFailed(error: StructuredErrorInfo, traversalContext?: TraversalContext, failure?: TerminalFailureContext): void;
|
|
46
47
|
/**
|
|
47
48
|
* Returns sentences from an attached NarrativeFlowRecorder (looked up by ID).
|
|
48
49
|
* Callers that need sentences should attach a NarrativeFlowRecorder with id 'narrative'
|
|
@@ -176,10 +176,14 @@ export class FlowRecorderDispatcher {
|
|
|
176
176
|
const event = { payload: output, traversalContext };
|
|
177
177
|
fire(this.recorders, 'onRunEnd', event, FLOW_FAILURE);
|
|
178
178
|
}
|
|
179
|
-
onRunFailed(error, traversalContext) {
|
|
179
|
+
onRunFailed(error, traversalContext, failure) {
|
|
180
180
|
if (this.recorders.length === 0)
|
|
181
181
|
return;
|
|
182
182
|
const event = { structuredError: error, traversalContext };
|
|
183
|
+
// Keep the new safe projection intact across recorder fan-out, without
|
|
184
|
+
// changing the established mutability of the other event fields.
|
|
185
|
+
if (failure)
|
|
186
|
+
Object.defineProperty(event, 'failure', { value: failure, enumerable: true });
|
|
183
187
|
fire(this.recorders, 'onRunFailed', event, FLOW_FAILURE);
|
|
184
188
|
}
|
|
185
189
|
/**
|
|
@@ -192,4 +196,4 @@ export class FlowRecorderDispatcher {
|
|
|
192
196
|
return narrative?.getSentences() ?? [];
|
|
193
197
|
}
|
|
194
198
|
}
|
|
195
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmxvd1JlY29yZGVyRGlzcGF0Y2hlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvZW5naW5lL25hcnJhdGl2ZS9GbG93UmVjb3JkZXJEaXNwYXRjaGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztHQVdHO0FBS0gsT0FBTyxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQWM5RCxtR0FBbUc7QUFDbkcsTUFBTSxZQUFZLEdBQUcsYUFBYSxDQUFDLHdCQUF3QixDQUFDLENBQUM7QUFFN0QsTUFBTSxPQUFPLHNCQUFzQjtJQUN6QixTQUFTLEdBQW1CLEVBQUUsQ0FBQztJQUV2QyxzRkFBc0Y7SUFDdEYsTUFBTSxDQUFDLFFBQXNCO1FBQzNCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRCxrREFBa0Q7SUFDbEQsTUFBTSxDQUFDLEVBQVU7UUFDZixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFRCxzREFBc0Q7SUFDdEQsaUJBQWlCO1FBQ2YsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFRCxrR0FBa0c7SUFDbEcsZUFBZSxDQUF3QyxFQUFVO1FBQy9ELE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFrQixDQUFDO0lBQ2xFLENBQUM7SUFFRCw2RUFBNkU7SUFFN0UsZUFBZSxDQUNiLFNBQWlCLEVBQ2pCLFdBQStCLEVBQy9CLGdCQUE4QyxFQUM5QyxT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QyxLQUEwQixFQUFFLGdCQUFtQztRQUN6RSxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxLQUFLLENBQUM7WUFBRSxPQUFPO1FBQ3hDLE1BQU0sS0FBSyxHQUFHLEVBQUUsZUFBZSxFQUFFLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxDQUFDO1FBQzNELElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxZQUFZO1FBQ1YsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBd0IsV0FBVyxDQUFDLENBQUM7UUFDM0UsT0FBTyxTQUFTLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxDQUFDO0lBQ3pDLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogRmxvd1JlY29yZGVyRGlzcGF0Y2hlciDigJQgRmFucyBvdXQgY29udHJvbCBmbG93IGV2ZW50cyB0byBOIGF0dGFjaGVkIEZsb3dSZWNvcmRlcnMuXG4gKlxuICogSW1wbGVtZW50cyBJQ29udHJvbEZsb3dOYXJyYXRpdmUgc28gaXQgY2FuIHJlcGxhY2UgdGhlIHNpbmdsZVxuICogQ29udHJvbEZsb3dOYXJyYXRpdmVHZW5lcmF0b3IgaW4gdGhlIHRyYXZlcnNlcidzIEhhbmRsZXJEZXBzLlxuICpcbiAqIEV2ZXJ5IGV2ZW50IGdvZXMgdGhyb3VnaCBgcmVjb3JkZXIvaG9va3MudHMgwrcgZmlyZWAgKHRoZSBvbmUgcGVyLXJlY29yZGVyIGxvb3ApOiBhIGZhaWxpbmdcbiAqIHJlY29yZGVyIGlzIHdhcm5lZCBhYm91dCBpbiBkZXYgbW9kZSBhbmQgbmV2ZXIgYnJlYWtzIGV4ZWN1dGlvbiDigJQgZXZlbiB3aGVuIHdoYXQgaXQgdGhyZXdcbiAqIGNhbm5vdCBiZSB0dXJuZWQgaW50byBhIHN0cmluZy5cbiAqXG4gKiBXaGVuIG5vIHJlY29yZGVycyBhcmUgYXR0YWNoZWQsIGV2ZXJ5IG1ldGhvZCBpcyBhIGZhc3Qgbm8tb3AgKGVtcHR5IGFycmF5IGNoZWNrKS5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IEF0dGVtcHRSZWNvcmQgfSBmcm9tICcuLi8uLi9hdHRlbXB0L3R5cGVzLmpzJztcbmltcG9ydCB0eXBlIHsgRGVjaXNpb25FdmlkZW5jZSwgU2VsZWN0aW9uRXZpZGVuY2UgfSBmcm9tICcuLi8uLi9kZWNpZGUvdHlwZXMuanMnO1xuaW1wb3J0IHR5cGUgeyBTdHJ1Y3R1cmVkRXJyb3JJbmZvIH0gZnJvbSAnLi4vLi4vZXJyb3JzL2Vycm9ySW5mby5qcyc7XG5pbXBvcnQgeyBmaXJlLCB3YXJuSW5EZXZNb2RlIH0gZnJvbSAnLi4vLi4vcmVjb3JkZXIvaG9va3MuanMnO1xuaW1wb3J0IHR5cGUgeyBOYXJyYXRpdmVGbG93UmVjb3JkZXIgfSBmcm9tICcuL05hcnJhdGl2ZUZsb3dSZWNvcmRlci5qcyc7XG5pbXBvcnQgdHlwZSB7XG4gIEZsb3dBdHRlbXB0RXZlbnQsXG4gIEZsb3dCcmVha0V2ZW50LFxuICBGbG93UmVjb3JkZXIsXG4gIEZsb3dTdGFnZUV2ZW50LFxuICBGbG93U3RhZ2VSZXRyeUV2ZW50LFxuICBGbG93VGhyb3R0bGVkRXZlbnQsXG4gIElDb250cm9sRmxvd05hcnJhdGl2ZSxcbiAgU3RhZ2VUeXBlLFxuICBUcmF2ZXJzYWxDb250ZXh0LFxufSBmcm9tICcuL3R5cGVzLmpzJztcblxuLyoqIFRoZSBmbG93IGNoYW5uZWwncyBpc29sYXRpb246IGEgdGhyb3dpbmcgcmVjb3JkZXIgaXMgd2FybmVkIGFib3V0IGluIGRldiBtb2RlLCB0aGVuIHNraXBwZWQuICovXG5jb25zdCBGTE9XX0ZBSUxVUkUgPSB3YXJuSW5EZXZNb2RlKCdGbG93UmVjb3JkZXJEaXNwYXRjaGVyJyk7XG5cbmV4cG9ydCBjbGFzcyBGbG93UmVjb3JkZXJEaXNwYXRjaGVyIGltcGxlbWVudHMgSUNvbnRyb2xGbG93TmFycmF0aXZlIHtcbiAgcHJpdmF0ZSByZWNvcmRlcnM6IEZsb3dSZWNvcmRlcltdID0gW107XG5cbiAgLyoqIEF0dGFjaCBhIEZsb3dSZWNvcmRlci4gRHVwbGljYXRlIElEcyBhcmUgYWxsb3dlZCAoc2FtZSBhcyBzY29wZSBTY29wZVJlY29yZGVyKS4gKi9cbiAgYXR0YWNoKHJlY29yZGVyOiBGbG93UmVjb3JkZXIpOiB2b2lkIHtcbiAgICB0aGlzLnJlY29yZGVycy5wdXNoKHJlY29yZGVyKTtcbiAgfVxuXG4gIC8qKiBEZXRhY2ggYWxsIEZsb3dSZWNvcmRlcnMgd2l0aCB0aGUgZ2l2ZW4gSUQuICovXG4gIGRldGFjaChpZDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5yZWNvcmRlcnMgPSB0aGlzLnJlY29yZGVycy5maWx0ZXIoKHIpID0+IHIuaWQgIT09IGlkKTtcbiAgfVxuXG4gIC8qKiBSZXR1cm5zIGEgZGVmZW5zaXZlIGNvcHkgb2YgYXR0YWNoZWQgcmVjb3JkZXJzLiAqL1xuICBnZXRTY29wZVJlY29yZGVycygpOiBGbG93UmVjb3JkZXJbXSB7XG4gICAgcmV0dXJuIFsuLi50aGlzLnJlY29yZGVyc107XG4gIH1cblxuICAvKiogRmluZCBhIHJlY29yZGVyIGJ5IElELiBVc2VmdWwgZm9yIHJldHJpZXZpbmcgYnVpbHQtaW4gcmVjb3JkZXJzIGxpa2UgTmFycmF0aXZlRmxvd1JlY29yZGVyLiAqL1xuICBnZXRSZWNvcmRlckJ5SWQ8VCBleHRlbmRzIEZsb3dSZWNvcmRlciA9IEZsb3dSZWNvcmRlcj4oaWQ6IHN0cmluZyk6IFQgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLnJlY29yZGVycy5maW5kKChyKSA9PiByLmlkID09PSBpZCkgYXMgVCB8IHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8vIOKUgOKUgCBJQ29udHJvbEZsb3dOYXJyYXRpdmUgaW1wbGVtZW50YXRpb24g4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG5cbiAgb25TdGFnZUV4ZWN1dGVkKFxuICAgIHN0YWdlTmFtZTogc3RyaW5nLFxuICAgIGRlc2NyaXB0aW9uOiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gICAgdHJhdmVyc2FsQ29udGV4dDogVHJhdmVyc2FsQ29udGV4dCB8IHVuZGVmaW5lZCxcbiAgICBzdGFnZVR5cGU6IFN0YWdlVHlwZSxcbiAgKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucmVjb3JkZXJzLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuICAgIGNvbnN0IGV2ZW50OiBGbG93U3RhZ2VFdmVudCA9IHsgc3RhZ2VOYW1lLCBkZXNjcmlwdGlvbiwgdHJhdmVyc2FsQ29udGV4dCwgc3RhZ2VUeXBlIH07XG4gICAgZmlyZSh0aGlzLnJlY29yZGVycywgJ29uU3RhZ2VFeGVjdXRlZCcsIGV2ZW50LCBGTE9XX0ZBSUxVUkUpO1xuICB9XG5cbiAgb25OZXh0KGZyb21TdGFnZTogc3RyaW5nLCB0b1N0YWdlOiBzdHJpbmcsIGRlc2NyaXB0aW9uPzogc3RyaW5nLCB0cmF2ZXJzYWxDb250ZXh0PzogVHJhdmVyc2FsQ29udGV4dCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnJlY29yZGVycy5sZW5ndGggPT09IDApIHJldHVybjtcbiAgICBjb25zdCBldmVudCA9IHsgZnJvbTogZnJvbVN0YWdlLCB0bzogdG9TdGFnZSwgZGVzY3JpcHRpb24sIHRyYXZlcnNhbENvbnRleHQgfTtcbiAgICBmaXJlKHRoaXMucmVjb3JkZXJzLCAnb25OZXh0JywgZXZlbnQsIEZMT1dfRkFJTFVSRSk7XG4gIH1cblxuICBvbkRlY2lzaW9uKFxuICAgIGRlY2lkZXJOYW1lOiBzdHJpbmcsXG4gICAgY2hvc2VuQnJhbmNoOiBzdHJpbmcsXG4gICAgcmF0aW9uYWxlPzogc3RyaW5nLFxuICAgIGRlY2lkZXJEZXNjcmlwdGlvbj86IHN0cmluZyxcbiAgICB0cmF2ZXJzYWxDb250ZXh0PzogVHJhdmVyc2FsQ29udGV4dCxcbiAgICBldmlkZW5jZT86IERlY2lzaW9uRXZpZGVuY2UsXG4gICk6IHZvaWQge1xuICAgIGlmICh0aGlzLnJlY29yZGVycy5sZW5ndGggPT09IDApIHJldHVybjtcbiAgICBjb25zdCBldmVudCA9IHtcbiAgICAgIGRlY2lkZXI6IGRlY2lkZXJOYW1lLFxuICAgICAgY2hvc2VuOiBjaG9zZW5CcmFuY2gsXG4gICAgICByYXRpb25hbGUsXG4gICAgICBkZXNjcmlwdGlvbjogZGVjaWRlckRlc2NyaXB0aW9uLFxuICAgICAgdHJhdmVyc2FsQ29udGV4dCxcbiAgICAgIGV2aWRlbmNlLFxuICAgIH07XG4gICAgZmlyZSh0aGlzLnJlY29yZGVycywgJ29uRGVjaXNpb24nLCBldmVudCwgRkxPV19GQUlMVVJFKTtcbiAgfVxuXG4gIG9uRm9yayhwYXJlbnRTdGFnZTogc3RyaW5nLCBjaGlsZE5hbWVzOiBzdHJpbmdbXSwgdHJhdmVyc2FsQ29udGV4dD86IFRyYXZlcnNhbENvbnRleHQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5yZWNvcmRlcnMubGVuZ3RoID09PSAwKSByZXR1cm47XG4gICAgY29uc3QgZXZlbnQgPSB7IHBhcmVudDogcGFyZW50U3RhZ2UsIGNoaWxkcmVuOiBjaGlsZE5hbWVzLCB0cmF2ZXJzYWxDb250ZXh0IH07XG4gICAgZmlyZSh0aGlzLnJlY29yZGVycywgJ29uRm9yaycsIGV2ZW50LCBGTE9XX0ZBSUxVUkUpO1xuICB9XG5cbiAgb25TZWxlY3RlZChcbiAgICBwYXJlbnRTdGFnZTogc3RyaW5nLFxuICAgIHNlbGVjdGVkTmFtZXM6IHN0cmluZ1tdLFxuICAgIHRvdGFsQ291bnQ6IG51bWJlcixcbiAgICB0cmF2ZXJzYWxDb250ZXh0PzogVHJhdmVyc2FsQ29udGV4dCxcbiAgICBldmlkZW5jZT86IFNlbGVjdGlvbkV2aWRlbmNlLFxuICApOiB2b2lkIHtcbiAgICBpZiAodGhpcy5yZWNvcmRlcnMubGVuZ3RoID09PSAwKSByZXR1cm47XG4gICAgY29uc3QgZXZlbnQgPSB7IHBhcmVudDogcGFyZW50U3RhZ2UsIHNlbGVjdGVkOiBzZWxlY3RlZE5hbWVzLCB0b3RhbDogdG90YWxDb3VudCwgdHJhdmVyc2FsQ29udGV4dCwgZXZpZGVuY2UgfTtcbiAgICBmaXJlKHRoaXMucmVjb3JkZXJzLCAnb25TZWxlY3RlZCcsIGV2ZW50LCBGTE9XX0ZBSUxVUkUpO1xuICB9XG5cbiAgb25TdWJmbG93RW50cnkoXG4gICAgc3ViZmxvd05hbWU6IHN0cmluZyxcbiAgICBzdWJmbG93SWQ/OiBzdHJpbmcsXG4gICAgZGVzY3JpcHRpb24/OiBzdHJpbmcsXG4gICAgdHJhdmVyc2FsQ29udGV4dD86IFRyYXZlcnNhbENvbnRleHQsXG4gICAgbWFwcGVkSW5wdXQ/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucmVjb3JkZXJzLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuICAgIGNvbnN0IGV2ZW50ID0geyBuYW1lOiBzdWJmbG93TmFtZSwgc3ViZmxvd0lkLCBkZXNjcmlwdGlvbiwgdHJhdmVyc2FsQ29udGV4dCwgbWFwcGVkSW5wdXQgfTtcbiAgICBmaXJlKHRoaXMucmVjb3JkZXJzLCAnb25TdWJmbG93RW50cnknLCBldmVudCwgRkxPV19GQUlMVVJFKTtcbiAgfVxuXG4gIG9uU3ViZmxvd0V4aXQoXG4gICAgc3ViZmxvd05hbWU6IHN0cmluZyxcbiAgICBzdWJmbG93SWQ/OiBzdHJpbmcsXG4gICAgdHJhdmVyc2FsQ29udGV4dD86IFRyYXZlcnNhbENvbnRleHQsXG4gICAgb3V0cHV0U3RhdGU/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucmVjb3JkZXJzLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuICAgIGNvbnN0IGV2ZW50ID0geyBuYW1lOiBzdWJmbG93TmFtZSwgc3ViZmxvd0lkLCB0cmF2ZXJzYWxDb250ZXh0LCBvdXRwdXRTdGF0ZSB9O1xuICAgIGZpcmUodGhpcy5yZWNvcmRlcnMsICdvblN1YmZsb3dFeGl0JywgZXZlbnQsIEZMT1dfRkFJTFVSRSk7XG4gIH1cblxuICBvblN1YmZsb3dSZWdpc3RlcmVkKHN1YmZsb3dJZDogc3RyaW5nLCBuYW1lOiBzdHJpbmcsIGRlc2NyaXB0aW9uPzogc3RyaW5nLCBzcGVjU3RydWN0dXJlPzogdW5rbm93bik6IHZvaWQge1xuICAgIGlmICh0aGlzLnJlY29yZGVycy5sZW5ndGggPT09IDApIHJldHVybjtcbiAgICBjb25zdCBldmVudCA9IHsgc3ViZmxvd0lkLCBuYW1lLCBkZXNjcmlwdGlvbiwgc3BlY1N0cnVjdHVyZSB9O1xuICAgIGZpcmUodGhpcy5yZWNvcmRlcnMsICdvblN1YmZsb3dSZWdpc3RlcmVkJywgZXZlbnQsIEZMT1dfRkFJTFVSRSk7XG4gIH1cblxuICBvbkxvb3AodGFyZ2V0U3RhZ2U6IHN0cmluZywgaXRlcmF0aW9uOiBudW1iZXIsIGRlc2NyaXB0aW9uPzogc3RyaW5nLCB0cmF2ZXJzYWxDb250ZXh0PzogVHJhdmVyc2FsQ29udGV4dCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnJlY29yZGVycy5sZW5ndGggPT09IDApIHJldHVybjtcbiAgICBjb25zdCBldmVudCA9IHsgdGFyZ2V0OiB0YXJnZXRTdGFnZSwgaXRlcmF0aW9uLCBkZXNjcmlwdGlvbiwgdHJhdmVyc2FsQ29udGV4dCB9O1xuICAgIGZpcmUodGhpcy5yZWNvcmRlcnMsICdvbkxvb3AnLCBldmVudCwgRkxPV19GQUlMVVJFKTtcbiAgfVxuXG4gIG9uQnJlYWsoXG4gICAgc3RhZ2VOYW1lOiBzdHJpbmcsXG4gICAgdHJhdmVyc2FsQ29udGV4dD86IFRyYXZlcnNhbENvbnRleHQsXG4gICAgcmVhc29uPzogc3RyaW5nLFxuICAgIHByb3BhZ2F0ZWRGcm9tU3ViZmxvdz86IHN0cmluZyxcbiAgKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucmVjb3JkZXJzLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuICAgIGNvbnN0IGV2ZW50OiBGbG93QnJlYWtFdmVudCA9IHtcbiAgICAgIHN0YWdlTmFtZSxcbiAgICAgIC4uLih0cmF2ZXJzYWxDb250ZXh0ICYmIHsgdHJhdmVyc2FsQ29udGV4dCB9KSxcbiAgICAgIC4uLihyZWFzb24gIT09IHVuZGVmaW5lZCAmJiB7IHJlYXNvbiB9KSxcbiAgICAgIC4uLihwcm9wYWdhdGVkRnJvbVN1YmZsb3cgIT09IHVuZGVmaW5lZCAmJiB7IHByb3BhZ2F0ZWRGcm9tU3ViZmxvdyB9KSxcbiAgICB9O1xuICAgIGZpcmUodGhpcy5yZWNvcmRlcnMsICdvbkJyZWFrJywgZXZlbnQsIEZMT1dfRkFJTFVSRSk7XG4gIH1cblxuICBvbkVycm9yKFxuICAgIHN0YWdlTmFtZTogc3RyaW5nLFxuICAgIGVycm9yTWVzc2FnZTogc3RyaW5nLFxuICAgIHN0cnVjdHVyZWRFcnJvcjogU3RydWN0dXJlZEVycm9ySW5mbyxcbiAgICB0cmF2ZXJzYWxDb250ZXh0PzogVHJhdmVyc2FsQ29udGV4dCxcbiAgKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucmVjb3JkZXJzLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuICAgIGNvbnN0IGV2ZW50ID0geyBzdGFnZU5hbWUsIG1lc3NhZ2U6IGVycm9yTWVzc2FnZSwgc3RydWN0dXJlZEVycm9yLCB0cmF2ZXJzYWxDb250ZXh0LCBjaGFubmVsOiAnZmxvdycgYXMgY29uc3QgfTtcbiAgICBmaXJlKHRoaXMucmVjb3JkZXJzLCAnb25FcnJvcicsIGV2ZW50LCBGTE9XX0ZBSUxVUkUpO1xuICB9XG5cbiAgb25BdHRlbXB0KFxuICAgIHN0YWdlTmFtZTogc3RyaW5nLFxuICAgIHN0YWdlSWQ6IHN0cmluZyxcbiAgICByZWNvcmQ6IEF0dGVtcHRSZWNvcmQsXG4gICAgc3RydWN0dXJlZEVycm9yOiBTdHJ1Y3R1cmVkRXJyb3JJbmZvIHwgdW5kZWZpbmVkLFxuICAgIHRyYXZlcnNhbENvbnRleHQ/OiBUcmF2ZXJzYWxDb250ZXh0LFxuICApOiB2b2lkIHtcbiAgICBpZiAodGhpcy5yZWNvcmRlcnMubGVuZ3RoID09PSAwKSByZXR1cm47XG4gICAgY29uc3QgZXZlbnQ6IEZsb3dBdHRlbXB0RXZlbnQgPSB7XG4gICAgICBzdGFnZU5hbWUsXG4gICAgICBzdGFnZUlkLFxuICAgICAgcmVjb3JkLFxuICAgICAgLi4uKHN0cnVjdHVyZWRFcnJvciAhPT0gdW5kZWZpbmVkICYmIHsgc3RydWN0dXJlZEVycm9yIH0pLFxuICAgICAgdHJhdmVyc2FsQ29udGV4dCxcbiAgICAgIGNoYW5uZWw6ICdmbG93JyBhcyBjb25zdCxcbiAgICB9O1xuICAgIGZpcmUodGhpcy5yZWNvcmRlcnMsICdvbkF0dGVtcHQnLCBldmVudCwgRkxPV19GQUlMVVJFKTtcbiAgfVxuXG4gIG9uU3RhZ2VSZXRyeShcbiAgICBzdGFnZU5hbWU6IHN0cmluZyxcbiAgICBzdGFnZUlkOiBzdHJpbmcsXG4gICAgYXR0ZW1wdDogbnVtYmVyLFxuICAgIG1heEF0dGVtcHRzOiBudW1iZXIsXG4gICAgZGVsYXlNczogbnVtYmVyLFxuICAgIHN0cnVjdHVyZWRFcnJvcjogU3RydWN0dXJlZEVycm9ySW5mbyxcbiAgICB0cmF2ZXJzYWxDb250ZXh0PzogVHJhdmVyc2FsQ29udGV4dCxcbiAgKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucmVjb3JkZXJzLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuICAgIGNvbnN0IGV2ZW50OiBGbG93U3RhZ2VSZXRyeUV2ZW50ID0ge1xuICAgICAgc3RhZ2VOYW1lLFxuICAgICAgc3RhZ2VJZCxcbiAgICAgIGF0dGVtcHQsXG4gICAgICBtYXhBdHRlbXB0cyxcbiAgICAgIGRlbGF5TXMsXG4gICAgICBtZXNzYWdlOiBzdHJ1Y3R1cmVkRXJyb3IubWVzc2FnZSxcbiAgICAgIHN0cnVjdHVyZWRFcnJvcixcbiAgICAgIHRyYXZlcnNhbENvbnRleHQsXG4gICAgICBjaGFubmVsOiAnZmxvdycgYXMgY29uc3QsXG4gICAgfTtcbiAgICBmaXJlKHRoaXMucmVjb3JkZXJzLCAnb25TdGFnZVJldHJ5JywgZXZlbnQsIEZMT1dfRkFJTFVSRSk7XG4gIH1cblxuICBvblRocm90dGxlZChcbiAgICBzdGFnZU5hbWU6IHN0cmluZyxcbiAgICBzdGFnZUlkOiBzdHJpbmcsXG4gICAgc3RydWN0dXJlZEVycm9yOiBTdHJ1Y3R1cmVkRXJyb3JJbmZvLFxuICAgIHRyYXZlcnNhbENvbnRleHQ/OiBUcmF2ZXJzYWxDb250ZXh0LFxuICApOiB2b2lkIHtcbiAgICBpZiAodGhpcy5yZWNvcmRlcnMubGVuZ3RoID09PSAwKSByZXR1cm47XG4gICAgY29uc3QgZXZlbnQ6IEZsb3dUaHJvdHRsZWRFdmVudCA9IHtcbiAgICAgIHN0YWdlTmFtZSxcbiAgICAgIHN0YWdlSWQsXG4gICAgICBtZXNzYWdlOiBzdHJ1Y3R1cmVkRXJyb3IubWVzc2FnZSxcbiAgICAgIHN0cnVjdHVyZWRFcnJvcixcbiAgICAgIHRyYXZlcnNhbENvbnRleHQsXG4gICAgICBjaGFubmVsOiAnZmxvdycgYXMgY29uc3QsXG4gICAgfTtcbiAgICBmaXJlKHRoaXMucmVjb3JkZXJzLCAnb25UaHJvdHRsZWQnLCBldmVudCwgRkxPV19GQUlMVVJFKTtcbiAgfVxuXG4gIG9uUGF1c2UoXG4gICAgc3RhZ2VOYW1lOiBzdHJpbmcsXG4gICAgc3RhZ2VJZDogc3RyaW5nLFxuICAgIHBhdXNlRGF0YTogdW5rbm93bixcbiAgICBzdWJmbG93UGF0aDogcmVhZG9ubHkgc3RyaW5nW10sXG4gICAgdHJhdmVyc2FsQ29udGV4dD86IFRyYXZlcnNhbENvbnRleHQsXG4gICk6IHZvaWQge1xuICAgIGlmICh0aGlzLnJlY29yZGVycy5sZW5ndGggPT09IDApIHJldHVybjtcbiAgICBjb25zdCBldmVudCA9IHsgc3RhZ2VOYW1lLCBzdGFnZUlkLCBwYXVzZURhdGEsIHN1YmZsb3dQYXRoLCB0cmF2ZXJzYWxDb250ZXh0LCBjaGFubmVsOiAnZmxvdycgYXMgY29uc3QgfTtcbiAgICBmaXJlKHRoaXMucmVjb3JkZXJzLCAnb25QYXVzZScsIGV2ZW50LCBGTE9XX0ZBSUxVUkUpO1xuICB9XG5cbiAgb25SZXN1bWUoc3RhZ2VOYW1lOiBzdHJpbmcsIHN0YWdlSWQ6IHN0cmluZywgaGFzSW5wdXQ6IGJvb2xlYW4sIHRyYXZlcnNhbENvbnRleHQ/OiBUcmF2ZXJzYWxDb250ZXh0KTogdm9pZCB7XG4gICAgaWYgKHRoaXMucmVjb3JkZXJzLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuICAgIGNvbnN0IGV2ZW50ID0geyBzdGFnZU5hbWUsIHN0YWdlSWQsIGhhc0lucHV0LCB0cmF2ZXJzYWxDb250ZXh0LCBjaGFubmVsOiAnZmxvdycgYXMgY29uc3QgfTtcbiAgICBmaXJlKHRoaXMucmVjb3JkZXJzLCAnb25SZXN1bWUnLCBldmVudCwgRkxPV19GQUlMVVJFKTtcbiAgfVxuXG4gIG9uUnVuU3RhcnQoaW5wdXQ6IHVua25vd24sIHRyYXZlcnNhbENvbnRleHQ/OiBUcmF2ZXJzYWxDb250ZXh0KTogdm9pZCB7XG4gICAgaWYgKHRoaXMucmVjb3JkZXJzLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuICAgIGNvbnN0IGV2ZW50ID0geyBwYXlsb2FkOiBpbnB1dCwgdHJhdmVyc2FsQ29udGV4dCB9O1xuICAgIGZpcmUodGhpcy5yZWNvcmRlcnMsICdvblJ1blN0YXJ0JywgZXZlbnQsIEZMT1dfRkFJTFVSRSk7XG4gIH1cblxuICBvblJ1bkVuZChvdXRwdXQ6IHVua25vd24sIHRyYXZlcnNhbENvbnRleHQ/OiBUcmF2ZXJzYWxDb250ZXh0KTogdm9pZCB7XG4gICAgaWYgKHRoaXMucmVjb3JkZXJzLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuICAgIGNvbnN0IGV2ZW50ID0geyBwYXlsb2FkOiBvdXRwdXQsIHRyYXZlcnNhbENvbnRleHQgfTtcbiAgICBmaXJlKHRoaXMucmVjb3JkZXJzLCAnb25SdW5FbmQnLCBldmVudCwgRkxPV19GQUlMVVJFKTtcbiAgfVxuXG4gIG9uUnVuRmFpbGVkKGVycm9yOiBTdHJ1Y3R1cmVkRXJyb3JJbmZvLCB0cmF2ZXJzYWxDb250ZXh0PzogVHJhdmVyc2FsQ29udGV4dCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnJlY29yZGVycy5sZW5ndGggPT09IDApIHJldHVybjtcbiAgICBjb25zdCBldmVudCA9IHsgc3RydWN0dXJlZEVycm9yOiBlcnJvciwgdHJhdmVyc2FsQ29udGV4dCB9O1xuICAgIGZpcmUodGhpcy5yZWNvcmRlcnMsICdvblJ1bkZhaWxlZCcsIGV2ZW50LCBGTE9XX0ZBSUxVUkUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgc2VudGVuY2VzIGZyb20gYW4gYXR0YWNoZWQgTmFycmF0aXZlRmxvd1JlY29yZGVyIChsb29rZWQgdXAgYnkgSUQpLlxuICAgKiBDYWxsZXJzIHRoYXQgbmVlZCBzZW50ZW5jZXMgc2hvdWxkIGF0dGFjaCBhIE5hcnJhdGl2ZUZsb3dSZWNvcmRlciB3aXRoIGlkICduYXJyYXRpdmUnXG4gICAqIGFuZCByZXRyaWV2ZSBpdCBkaXJlY3RseSB2aWEgZ2V0UmVjb3JkZXJCeUlkKCkgaWYgdGhleSBuZWVkIHR5cGVkIGFjY2Vzcy5cbiAgICovXG4gIGdldFNlbnRlbmNlcygpOiBzdHJpbmdbXSB7XG4gICAgY29uc3QgbmFycmF0aXZlID0gdGhpcy5nZXRSZWNvcmRlckJ5SWQ8TmFycmF0aXZlRmxvd1JlY29yZGVyPignbmFycmF0aXZlJyk7XG4gICAgcmV0dXJuIG5hcnJhdGl2ZT8uZ2V0U2VudGVuY2VzKCkgPz8gW107XG4gIH1cbn1cbiJdfQ==
|
|
199
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmxvd1JlY29yZGVyRGlzcGF0Y2hlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvZW5naW5lL25hcnJhdGl2ZS9GbG93UmVjb3JkZXJEaXNwYXRjaGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztHQVdHO0FBTUgsT0FBTyxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQWU5RCxtR0FBbUc7QUFDbkcsTUFBTSxZQUFZLEdBQUcsYUFBYSxDQUFDLHdCQUF3QixDQUFDLENBQUM7QUFFN0QsTUFBTSxPQUFPLHNCQUFzQjtJQUN6QixTQUFTLEdBQW1CLEVBQUUsQ0FBQztJQUV2QyxzRkFBc0Y7SUFDdEYsTUFBTSxDQUFDLFFBQXNCO1FBQzNCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRCxrREFBa0Q7SUFDbEQsTUFBTSxDQUFDLEVBQVU7UUFDZixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFRCxzREFBc0Q7SUFDdEQsaUJBQWlCO1FBQ2YsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFRCxrR0FBa0c7SUFDbEcsZUFBZSxDQUF3QyxFQUFVO1FBQy9ELE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFrQixDQUFDO0lBQ2xFLENBQUM7SUFFRCw2RUFBNkU7SUFFN0UsZUFBZSxDQUNiLFNBQWlCLEVBQ2pCLFdBQStCLEVBQy9CLGdCQUE4QyxFQUM5QyxT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QyxLQUEwQixFQUFFLGdCQUFtQyxFQUFFLE9BQWdDO1FBQzNHLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEtBQUssQ0FBQztZQUFFLE9BQU87UUFDeEMsTUFBTSxLQUFLLEdBQXVCLEVBQUUsZUFBZSxFQUFFLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxDQUFDO1FBQy9FLHVFQUF1RTtRQUN2RSxpRUFBaUU7UUFDakUsSUFBSSxPQUFPO1lBQUUsTUFBTSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsU0FBUyxFQUFFLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUMzRixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFLFlBQVksQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsWUFBWTtRQUNWLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQXdCLFdBQVcsQ0FBQyxDQUFDO1FBQzNFLE9BQU8sU0FBUyxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUN6QyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEZsb3dSZWNvcmRlckRpc3BhdGNoZXIg4oCUIEZhbnMgb3V0IGNvbnRyb2wgZmxvdyBldmVudHMgdG8gTiBhdHRhY2hlZCBGbG93UmVjb3JkZXJzLlxuICpcbiAqIEltcGxlbWVudHMgSUNvbnRyb2xGbG93TmFycmF0aXZlIHNvIGl0IGNhbiByZXBsYWNlIHRoZSBzaW5nbGVcbiAqIENvbnRyb2xGbG93TmFycmF0aXZlR2VuZXJhdG9yIGluIHRoZSB0cmF2ZXJzZXIncyBIYW5kbGVyRGVwcy5cbiAqXG4gKiBFdmVyeSBldmVudCBnb2VzIHRocm91Z2ggYHJlY29yZGVyL2hvb2tzLnRzIMK3IGZpcmVgICh0aGUgb25lIHBlci1yZWNvcmRlciBsb29wKTogYSBmYWlsaW5nXG4gKiByZWNvcmRlciBpcyB3YXJuZWQgYWJvdXQgaW4gZGV2IG1vZGUgYW5kIG5ldmVyIGJyZWFrcyBleGVjdXRpb24g4oCUIGV2ZW4gd2hlbiB3aGF0IGl0IHRocmV3XG4gKiBjYW5ub3QgYmUgdHVybmVkIGludG8gYSBzdHJpbmcuXG4gKlxuICogV2hlbiBubyByZWNvcmRlcnMgYXJlIGF0dGFjaGVkLCBldmVyeSBtZXRob2QgaXMgYSBmYXN0IG5vLW9wIChlbXB0eSBhcnJheSBjaGVjaykuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBBdHRlbXB0UmVjb3JkIH0gZnJvbSAnLi4vLi4vYXR0ZW1wdC90eXBlcy5qcyc7XG5pbXBvcnQgdHlwZSB7IERlY2lzaW9uRXZpZGVuY2UsIFNlbGVjdGlvbkV2aWRlbmNlIH0gZnJvbSAnLi4vLi4vZGVjaWRlL3R5cGVzLmpzJztcbmltcG9ydCB0eXBlIHsgU3RydWN0dXJlZEVycm9ySW5mbyB9IGZyb20gJy4uLy4uL2Vycm9ycy9lcnJvckluZm8uanMnO1xuaW1wb3J0IHR5cGUgeyBUZXJtaW5hbEZhaWx1cmVDb250ZXh0IH0gZnJvbSAnLi4vLi4vZXJyb3JzL3Rlcm1pbmFsRmFpbHVyZS5qcyc7XG5pbXBvcnQgeyBmaXJlLCB3YXJuSW5EZXZNb2RlIH0gZnJvbSAnLi4vLi4vcmVjb3JkZXIvaG9va3MuanMnO1xuaW1wb3J0IHR5cGUgeyBOYXJyYXRpdmVGbG93UmVjb3JkZXIgfSBmcm9tICcuL05hcnJhdGl2ZUZsb3dSZWNvcmRlci5qcyc7XG5pbXBvcnQgdHlwZSB7XG4gIEZsb3dBdHRlbXB0RXZlbnQsXG4gIEZsb3dCcmVha0V2ZW50LFxuICBGbG93UmVjb3JkZXIsXG4gIEZsb3dSdW5GYWlsZWRFdmVudCxcbiAgRmxvd1N0YWdlRXZlbnQsXG4gIEZsb3dTdGFnZVJldHJ5RXZlbnQsXG4gIEZsb3dUaHJvdHRsZWRFdmVudCxcbiAgSUNvbnRyb2xGbG93TmFycmF0aXZlLFxuICBTdGFnZVR5cGUsXG4gIFRyYXZlcnNhbENvbnRleHQsXG59IGZyb20gJy4vdHlwZXMuanMnO1xuXG4vKiogVGhlIGZsb3cgY2hhbm5lbCdzIGlzb2xhdGlvbjogYSB0aHJvd2luZyByZWNvcmRlciBpcyB3YXJuZWQgYWJvdXQgaW4gZGV2IG1vZGUsIHRoZW4gc2tpcHBlZC4gKi9cbmNvbnN0IEZMT1dfRkFJTFVSRSA9IHdhcm5JbkRldk1vZGUoJ0Zsb3dSZWNvcmRlckRpc3BhdGNoZXInKTtcblxuZXhwb3J0IGNsYXNzIEZsb3dSZWNvcmRlckRpc3BhdGNoZXIgaW1wbGVtZW50cyBJQ29udHJvbEZsb3dOYXJyYXRpdmUge1xuICBwcml2YXRlIHJlY29yZGVyczogRmxvd1JlY29yZGVyW10gPSBbXTtcblxuICAvKiogQXR0YWNoIGEgRmxvd1JlY29yZGVyLiBEdXBsaWNhdGUgSURzIGFyZSBhbGxvd2VkIChzYW1lIGFzIHNjb3BlIFNjb3BlUmVjb3JkZXIpLiAqL1xuICBhdHRhY2gocmVjb3JkZXI6IEZsb3dSZWNvcmRlcik6IHZvaWQge1xuICAgIHRoaXMucmVjb3JkZXJzLnB1c2gocmVjb3JkZXIpO1xuICB9XG5cbiAgLyoqIERldGFjaCBhbGwgRmxvd1JlY29yZGVycyB3aXRoIHRoZSBnaXZlbiBJRC4gKi9cbiAgZGV0YWNoKGlkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnJlY29yZGVycyA9IHRoaXMucmVjb3JkZXJzLmZpbHRlcigocikgPT4gci5pZCAhPT0gaWQpO1xuICB9XG5cbiAgLyoqIFJldHVybnMgYSBkZWZlbnNpdmUgY29weSBvZiBhdHRhY2hlZCByZWNvcmRlcnMuICovXG4gIGdldFNjb3BlUmVjb3JkZXJzKCk6IEZsb3dSZWNvcmRlcltdIHtcbiAgICByZXR1cm4gWy4uLnRoaXMucmVjb3JkZXJzXTtcbiAgfVxuXG4gIC8qKiBGaW5kIGEgcmVjb3JkZXIgYnkgSUQuIFVzZWZ1bCBmb3IgcmV0cmlldmluZyBidWlsdC1pbiByZWNvcmRlcnMgbGlrZSBOYXJyYXRpdmVGbG93UmVjb3JkZXIuICovXG4gIGdldFJlY29yZGVyQnlJZDxUIGV4dGVuZHMgRmxvd1JlY29yZGVyID0gRmxvd1JlY29yZGVyPihpZDogc3RyaW5nKTogVCB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMucmVjb3JkZXJzLmZpbmQoKHIpID0+IHIuaWQgPT09IGlkKSBhcyBUIHwgdW5kZWZpbmVkO1xuICB9XG5cbiAgLy8g4pSA4pSAIElDb250cm9sRmxvd05hcnJhdGl2ZSBpbXBsZW1lbnRhdGlvbiDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcblxuICBvblN0YWdlRXhlY3V0ZWQoXG4gICAgc3RhZ2VOYW1lOiBzdHJpbmcsXG4gICAgZGVzY3JpcHRpb246IHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgICB0cmF2ZXJzYWxDb250ZXh0OiBUcmF2ZXJzYWxDb250ZXh0IHwgdW5kZWZpbmVkLFxuICAgIHN0YWdlVHlwZTogU3RhZ2VUeXBlLFxuICApOiB2b2lkIHtcbiAgICBpZiAodGhpcy5yZWNvcmRlcnMubGVuZ3RoID09PSAwKSByZXR1cm47XG4gICAgY29uc3QgZXZlbnQ6IEZsb3dTdGFnZUV2ZW50ID0geyBzdGFnZU5hbWUsIGRlc2NyaXB0aW9uLCB0cmF2ZXJzYWxDb250ZXh0LCBzdGFnZVR5cGUgfTtcbiAgICBmaXJlKHRoaXMucmVjb3JkZXJzLCAnb25TdGFnZUV4ZWN1dGVkJywgZXZlbnQsIEZMT1dfRkFJTFVSRSk7XG4gIH1cblxuICBvbk5leHQoZnJvbVN0YWdlOiBzdHJpbmcsIHRvU3RhZ2U6IHN0cmluZywgZGVzY3JpcHRpb24/OiBzdHJpbmcsIHRyYXZlcnNhbENvbnRleHQ/OiBUcmF2ZXJzYWxDb250ZXh0KTogdm9pZCB7XG4gICAgaWYgKHRoaXMucmVjb3JkZXJzLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuICAgIGNvbnN0IGV2ZW50ID0geyBmcm9tOiBmcm9tU3RhZ2UsIHRvOiB0b1N0YWdlLCBkZXNjcmlwdGlvbiwgdHJhdmVyc2FsQ29udGV4dCB9O1xuICAgIGZpcmUodGhpcy5yZWNvcmRlcnMsICdvbk5leHQnLCBldmVudCwgRkxPV19GQUlMVVJFKTtcbiAgfVxuXG4gIG9uRGVjaXNpb24oXG4gICAgZGVjaWRlck5hbWU6IHN0cmluZyxcbiAgICBjaG9zZW5CcmFuY2g6IHN0cmluZyxcbiAgICByYXRpb25hbGU/OiBzdHJpbmcsXG4gICAgZGVjaWRlckRlc2NyaXB0aW9uPzogc3RyaW5nLFxuICAgIHRyYXZlcnNhbENvbnRleHQ/OiBUcmF2ZXJzYWxDb250ZXh0LFxuICAgIGV2aWRlbmNlPzogRGVjaXNpb25FdmlkZW5jZSxcbiAgKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucmVjb3JkZXJzLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuICAgIGNvbnN0IGV2ZW50ID0ge1xuICAgICAgZGVjaWRlcjogZGVjaWRlck5hbWUsXG4gICAgICBjaG9zZW46IGNob3NlbkJyYW5jaCxcbiAgICAgIHJhdGlvbmFsZSxcbiAgICAgIGRlc2NyaXB0aW9uOiBkZWNpZGVyRGVzY3JpcHRpb24sXG4gICAgICB0cmF2ZXJzYWxDb250ZXh0LFxuICAgICAgZXZpZGVuY2UsXG4gICAgfTtcbiAgICBmaXJlKHRoaXMucmVjb3JkZXJzLCAnb25EZWNpc2lvbicsIGV2ZW50LCBGTE9XX0ZBSUxVUkUpO1xuICB9XG5cbiAgb25Gb3JrKHBhcmVudFN0YWdlOiBzdHJpbmcsIGNoaWxkTmFtZXM6IHN0cmluZ1tdLCB0cmF2ZXJzYWxDb250ZXh0PzogVHJhdmVyc2FsQ29udGV4dCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnJlY29yZGVycy5sZW5ndGggPT09IDApIHJldHVybjtcbiAgICBjb25zdCBldmVudCA9IHsgcGFyZW50OiBwYXJlbnRTdGFnZSwgY2hpbGRyZW46IGNoaWxkTmFtZXMsIHRyYXZlcnNhbENvbnRleHQgfTtcbiAgICBmaXJlKHRoaXMucmVjb3JkZXJzLCAnb25Gb3JrJywgZXZlbnQsIEZMT1dfRkFJTFVSRSk7XG4gIH1cblxuICBvblNlbGVjdGVkKFxuICAgIHBhcmVudFN0YWdlOiBzdHJpbmcsXG4gICAgc2VsZWN0ZWROYW1lczogc3RyaW5nW10sXG4gICAgdG90YWxDb3VudDogbnVtYmVyLFxuICAgIHRyYXZlcnNhbENvbnRleHQ/OiBUcmF2ZXJzYWxDb250ZXh0LFxuICAgIGV2aWRlbmNlPzogU2VsZWN0aW9uRXZpZGVuY2UsXG4gICk6IHZvaWQge1xuICAgIGlmICh0aGlzLnJlY29yZGVycy5sZW5ndGggPT09IDApIHJldHVybjtcbiAgICBjb25zdCBldmVudCA9IHsgcGFyZW50OiBwYXJlbnRTdGFnZSwgc2VsZWN0ZWQ6IHNlbGVjdGVkTmFtZXMsIHRvdGFsOiB0b3RhbENvdW50LCB0cmF2ZXJzYWxDb250ZXh0LCBldmlkZW5jZSB9O1xuICAgIGZpcmUodGhpcy5yZWNvcmRlcnMsICdvblNlbGVjdGVkJywgZXZlbnQsIEZMT1dfRkFJTFVSRSk7XG4gIH1cblxuICBvblN1YmZsb3dFbnRyeShcbiAgICBzdWJmbG93TmFtZTogc3RyaW5nLFxuICAgIHN1YmZsb3dJZD86IHN0cmluZyxcbiAgICBkZXNjcmlwdGlvbj86IHN0cmluZyxcbiAgICB0cmF2ZXJzYWxDb250ZXh0PzogVHJhdmVyc2FsQ29udGV4dCxcbiAgICBtYXBwZWRJbnB1dD86IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICApOiB2b2lkIHtcbiAgICBpZiAodGhpcy5yZWNvcmRlcnMubGVuZ3RoID09PSAwKSByZXR1cm47XG4gICAgY29uc3QgZXZlbnQgPSB7IG5hbWU6IHN1YmZsb3dOYW1lLCBzdWJmbG93SWQsIGRlc2NyaXB0aW9uLCB0cmF2ZXJzYWxDb250ZXh0LCBtYXBwZWRJbnB1dCB9O1xuICAgIGZpcmUodGhpcy5yZWNvcmRlcnMsICdvblN1YmZsb3dFbnRyeScsIGV2ZW50LCBGTE9XX0ZBSUxVUkUpO1xuICB9XG5cbiAgb25TdWJmbG93RXhpdChcbiAgICBzdWJmbG93TmFtZTogc3RyaW5nLFxuICAgIHN1YmZsb3dJZD86IHN0cmluZyxcbiAgICB0cmF2ZXJzYWxDb250ZXh0PzogVHJhdmVyc2FsQ29udGV4dCxcbiAgICBvdXRwdXRTdGF0ZT86IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICApOiB2b2lkIHtcbiAgICBpZiAodGhpcy5yZWNvcmRlcnMubGVuZ3RoID09PSAwKSByZXR1cm47XG4gICAgY29uc3QgZXZlbnQgPSB7IG5hbWU6IHN1YmZsb3dOYW1lLCBzdWJmbG93SWQsIHRyYXZlcnNhbENvbnRleHQsIG91dHB1dFN0YXRlIH07XG4gICAgZmlyZSh0aGlzLnJlY29yZGVycywgJ29uU3ViZmxvd0V4aXQnLCBldmVudCwgRkxPV19GQUlMVVJFKTtcbiAgfVxuXG4gIG9uU3ViZmxvd1JlZ2lzdGVyZWQoc3ViZmxvd0lkOiBzdHJpbmcsIG5hbWU6IHN0cmluZywgZGVzY3JpcHRpb24/OiBzdHJpbmcsIHNwZWNTdHJ1Y3R1cmU/OiB1bmtub3duKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucmVjb3JkZXJzLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuICAgIGNvbnN0IGV2ZW50ID0geyBzdWJmbG93SWQsIG5hbWUsIGRlc2NyaXB0aW9uLCBzcGVjU3RydWN0dXJlIH07XG4gICAgZmlyZSh0aGlzLnJlY29yZGVycywgJ29uU3ViZmxvd1JlZ2lzdGVyZWQnLCBldmVudCwgRkxPV19GQUlMVVJFKTtcbiAgfVxuXG4gIG9uTG9vcCh0YXJnZXRTdGFnZTogc3RyaW5nLCBpdGVyYXRpb246IG51bWJlciwgZGVzY3JpcHRpb24/OiBzdHJpbmcsIHRyYXZlcnNhbENvbnRleHQ/OiBUcmF2ZXJzYWxDb250ZXh0KTogdm9pZCB7XG4gICAgaWYgKHRoaXMucmVjb3JkZXJzLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuICAgIGNvbnN0IGV2ZW50ID0geyB0YXJnZXQ6IHRhcmdldFN0YWdlLCBpdGVyYXRpb24sIGRlc2NyaXB0aW9uLCB0cmF2ZXJzYWxDb250ZXh0IH07XG4gICAgZmlyZSh0aGlzLnJlY29yZGVycywgJ29uTG9vcCcsIGV2ZW50LCBGTE9XX0ZBSUxVUkUpO1xuICB9XG5cbiAgb25CcmVhayhcbiAgICBzdGFnZU5hbWU6IHN0cmluZyxcbiAgICB0cmF2ZXJzYWxDb250ZXh0PzogVHJhdmVyc2FsQ29udGV4dCxcbiAgICByZWFzb24/OiBzdHJpbmcsXG4gICAgcHJvcGFnYXRlZEZyb21TdWJmbG93Pzogc3RyaW5nLFxuICApOiB2b2lkIHtcbiAgICBpZiAodGhpcy5yZWNvcmRlcnMubGVuZ3RoID09PSAwKSByZXR1cm47XG4gICAgY29uc3QgZXZlbnQ6IEZsb3dCcmVha0V2ZW50ID0ge1xuICAgICAgc3RhZ2VOYW1lLFxuICAgICAgLi4uKHRyYXZlcnNhbENvbnRleHQgJiYgeyB0cmF2ZXJzYWxDb250ZXh0IH0pLFxuICAgICAgLi4uKHJlYXNvbiAhPT0gdW5kZWZpbmVkICYmIHsgcmVhc29uIH0pLFxuICAgICAgLi4uKHByb3BhZ2F0ZWRGcm9tU3ViZmxvdyAhPT0gdW5kZWZpbmVkICYmIHsgcHJvcGFnYXRlZEZyb21TdWJmbG93IH0pLFxuICAgIH07XG4gICAgZmlyZSh0aGlzLnJlY29yZGVycywgJ29uQnJlYWsnLCBldmVudCwgRkxPV19GQUlMVVJFKTtcbiAgfVxuXG4gIG9uRXJyb3IoXG4gICAgc3RhZ2VOYW1lOiBzdHJpbmcsXG4gICAgZXJyb3JNZXNzYWdlOiBzdHJpbmcsXG4gICAgc3RydWN0dXJlZEVycm9yOiBTdHJ1Y3R1cmVkRXJyb3JJbmZvLFxuICAgIHRyYXZlcnNhbENvbnRleHQ/OiBUcmF2ZXJzYWxDb250ZXh0LFxuICApOiB2b2lkIHtcbiAgICBpZiAodGhpcy5yZWNvcmRlcnMubGVuZ3RoID09PSAwKSByZXR1cm47XG4gICAgY29uc3QgZXZlbnQgPSB7IHN0YWdlTmFtZSwgbWVzc2FnZTogZXJyb3JNZXNzYWdlLCBzdHJ1Y3R1cmVkRXJyb3IsIHRyYXZlcnNhbENvbnRleHQsIGNoYW5uZWw6ICdmbG93JyBhcyBjb25zdCB9O1xuICAgIGZpcmUodGhpcy5yZWNvcmRlcnMsICdvbkVycm9yJywgZXZlbnQsIEZMT1dfRkFJTFVSRSk7XG4gIH1cblxuICBvbkF0dGVtcHQoXG4gICAgc3RhZ2VOYW1lOiBzdHJpbmcsXG4gICAgc3RhZ2VJZDogc3RyaW5nLFxuICAgIHJlY29yZDogQXR0ZW1wdFJlY29yZCxcbiAgICBzdHJ1Y3R1cmVkRXJyb3I6IFN0cnVjdHVyZWRFcnJvckluZm8gfCB1bmRlZmluZWQsXG4gICAgdHJhdmVyc2FsQ29udGV4dD86IFRyYXZlcnNhbENvbnRleHQsXG4gICk6IHZvaWQge1xuICAgIGlmICh0aGlzLnJlY29yZGVycy5sZW5ndGggPT09IDApIHJldHVybjtcbiAgICBjb25zdCBldmVudDogRmxvd0F0dGVtcHRFdmVudCA9IHtcbiAgICAgIHN0YWdlTmFtZSxcbiAgICAgIHN0YWdlSWQsXG4gICAgICByZWNvcmQsXG4gICAgICAuLi4oc3RydWN0dXJlZEVycm9yICE9PSB1bmRlZmluZWQgJiYgeyBzdHJ1Y3R1cmVkRXJyb3IgfSksXG4gICAgICB0cmF2ZXJzYWxDb250ZXh0LFxuICAgICAgY2hhbm5lbDogJ2Zsb3cnIGFzIGNvbnN0LFxuICAgIH07XG4gICAgZmlyZSh0aGlzLnJlY29yZGVycywgJ29uQXR0ZW1wdCcsIGV2ZW50LCBGTE9XX0ZBSUxVUkUpO1xuICB9XG5cbiAgb25TdGFnZVJldHJ5KFxuICAgIHN0YWdlTmFtZTogc3RyaW5nLFxuICAgIHN0YWdlSWQ6IHN0cmluZyxcbiAgICBhdHRlbXB0OiBudW1iZXIsXG4gICAgbWF4QXR0ZW1wdHM6IG51bWJlcixcbiAgICBkZWxheU1zOiBudW1iZXIsXG4gICAgc3RydWN0dXJlZEVycm9yOiBTdHJ1Y3R1cmVkRXJyb3JJbmZvLFxuICAgIHRyYXZlcnNhbENvbnRleHQ/OiBUcmF2ZXJzYWxDb250ZXh0LFxuICApOiB2b2lkIHtcbiAgICBpZiAodGhpcy5yZWNvcmRlcnMubGVuZ3RoID09PSAwKSByZXR1cm47XG4gICAgY29uc3QgZXZlbnQ6IEZsb3dTdGFnZVJldHJ5RXZlbnQgPSB7XG4gICAgICBzdGFnZU5hbWUsXG4gICAgICBzdGFnZUlkLFxuICAgICAgYXR0ZW1wdCxcbiAgICAgIG1heEF0dGVtcHRzLFxuICAgICAgZGVsYXlNcyxcbiAgICAgIG1lc3NhZ2U6IHN0cnVjdHVyZWRFcnJvci5tZXNzYWdlLFxuICAgICAgc3RydWN0dXJlZEVycm9yLFxuICAgICAgdHJhdmVyc2FsQ29udGV4dCxcbiAgICAgIGNoYW5uZWw6ICdmbG93JyBhcyBjb25zdCxcbiAgICB9O1xuICAgIGZpcmUodGhpcy5yZWNvcmRlcnMsICdvblN0YWdlUmV0cnknLCBldmVudCwgRkxPV19GQUlMVVJFKTtcbiAgfVxuXG4gIG9uVGhyb3R0bGVkKFxuICAgIHN0YWdlTmFtZTogc3RyaW5nLFxuICAgIHN0YWdlSWQ6IHN0cmluZyxcbiAgICBzdHJ1Y3R1cmVkRXJyb3I6IFN0cnVjdHVyZWRFcnJvckluZm8sXG4gICAgdHJhdmVyc2FsQ29udGV4dD86IFRyYXZlcnNhbENvbnRleHQsXG4gICk6IHZvaWQge1xuICAgIGlmICh0aGlzLnJlY29yZGVycy5sZW5ndGggPT09IDApIHJldHVybjtcbiAgICBjb25zdCBldmVudDogRmxvd1Rocm90dGxlZEV2ZW50ID0ge1xuICAgICAgc3RhZ2VOYW1lLFxuICAgICAgc3RhZ2VJZCxcbiAgICAgIG1lc3NhZ2U6IHN0cnVjdHVyZWRFcnJvci5tZXNzYWdlLFxuICAgICAgc3RydWN0dXJlZEVycm9yLFxuICAgICAgdHJhdmVyc2FsQ29udGV4dCxcbiAgICAgIGNoYW5uZWw6ICdmbG93JyBhcyBjb25zdCxcbiAgICB9O1xuICAgIGZpcmUodGhpcy5yZWNvcmRlcnMsICdvblRocm90dGxlZCcsIGV2ZW50LCBGTE9XX0ZBSUxVUkUpO1xuICB9XG5cbiAgb25QYXVzZShcbiAgICBzdGFnZU5hbWU6IHN0cmluZyxcbiAgICBzdGFnZUlkOiBzdHJpbmcsXG4gICAgcGF1c2VEYXRhOiB1bmtub3duLFxuICAgIHN1YmZsb3dQYXRoOiByZWFkb25seSBzdHJpbmdbXSxcbiAgICB0cmF2ZXJzYWxDb250ZXh0PzogVHJhdmVyc2FsQ29udGV4dCxcbiAgKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucmVjb3JkZXJzLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuICAgIGNvbnN0IGV2ZW50ID0geyBzdGFnZU5hbWUsIHN0YWdlSWQsIHBhdXNlRGF0YSwgc3ViZmxvd1BhdGgsIHRyYXZlcnNhbENvbnRleHQsIGNoYW5uZWw6ICdmbG93JyBhcyBjb25zdCB9O1xuICAgIGZpcmUodGhpcy5yZWNvcmRlcnMsICdvblBhdXNlJywgZXZlbnQsIEZMT1dfRkFJTFVSRSk7XG4gIH1cblxuICBvblJlc3VtZShzdGFnZU5hbWU6IHN0cmluZywgc3RhZ2VJZDogc3RyaW5nLCBoYXNJbnB1dDogYm9vbGVhbiwgdHJhdmVyc2FsQ29udGV4dD86IFRyYXZlcnNhbENvbnRleHQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5yZWNvcmRlcnMubGVuZ3RoID09PSAwKSByZXR1cm47XG4gICAgY29uc3QgZXZlbnQgPSB7IHN0YWdlTmFtZSwgc3RhZ2VJZCwgaGFzSW5wdXQsIHRyYXZlcnNhbENvbnRleHQsIGNoYW5uZWw6ICdmbG93JyBhcyBjb25zdCB9O1xuICAgIGZpcmUodGhpcy5yZWNvcmRlcnMsICdvblJlc3VtZScsIGV2ZW50LCBGTE9XX0ZBSUxVUkUpO1xuICB9XG5cbiAgb25SdW5TdGFydChpbnB1dDogdW5rbm93biwgdHJhdmVyc2FsQ29udGV4dD86IFRyYXZlcnNhbENvbnRleHQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5yZWNvcmRlcnMubGVuZ3RoID09PSAwKSByZXR1cm47XG4gICAgY29uc3QgZXZlbnQgPSB7IHBheWxvYWQ6IGlucHV0LCB0cmF2ZXJzYWxDb250ZXh0IH07XG4gICAgZmlyZSh0aGlzLnJlY29yZGVycywgJ29uUnVuU3RhcnQnLCBldmVudCwgRkxPV19GQUlMVVJFKTtcbiAgfVxuXG4gIG9uUnVuRW5kKG91dHB1dDogdW5rbm93biwgdHJhdmVyc2FsQ29udGV4dD86IFRyYXZlcnNhbENvbnRleHQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5yZWNvcmRlcnMubGVuZ3RoID09PSAwKSByZXR1cm47XG4gICAgY29uc3QgZXZlbnQgPSB7IHBheWxvYWQ6IG91dHB1dCwgdHJhdmVyc2FsQ29udGV4dCB9O1xuICAgIGZpcmUodGhpcy5yZWNvcmRlcnMsICdvblJ1bkVuZCcsIGV2ZW50LCBGTE9XX0ZBSUxVUkUpO1xuICB9XG5cbiAgb25SdW5GYWlsZWQoZXJyb3I6IFN0cnVjdHVyZWRFcnJvckluZm8sIHRyYXZlcnNhbENvbnRleHQ/OiBUcmF2ZXJzYWxDb250ZXh0LCBmYWlsdXJlPzogVGVybWluYWxGYWlsdXJlQ29udGV4dCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnJlY29yZGVycy5sZW5ndGggPT09IDApIHJldHVybjtcbiAgICBjb25zdCBldmVudDogRmxvd1J1bkZhaWxlZEV2ZW50ID0geyBzdHJ1Y3R1cmVkRXJyb3I6IGVycm9yLCB0cmF2ZXJzYWxDb250ZXh0IH07XG4gICAgLy8gS2VlcCB0aGUgbmV3IHNhZmUgcHJvamVjdGlvbiBpbnRhY3QgYWNyb3NzIHJlY29yZGVyIGZhbi1vdXQsIHdpdGhvdXRcbiAgICAvLyBjaGFuZ2luZyB0aGUgZXN0YWJsaXNoZWQgbXV0YWJpbGl0eSBvZiB0aGUgb3RoZXIgZXZlbnQgZmllbGRzLlxuICAgIGlmIChmYWlsdXJlKSBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXZlbnQsICdmYWlsdXJlJywgeyB2YWx1ZTogZmFpbHVyZSwgZW51bWVyYWJsZTogdHJ1ZSB9KTtcbiAgICBmaXJlKHRoaXMucmVjb3JkZXJzLCAnb25SdW5GYWlsZWQnLCBldmVudCwgRkxPV19GQUlMVVJFKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHNlbnRlbmNlcyBmcm9tIGFuIGF0dGFjaGVkIE5hcnJhdGl2ZUZsb3dSZWNvcmRlciAobG9va2VkIHVwIGJ5IElEKS5cbiAgICogQ2FsbGVycyB0aGF0IG5lZWQgc2VudGVuY2VzIHNob3VsZCBhdHRhY2ggYSBOYXJyYXRpdmVGbG93UmVjb3JkZXIgd2l0aCBpZCAnbmFycmF0aXZlJ1xuICAgKiBhbmQgcmV0cmlldmUgaXQgZGlyZWN0bHkgdmlhIGdldFJlY29yZGVyQnlJZCgpIGlmIHRoZXkgbmVlZCB0eXBlZCBhY2Nlc3MuXG4gICAqL1xuICBnZXRTZW50ZW5jZXMoKTogc3RyaW5nW10ge1xuICAgIGNvbnN0IG5hcnJhdGl2ZSA9IHRoaXMuZ2V0UmVjb3JkZXJCeUlkPE5hcnJhdGl2ZUZsb3dSZWNvcmRlcj4oJ25hcnJhdGl2ZScpO1xuICAgIHJldHVybiBuYXJyYXRpdmU/LmdldFNlbnRlbmNlcygpID8/IFtdO1xuICB9XG59XG4iXX0=
|
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
import type { AttemptRecord, RunCorrelation } from '../../attempt/types.js';
|
|
10
10
|
import type { DecisionEvidence, SelectionEvidence } from '../../decide/types.js';
|
|
11
11
|
import type { StructuredErrorInfo } from '../../errors/errorInfo.js';
|
|
12
|
+
import type { TerminalFailureContext } from '../../errors/terminalFailure.js';
|
|
12
13
|
/**
|
|
13
14
|
*
|
|
14
15
|
* Uses Null Object pattern: NullControlFlowNarrativeGenerator satisfies this
|
|
@@ -131,7 +132,7 @@ export interface IControlFlowNarrative {
|
|
|
131
132
|
* error, so it does not fire this. Subflow-traversers do NOT fire it;
|
|
132
133
|
* their errors propagate to the parent and surface at the top level.
|
|
133
134
|
*/
|
|
134
|
-
onRunFailed(error: StructuredErrorInfo, traversalContext?: TraversalContext): void;
|
|
135
|
+
onRunFailed(error: StructuredErrorInfo, traversalContext?: TraversalContext, failure?: TerminalFailureContext): void;
|
|
135
136
|
/** Returns accumulated narrative sentences in execution order. */
|
|
136
137
|
getSentences(): string[];
|
|
137
138
|
}
|
|
@@ -487,6 +488,8 @@ export interface FlowRunFailedEvent {
|
|
|
487
488
|
/** Structured details of the error that terminated the run. */
|
|
488
489
|
structuredError: StructuredErrorInfo;
|
|
489
490
|
traversalContext?: TraversalContext;
|
|
491
|
+
/** Native terminal ownership, independent of served error details. Absent on legacy manually emitted events. */
|
|
492
|
+
readonly failure?: TerminalFailureContext;
|
|
490
493
|
}
|
|
491
494
|
/**
|
|
492
495
|
* FlowRecorder — Pluggable observer for control flow events.
|
|
@@ -7,4 +7,4 @@
|
|
|
7
7
|
* @module
|
|
8
8
|
*/
|
|
9
9
|
export {};
|
|
10
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2VuZ2luZS9uYXJyYXRpdmUvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7R0FPRyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogSUNvbnRyb2xGbG93TmFycmF0aXZlIOKAlCBJbnRlcmZhY2UgZm9yIGNvbnRyb2wgZmxvdyBuYXJyYXRpdmUgZ2VuZXJhdGlvbi5cbiAqXG4gKiBDYXB0dXJlcyBGTE9XIGV2ZW50cyBkdXJpbmcgdHJhdmVyc2FsOiBkZWNpc2lvbnMsIGZvcmtzLCBsb29wcywgc3ViZmxvd3MuXG4gKiBDb21wbGVtZW50YXJ5IHRvIHNjb3BlL3JlY29yZGVycy9OYXJyYXRpdmVSZWNvcmRlciB3aGljaCBjYXB0dXJlcyBEQVRBIGV2ZW50cy5cbiAqXG4gKiBAbW9kdWxlXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBBdHRlbXB0UmVjb3JkLCBSdW5Db3JyZWxhdGlvbiB9IGZyb20gJy4uLy4uL2F0dGVtcHQvdHlwZXMuanMnO1xuaW1wb3J0IHR5cGUgeyBEZWNpc2lvbkV2aWRlbmNlLCBTZWxlY3Rpb25FdmlkZW5jZSB9IGZyb20gJy4uLy4uL2RlY2lkZS90eXBlcy5qcyc7XG5pbXBvcnQgdHlwZSB7IFN0cnVjdHVyZWRFcnJvckluZm8gfSBmcm9tICcuLi8uLi9lcnJvcnMvZXJyb3JJbmZvLmpzJztcblxuLyoqXG4gKlxuICogVXNlcyBOdWxsIE9iamVjdCBwYXR0ZXJuOiBOdWxsQ29udHJvbEZsb3dOYXJyYXRpdmVHZW5lcmF0b3Igc2F0aXNmaWVzIHRoaXNcbiAqIGludGVyZmFjZSB3aXRoIGVtcHR5IG1ldGhvZHMgZm9yIHplcm8tY29zdCBkaXNhYmxlZCBwYXRoLlxuICovXG5cbi8qKlxuICogVGhlIGtpbmQgb2Ygc3RhZ2UgdGhhdCBjb21wbGV0ZWQuIExldHMgY29uc3VtZXJzIHJvdXRlIHVuaWZvcm1cbiAqIFwiZGlkIHRoaXMgc3RhZ2UgZXhlY3V0ZVwiIGhhbmRsaW5nIHdpdGhvdXQgYSBzaWRlLXRhYmxlIGxvb2t1cCBpbnRvXG4gKiB0aGUgY2hhcnQgc3BlYy4gUmVxdWlyZWQgb24gZXZlcnkgYG9uU3RhZ2VFeGVjdXRlZGAgZXZlbnQgc2luY2VcbiAqIHByb3Bvc2FsICMwMDMgdW5pZmllZCB0aGUgZXZlbnQgdG8gZmlyZSBmb3IgQUxMIHN0YWdlIGtpbmRzLlxuICovXG5leHBvcnQgdHlwZSBTdGFnZVR5cGUgPSAnbGluZWFyJyB8ICdkZWNpZGVyJyB8ICdmb3JrJyB8ICdzZWxlY3RvcicgfCAnc3ViZmxvdy1tb3VudCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUNvbnRyb2xGbG93TmFycmF0aXZlIHtcbiAgLyoqXG4gICAqIENhbGxlZCB3aGVuIGEgc3RhZ2UgY29tcGxldGVzIGl0cyBtYWluIHdvcmsuIEZpcmVzIGZvciBBTEwgc3RhZ2VcbiAgICoga2luZHMgKGAnbGluZWFyJ2AsIGAnZGVjaWRlcidgLCBgJ2ZvcmsnYCwgYCdzZWxlY3RvcidgLCBgJ3N1YmZsb3ctbW91bnQnYClcbiAgICogQUZURVIgdGhlIGNvcnJlc3BvbmRpbmcgc3BlY2lhbGl6ZWQgZXZlbnQgKGBvbkRlY2lzaW9uYCwgYG9uRm9ya2AsXG4gICAqIGBvblNlbGVjdGVkYCwgYG9uU3ViZmxvd0VudHJ5YCkuIEZvciBsaW5lYXIgc3RhZ2VzLCBmaXJlcyBhZnRlclxuICAgKiB0aGUgc3RhZ2UgZnVuY3Rpb24gcmV0dXJucy5cbiAgICpcbiAgICogQ29uc3VtZXJzIHRyYWNraW5nIFwiZGlkIHRoaXMgc3RhZ2UgcnVuP1wiIHVzZSB0aGlzIGV2ZW50IHVuaWZvcm1seVxuICAgKiBhbmQgc3dpdGNoIG9uIGBzdGFnZVR5cGVgIGZvciBraW5kLXNwZWNpZmljIHdvcmsuXG4gICAqL1xuICBvblN0YWdlRXhlY3V0ZWQoXG4gICAgc3RhZ2VOYW1lOiBzdHJpbmcsXG4gICAgZGVzY3JpcHRpb246IHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgICB0cmF2ZXJzYWxDb250ZXh0OiBUcmF2ZXJzYWxDb250ZXh0IHwgdW5kZWZpbmVkLFxuICAgIHN0YWdlVHlwZTogU3RhZ2VUeXBlLFxuICApOiB2b2lkO1xuXG4gIC8qKiBDYWxsZWQgb24gbGluZWFyIGNvbnRpbnVhdGlvbiBmcm9tIG9uZSBzdGFnZSB0byB0aGUgbmV4dC4gKi9cbiAgb25OZXh0KGZyb21TdGFnZTogc3RyaW5nLCB0b1N0YWdlOiBzdHJpbmcsIGRlc2NyaXB0aW9uPzogc3RyaW5nLCB0cmF2ZXJzYWxDb250ZXh0PzogVHJhdmVyc2FsQ29udGV4dCk6IHZvaWQ7XG5cbiAgLyoqIENhbGxlZCB3aGVuIGEgZGVjaWRlciBzZWxlY3RzIGEgYnJhbmNoLiBNb3N0IHZhbHVhYmxlIGZvciBMTE0gY29udGV4dC4gKi9cbiAgb25EZWNpc2lvbihcbiAgICBkZWNpZGVyTmFtZTogc3RyaW5nLFxuICAgIGNob3NlbkJyYW5jaDogc3RyaW5nLFxuICAgIHJhdGlvbmFsZT86IHN0cmluZyxcbiAgICBkZWNpZGVyRGVzY3JpcHRpb24/OiBzdHJpbmcsXG4gICAgdHJhdmVyc2FsQ29udGV4dD86IFRyYXZlcnNhbENvbnRleHQsXG4gICAgZXZpZGVuY2U/OiBEZWNpc2lvbkV2aWRlbmNlLFxuICApOiB2b2lkO1xuXG4gIC8qKiBDYWxsZWQgd2hlbiBhIGZvcmsgZXhlY3V0ZXMgYWxsIGNoaWxkcmVuIGluIHBhcmFsbGVsLiAqL1xuICBvbkZvcmsocGFyZW50U3RhZ2U6IHN0cmluZywgY2hpbGROYW1lczogc3RyaW5nW10sIHRyYXZlcnNhbENvbnRleHQ/OiBUcmF2ZXJzYWxDb250ZXh0KTogdm9pZDtcblxuICAvKiogQ2FsbGVkIHdoZW4gYSBzZWxlY3RvciBwaWNrcyBhIHN1YnNldCBvZiBjaGlsZHJlbi4gKi9cbiAgb25TZWxlY3RlZChcbiAgICBwYXJlbnRTdGFnZTogc3RyaW5nLFxuICAgIHNlbGVjdGVkTmFtZXM6IHN0cmluZ1tdLFxuICAgIHRvdGFsQ291bnQ6IG51bWJlcixcbiAgICB0cmF2ZXJzYWxDb250ZXh0PzogVHJhdmVyc2FsQ29udGV4dCxcbiAgICBldmlkZW5jZT86IFNlbGVjdGlvbkV2aWRlbmNlLFxuICApOiB2b2lkO1xuXG4gIC8qKiBDYWxsZWQgd2hlbiBlbnRlcmluZyBhIHN1YmZsb3cgKG5lc3RlZCBjb250ZXh0IGJvdW5kYXJ5KS4gKi9cbiAgb25TdWJmbG93RW50cnkoXG4gICAgc3ViZmxvd05hbWU6IHN0cmluZyxcbiAgICBzdWJmbG93SWQ/OiBzdHJpbmcsXG4gICAgZGVzY3JpcHRpb24/OiBzdHJpbmcsXG4gICAgdHJhdmVyc2FsQ29udGV4dD86IFRyYXZlcnNhbENvbnRleHQsXG4gICAgbWFwcGVkSW5wdXQ/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgKTogdm9pZDtcblxuICAvKiogQ2FsbGVkIHdoZW4gZXhpdGluZyBhIHN1YmZsb3cuICovXG4gIG9uU3ViZmxvd0V4aXQoXG4gICAgc3ViZmxvd05hbWU6IHN0cmluZyxcbiAgICBzdWJmbG93SWQ/OiBzdHJpbmcsXG4gICAgdHJhdmVyc2FsQ29udGV4dD86IFRyYXZlcnNhbENvbnRleHQsXG4gICAgb3V0cHV0U3RhdGU/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgKTogdm9pZDtcblxuICAvKiogQ2FsbGVkIHdoZW4gYSBkeW5hbWljIHN1YmZsb3cgaXMgcmVnaXN0ZXJlZCBkdXJpbmcgdHJhdmVyc2FsLiAqL1xuICBvblN1YmZsb3dSZWdpc3RlcmVkKHN1YmZsb3dJZDogc3RyaW5nLCBuYW1lOiBzdHJpbmcsIGRlc2NyaXB0aW9uPzogc3RyaW5nLCBzcGVjU3RydWN0dXJlPzogdW5rbm93bik6IHZvaWQ7XG5cbiAgLyoqIENhbGxlZCBvbiBsb29wIGl0ZXJhdGlvbiAoYmFjay1lZGdlIHRyYXZlcnNhbCkuICovXG4gIG9uTG9vcCh0YXJnZXRTdGFnZTogc3RyaW5nLCBpdGVyYXRpb246IG51bWJlciwgZGVzY3JpcHRpb24/OiBzdHJpbmcsIHRyYXZlcnNhbENvbnRleHQ/OiBUcmF2ZXJzYWxDb250ZXh0KTogdm9pZDtcblxuICAvKipcbiAgICogQ2FsbGVkIHdoZW4gYSBzdGFnZSB0cmlnZ2VycyBicmVhayAoZWFybHkgdGVybWluYXRpb24pLlxuICAgKlxuICAgKiBAcGFyYW0gcmVhc29uIC0gT3B0aW9uYWwgc3RyaW5nIHBhc3NlZCB0byBgc2NvcGUuJGJyZWFrKHJlYXNvbilgLlxuICAgKiBAcGFyYW0gcHJvcGFnYXRlZEZyb21TdWJmbG93IC0gV2hlbiBzZXQsIHRoaXMgYnJlYWsgd2FzIHJhaXNlZCBvbiB0aGVcbiAgICogICBwYXJlbnQgYmVjYXVzZSBhbiBpbm5lciBzdWJmbG93ICh0aGlzIGlkKSBicm9rZSB3aXRoIGBwcm9wYWdhdGVCcmVha2BcbiAgICogICBlbmFibGVkLiBVc2VkIGJ5IHJlY29yZGVycyB0byBkaXN0aW5ndWlzaCBvcmlnaW5hdGluZyB2cyBwcm9wYWdhdGVkXG4gICAqICAgYnJlYWtzIGFuZCByZW5kZXIgdGhlbSBhY2NvcmRpbmdseS5cbiAgICovXG4gIG9uQnJlYWsoXG4gICAgc3RhZ2VOYW1lOiBzdHJpbmcsXG4gICAgdHJhdmVyc2FsQ29udGV4dD86IFRyYXZlcnNhbENvbnRleHQsXG4gICAgcmVhc29uPzogc3RyaW5nLFxuICAgIHByb3BhZ2F0ZWRGcm9tU3ViZmxvdz86IHN0cmluZyxcbiAgKTogdm9pZDtcblxuICAvKipcbiAgICogQ2FsbGVkIHdoZW4gYSBzdGFnZSB0aHJvd3MgYW4gZXJyb3IsIHdpdGggaXRzIFNFUlZFRCBmb3JtOiBmb3IgYSBzdGFnZSdzIG93biBmYWlsdXJlIHRoYXQgaXNcbiAgICogYFJlZGFjdGlvblJ1bGUucmV0YWluU3RhZ2VFcnJvcmAgKHRoZSBkaWFnbm9zdGljIHBvbGljeSBhcHBsaWVkIG9uY2UpLCBlbHNld2hlcmUgYGV4dHJhY3RFcnJvckluZm9gLlxuICAgKi9cbiAgb25FcnJvcihcbiAgICBzdGFnZU5hbWU6IHN0cmluZyxcbiAgICBlcnJvck1lc3NhZ2U6IHN0cmluZyxcbiAgICBzdHJ1Y3R1cmVkRXJyb3I6IFN0cnVjdHVyZWRFcnJvckluZm8sXG4gICAgdHJhdmVyc2FsQ29udGV4dD86IFRyYXZlcnNhbENvbnRleHQsXG4gICk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIENhbGxlZCBhdCB0aGUgRU5EIG9mIGV2ZXJ5IGF0dGVtcHQgKDEwLjEpIOKAlCBldmVyeSBvdXRjb21lLCB3aXRoIHRoZVxuICAgKiBhdHRlbXB0J3Mge0BsaW5rIEF0dGVtcHRSZWNvcmR9ICh0aW1pbmcsIG91dGNvbWUsIGNhdGVnb3J5LCB0aGVcbiAgICogcmV0cnktb3Itc3RvcCBkZWNpc2lvbik6IGEgc3RhZ2UncyBvd24gKGByZWNvcmQua2luZCA9PT0gJ3N0YWdlJ2AsIHVuZGVyIGFcbiAgICogcmV0cnkgcG9saWN5LCBhIGB0aW1lb3V0TXNgIG9yIGEgcnVuIGRlYWRsaW5lKSwgYW5kIHRoZSBjYWxscyBpdCBtYWtlc1xuICAgKiAoYCdjYWxsJ2AsIGBzY29wZS4kY2FsbGApIGFuZCBvdXRzaWRlIGF0dGVtcHRzIGl0IHJlcG9ydHMgKGAnb2JzZXJ2ZWQnYClcbiAgICogZHVyaW5nIHRoZSBzdGFnZSAoUDIpLiBBIHN0YWdlIGF0dGVtcHQgZmlyZXMgYmVmb3JlIGBvblN0YWdlUmV0cnlgIHdoZW4gaXRcbiAgICogaXMgcmV0cmllZCwgYW5kIGJlZm9yZSBgb25FcnJvcmAgLyBgb25TdGFnZUV4ZWN1dGVkYCBmb3IgdGhlIGxhc3QuXG4gICAqIGBzdHJ1Y3R1cmVkRXJyb3JgIGlzIHRoZSBhdHRlbXB0J3Mgc2VydmVkIGVycm9yIChgcmF3YCBpbmNsdWRlZCB1bmxlc3MgdGhlXG4gICAqIHBvbGljeSBtYXNrZWQgaXQ7IG5ldmVyIGZvciBhbiBvYnNlcnZlZCBhdHRlbXB0KTsgYWJzZW50IGZvciBhIHN1Y2Nlc3Mgb3JcbiAgICogYSBwYXVzZS5cbiAgICpcbiAgICogRXZlbnQgYXJpdGhtZXRpYzogb25lIHBlciBhdHRlbXB0IOKAlCBmb3IgYSBzdGFnZSwgdGhlIG51bWJlciBvZiBhdHRlbXB0cyBpdFxuICAgKiBtYWRlIHBsdXMgb25lIHBlciBjYWxsIG9yIG9ic2VydmVkIGF0dGVtcHQgKGZpbHRlciBvbiBgcmVjb3JkLmtpbmRgKS5cbiAgICovXG4gIG9uQXR0ZW1wdChcbiAgICBzdGFnZU5hbWU6IHN0cmluZyxcbiAgICBzdGFnZUlkOiBzdHJpbmcsXG4gICAgcmVjb3JkOiBBdHRlbXB0UmVjb3JkLFxuICAgIHN0cnVjdHVyZWRFcnJvcjogU3RydWN0dXJlZEVycm9ySW5mbyB8IHVuZGVmaW5lZCxcbiAgICB0cmF2ZXJzYWxDb250ZXh0PzogVHJhdmVyc2FsQ29udGV4dCxcbiAgKTogdm9pZDtcblxuICAvKipcbiAgICogQ2FsbGVkIHdoZW4gYW4gYXR0ZW1wdCBhdCBhIHN0YWdlIHdpdGggYSBkZWNsYXJlZCBgcmV0cnlgIHBvbGljeSBmYWlsZWRcbiAgICogQU5EIGFub3RoZXIgYXR0ZW1wdCB3aWxsIHJ1bi4gRmlyZXMgYWZ0ZXIgdGhhdCBhdHRlbXB0J3MgYG9uQXR0ZW1wdGAsXG4gICAqIGFmdGVyIGl0cyBzdGFnZWQgd3JpdGVzIGFyZSBkaXNjYXJkZWQgYW5kIEJFRk9SRSB0aGUgYmFja29mZiB3YWl0LCBzbyBhXG4gICAqIGxpdmUgbW9uaXRvciBsZWFybnMgXCJyZXRyeWluZyBpbiA1MDAgbXNcIiB3aGVuIHRoZSBkZWNpc2lvbiBpcyBtYWRlLCBub3RcbiAgICogYWZ0ZXIgdGhlIHdhaXQuXG4gICAqXG4gICAqIEV2ZW50IGFyaXRobWV0aWM6IGFuIGV4aGF1c3RlZCBwb2xpY3kgZmlyZXMgYGF0dGVtcHRzIC0gMWAgb2YgdGhlc2UgYW5kXG4gICAqIHRoZW4gb25lIGBvbkVycm9yYDsgYSBgcmV0cnlPbmAgdGhhdCBkZWNsaW5lcyBmaXJlcyBaRVJPIG9mIHRoZXNlIGFuZCBvbmVcbiAgICogYG9uRXJyb3JgLiBUaGUgZmluYWwgYXR0ZW1wdCBuZXZlciBmaXJlcyB0aGlzIGV2ZW50LlxuICAgKi9cbiAgb25TdGFnZVJldHJ5KFxuICAgIHN0YWdlTmFtZTogc3RyaW5nLFxuICAgIHN0YWdlSWQ6IHN0cmluZyxcbiAgICBhdHRlbXB0OiBudW1iZXIsXG4gICAgbWF4QXR0ZW1wdHM6IG51bWJlcixcbiAgICBkZWxheU1zOiBudW1iZXIsXG4gICAgc3RydWN0dXJlZEVycm9yOiBTdHJ1Y3R1cmVkRXJyb3JJbmZvLFxuICAgIHRyYXZlcnNhbENvbnRleHQ/OiBUcmF2ZXJzYWxDb250ZXh0LFxuICApOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBDYWxsZWQgd2hlbiBhIGZvcmsgY2hpbGQgZmFpbGVkIGFuZCB0aGUgcnVuJ3MgYHRocm90dGxpbmdFcnJvckNoZWNrZXJgXG4gICAqIGNsYXNzaWZpZWQgaXRzIGVycm9yIGFzIHRocm90dGxpbmcgKDkuMzkuMCkuIFRoZSBjaGlsZCdzIGZhaWx1cmUgdGFrZXNcbiAgICogaXRzIG9yZGluYXJ5IHBhdGggdG9vOyB0aGlzIG9ubHkgbmFtZXMgaXQgYXMgdGhyb3R0bGluZy5cbiAgICovXG4gIG9uVGhyb3R0bGVkPyhcbiAgICBzdGFnZU5hbWU6IHN0cmluZyxcbiAgICBzdGFnZUlkOiBzdHJpbmcsXG4gICAgc3RydWN0dXJlZEVycm9yOiBTdHJ1Y3R1cmVkRXJyb3JJbmZvLFxuICAgIHRyYXZlcnNhbENvbnRleHQ/OiBUcmF2ZXJzYWxDb250ZXh0LFxuICApOiB2b2lkO1xuXG4gIC8qKiBDYWxsZWQgd2hlbiBhIHBhdXNhYmxlIHN0YWdlIHBhdXNlcyBleGVjdXRpb24uICovXG4gIG9uUGF1c2UoXG4gICAgc3RhZ2VOYW1lOiBzdHJpbmcsXG4gICAgc3RhZ2VJZDogc3RyaW5nLFxuICAgIHBhdXNlRGF0YTogdW5rbm93bixcbiAgICBzdWJmbG93UGF0aDogcmVhZG9ubHkgc3RyaW5nW10sXG4gICAgdHJhdmVyc2FsQ29udGV4dD86IFRyYXZlcnNhbENvbnRleHQsXG4gICk6IHZvaWQ7XG5cbiAgLyoqIENhbGxlZCB3aGVuIGEgcGF1c2VkIHN0YWdlIGlzIHJlc3VtZWQuICovXG4gIG9uUmVzdW1lKHN0YWdlTmFtZTogc3RyaW5nLCBzdGFnZUlkOiBzdHJpbmcsIGhhc0lucHV0OiBib29sZWFuLCB0cmF2ZXJzYWxDb250ZXh0PzogVHJhdmVyc2FsQ29udGV4dCk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIENhbGxlZCBvbmNlIHBlciB0b3AtbGV2ZWwgYGV4ZWN1dG9yLnJ1bigpYCwgQkVGT1JFIHRoZSBmaXJzdCBzdGFnZSBleGVjdXRlcy5cbiAgICogYGlucHV0YCBpcyB0aGUgcmV0YWluZWQgZm9ybSBvZiBgcnVuKHtpbnB1dH0pYCBhZnRlciBzY2hlbWEgdmFsaWRhdGlvbjtcbiAgICogdGhlIHJ1bidzIGtleS9wYXRoIHJlZGFjdGlvbiBhcHBsaWVzIGJlZm9yZSBkaXNwYXRjaC4gU2VlIHtAbGluayBGbG93UnVuRXZlbnR9LlxuICAgKiBTdWJmbG93LXRyYXZlcnNlcnMgZG8gTk9UIGZpcmUgdGhpcyBldmVudCDigJQgdGhleSBmaXJlIGBvblN1YmZsb3dFbnRyeWAuXG4gICAqL1xuICBvblJ1blN0YXJ0KGlucHV0OiB1bmtub3duLCB0cmF2ZXJzYWxDb250ZXh0PzogVHJhdmVyc2FsQ29udGV4dCk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIENhbGxlZCBvbmNlIHBlciB0b3AtbGV2ZWwgYGV4ZWN1dG9yLnJ1bigpYCwgQUZURVIgdGhlIGxhc3Qgc3RhZ2UgY29tbWl0cy5cbiAgICogYG91dHB1dGAgaXMgdGhlIHJldGFpbmVkIGZvcm0gb2YgdGhlIGNoYXJ0J3MgcmV0dXJuLiBOT1QgZmlyZWQgb24gcGF1c2UgKHRoZSBydW5cbiAgICogZGlkbid0IGVuZDsgaXQgc3VzcGVuZGVkKSBvciBvbiB1bmNhdWdodCBlcnJvci4gU3ViZmxvdy10cmF2ZXJzZXJzIGRvXG4gICAqIE5PVCBmaXJlIHRoaXMgZXZlbnQg4oCUIHRoZXkgZmlyZSBgb25TdWJmbG93RXhpdGAuXG4gICAqL1xuICBvblJ1bkVuZChvdXRwdXQ6IHVua25vd24sIHRyYXZlcnNhbENvbnRleHQ/OiBUcmF2ZXJzYWxDb250ZXh0KTogdm9pZDtcblxuICAvKipcbiAgICogQ2FsbGVkIG9uY2UgcGVyIHRvcC1sZXZlbCBgZXhlY3V0b3IucnVuKClgIHdoZW4gdHJhdmVyc2FsIHRocm93cyBhXG4gICAqIE5PTi1wYXVzZSBlcnJvciwgQkVGT1JFIHRoZSBleGNlcHRpb24gcHJvcGFnYXRlcyB0byBgcnVuKClgJ3MgY2FsbGVyLlxuICAgKlxuICAgKiBUaGlzIGlzIHRoZSBURVJNSU5BTCBjb3VudGVycGFydCB0byBgb25SdW5FbmRgIOKAlCBpdCBjbG9zZXMgdGhlIHJ1blxuICAgKiBib3VuZGFyeSBzeW1tZXRyaWNhbGx5IHNvIGV2ZXJ5IGBvblJ1blN0YXJ0YCBpcyBmb2xsb3dlZCBieSBleGFjdGx5XG4gICAqIG9uZSBvZiBgb25SdW5FbmRgIChjbGVhbikgb3IgYG9uUnVuRmFpbGVkYCAoZXJyb3IpLiBXaXRob3V0IGl0LCBhXG4gICAqIGxpdmUgbW9uaXRvciBzZWVzIGBvblJ1blN0YXJ0YCB0aGVuIHNpbGVuY2Ugb24gYSBmYWlsZWQgcnVuIGFuZCBjYW4ndFxuICAgKiB0ZWxsIFwic3RpbGwgcnVubmluZ1wiIGZyb20gXCJjcmFzaGVkLlwiXG4gICAqXG4gICAqIEVycm9ycyBTVElMTCB0aHJvdyDigJQgdGhpcyBpcyB0aGUgb2JzZXJ2YWJsZSB0ZXJtaW5hbCBzaWduYWwsIG5vdCBhXG4gICAqIHJlY292ZXJ5IG1lY2hhbmlzbSAobm8gcm91dGluZywgbm8gZXJyb3Itc3ViZmxvdykuIFBhdXNlIGlzIE5PVCBhblxuICAgKiBlcnJvciwgc28gaXQgZG9lcyBub3QgZmlyZSB0aGlzLiBTdWJmbG93LXRyYXZlcnNlcnMgZG8gTk9UIGZpcmUgaXQ7XG4gICAqIHRoZWlyIGVycm9ycyBwcm9wYWdhdGUgdG8gdGhlIHBhcmVudCBhbmQgc3VyZmFjZSBhdCB0aGUgdG9wIGxldmVsLlxuICAgKi9cbiAgb25SdW5GYWlsZWQoZXJyb3I6IFN0cnVjdHVyZWRFcnJvckluZm8sIHRyYXZlcnNhbENvbnRleHQ/OiBUcmF2ZXJzYWxDb250ZXh0KTogdm9pZDtcblxuICAvKiogUmV0dXJucyBhY2N1bXVsYXRlZCBuYXJyYXRpdmUgc2VudGVuY2VzIGluIGV4ZWN1dGlvbiBvcmRlci4gKi9cbiAgZ2V0U2VudGVuY2VzKCk6IHN0cmluZ1tdO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBUcmF2ZXJzYWxDb250ZXh0IOKAlCByZWFkLW9ubHkgZXhlY3V0aW9uIGNvbnRleHQgZnJvbSB0aGUgdHJhdmVyc2VyLlxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIFRyYXZlcnNhbCBjb250ZXh0IGF0dGFjaGVkIHRvIGV2ZXJ5IEZsb3dSZWNvcmRlciBldmVudC5cbiAqIENyZWF0ZWQgYnkgdGhlIHRyYXZlcnNlciBkdXJpbmcgREZTLCBwYXNzZWQgdG8gcmVjb3JkZXJzIGFzIHJlYWQtb25seSBkYXRhLlxuICogRW5hYmxlcyByZWNvcmRlcnMgdG8gYnVpbGQgdHJlZXMsIGdyb3VwIGJ5IHN1YmZsb3csIGFuZCBjb3JyZWxhdGUgZXZlbnRzXG4gKiB3aXRob3V0IG1haW50YWluaW5nIHRoZWlyIG93biBzdGFja3Mgb3IgcG9zdC1wcm9jZXNzaW5nLlxuICpcbiAqIExpa2UgT3BlblRlbGVtZXRyeSdzIHNwYW4gY29udGV4dDogc3RhZ2VJZCArIHBhcmVudFN0YWdlSWQgZm9ybSBhIHRyZWUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVHJhdmVyc2FsQ29udGV4dCB7XG4gIC8qKlxuICAgKiBQZXItYGV4ZWN1dG9yLnJ1bigpYCBpZGVudGlmaWVyLiBHZW5lcmF0ZWQgb25jZSBhdCB0aGUgc3RhcnQgb2YgZXZlcnlcbiAgICogYHJ1bigpYCAoYW5kIGFnYWluIG9uIGByZXN1bWUoKWApOyBzaGFyZWQgYnkgZXZlcnkgZXZlbnQgb2YgdGhhdCBydW47XG4gICAqIGRpZmZlcnMgYWNyb3NzIGNvbnNlY3V0aXZlIHJ1bnMgb2YgdGhlIHNhbWUgZXhlY3V0b3IuXG4gICAqXG4gICAqIEZvcm1hdDogYCR7RGF0ZS5ub3coKX0tJHtjb3VudGVyfWAg4oCUIHNvcnRhYmxlIGxleGljb2dyYXBoaWNhbGx5ICg9PVxuICAgKiBjaHJvbm9sb2dpY2FsbHkgZm9yIHJ1bnMgPiAxbXMgYXBhcnQpLiBQcm9jZXNzLWxvY2FsIOKAlCBmb3IgY3Jvc3MtXG4gICAqIHByb2Nlc3MgY29ycmVsYXRpb24gdXNlIGBnZXRFbnYoKS50cmFjZUlkYCAoY29uc3VtZXItc3VwcGxpZWQpLlxuICAgKlxuICAgKiBSZWNvcmRlcnMgdGhhdCBhY2N1bXVsYXRlIHN0YXRlIGFjcm9zcyBydW5zIChmb3JrIGJvb2trZWVwaW5nLFxuICAgKiBzaWJsaW5nLWhhbmRvZmYgc3RhdGUsIGV0Yy4pIGRldGVjdCBcIm5ldyBydW5cIiB2aWFcbiAgICogYGV2ZW50LnRyYXZlcnNhbENvbnRleHQucnVuSWQgIT09IHRoaXMubGFzdFJ1bklkYCBhbmQgcmVzZXRcbiAgICogdHJhbnNpZW50IGJvb2trZWVwaW5nLiBSZWNvcmRlcnMgdGhhdCBkb24ndCBjYXJlIGFib3V0IHNjb3BpbmdcbiAgICogaWdub3JlIHRoZSBmaWVsZC5cbiAgICovXG4gIHJlYWRvbmx5IHJ1bklkOiBzdHJpbmc7XG4gIC8qKiBTdGFibGUgc3RhZ2UgaWRlbnRpZmllciBmcm9tIHRoZSBidWlsZGVyIChtYXRjaGVzIHNwZWMgbm9kZSBpZCkuICovXG4gIHJlYWRvbmx5IHN0YWdlSWQ6IHN0cmluZztcbiAgLyoqIFVuaXF1ZSBwZXItZXhlY3V0aW9uLXN0ZXAgaWRlbnRpZmllci4gRm9ybWF0OiBbc3ViZmxvd1BhdGgvXXN0YWdlSWQjZXhlY3V0aW9uSW5kZXguXG4gICAqICBDb3VudGVyIHJlc2V0cyBwZXIgZXhlY3V0b3Ig4oCUIGNvbWJpbmUgd2l0aCBgcnVuSWRgIGZvciBnbG9iYWxseSB1bmlxdWUgc3RlcCBrZXlzLiAqL1xuICByZWFkb25seSBydW50aW1lU3RhZ2VJZDogc3RyaW5nO1xuICAvKiogSHVtYW4tcmVhZGFibGUgc3RhZ2UgbmFtZS4gKi9cbiAgcmVhZG9ubHkgc3RhZ2VOYW1lOiBzdHJpbmc7XG4gIC8qKiBQYXJlbnQgc3RhZ2UgSUQg4oCUIHdhbGsgdXAgdG8gcmVjb25zdHJ1Y3QgdGhlIHRyZWUuIFVuZGVmaW5lZCBhdCByb290LiAqL1xuICByZWFkb25seSBwYXJlbnRTdGFnZUlkPzogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIHBhcmVudCBFWEVDVVRJT04gc3RlcCdzIHJ1bnRpbWVTdGFnZUlkIOKAlCB0aGUgcnVudGltZSB0d2luIG9mXG4gICAqIGBwYXJlbnRTdGFnZUlkYCAoUkZDLTAwMyBEMSkuIFdhbGsgdXAgdG8gcmVjb25zdHJ1Y3QgdGhlIHJ1bnRpbWVcbiAgICogYW5jZXN0b3IgY2hhaW47IGxvb3AgcmUtZW50cmllcyBzdGF5IHVuYW1iaWd1b3VzIGJlY2F1c2UgcnVudGltZSBpZHNcbiAgICogKGBzdGFnZUlkI2V4ZWN1dGlvbkluZGV4YCkgZGlmZmVyIHBlciBpdGVyYXRpb24gZXZlbiB3aGVuIHN0YWdlIGlkc1xuICAgKiByZXBlYXQuIENyb3NzZXMgc3ViZmxvdyBib3VuZGFyaWVzOiB0aGUgZmlyc3Qgc3RhZ2UgaW5zaWRlIGEgc3ViZmxvd1xuICAgKiBwb2ludHMgYXQgdGhlIE1PVU5UIHN0YWdlJ3MgcnVudGltZVN0YWdlSWQgaW4gdGhlIHBhcmVudCB0cmF2ZXJzZXIuXG4gICAqIFVuZGVmaW5lZCBvbmx5IGF0IHRoZSBmaXJzdCBzdGFnZSBvZiB0aGUgdG9wLWxldmVsIGNoYXJ0LlxuICAgKi9cbiAgcmVhZG9ubHkgcGFyZW50UnVudGltZVN0YWdlSWQ/OiBzdHJpbmc7XG4gIC8qKiBTdWJmbG93IElEIHdoZW4gaW5zaWRlIGEgc3ViZmxvdy4gVW5kZWZpbmVkIGF0IHJvb3QgbGV2ZWwuICovXG4gIHJlYWRvbmx5IHN1YmZsb3dJZD86IHN0cmluZztcbiAgLyoqIEZ1bGwgc3ViZmxvdyBwYXRoIGZvciBuZXN0ZWQgc3ViZmxvd3MgKGUuZy4sIFwic2Ytb3V0ZXIvc2YtaW5uZXJcIikuICovXG4gIHJlYWRvbmx5IHN1YmZsb3dQYXRoPzogc3RyaW5nO1xuICAvKipcbiAgICogU3ViZmxvdyBuZXN0aW5nIGRlcHRoIG9mIHRoZSBzdGFnZSdzIEFERFJFU1M6IGhvdyBtYW55IHN1YmZsb3cgc2VnbWVudHMgaXRzXG4gICAqIGBydW50aW1lU3RhZ2VJZGAgY2FycmllcyAoMCA9IHRvcCBsZXZlbCwgMSA9IGluc2lkZSBhIHN1YmZsb3cgb3IgYVxuICAgKiBgcGFyYWxsZWxGb3JFYWNoYCBicmFuY2gsIDIgPSBhIHN1YmZsb3cgaW5zaWRlIHRoYXQsIOKApikuIE9uZSBtZWFuaW5nIG9uXG4gICAqIGV2ZXJ5IHN0YW1wIOKAlCBzdGFnZSBldmVudHMsIHRoZSBydW4tYm91bmRhcnkgcm9vdCAoMCkgYW5kIGBvblJlc3VtZWBcbiAgICogKDkuMzcuMDsgdW50aWwgOS4zNi4wIHN0YWdlIGV2ZW50cyBzdGFtcGVkIHRoZSBwYXJlbnQtY2hhaW4gbGVuZ3RoIG9mIHRoZVxuICAgKiBzdGFnZSdzIGNvbnRleHQgaW5zdGVhZCkuXG4gICAqL1xuICByZWFkb25seSBkZXB0aDogbnVtYmVyO1xuICAvKipcbiAgICogSG93IG1hbnkgdGltZXMgdGhpcyBzdGFnZSBoYXMgZXhlY3V0ZWQgQkVGT1JFIGluIHRoaXMgcnVuIOKAlCB0aGUgbG9vcFxuICAgKiBpdGVyYXRpb24gY291bnQgd2hlbiBhIG5vZGUgaXMgcmV2aXNpdGVkIChlLmcuIHZpYSBgbG9vcFRvYCkuIEFic2VudCBvbiB0aGVcbiAgICogZmlyc3QgZXhlY3V0aW9uOyBgMWAgb24gdGhlIGZpcnN0IGxvb3AtYmFjaywgYDJgIG9uIHRoZSBuZXh0LCDigKYgKGkuZS5cbiAgICogYHZpc2l0Q291bnQgLSAxYCkuIFJ1bi1zY29wZWQgKHJlc2V0cyBlYWNoIGBydW4oKWAvYHJlc3VtZSgpYCkgYW5kIG1vbm90b25pY1xuICAgKiBhY3Jvc3Mgc3ViZmxvdyByZS1tb3VudHMuIFBvcHVsYXRlZCBmb3IgZXZlcnkgc3RhZ2Uga2luZC4gTWlycm9ycyB0aGVcbiAgICogbmFycmF0aXZlIHJlY29yZGVyJ3MgXCJwYXNzIE5cIiBjb3VudC5cbiAgICovXG4gIHJlYWRvbmx5IGxvb3BJdGVyYXRpb24/OiBudW1iZXI7XG4gIC8qKiBGb3JrIGJyYW5jaCBJRCB3aGVuIGluc2lkZSBhIHBhcmFsbGVsIG9yIGRlY2lkZXIgYnJhbmNoLiAqL1xuICByZWFkb25seSBmb3JrQnJhbmNoPzogc3RyaW5nO1xuICAvKipcbiAgICogT24gdGhlIGBvblJlc3VtZWAgZXZlbnQgb25seSAoOS4zNy4wKTogdGhlIFBBVVNFRCBleGVjdXRpb24gdGhpcyByZXN1bWVkXG4gICAqIHJ1biBjb250aW51ZXMg4oCUIGEgbGluayBpbiB0aGUgT3BlblRlbGVtZXRyeSBzZW5zZSwgbm90IGEgcGFyZW50LiBBIHJlc3VtZVxuICAgKiBpcyBhIG5ldyBgcnVuSWRgLCBzbyB0aGUgcGF1c2VkIGAocnVuSWQsIHJ1bnRpbWVTdGFnZUlkKWAgY2Fubm90IGJlIGFcbiAgICogcGFyZW50IG9mIGFueXRoaW5nIGluIGl0OyBpdCBpcyBuYW1lZCBoZXJlIGluc3RlYWQuIEFic2VudCB3aGVuIHRoZVxuICAgKiBjaGVja3BvaW50IHByZWRhdGVzIDkuMzcuMCAoaXQgZGlkIG5vdCByZWNvcmQgdGhlIHBhdXNlZCBleGVjdXRpb24pLlxuICAgKi9cbiAgcmVhZG9ubHkgcmVzdW1lZEZyb20/OiBSZXN1bWVMaW5rO1xuICAvKipcbiAgICogVGhlIHJ1bidzIGNvcnJlbGF0aW9uICgxMC4xKSDigJQgYGVudi50cmFjZXBhcmVudGAsIG9yIGBlbnYudHJhY2VJZGAgKyBgZW52Lm9wZXJhdGlvbklkYCwgcmVzb2x2ZWQgb25jZSBwZXJcbiAgICogbGVnLiBUaGUgU0FNRSBmcm96ZW4gb2JqZWN0LCBieSByZWZlcmVuY2UsIG9uIGV2ZXJ5IHN0YW1wIG9mIHRoZSBsZWcgKHN1YmZsb3dzIGluY2x1ZGVkKSBhbmQgb25cbiAgICogYGdldFNuYXBzaG90KCkuY29ycmVsYXRpb25gLiBBYnNlbnQg4oCUIG5vIGtleSDigJQgd2hlbiB0aGUgZW52IGdpdmVzIG5vbmUuXG4gICAqL1xuICByZWFkb25seSBjb3JyZWxhdGlvbj86IFJ1bkNvcnJlbGF0aW9uO1xufVxuXG4vKipcbiAqIFRoZSBwYXVzZWQgZXhlY3V0aW9uIGEgcmVzdW1lIGNvbnRpbnVlcyDigJQgYFRyYXZlcnNhbENvbnRleHQucmVzdW1lZEZyb21gLlxuICogQm90aCBpZHMgYXJlIHRoZSBQQVVTRUQgcnVuJ3M6IGBydW5JZGAgaXMgdGhhdCBydW4ncywgYHJ1bnRpbWVTdGFnZUlkYCB0aGVcbiAqIGV4ZWN1dGlvbiBvZiB0aGUgc3RhZ2UgdGhhdCBwYXVzZWQgKGFzIGl0cyBgb25QYXVzZWAgZXZlbnQgc3RhbXBlZCBpdCkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVzdW1lTGluayB7XG4gIHJlYWRvbmx5IHJ1bklkOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHJ1bnRpbWVTdGFnZUlkOiBzdHJpbmc7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEZsb3dSZWNvcmRlciDigJQgUGx1Z2dhYmxlIG9ic2VydmVyIGZvciBjb250cm9sIGZsb3cgZXZlbnRzLlxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKiogRXZlbnQgcGFzc2VkIHRvIEZsb3dSZWNvcmRlci5vblN0YWdlRXhlY3V0ZWQuICovXG5leHBvcnQgaW50ZXJmYWNlIEZsb3dTdGFnZUV2ZW50IHtcbiAgc3RhZ2VOYW1lOiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAvKiogVHJhdmVyc2FsIGNvbnRleHQgZnJvbSB0aGUgZW5naW5lIOKAlCByZWFkLW9ubHksIHNldCBieSB0cmF2ZXJzZXIuICovXG4gIHRyYXZlcnNhbENvbnRleHQ/OiBUcmF2ZXJzYWxDb250ZXh0O1xuICAvKipcbiAgICogV2hpY2gga2luZCBvZiBzdGFnZSBjb21wbGV0ZWQuIFRoZSBlbmdpbmUgZmlyZXMgYG9uU3RhZ2VFeGVjdXRlZGBcbiAgICogdW5pZm9ybWx5IGZvciBldmVyeSBzdGFnZSBraW5kIChwcm9wb3NhbCAjMDAzKTsgY29uc3VtZXJzIHJvdXRlIGJ5XG4gICAqIGBzdGFnZVR5cGVgIHdpdGhvdXQgYSBjaGFydC1zcGVjIGxvb2t1cC5cbiAgICovXG4gIHN0YWdlVHlwZTogU3RhZ2VUeXBlO1xufVxuXG4vKiogRXZlbnQgcGFzc2VkIHRvIEZsb3dSZWNvcmRlci5vbk5leHQuICovXG5leHBvcnQgaW50ZXJmYWNlIEZsb3dOZXh0RXZlbnQge1xuICBmcm9tOiBzdHJpbmc7XG4gIHRvOiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICB0cmF2ZXJzYWxDb250ZXh0PzogVHJhdmVyc2FsQ29udGV4dDtcbn1cblxuLyoqIEV2ZW50IHBhc3NlZCB0byBGbG93UmVjb3JkZXIub25EZWNpc2lvbi4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmxvd0RlY2lzaW9uRXZlbnQge1xuICBkZWNpZGVyOiBzdHJpbmc7XG4gIGNob3Nlbjogc3RyaW5nO1xuICByYXRpb25hbGU/OiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICB0cmF2ZXJzYWxDb250ZXh0PzogVHJhdmVyc2FsQ29udGV4dDtcbiAgLyoqIFN0cnVjdHVyZWQgZGVjaXNpb24gZXZpZGVuY2UgZnJvbSBkZWNpZGUoKSBoZWxwZXIuICovXG4gIGV2aWRlbmNlPzogRGVjaXNpb25FdmlkZW5jZTtcbn1cblxuLyoqIEV2ZW50IHBhc3NlZCB0byBGbG93UmVjb3JkZXIub25Gb3JrLiAqL1xuZXhwb3J0IGludGVyZmFjZSBGbG93Rm9ya0V2ZW50IHtcbiAgcGFyZW50OiBzdHJpbmc7XG4gIGNoaWxkcmVuOiBzdHJpbmdbXTtcbiAgdHJhdmVyc2FsQ29udGV4dD86IFRyYXZlcnNhbENvbnRleHQ7XG59XG5cbi8qKiBFdmVudCBwYXNzZWQgdG8gRmxvd1JlY29yZGVyLm9uU2VsZWN0ZWQuICovXG5leHBvcnQgaW50ZXJmYWNlIEZsb3dTZWxlY3RlZEV2ZW50IHtcbiAgcGFyZW50OiBzdHJpbmc7XG4gIHNlbGVjdGVkOiBzdHJpbmdbXTtcbiAgdG90YWw6IG51bWJlcjtcbiAgdHJhdmVyc2FsQ29udGV4dD86IFRyYXZlcnNhbENvbnRleHQ7XG4gIC8qKiBTdHJ1Y3R1cmVkIHNlbGVjdGlvbiBldmlkZW5jZSBmcm9tIHNlbGVjdCgpIGhlbHBlci4gKi9cbiAgZXZpZGVuY2U/OiBTZWxlY3Rpb25FdmlkZW5jZTtcbn1cblxuLyoqIEV2ZW50IHBhc3NlZCB0byBGbG93UmVjb3JkZXIub25TdWJmbG93LiAqL1xuZXhwb3J0IGludGVyZmFjZSBGbG93U3ViZmxvd0V2ZW50IHtcbiAgbmFtZTogc3RyaW5nO1xuICAvKiogU3ViZmxvdyBpZGVudGlmaWVyIOKAlCB1c2UgdGhpcyB0byBsb29rIHVwIHRoZSBmdWxsIHNwZWMgdmlhIHRoZSBtYW5pZmVzdC4gKi9cbiAgc3ViZmxvd0lkPzogc3RyaW5nO1xuICAvKiogQnVpbGQtdGltZSBkZXNjcmlwdGlvbiBvZiB3aGF0IHRoaXMgc3ViZmxvdyBkb2VzLiAqL1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgdHJhdmVyc2FsQ29udGV4dD86IFRyYXZlcnNhbENvbnRleHQ7XG4gIC8qKiBNYXBwZWQgaW5wdXQgdmFsdWVzIHNlbnQgSU5UTyB0aGUgc3ViZmxvdyAoZnJvbSBpbnB1dE1hcHBlci9pbnB1dEtleXMpLiBQcmVzZW50IG9uIGVudHJ5IGV2ZW50cy4gKi9cbiAgbWFwcGVkSW5wdXQ/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgLyoqIFN1YmZsb3cgc2hhcmVkIHN0YXRlIGF0IGV4aXQuIFByZXNlbnQgb24gZXhpdCBldmVudHMuICovXG4gIG91dHB1dFN0YXRlPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG59XG5cbi8qKiBFdmVudCBwYXNzZWQgdG8gRmxvd1JlY29yZGVyLm9uU3ViZmxvd1JlZ2lzdGVyZWQgKGR5bmFtaWMgc3ViZmxvdyBhdHRhY2htZW50KS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmxvd1N1YmZsb3dSZWdpc3RlcmVkRXZlbnQge1xuICAvKiogU3ViZmxvdyBpZGVudGlmaWVyLiAqL1xuICBzdWJmbG93SWQ6IHN0cmluZztcbiAgLyoqIEh1bWFuLXJlYWRhYmxlIG5hbWUuICovXG4gIG5hbWU6IHN0cmluZztcbiAgLyoqIEJ1aWxkLXRpbWUgZGVzY3JpcHRpb24uICovXG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAvKiogRnVsbCBzcGVjIHN0cnVjdHVyZSAod2hlbiBhdmFpbGFibGUgZnJvbSBidWlsZFRpbWVTdHJ1Y3R1cmUpLiAqL1xuICBzcGVjU3RydWN0dXJlPzogdW5rbm93bjtcbiAgdHJhdmVyc2FsQ29udGV4dD86IFRyYXZlcnNhbENvbnRleHQ7XG59XG5cbi8qKiBFdmVudCBwYXNzZWQgdG8gRmxvd1JlY29yZGVyLm9uTG9vcC4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmxvd0xvb3BFdmVudCB7XG4gIHRhcmdldDogc3RyaW5nO1xuICBpdGVyYXRpb246IG51bWJlcjtcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIHRyYXZlcnNhbENvbnRleHQ/OiBUcmF2ZXJzYWxDb250ZXh0O1xufVxuXG4vKiogRXZlbnQgcGFzc2VkIHRvIEZsb3dSZWNvcmRlci5vbkJyZWFrLiAqL1xuZXhwb3J0IGludGVyZmFjZSBGbG93QnJlYWtFdmVudCB7XG4gIHN0YWdlTmFtZTogc3RyaW5nO1xuICB0cmF2ZXJzYWxDb250ZXh0PzogVHJhdmVyc2FsQ29udGV4dDtcbiAgLyoqXG4gICAqIE9wdGlvbmFsIGZyZWUtZm9ybSByZWFzb24gc3VwcGxpZWQgYnkgYHNjb3BlLiRicmVhayhyZWFzb24pYC4gQWJzZW50XG4gICAqIHdoZW4gdGhlIHN0YWdlIGludm9rZWQgYCRicmVhaygpYCB3aXRob3V0IGFuIGFyZ3VtZW50LiBQcm9wYWdhdGVzIHdoZW5cbiAgICogYSBzdWJmbG93IGlzIG1vdW50ZWQgd2l0aCBgcHJvcGFnYXRlQnJlYWs6IHRydWVgIOKAlCB0aGUgb3V0ZXIgYnJlYWtcbiAgICogZXZlbnQgY2FycmllcyB0aGUgaW5uZXIgYnJlYWsncyByZWFzb24gdG9vLlxuICAgKi9cbiAgcmVhc29uPzogc3RyaW5nO1xuICAvKipcbiAgICogV2hlbiB0cnVlLCB0aGlzIGJyZWFrIGV2ZW50IHdhcyByYWlzZWQgb24gdGhlIFBBUkVOVCBiZWNhdXNlIGFuIGlubmVyXG4gICAqIHN1YmZsb3cncyBicmVhayBwcm9wYWdhdGVkIHVwICh2aWEgYFN1YmZsb3dNb3VudE9wdGlvbnMucHJvcGFnYXRlQnJlYWtgKS5cbiAgICogVGhlIG9yaWdpbmF0aW5nIGlubmVyIGJyZWFrIGZpcmVzIGl0cyBvd24gYG9uQnJlYWtgIGV2ZW50IHNlcGFyYXRlbHlcbiAgICog4oCUIHRoaXMgZmxhZyBsZXRzIHJlY29yZGVycyBkaXN0aW5ndWlzaCB0aGUgdHdvLlxuICAgKi9cbiAgcHJvcGFnYXRlZEZyb21TdWJmbG93Pzogc3RyaW5nO1xufVxuXG4vKiogRXZlbnQgcGFzc2VkIHRvIEZsb3dSZWNvcmRlci5vbkVycm9yLiAqL1xuZXhwb3J0IGludGVyZmFjZSBGbG93RXJyb3JFdmVudCB7XG4gIHN0YWdlTmFtZTogc3RyaW5nO1xuICBtZXNzYWdlOiBzdHJpbmc7XG4gIC8qKiBTdHJ1Y3R1cmVkIGVycm9yIGRldGFpbHMg4oCUIHByZXNlcnZlcyBmaWVsZC1sZXZlbCBpc3N1ZXMsIGVycm9yIGNvZGVzLCBldGMuICovXG4gIHN0cnVjdHVyZWRFcnJvcjogU3RydWN0dXJlZEVycm9ySW5mbztcbiAgdHJhdmVyc2FsQ29udGV4dD86IFRyYXZlcnNhbENvbnRleHQ7XG4gIC8qKlxuICAgKiBFeHBsaWNpdCBjaGFubmVsIGRpc2NyaW1pbmFudCDigJQgYCdmbG93J2Agb24gZXZlcnkgZW5naW5lLWRpc3BhdGNoZWRcbiAgICogZXZlbnQuIGBpc0Zsb3dFdmVudCgpYCBjaGVja3MgaXQgZmlyc3QgKGJhY2tsb2cgQjMpOyBvcHRpb25hbCBzb1xuICAgKiBjb25zdW1lci1mYWJyaWNhdGVkIGV2ZW50cyAodGVzdHMsIHJlcGxheXMpIHJlbWFpbiB0eXBlLXZhbGlkIGFuZCBmYWxsXG4gICAqIGJhY2sgdG8gdGhlIGxlZ2FjeSBwaXBlbGluZUlkLWFic2VuY2UgaGV1cmlzdGljLlxuICAgKi9cbiAgY2hhbm5lbD86ICdmbG93Jztcbn1cblxuLyoqXG4gKiBFdmVudCBwYXNzZWQgdG8gRmxvd1JlY29yZGVyLm9uVGhyb3R0bGVkIOKAlCBhIGZvcmsgY2hpbGQgZmFpbGVkIGFuZCB0aGVcbiAqIGV4ZWN1dG9yJ3MgYHRocm90dGxpbmdFcnJvckNoZWNrZXJgIHNhaWQgaXRzIGVycm9yIGlzIHRocm90dGxpbmcgKDkuMzkuMCkuXG4gKlxuICogV0hZIGFuIGV2ZW50OiB0aGUgY2hlY2tlciB1c2VkIHRvIHdyaXRlIGBtb25pdG9yLmlzVGhyb3R0bGVkYCBpbnRvIHRoZVxuICogY2hpbGQncyBmcmFtZSBBRlRFUiB0aGUgY2hpbGQncyBsYXN0IGNvbW1pdCwgc28gdGhlIGZsYWcgbGFuZGVkIG5vd2hlcmUg4oCUXG4gKiBub3QgaW4gc3RhdGUsIG5vdCBpbiB0aGUgbG9nLiBUaHJvdHRsaW5nIGlzIHRlbGVtZXRyeSwgc28gaXQgdHJhdmVscyB0aGVcbiAqIHdheSB0ZWxlbWV0cnkgZG9lczogYXMgYW4gZXZlbnQgYSByZWNvcmRlciBjYW4gY291bnQsIGFsZXJ0IG9uLCBvciBiYWNrIG9mZlxuICogZnJvbS4gVGhlIGNoaWxkJ3MgZmFpbHVyZSBzdGlsbCB0YWtlcyBpdHMgb3JkaW5hcnkgcGF0aCAodGhlIGZhbi1vdXRcbiAqIHJlY29yZHMgaXQgYXMgYHsgaXNFcnJvcjogdHJ1ZSB9YCk7IHRoaXMgZXZlbnQgb25seSBjbGFzc2lmaWVzIGl0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZsb3dUaHJvdHRsZWRFdmVudCB7XG4gIC8qKiBUaGUgZm9yayBjaGlsZCB3aG9zZSBlcnJvciB3YXMgY2xhc3NpZmllZCBhcyB0aHJvdHRsaW5nLiAqL1xuICBzdGFnZU5hbWU6IHN0cmluZztcbiAgLyoqIFN0YWJsZSBzdGFnZSBpZGVudGlmaWVyIG9mIHRoYXQgY2hpbGQgKG1hdGNoZXMgc3BlYyBub2RlIGlkKS4gKi9cbiAgc3RhZ2VJZDogc3RyaW5nO1xuICAvKiogSHVtYW4tcmVhZGFibGUgbWVzc2FnZSBvZiB0aGUgY2hpbGQncyBlcnJvci4gKi9cbiAgbWVzc2FnZTogc3RyaW5nO1xuICAvKiogU3RydWN0dXJlZCBkZXRhaWxzIG9mIHRoZSBjaGlsZCdzIGVycm9yLiAqL1xuICBzdHJ1Y3R1cmVkRXJyb3I6IFN0cnVjdHVyZWRFcnJvckluZm87XG4gIC8qKiBUaGUgRk9SSydzIHN0YW1wIOKAlCB0aGUgZmFuLW91dCBpcyB3aGVyZSB0aGUgY2xhc3NpZmljYXRpb24gaXMgbWFkZS4gKi9cbiAgdHJhdmVyc2FsQ29udGV4dD86IFRyYXZlcnNhbENvbnRleHQ7XG4gIC8qKiBFeHBsaWNpdCBjaGFubmVsIGRpc2NyaW1pbmFudCDigJQgc2VlIHtAbGluayBGbG93RXJyb3JFdmVudC5jaGFubmVsfS4gKi9cbiAgY2hhbm5lbD86ICdmbG93Jztcbn1cblxuLyoqXG4gKiBFdmVudCBwYXNzZWQgdG8gRmxvd1JlY29yZGVyLm9uQXR0ZW1wdCDigJQgb25lIGF0dGVtcHQsIGF0IGl0cyBlbmQgKDEwLjEpOiBhXG4gKiBzdGFnZSdzIG93biB1bmRlciBpdHMgcmV0cnkgcG9saWN5LCBhIGB0aW1lb3V0TXNgIG9yIGEgcnVuIGRlYWRsaW5lXG4gKiAoYHJlY29yZC5raW5kID09PSAnc3RhZ2UnYCksIG9yIOKAlCBkdXJpbmcgdGhlIHN0YWdlIOKAlCBhIGNhbGwgaXQgbWFkZVxuICogKGAnY2FsbCdgLCBgc2NvcGUuJGNhbGxgKSBvciBhbiBvdXRzaWRlIGF0dGVtcHQgaXQgcmVwb3J0ZWQgKGAnb2JzZXJ2ZWQnYCxcbiAqIFAyKS4gYHN0YWdlTmFtZWAgLyBgc3RhZ2VJZGAgLyBgdHJhdmVyc2FsQ29udGV4dGAgYXJlIHRoZSBzdGFnZSdzIGluIGV2ZXJ5XG4gKiBjYXNlOyBmaWx0ZXIgb24gYHJlY29yZC5raW5kYCB0byBjb3VudCBvbmUga2luZC5cbiAqXG4gKiBXSFkgdGhpcyBldmVudCBleGlzdHM6IGBvblN0YWdlUmV0cnlgIHNheXMgXCJhdHRlbXB0IE4gZmFpbGVkLCByZXRyeWluZ1wiIGFuZFxuICogbm90aGluZyBlbHNlIOKAlCBub3QgaG93IGxvbmcgYSB0cnkgdG9vaywgbm90IHdoeSB0aGUgc2VyaWVzIHN0b3BwZWQsIGFuZFxuICogbm90aGluZyBhdCBhbGwgd2hlbiBgcmV0cnlPbmAgZGVjbGluZWQuIEV2ZXJ5IGF0dGVtcHQgaXMgYW5cbiAqIHtAbGluayBBdHRlbXB0UmVjb3JkfSBpbnN0ZWFkLCB3aGF0ZXZlciBpdHMgb3V0Y29tZSwgd2l0aCB0aGUgZGVjaXNpb24gdGhhdFxuICogZm9sbG93ZWQgaXQgaW4gdGhlIHNoYXBlIGBkZWNpZGUoKWAgcmVjb3JkcyDigJQgdGhlIHNhbWUgcmVjb3JkcyB0aGUgc3RhZ2Unc1xuICogZXhlY3V0aW9uLXRyZWUgbm9kZSBrZWVwcyAoYFN0YWdlU25hcHNob3QuYXR0ZW1wdHNgKS5cbiAqXG4gKiBGaXJlcyBvbmNlIHBlciBhdHRlbXB0LCBiZWZvcmUgYG9uU3RhZ2VSZXRyeWAgKHdoZW4gdGhlIGF0dGVtcHQgaXMgcmV0cmllZClcbiAqIGFuZCBiZWZvcmUgYG9uRXJyb3JgIC8gYG9uU3RhZ2VFeGVjdXRlZGAgKGZvciB0aGUgbGFzdCkuIFRoZSByZWNvcmQgaXNcbiAqIGZyb3plbiBhbmQgc3Vydml2ZXMgYHN0cnVjdHVyZWRDbG9uZWA7IGBzdHJ1Y3R1cmVkRXJyb3JgIGlzIHRoZSBzZXJ2ZWQgZXJyb3JcbiAqIHdpdGggYHJhd2AsIGFzIG9uIHtAbGluayBGbG93U3RhZ2VSZXRyeUV2ZW50fSDigJQgZXhjZXB0IGZvciBhbiBvYnNlcnZlZFxuICogYXR0ZW1wdCwgd2hvc2UgZXJyb3IgdGhlIGxpYnJhcnkgbmV2ZXIgdGhyZXcgKGByYXdgIGlzIHVuZGVmaW5lZCkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmxvd0F0dGVtcHRFdmVudCB7XG4gIHN0YWdlTmFtZTogc3RyaW5nO1xuICAvKiogU3RhYmxlIHN0YWdlIGlkZW50aWZpZXIgZnJvbSB0aGUgYnVpbGRlciAobWF0Y2hlcyBzcGVjIG5vZGUgaWQpLiAqL1xuICBzdGFnZUlkOiBzdHJpbmc7XG4gIC8qKiBUaGUgYXR0ZW1wdDogdGltaW5nLCBvdXRjb21lLCBjYXRlZ29yeSwgZGVjaXNpb24sIGFuZCB0aGUgc2VydmVkIGVycm9yIHdpdGhvdXQgYHJhd2AuICovXG4gIHJlY29yZDogQXR0ZW1wdFJlY29yZDtcbiAgLyoqIFRoZSBhdHRlbXB0J3Mgc2VydmVkIGVycm9yIHdpdGggYHJhd2Ag4oCUIGFic2VudCBmb3IgYSBzdWNjZXNzIG9yIGEgcGF1c2UuICovXG4gIHN0cnVjdHVyZWRFcnJvcj86IFN0cnVjdHVyZWRFcnJvckluZm87XG4gIHRyYXZlcnNhbENvbnRleHQ/OiBUcmF2ZXJzYWxDb250ZXh0O1xuICAvKiogRXhwbGljaXQgY2hhbm5lbCBkaXNjcmltaW5hbnQg4oCUIHNlZSB7QGxpbmsgRmxvd0Vycm9yRXZlbnQuY2hhbm5lbH0uICovXG4gIGNoYW5uZWw/OiAnZmxvdyc7XG59XG5cbi8qKlxuICogRXZlbnQgcGFzc2VkIHRvIEZsb3dSZWNvcmRlci5vblN0YWdlUmV0cnkg4oCUIG9uZSBmYWlsZWQgYXR0ZW1wdCBhdCBhIHN0YWdlXG4gKiB0aGF0IGNhcnJpZXMgYSBkZWNsYXJlZCB7QGxpbmsgaW1wb3J0KCcuLi90eXBlcy5qcycpLlJldHJ5UG9saWN5fSwgYW5kIHdoaWNoXG4gKiBXSUxMIGJlIGF0dGVtcHRlZCBhZ2Fpbi5cbiAqXG4gKiBXSFkgdGhpcyBldmVudCBleGlzdHM6IGEgcmV0cnkgaGFuZC1yb2xsZWQgaW5zaWRlIGEgc3RhZ2UgZnVuY3Rpb24gbGVhdmVzIG5vXG4gKiBtYXJrIG9uIHRoZSB0cmFjZSBhdCBhbGwuIFRoaXMgZXZlbnQgaXMgd2hhdCBtYWtlcyBhIGRlY2xhcmVkIHJldHJ5IHBhcnQgb2ZcbiAqIHRoZSByZWNvcmQg4oCUIHdoaWNoIGF0dGVtcHQgZmFpbGVkLCB3aHksIGhvdyBsb25nIHRoZSBlbmdpbmUgd2FpdGVkLCBhbmQgaG93XG4gKiBtYW55IGF0dGVtcHRzIHRoZSBwb2xpY3kgYWxsb3dzLlxuICpcbiAqIEZpcmVzIG9ubHkgZm9yIGF0dGVtcHRzIGZvbGxvd2VkIGJ5IGFub3RoZXIgYXR0ZW1wdC4gVGhlIGZpbmFsIGZhaWx1cmUgdGFrZXNcbiAqIHRoZSBvcmRpbmFyeSBlcnJvciBwYXRoIChgb25FcnJvcmApLCBzbyB0aGUgdHdvIG5ldmVyIGRvdWJsZS1yZXBvcnQgdGhlIHNhbWVcbiAqIGZhaWx1cmU6IGFuIGV4aGF1c3RlZCBgYXR0ZW1wdHM6IDNgIHBvbGljeSBlbWl0cyAyIHJldHJ5IGV2ZW50cyArIDEgZXJyb3JcbiAqIGV2ZW50OyBhIGByZXRyeU9uYCB0aGF0IGRlY2xpbmVzIGVtaXRzIDAgcmV0cnkgZXZlbnRzICsgMSBlcnJvciBldmVudC4gRWFjaFxuICogYXR0ZW1wdCDigJQgcmV0cmllZCBvciBub3Qg4oCUIGFsc28gZmlyZXMge0BsaW5rIEZsb3dBdHRlbXB0RXZlbnR9IGZpcnN0ICgxMC4xKSxcbiAqIHdoaWNoIGlzIHdoZXJlIGEgZGVjbGluZWQgc3RvcCBpcyByZWNvcmRlZCAoYHJlYXNvbjogJ2RlY2xpbmVkJ2ApLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZsb3dTdGFnZVJldHJ5RXZlbnQge1xuICBzdGFnZU5hbWU6IHN0cmluZztcbiAgLyoqIFN0YWJsZSBzdGFnZSBpZGVudGlmaWVyIGZyb20gdGhlIGJ1aWxkZXIgKG1hdGNoZXMgc3BlYyBub2RlIGlkKS4gKi9cbiAgc3RhZ2VJZDogc3RyaW5nO1xuICAvKiogV2hpY2ggYXR0ZW1wdCBqdXN0IEZBSUxFRCwgMS1iYXNlZC4gKi9cbiAgYXR0ZW1wdDogbnVtYmVyO1xuICAvKiogVG90YWwgYXR0ZW1wdHMgdGhlIHBvbGljeSBhbGxvd3MsIGluY2x1ZGluZyB0aGUgZmlyc3QuICovXG4gIG1heEF0dGVtcHRzOiBudW1iZXI7XG4gIC8qKiBNaWxsaXNlY29uZHMgdGhlIGVuZ2luZSB3aWxsIHdhaXQgYmVmb3JlIHRoZSBuZXh0IGF0dGVtcHQuIGAwYCA9IGltbWVkaWF0ZS4gKi9cbiAgZGVsYXlNczogbnVtYmVyO1xuICAvKiogSHVtYW4tcmVhZGFibGUgbWVzc2FnZSDigJQgdGhlIHNhbWUgc3RyaW5nIGBvbkVycm9yYCB3b3VsZCBjYXJyeS4gKi9cbiAgbWVzc2FnZTogc3RyaW5nO1xuICAvKiogU3RydWN0dXJlZCBkZXRhaWxzIG9mIHRoZSBlcnJvciB0aGF0IGVuZGVkIHRoaXMgYXR0ZW1wdC4gKi9cbiAgc3RydWN0dXJlZEVycm9yOiBTdHJ1Y3R1cmVkRXJyb3JJbmZvO1xuICB0cmF2ZXJzYWxDb250ZXh0PzogVHJhdmVyc2FsQ29udGV4dDtcbiAgLyoqIEV4cGxpY2l0IGNoYW5uZWwgZGlzY3JpbWluYW50IOKAlCBzZWUge0BsaW5rIEZsb3dFcnJvckV2ZW50LmNoYW5uZWx9LiAqL1xuICBjaGFubmVsPzogJ2Zsb3cnO1xufVxuXG4vKiogRXZlbnQgcGFzc2VkIHRvIEZsb3dSZWNvcmRlci5vblBhdXNlLiAqL1xuZXhwb3J0IGludGVyZmFjZSBGbG93UGF1c2VFdmVudCB7XG4gIHN0YWdlTmFtZTogc3RyaW5nO1xuICBzdGFnZUlkOiBzdHJpbmc7XG4gIC8qKiBEYXRhIGZyb20gdGhlIHBhdXNlIHNpZ25hbCAocXVlc3Rpb24sIHJlYXNvbiwgbWV0YWRhdGEpLiAqL1xuICBwYXVzZURhdGE/OiB1bmtub3duO1xuICAvKiogUGF0aCB0aHJvdWdoIHN1YmZsb3dzIHRvIHRoZSBwYXVzZWQgc3RhZ2UuIEVtcHR5IGF0IHJvb3QgbGV2ZWwuICovXG4gIHN1YmZsb3dQYXRoOiByZWFkb25seSBzdHJpbmdbXTtcbiAgdHJhdmVyc2FsQ29udGV4dD86IFRyYXZlcnNhbENvbnRleHQ7XG4gIC8qKiBFeHBsaWNpdCBjaGFubmVsIGRpc2NyaW1pbmFudCDigJQgc2VlIHtAbGluayBGbG93RXJyb3JFdmVudC5jaGFubmVsfS4gKi9cbiAgY2hhbm5lbD86ICdmbG93Jztcbn1cblxuLyoqIEV2ZW50IHBhc3NlZCB0byBGbG93UmVjb3JkZXIub25SZXN1bWUuICovXG5leHBvcnQgaW50ZXJmYWNlIEZsb3dSZXN1bWVFdmVudCB7XG4gIHN0YWdlTmFtZTogc3RyaW5nO1xuICBzdGFnZUlkOiBzdHJpbmc7XG4gIC8qKiBXaGV0aGVyIHJlc3VtZSBpbnB1dCB3YXMgcHJvdmlkZWQuICovXG4gIGhhc0lucHV0OiBib29sZWFuO1xuICB0cmF2ZXJzYWxDb250ZXh0PzogVHJhdmVyc2FsQ29udGV4dDtcbiAgLyoqIEV4cGxpY2l0IGNoYW5uZWwgZGlzY3JpbWluYW50IOKAlCBzZWUge0BsaW5rIEZsb3dFcnJvckV2ZW50LmNoYW5uZWx9LiAqL1xuICBjaGFubmVsPzogJ2Zsb3cnO1xufVxuXG4vKipcbiAqIEV2ZW50IHBhc3NlZCB0byBGbG93UmVjb3JkZXIub25SdW5TdGFydCAvIG9uUnVuRW5kLlxuICpcbiAqIEJyYWNrZXRzIHRoZSB0b3AtbGV2ZWwgYGV4ZWN1dG9yLnJ1bigpYCBjYWxsLiBTdWJmbG93cyBoYXZlIHRoZWlyIG93blxuICogcGFpciAoYG9uU3ViZmxvd0VudHJ5YCAvIGBvblN1YmZsb3dFeGl0YCk7IHRoZSBydW4gcGFpciBpcyB0aGUgT1VURVJNT1NUXG4gKiBib3VuZGFyeSwgc28gY29uc3VtZXJzIGJ1aWxkaW5nIFwiZXZlcnkgc3RlcCBoYXMgYW4gaW4vb3V0XCIgdmlld3MgY2FuXG4gKiBjbG9zZSB0aGUgY2hhaW4gYXQgdGhlIHRvcCBsZXZlbC5cbiAqXG4gKiAgIC0gYG9uUnVuU3RhcnRgIHBheWxvYWQg4oaSIHRoZSBpbnB1dCBwYXNzZWQgdG8gYHJ1bih7aW5wdXR9KWBcbiAqICAgLSBgb25SdW5FbmRgICAgcGF5bG9hZCDihpIgdGhlIGNoYXJ0J3MgcmV0dXJuIHZhbHVlXG4gKlxuICogQm90aCBhcmUgcmV0YWluZWQgYXQgcnVudGltZSBiZWZvcmUgZGlzcGF0Y2gvZGVmZXJyZWQgY2FwdHVyZSB1c2luZyB0aGVcbiAqIHJ1bidzIFJlZGFjdGlvblJ1bGUgKGByZXRhaW5Cb3VuZGFyeWApOiBvd24gc3RyaW5nIGtleXMgYXQgZXZlcnkgZGVwdGggKGJ5XG4gKiBuYW1lIG9yIGRvdHRlZCBwYXRoKSBhbmQgZXhwbGljaXQgbmVzdGVkIGZpZWxkcy4gU2NhbGFycyBwYXNzIHRocm91Z2g7IGZvcmtcbiAqIGNoaWxkLUlEIGVudmVsb3BlcyBuZWVkIGV4cGxpY2l0IHBhdGhzIHN1Y2ggYXMgZmllbGRzOiB7IGNoaWxkSWQ6IFsncmVzdWx0LnNlY3JldCddIH0uXG4gKiBWYWx1ZXMgYXJlIG5vdCBzY2FubmVkLiBMaXZlIGV4ZWN1dGlvbiBpbnB1dHMgYW5kIHJldHVybiB2YWx1ZXMgc3RheSB1bmNoYW5nZWQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmxvd1J1bkV2ZW50IHtcbiAgLyoqIFJldGFpbmVkIGlucHV0IGFmdGVyIHZhbGlkYXRpb24gKGBvblJ1blN0YXJ0YCkgb3IgcmV0YWluZWQgY2hhcnQgcmV0dXJuXG4gICAqICAoYG9uUnVuRW5kYCksIHVuZGVyIHRoZSBrZXkvcGF0aCBjb250cmFjdCBhYm92ZS4gVW5kZWZpbmVkIGlmIG5laXRoZXIuICovXG4gIHBheWxvYWQ/OiB1bmtub3duO1xuICB0cmF2ZXJzYWxDb250ZXh0PzogVHJhdmVyc2FsQ29udGV4dDtcbn1cblxuLyoqXG4gKiBFdmVudCBwYXNzZWQgdG8gRmxvd1JlY29yZGVyLm9uUnVuRmFpbGVkIOKAlCB0aGUgVEVSTUlOQUwgZmFpbHVyZSBib3VuZGFyeVxuICogZm9yIGEgdG9wLWxldmVsIHJ1bi4gTWlycm9yIG9mIGBvblJ1bkVuZGAgZm9yIHRoZSBlcnJvciBwYXRoOiBpdCBmaXJlc1xuICogb25jZSwgZHVyaW5nIHRyYXZlcnNhbCwgd2hlbiB0aGUgcnVuIHRocm93cyBhIG5vbi1wYXVzZSBlcnJvciwgYmVmb3JlXG4gKiB0aGUgZXhjZXB0aW9uIHByb3BhZ2F0ZXMuIENhcnJpZXMgdGhlIHN0cnVjdHVyZWQgZXJyb3IgKGZpZWxkLWxldmVsXG4gKiBpc3N1ZXMsIGNvZGVzKSByYXRoZXIgdGhhbiBhIGZsYXR0ZW5lZCBzdHJpbmcuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmxvd1J1bkZhaWxlZEV2ZW50IHtcbiAgLyoqIFN0cnVjdHVyZWQgZGV0YWlscyBvZiB0aGUgZXJyb3IgdGhhdCB0ZXJtaW5hdGVkIHRoZSBydW4uICovXG4gIHN0cnVjdHVyZWRFcnJvcjogU3RydWN0dXJlZEVycm9ySW5mbztcbiAgdHJhdmVyc2FsQ29udGV4dD86IFRyYXZlcnNhbENvbnRleHQ7XG59XG5cbi8qKlxuICogRmxvd1JlY29yZGVyIOKAlCBQbHVnZ2FibGUgb2JzZXJ2ZXIgZm9yIGNvbnRyb2wgZmxvdyBldmVudHMuXG4gKlxuICogTWlycm9ycyB0aGUgc2NvcGUtbGV2ZWwgU2NvcGVSZWNvcmRlciBwYXR0ZXJuIGZvciB0aGUgZW5naW5lIGxheWVyLlxuICogQWxsIG1ldGhvZHMgYXJlIG9wdGlvbmFsIOKAlCBpbXBsZW1lbnQgb25seSB0aGUgaG9va3MgeW91IG5lZWQuXG4gKiBSZWNvcmRlcnMgYXJlIGludm9rZWQgc3luY2hyb25vdXNseSBpbiBhdHRhY2htZW50IG9yZGVyLlxuICogSWYgYSByZWNvcmRlciB0aHJvd3MsIHRoZSBlcnJvciBpcyBjYXVnaHQgYW5kIHN3YWxsb3dlZDsgZXhlY3V0aW9uIGNvbnRpbnVlcy5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgbWV0cmljc1JlY29yZGVyOiBGbG93UmVjb3JkZXIgPSB7XG4gKiAgIGlkOiAnbWV0cmljcycsXG4gKiAgIG9uTG9vcDogKGV2ZW50KSA9PiByZWNvcmRNZXRyaWMoJ2xvb3AuaXRlcmF0aW9uJywgZXZlbnQuaXRlcmF0aW9uKSxcbiAqICAgb25EZWNpc2lvbjogKGV2ZW50KSA9PiByZWNvcmRNZXRyaWMoJ2RlY2lzaW9uJywgZXZlbnQuY2hvc2VuKSxcbiAqIH07XG4gKiBleGVjdXRvci5hdHRhY2hGbG93UmVjb3JkZXIobWV0cmljc1JlY29yZGVyKTtcbiAqIGBgYFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZsb3dSZWNvcmRlciB7XG4gIHJlYWRvbmx5IGlkOiBzdHJpbmc7XG4gIG9uU3RhZ2VFeGVjdXRlZD8oZXZlbnQ6IEZsb3dTdGFnZUV2ZW50KTogdm9pZDtcbiAgb25OZXh0PyhldmVudDogRmxvd05leHRFdmVudCk6IHZvaWQ7XG4gIG9uRGVjaXNpb24/KGV2ZW50OiBGbG93RGVjaXNpb25FdmVudCk6IHZvaWQ7XG4gIG9uRm9yaz8oZXZlbnQ6IEZsb3dGb3JrRXZlbnQpOiB2b2lkO1xuICBvblNlbGVjdGVkPyhldmVudDogRmxvd1NlbGVjdGVkRXZlbnQpOiB2b2lkO1xuICBvblN1YmZsb3dFbnRyeT8oZXZlbnQ6IEZsb3dTdWJmbG93RXZlbnQpOiB2b2lkO1xuICBvblN1YmZsb3dFeGl0PyhldmVudDogRmxvd1N1YmZsb3dFdmVudCk6IHZvaWQ7XG4gIC8qKiBDYWxsZWQgd2hlbiBhIGR5bmFtaWMgc3ViZmxvdyBpcyByZWdpc3RlcmVkIGR1cmluZyB0cmF2ZXJzYWwuICovXG4gIG9uU3ViZmxvd1JlZ2lzdGVyZWQ/KGV2ZW50OiBGbG93U3ViZmxvd1JlZ2lzdGVyZWRFdmVudCk6IHZvaWQ7XG4gIG9uTG9vcD8oZXZlbnQ6IEZsb3dMb29wRXZlbnQpOiB2b2lkO1xuICBvbkJyZWFrPyhldmVudDogRmxvd0JyZWFrRXZlbnQpOiB2b2lkO1xuICBvbkVycm9yPyhldmVudDogRmxvd0Vycm9yRXZlbnQpOiB2b2lkO1xuICAvKipcbiAgICogQ2FsbGVkIGF0IHRoZSBlbmQgb2YgRVZFUlkgYXR0ZW1wdCDigJQgYSBzdGFnZSdzIG93biwgYW5kIHRoZSBjYWxscyBhbmRcbiAgICogb2JzZXJ2ZWQgYXR0ZW1wdHMgaXQgbWFrZXMgZHVyaW5nIHRoZSBzdGFnZSAoZmlsdGVyIG9uIGByZWNvcmQua2luZGApIOKAlFxuICAgKiB3aXRoIGl0cyByZWNvcmQgYW5kIHRoZSBkZWNpc2lvbiB0aGF0IGZvbGxvd2VkICgxMC4xKS4gU2VlXG4gICAqIHtAbGluayBGbG93QXR0ZW1wdEV2ZW50fS5cbiAgICovXG4gIG9uQXR0ZW1wdD8oZXZlbnQ6IEZsb3dBdHRlbXB0RXZlbnQpOiB2b2lkO1xuICAvKipcbiAgICogQ2FsbGVkIG9uY2UgcGVyIGZhaWxlZCBhdHRlbXB0IHRoYXQgV0lMTCBiZSByZXRyaWVkLCBmb3Igc3RhZ2VzIGNhcnJ5aW5nIGFcbiAgICogZGVjbGFyZWQgYHJldHJ5YCBwb2xpY3kuIFRoZSBmaW5hbCBmYWlsdXJlIGFycml2ZXMgdmlhIGBvbkVycm9yYCBpbnN0ZWFkLFxuICAgKiBzbyBhIHN0YWdlIG5ldmVyIHJlcG9ydHMgdGhlIHNhbWUgZmFpbHVyZSB0d2ljZS4gU2VlXG4gICAqIHtAbGluayBGbG93U3RhZ2VSZXRyeUV2ZW50fSBmb3IgdGhlIGV4YWN0IGV2ZW50IGFyaXRobWV0aWMuXG4gICAqL1xuICBvblN0YWdlUmV0cnk/KGV2ZW50OiBGbG93U3RhZ2VSZXRyeUV2ZW50KTogdm9pZDtcbiAgLyoqXG4gICAqIENhbGxlZCB3aGVuIGEgZm9yayBjaGlsZCdzIGVycm9yIGlzIGNsYXNzaWZpZWQgYXMgdGhyb3R0bGluZyBieSB0aGVcbiAgICogZXhlY3V0b3IncyBgdGhyb3R0bGluZ0Vycm9yQ2hlY2tlcmAg4oCUIHNlZSB7QGxpbmsgRmxvd1Rocm90dGxlZEV2ZW50fS5cbiAgICovXG4gIG9uVGhyb3R0bGVkPyhldmVudDogRmxvd1Rocm90dGxlZEV2ZW50KTogdm9pZDtcbiAgb25QYXVzZT8oZXZlbnQ6IEZsb3dQYXVzZUV2ZW50KTogdm9pZDtcbiAgb25SZXN1bWU/KGV2ZW50OiBGbG93UmVzdW1lRXZlbnQpOiB2b2lkO1xuICAvKipcbiAgICogQ2FsbGVkIG9uY2UgcGVyIHRvcC1sZXZlbCBgZXhlY3V0b3IucnVuKClgIEJFRk9SRSB0cmF2ZXJzYWwgYmVnaW5zLlxuICAgKiBDYXJyaWVzIGBldmVudC5wYXlsb2FkID0gcnVuKHtpbnB1dH0pYC4gU3ViZmxvdy10cmF2ZXJzZXJzIGRvbid0IGZpcmUgaXQuXG4gICAqL1xuICBvblJ1blN0YXJ0PyhldmVudDogRmxvd1J1bkV2ZW50KTogdm9pZDtcbiAgLyoqXG4gICAqIENhbGxlZCBvbmNlIHBlciB0b3AtbGV2ZWwgYGV4ZWN1dG9yLnJ1bigpYCBBRlRFUiB0cmF2ZXJzYWwgY29tcGxldGVzXG4gICAqIGNsZWFubHkuIENhcnJpZXMgYGV2ZW50LnBheWxvYWQgPSBjaGFydCdzIHJldHVybiB2YWx1ZWAuIE5PVCBmaXJlZCBvblxuICAgKiBwYXVzZSAodGhlIHJ1biBkaWRuJ3QgZW5kKSBvciB1bmNhdWdodCBlcnJvci5cbiAgICovXG4gIG9uUnVuRW5kPyhldmVudDogRmxvd1J1bkV2ZW50KTogdm9pZDtcbiAgLyoqXG4gICAqIENhbGxlZCBvbmNlIHBlciB0b3AtbGV2ZWwgYGV4ZWN1dG9yLnJ1bigpYCB3aGVuIHRoZSBydW4gdGhyb3dzIGFcbiAgICogbm9uLXBhdXNlIGVycm9yLCBCRUZPUkUgdGhlIGV4Y2VwdGlvbiBwcm9wYWdhdGVzLiBUaGUgVEVSTUlOQUxcbiAgICogY291bnRlcnBhcnQgdG8gYG9uUnVuRW5kYCDigJQgbGV0cyBhIG1vbml0b3IgY2xvc2UgdGhlIHJ1biBib3VuZGFyeSBvblxuICAgKiBmYWlsdXJlIGluc3RlYWQgb2Ygd2FpdGluZyBmb3JldmVyLiBOT1QgZmlyZWQgb24gcGF1c2UuXG4gICAqL1xuICBvblJ1bkZhaWxlZD8oZXZlbnQ6IEZsb3dSdW5GYWlsZWRFdmVudCk6IHZvaWQ7XG4gIC8qKiBDYWxsZWQgYmVmb3JlIGVhY2ggcnVuIHRvIHJlc2V0IHBlci1ydW4gc3RhdGUuIEltcGxlbWVudCBmb3Igc3RhdGVmdWwgcmVjb3JkZXJzLiAqL1xuICBjbGVhcj8oKTogdm9pZDtcbiAgLyoqIE9wdGlvbmFsOiBleHBvc2UgY29sbGVjdGVkIGRhdGEgZm9yIGluY2x1c2lvbiBpbiBzbmFwc2hvdHMuICovXG4gIHRvU25hcHNob3Q/KCk6IGltcG9ydCgnLi4vLi4vcmVjb3JkZXIvc25hcHNob3QuanMnKS5SZWNvcmRlckJ1bmRsZTtcbn1cbiJdfQ==
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2VuZ2luZS9uYXJyYXRpdmUvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7R0FPRyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogSUNvbnRyb2xGbG93TmFycmF0aXZlIOKAlCBJbnRlcmZhY2UgZm9yIGNvbnRyb2wgZmxvdyBuYXJyYXRpdmUgZ2VuZXJhdGlvbi5cbiAqXG4gKiBDYXB0dXJlcyBGTE9XIGV2ZW50cyBkdXJpbmcgdHJhdmVyc2FsOiBkZWNpc2lvbnMsIGZvcmtzLCBsb29wcywgc3ViZmxvd3MuXG4gKiBDb21wbGVtZW50YXJ5IHRvIHNjb3BlL3JlY29yZGVycy9OYXJyYXRpdmVSZWNvcmRlciB3aGljaCBjYXB0dXJlcyBEQVRBIGV2ZW50cy5cbiAqXG4gKiBAbW9kdWxlXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBBdHRlbXB0UmVjb3JkLCBSdW5Db3JyZWxhdGlvbiB9IGZyb20gJy4uLy4uL2F0dGVtcHQvdHlwZXMuanMnO1xuaW1wb3J0IHR5cGUgeyBEZWNpc2lvbkV2aWRlbmNlLCBTZWxlY3Rpb25FdmlkZW5jZSB9IGZyb20gJy4uLy4uL2RlY2lkZS90eXBlcy5qcyc7XG5pbXBvcnQgdHlwZSB7IFN0cnVjdHVyZWRFcnJvckluZm8gfSBmcm9tICcuLi8uLi9lcnJvcnMvZXJyb3JJbmZvLmpzJztcbmltcG9ydCB0eXBlIHsgVGVybWluYWxGYWlsdXJlQ29udGV4dCB9IGZyb20gJy4uLy4uL2Vycm9ycy90ZXJtaW5hbEZhaWx1cmUuanMnO1xuXG4vKipcbiAqXG4gKiBVc2VzIE51bGwgT2JqZWN0IHBhdHRlcm46IE51bGxDb250cm9sRmxvd05hcnJhdGl2ZUdlbmVyYXRvciBzYXRpc2ZpZXMgdGhpc1xuICogaW50ZXJmYWNlIHdpdGggZW1wdHkgbWV0aG9kcyBmb3IgemVyby1jb3N0IGRpc2FibGVkIHBhdGguXG4gKi9cblxuLyoqXG4gKiBUaGUga2luZCBvZiBzdGFnZSB0aGF0IGNvbXBsZXRlZC4gTGV0cyBjb25zdW1lcnMgcm91dGUgdW5pZm9ybVxuICogXCJkaWQgdGhpcyBzdGFnZSBleGVjdXRlXCIgaGFuZGxpbmcgd2l0aG91dCBhIHNpZGUtdGFibGUgbG9va3VwIGludG9cbiAqIHRoZSBjaGFydCBzcGVjLiBSZXF1aXJlZCBvbiBldmVyeSBgb25TdGFnZUV4ZWN1dGVkYCBldmVudCBzaW5jZVxuICogcHJvcG9zYWwgIzAwMyB1bmlmaWVkIHRoZSBldmVudCB0byBmaXJlIGZvciBBTEwgc3RhZ2Uga2luZHMuXG4gKi9cbmV4cG9ydCB0eXBlIFN0YWdlVHlwZSA9ICdsaW5lYXInIHwgJ2RlY2lkZXInIHwgJ2ZvcmsnIHwgJ3NlbGVjdG9yJyB8ICdzdWJmbG93LW1vdW50JztcblxuZXhwb3J0IGludGVyZmFjZSBJQ29udHJvbEZsb3dOYXJyYXRpdmUge1xuICAvKipcbiAgICogQ2FsbGVkIHdoZW4gYSBzdGFnZSBjb21wbGV0ZXMgaXRzIG1haW4gd29yay4gRmlyZXMgZm9yIEFMTCBzdGFnZVxuICAgKiBraW5kcyAoYCdsaW5lYXInYCwgYCdkZWNpZGVyJ2AsIGAnZm9yaydgLCBgJ3NlbGVjdG9yJ2AsIGAnc3ViZmxvdy1tb3VudCdgKVxuICAgKiBBRlRFUiB0aGUgY29ycmVzcG9uZGluZyBzcGVjaWFsaXplZCBldmVudCAoYG9uRGVjaXNpb25gLCBgb25Gb3JrYCxcbiAgICogYG9uU2VsZWN0ZWRgLCBgb25TdWJmbG93RW50cnlgKS4gRm9yIGxpbmVhciBzdGFnZXMsIGZpcmVzIGFmdGVyXG4gICAqIHRoZSBzdGFnZSBmdW5jdGlvbiByZXR1cm5zLlxuICAgKlxuICAgKiBDb25zdW1lcnMgdHJhY2tpbmcgXCJkaWQgdGhpcyBzdGFnZSBydW4/XCIgdXNlIHRoaXMgZXZlbnQgdW5pZm9ybWx5XG4gICAqIGFuZCBzd2l0Y2ggb24gYHN0YWdlVHlwZWAgZm9yIGtpbmQtc3BlY2lmaWMgd29yay5cbiAgICovXG4gIG9uU3RhZ2VFeGVjdXRlZChcbiAgICBzdGFnZU5hbWU6IHN0cmluZyxcbiAgICBkZXNjcmlwdGlvbjogc3RyaW5nIHwgdW5kZWZpbmVkLFxuICAgIHRyYXZlcnNhbENvbnRleHQ6IFRyYXZlcnNhbENvbnRleHQgfCB1bmRlZmluZWQsXG4gICAgc3RhZ2VUeXBlOiBTdGFnZVR5cGUsXG4gICk6IHZvaWQ7XG5cbiAgLyoqIENhbGxlZCBvbiBsaW5lYXIgY29udGludWF0aW9uIGZyb20gb25lIHN0YWdlIHRvIHRoZSBuZXh0LiAqL1xuICBvbk5leHQoZnJvbVN0YWdlOiBzdHJpbmcsIHRvU3RhZ2U6IHN0cmluZywgZGVzY3JpcHRpb24/OiBzdHJpbmcsIHRyYXZlcnNhbENvbnRleHQ/OiBUcmF2ZXJzYWxDb250ZXh0KTogdm9pZDtcblxuICAvKiogQ2FsbGVkIHdoZW4gYSBkZWNpZGVyIHNlbGVjdHMgYSBicmFuY2guIE1vc3QgdmFsdWFibGUgZm9yIExMTSBjb250ZXh0LiAqL1xuICBvbkRlY2lzaW9uKFxuICAgIGRlY2lkZXJOYW1lOiBzdHJpbmcsXG4gICAgY2hvc2VuQnJhbmNoOiBzdHJpbmcsXG4gICAgcmF0aW9uYWxlPzogc3RyaW5nLFxuICAgIGRlY2lkZXJEZXNjcmlwdGlvbj86IHN0cmluZyxcbiAgICB0cmF2ZXJzYWxDb250ZXh0PzogVHJhdmVyc2FsQ29udGV4dCxcbiAgICBldmlkZW5jZT86IERlY2lzaW9uRXZpZGVuY2UsXG4gICk6IHZvaWQ7XG5cbiAgLyoqIENhbGxlZCB3aGVuIGEgZm9yayBleGVjdXRlcyBhbGwgY2hpbGRyZW4gaW4gcGFyYWxsZWwuICovXG4gIG9uRm9yayhwYXJlbnRTdGFnZTogc3RyaW5nLCBjaGlsZE5hbWVzOiBzdHJpbmdbXSwgdHJhdmVyc2FsQ29udGV4dD86IFRyYXZlcnNhbENvbnRleHQpOiB2b2lkO1xuXG4gIC8qKiBDYWxsZWQgd2hlbiBhIHNlbGVjdG9yIHBpY2tzIGEgc3Vic2V0IG9mIGNoaWxkcmVuLiAqL1xuICBvblNlbGVjdGVkKFxuICAgIHBhcmVudFN0YWdlOiBzdHJpbmcsXG4gICAgc2VsZWN0ZWROYW1lczogc3RyaW5nW10sXG4gICAgdG90YWxDb3VudDogbnVtYmVyLFxuICAgIHRyYXZlcnNhbENvbnRleHQ/OiBUcmF2ZXJzYWxDb250ZXh0LFxuICAgIGV2aWRlbmNlPzogU2VsZWN0aW9uRXZpZGVuY2UsXG4gICk6IHZvaWQ7XG5cbiAgLyoqIENhbGxlZCB3aGVuIGVudGVyaW5nIGEgc3ViZmxvdyAobmVzdGVkIGNvbnRleHQgYm91bmRhcnkpLiAqL1xuICBvblN1YmZsb3dFbnRyeShcbiAgICBzdWJmbG93TmFtZTogc3RyaW5nLFxuICAgIHN1YmZsb3dJZD86IHN0cmluZyxcbiAgICBkZXNjcmlwdGlvbj86IHN0cmluZyxcbiAgICB0cmF2ZXJzYWxDb250ZXh0PzogVHJhdmVyc2FsQ29udGV4dCxcbiAgICBtYXBwZWRJbnB1dD86IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICApOiB2b2lkO1xuXG4gIC8qKiBDYWxsZWQgd2hlbiBleGl0aW5nIGEgc3ViZmxvdy4gKi9cbiAgb25TdWJmbG93RXhpdChcbiAgICBzdWJmbG93TmFtZTogc3RyaW5nLFxuICAgIHN1YmZsb3dJZD86IHN0cmluZyxcbiAgICB0cmF2ZXJzYWxDb250ZXh0PzogVHJhdmVyc2FsQ29udGV4dCxcbiAgICBvdXRwdXRTdGF0ZT86IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICApOiB2b2lkO1xuXG4gIC8qKiBDYWxsZWQgd2hlbiBhIGR5bmFtaWMgc3ViZmxvdyBpcyByZWdpc3RlcmVkIGR1cmluZyB0cmF2ZXJzYWwuICovXG4gIG9uU3ViZmxvd1JlZ2lzdGVyZWQoc3ViZmxvd0lkOiBzdHJpbmcsIG5hbWU6IHN0cmluZywgZGVzY3JpcHRpb24/OiBzdHJpbmcsIHNwZWNTdHJ1Y3R1cmU/OiB1bmtub3duKTogdm9pZDtcblxuICAvKiogQ2FsbGVkIG9uIGxvb3AgaXRlcmF0aW9uIChiYWNrLWVkZ2UgdHJhdmVyc2FsKS4gKi9cbiAgb25Mb29wKHRhcmdldFN0YWdlOiBzdHJpbmcsIGl0ZXJhdGlvbjogbnVtYmVyLCBkZXNjcmlwdGlvbj86IHN0cmluZywgdHJhdmVyc2FsQ29udGV4dD86IFRyYXZlcnNhbENvbnRleHQpOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBDYWxsZWQgd2hlbiBhIHN0YWdlIHRyaWdnZXJzIGJyZWFrIChlYXJseSB0ZXJtaW5hdGlvbikuXG4gICAqXG4gICAqIEBwYXJhbSByZWFzb24gLSBPcHRpb25hbCBzdHJpbmcgcGFzc2VkIHRvIGBzY29wZS4kYnJlYWsocmVhc29uKWAuXG4gICAqIEBwYXJhbSBwcm9wYWdhdGVkRnJvbVN1YmZsb3cgLSBXaGVuIHNldCwgdGhpcyBicmVhayB3YXMgcmFpc2VkIG9uIHRoZVxuICAgKiAgIHBhcmVudCBiZWNhdXNlIGFuIGlubmVyIHN1YmZsb3cgKHRoaXMgaWQpIGJyb2tlIHdpdGggYHByb3BhZ2F0ZUJyZWFrYFxuICAgKiAgIGVuYWJsZWQuIFVzZWQgYnkgcmVjb3JkZXJzIHRvIGRpc3Rpbmd1aXNoIG9yaWdpbmF0aW5nIHZzIHByb3BhZ2F0ZWRcbiAgICogICBicmVha3MgYW5kIHJlbmRlciB0aGVtIGFjY29yZGluZ2x5LlxuICAgKi9cbiAgb25CcmVhayhcbiAgICBzdGFnZU5hbWU6IHN0cmluZyxcbiAgICB0cmF2ZXJzYWxDb250ZXh0PzogVHJhdmVyc2FsQ29udGV4dCxcbiAgICByZWFzb24/OiBzdHJpbmcsXG4gICAgcHJvcGFnYXRlZEZyb21TdWJmbG93Pzogc3RyaW5nLFxuICApOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBDYWxsZWQgd2hlbiBhIHN0YWdlIHRocm93cyBhbiBlcnJvciwgd2l0aCBpdHMgU0VSVkVEIGZvcm06IGZvciBhIHN0YWdlJ3Mgb3duIGZhaWx1cmUgdGhhdCBpc1xuICAgKiBgUmVkYWN0aW9uUnVsZS5yZXRhaW5TdGFnZUVycm9yYCAodGhlIGRpYWdub3N0aWMgcG9saWN5IGFwcGxpZWQgb25jZSksIGVsc2V3aGVyZSBgZXh0cmFjdEVycm9ySW5mb2AuXG4gICAqL1xuICBvbkVycm9yKFxuICAgIHN0YWdlTmFtZTogc3RyaW5nLFxuICAgIGVycm9yTWVzc2FnZTogc3RyaW5nLFxuICAgIHN0cnVjdHVyZWRFcnJvcjogU3RydWN0dXJlZEVycm9ySW5mbyxcbiAgICB0cmF2ZXJzYWxDb250ZXh0PzogVHJhdmVyc2FsQ29udGV4dCxcbiAgKTogdm9pZDtcblxuICAvKipcbiAgICogQ2FsbGVkIGF0IHRoZSBFTkQgb2YgZXZlcnkgYXR0ZW1wdCAoMTAuMSkg4oCUIGV2ZXJ5IG91dGNvbWUsIHdpdGggdGhlXG4gICAqIGF0dGVtcHQncyB7QGxpbmsgQXR0ZW1wdFJlY29yZH0gKHRpbWluZywgb3V0Y29tZSwgY2F0ZWdvcnksIHRoZVxuICAgKiByZXRyeS1vci1zdG9wIGRlY2lzaW9uKTogYSBzdGFnZSdzIG93biAoYHJlY29yZC5raW5kID09PSAnc3RhZ2UnYCwgdW5kZXIgYVxuICAgKiByZXRyeSBwb2xpY3ksIGEgYHRpbWVvdXRNc2Agb3IgYSBydW4gZGVhZGxpbmUpLCBhbmQgdGhlIGNhbGxzIGl0IG1ha2VzXG4gICAqIChgJ2NhbGwnYCwgYHNjb3BlLiRjYWxsYCkgYW5kIG91dHNpZGUgYXR0ZW1wdHMgaXQgcmVwb3J0cyAoYCdvYnNlcnZlZCdgKVxuICAgKiBkdXJpbmcgdGhlIHN0YWdlIChQMikuIEEgc3RhZ2UgYXR0ZW1wdCBmaXJlcyBiZWZvcmUgYG9uU3RhZ2VSZXRyeWAgd2hlbiBpdFxuICAgKiBpcyByZXRyaWVkLCBhbmQgYmVmb3JlIGBvbkVycm9yYCAvIGBvblN0YWdlRXhlY3V0ZWRgIGZvciB0aGUgbGFzdC5cbiAgICogYHN0cnVjdHVyZWRFcnJvcmAgaXMgdGhlIGF0dGVtcHQncyBzZXJ2ZWQgZXJyb3IgKGByYXdgIGluY2x1ZGVkIHVubGVzcyB0aGVcbiAgICogcG9saWN5IG1hc2tlZCBpdDsgbmV2ZXIgZm9yIGFuIG9ic2VydmVkIGF0dGVtcHQpOyBhYnNlbnQgZm9yIGEgc3VjY2VzcyBvclxuICAgKiBhIHBhdXNlLlxuICAgKlxuICAgKiBFdmVudCBhcml0aG1ldGljOiBvbmUgcGVyIGF0dGVtcHQg4oCUIGZvciBhIHN0YWdlLCB0aGUgbnVtYmVyIG9mIGF0dGVtcHRzIGl0XG4gICAqIG1hZGUgcGx1cyBvbmUgcGVyIGNhbGwgb3Igb2JzZXJ2ZWQgYXR0ZW1wdCAoZmlsdGVyIG9uIGByZWNvcmQua2luZGApLlxuICAgKi9cbiAgb25BdHRlbXB0KFxuICAgIHN0YWdlTmFtZTogc3RyaW5nLFxuICAgIHN0YWdlSWQ6IHN0cmluZyxcbiAgICByZWNvcmQ6IEF0dGVtcHRSZWNvcmQsXG4gICAgc3RydWN0dXJlZEVycm9yOiBTdHJ1Y3R1cmVkRXJyb3JJbmZvIHwgdW5kZWZpbmVkLFxuICAgIHRyYXZlcnNhbENvbnRleHQ/OiBUcmF2ZXJzYWxDb250ZXh0LFxuICApOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBDYWxsZWQgd2hlbiBhbiBhdHRlbXB0IGF0IGEgc3RhZ2Ugd2l0aCBhIGRlY2xhcmVkIGByZXRyeWAgcG9saWN5IGZhaWxlZFxuICAgKiBBTkQgYW5vdGhlciBhdHRlbXB0IHdpbGwgcnVuLiBGaXJlcyBhZnRlciB0aGF0IGF0dGVtcHQncyBgb25BdHRlbXB0YCxcbiAgICogYWZ0ZXIgaXRzIHN0YWdlZCB3cml0ZXMgYXJlIGRpc2NhcmRlZCBhbmQgQkVGT1JFIHRoZSBiYWNrb2ZmIHdhaXQsIHNvIGFcbiAgICogbGl2ZSBtb25pdG9yIGxlYXJucyBcInJldHJ5aW5nIGluIDUwMCBtc1wiIHdoZW4gdGhlIGRlY2lzaW9uIGlzIG1hZGUsIG5vdFxuICAgKiBhZnRlciB0aGUgd2FpdC5cbiAgICpcbiAgICogRXZlbnQgYXJpdGhtZXRpYzogYW4gZXhoYXVzdGVkIHBvbGljeSBmaXJlcyBgYXR0ZW1wdHMgLSAxYCBvZiB0aGVzZSBhbmRcbiAgICogdGhlbiBvbmUgYG9uRXJyb3JgOyBhIGByZXRyeU9uYCB0aGF0IGRlY2xpbmVzIGZpcmVzIFpFUk8gb2YgdGhlc2UgYW5kIG9uZVxuICAgKiBgb25FcnJvcmAuIFRoZSBmaW5hbCBhdHRlbXB0IG5ldmVyIGZpcmVzIHRoaXMgZXZlbnQuXG4gICAqL1xuICBvblN0YWdlUmV0cnkoXG4gICAgc3RhZ2VOYW1lOiBzdHJpbmcsXG4gICAgc3RhZ2VJZDogc3RyaW5nLFxuICAgIGF0dGVtcHQ6IG51bWJlcixcbiAgICBtYXhBdHRlbXB0czogbnVtYmVyLFxuICAgIGRlbGF5TXM6IG51bWJlcixcbiAgICBzdHJ1Y3R1cmVkRXJyb3I6IFN0cnVjdHVyZWRFcnJvckluZm8sXG4gICAgdHJhdmVyc2FsQ29udGV4dD86IFRyYXZlcnNhbENvbnRleHQsXG4gICk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIENhbGxlZCB3aGVuIGEgZm9yayBjaGlsZCBmYWlsZWQgYW5kIHRoZSBydW4ncyBgdGhyb3R0bGluZ0Vycm9yQ2hlY2tlcmBcbiAgICogY2xhc3NpZmllZCBpdHMgZXJyb3IgYXMgdGhyb3R0bGluZyAoOS4zOS4wKS4gVGhlIGNoaWxkJ3MgZmFpbHVyZSB0YWtlc1xuICAgKiBpdHMgb3JkaW5hcnkgcGF0aCB0b287IHRoaXMgb25seSBuYW1lcyBpdCBhcyB0aHJvdHRsaW5nLlxuICAgKi9cbiAgb25UaHJvdHRsZWQ/KFxuICAgIHN0YWdlTmFtZTogc3RyaW5nLFxuICAgIHN0YWdlSWQ6IHN0cmluZyxcbiAgICBzdHJ1Y3R1cmVkRXJyb3I6IFN0cnVjdHVyZWRFcnJvckluZm8sXG4gICAgdHJhdmVyc2FsQ29udGV4dD86IFRyYXZlcnNhbENvbnRleHQsXG4gICk6IHZvaWQ7XG5cbiAgLyoqIENhbGxlZCB3aGVuIGEgcGF1c2FibGUgc3RhZ2UgcGF1c2VzIGV4ZWN1dGlvbi4gKi9cbiAgb25QYXVzZShcbiAgICBzdGFnZU5hbWU6IHN0cmluZyxcbiAgICBzdGFnZUlkOiBzdHJpbmcsXG4gICAgcGF1c2VEYXRhOiB1bmtub3duLFxuICAgIHN1YmZsb3dQYXRoOiByZWFkb25seSBzdHJpbmdbXSxcbiAgICB0cmF2ZXJzYWxDb250ZXh0PzogVHJhdmVyc2FsQ29udGV4dCxcbiAgKTogdm9pZDtcblxuICAvKiogQ2FsbGVkIHdoZW4gYSBwYXVzZWQgc3RhZ2UgaXMgcmVzdW1lZC4gKi9cbiAgb25SZXN1bWUoc3RhZ2VOYW1lOiBzdHJpbmcsIHN0YWdlSWQ6IHN0cmluZywgaGFzSW5wdXQ6IGJvb2xlYW4sIHRyYXZlcnNhbENvbnRleHQ/OiBUcmF2ZXJzYWxDb250ZXh0KTogdm9pZDtcblxuICAvKipcbiAgICogQ2FsbGVkIG9uY2UgcGVyIHRvcC1sZXZlbCBgZXhlY3V0b3IucnVuKClgLCBCRUZPUkUgdGhlIGZpcnN0IHN0YWdlIGV4ZWN1dGVzLlxuICAgKiBgaW5wdXRgIGlzIHRoZSByZXRhaW5lZCBmb3JtIG9mIGBydW4oe2lucHV0fSlgIGFmdGVyIHNjaGVtYSB2YWxpZGF0aW9uO1xuICAgKiB0aGUgcnVuJ3Mga2V5L3BhdGggcmVkYWN0aW9uIGFwcGxpZXMgYmVmb3JlIGRpc3BhdGNoLiBTZWUge0BsaW5rIEZsb3dSdW5FdmVudH0uXG4gICAqIFN1YmZsb3ctdHJhdmVyc2VycyBkbyBOT1QgZmlyZSB0aGlzIGV2ZW50IOKAlCB0aGV5IGZpcmUgYG9uU3ViZmxvd0VudHJ5YC5cbiAgICovXG4gIG9uUnVuU3RhcnQoaW5wdXQ6IHVua25vd24sIHRyYXZlcnNhbENvbnRleHQ/OiBUcmF2ZXJzYWxDb250ZXh0KTogdm9pZDtcblxuICAvKipcbiAgICogQ2FsbGVkIG9uY2UgcGVyIHRvcC1sZXZlbCBgZXhlY3V0b3IucnVuKClgLCBBRlRFUiB0aGUgbGFzdCBzdGFnZSBjb21taXRzLlxuICAgKiBgb3V0cHV0YCBpcyB0aGUgcmV0YWluZWQgZm9ybSBvZiB0aGUgY2hhcnQncyByZXR1cm4uIE5PVCBmaXJlZCBvbiBwYXVzZSAodGhlIHJ1blxuICAgKiBkaWRuJ3QgZW5kOyBpdCBzdXNwZW5kZWQpIG9yIG9uIHVuY2F1Z2h0IGVycm9yLiBTdWJmbG93LXRyYXZlcnNlcnMgZG9cbiAgICogTk9UIGZpcmUgdGhpcyBldmVudCDigJQgdGhleSBmaXJlIGBvblN1YmZsb3dFeGl0YC5cbiAgICovXG4gIG9uUnVuRW5kKG91dHB1dDogdW5rbm93biwgdHJhdmVyc2FsQ29udGV4dD86IFRyYXZlcnNhbENvbnRleHQpOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBDYWxsZWQgb25jZSBwZXIgdG9wLWxldmVsIGBleGVjdXRvci5ydW4oKWAgd2hlbiB0cmF2ZXJzYWwgdGhyb3dzIGFcbiAgICogTk9OLXBhdXNlIGVycm9yLCBCRUZPUkUgdGhlIGV4Y2VwdGlvbiBwcm9wYWdhdGVzIHRvIGBydW4oKWAncyBjYWxsZXIuXG4gICAqXG4gICAqIFRoaXMgaXMgdGhlIFRFUk1JTkFMIGNvdW50ZXJwYXJ0IHRvIGBvblJ1bkVuZGAg4oCUIGl0IGNsb3NlcyB0aGUgcnVuXG4gICAqIGJvdW5kYXJ5IHN5bW1ldHJpY2FsbHkgc28gZXZlcnkgYG9uUnVuU3RhcnRgIGlzIGZvbGxvd2VkIGJ5IGV4YWN0bHlcbiAgICogb25lIG9mIGBvblJ1bkVuZGAgKGNsZWFuKSBvciBgb25SdW5GYWlsZWRgIChlcnJvcikuIFdpdGhvdXQgaXQsIGFcbiAgICogbGl2ZSBtb25pdG9yIHNlZXMgYG9uUnVuU3RhcnRgIHRoZW4gc2lsZW5jZSBvbiBhIGZhaWxlZCBydW4gYW5kIGNhbid0XG4gICAqIHRlbGwgXCJzdGlsbCBydW5uaW5nXCIgZnJvbSBcImNyYXNoZWQuXCJcbiAgICpcbiAgICogRXJyb3JzIFNUSUxMIHRocm93IOKAlCB0aGlzIGlzIHRoZSBvYnNlcnZhYmxlIHRlcm1pbmFsIHNpZ25hbCwgbm90IGFcbiAgICogcmVjb3ZlcnkgbWVjaGFuaXNtIChubyByb3V0aW5nLCBubyBlcnJvci1zdWJmbG93KS4gUGF1c2UgaXMgTk9UIGFuXG4gICAqIGVycm9yLCBzbyBpdCBkb2VzIG5vdCBmaXJlIHRoaXMuIFN1YmZsb3ctdHJhdmVyc2VycyBkbyBOT1QgZmlyZSBpdDtcbiAgICogdGhlaXIgZXJyb3JzIHByb3BhZ2F0ZSB0byB0aGUgcGFyZW50IGFuZCBzdXJmYWNlIGF0IHRoZSB0b3AgbGV2ZWwuXG4gICAqL1xuICBvblJ1bkZhaWxlZChlcnJvcjogU3RydWN0dXJlZEVycm9ySW5mbywgdHJhdmVyc2FsQ29udGV4dD86IFRyYXZlcnNhbENvbnRleHQsIGZhaWx1cmU/OiBUZXJtaW5hbEZhaWx1cmVDb250ZXh0KTogdm9pZDtcblxuICAvKiogUmV0dXJucyBhY2N1bXVsYXRlZCBuYXJyYXRpdmUgc2VudGVuY2VzIGluIGV4ZWN1dGlvbiBvcmRlci4gKi9cbiAgZ2V0U2VudGVuY2VzKCk6IHN0cmluZ1tdO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBUcmF2ZXJzYWxDb250ZXh0IOKAlCByZWFkLW9ubHkgZXhlY3V0aW9uIGNvbnRleHQgZnJvbSB0aGUgdHJhdmVyc2VyLlxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIFRyYXZlcnNhbCBjb250ZXh0IGF0dGFjaGVkIHRvIGV2ZXJ5IEZsb3dSZWNvcmRlciBldmVudC5cbiAqIENyZWF0ZWQgYnkgdGhlIHRyYXZlcnNlciBkdXJpbmcgREZTLCBwYXNzZWQgdG8gcmVjb3JkZXJzIGFzIHJlYWQtb25seSBkYXRhLlxuICogRW5hYmxlcyByZWNvcmRlcnMgdG8gYnVpbGQgdHJlZXMsIGdyb3VwIGJ5IHN1YmZsb3csIGFuZCBjb3JyZWxhdGUgZXZlbnRzXG4gKiB3aXRob3V0IG1haW50YWluaW5nIHRoZWlyIG93biBzdGFja3Mgb3IgcG9zdC1wcm9jZXNzaW5nLlxuICpcbiAqIExpa2UgT3BlblRlbGVtZXRyeSdzIHNwYW4gY29udGV4dDogc3RhZ2VJZCArIHBhcmVudFN0YWdlSWQgZm9ybSBhIHRyZWUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVHJhdmVyc2FsQ29udGV4dCB7XG4gIC8qKlxuICAgKiBQZXItYGV4ZWN1dG9yLnJ1bigpYCBpZGVudGlmaWVyLiBHZW5lcmF0ZWQgb25jZSBhdCB0aGUgc3RhcnQgb2YgZXZlcnlcbiAgICogYHJ1bigpYCAoYW5kIGFnYWluIG9uIGByZXN1bWUoKWApOyBzaGFyZWQgYnkgZXZlcnkgZXZlbnQgb2YgdGhhdCBydW47XG4gICAqIGRpZmZlcnMgYWNyb3NzIGNvbnNlY3V0aXZlIHJ1bnMgb2YgdGhlIHNhbWUgZXhlY3V0b3IuXG4gICAqXG4gICAqIEZvcm1hdDogYCR7RGF0ZS5ub3coKX0tJHtjb3VudGVyfWAg4oCUIHNvcnRhYmxlIGxleGljb2dyYXBoaWNhbGx5ICg9PVxuICAgKiBjaHJvbm9sb2dpY2FsbHkgZm9yIHJ1bnMgPiAxbXMgYXBhcnQpLiBQcm9jZXNzLWxvY2FsIOKAlCBmb3IgY3Jvc3MtXG4gICAqIHByb2Nlc3MgY29ycmVsYXRpb24gdXNlIGBnZXRFbnYoKS50cmFjZUlkYCAoY29uc3VtZXItc3VwcGxpZWQpLlxuICAgKlxuICAgKiBSZWNvcmRlcnMgdGhhdCBhY2N1bXVsYXRlIHN0YXRlIGFjcm9zcyBydW5zIChmb3JrIGJvb2trZWVwaW5nLFxuICAgKiBzaWJsaW5nLWhhbmRvZmYgc3RhdGUsIGV0Yy4pIGRldGVjdCBcIm5ldyBydW5cIiB2aWFcbiAgICogYGV2ZW50LnRyYXZlcnNhbENvbnRleHQucnVuSWQgIT09IHRoaXMubGFzdFJ1bklkYCBhbmQgcmVzZXRcbiAgICogdHJhbnNpZW50IGJvb2trZWVwaW5nLiBSZWNvcmRlcnMgdGhhdCBkb24ndCBjYXJlIGFib3V0IHNjb3BpbmdcbiAgICogaWdub3JlIHRoZSBmaWVsZC5cbiAgICovXG4gIHJlYWRvbmx5IHJ1bklkOiBzdHJpbmc7XG4gIC8qKiBTdGFibGUgc3RhZ2UgaWRlbnRpZmllciBmcm9tIHRoZSBidWlsZGVyIChtYXRjaGVzIHNwZWMgbm9kZSBpZCkuICovXG4gIHJlYWRvbmx5IHN0YWdlSWQ6IHN0cmluZztcbiAgLyoqIFVuaXF1ZSBwZXItZXhlY3V0aW9uLXN0ZXAgaWRlbnRpZmllci4gRm9ybWF0OiBbc3ViZmxvd1BhdGgvXXN0YWdlSWQjZXhlY3V0aW9uSW5kZXguXG4gICAqICBDb3VudGVyIHJlc2V0cyBwZXIgZXhlY3V0b3Ig4oCUIGNvbWJpbmUgd2l0aCBgcnVuSWRgIGZvciBnbG9iYWxseSB1bmlxdWUgc3RlcCBrZXlzLiAqL1xuICByZWFkb25seSBydW50aW1lU3RhZ2VJZDogc3RyaW5nO1xuICAvKiogSHVtYW4tcmVhZGFibGUgc3RhZ2UgbmFtZS4gKi9cbiAgcmVhZG9ubHkgc3RhZ2VOYW1lOiBzdHJpbmc7XG4gIC8qKiBQYXJlbnQgc3RhZ2UgSUQg4oCUIHdhbGsgdXAgdG8gcmVjb25zdHJ1Y3QgdGhlIHRyZWUuIFVuZGVmaW5lZCBhdCByb290LiAqL1xuICByZWFkb25seSBwYXJlbnRTdGFnZUlkPzogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIHBhcmVudCBFWEVDVVRJT04gc3RlcCdzIHJ1bnRpbWVTdGFnZUlkIOKAlCB0aGUgcnVudGltZSB0d2luIG9mXG4gICAqIGBwYXJlbnRTdGFnZUlkYCAoUkZDLTAwMyBEMSkuIFdhbGsgdXAgdG8gcmVjb25zdHJ1Y3QgdGhlIHJ1bnRpbWVcbiAgICogYW5jZXN0b3IgY2hhaW47IGxvb3AgcmUtZW50cmllcyBzdGF5IHVuYW1iaWd1b3VzIGJlY2F1c2UgcnVudGltZSBpZHNcbiAgICogKGBzdGFnZUlkI2V4ZWN1dGlvbkluZGV4YCkgZGlmZmVyIHBlciBpdGVyYXRpb24gZXZlbiB3aGVuIHN0YWdlIGlkc1xuICAgKiByZXBlYXQuIENyb3NzZXMgc3ViZmxvdyBib3VuZGFyaWVzOiB0aGUgZmlyc3Qgc3RhZ2UgaW5zaWRlIGEgc3ViZmxvd1xuICAgKiBwb2ludHMgYXQgdGhlIE1PVU5UIHN0YWdlJ3MgcnVudGltZVN0YWdlSWQgaW4gdGhlIHBhcmVudCB0cmF2ZXJzZXIuXG4gICAqIFVuZGVmaW5lZCBvbmx5IGF0IHRoZSBmaXJzdCBzdGFnZSBvZiB0aGUgdG9wLWxldmVsIGNoYXJ0LlxuICAgKi9cbiAgcmVhZG9ubHkgcGFyZW50UnVudGltZVN0YWdlSWQ/OiBzdHJpbmc7XG4gIC8qKiBTdWJmbG93IElEIHdoZW4gaW5zaWRlIGEgc3ViZmxvdy4gVW5kZWZpbmVkIGF0IHJvb3QgbGV2ZWwuICovXG4gIHJlYWRvbmx5IHN1YmZsb3dJZD86IHN0cmluZztcbiAgLyoqIEZ1bGwgc3ViZmxvdyBwYXRoIGZvciBuZXN0ZWQgc3ViZmxvd3MgKGUuZy4sIFwic2Ytb3V0ZXIvc2YtaW5uZXJcIikuICovXG4gIHJlYWRvbmx5IHN1YmZsb3dQYXRoPzogc3RyaW5nO1xuICAvKipcbiAgICogU3ViZmxvdyBuZXN0aW5nIGRlcHRoIG9mIHRoZSBzdGFnZSdzIEFERFJFU1M6IGhvdyBtYW55IHN1YmZsb3cgc2VnbWVudHMgaXRzXG4gICAqIGBydW50aW1lU3RhZ2VJZGAgY2FycmllcyAoMCA9IHRvcCBsZXZlbCwgMSA9IGluc2lkZSBhIHN1YmZsb3cgb3IgYVxuICAgKiBgcGFyYWxsZWxGb3JFYWNoYCBicmFuY2gsIDIgPSBhIHN1YmZsb3cgaW5zaWRlIHRoYXQsIOKApikuIE9uZSBtZWFuaW5nIG9uXG4gICAqIGV2ZXJ5IHN0YW1wIOKAlCBzdGFnZSBldmVudHMsIHRoZSBydW4tYm91bmRhcnkgcm9vdCAoMCkgYW5kIGBvblJlc3VtZWBcbiAgICogKDkuMzcuMDsgdW50aWwgOS4zNi4wIHN0YWdlIGV2ZW50cyBzdGFtcGVkIHRoZSBwYXJlbnQtY2hhaW4gbGVuZ3RoIG9mIHRoZVxuICAgKiBzdGFnZSdzIGNvbnRleHQgaW5zdGVhZCkuXG4gICAqL1xuICByZWFkb25seSBkZXB0aDogbnVtYmVyO1xuICAvKipcbiAgICogSG93IG1hbnkgdGltZXMgdGhpcyBzdGFnZSBoYXMgZXhlY3V0ZWQgQkVGT1JFIGluIHRoaXMgcnVuIOKAlCB0aGUgbG9vcFxuICAgKiBpdGVyYXRpb24gY291bnQgd2hlbiBhIG5vZGUgaXMgcmV2aXNpdGVkIChlLmcuIHZpYSBgbG9vcFRvYCkuIEFic2VudCBvbiB0aGVcbiAgICogZmlyc3QgZXhlY3V0aW9uOyBgMWAgb24gdGhlIGZpcnN0IGxvb3AtYmFjaywgYDJgIG9uIHRoZSBuZXh0LCDigKYgKGkuZS5cbiAgICogYHZpc2l0Q291bnQgLSAxYCkuIFJ1bi1zY29wZWQgKHJlc2V0cyBlYWNoIGBydW4oKWAvYHJlc3VtZSgpYCkgYW5kIG1vbm90b25pY1xuICAgKiBhY3Jvc3Mgc3ViZmxvdyByZS1tb3VudHMuIFBvcHVsYXRlZCBmb3IgZXZlcnkgc3RhZ2Uga2luZC4gTWlycm9ycyB0aGVcbiAgICogbmFycmF0aXZlIHJlY29yZGVyJ3MgXCJwYXNzIE5cIiBjb3VudC5cbiAgICovXG4gIHJlYWRvbmx5IGxvb3BJdGVyYXRpb24/OiBudW1iZXI7XG4gIC8qKiBGb3JrIGJyYW5jaCBJRCB3aGVuIGluc2lkZSBhIHBhcmFsbGVsIG9yIGRlY2lkZXIgYnJhbmNoLiAqL1xuICByZWFkb25seSBmb3JrQnJhbmNoPzogc3RyaW5nO1xuICAvKipcbiAgICogT24gdGhlIGBvblJlc3VtZWAgZXZlbnQgb25seSAoOS4zNy4wKTogdGhlIFBBVVNFRCBleGVjdXRpb24gdGhpcyByZXN1bWVkXG4gICAqIHJ1biBjb250aW51ZXMg4oCUIGEgbGluayBpbiB0aGUgT3BlblRlbGVtZXRyeSBzZW5zZSwgbm90IGEgcGFyZW50LiBBIHJlc3VtZVxuICAgKiBpcyBhIG5ldyBgcnVuSWRgLCBzbyB0aGUgcGF1c2VkIGAocnVuSWQsIHJ1bnRpbWVTdGFnZUlkKWAgY2Fubm90IGJlIGFcbiAgICogcGFyZW50IG9mIGFueXRoaW5nIGluIGl0OyBpdCBpcyBuYW1lZCBoZXJlIGluc3RlYWQuIEFic2VudCB3aGVuIHRoZVxuICAgKiBjaGVja3BvaW50IHByZWRhdGVzIDkuMzcuMCAoaXQgZGlkIG5vdCByZWNvcmQgdGhlIHBhdXNlZCBleGVjdXRpb24pLlxuICAgKi9cbiAgcmVhZG9ubHkgcmVzdW1lZEZyb20/OiBSZXN1bWVMaW5rO1xuICAvKipcbiAgICogVGhlIHJ1bidzIGNvcnJlbGF0aW9uICgxMC4xKSDigJQgYGVudi50cmFjZXBhcmVudGAsIG9yIGBlbnYudHJhY2VJZGAgKyBgZW52Lm9wZXJhdGlvbklkYCwgcmVzb2x2ZWQgb25jZSBwZXJcbiAgICogbGVnLiBUaGUgU0FNRSBmcm96ZW4gb2JqZWN0LCBieSByZWZlcmVuY2UsIG9uIGV2ZXJ5IHN0YW1wIG9mIHRoZSBsZWcgKHN1YmZsb3dzIGluY2x1ZGVkKSBhbmQgb25cbiAgICogYGdldFNuYXBzaG90KCkuY29ycmVsYXRpb25gLiBBYnNlbnQg4oCUIG5vIGtleSDigJQgd2hlbiB0aGUgZW52IGdpdmVzIG5vbmUuXG4gICAqL1xuICByZWFkb25seSBjb3JyZWxhdGlvbj86IFJ1bkNvcnJlbGF0aW9uO1xufVxuXG4vKipcbiAqIFRoZSBwYXVzZWQgZXhlY3V0aW9uIGEgcmVzdW1lIGNvbnRpbnVlcyDigJQgYFRyYXZlcnNhbENvbnRleHQucmVzdW1lZEZyb21gLlxuICogQm90aCBpZHMgYXJlIHRoZSBQQVVTRUQgcnVuJ3M6IGBydW5JZGAgaXMgdGhhdCBydW4ncywgYHJ1bnRpbWVTdGFnZUlkYCB0aGVcbiAqIGV4ZWN1dGlvbiBvZiB0aGUgc3RhZ2UgdGhhdCBwYXVzZWQgKGFzIGl0cyBgb25QYXVzZWAgZXZlbnQgc3RhbXBlZCBpdCkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVzdW1lTGluayB7XG4gIHJlYWRvbmx5IHJ1bklkOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHJ1bnRpbWVTdGFnZUlkOiBzdHJpbmc7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEZsb3dSZWNvcmRlciDigJQgUGx1Z2dhYmxlIG9ic2VydmVyIGZvciBjb250cm9sIGZsb3cgZXZlbnRzLlxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKiogRXZlbnQgcGFzc2VkIHRvIEZsb3dSZWNvcmRlci5vblN0YWdlRXhlY3V0ZWQuICovXG5leHBvcnQgaW50ZXJmYWNlIEZsb3dTdGFnZUV2ZW50IHtcbiAgc3RhZ2VOYW1lOiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAvKiogVHJhdmVyc2FsIGNvbnRleHQgZnJvbSB0aGUgZW5naW5lIOKAlCByZWFkLW9ubHksIHNldCBieSB0cmF2ZXJzZXIuICovXG4gIHRyYXZlcnNhbENvbnRleHQ/OiBUcmF2ZXJzYWxDb250ZXh0O1xuICAvKipcbiAgICogV2hpY2gga2luZCBvZiBzdGFnZSBjb21wbGV0ZWQuIFRoZSBlbmdpbmUgZmlyZXMgYG9uU3RhZ2VFeGVjdXRlZGBcbiAgICogdW5pZm9ybWx5IGZvciBldmVyeSBzdGFnZSBraW5kIChwcm9wb3NhbCAjMDAzKTsgY29uc3VtZXJzIHJvdXRlIGJ5XG4gICAqIGBzdGFnZVR5cGVgIHdpdGhvdXQgYSBjaGFydC1zcGVjIGxvb2t1cC5cbiAgICovXG4gIHN0YWdlVHlwZTogU3RhZ2VUeXBlO1xufVxuXG4vKiogRXZlbnQgcGFzc2VkIHRvIEZsb3dSZWNvcmRlci5vbk5leHQuICovXG5leHBvcnQgaW50ZXJmYWNlIEZsb3dOZXh0RXZlbnQge1xuICBmcm9tOiBzdHJpbmc7XG4gIHRvOiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICB0cmF2ZXJzYWxDb250ZXh0PzogVHJhdmVyc2FsQ29udGV4dDtcbn1cblxuLyoqIEV2ZW50IHBhc3NlZCB0byBGbG93UmVjb3JkZXIub25EZWNpc2lvbi4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmxvd0RlY2lzaW9uRXZlbnQge1xuICBkZWNpZGVyOiBzdHJpbmc7XG4gIGNob3Nlbjogc3RyaW5nO1xuICByYXRpb25hbGU/OiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICB0cmF2ZXJzYWxDb250ZXh0PzogVHJhdmVyc2FsQ29udGV4dDtcbiAgLyoqIFN0cnVjdHVyZWQgZGVjaXNpb24gZXZpZGVuY2UgZnJvbSBkZWNpZGUoKSBoZWxwZXIuICovXG4gIGV2aWRlbmNlPzogRGVjaXNpb25FdmlkZW5jZTtcbn1cblxuLyoqIEV2ZW50IHBhc3NlZCB0byBGbG93UmVjb3JkZXIub25Gb3JrLiAqL1xuZXhwb3J0IGludGVyZmFjZSBGbG93Rm9ya0V2ZW50IHtcbiAgcGFyZW50OiBzdHJpbmc7XG4gIGNoaWxkcmVuOiBzdHJpbmdbXTtcbiAgdHJhdmVyc2FsQ29udGV4dD86IFRyYXZlcnNhbENvbnRleHQ7XG59XG5cbi8qKiBFdmVudCBwYXNzZWQgdG8gRmxvd1JlY29yZGVyLm9uU2VsZWN0ZWQuICovXG5leHBvcnQgaW50ZXJmYWNlIEZsb3dTZWxlY3RlZEV2ZW50IHtcbiAgcGFyZW50OiBzdHJpbmc7XG4gIHNlbGVjdGVkOiBzdHJpbmdbXTtcbiAgdG90YWw6IG51bWJlcjtcbiAgdHJhdmVyc2FsQ29udGV4dD86IFRyYXZlcnNhbENvbnRleHQ7XG4gIC8qKiBTdHJ1Y3R1cmVkIHNlbGVjdGlvbiBldmlkZW5jZSBmcm9tIHNlbGVjdCgpIGhlbHBlci4gKi9cbiAgZXZpZGVuY2U/OiBTZWxlY3Rpb25FdmlkZW5jZTtcbn1cblxuLyoqIEV2ZW50IHBhc3NlZCB0byBGbG93UmVjb3JkZXIub25TdWJmbG93LiAqL1xuZXhwb3J0IGludGVyZmFjZSBGbG93U3ViZmxvd0V2ZW50IHtcbiAgbmFtZTogc3RyaW5nO1xuICAvKiogU3ViZmxvdyBpZGVudGlmaWVyIOKAlCB1c2UgdGhpcyB0byBsb29rIHVwIHRoZSBmdWxsIHNwZWMgdmlhIHRoZSBtYW5pZmVzdC4gKi9cbiAgc3ViZmxvd0lkPzogc3RyaW5nO1xuICAvKiogQnVpbGQtdGltZSBkZXNjcmlwdGlvbiBvZiB3aGF0IHRoaXMgc3ViZmxvdyBkb2VzLiAqL1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgdHJhdmVyc2FsQ29udGV4dD86IFRyYXZlcnNhbENvbnRleHQ7XG4gIC8qKiBNYXBwZWQgaW5wdXQgdmFsdWVzIHNlbnQgSU5UTyB0aGUgc3ViZmxvdyAoZnJvbSBpbnB1dE1hcHBlci9pbnB1dEtleXMpLiBQcmVzZW50IG9uIGVudHJ5IGV2ZW50cy4gKi9cbiAgbWFwcGVkSW5wdXQ/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgLyoqIFN1YmZsb3cgc2hhcmVkIHN0YXRlIGF0IGV4aXQuIFByZXNlbnQgb24gZXhpdCBldmVudHMuICovXG4gIG91dHB1dFN0YXRlPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG59XG5cbi8qKiBFdmVudCBwYXNzZWQgdG8gRmxvd1JlY29yZGVyLm9uU3ViZmxvd1JlZ2lzdGVyZWQgKGR5bmFtaWMgc3ViZmxvdyBhdHRhY2htZW50KS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmxvd1N1YmZsb3dSZWdpc3RlcmVkRXZlbnQge1xuICAvKiogU3ViZmxvdyBpZGVudGlmaWVyLiAqL1xuICBzdWJmbG93SWQ6IHN0cmluZztcbiAgLyoqIEh1bWFuLXJlYWRhYmxlIG5hbWUuICovXG4gIG5hbWU6IHN0cmluZztcbiAgLyoqIEJ1aWxkLXRpbWUgZGVzY3JpcHRpb24uICovXG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAvKiogRnVsbCBzcGVjIHN0cnVjdHVyZSAod2hlbiBhdmFpbGFibGUgZnJvbSBidWlsZFRpbWVTdHJ1Y3R1cmUpLiAqL1xuICBzcGVjU3RydWN0dXJlPzogdW5rbm93bjtcbiAgdHJhdmVyc2FsQ29udGV4dD86IFRyYXZlcnNhbENvbnRleHQ7XG59XG5cbi8qKiBFdmVudCBwYXNzZWQgdG8gRmxvd1JlY29yZGVyLm9uTG9vcC4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmxvd0xvb3BFdmVudCB7XG4gIHRhcmdldDogc3RyaW5nO1xuICBpdGVyYXRpb246IG51bWJlcjtcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIHRyYXZlcnNhbENvbnRleHQ/OiBUcmF2ZXJzYWxDb250ZXh0O1xufVxuXG4vKiogRXZlbnQgcGFzc2VkIHRvIEZsb3dSZWNvcmRlci5vbkJyZWFrLiAqL1xuZXhwb3J0IGludGVyZmFjZSBGbG93QnJlYWtFdmVudCB7XG4gIHN0YWdlTmFtZTogc3RyaW5nO1xuICB0cmF2ZXJzYWxDb250ZXh0PzogVHJhdmVyc2FsQ29udGV4dDtcbiAgLyoqXG4gICAqIE9wdGlvbmFsIGZyZWUtZm9ybSByZWFzb24gc3VwcGxpZWQgYnkgYHNjb3BlLiRicmVhayhyZWFzb24pYC4gQWJzZW50XG4gICAqIHdoZW4gdGhlIHN0YWdlIGludm9rZWQgYCRicmVhaygpYCB3aXRob3V0IGFuIGFyZ3VtZW50LiBQcm9wYWdhdGVzIHdoZW5cbiAgICogYSBzdWJmbG93IGlzIG1vdW50ZWQgd2l0aCBgcHJvcGFnYXRlQnJlYWs6IHRydWVgIOKAlCB0aGUgb3V0ZXIgYnJlYWtcbiAgICogZXZlbnQgY2FycmllcyB0aGUgaW5uZXIgYnJlYWsncyByZWFzb24gdG9vLlxuICAgKi9cbiAgcmVhc29uPzogc3RyaW5nO1xuICAvKipcbiAgICogV2hlbiB0cnVlLCB0aGlzIGJyZWFrIGV2ZW50IHdhcyByYWlzZWQgb24gdGhlIFBBUkVOVCBiZWNhdXNlIGFuIGlubmVyXG4gICAqIHN1YmZsb3cncyBicmVhayBwcm9wYWdhdGVkIHVwICh2aWEgYFN1YmZsb3dNb3VudE9wdGlvbnMucHJvcGFnYXRlQnJlYWtgKS5cbiAgICogVGhlIG9yaWdpbmF0aW5nIGlubmVyIGJyZWFrIGZpcmVzIGl0cyBvd24gYG9uQnJlYWtgIGV2ZW50IHNlcGFyYXRlbHlcbiAgICog4oCUIHRoaXMgZmxhZyBsZXRzIHJlY29yZGVycyBkaXN0aW5ndWlzaCB0aGUgdHdvLlxuICAgKi9cbiAgcHJvcGFnYXRlZEZyb21TdWJmbG93Pzogc3RyaW5nO1xufVxuXG4vKiogRXZlbnQgcGFzc2VkIHRvIEZsb3dSZWNvcmRlci5vbkVycm9yLiAqL1xuZXhwb3J0IGludGVyZmFjZSBGbG93RXJyb3JFdmVudCB7XG4gIHN0YWdlTmFtZTogc3RyaW5nO1xuICBtZXNzYWdlOiBzdHJpbmc7XG4gIC8qKiBTdHJ1Y3R1cmVkIGVycm9yIGRldGFpbHMg4oCUIHByZXNlcnZlcyBmaWVsZC1sZXZlbCBpc3N1ZXMsIGVycm9yIGNvZGVzLCBldGMuICovXG4gIHN0cnVjdHVyZWRFcnJvcjogU3RydWN0dXJlZEVycm9ySW5mbztcbiAgdHJhdmVyc2FsQ29udGV4dD86IFRyYXZlcnNhbENvbnRleHQ7XG4gIC8qKlxuICAgKiBFeHBsaWNpdCBjaGFubmVsIGRpc2NyaW1pbmFudCDigJQgYCdmbG93J2Agb24gZXZlcnkgZW5naW5lLWRpc3BhdGNoZWRcbiAgICogZXZlbnQuIGBpc0Zsb3dFdmVudCgpYCBjaGVja3MgaXQgZmlyc3QgKGJhY2tsb2cgQjMpOyBvcHRpb25hbCBzb1xuICAgKiBjb25zdW1lci1mYWJyaWNhdGVkIGV2ZW50cyAodGVzdHMsIHJlcGxheXMpIHJlbWFpbiB0eXBlLXZhbGlkIGFuZCBmYWxsXG4gICAqIGJhY2sgdG8gdGhlIGxlZ2FjeSBwaXBlbGluZUlkLWFic2VuY2UgaGV1cmlzdGljLlxuICAgKi9cbiAgY2hhbm5lbD86ICdmbG93Jztcbn1cblxuLyoqXG4gKiBFdmVudCBwYXNzZWQgdG8gRmxvd1JlY29yZGVyLm9uVGhyb3R0bGVkIOKAlCBhIGZvcmsgY2hpbGQgZmFpbGVkIGFuZCB0aGVcbiAqIGV4ZWN1dG9yJ3MgYHRocm90dGxpbmdFcnJvckNoZWNrZXJgIHNhaWQgaXRzIGVycm9yIGlzIHRocm90dGxpbmcgKDkuMzkuMCkuXG4gKlxuICogV0hZIGFuIGV2ZW50OiB0aGUgY2hlY2tlciB1c2VkIHRvIHdyaXRlIGBtb25pdG9yLmlzVGhyb3R0bGVkYCBpbnRvIHRoZVxuICogY2hpbGQncyBmcmFtZSBBRlRFUiB0aGUgY2hpbGQncyBsYXN0IGNvbW1pdCwgc28gdGhlIGZsYWcgbGFuZGVkIG5vd2hlcmUg4oCUXG4gKiBub3QgaW4gc3RhdGUsIG5vdCBpbiB0aGUgbG9nLiBUaHJvdHRsaW5nIGlzIHRlbGVtZXRyeSwgc28gaXQgdHJhdmVscyB0aGVcbiAqIHdheSB0ZWxlbWV0cnkgZG9lczogYXMgYW4gZXZlbnQgYSByZWNvcmRlciBjYW4gY291bnQsIGFsZXJ0IG9uLCBvciBiYWNrIG9mZlxuICogZnJvbS4gVGhlIGNoaWxkJ3MgZmFpbHVyZSBzdGlsbCB0YWtlcyBpdHMgb3JkaW5hcnkgcGF0aCAodGhlIGZhbi1vdXRcbiAqIHJlY29yZHMgaXQgYXMgYHsgaXNFcnJvcjogdHJ1ZSB9YCk7IHRoaXMgZXZlbnQgb25seSBjbGFzc2lmaWVzIGl0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZsb3dUaHJvdHRsZWRFdmVudCB7XG4gIC8qKiBUaGUgZm9yayBjaGlsZCB3aG9zZSBlcnJvciB3YXMgY2xhc3NpZmllZCBhcyB0aHJvdHRsaW5nLiAqL1xuICBzdGFnZU5hbWU6IHN0cmluZztcbiAgLyoqIFN0YWJsZSBzdGFnZSBpZGVudGlmaWVyIG9mIHRoYXQgY2hpbGQgKG1hdGNoZXMgc3BlYyBub2RlIGlkKS4gKi9cbiAgc3RhZ2VJZDogc3RyaW5nO1xuICAvKiogSHVtYW4tcmVhZGFibGUgbWVzc2FnZSBvZiB0aGUgY2hpbGQncyBlcnJvci4gKi9cbiAgbWVzc2FnZTogc3RyaW5nO1xuICAvKiogU3RydWN0dXJlZCBkZXRhaWxzIG9mIHRoZSBjaGlsZCdzIGVycm9yLiAqL1xuICBzdHJ1Y3R1cmVkRXJyb3I6IFN0cnVjdHVyZWRFcnJvckluZm87XG4gIC8qKiBUaGUgRk9SSydzIHN0YW1wIOKAlCB0aGUgZmFuLW91dCBpcyB3aGVyZSB0aGUgY2xhc3NpZmljYXRpb24gaXMgbWFkZS4gKi9cbiAgdHJhdmVyc2FsQ29udGV4dD86IFRyYXZlcnNhbENvbnRleHQ7XG4gIC8qKiBFeHBsaWNpdCBjaGFubmVsIGRpc2NyaW1pbmFudCDigJQgc2VlIHtAbGluayBGbG93RXJyb3JFdmVudC5jaGFubmVsfS4gKi9cbiAgY2hhbm5lbD86ICdmbG93Jztcbn1cblxuLyoqXG4gKiBFdmVudCBwYXNzZWQgdG8gRmxvd1JlY29yZGVyLm9uQXR0ZW1wdCDigJQgb25lIGF0dGVtcHQsIGF0IGl0cyBlbmQgKDEwLjEpOiBhXG4gKiBzdGFnZSdzIG93biB1bmRlciBpdHMgcmV0cnkgcG9saWN5LCBhIGB0aW1lb3V0TXNgIG9yIGEgcnVuIGRlYWRsaW5lXG4gKiAoYHJlY29yZC5raW5kID09PSAnc3RhZ2UnYCksIG9yIOKAlCBkdXJpbmcgdGhlIHN0YWdlIOKAlCBhIGNhbGwgaXQgbWFkZVxuICogKGAnY2FsbCdgLCBgc2NvcGUuJGNhbGxgKSBvciBhbiBvdXRzaWRlIGF0dGVtcHQgaXQgcmVwb3J0ZWQgKGAnb2JzZXJ2ZWQnYCxcbiAqIFAyKS4gYHN0YWdlTmFtZWAgLyBgc3RhZ2VJZGAgLyBgdHJhdmVyc2FsQ29udGV4dGAgYXJlIHRoZSBzdGFnZSdzIGluIGV2ZXJ5XG4gKiBjYXNlOyBmaWx0ZXIgb24gYHJlY29yZC5raW5kYCB0byBjb3VudCBvbmUga2luZC5cbiAqXG4gKiBXSFkgdGhpcyBldmVudCBleGlzdHM6IGBvblN0YWdlUmV0cnlgIHNheXMgXCJhdHRlbXB0IE4gZmFpbGVkLCByZXRyeWluZ1wiIGFuZFxuICogbm90aGluZyBlbHNlIOKAlCBub3QgaG93IGxvbmcgYSB0cnkgdG9vaywgbm90IHdoeSB0aGUgc2VyaWVzIHN0b3BwZWQsIGFuZFxuICogbm90aGluZyBhdCBhbGwgd2hlbiBgcmV0cnlPbmAgZGVjbGluZWQuIEV2ZXJ5IGF0dGVtcHQgaXMgYW5cbiAqIHtAbGluayBBdHRlbXB0UmVjb3JkfSBpbnN0ZWFkLCB3aGF0ZXZlciBpdHMgb3V0Y29tZSwgd2l0aCB0aGUgZGVjaXNpb24gdGhhdFxuICogZm9sbG93ZWQgaXQgaW4gdGhlIHNoYXBlIGBkZWNpZGUoKWAgcmVjb3JkcyDigJQgdGhlIHNhbWUgcmVjb3JkcyB0aGUgc3RhZ2Unc1xuICogZXhlY3V0aW9uLXRyZWUgbm9kZSBrZWVwcyAoYFN0YWdlU25hcHNob3QuYXR0ZW1wdHNgKS5cbiAqXG4gKiBGaXJlcyBvbmNlIHBlciBhdHRlbXB0LCBiZWZvcmUgYG9uU3RhZ2VSZXRyeWAgKHdoZW4gdGhlIGF0dGVtcHQgaXMgcmV0cmllZClcbiAqIGFuZCBiZWZvcmUgYG9uRXJyb3JgIC8gYG9uU3RhZ2VFeGVjdXRlZGAgKGZvciB0aGUgbGFzdCkuIFRoZSByZWNvcmQgaXNcbiAqIGZyb3plbiBhbmQgc3Vydml2ZXMgYHN0cnVjdHVyZWRDbG9uZWA7IGBzdHJ1Y3R1cmVkRXJyb3JgIGlzIHRoZSBzZXJ2ZWQgZXJyb3JcbiAqIHdpdGggYHJhd2AsIGFzIG9uIHtAbGluayBGbG93U3RhZ2VSZXRyeUV2ZW50fSDigJQgZXhjZXB0IGZvciBhbiBvYnNlcnZlZFxuICogYXR0ZW1wdCwgd2hvc2UgZXJyb3IgdGhlIGxpYnJhcnkgbmV2ZXIgdGhyZXcgKGByYXdgIGlzIHVuZGVmaW5lZCkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmxvd0F0dGVtcHRFdmVudCB7XG4gIHN0YWdlTmFtZTogc3RyaW5nO1xuICAvKiogU3RhYmxlIHN0YWdlIGlkZW50aWZpZXIgZnJvbSB0aGUgYnVpbGRlciAobWF0Y2hlcyBzcGVjIG5vZGUgaWQpLiAqL1xuICBzdGFnZUlkOiBzdHJpbmc7XG4gIC8qKiBUaGUgYXR0ZW1wdDogdGltaW5nLCBvdXRjb21lLCBjYXRlZ29yeSwgZGVjaXNpb24sIGFuZCB0aGUgc2VydmVkIGVycm9yIHdpdGhvdXQgYHJhd2AuICovXG4gIHJlY29yZDogQXR0ZW1wdFJlY29yZDtcbiAgLyoqIFRoZSBhdHRlbXB0J3Mgc2VydmVkIGVycm9yIHdpdGggYHJhd2Ag4oCUIGFic2VudCBmb3IgYSBzdWNjZXNzIG9yIGEgcGF1c2UuICovXG4gIHN0cnVjdHVyZWRFcnJvcj86IFN0cnVjdHVyZWRFcnJvckluZm87XG4gIHRyYXZlcnNhbENvbnRleHQ/OiBUcmF2ZXJzYWxDb250ZXh0O1xuICAvKiogRXhwbGljaXQgY2hhbm5lbCBkaXNjcmltaW5hbnQg4oCUIHNlZSB7QGxpbmsgRmxvd0Vycm9yRXZlbnQuY2hhbm5lbH0uICovXG4gIGNoYW5uZWw/OiAnZmxvdyc7XG59XG5cbi8qKlxuICogRXZlbnQgcGFzc2VkIHRvIEZsb3dSZWNvcmRlci5vblN0YWdlUmV0cnkg4oCUIG9uZSBmYWlsZWQgYXR0ZW1wdCBhdCBhIHN0YWdlXG4gKiB0aGF0IGNhcnJpZXMgYSBkZWNsYXJlZCB7QGxpbmsgaW1wb3J0KCcuLi90eXBlcy5qcycpLlJldHJ5UG9saWN5fSwgYW5kIHdoaWNoXG4gKiBXSUxMIGJlIGF0dGVtcHRlZCBhZ2Fpbi5cbiAqXG4gKiBXSFkgdGhpcyBldmVudCBleGlzdHM6IGEgcmV0cnkgaGFuZC1yb2xsZWQgaW5zaWRlIGEgc3RhZ2UgZnVuY3Rpb24gbGVhdmVzIG5vXG4gKiBtYXJrIG9uIHRoZSB0cmFjZSBhdCBhbGwuIFRoaXMgZXZlbnQgaXMgd2hhdCBtYWtlcyBhIGRlY2xhcmVkIHJldHJ5IHBhcnQgb2ZcbiAqIHRoZSByZWNvcmQg4oCUIHdoaWNoIGF0dGVtcHQgZmFpbGVkLCB3aHksIGhvdyBsb25nIHRoZSBlbmdpbmUgd2FpdGVkLCBhbmQgaG93XG4gKiBtYW55IGF0dGVtcHRzIHRoZSBwb2xpY3kgYWxsb3dzLlxuICpcbiAqIEZpcmVzIG9ubHkgZm9yIGF0dGVtcHRzIGZvbGxvd2VkIGJ5IGFub3RoZXIgYXR0ZW1wdC4gVGhlIGZpbmFsIGZhaWx1cmUgdGFrZXNcbiAqIHRoZSBvcmRpbmFyeSBlcnJvciBwYXRoIChgb25FcnJvcmApLCBzbyB0aGUgdHdvIG5ldmVyIGRvdWJsZS1yZXBvcnQgdGhlIHNhbWVcbiAqIGZhaWx1cmU6IGFuIGV4aGF1c3RlZCBgYXR0ZW1wdHM6IDNgIHBvbGljeSBlbWl0cyAyIHJldHJ5IGV2ZW50cyArIDEgZXJyb3JcbiAqIGV2ZW50OyBhIGByZXRyeU9uYCB0aGF0IGRlY2xpbmVzIGVtaXRzIDAgcmV0cnkgZXZlbnRzICsgMSBlcnJvciBldmVudC4gRWFjaFxuICogYXR0ZW1wdCDigJQgcmV0cmllZCBvciBub3Qg4oCUIGFsc28gZmlyZXMge0BsaW5rIEZsb3dBdHRlbXB0RXZlbnR9IGZpcnN0ICgxMC4xKSxcbiAqIHdoaWNoIGlzIHdoZXJlIGEgZGVjbGluZWQgc3RvcCBpcyByZWNvcmRlZCAoYHJlYXNvbjogJ2RlY2xpbmVkJ2ApLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZsb3dTdGFnZVJldHJ5RXZlbnQge1xuICBzdGFnZU5hbWU6IHN0cmluZztcbiAgLyoqIFN0YWJsZSBzdGFnZSBpZGVudGlmaWVyIGZyb20gdGhlIGJ1aWxkZXIgKG1hdGNoZXMgc3BlYyBub2RlIGlkKS4gKi9cbiAgc3RhZ2VJZDogc3RyaW5nO1xuICAvKiogV2hpY2ggYXR0ZW1wdCBqdXN0IEZBSUxFRCwgMS1iYXNlZC4gKi9cbiAgYXR0ZW1wdDogbnVtYmVyO1xuICAvKiogVG90YWwgYXR0ZW1wdHMgdGhlIHBvbGljeSBhbGxvd3MsIGluY2x1ZGluZyB0aGUgZmlyc3QuICovXG4gIG1heEF0dGVtcHRzOiBudW1iZXI7XG4gIC8qKiBNaWxsaXNlY29uZHMgdGhlIGVuZ2luZSB3aWxsIHdhaXQgYmVmb3JlIHRoZSBuZXh0IGF0dGVtcHQuIGAwYCA9IGltbWVkaWF0ZS4gKi9cbiAgZGVsYXlNczogbnVtYmVyO1xuICAvKiogSHVtYW4tcmVhZGFibGUgbWVzc2FnZSDigJQgdGhlIHNhbWUgc3RyaW5nIGBvbkVycm9yYCB3b3VsZCBjYXJyeS4gKi9cbiAgbWVzc2FnZTogc3RyaW5nO1xuICAvKiogU3RydWN0dXJlZCBkZXRhaWxzIG9mIHRoZSBlcnJvciB0aGF0IGVuZGVkIHRoaXMgYXR0ZW1wdC4gKi9cbiAgc3RydWN0dXJlZEVycm9yOiBTdHJ1Y3R1cmVkRXJyb3JJbmZvO1xuICB0cmF2ZXJzYWxDb250ZXh0PzogVHJhdmVyc2FsQ29udGV4dDtcbiAgLyoqIEV4cGxpY2l0IGNoYW5uZWwgZGlzY3JpbWluYW50IOKAlCBzZWUge0BsaW5rIEZsb3dFcnJvckV2ZW50LmNoYW5uZWx9LiAqL1xuICBjaGFubmVsPzogJ2Zsb3cnO1xufVxuXG4vKiogRXZlbnQgcGFzc2VkIHRvIEZsb3dSZWNvcmRlci5vblBhdXNlLiAqL1xuZXhwb3J0IGludGVyZmFjZSBGbG93UGF1c2VFdmVudCB7XG4gIHN0YWdlTmFtZTogc3RyaW5nO1xuICBzdGFnZUlkOiBzdHJpbmc7XG4gIC8qKiBEYXRhIGZyb20gdGhlIHBhdXNlIHNpZ25hbCAocXVlc3Rpb24sIHJlYXNvbiwgbWV0YWRhdGEpLiAqL1xuICBwYXVzZURhdGE/OiB1bmtub3duO1xuICAvKiogUGF0aCB0aHJvdWdoIHN1YmZsb3dzIHRvIHRoZSBwYXVzZWQgc3RhZ2UuIEVtcHR5IGF0IHJvb3QgbGV2ZWwuICovXG4gIHN1YmZsb3dQYXRoOiByZWFkb25seSBzdHJpbmdbXTtcbiAgdHJhdmVyc2FsQ29udGV4dD86IFRyYXZlcnNhbENvbnRleHQ7XG4gIC8qKiBFeHBsaWNpdCBjaGFubmVsIGRpc2NyaW1pbmFudCDigJQgc2VlIHtAbGluayBGbG93RXJyb3JFdmVudC5jaGFubmVsfS4gKi9cbiAgY2hhbm5lbD86ICdmbG93Jztcbn1cblxuLyoqIEV2ZW50IHBhc3NlZCB0byBGbG93UmVjb3JkZXIub25SZXN1bWUuICovXG5leHBvcnQgaW50ZXJmYWNlIEZsb3dSZXN1bWVFdmVudCB7XG4gIHN0YWdlTmFtZTogc3RyaW5nO1xuICBzdGFnZUlkOiBzdHJpbmc7XG4gIC8qKiBXaGV0aGVyIHJlc3VtZSBpbnB1dCB3YXMgcHJvdmlkZWQuICovXG4gIGhhc0lucHV0OiBib29sZWFuO1xuICB0cmF2ZXJzYWxDb250ZXh0PzogVHJhdmVyc2FsQ29udGV4dDtcbiAgLyoqIEV4cGxpY2l0IGNoYW5uZWwgZGlzY3JpbWluYW50IOKAlCBzZWUge0BsaW5rIEZsb3dFcnJvckV2ZW50LmNoYW5uZWx9LiAqL1xuICBjaGFubmVsPzogJ2Zsb3cnO1xufVxuXG4vKipcbiAqIEV2ZW50IHBhc3NlZCB0byBGbG93UmVjb3JkZXIub25SdW5TdGFydCAvIG9uUnVuRW5kLlxuICpcbiAqIEJyYWNrZXRzIHRoZSB0b3AtbGV2ZWwgYGV4ZWN1dG9yLnJ1bigpYCBjYWxsLiBTdWJmbG93cyBoYXZlIHRoZWlyIG93blxuICogcGFpciAoYG9uU3ViZmxvd0VudHJ5YCAvIGBvblN1YmZsb3dFeGl0YCk7IHRoZSBydW4gcGFpciBpcyB0aGUgT1VURVJNT1NUXG4gKiBib3VuZGFyeSwgc28gY29uc3VtZXJzIGJ1aWxkaW5nIFwiZXZlcnkgc3RlcCBoYXMgYW4gaW4vb3V0XCIgdmlld3MgY2FuXG4gKiBjbG9zZSB0aGUgY2hhaW4gYXQgdGhlIHRvcCBsZXZlbC5cbiAqXG4gKiAgIC0gYG9uUnVuU3RhcnRgIHBheWxvYWQg4oaSIHRoZSBpbnB1dCBwYXNzZWQgdG8gYHJ1bih7aW5wdXR9KWBcbiAqICAgLSBgb25SdW5FbmRgICAgcGF5bG9hZCDihpIgdGhlIGNoYXJ0J3MgcmV0dXJuIHZhbHVlXG4gKlxuICogQm90aCBhcmUgcmV0YWluZWQgYXQgcnVudGltZSBiZWZvcmUgZGlzcGF0Y2gvZGVmZXJyZWQgY2FwdHVyZSB1c2luZyB0aGVcbiAqIHJ1bidzIFJlZGFjdGlvblJ1bGUgKGByZXRhaW5Cb3VuZGFyeWApOiBvd24gc3RyaW5nIGtleXMgYXQgZXZlcnkgZGVwdGggKGJ5XG4gKiBuYW1lIG9yIGRvdHRlZCBwYXRoKSBhbmQgZXhwbGljaXQgbmVzdGVkIGZpZWxkcy4gU2NhbGFycyBwYXNzIHRocm91Z2g7IGZvcmtcbiAqIGNoaWxkLUlEIGVudmVsb3BlcyBuZWVkIGV4cGxpY2l0IHBhdGhzIHN1Y2ggYXMgZmllbGRzOiB7IGNoaWxkSWQ6IFsncmVzdWx0LnNlY3JldCddIH0uXG4gKiBWYWx1ZXMgYXJlIG5vdCBzY2FubmVkLiBMaXZlIGV4ZWN1dGlvbiBpbnB1dHMgYW5kIHJldHVybiB2YWx1ZXMgc3RheSB1bmNoYW5nZWQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmxvd1J1bkV2ZW50IHtcbiAgLyoqIFJldGFpbmVkIGlucHV0IGFmdGVyIHZhbGlkYXRpb24gKGBvblJ1blN0YXJ0YCkgb3IgcmV0YWluZWQgY2hhcnQgcmV0dXJuXG4gICAqICAoYG9uUnVuRW5kYCksIHVuZGVyIHRoZSBrZXkvcGF0aCBjb250cmFjdCBhYm92ZS4gVW5kZWZpbmVkIGlmIG5laXRoZXIuICovXG4gIHBheWxvYWQ/OiB1bmtub3duO1xuICB0cmF2ZXJzYWxDb250ZXh0PzogVHJhdmVyc2FsQ29udGV4dDtcbn1cblxuLyoqXG4gKiBFdmVudCBwYXNzZWQgdG8gRmxvd1JlY29yZGVyLm9uUnVuRmFpbGVkIOKAlCB0aGUgVEVSTUlOQUwgZmFpbHVyZSBib3VuZGFyeVxuICogZm9yIGEgdG9wLWxldmVsIHJ1bi4gTWlycm9yIG9mIGBvblJ1bkVuZGAgZm9yIHRoZSBlcnJvciBwYXRoOiBpdCBmaXJlc1xuICogb25jZSwgZHVyaW5nIHRyYXZlcnNhbCwgd2hlbiB0aGUgcnVuIHRocm93cyBhIG5vbi1wYXVzZSBlcnJvciwgYmVmb3JlXG4gKiB0aGUgZXhjZXB0aW9uIHByb3BhZ2F0ZXMuIENhcnJpZXMgdGhlIHN0cnVjdHVyZWQgZXJyb3IgKGZpZWxkLWxldmVsXG4gKiBpc3N1ZXMsIGNvZGVzKSByYXRoZXIgdGhhbiBhIGZsYXR0ZW5lZCBzdHJpbmcuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmxvd1J1bkZhaWxlZEV2ZW50IHtcbiAgLyoqIFN0cnVjdHVyZWQgZGV0YWlscyBvZiB0aGUgZXJyb3IgdGhhdCB0ZXJtaW5hdGVkIHRoZSBydW4uICovXG4gIHN0cnVjdHVyZWRFcnJvcjogU3RydWN0dXJlZEVycm9ySW5mbztcbiAgdHJhdmVyc2FsQ29udGV4dD86IFRyYXZlcnNhbENvbnRleHQ7XG4gIC8qKiBOYXRpdmUgdGVybWluYWwgb3duZXJzaGlwLCBpbmRlcGVuZGVudCBvZiBzZXJ2ZWQgZXJyb3IgZGV0YWlscy4gQWJzZW50IG9uIGxlZ2FjeSBtYW51YWxseSBlbWl0dGVkIGV2ZW50cy4gKi9cbiAgcmVhZG9ubHkgZmFpbHVyZT86IFRlcm1pbmFsRmFpbHVyZUNvbnRleHQ7XG59XG5cbi8qKlxuICogRmxvd1JlY29yZGVyIOKAlCBQbHVnZ2FibGUgb2JzZXJ2ZXIgZm9yIGNvbnRyb2wgZmxvdyBldmVudHMuXG4gKlxuICogTWlycm9ycyB0aGUgc2NvcGUtbGV2ZWwgU2NvcGVSZWNvcmRlciBwYXR0ZXJuIGZvciB0aGUgZW5naW5lIGxheWVyLlxuICogQWxsIG1ldGhvZHMgYXJlIG9wdGlvbmFsIOKAlCBpbXBsZW1lbnQgb25seSB0aGUgaG9va3MgeW91IG5lZWQuXG4gKiBSZWNvcmRlcnMgYXJlIGludm9rZWQgc3luY2hyb25vdXNseSBpbiBhdHRhY2htZW50IG9yZGVyLlxuICogSWYgYSByZWNvcmRlciB0aHJvd3MsIHRoZSBlcnJvciBpcyBjYXVnaHQgYW5kIHN3YWxsb3dlZDsgZXhlY3V0aW9uIGNvbnRpbnVlcy5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgbWV0cmljc1JlY29yZGVyOiBGbG93UmVjb3JkZXIgPSB7XG4gKiAgIGlkOiAnbWV0cmljcycsXG4gKiAgIG9uTG9vcDogKGV2ZW50KSA9PiByZWNvcmRNZXRyaWMoJ2xvb3AuaXRlcmF0aW9uJywgZXZlbnQuaXRlcmF0aW9uKSxcbiAqICAgb25EZWNpc2lvbjogKGV2ZW50KSA9PiByZWNvcmRNZXRyaWMoJ2RlY2lzaW9uJywgZXZlbnQuY2hvc2VuKSxcbiAqIH07XG4gKiBleGVjdXRvci5hdHRhY2hGbG93UmVjb3JkZXIobWV0cmljc1JlY29yZGVyKTtcbiAqIGBgYFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZsb3dSZWNvcmRlciB7XG4gIHJlYWRvbmx5IGlkOiBzdHJpbmc7XG4gIG9uU3RhZ2VFeGVjdXRlZD8oZXZlbnQ6IEZsb3dTdGFnZUV2ZW50KTogdm9pZDtcbiAgb25OZXh0PyhldmVudDogRmxvd05leHRFdmVudCk6IHZvaWQ7XG4gIG9uRGVjaXNpb24/KGV2ZW50OiBGbG93RGVjaXNpb25FdmVudCk6IHZvaWQ7XG4gIG9uRm9yaz8oZXZlbnQ6IEZsb3dGb3JrRXZlbnQpOiB2b2lkO1xuICBvblNlbGVjdGVkPyhldmVudDogRmxvd1NlbGVjdGVkRXZlbnQpOiB2b2lkO1xuICBvblN1YmZsb3dFbnRyeT8oZXZlbnQ6IEZsb3dTdWJmbG93RXZlbnQpOiB2b2lkO1xuICBvblN1YmZsb3dFeGl0PyhldmVudDogRmxvd1N1YmZsb3dFdmVudCk6IHZvaWQ7XG4gIC8qKiBDYWxsZWQgd2hlbiBhIGR5bmFtaWMgc3ViZmxvdyBpcyByZWdpc3RlcmVkIGR1cmluZyB0cmF2ZXJzYWwuICovXG4gIG9uU3ViZmxvd1JlZ2lzdGVyZWQ/KGV2ZW50OiBGbG93U3ViZmxvd1JlZ2lzdGVyZWRFdmVudCk6IHZvaWQ7XG4gIG9uTG9vcD8oZXZlbnQ6IEZsb3dMb29wRXZlbnQpOiB2b2lkO1xuICBvbkJyZWFrPyhldmVudDogRmxvd0JyZWFrRXZlbnQpOiB2b2lkO1xuICBvbkVycm9yPyhldmVudDogRmxvd0Vycm9yRXZlbnQpOiB2b2lkO1xuICAvKipcbiAgICogQ2FsbGVkIGF0IHRoZSBlbmQgb2YgRVZFUlkgYXR0ZW1wdCDigJQgYSBzdGFnZSdzIG93biwgYW5kIHRoZSBjYWxscyBhbmRcbiAgICogb2JzZXJ2ZWQgYXR0ZW1wdHMgaXQgbWFrZXMgZHVyaW5nIHRoZSBzdGFnZSAoZmlsdGVyIG9uIGByZWNvcmQua2luZGApIOKAlFxuICAgKiB3aXRoIGl0cyByZWNvcmQgYW5kIHRoZSBkZWNpc2lvbiB0aGF0IGZvbGxvd2VkICgxMC4xKS4gU2VlXG4gICAqIHtAbGluayBGbG93QXR0ZW1wdEV2ZW50fS5cbiAgICovXG4gIG9uQXR0ZW1wdD8oZXZlbnQ6IEZsb3dBdHRlbXB0RXZlbnQpOiB2b2lkO1xuICAvKipcbiAgICogQ2FsbGVkIG9uY2UgcGVyIGZhaWxlZCBhdHRlbXB0IHRoYXQgV0lMTCBiZSByZXRyaWVkLCBmb3Igc3RhZ2VzIGNhcnJ5aW5nIGFcbiAgICogZGVjbGFyZWQgYHJldHJ5YCBwb2xpY3kuIFRoZSBmaW5hbCBmYWlsdXJlIGFycml2ZXMgdmlhIGBvbkVycm9yYCBpbnN0ZWFkLFxuICAgKiBzbyBhIHN0YWdlIG5ldmVyIHJlcG9ydHMgdGhlIHNhbWUgZmFpbHVyZSB0d2ljZS4gU2VlXG4gICAqIHtAbGluayBGbG93U3RhZ2VSZXRyeUV2ZW50fSBmb3IgdGhlIGV4YWN0IGV2ZW50IGFyaXRobWV0aWMuXG4gICAqL1xuICBvblN0YWdlUmV0cnk/KGV2ZW50OiBGbG93U3RhZ2VSZXRyeUV2ZW50KTogdm9pZDtcbiAgLyoqXG4gICAqIENhbGxlZCB3aGVuIGEgZm9yayBjaGlsZCdzIGVycm9yIGlzIGNsYXNzaWZpZWQgYXMgdGhyb3R0bGluZyBieSB0aGVcbiAgICogZXhlY3V0b3IncyBgdGhyb3R0bGluZ0Vycm9yQ2hlY2tlcmAg4oCUIHNlZSB7QGxpbmsgRmxvd1Rocm90dGxlZEV2ZW50fS5cbiAgICovXG4gIG9uVGhyb3R0bGVkPyhldmVudDogRmxvd1Rocm90dGxlZEV2ZW50KTogdm9pZDtcbiAgb25QYXVzZT8oZXZlbnQ6IEZsb3dQYXVzZUV2ZW50KTogdm9pZDtcbiAgb25SZXN1bWU/KGV2ZW50OiBGbG93UmVzdW1lRXZlbnQpOiB2b2lkO1xuICAvKipcbiAgICogQ2FsbGVkIG9uY2UgcGVyIHRvcC1sZXZlbCBgZXhlY3V0b3IucnVuKClgIEJFRk9SRSB0cmF2ZXJzYWwgYmVnaW5zLlxuICAgKiBDYXJyaWVzIGBldmVudC5wYXlsb2FkID0gcnVuKHtpbnB1dH0pYC4gU3ViZmxvdy10cmF2ZXJzZXJzIGRvbid0IGZpcmUgaXQuXG4gICAqL1xuICBvblJ1blN0YXJ0PyhldmVudDogRmxvd1J1bkV2ZW50KTogdm9pZDtcbiAgLyoqXG4gICAqIENhbGxlZCBvbmNlIHBlciB0b3AtbGV2ZWwgYGV4ZWN1dG9yLnJ1bigpYCBBRlRFUiB0cmF2ZXJzYWwgY29tcGxldGVzXG4gICAqIGNsZWFubHkuIENhcnJpZXMgYGV2ZW50LnBheWxvYWQgPSBjaGFydCdzIHJldHVybiB2YWx1ZWAuIE5PVCBmaXJlZCBvblxuICAgKiBwYXVzZSAodGhlIHJ1biBkaWRuJ3QgZW5kKSBvciB1bmNhdWdodCBlcnJvci5cbiAgICovXG4gIG9uUnVuRW5kPyhldmVudDogRmxvd1J1bkV2ZW50KTogdm9pZDtcbiAgLyoqXG4gICAqIENhbGxlZCBvbmNlIHBlciB0b3AtbGV2ZWwgYGV4ZWN1dG9yLnJ1bigpYCB3aGVuIHRoZSBydW4gdGhyb3dzIGFcbiAgICogbm9uLXBhdXNlIGVycm9yLCBCRUZPUkUgdGhlIGV4Y2VwdGlvbiBwcm9wYWdhdGVzLiBUaGUgVEVSTUlOQUxcbiAgICogY291bnRlcnBhcnQgdG8gYG9uUnVuRW5kYCDigJQgbGV0cyBhIG1vbml0b3IgY2xvc2UgdGhlIHJ1biBib3VuZGFyeSBvblxuICAgKiBmYWlsdXJlIGluc3RlYWQgb2Ygd2FpdGluZyBmb3JldmVyLiBOT1QgZmlyZWQgb24gcGF1c2UuXG4gICAqL1xuICBvblJ1bkZhaWxlZD8oZXZlbnQ6IEZsb3dSdW5GYWlsZWRFdmVudCk6IHZvaWQ7XG4gIC8qKiBDYWxsZWQgYmVmb3JlIGVhY2ggcnVuIHRvIHJlc2V0IHBlci1ydW4gc3RhdGUuIEltcGxlbWVudCBmb3Igc3RhdGVmdWwgcmVjb3JkZXJzLiAqL1xuICBjbGVhcj8oKTogdm9pZDtcbiAgLyoqIE9wdGlvbmFsOiBleHBvc2UgY29sbGVjdGVkIGRhdGEgZm9yIGluY2x1c2lvbiBpbiBzbmFwc2hvdHMuICovXG4gIHRvU25hcHNob3Q/KCk6IGltcG9ydCgnLi4vLi4vcmVjb3JkZXIvc25hcHNob3QuanMnKS5SZWNvcmRlckJ1bmRsZTtcbn1cbiJdfQ==
|