footprintjs 9.48.2 → 10.0.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/AGENTS.md +12 -10
- package/CLAUDE.md +21 -23
- package/README.md +1 -1
- package/dist/advanced.js +71 -128
- package/dist/esm/advanced.d.ts +24 -58
- package/dist/esm/advanced.js +13 -51
- package/dist/esm/index.d.ts +5 -8
- package/dist/esm/index.js +3 -3
- package/dist/esm/lib/builder/FlowChartBuilder.d.ts +1 -1
- package/dist/esm/lib/builder/FlowChartBuilder.js +3 -3
- package/dist/esm/lib/builder/structure/StructureRecorder.d.ts +1 -1
- package/dist/esm/lib/builder/structure/StructureRecorder.js +1 -1
- package/dist/esm/lib/capture/index.d.ts +0 -1
- package/dist/esm/lib/capture/index.js +1 -2
- package/dist/esm/lib/engine/graph/prefixNodeTree.js +2 -2
- package/dist/esm/lib/engine/handlers/ResumeEntry.d.ts +3 -3
- package/dist/esm/lib/engine/handlers/ResumeEntry.js +4 -4
- package/dist/esm/lib/engine/handlers/SubflowExecutor.d.ts +1 -2
- package/dist/esm/lib/engine/handlers/SubflowExecutor.js +4 -8
- package/dist/esm/lib/engine/index.d.ts +1 -1
- package/dist/esm/lib/engine/index.js +1 -1
- package/dist/esm/lib/engine/narrative/CombinedNarrativeRecorder.d.ts +4 -4
- package/dist/esm/lib/engine/narrative/CombinedNarrativeRecorder.js +1 -1
- package/dist/esm/lib/engine/narrative/index.d.ts +1 -1
- package/dist/esm/lib/engine/narrative/index.js +1 -1
- package/dist/esm/lib/engine/narrative/narrativeTypes.d.ts +1 -11
- package/dist/esm/lib/engine/narrative/narrativeTypes.js +1 -1
- package/dist/esm/lib/engine/traversal/FlowchartTraverser.d.ts +2 -10
- package/dist/esm/lib/engine/traversal/FlowchartTraverser.js +4 -6
- package/dist/esm/lib/engine/traversalContext.d.ts +1 -1
- package/dist/esm/lib/engine/traversalContext.js +2 -2
- package/dist/esm/lib/engine/types.d.ts +2 -10
- package/dist/esm/lib/engine/types.js +1 -1
- package/dist/esm/lib/engine/walkSubflowSpec.js +2 -2
- package/dist/esm/lib/ids/reservedIds.js +2 -2
- package/dist/esm/lib/memory/DiagnosticCollector.js +2 -2
- package/dist/esm/lib/memory/StageContext.d.ts +2 -4
- package/dist/esm/lib/memory/StageContext.js +2 -2
- package/dist/esm/lib/memory/borrowedMutation.js +2 -2
- package/dist/esm/lib/memory/index.d.ts +6 -21
- package/dist/esm/lib/memory/index.js +4 -22
- package/dist/esm/lib/memory/redaction.d.ts +1 -1
- package/dist/esm/lib/memory/redaction.js +2 -2
- package/dist/esm/lib/memory/runPolicy.d.ts +3 -2
- package/dist/esm/lib/memory/runPolicy.js +1 -1
- package/dist/esm/lib/reactive/createTypedScope.js +2 -2
- package/dist/esm/lib/reactive/writeTraps.js +2 -2
- package/dist/esm/lib/recorder/ControlDepRecorder.d.ts +3 -2
- package/dist/esm/lib/recorder/ControlDepRecorder.js +3 -2
- package/dist/esm/lib/recorder/EmitRecorder.d.ts +1 -1
- package/dist/esm/lib/recorder/EmitRecorder.js +1 -1
- package/dist/esm/lib/recorder/InOutRecorder.js +2 -2
- package/dist/esm/lib/recorder/qualityTrace.d.ts +1 -1
- package/dist/esm/lib/recorder/qualityTrace.js +2 -2
- package/dist/esm/lib/runner/DeferredObserverTier.js +2 -2
- package/dist/esm/lib/runner/ExecutionRuntime.d.ts +4 -5
- package/dist/esm/lib/runner/ExecutionRuntime.js +2 -5
- package/dist/esm/lib/runner/FlowChartExecutor.d.ts +1 -1
- package/dist/esm/lib/runner/FlowChartExecutor.js +1 -1
- package/dist/esm/lib/runner/getSubtreeSnapshot.d.ts +1 -1
- package/dist/esm/lib/runner/getSubtreeSnapshot.js +4 -4
- package/dist/esm/lib/runner/resume.js +2 -2
- package/dist/esm/lib/runner/snapshot.js +3 -2
- package/dist/esm/lib/scope/ScopeFacade.js +2 -2
- package/dist/esm/lib/scope/state/zod/scopeFactory.js +2 -2
- package/dist/esm/recorders.d.ts +2 -3
- package/dist/esm/recorders.js +1 -1
- package/dist/esm/trace.d.ts +11 -57
- package/dist/esm/trace.js +10 -68
- package/dist/index.js +3 -3
- package/dist/lib/builder/FlowChartBuilder.js +5 -5
- package/dist/lib/builder/structure/StructureRecorder.js +1 -1
- package/dist/lib/capture/index.js +2 -4
- package/dist/lib/engine/graph/prefixNodeTree.js +5 -5
- package/dist/lib/engine/handlers/ResumeEntry.js +4 -4
- package/dist/lib/engine/handlers/SubflowExecutor.js +5 -9
- package/dist/lib/engine/index.js +1 -1
- package/dist/lib/engine/narrative/CombinedNarrativeRecorder.js +1 -1
- package/dist/lib/engine/narrative/index.js +1 -1
- package/dist/lib/engine/narrative/narrativeTypes.js +1 -1
- package/dist/lib/engine/traversal/FlowchartTraverser.js +8 -10
- package/dist/lib/engine/traversalContext.js +4 -4
- package/dist/lib/engine/types.js +1 -1
- package/dist/lib/engine/walkSubflowSpec.js +3 -3
- package/dist/lib/ids/reservedIds.js +5 -5
- package/dist/lib/memory/DiagnosticCollector.js +3 -3
- package/dist/lib/memory/StageContext.js +3 -3
- package/dist/lib/memory/borrowedMutation.js +3 -3
- package/dist/lib/memory/index.js +7 -42
- package/dist/lib/memory/redaction.js +3 -3
- package/dist/lib/memory/runPolicy.js +1 -1
- package/dist/lib/reactive/createTypedScope.js +3 -3
- package/dist/lib/reactive/writeTraps.js +4 -4
- package/dist/lib/recorder/ControlDepRecorder.js +3 -2
- package/dist/lib/recorder/EmitRecorder.js +1 -1
- package/dist/lib/recorder/InOutRecorder.js +3 -3
- package/dist/lib/recorder/qualityTrace.js +4 -4
- package/dist/lib/runner/DeferredObserverTier.js +3 -3
- package/dist/lib/runner/ExecutionRuntime.js +6 -9
- package/dist/lib/runner/FlowChartExecutor.js +1 -1
- package/dist/lib/runner/getSubtreeSnapshot.js +6 -6
- package/dist/lib/runner/resume.js +3 -3
- package/dist/lib/runner/snapshot.js +6 -5
- package/dist/lib/scope/ScopeFacade.js +3 -3
- package/dist/lib/scope/state/zod/scopeFactory.js +4 -4
- package/dist/recorders.js +1 -1
- package/dist/trace.js +18 -120
- package/dist/types/advanced.d.ts +24 -58
- package/dist/types/index.d.ts +5 -8
- package/dist/types/lib/builder/FlowChartBuilder.d.ts +1 -1
- package/dist/types/lib/builder/structure/StructureRecorder.d.ts +1 -1
- package/dist/types/lib/capture/index.d.ts +0 -1
- package/dist/types/lib/engine/handlers/ResumeEntry.d.ts +3 -3
- package/dist/types/lib/engine/handlers/SubflowExecutor.d.ts +1 -2
- package/dist/types/lib/engine/index.d.ts +1 -1
- package/dist/types/lib/engine/narrative/CombinedNarrativeRecorder.d.ts +4 -4
- package/dist/types/lib/engine/narrative/index.d.ts +1 -1
- package/dist/types/lib/engine/narrative/narrativeTypes.d.ts +1 -11
- package/dist/types/lib/engine/traversal/FlowchartTraverser.d.ts +2 -10
- package/dist/types/lib/engine/traversalContext.d.ts +1 -1
- package/dist/types/lib/engine/types.d.ts +2 -10
- package/dist/types/lib/memory/StageContext.d.ts +2 -4
- package/dist/types/lib/memory/index.d.ts +6 -21
- package/dist/types/lib/memory/redaction.d.ts +1 -1
- package/dist/types/lib/memory/runPolicy.d.ts +3 -2
- package/dist/types/lib/recorder/ControlDepRecorder.d.ts +3 -2
- package/dist/types/lib/recorder/EmitRecorder.d.ts +1 -1
- package/dist/types/lib/recorder/qualityTrace.d.ts +1 -1
- package/dist/types/lib/runner/ExecutionRuntime.d.ts +4 -5
- package/dist/types/lib/runner/FlowChartExecutor.d.ts +1 -1
- package/dist/types/lib/runner/getSubtreeSnapshot.d.ts +1 -1
- package/dist/types/recorders.d.ts +2 -3
- package/dist/types/trace.d.ts +11 -57
- package/package.json +6 -15
- package/dist/esm/lib/capture/freeze.d.ts +0 -91
- package/dist/esm/lib/capture/freeze.js +0 -314
- package/dist/esm/lib/capture/ownData.d.ts +0 -7
- package/dist/esm/lib/capture/ownData.js +0 -15
- package/dist/esm/lib/capture/valueKinds.d.ts +0 -57
- package/dist/esm/lib/capture/valueKinds.js +0 -142
- package/dist/esm/lib/ids/runtimeStageId.d.ts +0 -173
- package/dist/esm/lib/ids/runtimeStageId.js +0 -194
- package/dist/esm/lib/memory/EventLog.d.ts +0 -105
- package/dist/esm/lib/memory/EventLog.js +0 -148
- package/dist/esm/lib/memory/RecordFrame.d.ts +0 -232
- package/dist/esm/lib/memory/RecordFrame.js +0 -296
- package/dist/esm/lib/memory/SharedMemory.d.ts +0 -46
- package/dist/esm/lib/memory/SharedMemory.js +0 -88
- package/dist/esm/lib/memory/TransactionBuffer.d.ts +0 -521
- package/dist/esm/lib/memory/TransactionBuffer.js +0 -946
- package/dist/esm/lib/memory/admission.d.ts +0 -81
- package/dist/esm/lib/memory/admission.js +0 -153
- package/dist/esm/lib/memory/backtrack.d.ts +0 -286
- package/dist/esm/lib/memory/backtrack.js +0 -457
- package/dist/esm/lib/memory/commitLogUtils.d.ts +0 -217
- package/dist/esm/lib/memory/commitLogUtils.js +0 -384
- package/dist/esm/lib/memory/deltaEncoding.d.ts +0 -66
- package/dist/esm/lib/memory/deltaEncoding.js +0 -122
- package/dist/esm/lib/memory/equality.d.ts +0 -93
- package/dist/esm/lib/memory/equality.js +0 -262
- package/dist/esm/lib/memory/eventPosition.d.ts +0 -18
- package/dist/esm/lib/memory/eventPosition.js +0 -2
- package/dist/esm/lib/memory/honesty.d.ts +0 -93
- package/dist/esm/lib/memory/honesty.js +0 -92
- package/dist/esm/lib/memory/keyPaths.d.ts +0 -125
- package/dist/esm/lib/memory/keyPaths.js +0 -227
- package/dist/esm/lib/memory/logModel.d.ts +0 -76
- package/dist/esm/lib/memory/logModel.js +0 -364
- package/dist/esm/lib/memory/merge.d.ts +0 -26
- package/dist/esm/lib/memory/merge.js +0 -60
- package/dist/esm/lib/memory/pathOps.d.ts +0 -115
- package/dist/esm/lib/memory/pathOps.js +0 -290
- package/dist/esm/lib/memory/paths.d.ts +0 -52
- package/dist/esm/lib/memory/paths.js +0 -57
- package/dist/esm/lib/memory/placeholders.d.ts +0 -39
- package/dist/esm/lib/memory/placeholders.js +0 -40
- package/dist/esm/lib/memory/recordCommit.d.ts +0 -45
- package/dist/esm/lib/memory/recordCommit.js +0 -61
- package/dist/esm/lib/memory/scrub.d.ts +0 -53
- package/dist/esm/lib/memory/scrub.js +0 -74
- package/dist/esm/lib/memory/types.d.ts +0 -209
- package/dist/esm/lib/memory/types.js +0 -10
- package/dist/esm/lib/memory/utils.d.ts +0 -73
- package/dist/esm/lib/memory/utils.js +0 -159
- package/dist/esm/lib/memory/verbs.d.ts +0 -333
- package/dist/esm/lib/memory/verbs.js +0 -427
- package/dist/esm/lib/recorder/CommitRangeIndex.d.ts +0 -147
- package/dist/esm/lib/recorder/CommitRangeIndex.js +0 -207
- package/dist/esm/lib/scope/detectCircular.d.ts +0 -13
- package/dist/esm/lib/scope/detectCircular.js +0 -14
- package/dist/esm/lib/scope/recorders/summarizeValue.d.ts +0 -5
- package/dist/esm/lib/scope/recorders/summarizeValue.js +0 -6
- package/dist/esm/lib/slice/elementProvenance.d.ts +0 -81
- package/dist/esm/lib/slice/elementProvenance.js +0 -190
- package/dist/esm/lib/slice/forwardSliceForKey.d.ts +0 -88
- package/dist/esm/lib/slice/forwardSliceForKey.js +0 -243
- package/dist/esm/lib/slice/index.d.ts +0 -25
- package/dist/esm/lib/slice/index.js +0 -25
- package/dist/esm/lib/slice/keyIndex.d.ts +0 -137
- package/dist/esm/lib/slice/keyIndex.js +0 -293
- package/dist/esm/lib/slice/keyTimeline.d.ts +0 -49
- package/dist/esm/lib/slice/keyTimeline.js +0 -113
- package/dist/esm/lib/slice/keysReadSources.d.ts +0 -51
- package/dist/esm/lib/slice/keysReadSources.js +0 -95
- package/dist/esm/lib/slice/serialize.d.ts +0 -78
- package/dist/esm/lib/slice/serialize.js +0 -278
- package/dist/esm/lib/slice/sliceForKey.d.ts +0 -47
- package/dist/esm/lib/slice/sliceForKey.js +0 -88
- package/dist/esm/lib/slice/types.d.ts +0 -567
- package/dist/esm/lib/slice/types.js +0 -25
- package/dist/esm/lib/time-travel/axis.d.ts +0 -119
- package/dist/esm/lib/time-travel/axis.js +0 -179
- package/dist/esm/lib/time-travel/bundles.d.ts +0 -77
- package/dist/esm/lib/time-travel/bundles.js +0 -136
- package/dist/esm/lib/time-travel/chain.d.ts +0 -93
- package/dist/esm/lib/time-travel/chain.js +0 -188
- package/dist/esm/lib/time-travel/commitStops.d.ts +0 -55
- package/dist/esm/lib/time-travel/commitStops.js +0 -202
- package/dist/esm/lib/time-travel/index.d.ts +0 -22
- package/dist/esm/lib/time-travel/index.js +0 -21
- package/dist/esm/lib/time-travel/stateAt.d.ts +0 -102
- package/dist/esm/lib/time-travel/stateAt.js +0 -153
- package/dist/esm/lib/time-travel/tagStops.d.ts +0 -72
- package/dist/esm/lib/time-travel/tagStops.js +0 -102
- package/dist/esm/lib/time-travel/timeTravel.d.ts +0 -70
- package/dist/esm/lib/time-travel/timeTravel.js +0 -360
- package/dist/esm/lib/time-travel/types.d.ts +0 -470
- package/dist/esm/lib/time-travel/types.js +0 -23
- package/dist/esm/write.d.ts +0 -47
- package/dist/esm/write.js +0 -46
- package/dist/lib/capture/freeze.js +0 -320
- package/dist/lib/capture/ownData.js +0 -19
- package/dist/lib/capture/valueKinds.js +0 -146
- package/dist/lib/ids/runtimeStageId.js +0 -210
- package/dist/lib/memory/EventLog.js +0 -152
- package/dist/lib/memory/RecordFrame.js +0 -300
- package/dist/lib/memory/SharedMemory.js +0 -92
- package/dist/lib/memory/TransactionBuffer.js +0 -950
- package/dist/lib/memory/admission.js +0 -159
- package/dist/lib/memory/backtrack.js +0 -463
- package/dist/lib/memory/commitLogUtils.js +0 -399
- package/dist/lib/memory/deltaEncoding.js +0 -128
- package/dist/lib/memory/equality.js +0 -266
- package/dist/lib/memory/eventPosition.js +0 -3
- package/dist/lib/memory/honesty.js +0 -95
- package/dist/lib/memory/keyPaths.js +0 -243
- package/dist/lib/memory/logModel.js +0 -372
- package/dist/lib/memory/merge.js +0 -64
- package/dist/lib/memory/pathOps.js +0 -306
- package/dist/lib/memory/paths.js +0 -62
- package/dist/lib/memory/placeholders.js +0 -43
- package/dist/lib/memory/recordCommit.js +0 -65
- package/dist/lib/memory/scrub.js +0 -79
- package/dist/lib/memory/types.js +0 -11
- package/dist/lib/memory/utils.js +0 -178
- package/dist/lib/memory/verbs.js +0 -444
- package/dist/lib/recorder/CommitRangeIndex.js +0 -211
- package/dist/lib/scope/detectCircular.js +0 -21
- package/dist/lib/scope/recorders/summarizeValue.js +0 -10
- package/dist/lib/slice/elementProvenance.js +0 -195
- package/dist/lib/slice/forwardSliceForKey.js +0 -247
- package/dist/lib/slice/index.js +0 -42
- package/dist/lib/slice/keyIndex.js +0 -313
- package/dist/lib/slice/keyTimeline.js +0 -117
- package/dist/lib/slice/keysReadSources.js +0 -101
- package/dist/lib/slice/serialize.js +0 -286
- package/dist/lib/slice/sliceForKey.js +0 -93
- package/dist/lib/slice/types.js +0 -26
- package/dist/lib/time-travel/axis.js +0 -184
- package/dist/lib/time-travel/bundles.js +0 -144
- package/dist/lib/time-travel/chain.js +0 -193
- package/dist/lib/time-travel/commitStops.js +0 -206
- package/dist/lib/time-travel/index.js +0 -32
- package/dist/lib/time-travel/stateAt.js +0 -160
- package/dist/lib/time-travel/tagStops.js +0 -106
- package/dist/lib/time-travel/timeTravel.js +0 -364
- package/dist/lib/time-travel/types.js +0 -24
- package/dist/types/lib/capture/freeze.d.ts +0 -91
- package/dist/types/lib/capture/ownData.d.ts +0 -7
- package/dist/types/lib/capture/valueKinds.d.ts +0 -57
- package/dist/types/lib/ids/runtimeStageId.d.ts +0 -173
- package/dist/types/lib/memory/EventLog.d.ts +0 -105
- package/dist/types/lib/memory/RecordFrame.d.ts +0 -232
- package/dist/types/lib/memory/SharedMemory.d.ts +0 -46
- package/dist/types/lib/memory/TransactionBuffer.d.ts +0 -521
- package/dist/types/lib/memory/admission.d.ts +0 -81
- package/dist/types/lib/memory/backtrack.d.ts +0 -286
- package/dist/types/lib/memory/commitLogUtils.d.ts +0 -217
- package/dist/types/lib/memory/deltaEncoding.d.ts +0 -66
- package/dist/types/lib/memory/equality.d.ts +0 -93
- package/dist/types/lib/memory/eventPosition.d.ts +0 -18
- package/dist/types/lib/memory/honesty.d.ts +0 -93
- package/dist/types/lib/memory/keyPaths.d.ts +0 -125
- package/dist/types/lib/memory/logModel.d.ts +0 -76
- package/dist/types/lib/memory/merge.d.ts +0 -26
- package/dist/types/lib/memory/pathOps.d.ts +0 -115
- package/dist/types/lib/memory/paths.d.ts +0 -52
- package/dist/types/lib/memory/placeholders.d.ts +0 -39
- package/dist/types/lib/memory/recordCommit.d.ts +0 -45
- package/dist/types/lib/memory/scrub.d.ts +0 -53
- package/dist/types/lib/memory/types.d.ts +0 -209
- package/dist/types/lib/memory/utils.d.ts +0 -73
- package/dist/types/lib/memory/verbs.d.ts +0 -333
- package/dist/types/lib/recorder/CommitRangeIndex.d.ts +0 -147
- package/dist/types/lib/scope/detectCircular.d.ts +0 -13
- package/dist/types/lib/scope/recorders/summarizeValue.d.ts +0 -5
- package/dist/types/lib/slice/elementProvenance.d.ts +0 -81
- package/dist/types/lib/slice/forwardSliceForKey.d.ts +0 -88
- package/dist/types/lib/slice/index.d.ts +0 -25
- package/dist/types/lib/slice/keyIndex.d.ts +0 -137
- package/dist/types/lib/slice/keyTimeline.d.ts +0 -49
- package/dist/types/lib/slice/keysReadSources.d.ts +0 -51
- package/dist/types/lib/slice/serialize.d.ts +0 -78
- package/dist/types/lib/slice/sliceForKey.d.ts +0 -47
- package/dist/types/lib/slice/types.d.ts +0 -567
- package/dist/types/lib/time-travel/axis.d.ts +0 -119
- package/dist/types/lib/time-travel/bundles.d.ts +0 -77
- package/dist/types/lib/time-travel/chain.d.ts +0 -93
- package/dist/types/lib/time-travel/commitStops.d.ts +0 -55
- package/dist/types/lib/time-travel/index.d.ts +0 -22
- package/dist/types/lib/time-travel/stateAt.d.ts +0 -102
- package/dist/types/lib/time-travel/tagStops.d.ts +0 -72
- package/dist/types/lib/time-travel/timeTravel.d.ts +0 -70
- package/dist/types/lib/time-travel/types.d.ts +0 -470
- package/dist/types/write.d.ts +0 -47
- package/dist/write.js +0 -52
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
*/
|
|
22
22
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
23
23
|
exports.resumeTraversalContext = exports.rootTraversalContext = exports.traversalContextFor = void 0;
|
|
24
|
-
const
|
|
24
|
+
const foottrace_1 = require("foottrace");
|
|
25
25
|
/**
|
|
26
26
|
* Build the stamp. `parentStageId` / `subflowId` / `subflowPath` are copied
|
|
27
27
|
* when the key is present (even as `undefined`); `parentRuntimeStageId`,
|
|
@@ -40,7 +40,7 @@ function traversalContextFor(stamp) {
|
|
|
40
40
|
...(has(stamp, 'subflowPath') && { subflowPath: stamp.subflowPath }),
|
|
41
41
|
// ONE meaning (F7): how many subflows deep the stage's ADDRESS is — read
|
|
42
42
|
// off the runtimeStageId, so every stamp (stage, root, resume) agrees.
|
|
43
|
-
depth: (0,
|
|
43
|
+
depth: (0, foottrace_1.subflowSegmentsOf)(stamp.runtimeStageId).length,
|
|
44
44
|
...(stamp.resumedFrom && { resumedFrom: stamp.resumedFrom }),
|
|
45
45
|
};
|
|
46
46
|
}
|
|
@@ -60,7 +60,7 @@ function rootTraversalContext(runId) {
|
|
|
60
60
|
return traversalContextFor({
|
|
61
61
|
runId,
|
|
62
62
|
stageId: ROOT_STAGE_ID,
|
|
63
|
-
runtimeStageId: (0,
|
|
63
|
+
runtimeStageId: (0, foottrace_1.buildRuntimeStageId)(ROOT_STAGE_ID, 0),
|
|
64
64
|
stageName: ROOT_STAGE_ID,
|
|
65
65
|
});
|
|
66
66
|
}
|
|
@@ -86,4 +86,4 @@ function resumeTraversalContext(resume) {
|
|
|
86
86
|
});
|
|
87
87
|
}
|
|
88
88
|
exports.resumeTraversalContext = resumeTraversalContext;
|
|
89
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
89
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhdmVyc2FsQ29udGV4dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvZW5naW5lL3RyYXZlcnNhbENvbnRleHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBbUJHOzs7QUFFSCx5Q0FBd0Y7QUFrQnhGOzs7O0dBSUc7QUFDSCxTQUFnQixtQkFBbUIsQ0FBQyxLQUFxQjtJQUN2RCxPQUFPO1FBQ0wsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLO1FBQ2xCLE9BQU8sRUFBRSxLQUFLLENBQUMsT0FBTztRQUN0QixjQUFjLEVBQUUsS0FBSyxDQUFDLGNBQWM7UUFDcEMsU0FBUyxFQUFFLEtBQUssQ0FBQyxTQUFTO1FBQzFCLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLGVBQWUsQ0FBQyxJQUFJLEVBQUUsYUFBYSxFQUFFLEtBQUssQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUMxRSxHQUFHLENBQUMsS0FBSyxDQUFDLG9CQUFvQixJQUFJLEVBQUUsb0JBQW9CLEVBQUUsS0FBSyxDQUFDLG9CQUFvQixFQUFFLENBQUM7UUFDdkYsR0FBRyxDQUFDLEtBQUssQ0FBQyxhQUFhLEtBQUssU0FBUyxJQUFJLEVBQUUsYUFBYSxFQUFFLEtBQUssQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUNoRixHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxXQUFXLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRSxLQUFLLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDOUQsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsYUFBYSxDQUFDLElBQUksRUFBRSxXQUFXLEVBQUUsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3BFLHlFQUF5RTtRQUN6RSx1RUFBdUU7UUFDdkUsS0FBSyxFQUFFLElBQUEsNkJBQWlCLEVBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFDLE1BQU07UUFDckQsR0FBRyxDQUFDLEtBQUssQ0FBQyxXQUFXLElBQUksRUFBRSxXQUFXLEVBQUUsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO0tBQzdELENBQUM7QUFDSixDQUFDO0FBaEJELGtEQWdCQztBQUVELGdHQUFnRztBQUNoRyxTQUFTLEdBQUcsQ0FBQyxLQUFxQixFQUFFLEdBQWtEO0lBQ3BGLE9BQU8sTUFBTSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQztBQUMxRCxDQUFDO0FBRUQsb0dBQW9HO0FBQ3BHLE1BQU0sYUFBYSxHQUFHLFVBQVUsQ0FBQztBQUVqQzs7OztHQUlHO0FBQ0gsU0FBZ0Isb0JBQW9CLENBQUMsS0FBYTtJQUNoRCxPQUFPLG1CQUFtQixDQUFDO1FBQ3pCLEtBQUs7UUFDTCxPQUFPLEVBQUUsYUFBYTtRQUN0QixjQUFjLEVBQUUsSUFBQSwrQkFBbUIsRUFBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDO1FBQ3JELFNBQVMsRUFBRSxhQUFhO0tBQ3pCLENBQUMsQ0FBQztBQUNMLENBQUM7QUFQRCxvREFPQztBQUVEOzs7Ozs7OztHQVFHO0FBQ0gsU0FBZ0Isc0JBQXNCLENBQUMsTUFRdEM7SUFDQyxNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ3BFLE9BQU8sbUJBQW1CLENBQUM7UUFDekIsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLO1FBQ25CLE9BQU8sRUFBRSxNQUFNLENBQUMsT0FBTztRQUN2QixjQUFjLEVBQUUsTUFBTSxDQUFDLGNBQWM7UUFDckMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxTQUFTO1FBQzNCLEdBQUcsQ0FBQyxTQUFTLEtBQUssU0FBUyxJQUFJLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxDQUFDO1FBQ3hELEdBQUcsQ0FBQyxNQUFNLENBQUMsV0FBVyxJQUFJLEVBQUUsV0FBVyxFQUFFLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQztLQUMvRCxDQUFDLENBQUM7QUFDTCxDQUFDO0FBbEJELHdEQWtCQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogdHJhdmVyc2FsQ29udGV4dCDigJQgdGhlIE9ORSBjb25zdHJ1Y3RvciBvZiBgVHJhdmVyc2FsQ29udGV4dGAgKEY3LCA5LjM3LjApLlxuICpcbiAqIGBUcmF2ZXJzYWxDb250ZXh0YCBpcyB0aGUgY29ycmVsYXRpb24gc3RhbXAgZXZlcnkgRmxvd1JlY29yZGVyIGV2ZW50IGNhcnJpZXNcbiAqIChcInRoZSBlbnRpcmUgZXZlbnQtY29ycmVsYXRpb24gbW9kZWwgcmVzdHMgb25cIiBzY29wZSBhbmQgZmxvdyBldmVudHMgc2hhcmluZ1xuICogaXQpLiBVbnRpbCA5LjM2LjAgdGhyZWUgc2l0ZXMgYnVpbHQgaXQgYnkgaGFuZCDigJQgdGhlIHRyYXZlcnNlciBwZXIgc3RhZ2UsIHRoZVxuICogdHJhdmVyc2VyJ3Mgc3ludGhldGljIHJ1bi1ib3VuZGFyeSByb290LCBhbmQgdGhlIGV4ZWN1dG9yJ3MgYG9uUmVzdW1lYCDigJQgYW5kXG4gKiB0aGUgdGhpcmQgZm9yZWNhc3Qgd2hhdCBpdCBjb3VsZCBub3Qga25vdyAoZGVwdGggMCwgbm8gc3ViZmxvdykuIE5vdyBhbGxcbiAqIHRocmVlIGNhbGwgYHRyYXZlcnNhbENvbnRleHRGb3JgLCB0aHJvdWdoIHRoZSB0d28gbmFtZWQgc2hhcGVzIGJlbG93LlxuICpcbiAqIGBkZXB0aGAgaGFzIE9ORSBtZWFuaW5nIG9uIGV2ZXJ5IHN0YW1wOiB0aGUgc3ViZmxvdyBuZXN0aW5nIG9mIHRoZSBzdGFnZSdzXG4gKiBhZGRyZXNzLCByZWFkIG9mZiBpdHMgcnVudGltZVN0YWdlSWQgKDkuMzcuMCDigJQgc3RhZ2UgZXZlbnRzIHVzZWQgdG8gc3RhbXBcbiAqIHRoZSBwYXJlbnQtY2hhaW4gbGVuZ3RoIG9mIHRoZSBzdGFnZSdzIGNvbnRleHQpLlxuICpcbiAqIEtleSBPUkRFUiBhbmQga2V5IFBSRVNFTkNFIGFyZSBwYXJ0IG9mIHRoZSBieXRlcyAoYSByZWNvcmRlciB0aGF0IHNlcmlhbGl6ZXNcbiAqIHRoZSBzdGFtcCBzZWVzIHRoZW0pLCBzbyBgdHJhdmVyc2FsQ29udGV4dEZvcmAgd3JpdGVzIGEga2V5IG9ubHkgd2hlbiB0aGVcbiAqIGNhbGxlciBwYXNzZWQgaXQg4oCUIGBwYXJlbnRTdGFnZUlkYCwgYHN1YmZsb3dJZGAgYW5kIGBzdWJmbG93UGF0aGAgYXJlIHdyaXR0ZW5cbiAqIGV2ZW4gd2hlbiBgdW5kZWZpbmVkYCBpZiB0aGUgY2FsbGVyIG5hbWVzIHRoZW0sIHdoaWNoIGlzIHdoYXQgYSBzdGFnZSBzdGFtcFxuICogaGFzIGFsd2F5cyBkb25lLlxuICovXG5cbmltcG9ydCB7IHR5cGUgUnVudGltZVN0YWdlSWQsIGJ1aWxkUnVudGltZVN0YWdlSWQsIHN1YmZsb3dTZWdtZW50c09mIH0gZnJvbSAnZm9vdHRyYWNlJztcblxuaW1wb3J0IHR5cGUgeyBSZXN1bWVMaW5rLCBUcmF2ZXJzYWxDb250ZXh0IH0gZnJvbSAnLi9uYXJyYXRpdmUvdHlwZXMuanMnO1xuXG4vKiogRXZlcnl0aGluZyBhIHN0YW1wIGNhbiBjYXJyeTsgb3B0aW9uYWwga2V5cyBhcmUgd3JpdHRlbiBvbmx5IHdoZW4gUFJFU0VOVCBvbiB0aGlzIG9iamVjdC4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVHJhdmVyc2FsU3RhbXAge1xuICByZWFkb25seSBydW5JZDogc3RyaW5nO1xuICByZWFkb25seSBzdGFnZUlkOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHJ1bnRpbWVTdGFnZUlkOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHN0YWdlTmFtZTogc3RyaW5nO1xuICByZWFkb25seSBwYXJlbnRTdGFnZUlkPzogc3RyaW5nO1xuICByZWFkb25seSBwYXJlbnRSdW50aW1lU3RhZ2VJZD86IHN0cmluZztcbiAgcmVhZG9ubHkgbG9vcEl0ZXJhdGlvbj86IG51bWJlcjtcbiAgcmVhZG9ubHkgc3ViZmxvd0lkPzogc3RyaW5nO1xuICByZWFkb25seSBzdWJmbG93UGF0aD86IHN0cmluZztcbiAgcmVhZG9ubHkgcmVzdW1lZEZyb20/OiBSZXN1bWVMaW5rO1xufVxuXG4vKipcbiAqIEJ1aWxkIHRoZSBzdGFtcC4gYHBhcmVudFN0YWdlSWRgIC8gYHN1YmZsb3dJZGAgLyBgc3ViZmxvd1BhdGhgIGFyZSBjb3BpZWRcbiAqIHdoZW4gdGhlIGtleSBpcyBwcmVzZW50IChldmVuIGFzIGB1bmRlZmluZWRgKTsgYHBhcmVudFJ1bnRpbWVTdGFnZUlkYCxcbiAqIGBsb29wSXRlcmF0aW9uYCBhbmQgYHJlc3VtZWRGcm9tYCBvbmx5IHdoZW4gdGhleSBob2xkIGEgdmFsdWUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0cmF2ZXJzYWxDb250ZXh0Rm9yKHN0YW1wOiBUcmF2ZXJzYWxTdGFtcCk6IFRyYXZlcnNhbENvbnRleHQge1xuICByZXR1cm4ge1xuICAgIHJ1bklkOiBzdGFtcC5ydW5JZCxcbiAgICBzdGFnZUlkOiBzdGFtcC5zdGFnZUlkLFxuICAgIHJ1bnRpbWVTdGFnZUlkOiBzdGFtcC5ydW50aW1lU3RhZ2VJZCxcbiAgICBzdGFnZU5hbWU6IHN0YW1wLnN0YWdlTmFtZSxcbiAgICAuLi4oaGFzKHN0YW1wLCAncGFyZW50U3RhZ2VJZCcpICYmIHsgcGFyZW50U3RhZ2VJZDogc3RhbXAucGFyZW50U3RhZ2VJZCB9KSxcbiAgICAuLi4oc3RhbXAucGFyZW50UnVudGltZVN0YWdlSWQgJiYgeyBwYXJlbnRSdW50aW1lU3RhZ2VJZDogc3RhbXAucGFyZW50UnVudGltZVN0YWdlSWQgfSksXG4gICAgLi4uKHN0YW1wLmxvb3BJdGVyYXRpb24gIT09IHVuZGVmaW5lZCAmJiB7IGxvb3BJdGVyYXRpb246IHN0YW1wLmxvb3BJdGVyYXRpb24gfSksXG4gICAgLi4uKGhhcyhzdGFtcCwgJ3N1YmZsb3dJZCcpICYmIHsgc3ViZmxvd0lkOiBzdGFtcC5zdWJmbG93SWQgfSksXG4gICAgLi4uKGhhcyhzdGFtcCwgJ3N1YmZsb3dQYXRoJykgJiYgeyBzdWJmbG93UGF0aDogc3RhbXAuc3ViZmxvd1BhdGggfSksXG4gICAgLy8gT05FIG1lYW5pbmcgKEY3KTogaG93IG1hbnkgc3ViZmxvd3MgZGVlcCB0aGUgc3RhZ2UncyBBRERSRVNTIGlzIOKAlCByZWFkXG4gICAgLy8gb2ZmIHRoZSBydW50aW1lU3RhZ2VJZCwgc28gZXZlcnkgc3RhbXAgKHN0YWdlLCByb290LCByZXN1bWUpIGFncmVlcy5cbiAgICBkZXB0aDogc3ViZmxvd1NlZ21lbnRzT2Yoc3RhbXAucnVudGltZVN0YWdlSWQpLmxlbmd0aCxcbiAgICAuLi4oc3RhbXAucmVzdW1lZEZyb20gJiYgeyByZXN1bWVkRnJvbTogc3RhbXAucmVzdW1lZEZyb20gfSksXG4gIH07XG59XG5cbi8qKiBPd24ta2V5IHByZXNlbmNlIOKAlCBgdW5kZWZpbmVkYCBjb3VudHMgYXMgcHJlc2VudCAoYSBzdGFnZSBzdGFtcCBhbHdheXMgbmFtZXMgdGhlc2Uga2V5cykuICovXG5mdW5jdGlvbiBoYXMoc3RhbXA6IFRyYXZlcnNhbFN0YW1wLCBrZXk6ICdwYXJlbnRTdGFnZUlkJyB8ICdzdWJmbG93SWQnIHwgJ3N1YmZsb3dQYXRoJyk6IGJvb2xlYW4ge1xuICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHN0YW1wLCBrZXkpO1xufVxuXG4vKiogVGhlIHN5bnRoZXRpYyBzdGFnZSBpZCBvZiB0aGUgcnVuLWJvdW5kYXJ5IHN0YW1wIChgb25SdW5TdGFydGAgLyBgb25SdW5FbmRgIC8gYG9uUnVuRmFpbGVkYCkuICovXG5jb25zdCBST09UX1NUQUdFX0lEID0gJ19fcm9vdF9fJztcblxuLyoqXG4gKiBUaGUgcnVuLWJvdW5kYXJ5IHN0YW1wOiByb290LXN0YWdlIGRlZmF1bHRzIChgJ19fcm9vdF9fJ2AsIGAnX19yb290X18jMCdgLFxuICogZGVwdGggMCkgc28gdGhlIGBydW5JZGAgaXMgcmVsaWFibHkgYXZhaWxhYmxlIG9uIHJ1biBldmVudHMgd2l0aG91dCBmb3JjaW5nXG4gKiByZWNvcmRlcnMgdG8gaGFuZGxlIGB0cmF2ZXJzYWxDb250ZXh0ID09PSB1bmRlZmluZWRgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcm9vdFRyYXZlcnNhbENvbnRleHQocnVuSWQ6IHN0cmluZyk6IFRyYXZlcnNhbENvbnRleHQge1xuICByZXR1cm4gdHJhdmVyc2FsQ29udGV4dEZvcih7XG4gICAgcnVuSWQsXG4gICAgc3RhZ2VJZDogUk9PVF9TVEFHRV9JRCxcbiAgICBydW50aW1lU3RhZ2VJZDogYnVpbGRSdW50aW1lU3RhZ2VJZChST09UX1NUQUdFX0lELCAwKSxcbiAgICBzdGFnZU5hbWU6IFJPT1RfU1RBR0VfSUQsXG4gIH0pO1xufVxuXG4vKipcbiAqIFRoZSBgb25SZXN1bWVgIHN0YW1wLiBOYW1lcyB0aGUgc3RhbmQtaW4ncyBvd24gZXhlY3V0aW9uIChgcnVudGltZVN0YWdlSWRgLFxuICogdGhlIGlkIGl0cyBjb21taXQgY2FycmllcyksIHRoZSBSRUFMIHN1YmZsb3cgaXQgcnVucyBpbiDigJQgYHN1YmZsb3dJZGAgaXMgdGhlXG4gKiBwYXVzZWQgc3RhZ2UncyBpbm5lcm1vc3Qgc3ViZmxvdyAoYGNoZWNrcG9pbnQuc3ViZmxvd1BhdGhgJ3MgbGFzdCBlbnRyeSwgdGhlXG4gKiBwcmVmaXhlZCBpZCBldmVyeSBpbi1zdWJmbG93IHN0YW1wIGNhcnJpZXMpLCBhYnNlbnQgYXQgdGhlIHRvcCBsZXZlbCDigJQgYW5kXG4gKiB0aGUgc2FtZSBgZGVwdGhgIGl0cyBvd24gc3RhZ2UgZXZlbnRzIGNhcnJ5IChib3RoIHJlYWQgdGhlIGFkZHJlc3MpLlxuICogYHJlc3VtZWRGcm9tYCBMSU5LUyB0byB0aGUgcGF1c2VkIGV4ZWN1dGlvbiAoT1RlbCBzcGFuLWxpbmsgc3R5bGUsIHJlYWQgb2ZmXG4gKiBgY2hlY2twb2ludC5wYXVzZWRFeGVjdXRpb25gKSBpbnN0ZWFkIG9mIGZvcmVjYXN0aW5nIGEgcGFyZW50LlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzdW1lVHJhdmVyc2FsQ29udGV4dChyZXN1bWU6IHtcbiAgcmVhZG9ubHkgcnVuSWQ6IHN0cmluZztcbiAgcmVhZG9ubHkgc3RhZ2VJZDogc3RyaW5nO1xuICByZWFkb25seSBzdGFnZU5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgcnVudGltZVN0YWdlSWQ6IFJ1bnRpbWVTdGFnZUlkO1xuICAvKiogYGNoZWNrcG9pbnQuc3ViZmxvd1BhdGhgOiB0aGUgcHJlZml4ZWQgaWQgb2YgZXZlcnkgc3ViZmxvdyBvbiB0aGUgd2F5IGRvd24sIG91dGVybW9zdCBmaXJzdC4gKi9cbiAgcmVhZG9ubHkgc3ViZmxvd1BhdGg6IHJlYWRvbmx5IHN0cmluZ1tdO1xuICByZWFkb25seSByZXN1bWVkRnJvbT86IFJlc3VtZUxpbms7XG59KTogVHJhdmVyc2FsQ29udGV4dCB7XG4gIGNvbnN0IGlubmVybW9zdCA9IHJlc3VtZS5zdWJmbG93UGF0aFtyZXN1bWUuc3ViZmxvd1BhdGgubGVuZ3RoIC0gMV07XG4gIHJldHVybiB0cmF2ZXJzYWxDb250ZXh0Rm9yKHtcbiAgICBydW5JZDogcmVzdW1lLnJ1bklkLFxuICAgIHN0YWdlSWQ6IHJlc3VtZS5zdGFnZUlkLFxuICAgIHJ1bnRpbWVTdGFnZUlkOiByZXN1bWUucnVudGltZVN0YWdlSWQsXG4gICAgc3RhZ2VOYW1lOiByZXN1bWUuc3RhZ2VOYW1lLFxuICAgIC4uLihpbm5lcm1vc3QgIT09IHVuZGVmaW5lZCAmJiB7IHN1YmZsb3dJZDogaW5uZXJtb3N0IH0pLFxuICAgIC4uLihyZXN1bWUucmVzdW1lZEZyb20gJiYgeyByZXN1bWVkRnJvbTogcmVzdW1lLnJlc3VtZWRGcm9tIH0pLFxuICB9KTtcbn1cbiJdfQ==
|
package/dist/lib/engine/types.js
CHANGED
|
@@ -33,4 +33,4 @@ var ArrayMergeMode;
|
|
|
33
33
|
/** Overwrite parent array with subflow output. Use for Dynamic loops. */
|
|
34
34
|
ArrayMergeMode["Replace"] = "replace";
|
|
35
35
|
})(ArrayMergeMode || (exports.ArrayMergeMode = ArrayMergeMode = {}));
|
|
36
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2VuZ2luZS90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7O0dBS0c7OztBQWdCSCw4Q0FBOEU7QUFBckUseUdBQUEsYUFBYSxPQUFBO0FBQUUseUdBQUEsYUFBYSxPQUFBO0FBQUUsdUdBQUEsV0FBVyxPQUFBO0FBZWxELG9DQUFvQztBQUNwQyx3REFBd0Q7QUFDM0MsUUFBQSxhQUFhLEdBQVk7SUFDcEMsSUFBSSxFQUFFLENBQUMsT0FBYSxFQUFFLEdBQUcsSUFBVyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQztJQUN2RSxHQUFHLEVBQUUsQ0FBQyxPQUFhLEVBQUUsR0FBRyxJQUFXLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDO0lBQ3JFLEtBQUssRUFBRSxDQUFDLE9BQWEsRUFBRSxHQUFHLElBQVcsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUM7SUFDekUsS0FBSyxFQUFFLENBQUMsT0FBYSxFQUFFLEdBQUcsSUFBVyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQztJQUN6RSxJQUFJLEVBQUUsQ0FBQyxPQUFhLEVBQUUsR0FBRyxJQUFXLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDO0NBQ3hFLENBQUM7QUF1S0YsOEVBQThFO0FBQzlFLFVBQVU7QUFDViw4RUFBOEU7QUFFOUU7O0dBRUc7QUFDSCxJQUFZLGNBS1g7QUFMRCxXQUFZLGNBQWM7SUFDeEIsd0ZBQXdGO0lBQ3hGLG1DQUFpQixDQUFBO0lBQ2pCLHlFQUF5RTtJQUN6RSxxQ0FBbUIsQ0FBQTtBQUNyQixDQUFDLEVBTFcsY0FBYyw4QkFBZCxjQUFjLFFBS3pCIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiB0eXBlcy50cyDigJQgQWxsIHR5cGUgZGVmaW5pdGlvbnMgZm9yIHRoZSBlbmdpbmUgbGlicmFyeS5cbiAqXG4gKiBDZW50cmFsaXplcyB0eXBlIGRlZmluaXRpb25zIHRvIGF2b2lkIGNpcmN1bGFyIGRlcGVuZGVuY2llcy5cbiAqIEV2ZXJ5IGhhbmRsZXIgcmVjZWl2ZXMgSGFuZGxlckRlcHMgKHRoZSBESSBiYWcpIGluc3RlYWQgb2YgaW1wb3J0aW5nIHRoZSB0cmF2ZXJzZXIuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBMb2dBZGRyZXNzIH0gZnJvbSAnLi4vbWVtb3J5L2V2ZW50UG9zaXRpb24uanMnO1xuaW1wb3J0IHR5cGUgeyBGbG93Q29udHJvbFR5cGUsIEZsb3dNZXNzYWdlIH0gZnJvbSAnLi4vbWVtb3J5L2ZyYW1lVHlwZXMuanMnO1xuaW1wb3J0IHR5cGUgeyBTaGFyZWRNZW1vcnkgfSBmcm9tICcuLi9tZW1vcnkvU2hhcmVkTWVtb3J5LmpzJztcbmltcG9ydCB0eXBlIHsgU3RhZ2VDb250ZXh0IH0gZnJvbSAnLi4vbWVtb3J5L1N0YWdlQ29udGV4dC5qcyc7XG5pbXBvcnQgdHlwZSB7IFNjb3BlUHJvdGVjdGlvbk1vZGUgfSBmcm9tICcuLi9zY29wZS9wcm90ZWN0aW9uL3R5cGVzLmpzJztcbmltcG9ydCB0eXBlIHsgRGVjaWRlciwgU2VsZWN0b3IsIFN0YWdlTm9kZSB9IGZyb20gJy4vZ3JhcGgvU3RhZ2VOb2RlLmpzJztcbmltcG9ydCB0eXBlIHsgUXVldWVkUGF1c2UsIFJlc3VtZUVudHJ5IH0gZnJvbSAnLi9oYW5kbGVycy9SZXN1bWVFbnRyeS5qcyc7XG5pbXBvcnQgdHlwZSB7IElDb250cm9sRmxvd05hcnJhdGl2ZSB9IGZyb20gJy4vbmFycmF0aXZlL3R5cGVzLmpzJztcblxuLy8gUmUtZXhwb3J0IFN0YWdlTm9kZSB0eXBlcyBmb3IgY29udmVuaWVuY2VcbmV4cG9ydCB0eXBlIHsgRGVjaWRlciwgU2VsZWN0b3IsIFN0YWdlTm9kZSB9IGZyb20gJy4vZ3JhcGgvU3RhZ2VOb2RlLmpzJztcblxuLy8gUmUtZXhwb3J0IHBhdXNlIHR5cGVzIGZyb20gcGF1c2UvIGxpYnJhcnlcbmV4cG9ydCB0eXBlIHsgRmxvd2NoYXJ0Q2hlY2twb2ludCwgUGF1c2FibGVIYW5kbGVyLCBQYXVzZVJlc3VsdCB9IGZyb20gJy4uL3BhdXNlL2luZGV4LmpzJztcbmV4cG9ydCB7IGlzUGF1c2VSZXN1bHQsIGlzUGF1c2VTaWduYWwsIFBhdXNlU2lnbmFsIH0gZnJvbSAnLi4vcGF1c2UvaW5kZXguanMnO1xuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIExvZ2dlclxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8qKiBNaW5pbWFsIGxvZ2dpbmcgY29udHJhY3QuIE1pcnJvcnMgQ29uc29sZSBBUEkgc3Vic2V0LiAqL1xuZXhwb3J0IGludGVyZmFjZSBJTG9nZ2VyIHtcbiAgaW5mbyhtZXNzYWdlPzogYW55LCAuLi5vcHRpb25hbFBhcmFtczogYW55W10pOiB2b2lkO1xuICBsb2cobWVzc2FnZT86IGFueSwgLi4ub3B0aW9uYWxQYXJhbXM6IGFueVtdKTogdm9pZDtcbiAgZGVidWcobWVzc2FnZT86IGFueSwgLi4ub3B0aW9uYWxQYXJhbXM6IGFueVtdKTogdm9pZDtcbiAgZXJyb3IobWVzc2FnZT86IGFueSwgLi4ub3B0aW9uYWxQYXJhbXM6IGFueVtdKTogdm9pZDtcbiAgd2FybihtZXNzYWdlPzogYW55LCAuLi5vcHRpb25hbFBhcmFtczogYW55W10pOiB2b2lkO1xufVxuXG4vKiogRGVmYXVsdCBjb25zb2xlLWJhc2VkIGxvZ2dlci4gKi9cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0IC0tIHRyaXZpYWwgY29uc29sZSBkZWxlZ2F0aW9uICovXG5leHBvcnQgY29uc3QgZGVmYXVsdExvZ2dlcjogSUxvZ2dlciA9IHtcbiAgaW5mbzogKG1lc3NhZ2U/OiBhbnksIC4uLmFyZ3M6IGFueVtdKSA9PiBjb25zb2xlLmluZm8obWVzc2FnZSwgLi4uYXJncyksXG4gIGxvZzogKG1lc3NhZ2U/OiBhbnksIC4uLmFyZ3M6IGFueVtdKSA9PiBjb25zb2xlLmxvZyhtZXNzYWdlLCAuLi5hcmdzKSxcbiAgZGVidWc6IChtZXNzYWdlPzogYW55LCAuLi5hcmdzOiBhbnlbXSkgPT4gY29uc29sZS5kZWJ1ZyhtZXNzYWdlLCAuLi5hcmdzKSxcbiAgZXJyb3I6IChtZXNzYWdlPzogYW55LCAuLi5hcmdzOiBhbnlbXSkgPT4gY29uc29sZS5lcnJvcihtZXNzYWdlLCAuLi5hcmdzKSxcbiAgd2FybjogKG1lc3NhZ2U/OiBhbnksIC4uLmFyZ3M6IGFueVtdKSA9PiBjb25zb2xlLndhcm4obWVzc2FnZSwgLi4uYXJncyksXG59O1xuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFN0YWdlIEZ1bmN0aW9uXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLyoqIENhbGxiYWNrIHRoYXQgcmVjZWl2ZXMgdG9rZW5zIGR1cmluZyBzdHJlYW1pbmcuICovXG5leHBvcnQgdHlwZSBTdHJlYW1DYWxsYmFjayA9ICh0b2tlbjogc3RyaW5nKSA9PiB2b2lkO1xuXG4vKipcbiAqIFRoZSBmdW5jdGlvbiBzaWduYXR1cmUgZm9yIHN0YWdlIGhhbmRsZXJzLlxuICogLSBUT3V0OiByZXR1cm4gdHlwZSBwcm9kdWNlZCBieSB0aGUgc3RhZ2VcbiAqIC0gVFNjb3BlOiB0aGUgc2NvcGUgb2JqZWN0IHBhc3NlZCB0byB0aGUgc3RhZ2VcbiAqIC0gT3B0aW9uYWwgM3JkIHBhcmFtZXRlciBgc3RyZWFtQ2FsbGJhY2tgIGluamVjdGVkIGZvciBzdHJlYW1pbmcgc3RhZ2VzLlxuICovXG5leHBvcnQgdHlwZSBTdGFnZUZ1bmN0aW9uPFRPdXQgPSBhbnksIFRTY29wZSA9IGFueT4gPSAoXG4gIHNjb3BlOiBUU2NvcGUsXG4gIGJyZWFrUGlwZWxpbmU6ICgpID0+IHZvaWQsXG4gIHN0cmVhbUNhbGxiYWNrPzogU3RyZWFtQ2FsbGJhY2ssXG4pID0+IFByb21pc2U8VE91dCB8IHZvaWQ+IHwgVE91dCB8IHZvaWQ7XG5cbi8qKlxuICogU3RhZ2UgZnVuY3Rpb24gZm9yIHBhdXNhYmxlIHN0YWdlcyDigJQgcmV0dXJuIHZhbHVlIGlzIHRoZSBwYXVzZSBkYXRhIChhbnkgdHlwZSkuXG4gKiBSZXR1cm4gbm9uLXZvaWQgdG8gcGF1c2UsIHJldHVybiB2b2lkIHRvIGNvbnRpbnVlIG5vcm1hbGx5LlxuICovXG5leHBvcnQgdHlwZSBQYXVzYWJsZVN0YWdlRnVuY3Rpb248VFNjb3BlID0gYW55PiA9IChcbiAgc2NvcGU6IFRTY29wZSxcbiAgYnJlYWtQaXBlbGluZTogKCkgPT4gdm9pZCxcbikgPT4gUHJvbWlzZTx1bmtub3duPiB8IHVua25vd247XG5cbi8qKiBGYWN0b3J5IHRoYXQgY3JlYXRlcyBhIHNjb3BlIGluc3RhbmNlIGZvciBlYWNoIHN0YWdlLiAqL1xuZXhwb3J0IHR5cGUgU2NvcGVGYWN0b3J5PFRTY29wZSA9IGFueT4gPSAoXG4gIGNvbnRleHQ6IFN0YWdlQ29udGV4dCxcbiAgc3RhZ2VOYW1lOiBzdHJpbmcsXG4gIHJlYWRPbmx5Q29udGV4dD86IHVua25vd24sXG4gIGV4ZWN1dGlvbkVudj86IEV4ZWN1dGlvbkVudixcbikgPT4gVFNjb3BlO1xuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFN0cmVhbWluZ1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbmV4cG9ydCB0eXBlIFN0cmVhbVRva2VuSGFuZGxlciA9IChzdHJlYW1JZDogc3RyaW5nLCB0b2tlbjogc3RyaW5nKSA9PiB2b2lkO1xuZXhwb3J0IHR5cGUgU3RyZWFtTGlmZWN5Y2xlSGFuZGxlciA9IChzdHJlYW1JZDogc3RyaW5nLCBmdWxsVGV4dD86IHN0cmluZykgPT4gdm9pZDtcblxuZXhwb3J0IGludGVyZmFjZSBTdHJlYW1IYW5kbGVycyB7XG4gIG9uVG9rZW4/OiBTdHJlYW1Ub2tlbkhhbmRsZXI7XG4gIG9uU3RhcnQ/OiBTdHJlYW1MaWZlY3ljbGVIYW5kbGVyO1xuICBvbkVuZD86IFN0cmVhbUxpZmVjeWNsZUhhbmRsZXI7XG59XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gUGFyYWxsZWwtZm9yLWVhY2ggKGR5bmFtaWMgZmFuLW91dClcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vKipcbiAqIEEgYnVpbHQgY2hhcnQsIGFzIGBhZGRQYXJhbGxlbEZvckVhY2hgJ3MgYGJyYW5jaGAgZmFjdG9yeSByZXR1cm5zIGl0LlxuICpcbiAqIFN0cnVjdHVyYWxseSB0aGUgc3Vic2V0IG9mIGBGbG93Q2hhcnRgIHRoZSBlbmdpbmUgbmVlZHMgdG8gbW91bnQgYSBicmFuY2gg4oCUXG4gKiBkZWNsYXJlZCBoZXJlIHJhdGhlciB0aGFuIGltcG9ydGVkIHNvIGBlbmdpbmUvYCBrZWVwcyBpdHMgb25lLXdheSBkZXBlbmRlbmN5XG4gKiBvbiBgYnVpbGRlci9gLiBBbnkgYGZsb3dDaGFydCguLi4pLmJ1aWxkKClgIHJlc3VsdCBzYXRpc2ZpZXMgaXQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQnJhbmNoQ2hhcnQ8VE91dCA9IGFueSwgVFNjb3BlID0gYW55PiB7XG4gIHJvb3Q6IFN0YWdlTm9kZTxUT3V0LCBUU2NvcGU+O1xuICBzdGFnZU1hcDogTWFwPHN0cmluZywgU3RhZ2VGdW5jdGlvbjxUT3V0LCBUU2NvcGU+PjtcbiAgc3ViZmxvd3M/OiBSZWNvcmQ8c3RyaW5nLCB7IHJvb3Q6IFN0YWdlTm9kZTxUT3V0LCBUU2NvcGU+IH0+O1xuICBidWlsZFRpbWVTdHJ1Y3R1cmU/OiB1bmtub3duO1xufVxuXG4vKipcbiAqIFJ1bnRpbWUgZmFuLW91dCBjb25maWcg4oCUIG9uZSBicmFuY2ggcGVyIGl0ZW0sIGJyYW5jaCBDT1VOVCBkZWNpZGVkIGF0XG4gKiBydW50aW1lIGZyb20gdGhlIHBheWxvYWQuIERlc2lnbjogZG9jcy9kZXNpZ24vZXhlY3V0aW9uLWNvbnRyb2wubWQgKEQyKS5cbiAqXG4gKiBFYWNoIGJyYW5jaCBydW5zIGFzIGEgZ2VuZXJhdGVkIFNVQkZMT1cgKGlzb2xhdGVkIHJ1bnRpbWUsIG93biBjb21taXQgbG9nLFxuICogYWRkcmVzc2FibGUgYXQgYDxzdGFnZUlkPn48aW5kZXg+YCBpbiBldmVyeSB0cmFjZSBxdWVyeSksIHdoaWNoIGlzIHdoYXRcbiAqIG1ha2VzIGJyYW5jaGVzIHVuYWJsZSB0byBjb3JydXB0IGVhY2ggb3RoZXIncyBpbi1mbGlnaHQgc3RhdGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGFyYWxsZWxGb3JFYWNoQ29uZmlnPFRJdGVtID0gYW55LCBUU2NvcGUgPSBhbnk+IHtcbiAgLyoqXG4gICAqIFBpY2tzIHRoZSBpdGVtcyB0byBmYW4gb3V0IG92ZXIsIGZyb20gdGhlIGxpdmUgc2NvcGUuIFJlYWRzIGhlcmUgYXJlXG4gICAqIHRyYWNrZWQgbGlrZSBhbnkgb3RoZXIgc3RhZ2UgcmVhZCwgc28gdGhlIGZhbi1vdXQncyBvd24gaW5wdXRzIHNob3cgdXAgaW5cbiAgICogdGhlIHRyYWNlIGFuZCBpbiBhIGJhY2t3YXJkIHNsaWNlLlxuICAgKi9cbiAgaXRlbXM6IChzY29wZTogVFNjb3BlKSA9PiByZWFkb25seSBUSXRlbVtdO1xuICAvKipcbiAgICogQnVpbGRzIHRoZSBjaGFydCBmb3IgT05FIGl0ZW0uIENhbGxlZCBvbmNlIHBlciBleGVjdXRlZCBicmFuY2gsIHdpdGggdGhlXG4gICAqIGl0ZW0gYW5kIGl0cyBpbmRleCDigJQgY2xvc2Ugb3ZlciB0aGVtLCBvciByZWFkIHRoZSBgaXRlbWAgLyBgaW5kZXhgIHZhbHVlc1xuICAgKiBzZWVkZWQgaW50byB0aGUgYnJhbmNoJ3Mgb3duIHNjb3BlLlxuICAgKi9cbiAgYnJhbmNoOiAoaXRlbTogVEl0ZW0sIGluZGV4OiBudW1iZXIpID0+IEJyYW5jaENoYXJ0O1xuICAvKipcbiAgICogSGFyZCBjZWlsaW5nIG9uIGJyYW5jaGVzIHBlciBleGVjdXRpb24uIFJFUVVJUkVEOiBhbiB1bmJvdW5kZWQgZmFuLW91dFxuICAgKiBkcml2ZW4gYnkgbW9kZWwgb3V0cHV0IGlzIGEgcmVzb3VyY2UgYXR0YWNrLCBzbyB0aGVyZSBpcyBubyBkZWZhdWx0IHRvXG4gICAqIGZvcmdldC4gRXh0cmEgaXRlbXMgZG8gbm90IHJ1biDigJQgdGhlIHRydW5jYXRpb24gaXMgcmVjb3JkZWQsIG5ldmVyIHNpbGVudC5cbiAgICovXG4gIG1heEJyYW5jaGVzOiBudW1iZXI7XG4gIC8qKlxuICAgKiBTdGF0ZSBrZXkgdGhlIG9yZGVyZWQgcmVzdWx0cyBhcnJheSBpcyB3cml0dGVuIHRvIG9uIHRoZSBwYXJlbnQgc2NvcGUuXG4gICAqIFJFUVVJUkVEIOKAlCBhIGtleSBkZXJpdmVkIGZyb20gdGhlIHN0YWdlIGlkIGNvdWxkIHNpbGVudGx5IG92ZXJ3cml0ZSBzdGF0ZVxuICAgKiB0aGUgY2hhcnQgYWxyZWFkeSBvd25zLlxuICAgKi9cbiAgaW50bzogc3RyaW5nO1xuICAvKipcbiAgICogRmFuLW91dCBlcnJvciBwb2xpY3kg4oCUIHRoZSBTQU1FIHBvbGljeSB0aGUgZXhpc3RpbmcgcGFyYWxsZWwgZmFuLW91dCB1c2VzLlxuICAgKiBgdHJ1ZWAgPSBgUHJvbWlzZS5hbGxgICh0aGUgZmlyc3QgZmFpbGluZyBicmFuY2ggcmVqZWN0cyB0aGUgc3RhZ2UpO1xuICAgKiBvbWl0dGVkL2ZhbHNlID0gYmVzdC1lZmZvcnQgYFByb21pc2UuYWxsU2V0dGxlZGAgKGV2ZXJ5IGJyYW5jaCBydW5zOyBhXG4gICAqIGZhaWxlZCBicmFuY2gncyBzbG90IGluIHRoZSByZXN1bHRzIGFycmF5IGlzIGB1bmRlZmluZWRgKS5cbiAgICovXG4gIGZhaWxGYXN0PzogYm9vbGVhbjtcbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBSZXRyeSAocGVyLXN0YWdlIGRlY2xhcmF0aXZlIHBvbGljeSlcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vKipcbiAqIERlY2xhcmF0aXZlIHBlci1zdGFnZSByZXRyeSBwb2xpY3kuXG4gKlxuICogV0hZIHRoaXMgZXhpc3RzOiBhIHJldHJ5IGhhbmQtcm9sbGVkIGluc2lkZSBhIHN0YWdlIGZ1bmN0aW9uIGlzIGludmlzaWJsZSB0b1xuICogdGhlIHRyYWNlLiBUaGUgc3RhZ2Ugc2hvd3Mgb25lIGV4ZWN1dGlvbiwgdGhlIGNvbW1pdCBsb2cgc2hvd3Mgb25lIGJ1bmRsZSxcbiAqIGFuZCB0aGUgdHdvIGZhaWxlZCBjYWxscyB0aGF0IHByZWNlZGVkIHRoZSBzdWNjZXNzZnVsIG9uZSBsZWZ0IG5vIG1hcmtcbiAqIGFueXdoZXJlIOKAlCBhbiB1bmV4cGxhaW5lZCBiZWhhdmlvdXIgaW4gYSBsaWJyYXJ5IHdob3NlIHdob2xlIHRoZXNpcyBpcyB0aGF0XG4gKiBub3RoaW5nIGludmlzaWJsZSBoYXBwZW5zLiBEZWNsYXJlZCBoZXJlIGluc3RlYWQsIGV2ZXJ5IGF0dGVtcHQgaXMgcGFydCBvZlxuICogdGhlIHJlY29yZDogZWFjaCBmYWlsZWQgYXR0ZW1wdCBmaXJlcyBgRmxvd1JlY29yZGVyLm9uU3RhZ2VSZXRyeWAgd2l0aCB0aGVcbiAqIGF0dGVtcHQgbnVtYmVyLCB0aGUgd2FpdCwgYW5kIHRoZSBzdHJ1Y3R1cmVkIGVycm9yLlxuICpcbiAqIEEgUE9MSUNZLCBub3QgYSBzdGFnZSBraW5kIOKAlCBgcmV0cnlgIHNpdHMgb24gYSBub3JtYWwgc3RhZ2UgdGhlIHdheVxuICogYGlzUGF1c2FibGVgIC8gYGlzU3RyZWFtaW5nYCBkby4gVGhlIHNlcmlhbGl6ZWQgbm9kZSBgdHlwZWAgaXMgdW5jaGFuZ2VkIGFuZFxuICogZXZlcnkgZXhpc3RpbmcgY29uc3VtZXIga2VlcHMgcmVuZGVyaW5nIHRoZSBzdGFnZSBleGFjdGx5IGFzIGJlZm9yZS5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHNcbiAqIGZsb3dDaGFydDxTdGF0ZT4oJ0ZldGNoIHVzZXInLCBmZXRjaEZuLCAnZmV0Y2gtdXNlcicpXG4gKiAgIC5yZXRyeSh7IGF0dGVtcHRzOiAzLCBiYWNrb2ZmTXM6IChuKSA9PiAxMDAgKiAyICoqIChuIC0gMSkgfSlcbiAqIGBgYFxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJldHJ5UG9saWN5IHtcbiAgLyoqXG4gICAqIEhvdyBtYW55IHRpbWVzIHRoZSBzdGFnZSBmdW5jdGlvbiBtYXkgcnVuIGluIHRvdGFsLCBJTkNMVURJTkcgdGhlIGZpcnN0XG4gICAqIHJ1bi4gTXVzdCBiZSBhbiBpbnRlZ2VyID49IDE7IGAxYCBtZWFucyBcIm5vIHJldHJ5XCIgKGEgZGVjbGFyZWQgbm8tb3AsXG4gICAqIGFjY2VwdGVkIHNvIGEgcG9saWN5IGNhbiBiZSBzd2l0Y2hlZCBvZmYgd2l0aG91dCBkZWxldGluZyBpdCkuXG4gICAqL1xuICBhdHRlbXB0czogbnVtYmVyO1xuICAvKipcbiAgICogSG93IGxvbmcgdG8gd2FpdCBiZWZvcmUgdGhlIE5FWFQgYXR0ZW1wdC4gRWl0aGVyIGEgZml4ZWQgbnVtYmVyIG9mXG4gICAqIG1pbGxpc2Vjb25kcywgb3IgYSBmdW5jdGlvbiBvZiB0aGUgYXR0ZW1wdCB0aGF0IGp1c3QgRkFJTEVEICgxLWJhc2VkKVxuICAgKiByZXR1cm5pbmcgbWlsbGlzZWNvbmRzIOKAlCBgKG4pID0+IDEwMCAqIDIgKiogKG4gLSAxKWAgaXMgZXhwb25lbnRpYWxcbiAgICogYmFja29mZi4gT21pdHRlZCAob3IgYSBub24tZmluaXRlIC8gbmVnYXRpdmUgcmVzdWx0KSBtZWFucyBubyB3YWl0LlxuICAgKlxuICAgKiBUaGUgd2FpdCBpcyBhIHBsYWluIGF3YWl0ZWQgdGltZXIgdGhhdCBpcyBDQU5DRUxMRUQgYnkgdGhlIHJ1bidzXG4gICAqIGBBYm9ydFNpZ25hbGAuIEl0IGlzIG5vdCBhIHBhdXNlOiBhIGNoYXJ0IGNhbm5vdCBiZSBjaGVja3BvaW50ZWQgaW4gdGhlXG4gICAqIG1pZGRsZSBvZiBhIGJhY2tvZmYuXG4gICAqL1xuICBiYWNrb2ZmTXM/OiBudW1iZXIgfCAoKGF0dGVtcHQ6IG51bWJlcikgPT4gbnVtYmVyKTtcbiAgLyoqXG4gICAqIElzIFRISVMgZXJyb3Igd29ydGggYW5vdGhlciBhdHRlbXB0PyBEZWZhdWx0cyB0byByZXRyeWluZyBldmVyeSBlcnJvci5cbiAgICogUmV0dXJuaW5nIGBmYWxzZWAgZW5kcyB0aGUgc3RhZ2UgaW1tZWRpYXRlbHkgb24gdGhlIG5vcm1hbCBlcnJvciBwYXRoIOKAlFxuICAgKiBleGFjdGx5IGFzIGlmIG5vIHBvbGljeSBoYWQgYmVlbiBkZWNsYXJlZCwgYW5kIHdpdGggbm8gcmV0cnkgZXZlbnQgKHRoZVxuICAgKiBwb2xpY3kgY2hvc2Ugbm90IHRvIGFjdDsgdGhlcmUgaXMgbm90aGluZyB0byByZXBvcnQgdGhhdCB0aGUgZXJyb3IgZXZlbnRcbiAgICogZG9lcyBub3QgYWxyZWFkeSBzYXkpLlxuICAgKlxuICAgKiBBIHRocm93IGZyb20gdGhpcyBwcmVkaWNhdGUgaXMgdHJlYXRlZCBhcyBgZmFsc2VgIOKAlCBhIGJyb2tlbiBwcmVkaWNhdGVcbiAgICogbXVzdCBub3QgdHVybiBhIGZhaWxpbmcgc3RhZ2UgaW50byBhbiBpbmZpbml0ZSByZXRyeSBsb29wLlxuICAgKi9cbiAgcmV0cnlPbj86IChlcnJvcjogdW5rbm93bikgPT4gYm9vbGVhbjtcbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBTdWJmbG93XG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLyoqXG4gKiBDb250cm9scyBob3cgYXJyYXkgdmFsdWVzIGZyb20gb3V0cHV0TWFwcGVyIGFyZSBtZXJnZWQgaW50byBwYXJlbnQgc2NvcGUuXG4gKi9cbmV4cG9ydCBlbnVtIEFycmF5TWVyZ2VNb2RlIHtcbiAgLyoqIEFwcGVuZCBzdWJmbG93IG91dHB1dCB0byBleGlzdGluZyBwYXJlbnQgYXJyYXk6IFsuLi5leGlzdGluZywgLi4udmFsdWVdLiBEZWZhdWx0LiAqL1xuICBDb25jYXQgPSAnY29uY2F0JyxcbiAgLyoqIE92ZXJ3cml0ZSBwYXJlbnQgYXJyYXkgd2l0aCBzdWJmbG93IG91dHB1dC4gVXNlIGZvciBEeW5hbWljIGxvb3BzLiAqL1xuICBSZXBsYWNlID0gJ3JlcGxhY2UnLFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFN1YmZsb3dNb3VudE9wdGlvbnM8VFBhcmVudFNjb3BlID0gYW55LCBUU3ViZmxvd0lucHV0ID0gYW55LCBUU3ViZmxvd091dHB1dCA9IGFueT4ge1xuICBpbnB1dE1hcHBlcj86IChwYXJlbnRTY29wZTogVFBhcmVudFNjb3BlKSA9PiBUU3ViZmxvd0lucHV0O1xuICAvKipcbiAgICogTWFwcyBzdWJmbG93IG91dHB1dCBiYWNrIGludG8gcGFyZW50IHNjb3BlLlxuICAgKlxuICAgKiAqKkFycmF5IG1lcmdlIGJlaGF2aW9yKiogaXMgY29udHJvbGxlZCBieSBgYXJyYXlNZXJnZWA6XG4gICAqIC0gYCdjb25jYXQnYCAoZGVmYXVsdCk6IGBbLi4uZXhpc3RpbmcsIC4uLnZhbHVlXWAg4oCUIHJldHVybiBvbmx5ICoqZGVsdGEqKiBpdGVtc1xuICAgKiAtIGAncmVwbGFjZSdgOiBvdmVyd3JpdGVzIHRoZSBwYXJlbnQgdmFsdWUg4oCUIHJldHVybiB0aGUgZnVsbCBhcnJheVxuICAgKlxuICAgKiBTY2FsYXIgdmFsdWVzIGFyZSBhbHdheXMgcmVwbGFjZWQgcmVnYXJkbGVzcyBvZiBgYXJyYXlNZXJnZWAuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogLy8gRGVsdGEgbW9kZSAoZGVmYXVsdCkg4oCUIHJldHVybiBvbmx5IG5ldyBpdGVtcywgY29uY2F0IGFwcGVuZHNcbiAgICogb3V0cHV0TWFwcGVyOiAoc2YpID0+ICh7IG1lc3NhZ2VzOiBzZi5uZXdNZXNzYWdlcyB9KVxuICAgKlxuICAgKiAvLyBSZXBsYWNlIG1vZGUg4oCUIHJldHVybiBmdWxsIGFycmF5LCBwYXJlbnQgdmFsdWUgaXMgb3ZlcndyaXR0ZW5cbiAgICogLy8gVXNlZnVsIGluIER5bmFtaWMgbG9vcHMgd2hlcmUgdGhlIHN1YmZsb3cgcmVjb21wdXRlcyB0aGUgZnVsbCB2YWx1ZSBlYWNoIGl0ZXJhdGlvblxuICAgKiBvdXRwdXRNYXBwZXI6IChzZikgPT4gKHsgdG9vbERlc2NyaXB0aW9uczogc2YudG9vbERlc2NyaXB0aW9ucyB9KSxcbiAgICogYXJyYXlNZXJnZTogQXJyYXlNZXJnZU1vZGUuUmVwbGFjZSxcbiAgICpcbiAgICogLy8gU2NhbGFycyBhcmUgZmluZSBpbiBib3RoIG1vZGVzIOKAlCBhbHdheXMgcmVwbGFjZWRcbiAgICogb3V0cHV0TWFwcGVyOiAoc2YpID0+ICh7IHN0YXR1czogc2YucmVzdWx0LCBjb3VudDogc2YudG90YWwgfSlcbiAgICogYGBgXG4gICAqL1xuICBvdXRwdXRNYXBwZXI/OiAoc3ViZmxvd091dHB1dDogVFN1YmZsb3dPdXRwdXQsIHBhcmVudFNjb3BlOiBUUGFyZW50U2NvcGUpID0+IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICAvKipcbiAgICogQ29udHJvbHMgaG93IGFycmF5IHZhbHVlcyBmcm9tIG91dHB1dE1hcHBlciBhcmUgbWVyZ2VkIGludG8gcGFyZW50IHNjb3BlLlxuICAgKiBBcHBsaWVzIG9ubHkgdG8gdG9wLWxldmVsIGFycmF5IGtleXMuIE5lc3RlZCBhcnJheXMgaW5zaWRlIG9iamVjdHNcbiAgICogYWx3YXlzIHVzZSBhcHBlbmQgKGFwcGVuZFRvQXJyYXkpIHJlZ2FyZGxlc3Mgb2YgdGhpcyBzZXR0aW5nLlxuICAgKlxuICAgKiBAZGVmYXVsdCBBcnJheU1lcmdlTW9kZS5Db25jYXRcbiAgICovXG4gIGFycmF5TWVyZ2U/OiBBcnJheU1lcmdlTW9kZTtcblxuICAvKipcbiAgICogU1RSVUNUVVJFLU9OTFk6IHRoZSBkb3duc3RyZWFtIHN0YWdlIGlkIHRoaXMgYnJhbmNoJ3MgY29udmVyZ2VuY2UgZWRnZVxuICAgKiBwb2ludHMgdG8sIG92ZXJyaWRpbmcgdGhlIGRlZmF1bHQgXCJjb252ZXJnZSBhdCB0aGUgbmV4dCBsaW5lYXIgc3RhZ2UuXCJcbiAgICpcbiAgICogV2hlbiBhIGZvcmsvc2VsZWN0b3IvZGVjaWRlciBicmFuY2ggY2FycmllcyBgY29udmVyZ2VBdGAsIGl0cyB2aXN1YWxpemVkXG4gICAqIGBuZXh0YCBlZGdlIGlzIGZpcmVkIHRvIHRoZSBuYW1lZCBzdGFnZSBpbnN0ZWFkIG9mIHRvIHRoZSBzaGFyZWRcbiAgICogY29udmVyZ2VuY2Ugbm9kZSBpdHMgc2libGluZ3MgdXNlLiBUaGlzIGV4cHJlc3NlcyBhbiB1bmVxdWFsLWRlcHRoIG1lcmdlXG4gICAqIOKAlCBlLmcuIGEgYHRvb2xzYCBzbG90IHRoYXQgYnlwYXNzZXMgdGhlIGBtZXNzYWdlQVBJYCBhc3NlbWJseSBub2RlIGFuZFxuICAgKiBwYWlycyB3aXRoIGl0cyBvdXRwdXQgYXQgYGNhbGwtbGxtYCAoc28gYGNhbGwtbGxtYCByZWFkcyBhcyBhIDItcGFyZW50XG4gICAqIG1lcmdlKSwgZmFpdGhmdWwgdG8gdGhlIEFudGhyb3BpYyB3aXJlIHByb3RvY29sIChzeXN0ZW0rbWVzc2FnZXMgPSB0aGVcbiAgICogbWVzc2FnZSBwYXlsb2FkOyB0b29scyA9IGEgc2VwYXJhdGUgdG9wLWxldmVsIGZpZWxkKS5cbiAgICpcbiAgICogKipUaGlzIGFmZmVjdHMgdGhlIFNUUlVDVFVSRS90b3BvbG9neSBncmFwaCBvbmx5Kiog4oCUIHRoZSBydW50aW1lIGlzXG4gICAqIHVuY2hhbmdlZCAodGhlIGJyYW5jaCdzIG91dHB1dHMgcmlkZSBzaGFyZWQgc2NvcGU7IHRoZSBuYW1lZCB0YXJnZXQgcmVhZHNcbiAgICogdGhlbSB3aGVuIGl0IHJ1bnMpLiBJdCBkb2VzIE5PVCBpbnRyb2R1Y2UgYSBqb2luIGJhcnJpZXIuIFRoZSB0YXJnZXQgaXMgYVxuICAgKiBGT1JXQVJEIHN0YWdlIChhZGRlZCBsYXRlciBpbiB0aGUgY2hhaW4pLCBzbyBpdCBpcyBub3QgdmFsaWRhdGVkIGF0XG4gICAqIGJyYW5jaC1kZWNsYXJhdGlvbiB0aW1lLlxuICAgKi9cbiAgY29udmVyZ2VBdD86IHN0cmluZztcblxuICAvKipcbiAgICogV2hlbiBgdHJ1ZWAsIGFuIGlubmVyIGBzY29wZS4kYnJlYWsocmVhc29uKWAgY2FsbCBpbnNpZGUgdGhpcyBzdWJmbG93XG4gICAqIHByb3BhZ2F0ZXMgdXAgdG8gdGhlIHBhcmVudCDigJQgaS5lLiwgdGhlIHBhcmVudCdzIGBicmVha0ZsYWdgIGlzIHNldFxuICAgKiBhZnRlciB0aGUgc3ViZmxvdyBleGl0cywgdGVybWluYXRpbmcgdGhlIHBhcmVudCdzIG91dGVyIGxvb3AgdG9vLlxuICAgKlxuICAgKiAqKkRlZmF1bHQ6IGBmYWxzZWAqKiAoY3VycmVudCBiZWhhdmlvdXIg4oCUIGlubmVyIGJyZWFrIHN0b3BzIG9ubHkgdGhlXG4gICAqIHN1YmZsb3c7IHBhcmVudCBjb250aW51ZXMpLlxuICAgKlxuICAgKiAjIyBXaGVuIHRvIHVzZVxuICAgKlxuICAgKiBTZXQgYHByb3BhZ2F0ZUJyZWFrOiB0cnVlYCBvbiBzdWJmbG93IG1vdW50cyB0aGF0IHJlcHJlc2VudFxuICAgKiAqKnRlcm1pbmFsKiogYnJhbmNoZXMg4oCUIFwiaWYgdGhpcyBzdWJmbG93IGZpcmVzLCB0aGUgb3V0ZXIgbG9vcCBpc1xuICAgKiBkb25lXCIuIEV4YW1wbGVzOlxuICAgKlxuICAgKiAtIEEgaHVtYW4tcmV2aWV3IHJ1bm5lciB0aGF0IHRha2VzIG92ZXIgZnJvbSBhbiBhZ2VudCdzIHRvb2wtY2FsbGluZ1xuICAgKiAgIGxvb3AgYW5kIHByb2R1Y2VzIHRoZSBmaW5hbCByZXNwb25zZS5cbiAgICogLSBBIHNhZmV0eS1nYXRlIHN1YmZsb3cgdGhhdCBoYWx0cyB0aGUgb3V0ZXIgd29ya2Zsb3cgd2hlbiBhIHBvbGljeVxuICAgKiAgIHZpb2xhdGlvbiBpcyBkZXRlY3RlZC5cbiAgICogLSBBbiBlcnJvci1yZWNvdmVyeSBzdWJmbG93IHRoYXQgcmVzdG9yZXMgc3RhdGUgYW5kIHRoZW4gdGVybWluYXRlcy5cbiAgICpcbiAgICogIyMgU2VtYW50aWNzXG4gICAqXG4gICAqIDEuIEluc2lkZSB0aGUgc3ViZmxvdywgYSBzdGFnZSBjYWxscyBgc2NvcGUuJGJyZWFrKHJlYXNvbilgLlxuICAgKiAyLiBUaGUgc3ViZmxvdydzIG93biBleGVjdXRpb24gc3RvcHMgKG5vcm1hbCBgJGJyZWFrYCBiZWhhdmlvdXIpLlxuICAgKiAzLiBgU3ViZmxvd0V4ZWN1dG9yYCBpbnNwZWN0cyB0aGUgc3ViZmxvdydzIGV4aXQgc3RhdGUuIElmXG4gICAqICAgIGBwcm9wYWdhdGVCcmVhayA9PT0gdHJ1ZWAgQU5EIHRoZSBpbm5lciBicmVhayBmaXJlZCwgaXQgZm9yd2FyZHNcbiAgICogICAgdGhlIGJyZWFrIChhbmQgaXRzIHJlYXNvbikgdG8gdGhlIHBhcmVudCdzIGBicmVha0ZsYWdgLlxuICAgKiA0LiBUaGUgcGFyZW50IHRyYXZlcnNlciBzZWVzIGBzaG91bGRCcmVha2Agb24gaXRzIG5leHQgc3RlcCBhbmQgZXhpdHMuXG4gICAqIDUuIEEgYEZsb3dSZWNvcmRlci5vbkJyZWFrYCBldmVudCBmaXJlcyBhdCB0aGUgcGFyZW50LW1vdW50IGxldmVsIHdpdGhcbiAgICogICAgYHByb3BhZ2F0ZWRGcm9tU3ViZmxvd2AgPSB0aGUgc3ViZmxvdydzIGlkIGFuZCB0aGUgaW5uZXIgcmVhc29uLlxuICAgKlxuICAgKiAjIyBQYXJhbGxlbC9mYW4tb3V0XG4gICAqXG4gICAqIEZvbGxvd3MgdGhlIGV4aXN0aW5nIGxpYnJhcnkgcnVsZSBpbiBgQ2hpbGRyZW5FeGVjdXRvcmA6IHRoZSBwYXJlbnRcbiAgICogYnJlYWtzIG9ubHkgd2hlbiAqKmV2ZXJ5KiogY2hpbGQgb2YgYSBmb3JrIGJyb2tlLiBBIHNpbmdsZVxuICAgKiBgcHJvcGFnYXRlQnJlYWs6IHRydWVgIHN1YmZsb3cgY29udHJpYnV0aW5nIGl0cyBicmVhayB0byB0aGUgY291bnRcbiAgICogZG9lcyBub3Qgb24gaXRzIG93biB0ZXJtaW5hdGUgdGhlIHBhcmVudCBmYW4tb3V0LlxuICAgKlxuICAgKiAjIyBvdXRwdXRNYXBwZXIgc3RpbGwgcnVuc1xuICAgKlxuICAgKiBUaGUgc3ViZmxvdydzIGBvdXRwdXRNYXBwZXJgIChpZiBzdXBwbGllZCkgQUxXQVlTIHJ1bnMgYmVmb3JlIHRoZVxuICAgKiBicmVhayBwcm9wYWdhdGVzLCBzbyB0aGUgc3ViZmxvdydzIHBhcnRpYWwgc3RhdGUgaXMgc3RpbGwgd3JpdHRlbiB0b1xuICAgKiB0aGUgcGFyZW50IHNjb3BlLiBUaGlzIGlzIGludGVudGlvbmFsIOKAlCB0aGUgdHlwaWNhbCB1c2UgY2FzZSBpcyBhblxuICAgKiBcImVzY2FsYXRpb25cIiBzdWJmbG93IHdob3NlIG91dHB1dCBJUyB0aGUgZmluYWwgYW5zd2VyIHRoYXQgbmVlZHMgdG9cbiAgICogbGFuZCBpbiB0aGUgcGFyZW50IHNjb3BlIGJlZm9yZSB0aGUgb3V0ZXIgbG9vcCB0ZXJtaW5hdGVzLiBJZiB5b3VcbiAgICogd2FudCB0byBzdXBwcmVzcyBvdXRwdXQgbWFwcGluZyBvbiBicmVhaywgY2hlY2sgdGhlIGJyZWFrIHN0YXRlXG4gICAqIGluc2lkZSB5b3VyIGBvdXRwdXRNYXBwZXJgIGFuZCByZXR1cm4gYHt9YCBlYXJseS5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHByb3BhZ2F0ZUJyZWFrPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogRGVjbGFyZWQgdGFncyAoOS4yMS4xKSBmb3IgdGhlIE1PVU5UIGl0c2VsZiDigJQgdGhlIE5BTUVTIHRoZSBhdXRob3IgcHV0c1xuICAgKiBvbiB0aGlzIG1vdW50IGF0IGJ1aWxkIHRpbWUsIGxhbmRlZCBieSB0aGUgc2FtZSBgYXBwbHlUYWdzYCBldmVyeSBvdGhlclxuICAgKiBgb3B0aW9ucy50YWdzYCBzaXRlIHVzZXMsIHdpdGggdGhlIHNhbWUgcmVmdXNhbHMgKGVtcHR5LCBub24tc3RyaW5nLCB0aGVcbiAgICogcmVzZXJ2ZWQgYH5gIG1hcmtlciwgYSBkdXBsaWNhdGUsIGEgc2Vjb25kIGRlY2xhcmF0aW9uKS5cbiAgICpcbiAgICogQSBtb3VudCBpcyBhIHN0YWdlIHRoYXQgY29tbWl0czogaXRzIGZpcnN0IGJ1bmRsZSBpbiB0aGUgUEFSRU5UIGxvZyBpcyBhXG4gICAqIHN0b3AgaW4gYGNvbW1pdFN0b3BzYCwgc28gYHRhZ1N0b3BzYCBrZWVwcyBpdCBsaWtlIGFueSB0YWdnZWQgc3RhZ2UgYW5kXG4gICAqIGNhcnJpZXMgdGhlc2UgbmFtZXMgYXMgYFN0b3AubWV0YWAuIFN0YW1wZWQgb24gdGhhdCBmaXJzdCBidW5kbGUgb25seVxuICAgKiAodGhlIG1vdW50J3MgZXhpdCBidW5kbGUgY2FycmllcyBub25lIOKAlCB0aGUgb25jZS1wZXItZXhlY3V0aW9uIGxhdykuXG4gICAqIFRoZSBzdWJmbG93J3MgT1dOIGxvZyBpcyB1bnRvdWNoZWQ6IGl0cyBpbm5lciBzdGFnZXMgZGVjbGFyZSB0aGVpciBvd25cbiAgICogdGFncywgYW5kIGBkcmlsbChtb3VudClgIHJlYWRzIHRob3NlIG9mZiB0aGUgaW5uZXIgbG9nLlxuICAgKlxuICAgKiBUaGlzIGlzIHRoZSBPTkxZIHRhZyBzaXRlIGZvciBhIGZvcmstY2hpbGQgbW91bnQgKGBhZGRTdWJGbG93Q2hhcnRgKSBvclxuICAgKiBhIGJyYW5jaCBtb3VudCAoYGFkZFN1YkZsb3dDaGFydEJyYW5jaGApIOKAlCBhZnRlciB0aG9zZSB0aGUgY3Vyc29yIHN0aWxsXG4gICAqIHBvaW50cyBhdCB0aGUgcGFyZW50LCBzbyBgLnRhZygpYCByZWZ1c2VzIHJhdGhlciB0aGFuIG1pcy1hdHRyaWJ1dGUuIEFcbiAgICogbGluZWFyIG1vdW50IChgYWRkU3ViRmxvd0NoYXJ0TmV4dGApIG1vdmVzIHRoZSBjdXJzb3IsIHNvIGAudGFnKClgIHdvcmtzXG4gICAqIHRoZXJlIHRvbzsgZGVjbGFyZSBpbiBvbmUgcGxhY2UsIG5vdCBib3RoLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIC5hZGRTZWxlY3RvckZ1bmN0aW9uKCdTbG90cycsIHBpY2tTbG90cywgJ3Nsb3RzJylcbiAgICogICAuYWRkU3ViRmxvd0NoYXJ0QnJhbmNoKCdtZW1vcnknLCBtZW1vcnlDaGFydCwgJ01lbW9yeScsIHsgdGFnczogWydzbG90Om1lbW9yeSddIH0pXG4gICAqICAgLmFkZFN1YkZsb3dDaGFydEJyYW5jaCgndG9vbHMnLCB0b29sc0NoYXJ0LCAnVG9vbHMnLCB7IHRhZ3M6IFsnc2xvdDp0b29scyddIH0pXG4gICAqIC5lbmQoKVxuICAgKiBgYGBcbiAgICovXG4gIHRhZ3M/OiByZWFkb25seSBzdHJpbmdbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTdWJmbG93UmVzdWx0IHtcbiAgc3ViZmxvd0lkOiBzdHJpbmc7XG4gIHN1YmZsb3dOYW1lOiBzdHJpbmc7XG4gIHRyZWVDb250ZXh0OiB7XG4gICAgLyoqXG4gICAgICogVGhlIHN1YmZsb3cncyBmaW5hbCBzdGF0ZS4gVGhlIHRyYXZlcnNlcidzIHJlY29yZCBob2xkcyB0aGUgTElWRSBoZWFwXG4gICAgICog4oCUIHdoYXQgYSBwbGFpbiBgZ2V0U25hcHNob3QoKWAgYW5kIHRoZSBjaGVja3BvaW50IHNlZS4gVW5kZXJcbiAgICAgKiBgZ2V0U25hcHNob3QoeyByZWRhY3Q6IHRydWUgfSlgIHRoZSBleGVjdXRvciBzZXJ2ZXMgdGhlIHN1YmZsb3cncyBvd25cbiAgICAgKiByZWRhY3RlZCBtaXJyb3IgaGVyZSBpbnN0ZWFkICg5LjIwLjA7IGBoYW5kbGVycy9zZXJ2ZWRTdWJmbG93UmVzdWx0c2ApLFxuICAgICAqIHdoaWNoIGlzIGV4YWN0bHkgd2hhdCBgc3RhdGVBdGAgZm9sZHMgYGhpc3RvcnlgIHRvLlxuICAgICAqL1xuICAgIGdsb2JhbENvbnRleHQ6IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICAgIHN0YWdlQ29udGV4dHM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICAgIGhpc3Rvcnk6IHVua25vd25bXTtcbiAgICAvKiogSWRlbnRpdHkgb2YgdGhlIGxvY2FsIGhpc3RvcnksIG5vdCBpdHMgcGFyZW50J3MgbG9nLiAqL1xuICAgIHJlYWRvbmx5IGxvZ0FkZHJlc3M/OiBMb2dBZGRyZXNzO1xuICAgIC8qKlxuICAgICAqIFRoZSBzdWJmbG93J3MgT1dOIGZvbGQgYmFzZSDigJQgdGhlIHN0YXRlIGl0cyBpc29sYXRlZCBydW50aW1lIHN0YXJ0ZWRcbiAgICAgKiBmcm9tLCBiZWZvcmUgaXRzIGZpcnN0IGNvbW1pdC4gVGhlIHNpYmxpbmcgb2ZcbiAgICAgKiBgUnVudGltZVNuYXBzaG90LmluaXRpYWxTdGF0ZWAsIGNhcnJpZWQgaGVyZSBzbyBhIHN1YmZsb3cncyBgaGlzdG9yeWBcbiAgICAgKiBjYW4gYmUgZm9sZGVkIG9mZmxpbmUgZXhhY3RseSBsaWtlIHRoZSBydW4ncyBsb2cgKGBzdGF0ZUF0YCxcbiAgICAgKiBgdGltZVRyYXZlbCguLi4pLmRyaWxsKG1vdW50KWApLiBGcm96ZW4gYW5kIGRldGFjaGVkLlxuICAgICAqXG4gICAgICogTm9ybWFsbHkgYHt9YDogYSBzdWJmbG93J3MgYGlucHV0TWFwcGVyYCBzZWVkIGlzIGl0c2VsZiB0aGUgZmlyc3RcbiAgICAgKiBDT01NSVQgaW4gYGhpc3RvcnlgICh0aGUgcm9vdCBjb250ZXh0IGNvbW1pdHMgaXQpLCBub3QgYSBwcmUtcnVuIGJhc2UuXG4gICAgICovXG4gICAgaW5pdGlhbFN0YXRlPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIH07XG4gIHBhcmVudFN0YWdlSWQ6IHN0cmluZztcbiAgcGlwZWxpbmVTdHJ1Y3R1cmU/OiB1bmtub3duO1xufVxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFN1YmZsb3cgVHJhdmVyc2VyIEZhY3Rvcnlcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vKipcbiAqIFN1YmZsb3dUcmF2ZXJzZXJGYWN0b3J5IOKAlCBDcmVhdGVzIGEgRmxvd2NoYXJ0VHJhdmVyc2VyIGZvciBzdWJmbG93IGV4ZWN1dGlvbi5cbiAqXG4gKiBJbmplY3RlZCBpbnRvIFN1YmZsb3dFeGVjdXRvciB0byBicmVhayB0aGUgY2lyY3VsYXIgZGVwZW5kZW5jeTpcbiAqIEZsb3djaGFydFRyYXZlcnNlciDihpIgU3ViZmxvd0V4ZWN1dG9yIOKGkiBGbG93Y2hhcnRUcmF2ZXJzZXIuXG4gKlxuICogVGhlIGZhY3RvcnkgY2FwdHVyZXMgcGFyZW50IHRyYXZlcnNlciBjb25maWcgKHN0YWdlTWFwLCBzY29wZUZhY3RvcnksIG5hcnJhdGl2ZSwgZXRjLilcbiAqIGluIGEgY2xvc3VyZS4gU3ViZmxvd0V4ZWN1dG9yIGNhbGxzIGl0IHdpdGggc3ViZmxvdy1zcGVjaWZpYyBvdmVycmlkZXMgKHJvb3QsIHJ1bnRpbWUsIGlucHV0KS5cbiAqIFRoZSByZXR1cm5lZCB0cmF2ZXJzZXIgdXNlcyB0aGUgU0FNRSA3LXBoYXNlIGFsZ29yaXRobSBhcyB0aGUgdG9wLWxldmVsIHRyYXZlcnNlcixcbiAqIHNvIGRlY2lkZXJzLCBzZWxlY3RvcnMsIGxvb3BzLCBsYXp5IHN1YmZsb3dzLCBhbmQgYWJvcnQgc2lnbmFscyBhbGwgd29yayBpbnNpZGUgc3ViZmxvd3MuXG4gKi9cbmV4cG9ydCB0eXBlIFN1YmZsb3dUcmF2ZXJzZXJGYWN0b3J5PFRPdXQgPSBhbnksIFRTY29wZSA9IGFueT4gPSAob3B0aW9uczoge1xuICAvKiogUm9vdCBub2RlIG9mIHRoZSBzdWJmbG93ICh3aXRoIGlzU3ViZmxvd1Jvb3Qgc3RyaXBwZWQpIOKAlCB0aGUgZ3JhcGggZXZlcnkgaWQgaW5zaWRlIHRoZSBzdWJmbG93IHJlc29sdmVzIGFnYWluc3QuICovXG4gIHJvb3Q6IFN0YWdlTm9kZTxUT3V0LCBUU2NvcGU+O1xuICAvKipcbiAgICogV2hlcmUgdGhlIHN1YmZsb3cncyB0cmF2ZXJzYWwgc3RhcnRzIHdoZW4gbm90IGF0IGByb290YCDigJQgYSByZXN1bWUnc1xuICAgKiBvbmUtc2hvdCByZS1lbnRyeSAoYFJlc3VtZUhvcC5lbnRyeWApOiB0aGUgbmV4dCBtb3VudCBvbiB0aGUgcGF1c2UgcGF0aCxcbiAgICogb3IgdGhlIHBhdXNlZCBzdGFnZSdzIHN0YW5kLWluLCBlYWNoIHdpdGggaXRzIGRpc3BhdGNoZXIncyBjb250aW51YXRpb25cbiAgICogYXR0YWNoZWQuIFZpc2l0ZWQgb25jZSwgZmlyc3Q7IG5ldmVyIHJlc29sdmFibGUgYnkgaWQuXG4gICAqL1xuICBlbnRyeT86IFN0YWdlTm9kZTxUT3V0LCBUU2NvcGU+O1xuICAvKipcbiAgICogUGFyYWxsZWwgc2libGluZ3MnIHBhdXNlcyB3YWl0aW5nIGluIHRoaXMgc3ViZmxvdyAoYFJlc3VtZUhvcC5wZW5kaW5nUGF1c2VzYCxcbiAgICogOS4yOC4wKSDigJQgcmFpc2VkIGluIG9yZGVyIG9uY2UgYGVudHJ5YCdzIGNoYWluIGVuZHMuXG4gICAqL1xuICBwZW5kaW5nUGF1c2VzPzogcmVhZG9ubHkgUXVldWVkUGF1c2VbXTtcbiAgLyoqIElzb2xhdGVkIGV4ZWN1dGlvbiBydW50aW1lIGZvciB0aGUgc3ViZmxvdy4gKi9cbiAgZXhlY3V0aW9uUnVudGltZTogSUV4ZWN1dGlvblJ1bnRpbWU7XG4gIC8qKiBNYXBwZWQgaW5wdXQgZnJvbSBwYXJlbnQgc2NvcGUgKGJlY29tZXMgcmVhZE9ubHlDb250ZXh0IGZvciBzdGFnZXMpLiAqL1xuICByZWFkT25seUNvbnRleHQ/OiB1bmtub3duO1xuICAvKiogU3ViZmxvdyBpZGVudGlmaWVyIOKAlCB1c2VkIGFzIGJyYW5jaFBhdGggZm9yIG5hcnJhdGl2ZSBjb250ZXh0LiAqL1xuICBzdWJmbG93SWQ/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBSRkMtMDAzIEQxOiBydW50aW1lU3RhZ2VJZCBvZiB0aGUgc3ViZmxvdyBNT1VOVCBzdGFnZSBpbiB0aGUgcGFyZW50XG4gICAqIHRyYXZlcnNlci4gQmVjb21lcyB0aGUgYHBhcmVudFJ1bnRpbWVTdGFnZUlkYCBmYWxsYmFjayBmb3IgdGhlIHN1YmZsb3cnc1xuICAgKiByb290IHN0YWdlIHNvIHJ1bnRpbWUgYW5jZXN0b3IgY2hhaW5zIGNyb3NzIHN1YmZsb3cgYm91bmRhcmllcy5cbiAgICovXG4gIHBhcmVudE1vdW50UnVudGltZVN0YWdlSWQ/OiBzdHJpbmc7XG59KSA9PiBTdWJmbG93VHJhdmVyc2VySGFuZGxlPFRPdXQsIFRTY29wZT47XG5cbi8qKlxuICogSGFuZGxlIHJldHVybmVkIGJ5IFN1YmZsb3dUcmF2ZXJzZXJGYWN0b3J5LlxuICogUHJvdmlkZXMgZXhlY3V0ZSgpICsgYWNjZXNzIHRvIG5lc3RlZCBzdWJmbG93IHJlc3VsdHMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3ViZmxvd1RyYXZlcnNlckhhbmRsZTxUT3V0ID0gYW55LCBUU2NvcGUgPSBhbnk+IHtcbiAgLyoqIEV4ZWN1dGUgdGhlIHN1YmZsb3cncyBncmFwaCB1c2luZyB0aGUgZnVsbCA3LXBoYXNlIHRyYXZlcnNhbCBhbGdvcml0aG0uICovXG4gIGV4ZWN1dGUoKTogUHJvbWlzZTxUcmF2ZXJzYWxSZXN1bHQ+O1xuICAvKiogQ29sbGVjdCBuZXN0ZWQgc3ViZmxvdyByZXN1bHRzIChmcm9tIHN1YmZsb3dzIG1vdW50ZWQgaW5zaWRlIHRoaXMgc3ViZmxvdykuICovXG4gIGdldFN1YmZsb3dSZXN1bHRzKCk6IE1hcDxzdHJpbmcsIFN1YmZsb3dSZXN1bHQ+O1xuICAvKipcbiAgICogRmluYWwgYnJlYWsgc3RhdGUgb2YgdGhlIHN1YmZsb3cgYWZ0ZXIgYGV4ZWN1dGUoKWAgcmV0dXJucy5cbiAgICpcbiAgICogICAtIGBzaG91bGRCcmVhazogdHJ1ZWAgIOKGkiBhIHN0YWdlIGluc2lkZSB0aGUgc3ViZmxvdyBjYWxsZWRcbiAgICogICAgIGBzY29wZS4kYnJlYWsocmVhc29uKWAsIHN0b3BwaW5nIHRoZSBzdWJmbG93J3Mgb3duIHRyYXZlcnNhbC5cbiAgICogICAtIGByZWFzb25gICAgICAgICAgICAgIOKGkiB0aGUgb3B0aW9uYWwgc3RyaW5nIHBhc3NlZCB0byBgJGJyZWFrYC5cbiAgICpcbiAgICogVXNlZCBieSBgU3ViZmxvd0V4ZWN1dG9yYCB0byBpbXBsZW1lbnQgYFN1YmZsb3dNb3VudE9wdGlvbnMucHJvcGFnYXRlQnJlYWtgOlxuICAgKiBpZiB0aGUgbW91bnQgb3B0cyBpbiBBTkQgdGhlIHN1YmZsb3cgYnJva2UsIHRoZSBwYXJlbnQncyBicmVhayBmbGFnIGlzXG4gICAqIGZvcndhcmRlZC5cbiAgICovXG4gIGdldEJyZWFrU3RhdGUoKTogeyBzaG91bGRCcmVhazogYm9vbGVhbjsgcmVhc29uPzogc3RyaW5nIH07XG59XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gRXhlY3V0aW9uIFJ1bnRpbWUgSW50ZXJmYWNlXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLyoqXG4gKiBJRXhlY3V0aW9uUnVudGltZSDigJQgSW50ZXJmYWNlIGZvciB0aGUgcnVudGltZSBlbnZpcm9ubWVudC5cbiAqXG4gKiBEZWZpbmVzIHRoZSBjb250cmFjdCB0aGF0IGVuZ2luZSBoYW5kbGVycyBuZWVkIGZyb20gdGhlIHJ1bm5lciBsYXllcixcbiAqIGF2b2lkaW5nIGNpcmN1bGFyIGltcG9ydHMgYmV0d2VlbiBlbmdpbmUvIGFuZCBydW5uZXIvLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElFeGVjdXRpb25SdW50aW1lIHtcbiAgZ2xvYmFsU3RvcmU6IHsgZ2V0U3RhdGUoKTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfTtcbiAgLyoqXG4gICAqIFRoZSByZWRhY3RlZCBtaXJyb3Igb2YgYGdsb2JhbFN0b3JlYCDigJQgcHJlc2VudCB3aGVuIHRoZSBydW4ncyBwb2xpY3lcbiAgICoga2VlcHMgb25lIChgUnVuUG9saWN5Lm1pcnJvcmA6IGEgcnVuIHdpdGggYSByZWRhY3Rpb24gcG9saWN5KSwgZWxzZSBhYnNlbnQuXG4gICAqIGBTdWJmbG93RXhlY3V0b3JgIHJlYWRzIGl0IHRvIHNlcnZlIGEgc3ViZmxvdydzIHN0YXRlICg5LjIwLjApLlxuICAgKi9cbiAgcmVkYWN0ZWRTdG9yZT86IFNoYXJlZE1lbW9yeTtcbiAgcm9vdFN0YWdlQ29udGV4dDogU3RhZ2VDb250ZXh0O1xuICBleGVjdXRpb25IaXN0b3J5OiB7IGxpc3QoKTogdW5rbm93bltdIH07XG4gIC8qKlxuICAgKiBBIGZyZXNoIHJvb3QgZnJhbWUgb24gdGhpcyBydW50aW1lIOKAlCBpdHMgc3RvcmUsIGl0cyBsb2csIHRoZSBydW4ncyBwb2xpY3lcbiAgICogYW5kIG1pcnJvciAoYEV4ZWN1dGlvblJ1bnRpbWUubmV3Um9vdGApLiBgU3ViZmxvd0V4ZWN1dG9yYCBzd2FwcyBhXG4gICAqIHN1YmZsb3cncyBzZWVkIGZyYW1lIGZvciB0aGUgZnJhbWUgaXRzIGZpcnN0IHN0YWdlIHJ1bnMgb24gd2l0aCBpdC5cbiAgICovXG4gIG5ld1Jvb3QobmFtZTogc3RyaW5nLCBpZDogc3RyaW5nKTogU3RhZ2VDb250ZXh0O1xuICBnZXRTbmFwc2hvdChvcHRpb25zPzogeyByZWRhY3Q/OiBib29sZWFuIH0pOiB7XG4gICAgc2hhcmVkU3RhdGU6IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICAgIGV4ZWN1dGlvblRyZWU6IHVua25vd247XG4gICAgLyoqIFRoZSBjb21taXQgbG9nJ3MgZm9sZCBiYXNlIOKAlCBzZWUgYFJ1bnRpbWVTbmFwc2hvdC5pbml0aWFsU3RhdGVgLiAqL1xuICAgIGluaXRpYWxTdGF0ZT86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICAgIGNvbW1pdExvZzogdW5rbm93bltdO1xuICAgIHJlYWRvbmx5IGxvZ0FkZHJlc3M/OiBMb2dBZGRyZXNzO1xuICAgIC8qKiBEdWFsLWtleWVkIGJ5IHN1YmZsb3cgcGF0aCAobGFzdCBpdGVyYXRpb24pIEFORCBwZXItZXhlY3V0aW9uIG1vdW50IHJ1bnRpbWVTdGFnZUlkXG4gICAgICogIChlYWNoIGl0ZXJhdGlvbikg4oCUIHNlZSBSdW50aW1lU25hcHNob3Quc3ViZmxvd1Jlc3VsdHMgLyBzdWJmbG93LWNvbW1pdC12aXNpYmlsaXR5LiAqL1xuICAgIHN1YmZsb3dSZXN1bHRzPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gICAgcmVjb3JkZXJzPzogQXJyYXk8eyBpZDogc3RyaW5nOyBuYW1lOiBzdHJpbmc7IGRhdGE6IHVua25vd24gfT47XG4gIH07XG4gIHNldFJvb3RPYmplY3QocGF0aDogc3RyaW5nW10sIGtleTogc3RyaW5nLCB2YWx1ZTogdW5rbm93bik6IHZvaWQ7XG4gIGdldFBpcGVsaW5lcygpOiBzdHJpbmdbXTtcbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBFeGVjdXRpb24gRW52aXJvbm1lbnQg4oCUIHJlYWQtb25seSwgcHJvcGFnYXRlcyB0aHJvdWdoIG5lc3RlZCBleGVjdXRvcnNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vKipcbiAqIEV4ZWN1dGlvbkVudiDigJQgaW5mcmFzdHJ1Y3R1cmUgdmFsdWVzIHRoYXQgcHJvcGFnYXRlIHRocm91Z2ggbmVzdGVkIGV4ZWN1dG9ycy5cbiAqXG4gKiBMaWtlIGBwcm9jZXNzLmVudmAgZm9yIGZsb3djaGFydHM6IHJlYWQtb25seSwgaW5oZXJpdGVkIGJ5IGNoaWxkIGV4ZWN1dG9ycyxcbiAqIGluZnJhc3RydWN0dXJlLW9ubHkgKG5vdCBidXNpbmVzcyBsb2dpYykuXG4gKlxuICogTGl0bXVzIHRlc3Q6IENyZWF0ZWQgZXh0ZXJuYWwgdG8gdGhlIGZsb3djaGFydCArIHBhc3NlZCBpbiBmb3IgZXhlY3V0aW9uID0gZW52LlxuICogQnVzaW5lc3MgY29uZmlnIGZvciBhIHNwZWNpZmljIGZsb3djaGFydCA9IGFyZ3MgKGdldEFyZ3MoKSkuXG4gKlxuICogSW50ZW50aW9uYWxseSBhIGNsb3NlZCB0eXBlIOKAlCBub3QgZXh0ZW5zaWJsZSB0byBwcmV2ZW50IGNvdXBsaW5nIGJldHdlZW5cbiAqIHBhcmVudCBhbmQgY2hpbGQgZmxvd2NoYXJ0cy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFeGVjdXRpb25FbnYge1xuICAvKiogQWJvcnRTaWduYWwgZm9yIGNvb3BlcmF0aXZlIGNhbmNlbGxhdGlvbiBhY3Jvc3MgbmVzdGVkIGV4ZWN1dG9ycy4gKi9cbiAgcmVhZG9ubHkgc2lnbmFsPzogQWJvcnRTaWduYWw7XG4gIC8qKiBUaW1lb3V0IGJ1ZGdldCBpbiBtaWxsaXNlY29uZHMuICovXG4gIHJlYWRvbmx5IHRpbWVvdXRNcz86IG51bWJlcjtcbiAgLyoqIFRyYWNlIGlkZW50aWZpZXIgZm9yIGRpc3RyaWJ1dGVkIHRyYWNpbmcgLyBvYnNlcnZhYmlsaXR5LiAqL1xuICByZWFkb25seSB0cmFjZUlkPzogc3RyaW5nO1xufVxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIEhhbmRsZXIgRGVwZW5kZW5jaWVzIChESSBiYWcpIOKAlCB3YXMgUGlwZWxpbmVDb250ZXh0XG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLyoqXG4gKiBIYW5kbGVyRGVwcyDigJQgRGVwZW5kZW5jeSBpbmplY3Rpb24gYmFnIHBhc3NlZCB0byBhbGwgaGFuZGxlciBtb2R1bGVzLlxuICpcbiAqIFByb3ZpZGVzIHNoYXJlZCBzdGF0ZSAoc3RhZ2VNYXAsIHJ1bnRpbWUsIHNjb3BlRmFjdG9yeSwgZXRjLikgd2l0aG91dFxuICogaGFuZGxlcnMgbmVlZGluZyB0byBpbXBvcnQgdGhlIHRyYXZlcnNlciBkaXJlY3RseS4gQXZvaWRzIGNpcmN1bGFyIGRlcHMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSGFuZGxlckRlcHM8VE91dCA9IGFueSwgVFNjb3BlID0gYW55PiB7XG4gIHN0YWdlTWFwOiBNYXA8c3RyaW5nLCBTdGFnZUZ1bmN0aW9uPFRPdXQsIFRTY29wZT4+O1xuICByb290OiBTdGFnZU5vZGU8VE91dCwgVFNjb3BlPjtcbiAgZXhlY3V0aW9uUnVudGltZTogSUV4ZWN1dGlvblJ1bnRpbWU7XG4gIHNjb3BlRmFjdG9yeTogU2NvcGVGYWN0b3J5PFRTY29wZT47XG4gIHN1YmZsb3dzPzogUmVjb3JkPHN0cmluZywgeyByb290OiBTdGFnZU5vZGU8VE91dCwgVFNjb3BlPiB9PjtcbiAgdGhyb3R0bGluZ0Vycm9yQ2hlY2tlcj86IChlcnJvcjogdW5rbm93bikgPT4gYm9vbGVhbjtcbiAgc3RyZWFtSGFuZGxlcnM/OiBTdHJlYW1IYW5kbGVycztcbiAgc2NvcGVQcm90ZWN0aW9uTW9kZTogU2NvcGVQcm90ZWN0aW9uTW9kZTtcbiAgcmVhZE9ubHlDb250ZXh0PzogdW5rbm93bjtcbiAgLyoqIEV4ZWN1dGlvbiBlbnZpcm9ubWVudCDigJQgcHJvcGFnYXRlcyB0byBzdWJmbG93cyBhdXRvbWF0aWNhbGx5LiAqL1xuICBleGVjdXRpb25FbnY/OiBFeGVjdXRpb25FbnY7XG4gIG5hcnJhdGl2ZUdlbmVyYXRvcjogSUNvbnRyb2xGbG93TmFycmF0aXZlO1xuICBsb2dnZXI6IElMb2dnZXI7XG4gIHNpZ25hbD86IEFib3J0U2lnbmFsO1xuICAvKipcbiAgICogVGhlIHJlc3VtZSdzIG9uZS1zaG90IHJlLWVudHJ5IChNMikg4oCUIHNoYXJlZCBieSByZWZlcmVuY2Ugd2l0aCBldmVyeVxuICAgKiBuZXN0ZWQgdHJhdmVyc2VyLCBsaWtlIHRoZSBleGVjdXRpb24gY291bnRlci4gYFN1YmZsb3dFeGVjdXRvcmAgYXNrcyBpdFxuICAgKiBhdCBlYWNoIHN1YmZsb3cgZW50cnk6IHRoZSBGSVJTVCBlbnRyeSBpbnRvIGEgc3ViZmxvdyBvbiB0aGUgcGF1c2UgcGF0aFxuICAgKiB0YWtlcyB0aGF0IHN1YmZsb3cncyBjYXB0dXJlZCBzdGF0ZSAoc2VlZGluZyB0aGUgbmVzdGVkIHJ1bnRpbWUgaW4gcGxhY2VcbiAgICogb2YgdGhlIGlucHV0TWFwcGVyJ3MgdmFsdWVzIOKAlCB0aGUgbWFwcGVyIHN0aWxsIHJ1bnMgZm9yIHRoZSByZWFkLW9ubHlcbiAgICogYXJncyksIGl0cyBlbnRyeSBwb2ludCBhbmQgYW55IHNpYmxpbmcgcGF1c2VzIHdhaXRpbmcgdGhlcmU7IGV2ZXJ5IGxhdGVyXG4gICAqIGVudHJ5IGlzIGFuIG9yZGluYXJ5IG9uZS4gU2VlIGBSZXN1bWVFbnRyeWAuIFVuZGVmaW5lZCBvbiBub3JtYWwgYHJ1bigpYFxuICAgKiBwYXRocy5cbiAgICovXG4gIHJlc3VtZT86IFJlc3VtZUVudHJ5PFRPdXQsIFRTY29wZT47XG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBzaW5jZSA5LjI4LjAg4oCUIHRoZSBlbmdpbmUgcGxhbnMgYSByZXN1bWUgd2l0aCB7QGxpbmsgcmVzdW1lfS5cbiAgICogU3RpbGwgaG9ub3VyZWQsIHVuZGVyIHRoZSBzYW1lIG9uZS1zaG90IGxhdzogZWFjaCBjYXB0dXJlIChrZXllZCBieVxuICAgKiBwYXRoLXByZWZpeGVkIGBzdWJmbG93SWRgKSBzZWVkcyBvbmx5IHRoZSBGSVJTVCBlbnRyeSBpbnRvIGl0cyBzdWJmbG93LFxuICAgKiBpbiBwbGFjZSBvZiB0aGUgaW5wdXRNYXBwZXIncyB2YWx1ZXM7IGxhdGVyIGVudHJpZXMgYXJlIG9yZGluYXJ5LlxuICAgKiBJZ25vcmVkIHdoZW4gYHJlc3VtZWAgaXMgc2V0LlxuICAgKi9cbiAgc3ViZmxvd1N0YXRlc0ZvclJlc3VtZT86IFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIHVua25vd24+Pjtcbn1cblxuLyoqIE9wdGlvbnMgZm9yIEZsb3dDaGFydEV4ZWN1dG9yLnJ1bigpLiAqL1xuZXhwb3J0IGludGVyZmFjZSBSdW5PcHRpb25zIHtcbiAgLyoqIEFib3J0U2lnbmFsIGZvciBjb29wZXJhdGl2ZSBjYW5jZWxsYXRpb24uICovXG4gIHNpZ25hbD86IEFib3J0U2lnbmFsO1xuICAvKiogVGltZW91dCBpbiBtaWxsaXNlY29uZHMuIENyZWF0ZXMgYW4gaW50ZXJuYWwgQWJvcnRDb250cm9sbGVyLiAqL1xuICB0aW1lb3V0TXM/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBSdW50aW1lIGlucHV0IGRhdGEgZm9yIHRoZSBwaXBlbGluZS5cbiAgICogQmVjb21lcyB0aGUgcmVhZE9ubHlDb250ZXh0IGFjY2Vzc2libGUgdmlhIGBzY29wZS5nZXRBcmdzKClgLlxuICAgKiBTdGFnZXMgY2Fubm90IG92ZXJ3cml0ZSB0aGVzZSBrZXlzIHdpdGggYHNldFZhbHVlKClgLlxuICAgKi9cbiAgaW5wdXQ/OiB1bmtub3duO1xuICAvKipcbiAgICogRXhlY3V0aW9uIGVudmlyb25tZW50IOKAlCByZWFkLW9ubHkgaW5mcmFzdHJ1Y3R1cmUgdmFsdWVzIHRoYXQgcHJvcGFnYXRlXG4gICAqIHRocm91Z2ggbmVzdGVkIGV4ZWN1dG9ycyAobGlrZSBgcHJvY2Vzcy5lbnZgIGZvciBmbG93Y2hhcnRzKS5cbiAgICogQWNjZXNzaWJsZSB2aWEgYHNjb3BlLmdldEVudigpYC4gSW5oZXJpdGVkIGJ5IHN1YmZsb3dzIGF1dG9tYXRpY2FsbHkuXG4gICAqL1xuICBlbnY/OiBFeGVjdXRpb25FbnY7XG4gIC8qKlxuICAgKiBPdmVycmlkZSB0aGUgbWF4aW11bSBuZXN0ZWQgYGV4ZWN1dGVOb2RlYCBkZXB0aCBmb3IgdGhpcyBydW4uXG4gICAqIERlZmF1bHRzIHRvIGBGbG93Y2hhcnRUcmF2ZXJzZXIuTUFYX0VYRUNVVEVfREVQVEhgICg1MDApLlxuICAgKlxuICAgKiBEZXB0aCBjb3VudHMgVFJFRSBuZXN0aW5nIG9ubHkg4oCUIGZvcmsgY2hpbGRyZW4sIGRlY2lkZXIvc2VsZWN0b3IgYnJhbmNoXG4gICAqIGRpc3BhdGNoLCByZWN1cnNpdmUgY29tcG9zaXRpb24uIExpbmVhciBjaGFpbnMgYW5kIGxvb3AgaXRlcmF0aW9ucyBydW5cbiAgICogb24gYSBmbGF0IHRyYW1wb2xpbmUgYW5kIG5ldmVyIGNvbnN1bWUgZGVwdGgsIHNvIHRoaXMgcmFyZWx5IG5lZWRzXG4gICAqIHJhaXNpbmcuIE11c3QgYmUgPj0gMS5cbiAgICovXG4gIG1heERlcHRoPzogbnVtYmVyO1xuICAvKipcbiAgICogT3ZlcnJpZGUgdGhlIG1heGltdW0gbG9vcCBpdGVyYXRpb25zIHBlciBub2RlIGZvciB0aGlzIHJ1biAodGhlXG4gICAqIGBDb250aW51YXRpb25SZXNvbHZlcmAgaW5maW5pdGUtbG9vcCBndWFyZCkuIERlZmF1bHRzIHRvIDEwMDAuXG4gICAqIFRoaXMgaXMgdGhlIGJpbmRpbmcgY29uc3RyYWludCBmb3IgbG9vcC1oZWF2eSBwaXBlbGluZXMg4oCUIHJhaXNlIGl0IGZvclxuICAgKiBsZWdpdGltYXRlbHkgbG9uZyBsb29wcyAoYGxvb3BUb2AgY2hhaW5zIHJ1biB3aXRoIGEgZmxhdCBzdGFjaywgc28gaGlnaFxuICAgKiB2YWx1ZXMgYXJlIHNhZmU7IG1lbW9yeSBmb3Igc3RhdGUvbmFycmF0aXZlIHN0aWxsIGdyb3dzIHBlciBpdGVyYXRpb24pLlxuICAgKiBBbHNvIGJvdW5kcyB0aGUgcnVuLXRvdGFsIGNoYWluIG9mIGZ1bmN0aW9uLWJlYXJpbmcgZHluYW1pYyBgbmV4dGBcbiAgICogY29udGludWF0aW9ucyAoZnJlc2ggbm9kZXMgcmV0dXJuZWQgZnJvbSBzdGFnZXMpIOKAlCBhIHJ1bmF3YXkgZHluYW1pY1xuICAgKiBjaGFpbiBlcnJvcnMgaW5zdGVhZCBvZiBydW5uaW5nIGZvcmV2ZXIuXG4gICAqIFByb3BhZ2F0ZXMgdG8gc3ViZmxvd3MuIE11c3QgYmUgPj0gMS5cbiAgICovXG4gIG1heEl0ZXJhdGlvbnM/OiBudW1iZXI7XG59XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gRmxvdyBDb250cm9sIE5hcnJhdGl2ZSDigJQgY2Fub25pY2FsIGRlZmluaXRpb25zIGxpdmUgaW4gbWVtb3J5L3R5cGVzLnRzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuZXhwb3J0IHR5cGUgeyBGbG93Q29udHJvbFR5cGUsIEZsb3dNZXNzYWdlIH07XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gUnVudGltZSBTdHJ1Y3R1cmUgTWV0YWRhdGEgKHVzZWQgYnkgUnVudGltZVN0cnVjdHVyZU1hbmFnZXIpXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuZXhwb3J0IGludGVyZmFjZSBSdW50aW1lU3RydWN0dXJlTWV0YWRhdGEge1xuICB0eXBlOiAnc3RhZ2UnIHwgJ2RlY2lkZXInIHwgJ3NlbGVjdG9yJyB8ICdmb3JrJyB8ICdzdHJlYW1pbmcnIHwgJ3N1YmZsb3cnIHwgJ2xvb3AnO1xuICBzdWJmbG93SWQ/OiBzdHJpbmc7XG4gIGlzU3ViZmxvd1Jvb3Q/OiBib29sZWFuO1xuICBzdWJmbG93TmFtZT86IHN0cmluZztcbiAgLyoqIFRydWUgZm9yIGFuIGBhZGRQYXJhbGxlbEZvckVhY2hgIGZhbi1vdXQgKHR5cGUgc3RheXMgYCdmb3JrJ2ApLiAqL1xuICBpc0R5bmFtaWNQYXJhbGxlbD86IGJvb2xlYW47XG4gIGlzUGFyYWxsZWxDaGlsZD86IGJvb2xlYW47XG4gIHBhcmFsbGVsR3JvdXBJZD86IHN0cmluZztcbiAgbG9vcFRhcmdldD86IHN0cmluZztcbiAgaXNEeW5hbWljPzogYm9vbGVhbjtcbiAgaXNMb29wUmVmZXJlbmNlPzogYm9vbGVhbjtcbiAgc3RyZWFtSWQ/OiBzdHJpbmc7XG59XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gTm9kZSBSZXN1bHRcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5leHBvcnQgdHlwZSBOb2RlUmVzdWx0VHlwZSA9IHtcbiAgaWQ6IHN0cmluZztcbiAgcmVzdWx0OiB1bmtub3duO1xuICBpc0Vycm9yPzogYm9vbGVhbjtcbn07XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gRXhlY3V0aW9uIFJlc3BvbnNlXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuZXhwb3J0IHR5cGUgQnJhbmNoUmVzdWx0ID0ge1xuICByZXN1bHQ6IHN0cmluZyB8IEVycm9yO1xuICBpc0Vycm9yOiBib29sZWFuO1xufTtcblxuZXhwb3J0IHR5cGUgQnJhbmNoUmVzdWx0cyA9IHsgW2JyYW5jaElkOiBzdHJpbmddOiBCcmFuY2hSZXN1bHQgfTtcbmV4cG9ydCB0eXBlIFRyYXZlcnNhbFJlc3VsdCA9IEJyYW5jaFJlc3VsdHMgfCBzdHJpbmcgfCBFcnJvcjtcblxuLyoqIFJldHVybmVkIGJ5IHJ1bigpL3Jlc3VtZSgpIHdoZW4gZXhlY3V0aW9uIHBhdXNlcy4gKi9cbmV4cG9ydCB0eXBlIFBhdXNlZFJlc3VsdCA9IHtcbiAgcmVhZG9ubHkgcGF1c2VkOiB0cnVlO1xuICByZWFkb25seSBjaGVja3BvaW50OiBpbXBvcnQoJy4uL3BhdXNlL3R5cGVzLmpzJykuRmxvd2NoYXJ0Q2hlY2twb2ludDtcbn07XG5cbi8qKiBGdWxsIHJldHVybiB0eXBlIG9mIEZsb3dDaGFydEV4ZWN1dG9yLnJ1bigpIGFuZCByZXN1bWUoKS4gKi9cbmV4cG9ydCB0eXBlIEV4ZWN1dG9yUmVzdWx0ID0gVHJhdmVyc2FsUmVzdWx0IHwgUGF1c2VkUmVzdWx0O1xuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFNlcmlhbGl6ZWQgUGlwZWxpbmUgU3RydWN0dXJlIChmb3IgdmlzdWFsaXphdGlvbilcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5leHBvcnQgaW50ZXJmYWNlIFNlcmlhbGl6ZWRQaXBlbGluZU5vZGUge1xuICBuYW1lOiBzdHJpbmc7XG4gIGlkOiBzdHJpbmc7XG4gIHR5cGU/OlxuICAgIHwgJ3N0YWdlJ1xuICAgIHwgJ2RlY2lkZXInXG4gICAgfCAnc2VsZWN0b3InXG4gICAgfCAnZm9yaydcbiAgICB8ICdzdHJlYW1pbmcnXG4gICAgfCAnc3ViZmxvdydcbiAgICB8ICdsb29wJ1xuICAgIHwgJ3VzZXInXG4gICAgfCAndG9vbCdcbiAgICB8ICdmdW5jdGlvbidcbiAgICB8ICdzZXF1ZW5jZSc7XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICBjaGlsZHJlbj86IFNlcmlhbGl6ZWRQaXBlbGluZU5vZGVbXTtcbiAgbmV4dD86IFNlcmlhbGl6ZWRQaXBlbGluZU5vZGU7XG4gIGJyYW5jaGVzPzogUmVjb3JkPHN0cmluZywgU2VyaWFsaXplZFBpcGVsaW5lTm9kZT47XG4gIGhhc0RlY2lkZXI/OiBib29sZWFuO1xuICBoYXNTZWxlY3Rvcj86IGJvb2xlYW47XG4gIGhhc1N1YnRyZWU/OiBib29sZWFuO1xuICBpc1N0cmVhbWluZz86IGJvb2xlYW47XG4gIHN0cmVhbUlkPzogc3RyaW5nO1xuICBpc1N1YmZsb3dSb290PzogYm9vbGVhbjtcbiAgc3ViZmxvd0lkPzogc3RyaW5nO1xuICBzdWJmbG93TmFtZT86IHN0cmluZztcbiAgbG9vcFRhcmdldD86IHN0cmluZztcbiAgaXNMb29wUmVmZXJlbmNlPzogYm9vbGVhbjtcbiAgaXNQYXJhbGxlbENoaWxkPzogYm9vbGVhbjtcbiAgcGFyYWxsZWxHcm91cElkPzogc3RyaW5nO1xuICBpc0R5bmFtaWM/OiBib29sZWFuO1xuICAvKiogV2hlbiB0cnVlLCB0aGlzIHN0YWdlIGNhbiBwYXVzZSBleGVjdXRpb24gKFBhdXNhYmxlSGFuZGxlciBwYXR0ZXJuKS4gKi9cbiAgaXNQYXVzYWJsZT86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBUcnVlIGZvciBhbiBgYWRkUGFyYWxsZWxGb3JFYWNoYCBmYW4tb3V0IOKAlCBicmFuY2ggQ09VTlQgZGVjaWRlZCBhdCBydW50aW1lXG4gICAqIGZyb20gdGhlIHBheWxvYWQuIEEgZmxhZywgbm90IGEgdHlwZTogYHR5cGVgIHN0YXlzIGAnZm9yaydgIHNvIGV2ZXJ5XG4gICAqIGV4aXN0aW5nIGNvbnN1bWVyIHJlbmRlcnMgaXQgY29ycmVjdGx5IChpdCBJUyBhIGZhbi1vdXQpLCBhbmQgYSBjb25zdW1lclxuICAgKiB0aGF0IHdhbnRzIHRvIHNheSBcIm9uZSBicmFuY2ggcGVyIGl0ZW1cIiBjYW4gcmVhZCB0aGlzLlxuICAgKi9cbiAgaXNEeW5hbWljUGFyYWxsZWw/OiBib29sZWFuO1xuICAvKipcbiAgICogVG90YWwgYXR0ZW1wdHMgdGhpcyBzdGFnZSdzIGZ1bmN0aW9uIG1heSBydW4sIGZyb20gaXRzIGRlY2xhcmVkXG4gICAqIHtAbGluayBSZXRyeVBvbGljeX0uIFByZXNlbnQgb25seSB3aGVuIGEgcG9saWN5IHdhcyBkZWNsYXJlZC4gVGhlIENPVU5UXG4gICAqIG9ubHkg4oCUIGBiYWNrb2ZmTXNgIGFuZCBgcmV0cnlPbmAgY2FuIGJlIGZ1bmN0aW9ucywgd2hpY2ggYSBKU09OLXNhZmUgc3BlY1xuICAgKiBjYW5ub3QgY2FycnkuXG4gICAqL1xuICByZXRyeUF0dGVtcHRzPzogbnVtYmVyO1xuICAvKipcbiAgICogRGVjbGFyZWQgdGFncyAoOS4yMS4wKSDigJQgdGhlIG5hbWVzIHRoZSBhdXRob3IgcHV0IG9uIHRoaXMgc3RhZ2UgYXQgYnVpbGRcbiAgICogdGltZSwgY29waWVkIGFzLWlzLiBGcmVlIHN0cmluZ3M7IGZvb3RwcmludGpzIGFzc2lnbnMgdGhlbSBubyBtZWFuaW5nLlxuICAgKiBBYnNlbnQgd2hlbiB0aGUgc3RhZ2UgZGVjbGFyZXMgbm9uZS5cbiAgICovXG4gIHRhZ3M/OiByZWFkb25seSBzdHJpbmdbXTtcbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBGbG93Q2hhcnQgaXMgZGVmaW5lZCBpbiBgLi4vYnVpbGRlci90eXBlcy50c2AuIFRoZSBlbmdpbmUgbGF5ZXIgY29uc3VtZXMgaXRcbi8vIHZpYSBpbXBvcnQgZnJvbSB0aGVyZS4gQSBkdXBsaWNhdGUgbWluaW1hbCBkZWZpbml0aW9uIHByZXZpb3VzbHkgbGl2ZWQgaGVyZVxuLy8gYW5kIGNhdXNlZCBUUyBjb25mdXNpb24gYXQgY29tcG9zaXRpb24gYm91bmRhcmllcyAoQ29tcG9zYWJsZVJ1bm5lciB2c1xuLy8gYWRkU3ViRmxvd0NoYXJ0IHBhcmFtZXRlcikuIFNpbmdsZSBzb3VyY2Ugb2YgdHJ1dGggbm93IGxpdmVzIGluIGJ1aWxkZXIvLlxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8qKiBBbGlhcyBmb3IgU2VyaWFsaXplZFBpcGVsaW5lTm9kZSB1c2VkIGFzIGZ1bGwgc3RydWN0dXJlICovXG5leHBvcnQgdHlwZSBTZXJpYWxpemVkUGlwZWxpbmVTdHJ1Y3R1cmUgPSBTZXJpYWxpemVkUGlwZWxpbmVOb2RlICYge1xuICBicmFuY2hJZHM/OiBzdHJpbmdbXTtcbiAgc3ViZmxvd1N0cnVjdHVyZT86IFNlcmlhbGl6ZWRQaXBlbGluZVN0cnVjdHVyZTtcbiAgaXRlcmF0aW9uQ291bnQ/OiBudW1iZXI7XG59O1xuIl19
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2VuZ2luZS90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7O0dBS0c7OztBQWlCSCw4Q0FBOEU7QUFBckUseUdBQUEsYUFBYSxPQUFBO0FBQUUseUdBQUEsYUFBYSxPQUFBO0FBQUUsdUdBQUEsV0FBVyxPQUFBO0FBZWxELG9DQUFvQztBQUNwQyx3REFBd0Q7QUFDM0MsUUFBQSxhQUFhLEdBQVk7SUFDcEMsSUFBSSxFQUFFLENBQUMsT0FBYSxFQUFFLEdBQUcsSUFBVyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQztJQUN2RSxHQUFHLEVBQUUsQ0FBQyxPQUFhLEVBQUUsR0FBRyxJQUFXLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDO0lBQ3JFLEtBQUssRUFBRSxDQUFDLE9BQWEsRUFBRSxHQUFHLElBQVcsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUM7SUFDekUsS0FBSyxFQUFFLENBQUMsT0FBYSxFQUFFLEdBQUcsSUFBVyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQztJQUN6RSxJQUFJLEVBQUUsQ0FBQyxPQUFhLEVBQUUsR0FBRyxJQUFXLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDO0NBQ3hFLENBQUM7QUF1S0YsOEVBQThFO0FBQzlFLFVBQVU7QUFDViw4RUFBOEU7QUFFOUU7O0dBRUc7QUFDSCxJQUFZLGNBS1g7QUFMRCxXQUFZLGNBQWM7SUFDeEIsd0ZBQXdGO0lBQ3hGLG1DQUFpQixDQUFBO0lBQ2pCLHlFQUF5RTtJQUN6RSxxQ0FBbUIsQ0FBQTtBQUNyQixDQUFDLEVBTFcsY0FBYyw4QkFBZCxjQUFjLFFBS3pCIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiB0eXBlcy50cyDigJQgQWxsIHR5cGUgZGVmaW5pdGlvbnMgZm9yIHRoZSBlbmdpbmUgbGlicmFyeS5cbiAqXG4gKiBDZW50cmFsaXplcyB0eXBlIGRlZmluaXRpb25zIHRvIGF2b2lkIGNpcmN1bGFyIGRlcGVuZGVuY2llcy5cbiAqIEV2ZXJ5IGhhbmRsZXIgcmVjZWl2ZXMgSGFuZGxlckRlcHMgKHRoZSBESSBiYWcpIGluc3RlYWQgb2YgaW1wb3J0aW5nIHRoZSB0cmF2ZXJzZXIuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBMb2dBZGRyZXNzIH0gZnJvbSAnZm9vdHRyYWNlJztcbmltcG9ydCB0eXBlIHsgU2hhcmVkTWVtb3J5IH0gZnJvbSAnZm9vdHRyYWNlL3dyaXRlJztcblxuaW1wb3J0IHR5cGUgeyBGbG93Q29udHJvbFR5cGUsIEZsb3dNZXNzYWdlIH0gZnJvbSAnLi4vbWVtb3J5L2ZyYW1lVHlwZXMuanMnO1xuaW1wb3J0IHR5cGUgeyBTdGFnZUNvbnRleHQgfSBmcm9tICcuLi9tZW1vcnkvU3RhZ2VDb250ZXh0LmpzJztcbmltcG9ydCB0eXBlIHsgU2NvcGVQcm90ZWN0aW9uTW9kZSB9IGZyb20gJy4uL3Njb3BlL3Byb3RlY3Rpb24vdHlwZXMuanMnO1xuaW1wb3J0IHR5cGUgeyBEZWNpZGVyLCBTZWxlY3RvciwgU3RhZ2VOb2RlIH0gZnJvbSAnLi9ncmFwaC9TdGFnZU5vZGUuanMnO1xuaW1wb3J0IHR5cGUgeyBRdWV1ZWRQYXVzZSwgUmVzdW1lRW50cnkgfSBmcm9tICcuL2hhbmRsZXJzL1Jlc3VtZUVudHJ5LmpzJztcbmltcG9ydCB0eXBlIHsgSUNvbnRyb2xGbG93TmFycmF0aXZlIH0gZnJvbSAnLi9uYXJyYXRpdmUvdHlwZXMuanMnO1xuXG4vLyBSZS1leHBvcnQgU3RhZ2VOb2RlIHR5cGVzIGZvciBjb252ZW5pZW5jZVxuZXhwb3J0IHR5cGUgeyBEZWNpZGVyLCBTZWxlY3RvciwgU3RhZ2VOb2RlIH0gZnJvbSAnLi9ncmFwaC9TdGFnZU5vZGUuanMnO1xuXG4vLyBSZS1leHBvcnQgcGF1c2UgdHlwZXMgZnJvbSBwYXVzZS8gbGlicmFyeVxuZXhwb3J0IHR5cGUgeyBGbG93Y2hhcnRDaGVja3BvaW50LCBQYXVzYWJsZUhhbmRsZXIsIFBhdXNlUmVzdWx0IH0gZnJvbSAnLi4vcGF1c2UvaW5kZXguanMnO1xuZXhwb3J0IHsgaXNQYXVzZVJlc3VsdCwgaXNQYXVzZVNpZ25hbCwgUGF1c2VTaWduYWwgfSBmcm9tICcuLi9wYXVzZS9pbmRleC5qcyc7XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gTG9nZ2VyXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLyoqIE1pbmltYWwgbG9nZ2luZyBjb250cmFjdC4gTWlycm9ycyBDb25zb2xlIEFQSSBzdWJzZXQuICovXG5leHBvcnQgaW50ZXJmYWNlIElMb2dnZXIge1xuICBpbmZvKG1lc3NhZ2U/OiBhbnksIC4uLm9wdGlvbmFsUGFyYW1zOiBhbnlbXSk6IHZvaWQ7XG4gIGxvZyhtZXNzYWdlPzogYW55LCAuLi5vcHRpb25hbFBhcmFtczogYW55W10pOiB2b2lkO1xuICBkZWJ1ZyhtZXNzYWdlPzogYW55LCAuLi5vcHRpb25hbFBhcmFtczogYW55W10pOiB2b2lkO1xuICBlcnJvcihtZXNzYWdlPzogYW55LCAuLi5vcHRpb25hbFBhcmFtczogYW55W10pOiB2b2lkO1xuICB3YXJuKG1lc3NhZ2U/OiBhbnksIC4uLm9wdGlvbmFsUGFyYW1zOiBhbnlbXSk6IHZvaWQ7XG59XG5cbi8qKiBEZWZhdWx0IGNvbnNvbGUtYmFzZWQgbG9nZ2VyLiAqL1xuLyogaXN0YW5idWwgaWdub3JlIG5leHQgLS0gdHJpdmlhbCBjb25zb2xlIGRlbGVnYXRpb24gKi9cbmV4cG9ydCBjb25zdCBkZWZhdWx0TG9nZ2VyOiBJTG9nZ2VyID0ge1xuICBpbmZvOiAobWVzc2FnZT86IGFueSwgLi4uYXJnczogYW55W10pID0+IGNvbnNvbGUuaW5mbyhtZXNzYWdlLCAuLi5hcmdzKSxcbiAgbG9nOiAobWVzc2FnZT86IGFueSwgLi4uYXJnczogYW55W10pID0+IGNvbnNvbGUubG9nKG1lc3NhZ2UsIC4uLmFyZ3MpLFxuICBkZWJ1ZzogKG1lc3NhZ2U/OiBhbnksIC4uLmFyZ3M6IGFueVtdKSA9PiBjb25zb2xlLmRlYnVnKG1lc3NhZ2UsIC4uLmFyZ3MpLFxuICBlcnJvcjogKG1lc3NhZ2U/OiBhbnksIC4uLmFyZ3M6IGFueVtdKSA9PiBjb25zb2xlLmVycm9yKG1lc3NhZ2UsIC4uLmFyZ3MpLFxuICB3YXJuOiAobWVzc2FnZT86IGFueSwgLi4uYXJnczogYW55W10pID0+IGNvbnNvbGUud2FybihtZXNzYWdlLCAuLi5hcmdzKSxcbn07XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gU3RhZ2UgRnVuY3Rpb25cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vKiogQ2FsbGJhY2sgdGhhdCByZWNlaXZlcyB0b2tlbnMgZHVyaW5nIHN0cmVhbWluZy4gKi9cbmV4cG9ydCB0eXBlIFN0cmVhbUNhbGxiYWNrID0gKHRva2VuOiBzdHJpbmcpID0+IHZvaWQ7XG5cbi8qKlxuICogVGhlIGZ1bmN0aW9uIHNpZ25hdHVyZSBmb3Igc3RhZ2UgaGFuZGxlcnMuXG4gKiAtIFRPdXQ6IHJldHVybiB0eXBlIHByb2R1Y2VkIGJ5IHRoZSBzdGFnZVxuICogLSBUU2NvcGU6IHRoZSBzY29wZSBvYmplY3QgcGFzc2VkIHRvIHRoZSBzdGFnZVxuICogLSBPcHRpb25hbCAzcmQgcGFyYW1ldGVyIGBzdHJlYW1DYWxsYmFja2AgaW5qZWN0ZWQgZm9yIHN0cmVhbWluZyBzdGFnZXMuXG4gKi9cbmV4cG9ydCB0eXBlIFN0YWdlRnVuY3Rpb248VE91dCA9IGFueSwgVFNjb3BlID0gYW55PiA9IChcbiAgc2NvcGU6IFRTY29wZSxcbiAgYnJlYWtQaXBlbGluZTogKCkgPT4gdm9pZCxcbiAgc3RyZWFtQ2FsbGJhY2s/OiBTdHJlYW1DYWxsYmFjayxcbikgPT4gUHJvbWlzZTxUT3V0IHwgdm9pZD4gfCBUT3V0IHwgdm9pZDtcblxuLyoqXG4gKiBTdGFnZSBmdW5jdGlvbiBmb3IgcGF1c2FibGUgc3RhZ2VzIOKAlCByZXR1cm4gdmFsdWUgaXMgdGhlIHBhdXNlIGRhdGEgKGFueSB0eXBlKS5cbiAqIFJldHVybiBub24tdm9pZCB0byBwYXVzZSwgcmV0dXJuIHZvaWQgdG8gY29udGludWUgbm9ybWFsbHkuXG4gKi9cbmV4cG9ydCB0eXBlIFBhdXNhYmxlU3RhZ2VGdW5jdGlvbjxUU2NvcGUgPSBhbnk+ID0gKFxuICBzY29wZTogVFNjb3BlLFxuICBicmVha1BpcGVsaW5lOiAoKSA9PiB2b2lkLFxuKSA9PiBQcm9taXNlPHVua25vd24+IHwgdW5rbm93bjtcblxuLyoqIEZhY3RvcnkgdGhhdCBjcmVhdGVzIGEgc2NvcGUgaW5zdGFuY2UgZm9yIGVhY2ggc3RhZ2UuICovXG5leHBvcnQgdHlwZSBTY29wZUZhY3Rvcnk8VFNjb3BlID0gYW55PiA9IChcbiAgY29udGV4dDogU3RhZ2VDb250ZXh0LFxuICBzdGFnZU5hbWU6IHN0cmluZyxcbiAgcmVhZE9ubHlDb250ZXh0PzogdW5rbm93bixcbiAgZXhlY3V0aW9uRW52PzogRXhlY3V0aW9uRW52LFxuKSA9PiBUU2NvcGU7XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gU3RyZWFtaW5nXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuZXhwb3J0IHR5cGUgU3RyZWFtVG9rZW5IYW5kbGVyID0gKHN0cmVhbUlkOiBzdHJpbmcsIHRva2VuOiBzdHJpbmcpID0+IHZvaWQ7XG5leHBvcnQgdHlwZSBTdHJlYW1MaWZlY3ljbGVIYW5kbGVyID0gKHN0cmVhbUlkOiBzdHJpbmcsIGZ1bGxUZXh0Pzogc3RyaW5nKSA9PiB2b2lkO1xuXG5leHBvcnQgaW50ZXJmYWNlIFN0cmVhbUhhbmRsZXJzIHtcbiAgb25Ub2tlbj86IFN0cmVhbVRva2VuSGFuZGxlcjtcbiAgb25TdGFydD86IFN0cmVhbUxpZmVjeWNsZUhhbmRsZXI7XG4gIG9uRW5kPzogU3RyZWFtTGlmZWN5Y2xlSGFuZGxlcjtcbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBQYXJhbGxlbC1mb3ItZWFjaCAoZHluYW1pYyBmYW4tb3V0KVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8qKlxuICogQSBidWlsdCBjaGFydCwgYXMgYGFkZFBhcmFsbGVsRm9yRWFjaGAncyBgYnJhbmNoYCBmYWN0b3J5IHJldHVybnMgaXQuXG4gKlxuICogU3RydWN0dXJhbGx5IHRoZSBzdWJzZXQgb2YgYEZsb3dDaGFydGAgdGhlIGVuZ2luZSBuZWVkcyB0byBtb3VudCBhIGJyYW5jaCDigJRcbiAqIGRlY2xhcmVkIGhlcmUgcmF0aGVyIHRoYW4gaW1wb3J0ZWQgc28gYGVuZ2luZS9gIGtlZXBzIGl0cyBvbmUtd2F5IGRlcGVuZGVuY3lcbiAqIG9uIGBidWlsZGVyL2AuIEFueSBgZmxvd0NoYXJ0KC4uLikuYnVpbGQoKWAgcmVzdWx0IHNhdGlzZmllcyBpdC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBCcmFuY2hDaGFydDxUT3V0ID0gYW55LCBUU2NvcGUgPSBhbnk+IHtcbiAgcm9vdDogU3RhZ2VOb2RlPFRPdXQsIFRTY29wZT47XG4gIHN0YWdlTWFwOiBNYXA8c3RyaW5nLCBTdGFnZUZ1bmN0aW9uPFRPdXQsIFRTY29wZT4+O1xuICBzdWJmbG93cz86IFJlY29yZDxzdHJpbmcsIHsgcm9vdDogU3RhZ2VOb2RlPFRPdXQsIFRTY29wZT4gfT47XG4gIGJ1aWxkVGltZVN0cnVjdHVyZT86IHVua25vd247XG59XG5cbi8qKlxuICogUnVudGltZSBmYW4tb3V0IGNvbmZpZyDigJQgb25lIGJyYW5jaCBwZXIgaXRlbSwgYnJhbmNoIENPVU5UIGRlY2lkZWQgYXRcbiAqIHJ1bnRpbWUgZnJvbSB0aGUgcGF5bG9hZC4gRGVzaWduOiBkb2NzL2Rlc2lnbi9leGVjdXRpb24tY29udHJvbC5tZCAoRDIpLlxuICpcbiAqIEVhY2ggYnJhbmNoIHJ1bnMgYXMgYSBnZW5lcmF0ZWQgU1VCRkxPVyAoaXNvbGF0ZWQgcnVudGltZSwgb3duIGNvbW1pdCBsb2csXG4gKiBhZGRyZXNzYWJsZSBhdCBgPHN0YWdlSWQ+fjxpbmRleD5gIGluIGV2ZXJ5IHRyYWNlIHF1ZXJ5KSwgd2hpY2ggaXMgd2hhdFxuICogbWFrZXMgYnJhbmNoZXMgdW5hYmxlIHRvIGNvcnJ1cHQgZWFjaCBvdGhlcidzIGluLWZsaWdodCBzdGF0ZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQYXJhbGxlbEZvckVhY2hDb25maWc8VEl0ZW0gPSBhbnksIFRTY29wZSA9IGFueT4ge1xuICAvKipcbiAgICogUGlja3MgdGhlIGl0ZW1zIHRvIGZhbiBvdXQgb3ZlciwgZnJvbSB0aGUgbGl2ZSBzY29wZS4gUmVhZHMgaGVyZSBhcmVcbiAgICogdHJhY2tlZCBsaWtlIGFueSBvdGhlciBzdGFnZSByZWFkLCBzbyB0aGUgZmFuLW91dCdzIG93biBpbnB1dHMgc2hvdyB1cCBpblxuICAgKiB0aGUgdHJhY2UgYW5kIGluIGEgYmFja3dhcmQgc2xpY2UuXG4gICAqL1xuICBpdGVtczogKHNjb3BlOiBUU2NvcGUpID0+IHJlYWRvbmx5IFRJdGVtW107XG4gIC8qKlxuICAgKiBCdWlsZHMgdGhlIGNoYXJ0IGZvciBPTkUgaXRlbS4gQ2FsbGVkIG9uY2UgcGVyIGV4ZWN1dGVkIGJyYW5jaCwgd2l0aCB0aGVcbiAgICogaXRlbSBhbmQgaXRzIGluZGV4IOKAlCBjbG9zZSBvdmVyIHRoZW0sIG9yIHJlYWQgdGhlIGBpdGVtYCAvIGBpbmRleGAgdmFsdWVzXG4gICAqIHNlZWRlZCBpbnRvIHRoZSBicmFuY2gncyBvd24gc2NvcGUuXG4gICAqL1xuICBicmFuY2g6IChpdGVtOiBUSXRlbSwgaW5kZXg6IG51bWJlcikgPT4gQnJhbmNoQ2hhcnQ7XG4gIC8qKlxuICAgKiBIYXJkIGNlaWxpbmcgb24gYnJhbmNoZXMgcGVyIGV4ZWN1dGlvbi4gUkVRVUlSRUQ6IGFuIHVuYm91bmRlZCBmYW4tb3V0XG4gICAqIGRyaXZlbiBieSBtb2RlbCBvdXRwdXQgaXMgYSByZXNvdXJjZSBhdHRhY2ssIHNvIHRoZXJlIGlzIG5vIGRlZmF1bHQgdG9cbiAgICogZm9yZ2V0LiBFeHRyYSBpdGVtcyBkbyBub3QgcnVuIOKAlCB0aGUgdHJ1bmNhdGlvbiBpcyByZWNvcmRlZCwgbmV2ZXIgc2lsZW50LlxuICAgKi9cbiAgbWF4QnJhbmNoZXM6IG51bWJlcjtcbiAgLyoqXG4gICAqIFN0YXRlIGtleSB0aGUgb3JkZXJlZCByZXN1bHRzIGFycmF5IGlzIHdyaXR0ZW4gdG8gb24gdGhlIHBhcmVudCBzY29wZS5cbiAgICogUkVRVUlSRUQg4oCUIGEga2V5IGRlcml2ZWQgZnJvbSB0aGUgc3RhZ2UgaWQgY291bGQgc2lsZW50bHkgb3ZlcndyaXRlIHN0YXRlXG4gICAqIHRoZSBjaGFydCBhbHJlYWR5IG93bnMuXG4gICAqL1xuICBpbnRvOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBGYW4tb3V0IGVycm9yIHBvbGljeSDigJQgdGhlIFNBTUUgcG9saWN5IHRoZSBleGlzdGluZyBwYXJhbGxlbCBmYW4tb3V0IHVzZXMuXG4gICAqIGB0cnVlYCA9IGBQcm9taXNlLmFsbGAgKHRoZSBmaXJzdCBmYWlsaW5nIGJyYW5jaCByZWplY3RzIHRoZSBzdGFnZSk7XG4gICAqIG9taXR0ZWQvZmFsc2UgPSBiZXN0LWVmZm9ydCBgUHJvbWlzZS5hbGxTZXR0bGVkYCAoZXZlcnkgYnJhbmNoIHJ1bnM7IGFcbiAgICogZmFpbGVkIGJyYW5jaCdzIHNsb3QgaW4gdGhlIHJlc3VsdHMgYXJyYXkgaXMgYHVuZGVmaW5lZGApLlxuICAgKi9cbiAgZmFpbEZhc3Q/OiBib29sZWFuO1xufVxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFJldHJ5IChwZXItc3RhZ2UgZGVjbGFyYXRpdmUgcG9saWN5KVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8qKlxuICogRGVjbGFyYXRpdmUgcGVyLXN0YWdlIHJldHJ5IHBvbGljeS5cbiAqXG4gKiBXSFkgdGhpcyBleGlzdHM6IGEgcmV0cnkgaGFuZC1yb2xsZWQgaW5zaWRlIGEgc3RhZ2UgZnVuY3Rpb24gaXMgaW52aXNpYmxlIHRvXG4gKiB0aGUgdHJhY2UuIFRoZSBzdGFnZSBzaG93cyBvbmUgZXhlY3V0aW9uLCB0aGUgY29tbWl0IGxvZyBzaG93cyBvbmUgYnVuZGxlLFxuICogYW5kIHRoZSB0d28gZmFpbGVkIGNhbGxzIHRoYXQgcHJlY2VkZWQgdGhlIHN1Y2Nlc3NmdWwgb25lIGxlZnQgbm8gbWFya1xuICogYW55d2hlcmUg4oCUIGFuIHVuZXhwbGFpbmVkIGJlaGF2aW91ciBpbiBhIGxpYnJhcnkgd2hvc2Ugd2hvbGUgdGhlc2lzIGlzIHRoYXRcbiAqIG5vdGhpbmcgaW52aXNpYmxlIGhhcHBlbnMuIERlY2xhcmVkIGhlcmUgaW5zdGVhZCwgZXZlcnkgYXR0ZW1wdCBpcyBwYXJ0IG9mXG4gKiB0aGUgcmVjb3JkOiBlYWNoIGZhaWxlZCBhdHRlbXB0IGZpcmVzIGBGbG93UmVjb3JkZXIub25TdGFnZVJldHJ5YCB3aXRoIHRoZVxuICogYXR0ZW1wdCBudW1iZXIsIHRoZSB3YWl0LCBhbmQgdGhlIHN0cnVjdHVyZWQgZXJyb3IuXG4gKlxuICogQSBQT0xJQ1ksIG5vdCBhIHN0YWdlIGtpbmQg4oCUIGByZXRyeWAgc2l0cyBvbiBhIG5vcm1hbCBzdGFnZSB0aGUgd2F5XG4gKiBgaXNQYXVzYWJsZWAgLyBgaXNTdHJlYW1pbmdgIGRvLiBUaGUgc2VyaWFsaXplZCBub2RlIGB0eXBlYCBpcyB1bmNoYW5nZWQgYW5kXG4gKiBldmVyeSBleGlzdGluZyBjb25zdW1lciBrZWVwcyByZW5kZXJpbmcgdGhlIHN0YWdlIGV4YWN0bHkgYXMgYmVmb3JlLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c1xuICogZmxvd0NoYXJ0PFN0YXRlPignRmV0Y2ggdXNlcicsIGZldGNoRm4sICdmZXRjaC11c2VyJylcbiAqICAgLnJldHJ5KHsgYXR0ZW1wdHM6IDMsIGJhY2tvZmZNczogKG4pID0+IDEwMCAqIDIgKiogKG4gLSAxKSB9KVxuICogYGBgXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmV0cnlQb2xpY3kge1xuICAvKipcbiAgICogSG93IG1hbnkgdGltZXMgdGhlIHN0YWdlIGZ1bmN0aW9uIG1heSBydW4gaW4gdG90YWwsIElOQ0xVRElORyB0aGUgZmlyc3RcbiAgICogcnVuLiBNdXN0IGJlIGFuIGludGVnZXIgPj0gMTsgYDFgIG1lYW5zIFwibm8gcmV0cnlcIiAoYSBkZWNsYXJlZCBuby1vcCxcbiAgICogYWNjZXB0ZWQgc28gYSBwb2xpY3kgY2FuIGJlIHN3aXRjaGVkIG9mZiB3aXRob3V0IGRlbGV0aW5nIGl0KS5cbiAgICovXG4gIGF0dGVtcHRzOiBudW1iZXI7XG4gIC8qKlxuICAgKiBIb3cgbG9uZyB0byB3YWl0IGJlZm9yZSB0aGUgTkVYVCBhdHRlbXB0LiBFaXRoZXIgYSBmaXhlZCBudW1iZXIgb2ZcbiAgICogbWlsbGlzZWNvbmRzLCBvciBhIGZ1bmN0aW9uIG9mIHRoZSBhdHRlbXB0IHRoYXQganVzdCBGQUlMRUQgKDEtYmFzZWQpXG4gICAqIHJldHVybmluZyBtaWxsaXNlY29uZHMg4oCUIGAobikgPT4gMTAwICogMiAqKiAobiAtIDEpYCBpcyBleHBvbmVudGlhbFxuICAgKiBiYWNrb2ZmLiBPbWl0dGVkIChvciBhIG5vbi1maW5pdGUgLyBuZWdhdGl2ZSByZXN1bHQpIG1lYW5zIG5vIHdhaXQuXG4gICAqXG4gICAqIFRoZSB3YWl0IGlzIGEgcGxhaW4gYXdhaXRlZCB0aW1lciB0aGF0IGlzIENBTkNFTExFRCBieSB0aGUgcnVuJ3NcbiAgICogYEFib3J0U2lnbmFsYC4gSXQgaXMgbm90IGEgcGF1c2U6IGEgY2hhcnQgY2Fubm90IGJlIGNoZWNrcG9pbnRlZCBpbiB0aGVcbiAgICogbWlkZGxlIG9mIGEgYmFja29mZi5cbiAgICovXG4gIGJhY2tvZmZNcz86IG51bWJlciB8ICgoYXR0ZW1wdDogbnVtYmVyKSA9PiBudW1iZXIpO1xuICAvKipcbiAgICogSXMgVEhJUyBlcnJvciB3b3J0aCBhbm90aGVyIGF0dGVtcHQ/IERlZmF1bHRzIHRvIHJldHJ5aW5nIGV2ZXJ5IGVycm9yLlxuICAgKiBSZXR1cm5pbmcgYGZhbHNlYCBlbmRzIHRoZSBzdGFnZSBpbW1lZGlhdGVseSBvbiB0aGUgbm9ybWFsIGVycm9yIHBhdGgg4oCUXG4gICAqIGV4YWN0bHkgYXMgaWYgbm8gcG9saWN5IGhhZCBiZWVuIGRlY2xhcmVkLCBhbmQgd2l0aCBubyByZXRyeSBldmVudCAodGhlXG4gICAqIHBvbGljeSBjaG9zZSBub3QgdG8gYWN0OyB0aGVyZSBpcyBub3RoaW5nIHRvIHJlcG9ydCB0aGF0IHRoZSBlcnJvciBldmVudFxuICAgKiBkb2VzIG5vdCBhbHJlYWR5IHNheSkuXG4gICAqXG4gICAqIEEgdGhyb3cgZnJvbSB0aGlzIHByZWRpY2F0ZSBpcyB0cmVhdGVkIGFzIGBmYWxzZWAg4oCUIGEgYnJva2VuIHByZWRpY2F0ZVxuICAgKiBtdXN0IG5vdCB0dXJuIGEgZmFpbGluZyBzdGFnZSBpbnRvIGFuIGluZmluaXRlIHJldHJ5IGxvb3AuXG4gICAqL1xuICByZXRyeU9uPzogKGVycm9yOiB1bmtub3duKSA9PiBib29sZWFuO1xufVxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFN1YmZsb3dcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vKipcbiAqIENvbnRyb2xzIGhvdyBhcnJheSB2YWx1ZXMgZnJvbSBvdXRwdXRNYXBwZXIgYXJlIG1lcmdlZCBpbnRvIHBhcmVudCBzY29wZS5cbiAqL1xuZXhwb3J0IGVudW0gQXJyYXlNZXJnZU1vZGUge1xuICAvKiogQXBwZW5kIHN1YmZsb3cgb3V0cHV0IHRvIGV4aXN0aW5nIHBhcmVudCBhcnJheTogWy4uLmV4aXN0aW5nLCAuLi52YWx1ZV0uIERlZmF1bHQuICovXG4gIENvbmNhdCA9ICdjb25jYXQnLFxuICAvKiogT3ZlcndyaXRlIHBhcmVudCBhcnJheSB3aXRoIHN1YmZsb3cgb3V0cHV0LiBVc2UgZm9yIER5bmFtaWMgbG9vcHMuICovXG4gIFJlcGxhY2UgPSAncmVwbGFjZScsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3ViZmxvd01vdW50T3B0aW9uczxUUGFyZW50U2NvcGUgPSBhbnksIFRTdWJmbG93SW5wdXQgPSBhbnksIFRTdWJmbG93T3V0cHV0ID0gYW55PiB7XG4gIGlucHV0TWFwcGVyPzogKHBhcmVudFNjb3BlOiBUUGFyZW50U2NvcGUpID0+IFRTdWJmbG93SW5wdXQ7XG4gIC8qKlxuICAgKiBNYXBzIHN1YmZsb3cgb3V0cHV0IGJhY2sgaW50byBwYXJlbnQgc2NvcGUuXG4gICAqXG4gICAqICoqQXJyYXkgbWVyZ2UgYmVoYXZpb3IqKiBpcyBjb250cm9sbGVkIGJ5IGBhcnJheU1lcmdlYDpcbiAgICogLSBgJ2NvbmNhdCdgIChkZWZhdWx0KTogYFsuLi5leGlzdGluZywgLi4udmFsdWVdYCDigJQgcmV0dXJuIG9ubHkgKipkZWx0YSoqIGl0ZW1zXG4gICAqIC0gYCdyZXBsYWNlJ2A6IG92ZXJ3cml0ZXMgdGhlIHBhcmVudCB2YWx1ZSDigJQgcmV0dXJuIHRoZSBmdWxsIGFycmF5XG4gICAqXG4gICAqIFNjYWxhciB2YWx1ZXMgYXJlIGFsd2F5cyByZXBsYWNlZCByZWdhcmRsZXNzIG9mIGBhcnJheU1lcmdlYC5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiAvLyBEZWx0YSBtb2RlIChkZWZhdWx0KSDigJQgcmV0dXJuIG9ubHkgbmV3IGl0ZW1zLCBjb25jYXQgYXBwZW5kc1xuICAgKiBvdXRwdXRNYXBwZXI6IChzZikgPT4gKHsgbWVzc2FnZXM6IHNmLm5ld01lc3NhZ2VzIH0pXG4gICAqXG4gICAqIC8vIFJlcGxhY2UgbW9kZSDigJQgcmV0dXJuIGZ1bGwgYXJyYXksIHBhcmVudCB2YWx1ZSBpcyBvdmVyd3JpdHRlblxuICAgKiAvLyBVc2VmdWwgaW4gRHluYW1pYyBsb29wcyB3aGVyZSB0aGUgc3ViZmxvdyByZWNvbXB1dGVzIHRoZSBmdWxsIHZhbHVlIGVhY2ggaXRlcmF0aW9uXG4gICAqIG91dHB1dE1hcHBlcjogKHNmKSA9PiAoeyB0b29sRGVzY3JpcHRpb25zOiBzZi50b29sRGVzY3JpcHRpb25zIH0pLFxuICAgKiBhcnJheU1lcmdlOiBBcnJheU1lcmdlTW9kZS5SZXBsYWNlLFxuICAgKlxuICAgKiAvLyBTY2FsYXJzIGFyZSBmaW5lIGluIGJvdGggbW9kZXMg4oCUIGFsd2F5cyByZXBsYWNlZFxuICAgKiBvdXRwdXRNYXBwZXI6IChzZikgPT4gKHsgc3RhdHVzOiBzZi5yZXN1bHQsIGNvdW50OiBzZi50b3RhbCB9KVxuICAgKiBgYGBcbiAgICovXG4gIG91dHB1dE1hcHBlcj86IChzdWJmbG93T3V0cHV0OiBUU3ViZmxvd091dHB1dCwgcGFyZW50U2NvcGU6IFRQYXJlbnRTY29wZSkgPT4gUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIC8qKlxuICAgKiBDb250cm9scyBob3cgYXJyYXkgdmFsdWVzIGZyb20gb3V0cHV0TWFwcGVyIGFyZSBtZXJnZWQgaW50byBwYXJlbnQgc2NvcGUuXG4gICAqIEFwcGxpZXMgb25seSB0byB0b3AtbGV2ZWwgYXJyYXkga2V5cy4gTmVzdGVkIGFycmF5cyBpbnNpZGUgb2JqZWN0c1xuICAgKiBhbHdheXMgdXNlIGFwcGVuZCAoYXBwZW5kVG9BcnJheSkgcmVnYXJkbGVzcyBvZiB0aGlzIHNldHRpbmcuXG4gICAqXG4gICAqIEBkZWZhdWx0IEFycmF5TWVyZ2VNb2RlLkNvbmNhdFxuICAgKi9cbiAgYXJyYXlNZXJnZT86IEFycmF5TWVyZ2VNb2RlO1xuXG4gIC8qKlxuICAgKiBTVFJVQ1RVUkUtT05MWTogdGhlIGRvd25zdHJlYW0gc3RhZ2UgaWQgdGhpcyBicmFuY2gncyBjb252ZXJnZW5jZSBlZGdlXG4gICAqIHBvaW50cyB0bywgb3ZlcnJpZGluZyB0aGUgZGVmYXVsdCBcImNvbnZlcmdlIGF0IHRoZSBuZXh0IGxpbmVhciBzdGFnZS5cIlxuICAgKlxuICAgKiBXaGVuIGEgZm9yay9zZWxlY3Rvci9kZWNpZGVyIGJyYW5jaCBjYXJyaWVzIGBjb252ZXJnZUF0YCwgaXRzIHZpc3VhbGl6ZWRcbiAgICogYG5leHRgIGVkZ2UgaXMgZmlyZWQgdG8gdGhlIG5hbWVkIHN0YWdlIGluc3RlYWQgb2YgdG8gdGhlIHNoYXJlZFxuICAgKiBjb252ZXJnZW5jZSBub2RlIGl0cyBzaWJsaW5ncyB1c2UuIFRoaXMgZXhwcmVzc2VzIGFuIHVuZXF1YWwtZGVwdGggbWVyZ2VcbiAgICog4oCUIGUuZy4gYSBgdG9vbHNgIHNsb3QgdGhhdCBieXBhc3NlcyB0aGUgYG1lc3NhZ2VBUElgIGFzc2VtYmx5IG5vZGUgYW5kXG4gICAqIHBhaXJzIHdpdGggaXRzIG91dHB1dCBhdCBgY2FsbC1sbG1gIChzbyBgY2FsbC1sbG1gIHJlYWRzIGFzIGEgMi1wYXJlbnRcbiAgICogbWVyZ2UpLCBmYWl0aGZ1bCB0byB0aGUgQW50aHJvcGljIHdpcmUgcHJvdG9jb2wgKHN5c3RlbSttZXNzYWdlcyA9IHRoZVxuICAgKiBtZXNzYWdlIHBheWxvYWQ7IHRvb2xzID0gYSBzZXBhcmF0ZSB0b3AtbGV2ZWwgZmllbGQpLlxuICAgKlxuICAgKiAqKlRoaXMgYWZmZWN0cyB0aGUgU1RSVUNUVVJFL3RvcG9sb2d5IGdyYXBoIG9ubHkqKiDigJQgdGhlIHJ1bnRpbWUgaXNcbiAgICogdW5jaGFuZ2VkICh0aGUgYnJhbmNoJ3Mgb3V0cHV0cyByaWRlIHNoYXJlZCBzY29wZTsgdGhlIG5hbWVkIHRhcmdldCByZWFkc1xuICAgKiB0aGVtIHdoZW4gaXQgcnVucykuIEl0IGRvZXMgTk9UIGludHJvZHVjZSBhIGpvaW4gYmFycmllci4gVGhlIHRhcmdldCBpcyBhXG4gICAqIEZPUldBUkQgc3RhZ2UgKGFkZGVkIGxhdGVyIGluIHRoZSBjaGFpbiksIHNvIGl0IGlzIG5vdCB2YWxpZGF0ZWQgYXRcbiAgICogYnJhbmNoLWRlY2xhcmF0aW9uIHRpbWUuXG4gICAqL1xuICBjb252ZXJnZUF0Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBXaGVuIGB0cnVlYCwgYW4gaW5uZXIgYHNjb3BlLiRicmVhayhyZWFzb24pYCBjYWxsIGluc2lkZSB0aGlzIHN1YmZsb3dcbiAgICogcHJvcGFnYXRlcyB1cCB0byB0aGUgcGFyZW50IOKAlCBpLmUuLCB0aGUgcGFyZW50J3MgYGJyZWFrRmxhZ2AgaXMgc2V0XG4gICAqIGFmdGVyIHRoZSBzdWJmbG93IGV4aXRzLCB0ZXJtaW5hdGluZyB0aGUgcGFyZW50J3Mgb3V0ZXIgbG9vcCB0b28uXG4gICAqXG4gICAqICoqRGVmYXVsdDogYGZhbHNlYCoqIChjdXJyZW50IGJlaGF2aW91ciDigJQgaW5uZXIgYnJlYWsgc3RvcHMgb25seSB0aGVcbiAgICogc3ViZmxvdzsgcGFyZW50IGNvbnRpbnVlcykuXG4gICAqXG4gICAqICMjIFdoZW4gdG8gdXNlXG4gICAqXG4gICAqIFNldCBgcHJvcGFnYXRlQnJlYWs6IHRydWVgIG9uIHN1YmZsb3cgbW91bnRzIHRoYXQgcmVwcmVzZW50XG4gICAqICoqdGVybWluYWwqKiBicmFuY2hlcyDigJQgXCJpZiB0aGlzIHN1YmZsb3cgZmlyZXMsIHRoZSBvdXRlciBsb29wIGlzXG4gICAqIGRvbmVcIi4gRXhhbXBsZXM6XG4gICAqXG4gICAqIC0gQSBodW1hbi1yZXZpZXcgcnVubmVyIHRoYXQgdGFrZXMgb3ZlciBmcm9tIGFuIGFnZW50J3MgdG9vbC1jYWxsaW5nXG4gICAqICAgbG9vcCBhbmQgcHJvZHVjZXMgdGhlIGZpbmFsIHJlc3BvbnNlLlxuICAgKiAtIEEgc2FmZXR5LWdhdGUgc3ViZmxvdyB0aGF0IGhhbHRzIHRoZSBvdXRlciB3b3JrZmxvdyB3aGVuIGEgcG9saWN5XG4gICAqICAgdmlvbGF0aW9uIGlzIGRldGVjdGVkLlxuICAgKiAtIEFuIGVycm9yLXJlY292ZXJ5IHN1YmZsb3cgdGhhdCByZXN0b3JlcyBzdGF0ZSBhbmQgdGhlbiB0ZXJtaW5hdGVzLlxuICAgKlxuICAgKiAjIyBTZW1hbnRpY3NcbiAgICpcbiAgICogMS4gSW5zaWRlIHRoZSBzdWJmbG93LCBhIHN0YWdlIGNhbGxzIGBzY29wZS4kYnJlYWsocmVhc29uKWAuXG4gICAqIDIuIFRoZSBzdWJmbG93J3Mgb3duIGV4ZWN1dGlvbiBzdG9wcyAobm9ybWFsIGAkYnJlYWtgIGJlaGF2aW91cikuXG4gICAqIDMuIGBTdWJmbG93RXhlY3V0b3JgIGluc3BlY3RzIHRoZSBzdWJmbG93J3MgZXhpdCBzdGF0ZS4gSWZcbiAgICogICAgYHByb3BhZ2F0ZUJyZWFrID09PSB0cnVlYCBBTkQgdGhlIGlubmVyIGJyZWFrIGZpcmVkLCBpdCBmb3J3YXJkc1xuICAgKiAgICB0aGUgYnJlYWsgKGFuZCBpdHMgcmVhc29uKSB0byB0aGUgcGFyZW50J3MgYGJyZWFrRmxhZ2AuXG4gICAqIDQuIFRoZSBwYXJlbnQgdHJhdmVyc2VyIHNlZXMgYHNob3VsZEJyZWFrYCBvbiBpdHMgbmV4dCBzdGVwIGFuZCBleGl0cy5cbiAgICogNS4gQSBgRmxvd1JlY29yZGVyLm9uQnJlYWtgIGV2ZW50IGZpcmVzIGF0IHRoZSBwYXJlbnQtbW91bnQgbGV2ZWwgd2l0aFxuICAgKiAgICBgcHJvcGFnYXRlZEZyb21TdWJmbG93YCA9IHRoZSBzdWJmbG93J3MgaWQgYW5kIHRoZSBpbm5lciByZWFzb24uXG4gICAqXG4gICAqICMjIFBhcmFsbGVsL2Zhbi1vdXRcbiAgICpcbiAgICogRm9sbG93cyB0aGUgZXhpc3RpbmcgbGlicmFyeSBydWxlIGluIGBDaGlsZHJlbkV4ZWN1dG9yYDogdGhlIHBhcmVudFxuICAgKiBicmVha3Mgb25seSB3aGVuICoqZXZlcnkqKiBjaGlsZCBvZiBhIGZvcmsgYnJva2UuIEEgc2luZ2xlXG4gICAqIGBwcm9wYWdhdGVCcmVhazogdHJ1ZWAgc3ViZmxvdyBjb250cmlidXRpbmcgaXRzIGJyZWFrIHRvIHRoZSBjb3VudFxuICAgKiBkb2VzIG5vdCBvbiBpdHMgb3duIHRlcm1pbmF0ZSB0aGUgcGFyZW50IGZhbi1vdXQuXG4gICAqXG4gICAqICMjIG91dHB1dE1hcHBlciBzdGlsbCBydW5zXG4gICAqXG4gICAqIFRoZSBzdWJmbG93J3MgYG91dHB1dE1hcHBlcmAgKGlmIHN1cHBsaWVkKSBBTFdBWVMgcnVucyBiZWZvcmUgdGhlXG4gICAqIGJyZWFrIHByb3BhZ2F0ZXMsIHNvIHRoZSBzdWJmbG93J3MgcGFydGlhbCBzdGF0ZSBpcyBzdGlsbCB3cml0dGVuIHRvXG4gICAqIHRoZSBwYXJlbnQgc2NvcGUuIFRoaXMgaXMgaW50ZW50aW9uYWwg4oCUIHRoZSB0eXBpY2FsIHVzZSBjYXNlIGlzIGFuXG4gICAqIFwiZXNjYWxhdGlvblwiIHN1YmZsb3cgd2hvc2Ugb3V0cHV0IElTIHRoZSBmaW5hbCBhbnN3ZXIgdGhhdCBuZWVkcyB0b1xuICAgKiBsYW5kIGluIHRoZSBwYXJlbnQgc2NvcGUgYmVmb3JlIHRoZSBvdXRlciBsb29wIHRlcm1pbmF0ZXMuIElmIHlvdVxuICAgKiB3YW50IHRvIHN1cHByZXNzIG91dHB1dCBtYXBwaW5nIG9uIGJyZWFrLCBjaGVjayB0aGUgYnJlYWsgc3RhdGVcbiAgICogaW5zaWRlIHlvdXIgYG91dHB1dE1hcHBlcmAgYW5kIHJldHVybiBge31gIGVhcmx5LlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcHJvcGFnYXRlQnJlYWs/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBEZWNsYXJlZCB0YWdzICg5LjIxLjEpIGZvciB0aGUgTU9VTlQgaXRzZWxmIOKAlCB0aGUgTkFNRVMgdGhlIGF1dGhvciBwdXRzXG4gICAqIG9uIHRoaXMgbW91bnQgYXQgYnVpbGQgdGltZSwgbGFuZGVkIGJ5IHRoZSBzYW1lIGBhcHBseVRhZ3NgIGV2ZXJ5IG90aGVyXG4gICAqIGBvcHRpb25zLnRhZ3NgIHNpdGUgdXNlcywgd2l0aCB0aGUgc2FtZSByZWZ1c2FscyAoZW1wdHksIG5vbi1zdHJpbmcsIHRoZVxuICAgKiByZXNlcnZlZCBgfmAgbWFya2VyLCBhIGR1cGxpY2F0ZSwgYSBzZWNvbmQgZGVjbGFyYXRpb24pLlxuICAgKlxuICAgKiBBIG1vdW50IGlzIGEgc3RhZ2UgdGhhdCBjb21taXRzOiBpdHMgZmlyc3QgYnVuZGxlIGluIHRoZSBQQVJFTlQgbG9nIGlzIGFcbiAgICogc3RvcCBpbiBgY29tbWl0U3RvcHNgLCBzbyBgdGFnU3RvcHNgIGtlZXBzIGl0IGxpa2UgYW55IHRhZ2dlZCBzdGFnZSBhbmRcbiAgICogY2FycmllcyB0aGVzZSBuYW1lcyBhcyBgU3RvcC5tZXRhYC4gU3RhbXBlZCBvbiB0aGF0IGZpcnN0IGJ1bmRsZSBvbmx5XG4gICAqICh0aGUgbW91bnQncyBleGl0IGJ1bmRsZSBjYXJyaWVzIG5vbmUg4oCUIHRoZSBvbmNlLXBlci1leGVjdXRpb24gbGF3KS5cbiAgICogVGhlIHN1YmZsb3cncyBPV04gbG9nIGlzIHVudG91Y2hlZDogaXRzIGlubmVyIHN0YWdlcyBkZWNsYXJlIHRoZWlyIG93blxuICAgKiB0YWdzLCBhbmQgYGRyaWxsKG1vdW50KWAgcmVhZHMgdGhvc2Ugb2ZmIHRoZSBpbm5lciBsb2cuXG4gICAqXG4gICAqIFRoaXMgaXMgdGhlIE9OTFkgdGFnIHNpdGUgZm9yIGEgZm9yay1jaGlsZCBtb3VudCAoYGFkZFN1YkZsb3dDaGFydGApIG9yXG4gICAqIGEgYnJhbmNoIG1vdW50IChgYWRkU3ViRmxvd0NoYXJ0QnJhbmNoYCkg4oCUIGFmdGVyIHRob3NlIHRoZSBjdXJzb3Igc3RpbGxcbiAgICogcG9pbnRzIGF0IHRoZSBwYXJlbnQsIHNvIGAudGFnKClgIHJlZnVzZXMgcmF0aGVyIHRoYW4gbWlzLWF0dHJpYnV0ZS4gQVxuICAgKiBsaW5lYXIgbW91bnQgKGBhZGRTdWJGbG93Q2hhcnROZXh0YCkgbW92ZXMgdGhlIGN1cnNvciwgc28gYC50YWcoKWAgd29ya3NcbiAgICogdGhlcmUgdG9vOyBkZWNsYXJlIGluIG9uZSBwbGFjZSwgbm90IGJvdGguXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogLmFkZFNlbGVjdG9yRnVuY3Rpb24oJ1Nsb3RzJywgcGlja1Nsb3RzLCAnc2xvdHMnKVxuICAgKiAgIC5hZGRTdWJGbG93Q2hhcnRCcmFuY2goJ21lbW9yeScsIG1lbW9yeUNoYXJ0LCAnTWVtb3J5JywgeyB0YWdzOiBbJ3Nsb3Q6bWVtb3J5J10gfSlcbiAgICogICAuYWRkU3ViRmxvd0NoYXJ0QnJhbmNoKCd0b29scycsIHRvb2xzQ2hhcnQsICdUb29scycsIHsgdGFnczogWydzbG90OnRvb2xzJ10gfSlcbiAgICogLmVuZCgpXG4gICAqIGBgYFxuICAgKi9cbiAgdGFncz86IHJlYWRvbmx5IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFN1YmZsb3dSZXN1bHQge1xuICBzdWJmbG93SWQ6IHN0cmluZztcbiAgc3ViZmxvd05hbWU6IHN0cmluZztcbiAgdHJlZUNvbnRleHQ6IHtcbiAgICAvKipcbiAgICAgKiBUaGUgc3ViZmxvdydzIGZpbmFsIHN0YXRlLiBUaGUgdHJhdmVyc2VyJ3MgcmVjb3JkIGhvbGRzIHRoZSBMSVZFIGhlYXBcbiAgICAgKiDigJQgd2hhdCBhIHBsYWluIGBnZXRTbmFwc2hvdCgpYCBhbmQgdGhlIGNoZWNrcG9pbnQgc2VlLiBVbmRlclxuICAgICAqIGBnZXRTbmFwc2hvdCh7IHJlZGFjdDogdHJ1ZSB9KWAgdGhlIGV4ZWN1dG9yIHNlcnZlcyB0aGUgc3ViZmxvdydzIG93blxuICAgICAqIHJlZGFjdGVkIG1pcnJvciBoZXJlIGluc3RlYWQgKDkuMjAuMDsgYGhhbmRsZXJzL3NlcnZlZFN1YmZsb3dSZXN1bHRzYCksXG4gICAgICogd2hpY2ggaXMgZXhhY3RseSB3aGF0IGBzdGF0ZUF0YCBmb2xkcyBgaGlzdG9yeWAgdG8uXG4gICAgICovXG4gICAgZ2xvYmFsQ29udGV4dDogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gICAgc3RhZ2VDb250ZXh0czogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gICAgaGlzdG9yeTogdW5rbm93bltdO1xuICAgIC8qKiBJZGVudGl0eSBvZiB0aGUgbG9jYWwgaGlzdG9yeSwgbm90IGl0cyBwYXJlbnQncyBsb2cuICovXG4gICAgcmVhZG9ubHkgbG9nQWRkcmVzcz86IExvZ0FkZHJlc3M7XG4gICAgLyoqXG4gICAgICogVGhlIHN1YmZsb3cncyBPV04gZm9sZCBiYXNlIOKAlCB0aGUgc3RhdGUgaXRzIGlzb2xhdGVkIHJ1bnRpbWUgc3RhcnRlZFxuICAgICAqIGZyb20sIGJlZm9yZSBpdHMgZmlyc3QgY29tbWl0LiBUaGUgc2libGluZyBvZlxuICAgICAqIGBSdW50aW1lU25hcHNob3QuaW5pdGlhbFN0YXRlYCwgY2FycmllZCBoZXJlIHNvIGEgc3ViZmxvdydzIGBoaXN0b3J5YFxuICAgICAqIGNhbiBiZSBmb2xkZWQgb2ZmbGluZSBleGFjdGx5IGxpa2UgdGhlIHJ1bidzIGxvZyAoYHN0YXRlQXRgLFxuICAgICAqIGB0aW1lVHJhdmVsKC4uLikuZHJpbGwobW91bnQpYCkuIEZyb3plbiBhbmQgZGV0YWNoZWQuXG4gICAgICpcbiAgICAgKiBOb3JtYWxseSBge31gOiBhIHN1YmZsb3cncyBgaW5wdXRNYXBwZXJgIHNlZWQgaXMgaXRzZWxmIHRoZSBmaXJzdFxuICAgICAqIENPTU1JVCBpbiBgaGlzdG9yeWAgKHRoZSByb290IGNvbnRleHQgY29tbWl0cyBpdCksIG5vdCBhIHByZS1ydW4gYmFzZS5cbiAgICAgKi9cbiAgICBpbml0aWFsU3RhdGU/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgfTtcbiAgcGFyZW50U3RhZ2VJZDogc3RyaW5nO1xuICBwaXBlbGluZVN0cnVjdHVyZT86IHVua25vd247XG59XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gU3ViZmxvdyBUcmF2ZXJzZXIgRmFjdG9yeVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8qKlxuICogU3ViZmxvd1RyYXZlcnNlckZhY3Rvcnkg4oCUIENyZWF0ZXMgYSBGbG93Y2hhcnRUcmF2ZXJzZXIgZm9yIHN1YmZsb3cgZXhlY3V0aW9uLlxuICpcbiAqIEluamVjdGVkIGludG8gU3ViZmxvd0V4ZWN1dG9yIHRvIGJyZWFrIHRoZSBjaXJjdWxhciBkZXBlbmRlbmN5OlxuICogRmxvd2NoYXJ0VHJhdmVyc2VyIOKGkiBTdWJmbG93RXhlY3V0b3Ig4oaSIEZsb3djaGFydFRyYXZlcnNlci5cbiAqXG4gKiBUaGUgZmFjdG9yeSBjYXB0dXJlcyBwYXJlbnQgdHJhdmVyc2VyIGNvbmZpZyAoc3RhZ2VNYXAsIHNjb3BlRmFjdG9yeSwgbmFycmF0aXZlLCBldGMuKVxuICogaW4gYSBjbG9zdXJlLiBTdWJmbG93RXhlY3V0b3IgY2FsbHMgaXQgd2l0aCBzdWJmbG93LXNwZWNpZmljIG92ZXJyaWRlcyAocm9vdCwgcnVudGltZSwgaW5wdXQpLlxuICogVGhlIHJldHVybmVkIHRyYXZlcnNlciB1c2VzIHRoZSBTQU1FIDctcGhhc2UgYWxnb3JpdGhtIGFzIHRoZSB0b3AtbGV2ZWwgdHJhdmVyc2VyLFxuICogc28gZGVjaWRlcnMsIHNlbGVjdG9ycywgbG9vcHMsIGxhenkgc3ViZmxvd3MsIGFuZCBhYm9ydCBzaWduYWxzIGFsbCB3b3JrIGluc2lkZSBzdWJmbG93cy5cbiAqL1xuZXhwb3J0IHR5cGUgU3ViZmxvd1RyYXZlcnNlckZhY3Rvcnk8VE91dCA9IGFueSwgVFNjb3BlID0gYW55PiA9IChvcHRpb25zOiB7XG4gIC8qKiBSb290IG5vZGUgb2YgdGhlIHN1YmZsb3cgKHdpdGggaXNTdWJmbG93Um9vdCBzdHJpcHBlZCkg4oCUIHRoZSBncmFwaCBldmVyeSBpZCBpbnNpZGUgdGhlIHN1YmZsb3cgcmVzb2x2ZXMgYWdhaW5zdC4gKi9cbiAgcm9vdDogU3RhZ2VOb2RlPFRPdXQsIFRTY29wZT47XG4gIC8qKlxuICAgKiBXaGVyZSB0aGUgc3ViZmxvdydzIHRyYXZlcnNhbCBzdGFydHMgd2hlbiBub3QgYXQgYHJvb3RgIOKAlCBhIHJlc3VtZSdzXG4gICAqIG9uZS1zaG90IHJlLWVudHJ5IChgUmVzdW1lSG9wLmVudHJ5YCk6IHRoZSBuZXh0IG1vdW50IG9uIHRoZSBwYXVzZSBwYXRoLFxuICAgKiBvciB0aGUgcGF1c2VkIHN0YWdlJ3Mgc3RhbmQtaW4sIGVhY2ggd2l0aCBpdHMgZGlzcGF0Y2hlcidzIGNvbnRpbnVhdGlvblxuICAgKiBhdHRhY2hlZC4gVmlzaXRlZCBvbmNlLCBmaXJzdDsgbmV2ZXIgcmVzb2x2YWJsZSBieSBpZC5cbiAgICovXG4gIGVudHJ5PzogU3RhZ2VOb2RlPFRPdXQsIFRTY29wZT47XG4gIC8qKlxuICAgKiBQYXJhbGxlbCBzaWJsaW5ncycgcGF1c2VzIHdhaXRpbmcgaW4gdGhpcyBzdWJmbG93IChgUmVzdW1lSG9wLnBlbmRpbmdQYXVzZXNgLFxuICAgKiA5LjI4LjApIOKAlCByYWlzZWQgaW4gb3JkZXIgb25jZSBgZW50cnlgJ3MgY2hhaW4gZW5kcy5cbiAgICovXG4gIHBlbmRpbmdQYXVzZXM/OiByZWFkb25seSBRdWV1ZWRQYXVzZVtdO1xuICAvKiogSXNvbGF0ZWQgZXhlY3V0aW9uIHJ1bnRpbWUgZm9yIHRoZSBzdWJmbG93LiAqL1xuICBleGVjdXRpb25SdW50aW1lOiBJRXhlY3V0aW9uUnVudGltZTtcbiAgLyoqIE1hcHBlZCBpbnB1dCBmcm9tIHBhcmVudCBzY29wZSAoYmVjb21lcyByZWFkT25seUNvbnRleHQgZm9yIHN0YWdlcykuICovXG4gIHJlYWRPbmx5Q29udGV4dD86IHVua25vd247XG4gIC8qKiBTdWJmbG93IGlkZW50aWZpZXIg4oCUIHVzZWQgYXMgYnJhbmNoUGF0aCBmb3IgbmFycmF0aXZlIGNvbnRleHQuICovXG4gIHN1YmZsb3dJZD86IHN0cmluZztcbiAgLyoqXG4gICAqIFJGQy0wMDMgRDE6IHJ1bnRpbWVTdGFnZUlkIG9mIHRoZSBzdWJmbG93IE1PVU5UIHN0YWdlIGluIHRoZSBwYXJlbnRcbiAgICogdHJhdmVyc2VyLiBCZWNvbWVzIHRoZSBgcGFyZW50UnVudGltZVN0YWdlSWRgIGZhbGxiYWNrIGZvciB0aGUgc3ViZmxvdydzXG4gICAqIHJvb3Qgc3RhZ2Ugc28gcnVudGltZSBhbmNlc3RvciBjaGFpbnMgY3Jvc3Mgc3ViZmxvdyBib3VuZGFyaWVzLlxuICAgKi9cbiAgcGFyZW50TW91bnRSdW50aW1lU3RhZ2VJZD86IHN0cmluZztcbn0pID0+IFN1YmZsb3dUcmF2ZXJzZXJIYW5kbGU8VE91dCwgVFNjb3BlPjtcblxuLyoqXG4gKiBIYW5kbGUgcmV0dXJuZWQgYnkgU3ViZmxvd1RyYXZlcnNlckZhY3RvcnkuXG4gKiBQcm92aWRlcyBleGVjdXRlKCkgKyBhY2Nlc3MgdG8gbmVzdGVkIHN1YmZsb3cgcmVzdWx0cy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTdWJmbG93VHJhdmVyc2VySGFuZGxlPFRPdXQgPSBhbnksIFRTY29wZSA9IGFueT4ge1xuICAvKiogRXhlY3V0ZSB0aGUgc3ViZmxvdydzIGdyYXBoIHVzaW5nIHRoZSBmdWxsIDctcGhhc2UgdHJhdmVyc2FsIGFsZ29yaXRobS4gKi9cbiAgZXhlY3V0ZSgpOiBQcm9taXNlPFRyYXZlcnNhbFJlc3VsdD47XG4gIC8qKiBDb2xsZWN0IG5lc3RlZCBzdWJmbG93IHJlc3VsdHMgKGZyb20gc3ViZmxvd3MgbW91bnRlZCBpbnNpZGUgdGhpcyBzdWJmbG93KS4gKi9cbiAgZ2V0U3ViZmxvd1Jlc3VsdHMoKTogTWFwPHN0cmluZywgU3ViZmxvd1Jlc3VsdD47XG4gIC8qKlxuICAgKiBGaW5hbCBicmVhayBzdGF0ZSBvZiB0aGUgc3ViZmxvdyBhZnRlciBgZXhlY3V0ZSgpYCByZXR1cm5zLlxuICAgKlxuICAgKiAgIC0gYHNob3VsZEJyZWFrOiB0cnVlYCAg4oaSIGEgc3RhZ2UgaW5zaWRlIHRoZSBzdWJmbG93IGNhbGxlZFxuICAgKiAgICAgYHNjb3BlLiRicmVhayhyZWFzb24pYCwgc3RvcHBpbmcgdGhlIHN1YmZsb3cncyBvd24gdHJhdmVyc2FsLlxuICAgKiAgIC0gYHJlYXNvbmAgICAgICAgICAgICAg4oaSIHRoZSBvcHRpb25hbCBzdHJpbmcgcGFzc2VkIHRvIGAkYnJlYWtgLlxuICAgKlxuICAgKiBVc2VkIGJ5IGBTdWJmbG93RXhlY3V0b3JgIHRvIGltcGxlbWVudCBgU3ViZmxvd01vdW50T3B0aW9ucy5wcm9wYWdhdGVCcmVha2A6XG4gICAqIGlmIHRoZSBtb3VudCBvcHRzIGluIEFORCB0aGUgc3ViZmxvdyBicm9rZSwgdGhlIHBhcmVudCdzIGJyZWFrIGZsYWcgaXNcbiAgICogZm9yd2FyZGVkLlxuICAgKi9cbiAgZ2V0QnJlYWtTdGF0ZSgpOiB7IHNob3VsZEJyZWFrOiBib29sZWFuOyByZWFzb24/OiBzdHJpbmcgfTtcbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBFeGVjdXRpb24gUnVudGltZSBJbnRlcmZhY2Vcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vKipcbiAqIElFeGVjdXRpb25SdW50aW1lIOKAlCBJbnRlcmZhY2UgZm9yIHRoZSBydW50aW1lIGVudmlyb25tZW50LlxuICpcbiAqIERlZmluZXMgdGhlIGNvbnRyYWN0IHRoYXQgZW5naW5lIGhhbmRsZXJzIG5lZWQgZnJvbSB0aGUgcnVubmVyIGxheWVyLFxuICogYXZvaWRpbmcgY2lyY3VsYXIgaW1wb3J0cyBiZXR3ZWVuIGVuZ2luZS8gYW5kIHJ1bm5lci8uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUV4ZWN1dGlvblJ1bnRpbWUge1xuICBnbG9iYWxTdG9yZTogeyBnZXRTdGF0ZSgpOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB9O1xuICAvKipcbiAgICogVGhlIHJlZGFjdGVkIG1pcnJvciBvZiBgZ2xvYmFsU3RvcmVgIOKAlCBwcmVzZW50IHdoZW4gdGhlIHJ1bidzIHBvbGljeVxuICAgKiBrZWVwcyBvbmUgKGBSdW5Qb2xpY3kubWlycm9yYDogYSBydW4gd2l0aCBhIHJlZGFjdGlvbiBwb2xpY3kpLCBlbHNlIGFic2VudC5cbiAgICogYFN1YmZsb3dFeGVjdXRvcmAgcmVhZHMgaXQgdG8gc2VydmUgYSBzdWJmbG93J3Mgc3RhdGUgKDkuMjAuMCkuXG4gICAqL1xuICByZWRhY3RlZFN0b3JlPzogU2hhcmVkTWVtb3J5O1xuICByb290U3RhZ2VDb250ZXh0OiBTdGFnZUNvbnRleHQ7XG4gIGV4ZWN1dGlvbkhpc3Rvcnk6IHsgbGlzdCgpOiB1bmtub3duW10gfTtcbiAgLyoqXG4gICAqIEEgZnJlc2ggcm9vdCBmcmFtZSBvbiB0aGlzIHJ1bnRpbWUg4oCUIGl0cyBzdG9yZSwgaXRzIGxvZywgdGhlIHJ1bidzIHBvbGljeVxuICAgKiBhbmQgbWlycm9yIChgRXhlY3V0aW9uUnVudGltZS5uZXdSb290YCkuIGBTdWJmbG93RXhlY3V0b3JgIHN3YXBzIGFcbiAgICogc3ViZmxvdydzIHNlZWQgZnJhbWUgZm9yIHRoZSBmcmFtZSBpdHMgZmlyc3Qgc3RhZ2UgcnVucyBvbiB3aXRoIGl0LlxuICAgKi9cbiAgbmV3Um9vdChuYW1lOiBzdHJpbmcsIGlkOiBzdHJpbmcpOiBTdGFnZUNvbnRleHQ7XG4gIGdldFNuYXBzaG90KG9wdGlvbnM/OiB7IHJlZGFjdD86IGJvb2xlYW4gfSk6IHtcbiAgICBzaGFyZWRTdGF0ZTogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gICAgZXhlY3V0aW9uVHJlZTogdW5rbm93bjtcbiAgICAvKiogVGhlIGNvbW1pdCBsb2cncyBmb2xkIGJhc2Ug4oCUIHNlZSBgUnVudGltZVNuYXBzaG90LmluaXRpYWxTdGF0ZWAuICovXG4gICAgaW5pdGlhbFN0YXRlPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gICAgY29tbWl0TG9nOiB1bmtub3duW107XG4gICAgcmVhZG9ubHkgbG9nQWRkcmVzcz86IExvZ0FkZHJlc3M7XG4gICAgLyoqIER1YWwta2V5ZWQgYnkgc3ViZmxvdyBwYXRoIChsYXN0IGl0ZXJhdGlvbikgQU5EIHBlci1leGVjdXRpb24gbW91bnQgcnVudGltZVN0YWdlSWRcbiAgICAgKiAgKGVhY2ggaXRlcmF0aW9uKSDigJQgc2VlIFJ1bnRpbWVTbmFwc2hvdC5zdWJmbG93UmVzdWx0cyAvIHN1YmZsb3ctY29tbWl0LXZpc2liaWxpdHkuICovXG4gICAgc3ViZmxvd1Jlc3VsdHM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgICByZWNvcmRlcnM/OiBBcnJheTx7IGlkOiBzdHJpbmc7IG5hbWU6IHN0cmluZzsgZGF0YTogdW5rbm93biB9PjtcbiAgfTtcbiAgc2V0Um9vdE9iamVjdChwYXRoOiBzdHJpbmdbXSwga2V5OiBzdHJpbmcsIHZhbHVlOiB1bmtub3duKTogdm9pZDtcbiAgZ2V0UGlwZWxpbmVzKCk6IHN0cmluZ1tdO1xufVxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIEV4ZWN1dGlvbiBFbnZpcm9ubWVudCDigJQgcmVhZC1vbmx5LCBwcm9wYWdhdGVzIHRocm91Z2ggbmVzdGVkIGV4ZWN1dG9yc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8qKlxuICogRXhlY3V0aW9uRW52IOKAlCBpbmZyYXN0cnVjdHVyZSB2YWx1ZXMgdGhhdCBwcm9wYWdhdGUgdGhyb3VnaCBuZXN0ZWQgZXhlY3V0b3JzLlxuICpcbiAqIExpa2UgYHByb2Nlc3MuZW52YCBmb3IgZmxvd2NoYXJ0czogcmVhZC1vbmx5LCBpbmhlcml0ZWQgYnkgY2hpbGQgZXhlY3V0b3JzLFxuICogaW5mcmFzdHJ1Y3R1cmUtb25seSAobm90IGJ1c2luZXNzIGxvZ2ljKS5cbiAqXG4gKiBMaXRtdXMgdGVzdDogQ3JlYXRlZCBleHRlcm5hbCB0byB0aGUgZmxvd2NoYXJ0ICsgcGFzc2VkIGluIGZvciBleGVjdXRpb24gPSBlbnYuXG4gKiBCdXNpbmVzcyBjb25maWcgZm9yIGEgc3BlY2lmaWMgZmxvd2NoYXJ0ID0gYXJncyAoZ2V0QXJncygpKS5cbiAqXG4gKiBJbnRlbnRpb25hbGx5IGEgY2xvc2VkIHR5cGUg4oCUIG5vdCBleHRlbnNpYmxlIHRvIHByZXZlbnQgY291cGxpbmcgYmV0d2VlblxuICogcGFyZW50IGFuZCBjaGlsZCBmbG93Y2hhcnRzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEV4ZWN1dGlvbkVudiB7XG4gIC8qKiBBYm9ydFNpZ25hbCBmb3IgY29vcGVyYXRpdmUgY2FuY2VsbGF0aW9uIGFjcm9zcyBuZXN0ZWQgZXhlY3V0b3JzLiAqL1xuICByZWFkb25seSBzaWduYWw/OiBBYm9ydFNpZ25hbDtcbiAgLyoqIFRpbWVvdXQgYnVkZ2V0IGluIG1pbGxpc2Vjb25kcy4gKi9cbiAgcmVhZG9ubHkgdGltZW91dE1zPzogbnVtYmVyO1xuICAvKiogVHJhY2UgaWRlbnRpZmllciBmb3IgZGlzdHJpYnV0ZWQgdHJhY2luZyAvIG9ic2VydmFiaWxpdHkuICovXG4gIHJlYWRvbmx5IHRyYWNlSWQ/OiBzdHJpbmc7XG59XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gSGFuZGxlciBEZXBlbmRlbmNpZXMgKERJIGJhZykg4oCUIHdhcyBQaXBlbGluZUNvbnRleHRcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vKipcbiAqIEhhbmRsZXJEZXBzIOKAlCBEZXBlbmRlbmN5IGluamVjdGlvbiBiYWcgcGFzc2VkIHRvIGFsbCBoYW5kbGVyIG1vZHVsZXMuXG4gKlxuICogUHJvdmlkZXMgc2hhcmVkIHN0YXRlIChzdGFnZU1hcCwgcnVudGltZSwgc2NvcGVGYWN0b3J5LCBldGMuKSB3aXRob3V0XG4gKiBoYW5kbGVycyBuZWVkaW5nIHRvIGltcG9ydCB0aGUgdHJhdmVyc2VyIGRpcmVjdGx5LiBBdm9pZHMgY2lyY3VsYXIgZGVwcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBIYW5kbGVyRGVwczxUT3V0ID0gYW55LCBUU2NvcGUgPSBhbnk+IHtcbiAgc3RhZ2VNYXA6IE1hcDxzdHJpbmcsIFN0YWdlRnVuY3Rpb248VE91dCwgVFNjb3BlPj47XG4gIHJvb3Q6IFN0YWdlTm9kZTxUT3V0LCBUU2NvcGU+O1xuICBleGVjdXRpb25SdW50aW1lOiBJRXhlY3V0aW9uUnVudGltZTtcbiAgc2NvcGVGYWN0b3J5OiBTY29wZUZhY3Rvcnk8VFNjb3BlPjtcbiAgc3ViZmxvd3M/OiBSZWNvcmQ8c3RyaW5nLCB7IHJvb3Q6IFN0YWdlTm9kZTxUT3V0LCBUU2NvcGU+IH0+O1xuICB0aHJvdHRsaW5nRXJyb3JDaGVja2VyPzogKGVycm9yOiB1bmtub3duKSA9PiBib29sZWFuO1xuICBzdHJlYW1IYW5kbGVycz86IFN0cmVhbUhhbmRsZXJzO1xuICBzY29wZVByb3RlY3Rpb25Nb2RlOiBTY29wZVByb3RlY3Rpb25Nb2RlO1xuICByZWFkT25seUNvbnRleHQ/OiB1bmtub3duO1xuICAvKiogRXhlY3V0aW9uIGVudmlyb25tZW50IOKAlCBwcm9wYWdhdGVzIHRvIHN1YmZsb3dzIGF1dG9tYXRpY2FsbHkuICovXG4gIGV4ZWN1dGlvbkVudj86IEV4ZWN1dGlvbkVudjtcbiAgbmFycmF0aXZlR2VuZXJhdG9yOiBJQ29udHJvbEZsb3dOYXJyYXRpdmU7XG4gIGxvZ2dlcjogSUxvZ2dlcjtcbiAgc2lnbmFsPzogQWJvcnRTaWduYWw7XG4gIC8qKlxuICAgKiBUaGUgcmVzdW1lJ3Mgb25lLXNob3QgcmUtZW50cnkgKE0yKSDigJQgc2hhcmVkIGJ5IHJlZmVyZW5jZSB3aXRoIGV2ZXJ5XG4gICAqIG5lc3RlZCB0cmF2ZXJzZXIsIGxpa2UgdGhlIGV4ZWN1dGlvbiBjb3VudGVyLiBgU3ViZmxvd0V4ZWN1dG9yYCBhc2tzIGl0XG4gICAqIGF0IGVhY2ggc3ViZmxvdyBlbnRyeTogdGhlIEZJUlNUIGVudHJ5IGludG8gYSBzdWJmbG93IG9uIHRoZSBwYXVzZSBwYXRoXG4gICAqIHRha2VzIHRoYXQgc3ViZmxvdydzIGNhcHR1cmVkIHN0YXRlIChzZWVkaW5nIHRoZSBuZXN0ZWQgcnVudGltZSBpbiBwbGFjZVxuICAgKiBvZiB0aGUgaW5wdXRNYXBwZXIncyB2YWx1ZXMg4oCUIHRoZSBtYXBwZXIgc3RpbGwgcnVucyBmb3IgdGhlIHJlYWQtb25seVxuICAgKiBhcmdzKSwgaXRzIGVudHJ5IHBvaW50IGFuZCBhbnkgc2libGluZyBwYXVzZXMgd2FpdGluZyB0aGVyZTsgZXZlcnkgbGF0ZXJcbiAgICogZW50cnkgaXMgYW4gb3JkaW5hcnkgb25lLiBTZWUgYFJlc3VtZUVudHJ5YC4gVW5kZWZpbmVkIG9uIG5vcm1hbCBgcnVuKClgXG4gICAqIHBhdGhzLlxuICAgKi9cbiAgcmVzdW1lPzogUmVzdW1lRW50cnk8VE91dCwgVFNjb3BlPjtcbn1cblxuLyoqIE9wdGlvbnMgZm9yIEZsb3dDaGFydEV4ZWN1dG9yLnJ1bigpLiAqL1xuZXhwb3J0IGludGVyZmFjZSBSdW5PcHRpb25zIHtcbiAgLyoqIEFib3J0U2lnbmFsIGZvciBjb29wZXJhdGl2ZSBjYW5jZWxsYXRpb24uICovXG4gIHNpZ25hbD86IEFib3J0U2lnbmFsO1xuICAvKiogVGltZW91dCBpbiBtaWxsaXNlY29uZHMuIENyZWF0ZXMgYW4gaW50ZXJuYWwgQWJvcnRDb250cm9sbGVyLiAqL1xuICB0aW1lb3V0TXM/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBSdW50aW1lIGlucHV0IGRhdGEgZm9yIHRoZSBwaXBlbGluZS5cbiAgICogQmVjb21lcyB0aGUgcmVhZE9ubHlDb250ZXh0IGFjY2Vzc2libGUgdmlhIGBzY29wZS5nZXRBcmdzKClgLlxuICAgKiBTdGFnZXMgY2Fubm90IG92ZXJ3cml0ZSB0aGVzZSBrZXlzIHdpdGggYHNldFZhbHVlKClgLlxuICAgKi9cbiAgaW5wdXQ/OiB1bmtub3duO1xuICAvKipcbiAgICogRXhlY3V0aW9uIGVudmlyb25tZW50IOKAlCByZWFkLW9ubHkgaW5mcmFzdHJ1Y3R1cmUgdmFsdWVzIHRoYXQgcHJvcGFnYXRlXG4gICAqIHRocm91Z2ggbmVzdGVkIGV4ZWN1dG9ycyAobGlrZSBgcHJvY2Vzcy5lbnZgIGZvciBmbG93Y2hhcnRzKS5cbiAgICogQWNjZXNzaWJsZSB2aWEgYHNjb3BlLmdldEVudigpYC4gSW5oZXJpdGVkIGJ5IHN1YmZsb3dzIGF1dG9tYXRpY2FsbHkuXG4gICAqL1xuICBlbnY/OiBFeGVjdXRpb25FbnY7XG4gIC8qKlxuICAgKiBPdmVycmlkZSB0aGUgbWF4aW11bSBuZXN0ZWQgYGV4ZWN1dGVOb2RlYCBkZXB0aCBmb3IgdGhpcyBydW4uXG4gICAqIERlZmF1bHRzIHRvIGBGbG93Y2hhcnRUcmF2ZXJzZXIuTUFYX0VYRUNVVEVfREVQVEhgICg1MDApLlxuICAgKlxuICAgKiBEZXB0aCBjb3VudHMgVFJFRSBuZXN0aW5nIG9ubHkg4oCUIGZvcmsgY2hpbGRyZW4sIGRlY2lkZXIvc2VsZWN0b3IgYnJhbmNoXG4gICAqIGRpc3BhdGNoLCByZWN1cnNpdmUgY29tcG9zaXRpb24uIExpbmVhciBjaGFpbnMgYW5kIGxvb3AgaXRlcmF0aW9ucyBydW5cbiAgICogb24gYSBmbGF0IHRyYW1wb2xpbmUgYW5kIG5ldmVyIGNvbnN1bWUgZGVwdGgsIHNvIHRoaXMgcmFyZWx5IG5lZWRzXG4gICAqIHJhaXNpbmcuIE11c3QgYmUgPj0gMS5cbiAgICovXG4gIG1heERlcHRoPzogbnVtYmVyO1xuICAvKipcbiAgICogT3ZlcnJpZGUgdGhlIG1heGltdW0gbG9vcCBpdGVyYXRpb25zIHBlciBub2RlIGZvciB0aGlzIHJ1biAodGhlXG4gICAqIGBDb250aW51YXRpb25SZXNvbHZlcmAgaW5maW5pdGUtbG9vcCBndWFyZCkuIERlZmF1bHRzIHRvIDEwMDAuXG4gICAqIFRoaXMgaXMgdGhlIGJpbmRpbmcgY29uc3RyYWludCBmb3IgbG9vcC1oZWF2eSBwaXBlbGluZXMg4oCUIHJhaXNlIGl0IGZvclxuICAgKiBsZWdpdGltYXRlbHkgbG9uZyBsb29wcyAoYGxvb3BUb2AgY2hhaW5zIHJ1biB3aXRoIGEgZmxhdCBzdGFjaywgc28gaGlnaFxuICAgKiB2YWx1ZXMgYXJlIHNhZmU7IG1lbW9yeSBmb3Igc3RhdGUvbmFycmF0aXZlIHN0aWxsIGdyb3dzIHBlciBpdGVyYXRpb24pLlxuICAgKiBBbHNvIGJvdW5kcyB0aGUgcnVuLXRvdGFsIGNoYWluIG9mIGZ1bmN0aW9uLWJlYXJpbmcgZHluYW1pYyBgbmV4dGBcbiAgICogY29udGludWF0aW9ucyAoZnJlc2ggbm9kZXMgcmV0dXJuZWQgZnJvbSBzdGFnZXMpIOKAlCBhIHJ1bmF3YXkgZHluYW1pY1xuICAgKiBjaGFpbiBlcnJvcnMgaW5zdGVhZCBvZiBydW5uaW5nIGZvcmV2ZXIuXG4gICAqIFByb3BhZ2F0ZXMgdG8gc3ViZmxvd3MuIE11c3QgYmUgPj0gMS5cbiAgICovXG4gIG1heEl0ZXJhdGlvbnM/OiBudW1iZXI7XG59XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gRmxvdyBDb250cm9sIE5hcnJhdGl2ZSDigJQgY2Fub25pY2FsIGRlZmluaXRpb25zIGxpdmUgaW4gbWVtb3J5L3R5cGVzLnRzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuZXhwb3J0IHR5cGUgeyBGbG93Q29udHJvbFR5cGUsIEZsb3dNZXNzYWdlIH07XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gUnVudGltZSBTdHJ1Y3R1cmUgTWV0YWRhdGEgKHVzZWQgYnkgUnVudGltZVN0cnVjdHVyZU1hbmFnZXIpXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuZXhwb3J0IGludGVyZmFjZSBSdW50aW1lU3RydWN0dXJlTWV0YWRhdGEge1xuICB0eXBlOiAnc3RhZ2UnIHwgJ2RlY2lkZXInIHwgJ3NlbGVjdG9yJyB8ICdmb3JrJyB8ICdzdHJlYW1pbmcnIHwgJ3N1YmZsb3cnIHwgJ2xvb3AnO1xuICBzdWJmbG93SWQ/OiBzdHJpbmc7XG4gIGlzU3ViZmxvd1Jvb3Q/OiBib29sZWFuO1xuICBzdWJmbG93TmFtZT86IHN0cmluZztcbiAgLyoqIFRydWUgZm9yIGFuIGBhZGRQYXJhbGxlbEZvckVhY2hgIGZhbi1vdXQgKHR5cGUgc3RheXMgYCdmb3JrJ2ApLiAqL1xuICBpc0R5bmFtaWNQYXJhbGxlbD86IGJvb2xlYW47XG4gIGlzUGFyYWxsZWxDaGlsZD86IGJvb2xlYW47XG4gIHBhcmFsbGVsR3JvdXBJZD86IHN0cmluZztcbiAgbG9vcFRhcmdldD86IHN0cmluZztcbiAgaXNEeW5hbWljPzogYm9vbGVhbjtcbiAgaXNMb29wUmVmZXJlbmNlPzogYm9vbGVhbjtcbiAgc3RyZWFtSWQ/OiBzdHJpbmc7XG59XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gTm9kZSBSZXN1bHRcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5leHBvcnQgdHlwZSBOb2RlUmVzdWx0VHlwZSA9IHtcbiAgaWQ6IHN0cmluZztcbiAgcmVzdWx0OiB1bmtub3duO1xuICBpc0Vycm9yPzogYm9vbGVhbjtcbn07XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gRXhlY3V0aW9uIFJlc3BvbnNlXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuZXhwb3J0IHR5cGUgQnJhbmNoUmVzdWx0ID0ge1xuICByZXN1bHQ6IHN0cmluZyB8IEVycm9yO1xuICBpc0Vycm9yOiBib29sZWFuO1xufTtcblxuZXhwb3J0IHR5cGUgQnJhbmNoUmVzdWx0cyA9IHsgW2JyYW5jaElkOiBzdHJpbmddOiBCcmFuY2hSZXN1bHQgfTtcbmV4cG9ydCB0eXBlIFRyYXZlcnNhbFJlc3VsdCA9IEJyYW5jaFJlc3VsdHMgfCBzdHJpbmcgfCBFcnJvcjtcblxuLyoqIFJldHVybmVkIGJ5IHJ1bigpL3Jlc3VtZSgpIHdoZW4gZXhlY3V0aW9uIHBhdXNlcy4gKi9cbmV4cG9ydCB0eXBlIFBhdXNlZFJlc3VsdCA9IHtcbiAgcmVhZG9ubHkgcGF1c2VkOiB0cnVlO1xuICByZWFkb25seSBjaGVja3BvaW50OiBpbXBvcnQoJy4uL3BhdXNlL3R5cGVzLmpzJykuRmxvd2NoYXJ0Q2hlY2twb2ludDtcbn07XG5cbi8qKiBGdWxsIHJldHVybiB0eXBlIG9mIEZsb3dDaGFydEV4ZWN1dG9yLnJ1bigpIGFuZCByZXN1bWUoKS4gKi9cbmV4cG9ydCB0eXBlIEV4ZWN1dG9yUmVzdWx0ID0gVHJhdmVyc2FsUmVzdWx0IHwgUGF1c2VkUmVzdWx0O1xuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFNlcmlhbGl6ZWQgUGlwZWxpbmUgU3RydWN0dXJlIChmb3IgdmlzdWFsaXphdGlvbilcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5leHBvcnQgaW50ZXJmYWNlIFNlcmlhbGl6ZWRQaXBlbGluZU5vZGUge1xuICBuYW1lOiBzdHJpbmc7XG4gIGlkOiBzdHJpbmc7XG4gIHR5cGU/OlxuICAgIHwgJ3N0YWdlJ1xuICAgIHwgJ2RlY2lkZXInXG4gICAgfCAnc2VsZWN0b3InXG4gICAgfCAnZm9yaydcbiAgICB8ICdzdHJlYW1pbmcnXG4gICAgfCAnc3ViZmxvdydcbiAgICB8ICdsb29wJ1xuICAgIHwgJ3VzZXInXG4gICAgfCAndG9vbCdcbiAgICB8ICdmdW5jdGlvbidcbiAgICB8ICdzZXF1ZW5jZSc7XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICBjaGlsZHJlbj86IFNlcmlhbGl6ZWRQaXBlbGluZU5vZGVbXTtcbiAgbmV4dD86IFNlcmlhbGl6ZWRQaXBlbGluZU5vZGU7XG4gIGJyYW5jaGVzPzogUmVjb3JkPHN0cmluZywgU2VyaWFsaXplZFBpcGVsaW5lTm9kZT47XG4gIGhhc0RlY2lkZXI/OiBib29sZWFuO1xuICBoYXNTZWxlY3Rvcj86IGJvb2xlYW47XG4gIGhhc1N1YnRyZWU/OiBib29sZWFuO1xuICBpc1N0cmVhbWluZz86IGJvb2xlYW47XG4gIHN0cmVhbUlkPzogc3RyaW5nO1xuICBpc1N1YmZsb3dSb290PzogYm9vbGVhbjtcbiAgc3ViZmxvd0lkPzogc3RyaW5nO1xuICBzdWJmbG93TmFtZT86IHN0cmluZztcbiAgbG9vcFRhcmdldD86IHN0cmluZztcbiAgaXNMb29wUmVmZXJlbmNlPzogYm9vbGVhbjtcbiAgaXNQYXJhbGxlbENoaWxkPzogYm9vbGVhbjtcbiAgcGFyYWxsZWxHcm91cElkPzogc3RyaW5nO1xuICBpc0R5bmFtaWM/OiBib29sZWFuO1xuICAvKiogV2hlbiB0cnVlLCB0aGlzIHN0YWdlIGNhbiBwYXVzZSBleGVjdXRpb24gKFBhdXNhYmxlSGFuZGxlciBwYXR0ZXJuKS4gKi9cbiAgaXNQYXVzYWJsZT86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBUcnVlIGZvciBhbiBgYWRkUGFyYWxsZWxGb3JFYWNoYCBmYW4tb3V0IOKAlCBicmFuY2ggQ09VTlQgZGVjaWRlZCBhdCBydW50aW1lXG4gICAqIGZyb20gdGhlIHBheWxvYWQuIEEgZmxhZywgbm90IGEgdHlwZTogYHR5cGVgIHN0YXlzIGAnZm9yaydgIHNvIGV2ZXJ5XG4gICAqIGV4aXN0aW5nIGNvbnN1bWVyIHJlbmRlcnMgaXQgY29ycmVjdGx5IChpdCBJUyBhIGZhbi1vdXQpLCBhbmQgYSBjb25zdW1lclxuICAgKiB0aGF0IHdhbnRzIHRvIHNheSBcIm9uZSBicmFuY2ggcGVyIGl0ZW1cIiBjYW4gcmVhZCB0aGlzLlxuICAgKi9cbiAgaXNEeW5hbWljUGFyYWxsZWw/OiBib29sZWFuO1xuICAvKipcbiAgICogVG90YWwgYXR0ZW1wdHMgdGhpcyBzdGFnZSdzIGZ1bmN0aW9uIG1heSBydW4sIGZyb20gaXRzIGRlY2xhcmVkXG4gICAqIHtAbGluayBSZXRyeVBvbGljeX0uIFByZXNlbnQgb25seSB3aGVuIGEgcG9saWN5IHdhcyBkZWNsYXJlZC4gVGhlIENPVU5UXG4gICAqIG9ubHkg4oCUIGBiYWNrb2ZmTXNgIGFuZCBgcmV0cnlPbmAgY2FuIGJlIGZ1bmN0aW9ucywgd2hpY2ggYSBKU09OLXNhZmUgc3BlY1xuICAgKiBjYW5ub3QgY2FycnkuXG4gICAqL1xuICByZXRyeUF0dGVtcHRzPzogbnVtYmVyO1xuICAvKipcbiAgICogRGVjbGFyZWQgdGFncyAoOS4yMS4wKSDigJQgdGhlIG5hbWVzIHRoZSBhdXRob3IgcHV0IG9uIHRoaXMgc3RhZ2UgYXQgYnVpbGRcbiAgICogdGltZSwgY29waWVkIGFzLWlzLiBGcmVlIHN0cmluZ3M7IGZvb3RwcmludGpzIGFzc2lnbnMgdGhlbSBubyBtZWFuaW5nLlxuICAgKiBBYnNlbnQgd2hlbiB0aGUgc3RhZ2UgZGVjbGFyZXMgbm9uZS5cbiAgICovXG4gIHRhZ3M/OiByZWFkb25seSBzdHJpbmdbXTtcbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBGbG93Q2hhcnQgaXMgZGVmaW5lZCBpbiBgLi4vYnVpbGRlci90eXBlcy50c2AuIFRoZSBlbmdpbmUgbGF5ZXIgY29uc3VtZXMgaXRcbi8vIHZpYSBpbXBvcnQgZnJvbSB0aGVyZS4gQSBkdXBsaWNhdGUgbWluaW1hbCBkZWZpbml0aW9uIHByZXZpb3VzbHkgbGl2ZWQgaGVyZVxuLy8gYW5kIGNhdXNlZCBUUyBjb25mdXNpb24gYXQgY29tcG9zaXRpb24gYm91bmRhcmllcyAoQ29tcG9zYWJsZVJ1bm5lciB2c1xuLy8gYWRkU3ViRmxvd0NoYXJ0IHBhcmFtZXRlcikuIFNpbmdsZSBzb3VyY2Ugb2YgdHJ1dGggbm93IGxpdmVzIGluIGJ1aWxkZXIvLlxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8qKiBBbGlhcyBmb3IgU2VyaWFsaXplZFBpcGVsaW5lTm9kZSB1c2VkIGFzIGZ1bGwgc3RydWN0dXJlICovXG5leHBvcnQgdHlwZSBTZXJpYWxpemVkUGlwZWxpbmVTdHJ1Y3R1cmUgPSBTZXJpYWxpemVkUGlwZWxpbmVOb2RlICYge1xuICBicmFuY2hJZHM/OiBzdHJpbmdbXTtcbiAgc3ViZmxvd1N0cnVjdHVyZT86IFNlcmlhbGl6ZWRQaXBlbGluZVN0cnVjdHVyZTtcbiAgaXRlcmF0aW9uQ291bnQ/OiBudW1iZXI7XG59O1xuIl19
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
*/
|
|
31
31
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
32
32
|
exports.walkSubflowSpec = void 0;
|
|
33
|
-
const
|
|
33
|
+
const foottrace_1 = require("foottrace");
|
|
34
34
|
/**
|
|
35
35
|
* Walk a subflow spec, yielding its structure as flat ordered items.
|
|
36
36
|
*
|
|
@@ -76,7 +76,7 @@ function* walkNode(node, subflowPath, recurse, visited) {
|
|
|
76
76
|
return;
|
|
77
77
|
// Nested subflow mount — yield the marker, optionally recurse.
|
|
78
78
|
if (node.isSubflowRoot && node.subflowId !== undefined) {
|
|
79
|
-
const nestedPath = (0,
|
|
79
|
+
const nestedPath = (0, foottrace_1.joinPath)(subflowPath, node.subflowId);
|
|
80
80
|
const nestedSpec = node.subflowStructure;
|
|
81
81
|
if (nestedSpec) {
|
|
82
82
|
yield {
|
|
@@ -170,4 +170,4 @@ function* walkNode(node, subflowPath, recurse, visited) {
|
|
|
170
170
|
}
|
|
171
171
|
}
|
|
172
172
|
}
|
|
173
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2Fsa1N1YmZsb3dTcGVjLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9lbmdpbmUvd2Fsa1N1YmZsb3dTcGVjLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTRCRzs7O0FBR0gsZ0VBQW9EO0FBb0RwRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQkc7QUFDSCxRQUFlLENBQUMsQ0FBQyxlQUFlLENBQzlCLElBQWlDLEVBQ2pDLFdBQW1CLEVBQ25CLFVBQXlCLEVBQUU7SUFFM0IsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU8sS0FBSyxLQUFLLENBQUM7SUFFMUMsbUVBQW1FO0lBQ25FLE1BQU07UUFDSixJQUFJLEVBQUUsZUFBZTtRQUNyQixPQUFPLEVBQUUsSUFBSSxDQUFDLEVBQUU7UUFDaEIsV0FBVztRQUNYLE1BQU0sRUFBRSxRQUFRO0tBQ2pCLENBQUM7SUFFRixLQUFLLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUUsSUFBSSxHQUFHLEVBQVUsQ0FBQyxDQUFDO0FBQ2pFLENBQUM7QUFoQkQsMENBZ0JDO0FBRUQsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUNoQixJQUFpQyxFQUNqQyxXQUFtQixFQUNuQixPQUFnQixFQUNoQixPQUFvQjtJQUVwQixJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUFFLE9BQU87SUFDakMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFFckIsb0VBQW9FO0lBQ3BFLGdFQUFnRTtJQUNoRSxrRUFBa0U7SUFDbEUsa0RBQWtEO0lBQ2xELElBQUksSUFBSSxDQUFDLGVBQWU7UUFBRSxPQUFPO0lBRWpDLCtEQUErRDtJQUMvRCxJQUFJLElBQUksQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLFNBQVMsS0FB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LEVBQUUsUUFBUTtpQkFDakIsQ0FBQztZQUNKLENBQUM7WUFDRCxLQUFLLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDeEQsQ0FBQztJQUNILENBQUM7SUFFRCxlQUFlO0lBQ2YsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDZCxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNqRCxNQUFNO2dCQUNKLElBQUksRUFBRSxNQUFNO2dCQUNaLElBQUksRUFBRSxJQUFJLENBQUMsRUFBRTtnQkFDYixFQUFFLEVBQUUsSUFBSSxDQUFDLFVBQVU7Z0JBQ25CLFdBQVc7Z0JBQ1gsTUFBTSxFQUFFLFFBQVE7YUFDakIsQ0FBQztRQUNKLENBQUM7YUFBTSxDQUFDO1lBQ04sdUVBQXVFO1lBQ3ZFLHlFQUF5RTtZQUN6RSxJQUFJLFlBQVksS0FBSyxTQUFTLEVBQUUsQ0FBQztnQkFDL0IsTUFBTTtvQkFDSixJQUFJLEVBQUUsTUFBTTtvQkFDWixJQUFJLEVBQUUsSUFBSSxDQUFDLEVBQUU7b0JBQ2IsRUFBRSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRTtvQkFDaEIsUUFBUSxFQUFFLE1BQU07b0JBQ2hCLFdBQVc7b0JBQ1gsTUFBTSxFQUFFLFFBQVE7aUJBQ2pCLENBQUM7WUFDSixDQUFDO1lBQ0QsS0FBSyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsV0FBVyxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztRQUM1RCxDQUFDO0lBQ0gsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIHdhbGtTdWJmbG93U3BlYyDigJQgeWllbGQgdGhlIHN0cnVjdHVyYWwgc2hhcGUgb2YgYSBzdWJmbG93IHNwZWMgYXMgYVxuICogZmxhdCBvcmRlcmVkIHN0cmVhbSBvZiBpdGVtcywgd2l0aCBgc3ViZmxvd1BhdGhgIGFscmVhZHkgY29tcG9zZWRcbiAqIGZvciBuZXN0ZWQgc3ViZmxvd3MuXG4gKlxuICogVGhpcyBpcyB0aGUgcHVibGljIGNvbnRyYWN0IGZvciB0cmF2ZXJzaW5nIHRoZSBzdHJ1Y3R1cmUgZGVsaXZlcmVkXG4gKiB2aWEgYFN0cnVjdHVyZVN1YmZsb3dNb3VudGVkRXZlbnQuc3ViZmxvd1NwZWNgLiBJdGVtIHNoYXBlcyBtaXJyb3JcbiAqIHRoZSBjb3JyZXNwb25kaW5nIFN0cnVjdHVyZSBldmVudCBwYXlsb2FkcyBzbyBjb25zdW1lcnMgY2FuIHJvdXRlXG4gKiB3YWxrZXIgaXRlbXMgdGhyb3VnaCB0aGUgc2FtZSBoYW5kbGVycyB0aGV5IHVzZSBmb3IgbGl2ZSBldmVudHMuXG4gKlxuICogV2Fsa2VyIGNvbnRyYWN0IChMT0NLRUQpOlxuICogICAxLiBBVVRPLVJFQ1VSU0UgYnkgZGVmYXVsdCBpbnRvIG5lc3RlZCBzdWJmbG93cywgd2l0aCBjb21wb3NlZFxuICogICAgICBwYXRocyAoYHBhcmVudC9jaGlsZC8uLi5gKS4gUGFzcyBgeyByZWN1cnNlOiBmYWxzZSB9YCB0byB3YWxrXG4gKiAgICAgIG9ubHkgb25lIGxldmVsLlxuICogICAyLiBFTlRSWS1TVEFHRSBNQVJLRVIgRklSU1Q6IGZvciBlYWNoIHN1YmZsb3cgKHRvcC1sZXZlbCBhbmRcbiAqICAgICAgbmVzdGVkKSwgeWllbGRzIGEgYHsga2luZDogJ3N1YmZsb3ctc3RhcnQnLCAuLi4gfWAgaXRlbSBCRUZPUkVcbiAqICAgICAgYW55IHN0YWdlL2VkZ2UgaXRlbXMgZnJvbSB0aGF0IHN1YmZsb3cuIExldHMgY29uc3VtZXJzIGRyYXcgdGhlXG4gKiAgICAgIGJvdW5kYXJ5IGVkZ2UgZnJvbSB0aGUgbW91bnQgbm9kZSB0byB0aGUgZW50cnkgc3RhZ2UuXG4gKiAgIDMuIENPTVBPU0VEIFBBVEhTOiBuZXN0ZWQgc3ViZmxvd3MgZ2V0IGBwYXJlbnRQYXRoICsgJy8nICsgbG9jYWxJZGAuXG4gKiAgICAgIFRvcC1sZXZlbCBtb3VudCBwYXRocyBhcmUgbG9jYWwtb25seSAoYCdhdXRoJ2AsIE5PVCBgJ19fcm9vdF9fL2F1dGgnYCkuXG4gKiAgIDQuIFNIQVBFIE1JUlJPUklORzogc3RhZ2UvZWRnZS9sb29wIGl0ZW1zIGhhdmUgdGhlIHNhbWUgcGF5bG9hZFxuICogICAgICBzaGFwZSBhcyBTdHJ1Y3R1cmUgZXZlbnRzLCB3aXRoIGBzdWJmbG93UGF0aGAgYWRkZWQuXG4gKiAgIDUuIFNPVVJDRSBESVNDUklNSU5BVE9SOiBldmVyeSB3YWxrZXIgaXRlbSBjYXJyaWVzIGBzb3VyY2U6ICd3YWxrZXInYFxuICogICAgICAoU3RydWN0dXJlIGV2ZW50cyBkbyBOT1QpLiBMZXRzIGNvbnN1bWVycyBkaXN0aW5ndWlzaCBldmVudCB2c1xuICogICAgICB3YWxrZXIgaW4gbG9ncy9kZWJ1Z2dlcnMgd2hpbGUgc3RpbGwgc2hhcmluZyBoYW5kbGVyIGNvZGUgcGF0aHMuXG4gKiAgIDYuIFNUQUdFLUlEIFBSRUZJWElORzogc3RhZ2UgSURzIGluIG5lc3RlZCBzdWJmbG93cyBhcmUgYWxyZWFkeVxuICogICAgICBwcmVmaXhlZCBieSB0aGUgc3BlYyAoZS5nLiBgJ2F1dGgvdmVyaWZ5L2NoZWNrJ2ApLiBXYWxrZXJcbiAqICAgICAgcHJlc2VydmVzIHRoaXM7IGBzdWJmbG93UGF0aGAgZmllbGQgaXMgcmVkdW5kYW50LWJ1dC1leHBsaWNpdC5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IFNlcmlhbGl6ZWRQaXBlbGluZVN0cnVjdHVyZSB9IGZyb20gJy4uL2J1aWxkZXIvdHlwZXMuanMnO1xuaW1wb3J0IHsgam9pblBhdGggfSBmcm9tICcuLi9pZHMvcnVudGltZVN0YWdlSWQuanMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFdhbGtlck9wdGlvbnMge1xuICAvKiogQXV0by1yZWN1cnNlIGludG8gbmVzdGVkIHN1YmZsb3dzIChkZWZhdWx0OiB0cnVlKS4gV2hlbiBmYWxzZSxcbiAgICogIG5lc3RlZCBzdWJmbG93IGl0ZW1zIGFyZSB5aWVsZGVkIGJ1dCB0aGVpciBpbnRlcm5hbHMgYXJlIG5vdFxuICAgKiAgdHJhdmVyc2VkLiAqL1xuICByZWN1cnNlPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IHR5cGUgV2Fsa2VySXRlbSA9XG4gIHwge1xuICAgICAga2luZDogJ3N1YmZsb3ctc3RhcnQnO1xuICAgICAgc3RhZ2VJZDogc3RyaW5nO1xuICAgICAgc3ViZmxvd1BhdGg6IHN0cmluZztcbiAgICAgIHNvdXJjZTogJ3dhbGtlcic7XG4gICAgfVxuICB8IHtcbiAgICAgIGtpbmQ6ICdzdGFnZSc7XG4gICAgICBzdGFnZUlkOiBzdHJpbmc7XG4gICAgICBuYW1lOiBzdHJpbmc7XG4gICAgICB0eXBlOiBOb25OdWxsYWJsZTxTZXJpYWxpemVkUGlwZWxpbmVTdHJ1Y3R1cmVbJ3R5cGUnXT47XG4gICAgICBpc1BhdXNhYmxlPzogYm9vbGVhbjtcbiAgICAgIHNwZWM6IFNlcmlhbGl6ZWRQaXBlbGluZVN0cnVjdHVyZTtcbiAgICAgIHN1YmZsb3dQYXRoOiBzdHJpbmc7XG4gICAgICBzb3VyY2U6ICd3YWxrZXInO1xuICAgIH1cbiAgfCB7XG4gICAgICBraW5kOiAnZWRnZSc7XG4gICAgICBmcm9tOiBzdHJpbmc7XG4gICAgICB0bzogc3RyaW5nO1xuICAgICAgZWRnZUtpbmQ6ICduZXh0JyB8ICdmb3JrLWJyYW5jaCcgfCAnZGVjaXNpb24tYnJhbmNoJztcbiAgICAgIGxhYmVsPzogc3RyaW5nO1xuICAgICAgc3ViZmxvd1BhdGg6IHN0cmluZztcbiAgICAgIHNvdXJjZTogJ3dhbGtlcic7XG4gICAgfVxuICB8IHtcbiAgICAgIGtpbmQ6ICdsb29wJztcbiAgICAgIGZyb206IHN0cmluZztcbiAgICAgIHRvOiBzdHJpbmc7XG4gICAgICBzdWJmbG93UGF0aDogc3RyaW5nO1xuICAgICAgc291cmNlOiAnd2Fsa2VyJztcbiAgICB9XG4gIHwge1xuICAgICAga2luZDogJ3N1YmZsb3cnO1xuICAgICAgbW91bnRTdGFnZUlkOiBzdHJpbmc7XG4gICAgICBzdWJmbG93SWQ6IHN0cmluZztcbiAgICAgIHN1YmZsb3dOYW1lOiBzdHJpbmc7XG4gICAgICBzdWJmbG93U3BlYzogU2VyaWFsaXplZFBpcGVsaW5lU3RydWN0dXJlO1xuICAgICAgc3ViZmxvd1BhdGg6IHN0cmluZztcbiAgICAgIHNvdXJjZTogJ3dhbGtlcic7XG4gICAgfTtcblxuLyoqXG4gKiBXYWxrIGEgc3ViZmxvdyBzcGVjLCB5aWVsZGluZyBpdHMgc3RydWN0dXJlIGFzIGZsYXQgb3JkZXJlZCBpdGVtcy5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHNcbiAqIGltcG9ydCB7IHdhbGtTdWJmbG93U3BlYyB9IGZyb20gJ2Zvb3RwcmludGpzL3RyYWNlJztcbiAqXG4gKiBvblN1YmZsb3dNb3VudGVkKGV2ZW50KSB7XG4gKiAgIGlmICghZXZlbnQuc3ViZmxvd1NwZWMpIHJldHVybjsgLy8gbGF6eSBtb3VudCDigJQgbm8gc3BlYyB5ZXRcbiAqICAgZm9yIChjb25zdCBpdGVtIG9mIHdhbGtTdWJmbG93U3BlYyhldmVudC5zdWJmbG93U3BlYywgZXZlbnQuc3ViZmxvd1BhdGgpKSB7XG4gKiAgICAgc3dpdGNoIChpdGVtLmtpbmQpIHtcbiAqICAgICAgIGNhc2UgJ3N1YmZsb3ctc3RhcnQnOiBicmVhazsgICAgICAgIC8vIGVudHJ5IGJvdW5kYXJ5XG4gKiAgICAgICBjYXNlICdzdGFnZSc6ICAgICAgICAgYnJlYWs7ICAgICAgICAvLyBpbm5lciBzdGFnZVxuICogICAgICAgY2FzZSAnZWRnZSc6ICAgICAgICAgIGJyZWFrOyAgICAgICAgLy8gaW5uZXIgZWRnZVxuICogICAgICAgY2FzZSAnbG9vcCc6ICAgICAgICAgIGJyZWFrOyAgICAgICAgLy8gaW5uZXIgbG9vcCBiYWNrLWVkZ2VcbiAqICAgICAgIGNhc2UgJ3N1YmZsb3cnOiAgICAgICBicmVhazsgICAgICAgIC8vIG5lc3RlZCBtb3VudCBtYXJrZXJcbiAqICAgICB9XG4gKiAgIH1cbiAqIH1cbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24qIHdhbGtTdWJmbG93U3BlYyhcbiAgc3BlYzogU2VyaWFsaXplZFBpcGVsaW5lU3RydWN0dXJlLFxuICBzdWJmbG93UGF0aDogc3RyaW5nLFxuICBvcHRpb25zOiBXYWxrZXJPcHRpb25zID0ge30sXG4pOiBHZW5lcmF0b3I8V2Fsa2VySXRlbSwgdm9pZCwgdm9pZD4ge1xuICBjb25zdCByZWN1cnNlID0gb3B0aW9ucy5yZWN1cnNlICE9PSBmYWxzZTtcblxuICAvLyBFbnRyeSBtYXJrZXIgZmlyc3Qg4oCUIGNvbnN1bWVyIGRyYXdzIHRoZSBib3VuZGFyeSBlZGdlIGZyb20gdGhpcy5cbiAgeWllbGQge1xuICAgIGtpbmQ6ICdzdWJmbG93LXN0YXJ0JyxcbiAgICBzdGFnZUlkOiBzcGVjLmlkLFxuICAgIHN1YmZsb3dQYXRoLFxuICAgIHNvdXJjZTogJ3dhbGtlcicsXG4gIH07XG5cbiAgeWllbGQqIHdhbGtOb2RlKHNwZWMsIHN1YmZsb3dQYXRoLCByZWN1cnNlLCBuZXcgU2V0PHN0cmluZz4oKSk7XG59XG5cbmZ1bmN0aW9uKiB3YWxrTm9kZShcbiAgbm9kZTogU2VyaWFsaXplZFBpcGVsaW5lU3RydWN0dXJlLFxuICBzdWJmbG93UGF0aDogc3RyaW5nLFxuICByZWN1cnNlOiBib29sZWFuLFxuICB2aXNpdGVkOiBTZXQ8c3RyaW5nPixcbik6IEdlbmVyYXRvcjxXYWxrZXJJdGVtLCB2b2lkLCB2b2lkPiB7XG4gIGlmICh2aXNpdGVkLmhhcyhub2RlLmlkKSkgcmV0dXJuO1xuICB2aXNpdGVkLmFkZChub2RlLmlkKTtcblxuICAvLyBMb29wIHJlZmVyZW5jZSDigJQgeWllbGQgYXMgYSBsb29wIGVkZ2UgZnJvbSBwcmV2aW91cy1pbi1jb250ZXh0IHRvXG4gIC8vIHRoZSB0YXJnZXQ7IHRoZSBjYWxsZXIgKGNhbGxlciBvZiB3YWxrTm9kZSBmb3IgdGhlIHBhcmVudCkgaXNcbiAgLy8gcmVzcG9uc2libGUgZm9yIGVtaXR0aW5nIHRoZSBsb29wIGVkZ2Ugd2l0aCB0aGUgY29ycmVjdCBgZnJvbWAuXG4gIC8vIFdlIG5ldmVyIHJlLXlpZWxkIGEgc3RhZ2UgZm9yIGEgbG9vcCByZWZlcmVuY2UuXG4gIGlmIChub2RlLmlzTG9vcFJlZmVyZW5jZSkgcmV0dXJuO1xuXG4gIC8vIE5lc3RlZCBzdWJmbG93IG1vdW50IOKAlCB5aWVsZCB0aGUgbWFya2VyLCBvcHRpb25hbGx5IHJlY3Vyc2UuXG4gIGlmIChub2RlLmlzU3ViZmxvd1Jvb3QgJiYgbm9kZS5zdWJmbG93SWQgIT09IHVuZGVmaW5lZCkge1xuICAgIGNvbnN0IG5lc3RlZFBhdGggPSBqb2luUGF0aChzdWJmbG93UGF0aCwgbm9kZS5zdWJmbG93SWQpO1xuICAgIGNvbnN0IG5lc3RlZFNwZWMgPSBub2RlLnN1YmZsb3dTdHJ1Y3R1cmU7XG4gICAgaWYgKG5lc3RlZFNwZWMpIHtcbiAgICAgIHlpZWxkIHtcbiAgICAgICAga2luZDogJ3N1YmZsb3cnLFxuICAgICAgICBtb3VudFN0YWdlSWQ6IG5vZGUuaWQsXG4gICAgICAgIHN1YmZsb3dJZDogbm9kZS5zdWJmbG93SWQsXG4gICAgICAgIHN1YmZsb3dOYW1lOiBub2RlLnN1YmZsb3dOYW1lID8/IG5vZGUuc3ViZmxvd0lkLFxuICAgICAgICBzdWJmbG93U3BlYzogbmVzdGVkU3BlYyxcbiAgICAgICAgc3ViZmxvd1BhdGg6IG5lc3RlZFBhdGgsXG4gICAgICAgIHNvdXJjZTogJ3dhbGtlcicsXG4gICAgICB9O1xuICAgICAgaWYgKHJlY3Vyc2UpIHtcbiAgICAgICAgeWllbGQqIHdhbGtTdWJmbG93U3BlYyhuZXN0ZWRTcGVjLCBuZXN0ZWRQYXRoLCB7IHJlY3Vyc2UgfSk7XG4gICAgICB9XG4gICAgICAvLyBGYWxsIHRocm91Z2ggdG8gbmV4dC9jaGlsZHJlbiDigJQgdGhlIG1vdW50IG5vZGUgc3RpbGwgaGFzIGFcbiAgICAgIC8vIG1vdW50LXNpZGUgc3RhZ2UgcmVwcmVzZW50YXRpb24gdGhhdCBtYXkgaGF2ZSBvdXRnb2luZyBlZGdlcy5cbiAgICB9XG4gIH1cblxuICAvLyBZaWVsZCB0aGUgc3RhZ2UgaXRzZWxmLlxuICB5aWVsZCB7XG4gICAga2luZDogJ3N0YWdlJyxcbiAgICBzdGFnZUlkOiBub2RlLmlkLFxuICAgIG5hbWU6IG5vZGUubmFtZSxcbiAgICB0eXBlOiBub2RlLnR5cGUsXG4gICAgLi4uKG5vZGUuaXNQYXVzYWJsZSA9PT0gdHJ1ZSAmJiB7IGlzUGF1c2FibGU6IHRydWUgfSksXG4gICAgc3BlYzogbm9kZSxcbiAgICBzdWJmbG93UGF0aCxcbiAgICBzb3VyY2U6ICd3YWxrZXInLFxuICB9O1xuXG4gIC8vIEEgRkFOLU9VVCAoc2VsZWN0b3IvZm9yaykg4oCUIGV2ZXJ5IGJyYW5jaCBydW5zLCB0aGVuIHRoZSBub2RlJ3MgYG5leHRgXG4gIC8vIHJ1bnMgKHRoZSBqb2luKS4gVGhpcyBpcyBlbmdpbmUgc2VtYW50aWNzLCBzbyB3ZSBhbHdheXMgcmVuZGVyIHRoZSB0cnVlXG4gIC8vIHRvcG9sb2d5OiBlYWNoIGJyYW5jaCDihpIgdGhhdCBqb2luLCBhbmQgdGhlIG5vZGUncyBvd24gZGlyZWN0IOKGkiBuZXh0XG4gIC8vIFwic2tpcFwiIGVkZ2Ugc3VwcHJlc3NlZCAoZmxvdyBnb2VzIGZvcmsg4oaSIGJyYW5jaGVzIOKGkiBqb2luLCBuZXZlciBmb3JrIOKGklxuICAvLyBqb2luIGRpcmVjdGx5KS4gRGVjaWRlcnMgKE9ORSBicmFuY2ggY2hvc2VuLCBicmFuY2hlcyBnZW51aW5lbHkgZGl2ZXJnZSlcbiAgLy8gYXJlIE5PVCBmYW4tb3V0cyBhbmQgYXJlIGxlZnQgYWxvbmUuIGBuZXh0YCBtdXN0IGJlIGEgcmVhbCBzdGFnZSAobm90IGFcbiAgLy8gbG9vcCBiYWNrLWVkZ2UpLlxuICBjb25zdCBpc0Zhbk91dCA9IG5vZGUudHlwZSA9PT0gJ2ZvcmsnIHx8IG5vZGUuaGFzU2VsZWN0b3IgPT09IHRydWU7XG4gIGNvbnN0IGZhbk91dEpvaW5JZCA9IGlzRmFuT3V0ICYmIG5vZGUubmV4dCAmJiBub2RlLm5leHQuaXNMb29wUmVmZXJlbmNlICE9PSB0cnVlID8gbm9kZS5uZXh0LmlkIDogdW5kZWZpbmVkO1xuXG4gIC8vIENoaWxkcmVuIChkZWNpZGVyL3NlbGVjdG9yL2ZvcmsgYnJhbmNoZXMpLlxuICBpZiAobm9kZS5jaGlsZHJlbiAmJiBub2RlLmNoaWxkcmVuLmxlbmd0aCA+IDApIHtcbiAgICBjb25zdCBlZGdlS2luZDogJ2ZvcmstYnJhbmNoJyB8ICdkZWNpc2lvbi1icmFuY2gnID0gbm9kZS50eXBlID09PSAnZm9yaycgPyAnZm9yay1icmFuY2gnIDogJ2RlY2lzaW9uLWJyYW5jaCc7XG4gICAgZm9yIChjb25zdCBjaGlsZCBvZiBub2RlLmNoaWxkcmVuKSB7XG4gICAgICB5aWVsZCB7XG4gICAgICAgIGtpbmQ6ICdlZGdlJyxcbiAgICAgICAgZnJvbTogbm9kZS5pZCxcbiAgICAgICAgdG86IGNoaWxkLmlkLFxuICAgICAgICBlZGdlS2luZCxcbiAgICAgICAgLi4uKGVkZ2VLaW5kID09PSAnZGVjaXNpb24tYnJhbmNoJyAmJiBjaGlsZC5pZCAhPT0gdW5kZWZpbmVkICYmIHsgbGFiZWw6IGNoaWxkLmlkIH0pLFxuICAgICAgICBzdWJmbG93UGF0aCxcbiAgICAgICAgc291cmNlOiAnd2Fsa2VyJyxcbiAgICAgIH07XG4gICAgICAvLyBDb252ZXJnZW5jZSBlZGdlOiB0aGlzIGJyYW5jaCBtZXJnZXMgaW50byB0aGUgZmFuLW91dCdzIGpvaW4gc3RhZ2UuXG4gICAgICBpZiAoZmFuT3V0Sm9pbklkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgeWllbGQge1xuICAgICAgICAgIGtpbmQ6ICdlZGdlJyxcbiAgICAgICAgICBmcm9tOiBjaGlsZC5pZCxcbiAgICAgICAgICB0bzogZmFuT3V0Sm9pbklkLFxuICAgICAgICAgIGVkZ2VLaW5kOiAnbmV4dCcsXG4gICAgICAgICAgc3ViZmxvd1BhdGgsXG4gICAgICAgICAgc291cmNlOiAnd2Fsa2VyJyxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIHlpZWxkKiB3YWxrTm9kZShjaGlsZCwgc3ViZmxvd1BhdGgsIHJlY3Vyc2UsIHZpc2l0ZWQpO1xuICAgIH1cbiAgfVxuXG4gIC8vIExpbmVhciBuZXh0LlxuICBpZiAobm9kZS5uZXh0KSB7XG4gICAgaWYgKG5vZGUubmV4dC5pc0xvb3BSZWZlcmVuY2UgJiYgbm9kZS5sb29wVGFyZ2V0KSB7XG4gICAgICB5aWVsZCB7XG4gICAgICAgIGtpbmQ6ICdsb29wJyxcbiAgICAgICAgZnJvbTogbm9kZS5pZCxcbiAgICAgICAgdG86IG5vZGUubG9vcFRhcmdldCxcbiAgICAgICAgc3ViZmxvd1BhdGgsXG4gICAgICAgIHNvdXJjZTogJ3dhbGtlcicsXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBTdXBwcmVzcyB0aGUgZGlyZWN0IG5vZGUg4oaSIG5leHQgZWRnZSB3aGVuIHRoZSBicmFuY2hlcyBhbHJlYWR5IGNhcnJ5XG4gICAgICAvLyB0aGUgY29udmVyZ2VuY2UgdG8gaXQgKGZhbk91dEpvaW5JZCk7IHN0aWxsIHdhbGsgbmV4dCBzbyBpdCdzIGVtaXR0ZWQuXG4gICAgICBpZiAoZmFuT3V0Sm9pbklkID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgeWllbGQge1xuICAgICAgICAgIGtpbmQ6ICdlZGdlJyxcbiAgICAgICAgICBmcm9tOiBub2RlLmlkLFxuICAgICAgICAgIHRvOiBub2RlLm5leHQuaWQsXG4gICAgICAgICAgZWRnZUtpbmQ6ICduZXh0JyxcbiAgICAgICAgICBzdWJmbG93UGF0aCxcbiAgICAgICAgICBzb3VyY2U6ICd3YWxrZXInLFxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgeWllbGQqIHdhbGtOb2RlKG5vZGUubmV4dCwgc3ViZmxvd1BhdGgsIHJlY3Vyc2UsIHZpc2l0ZWQpO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
173
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2Fsa1N1YmZsb3dTcGVjLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9lbmdpbmUvd2Fsa1N1YmZsb3dTcGVjLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTRCRzs7O0FBRUgseUNBQXFDO0FBc0RyQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQkc7QUFDSCxRQUFlLENBQUMsQ0FBQyxlQUFlLENBQzlCLElBQWlDLEVBQ2pDLFdBQW1CLEVBQ25CLFVBQXlCLEVBQUU7SUFFM0IsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU8sS0FBSyxLQUFLLENBQUM7SUFFMUMsbUVBQW1FO0lBQ25FLE1BQU07UUFDSixJQUFJLEVBQUUsZUFBZTtRQUNyQixPQUFPLEVBQUUsSUFBSSxDQUFDLEVBQUU7UUFDaEIsV0FBVztRQUNYLE1BQU0sRUFBRSxRQUFRO0tBQ2pCLENBQUM7SUFFRixLQUFLLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUUsSUFBSSxHQUFHLEVBQVUsQ0FBQyxDQUFDO0FBQ2pFLENBQUM7QUFoQkQsMENBZ0JDO0FBRUQsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUNoQixJQUFpQyxFQUNqQyxXQUFtQixFQUNuQixPQUFnQixFQUNoQixPQUFvQjtJQUVwQixJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUFFLE9BQU87SUFDakMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFFckIsb0VBQW9FO0lBQ3BFLGdFQUFnRTtJQUNoRSxrRUFBa0U7SUFDbEUsa0RBQWtEO0lBQ2xELElBQUksSUFBSSxDQUFDLGVBQWU7UUFBRSxPQUFPO0lBRWpDLCtEQUErRDtJQUMvRCxJQUFJLElBQUksQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLFNBQVMsS0FB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LEVBQUUsUUFBUTtpQkFDakIsQ0FBQztZQUNKLENBQUM7WUFDRCxLQUFLLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDeEQsQ0FBQztJQUNILENBQUM7SUFFRCxlQUFlO0lBQ2YsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDZCxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNqRCxNQUFNO2dCQUNKLElBQUksRUFBRSxNQUFNO2dCQUNaLElBQUksRUFBRSxJQUFJLENBQUMsRUFBRTtnQkFDYixFQUFFLEVBQUUsSUFBSSxDQUFDLFVBQVU7Z0JBQ25CLFdBQVc7Z0JBQ1gsTUFBTSxFQUFFLFFBQVE7YUFDakIsQ0FBQztRQUNKLENBQUM7YUFBTSxDQUFDO1lBQ04sdUVBQXVFO1lBQ3ZFLHlFQUF5RTtZQUN6RSxJQUFJLFlBQVksS0FBSyxTQUFTLEVBQUUsQ0FBQztnQkFDL0IsTUFBTTtvQkFDSixJQUFJLEVBQUUsTUFBTTtvQkFDWixJQUFJLEVBQUUsSUFBSSxDQUFDLEVBQUU7b0JBQ2IsRUFBRSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRTtvQkFDaEIsUUFBUSxFQUFFLE1BQU07b0JBQ2hCLFdBQVc7b0JBQ1gsTUFBTSxFQUFFLFFBQVE7aUJBQ2pCLENBQUM7WUFDSixDQUFDO1lBQ0QsS0FBSyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsV0FBVyxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztRQUM1RCxDQUFDO0lBQ0gsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIHdhbGtTdWJmbG93U3BlYyDigJQgeWllbGQgdGhlIHN0cnVjdHVyYWwgc2hhcGUgb2YgYSBzdWJmbG93IHNwZWMgYXMgYVxuICogZmxhdCBvcmRlcmVkIHN0cmVhbSBvZiBpdGVtcywgd2l0aCBgc3ViZmxvd1BhdGhgIGFscmVhZHkgY29tcG9zZWRcbiAqIGZvciBuZXN0ZWQgc3ViZmxvd3MuXG4gKlxuICogVGhpcyBpcyB0aGUgcHVibGljIGNvbnRyYWN0IGZvciB0cmF2ZXJzaW5nIHRoZSBzdHJ1Y3R1cmUgZGVsaXZlcmVkXG4gKiB2aWEgYFN0cnVjdHVyZVN1YmZsb3dNb3VudGVkRXZlbnQuc3ViZmxvd1NwZWNgLiBJdGVtIHNoYXBlcyBtaXJyb3JcbiAqIHRoZSBjb3JyZXNwb25kaW5nIFN0cnVjdHVyZSBldmVudCBwYXlsb2FkcyBzbyBjb25zdW1lcnMgY2FuIHJvdXRlXG4gKiB3YWxrZXIgaXRlbXMgdGhyb3VnaCB0aGUgc2FtZSBoYW5kbGVycyB0aGV5IHVzZSBmb3IgbGl2ZSBldmVudHMuXG4gKlxuICogV2Fsa2VyIGNvbnRyYWN0IChMT0NLRUQpOlxuICogICAxLiBBVVRPLVJFQ1VSU0UgYnkgZGVmYXVsdCBpbnRvIG5lc3RlZCBzdWJmbG93cywgd2l0aCBjb21wb3NlZFxuICogICAgICBwYXRocyAoYHBhcmVudC9jaGlsZC8uLi5gKS4gUGFzcyBgeyByZWN1cnNlOiBmYWxzZSB9YCB0byB3YWxrXG4gKiAgICAgIG9ubHkgb25lIGxldmVsLlxuICogICAyLiBFTlRSWS1TVEFHRSBNQVJLRVIgRklSU1Q6IGZvciBlYWNoIHN1YmZsb3cgKHRvcC1sZXZlbCBhbmRcbiAqICAgICAgbmVzdGVkKSwgeWllbGRzIGEgYHsga2luZDogJ3N1YmZsb3ctc3RhcnQnLCAuLi4gfWAgaXRlbSBCRUZPUkVcbiAqICAgICAgYW55IHN0YWdlL2VkZ2UgaXRlbXMgZnJvbSB0aGF0IHN1YmZsb3cuIExldHMgY29uc3VtZXJzIGRyYXcgdGhlXG4gKiAgICAgIGJvdW5kYXJ5IGVkZ2UgZnJvbSB0aGUgbW91bnQgbm9kZSB0byB0aGUgZW50cnkgc3RhZ2UuXG4gKiAgIDMuIENPTVBPU0VEIFBBVEhTOiBuZXN0ZWQgc3ViZmxvd3MgZ2V0IGBwYXJlbnRQYXRoICsgJy8nICsgbG9jYWxJZGAuXG4gKiAgICAgIFRvcC1sZXZlbCBtb3VudCBwYXRocyBhcmUgbG9jYWwtb25seSAoYCdhdXRoJ2AsIE5PVCBgJ19fcm9vdF9fL2F1dGgnYCkuXG4gKiAgIDQuIFNIQVBFIE1JUlJPUklORzogc3RhZ2UvZWRnZS9sb29wIGl0ZW1zIGhhdmUgdGhlIHNhbWUgcGF5bG9hZFxuICogICAgICBzaGFwZSBhcyBTdHJ1Y3R1cmUgZXZlbnRzLCB3aXRoIGBzdWJmbG93UGF0aGAgYWRkZWQuXG4gKiAgIDUuIFNPVVJDRSBESVNDUklNSU5BVE9SOiBldmVyeSB3YWxrZXIgaXRlbSBjYXJyaWVzIGBzb3VyY2U6ICd3YWxrZXInYFxuICogICAgICAoU3RydWN0dXJlIGV2ZW50cyBkbyBOT1QpLiBMZXRzIGNvbnN1bWVycyBkaXN0aW5ndWlzaCBldmVudCB2c1xuICogICAgICB3YWxrZXIgaW4gbG9ncy9kZWJ1Z2dlcnMgd2hpbGUgc3RpbGwgc2hhcmluZyBoYW5kbGVyIGNvZGUgcGF0aHMuXG4gKiAgIDYuIFNUQUdFLUlEIFBSRUZJWElORzogc3RhZ2UgSURzIGluIG5lc3RlZCBzdWJmbG93cyBhcmUgYWxyZWFkeVxuICogICAgICBwcmVmaXhlZCBieSB0aGUgc3BlYyAoZS5nLiBgJ2F1dGgvdmVyaWZ5L2NoZWNrJ2ApLiBXYWxrZXJcbiAqICAgICAgcHJlc2VydmVzIHRoaXM7IGBzdWJmbG93UGF0aGAgZmllbGQgaXMgcmVkdW5kYW50LWJ1dC1leHBsaWNpdC5cbiAqL1xuXG5pbXBvcnQgeyBqb2luUGF0aCB9IGZyb20gJ2Zvb3R0cmFjZSc7XG5cbmltcG9ydCB0eXBlIHsgU2VyaWFsaXplZFBpcGVsaW5lU3RydWN0dXJlIH0gZnJvbSAnLi4vYnVpbGRlci90eXBlcy5qcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgV2Fsa2VyT3B0aW9ucyB7XG4gIC8qKiBBdXRvLXJlY3Vyc2UgaW50byBuZXN0ZWQgc3ViZmxvd3MgKGRlZmF1bHQ6IHRydWUpLiBXaGVuIGZhbHNlLFxuICAgKiAgbmVzdGVkIHN1YmZsb3cgaXRlbXMgYXJlIHlpZWxkZWQgYnV0IHRoZWlyIGludGVybmFscyBhcmUgbm90XG4gICAqICB0cmF2ZXJzZWQuICovXG4gIHJlY3Vyc2U/OiBib29sZWFuO1xufVxuXG5leHBvcnQgdHlwZSBXYWxrZXJJdGVtID1cbiAgfCB7XG4gICAgICBraW5kOiAnc3ViZmxvdy1zdGFydCc7XG4gICAgICBzdGFnZUlkOiBzdHJpbmc7XG4gICAgICBzdWJmbG93UGF0aDogc3RyaW5nO1xuICAgICAgc291cmNlOiAnd2Fsa2VyJztcbiAgICB9XG4gIHwge1xuICAgICAga2luZDogJ3N0YWdlJztcbiAgICAgIHN0YWdlSWQ6IHN0cmluZztcbiAgICAgIG5hbWU6IHN0cmluZztcbiAgICAgIHR5cGU6IE5vbk51bGxhYmxlPFNlcmlhbGl6ZWRQaXBlbGluZVN0cnVjdHVyZVsndHlwZSddPjtcbiAgICAgIGlzUGF1c2FibGU/OiBib29sZWFuO1xuICAgICAgc3BlYzogU2VyaWFsaXplZFBpcGVsaW5lU3RydWN0dXJlO1xuICAgICAgc3ViZmxvd1BhdGg6IHN0cmluZztcbiAgICAgIHNvdXJjZTogJ3dhbGtlcic7XG4gICAgfVxuICB8IHtcbiAgICAgIGtpbmQ6ICdlZGdlJztcbiAgICAgIGZyb206IHN0cmluZztcbiAgICAgIHRvOiBzdHJpbmc7XG4gICAgICBlZGdlS2luZDogJ25leHQnIHwgJ2ZvcmstYnJhbmNoJyB8ICdkZWNpc2lvbi1icmFuY2gnO1xuICAgICAgbGFiZWw/OiBzdHJpbmc7XG4gICAgICBzdWJmbG93UGF0aDogc3RyaW5nO1xuICAgICAgc291cmNlOiAnd2Fsa2VyJztcbiAgICB9XG4gIHwge1xuICAgICAga2luZDogJ2xvb3AnO1xuICAgICAgZnJvbTogc3RyaW5nO1xuICAgICAgdG86IHN0cmluZztcbiAgICAgIHN1YmZsb3dQYXRoOiBzdHJpbmc7XG4gICAgICBzb3VyY2U6ICd3YWxrZXInO1xuICAgIH1cbiAgfCB7XG4gICAgICBraW5kOiAnc3ViZmxvdyc7XG4gICAgICBtb3VudFN0YWdlSWQ6IHN0cmluZztcbiAgICAgIHN1YmZsb3dJZDogc3RyaW5nO1xuICAgICAgc3ViZmxvd05hbWU6IHN0cmluZztcbiAgICAgIHN1YmZsb3dTcGVjOiBTZXJpYWxpemVkUGlwZWxpbmVTdHJ1Y3R1cmU7XG4gICAgICBzdWJmbG93UGF0aDogc3RyaW5nO1xuICAgICAgc291cmNlOiAnd2Fsa2VyJztcbiAgICB9O1xuXG4vKipcbiAqIFdhbGsgYSBzdWJmbG93IHNwZWMsIHlpZWxkaW5nIGl0cyBzdHJ1Y3R1cmUgYXMgZmxhdCBvcmRlcmVkIGl0ZW1zLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgd2Fsa1N1YmZsb3dTcGVjIH0gZnJvbSAnZm9vdHByaW50anMvdHJhY2UnO1xuICpcbiAqIG9uU3ViZmxvd01vdW50ZWQoZXZlbnQpIHtcbiAqICAgaWYgKCFldmVudC5zdWJmbG93U3BlYykgcmV0dXJuOyAvLyBsYXp5IG1vdW50IOKAlCBubyBzcGVjIHlldFxuICogICBmb3IgKGNvbnN0IGl0ZW0gb2Ygd2Fsa1N1YmZsb3dTcGVjKGV2ZW50LnN1YmZsb3dTcGVjLCBldmVudC5zdWJmbG93UGF0aCkpIHtcbiAqICAgICBzd2l0Y2ggKGl0ZW0ua2luZCkge1xuICogICAgICAgY2FzZSAnc3ViZmxvdy1zdGFydCc6IGJyZWFrOyAgICAgICAgLy8gZW50cnkgYm91bmRhcnlcbiAqICAgICAgIGNhc2UgJ3N0YWdlJzogICAgICAgICBicmVhazsgICAgICAgIC8vIGlubmVyIHN0YWdlXG4gKiAgICAgICBjYXNlICdlZGdlJzogICAgICAgICAgYnJlYWs7ICAgICAgICAvLyBpbm5lciBlZGdlXG4gKiAgICAgICBjYXNlICdsb29wJzogICAgICAgICAgYnJlYWs7ICAgICAgICAvLyBpbm5lciBsb29wIGJhY2stZWRnZVxuICogICAgICAgY2FzZSAnc3ViZmxvdyc6ICAgICAgIGJyZWFrOyAgICAgICAgLy8gbmVzdGVkIG1vdW50IG1hcmtlclxuICogICAgIH1cbiAqICAgfVxuICogfVxuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiogd2Fsa1N1YmZsb3dTcGVjKFxuICBzcGVjOiBTZXJpYWxpemVkUGlwZWxpbmVTdHJ1Y3R1cmUsXG4gIHN1YmZsb3dQYXRoOiBzdHJpbmcsXG4gIG9wdGlvbnM6IFdhbGtlck9wdGlvbnMgPSB7fSxcbik6IEdlbmVyYXRvcjxXYWxrZXJJdGVtLCB2b2lkLCB2b2lkPiB7XG4gIGNvbnN0IHJlY3Vyc2UgPSBvcHRpb25zLnJlY3Vyc2UgIT09IGZhbHNlO1xuXG4gIC8vIEVudHJ5IG1hcmtlciBmaXJzdCDigJQgY29uc3VtZXIgZHJhd3MgdGhlIGJvdW5kYXJ5IGVkZ2UgZnJvbSB0aGlzLlxuICB5aWVsZCB7XG4gICAga2luZDogJ3N1YmZsb3ctc3RhcnQnLFxuICAgIHN0YWdlSWQ6IHNwZWMuaWQsXG4gICAgc3ViZmxvd1BhdGgsXG4gICAgc291cmNlOiAnd2Fsa2VyJyxcbiAgfTtcblxuICB5aWVsZCogd2Fsa05vZGUoc3BlYywgc3ViZmxvd1BhdGgsIHJlY3Vyc2UsIG5ldyBTZXQ8c3RyaW5nPigpKTtcbn1cblxuZnVuY3Rpb24qIHdhbGtOb2RlKFxuICBub2RlOiBTZXJpYWxpemVkUGlwZWxpbmVTdHJ1Y3R1cmUsXG4gIHN1YmZsb3dQYXRoOiBzdHJpbmcsXG4gIHJlY3Vyc2U6IGJvb2xlYW4sXG4gIHZpc2l0ZWQ6IFNldDxzdHJpbmc+LFxuKTogR2VuZXJhdG9yPFdhbGtlckl0ZW0sIHZvaWQsIHZvaWQ+IHtcbiAgaWYgKHZpc2l0ZWQuaGFzKG5vZGUuaWQpKSByZXR1cm47XG4gIHZpc2l0ZWQuYWRkKG5vZGUuaWQpO1xuXG4gIC8vIExvb3AgcmVmZXJlbmNlIOKAlCB5aWVsZCBhcyBhIGxvb3AgZWRnZSBmcm9tIHByZXZpb3VzLWluLWNvbnRleHQgdG9cbiAgLy8gdGhlIHRhcmdldDsgdGhlIGNhbGxlciAoY2FsbGVyIG9mIHdhbGtOb2RlIGZvciB0aGUgcGFyZW50KSBpc1xuICAvLyByZXNwb25zaWJsZSBmb3IgZW1pdHRpbmcgdGhlIGxvb3AgZWRnZSB3aXRoIHRoZSBjb3JyZWN0IGBmcm9tYC5cbiAgLy8gV2UgbmV2ZXIgcmUteWllbGQgYSBzdGFnZSBmb3IgYSBsb29wIHJlZmVyZW5jZS5cbiAgaWYgKG5vZGUuaXNMb29wUmVmZXJlbmNlKSByZXR1cm47XG5cbiAgLy8gTmVzdGVkIHN1YmZsb3cgbW91bnQg4oCUIHlpZWxkIHRoZSBtYXJrZXIsIG9wdGlvbmFsbHkgcmVjdXJzZS5cbiAgaWYgKG5vZGUuaXNTdWJmbG93Um9vdCAmJiBub2RlLnN1YmZsb3dJZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgY29uc3QgbmVzdGVkUGF0aCA9IGpvaW5QYXRoKHN1YmZsb3dQYXRoLCBub2RlLnN1YmZsb3dJZCk7XG4gICAgY29uc3QgbmVzdGVkU3BlYyA9IG5vZGUuc3ViZmxvd1N0cnVjdHVyZTtcbiAgICBpZiAobmVzdGVkU3BlYykge1xuICAgICAgeWllbGQge1xuICAgICAgICBraW5kOiAnc3ViZmxvdycsXG4gICAgICAgIG1vdW50U3RhZ2VJZDogbm9kZS5pZCxcbiAgICAgICAgc3ViZmxvd0lkOiBub2RlLnN1YmZsb3dJZCxcbiAgICAgICAgc3ViZmxvd05hbWU6IG5vZGUuc3ViZmxvd05hbWUgPz8gbm9kZS5zdWJmbG93SWQsXG4gICAgICAgIHN1YmZsb3dTcGVjOiBuZXN0ZWRTcGVjLFxuICAgICAgICBzdWJmbG93UGF0aDogbmVzdGVkUGF0aCxcbiAgICAgICAgc291cmNlOiAnd2Fsa2VyJyxcbiAgICAgIH07XG4gICAgICBpZiAocmVjdXJzZSkge1xuICAgICAgICB5aWVsZCogd2Fsa1N1YmZsb3dTcGVjKG5lc3RlZFNwZWMsIG5lc3RlZFBhdGgsIHsgcmVjdXJzZSB9KTtcbiAgICAgIH1cbiAgICAgIC8vIEZhbGwgdGhyb3VnaCB0byBuZXh0L2NoaWxkcmVuIOKAlCB0aGUgbW91bnQgbm9kZSBzdGlsbCBoYXMgYVxuICAgICAgLy8gbW91bnQtc2lkZSBzdGFnZSByZXByZXNlbnRhdGlvbiB0aGF0IG1heSBoYXZlIG91dGdvaW5nIGVkZ2VzLlxuICAgIH1cbiAgfVxuXG4gIC8vIFlpZWxkIHRoZSBzdGFnZSBpdHNlbGYuXG4gIHlpZWxkIHtcbiAgICBraW5kOiAnc3RhZ2UnLFxuICAgIHN0YWdlSWQ6IG5vZGUuaWQsXG4gICAgbmFtZTogbm9kZS5uYW1lLFxuICAgIHR5cGU6IG5vZGUudHlwZSxcbiAgICAuLi4obm9kZS5pc1BhdXNhYmxlID09PSB0cnVlICYmIHsgaXNQYXVzYWJsZTogdHJ1ZSB9KSxcbiAgICBzcGVjOiBub2RlLFxuICAgIHN1YmZsb3dQYXRoLFxuICAgIHNvdXJjZTogJ3dhbGtlcicsXG4gIH07XG5cbiAgLy8gQSBGQU4tT1VUIChzZWxlY3Rvci9mb3JrKSDigJQgZXZlcnkgYnJhbmNoIHJ1bnMsIHRoZW4gdGhlIG5vZGUncyBgbmV4dGBcbiAgLy8gcnVucyAodGhlIGpvaW4pLiBUaGlzIGlzIGVuZ2luZSBzZW1hbnRpY3MsIHNvIHdlIGFsd2F5cyByZW5kZXIgdGhlIHRydWVcbiAgLy8gdG9wb2xvZ3k6IGVhY2ggYnJhbmNoIOKGkiB0aGF0IGpvaW4sIGFuZCB0aGUgbm9kZSdzIG93biBkaXJlY3Qg4oaSIG5leHRcbiAgLy8gXCJza2lwXCIgZWRnZSBzdXBwcmVzc2VkIChmbG93IGdvZXMgZm9yayDihpIgYnJhbmNoZXMg4oaSIGpvaW4sIG5ldmVyIGZvcmsg4oaSXG4gIC8vIGpvaW4gZGlyZWN0bHkpLiBEZWNpZGVycyAoT05FIGJyYW5jaCBjaG9zZW4sIGJyYW5jaGVzIGdlbnVpbmVseSBkaXZlcmdlKVxuICAvLyBhcmUgTk9UIGZhbi1vdXRzIGFuZCBhcmUgbGVmdCBhbG9uZS4gYG5leHRgIG11c3QgYmUgYSByZWFsIHN0YWdlIChub3QgYVxuICAvLyBsb29wIGJhY2stZWRnZSkuXG4gIGNvbnN0IGlzRmFuT3V0ID0gbm9kZS50eXBlID09PSAnZm9yaycgfHwgbm9kZS5oYXNTZWxlY3RvciA9PT0gdHJ1ZTtcbiAgY29uc3QgZmFuT3V0Sm9pbklkID0gaXNGYW5PdXQgJiYgbm9kZS5uZXh0ICYmIG5vZGUubmV4dC5pc0xvb3BSZWZlcmVuY2UgIT09IHRydWUgPyBub2RlLm5leHQuaWQgOiB1bmRlZmluZWQ7XG5cbiAgLy8gQ2hpbGRyZW4gKGRlY2lkZXIvc2VsZWN0b3IvZm9yayBicmFuY2hlcykuXG4gIGlmIChub2RlLmNoaWxkcmVuICYmIG5vZGUuY2hpbGRyZW4ubGVuZ3RoID4gMCkge1xuICAgIGNvbnN0IGVkZ2VLaW5kOiAnZm9yay1icmFuY2gnIHwgJ2RlY2lzaW9uLWJyYW5jaCcgPSBub2RlLnR5cGUgPT09ICdmb3JrJyA/ICdmb3JrLWJyYW5jaCcgOiAnZGVjaXNpb24tYnJhbmNoJztcbiAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIG5vZGUuY2hpbGRyZW4pIHtcbiAgICAgIHlpZWxkIHtcbiAgICAgICAga2luZDogJ2VkZ2UnLFxuICAgICAgICBmcm9tOiBub2RlLmlkLFxuICAgICAgICB0bzogY2hpbGQuaWQsXG4gICAgICAgIGVkZ2VLaW5kLFxuICAgICAgICAuLi4oZWRnZUtpbmQgPT09ICdkZWNpc2lvbi1icmFuY2gnICYmIGNoaWxkLmlkICE9PSB1bmRlZmluZWQgJiYgeyBsYWJlbDogY2hpbGQuaWQgfSksXG4gICAgICAgIHN1YmZsb3dQYXRoLFxuICAgICAgICBzb3VyY2U6ICd3YWxrZXInLFxuICAgICAgfTtcbiAgICAgIC8vIENvbnZlcmdlbmNlIGVkZ2U6IHRoaXMgYnJhbmNoIG1lcmdlcyBpbnRvIHRoZSBmYW4tb3V0J3Mgam9pbiBzdGFnZS5cbiAgICAgIGlmIChmYW5PdXRKb2luSWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB5aWVsZCB7XG4gICAgICAgICAga2luZDogJ2VkZ2UnLFxuICAgICAgICAgIGZyb206IGNoaWxkLmlkLFxuICAgICAgICAgIHRvOiBmYW5PdXRKb2luSWQsXG4gICAgICAgICAgZWRnZUtpbmQ6ICduZXh0JyxcbiAgICAgICAgICBzdWJmbG93UGF0aCxcbiAgICAgICAgICBzb3VyY2U6ICd3YWxrZXInLFxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgeWllbGQqIHdhbGtOb2RlKGNoaWxkLCBzdWJmbG93UGF0aCwgcmVjdXJzZSwgdmlzaXRlZCk7XG4gICAgfVxuICB9XG5cbiAgLy8gTGluZWFyIG5leHQuXG4gIGlmIChub2RlLm5leHQpIHtcbiAgICBpZiAobm9kZS5uZXh0LmlzTG9vcFJlZmVyZW5jZSAmJiBub2RlLmxvb3BUYXJnZXQpIHtcbiAgICAgIHlpZWxkIHtcbiAgICAgICAga2luZDogJ2xvb3AnLFxuICAgICAgICBmcm9tOiBub2RlLmlkLFxuICAgICAgICB0bzogbm9kZS5sb29wVGFyZ2V0LFxuICAgICAgICBzdWJmbG93UGF0aCxcbiAgICAgICAgc291cmNlOiAnd2Fsa2VyJyxcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFN1cHByZXNzIHRoZSBkaXJlY3Qgbm9kZSDihpIgbmV4dCBlZGdlIHdoZW4gdGhlIGJyYW5jaGVzIGFscmVhZHkgY2FycnlcbiAgICAgIC8vIHRoZSBjb252ZXJnZW5jZSB0byBpdCAoZmFuT3V0Sm9pbklkKTsgc3RpbGwgd2FsayBuZXh0IHNvIGl0J3MgZW1pdHRlZC5cbiAgICAgIGlmIChmYW5PdXRKb2luSWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICB5aWVsZCB7XG4gICAgICAgICAga2luZDogJ2VkZ2UnLFxuICAgICAgICAgIGZyb206IG5vZGUuaWQsXG4gICAgICAgICAgdG86IG5vZGUubmV4dC5pZCxcbiAgICAgICAgICBlZGdlS2luZDogJ25leHQnLFxuICAgICAgICAgIHN1YmZsb3dQYXRoLFxuICAgICAgICAgIHNvdXJjZTogJ3dhbGtlcicsXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICB5aWVsZCogd2Fsa05vZGUobm9kZS5uZXh0LCBzdWJmbG93UGF0aCwgcmVjdXJzZSwgdmlzaXRlZCk7XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
@@ -13,8 +13,8 @@
|
|
|
13
13
|
*/
|
|
14
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
15
|
exports.refuseReservedId = void 0;
|
|
16
|
+
const foottrace_1 = require("foottrace");
|
|
16
17
|
const branchSegment_js_1 = require("./branchSegment.js");
|
|
17
|
-
const runtimeStageId_js_1 = require("./runtimeStageId.js");
|
|
18
18
|
/**
|
|
19
19
|
* The builder's ONE refusal for user-authored ids (RFC 3986 §2.2 — the
|
|
20
20
|
* grammar's delimiters are reserved, so a user id can never fake a subflow
|
|
@@ -34,16 +34,16 @@ function refuseReservedId(what, id, position) {
|
|
|
34
34
|
return undefined;
|
|
35
35
|
if (position === 'segment' && (0, branchSegment_js_1.hasBranchSegmentMarker)(id))
|
|
36
36
|
return (0, branchSegment_js_1.branchSegmentReservationMessage)(what, id);
|
|
37
|
-
for (const delimiter of [
|
|
37
|
+
for (const delimiter of [foottrace_1.PATH_DELIMITER, foottrace_1.EXECUTION_DELIMITER]) {
|
|
38
38
|
if (!id.includes(delimiter))
|
|
39
39
|
continue;
|
|
40
40
|
return (`${what} '${id}' contains the reserved character '${delimiter}'. ` +
|
|
41
|
-
`From 9.37.0 '${
|
|
42
|
-
`([subflowPath${
|
|
41
|
+
`From 9.37.0 '${foottrace_1.PATH_DELIMITER}' and '${foottrace_1.EXECUTION_DELIMITER}' are reserved for the runtimeStageId grammar ` +
|
|
42
|
+
`([subflowPath${foottrace_1.PATH_DELIMITER}]stageId${foottrace_1.EXECUTION_DELIMITER}executionIndex) — allowing one here would let a ` +
|
|
43
43
|
'hand-authored id read as a subflow path or an execution suffix and silently mis-attribute its trace. ' +
|
|
44
44
|
'Rename the id (a dash reads the same).');
|
|
45
45
|
}
|
|
46
46
|
return undefined;
|
|
47
47
|
}
|
|
48
48
|
exports.refuseReservedId = refuseReservedId;
|
|
49
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
49
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzZXJ2ZWRJZHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2lkcy9yZXNlcnZlZElkcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7O0dBV0c7OztBQUVILHlDQUFnRTtBQUVoRSx5REFBNkY7QUFXN0Y7Ozs7Ozs7Ozs7OztHQVlHO0FBQ0gsU0FBZ0IsZ0JBQWdCLENBQUMsSUFBWSxFQUFFLEVBQVUsRUFBRSxRQUFvQjtJQUM3RSx3RkFBd0Y7SUFDeEYsSUFBSSxPQUFPLEVBQUUsS0FBSyxRQUFRO1FBQUUsT0FBTyxTQUFTLENBQUM7SUFDN0MsSUFBSSxRQUFRLEtBQUssU0FBUyxJQUFJLElBQUEseUNBQXNCLEVBQUMsRUFBRSxDQUFDO1FBQUUsT0FBTyxJQUFBLGtEQUErQixFQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztJQUMzRyxLQUFLLE1BQU0sU0FBUyxJQUFJLENBQUMsMEJBQWMsRUFBRSwrQkFBbUIsQ0FBQyxFQUFFLENBQUM7UUFDOUQsSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDO1lBQUUsU0FBUztRQUN0QyxPQUFPLENBQ0wsR0FBRyxJQUFJLEtBQUssRUFBRSxzQ0FBc0MsU0FBUyxLQUFLO1lBQ2xFLGdCQUFnQiwwQkFBYyxVQUFVLCtCQUFtQixnREFBZ0Q7WUFDM0csZ0JBQWdCLDBCQUFjLFdBQVcsK0JBQW1CLGtEQUFrRDtZQUM5Ryx1R0FBdUc7WUFDdkcsd0NBQXdDLENBQ3pDLENBQUM7SUFDSixDQUFDO0lBQ0QsT0FBTyxTQUFTLENBQUM7QUFDbkIsQ0FBQztBQWZELDRDQWVDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiByZXNlcnZlZElkcyDigJQgdGhlIE9ORSByZWZ1c2FsIHRoZSBlbmdpbmUncyBpZCBkb29ycyBhc2sgKDkuMzcuMCwgUjU7IGl0cyBvd24gZmlsZSBzaW5jZSBDNikuXG4gKlxuICogQSB1c2VyLWF1dGhvcmVkIGlkIG1heSBub3QgY2FycnkgdGhlIGdyYW1tYXIncyBkZWxpbWl0ZXJzIChgI2AsIGAvYCksIGFuZCBhIHBhdGggc2VnbWVudCBtYXkgbm90XG4gKiBjYXJyeSB0aGUgZ2VuZXJhdGVkLXNlZ21lbnQgbWFya2VyIChgfmApLiBUaGlzIGlzIHRoZSBlbmdpbmUncyBydWxlIGFib3V0IHdoaWNoIGlkcyBpdCBhZG1pdHMsXG4gKiBub3QgcGFydCBvZiB0aGUgZ3JhbW1hcjogdGhlIGdyYW1tYXIgKGBydW50aW1lU3RhZ2VJZC50c2AsIHRoZSByZWNvcmQncykgYnVpbGRzLCBwYXJzZXMgYW5kXG4gKiByZWFkcyBpZHMgYW5kIGltcG9ydHMgbm90aGluZzsgdGhpcyBmaWxlIHJlYWRzIGl0cyBkZWxpbWl0ZXJzIGFuZCB0aGUgYH5gIGdyYW1tYXJcbiAqIChgYnJhbmNoU2VnbWVudC50c2ApLCBzbyB0aGUgcmVjb3JkIG5vIGxvbmdlciBpbXBvcnRzIHRoZSBlbmdpbmUncyBzZWdtZW50IHJ1bGUuXG4gKlxuICogQXNrZWQgYXQgdGhlIGJ1aWxkZXIncyBpZCBkb29ycyBhbmQgYXQgdGhlIHJ1bi10aW1lIGR5bmFtaWMtU3RhZ2VOb2RlIGRvb3IgT05MWSDigJQgbmV2ZXIgYnkgdGhlXG4gKiBwcmVmaXhlciAod2hpY2ggd3JpdGVzIGAvYCBvbiBwdXJwb3NlKSBhbmQgbmV2ZXIgYnkgYSBzdG9yZSAod2hpY2ggaG9sZHMgcnVudGltZVN0YWdlSWRzKS5cbiAqL1xuXG5pbXBvcnQgeyBFWEVDVVRJT05fREVMSU1JVEVSLCBQQVRIX0RFTElNSVRFUiB9IGZyb20gJ2Zvb3R0cmFjZSc7XG5cbmltcG9ydCB7IGJyYW5jaFNlZ21lbnRSZXNlcnZhdGlvbk1lc3NhZ2UsIGhhc0JyYW5jaFNlZ21lbnRNYXJrZXIgfSBmcm9tICcuL2JyYW5jaFNlZ21lbnQuanMnO1xuXG4vKipcbiAqIFdoZXJlIGEgdXNlci1hdXRob3JlZCBpZCBzaXRzIGluIHRoZSBncmFtbWFyIOKAlCB3aGF0IHRoZSBidWlsZGVyIGFkbWl0cyBpdCBhcy5cbiAqXG4gKiAtIGAnc3RhZ2UnYCAgIOKAlCBhIHN0YWdlIGlkIChgc3RhZ2VJZGAgcG9zaXRpb24pOiBgI2AgYW5kIGAvYCBhcmUgcmVmdXNlZC5cbiAqIC0gYCdzZWdtZW50J2Ag4oCUIGEgc3ViZmxvdyBpZCBvciBhIGBwYXJhbGxlbEZvckVhY2hgIGlkIChhIFBBVEggU0VHTUVOVCwgb3JcbiAqICAgdGhlIHBhcmVudCBvZiBhIGdlbmVyYXRlZCBvbmUpOiBgfmAgaXMgcmVmdXNlZCB0b28gKHNlZSBgYnJhbmNoU2VnbWVudC50c2ApLlxuICovXG5leHBvcnQgdHlwZSBJZFBvc2l0aW9uID0gJ3N0YWdlJyB8ICdzZWdtZW50JztcblxuLyoqXG4gKiBUaGUgYnVpbGRlcidzIE9ORSByZWZ1c2FsIGZvciB1c2VyLWF1dGhvcmVkIGlkcyAoUkZDIDM5ODYgwqcyLjIg4oCUIHRoZVxuICogZ3JhbW1hcidzIGRlbGltaXRlcnMgYXJlIHJlc2VydmVkLCBzbyBhIHVzZXIgaWQgY2FuIG5ldmVyIGZha2UgYSBzdWJmbG93XG4gKiBwYXRoIG9yIGFuIGV4ZWN1dGlvbiBzdWZmaXgpLiBSZXR1cm5zIHRoZSByZWZ1c2FsIHNlbnRlbmNlLCBvciBgdW5kZWZpbmVkYFxuICogd2hlbiB0aGUgaWQgaXMgYWRtaXNzaWJsZTsgdGhlIGJ1aWxkZXIgdHVybnMgYSBzZW50ZW5jZSBpbnRvIGl0cyBvd24gZXJyb3IuXG4gKlxuICogVGhlIGB+YCBzZW50ZW5jZSBpcyBgYnJhbmNoU2VnbWVudFJlc2VydmF0aW9uTWVzc2FnZWAncywgYnl0ZS1mb3ItYnl0ZSwgc28gYVxuICogcHJlLTkuMzcuMCByZWZ1c2FsIHJlYWRzIHRoZSBzYW1lLlxuICpcbiAqIEBwYXJhbSB3aGF0ICAgICBIb3cgdGhlIGVycm9yIG5hbWVzIHRoZSBpZCAoYFwic3ViZmxvdyBpZFwiYCwgYFwiYWRkRnVuY3Rpb24gaWRcImApLlxuICogQHBhcmFtIGlkICAgICAgIFRoZSBpZCBhcyB0aGUgdXNlciB3cm90ZSBpdC5cbiAqIEBwYXJhbSBwb3NpdGlvbiBXaGVyZSB0aGUgaWQgc2l0cyBpbiB0aGUgZ3JhbW1hci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlZnVzZVJlc2VydmVkSWQod2hhdDogc3RyaW5nLCBpZDogc3RyaW5nLCBwb3NpdGlvbjogSWRQb3NpdGlvbik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIC8vIEEgbWlzc2luZyAvIG5vbi1zdHJpbmcgaWQgaXMgbm90IHRoaXMgcnVsZSdzIGJ1c2luZXNzIOKAlCB0aGUgZG9vcidzIG93biBjaGVja3Mgb3duIGl0LlxuICBpZiAodHlwZW9mIGlkICE9PSAnc3RyaW5nJykgcmV0dXJuIHVuZGVmaW5lZDtcbiAgaWYgKHBvc2l0aW9uID09PSAnc2VnbWVudCcgJiYgaGFzQnJhbmNoU2VnbWVudE1hcmtlcihpZCkpIHJldHVybiBicmFuY2hTZWdtZW50UmVzZXJ2YXRpb25NZXNzYWdlKHdoYXQsIGlkKTtcbiAgZm9yIChjb25zdCBkZWxpbWl0ZXIgb2YgW1BBVEhfREVMSU1JVEVSLCBFWEVDVVRJT05fREVMSU1JVEVSXSkge1xuICAgIGlmICghaWQuaW5jbHVkZXMoZGVsaW1pdGVyKSkgY29udGludWU7XG4gICAgcmV0dXJuIChcbiAgICAgIGAke3doYXR9ICcke2lkfScgY29udGFpbnMgdGhlIHJlc2VydmVkIGNoYXJhY3RlciAnJHtkZWxpbWl0ZXJ9Jy4gYCArXG4gICAgICBgRnJvbSA5LjM3LjAgJyR7UEFUSF9ERUxJTUlURVJ9JyBhbmQgJyR7RVhFQ1VUSU9OX0RFTElNSVRFUn0nIGFyZSByZXNlcnZlZCBmb3IgdGhlIHJ1bnRpbWVTdGFnZUlkIGdyYW1tYXIgYCArXG4gICAgICBgKFtzdWJmbG93UGF0aCR7UEFUSF9ERUxJTUlURVJ9XXN0YWdlSWQke0VYRUNVVElPTl9ERUxJTUlURVJ9ZXhlY3V0aW9uSW5kZXgpIOKAlCBhbGxvd2luZyBvbmUgaGVyZSB3b3VsZCBsZXQgYSBgICtcbiAgICAgICdoYW5kLWF1dGhvcmVkIGlkIHJlYWQgYXMgYSBzdWJmbG93IHBhdGggb3IgYW4gZXhlY3V0aW9uIHN1ZmZpeCBhbmQgc2lsZW50bHkgbWlzLWF0dHJpYnV0ZSBpdHMgdHJhY2UuICcgK1xuICAgICAgJ1JlbmFtZSB0aGUgaWQgKGEgZGFzaCByZWFkcyB0aGUgc2FtZSkuJ1xuICAgICk7XG4gIH1cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cbiJdfQ==
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
*/
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
12
|
exports.DiagnosticCollector = void 0;
|
|
13
|
-
const
|
|
13
|
+
const paths_1 = require("foottrace/paths");
|
|
14
14
|
const BAG_FIELDS = {
|
|
15
15
|
logs: 'logContext',
|
|
16
16
|
errors: 'errorContext',
|
|
@@ -35,7 +35,7 @@ class DiagnosticCollector {
|
|
|
35
35
|
}
|
|
36
36
|
write(channel, key, value, path, replace) {
|
|
37
37
|
const kept = this.retain(channel, path, key, value);
|
|
38
|
-
const write = replace ?
|
|
38
|
+
const write = replace ? paths_1.setNestedValue : paths_1.updateNestedValue;
|
|
39
39
|
write(this[BAG_FIELDS[channel]], [], path, key, kept);
|
|
40
40
|
return kept;
|
|
41
41
|
}
|
|
@@ -87,4 +87,4 @@ class DiagnosticCollector {
|
|
|
87
87
|
}
|
|
88
88
|
}
|
|
89
89
|
exports.DiagnosticCollector = DiagnosticCollector;
|
|
90
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
90
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGlhZ25vc3RpY0NvbGxlY3Rvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvbWVtb3J5L0RpYWdub3N0aWNDb2xsZWN0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7OztHQVFHOzs7QUFFSCwyQ0FBb0U7QUFRcEUsTUFBTSxVQUFVLEdBQUc7SUFDakIsSUFBSSxFQUFFLFlBQVk7SUFDbEIsTUFBTSxFQUFFLGNBQWM7SUFDdEIsT0FBTyxFQUFFLGVBQWU7SUFDeEIsS0FBSyxFQUFFLGFBQWE7Q0FDWixDQUFDO0FBRVgsTUFBYSxtQkFBbUI7SUFRRDtJQVB0QixVQUFVLEdBQTJCLEVBQUUsQ0FBQztJQUN4QyxZQUFZLEdBQTJCLEVBQUUsQ0FBQztJQUMxQyxhQUFhLEdBQTJCLEVBQUUsQ0FBQztJQUMzQyxXQUFXLEdBQTJCLEVBQUUsQ0FBQztJQUN6QyxZQUFZLEdBQWtCLEVBQUUsQ0FBQztJQUV4QyxzRUFBc0U7SUFDdEUsWUFBNkIsUUFBMEM7UUFBMUMsYUFBUSxHQUFSLFFBQVEsQ0FBa0M7SUFBRyxDQUFDO0lBRTNFLHNHQUFzRztJQUM5RixNQUFNLENBQUMsT0FBMEIsRUFBRSxJQUFjLEVBQUUsR0FBVyxFQUFFLEtBQWM7UUFDcEYsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUM7UUFDL0IsT0FBTyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsT0FBTyxFQUFFLEdBQUcsSUFBSSxFQUFFLEdBQUcsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDM0csQ0FBQztJQUVPLEtBQUssQ0FBQyxPQUEwQixFQUFFLEdBQVcsRUFBRSxLQUFjLEVBQUUsSUFBYyxFQUFFLE9BQWdCO1FBQ3JHLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FB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YyxFQUFFLFdBQVcsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNoRixJQUFJLFdBQVcsS0FBSyxXQUFXLENBQUMsV0FBVyxJQUFJLFNBQVMsS0FBSyxXQUFXLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDbkYsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDdEMsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsV0FBVyxFQUFFLFdBQVcsRUFBRSxHQUFHLENBQUMsU0FBUyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzdHLENBQUM7SUFDSCxDQUFDO0NBQ0Y7QUE3RUQsa0RBNkVDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBEaWFnbm9zdGljQ29sbGVjdG9yIOKAlCBQZXItc3RhZ2UgbWV0YWRhdGEgY29sbGVjdG9yXG4gKlxuICogQ29sbGVjdHMgbm9uLWV4ZWN1dGlvbiBtZXRhZGF0YSBkdXJpbmcgYSBzdGFnZSdzIHJ1bjpcbiAqIC0gbG9ncywgZXJyb3JzLCBtZXRyaWNzLCBldmFscywgZmxvd01lc3NhZ2VzXG4gKlxuICogTGlrZSBhIGNvbXBpbGVyJ3MgZGlhZ25vc3RpYyBjb2xsZWN0b3Ig4oCUIGdhdGhlcnMgd2FybmluZ3MsIGVycm9ycyxcbiAqIGFuZCB0aW1pbmcgaW5mbyB3aXRob3V0IGFmZmVjdGluZyB0aGUgY29tcGlsYXRpb24gb3V0cHV0LlxuICovXG5cbmltcG9ydCB7IHNldE5lc3RlZFZhbHVlLCB1cGRhdGVOZXN0ZWRWYWx1ZSB9IGZyb20gJ2Zvb3R0cmFjZS9wYXRocyc7XG5cbmltcG9ydCB0eXBlIHsgRmxvd01lc3NhZ2UgfSBmcm9tICcuL2ZyYW1lVHlwZXMuanMnO1xuaW1wb3J0IHR5cGUgeyBSZWRhY3Rpb25SdWxlIH0gZnJvbSAnLi9yZWRhY3Rpb24uanMnO1xuXG4vKiogQGludGVybmFsIERpYWdub3N0aWMgbmFtZXNwYWNlcywgc2VwYXJhdGUgZnJvbSBzdGF0ZSBwYXRocy4gKi9cbmV4cG9ydCB0eXBlIERpYWdub3N0aWNDaGFubmVsID0gJ2xvZ3MnIHwgJ2Vycm9ycycgfCAnbWV0cmljcycgfCAnZXZhbHMnO1xuXG5jb25zdCBCQUdfRklFTERTID0ge1xuICBsb2dzOiAnbG9nQ29udGV4dCcsXG4gIGVycm9yczogJ2Vycm9yQ29udGV4dCcsXG4gIG1ldHJpY3M6ICdtZXRyaWNDb250ZXh0JyxcbiAgZXZhbHM6ICdldmFsQ29udGV4dCcsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgY2xhc3MgRGlhZ25vc3RpY0NvbGxlY3RvciB7XG4gIHB1YmxpYyBsb2dDb250ZXh0OiB7IFtrZXk6IHN0cmluZ106IGFueSB9ID0ge307XG4gIHB1YmxpYyBlcnJvckNvbnRleHQ6IHsgW2tleTogc3RyaW5nXTogYW55IH0gPSB7fTtcbiAgcHVibGljIG1ldHJpY0NvbnRleHQ6IHsgW2tleTogc3RyaW5nXTogYW55IH0gPSB7fTtcbiAgcHVibGljIGV2YWxDb250ZXh0OiB7IFtrZXk6IHN0cmluZ106IGFueSB9ID0ge307XG4gIHB1YmxpYyBmbG93TWVzc2FnZXM6IEZsb3dNZXNzYWdlW10gPSBbXTtcblxuICAvKiogUmVhZCB0aGUgY3VycmVudCBydW4gcG9saWN5LCBpbmNsdWRpbmcgcG9saWN5IHN3YXBzIGFuZCByZXN1bWUuICovXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgcmVhZFJ1bGU/OiAoKSA9PiBSZWRhY3Rpb25SdWxlIHwgdW5kZWZpbmVkKSB7fVxuXG4gIC8qKiBBIG5hbWVkIGVudHJ5OiB0aGUgcnVuJ3MgcnVsZSBtYXBzIGl0cyBuYW1lIHRvIGEgc3RhdGUga2V5LCB0aGVuIGFkZHMgdGhlIGRpYWdub3N0aWMgc2VsZWN0b3JzLiAqL1xuICBwcml2YXRlIHJldGFpbihjaGFubmVsOiBEaWFnbm9zdGljQ2hhbm5lbCwgcGF0aDogc3RyaW5nW10sIGtleTogc3RyaW5nLCB2YWx1ZTogdW5rbm93bik6IHVua25vd24ge1xuICAgIGNvbnN0IHJ1bGUgPSB0aGlzLnJlYWRSdWxlPy4oKTtcbiAgICByZXR1cm4gcnVsZSAmJiAhcnVsZS5pc0RpYWdub3N0aWNJbmVydCgpID8gcnVsZS5yZXRhaW5EaWFnbm9zdGljKFtjaGFubmVsLCAuLi5wYXRoLCBrZXldLCB2YWx1ZSkgOiB2YWx1ZTtcbiAgfVxuXG4gIHByaXZhdGUgd3JpdGUoY2hhbm5lbDogRGlhZ25vc3RpY0NoYW5uZWwsIGtleTogc3RyaW5nLCB2YWx1ZTogdW5rbm93biwgcGF0aDogc3RyaW5nW10sIHJlcGxhY2U6IGJvb2xlYW4pOiB1bmtub3duIHtcbiAgICBjb25zdCBrZXB0ID0gdGhpcy5yZXRhaW4oY2hhbm5lbCwgcGF0aCwga2V5LCB2YWx1ZSk7XG4gICAgY29uc3Qgd3JpdGUgPSByZXBsYWNlID8gc2V0TmVzdGVkVmFsdWUgOiB1cGRhdGVOZXN0ZWRWYWx1ZTtcbiAgICB3cml0ZSh0aGlzW0JBR19GSUVMRFNbY2hhbm5lbF1dLCBbXSwgcGF0aCwga2V5LCBrZXB0KTtcbiAgICByZXR1cm4ga2VwdDtcbiAgfVxuXG4gIC8qKiBAaW50ZXJuYWwgQWRkIG9uY2UsIHJldHVybmluZyB0aGUgcmV0YWluZWQgaW5jb21pbmcgdmFsdWUgZm9yIGVtaXQuXG4gICAqIExlZ2FjeSB3cml0ZXJzIHN0YXkgdm9pZDogdGhlaXIgcmVzdWx0IG1heSBiZSByZXR1cm5lZCBieSBhIHN0YWdlLiAqL1xuICBhZGQoY2hhbm5lbDogRGlhZ25vc3RpY0NoYW5uZWwsIGtleTogc3RyaW5nLCB2YWx1ZTogdW5rbm93biwgcGF0aDogc3RyaW5nW10gPSBbXSk6IHVua25vd24ge1xuICAgIHJldHVybiB0aGlzLndyaXRlKGNoYW5uZWwsIGtleSwgdmFsdWUsIHBhdGgsIGZhbHNlKTtcbiAgfVxuXG4gIGFkZExvZyhrZXk6IHN0cmluZywgdmFsdWU6IGFueSwgcGF0aDogc3RyaW5nW10gPSBbXSkge1xuICAgIHRoaXMuYWRkKCdsb2dzJywga2V5LCB2YWx1ZSwgcGF0aCk7XG4gIH1cblxuICBzZXRMb2coa2V5OiBzdHJpbmcsIHZhbHVlOiBhbnksIHBhdGg6IHN0cmluZ1tdID0gW10pIHtcbiAgICB0aGlzLndyaXRlKCdsb2dzJywga2V5LCB2YWx1ZSwgcGF0aCwgdHJ1ZSk7XG4gIH1cblxuICBhZGRFcnJvcihrZXk6IHN0cmluZywgdmFsdWU6IGFueSwgcGF0aDogc3RyaW5nW10gPSBbXSkge1xuICAgIHRoaXMuYWRkKCdlcnJvcnMnLCBrZXksIHZhbHVlLCBwYXRoKTtcbiAgfVxuXG4gIGFkZE1ldHJpYyhrZXk6IHN0cmluZywgdmFsdWU6IGFueSwgcGF0aDogc3RyaW5nW10gPSBbXSkge1xuICAgIHRoaXMuYWRkKCdtZXRyaWNzJywga2V5LCB2YWx1ZSwgcGF0aCk7XG4gIH1cblxuICBzZXRNZXRyaWMoa2V5OiBzdHJpbmcsIHZhbHVlOiBhbnksIHBhdGg6IHN0cmluZ1tdID0gW10pIHtcbiAgICB0aGlzLndyaXRlKCdtZXRyaWNzJywga2V5LCB2YWx1ZSwgcGF0aCwgdHJ1ZSk7XG4gIH1cblxuICBhZGRFdmFsKGtleTogc3RyaW5nLCB2YWx1ZTogYW55LCBwYXRoOiBzdHJpbmdbXSA9IFtdKSB7XG4gICAgdGhpcy5hZGQoJ2V2YWxzJywga2V5LCB2YWx1ZSwgcGF0aCk7XG4gIH1cblxuICBzZXRFdmFsKGtleTogc3RyaW5nLCB2YWx1ZTogYW55LCBwYXRoOiBzdHJpbmdbXSA9IFtdKSB7XG4gICAgdGhpcy53cml0ZSgnZXZhbHMnLCBrZXksIHZhbHVlLCBwYXRoLCB0cnVlKTtcbiAgfVxuXG4gIGFkZEZsb3dNZXNzYWdlKGZsb3dNZXNzYWdlOiBGbG93TWVzc2FnZSkge1xuICAgIGNvbnN0IHJ1bGUgPSB0aGlzLnJlYWRSdWxlPy4oKTtcbiAgICBpZiAoIXJ1bGUgfHwgcnVsZS5pc0Zsb3dUZXh0SW5lcnQoKSkge1xuICAgICAgdGhpcy5mbG93TWVzc2FnZXMucHVzaChmbG93TWVzc2FnZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIC8vIE9ubHkgcGF5bG9hZCB0ZXh0IGlzIHNlbGVjdGFibGUg4oCUIGFuZCBpdCBoYXMgbm8gbmFtZSBvZiBpdHMgb3duLCBzbyBvbmx5XG4gICAgLy8gdGhlIGRpYWdub3N0aWMgc2VsZWN0b3JzIHJlYWNoIGl0LiBLZWVwIHRoZSBldmlkZW5jZSBvZiB3aGF0IGhhcHBlbmVkXG4gICAgLy8gKHR5cGUsIHRhcmdldHMsIHRpbWluZywgY291bnRzKSBldmVuIHdoZW4gaXRzIGV4cGxhbmF0aW9uIGlzIG1hc2tlZC5cbiAgICBjb25zdCBkZXNjcmlwdGlvbiA9IHJ1bGUucmV0YWluRmxvd1RleHQoWydmbG93TWVzc2FnZXMnLCAnZGVzY3JpcHRpb24nXSwgZmxvd01lc3NhZ2UuZGVzY3JpcHRpb24pO1xuICAgIGNvbnN0IHJhdGlvbmFsZSA9XG4gICAgICBmbG93TWVzc2FnZS5yYXRpb25hbGUgPT09IHVuZGVmaW5lZFxuICAgICAgICA/IHVuZGVmaW5lZFxuICAgICAgICA6IHJ1bGUucmV0YWluRmxvd1RleHQoWydmbG93TWVzc2FnZXMnLCAncmF0aW9uYWxlJ10sIGZsb3dNZXNzYWdlLnJhdGlvbmFsZSk7XG4gICAgaWYgKGRlc2NyaXB0aW9uID09PSBmbG93TWVzc2FnZS5kZXNjcmlwdGlvbiAmJiByYXRpb25hbGUgPT09IGZsb3dNZXNzYWdlLnJhdGlvbmFsZSkge1xuICAgICAgdGhpcy5mbG93TWVzc2FnZXMucHVzaChmbG93TWVzc2FnZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZmxvd01lc3NhZ2VzLnB1c2goeyAuLi5mbG93TWVzc2FnZSwgZGVzY3JpcHRpb24sIC4uLihyYXRpb25hbGUgPT09IHVuZGVmaW5lZCA/IHt9IDogeyByYXRpb25hbGUgfSkgfSk7XG4gICAgfVxuICB9XG59XG4iXX0=
|