@aws-cdk/toolkit-lib 1.26.2 → 1.28.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/build-info.json +2 -2
- package/db.json.gz +0 -0
- package/lib/actions/index.d.ts +1 -0
- package/lib/actions/index.js +2 -1
- package/lib/actions/validate/index.d.ts +29 -0
- package/lib/actions/validate/index.js +3 -0
- package/lib/api/bootstrap/bootstrap-props.d.ts +7 -0
- package/lib/api/bootstrap/bootstrap-props.js +1 -1
- package/lib/api/bootstrap/deploy-bootstrap.js +7 -2
- package/lib/api/deployments/deploy-stack.js +8 -1
- package/lib/api/deployments/deployment-result.d.ts +6 -0
- package/lib/api/deployments/deployment-result.js +1 -1
- package/lib/api/hotswap/hotswap-deployments.js +2 -1
- package/lib/api/io/private/messages.d.ts +4 -0
- package/lib/api/io/private/messages.js +16 -1
- package/lib/api/io/toolkit-action.d.ts +1 -1
- package/lib/api/io/toolkit-action.js +1 -1
- package/lib/api/stack-events/stack-activity-monitor.d.ts +13 -1
- package/lib/api/stack-events/stack-activity-monitor.js +12 -2
- package/lib/api/stack-events/stack-event-poller.d.ts +7 -0
- package/lib/api/stack-events/stack-event-poller.js +20 -1
- package/lib/index_bg.wasm +0 -0
- package/lib/payloads/stack-activity.d.ts +6 -0
- package/lib/payloads/stack-activity.js +1 -1
- package/lib/private/activity-printer/base.d.ts +7 -1
- package/lib/private/activity-printer/base.js +16 -2
- package/lib/private/activity-printer/current.js +12 -6
- package/lib/private/activity-printer/history.js +15 -12
- package/lib/toolkit/toolkit.d.ts +8 -0
- package/lib/toolkit/toolkit.js +103 -55
- package/lib/toolkit/types.d.ts +30 -0
- package/lib/toolkit/types.js +1 -1
- package/package.json +13 -13
|
@@ -89,6 +89,7 @@ async function tryHotswapDeployment(sdkProvider, ioHelper, assetParams, cloudFor
|
|
|
89
89
|
noOp: result.hotswappableChanges.length === 0,
|
|
90
90
|
stackArn: cloudFormationStack.stackId,
|
|
91
91
|
outputs: cloudFormationStack.outputs,
|
|
92
|
+
deleteFailures: [],
|
|
92
93
|
};
|
|
93
94
|
}
|
|
94
95
|
return undefined;
|
|
@@ -482,4 +483,4 @@ function nonHotswappableResourceMessage(subject, reason) {
|
|
|
482
483
|
}
|
|
483
484
|
return (0, util_1.format)('resource: %s, type: %s, reason: %s', chalk.bold(subject.logicalId), chalk.bold(subject.resourceType), chalk.red(reason));
|
|
484
485
|
}
|
|
485
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG90c3dhcC1kZXBsb3ltZW50cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImhvdHN3YXAtZGVwbG95bWVudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUErR0Esb0RBeUNDO0FBeEpELCtCQUE4QjtBQUU5Qix5REFBeUQ7QUFFekQsK0JBQStCO0FBQy9CLDZDQUF1RDtBQUN2RCxxQ0FBZ0Q7QUFHaEQsc0RBQXdHO0FBQ3hHLDJFQUEwRTtBQUMxRSwrREFBNkU7QUFPN0UscUNBR2tCO0FBQ2xCLGlEQUFnRTtBQUNoRSxxRUFBK0Y7QUFDL0YseURBQXdFO0FBQ3hFLG1FQUdpQztBQUVqQywrREFBMkQ7QUFFM0QsMkNBQXlDO0FBRXpDLHNDQUFpQztBQUNqQyxxRUFBNEU7QUFFNUUsNkVBQTZFO0FBQzdFLDRHQUE0RztBQUM1RyxNQUFNLE1BQU0sR0FBNkIsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBVzVELE1BQU0sa0JBQWtCLEdBQXVDO0lBQzdELFNBQVM7SUFDVCx1QkFBdUIsRUFBRSxxREFBa0M7SUFDM0Qsc0JBQXNCLEVBQUUscURBQWtDO0lBQzFELG9CQUFvQixFQUFFLHFEQUFrQztJQUV4RCxVQUFVO0lBQ1Ysd0JBQXdCLEVBQUUsdURBQTJCO0lBQ3JELHFDQUFxQyxFQUFFLHVEQUEyQjtJQUNsRSw2QkFBNkIsRUFBRSx1REFBMkI7SUFDMUQsc0JBQXNCLEVBQUUsdURBQTJCO0lBRW5ELDBCQUEwQixFQUFFLDZDQUE4QjtJQUMxRCx5QkFBeUIsRUFBRSwwREFBb0M7SUFDL0QsNkJBQTZCLEVBQUUsOERBQXNDO0lBQ3JFLGtCQUFrQixFQUFFLEtBQUssRUFDdkIsU0FBaUIsRUFDakIsTUFBc0IsRUFDdEIsbUJBQW1ELEVBQ3pCLEVBQUU7UUFDNUIsNEVBQTRFO1FBQzVFLElBQUksTUFBTSxJQUFBLGlFQUF5QyxFQUFDLFNBQVMsRUFBRSxNQUFNLEVBQUUsbUJBQW1CLENBQUMsRUFBRSxDQUFDO1lBQzVGLE9BQU8sRUFBRSxDQUFDO1FBQ1osQ0FBQztRQUVELE9BQU8sQ0FBQyxJQUFBLGdDQUF1QixFQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVELG9CQUFvQixFQUFFLEtBQUssSUFBSSxFQUFFLENBQUMsRUFBRTtJQUVwQyw0QkFBNEI7SUFDNUIsMEJBQTBCLEVBQUUseURBQWdDO0lBQzVELDZCQUE2QixFQUFFLHlEQUFnQztJQUMvRCx5QkFBeUIsRUFBRSx5REFBZ0M7SUFDM0Qsd0JBQXdCLEVBQUUseURBQWdDO0lBQzFELGdDQUFnQyxFQUFFLHlEQUFnQztJQUNsRSxxQkFBcUIsRUFBRSx5REFBZ0M7SUFDdkQsbUJBQW1CLEVBQUUseURBQWdDO0lBQ3JELHNCQUFzQixFQUFFLHlEQUFnQztJQUN4RCw0QkFBNEIsRUFBRSx5REFBZ0M7SUFDOUQsaUJBQWlCLEVBQUUseURBQWdDO0lBQ25ELHdCQUF3QixFQUFFLHlEQUFnQztJQUMxRCxpQ0FBaUMsRUFBRSx5REFBZ0M7SUFDbkUsNEJBQTRCLEVBQUUseURBQWdDO0lBQzlELGtDQUFrQyxFQUFFLHlEQUFnQztJQUNwRSxnQ0FBZ0MsRUFBRSx5REFBZ0M7SUFFbEUsYUFBYTtJQUNiLDRCQUE0QixFQUFFLHlEQUFnQztJQUM5RCwyQkFBMkIsRUFBRSx5REFBZ0M7SUFDN0QsMkJBQTJCLEVBQUUseURBQWdDO0lBQzdELDBCQUEwQixFQUFFLHlEQUFnQztJQUM1RCw2QkFBNkIsRUFBRSx5REFBZ0M7Q0FDaEUsQ0FBQztBQUVGOzs7OztHQUtHO0FBQ0ksS0FBSyxVQUFVLG9CQUFvQixDQUN4QyxXQUF3QixFQUN4QixRQUFrQixFQUNsQixXQUFzQyxFQUN0QyxtQkFBd0MsRUFDeEMsYUFBZ0QsRUFDaEQsV0FBd0IsRUFDeEIsd0JBQWtEO0lBRWxELE1BQU0sV0FBVyxHQUFHLE1BQU0sUUFBUSxDQUFDLElBQUksQ0FBQyxjQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDO1FBQzFELEtBQUssRUFBRSxhQUFhO1FBQ3BCLElBQUksRUFBRSxXQUFXO0tBQ2xCLENBQUMsQ0FBQztJQUVILE1BQU0sTUFBTSxHQUFHLE1BQU0saUJBQWlCLENBQ3BDLFdBQVcsRUFDWCxXQUFXLEVBQ1gsV0FBVyxFQUNYLGFBQWEsRUFDYixXQUFXLEVBQ1gsd0JBQXdCLENBQ3pCLENBQUM7SUFFRixNQUFNLFdBQVcsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7SUFFOUIsZ0ZBQWdGO0lBQ2hGLDhFQUE4RTtJQUM5RSxJQUFJLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNqQixNQUFNLE1BQU0sQ0FBQyxLQUFLLENBQUM7SUFDckIsQ0FBQztJQUVELElBQUksTUFBTSxFQUFFLFVBQVUsS0FBSyxJQUFJLEVBQUUsQ0FBQztRQUNoQyxPQUFPO1lBQ0wsSUFBSSxFQUFFLGtCQUFrQjtZQUN4QixJQUFJLEVBQUUsTUFBTSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sS0FBSyxDQUFDO1lBQzdDLFFBQVEsRUFBRSxtQkFBbUIsQ0FBQyxPQUFPO1lBQ3JDLE9BQU8sRUFBRSxtQkFBbUIsQ0FBQyxPQUFPO1NBQ3JDLENBQUM7SUFDSixDQUFDO0lBRUQsT0FBTyxTQUFTLENBQUM7QUFDbkIsQ0FBQztBQUVEOzs7R0FHRztBQUNILEtBQUssVUFBVSxpQkFBaUIsQ0FDOUIsV0FBd0IsRUFDeEIsTUFBeUIsRUFDekIsV0FBc0MsRUFDdEMsS0FBd0MsRUFDeEMsV0FBd0IsRUFDeEIsd0JBQWtEO0lBRWxELDJGQUEyRjtJQUMzRixNQUFNLFdBQVcsR0FBRyxNQUFNLFdBQVcsQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDNUUsOEdBQThHO0lBQzlHLGtHQUFrRztJQUNsRyxNQUFNLEdBQUcsR0FBRyxDQUFDLE1BQU0sV0FBVyxDQUFDLGNBQWMsQ0FBQyxXQUFXLEVBQUUsYUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO0lBRWpGLGtFQUFrRTtJQUNsRSx1RkFBdUY7SUFDdkYsTUFBTSxZQUFZLEdBQUcsTUFBTSxJQUFBLGlEQUF3QixFQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQy9HLE1BQU0sZUFBZSxHQUFHLFlBQVksSUFBSSxNQUFNLElBQUEsb0RBQW1DLEVBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBRTlGLE1BQU0sbUJBQW1CLEdBQUcsSUFBSSwrQ0FBOEIsQ0FBQztRQUM3RCxhQUFhLEVBQUUsS0FBSztRQUNwQixVQUFVLEVBQUUsV0FBVztRQUN2QixPQUFPLEVBQUUsV0FBVyxDQUFDLE9BQU87UUFDNUIsTUFBTSxFQUFFLFdBQVcsQ0FBQyxNQUFNO1FBQzFCLFNBQVMsRUFBRSxDQUFDLE1BQU0sR0FBRyxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUMsU0FBUztRQUNqRCxHQUFHO1FBQ0gsWUFBWSxFQUFFLGVBQWUsQ0FBQyxZQUFZO0tBQzNDLENBQUMsQ0FBQztJQUVILE1BQU0sWUFBWSxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLG9CQUFvQixFQUFFLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUM3RixNQUFNLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRSxHQUFHLE1BQU0sdUJBQXVCLENBQ3JFLFlBQVksRUFDWixtQkFBbUIsRUFDbkIsR0FBRyxFQUNILGVBQWUsQ0FBQyxZQUFZLEVBQUUsd0JBQXdCLENBQ3ZELENBQUM7SUFFRixNQUFNLGtCQUFrQixDQUFDLE1BQU0sRUFBRSxlQUFlLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFFL0QsTUFBTSxtQkFBbUIsR0FBRyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzVELE1BQU0sc0JBQXNCLEdBQUcsZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUVsRSxNQUFNLE1BQU0sQ0FBQyxNQUFNLENBQUMsWUFBRSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxzQkFBc0IsRUFBRTtRQUNuRSxLQUFLO1FBQ0wsSUFBSSxFQUFFLFdBQVc7UUFDakIsbUJBQW1CO1FBQ25CLHNCQUFzQjtLQUN2QixDQUFDLENBQUMsQ0FBQztJQUVKLG9DQUFvQztJQUNwQyxJQUFJLFdBQVcsS0FBSyxXQUFXLEVBQUUsQ0FBQztRQUNoQyxJQUFJLHNCQUFzQixDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUN0QyxPQUFPO2dCQUNMLEtBQUs7Z0JBQ0wsSUFBSSxFQUFFLFdBQVc7Z0JBQ2pCLFVBQVUsRUFBRSxLQUFLO2dCQUNqQixtQkFBbUI7Z0JBQ25CLHNCQUFzQjthQUN2QixDQUFDO1FBQ0osQ0FBQztJQUNILENBQUM7SUFFRCxzQ0FBc0M7SUFDdEMsSUFBSSxLQUF3QixDQUFDO0lBQzdCLElBQUksQ0FBQztRQUNILE1BQU0seUJBQXlCLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxZQUFZLENBQUMsQ0FBQztRQUMzRCxzRUFBc0U7UUFDdEUsTUFBTSxJQUFBLGtEQUF5QixFQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLFFBQVEsRUFBRSxlQUFlLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDM0gsQ0FBQztJQUFDLE9BQU8sQ0FBTSxFQUFFLENBQUM7UUFDaEIsS0FBSyxHQUFHLENBQUMsQ0FBQztJQUNaLENBQUM7SUFFRCxPQUFPO1FBQ0wsS0FBSztRQUNMLElBQUksRUFBRSxXQUFXO1FBQ2pCLFVBQVUsRUFBRSxDQUFDLEtBQUs7UUFDbEIsbUJBQW1CO1FBQ25CLHNCQUFzQjtRQUN0QixLQUFLO0tBQ04sQ0FBQztBQUNKLENBQUM7QUFPRDs7O0dBR0c7QUFDSCxLQUFLLFVBQVUsdUJBQXVCLENBQ3BDLFlBQW1DLEVBQ25DLG1CQUFtRCxFQUNuRCxHQUFRLEVBQ1IsZ0JBQXFFLEVBQ3JFLHdCQUFrRDtJQUVsRCxNQUFNLG1CQUFtQixHQUFHLDJCQUEyQixDQUFDLFlBQVksQ0FBQyxDQUFDO0lBRXRFLE1BQU0sUUFBUSxHQUEwQyxFQUFFLENBQUM7SUFDM0QsTUFBTSxxQkFBcUIsR0FBRyxJQUFJLEtBQUssRUFBb0IsQ0FBQztJQUM1RCxNQUFNLHdCQUF3QixHQUFHLElBQUksS0FBSyxFQUFrQixDQUFDO0lBQzdELE1BQU0sZ0JBQWdCLEdBQXNDLEVBQUUsQ0FBQztJQUMvRCxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7SUFFekIsS0FBSyxNQUFNLFNBQVMsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUNsRSx3QkFBd0IsQ0FBQyxJQUFJLENBQUM7WUFDNUIsWUFBWSxFQUFFLEtBQUs7WUFDbkIsTUFBTSxFQUFFO2dCQUNOLE1BQU0sRUFBRSxnQ0FBcUIsQ0FBQyxNQUFNO2dCQUNwQyxXQUFXLEVBQUUsb0JBQW9CO2dCQUNqQyxPQUFPLEVBQUU7b0JBQ1AsSUFBSSxFQUFFLFFBQVE7b0JBQ2QsU0FBUztvQkFDVCxRQUFRLEVBQUUsbUJBQW1CLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQztpQkFDckQ7YUFDRjtTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7SUFDRCwrQ0FBK0M7SUFDL0MsS0FBSyxNQUFNLENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsbUJBQW1CLENBQUMsRUFBRSxDQUFDO1FBQ3RFLElBQUksTUFBTSxDQUFDLFFBQVEsRUFBRSxJQUFJLEtBQUssNEJBQTRCLElBQUksTUFBTSxDQUFDLFFBQVEsRUFBRSxJQUFJLEtBQUssNEJBQTRCLEVBQUUsQ0FBQztZQUNySCxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLDZCQUE2QixDQUM3RCxTQUFTLEVBQ1QsTUFBTSxFQUNOLGdCQUFnQixFQUNoQixtQkFBbUIsRUFDbkIsR0FBRyxFQUNILHdCQUF3QixDQUN6QixDQUFDLENBQUMsQ0FBQztZQUNKLFNBQVM7UUFDWCxDQUFDO1FBRUQsTUFBTSwyQkFBMkIsR0FBRyx5QkFBeUIsQ0FBQyxTQUFTLEVBQUUsTUFBTSxFQUFFLG1CQUFtQixDQUFDLENBQUM7UUFDdEcsc0ZBQXNGO1FBQ3RGLElBQUksY0FBYyxJQUFJLDJCQUEyQixFQUFFLENBQUM7WUFDbEQsSUFBSSxDQUFDLDJCQUEyQixDQUFDLFlBQVksRUFBRSxDQUFDO2dCQUM5Qyx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsMkJBQTJCLENBQUMsQ0FBQztZQUM3RCxDQUFDO1lBRUQsU0FBUztRQUNYLENBQUM7UUFFRCxNQUFNLFlBQVksR0FBVywyQkFBMkIsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO1FBQ3ZFLElBQUksWUFBWSxJQUFJLGtCQUFrQixFQUFFLENBQUM7WUFDdkMsd0VBQXdFO1lBQ3hFLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQ2pCLGtCQUFrQixDQUFDLFlBQVksQ0FBQyxDQUFDLFNBQVMsRUFBRSwyQkFBMkIsRUFBRSxtQkFBbUIsRUFBRSx3QkFBd0IsQ0FBQyxDQUN4SCxDQUFDO1FBQ0osQ0FBQzthQUFNLENBQUM7WUFDTix3QkFBd0IsQ0FBQyxJQUFJLENBQUMsSUFBQSxnQ0FBdUIsRUFBQywyQkFBMkIsQ0FBQyxDQUFDLENBQUM7UUFDdEYsQ0FBQztJQUNILENBQUM7SUFFRCw0REFBNEQ7SUFDNUQsd0VBQXdFO0lBQ3hFLE1BQU0sYUFBYSxHQUFHLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQzFELEtBQUssTUFBTSxNQUFNLElBQUksYUFBYSxFQUFFLENBQUM7UUFDbkMscUJBQXFCLENBQUMsSUFBSSxDQUFDLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ25ELHdCQUF3QixDQUFDLElBQUksQ0FBQyxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRUQsTUFBTSx1QkFBdUIsR0FBMkIsRUFBRSxDQUFDO0lBQzNELHdFQUF3RTtJQUN4RSxNQUFNLGVBQWUsR0FBRyxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMzRSxLQUFLLE1BQU0sdUJBQXVCLElBQUksZUFBZSxFQUFFLENBQUM7UUFDdEQsdUJBQXVCLENBQUMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLENBQUM7SUFDeEQsQ0FBQztJQUVELEtBQUssTUFBTSx3QkFBd0IsSUFBSSx1QkFBdUIsRUFBRSxDQUFDO1FBQy9ELEtBQUssTUFBTSxjQUFjLElBQUksd0JBQXdCLEVBQUUsQ0FBQztZQUN0RCxjQUFjLENBQUMsWUFBWTtnQkFDekIsQ0FBQyxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxjQUFjLENBQUM7Z0JBQzVDLENBQUMsQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDcEQsQ0FBQztJQUNILENBQUM7SUFFRCxPQUFPO1FBQ0wsWUFBWSxFQUFFLHFCQUFxQjtRQUNuQyxlQUFlLEVBQUUsd0JBQXdCO0tBQzFDLENBQUM7QUFDSixDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILFNBQVMsMkJBQTJCLENBQUMsWUFBbUM7SUFHdEUsaUVBQWlFO0lBQ2pFLGlHQUFpRztJQUNqRyxNQUFNLGtCQUFrQixHQUFxRCxZQUFZLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQztJQUM1RyxNQUFNLGlCQUFpQixHQUFHLFVBQVUsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzdGLE1BQU0sb0JBQW9CLEdBQUcsVUFBVSxDQUFDLGtCQUFrQixFQUFFLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNqRyxLQUFLLE1BQU0sQ0FBQyxLQUFLLEVBQUUsZ0JBQWdCLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLG9CQUFvQixDQUFDLEVBQUUsQ0FBQztRQUM3RSxJQUFJLGdCQUFnQixDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ2hDLE1BQU0sU0FBUyxHQUFHLGdCQUFnQixDQUFDO1lBQ25DLHlDQUF5QztZQUN6QyxNQUFNLHNCQUFzQixHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsRUFBRSxFQUFFO2dCQUN2RixPQUFPLHlCQUF5QixDQUFDLFNBQVMsRUFBRSxTQUFTLENBQUMsQ0FBQztZQUN6RCxDQUFDLENBQUMsQ0FBQztZQUNILDJEQUEyRDtZQUMzRCxJQUFJLHNCQUFzQixFQUFFLENBQUM7Z0JBQzNCLE1BQU0sQ0FBQyxZQUFZLEVBQUUscUJBQXFCLENBQUMsR0FBRyxzQkFBc0IsQ0FBQztnQkFDckUsb0JBQW9CLENBQUMsS0FBSyxDQUFDLEdBQUcsb0JBQW9CLENBQUMscUJBQXFCLEVBQUUsU0FBUyxDQUFDLENBQUM7Z0JBQ3JGLHVEQUF1RDtnQkFDdkQsT0FBTyxpQkFBaUIsQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUN6QyxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFDRCw2REFBNkQ7SUFDN0Qsc0NBQXNDO0lBQ3RDLHVEQUF1RDtJQUN2RCxPQUFPO1FBQ0wsR0FBRyxpQkFBaUI7UUFDcEIsR0FBRyxvQkFBb0I7S0FDeEIsQ0FBQztBQUNKLENBQUM7QUFFRCx5SEFBeUg7QUFDekgsU0FBUyxVQUFVLENBQUksSUFBMEIsRUFBRSxJQUF1QjtJQUN4RSxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUNoQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFO1FBQ2hCLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDWixHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2YsQ0FBQztRQUNELE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQyxFQUNELEVBQTBCLENBQzNCLENBQUM7QUFDSixDQUFDO0FBRUQsMkRBQTJEO0FBQzNELEtBQUssVUFBVSw2QkFBNkIsQ0FDMUMsU0FBaUIsRUFDakIsTUFBbUMsRUFDbkMsb0JBQXlFLEVBQ3pFLG1CQUFtRCxFQUNuRCxHQUFRLEVBQ1Isd0JBQWtEO0lBRWxELE1BQU0sV0FBVyxHQUFHLG9CQUFvQixDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3BELElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDOUIsT0FBTztZQUNMLFlBQVksRUFBRSxFQUFFO1lBQ2hCLGVBQWUsRUFBRTtnQkFDZjtvQkFDRSxZQUFZLEVBQUUsS0FBSztvQkFDbkIsTUFBTSxFQUFFO3dCQUNOLE1BQU0sRUFBRSxnQ0FBcUIsQ0FBQyxxQkFBcUI7d0JBQ25ELFdBQVcsRUFBRSxrREFBa0Q7d0JBQy9ELE9BQU8sRUFBRTs0QkFDUCxJQUFJLEVBQUUsVUFBVTs0QkFDaEIsU0FBUzs0QkFDVCxZQUFZLEVBQUUsNEJBQTRCOzRCQUMxQyxRQUFRLEVBQUUsbUJBQW1CLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQzt5QkFDckQ7cUJBQ0Y7aUJBQ0Y7YUFDRjtTQUNGLENBQUM7SUFDSixDQUFDO0lBRUQsTUFBTSx5QkFBeUIsR0FBRyxNQUFNLG1CQUFtQixDQUFDLDBDQUEwQyxDQUNwRyxXQUFXLENBQUMsWUFBWSxFQUN4QixXQUFXLENBQUMsaUJBQWlCLEVBQzdCLE1BQU0sQ0FBQyxRQUFRLEVBQUUsVUFBVSxFQUFFLFVBQVUsQ0FDeEMsQ0FBQztJQUVGLE1BQU0sVUFBVSxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQ2xDLG9CQUFvQixDQUFDLFNBQVMsQ0FBQyxDQUFDLGdCQUFnQixFQUNoRCxvQkFBb0IsQ0FBQyxTQUFTLENBQUMsQ0FBQyxpQkFBaUIsQ0FDbEQsQ0FBQztJQUVGLE9BQU8sdUJBQXVCLENBQzVCLFVBQVUsRUFDVix5QkFBeUIsRUFDekIsR0FBRyxFQUNILG9CQUFvQixDQUFDLFNBQVMsQ0FBQyxDQUFDLG9CQUFvQixFQUNwRCx3QkFBd0IsQ0FDekIsQ0FBQztBQUNKLENBQUM7QUFFRCxvRUFBb0U7QUFDcEUsU0FBUyx5QkFBeUIsQ0FDaEMsU0FBc0MsRUFDdEMsU0FBc0M7SUFFdEMsT0FBTyxDQUNMLFNBQVMsQ0FBQyxlQUFlLEtBQUssU0FBUyxDQUFDLGVBQWU7UUFDdkQsb0dBQW9HO1FBQ3BHLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxLQUFLLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxDQUNwRixDQUFDO0FBQ0osQ0FBQztBQUVELFNBQVMsb0JBQW9CLENBQzNCLFNBQXNDLEVBQ3RDLFNBQXNDO0lBRXRDLE9BQU8sSUFBSSxRQUFRLENBQUMsa0JBQWtCO0lBQ3BDLDJHQUEyRztJQUMzRyxTQUFTLENBQUMsUUFBUSxFQUNsQixTQUFTLENBQUMsUUFBUSxFQUNsQjtRQUNFLFlBQVksRUFBRTtZQUNaLE9BQU8sRUFBRSxTQUFTLENBQUMsZUFBZTtZQUNsQyxPQUFPLEVBQUUsU0FBUyxDQUFDLGVBQWU7U0FDbkM7UUFDRCxhQUFhLEVBQUcsU0FBaUIsQ0FBQyxhQUFhO1FBQy9DLFVBQVUsRUFBRyxTQUFpQixDQUFDLFVBQVU7S0FDMUMsQ0FDRixDQUFDO0FBQ0osQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxTQUFTLHlCQUF5QixDQUNoQyxTQUFpQixFQUNqQixNQUFtQyxFQUNuQyxtQkFBbUQ7SUFFbkQsK0ZBQStGO0lBQy9GLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDckIsT0FBTztZQUNMLFlBQVksRUFBRSxLQUFLO1lBQ25CLE1BQU0sRUFBRTtnQkFDTixNQUFNLEVBQUUsZ0NBQXFCLENBQUMsaUJBQWlCO2dCQUMvQyxXQUFXLEVBQUUsYUFBYSxTQUFTLGtDQUFrQztnQkFDckUsT0FBTyxFQUFFO29CQUNQLElBQUksRUFBRSxVQUFVO29CQUNoQixTQUFTO29CQUNULFlBQVksRUFBRSxNQUFNLENBQUMsUUFBUyxDQUFDLElBQUk7b0JBQ25DLFFBQVEsRUFBRSxtQkFBbUIsQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDO2lCQUNyRDthQUNGO1NBQ0YsQ0FBQztJQUNKLENBQUM7U0FBTSxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQzVCLE9BQU87WUFDTCxZQUFZLEVBQUUsS0FBSztZQUNuQixTQUFTO1lBQ1QsTUFBTSxFQUFFO2dCQUNOLE1BQU0sRUFBRSxnQ0FBcUIsQ0FBQyxpQkFBaUI7Z0JBQy9DLFdBQVcsRUFBRSxhQUFhLFNBQVMsb0NBQW9DO2dCQUN2RSxPQUFPLEVBQUU7b0JBQ1AsSUFBSSxFQUFFLFVBQVU7b0JBQ2hCLFNBQVM7b0JBQ1QsWUFBWSxFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSTtvQkFDbEMsUUFBUSxFQUFFLG1CQUFtQixDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUM7aUJBQ3JEO2FBQ0Y7U0FDRixDQUFDO0lBQ0osQ0FBQztJQUVELHNDQUFzQztJQUN0QyxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxLQUFLLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDbEQsT0FBTztZQUNMLFlBQVksRUFBRSxLQUFLO1lBQ25CLE1BQU0sRUFBRTtnQkFDTixNQUFNLEVBQUUsZ0NBQXFCLENBQUMscUJBQXFCO2dCQUNuRCxXQUFXLEVBQUUsYUFBYSxTQUFTLGdDQUFnQyxNQUFNLENBQUMsUUFBUSxFQUFFLElBQUksU0FBUyxNQUFNLENBQUMsUUFBUSxFQUFFLElBQUksR0FBRztnQkFDekgsT0FBTyxFQUFFO29CQUNQLElBQUksRUFBRSxVQUFVO29CQUNoQixTQUFTO29CQUNULFlBQVksRUFBRSxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUk7b0JBQ2xDLFFBQVEsRUFBRSxtQkFBbUIsQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDO2lCQUNyRDthQUNGO1NBQ0YsQ0FBQztJQUNKLENBQUM7SUFFRCxPQUFPO1FBQ0wsU0FBUztRQUNULFFBQVEsRUFBRSxNQUFNLENBQUMsUUFBUTtRQUN6QixRQUFRLEVBQUUsTUFBTSxDQUFDLFFBQVE7UUFDekIsZUFBZSxFQUFFLE1BQU0sQ0FBQyxlQUFlO1FBQ3ZDLFFBQVEsRUFBRSxtQkFBbUIsQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDO0tBQ3JELENBQUM7QUFDSixDQUFDO0FBRUQsS0FBSyxVQUFVLHlCQUF5QixDQUFDLEdBQVEsRUFBRSxNQUF5QixFQUFFLG1CQUF1QztJQUNuSCxJQUFJLG1CQUFtQixDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUNyQyxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVELE1BQU0sTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxhQUFJLHlCQUF5QixDQUFDLENBQUM7SUFDL0QsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3pCLHdFQUF3RTtJQUN4RSxPQUFPLE9BQU8sQ0FBQyxHQUFHLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFO1FBQ3hFLE9BQU8scUJBQXFCLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO0lBQzlELENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNQLENBQUM7QUFFRCxLQUFLLFVBQVUscUJBQXFCLENBQUMsR0FBUSxFQUFFLE1BQXlCLEVBQUUsZ0JBQWtDO0lBQzFHLDhFQUE4RTtJQUM5RSxNQUFNLGVBQWUsR0FBRyx1QkFBdUIsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDMUUsR0FBRyxDQUFDLHFCQUFxQixDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQzNDLE1BQU0sWUFBWSxHQUFHLENBQUMsQ0FBbUIsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFdBQVcsSUFBSSxHQUFHLENBQUMsQ0FBQyxZQUFZLEtBQUssQ0FBQyxDQUFDLFlBQVksSUFBSSxDQUFDLENBQUMsU0FBUyxHQUFHLENBQUM7SUFFdEgsTUFBTSxNQUFNLENBQUMsTUFBTSxDQUFDLFlBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQzFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBQSxhQUFNLEVBQUMsTUFBTSxhQUFJLEtBQUssRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQzNHLGdCQUFnQixDQUFDLE1BQU0sQ0FDeEIsQ0FBQyxDQUFDO0lBRUgsNERBQTREO0lBQzVELHFFQUFxRTtJQUNyRSxJQUFJLENBQUM7UUFDSCxNQUFNLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBQUMsT0FBTyxDQUFNLEVBQUUsQ0FBQztRQUNoQixJQUFJLENBQUMsQ0FBQyxJQUFJLEtBQUssY0FBYyxJQUFJLENBQUMsQ0FBQyxJQUFJLEtBQUssWUFBWSxFQUFFLENBQUM7WUFDekQsTUFBTSxNQUFNLEdBQWlCLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBQSx5QkFBa0IsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQy9ELE1BQU0sS0FBSyxHQUFHLElBQUksNEJBQVksQ0FBQyxxQkFBcUIsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1lBQ3ZGLEtBQUssQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQztZQUNwQixNQUFNLEtBQUssQ0FBQztRQUNkLENBQUM7UUFDRCxNQUFNLENBQUMsQ0FBQztJQUNWLENBQUM7SUFFRCxNQUFNLE1BQU0sQ0FBQyxNQUFNLENBQUMsWUFBRSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FDMUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFBLGFBQU0sRUFBQyxNQUFNLGFBQUksUUFBUSxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUMxSSxnQkFBZ0IsQ0FBQyxNQUFNLENBQ3hCLENBQUMsQ0FBQztJQUVILEdBQUcsQ0FBQyxxQkFBcUIsQ0FBQyxlQUFlLENBQUMsQ0FBQztBQUM3QyxDQUFDO0FBRUQsU0FBUyx1QkFBdUIsQ0FBQyxNQUFvQjtJQUNuRCxNQUFNLElBQUksR0FBRztRQUNYLCtEQUErRCxNQUFNLENBQUMsS0FBSyxFQUFFO1FBQzdFLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFO0tBQ3pDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRWIsSUFBSSxNQUFNLENBQUMsaUJBQWlCLElBQUksSUFBSSxFQUFFLENBQUM7UUFDckMsTUFBTSxpQkFBaUIsR0FBRyxNQUFNO2FBQzdCLE9BQU8sQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUM7YUFDakMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLE9BQU8sR0FBRyxLQUFLLEtBQUssR0FBRyxDQUFDO2FBQzlDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVkLE9BQU8sR0FBRyxJQUFJLHlCQUF5QixpQkFBaUIsRUFBRSxDQUFDO0lBQzdELENBQUM7SUFFRCxPQUFPLElBQUksQ0FBQztBQUNkLENBQUM7QUFFRCxLQUFLLFVBQVUsa0JBQWtCLENBQy9CLE1BQXlCLEVBQ3pCLGVBQWlDLEVBQ2pDLFdBQXdCO0lBRXhCLElBQUksZUFBZSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUNqQyxPQUFPO0lBQ1QsQ0FBQztJQUNEOzs7Ozs7T0FNRztJQUNILElBQUksV0FBVyxLQUFLLGNBQWMsRUFBRSxDQUFDO1FBQ25DLGVBQWUsR0FBRyxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsa0JBQWtCLEtBQUssSUFBSSxDQUFDLENBQUM7UUFFekYsSUFBSSxlQUFlLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ2pDLE9BQU87UUFDVCxDQUFDO0lBQ0gsQ0FBQztJQUVELE1BQU0sUUFBUSxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyx3QkFBd0I7SUFFL0MsSUFBSSxXQUFXLEtBQUssY0FBYyxFQUFFLENBQUM7UUFDbkMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFBLGFBQU0sRUFBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLHdIQUF3SCxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3ZMLENBQUM7U0FBTSxDQUFDO1FBQ04sUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFBLGFBQU0sRUFBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLG9EQUFvRCxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ25ILENBQUM7SUFFRCxLQUFLLE1BQU0sRUFBRSxNQUFNLEVBQUUsSUFBSSxlQUFlLEVBQUUsQ0FBQztRQUN6QyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyw0QkFBNEIsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFDRCxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsVUFBVTtJQUU3QixNQUFNLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUNsRCxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFTLDRCQUE0QixDQUFDLE1BQTZCO0lBQ2pFLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUM7SUFDL0IsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLFdBQVcsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDO0lBRW5ELFFBQVEsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3JCLEtBQUssUUFBUTtZQUNYLE9BQU8sSUFBQSxhQUFNLEVBQ1gsd0JBQXdCLEVBQ3hCLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUM3QixLQUFLLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUNsQixDQUFDO1FBQ0osS0FBSyxVQUFVO1lBQ2IsT0FBTyw4QkFBOEIsQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDM0QsQ0FBQztBQUNILENBQUM7QUFFRDs7R0FFRztBQUNILFNBQVMsOEJBQThCLENBQUMsT0FBd0IsRUFBRSxNQUFjO0lBQzlFLElBQUksT0FBTyxDQUFDLGtCQUFrQixFQUFFLE1BQU0sRUFBRSxDQUFDO1FBQ3ZDLE9BQU8sSUFBQSxhQUFNLEVBQ1gsMERBQTBELEVBQzFELEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUM3QixLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsRUFDaEMsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsa0JBQWtCLENBQUMsRUFDdEMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FDbEIsQ0FBQztJQUNKLENBQUM7SUFFRCxPQUFPLElBQUEsYUFBTSxFQUNYLG9DQUFvQyxFQUNwQyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFDN0IsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLEVBQ2hDLEtBQUssQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQ2xCLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZm9ybWF0IH0gZnJvbSAndXRpbCc7XG5pbXBvcnQgdHlwZSAqIGFzIGN4YXBpIGZyb20gJ0Bhd3MtY2RrL2Nsb3VkLWFzc2VtYmx5LWFwaSc7XG5pbXBvcnQgKiBhcyBjZm5fZGlmZiBmcm9tICdAYXdzLWNkay9jbG91ZGZvcm1hdGlvbi1kaWZmJztcbmltcG9ydCB0eXBlIHsgV2FpdGVyUmVzdWx0IH0gZnJvbSAnQHNtaXRoeS91dGlsLXdhaXRlcic7XG5pbXBvcnQgKiBhcyBjaGFsayBmcm9tICdjaGFsayc7XG5pbXBvcnQgeyBOb25Ib3Rzd2FwcGFibGVSZWFzb24gfSBmcm9tICcuLi8uLi9wYXlsb2Fkcyc7XG5pbXBvcnQgeyBmb3JtYXRFcnJvck1lc3NhZ2UgfSBmcm9tICcuLi8uLi91dGlsJztcbmltcG9ydCB0eXBlIHsgU0RLLCBTZGtQcm92aWRlciB9IGZyb20gJy4uL2F3cy1hdXRoL3ByaXZhdGUnO1xuaW1wb3J0IHR5cGUgeyBDbG91ZEZvcm1hdGlvblN0YWNrLCBOZXN0ZWRTdGFja1RlbXBsYXRlcyB9IGZyb20gJy4uL2Nsb3VkZm9ybWF0aW9uJztcbmltcG9ydCB7IGxvYWRDdXJyZW50VGVtcGxhdGVXaXRoTmVzdGVkU3RhY2tzLCBFdmFsdWF0ZUNsb3VkRm9ybWF0aW9uVGVtcGxhdGUgfSBmcm9tICcuLi9jbG91ZGZvcm1hdGlvbic7XG5pbXBvcnQgeyBpc0hvdHN3YXBwYWJsZUFwcFN5bmNDaGFuZ2UgfSBmcm9tICcuL2FwcHN5bmMtbWFwcGluZy10ZW1wbGF0ZXMnO1xuaW1wb3J0IHsgaXNIb3Rzd2FwcGFibGVDb2RlQnVpbGRQcm9qZWN0Q2hhbmdlIH0gZnJvbSAnLi9jb2RlLWJ1aWxkLXByb2plY3RzJztcbmltcG9ydCB0eXBlIHtcbiAgSG90c3dhcENoYW5nZSxcbiAgSG90c3dhcE9wZXJhdGlvbixcbiAgUmVqZWN0ZWRDaGFuZ2UsXG4gIEhvdHN3YXBQcm9wZXJ0eU92ZXJyaWRlcyxcbn0gZnJvbSAnLi9jb21tb24nO1xuaW1wb3J0IHtcbiAgSUNPTixcbiAgbm9uSG90c3dhcHBhYmxlUmVzb3VyY2UsXG59IGZyb20gJy4vY29tbW9uJztcbmltcG9ydCB7IGlzSG90c3dhcHBhYmxlRWNzU2VydmljZUNoYW5nZSB9IGZyb20gJy4vZWNzLXNlcnZpY2VzJztcbmltcG9ydCB7IHJlYWRIb3Rzd2FwVGVtcGxhdGVDYWNoZSwgd3JpdGVIb3Rzd2FwVGVtcGxhdGVDYWNoZSB9IGZyb20gJy4vaG90c3dhcC10ZW1wbGF0ZS1jYWNoZSc7XG5pbXBvcnQgeyBpc0hvdHN3YXBwYWJsZUxhbWJkYUZ1bmN0aW9uQ2hhbmdlIH0gZnJvbSAnLi9sYW1iZGEtZnVuY3Rpb25zJztcbmltcG9ydCB7XG4gIHNraXBDaGFuZ2VGb3JTM0RlcGxveUN1c3RvbVJlc291cmNlUG9saWN5LFxuICBpc0hvdHN3YXBwYWJsZVMzQnVja2V0RGVwbG95bWVudENoYW5nZSxcbn0gZnJvbSAnLi9zMy1idWNrZXQtZGVwbG95bWVudHMnO1xuaW1wb3J0IHR5cGUgeyBBZmZlY3RlZFJlc291cmNlLCBIb3Rzd2FwUmVzdWx0LCBSZXNvdXJjZVN1YmplY3QsIFJlc291cmNlQ2hhbmdlLCBOb25Ib3Rzd2FwcGFibGVDaGFuZ2UgfSBmcm9tICcuLi8uLi9wYXlsb2Fkcyc7XG5pbXBvcnQgeyBUb29sa2l0RXJyb3IgfSBmcm9tICcuLi8uLi90b29sa2l0L3Rvb2xraXQtZXJyb3InO1xuaW1wb3J0IHR5cGUgeyBTdWNjZXNzZnVsRGVwbG95U3RhY2tSZXN1bHQgfSBmcm9tICcuLi9kZXBsb3ltZW50cyc7XG5pbXBvcnQgeyBJTywgU1BBTiB9IGZyb20gJy4uL2lvL3ByaXZhdGUnO1xuaW1wb3J0IHR5cGUgeyBJTWVzc2FnZVNwYW4sIElvSGVscGVyIH0gZnJvbSAnLi4vaW8vcHJpdmF0ZSc7XG5pbXBvcnQgeyBNb2RlIH0gZnJvbSAnLi4vcGx1Z2luJztcbmltcG9ydCB7IGlzSG90c3dhcHBhYmxlQ2xvdWRDb250cm9sQ2hhbmdlIH0gZnJvbSAnLi9jbG91ZC1jb250cm9sLXJlc291cmNlJztcblxuLy8gTXVzdCB1c2UgYSByZXF1aXJlKCkgb3RoZXJ3aXNlIGVzYnVpbGQgY29tcGxhaW5zIGFib3V0IGNhbGxpbmcgYSBuYW1lc3BhY2Vcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tcmVxdWlyZS1pbXBvcnRzLEB0eXBlc2NyaXB0LWVzbGludC9jb25zaXN0ZW50LXR5cGUtaW1wb3J0c1xuY29uc3QgcExpbWl0OiB0eXBlb2YgaW1wb3J0KCdwLWxpbWl0JykgPSByZXF1aXJlKCdwLWxpbWl0Jyk7XG5cbnR5cGUgSG90c3dhcERldGVjdG9yID0gKFxuICBsb2dpY2FsSWQ6IHN0cmluZyxcbiAgY2hhbmdlOiBSZXNvdXJjZUNoYW5nZSxcbiAgZXZhbHVhdGVDZm5UZW1wbGF0ZTogRXZhbHVhdGVDbG91ZEZvcm1hdGlvblRlbXBsYXRlLFxuICBob3Rzd2FwUHJvcGVydHlPdmVycmlkZXM6IEhvdHN3YXBQcm9wZXJ0eU92ZXJyaWRlcyxcbikgPT4gUHJvbWlzZTxIb3Rzd2FwQ2hhbmdlW10+O1xuXG50eXBlIEhvdHN3YXBNb2RlID0gJ2hvdHN3YXAtb25seScgfCAnZmFsbC1iYWNrJztcblxuY29uc3QgUkVTT1VSQ0VfREVURUNUT1JTOiB7IFtrZXk6IHN0cmluZ106IEhvdHN3YXBEZXRlY3RvciB9ID0ge1xuICAvLyBMYW1iZGFcbiAgJ0FXUzo6TGFtYmRhOjpGdW5jdGlvbic6IGlzSG90c3dhcHBhYmxlTGFtYmRhRnVuY3Rpb25DaGFuZ2UsXG4gICdBV1M6OkxhbWJkYTo6VmVyc2lvbic6IGlzSG90c3dhcHBhYmxlTGFtYmRhRnVuY3Rpb25DaGFuZ2UsXG4gICdBV1M6OkxhbWJkYTo6QWxpYXMnOiBpc0hvdHN3YXBwYWJsZUxhbWJkYUZ1bmN0aW9uQ2hhbmdlLFxuXG4gIC8vIEFwcFN5bmNcbiAgJ0FXUzo6QXBwU3luYzo6UmVzb2x2ZXInOiBpc0hvdHN3YXBwYWJsZUFwcFN5bmNDaGFuZ2UsXG4gICdBV1M6OkFwcFN5bmM6OkZ1bmN0aW9uQ29uZmlndXJhdGlvbic6IGlzSG90c3dhcHBhYmxlQXBwU3luY0NoYW5nZSxcbiAgJ0FXUzo6QXBwU3luYzo6R3JhcGhRTFNjaGVtYSc6IGlzSG90c3dhcHBhYmxlQXBwU3luY0NoYW5nZSxcbiAgJ0FXUzo6QXBwU3luYzo6QXBpS2V5JzogaXNIb3Rzd2FwcGFibGVBcHBTeW5jQ2hhbmdlLFxuXG4gICdBV1M6OkVDUzo6VGFza0RlZmluaXRpb24nOiBpc0hvdHN3YXBwYWJsZUVjc1NlcnZpY2VDaGFuZ2UsXG4gICdBV1M6OkNvZGVCdWlsZDo6UHJvamVjdCc6IGlzSG90c3dhcHBhYmxlQ29kZUJ1aWxkUHJvamVjdENoYW5nZSxcbiAgJ0N1c3RvbTo6Q0RLQnVja2V0RGVwbG95bWVudCc6IGlzSG90c3dhcHBhYmxlUzNCdWNrZXREZXBsb3ltZW50Q2hhbmdlLFxuICAnQVdTOjpJQU06OlBvbGljeSc6IGFzeW5jIChcbiAgICBsb2dpY2FsSWQ6IHN0cmluZyxcbiAgICBjaGFuZ2U6IFJlc291cmNlQ2hhbmdlLFxuICAgIGV2YWx1YXRlQ2ZuVGVtcGxhdGU6IEV2YWx1YXRlQ2xvdWRGb3JtYXRpb25UZW1wbGF0ZSxcbiAgKTogUHJvbWlzZTxIb3Rzd2FwQ2hhbmdlW10+ID0+IHtcbiAgICAvLyBJZiB0aGUgcG9saWN5IGlzIGZvciBhIFMzQnVja2V0RGVwbG95bWVudENoYW5nZSwgd2UgY2FuIGlnbm9yZSB0aGUgY2hhbmdlXG4gICAgaWYgKGF3YWl0IHNraXBDaGFuZ2VGb3JTM0RlcGxveUN1c3RvbVJlc291cmNlUG9saWN5KGxvZ2ljYWxJZCwgY2hhbmdlLCBldmFsdWF0ZUNmblRlbXBsYXRlKSkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIHJldHVybiBbbm9uSG90c3dhcHBhYmxlUmVzb3VyY2UoY2hhbmdlKV07XG4gIH0sXG5cbiAgJ0FXUzo6Q0RLOjpNZXRhZGF0YSc6IGFzeW5jICgpID0+IFtdLFxuXG4gIC8vIFJlc291cmNlcyB0aGF0IHVzZSBDQ0FQSVNcbiAgJ0FXUzo6QXBpR2F0ZXdheTo6UmVzdEFwaSc6IGlzSG90c3dhcHBhYmxlQ2xvdWRDb250cm9sQ2hhbmdlLFxuICAnQVdTOjpBcGlHYXRld2F5OjpEZXBsb3ltZW50JzogaXNIb3Rzd2FwcGFibGVDbG91ZENvbnRyb2xDaGFuZ2UsXG4gICdBV1M6OkFwaUdhdGV3YXk6Ok1ldGhvZCc6IGlzSG90c3dhcHBhYmxlQ2xvdWRDb250cm9sQ2hhbmdlLFxuICAnQVdTOjpBcGlHYXRld2F5VjI6OkFwaSc6IGlzSG90c3dhcHBhYmxlQ2xvdWRDb250cm9sQ2hhbmdlLFxuICAnQVdTOjpBcGlHYXRld2F5VjI6OkludGVncmF0aW9uJzogaXNIb3Rzd2FwcGFibGVDbG91ZENvbnRyb2xDaGFuZ2UsXG4gICdBV1M6OkJlZHJvY2s6OkFnZW50JzogaXNIb3Rzd2FwcGFibGVDbG91ZENvbnRyb2xDaGFuZ2UsXG4gICdBV1M6OkV2ZW50czo6UnVsZSc6IGlzSG90c3dhcHBhYmxlQ2xvdWRDb250cm9sQ2hhbmdlLFxuICAnQVdTOjpEeW5hbW9EQjo6VGFibGUnOiBpc0hvdHN3YXBwYWJsZUNsb3VkQ29udHJvbENoYW5nZSxcbiAgJ0FXUzo6RHluYW1vREI6Okdsb2JhbFRhYmxlJzogaXNIb3Rzd2FwcGFibGVDbG91ZENvbnRyb2xDaGFuZ2UsXG4gICdBV1M6OlNRUzo6UXVldWUnOiBpc0hvdHN3YXBwYWJsZUNsb3VkQ29udHJvbENoYW5nZSxcbiAgJ0FXUzo6Q2xvdWRXYXRjaDo6QWxhcm0nOiBpc0hvdHN3YXBwYWJsZUNsb3VkQ29udHJvbENoYW5nZSxcbiAgJ0FXUzo6Q2xvdWRXYXRjaDo6Q29tcG9zaXRlQWxhcm0nOiBpc0hvdHN3YXBwYWJsZUNsb3VkQ29udHJvbENoYW5nZSxcbiAgJ0FXUzo6Q2xvdWRXYXRjaDo6RGFzaGJvYXJkJzogaXNIb3Rzd2FwcGFibGVDbG91ZENvbnRyb2xDaGFuZ2UsXG4gICdBV1M6OlN0ZXBGdW5jdGlvbnM6OlN0YXRlTWFjaGluZSc6IGlzSG90c3dhcHBhYmxlQ2xvdWRDb250cm9sQ2hhbmdlLFxuICAnQVdTOjpCZWRyb2NrQWdlbnRDb3JlOjpSdW50aW1lJzogaXNIb3Rzd2FwcGFibGVDbG91ZENvbnRyb2xDaGFuZ2UsXG5cbiAgLy8gUXVpY2tTaWdodFxuICAnQVdTOjpRdWlja1NpZ2h0OjpEYXNoYm9hcmQnOiBpc0hvdHN3YXBwYWJsZUNsb3VkQ29udHJvbENoYW5nZSxcbiAgJ0FXUzo6UXVpY2tTaWdodDo6QW5hbHlzaXMnOiBpc0hvdHN3YXBwYWJsZUNsb3VkQ29udHJvbENoYW5nZSxcbiAgJ0FXUzo6UXVpY2tTaWdodDo6VGVtcGxhdGUnOiBpc0hvdHN3YXBwYWJsZUNsb3VkQ29udHJvbENoYW5nZSxcbiAgJ0FXUzo6UXVpY2tTaWdodDo6RGF0YVNldCc6IGlzSG90c3dhcHBhYmxlQ2xvdWRDb250cm9sQ2hhbmdlLFxuICAnQVdTOjpRdWlja1NpZ2h0OjpEYXRhU291cmNlJzogaXNIb3Rzd2FwcGFibGVDbG91ZENvbnRyb2xDaGFuZ2UsXG59O1xuXG4vKipcbiAqIFBlcmZvcm0gYSBob3Rzd2FwIGRlcGxveW1lbnQsIHNob3J0LWNpcmN1aXRpbmcgQ2xvdWRGb3JtYXRpb24gaWYgcG9zc2libGUuXG4gKiBJZiBpdCdzIG5vdCBwb3NzaWJsZSB0byBzaG9ydC1jaXJjdWl0IHRoZSBkZXBsb3ltZW50XG4gKiAoYmVjYXVzZSB0aGUgQ0RLIFN0YWNrIGNvbnRhaW5zIGNoYW5nZXMgdGhhdCBjYW5ub3QgYmUgZGVwbG95ZWQgd2l0aG91dCBDbG91ZEZvcm1hdGlvbiksXG4gKiByZXR1cm5zIGB1bmRlZmluZWRgLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdHJ5SG90c3dhcERlcGxveW1lbnQoXG4gIHNka1Byb3ZpZGVyOiBTZGtQcm92aWRlcixcbiAgaW9IZWxwZXI6IElvSGVscGVyLFxuICBhc3NldFBhcmFtczogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSxcbiAgY2xvdWRGb3JtYXRpb25TdGFjazogQ2xvdWRGb3JtYXRpb25TdGFjayxcbiAgc3RhY2tBcnRpZmFjdDogY3hhcGkuQ2xvdWRGb3JtYXRpb25TdGFja0FydGlmYWN0LFxuICBob3Rzd2FwTW9kZTogSG90c3dhcE1vZGUsXG4gIGhvdHN3YXBQcm9wZXJ0eU92ZXJyaWRlczogSG90c3dhcFByb3BlcnR5T3ZlcnJpZGVzLFxuKTogUHJvbWlzZTxTdWNjZXNzZnVsRGVwbG95U3RhY2tSZXN1bHQgfCB1bmRlZmluZWQ+IHtcbiAgY29uc3QgaG90c3dhcFNwYW4gPSBhd2FpdCBpb0hlbHBlci5zcGFuKFNQQU4uSE9UU1dBUCkuYmVnaW4oe1xuICAgIHN0YWNrOiBzdGFja0FydGlmYWN0LFxuICAgIG1vZGU6IGhvdHN3YXBNb2RlLFxuICB9KTtcblxuICBjb25zdCByZXN1bHQgPSBhd2FpdCBob3Rzd2FwRGVwbG95bWVudChcbiAgICBzZGtQcm92aWRlcixcbiAgICBob3Rzd2FwU3BhbixcbiAgICBhc3NldFBhcmFtcyxcbiAgICBzdGFja0FydGlmYWN0LFxuICAgIGhvdHN3YXBNb2RlLFxuICAgIGhvdHN3YXBQcm9wZXJ0eU92ZXJyaWRlcyxcbiAgKTtcblxuICBhd2FpdCBob3Rzd2FwU3Bhbi5lbmQocmVzdWx0KTtcblxuICAvLyBUaGlzIGlzIGEgaG90c3dhcCBlcnJvciB0aGF0IHdhcyBjYXVnaHQgZHVyaW5nIHRoZSBob3Rzd2FwRGVwbG95bWVudCBmdW5jdGlvblxuICAvLyBJdCBpcyB0aHJvd24gYWZ0ZXIgdGhlIGhvdHN3YXAgc3BhbiBlbmRzIHNvIGl0IGNhbiBiZSByZXBvcnRlZCB0byB0ZWxlbWV0cnlcbiAgaWYgKHJlc3VsdC5lcnJvcikge1xuICAgIHRocm93IHJlc3VsdC5lcnJvcjtcbiAgfVxuXG4gIGlmIChyZXN1bHQ/LmhvdHN3YXBwZWQgPT09IHRydWUpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogJ2RpZC1kZXBsb3ktc3RhY2snLFxuICAgICAgbm9PcDogcmVzdWx0LmhvdHN3YXBwYWJsZUNoYW5nZXMubGVuZ3RoID09PSAwLFxuICAgICAgc3RhY2tBcm46IGNsb3VkRm9ybWF0aW9uU3RhY2suc3RhY2tJZCxcbiAgICAgIG91dHB1dHM6IGNsb3VkRm9ybWF0aW9uU3RhY2sub3V0cHV0cyxcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBQZXJmb3JtIGEgaG90c3dhcCBkZXBsb3ltZW50LCBzaG9ydC1jaXJjdWl0aW5nIENsb3VkRm9ybWF0aW9uIGlmIHBvc3NpYmxlLlxuICogUmV0dXJucyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgYXR0ZW1wdGVkIGhvdHN3YXAgZGVwbG95bWVudFxuICovXG5hc3luYyBmdW5jdGlvbiBob3Rzd2FwRGVwbG95bWVudChcbiAgc2RrUHJvdmlkZXI6IFNka1Byb3ZpZGVyLFxuICBpb1NwYW46IElNZXNzYWdlU3Bhbjxhbnk+LFxuICBhc3NldFBhcmFtczogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSxcbiAgc3RhY2s6IGN4YXBpLkNsb3VkRm9ybWF0aW9uU3RhY2tBcnRpZmFjdCxcbiAgaG90c3dhcE1vZGU6IEhvdHN3YXBNb2RlLFxuICBob3Rzd2FwUHJvcGVydHlPdmVycmlkZXM6IEhvdHN3YXBQcm9wZXJ0eU92ZXJyaWRlcyxcbik6IFByb21pc2U8T21pdDxIb3Rzd2FwUmVzdWx0LCAnZHVyYXRpb24nPj4ge1xuICAvLyByZXNvbHZlIHRoZSBlbnZpcm9ubWVudCwgc28gd2UgY2FuIHN1YnN0aXR1dGUgdGhpbmdzIGxpa2UgQVdTOjpSZWdpb24gaW4gQ0ZOIGV4cHJlc3Npb25zXG4gIGNvbnN0IHJlc29sdmVkRW52ID0gYXdhaXQgc2RrUHJvdmlkZXIucmVzb2x2ZUVudmlyb25tZW50KHN0YWNrLmVudmlyb25tZW50KTtcbiAgLy8gY3JlYXRlIGEgbmV3IFNESyB1c2luZyB0aGUgQ0xJIGNyZWRlbnRpYWxzLCBiZWNhdXNlIHRoZSBkZWZhdWx0IG9uZSB3aWxsIG5vdCB3b3JrIGZvciBuZXctc3R5bGUgc3ludGhlc2lzIC1cbiAgLy8gaXQgYXNzdW1lcyB0aGUgYm9vdHN0cmFwIGRlcGxveSBSb2xlLCB3aGljaCBkb2Vzbid0IGhhdmUgcGVybWlzc2lvbnMgdG8gdXBkYXRlIExhbWJkYSBmdW5jdGlvbnNcbiAgY29uc3Qgc2RrID0gKGF3YWl0IHNka1Byb3ZpZGVyLmZvckVudmlyb25tZW50KHJlc29sdmVkRW52LCBNb2RlLkZvcldyaXRpbmcpKS5zZGs7XG5cbiAgLy8gQ2hlY2sgZm9yIGEgY2FjaGVkIHRlbXBsYXRlIGZyb20gYSBwcmV2aW91cyBob3Rzd2FwIGRlcGxveW1lbnQuXG4gIC8vIFVzZSBpZiBhdmFpbGFibGUsIHJlcHJlc2VudHMgdGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhlIHJlc291cmNlcyBpbnZvbHZlZCBpbiBob3Rzd2FwLlxuICBjb25zdCBob3Rzd2FwQ2FjaGUgPSBhd2FpdCByZWFkSG90c3dhcFRlbXBsYXRlQ2FjaGUoc3RhY2suYXNzZW1ibHkuZGlyZWN0b3J5LCBzdGFjay5zdGFja05hbWUsIHN0YWNrLnRlbXBsYXRlKTtcbiAgY29uc3QgY3VycmVudFRlbXBsYXRlID0gaG90c3dhcENhY2hlID8/IGF3YWl0IGxvYWRDdXJyZW50VGVtcGxhdGVXaXRoTmVzdGVkU3RhY2tzKHN0YWNrLCBzZGspO1xuXG4gIGNvbnN0IGV2YWx1YXRlQ2ZuVGVtcGxhdGUgPSBuZXcgRXZhbHVhdGVDbG91ZEZvcm1hdGlvblRlbXBsYXRlKHtcbiAgICBzdGFja0FydGlmYWN0OiBzdGFjayxcbiAgICBwYXJhbWV0ZXJzOiBhc3NldFBhcmFtcyxcbiAgICBhY2NvdW50OiByZXNvbHZlZEVudi5hY2NvdW50LFxuICAgIHJlZ2lvbjogcmVzb2x2ZWRFbnYucmVnaW9uLFxuICAgIHBhcnRpdGlvbjogKGF3YWl0IHNkay5jdXJyZW50QWNjb3VudCgpKS5wYXJ0aXRpb24sXG4gICAgc2RrLFxuICAgIG5lc3RlZFN0YWNrczogY3VycmVudFRlbXBsYXRlLm5lc3RlZFN0YWNrcyxcbiAgfSk7XG5cbiAgY29uc3Qgc3RhY2tDaGFuZ2VzID0gY2ZuX2RpZmYuZnVsbERpZmYoY3VycmVudFRlbXBsYXRlLmRlcGxveWVkUm9vdFRlbXBsYXRlLCBzdGFjay50ZW1wbGF0ZSk7XG4gIGNvbnN0IHsgaG90c3dhcHBhYmxlLCBub25Ib3Rzd2FwcGFibGUgfSA9IGF3YWl0IGNsYXNzaWZ5UmVzb3VyY2VDaGFuZ2VzKFxuICAgIHN0YWNrQ2hhbmdlcyxcbiAgICBldmFsdWF0ZUNmblRlbXBsYXRlLFxuICAgIHNkayxcbiAgICBjdXJyZW50VGVtcGxhdGUubmVzdGVkU3RhY2tzLCBob3Rzd2FwUHJvcGVydHlPdmVycmlkZXMsXG4gICk7XG5cbiAgYXdhaXQgbG9nUmVqZWN0ZWRDaGFuZ2VzKGlvU3Bhbiwgbm9uSG90c3dhcHBhYmxlLCBob3Rzd2FwTW9kZSk7XG5cbiAgY29uc3QgaG90c3dhcHBhYmxlQ2hhbmdlcyA9IGhvdHN3YXBwYWJsZS5tYXAobyA9PiBvLmNoYW5nZSk7XG4gIGNvbnN0IG5vbkhvdHN3YXBwYWJsZUNoYW5nZXMgPSBub25Ib3Rzd2FwcGFibGUubWFwKG4gPT4gbi5jaGFuZ2UpO1xuXG4gIGF3YWl0IGlvU3Bhbi5ub3RpZnkoSU8uQ0RLX1RPT0xLSVRfSTU0MDEubXNnKCdIb3Rzd2FwIHBsYW4gY3JlYXRlZCcsIHtcbiAgICBzdGFjayxcbiAgICBtb2RlOiBob3Rzd2FwTW9kZSxcbiAgICBob3Rzd2FwcGFibGVDaGFuZ2VzLFxuICAgIG5vbkhvdHN3YXBwYWJsZUNoYW5nZXMsXG4gIH0pKTtcblxuICAvLyBwcmVzZXJ2ZSBjbGFzc2ljIGhvdHN3YXAgYmVoYXZpb3JcbiAgaWYgKGhvdHN3YXBNb2RlID09PSAnZmFsbC1iYWNrJykge1xuICAgIGlmIChub25Ib3Rzd2FwcGFibGVDaGFuZ2VzLmxlbmd0aCA+IDApIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHN0YWNrLFxuICAgICAgICBtb2RlOiBob3Rzd2FwTW9kZSxcbiAgICAgICAgaG90c3dhcHBlZDogZmFsc2UsXG4gICAgICAgIGhvdHN3YXBwYWJsZUNoYW5nZXMsXG4gICAgICAgIG5vbkhvdHN3YXBwYWJsZUNoYW5nZXMsXG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIC8vIGFwcGx5IHRoZSBzaG9ydC1jaXJjdWl0YWJsZSBjaGFuZ2VzXG4gIGxldCBlcnJvcjogRXJyb3IgfCB1bmRlZmluZWQ7XG4gIHRyeSB7XG4gICAgYXdhaXQgYXBwbHlBbGxIb3Rzd2FwT3BlcmF0aW9ucyhzZGssIGlvU3BhbiwgaG90c3dhcHBhYmxlKTtcbiAgICAvLyBDYWNoZSB0aGUgc3ludGhlc2l6ZWQgdGVtcGxhdGUgc28gdGhlIG5leHQgaG90c3dhcCBkaWZmcyBhZ2FpbnN0IGl0XG4gICAgYXdhaXQgd3JpdGVIb3Rzd2FwVGVtcGxhdGVDYWNoZShzdGFjay5hc3NlbWJseS5kaXJlY3RvcnksIHN0YWNrLnN0YWNrTmFtZSwgc3RhY2sudGVtcGxhdGUsIGN1cnJlbnRUZW1wbGF0ZS5uZXN0ZWRTdGFja3MpO1xuICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICBlcnJvciA9IGU7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHN0YWNrLFxuICAgIG1vZGU6IGhvdHN3YXBNb2RlLFxuICAgIGhvdHN3YXBwZWQ6ICFlcnJvcixcbiAgICBob3Rzd2FwcGFibGVDaGFuZ2VzLFxuICAgIG5vbkhvdHN3YXBwYWJsZUNoYW5nZXMsXG4gICAgZXJyb3IsXG4gIH07XG59XG5cbmludGVyZmFjZSBDbGFzc2lmaWVkQ2hhbmdlcyB7XG4gIGhvdHN3YXBwYWJsZTogSG90c3dhcE9wZXJhdGlvbltdO1xuICBub25Ib3Rzd2FwcGFibGU6IFJlamVjdGVkQ2hhbmdlW107XG59XG5cbi8qKlxuICogQ2xhc3NpZmllcyBhbGwgY2hhbmdlcyB0byBhbGwgcmVzb3VyY2VzIGFzIGVpdGhlciBob3Rzd2FwcGFibGUgb3Igbm90LlxuICogTWV0YWRhdGEgY2hhbmdlcyBhcmUgZXhjbHVkZWQgZnJvbSB0aGUgbGlzdCBvZiAobm9uKWhvdHN3YXBwYWJsZSByZXNvdXJjZXMuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGNsYXNzaWZ5UmVzb3VyY2VDaGFuZ2VzKFxuICBzdGFja0NoYW5nZXM6IGNmbl9kaWZmLlRlbXBsYXRlRGlmZixcbiAgZXZhbHVhdGVDZm5UZW1wbGF0ZTogRXZhbHVhdGVDbG91ZEZvcm1hdGlvblRlbXBsYXRlLFxuICBzZGs6IFNESyxcbiAgbmVzdGVkU3RhY2tOYW1lczogeyBbbmVzdGVkU3RhY2tOYW1lOiBzdHJpbmddOiBOZXN0ZWRTdGFja1RlbXBsYXRlcyB9LFxuICBob3Rzd2FwUHJvcGVydHlPdmVycmlkZXM6IEhvdHN3YXBQcm9wZXJ0eU92ZXJyaWRlcyxcbik6IFByb21pc2U8Q2xhc3NpZmllZENoYW5nZXM+IHtcbiAgY29uc3QgcmVzb3VyY2VEaWZmZXJlbmNlcyA9IGdldFN0YWNrUmVzb3VyY2VEaWZmZXJlbmNlcyhzdGFja0NoYW5nZXMpO1xuXG4gIGNvbnN0IHByb21pc2VzOiBBcnJheTwoKSA9PiBQcm9taXNlPEhvdHN3YXBDaGFuZ2VbXT4+ID0gW107XG4gIGNvbnN0IGhvdHN3YXBwYWJsZVJlc291cmNlcyA9IG5ldyBBcnJheTxIb3Rzd2FwT3BlcmF0aW9uPigpO1xuICBjb25zdCBub25Ib3Rzd2FwcGFibGVSZXNvdXJjZXMgPSBuZXcgQXJyYXk8UmVqZWN0ZWRDaGFuZ2U+KCk7XG4gIGNvbnN0IG5lc3RlZFN0YWNrVGFza3M6IEFycmF5PFByb21pc2U8Q2xhc3NpZmllZENoYW5nZXM+PiA9IFtdO1xuICBjb25zdCBsaW1pdCA9IHBMaW1pdCgxMCk7XG5cbiAgZm9yIChjb25zdCBsb2dpY2FsSWQgb2YgT2JqZWN0LmtleXMoc3RhY2tDaGFuZ2VzLm91dHB1dHMuY2hhbmdlcykpIHtcbiAgICBub25Ib3Rzd2FwcGFibGVSZXNvdXJjZXMucHVzaCh7XG4gICAgICBob3Rzd2FwcGFibGU6IGZhbHNlLFxuICAgICAgY2hhbmdlOiB7XG4gICAgICAgIHJlYXNvbjogTm9uSG90c3dhcHBhYmxlUmVhc29uLk9VVFBVVCxcbiAgICAgICAgZGVzY3JpcHRpb246ICdvdXRwdXQgd2FzIGNoYW5nZWQnLFxuICAgICAgICBzdWJqZWN0OiB7XG4gICAgICAgICAgdHlwZTogJ091dHB1dCcsXG4gICAgICAgICAgbG9naWNhbElkLFxuICAgICAgICAgIG1ldGFkYXRhOiBldmFsdWF0ZUNmblRlbXBsYXRlLm1ldGFkYXRhRm9yKGxvZ2ljYWxJZCksXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG4gIC8vIGdhdGhlciB0aGUgcmVzdWx0cyBvZiB0aGUgZGV0ZWN0b3IgZnVuY3Rpb25zXG4gIGZvciAoY29uc3QgW2xvZ2ljYWxJZCwgY2hhbmdlXSBvZiBPYmplY3QuZW50cmllcyhyZXNvdXJjZURpZmZlcmVuY2VzKSkge1xuICAgIGlmIChjaGFuZ2UubmV3VmFsdWU/LlR5cGUgPT09ICdBV1M6OkNsb3VkRm9ybWF0aW9uOjpTdGFjaycgJiYgY2hhbmdlLm9sZFZhbHVlPy5UeXBlID09PSAnQVdTOjpDbG91ZEZvcm1hdGlvbjo6U3RhY2snKSB7XG4gICAgICBuZXN0ZWRTdGFja1Rhc2tzLnB1c2gobGltaXQoKCkgPT4gZmluZE5lc3RlZEhvdHN3YXBwYWJsZUNoYW5nZXMoXG4gICAgICAgIGxvZ2ljYWxJZCxcbiAgICAgICAgY2hhbmdlLFxuICAgICAgICBuZXN0ZWRTdGFja05hbWVzLFxuICAgICAgICBldmFsdWF0ZUNmblRlbXBsYXRlLFxuICAgICAgICBzZGssXG4gICAgICAgIGhvdHN3YXBQcm9wZXJ0eU92ZXJyaWRlcyxcbiAgICAgICkpKTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGNvbnN0IGhvdHN3YXBwYWJsZUNoYW5nZUNhbmRpZGF0ZSA9IGlzQ2FuZGlkYXRlRm9ySG90c3dhcHBpbmcobG9naWNhbElkLCBjaGFuZ2UsIGV2YWx1YXRlQ2ZuVGVtcGxhdGUpO1xuICAgIC8vIHdlIGRvbid0IG5lZWQgdG8gcnVuIHRoaXMgdGhyb3VnaCB0aGUgZGV0ZWN0b3IgZnVuY3Rpb25zLCB3ZSBjYW4gYWxyZWFkeSBqdWRnZSB0aGlzXG4gICAgaWYgKCdob3Rzd2FwcGFibGUnIGluIGhvdHN3YXBwYWJsZUNoYW5nZUNhbmRpZGF0ZSkge1xuICAgICAgaWYgKCFob3Rzd2FwcGFibGVDaGFuZ2VDYW5kaWRhdGUuaG90c3dhcHBhYmxlKSB7XG4gICAgICAgIG5vbkhvdHN3YXBwYWJsZVJlc291cmNlcy5wdXNoKGhvdHN3YXBwYWJsZUNoYW5nZUNhbmRpZGF0ZSk7XG4gICAgICB9XG5cbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGNvbnN0IHJlc291cmNlVHlwZTogc3RyaW5nID0gaG90c3dhcHBhYmxlQ2hhbmdlQ2FuZGlkYXRlLm5ld1ZhbHVlLlR5cGU7XG4gICAgaWYgKHJlc291cmNlVHlwZSBpbiBSRVNPVVJDRV9ERVRFQ1RPUlMpIHtcbiAgICAgIC8vIHJ1biBkZXRlY3RvciBmdW5jdGlvbnMgbGF6aWx5IHRvIHByZXZlbnQgdW5oYW5kbGVkIHByb21pc2UgcmVqZWN0aW9uc1xuICAgICAgcHJvbWlzZXMucHVzaCgoKSA9PlxuICAgICAgICBSRVNPVVJDRV9ERVRFQ1RPUlNbcmVzb3VyY2VUeXBlXShsb2dpY2FsSWQsIGhvdHN3YXBwYWJsZUNoYW5nZUNhbmRpZGF0ZSwgZXZhbHVhdGVDZm5UZW1wbGF0ZSwgaG90c3dhcFByb3BlcnR5T3ZlcnJpZGVzKSxcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG5vbkhvdHN3YXBwYWJsZVJlc291cmNlcy5wdXNoKG5vbkhvdHN3YXBwYWJsZVJlc291cmNlKGhvdHN3YXBwYWJsZUNoYW5nZUNhbmRpZGF0ZSkpO1xuICAgIH1cbiAgfVxuXG4gIC8vIHJlc29sdmUgYWxsIG5lc3RlZCBzdGFjayBhbmQgZGV0ZWN0b3IgcmVzdWx0cyBpbiBwYXJhbGxlbFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGNka2xhYnMvcHJvbWlzZWFsbC1uby11bmJvdW5kZWQtcGFyYWxsZWxpc21cbiAgY29uc3QgbmVzdGVkUmVzdWx0cyA9IGF3YWl0IFByb21pc2UuYWxsKG5lc3RlZFN0YWNrVGFza3MpO1xuICBmb3IgKGNvbnN0IG5lc3RlZCBvZiBuZXN0ZWRSZXN1bHRzKSB7XG4gICAgaG90c3dhcHBhYmxlUmVzb3VyY2VzLnB1c2goLi4ubmVzdGVkLmhvdHN3YXBwYWJsZSk7XG4gICAgbm9uSG90c3dhcHBhYmxlUmVzb3VyY2VzLnB1c2goLi4ubmVzdGVkLm5vbkhvdHN3YXBwYWJsZSk7XG4gIH1cblxuICBjb25zdCBjaGFuZ2VzRGV0ZWN0aW9uUmVzdWx0czogQXJyYXk8SG90c3dhcENoYW5nZVtdPiA9IFtdO1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGNka2xhYnMvcHJvbWlzZWFsbC1uby11bmJvdW5kZWQtcGFyYWxsZWxpc21cbiAgY29uc3QgZGV0ZWN0b3JSZXN1bHRzID0gYXdhaXQgUHJvbWlzZS5hbGwocHJvbWlzZXMubWFwKChmbikgPT4gbGltaXQoZm4pKSk7XG4gIGZvciAoY29uc3QgaG90c3dhcERldGVjdGlvblJlc3VsdHMgb2YgZGV0ZWN0b3JSZXN1bHRzKSB7XG4gICAgY2hhbmdlc0RldGVjdGlvblJlc3VsdHMucHVzaChob3Rzd2FwRGV0ZWN0aW9uUmVzdWx0cyk7XG4gIH1cblxuICBmb3IgKGNvbnN0IHJlc291cmNlRGV0ZWN0aW9uUmVzdWx0cyBvZiBjaGFuZ2VzRGV0ZWN0aW9uUmVzdWx0cykge1xuICAgIGZvciAoY29uc3QgcHJvcGVydHlSZXN1bHQgb2YgcmVzb3VyY2VEZXRlY3Rpb25SZXN1bHRzKSB7XG4gICAgICBwcm9wZXJ0eVJlc3VsdC5ob3Rzd2FwcGFibGVcbiAgICAgICAgPyBob3Rzd2FwcGFibGVSZXNvdXJjZXMucHVzaChwcm9wZXJ0eVJlc3VsdClcbiAgICAgICAgOiBub25Ib3Rzd2FwcGFibGVSZXNvdXJjZXMucHVzaChwcm9wZXJ0eVJlc3VsdCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBob3Rzd2FwcGFibGU6IGhvdHN3YXBwYWJsZVJlc291cmNlcyxcbiAgICBub25Ib3Rzd2FwcGFibGU6IG5vbkhvdHN3YXBwYWJsZVJlc291cmNlcyxcbiAgfTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIGFsbCBjaGFuZ2VzIHRvIHJlc291cmNlcyBpbiB0aGUgZ2l2ZW4gU3RhY2suXG4gKlxuICogQHBhcmFtIHN0YWNrQ2hhbmdlcyAtIHRoZSBjb2xsZWN0aW9uIG9mIGFsbCBjaGFuZ2VzIHRvIGEgZ2l2ZW4gU3RhY2tcbiAqL1xuZnVuY3Rpb24gZ2V0U3RhY2tSZXNvdXJjZURpZmZlcmVuY2VzKHN0YWNrQ2hhbmdlczogY2ZuX2RpZmYuVGVtcGxhdGVEaWZmKToge1xuICBbbG9naWNhbElkOiBzdHJpbmddOiBjZm5fZGlmZi5SZXNvdXJjZURpZmZlcmVuY2U7XG59IHtcbiAgLy8gd2UgbmVlZCB0byBjb2xsYXBzZSBsb2dpY2FsIElEIHJlbmFtZSBjaGFuZ2VzIGludG8gb25lIGNoYW5nZSxcbiAgLy8gYXMgdGhleSBhcmUgcmVwcmVzZW50ZWQgaW4gc3RhY2tDaGFuZ2VzIGFzIGEgcGFpciBvZiB0d28gY2hhbmdlczogb25lIGFkZGl0aW9uIGFuZCBvbmUgcmVtb3ZhbFxuICBjb25zdCBhbGxSZXNvdXJjZUNoYW5nZXM6IHsgW2xvZ0lkOiBzdHJpbmddOiBjZm5fZGlmZi5SZXNvdXJjZURpZmZlcmVuY2UgfSA9IHN0YWNrQ2hhbmdlcy5yZXNvdXJjZXMuY2hhbmdlcztcbiAgY29uc3QgYWxsUmVtb3ZhbENoYW5nZXMgPSBmaWx0ZXJEaWN0KGFsbFJlc291cmNlQ2hhbmdlcywgKHJlc0NoYW5nZSkgPT4gcmVzQ2hhbmdlLmlzUmVtb3ZhbCk7XG4gIGNvbnN0IGFsbE5vblJlbW92YWxDaGFuZ2VzID0gZmlsdGVyRGljdChhbGxSZXNvdXJjZUNoYW5nZXMsIChyZXNDaGFuZ2UpID0+ICFyZXNDaGFuZ2UuaXNSZW1vdmFsKTtcbiAgZm9yIChjb25zdCBbbG9nSWQsIG5vblJlbW92YWxDaGFuZ2VdIG9mIE9iamVjdC5lbnRyaWVzKGFsbE5vblJlbW92YWxDaGFuZ2VzKSkge1xuICAgIGlmIChub25SZW1vdmFsQ2hhbmdlLmlzQWRkaXRpb24pIHtcbiAgICAgIGNvbnN0IGFkZENoYW5nZSA9IG5vblJlbW92YWxDaGFuZ2U7XG4gICAgICAvLyBzZWFyY2ggZm9yIGFuIGlkZW50aWNhbCByZW1vdmFsIGNoYW5nZVxuICAgICAgY29uc3QgaWRlbnRpY2FsUmVtb3ZhbENoYW5nZSA9IE9iamVjdC5lbnRyaWVzKGFsbFJlbW92YWxDaGFuZ2VzKS5maW5kKChbXywgcmVtQ2hhbmdlXSkgPT4ge1xuICAgICAgICByZXR1cm4gY2hhbmdlc0FyZUZvclNhbWVSZXNvdXJjZShyZW1DaGFuZ2UsIGFkZENoYW5nZSk7XG4gICAgICB9KTtcbiAgICAgIC8vIGlmIHdlIGZvdW5kIG9uZSwgdGhlbiB0aGlzIG1lYW5zIHRoaXMgaXMgYSByZW5hbWUgY2hhbmdlXG4gICAgICBpZiAoaWRlbnRpY2FsUmVtb3ZhbENoYW5nZSkge1xuICAgICAgICBjb25zdCBbcmVtb3ZlZExvZ0lkLCByZW1vdmVkUmVzb3VyY2VDaGFuZ2VdID0gaWRlbnRpY2FsUmVtb3ZhbENoYW5nZTtcbiAgICAgICAgYWxsTm9uUmVtb3ZhbENoYW5nZXNbbG9nSWRdID0gbWFrZVJlbmFtZURpZmZlcmVuY2UocmVtb3ZlZFJlc291cmNlQ2hhbmdlLCBhZGRDaGFuZ2UpO1xuICAgICAgICAvLyBkZWxldGUgdGhlIHJlbW92YWwgY2hhbmdlIHRoYXQgZm9ybXMgdGhlIHJlbmFtZSBwYWlyXG4gICAgICAgIGRlbGV0ZSBhbGxSZW1vdmFsQ2hhbmdlc1tyZW1vdmVkTG9nSWRdO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICAvLyB0aGUgZmluYWwgcmVzdWx0IGFyZSBhbGwgb2YgdGhlIHJlbWFpbmluZyByZW1vdmFsIGNoYW5nZXMsXG4gIC8vIHBsdXMgYWxsIG9mIHRoZSBub24tcmVtb3ZhbCBjaGFuZ2VzXG4gIC8vICh3ZSBzYXZlZCB0aGUgcmVuYW1lIGNoYW5nZXMgaW4gdGhhdCBvYmplY3QgYWxyZWFkeSlcbiAgcmV0dXJuIHtcbiAgICAuLi5hbGxSZW1vdmFsQ2hhbmdlcyxcbiAgICAuLi5hbGxOb25SZW1vdmFsQ2hhbmdlcyxcbiAgfTtcbn1cblxuLyoqIEZpbHRlcnMgYW4gb2JqZWN0IHdpdGggc3RyaW5nIGtleXMgYmFzZWQgb24gd2hldGhlciB0aGUgY2FsbGJhY2sgcmV0dXJucyAndHJ1ZScgZm9yIHRoZSBnaXZlbiB2YWx1ZSBpbiB0aGUgb2JqZWN0LiAqL1xuZnVuY3Rpb24gZmlsdGVyRGljdDxUPihkaWN0OiB7IFtrZXk6IHN0cmluZ106IFQgfSwgZnVuYzogKHQ6IFQpID0+IGJvb2xlYW4pOiB7IFtrZXk6IHN0cmluZ106IFQgfSB7XG4gIHJldHVybiBPYmplY3QuZW50cmllcyhkaWN0KS5yZWR1Y2UoXG4gICAgKGFjYywgW2tleSwgdF0pID0+IHtcbiAgICAgIGlmIChmdW5jKHQpKSB7XG4gICAgICAgIGFjY1trZXldID0gdDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBhY2M7XG4gICAgfSxcbiAgICB7fSBhcyB7IFtrZXk6IHN0cmluZ106IFQgfSxcbiAgKTtcbn1cblxuLyoqIEZpbmRzIGFueSBob3Rzd2FwcGFibGUgY2hhbmdlcyBpbiBhbGwgbmVzdGVkIHN0YWNrcy4gKi9cbmFzeW5jIGZ1bmN0aW9uIGZpbmROZXN0ZWRIb3Rzd2FwcGFibGVDaGFuZ2VzKFxuICBsb2dpY2FsSWQ6IHN0cmluZyxcbiAgY2hhbmdlOiBjZm5fZGlmZi5SZXNvdXJjZURpZmZlcmVuY2UsXG4gIG5lc3RlZFN0YWNrVGVtcGxhdGVzOiB7IFtuZXN0ZWRTdGFja05hbWU6IHN0cmluZ106IE5lc3RlZFN0YWNrVGVtcGxhdGVzIH0sXG4gIGV2YWx1YXRlQ2ZuVGVtcGxhdGU6IEV2YWx1YXRlQ2xvdWRGb3JtYXRpb25UZW1wbGF0ZSxcbiAgc2RrOiBTREssXG4gIGhvdHN3YXBQcm9wZXJ0eU92ZXJyaWRlczogSG90c3dhcFByb3BlcnR5T3ZlcnJpZGVzLFxuKTogUHJvbWlzZTxDbGFzc2lmaWVkQ2hhbmdlcz4ge1xuICBjb25zdCBuZXN0ZWRTdGFjayA9IG5lc3RlZFN0YWNrVGVtcGxhdGVzW2xvZ2ljYWxJZF07XG4gIGlmICghbmVzdGVkU3RhY2sucGh5c2ljYWxOYW1lKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGhvdHN3YXBwYWJsZTogW10sXG4gICAgICBub25Ib3Rzd2FwcGFibGU6IFtcbiAgICAgICAge1xuICAgICAgICAgIGhvdHN3YXBwYWJsZTogZmFsc2UsXG4gICAgICAgICAgY2hhbmdlOiB7XG4gICAgICAgICAgICByZWFzb246IE5vbkhvdHN3YXBwYWJsZVJlYXNvbi5ORVNURURfU1RBQ0tfQ1JFQVRJT04sXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogJ25ld2x5IGNyZWF0ZWQgbmVzdGVkIHN0YWNrcyBjYW5ub3QgYmUgaG90c3dhcHBlZCcsXG4gICAgICAgICAgICBzdWJqZWN0OiB7XG4gICAgICAgICAgICAgIHR5cGU6ICdSZXNvdXJjZScsXG4gICAgICAgICAgICAgIGxvZ2ljYWxJZCxcbiAgICAgICAgICAgICAgcmVzb3VyY2VUeXBlOiAnQVdTOjpDbG91ZEZvcm1hdGlvbjo6U3RhY2snLFxuICAgICAgICAgICAgICBtZXRhZGF0YTogZXZhbHVhdGVDZm5UZW1wbGF0ZS5tZXRhZGF0YUZvcihsb2dpY2FsSWQpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9O1xuICB9XG5cbiAgY29uc3QgZXZhbHVhdGVOZXN0ZWRDZm5UZW1wbGF0ZSA9IGF3YWl0IGV2YWx1YXRlQ2ZuVGVtcGxhdGUuY3JlYXRlTmVzdGVkRXZhbHVhdGVDbG91ZEZvcm1hdGlvblRlbXBsYXRlKFxuICAgIG5lc3RlZFN0YWNrLnBoeXNpY2FsTmFtZSxcbiAgICBuZXN0ZWRTdGFjay5nZW5lcmF0ZWRUZW1wbGF0ZSxcbiAgICBjaGFuZ2UubmV3VmFsdWU/LlByb3BlcnRpZXM/LlBhcmFtZXRlcnMsXG4gICk7XG5cbiAgY29uc3QgbmVzdGVkRGlmZiA9IGNmbl9kaWZmLmZ1bGxEaWZmKFxuICAgIG5lc3RlZFN0YWNrVGVtcGxhdGVzW2xvZ2ljYWxJZF0uZGVwbG95ZWRUZW1wbGF0ZSxcbiAgICBuZXN0ZWRTdGFja1RlbXBsYXRlc1tsb2dpY2FsSWRdLmdlbmVyYXRlZFRlbXBsYXRlLFxuICApO1xuXG4gIHJldHVybiBjbGFzc2lmeVJlc291cmNlQ2hhbmdlcyhcbiAgICBuZXN0ZWREaWZmLFxuICAgIGV2YWx1YXRlTmVzdGVkQ2ZuVGVtcGxhdGUsXG4gICAgc2RrLFxuICAgIG5lc3RlZFN0YWNrVGVtcGxhdGVzW2xvZ2ljYWxJZF0ubmVzdGVkU3RhY2tUZW1wbGF0ZXMsXG4gICAgaG90c3dhcFByb3BlcnR5T3ZlcnJpZGVzLFxuICApO1xufVxuXG4vKiogUmV0dXJucyAndHJ1ZScgaWYgYSBwYWlyIG9mIGNoYW5nZXMgaXMgZm9yIHRoZSBzYW1lIHJlc291cmNlLiAqL1xuZnVuY3Rpb24gY2hhbmdlc0FyZUZvclNhbWVSZXNvdXJjZShcbiAgb2xkQ2hhbmdlOiBjZm5fZGlmZi5SZXNvdXJjZURpZmZlcmVuY2UsXG4gIG5ld0NoYW5nZTogY2ZuX2RpZmYuUmVzb3VyY2VEaWZmZXJlbmNlLFxuKTogYm9vbGVhbiB7XG4gIHJldHVybiAoXG4gICAgb2xkQ2hhbmdlLm9sZFJlc291cmNlVHlwZSA9PT0gbmV3Q2hhbmdlLm5ld1Jlc291cmNlVHlwZSAmJlxuICAgIC8vIHRoaXMgaXNuJ3QgZ3JlYXQsIGJ1dCBJIGRvbid0IHdhbnQgdG8gYnJpbmcgaW4gc29tZXRoaW5nIGxpa2UgdW5kZXJzY29yZSBqdXN0IGZvciB0aGlzIGNvbXBhcmlzb25cbiAgICBKU09OLnN0cmluZ2lmeShvbGRDaGFuZ2Uub2xkUHJvcGVydGllcykgPT09IEpTT04uc3RyaW5naWZ5KG5ld0NoYW5nZS5uZXdQcm9wZXJ0aWVzKVxuICApO1xufVxuXG5mdW5jdGlvbiBtYWtlUmVuYW1lRGlmZmVyZW5jZShcbiAgcmVtQ2hhbmdlOiBjZm5fZGlmZi5SZXNvdXJjZURpZmZlcmVuY2UsXG4gIGFkZENoYW5nZTogY2ZuX2RpZmYuUmVzb3VyY2VEaWZmZXJlbmNlLFxuKTogY2ZuX2RpZmYuUmVzb3VyY2VEaWZmZXJlbmNlIHtcbiAgcmV0dXJuIG5ldyBjZm5fZGlmZi5SZXNvdXJjZURpZmZlcmVuY2UoXG4gICAgLy8gd2UgaGF2ZSB0byBmaWxsIGluIHRoZSBvbGQgdmFsdWUsIGJlY2F1c2Ugb3RoZXJ3aXNlIHRoaXMgd2lsbCBiZSBjbGFzc2lmaWVkIGFzIGEgbm9uLWhvdHN3YXBwYWJsZSBjaGFuZ2VcbiAgICByZW1DaGFuZ2Uub2xkVmFsdWUsXG4gICAgYWRkQ2hhbmdlLm5ld1ZhbHVlLFxuICAgIHtcbiAgICAgIHJlc291cmNlVHlwZToge1xuICAgICAgICBvbGRUeXBlOiByZW1DaGFuZ2Uub2xkUmVzb3VyY2VUeXBlLFxuICAgICAgICBuZXdUeXBlOiBhZGRDaGFuZ2UubmV3UmVzb3VyY2VUeXBlLFxuICAgICAgfSxcbiAgICAgIHByb3BlcnR5RGlmZnM6IChhZGRDaGFuZ2UgYXMgYW55KS5wcm9wZXJ0eURpZmZzLFxuICAgICAgb3RoZXJEaWZmczogKGFkZENoYW5nZSBhcyBhbnkpLm90aGVyRGlmZnMsXG4gICAgfSxcbiAgKTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIGEgYEhvdHN3YXBwYWJsZUNoYW5nZUNhbmRpZGF0ZWAgaWYgdGhlIGNoYW5nZSBpcyBob3Rzd2FwcGFibGVcbiAqIFJldHVybnMgYW4gZW1wdHkgYEhvdHN3YXBwYWJsZUNoYW5nZWAgaWYgdGhlIGNoYW5nZSBpcyB0byBDREs6Ok1ldGFkYXRhXG4gKiBSZXR1cm5zIGEgYE5vbkhvdHN3YXBwYWJsZUNoYW5nZWAgaWYgdGhlIGNoYW5nZSBpcyBub3QgaG90c3dhcHBhYmxlXG4gKi9cbmZ1bmN0aW9uIGlzQ2FuZGlkYXRlRm9ySG90c3dhcHBpbmcoXG4gIGxvZ2ljYWxJZDogc3RyaW5nLFxuICBjaGFuZ2U6IGNmbl9kaWZmLlJlc291cmNlRGlmZmVyZW5jZSxcbiAgZXZhbHVhdGVDZm5UZW1wbGF0ZTogRXZhbHVhdGVDbG91ZEZvcm1hdGlvblRlbXBsYXRlLFxuKTogUmVqZWN0ZWRDaGFuZ2UgfCBSZXNvdXJjZUNoYW5nZSB7XG4gIC8vIGEgcmVzb3VyY2UgaGFzIGJlZW4gcmVtb3ZlZCBPUiBhIHJlc291cmNlIGhhcyBiZWVuIGFkZGVkOyB3ZSBjYW4ndCBzaG9ydC1jaXJjdWl0IHRoYXQgY2hhbmdlXG4gIGlmICghY2hhbmdlLm9sZFZhbHVlKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGhvdHN3YXBwYWJsZTogZmFsc2UsXG4gICAgICBjaGFuZ2U6IHtcbiAgICAgICAgcmVhc29uOiBOb25Ib3Rzd2FwcGFibGVSZWFzb24uUkVTT1VSQ0VfQ1JFQVRJT04sXG4gICAgICAgIGRlc2NyaXB0aW9uOiBgcmVzb3VyY2UgJyR7bG9naWNhbElkfScgd2FzIGNyZWF0ZWQgYnkgdGhpcyBkZXBsb3ltZW50YCxcbiAgICAgICAgc3ViamVjdDoge1xuICAgICAgICAgIHR5cGU6ICdSZXNvdXJjZScsXG4gICAgICAgICAgbG9naWNhbElkLFxuICAgICAgICAgIHJlc291cmNlVHlwZTogY2hhbmdlLm5ld1ZhbHVlIS5UeXBlLFxuICAgICAgICAgIG1ldGFkYXRhOiBldmFsdWF0ZUNmblRlbXBsYXRlLm1ldGFkYXRhRm9yKGxvZ2ljYWxJZCksXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH07XG4gIH0gZWxzZSBpZiAoIWNoYW5nZS5uZXdWYWx1ZSkge1xuICAgIHJldHVybiB7XG4gICAgICBob3Rzd2FwcGFibGU6IGZhbHNlLFxuICAgICAgbG9naWNhbElkLFxuICAgICAgY2hhbmdlOiB7XG4gICAgICAgIHJlYXNvbjogTm9uSG90c3dhcHBhYmxlUmVhc29uLlJFU09VUkNFX0RFTEVUSU9OLFxuICAgICAgICBkZXNjcmlwdGlvbjogYHJlc291cmNlICcke2xvZ2ljYWxJZH0nIHdhcyBkZXN0cm95ZWQgYnkgdGhpcyBkZXBsb3ltZW50YCxcbiAgICAgICAgc3ViamVjdDoge1xuICAgICAgICAgIHR5cGU6ICdSZXNvdXJjZScsXG4gICAgICAgICAgbG9naWNhbElkLFxuICAgICAgICAgIHJlc291cmNlVHlwZTogY2hhbmdlLm9sZFZhbHVlLlR5cGUsXG4gICAgICAgICAgbWV0YWRhdGE6IGV2YWx1YXRlQ2ZuVGVtcGxhdGUubWV0YWRhdGFGb3IobG9naWNhbElkKSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIC8vIGEgcmVzb3VyY2UgaGFzIGhhZCBpdHMgdHlwZSBjaGFuZ2VkXG4gIGlmIChjaGFuZ2UubmV3VmFsdWUuVHlwZSAhPT0gY2hhbmdlLm9sZFZhbHVlLlR5cGUpIHtcbiAgICByZXR1cm4ge1xuICAgICAgaG90c3dhcHBhYmxlOiBmYWxzZSxcbiAgICAgIGNoYW5nZToge1xuICAgICAgICByZWFzb246IE5vbkhvdHN3YXBwYWJsZVJlYXNvbi5SRVNPVVJDRV9UWVBFX0NIQU5HRUQsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBgcmVzb3VyY2UgJyR7bG9naWNhbElkfScgaGFkIGl0cyB0eXBlIGNoYW5nZWQgZnJvbSAnJHtjaGFuZ2Uub2xkVmFsdWU/LlR5cGV9JyB0byAnJHtjaGFuZ2UubmV3VmFsdWU/LlR5cGV9J2AsXG4gICAgICAgIHN1YmplY3Q6IHtcbiAgICAgICAgICB0eXBlOiAnUmVzb3VyY2UnLFxuICAgICAgICAgIGxvZ2ljYWxJZCxcbiAgICAgICAgICByZXNvdXJjZVR5cGU6IGNoYW5nZS5uZXdWYWx1ZS5UeXBlLFxuICAgICAgICAgIG1ldGFkYXRhOiBldmFsdWF0ZUNmblRlbXBsYXRlLm1ldGFkYXRhRm9yKGxvZ2ljYWxJZCksXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGxvZ2ljYWxJZCxcbiAgICBvbGRWYWx1ZTogY2hhbmdlLm9sZFZhbHVlLFxuICAgIG5ld1ZhbHVlOiBjaGFuZ2UubmV3VmFsdWUsXG4gICAgcHJvcGVydHlVcGRhdGVzOiBjaGFuZ2UucHJvcGVydHlVcGRhdGVzLFxuICAgIG1ldGFkYXRhOiBldmFsdWF0ZUNmblRlbXBsYXRlLm1ldGFkYXRhRm9yKGxvZ2ljYWxJZCksXG4gIH07XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGFwcGx5QWxsSG90c3dhcE9wZXJhdGlvbnMoc2RrOiBTREssIGlvU3BhbjogSU1lc3NhZ2VTcGFuPGFueT4sIGhvdHN3YXBwYWJsZUNoYW5nZXM6IEhvdHN3YXBPcGVyYXRpb25bXSk6IFByb21pc2U8dm9pZFtdPiB7XG4gIGlmIChob3Rzd2FwcGFibGVDaGFuZ2VzLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoW10pO1xuICB9XG5cbiAgYXdhaXQgaW9TcGFuLmRlZmF1bHRzLmluZm8oYFxcbiR7SUNPTn0gaG90c3dhcHBpbmcgcmVzb3VyY2VzOmApO1xuICBjb25zdCBsaW1pdCA9IHBMaW1pdCgxMCk7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAY2RrbGFicy9wcm9taXNlYWxsLW5vLXVuYm91bmRlZC1wYXJhbGxlbGlzbVxuICByZXR1cm4gUHJvbWlzZS5hbGwoaG90c3dhcHBhYmxlQ2hhbmdlcy5tYXAoaG90c3dhcE9wZXJhdGlvbiA9PiBsaW1pdCgoKSA9PiB7XG4gICAgcmV0dXJuIGFwcGx5SG90c3dhcE9wZXJhdGlvbihzZGssIGlvU3BhbiwgaG90c3dhcE9wZXJhdGlvbik7XG4gIH0pKSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGFwcGx5SG90c3dhcE9wZXJhdGlvbihzZGs6IFNESywgaW9TcGFuOiBJTWVzc2FnZVNwYW48YW55PiwgaG90c3dhcE9wZXJhdGlvbjogSG90c3dhcE9wZXJhdGlvbik6IFByb21pc2U8dm9pZD4ge1xuICAvLyBub3RlIHRoZSB0eXBlIG9mIHNlcnZpY2UgdGhhdCB3YXMgc3VjY2Vzc2Z1bGx5IGhvdHN3YXBwZWQgaW4gdGhlIFVzZXItQWdlbnRcbiAgY29uc3QgY3VzdG9tVXNlckFnZW50ID0gYGNkay1ob3Rzd2FwL3N1Y2Nlc3MtJHtob3Rzd2FwT3BlcmF0aW9uLnNlcnZpY2V9YDtcbiAgc2RrLmFwcGVuZEN1c3RvbVVzZXJBZ2VudChjdXN0b21Vc2VyQWdlbnQpO1xuICBjb25zdCByZXNvdXJjZVRleHQgPSAocjogQWZmZWN0ZWRSZXNvdXJjZSkgPT4gci5kZXNjcmlwdGlvbiA/PyBgJHtyLnJlc291cmNlVHlwZX0gJyR7ci5waHlzaWNhbE5hbWUgPz8gci5sb2dpY2FsSWR9J2A7XG5cbiAgYXdhaXQgaW9TcGFuLm5vdGlmeShJTy5DREtfVE9PTEtJVF9JNTQwMi5tc2coXG4gICAgaG90c3dhcE9wZXJhdGlvbi5jaGFuZ2UucmVzb3VyY2VzLm1hcChyID0+IGZvcm1hdChgICAgJHtJQ09OfSAlc2AsIGNoYWxrLmJvbGQocmVzb3VyY2VUZXh0KHIpKSkpLmpvaW4oJ1xcbicpLFxuICAgIGhvdHN3YXBPcGVyYXRpb24uY2hhbmdlLFxuICApKTtcblxuICAvLyBpZiB0aGUgU0RLIGNhbGwgZmFpbHMsIGFuIGVycm9yIHdpbGwgYmUgdGhyb3duIGJ5IHRoZSBTREtcbiAgLy8gYW5kIHdpbGwgcHJldmVudCB0aGUgZ3JlZW4gJ2hvdHN3YXBwZWQhJyB0ZXh0IGZyb20gYmVpbmcgZGlzcGxheWVkXG4gIHRyeSB7XG4gICAgYXdhaXQgaG90c3dhcE9wZXJhdGlvbi5hcHBseShzZGspO1xuICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICBpZiAoZS5uYW1lID09PSAnVGltZW91dEVycm9yJyB8fCBlLm5hbWUgPT09ICdBYm9ydEVycm9yJykge1xuICAgICAgY29uc3QgcmVzdWx0OiBXYWl0ZXJSZXN1bHQgPSBKU09OLnBhcnNlKGZvcm1hdEVycm9yTWVzc2FnZShlKSk7XG4gICAgICBjb25zdCBlcnJvciA9IG5ldyBUb29sa2l0RXJyb3IoJ0hvdHN3YXBXYWl0ZXJGYWlsZWQnLCBmb3JtYXRXYWl0ZXJFcnJvclJlc3VsdChyZXN1bHQpKTtcbiAgICAgIGVycm9yLm5hbWUgPSBlLm5hbWU7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG4gICAgdGhyb3cgZTtcbiAgfVxuXG4gIGF3YWl0IGlvU3Bhbi5ub3RpZnkoSU8uQ0RLX1RPT0xLSVRfSTU0MDMubXNnKFxuICAgIGhvdHN3YXBPcGVyYXRpb24uY2hhbmdlLnJlc291cmNlcy5tYXAociA9PiBmb3JtYXQoYCAgICR7SUNPTn0gJXMgJXNgLCBjaGFsay5ib2xkKHJlc291cmNlVGV4dChyKSksIGNoYWxrLmdyZWVuKCdob3Rzd2FwcGVkIScpKSkuam9pbignXFxuJyksXG4gICAgaG90c3dhcE9wZXJhdGlvbi5jaGFuZ2UsXG4gICkpO1xuXG4gIHNkay5yZW1vdmVDdXN0b21Vc2VyQWdlbnQoY3VzdG9tVXNlckFnZW50KTtcbn1cblxuZnVuY3Rpb24gZm9ybWF0V2FpdGVyRXJyb3JSZXN1bHQocmVzdWx0OiBXYWl0ZXJSZXN1bHQpIHtcbiAgY29uc3QgbWFpbiA9IFtcbiAgICBgUmVzb3VyY2UgaXMgbm90IGluIHRoZSBleHBlY3RlZCBzdGF0ZSBkdWUgdG8gd2FpdGVyIHN0YXR1czogJHtyZXN1bHQuc3RhdGV9YCxcbiAgICByZXN1bHQucmVhc29uID8gYCR7cmVzdWx0LnJlYXNvbn0uYCA6ICcnLFxuICBdLmpvaW4oJy4gJyk7XG5cbiAgaWYgKHJlc3VsdC5vYnNlcnZlZFJlc3BvbnNlcyAhPSBudWxsKSB7XG4gICAgY29uc3Qgb2JzZXJ2ZWRSZXNwb25zZXMgPSBPYmplY3RcbiAgICAgIC5lbnRyaWVzKHJlc3VsdC5vYnNlcnZlZFJlc3BvbnNlcylcbiAgICAgIC5tYXAoKFttc2csIGNvdW50XSkgPT4gYCAgLSAke21zZ30gKCR7Y291bnR9KWApXG4gICAgICAuam9pbignXFxuJyk7XG5cbiAgICByZXR1cm4gYCR7bWFpbn0gT2JzZXJ2ZWQgcmVzcG9uc2VzOlxcbiR7b2JzZXJ2ZWRSZXNwb25zZXN9YDtcbiAgfVxuXG4gIHJldHVybiBtYWluO1xufVxuXG5hc3luYyBmdW5jdGlvbiBsb2dSZWplY3RlZENoYW5nZXMoXG4gIGlvU3BhbjogSU1lc3NhZ2VTcGFuPGFueT4sXG4gIHJlamVjdGVkQ2hhbmdlczogUmVqZWN0ZWRDaGFuZ2VbXSxcbiAgaG90c3dhcE1vZGU6IEhvdHN3YXBNb2RlLFxuKTogUHJvbWlzZTx2b2lkPiB7XG4gIGlmIChyZWplY3RlZENoYW5nZXMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIC8qKlxuICAgKiBFS1MgU2VydmljZXMgY2FuIGhhdmUgYSB0YXNrIGRlZmluaXRpb24gdGhhdCBkb2Vzbid0IHJlZmVyIHRvIHRoZSB0YXNrIGRlZmluaXRpb24gYmVpbmcgdXBkYXRlZC5cbiAgICogV2UgaGF2ZSB0byBsb2cgdGhpcyBhcyBhIG5vbi1ob3Rzd2FwcGFibGUgY2hhbmdlIHRvIHRoZSB0YXNrIGRlZmluaXRpb24sIGJ1dCB3aGVuIHdlIGRvLFxuICAgKiB3ZSB3aW5kIHVwIGhvdHN3YXBwaW5nIHRoZSB0YXNrIGRlZmluaXRpb24gYW5kIGxvZ2dpbmcgaXQgYXMgYSBub24taG90c3dhcHBhYmxlIGNoYW5nZS5cbiAgICpcbiAgICogVGhpcyBsb2dpYyBwcmV2ZW50cyB1cyBmcm9tIGxvZ2dpbmcgdGhhdCBjaGFuZ2UgYXMgbm9uLWhvdHN3YXBwYWJsZSB3aGVuIHdlIGhvdHN3YXAgaXQuXG4gICAqL1xuICBpZiAoaG90c3dhcE1vZGUgPT09ICdob3Rzd2FwLW9ubHknKSB7XG4gICAgcmVqZWN0ZWRDaGFuZ2VzID0gcmVqZWN0ZWRDaGFuZ2VzLmZpbHRlcigoY2hhbmdlKSA9PiBjaGFuZ2UuaG90c3dhcE9ubHlWaXNpYmxlID09PSB0cnVlKTtcblxuICAgIGlmIChyZWplY3RlZENoYW5nZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICB9XG5cbiAgY29uc3QgbWVzc2FnZXMgPSBbJyddOyAvLyBzdGFydCB3aXRoIGVtcHR5IGxpbmVcblxuICBpZiAoaG90c3dhcE1vZGUgPT09ICdob3Rzd2FwLW9ubHknKSB7XG4gICAgbWVzc2FnZXMucHVzaChmb3JtYXQoJyVzICVzJywgY2hhbGsucmVkKCfimqDvuI8nKSwgY2hhbGsucmVkKCdUaGUgZm9sbG93aW5nIG5vbi1ob3Rzd2FwcGFibGUgY2hhbmdlcyB3ZXJlIGZvdW5kLiBUbyByZWNvbmNpbGUgdGhlc2UgdXNpbmcgQ2xvdWRGb3JtYXRpb24sIHNwZWNpZnkgLS1ob3Rzd2FwLWZhbGxiYWNrJykpKTtcbiAgfSBlbHNlIHtcbiAgICBtZXNzYWdlcy5wdXNoKGZvcm1hdCgnJXMgJXMnLCBjaGFsay5yZWQoJ+KaoO+4jycpLCBjaGFsay5yZWQoJ1RoZSBmb2xsb3dpbmcgbm9uLWhvdHN3YXBwYWJsZSBjaGFuZ2VzIHdlcmUgZm91bmQ6JykpKTtcbiAgfVxuXG4gIGZvciAoY29uc3QgeyBjaGFuZ2UgfSBvZiByZWplY3RlZENoYW5nZXMpIHtcbiAgICBtZXNzYWdlcy5wdXNoKCcgICAgJyArIG5vbkhvdHN3YXBwYWJsZUNoYW5nZU1lc3NhZ2UoY2hhbmdlKSk7XG4gIH1cbiAgbWVzc2FnZXMucHVzaCgnJyk7IC8vIG5ld2xpbmVcblxuICBhd2FpdCBpb1NwYW4uZGVmYXVsdHMuaW5mbyhtZXNzYWdlcy5qb2luKCdcXG4nKSk7XG59XG5cbi8qKlxuICogRm9ybWF0cyBhIE5vbkhvdHN3YXBwYWJsZUNoYW5nZVxuICovXG5mdW5jdGlvbiBub25Ib3Rzd2FwcGFibGVDaGFuZ2VNZXNzYWdlKGNoYW5nZTogTm9uSG90c3dhcHBhYmxlQ2hhbmdlKTogc3RyaW5nIHtcbiAgY29uc3Qgc3ViamVjdCA9IGNoYW5nZS5zdWJqZWN0O1xuICBjb25zdCByZWFzb24gPSBjaGFuZ2UuZGVzY3JpcHRpb24gPz8gY2hhbmdlLnJlYXNvbjtcblxuICBzd2l0Y2ggKHN1YmplY3QudHlwZSkge1xuICAgIGNhc2UgJ091dHB1dCc6XG4gICAgICByZXR1cm4gZm9ybWF0KFxuICAgICAgICAnb3V0cHV0OiAlcywgcmVhc29uOiAlcycsXG4gICAgICAgIGNoYWxrLmJvbGQoc3ViamVjdC5sb2dpY2FsSWQpLFxuICAgICAgICBjaGFsay5yZWQocmVhc29uKSxcbiAgICAgICk7XG4gICAgY2FzZSAnUmVzb3VyY2UnOlxuICAgICAgcmV0dXJuIG5vbkhvdHN3YXBwYWJsZVJlc291cmNlTWVzc2FnZShzdWJqZWN0LCByZWFzb24pO1xuICB9XG59XG5cbi8qKlxuICogRm9ybWF0cyBhIG5vbi1ob3Rzd2FwcGFibGUgcmVzb3VyY2Ugc3ViamVjdFxuICovXG5mdW5jdGlvbiBub25Ib3Rzd2FwcGFibGVSZXNvdXJjZU1lc3NhZ2Uoc3ViamVjdDogUmVzb3VyY2VTdWJqZWN0LCByZWFzb246IHN0cmluZyk6IHN0cmluZyB7XG4gIGlmIChzdWJqZWN0LnJlamVjdGVkUHJvcGVydGllcz8ubGVuZ3RoKSB7XG4gICAgcmV0dXJuIGZvcm1hdChcbiAgICAgICdyZXNvdXJjZTogJXMsIHR5cGU6ICVzLCByZWplY3RlZCBjaGFuZ2VzOiAlcywgcmVhc29uOiAlcycsXG4gICAgICBjaGFsay5ib2xkKHN1YmplY3QubG9naWNhbElkKSxcbiAgICAgIGNoYWxrLmJvbGQoc3ViamVjdC5yZXNvdXJjZVR5cGUpLFxuICAgICAgY2hhbGsuYm9sZChzdWJqZWN0LnJlamVjdGVkUHJvcGVydGllcyksXG4gICAgICBjaGFsay5yZWQocmVhc29uKSxcbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIGZvcm1hdChcbiAgICAncmVzb3VyY2U6ICVzLCB0eXBlOiAlcywgcmVhc29uOiAlcycsXG4gICAgY2hhbGsuYm9sZChzdWJqZWN0LmxvZ2ljYWxJZCksXG4gICAgY2hhbGsuYm9sZChzdWJqZWN0LnJlc291cmNlVHlwZSksXG4gICAgY2hhbGsucmVkKHJlYXNvbiksXG4gICk7XG59XG4iXX0=
|
|
486
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG90c3dhcC1kZXBsb3ltZW50cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImhvdHN3YXAtZGVwbG95bWVudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUErR0Esb0RBMENDO0FBekpELCtCQUE4QjtBQUU5Qix5REFBeUQ7QUFFekQsK0JBQStCO0FBQy9CLDZDQUF1RDtBQUN2RCxxQ0FBZ0Q7QUFHaEQsc0RBQXdHO0FBQ3hHLDJFQUEwRTtBQUMxRSwrREFBNkU7QUFPN0UscUNBR2tCO0FBQ2xCLGlEQUFnRTtBQUNoRSxxRUFBK0Y7QUFDL0YseURBQXdFO0FBQ3hFLG1FQUdpQztBQUVqQywrREFBMkQ7QUFFM0QsMkNBQXlDO0FBRXpDLHNDQUFpQztBQUNqQyxxRUFBNEU7QUFFNUUsNkVBQTZFO0FBQzdFLDRHQUE0RztBQUM1RyxNQUFNLE1BQU0sR0FBNkIsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBVzVELE1BQU0sa0JBQWtCLEdBQXVDO0lBQzdELFNBQVM7SUFDVCx1QkFBdUIsRUFBRSxxREFBa0M7SUFDM0Qsc0JBQXNCLEVBQUUscURBQWtDO0lBQzFELG9CQUFvQixFQUFFLHFEQUFrQztJQUV4RCxVQUFVO0lBQ1Ysd0JBQXdCLEVBQUUsdURBQTJCO0lBQ3JELHFDQUFxQyxFQUFFLHVEQUEyQjtJQUNsRSw2QkFBNkIsRUFBRSx1REFBMkI7SUFDMUQsc0JBQXNCLEVBQUUsdURBQTJCO0lBRW5ELDBCQUEwQixFQUFFLDZDQUE4QjtJQUMxRCx5QkFBeUIsRUFBRSwwREFBb0M7SUFDL0QsNkJBQTZCLEVBQUUsOERBQXNDO0lBQ3JFLGtCQUFrQixFQUFFLEtBQUssRUFDdkIsU0FBaUIsRUFDakIsTUFBc0IsRUFDdEIsbUJBQW1ELEVBQ3pCLEVBQUU7UUFDNUIsNEVBQTRFO1FBQzVFLElBQUksTUFBTSxJQUFBLGlFQUF5QyxFQUFDLFNBQVMsRUFBRSxNQUFNLEVBQUUsbUJBQW1CLENBQUMsRUFBRSxDQUFDO1lBQzVGLE9BQU8sRUFBRSxD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QUssQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQ2xCLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZm9ybWF0IH0gZnJvbSAndXRpbCc7XG5pbXBvcnQgdHlwZSAqIGFzIGN4YXBpIGZyb20gJ0Bhd3MtY2RrL2Nsb3VkLWFzc2VtYmx5LWFwaSc7XG5pbXBvcnQgKiBhcyBjZm5fZGlmZiBmcm9tICdAYXdzLWNkay9jbG91ZGZvcm1hdGlvbi1kaWZmJztcbmltcG9ydCB0eXBlIHsgV2FpdGVyUmVzdWx0IH0gZnJvbSAnQHNtaXRoeS91dGlsLXdhaXRlcic7XG5pbXBvcnQgKiBhcyBjaGFsayBmcm9tICdjaGFsayc7XG5pbXBvcnQgeyBOb25Ib3Rzd2FwcGFibGVSZWFzb24gfSBmcm9tICcuLi8uLi9wYXlsb2Fkcyc7XG5pbXBvcnQgeyBmb3JtYXRFcnJvck1lc3NhZ2UgfSBmcm9tICcuLi8uLi91dGlsJztcbmltcG9ydCB0eXBlIHsgU0RLLCBTZGtQcm92aWRlciB9IGZyb20gJy4uL2F3cy1hdXRoL3ByaXZhdGUnO1xuaW1wb3J0IHR5cGUgeyBDbG91ZEZvcm1hdGlvblN0YWNrLCBOZXN0ZWRTdGFja1RlbXBsYXRlcyB9IGZyb20gJy4uL2Nsb3VkZm9ybWF0aW9uJztcbmltcG9ydCB7IGxvYWRDdXJyZW50VGVtcGxhdGVXaXRoTmVzdGVkU3RhY2tzLCBFdmFsdWF0ZUNsb3VkRm9ybWF0aW9uVGVtcGxhdGUgfSBmcm9tICcuLi9jbG91ZGZvcm1hdGlvbic7XG5pbXBvcnQgeyBpc0hvdHN3YXBwYWJsZUFwcFN5bmNDaGFuZ2UgfSBmcm9tICcuL2FwcHN5bmMtbWFwcGluZy10ZW1wbGF0ZXMnO1xuaW1wb3J0IHsgaXNIb3Rzd2FwcGFibGVDb2RlQnVpbGRQcm9qZWN0Q2hhbmdlIH0gZnJvbSAnLi9jb2RlLWJ1aWxkLXByb2plY3RzJztcbmltcG9ydCB0eXBlIHtcbiAgSG90c3dhcENoYW5nZSxcbiAgSG90c3dhcE9wZXJhdGlvbixcbiAgUmVqZWN0ZWRDaGFuZ2UsXG4gIEhvdHN3YXBQcm9wZXJ0eU92ZXJyaWRlcyxcbn0gZnJvbSAnLi9jb21tb24nO1xuaW1wb3J0IHtcbiAgSUNPTixcbiAgbm9uSG90c3dhcHBhYmxlUmVzb3VyY2UsXG59IGZyb20gJy4vY29tbW9uJztcbmltcG9ydCB7IGlzSG90c3dhcHBhYmxlRWNzU2VydmljZUNoYW5nZSB9IGZyb20gJy4vZWNzLXNlcnZpY2VzJztcbmltcG9ydCB7IHJlYWRIb3Rzd2FwVGVtcGxhdGVDYWNoZSwgd3JpdGVIb3Rzd2FwVGVtcGxhdGVDYWNoZSB9IGZyb20gJy4vaG90c3dhcC10ZW1wbGF0ZS1jYWNoZSc7XG5pbXBvcnQgeyBpc0hvdHN3YXBwYWJsZUxhbWJkYUZ1bmN0aW9uQ2hhbmdlIH0gZnJvbSAnLi9sYW1iZGEtZnVuY3Rpb25zJztcbmltcG9ydCB7XG4gIHNraXBDaGFuZ2VGb3JTM0RlcGxveUN1c3RvbVJlc291cmNlUG9saWN5LFxuICBpc0hvdHN3YXBwYWJsZVMzQnVja2V0RGVwbG95bWVudENoYW5nZSxcbn0gZnJvbSAnLi9zMy1idWNrZXQtZGVwbG95bWVudHMnO1xuaW1wb3J0IHR5cGUgeyBBZmZlY3RlZFJlc291cmNlLCBIb3Rzd2FwUmVzdWx0LCBSZXNvdXJjZVN1YmplY3QsIFJlc291cmNlQ2hhbmdlLCBOb25Ib3Rzd2FwcGFibGVDaGFuZ2UgfSBmcm9tICcuLi8uLi9wYXlsb2Fkcyc7XG5pbXBvcnQgeyBUb29sa2l0RXJyb3IgfSBmcm9tICcuLi8uLi90b29sa2l0L3Rvb2xraXQtZXJyb3InO1xuaW1wb3J0IHR5cGUgeyBTdWNjZXNzZnVsRGVwbG95U3RhY2tSZXN1bHQgfSBmcm9tICcuLi9kZXBsb3ltZW50cyc7XG5pbXBvcnQgeyBJTywgU1BBTiB9IGZyb20gJy4uL2lvL3ByaXZhdGUnO1xuaW1wb3J0IHR5cGUgeyBJTWVzc2FnZVNwYW4sIElvSGVscGVyIH0gZnJvbSAnLi4vaW8vcHJpdmF0ZSc7XG5pbXBvcnQgeyBNb2RlIH0gZnJvbSAnLi4vcGx1Z2luJztcbmltcG9ydCB7IGlzSG90c3dhcHBhYmxlQ2xvdWRDb250cm9sQ2hhbmdlIH0gZnJvbSAnLi9jbG91ZC1jb250cm9sLXJlc291cmNlJztcblxuLy8gTXVzdCB1c2UgYSByZXF1aXJlKCkgb3RoZXJ3aXNlIGVzYnVpbGQgY29tcGxhaW5zIGFib3V0IGNhbGxpbmcgYSBuYW1lc3BhY2Vcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tcmVxdWlyZS1pbXBvcnRzLEB0eXBlc2NyaXB0LWVzbGludC9jb25zaXN0ZW50LXR5cGUtaW1wb3J0c1xuY29uc3QgcExpbWl0OiB0eXBlb2YgaW1wb3J0KCdwLWxpbWl0JykgPSByZXF1aXJlKCdwLWxpbWl0Jyk7XG5cbnR5cGUgSG90c3dhcERldGVjdG9yID0gKFxuICBsb2dpY2FsSWQ6IHN0cmluZyxcbiAgY2hhbmdlOiBSZXNvdXJjZUNoYW5nZSxcbiAgZXZhbHVhdGVDZm5UZW1wbGF0ZTogRXZhbHVhdGVDbG91ZEZvcm1hdGlvblRlbXBsYXRlLFxuICBob3Rzd2FwUHJvcGVydHlPdmVycmlkZXM6IEhvdHN3YXBQcm9wZXJ0eU92ZXJyaWRlcyxcbikgPT4gUHJvbWlzZTxIb3Rzd2FwQ2hhbmdlW10+O1xuXG50eXBlIEhvdHN3YXBNb2RlID0gJ2hvdHN3YXAtb25seScgfCAnZmFsbC1iYWNrJztcblxuY29uc3QgUkVTT1VSQ0VfREVURUNUT1JTOiB7IFtrZXk6IHN0cmluZ106IEhvdHN3YXBEZXRlY3RvciB9ID0ge1xuICAvLyBMYW1iZGFcbiAgJ0FXUzo6TGFtYmRhOjpGdW5jdGlvbic6IGlzSG90c3dhcHBhYmxlTGFtYmRhRnVuY3Rpb25DaGFuZ2UsXG4gICdBV1M6OkxhbWJkYTo6VmVyc2lvbic6IGlzSG90c3dhcHBhYmxlTGFtYmRhRnVuY3Rpb25DaGFuZ2UsXG4gICdBV1M6OkxhbWJkYTo6QWxpYXMnOiBpc0hvdHN3YXBwYWJsZUxhbWJkYUZ1bmN0aW9uQ2hhbmdlLFxuXG4gIC8vIEFwcFN5bmNcbiAgJ0FXUzo6QXBwU3luYzo6UmVzb2x2ZXInOiBpc0hvdHN3YXBwYWJsZUFwcFN5bmNDaGFuZ2UsXG4gICdBV1M6OkFwcFN5bmM6OkZ1bmN0aW9uQ29uZmlndXJhdGlvbic6IGlzSG90c3dhcHBhYmxlQXBwU3luY0NoYW5nZSxcbiAgJ0FXUzo6QXBwU3luYzo6R3JhcGhRTFNjaGVtYSc6IGlzSG90c3dhcHBhYmxlQXBwU3luY0NoYW5nZSxcbiAgJ0FXUzo6QXBwU3luYzo6QXBpS2V5JzogaXNIb3Rzd2FwcGFibGVBcHBTeW5jQ2hhbmdlLFxuXG4gICdBV1M6OkVDUzo6VGFza0RlZmluaXRpb24nOiBpc0hvdHN3YXBwYWJsZUVjc1NlcnZpY2VDaGFuZ2UsXG4gICdBV1M6OkNvZGVCdWlsZDo6UHJvamVjdCc6IGlzSG90c3dhcHBhYmxlQ29kZUJ1aWxkUHJvamVjdENoYW5nZSxcbiAgJ0N1c3RvbTo6Q0RLQnVja2V0RGVwbG95bWVudCc6IGlzSG90c3dhcHBhYmxlUzNCdWNrZXREZXBsb3ltZW50Q2hhbmdlLFxuICAnQVdTOjpJQU06OlBvbGljeSc6IGFzeW5jIChcbiAgICBsb2dpY2FsSWQ6IHN0cmluZyxcbiAgICBjaGFuZ2U6IFJlc291cmNlQ2hhbmdlLFxuICAgIGV2YWx1YXRlQ2ZuVGVtcGxhdGU6IEV2YWx1YXRlQ2xvdWRGb3JtYXRpb25UZW1wbGF0ZSxcbiAgKTogUHJvbWlzZTxIb3Rzd2FwQ2hhbmdlW10+ID0+IHtcbiAgICAvLyBJZiB0aGUgcG9saWN5IGlzIGZvciBhIFMzQnVja2V0RGVwbG95bWVudENoYW5nZSwgd2UgY2FuIGlnbm9yZSB0aGUgY2hhbmdlXG4gICAgaWYgKGF3YWl0IHNraXBDaGFuZ2VGb3JTM0RlcGxveUN1c3RvbVJlc291cmNlUG9saWN5KGxvZ2ljYWxJZCwgY2hhbmdlLCBldmFsdWF0ZUNmblRlbXBsYXRlKSkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIHJldHVybiBbbm9uSG90c3dhcHBhYmxlUmVzb3VyY2UoY2hhbmdlKV07XG4gIH0sXG5cbiAgJ0FXUzo6Q0RLOjpNZXRhZGF0YSc6IGFzeW5jICgpID0+IFtdLFxuXG4gIC8vIFJlc291cmNlcyB0aGF0IHVzZSBDQ0FQSVNcbiAgJ0FXUzo6QXBpR2F0ZXdheTo6UmVzdEFwaSc6IGlzSG90c3dhcHBhYmxlQ2xvdWRDb250cm9sQ2hhbmdlLFxuICAnQVdTOjpBcGlHYXRld2F5OjpEZXBsb3ltZW50JzogaXNIb3Rzd2FwcGFibGVDbG91ZENvbnRyb2xDaGFuZ2UsXG4gICdBV1M6OkFwaUdhdGV3YXk6Ok1ldGhvZCc6IGlzSG90c3dhcHBhYmxlQ2xvdWRDb250cm9sQ2hhbmdlLFxuICAnQVdTOjpBcGlHYXRld2F5VjI6OkFwaSc6IGlzSG90c3dhcHBhYmxlQ2xvdWRDb250cm9sQ2hhbmdlLFxuICAnQVdTOjpBcGlHYXRld2F5VjI6OkludGVncmF0aW9uJzogaXNIb3Rzd2FwcGFibGVDbG91ZENvbnRyb2xDaGFuZ2UsXG4gICdBV1M6OkJlZHJvY2s6OkFnZW50JzogaXNIb3Rzd2FwcGFibGVDbG91ZENvbnRyb2xDaGFuZ2UsXG4gICdBV1M6OkV2ZW50czo6UnVsZSc6IGlzSG90c3dhcHBhYmxlQ2xvdWRDb250cm9sQ2hhbmdlLFxuICAnQVdTOjpEeW5hbW9EQjo6VGFibGUnOiBpc0hvdHN3YXBwYWJsZUNsb3VkQ29udHJvbENoYW5nZSxcbiAgJ0FXUzo6RHluYW1vREI6Okdsb2JhbFRhYmxlJzogaXNIb3Rzd2FwcGFibGVDbG91ZENvbnRyb2xDaGFuZ2UsXG4gICdBV1M6OlNRUzo6UXVldWUnOiBpc0hvdHN3YXBwYWJsZUNsb3VkQ29udHJvbENoYW5nZSxcbiAgJ0FXUzo6Q2xvdWRXYXRjaDo6QWxhcm0nOiBpc0hvdHN3YXBwYWJsZUNsb3VkQ29udHJvbENoYW5nZSxcbiAgJ0FXUzo6Q2xvdWRXYXRjaDo6Q29tcG9zaXRlQWxhcm0nOiBpc0hvdHN3YXBwYWJsZUNsb3VkQ29udHJvbENoYW5nZSxcbiAgJ0FXUzo6Q2xvdWRXYXRjaDo6RGFzaGJvYXJkJzogaXNIb3Rzd2FwcGFibGVDbG91ZENvbnRyb2xDaGFuZ2UsXG4gICdBV1M6OlN0ZXBGdW5jdGlvbnM6OlN0YXRlTWFjaGluZSc6IGlzSG90c3dhcHBhYmxlQ2xvdWRDb250cm9sQ2hhbmdlLFxuICAnQVdTOjpCZWRyb2NrQWdlbnRDb3JlOjpSdW50aW1lJzogaXNIb3Rzd2FwcGFibGVDbG91ZENvbnRyb2xDaGFuZ2UsXG5cbiAgLy8gUXVpY2tTaWdodFxuICAnQVdTOjpRdWlja1NpZ2h0OjpEYXNoYm9hcmQnOiBpc0hvdHN3YXBwYWJsZUNsb3VkQ29udHJvbENoYW5nZSxcbiAgJ0FXUzo6UXVpY2tTaWdodDo6QW5hbHlzaXMnOiBpc0hvdHN3YXBwYWJsZUNsb3VkQ29udHJvbENoYW5nZSxcbiAgJ0FXUzo6UXVpY2tTaWdodDo6VGVtcGxhdGUnOiBpc0hvdHN3YXBwYWJsZUNsb3VkQ29udHJvbENoYW5nZSxcbiAgJ0FXUzo6UXVpY2tTaWdodDo6RGF0YVNldCc6IGlzSG90c3dhcHBhYmxlQ2xvdWRDb250cm9sQ2hhbmdlLFxuICAnQVdTOjpRdWlja1NpZ2h0OjpEYXRhU291cmNlJzogaXNIb3Rzd2FwcGFibGVDbG91ZENvbnRyb2xDaGFuZ2UsXG59O1xuXG4vKipcbiAqIFBlcmZvcm0gYSBob3Rzd2FwIGRlcGxveW1lbnQsIHNob3J0LWNpcmN1aXRpbmcgQ2xvdWRGb3JtYXRpb24gaWYgcG9zc2libGUuXG4gKiBJZiBpdCdzIG5vdCBwb3NzaWJsZSB0byBzaG9ydC1jaXJjdWl0IHRoZSBkZXBsb3ltZW50XG4gKiAoYmVjYXVzZSB0aGUgQ0RLIFN0YWNrIGNvbnRhaW5zIGNoYW5nZXMgdGhhdCBjYW5ub3QgYmUgZGVwbG95ZWQgd2l0aG91dCBDbG91ZEZvcm1hdGlvbiksXG4gKiByZXR1cm5zIGB1bmRlZmluZWRgLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdHJ5SG90c3dhcERlcGxveW1lbnQoXG4gIHNka1Byb3ZpZGVyOiBTZGtQcm92aWRlcixcbiAgaW9IZWxwZXI6IElvSGVscGVyLFxuICBhc3NldFBhcmFtczogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSxcbiAgY2xvdWRGb3JtYXRpb25TdGFjazogQ2xvdWRGb3JtYXRpb25TdGFjayxcbiAgc3RhY2tBcnRpZmFjdDogY3hhcGkuQ2xvdWRGb3JtYXRpb25TdGFja0FydGlmYWN0LFxuICBob3Rzd2FwTW9kZTogSG90c3dhcE1vZGUsXG4gIGhvdHN3YXBQcm9wZXJ0eU92ZXJyaWRlczogSG90c3dhcFByb3BlcnR5T3ZlcnJpZGVzLFxuKTogUHJvbWlzZTxTdWNjZXNzZnVsRGVwbG95U3RhY2tSZXN1bHQgfCB1bmRlZmluZWQ+IHtcbiAgY29uc3QgaG90c3dhcFNwYW4gPSBhd2FpdCBpb0hlbHBlci5zcGFuKFNQQU4uSE9UU1dBUCkuYmVnaW4oe1xuICAgIHN0YWNrOiBzdGFja0FydGlmYWN0LFxuICAgIG1vZGU6IGhvdHN3YXBNb2RlLFxuICB9KTtcblxuICBjb25zdCByZXN1bHQgPSBhd2FpdCBob3Rzd2FwRGVwbG95bWVudChcbiAgICBzZGtQcm92aWRlcixcbiAgICBob3Rzd2FwU3BhbixcbiAgICBhc3NldFBhcmFtcyxcbiAgICBzdGFja0FydGlmYWN0LFxuICAgIGhvdHN3YXBNb2RlLFxuICAgIGhvdHN3YXBQcm9wZXJ0eU92ZXJyaWRlcyxcbiAgKTtcblxuICBhd2FpdCBob3Rzd2FwU3Bhbi5lbmQocmVzdWx0KTtcblxuICAvLyBUaGlzIGlzIGEgaG90c3dhcCBlcnJvciB0aGF0IHdhcyBjYXVnaHQgZHVyaW5nIHRoZSBob3Rzd2FwRGVwbG95bWVudCBmdW5jdGlvblxuICAvLyBJdCBpcyB0aHJvd24gYWZ0ZXIgdGhlIGhvdHN3YXAgc3BhbiBlbmRzIHNvIGl0IGNhbiBiZSByZXBvcnRlZCB0byB0ZWxlbWV0cnlcbiAgaWYgKHJlc3VsdC5lcnJvcikge1xuICAgIHRocm93IHJlc3VsdC5lcnJvcjtcbiAgfVxuXG4gIGlmIChyZXN1bHQ/LmhvdHN3YXBwZWQgPT09IHRydWUpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogJ2RpZC1kZXBsb3ktc3RhY2snLFxuICAgICAgbm9PcDogcmVzdWx0LmhvdHN3YXBwYWJsZUNoYW5nZXMubGVuZ3RoID09PSAwLFxuICAgICAgc3RhY2tBcm46IGNsb3VkRm9ybWF0aW9uU3RhY2suc3RhY2tJZCxcbiAgICAgIG91dHB1dHM6IGNsb3VkRm9ybWF0aW9uU3RhY2sub3V0cHV0cyxcbiAgICAgIGRlbGV0ZUZhaWx1cmVzOiBbXSxcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBQZXJmb3JtIGEgaG90c3dhcCBkZXBsb3ltZW50LCBzaG9ydC1jaXJjdWl0aW5nIENsb3VkRm9ybWF0aW9uIGlmIHBvc3NpYmxlLlxuICogUmV0dXJucyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgYXR0ZW1wdGVkIGhvdHN3YXAgZGVwbG95bWVudFxuICovXG5hc3luYyBmdW5jdGlvbiBob3Rzd2FwRGVwbG95bWVudChcbiAgc2RrUHJvdmlkZXI6IFNka1Byb3ZpZGVyLFxuICBpb1NwYW46IElNZXNzYWdlU3Bhbjxhbnk+LFxuICBhc3NldFBhcmFtczogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSxcbiAgc3RhY2s6IGN4YXBpLkNsb3VkRm9ybWF0aW9uU3RhY2tBcnRpZmFjdCxcbiAgaG90c3dhcE1vZGU6IEhvdHN3YXBNb2RlLFxuICBob3Rzd2FwUHJvcGVydHlPdmVycmlkZXM6IEhvdHN3YXBQcm9wZXJ0eU92ZXJyaWRlcyxcbik6IFByb21pc2U8T21pdDxIb3Rzd2FwUmVzdWx0LCAnZHVyYXRpb24nPj4ge1xuICAvLyByZXNvbHZlIHRoZSBlbnZpcm9ubWVudCwgc28gd2UgY2FuIHN1YnN0aXR1dGUgdGhpbmdzIGxpa2UgQVdTOjpSZWdpb24gaW4gQ0ZOIGV4cHJlc3Npb25zXG4gIGNvbnN0IHJlc29sdmVkRW52ID0gYXdhaXQgc2RrUHJvdmlkZXIucmVzb2x2ZUVudmlyb25tZW50KHN0YWNrLmVudmlyb25tZW50KTtcbiAgLy8gY3JlYXRlIGEgbmV3IFNESyB1c2luZyB0aGUgQ0xJIGNyZWRlbnRpYWxzLCBiZWNhdXNlIHRoZSBkZWZhdWx0IG9uZSB3aWxsIG5vdCB3b3JrIGZvciBuZXctc3R5bGUgc3ludGhlc2lzIC1cbiAgLy8gaXQgYXNzdW1lcyB0aGUgYm9vdHN0cmFwIGRlcGxveSBSb2xlLCB3aGljaCBkb2Vzbid0IGhhdmUgcGVybWlzc2lvbnMgdG8gdXBkYXRlIExhbWJkYSBmdW5jdGlvbnNcbiAgY29uc3Qgc2RrID0gKGF3YWl0IHNka1Byb3ZpZGVyLmZvckVudmlyb25tZW50KHJlc29sdmVkRW52LCBNb2RlLkZvcldyaXRpbmcpKS5zZGs7XG5cbiAgLy8gQ2hlY2sgZm9yIGEgY2FjaGVkIHRlbXBsYXRlIGZyb20gYSBwcmV2aW91cyBob3Rzd2FwIGRlcGxveW1lbnQuXG4gIC8vIFVzZSBpZiBhdmFpbGFibGUsIHJlcHJlc2VudHMgdGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhlIHJlc291cmNlcyBpbnZvbHZlZCBpbiBob3Rzd2FwLlxuICBjb25zdCBob3Rzd2FwQ2FjaGUgPSBhd2FpdCByZWFkSG90c3dhcFRlbXBsYXRlQ2FjaGUoc3RhY2suYXNzZW1ibHkuZGlyZWN0b3J5LCBzdGFjay5zdGFja05hbWUsIHN0YWNrLnRlbXBsYXRlKTtcbiAgY29uc3QgY3VycmVudFRlbXBsYXRlID0gaG90c3dhcENhY2hlID8/IGF3YWl0IGxvYWRDdXJyZW50VGVtcGxhdGVXaXRoTmVzdGVkU3RhY2tzKHN0YWNrLCBzZGspO1xuXG4gIGNvbnN0IGV2YWx1YXRlQ2ZuVGVtcGxhdGUgPSBuZXcgRXZhbHVhdGVDbG91ZEZvcm1hdGlvblRlbXBsYXRlKHtcbiAgICBzdGFja0FydGlmYWN0OiBzdGFjayxcbiAgICBwYXJhbWV0ZXJzOiBhc3NldFBhcmFtcyxcbiAgICBhY2NvdW50OiByZXNvbHZlZEVudi5hY2NvdW50LFxuICAgIHJlZ2lvbjogcmVzb2x2ZWRFbnYucmVnaW9uLFxuICAgIHBhcnRpdGlvbjogKGF3YWl0IHNkay5jdXJyZW50QWNjb3VudCgpKS5wYXJ0aXRpb24sXG4gICAgc2RrLFxuICAgIG5lc3RlZFN0YWNrczogY3VycmVudFRlbXBsYXRlLm5lc3RlZFN0YWNrcyxcbiAgfSk7XG5cbiAgY29uc3Qgc3RhY2tDaGFuZ2VzID0gY2ZuX2RpZmYuZnVsbERpZmYoY3VycmVudFRlbXBsYXRlLmRlcGxveWVkUm9vdFRlbXBsYXRlLCBzdGFjay50ZW1wbGF0ZSk7XG4gIGNvbnN0IHsgaG90c3dhcHBhYmxlLCBub25Ib3Rzd2FwcGFibGUgfSA9IGF3YWl0IGNsYXNzaWZ5UmVzb3VyY2VDaGFuZ2VzKFxuICAgIHN0YWNrQ2hhbmdlcyxcbiAgICBldmFsdWF0ZUNmblRlbXBsYXRlLFxuICAgIHNkayxcbiAgICBjdXJyZW50VGVtcGxhdGUubmVzdGVkU3RhY2tzLCBob3Rzd2FwUHJvcGVydHlPdmVycmlkZXMsXG4gICk7XG5cbiAgYXdhaXQgbG9nUmVqZWN0ZWRDaGFuZ2VzKGlvU3Bhbiwgbm9uSG90c3dhcHBhYmxlLCBob3Rzd2FwTW9kZSk7XG5cbiAgY29uc3QgaG90c3dhcHBhYmxlQ2hhbmdlcyA9IGhvdHN3YXBwYWJsZS5tYXAobyA9PiBvLmNoYW5nZSk7XG4gIGNvbnN0IG5vbkhvdHN3YXBwYWJsZUNoYW5nZXMgPSBub25Ib3Rzd2FwcGFibGUubWFwKG4gPT4gbi5jaGFuZ2UpO1xuXG4gIGF3YWl0IGlvU3Bhbi5ub3RpZnkoSU8uQ0RLX1RPT0xLSVRfSTU0MDEubXNnKCdIb3Rzd2FwIHBsYW4gY3JlYXRlZCcsIHtcbiAgICBzdGFjayxcbiAgICBtb2RlOiBob3Rzd2FwTW9kZSxcbiAgICBob3Rzd2FwcGFibGVDaGFuZ2VzLFxuICAgIG5vbkhvdHN3YXBwYWJsZUNoYW5nZXMsXG4gIH0pKTtcblxuICAvLyBwcmVzZXJ2ZSBjbGFzc2ljIGhvdHN3YXAgYmVoYXZpb3JcbiAgaWYgKGhvdHN3YXBNb2RlID09PSAnZmFsbC1iYWNrJykge1xuICAgIGlmIChub25Ib3Rzd2FwcGFibGVDaGFuZ2VzLmxlbmd0aCA+IDApIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHN0YWNrLFxuICAgICAgICBtb2RlOiBob3Rzd2FwTW9kZSxcbiAgICAgICAgaG90c3dhcHBlZDogZmFsc2UsXG4gICAgICAgIGhvdHN3YXBwYWJsZUNoYW5nZXMsXG4gICAgICAgIG5vbkhvdHN3YXBwYWJsZUNoYW5nZXMsXG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIC8vIGFwcGx5IHRoZSBzaG9ydC1jaXJjdWl0YWJsZSBjaGFuZ2VzXG4gIGxldCBlcnJvcjogRXJyb3IgfCB1bmRlZmluZWQ7XG4gIHRyeSB7XG4gICAgYXdhaXQgYXBwbHlBbGxIb3Rzd2FwT3BlcmF0aW9ucyhzZGssIGlvU3BhbiwgaG90c3dhcHBhYmxlKTtcbiAgICAvLyBDYWNoZSB0aGUgc3ludGhlc2l6ZWQgdGVtcGxhdGUgc28gdGhlIG5leHQgaG90c3dhcCBkaWZmcyBhZ2FpbnN0IGl0XG4gICAgYXdhaXQgd3JpdGVIb3Rzd2FwVGVtcGxhdGVDYWNoZShzdGFjay5hc3NlbWJseS5kaXJlY3RvcnksIHN0YWNrLnN0YWNrTmFtZSwgc3RhY2sudGVtcGxhdGUsIGN1cnJlbnRUZW1wbGF0ZS5uZXN0ZWRTdGFja3MpO1xuICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICBlcnJvciA9IGU7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHN0YWNrLFxuICAgIG1vZGU6IGhvdHN3YXBNb2RlLFxuICAgIGhvdHN3YXBwZWQ6ICFlcnJvcixcbiAgICBob3Rzd2FwcGFibGVDaGFuZ2VzLFxuICAgIG5vbkhvdHN3YXBwYWJsZUNoYW5nZXMsXG4gICAgZXJyb3IsXG4gIH07XG59XG5cbmludGVyZmFjZSBDbGFzc2lmaWVkQ2hhbmdlcyB7XG4gIGhvdHN3YXBwYWJsZTogSG90c3dhcE9wZXJhdGlvbltdO1xuICBub25Ib3Rzd2FwcGFibGU6IFJlamVjdGVkQ2hhbmdlW107XG59XG5cbi8qKlxuICogQ2xhc3NpZmllcyBhbGwgY2hhbmdlcyB0byBhbGwgcmVzb3VyY2VzIGFzIGVpdGhlciBob3Rzd2FwcGFibGUgb3Igbm90LlxuICogTWV0YWRhdGEgY2hhbmdlcyBhcmUgZXhjbHVkZWQgZnJvbSB0aGUgbGlzdCBvZiAobm9uKWhvdHN3YXBwYWJsZSByZXNvdXJjZXMuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGNsYXNzaWZ5UmVzb3VyY2VDaGFuZ2VzKFxuICBzdGFja0NoYW5nZXM6IGNmbl9kaWZmLlRlbXBsYXRlRGlmZixcbiAgZXZhbHVhdGVDZm5UZW1wbGF0ZTogRXZhbHVhdGVDbG91ZEZvcm1hdGlvblRlbXBsYXRlLFxuICBzZGs6IFNESyxcbiAgbmVzdGVkU3RhY2tOYW1lczogeyBbbmVzdGVkU3RhY2tOYW1lOiBzdHJpbmddOiBOZXN0ZWRTdGFja1RlbXBsYXRlcyB9LFxuICBob3Rzd2FwUHJvcGVydHlPdmVycmlkZXM6IEhvdHN3YXBQcm9wZXJ0eU92ZXJyaWRlcyxcbik6IFByb21pc2U8Q2xhc3NpZmllZENoYW5nZXM+IHtcbiAgY29uc3QgcmVzb3VyY2VEaWZmZXJlbmNlcyA9IGdldFN0YWNrUmVzb3VyY2VEaWZmZXJlbmNlcyhzdGFja0NoYW5nZXMpO1xuXG4gIGNvbnN0IHByb21pc2VzOiBBcnJheTwoKSA9PiBQcm9taXNlPEhvdHN3YXBDaGFuZ2VbXT4+ID0gW107XG4gIGNvbnN0IGhvdHN3YXBwYWJsZVJlc291cmNlcyA9IG5ldyBBcnJheTxIb3Rzd2FwT3BlcmF0aW9uPigpO1xuICBjb25zdCBub25Ib3Rzd2FwcGFibGVSZXNvdXJjZXMgPSBuZXcgQXJyYXk8UmVqZWN0ZWRDaGFuZ2U+KCk7XG4gIGNvbnN0IG5lc3RlZFN0YWNrVGFza3M6IEFycmF5PFByb21pc2U8Q2xhc3NpZmllZENoYW5nZXM+PiA9IFtdO1xuICBjb25zdCBsaW1pdCA9IHBMaW1pdCgxMCk7XG5cbiAgZm9yIChjb25zdCBsb2dpY2FsSWQgb2YgT2JqZWN0LmtleXMoc3RhY2tDaGFuZ2VzLm91dHB1dHMuY2hhbmdlcykpIHtcbiAgICBub25Ib3Rzd2FwcGFibGVSZXNvdXJjZXMucHVzaCh7XG4gICAgICBob3Rzd2FwcGFibGU6IGZhbHNlLFxuICAgICAgY2hhbmdlOiB7XG4gICAgICAgIHJlYXNvbjogTm9uSG90c3dhcHBhYmxlUmVhc29uLk9VVFBVVCxcbiAgICAgICAgZGVzY3JpcHRpb246ICdvdXRwdXQgd2FzIGNoYW5nZWQnLFxuICAgICAgICBzdWJqZWN0OiB7XG4gICAgICAgICAgdHlwZTogJ091dHB1dCcsXG4gICAgICAgICAgbG9naWNhbElkLFxuICAgICAgICAgIG1ldGFkYXRhOiBldmFsdWF0ZUNmblRlbXBsYXRlLm1ldGFkYXRhRm9yKGxvZ2ljYWxJZCksXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG4gIC8vIGdhdGhlciB0aGUgcmVzdWx0cyBvZiB0aGUgZGV0ZWN0b3IgZnVuY3Rpb25zXG4gIGZvciAoY29uc3QgW2xvZ2ljYWxJZCwgY2hhbmdlXSBvZiBPYmplY3QuZW50cmllcyhyZXNvdXJjZURpZmZlcmVuY2VzKSkge1xuICAgIGlmIChjaGFuZ2UubmV3VmFsdWU/LlR5cGUgPT09ICdBV1M6OkNsb3VkRm9ybWF0aW9uOjpTdGFjaycgJiYgY2hhbmdlLm9sZFZhbHVlPy5UeXBlID09PSAnQVdTOjpDbG91ZEZvcm1hdGlvbjo6U3RhY2snKSB7XG4gICAgICBuZXN0ZWRTdGFja1Rhc2tzLnB1c2gobGltaXQoKCkgPT4gZmluZE5lc3RlZEhvdHN3YXBwYWJsZUNoYW5nZXMoXG4gICAgICAgIGxvZ2ljYWxJZCxcbiAgICAgICAgY2hhbmdlLFxuICAgICAgICBuZXN0ZWRTdGFja05hbWVzLFxuICAgICAgICBldmFsdWF0ZUNmblRlbXBsYXRlLFxuICAgICAgICBzZGssXG4gICAgICAgIGhvdHN3YXBQcm9wZXJ0eU92ZXJyaWRlcyxcbiAgICAgICkpKTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGNvbnN0IGhvdHN3YXBwYWJsZUNoYW5nZUNhbmRpZGF0ZSA9IGlzQ2FuZGlkYXRlRm9ySG90c3dhcHBpbmcobG9naWNhbElkLCBjaGFuZ2UsIGV2YWx1YXRlQ2ZuVGVtcGxhdGUpO1xuICAgIC8vIHdlIGRvbid0IG5lZWQgdG8gcnVuIHRoaXMgdGhyb3VnaCB0aGUgZGV0ZWN0b3IgZnVuY3Rpb25zLCB3ZSBjYW4gYWxyZWFkeSBqdWRnZSB0aGlzXG4gICAgaWYgKCdob3Rzd2FwcGFibGUnIGluIGhvdHN3YXBwYWJsZUNoYW5nZUNhbmRpZGF0ZSkge1xuICAgICAgaWYgKCFob3Rzd2FwcGFibGVDaGFuZ2VDYW5kaWRhdGUuaG90c3dhcHBhYmxlKSB7XG4gICAgICAgIG5vbkhvdHN3YXBwYWJsZVJlc291cmNlcy5wdXNoKGhvdHN3YXBwYWJsZUNoYW5nZUNhbmRpZGF0ZSk7XG4gICAgICB9XG5cbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGNvbnN0IHJlc291cmNlVHlwZTogc3RyaW5nID0gaG90c3dhcHBhYmxlQ2hhbmdlQ2FuZGlkYXRlLm5ld1ZhbHVlLlR5cGU7XG4gICAgaWYgKHJlc291cmNlVHlwZSBpbiBSRVNPVVJDRV9ERVRFQ1RPUlMpIHtcbiAgICAgIC8vIHJ1biBkZXRlY3RvciBmdW5jdGlvbnMgbGF6aWx5IHRvIHByZXZlbnQgdW5oYW5kbGVkIHByb21pc2UgcmVqZWN0aW9uc1xuICAgICAgcHJvbWlzZXMucHVzaCgoKSA9PlxuICAgICAgICBSRVNPVVJDRV9ERVRFQ1RPUlNbcmVzb3VyY2VUeXBlXShsb2dpY2FsSWQsIGhvdHN3YXBwYWJsZUNoYW5nZUNhbmRpZGF0ZSwgZXZhbHVhdGVDZm5UZW1wbGF0ZSwgaG90c3dhcFByb3BlcnR5T3ZlcnJpZGVzKSxcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG5vbkhvdHN3YXBwYWJsZVJlc291cmNlcy5wdXNoKG5vbkhvdHN3YXBwYWJsZVJlc291cmNlKGhvdHN3YXBwYWJsZUNoYW5nZUNhbmRpZGF0ZSkpO1xuICAgIH1cbiAgfVxuXG4gIC8vIHJlc29sdmUgYWxsIG5lc3RlZCBzdGFjayBhbmQgZGV0ZWN0b3IgcmVzdWx0cyBpbiBwYXJhbGxlbFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGNka2xhYnMvcHJvbWlzZWFsbC1uby11bmJvdW5kZWQtcGFyYWxsZWxpc21cbiAgY29uc3QgbmVzdGVkUmVzdWx0cyA9IGF3YWl0IFByb21pc2UuYWxsKG5lc3RlZFN0YWNrVGFza3MpO1xuICBmb3IgKGNvbnN0IG5lc3RlZCBvZiBuZXN0ZWRSZXN1bHRzKSB7XG4gICAgaG90c3dhcHBhYmxlUmVzb3VyY2VzLnB1c2goLi4ubmVzdGVkLmhvdHN3YXBwYWJsZSk7XG4gICAgbm9uSG90c3dhcHBhYmxlUmVzb3VyY2VzLnB1c2goLi4ubmVzdGVkLm5vbkhvdHN3YXBwYWJsZSk7XG4gIH1cblxuICBjb25zdCBjaGFuZ2VzRGV0ZWN0aW9uUmVzdWx0czogQXJyYXk8SG90c3dhcENoYW5nZVtdPiA9IFtdO1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGNka2xhYnMvcHJvbWlzZWFsbC1uby11bmJvdW5kZWQtcGFyYWxsZWxpc21cbiAgY29uc3QgZGV0ZWN0b3JSZXN1bHRzID0gYXdhaXQgUHJvbWlzZS5hbGwocHJvbWlzZXMubWFwKChmbikgPT4gbGltaXQoZm4pKSk7XG4gIGZvciAoY29uc3QgaG90c3dhcERldGVjdGlvblJlc3VsdHMgb2YgZGV0ZWN0b3JSZXN1bHRzKSB7XG4gICAgY2hhbmdlc0RldGVjdGlvblJlc3VsdHMucHVzaChob3Rzd2FwRGV0ZWN0aW9uUmVzdWx0cyk7XG4gIH1cblxuICBmb3IgKGNvbnN0IHJlc291cmNlRGV0ZWN0aW9uUmVzdWx0cyBvZiBjaGFuZ2VzRGV0ZWN0aW9uUmVzdWx0cykge1xuICAgIGZvciAoY29uc3QgcHJvcGVydHlSZXN1bHQgb2YgcmVzb3VyY2VEZXRlY3Rpb25SZXN1bHRzKSB7XG4gICAgICBwcm9wZXJ0eVJlc3VsdC5ob3Rzd2FwcGFibGVcbiAgICAgICAgPyBob3Rzd2FwcGFibGVSZXNvdXJjZXMucHVzaChwcm9wZXJ0eVJlc3VsdClcbiAgICAgICAgOiBub25Ib3Rzd2FwcGFibGVSZXNvdXJjZXMucHVzaChwcm9wZXJ0eVJlc3VsdCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBob3Rzd2FwcGFibGU6IGhvdHN3YXBwYWJsZVJlc291cmNlcyxcbiAgICBub25Ib3Rzd2FwcGFibGU6IG5vbkhvdHN3YXBwYWJsZVJlc291cmNlcyxcbiAgfTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIGFsbCBjaGFuZ2VzIHRvIHJlc291cmNlcyBpbiB0aGUgZ2l2ZW4gU3RhY2suXG4gKlxuICogQHBhcmFtIHN0YWNrQ2hhbmdlcyAtIHRoZSBjb2xsZWN0aW9uIG9mIGFsbCBjaGFuZ2VzIHRvIGEgZ2l2ZW4gU3RhY2tcbiAqL1xuZnVuY3Rpb24gZ2V0U3RhY2tSZXNvdXJjZURpZmZlcmVuY2VzKHN0YWNrQ2hhbmdlczogY2ZuX2RpZmYuVGVtcGxhdGVEaWZmKToge1xuICBbbG9naWNhbElkOiBzdHJpbmddOiBjZm5fZGlmZi5SZXNvdXJjZURpZmZlcmVuY2U7XG59IHtcbiAgLy8gd2UgbmVlZCB0byBjb2xsYXBzZSBsb2dpY2FsIElEIHJlbmFtZSBjaGFuZ2VzIGludG8gb25lIGNoYW5nZSxcbiAgLy8gYXMgdGhleSBhcmUgcmVwcmVzZW50ZWQgaW4gc3RhY2tDaGFuZ2VzIGFzIGEgcGFpciBvZiB0d28gY2hhbmdlczogb25lIGFkZGl0aW9uIGFuZCBvbmUgcmVtb3ZhbFxuICBjb25zdCBhbGxSZXNvdXJjZUNoYW5nZXM6IHsgW2xvZ0lkOiBzdHJpbmddOiBjZm5fZGlmZi5SZXNvdXJjZURpZmZlcmVuY2UgfSA9IHN0YWNrQ2hhbmdlcy5yZXNvdXJjZXMuY2hhbmdlcztcbiAgY29uc3QgYWxsUmVtb3ZhbENoYW5nZXMgPSBmaWx0ZXJEaWN0KGFsbFJlc291cmNlQ2hhbmdlcywgKHJlc0NoYW5nZSkgPT4gcmVzQ2hhbmdlLmlzUmVtb3ZhbCk7XG4gIGNvbnN0IGFsbE5vblJlbW92YWxDaGFuZ2VzID0gZmlsdGVyRGljdChhbGxSZXNvdXJjZUNoYW5nZXMsIChyZXNDaGFuZ2UpID0+ICFyZXNDaGFuZ2UuaXNSZW1vdmFsKTtcbiAgZm9yIChjb25zdCBbbG9nSWQsIG5vblJlbW92YWxDaGFuZ2VdIG9mIE9iamVjdC5lbnRyaWVzKGFsbE5vblJlbW92YWxDaGFuZ2VzKSkge1xuICAgIGlmIChub25SZW1vdmFsQ2hhbmdlLmlzQWRkaXRpb24pIHtcbiAgICAgIGNvbnN0IGFkZENoYW5nZSA9IG5vblJlbW92YWxDaGFuZ2U7XG4gICAgICAvLyBzZWFyY2ggZm9yIGFuIGlkZW50aWNhbCByZW1vdmFsIGNoYW5nZVxuICAgICAgY29uc3QgaWRlbnRpY2FsUmVtb3ZhbENoYW5nZSA9IE9iamVjdC5lbnRyaWVzKGFsbFJlbW92YWxDaGFuZ2VzKS5maW5kKChbXywgcmVtQ2hhbmdlXSkgPT4ge1xuICAgICAgICByZXR1cm4gY2hhbmdlc0FyZUZvclNhbWVSZXNvdXJjZShyZW1DaGFuZ2UsIGFkZENoYW5nZSk7XG4gICAgICB9KTtcbiAgICAgIC8vIGlmIHdlIGZvdW5kIG9uZSwgdGhlbiB0aGlzIG1lYW5zIHRoaXMgaXMgYSByZW5hbWUgY2hhbmdlXG4gICAgICBpZiAoaWRlbnRpY2FsUmVtb3ZhbENoYW5nZSkge1xuICAgICAgICBjb25zdCBbcmVtb3ZlZExvZ0lkLCByZW1vdmVkUmVzb3VyY2VDaGFuZ2VdID0gaWRlbnRpY2FsUmVtb3ZhbENoYW5nZTtcbiAgICAgICAgYWxsTm9uUmVtb3ZhbENoYW5nZXNbbG9nSWRdID0gbWFrZVJlbmFtZURpZmZlcmVuY2UocmVtb3ZlZFJlc291cmNlQ2hhbmdlLCBhZGRDaGFuZ2UpO1xuICAgICAgICAvLyBkZWxldGUgdGhlIHJlbW92YWwgY2hhbmdlIHRoYXQgZm9ybXMgdGhlIHJlbmFtZSBwYWlyXG4gICAgICAgIGRlbGV0ZSBhbGxSZW1vdmFsQ2hhbmdlc1tyZW1vdmVkTG9nSWRdO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICAvLyB0aGUgZmluYWwgcmVzdWx0IGFyZSBhbGwgb2YgdGhlIHJlbWFpbmluZyByZW1vdmFsIGNoYW5nZXMsXG4gIC8vIHBsdXMgYWxsIG9mIHRoZSBub24tcmVtb3ZhbCBjaGFuZ2VzXG4gIC8vICh3ZSBzYXZlZCB0aGUgcmVuYW1lIGNoYW5nZXMgaW4gdGhhdCBvYmplY3QgYWxyZWFkeSlcbiAgcmV0dXJuIHtcbiAgICAuLi5hbGxSZW1vdmFsQ2hhbmdlcyxcbiAgICAuLi5hbGxOb25SZW1vdmFsQ2hhbmdlcyxcbiAgfTtcbn1cblxuLyoqIEZpbHRlcnMgYW4gb2JqZWN0IHdpdGggc3RyaW5nIGtleXMgYmFzZWQgb24gd2hldGhlciB0aGUgY2FsbGJhY2sgcmV0dXJucyAndHJ1ZScgZm9yIHRoZSBnaXZlbiB2YWx1ZSBpbiB0aGUgb2JqZWN0LiAqL1xuZnVuY3Rpb24gZmlsdGVyRGljdDxUPihkaWN0OiB7IFtrZXk6IHN0cmluZ106IFQgfSwgZnVuYzogKHQ6IFQpID0+IGJvb2xlYW4pOiB7IFtrZXk6IHN0cmluZ106IFQgfSB7XG4gIHJldHVybiBPYmplY3QuZW50cmllcyhkaWN0KS5yZWR1Y2UoXG4gICAgKGFjYywgW2tleSwgdF0pID0+IHtcbiAgICAgIGlmIChmdW5jKHQpKSB7XG4gICAgICAgIGFjY1trZXldID0gdDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBhY2M7XG4gICAgfSxcbiAgICB7fSBhcyB7IFtrZXk6IHN0cmluZ106IFQgfSxcbiAgKTtcbn1cblxuLyoqIEZpbmRzIGFueSBob3Rzd2FwcGFibGUgY2hhbmdlcyBpbiBhbGwgbmVzdGVkIHN0YWNrcy4gKi9cbmFzeW5jIGZ1bmN0aW9uIGZpbmROZXN0ZWRIb3Rzd2FwcGFibGVDaGFuZ2VzKFxuICBsb2dpY2FsSWQ6IHN0cmluZyxcbiAgY2hhbmdlOiBjZm5fZGlmZi5SZXNvdXJjZURpZmZlcmVuY2UsXG4gIG5lc3RlZFN0YWNrVGVtcGxhdGVzOiB7IFtuZXN0ZWRTdGFja05hbWU6IHN0cmluZ106IE5lc3RlZFN0YWNrVGVtcGxhdGVzIH0sXG4gIGV2YWx1YXRlQ2ZuVGVtcGxhdGU6IEV2YWx1YXRlQ2xvdWRGb3JtYXRpb25UZW1wbGF0ZSxcbiAgc2RrOiBTREssXG4gIGhvdHN3YXBQcm9wZXJ0eU92ZXJyaWRlczogSG90c3dhcFByb3BlcnR5T3ZlcnJpZGVzLFxuKTogUHJvbWlzZTxDbGFzc2lmaWVkQ2hhbmdlcz4ge1xuICBjb25zdCBuZXN0ZWRTdGFjayA9IG5lc3RlZFN0YWNrVGVtcGxhdGVzW2xvZ2ljYWxJZF07XG4gIGlmICghbmVzdGVkU3RhY2sucGh5c2ljYWxOYW1lKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGhvdHN3YXBwYWJsZTogW10sXG4gICAgICBub25Ib3Rzd2FwcGFibGU6IFtcbiAgICAgICAge1xuICAgICAgICAgIGhvdHN3YXBwYWJsZTogZmFsc2UsXG4gICAgICAgICAgY2hhbmdlOiB7XG4gICAgICAgICAgICByZWFzb246IE5vbkhvdHN3YXBwYWJsZVJlYXNvbi5ORVNURURfU1RBQ0tfQ1JFQVRJT04sXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogJ25ld2x5IGNyZWF0ZWQgbmVzdGVkIHN0YWNrcyBjYW5ub3QgYmUgaG90c3dhcHBlZCcsXG4gICAgICAgICAgICBzdWJqZWN0OiB7XG4gICAgICAgICAgICAgIHR5cGU6ICdSZXNvdXJjZScsXG4gICAgICAgICAgICAgIGxvZ2ljYWxJZCxcbiAgICAgICAgICAgICAgcmVzb3VyY2VUeXBlOiAnQVdTOjpDbG91ZEZvcm1hdGlvbjo6U3RhY2snLFxuICAgICAgICAgICAgICBtZXRhZGF0YTogZXZhbHVhdGVDZm5UZW1wbGF0ZS5tZXRhZGF0YUZvcihsb2dpY2FsSWQpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9O1xuICB9XG5cbiAgY29uc3QgZXZhbHVhdGVOZXN0ZWRDZm5UZW1wbGF0ZSA9IGF3YWl0IGV2YWx1YXRlQ2ZuVGVtcGxhdGUuY3JlYXRlTmVzdGVkRXZhbHVhdGVDbG91ZEZvcm1hdGlvblRlbXBsYXRlKFxuICAgIG5lc3RlZFN0YWNrLnBoeXNpY2FsTmFtZSxcbiAgICBuZXN0ZWRTdGFjay5nZW5lcmF0ZWRUZW1wbGF0ZSxcbiAgICBjaGFuZ2UubmV3VmFsdWU/LlByb3BlcnRpZXM/LlBhcmFtZXRlcnMsXG4gICk7XG5cbiAgY29uc3QgbmVzdGVkRGlmZiA9IGNmbl9kaWZmLmZ1bGxEaWZmKFxuICAgIG5lc3RlZFN0YWNrVGVtcGxhdGVzW2xvZ2ljYWxJZF0uZGVwbG95ZWRUZW1wbGF0ZSxcbiAgICBuZXN0ZWRTdGFja1RlbXBsYXRlc1tsb2dpY2FsSWRdLmdlbmVyYXRlZFRlbXBsYXRlLFxuICApO1xuXG4gIHJldHVybiBjbGFzc2lmeVJlc291cmNlQ2hhbmdlcyhcbiAgICBuZXN0ZWREaWZmLFxuICAgIGV2YWx1YXRlTmVzdGVkQ2ZuVGVtcGxhdGUsXG4gICAgc2RrLFxuICAgIG5lc3RlZFN0YWNrVGVtcGxhdGVzW2xvZ2ljYWxJZF0ubmVzdGVkU3RhY2tUZW1wbGF0ZXMsXG4gICAgaG90c3dhcFByb3BlcnR5T3ZlcnJpZGVzLFxuICApO1xufVxuXG4vKiogUmV0dXJucyAndHJ1ZScgaWYgYSBwYWlyIG9mIGNoYW5nZXMgaXMgZm9yIHRoZSBzYW1lIHJlc291cmNlLiAqL1xuZnVuY3Rpb24gY2hhbmdlc0FyZUZvclNhbWVSZXNvdXJjZShcbiAgb2xkQ2hhbmdlOiBjZm5fZGlmZi5SZXNvdXJjZURpZmZlcmVuY2UsXG4gIG5ld0NoYW5nZTogY2ZuX2RpZmYuUmVzb3VyY2VEaWZmZXJlbmNlLFxuKTogYm9vbGVhbiB7XG4gIHJldHVybiAoXG4gICAgb2xkQ2hhbmdlLm9sZFJlc291cmNlVHlwZSA9PT0gbmV3Q2hhbmdlLm5ld1Jlc291cmNlVHlwZSAmJlxuICAgIC8vIHRoaXMgaXNuJ3QgZ3JlYXQsIGJ1dCBJIGRvbid0IHdhbnQgdG8gYnJpbmcgaW4gc29tZXRoaW5nIGxpa2UgdW5kZXJzY29yZSBqdXN0IGZvciB0aGlzIGNvbXBhcmlzb25cbiAgICBKU09OLnN0cmluZ2lmeShvbGRDaGFuZ2Uub2xkUHJvcGVydGllcykgPT09IEpTT04uc3RyaW5naWZ5KG5ld0NoYW5nZS5uZXdQcm9wZXJ0aWVzKVxuICApO1xufVxuXG5mdW5jdGlvbiBtYWtlUmVuYW1lRGlmZmVyZW5jZShcbiAgcmVtQ2hhbmdlOiBjZm5fZGlmZi5SZXNvdXJjZURpZmZlcmVuY2UsXG4gIGFkZENoYW5nZTogY2ZuX2RpZmYuUmVzb3VyY2VEaWZmZXJlbmNlLFxuKTogY2ZuX2RpZmYuUmVzb3VyY2VEaWZmZXJlbmNlIHtcbiAgcmV0dXJuIG5ldyBjZm5fZGlmZi5SZXNvdXJjZURpZmZlcmVuY2UoXG4gICAgLy8gd2UgaGF2ZSB0byBmaWxsIGluIHRoZSBvbGQgdmFsdWUsIGJlY2F1c2Ugb3RoZXJ3aXNlIHRoaXMgd2lsbCBiZSBjbGFzc2lmaWVkIGFzIGEgbm9uLWhvdHN3YXBwYWJsZSBjaGFuZ2VcbiAgICByZW1DaGFuZ2Uub2xkVmFsdWUsXG4gICAgYWRkQ2hhbmdlLm5ld1ZhbHVlLFxuICAgIHtcbiAgICAgIHJlc291cmNlVHlwZToge1xuICAgICAgICBvbGRUeXBlOiByZW1DaGFuZ2Uub2xkUmVzb3VyY2VUeXBlLFxuICAgICAgICBuZXdUeXBlOiBhZGRDaGFuZ2UubmV3UmVzb3VyY2VUeXBlLFxuICAgICAgfSxcbiAgICAgIHByb3BlcnR5RGlmZnM6IChhZGRDaGFuZ2UgYXMgYW55KS5wcm9wZXJ0eURpZmZzLFxuICAgICAgb3RoZXJEaWZmczogKGFkZENoYW5nZSBhcyBhbnkpLm90aGVyRGlmZnMsXG4gICAgfSxcbiAgKTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIGEgYEhvdHN3YXBwYWJsZUNoYW5nZUNhbmRpZGF0ZWAgaWYgdGhlIGNoYW5nZSBpcyBob3Rzd2FwcGFibGVcbiAqIFJldHVybnMgYW4gZW1wdHkgYEhvdHN3YXBwYWJsZUNoYW5nZWAgaWYgdGhlIGNoYW5nZSBpcyB0byBDREs6Ok1ldGFkYXRhXG4gKiBSZXR1cm5zIGEgYE5vbkhvdHN3YXBwYWJsZUNoYW5nZWAgaWYgdGhlIGNoYW5nZSBpcyBub3QgaG90c3dhcHBhYmxlXG4gKi9cbmZ1bmN0aW9uIGlzQ2FuZGlkYXRlRm9ySG90c3dhcHBpbmcoXG4gIGxvZ2ljYWxJZDogc3RyaW5nLFxuICBjaGFuZ2U6IGNmbl9kaWZmLlJlc291cmNlRGlmZmVyZW5jZSxcbiAgZXZhbHVhdGVDZm5UZW1wbGF0ZTogRXZhbHVhdGVDbG91ZEZvcm1hdGlvblRlbXBsYXRlLFxuKTogUmVqZWN0ZWRDaGFuZ2UgfCBSZXNvdXJjZUNoYW5nZSB7XG4gIC8vIGEgcmVzb3VyY2UgaGFzIGJlZW4gcmVtb3ZlZCBPUiBhIHJlc291cmNlIGhhcyBiZWVuIGFkZGVkOyB3ZSBjYW4ndCBzaG9ydC1jaXJjdWl0IHRoYXQgY2hhbmdlXG4gIGlmICghY2hhbmdlLm9sZFZhbHVlKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGhvdHN3YXBwYWJsZTogZmFsc2UsXG4gICAgICBjaGFuZ2U6IHtcbiAgICAgICAgcmVhc29uOiBOb25Ib3Rzd2FwcGFibGVSZWFzb24uUkVTT1VSQ0VfQ1JFQVRJT04sXG4gICAgICAgIGRlc2NyaXB0aW9uOiBgcmVzb3VyY2UgJyR7bG9naWNhbElkfScgd2FzIGNyZWF0ZWQgYnkgdGhpcyBkZXBsb3ltZW50YCxcbiAgICAgICAgc3ViamVjdDoge1xuICAgICAgICAgIHR5cGU6ICdSZXNvdXJjZScsXG4gICAgICAgICAgbG9naWNhbElkLFxuICAgICAgICAgIHJlc291cmNlVHlwZTogY2hhbmdlLm5ld1ZhbHVlIS5UeXBlLFxuICAgICAgICAgIG1ldGFkYXRhOiBldmFsdWF0ZUNmblRlbXBsYXRlLm1ldGFkYXRhRm9yKGxvZ2ljYWxJZCksXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH07XG4gIH0gZWxzZSBpZiAoIWNoYW5nZS5uZXdWYWx1ZSkge1xuICAgIHJldHVybiB7XG4gICAgICBob3Rzd2FwcGFibGU6IGZhbHNlLFxuICAgICAgbG9naWNhbElkLFxuICAgICAgY2hhbmdlOiB7XG4gICAgICAgIHJlYXNvbjogTm9uSG90c3dhcHBhYmxlUmVhc29uLlJFU09VUkNFX0RFTEVUSU9OLFxuICAgICAgICBkZXNjcmlwdGlvbjogYHJlc291cmNlICcke2xvZ2ljYWxJZH0nIHdhcyBkZXN0cm95ZWQgYnkgdGhpcyBkZXBsb3ltZW50YCxcbiAgICAgICAgc3ViamVjdDoge1xuICAgICAgICAgIHR5cGU6ICdSZXNvdXJjZScsXG4gICAgICAgICAgbG9naWNhbElkLFxuICAgICAgICAgIHJlc291cmNlVHlwZTogY2hhbmdlLm9sZFZhbHVlLlR5cGUsXG4gICAgICAgICAgbWV0YWRhdGE6IGV2YWx1YXRlQ2ZuVGVtcGxhdGUubWV0YWRhdGFGb3IobG9naWNhbElkKSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIC8vIGEgcmVzb3VyY2UgaGFzIGhhZCBpdHMgdHlwZSBjaGFuZ2VkXG4gIGlmIChjaGFuZ2UubmV3VmFsdWUuVHlwZSAhPT0gY2hhbmdlLm9sZFZhbHVlLlR5cGUpIHtcbiAgICByZXR1cm4ge1xuICAgICAgaG90c3dhcHBhYmxlOiBmYWxzZSxcbiAgICAgIGNoYW5nZToge1xuICAgICAgICByZWFzb246IE5vbkhvdHN3YXBwYWJsZVJlYXNvbi5SRVNPVVJDRV9UWVBFX0NIQU5HRUQsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBgcmVzb3VyY2UgJyR7bG9naWNhbElkfScgaGFkIGl0cyB0eXBlIGNoYW5nZWQgZnJvbSAnJHtjaGFuZ2Uub2xkVmFsdWU/LlR5cGV9JyB0byAnJHtjaGFuZ2UubmV3VmFsdWU/LlR5cGV9J2AsXG4gICAgICAgIHN1YmplY3Q6IHtcbiAgICAgICAgICB0eXBlOiAnUmVzb3VyY2UnLFxuICAgICAgICAgIGxvZ2ljYWxJZCxcbiAgICAgICAgICByZXNvdXJjZVR5cGU6IGNoYW5nZS5uZXdWYWx1ZS5UeXBlLFxuICAgICAgICAgIG1ldGFkYXRhOiBldmFsdWF0ZUNmblRlbXBsYXRlLm1ldGFkYXRhRm9yKGxvZ2ljYWxJZCksXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGxvZ2ljYWxJZCxcbiAgICBvbGRWYWx1ZTogY2hhbmdlLm9sZFZhbHVlLFxuICAgIG5ld1ZhbHVlOiBjaGFuZ2UubmV3VmFsdWUsXG4gICAgcHJvcGVydHlVcGRhdGVzOiBjaGFuZ2UucHJvcGVydHlVcGRhdGVzLFxuICAgIG1ldGFkYXRhOiBldmFsdWF0ZUNmblRlbXBsYXRlLm1ldGFkYXRhRm9yKGxvZ2ljYWxJZCksXG4gIH07XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGFwcGx5QWxsSG90c3dhcE9wZXJhdGlvbnMoc2RrOiBTREssIGlvU3BhbjogSU1lc3NhZ2VTcGFuPGFueT4sIGhvdHN3YXBwYWJsZUNoYW5nZXM6IEhvdHN3YXBPcGVyYXRpb25bXSk6IFByb21pc2U8dm9pZFtdPiB7XG4gIGlmIChob3Rzd2FwcGFibGVDaGFuZ2VzLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoW10pO1xuICB9XG5cbiAgYXdhaXQgaW9TcGFuLmRlZmF1bHRzLmluZm8oYFxcbiR7SUNPTn0gaG90c3dhcHBpbmcgcmVzb3VyY2VzOmApO1xuICBjb25zdCBsaW1pdCA9IHBMaW1pdCgxMCk7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAY2RrbGFicy9wcm9taXNlYWxsLW5vLXVuYm91bmRlZC1wYXJhbGxlbGlzbVxuICByZXR1cm4gUHJvbWlzZS5hbGwoaG90c3dhcHBhYmxlQ2hhbmdlcy5tYXAoaG90c3dhcE9wZXJhdGlvbiA9PiBsaW1pdCgoKSA9PiB7XG4gICAgcmV0dXJuIGFwcGx5SG90c3dhcE9wZXJhdGlvbihzZGssIGlvU3BhbiwgaG90c3dhcE9wZXJhdGlvbik7XG4gIH0pKSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGFwcGx5SG90c3dhcE9wZXJhdGlvbihzZGs6IFNESywgaW9TcGFuOiBJTWVzc2FnZVNwYW48YW55PiwgaG90c3dhcE9wZXJhdGlvbjogSG90c3dhcE9wZXJhdGlvbik6IFByb21pc2U8dm9pZD4ge1xuICAvLyBub3RlIHRoZSB0eXBlIG9mIHNlcnZpY2UgdGhhdCB3YXMgc3VjY2Vzc2Z1bGx5IGhvdHN3YXBwZWQgaW4gdGhlIFVzZXItQWdlbnRcbiAgY29uc3QgY3VzdG9tVXNlckFnZW50ID0gYGNkay1ob3Rzd2FwL3N1Y2Nlc3MtJHtob3Rzd2FwT3BlcmF0aW9uLnNlcnZpY2V9YDtcbiAgc2RrLmFwcGVuZEN1c3RvbVVzZXJBZ2VudChjdXN0b21Vc2VyQWdlbnQpO1xuICBjb25zdCByZXNvdXJjZVRleHQgPSAocjogQWZmZWN0ZWRSZXNvdXJjZSkgPT4gci5kZXNjcmlwdGlvbiA/PyBgJHtyLnJlc291cmNlVHlwZX0gJyR7ci5waHlzaWNhbE5hbWUgPz8gci5sb2dpY2FsSWR9J2A7XG5cbiAgYXdhaXQgaW9TcGFuLm5vdGlmeShJTy5DREtfVE9PTEtJVF9JNTQwMi5tc2coXG4gICAgaG90c3dhcE9wZXJhdGlvbi5jaGFuZ2UucmVzb3VyY2VzLm1hcChyID0+IGZvcm1hdChgICAgJHtJQ09OfSAlc2AsIGNoYWxrLmJvbGQocmVzb3VyY2VUZXh0KHIpKSkpLmpvaW4oJ1xcbicpLFxuICAgIGhvdHN3YXBPcGVyYXRpb24uY2hhbmdlLFxuICApKTtcblxuICAvLyBpZiB0aGUgU0RLIGNhbGwgZmFpbHMsIGFuIGVycm9yIHdpbGwgYmUgdGhyb3duIGJ5IHRoZSBTREtcbiAgLy8gYW5kIHdpbGwgcHJldmVudCB0aGUgZ3JlZW4gJ2hvdHN3YXBwZWQhJyB0ZXh0IGZyb20gYmVpbmcgZGlzcGxheWVkXG4gIHRyeSB7XG4gICAgYXdhaXQgaG90c3dhcE9wZXJhdGlvbi5hcHBseShzZGspO1xuICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICBpZiAoZS5uYW1lID09PSAnVGltZW91dEVycm9yJyB8fCBlLm5hbWUgPT09ICdBYm9ydEVycm9yJykge1xuICAgICAgY29uc3QgcmVzdWx0OiBXYWl0ZXJSZXN1bHQgPSBKU09OLnBhcnNlKGZvcm1hdEVycm9yTWVzc2FnZShlKSk7XG4gICAgICBjb25zdCBlcnJvciA9IG5ldyBUb29sa2l0RXJyb3IoJ0hvdHN3YXBXYWl0ZXJGYWlsZWQnLCBmb3JtYXRXYWl0ZXJFcnJvclJlc3VsdChyZXN1bHQpKTtcbiAgICAgIGVycm9yLm5hbWUgPSBlLm5hbWU7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG4gICAgdGhyb3cgZTtcbiAgfVxuXG4gIGF3YWl0IGlvU3Bhbi5ub3RpZnkoSU8uQ0RLX1RPT0xLSVRfSTU0MDMubXNnKFxuICAgIGhvdHN3YXBPcGVyYXRpb24uY2hhbmdlLnJlc291cmNlcy5tYXAociA9PiBmb3JtYXQoYCAgICR7SUNPTn0gJXMgJXNgLCBjaGFsay5ib2xkKHJlc291cmNlVGV4dChyKSksIGNoYWxrLmdyZWVuKCdob3Rzd2FwcGVkIScpKSkuam9pbignXFxuJyksXG4gICAgaG90c3dhcE9wZXJhdGlvbi5jaGFuZ2UsXG4gICkpO1xuXG4gIHNkay5yZW1vdmVDdXN0b21Vc2VyQWdlbnQoY3VzdG9tVXNlckFnZW50KTtcbn1cblxuZnVuY3Rpb24gZm9ybWF0V2FpdGVyRXJyb3JSZXN1bHQocmVzdWx0OiBXYWl0ZXJSZXN1bHQpIHtcbiAgY29uc3QgbWFpbiA9IFtcbiAgICBgUmVzb3VyY2UgaXMgbm90IGluIHRoZSBleHBlY3RlZCBzdGF0ZSBkdWUgdG8gd2FpdGVyIHN0YXR1czogJHtyZXN1bHQuc3RhdGV9YCxcbiAgICByZXN1bHQucmVhc29uID8gYCR7cmVzdWx0LnJlYXNvbn0uYCA6ICcnLFxuICBdLmpvaW4oJy4gJyk7XG5cbiAgaWYgKHJlc3VsdC5vYnNlcnZlZFJlc3BvbnNlcyAhPSBudWxsKSB7XG4gICAgY29uc3Qgb2JzZXJ2ZWRSZXNwb25zZXMgPSBPYmplY3RcbiAgICAgIC5lbnRyaWVzKHJlc3VsdC5vYnNlcnZlZFJlc3BvbnNlcylcbiAgICAgIC5tYXAoKFttc2csIGNvdW50XSkgPT4gYCAgLSAke21zZ30gKCR7Y291bnR9KWApXG4gICAgICAuam9pbignXFxuJyk7XG5cbiAgICByZXR1cm4gYCR7bWFpbn0gT2JzZXJ2ZWQgcmVzcG9uc2VzOlxcbiR7b2JzZXJ2ZWRSZXNwb25zZXN9YDtcbiAgfVxuXG4gIHJldHVybiBtYWluO1xufVxuXG5hc3luYyBmdW5jdGlvbiBsb2dSZWplY3RlZENoYW5nZXMoXG4gIGlvU3BhbjogSU1lc3NhZ2VTcGFuPGFueT4sXG4gIHJlamVjdGVkQ2hhbmdlczogUmVqZWN0ZWRDaGFuZ2VbXSxcbiAgaG90c3dhcE1vZGU6IEhvdHN3YXBNb2RlLFxuKTogUHJvbWlzZTx2b2lkPiB7XG4gIGlmIChyZWplY3RlZENoYW5nZXMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIC8qKlxuICAgKiBFS1MgU2VydmljZXMgY2FuIGhhdmUgYSB0YXNrIGRlZmluaXRpb24gdGhhdCBkb2Vzbid0IHJlZmVyIHRvIHRoZSB0YXNrIGRlZmluaXRpb24gYmVpbmcgdXBkYXRlZC5cbiAgICogV2UgaGF2ZSB0byBsb2cgdGhpcyBhcyBhIG5vbi1ob3Rzd2FwcGFibGUgY2hhbmdlIHRvIHRoZSB0YXNrIGRlZmluaXRpb24sIGJ1dCB3aGVuIHdlIGRvLFxuICAgKiB3ZSB3aW5kIHVwIGhvdHN3YXBwaW5nIHRoZSB0YXNrIGRlZmluaXRpb24gYW5kIGxvZ2dpbmcgaXQgYXMgYSBub24taG90c3dhcHBhYmxlIGNoYW5nZS5cbiAgICpcbiAgICogVGhpcyBsb2dpYyBwcmV2ZW50cyB1cyBmcm9tIGxvZ2dpbmcgdGhhdCBjaGFuZ2UgYXMgbm9uLWhvdHN3YXBwYWJsZSB3aGVuIHdlIGhvdHN3YXAgaXQuXG4gICAqL1xuICBpZiAoaG90c3dhcE1vZGUgPT09ICdob3Rzd2FwLW9ubHknKSB7XG4gICAgcmVqZWN0ZWRDaGFuZ2VzID0gcmVqZWN0ZWRDaGFuZ2VzLmZpbHRlcigoY2hhbmdlKSA9PiBjaGFuZ2UuaG90c3dhcE9ubHlWaXNpYmxlID09PSB0cnVlKTtcblxuICAgIGlmIChyZWplY3RlZENoYW5nZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICB9XG5cbiAgY29uc3QgbWVzc2FnZXMgPSBbJyddOyAvLyBzdGFydCB3aXRoIGVtcHR5IGxpbmVcblxuICBpZiAoaG90c3dhcE1vZGUgPT09ICdob3Rzd2FwLW9ubHknKSB7XG4gICAgbWVzc2FnZXMucHVzaChmb3JtYXQoJyVzICVzJywgY2hhbGsucmVkKCfimqDvuI8nKSwgY2hhbGsucmVkKCdUaGUgZm9sbG93aW5nIG5vbi1ob3Rzd2FwcGFibGUgY2hhbmdlcyB3ZXJlIGZvdW5kLiBUbyByZWNvbmNpbGUgdGhlc2UgdXNpbmcgQ2xvdWRGb3JtYXRpb24sIHNwZWNpZnkgLS1ob3Rzd2FwLWZhbGxiYWNrJykpKTtcbiAgfSBlbHNlIHtcbiAgICBtZXNzYWdlcy5wdXNoKGZvcm1hdCgnJXMgJXMnLCBjaGFsay5yZWQoJ+KaoO+4jycpLCBjaGFsay5yZWQoJ1RoZSBmb2xsb3dpbmcgbm9uLWhvdHN3YXBwYWJsZSBjaGFuZ2VzIHdlcmUgZm91bmQ6JykpKTtcbiAgfVxuXG4gIGZvciAoY29uc3QgeyBjaGFuZ2UgfSBvZiByZWplY3RlZENoYW5nZXMpIHtcbiAgICBtZXNzYWdlcy5wdXNoKCcgICAgJyArIG5vbkhvdHN3YXBwYWJsZUNoYW5nZU1lc3NhZ2UoY2hhbmdlKSk7XG4gIH1cbiAgbWVzc2FnZXMucHVzaCgnJyk7IC8vIG5ld2xpbmVcblxuICBhd2FpdCBpb1NwYW4uZGVmYXVsdHMuaW5mbyhtZXNzYWdlcy5qb2luKCdcXG4nKSk7XG59XG5cbi8qKlxuICogRm9ybWF0cyBhIE5vbkhvdHN3YXBwYWJsZUNoYW5nZVxuICovXG5mdW5jdGlvbiBub25Ib3Rzd2FwcGFibGVDaGFuZ2VNZXNzYWdlKGNoYW5nZTogTm9uSG90c3dhcHBhYmxlQ2hhbmdlKTogc3RyaW5nIHtcbiAgY29uc3Qgc3ViamVjdCA9IGNoYW5nZS5zdWJqZWN0O1xuICBjb25zdCByZWFzb24gPSBjaGFuZ2UuZGVzY3JpcHRpb24gPz8gY2hhbmdlLnJlYXNvbjtcblxuICBzd2l0Y2ggKHN1YmplY3QudHlwZSkge1xuICAgIGNhc2UgJ091dHB1dCc6XG4gICAgICByZXR1cm4gZm9ybWF0KFxuICAgICAgICAnb3V0cHV0OiAlcywgcmVhc29uOiAlcycsXG4gICAgICAgIGNoYWxrLmJvbGQoc3ViamVjdC5sb2dpY2FsSWQpLFxuICAgICAgICBjaGFsay5yZWQocmVhc29uKSxcbiAgICAgICk7XG4gICAgY2FzZSAnUmVzb3VyY2UnOlxuICAgICAgcmV0dXJuIG5vbkhvdHN3YXBwYWJsZVJlc291cmNlTWVzc2FnZShzdWJqZWN0LCByZWFzb24pO1xuICB9XG59XG5cbi8qKlxuICogRm9ybWF0cyBhIG5vbi1ob3Rzd2FwcGFibGUgcmVzb3VyY2Ugc3ViamVjdFxuICovXG5mdW5jdGlvbiBub25Ib3Rzd2FwcGFibGVSZXNvdXJjZU1lc3NhZ2Uoc3ViamVjdDogUmVzb3VyY2VTdWJqZWN0LCByZWFzb246IHN0cmluZyk6IHN0cmluZyB7XG4gIGlmIChzdWJqZWN0LnJlamVjdGVkUHJvcGVydGllcz8ubGVuZ3RoKSB7XG4gICAgcmV0dXJuIGZvcm1hdChcbiAgICAgICdyZXNvdXJjZTogJXMsIHR5cGU6ICVzLCByZWplY3RlZCBjaGFuZ2VzOiAlcywgcmVhc29uOiAlcycsXG4gICAgICBjaGFsay5ib2xkKHN1YmplY3QubG9naWNhbElkKSxcbiAgICAgIGNoYWxrLmJvbGQoc3ViamVjdC5yZXNvdXJjZVR5cGUpLFxuICAgICAgY2hhbGsuYm9sZChzdWJqZWN0LnJlamVjdGVkUHJvcGVydGllcyksXG4gICAgICBjaGFsay5yZWQocmVhc29uKSxcbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIGZvcm1hdChcbiAgICAncmVzb3VyY2U6ICVzLCB0eXBlOiAlcywgcmVhc29uOiAlcycsXG4gICAgY2hhbGsuYm9sZChzdWJqZWN0LmxvZ2ljYWxJZCksXG4gICAgY2hhbGsuYm9sZChzdWJqZWN0LnJlc291cmNlVHlwZSksXG4gICAgY2hhbGsucmVkKHJlYXNvbiksXG4gICk7XG59XG4iXX0=
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type * as cxapi from '@aws-cdk/cloud-assembly-api';
|
|
2
2
|
import * as make from './message-maker';
|
|
3
3
|
import type { DiagnosedStack } from '../../../actions/diagnose';
|
|
4
|
+
import type { ValidateResult } from '../../../actions/validate';
|
|
4
5
|
import type { StackDiff, DiffResult } from '../../../payloads';
|
|
5
6
|
import type { BootstrapEnvironmentProgress } from '../../../payloads/bootstrap-environment-progress';
|
|
6
7
|
import type { MissingContext, UpdatedContext } from '../../../payloads/context';
|
|
@@ -115,6 +116,9 @@ export declare const IO: {
|
|
|
115
116
|
CDK_TOOLKIT_I9500: make.IoMessageMaker<DiagnosedStack>;
|
|
116
117
|
CDK_TOOLKIT_E9500: make.IoMessageMaker<DiagnosedStack>;
|
|
117
118
|
CDK_TOOLKIT_W9501: make.IoMessageMaker<DiagnosedStack>;
|
|
119
|
+
CDK_TOOLKIT_I9600: make.IoMessageMaker<ValidateResult>;
|
|
120
|
+
CDK_TOOLKIT_E9600: make.IoMessageMaker<ValidateResult>;
|
|
121
|
+
CDK_TOOLKIT_I9601: make.IoMessageMaker<void>;
|
|
118
122
|
CDK_TOOLKIT_I0100: make.IoMessageMaker<void>;
|
|
119
123
|
CDK_TOOLKIT_W0101: make.IoMessageMaker<void>;
|
|
120
124
|
CDK_TOOLKIT_E0101: make.IoMessageMaker<void>;
|
|
@@ -442,6 +442,21 @@ exports.IO = {
|
|
|
442
442
|
description: 'Stack diagnosis (diagnosis could not be performed)',
|
|
443
443
|
interface: 'DiagnosedStack',
|
|
444
444
|
}),
|
|
445
|
+
// validate (96xx)
|
|
446
|
+
CDK_TOOLKIT_I9600: make.info({
|
|
447
|
+
code: 'CDK_TOOLKIT_I9600',
|
|
448
|
+
description: 'Validate passed with no problems',
|
|
449
|
+
interface: 'ValidateResult',
|
|
450
|
+
}),
|
|
451
|
+
CDK_TOOLKIT_E9600: make.error({
|
|
452
|
+
code: 'CDK_TOOLKIT_E9600',
|
|
453
|
+
description: 'Validate found problems',
|
|
454
|
+
interface: 'ValidateResult',
|
|
455
|
+
}),
|
|
456
|
+
CDK_TOOLKIT_I9601: make.info({
|
|
457
|
+
code: 'CDK_TOOLKIT_I9601',
|
|
458
|
+
description: 'No validation plugins configured',
|
|
459
|
+
}),
|
|
445
460
|
// Notices
|
|
446
461
|
CDK_TOOLKIT_I0100: make.info({
|
|
447
462
|
code: 'CDK_TOOLKIT_I0100',
|
|
@@ -607,4 +622,4 @@ exports.SPAN = {
|
|
|
607
622
|
end: exports.IO.CDK_TOOLKIT_I5410,
|
|
608
623
|
},
|
|
609
624
|
};
|
|
610
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJtZXNzYWdlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSx3Q0FBd0M7QUFpQ3hDOzs7OztHQUtHO0FBQ1UsUUFBQSxFQUFFLEdBQUc7SUFDaEIsb0JBQW9CO0lBQ3BCLGlCQUFpQixFQUFFLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDM0IsSUFBSSxFQUFFLG1CQUFtQjtRQUN6QixXQUFXLEVBQUUsNEJBQTRCO0tBQzFDLENBQUM7SUFFRixrQkFBa0I7SUFDbEIsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBWTtRQUN0QyxJQUFJLEVBQUUsbUJBQW1CO1FBQ3pCLFdBQVcsRUFBRSwyQkFBMkI7UUFDeEMsU0FBUyxFQUFFLFdBQVc7S0FDdkIsQ0FBQztJQUNGLGlCQUFpQixFQUFFLElBQUksQ0FBQyxLQUFLLENBQXdCO1FBQ25ELElBQUksRUFBRSxtQkFBbUI7UUFDekIsV0FBVyxFQUFFLHNDQUFzQztRQUNuRCxTQUFTLEVBQUUsdUJBQXVCO0tBQ25DLENBQUM7SUFDRixpQkFBaUIsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUF1QjtRQUNuRCxJQUFJLEVBQUUsbUJBQW1CO1FBQ3pCLFdBQVcsRUFBRSxxQkFBcUI7UUFDbEMsU0FBUyxFQUFFLHNCQUFzQjtLQUNsQyxDQUFDO0lBQ0YsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBZTtRQUMzQyxJQUFJLEVBQUUsbUJBQW1CO1FBQ3pCLFdBQVcsRUFBRSw4QkFBOEI7UUFDM0MsU0FBUyxFQUFFLGNBQWM7S0FDMUIsQ0FBQztJQUVGLGlCQUFpQjtJQUNqQixpQkFBaUIsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFzQjtRQUNsRCxJQUFJLEVBQUUsbUJBQW1CO1FBQ3pCLFdBQVcsRUFBRSxnRUFBZ0U7UUFDN0UsU0FBUyxFQUFFLHFCQUFxQjtLQUNqQyxDQUFDO0lBRUYsc0JBQXNCO0lBQ3RCLGlCQUFpQixFQUFFLElB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M0IsR0FBRyxFQUFFLFVBQUUsQ0FBQyxpQkFBaUI7S0FDMUI7SUFDRCxPQUFPLEVBQUU7UUFDUCxJQUFJLEVBQUUsb0JBQW9CO1FBQzFCLEtBQUssRUFBRSxVQUFFLENBQUMsaUJBQWlCO1FBQzNCLEdBQUcsRUFBRSxVQUFFLENBQUMsaUJBQWlCO0tBQzFCO0NBQ2lELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSAqIGFzIGN4YXBpIGZyb20gJ0Bhd3MtY2RrL2Nsb3VkLWFzc2VtYmx5LWFwaSc7XG5pbXBvcnQgKiBhcyBtYWtlIGZyb20gJy4vbWVzc2FnZS1tYWtlcic7XG5pbXBvcnQgdHlwZSB7IFNwYW5EZWZpbml0aW9uIH0gZnJvbSAnLi9zcGFuJztcbmltcG9ydCB0eXBlIHsgRGlhZ25vc2VkU3RhY2sgfSBmcm9tICcuLi8uLi8uLi9hY3Rpb25zL2RpYWdub3NlJztcbmltcG9ydCB0eXBlIHsgU3RhY2tEaWZmLCBEaWZmUmVzdWx0IH0gZnJvbSAnLi4vLi4vLi4vcGF5bG9hZHMnO1xuaW1wb3J0IHR5cGUgeyBCb290c3RyYXBFbnZpcm9ubWVudFByb2dyZXNzIH0gZnJvbSAnLi4vLi4vLi4vcGF5bG9hZHMvYm9vdHN0cmFwLWVudmlyb25tZW50LXByb2dyZXNzJztcbmltcG9ydCB0eXBlIHsgTWlzc2luZ0NvbnRleHQsIFVwZGF0ZWRDb250ZXh0IH0gZnJvbSAnLi4vLi4vLi4vcGF5bG9hZHMvY29udGV4dCc7XG5pbXBvcnQgdHlwZSB7IEJ1aWxkQXNzZXQsIERlcGxveUNvbmZpcm1hdGlvblJlcXVlc3QsIFB1Ymxpc2hBc3NldCwgUHVibGlzaEFzc2V0RXZlbnQsIFN0YWNrRGVwbG95UHJvZ3Jlc3MsIFN1Y2Nlc3NmdWxEZXBsb3lTdGFja1Jlc3VsdCB9IGZyb20gJy4uLy4uLy4uL3BheWxvYWRzL2RlcGxveSc7XG5pbXBvcnQgdHlwZSB7IFN0YWNrRGVzdHJveSwgU3RhY2tEZXN0cm95UHJvZ3Jlc3MgfSBmcm9tICcuLi8uLi8uLi9wYXlsb2Fkcy9kZXN0cm95JztcbmltcG9ydCB0eXBlIHsgRHJpZnRSZXN1bHRQYXlsb2FkIH0gZnJvbSAnLi4vLi4vLi4vcGF5bG9hZHMvZHJpZnQnO1xuaW1wb3J0IHR5cGUgeyBGZWF0dXJlRmxhZ0NoYW5nZVJlcXVlc3QgfSBmcm9tICcuLi8uLi8uLi9wYXlsb2Fkcy9mbGFncyc7XG5pbXBvcnQgdHlwZSB7IEFzc2V0QmF0Y2hEZWxldGlvblJlcXVlc3QgfSBmcm9tICcuLi8uLi8uLi9wYXlsb2Fkcy9nYyc7XG5pbXBvcnQgdHlwZSB7IEhvdHN3YXBEZXBsb3ltZW50RGV0YWlscywgSG90c3dhcERlcGxveW1lbnRBdHRlbXB0LCBIb3Rzd2FwcGFibGVDaGFuZ2UsIEhvdHN3YXBSZXN1bHQgfSBmcm9tICcuLi8uLi8uLi9wYXlsb2Fkcy9ob3Rzd2FwJztcbmltcG9ydCB0eXBlIHsgUmVzb3VyY2VJZGVudGlmaWNhdGlvblJlcXVlc3QsIFJlc291cmNlSW1wb3J0UmVxdWVzdCB9IGZyb20gJy4uLy4uLy4uL3BheWxvYWRzL2ltcG9ydCc7XG5pbXBvcnQgdHlwZSB7IFN0YWNrRGV0YWlsc1BheWxvYWQgfSBmcm9tICcuLi8uLi8uLi9wYXlsb2Fkcy9saXN0JztcbmltcG9ydCB0eXBlIHsgQ2xvdWRXYXRjaExvZ0V2ZW50LCBDbG91ZFdhdGNoTG9nTW9uaXRvckNvbnRyb2xFdmVudCB9IGZyb20gJy4uLy4uLy4uL3BheWxvYWRzL2xvZ3MtbW9uaXRvcic7XG5pbXBvcnQgdHlwZSB7IEFzc2V0c1BheWxvYWQgfSBmcm9tICcuLi8uLi8uLi9wYXlsb2Fkcy9wdWJsaXNoLWFzc2V0cyc7XG5pbXBvcnQgdHlwZSB7IFJlZmFjdG9yUmVzdWx0IH0gZnJvbSAnLi4vLi4vLi4vcGF5bG9hZHMvcmVmYWN0b3InO1xuaW1wb3J0IHR5cGUgeyBTdGFja1JvbGxiYWNrUHJvZ3Jlc3MgfSBmcm9tICcuLi8uLi8uLi9wYXlsb2Fkcy9yb2xsYmFjayc7XG5pbXBvcnQgdHlwZSB7IE1mYVRva2VuUmVxdWVzdCwgU2RrVHJhY2UgfSBmcm9tICcuLi8uLi8uLi9wYXlsb2Fkcy9zZGsnO1xuaW1wb3J0IHR5cGUgeyBTdGFja0FjdGl2aXR5LCBTdGFja01vbml0b3JpbmdDb250cm9sRXZlbnQgfSBmcm9tICcuLi8uLi8uLi9wYXlsb2Fkcy9zdGFjay1hY3Rpdml0eSc7XG5pbXBvcnQgdHlwZSB7IFN0YWNrU2VsZWN0aW9uRGV0YWlscyB9IGZyb20gJy4uLy4uLy4uL3BheWxvYWRzL3N5bnRoJztcbmltcG9ydCB0eXBlIHtcbiAgQXNzZW1ibHlEYXRhLFxuICBDb25maXJtYXRpb25SZXF1ZXN0LFxuICBDb250ZXh0UHJvdmlkZXJNZXNzYWdlU291cmNlLFxuICBEdXJhdGlvbixcbiAgRXJyb3JQYXlsb2FkLFxuICBPcGVyYXRpb24sXG4gIFNpbmdsZVN0YWNrLFxuICBTdGFja0FuZEFzc2VtYmx5RGF0YSxcbn0gZnJvbSAnLi4vLi4vLi4vcGF5bG9hZHMvdHlwZXMnO1xuaW1wb3J0IHR5cGUgeyBGaWxlV2F0Y2hFdmVudCwgV2F0Y2hTZXR0aW5ncyB9IGZyb20gJy4uLy4uLy4uL3BheWxvYWRzL3dhdGNoJztcblxuLyoqXG4gKiBXZSBoYXZlIGEgcm91Z2ggc3lzdGVtIGJ5IHdoaWNoIHdlIGFzc2lnbiBtZXNzYWdlIGNvZGVzOlxuICogLSBGaXJzdCBkaWdpdCBncm91cHMgbWVzc2FnZXMgYnkgYWN0aW9uLCBlLmcuIHN5bnRoIG9yIGRlcGxveVxuICogLSBYMDAwLVgwMDkgYXJlIHJlc2VydmVkIGZvciB0aW1pbmdzXG4gKiAtIFg5MDAtWDk5OSBhcmUgcmVzZXJ2ZWQgZm9yIHJlc3VsdHNcbiAqL1xuZXhwb3J0IGNvbnN0IElPID0ge1xuICAvLyB3YXJuaW5ncyAmIGVycm9yc1xuICBDREtfVE9PTEtJVF9XMDEwMDogbWFrZS53YXJuKHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfVzAxMDAnLFxuICAgIGRlc2NyaXB0aW9uOiAnQ3JlZGVudGlhbCBwbHVnaW4gd2FybmluZ3MnLFxuICB9KSxcblxuICAvLyAxOiBTeW50aCAoMXh4eClcbiAgQ0RLX1RPT0xLSVRfSTEwMDA6IG1ha2UuaW5mbzxPcGVyYXRpb24+KHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfSTEwMDAnLFxuICAgIGRlc2NyaXB0aW9uOiAnUHJvdmlkZXMgc3ludGhlc2lzIHRpbWVzLicsXG4gICAgaW50ZXJmYWNlOiAnT3BlcmF0aW9uJyxcbiAgfSksXG4gIENES19UT09MS0lUX0kxMDAxOiBtYWtlLnRyYWNlPFN0YWNrU2VsZWN0aW9uRGV0YWlscz4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9JMTAwMScsXG4gICAgZGVzY3JpcHRpb246ICdDbG91ZCBBc3NlbWJseSBzeW50aGVzaXMgaXMgc3RhcnRpbmcnLFxuICAgIGludGVyZmFjZTogJ1N0YWNrU2VsZWN0aW9uRGV0YWlscycsXG4gIH0pLFxuICBDREtfVE9PTEtJVF9JMTkwMTogbWFrZS5yZXN1bHQ8U3RhY2tBbmRBc3NlbWJseURhdGE+KHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfSTE5MDEnLFxuICAgIGRlc2NyaXB0aW9uOiAnUHJvdmlkZXMgc3RhY2sgZGF0YScsXG4gICAgaW50ZXJmYWNlOiAnU3RhY2tBbmRBc3NlbWJseURhdGEnLFxuICB9KSxcbiAgQ0RLX1RPT0xLSVRfSTE5MDI6IG1ha2UucmVzdWx0PEFzc2VtYmx5RGF0YT4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9JMTkwMicsXG4gICAgZGVzY3JpcHRpb246ICdTdWNjZXNzZnVsbHkgZGVwbG95ZWQgc3RhY2tzJyxcbiAgICBpbnRlcmZhY2U6ICdBc3NlbWJseURhdGEnLFxuICB9KSxcblxuICAvLyAyOiBMaXN0ICgyeHh4KVxuICBDREtfVE9PTEtJVF9JMjkwMTogbWFrZS5yZXN1bHQ8U3RhY2tEZXRhaWxzUGF5bG9hZD4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9JMjkwMScsXG4gICAgZGVzY3JpcHRpb246ICdQcm92aWRlcyBkZXRhaWxzIG9uIHRoZSBzZWxlY3RlZCBzdGFja3MgYW5kIHRoZWlyIGRlcGVuZGVuY2llcycsXG4gICAgaW50ZXJmYWNlOiAnU3RhY2tEZXRhaWxzUGF5bG9hZCcsXG4gIH0pLFxuXG4gIC8vIDM6IEltcG9ydCAmIE1pZ3JhdGVcbiAgQ0RLX1RPT0xLSVRfSTMxMDA6IG1ha2UuY29uZmlybTxSZXNvdXJjZUltcG9ydFJlcXVlc3Q+KHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfSTMxMDAnLFxuICAgIGRlc2NyaXB0aW9uOiAnQ29uZmlybSB0aGUgaW1wb3J0IG9mIGEgc3BlY2lmaWMgcmVzb3VyY2UnLFxuICAgIGludGVyZmFjZTogJ1Jlc291cmNlSW1wb3J0UmVxdWVzdCcsXG4gIH0pLFxuICBDREtfVE9PTEtJVF9JMzExMDogbWFrZS5xdWVzdGlvbjxSZXNvdXJjZUlkZW50aWZpY2F0aW9uUmVxdWVzdD4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9JMzExMCcsXG4gICAgZGVzY3JpcHRpb246ICdBZGRpdGlvbmFsIGluZm9ybWF0aW9uIGlzIG5lZWRlZCB0byBpZGVudGlmeSBhIHJlc291cmNlJyxcbiAgICBpbnRlcmZhY2U6ICdSZXNvdXJjZUlkZW50aWZpY2F0aW9uUmVxdWVzdCcsXG4gIH0pLFxuICBDREtfVE9PTEtJVF9FMzkwMDogbWFrZS5lcnJvcjxFcnJvclBheWxvYWQ+KHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfRTM5MDAnLFxuICAgIGRlc2NyaXB0aW9uOiAnUmVzb3VyY2UgaW1wb3J0IGZhaWxlZCcsXG4gICAgaW50ZXJmYWNlOiAnRXJyb3JQYXlsb2FkJyxcbiAgfSksXG5cbiAgLy8gNDogRGlmZiAoNDB4eCAtIDQ0eHgpXG4gIENES19UT09MS0lUX0k0MDAwOiBtYWtlLnRyYWNlPFN0YWNrU2VsZWN0aW9uRGV0YWlscz4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9JNDAwMCcsXG4gICAgZGVzY3JpcHRpb246ICdEaWZmIHN0YWNrcyBpcyBzdGFydGluZycsXG4gICAgaW50ZXJmYWNlOiAnU3RhY2tTZWxlY3Rpb25EZXRhaWxzJyxcbiAgfSksXG4gIENES19UT09MS0lUX0k0MDAxOiBtYWtlLnJlc3VsdDxEaWZmUmVzdWx0Pih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0k0MDAxJyxcbiAgICBkZXNjcmlwdGlvbjogJ091dHB1dCBvZiB0aGUgZGlmZiBjb21tYW5kJyxcbiAgICBpbnRlcmZhY2U6ICdEaWZmUmVzdWx0JyxcbiAgfSksXG4gIENES19UT09MS0lUX0k0MDAyOiBtYWtlLnJlc3VsdDxTdGFja0RpZmY+KHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfSTQwMDInLFxuICAgIGRlc2NyaXB0aW9uOiAnVGhlIGRpZmYgZm9yIGEgc2luZ2xlIHN0YWNrJyxcbiAgICBpbnRlcmZhY2U6ICdTdGFja0RpZmYnLFxuICB9KSxcblxuICAvLyA0OiBEcmlmdCAoNDV4eCAtIDQ5eHgpXG4gIENES19UT09MS0lUX0k0NTAwOiBtYWtlLnRyYWNlPFN0YWNrU2VsZWN0aW9uRGV0YWlscz4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9JNDUwMCcsXG4gICAgZGVzY3JpcHRpb246ICdEcmlmdCBkZXRlY3Rpb24gaXMgc3RhcnRpbmcnLFxuICAgIGludGVyZmFjZTogJ1N0YWNrU2VsZWN0aW9uRGV0YWlscycsXG4gIH0pLFxuICBDREtfVE9PTEtJVF9JNDUwOTogbWFrZS5yZXN1bHQ8RHVyYXRpb24+KHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfSTQ1OTInLFxuICAgIGRlc2NyaXB0aW9uOiAnUmVzdWx0cyBvZiB0aGUgZHJpZnQnLFxuICAgIGludGVyZmFjZTogJ0R1cmF0aW9uJyxcbiAgfSksXG4gIENES19UT09MS0lUX0k0NTkwOiBtYWtlLnJlc3VsdDxEcmlmdFJlc3VsdFBheWxvYWQ+KHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfSTQ1OTAnLFxuICAgIGRlc2NyaXB0aW9uOiAnUmVzdWx0cyBvZiBhIHN0YWNrIGRyaWZ0JyxcbiAgICBpbnRlcmZhY2U6ICdEcmlmdFJlc3VsdFBheWxvYWQnLFxuICB9KSxcbiAgQ0RLX1RPT0xLSVRfVzQ1OTE6IG1ha2Uud2FybjxTaW5nbGVTdGFjaz4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9XNDU5MScsXG4gICAgZGVzY3JpcHRpb246ICdNaXNzaW5nIGRyaWZ0IHJlc3VsdCBmb3J0IGEgc3RhY2suJyxcbiAgICBpbnRlcmZhY2U6ICdTaW5nbGVTdGFjaycsXG4gIH0pLFxuXG4gIC8vIDU6IERlcGxveSAmIFdhdGNoICg1eHh4KVxuICBDREtfVE9PTEtJVF9JNTAwMDogbWFrZS5pbmZvPER1cmF0aW9uPih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0k1MDAwJyxcbiAgICBkZXNjcmlwdGlvbjogJ1Byb3ZpZGVzIGRlcGxveW1lbnQgdGltZXMnLFxuICAgIGludGVyZmFjZTogJ0R1cmF0aW9uJyxcbiAgfSksXG4gIENES19UT09MS0lUX0k1MDAxOiBtYWtlLmluZm88RHVyYXRpb24+KHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfSTUwMDEnLFxuICAgIGRlc2NyaXB0aW9uOiAnUHJvdmlkZXMgdG90YWwgdGltZSBpbiBkZXBsb3kgYWN0aW9uLCBpbmNsdWRpbmcgc3ludGggYW5kIHJvbGxiYWNrJyxcbiAgICBpbnRlcmZhY2U6ICdEdXJhdGlvbicsXG4gIH0pLFxuICBDREtfVE9PTEtJVF9JNTAwMjogbWFrZS5pbmZvPER1cmF0aW9uPih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0k1MDAyJyxcbiAgICBkZXNjcmlwdGlvbjogJ1Byb3ZpZGVzIHRpbWUgZm9yIHJlc291cmNlIG1pZ3JhdGlvbicsXG4gICAgaW50ZXJmYWNlOiAnRHVyYXRpb24nLFxuICB9KSxcbiAgQ0RLX1RPT0xLSVRfVzUwMjE6IG1ha2Uud2Fybih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX1c1MDIxJyxcbiAgICBkZXNjcmlwdGlvbjogJ0VtcHR5IG5vbi1leGlzdGVudCBzdGFjaywgZGVwbG95bWVudCBpcyBza2lwcGVkJyxcbiAgfSksXG4gIENES19UT09MS0lUX1c1MDIyOiBtYWtlLndhcm4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9XNTAyMicsXG4gICAgZGVzY3JpcHRpb246ICdFbXB0eSBleGlzdGluZyBzdGFjaywgc3RhY2sgd2lsbCBiZSBkZXN0cm95ZWQnLFxuICB9KSxcbiAgQ0RLX1RPT0xLSVRfSTUwMzE6IG1ha2UuaW5mbyh7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0k1MDMxJyxcbiAgICBkZXNjcmlwdGlvbjogJ0luZm9ybXMgYWJvdXQgYW55IGxvZyBncm91cHMgdGhhdCBhcmUgdHJhY2VkIGFzIHBhcnQgb2YgdGhlIGRlcGxveW1lbnQnLFxuICB9KSxcbiAgQ0RLX1RPT0xLSVRfSTUwMzI6IG1ha2UuZGVidWc8Q2xvdWRXYXRjaExvZ01vbml0b3JDb250cm9sRXZlbnQ+KHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfSTUwMzInLFxuICAgIGRlc2NyaXB0aW9uOiAnU3RhcnQgbW9uaXRvcmluZyBsb2cgZ3JvdXBzJyxcbiAgICBpbnRlcmZhY2U6ICdDbG91ZFdhdGNoTG9nTW9uaXRvckNvbnRyb2xFdmVudCcsXG4gIH0pLFxuICBDREtfVE9PTEtJVF9JNTAzMzogbWFrZS5pbmZvPENsb3VkV2F0Y2hMb2dFdmVudD4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9JNTAzMycsXG4gICAgZGVzY3JpcHRpb246ICdBIGxvZyBldmVudCByZWNlaXZlZCBmcm9tIENsb3VkIFdhdGNoJyxcbiAgICBpbnRlcmZhY2U6ICdDbG91ZFdhdGNoTG9nRXZlbnQnLFxuICB9KSxcbiAgQ0RLX1RPT0xLSVRfSTUwMzQ6IG1ha2UuZGVidWc8Q2xvdWRXYXRjaExvZ01vbml0b3JDb250cm9sRXZlbnQ+KHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfSTUwMzQnLFxuICAgIGRlc2NyaXB0aW9uOiAnU3RvcCBtb25pdG9yaW5nIGxvZyBncm91cHMnLFxuICAgIGludGVyZmFjZTogJ0Nsb3VkV2F0Y2hMb2dNb25pdG9yQ29udHJvbEV2ZW50JyxcbiAgfSksXG4gIENES19UT09MS0lUX0U1MDM1OiBtYWtlLmVycm9yPEVycm9yUGF5bG9hZD4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9FNTAzNScsXG4gICAgZGVzY3JpcHRpb246ICdBIGxvZyBtb25pdG9yaW5nIGVycm9yJyxcbiAgICBpbnRlcmZhY2U6ICdFcnJvclBheWxvYWQnLFxuICB9KSxcbiAgQ0RLX1RPT0xLSVRfSTUwNTA6IG1ha2UuY29uZmlybTxDb25maXJtYXRpb25SZXF1ZXN0Pih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0k1MDUwJyxcbiAgICBkZXNjcmlwdGlvbjogJ0NvbmZpcm0gcm9sbGJhY2sgZHVyaW5nIGRlcGxveW1lbnQnLFxuICAgIGludGVyZmFjZTogJ0NvbmZpcm1hdGlvblJlcXVlc3QnLFxuICB9KSxcbiAgQ0RLX1RPT0xLSVRfSTUwNjA6IG1ha2UuY29uZmlybTxEZXBsb3lDb25maXJtYXRpb25SZXF1ZXN0Pih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0k1MDYwJyxcbiAgICBkZXNjcmlwdGlvbjogJ0NvbmZpcm0gZGVwbG95IHNlY3VyaXR5IHNlbnNpdGl2ZSBjaGFuZ2VzJyxcbiAgICBpbnRlcmZhY2U6ICdEZXBsb3lDb25maXJtYXRpb25SZXF1ZXN0JyxcbiAgfSksXG4gIENES19UT09MS0lUX0k1MTAwOiBtYWtlLmluZm88U3RhY2tEZXBsb3lQcm9ncmVzcz4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9JNTEwMCcsXG4gICAgZGVzY3JpcHRpb246ICdTdGFjayBkZXBsb3kgcHJvZ3Jlc3MnLFxuICAgIGludGVyZmFjZTogJ1N0YWNrRGVwbG95UHJvZ3Jlc3MnLFxuICB9KSxcblxuICAvLyBBc3NldHMgKDUyeHgpXG4gIENES19UT09MS0lUX0k1MjEwOiBtYWtlLnRyYWNlPEJ1aWxkQXNzZXQ+KHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfSTUyMTAnLFxuICAgIGRlc2NyaXB0aW9uOiAnU3RhcnRlZCBidWlsZGluZyBhIHNwZWNpZmljIGFzc2V0JyxcbiAgICBpbnRlcmZhY2U6ICdCdWlsZEFzc2V0JyxcbiAgfSksXG4gIENES19UT09MS0lUX0k1MjExOiBtYWtlLnRyYWNlPER1cmF0aW9uPih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0k1MjExJyxcbiAgICBkZXNjcmlwdGlvbjogJ0J1aWxkaW5nIHRoZSBhc3NldCBoYXMgY29tcGxldGVkJyxcbiAgICBpbnRlcmZhY2U6ICdEdXJhdGlvbicsXG4gIH0pLFxuICBDREtfVE9PTEtJVF9JNTIyMDogbWFrZS50cmFjZTxQdWJsaXNoQXNzZXQ+KHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfSTUyMjAnLFxuICAgIGRlc2NyaXB0aW9uOiAnU3RhcnRlZCBwdWJsaXNoaW5nIGEgc3BlY2lmaWMgYXNzZXQnLFxuICAgIGludGVyZmFjZTogJ1B1Ymxpc2hBc3NldCcsXG4gIH0pLFxuICBDREtfVE9PTEtJVF9JNTIyMTogbWFrZS50cmFjZTxEdXJhdGlvbj4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9JNTIyMScsXG4gICAgZGVzY3JpcHRpb246ICdQdWJsaXNoaW5nIHRoZSBhc3NldCBoYXMgY29tcGxldGVkJyxcbiAgICBpbnRlcmZhY2U6ICdEdXJhdGlvbicsXG4gIH0pLFxuXG4gIENES19BU1NFVFNfSTUyNzA6IG1ha2UuaW5mbzxQdWJsaXNoQXNzZXRFdmVudD4oe1xuICAgIGNvZGU6ICdDREtfQVNTRVRTX0k1MjcwJyxcbiAgICBkZXNjcmlwdGlvbjogJ1B1Ymxpc2hpbmcgdGhlIGFzc2V0IGhhcyBzdGFydGVkJyxcbiAgICBpbnRlcmZhY2U6ICdQdWJsaXNoQXNzZXRFdmVudCcsXG4gIH0pLFxuICBDREtfQVNTRVRTX0k1MjcxOiBtYWtlLmRlYnVnPFB1Ymxpc2hBc3NldEV2ZW50Pih7XG4gICAgY29kZTogJ0NES19BU1NFVFNfSTUyNzEnLFxuICAgIGRlc2NyaXB0aW9uOiAnRGVidWcgbWVzc2FnZWQgZW1pdHRlZCBkdXJpbmcgcHVibGlzaGluZyBvZiB0aGUgYXNzZXQnLFxuICAgIGludGVyZmFjZTogJ1B1Ymxpc2hBc3NldEV2ZW50JyxcbiAgfSksXG4gIENES19BU1NFVFNfSTUyNzU6IG1ha2UuaW5mbzxQdWJsaXNoQXNzZXRFdmVudD4oe1xuICAgIGNvZGU6ICdDREtfQVNTRVRTX0k1Mjc1JyxcbiAgICBkZXNjcmlwdGlvbjogJ1B1Ymxpc2hpbmcgdGhlIGFzc2V0IGhhcyBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5JyxcbiAgICBpbnRlcmZhY2U6ICdQdWJsaXNoQXNzZXRFdmVudCcsXG4gIH0pLFxuICBDREtfQVNTRVRTX0U1Mjc5OiBtYWtlLmVycm9yPFB1Ymxpc2hBc3NldEV2ZW50Pih7XG4gICAgY29kZTogJ0NES19BU1NFVFNfRTUyNzknLFxuICAgIGRlc2NyaXB0aW9uOiAnVGhlcmUgd2FzIGFuIGVycm9yIHdoaWxlIHB1Ymxpc2hpbmcgdGhlIGFzc2V0JyxcbiAgICBpbnRlcmZhY2U6ICdQdWJsaXNoQXNzZXRFdmVudCcsXG4gIH0pLFxuXG4gIC8vIFdhdGNoICg1M3h4KVxuICBDREtfVE9PTEtJVF9JNTMxMDogbWFrZS5kZWJ1ZzxXYXRjaFNldHRpbmdzPih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0k1MzEwJyxcbiAgICBkZXNjcmlwdGlvbjogJ1RoZSBjb21wdXRlZCBzZXR0aW5ncyB1c2VkIGZvciBmaWxlIHdhdGNoaW5nJyxcbiAgICBpbnRlcmZhY2U6ICdXYXRjaFNldHRpbmdzJyxcbiAgfSksXG4gIENES19UT09MS0lUX0k1MzExOiBtYWtlLmluZm88RmlsZVdhdGNoRXZlbnQ+KHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfSTUzMTEnLFxuICAgIGRlc2NyaXB0aW9uOiAnRmlsZSB3YXRjaGluZyBzdGFydGVkJyxcbiAgICBpbnRlcmZhY2U6ICdGaWxlV2F0Y2hFdmVudCcsXG4gIH0pLFxuICBDREtfVE9PTEtJVF9JNTMxMjogbWFrZS5pbmZvPEZpbGVXYXRjaEV2ZW50Pih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0k1MzEyJyxcbiAgICBkZXNjcmlwdGlvbjogJ0ZpbGUgZXZlbnQgZGV0ZWN0ZWQsIHN0YXJ0aW5nIGRlcGxveW1lbnQnLFxuICAgIGludGVyZmFjZTogJ0ZpbGVXYXRjaEV2ZW50JyxcbiAgfSksXG4gIENES19UT09MS0lUX0k1MzEzOiBtYWtlLmluZm88RmlsZVdhdGNoRXZlbnQ+KHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfSTUzMTMnLFxuICAgIGRlc2NyaXB0aW9uOiAnRmlsZSBldmVudCBkZXRlY3RlZCBkdXJpbmcgYWN0aXZlIGRlcGxveW1lbnQsIGNoYW5nZXMgYXJlIHF1ZXVlZCcsXG4gICAgaW50ZXJmYWNlOiAnRmlsZVdhdGNoRXZlbnQnLFxuICB9KSxcbiAgQ0RLX1RPT0xLSVRfSTUzMTQ6IG1ha2UuaW5mbyh7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0k1MzE0JyxcbiAgICBkZXNjcmlwdGlvbjogJ0luaXRpYWwgd2F0Y2ggZGVwbG95bWVudCBzdGFydGVkJyxcbiAgfSksXG4gIENES19UT09MS0lUX0k1MzE1OiBtYWtlLmluZm8oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9JNTMxNScsXG4gICAgZGVzY3JpcHRpb246ICdRdWV1ZWQgd2F0Y2ggZGVwbG95bWVudCBzdGFydGVkJyxcbiAgfSksXG5cbiAgLy8gSG90c3dhcCAoNTR4eClcbiAgQ0RLX1RPT0xLSVRfSTU0MDA6IG1ha2UudHJhY2U8SG90c3dhcERlcGxveW1lbnRBdHRlbXB0Pih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0k1NDAwJyxcbiAgICBkZXNjcmlwdGlvbjogJ0F0dGVtcHRpbmcgYSBob3Rzd2FwIGRlcGxveW1lbnQnLFxuICAgIGludGVyZmFjZTogJ0hvdHN3YXBEZXBsb3ltZW50QXR0ZW1wdCcsXG4gIH0pLFxuICBDREtfVE9PTEtJVF9JNTQwMTogbWFrZS50cmFjZTxIb3Rzd2FwRGVwbG95bWVudERldGFpbHM+KHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfSTU0MDEnLFxuICAgIGRlc2NyaXB0aW9uOiAnQ29tcHV0ZWQgZGV0YWlscyBmb3IgdGhlIGhvdHN3YXAgZGVwbG95bWVudCcsXG4gICAgaW50ZXJmYWNlOiAnSG90c3dhcERlcGxveW1lbnREZXRhaWxzJyxcbiAgfSksXG4gIENES19UT09MS0lUX0k1NDAyOiBtYWtlLmluZm88SG90c3dhcHBhYmxlQ2hhbmdlPih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0k1NDAyJyxcbiAgICBkZXNjcmlwdGlvbjogJ0EgaG90c3dhcHBhYmxlIGNoYW5nZSBpcyBwcm9jZXNzZWQgYXMgcGFydCBvZiBhIGhvdHN3YXAgZGVwbG95bWVudCcsXG4gICAgaW50ZXJmYWNlOiAnSG90c3dhcHBhYmxlQ2hhbmdlJyxcbiAgfSksXG4gIENES19UT09MS0lUX0k1NDAzOiBtYWtlLmluZm88SG90c3dhcHBhYmxlQ2hhbmdlPih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0k1NDAzJyxcbiAgICBkZXNjcmlwdGlvbjogJ1RoZSBob3Rzd2FwcGFibGUgY2hhbmdlIGhhcyBjb21wbGV0ZWQgcHJvY2Vzc2luZycsXG4gICAgaW50ZXJmYWNlOiAnSG90c3dhcHBhYmxlQ2hhbmdlJyxcbiAgfSksXG4gIENES19UT09MS0lUX0k1NDEwOiBtYWtlLmluZm88SG90c3dhcFJlc3VsdD4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9JNTQxMCcsXG4gICAgZGVzY3JpcHRpb246ICdIb3Rzd2FwIGRlcGxveW1lbnQgaGFzIGVuZGVkLCBhIGZ1bGwgZGVwbG95bWVudCBtaWdodCBzdGlsbCBmb2xsb3cgaWYgbmVlZGVkJyxcbiAgICBpbnRlcmZhY2U6ICdIb3Rzd2FwUmVzdWx0JyxcbiAgfSksXG5cbiAgLy8gU3RhY2sgTW9uaXRvciAoNTV4eClcbiAgQ0RLX1RPT0xLSVRfSTU1MDE6IG1ha2UuaW5mbzxTdGFja01vbml0b3JpbmdDb250cm9sRXZlbnQ+KHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfSTU1MDEnLFxuICAgIGRlc2NyaXB0aW9uOiAnU3RhY2sgTW9uaXRvcmluZzogU3RhcnQgbW9uaXRvcmluZyBvZiBhIHNpbmdsZSBzdGFjaycsXG4gICAgaW50ZXJmYWNlOiAnU3RhY2tNb25pdG9yaW5nQ29udHJvbEV2ZW50JyxcbiAgfSksXG4gIENES19UT09MS0lUX0k1NTAyOiBtYWtlLmluZm88U3RhY2tBY3Rpdml0eT4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9JNTUwMicsXG4gICAgZGVzY3JpcHRpb246ICdTdGFjayBNb25pdG9yaW5nOiBBY3Rpdml0eSBldmVudCBmb3IgYSBzaW5nbGUgc3RhY2snLFxuICAgIGludGVyZmFjZTogJ1N0YWNrQWN0aXZpdHknLFxuICB9KSxcbiAgQ0RLX1RPT0xLSVRfSTU1MDM6IG1ha2UuaW5mbzxTdGFja01vbml0b3JpbmdDb250cm9sRXZlbnQ+KHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfSTU1MDMnLFxuICAgIGRlc2NyaXB0aW9uOiAnU3RhY2sgTW9uaXRvcmluZzogRmluaXNoZWQgbW9uaXRvcmluZyBvZiBhIHNpbmdsZSBzdGFjaycsXG4gICAgaW50ZXJmYWNlOiAnU3RhY2tNb25pdG9yaW5nQ29udHJvbEV2ZW50JyxcbiAgfSksXG5cbiAgLy8gU3VjY2VzcyAoNTl4eClcbiAgQ0RLX1RPT0xLSVRfSTU5MDA6IG1ha2UucmVzdWx0PFN1Y2Nlc3NmdWxEZXBsb3lTdGFja1Jlc3VsdD4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9JNTkwMCcsXG4gICAgZGVzY3JpcHRpb246ICdEZXBsb3ltZW50IHJlc3VsdHMgb24gc3VjY2VzcycsXG4gICAgaW50ZXJmYWNlOiAnU3VjY2Vzc2Z1bERlcGxveVN0YWNrUmVzdWx0JyxcbiAgfSksXG4gIENES19UT09MS0lUX0k1OTAxOiBtYWtlLmluZm8oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9JNTkwMScsXG4gICAgZGVzY3JpcHRpb246ICdHZW5lcmljIGRlcGxveW1lbnQgc3VjY2VzcyBtZXNzYWdlcycsXG4gIH0pLFxuICBDREtfVE9PTEtJVF9XNTQwMDogbWFrZS53YXJuKHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfVzU0MDAnLFxuICAgIGRlc2NyaXB0aW9uOiAnSG90c3dhcCBkaXNjbG9zdXJlIG1lc3NhZ2UnLFxuICB9KSxcblxuICBDREtfVE9PTEtJVF9FNTAwMTogbWFrZS5lcnJvcih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0U1MDAxJyxcbiAgICBkZXNjcmlwdGlvbjogJ05vIHN0YWNrcyBmb3VuZCcsXG4gIH0pLFxuICBDREtfVE9PTEtJVF9FNTUwMDogbWFrZS5lcnJvcjxFcnJvclBheWxvYWQ+KHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfRTU1MDAnLFxuICAgIGRlc2NyaXB0aW9uOiAnU3RhY2sgTW9uaXRvcmluZyBlcnJvcicsXG4gICAgaW50ZXJmYWNlOiAnRXJyb3JQYXlsb2FkJyxcbiAgfSksXG5cbiAgLy8gNjogUm9sbGJhY2sgKDZ4eHgpXG4gIENES19UT09MS0lUX0k2MDAwOiBtYWtlLmluZm88RHVyYXRpb24+KHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfSTYwMDAnLFxuICAgIGRlc2NyaXB0aW9uOiAnUHJvdmlkZXMgcm9sbGJhY2sgdGltZXMnLFxuICAgIGludGVyZmFjZTogJ0R1cmF0aW9uJyxcbiAgfSksXG4gIENES19UT09MS0lUX0k2MTAwOiBtYWtlLmluZm88U3RhY2tSb2xsYmFja1Byb2dyZXNzPih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0k2MTAwJyxcbiAgICBkZXNjcmlwdGlvbjogJ1N0YWNrIHJvbGxiYWNrIHByb2dyZXNzJyxcbiAgICBpbnRlcmZhY2U6ICdTdGFja1JvbGxiYWNrUHJvZ3Jlc3MnLFxuICB9KSxcblxuICBDREtfVE9PTEtJVF9FNjAwMTogbWFrZS5lcnJvcih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0U2MDAxJyxcbiAgICBkZXNjcmlwdGlvbjogJ05vIHN0YWNrcyBmb3VuZCcsXG4gIH0pLFxuICBDREtfVE9PTEtJVF9FNjkwMDogbWFrZS5lcnJvcjxFcnJvclBheWxvYWQ+KHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfRTY5MDAnLFxuICAgIGRlc2NyaXB0aW9uOiAnUm9sbGJhY2sgZmFpbGVkJyxcbiAgICBpbnRlcmZhY2U6ICdFcnJvclBheWxvYWQnLFxuICB9KSxcblxuICAvLyA3OiBEZXN0cm95ICg3eHh4KVxuICBDREtfVE9PTEtJVF9JNzAwMDogbWFrZS5pbmZvPER1cmF0aW9uPih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0k3MDAwJyxcbiAgICBkZXNjcmlwdGlvbjogJ1Byb3ZpZGVzIGRlc3Ryb3kgdGltZXMnLFxuICAgIGludGVyZmFjZTogJ0R1cmF0aW9uJyxcbiAgfSksXG4gIENES19UT09MS0lUX0k3MDAxOiBtYWtlLnRyYWNlPER1cmF0aW9uPih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0k3MDAxJyxcbiAgICBkZXNjcmlwdGlvbjogJ1Byb3ZpZGVzIGRlc3Ryb3kgdGltZSBmb3IgYSBzaW5nbGUgc3RhY2snLFxuICAgIGludGVyZmFjZTogJ0R1cmF0aW9uJyxcbiAgfSksXG4gIENES19UT09MS0lUX0k3MDEwOiBtYWtlLmNvbmZpcm08Q29uZmlybWF0aW9uUmVxdWVzdD4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9JNzAxMCcsXG4gICAgZGVzY3JpcHRpb246ICdDb25maXJtIGRlc3Ryb3kgc3RhY2tzJyxcbiAgICBpbnRlcmZhY2U6ICdDb25maXJtYXRpb25SZXF1ZXN0JyxcbiAgfSksXG4gIENES19UT09MS0lUX0k3MTAwOiBtYWtlLmluZm88U3RhY2tEZXN0cm95UHJvZ3Jlc3M+KHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfSTcxMDAnLFxuICAgIGRlc2NyaXB0aW9uOiAnU3RhY2sgZGVzdHJveSBwcm9ncmVzcycsXG4gICAgaW50ZXJmYWNlOiAnU3RhY2tEZXN0cm95UHJvZ3Jlc3MnLFxuICB9KSxcbiAgQ0RLX1RPT0xLSVRfSTcxMDE6IG1ha2UudHJhY2U8U3RhY2tEZXN0cm95Pih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0k3MTAxJyxcbiAgICBkZXNjcmlwdGlvbjogJ1N0YXJ0IHN0YWNrIGRlc3Ryb3lpbmcnLFxuICAgIGludGVyZmFjZTogJ1N0YWNrRGVzdHJveScsXG4gIH0pLFxuXG4gIENES19UT09MS0lUX0k3OTAwOiBtYWtlLnJlc3VsdDxjeGFwaS5DbG91ZEZvcm1hdGlvblN0YWNrQXJ0aWZhY3Q+KHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfSTc5MDAnLFxuICAgIGRlc2NyaXB0aW9uOiAnU3RhY2sgZGVsZXRpb24gc3VjY2VlZGVkJyxcbiAgICBpbnRlcmZhY2U6ICdjeGFwaS5DbG91ZEZvcm1hdGlvblN0YWNrQXJ0aWZhY3QnLFxuICB9KSxcblxuICBDREtfVE9PTEtJVF9FNzAxMDogbWFrZS5lcnJvcih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0U3MDEwJyxcbiAgICBkZXNjcmlwdGlvbjogJ0FjdGlvbiB3YXMgYWJvcnRlZCBkdWUgdG8gbmVnYXRpdmUgY29uZmlybWF0aW9uIG9mIHJlcXVlc3QnLFxuICB9KSxcbiAgQ0RLX1RPT0xLSVRfRTc5MDA6IG1ha2UuZXJyb3I8RXJyb3JQYXlsb2FkPih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0U3OTAwJyxcbiAgICBkZXNjcmlwdGlvbjogJ1N0YWNrIGRlbGV0aW9uIGZhaWxlZCcsXG4gICAgaW50ZXJmYWNlOiAnRXJyb3JQYXlsb2FkJyxcbiAgfSksXG5cbiAgLy8gOC4gUmVmYWN0b3IgKDh4eHgpXG4gIENES19UT09MS0lUX0U4OTAwOiBtYWtlLmVycm9yPEVycm9yUGF5bG9hZD4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9FODkwMCcsXG4gICAgZGVzY3JpcHRpb246ICdTdGFjayByZWZhY3RvciBmYWlsZWQnLFxuICAgIGludGVyZmFjZTogJ0Vycm9yUGF5bG9hZCcsXG4gIH0pLFxuXG4gIENES19UT09MS0lUX0k4OTAwOiBtYWtlLnJlc3VsdDxSZWZhY3RvclJlc3VsdD4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9JODkwMCcsXG4gICAgZGVzY3JpcHRpb246ICdSZWZhY3RvciByZXN1bHQnLFxuICAgIGludGVyZmFjZTogJ1JlZmFjdG9yUmVzdWx0JyxcbiAgfSksXG5cbiAgQ0RLX1RPT0xLSVRfSTg5MTA6IG1ha2UuY29uZmlybTxDb25maXJtYXRpb25SZXF1ZXN0Pih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0k4OTEwJyxcbiAgICBkZXNjcmlwdGlvbjogJ0NvbmZpcm0gcmVmYWN0b3InLFxuICAgIGludGVyZmFjZTogJ0NvbmZpcm1hdGlvblJlcXVlc3QnLFxuICB9KSxcblxuICBDREtfVE9PTEtJVF9XODAxMDogbWFrZS53YXJuKHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfVzgwMTAnLFxuICAgIGRlc2NyaXB0aW9uOiAnUmVmYWN0b3IgZXhlY3V0aW9uIG5vdCB5ZXQgc3VwcG9ydGVkJyxcbiAgfSksXG5cbiAgLy8gT3JwaGFuICg4OHh4KVxuICBDREtfVE9PTEtJVF9JODgxMDogbWFrZS5jb25maXJtPENvbmZpcm1hdGlvblJlcXVlc3Q+KHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfSTg4MTAnLFxuICAgIGRlc2NyaXB0aW9uOiAnQ29uZmlybSBvcnBoYW4gcmVzb3VyY2VzJyxcbiAgICBpbnRlcmZhY2U6ICdDb25maXJtYXRpb25SZXF1ZXN0JyxcbiAgfSksXG5cbiAgLy8gOTogQm9vdHN0cmFwLCBnYywgZmxhZ3MgJiBwdWJsaXNoICg5eHh4KVxuICBDREtfVE9PTEtJVF9JOTAwMDogbWFrZS5pbmZvPER1cmF0aW9uPih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0k5MDAwJyxcbiAgICBkZXNjcmlwdGlvbjogJ1Byb3ZpZGVzIGJvb3RzdHJhcCB0aW1lcycsXG4gICAgaW50ZXJmYWNlOiAnRHVyYXRpb24nLFxuICB9KSxcbiAgQ0RLX1RPT0xLSVRfSTkxMDA6IG1ha2UuaW5mbzxCb290c3RyYXBFbnZpcm9ubWVudFByb2dyZXNzPih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0k5MTAwJyxcbiAgICBkZXNjcmlwdGlvbjogJ0Jvb3RzdHJhcCBwcm9ncmVzcycsXG4gICAgaW50ZXJmYWNlOiAnQm9vdHN0cmFwRW52aXJvbm1lbnRQcm9ncmVzcycsXG4gIH0pLFxuXG4gIC8vIGdjICg5Mnh4KVxuICBDREtfVE9PTEtJVF9JOTIxMDogbWFrZS5xdWVzdGlvbjxBc3NldEJhdGNoRGVsZXRpb25SZXF1ZXN0Pih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0k5MjEwJyxcbiAgICBkZXNjcmlwdGlvbjogJ0NvbmZpcm0gdGhlIGRlbGV0aW9uIG9mIGEgYmF0Y2ggb2YgYXNzZXRzJyxcbiAgICBpbnRlcmZhY2U6ICdBc3NldEJhdGNoRGVsZXRpb25SZXF1ZXN0JyxcbiAgfSksXG5cbiAgQ0RLX1RPT0xLSVRfSTk5MDA6IG1ha2UucmVzdWx0PHsgZW52aXJvbm1lbnQ6IGN4YXBpLkVudmlyb25tZW50IH0+KHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfSTk5MDAnLFxuICAgIGRlc2NyaXB0aW9uOiAnQm9vdHN0cmFwIHJlc3VsdHMgb24gc3VjY2VzcycsXG4gICAgaW50ZXJmYWNlOiAnY3hhcGkuRW52aXJvbm1lbnQnLFxuICB9KSxcbiAgQ0RLX1RPT0xLSVRfRTk5MDA6IG1ha2UuZXJyb3I8RXJyb3JQYXlsb2FkPih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0U5OTAwJyxcbiAgICBkZXNjcmlwdGlvbjogJ0Jvb3RzdHJhcCBmYWlsZWQnLFxuICAgIGludGVyZmFjZTogJ0Vycm9yUGF5bG9hZCcsXG4gIH0pLFxuXG4gIC8vIGZsYWdzICg5M3h4KVxuICBDREtfVE9PTEtJVF9JOTMwMDogbWFrZS5pbmZvPEZlYXR1cmVGbGFnQ2hhbmdlUmVxdWVzdD4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9JOTMwMCcsXG4gICAgZGVzY3JpcHRpb246ICdDb25maXJtIHRoZSBmZWF0dXJlIGZsYWcgY29uZmlndXJhdGlvbiBjaGFuZ2VzJyxcbiAgICBpbnRlcmZhY2U6ICdGZWF0dXJlRmxhZ0NoYW5nZVJlcXVlc3QnLFxuICB9KSxcblxuICAvLyBwdWJsaXNoICg5NHh4KVxuICBDREtfVE9PTEtJVF9JOTQwMDogbWFrZS5pbmZvKHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfSTk0MDAnLFxuICAgIGRlc2NyaXB0aW9uOiAnQWxsIGFzc2V0cyBhcmUgYWxyZWFkeSBwdWJsaXNoZWQnLFxuICB9KSxcbiAgQ0RLX1RPT0xLSVRfSTk0MDE6IG1ha2UuaW5mbzxBc3NldHNQYXlsb2FkPih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0k5NDAxJyxcbiAgICBkZXNjcmlwdGlvbjogJ1B1Ymxpc2hpbmcgYXNzZXRzJyxcbiAgICBpbnRlcmZhY2U6ICdBc3NldHNQYXlsb2FkJyxcbiAgfSksXG4gIENES19UT09MS0lUX0k5NDAyOiBtYWtlLnJlc3VsdDxBc3NldHNQYXlsb2FkPih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0k5NDAyJyxcbiAgICBkZXNjcmlwdGlvbjogJ1B1Ymxpc2ggYXNzZXRzIHJlc3VsdHMgb24gc3VjY2VzcycsXG4gICAgaW50ZXJmYWNlOiAnQXNzZXRzUGF5bG9hZCcsXG4gIH0pLFxuXG4gIC8vIGRpYWdub3NlICg5NXh4KVxuICBDREtfVE9PTEtJVF9JOTUwMDogbWFrZS5pbmZvPERpYWdub3NlZFN0YWNrPih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0k5NTAwJyxcbiAgICBkZXNjcmlwdGlvbjogJ1N0YWNrIGRpYWdub3NpcyAobm8gcHJvYmxlbXMgZm91bmQpJyxcbiAgICBpbnRlcmZhY2U6ICdEaWFnbm9zZWRTdGFjaycsXG4gIH0pLFxuXG4gIENES19UT09MS0lUX0U5NTAwOiBtYWtlLmVycm9yPERpYWdub3NlZFN0YWNrPih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0U5NTAwJyxcbiAgICBkZXNjcmlwdGlvbjogJ1N0YWNrIGRpYWdub3NpcyAocHJvYmxlbXMgZm91bmQpJyxcbiAgICBpbnRlcmZhY2U6ICdEaWFnbm9zZWRTdGFjaycsXG4gIH0pLFxuXG4gIENES19UT09MS0lUX1c5NTAxOiBtYWtlLndhcm48RGlhZ25vc2VkU3RhY2s+KHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfVzk1MDEnLFxuICAgIGRlc2NyaXB0aW9uOiAnU3RhY2sgZGlhZ25vc2lzIChkaWFnbm9zaXMgY291bGQgbm90IGJlIHBlcmZvcm1lZCknLFxuICAgIGludGVyZmFjZTogJ0RpYWdub3NlZFN0YWNrJyxcbiAgfSksXG5cbiAgLy8gTm90aWNlc1xuICBDREtfVE9PTEtJVF9JMDEwMDogbWFrZS5pbmZvKHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfSTAxMDAnLFxuICAgIGRlc2NyaXB0aW9uOiAnTm90aWNlcyBkZWNvcmF0aW9uICh0aGUgaGVhZGVyIG9yIGZvb3RlciBvZiBhIGxpc3Qgb2Ygbm90aWNlcyknLFxuICB9KSxcbiAgQ0RLX1RPT0xLSVRfVzAxMDE6IG1ha2Uud2Fybih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX1cwMTAxJyxcbiAgICBkZXNjcmlwdGlvbjogJ0Egbm90aWNlIHRoYXQgaXMgbWFya2VkIGFzIGEgd2FybmluZycsXG4gIH0pLFxuICBDREtfVE9PTEtJVF9FMDEwMTogbWFrZS5lcnJvcih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0UwMTAxJyxcbiAgICBkZXNjcmlwdGlvbjogJ0Egbm90aWNlIHRoYXQgaXMgbWFya2VkIGFzIGFuIGVycm9yJyxcbiAgfSksXG4gIENES19UT09MS0lUX0kwMTAxOiBtYWtlLmluZm8oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9JMDEwMScsXG4gICAgZGVzY3JpcHRpb246ICdBIG5vdGljZSB0aGF0IGlzIG1hcmtlZCBhcyBpbmZvcm1hdGlvbmFsJyxcbiAgfSksXG5cbiAgLy8gQXNzZW1ibHkgY29kZXNcbiAgQ0RLX0FTU0VNQkxZX0kwMDEwOiBtYWtlLmRlYnVnKHtcbiAgICBjb2RlOiAnQ0RLX0FTU0VNQkxZX0kwMDEwJyxcbiAgICBkZXNjcmlwdGlvbjogJ0dlbmVyaWMgZW52aXJvbm1lbnQgcHJlcGFyYXRpb24gZGVidWcgbWVzc2FnZXMnLFxuICB9KSxcbiAgQ0RLX0FTU0VNQkxZX1cwMDEwOiBtYWtlLndhcm4oe1xuICAgIGNvZGU6ICdDREtfQVNTRU1CTFlfVzAwMTAnLFxuICAgIGRlc2NyaXB0aW9uOiAnRW1pdHRlZCBpZiB0aGUgZm91bmQgZnJhbWV3b3JrIHZlcnNpb24gZG9lcyBub3Qgc3VwcG9ydCBjb250ZXh0IG92ZXJmbG93JyxcbiAgfSksXG4gIENES19BU1NFTUJMWV9JMDA0MjogbWFrZS5kZWJ1ZzxVcGRhdGVkQ29udGV4dD4oe1xuICAgIGNvZGU6ICdDREtfQVNTRU1CTFlfSTAwNDInLFxuICAgIGRlc2NyaXB0aW9uOiAnV3JpdGluZyBjb250ZXh0IHVwZGF0ZXMnLFxuICAgIGludGVyZmFjZTogJ1VwZGF0ZWRDb250ZXh0JyxcbiAgfSksXG4gIENES19BU1NFTUJMWV9JMDI0MDogbWFrZS5kZWJ1ZzxNaXNzaW5nQ29udGV4dD4oe1xuICAgIGNvZGU6ICdDREtfQVNTRU1CTFlfSTAyNDAnLFxuICAgIGRlc2NyaXB0aW9uOiAnQ29udGV4dCBsb29rdXAgd2FzIHN0b3BwZWQgYXMgbm8gZnVydGhlciBwcm9ncmVzcyB3YXMgbWFkZS4gJyxcbiAgICBpbnRlcmZhY2U6ICdNaXNzaW5nQ29udGV4dCcsXG4gIH0pLFxuICBDREtfQVNTRU1CTFlfSTAyNDE6IG1ha2UuZGVidWc8TWlzc2luZ0NvbnRleHQ+KHtcbiAgICBjb2RlOiAnQ0RLX0FTU0VNQkxZX0kwMjQxJyxcbiAgICBkZXNjcmlwdGlvbjogJ0ZldGNoaW5nIG1pc3NpbmcgY29udGV4dC4gVGhpcyBpcyBhbiBpdGVyYXRpdmUgbWVzc2FnZSB0aGF0IG1heSBhcHBlYXIgbXVsdGlwbGUgdGltZXMgd2l0aCBkaWZmZXJlbnQgbWlzc2luZyBrZXlzLicsXG4gICAgaW50ZXJmYWNlOiAnTWlzc2luZ0NvbnRleHQnLFxuICB9KSxcbiAgQ0RLX0FTU0VNQkxZX0kxMDAwOiBtYWtlLmRlYnVnKHtcbiAgICBjb2RlOiAnQ0RLX0FTU0VNQkxZX0kxMDAwJyxcbiAgICBkZXNjcmlwdGlvbjogJ0Nsb3VkIGFzc2VtYmx5IG91dHB1dCBzdGFydHMnLFxuICB9KSxcbiAgQ0RLX0FTU0VNQkxZX0kxMDAxOiBtYWtlLmluZm8oe1xuICAgIGNvZGU6ICdDREtfQVNTRU1CTFlfSTEwMDEnLFxuICAgIGRlc2NyaXB0aW9uOiAnT3V0cHV0IGxpbmVzIGVtaXR0ZWQgYnkgdGhlIGNsb3VkIGFzc2VtYmx5IHRvIHN0ZG91dCcsXG4gIH0pLFxuICBDREtfQVNTRU1CTFlfRTEwMDI6IG1ha2UuZXJyb3Ioe1xuICAgIGNvZGU6ICdDREtfQVNTRU1CTFlfRTEwMDInLFxuICAgIGRlc2NyaXB0aW9uOiAnT3V0cHV0IGxpbmVzIGVtaXR0ZWQgYnkgdGhlIGNsb3VkIGFzc2VtYmx5IHRvIHN0ZGVycicsXG4gIH0pLFxuICBDREtfQVNTRU1CTFlfSTEwMDM6IG1ha2UuaW5mbyh7XG4gICAgY29kZTogJ0NES19BU1NFTUJMWV9JMTAwMycsXG4gICAgZGVzY3JpcHRpb246ICdDbG91ZCBhc3NlbWJseSBvdXRwdXQgZmluaXNoZWQnLFxuICB9KSxcbiAgQ0RLX0FTU0VNQkxZX0UxMTExOiBtYWtlLmVycm9yPEVycm9yUGF5bG9hZD4oe1xuICAgIGNvZGU6ICdDREtfQVNTRU1CTFlfRTExMTEnLFxuICAgIGRlc2NyaXB0aW9uOiAnSW5jb21wYXRpYmxlIENESyBDTEkgdmVyc2lvbi4gVXBncmFkZSBuZWVkZWQuJyxcbiAgICBpbnRlcmZhY2U6ICdFcnJvclBheWxvYWQnLFxuICB9KSxcblxuICBDREtfQVNTRU1CTFlfSTAxNTA6IG1ha2UuZGVidWc8bmV2ZXI+KHtcbiAgICBjb2RlOiAnQ0RLX0FTU0VNQkxZX0kwMTUwJyxcbiAgICBkZXNjcmlwdGlvbjogJ0luZGljYXRlcyB0aGUgdXNlIG9mIGEgcHJlLXN5bnRoZXNpemVkIGNsb3VkIGFzc2VtYmx5IGRpcmVjdG9yeScsXG4gIH0pLFxuXG4gIENES19BU1NFTUJMWV9JMDMwMDogbWFrZS5pbmZvPENvbnRleHRQcm92aWRlck1lc3NhZ2VTb3VyY2U+KHtcbiAgICBjb2RlOiAnQ0RLX0FTU0VNQkxZX0kwMzAwJyxcbiAgICBkZXNjcmlwdGlvbjogJ0FuIGluZm8gbWVzc2FnZSBlbWl0dGVkIGJ5IGEgQ29udGV4dCBQcm92aWRlcicsXG4gICAgaW50ZXJmYWNlOiAnQ29udGV4dFByb3ZpZGVyTWVzc2FnZVNvdXJjZScsXG4gIH0pLFxuICBDREtfQVNTRU1CTFlfSTAzMDE6IG1ha2UuZGVidWc8Q29udGV4dFByb3ZpZGVyTWVzc2FnZVNvdXJjZT4oe1xuICAgIGNvZGU6ICdDREtfQVNTRU1CTFlfSTAzMDEnLFxuICAgIGRlc2NyaXB0aW9uOiAnQSBkZWJ1ZyBtZXNzYWdlIGVtaXR0ZWQgYnkgYSBDb250ZXh0IFByb3ZpZGVyJyxcbiAgICBpbnRlcmZhY2U6ICdDb250ZXh0UHJvdmlkZXJNZXNzYWdlU291cmNlJyxcbiAgfSksXG5cbiAgLy8gQXNzZW1ibHkgQW5ub3RhdGlvbnNcbiAgQ0RLX0FTU0VNQkxZX0k5OTk5OiBtYWtlLmluZm88Y3hhcGkuU3ludGhlc2lzTWVzc2FnZT4oe1xuICAgIGNvZGU6ICdDREtfQVNTRU1CTFlfSTk5OTknLFxuICAgIGRlc2NyaXB0aW9uOiAnQW5ub3RhdGlvbnMgZW1pdHRlZCBieSB0aGUgY2xvdWQgYXNzZW1ibHknLFxuICAgIGludGVyZmFjZTogJ2N4YXBpLlN5bnRoZXNpc01lc3NhZ2UnLFxuICB9KSxcbiAgQ0RLX0FTU0VNQkxZX1c5OTk5OiBtYWtlLndhcm48Y3hhcGkuU3ludGhlc2lzTWVzc2FnZT4oe1xuICAgIGNvZGU6ICdDREtfQVNTRU1CTFlfVzk5OTknLFxuICAgIGRlc2NyaXB0aW9uOiAnV2FybmluZ3MgZW1pdHRlZCBieSB0aGUgY2xvdWQgYXNzZW1ibHknLFxuICAgIGludGVyZmFjZTogJ2N4YXBpLlN5bnRoZXNpc01lc3NhZ2UnLFxuICB9KSxcbiAgQ0RLX0FTU0VNQkxZX0U5OTk5OiBtYWtlLmVycm9yPGN4YXBpLlN5bnRoZXNpc01lc3NhZ2U+KHtcbiAgICBjb2RlOiAnQ0RLX0FTU0VNQkxZX0U5OTk5JyxcbiAgICBkZXNjcmlwdGlvbjogJ0Vycm9ycyBlbWl0dGVkIGJ5IHRoZSBjbG91ZCBhc3NlbWJseScsXG4gICAgaW50ZXJmYWNlOiAnY3hhcGkuU3ludGhlc2lzTWVzc2FnZScsXG4gIH0pLFxuXG4gIC8vIFNESyBjb2Rlc1xuICBDREtfU0RLX0kwMTAwOiBtYWtlLnRyYWNlPFNka1RyYWNlPih7XG4gICAgY29kZTogJ0NES19TREtfSTAxMDAnLFxuICAgIGRlc2NyaXB0aW9uOiAnQW4gU0RLIHRyYWNlLiBTREsgdHJhY2VzIGFyZSBlbWl0dGVkIGFzIHRyYWNlcyB0byB0aGUgSW9Ib3N0LCBidXQgY29udGFpbiB0aGUgb3JpZ2luYWwgU0RLIGxvZ2dpbmcgbGV2ZWwuJyxcbiAgICBpbnRlcmZhY2U6ICdTZGtUcmFjZScsXG4gIH0pLFxuICBDREtfU0RLX0kxMTAwOiBtYWtlLnF1ZXN0aW9uPE1mYVRva2VuUmVxdWVzdD4oe1xuICAgIGNvZGU6ICdDREtfU0RLX0kxMTAwJyxcbiAgICBkZXNjcmlwdGlvbjogJ0dldCBhbiBNRkEgdG9rZW4gZm9yIGFuIE1GQSBkZXZpY2UuJyxcbiAgICBpbnRlcmZhY2U6ICdNZmFUb2tlblJlcXVlc3QnLFxuICB9KSxcbn07XG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG4vKipcbiAqIFBheWxvYWQgdHlwZSBvZiB0aGUgZW5kIG1lc3NhZ2UgbXVzdCBleHRlbmQgRHVyYXRpb25cbiAqL1xuZXhwb3J0IGNvbnN0IFNQQU4gPSB7XG4gIFNZTlRIX0FTU0VNQkxZOiB7XG4gICAgbmFtZTogJ1N5bnRoZXNpcycsXG4gICAgc3RhcnQ6IElPLkNES19UT09MS0lUX0kxMDAxLFxuICAgIGVuZDogSU8uQ0RLX1RPT0xLSVRfSTEwMDAsXG4gIH0sXG4gIERFUExPWV9TVEFDSzoge1xuICAgIG5hbWU6ICdEZXBsb3ltZW50JyxcbiAgICBzdGFydDogSU8uQ0RLX1RPT0xLSVRfSTUxMDAsXG4gICAgZW5kOiBJTy5DREtfVE9PTEtJVF9JNTAwMSxcbiAgfSxcbiAgUk9MTEJBQ0tfU1RBQ0s6IHtcbiAgICBuYW1lOiAnUm9sbGJhY2snLFxuICAgIHN0YXJ0OiBJTy5DREtfVE9PTEtJVF9JNjEwMCxcbiAgICBlbmQ6IElPLkNES19UT09MS0lUX0k2MDAwLFxuICB9LFxuICBESUZGX1NUQUNLOiB7XG4gICAgbmFtZTogJ0RpZmYnLFxuICAgIHN0YXJ0OiBJTy5DREtfVE9PTEtJVF9JNDAwMCxcbiAgICBlbmQ6IElPLkNES19UT09MS0lUX0k0MDAxLFxuICB9LFxuICBEUklGVF9BUFA6IHtcbiAgICBuYW1lOiAnRHJpZnQnLFxuICAgIHN0YXJ0OiBJTy5DREtfVE9PTEtJVF9JNDAwMCxcbiAgICBlbmQ6IElPLkNES19UT09MS0lUX0k0NTA5LFxuICB9LFxuICBERVNUUk9ZX1NUQUNLOiB7XG4gICAgbmFtZTogJ0Rlc3Ryb3knLFxuICAgIHN0YXJ0OiBJTy5DREtfVE9PTEtJVF9JNzEwMCxcbiAgICBlbmQ6IElPLkNES19UT09MS0lUX0k3MDAxLFxuICB9LFxuICBERVNUUk9ZX0FDVElPTjoge1xuICAgIG5hbWU6ICdEZXN0cm95JyxcbiAgICBzdGFydDogSU8uQ0RLX1RPT0xLSVRfSTcxMDEsXG4gICAgZW5kOiBJTy5DREtfVE9PTEtJVF9JNzAwMCxcbiAgfSxcbiAgQk9PVFNUUkFQX1NJTkdMRToge1xuICAgIG5hbWU6ICdCb290c3RyYXAnLFxuICAgIHN0YXJ0OiBJTy5DREtfVE9PTEtJVF9JOTEwMCxcbiAgICBlbmQ6IElPLkNES19UT09MS0lUX0k5MDAwLFxuICB9LFxuICBCVUlMRF9BU1NFVDoge1xuICAgIG5hbWU6ICdCdWlsZCBBc3NldCcsXG4gICAgc3RhcnQ6IElPLkNES19UT09MS0lUX0k1MjEwLFxuICAgIGVuZDogSU8uQ0RLX1RPT0xLSVRfSTUyMTEsXG4gIH0sXG4gIFBVQkxJU0hfQVNTRVQ6IHtcbiAgICBuYW1lOiAnUHVibGlzaCBBc3NldCcsXG4gICAgc3RhcnQ6IElPLkNES19UT09MS0lUX0k1MjIwLFxuICAgIGVuZDogSU8uQ0RLX1RPT0xLSVRfSTUyMjEsXG4gIH0sXG4gIEhPVFNXQVA6IHtcbiAgICBuYW1lOiAnaG90c3dhcC1kZXBsb3ltZW50JyxcbiAgICBzdGFydDogSU8uQ0RLX1RPT0xLSVRfSTU0MDAsXG4gICAgZW5kOiBJTy5DREtfVE9PTEtJVF9JNTQxMCxcbiAgfSxcbn0gc2F0aXNmaWVzIFJlY29yZDxzdHJpbmcsIFNwYW5EZWZpbml0aW9uPGFueSwgYW55Pj47XG4iXX0=
|
|
625
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJtZXNzYWdlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSx3Q0FBd0M7QUFrQ3hDOzs7OztHQUtHO0FBQ1UsUUFBQSxFQUFFLEdBQUc7SUFDaEIsb0JBQW9CO0lBQ3BCLGlCQUFpQixFQUFFLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDM0IsSUFBSSxFQUFFLG1CQUFtQjtRQUN6QixXQUFXLEVBQUUsNEJBQTRCO0tBQzFDLENBQUM7SUFFRixrQkFBa0I7SUFDbEIsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBWTtRQUN0QyxJQUFJLEVBQUUsbUJBQW1CO1FBQ3pCLFdBQVcsRUFBRSwyQkFBMkI7UUFDeEMsU0FBUyxFQUFFLFdBQVc7S0FDdkIsQ0FBQztJQUNGLGlCQUFpQixFQUFFLElBQUksQ0FBQyxLQUFLLENBQXdCO1FBQ25ELElBQUksRUFBRSxtQkFBbUI7UUFDekIsV0FBVyxFQUFFLHNDQUFzQztRQUNuRCxTQUFTLEVBQUUsdUJBQXVCO0tBQ25DLENBQUM7SUFDRixpQkFBaUIsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUF1QjtRQUNuRCxJQUFJLEVBQUUsbUJBQW1CO1FBQ3pCLFdBQVcsRUFBRSxxQkFBcUI7UUFDbEMsU0FBUyxFQUFFLHNCQUFzQjtLQUNsQyxDQUFDO0lBQ0YsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBZTtRQUMzQyxJQUFJLEVBQUUsbUJBQW1CO1FBQ3pCLFdBQVcsRUFBRSw4QkFBOEI7UUFDM0MsU0FBUyxFQUFFLGNBQWM7S0FDMUIsQ0FBQztJQUVGLGlCQUFpQjtJQUNqQixpQkFBaUIsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFzQjtRQUNsRCxJQUFJLEVBQUUsbUJBQW1CO1FBQ3pCLFdBQVcsRUFBRSxnRUFBZ0U7UUFDN0UsU0FBUyxFQUFFLHFCQUFxQjtLQUNqQyxDQUFDO0lBRUYsc0JBQXNCO0lBQ3RCLGlCQUFpQixFQUFFLElB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QUFFLENBQUMsaUJBQWlCO1FBQzNCLEdBQUcsRUFBRSxVQUFFLENBQUMsaUJBQWlCO0tBQzFCO0lBQ0QsZ0JBQWdCLEVBQUU7UUFDaEIsSUFBSSxFQUFFLFdBQVc7UUFDakIsS0FBSyxFQUFFLFVBQUUsQ0FBQyxpQkFBaUI7UUFDM0IsR0FBRyxFQUFFLFVBQUUsQ0FBQyxpQkFBaUI7S0FDMUI7SUFDRCxXQUFXLEVBQUU7UUFDWCxJQUFJLEVBQUUsYUFBYTtRQUNuQixLQUFLLEVBQUUsVUFBRSxDQUFDLGlCQUFpQjtRQUMzQixHQUFHLEVBQUUsVUFBRSxDQUFDLGlCQUFpQjtLQUMxQjtJQUNELGFBQWEsRUFBRTtRQUNiLElBQUksRUFBRSxlQUFlO1FBQ3JCLEtBQUssRUFBRSxVQUFFLENBQUMsaUJBQWlCO1FBQzNCLEdBQUcsRUFBRSxVQUFFLENBQUMsaUJBQWlCO0tBQzFCO0lBQ0QsT0FBTyxFQUFFO1FBQ1AsSUFBSSxFQUFFLG9CQUFvQjtRQUMxQixLQUFLLEVBQUUsVUFBRSxDQUFDLGlCQUFpQjtRQUMzQixHQUFHLEVBQUUsVUFBRSxDQUFDLGlCQUFpQjtLQUMxQjtDQUNpRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgKiBhcyBjeGFwaSBmcm9tICdAYXdzLWNkay9jbG91ZC1hc3NlbWJseS1hcGknO1xuaW1wb3J0ICogYXMgbWFrZSBmcm9tICcuL21lc3NhZ2UtbWFrZXInO1xuaW1wb3J0IHR5cGUgeyBTcGFuRGVmaW5pdGlvbiB9IGZyb20gJy4vc3Bhbic7XG5pbXBvcnQgdHlwZSB7IERpYWdub3NlZFN0YWNrIH0gZnJvbSAnLi4vLi4vLi4vYWN0aW9ucy9kaWFnbm9zZSc7XG5pbXBvcnQgdHlwZSB7IFZhbGlkYXRlUmVzdWx0IH0gZnJvbSAnLi4vLi4vLi4vYWN0aW9ucy92YWxpZGF0ZSc7XG5pbXBvcnQgdHlwZSB7IFN0YWNrRGlmZiwgRGlmZlJlc3VsdCB9IGZyb20gJy4uLy4uLy4uL3BheWxvYWRzJztcbmltcG9ydCB0eXBlIHsgQm9vdHN0cmFwRW52aXJvbm1lbnRQcm9ncmVzcyB9IGZyb20gJy4uLy4uLy4uL3BheWxvYWRzL2Jvb3RzdHJhcC1lbnZpcm9ubWVudC1wcm9ncmVzcyc7XG5pbXBvcnQgdHlwZSB7IE1pc3NpbmdDb250ZXh0LCBVcGRhdGVkQ29udGV4dCB9IGZyb20gJy4uLy4uLy4uL3BheWxvYWRzL2NvbnRleHQnO1xuaW1wb3J0IHR5cGUgeyBCdWlsZEFzc2V0LCBEZXBsb3lDb25maXJtYXRpb25SZXF1ZXN0LCBQdWJsaXNoQXNzZXQsIFB1Ymxpc2hBc3NldEV2ZW50LCBTdGFja0RlcGxveVByb2dyZXNzLCBTdWNjZXNzZnVsRGVwbG95U3RhY2tSZXN1bHQgfSBmcm9tICcuLi8uLi8uLi9wYXlsb2Fkcy9kZXBsb3knO1xuaW1wb3J0IHR5cGUgeyBTdGFja0Rlc3Ryb3ksIFN0YWNrRGVzdHJveVByb2dyZXNzIH0gZnJvbSAnLi4vLi4vLi4vcGF5bG9hZHMvZGVzdHJveSc7XG5pbXBvcnQgdHlwZSB7IERyaWZ0UmVzdWx0UGF5bG9hZCB9IGZyb20gJy4uLy4uLy4uL3BheWxvYWRzL2RyaWZ0JztcbmltcG9ydCB0eXBlIHsgRmVhdHVyZUZsYWdDaGFuZ2VSZXF1ZXN0IH0gZnJvbSAnLi4vLi4vLi4vcGF5bG9hZHMvZmxhZ3MnO1xuaW1wb3J0IHR5cGUgeyBBc3NldEJhdGNoRGVsZXRpb25SZXF1ZXN0IH0gZnJvbSAnLi4vLi4vLi4vcGF5bG9hZHMvZ2MnO1xuaW1wb3J0IHR5cGUgeyBIb3Rzd2FwRGVwbG95bWVudERldGFpbHMsIEhvdHN3YXBEZXBsb3ltZW50QXR0ZW1wdCwgSG90c3dhcHBhYmxlQ2hhbmdlLCBIb3Rzd2FwUmVzdWx0IH0gZnJvbSAnLi4vLi4vLi4vcGF5bG9hZHMvaG90c3dhcCc7XG5pbXBvcnQgdHlwZSB7IFJlc291cmNlSWRlbnRpZmljYXRpb25SZXF1ZXN0LCBSZXNvdXJjZUltcG9ydFJlcXVlc3QgfSBmcm9tICcuLi8uLi8uLi9wYXlsb2Fkcy9pbXBvcnQnO1xuaW1wb3J0IHR5cGUgeyBTdGFja0RldGFpbHNQYXlsb2FkIH0gZnJvbSAnLi4vLi4vLi4vcGF5bG9hZHMvbGlzdCc7XG5pbXBvcnQgdHlwZSB7IENsb3VkV2F0Y2hMb2dFdmVudCwgQ2xvdWRXYXRjaExvZ01vbml0b3JDb250cm9sRXZlbnQgfSBmcm9tICcuLi8uLi8uLi9wYXlsb2Fkcy9sb2dzLW1vbml0b3InO1xuaW1wb3J0IHR5cGUgeyBBc3NldHNQYXlsb2FkIH0gZnJvbSAnLi4vLi4vLi4vcGF5bG9hZHMvcHVibGlzaC1hc3NldHMnO1xuaW1wb3J0IHR5cGUgeyBSZWZhY3RvclJlc3VsdCB9IGZyb20gJy4uLy4uLy4uL3BheWxvYWRzL3JlZmFjdG9yJztcbmltcG9ydCB0eXBlIHsgU3RhY2tSb2xsYmFja1Byb2dyZXNzIH0gZnJvbSAnLi4vLi4vLi4vcGF5bG9hZHMvcm9sbGJhY2snO1xuaW1wb3J0IHR5cGUgeyBNZmFUb2tlblJlcXVlc3QsIFNka1RyYWNlIH0gZnJvbSAnLi4vLi4vLi4vcGF5bG9hZHMvc2RrJztcbmltcG9ydCB0eXBlIHsgU3RhY2tBY3Rpdml0eSwgU3RhY2tNb25pdG9yaW5nQ29udHJvbEV2ZW50IH0gZnJvbSAnLi4vLi4vLi4vcGF5bG9hZHMvc3RhY2stYWN0aXZpdHknO1xuaW1wb3J0IHR5cGUgeyBTdGFja1NlbGVjdGlvbkRldGFpbHMgfSBmcm9tICcuLi8uLi8uLi9wYXlsb2Fkcy9zeW50aCc7XG5pbXBvcnQgdHlwZSB7XG4gIEFzc2VtYmx5RGF0YSxcbiAgQ29uZmlybWF0aW9uUmVxdWVzdCxcbiAgQ29udGV4dFByb3ZpZGVyTWVzc2FnZVNvdXJjZSxcbiAgRHVyYXRpb24sXG4gIEVycm9yUGF5bG9hZCxcbiAgT3BlcmF0aW9uLFxuICBTaW5nbGVTdGFjayxcbiAgU3RhY2tBbmRBc3NlbWJseURhdGEsXG59IGZyb20gJy4uLy4uLy4uL3BheWxvYWRzL3R5cGVzJztcbmltcG9ydCB0eXBlIHsgRmlsZVdhdGNoRXZlbnQsIFdhdGNoU2V0dGluZ3MgfSBmcm9tICcuLi8uLi8uLi9wYXlsb2Fkcy93YXRjaCc7XG5cbi8qKlxuICogV2UgaGF2ZSBhIHJvdWdoIHN5c3RlbSBieSB3aGljaCB3ZSBhc3NpZ24gbWVzc2FnZSBjb2RlczpcbiAqIC0gRmlyc3QgZGlnaXQgZ3JvdXBzIG1lc3NhZ2VzIGJ5IGFjdGlvbiwgZS5nLiBzeW50aCBvciBkZXBsb3lcbiAqIC0gWDAwMC1YMDA5IGFyZSByZXNlcnZlZCBmb3IgdGltaW5nc1xuICogLSBYOTAwLVg5OTkgYXJlIHJlc2VydmVkIGZvciByZXN1bHRzXG4gKi9cbmV4cG9ydCBjb25zdCBJTyA9IHtcbiAgLy8gd2FybmluZ3MgJiBlcnJvcnNcbiAgQ0RLX1RPT0xLSVRfVzAxMDA6IG1ha2Uud2Fybih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX1cwMTAwJyxcbiAgICBkZXNjcmlwdGlvbjogJ0NyZWRlbnRpYWwgcGx1Z2luIHdhcm5pbmdzJyxcbiAgfSksXG5cbiAgLy8gMTogU3ludGggKDF4eHgpXG4gIENES19UT09MS0lUX0kxMDAwOiBtYWtlLmluZm88T3BlcmF0aW9uPih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0kxMDAwJyxcbiAgICBkZXNjcmlwdGlvbjogJ1Byb3ZpZGVzIHN5bnRoZXNpcyB0aW1lcy4nLFxuICAgIGludGVyZmFjZTogJ09wZXJhdGlvbicsXG4gIH0pLFxuICBDREtfVE9PTEtJVF9JMTAwMTogbWFrZS50cmFjZTxTdGFja1NlbGVjdGlvbkRldGFpbHM+KHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfSTEwMDEnLFxuICAgIGRlc2NyaXB0aW9uOiAnQ2xvdWQgQXNzZW1ibHkgc3ludGhlc2lzIGlzIHN0YXJ0aW5nJyxcbiAgICBpbnRlcmZhY2U6ICdTdGFja1NlbGVjdGlvbkRldGFpbHMnLFxuICB9KSxcbiAgQ0RLX1RPT0xLSVRfSTE5MDE6IG1ha2UucmVzdWx0PFN0YWNrQW5kQXNzZW1ibHlEYXRhPih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0kxOTAxJyxcbiAgICBkZXNjcmlwdGlvbjogJ1Byb3ZpZGVzIHN0YWNrIGRhdGEnLFxuICAgIGludGVyZmFjZTogJ1N0YWNrQW5kQXNzZW1ibHlEYXRhJyxcbiAgfSksXG4gIENES19UT09MS0lUX0kxOTAyOiBtYWtlLnJlc3VsdDxBc3NlbWJseURhdGE+KHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfSTE5MDInLFxuICAgIGRlc2NyaXB0aW9uOiAnU3VjY2Vzc2Z1bGx5IGRlcGxveWVkIHN0YWNrcycsXG4gICAgaW50ZXJmYWNlOiAnQXNzZW1ibHlEYXRhJyxcbiAgfSksXG5cbiAgLy8gMjogTGlzdCAoMnh4eClcbiAgQ0RLX1RPT0xLSVRfSTI5MDE6IG1ha2UucmVzdWx0PFN0YWNrRGV0YWlsc1BheWxvYWQ+KHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfSTI5MDEnLFxuICAgIGRlc2NyaXB0aW9uOiAnUHJvdmlkZXMgZGV0YWlscyBvbiB0aGUgc2VsZWN0ZWQgc3RhY2tzIGFuZCB0aGVpciBkZXBlbmRlbmNpZXMnLFxuICAgIGludGVyZmFjZTogJ1N0YWNrRGV0YWlsc1BheWxvYWQnLFxuICB9KSxcblxuICAvLyAzOiBJbXBvcnQgJiBNaWdyYXRlXG4gIENES19UT09MS0lUX0kzMTAwOiBtYWtlLmNvbmZpcm08UmVzb3VyY2VJbXBvcnRSZXF1ZXN0Pih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0kzMTAwJyxcbiAgICBkZXNjcmlwdGlvbjogJ0NvbmZpcm0gdGhlIGltcG9ydCBvZiBhIHNwZWNpZmljIHJlc291cmNlJyxcbiAgICBpbnRlcmZhY2U6ICdSZXNvdXJjZUltcG9ydFJlcXVlc3QnLFxuICB9KSxcbiAgQ0RLX1RPT0xLSVRfSTMxMTA6IG1ha2UucXVlc3Rpb248UmVzb3VyY2VJZGVudGlmaWNhdGlvblJlcXVlc3Q+KHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfSTMxMTAnLFxuICAgIGRlc2NyaXB0aW9uOiAnQWRkaXRpb25hbCBpbmZvcm1hdGlvbiBpcyBuZWVkZWQgdG8gaWRlbnRpZnkgYSByZXNvdXJjZScsXG4gICAgaW50ZXJmYWNlOiAnUmVzb3VyY2VJZGVudGlmaWNhdGlvblJlcXVlc3QnLFxuICB9KSxcbiAgQ0RLX1RPT0xLSVRfRTM5MDA6IG1ha2UuZXJyb3I8RXJyb3JQYXlsb2FkPih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0UzOTAwJyxcbiAgICBkZXNjcmlwdGlvbjogJ1Jlc291cmNlIGltcG9ydCBmYWlsZWQnLFxuICAgIGludGVyZmFjZTogJ0Vycm9yUGF5bG9hZCcsXG4gIH0pLFxuXG4gIC8vIDQ6IERpZmYgKDQweHggLSA0NHh4KVxuICBDREtfVE9PTEtJVF9JNDAwMDogbWFrZS50cmFjZTxTdGFja1NlbGVjdGlvbkRldGFpbHM+KHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfSTQwMDAnLFxuICAgIGRlc2NyaXB0aW9uOiAnRGlmZiBzdGFja3MgaXMgc3RhcnRpbmcnLFxuICAgIGludGVyZmFjZTogJ1N0YWNrU2VsZWN0aW9uRGV0YWlscycsXG4gIH0pLFxuICBDREtfVE9PTEtJVF9JNDAwMTogbWFrZS5yZXN1bHQ8RGlmZlJlc3VsdD4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9JNDAwMScsXG4gICAgZGVzY3JpcHRpb246ICdPdXRwdXQgb2YgdGhlIGRpZmYgY29tbWFuZCcsXG4gICAgaW50ZXJmYWNlOiAnRGlmZlJlc3VsdCcsXG4gIH0pLFxuICBDREtfVE9PTEtJVF9JNDAwMjogbWFrZS5yZXN1bHQ8U3RhY2tEaWZmPih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0k0MDAyJyxcbiAgICBkZXNjcmlwdGlvbjogJ1RoZSBkaWZmIGZvciBhIHNpbmdsZSBzdGFjaycsXG4gICAgaW50ZXJmYWNlOiAnU3RhY2tEaWZmJyxcbiAgfSksXG5cbiAgLy8gNDogRHJpZnQgKDQ1eHggLSA0OXh4KVxuICBDREtfVE9PTEtJVF9JNDUwMDogbWFrZS50cmFjZTxTdGFja1NlbGVjdGlvbkRldGFpbHM+KHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfSTQ1MDAnLFxuICAgIGRlc2NyaXB0aW9uOiAnRHJpZnQgZGV0ZWN0aW9uIGlzIHN0YXJ0aW5nJyxcbiAgICBpbnRlcmZhY2U6ICdTdGFja1NlbGVjdGlvbkRldGFpbHMnLFxuICB9KSxcbiAgQ0RLX1RPT0xLSVRfSTQ1MDk6IG1ha2UucmVzdWx0PER1cmF0aW9uPih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0k0NTkyJyxcbiAgICBkZXNjcmlwdGlvbjogJ1Jlc3VsdHMgb2YgdGhlIGRyaWZ0JyxcbiAgICBpbnRlcmZhY2U6ICdEdXJhdGlvbicsXG4gIH0pLFxuICBDREtfVE9PTEtJVF9JNDU5MDogbWFrZS5yZXN1bHQ8RHJpZnRSZXN1bHRQYXlsb2FkPih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0k0NTkwJyxcbiAgICBkZXNjcmlwdGlvbjogJ1Jlc3VsdHMgb2YgYSBzdGFjayBkcmlmdCcsXG4gICAgaW50ZXJmYWNlOiAnRHJpZnRSZXN1bHRQYXlsb2FkJyxcbiAgfSksXG4gIENES19UT09MS0lUX1c0NTkxOiBtYWtlLndhcm48U2luZ2xlU3RhY2s+KHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfVzQ1OTEnLFxuICAgIGRlc2NyaXB0aW9uOiAnTWlzc2luZyBkcmlmdCByZXN1bHQgZm9ydCBhIHN0YWNrLicsXG4gICAgaW50ZXJmYWNlOiAnU2luZ2xlU3RhY2snLFxuICB9KSxcblxuICAvLyA1OiBEZXBsb3kgJiBXYXRjaCAoNXh4eClcbiAgQ0RLX1RPT0xLSVRfSTUwMDA6IG1ha2UuaW5mbzxEdXJhdGlvbj4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9JNTAwMCcsXG4gICAgZGVzY3JpcHRpb246ICdQcm92aWRlcyBkZXBsb3ltZW50IHRpbWVzJyxcbiAgICBpbnRlcmZhY2U6ICdEdXJhdGlvbicsXG4gIH0pLFxuICBDREtfVE9PTEtJVF9JNTAwMTogbWFrZS5pbmZvPER1cmF0aW9uPih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0k1MDAxJyxcbiAgICBkZXNjcmlwdGlvbjogJ1Byb3ZpZGVzIHRvdGFsIHRpbWUgaW4gZGVwbG95IGFjdGlvbiwgaW5jbHVkaW5nIHN5bnRoIGFuZCByb2xsYmFjaycsXG4gICAgaW50ZXJmYWNlOiAnRHVyYXRpb24nLFxuICB9KSxcbiAgQ0RLX1RPT0xLSVRfSTUwMDI6IG1ha2UuaW5mbzxEdXJhdGlvbj4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9JNTAwMicsXG4gICAgZGVzY3JpcHRpb246ICdQcm92aWRlcyB0aW1lIGZvciByZXNvdXJjZSBtaWdyYXRpb24nLFxuICAgIGludGVyZmFjZTogJ0R1cmF0aW9uJyxcbiAgfSksXG4gIENES19UT09MS0lUX1c1MDIxOiBtYWtlLndhcm4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9XNTAyMScsXG4gICAgZGVzY3JpcHRpb246ICdFbXB0eSBub24tZXhpc3RlbnQgc3RhY2ssIGRlcGxveW1lbnQgaXMgc2tpcHBlZCcsXG4gIH0pLFxuICBDREtfVE9PTEtJVF9XNTAyMjogbWFrZS53YXJuKHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfVzUwMjInLFxuICAgIGRlc2NyaXB0aW9uOiAnRW1wdHkgZXhpc3Rpbmcgc3RhY2ssIHN0YWNrIHdpbGwgYmUgZGVzdHJveWVkJyxcbiAgfSksXG4gIENES19UT09MS0lUX0k1MDMxOiBtYWtlLmluZm8oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9JNTAzMScsXG4gICAgZGVzY3JpcHRpb246ICdJbmZvcm1zIGFib3V0IGFueSBsb2cgZ3JvdXBzIHRoYXQgYXJlIHRyYWNlZCBhcyBwYXJ0IG9mIHRoZSBkZXBsb3ltZW50JyxcbiAgfSksXG4gIENES19UT09MS0lUX0k1MDMyOiBtYWtlLmRlYnVnPENsb3VkV2F0Y2hMb2dNb25pdG9yQ29udHJvbEV2ZW50Pih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0k1MDMyJyxcbiAgICBkZXNjcmlwdGlvbjogJ1N0YXJ0IG1vbml0b3JpbmcgbG9nIGdyb3VwcycsXG4gICAgaW50ZXJmYWNlOiAnQ2xvdWRXYXRjaExvZ01vbml0b3JDb250cm9sRXZlbnQnLFxuICB9KSxcbiAgQ0RLX1RPT0xLSVRfSTUwMzM6IG1ha2UuaW5mbzxDbG91ZFdhdGNoTG9nRXZlbnQ+KHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfSTUwMzMnLFxuICAgIGRlc2NyaXB0aW9uOiAnQSBsb2cgZXZlbnQgcmVjZWl2ZWQgZnJvbSBDbG91ZCBXYXRjaCcsXG4gICAgaW50ZXJmYWNlOiAnQ2xvdWRXYXRjaExvZ0V2ZW50JyxcbiAgfSksXG4gIENES19UT09MS0lUX0k1MDM0OiBtYWtlLmRlYnVnPENsb3VkV2F0Y2hMb2dNb25pdG9yQ29udHJvbEV2ZW50Pih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0k1MDM0JyxcbiAgICBkZXNjcmlwdGlvbjogJ1N0b3AgbW9uaXRvcmluZyBsb2cgZ3JvdXBzJyxcbiAgICBpbnRlcmZhY2U6ICdDbG91ZFdhdGNoTG9nTW9uaXRvckNvbnRyb2xFdmVudCcsXG4gIH0pLFxuICBDREtfVE9PTEtJVF9FNTAzNTogbWFrZS5lcnJvcjxFcnJvclBheWxvYWQ+KHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfRTUwMzUnLFxuICAgIGRlc2NyaXB0aW9uOiAnQSBsb2cgbW9uaXRvcmluZyBlcnJvcicsXG4gICAgaW50ZXJmYWNlOiAnRXJyb3JQYXlsb2FkJyxcbiAgfSksXG4gIENES19UT09MS0lUX0k1MDUwOiBtYWtlLmNvbmZpcm08Q29uZmlybWF0aW9uUmVxdWVzdD4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9JNTA1MCcsXG4gICAgZGVzY3JpcHRpb246ICdDb25maXJtIHJvbGxiYWNrIGR1cmluZyBkZXBsb3ltZW50JyxcbiAgICBpbnRlcmZhY2U6ICdDb25maXJtYXRpb25SZXF1ZXN0JyxcbiAgfSksXG4gIENES19UT09MS0lUX0k1MDYwOiBtYWtlLmNvbmZpcm08RGVwbG95Q29uZmlybWF0aW9uUmVxdWVzdD4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9JNTA2MCcsXG4gICAgZGVzY3JpcHRpb246ICdDb25maXJtIGRlcGxveSBzZWN1cml0eSBzZW5zaXRpdmUgY2hhbmdlcycsXG4gICAgaW50ZXJmYWNlOiAnRGVwbG95Q29uZmlybWF0aW9uUmVxdWVzdCcsXG4gIH0pLFxuICBDREtfVE9PTEtJVF9JNTEwMDogbWFrZS5pbmZvPFN0YWNrRGVwbG95UHJvZ3Jlc3M+KHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfSTUxMDAnLFxuICAgIGRlc2NyaXB0aW9uOiAnU3RhY2sgZGVwbG95IHByb2dyZXNzJyxcbiAgICBpbnRlcmZhY2U6ICdTdGFja0RlcGxveVByb2dyZXNzJyxcbiAgfSksXG5cbiAgLy8gQXNzZXRzICg1Mnh4KVxuICBDREtfVE9PTEtJVF9JNTIxMDogbWFrZS50cmFjZTxCdWlsZEFzc2V0Pih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0k1MjEwJyxcbiAgICBkZXNjcmlwdGlvbjogJ1N0YXJ0ZWQgYnVpbGRpbmcgYSBzcGVjaWZpYyBhc3NldCcsXG4gICAgaW50ZXJmYWNlOiAnQnVpbGRBc3NldCcsXG4gIH0pLFxuICBDREtfVE9PTEtJVF9JNTIxMTogbWFrZS50cmFjZTxEdXJhdGlvbj4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9JNTIxMScsXG4gICAgZGVzY3JpcHRpb246ICdCdWlsZGluZyB0aGUgYXNzZXQgaGFzIGNvbXBsZXRlZCcsXG4gICAgaW50ZXJmYWNlOiAnRHVyYXRpb24nLFxuICB9KSxcbiAgQ0RLX1RPT0xLSVRfSTUyMjA6IG1ha2UudHJhY2U8UHVibGlzaEFzc2V0Pih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0k1MjIwJyxcbiAgICBkZXNjcmlwdGlvbjogJ1N0YXJ0ZWQgcHVibGlzaGluZyBhIHNwZWNpZmljIGFzc2V0JyxcbiAgICBpbnRlcmZhY2U6ICdQdWJsaXNoQXNzZXQnLFxuICB9KSxcbiAgQ0RLX1RPT0xLSVRfSTUyMjE6IG1ha2UudHJhY2U8RHVyYXRpb24+KHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfSTUyMjEnLFxuICAgIGRlc2NyaXB0aW9uOiAnUHVibGlzaGluZyB0aGUgYXNzZXQgaGFzIGNvbXBsZXRlZCcsXG4gICAgaW50ZXJmYWNlOiAnRHVyYXRpb24nLFxuICB9KSxcblxuICBDREtfQVNTRVRTX0k1MjcwOiBtYWtlLmluZm88UHVibGlzaEFzc2V0RXZlbnQ+KHtcbiAgICBjb2RlOiAnQ0RLX0FTU0VUU19JNTI3MCcsXG4gICAgZGVzY3JpcHRpb246ICdQdWJsaXNoaW5nIHRoZSBhc3NldCBoYXMgc3RhcnRlZCcsXG4gICAgaW50ZXJmYWNlOiAnUHVibGlzaEFzc2V0RXZlbnQnLFxuICB9KSxcbiAgQ0RLX0FTU0VUU19JNTI3MTogbWFrZS5kZWJ1ZzxQdWJsaXNoQXNzZXRFdmVudD4oe1xuICAgIGNvZGU6ICdDREtfQVNTRVRTX0k1MjcxJyxcbiAgICBkZXNjcmlwdGlvbjogJ0RlYnVnIG1lc3NhZ2VkIGVtaXR0ZWQgZHVyaW5nIHB1Ymxpc2hpbmcgb2YgdGhlIGFzc2V0JyxcbiAgICBpbnRlcmZhY2U6ICdQdWJsaXNoQXNzZXRFdmVudCcsXG4gIH0pLFxuICBDREtfQVNTRVRTX0k1Mjc1OiBtYWtlLmluZm88UHVibGlzaEFzc2V0RXZlbnQ+KHtcbiAgICBjb2RlOiAnQ0RLX0FTU0VUU19JNTI3NScsXG4gICAgZGVzY3JpcHRpb246ICdQdWJsaXNoaW5nIHRoZSBhc3NldCBoYXMgY29tcGxldGVkIHN1Y2Nlc3NmdWxseScsXG4gICAgaW50ZXJmYWNlOiAnUHVibGlzaEFzc2V0RXZlbnQnLFxuICB9KSxcbiAgQ0RLX0FTU0VUU19FNTI3OTogbWFrZS5lcnJvcjxQdWJsaXNoQXNzZXRFdmVudD4oe1xuICAgIGNvZGU6ICdDREtfQVNTRVRTX0U1Mjc5JyxcbiAgICBkZXNjcmlwdGlvbjogJ1RoZXJlIHdhcyBhbiBlcnJvciB3aGlsZSBwdWJsaXNoaW5nIHRoZSBhc3NldCcsXG4gICAgaW50ZXJmYWNlOiAnUHVibGlzaEFzc2V0RXZlbnQnLFxuICB9KSxcblxuICAvLyBXYXRjaCAoNTN4eClcbiAgQ0RLX1RPT0xLSVRfSTUzMTA6IG1ha2UuZGVidWc8V2F0Y2hTZXR0aW5ncz4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9JNTMxMCcsXG4gICAgZGVzY3JpcHRpb246ICdUaGUgY29tcHV0ZWQgc2V0dGluZ3MgdXNlZCBmb3IgZmlsZSB3YXRjaGluZycsXG4gICAgaW50ZXJmYWNlOiAnV2F0Y2hTZXR0aW5ncycsXG4gIH0pLFxuICBDREtfVE9PTEtJVF9JNTMxMTogbWFrZS5pbmZvPEZpbGVXYXRjaEV2ZW50Pih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0k1MzExJyxcbiAgICBkZXNjcmlwdGlvbjogJ0ZpbGUgd2F0Y2hpbmcgc3RhcnRlZCcsXG4gICAgaW50ZXJmYWNlOiAnRmlsZVdhdGNoRXZlbnQnLFxuICB9KSxcbiAgQ0RLX1RPT0xLSVRfSTUzMTI6IG1ha2UuaW5mbzxGaWxlV2F0Y2hFdmVudD4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9JNTMxMicsXG4gICAgZGVzY3JpcHRpb246ICdGaWxlIGV2ZW50IGRldGVjdGVkLCBzdGFydGluZyBkZXBsb3ltZW50JyxcbiAgICBpbnRlcmZhY2U6ICdGaWxlV2F0Y2hFdmVudCcsXG4gIH0pLFxuICBDREtfVE9PTEtJVF9JNTMxMzogbWFrZS5pbmZvPEZpbGVXYXRjaEV2ZW50Pih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0k1MzEzJyxcbiAgICBkZXNjcmlwdGlvbjogJ0ZpbGUgZXZlbnQgZGV0ZWN0ZWQgZHVyaW5nIGFjdGl2ZSBkZXBsb3ltZW50LCBjaGFuZ2VzIGFyZSBxdWV1ZWQnLFxuICAgIGludGVyZmFjZTogJ0ZpbGVXYXRjaEV2ZW50JyxcbiAgfSksXG4gIENES19UT09MS0lUX0k1MzE0OiBtYWtlLmluZm8oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9JNTMxNCcsXG4gICAgZGVzY3JpcHRpb246ICdJbml0aWFsIHdhdGNoIGRlcGxveW1lbnQgc3RhcnRlZCcsXG4gIH0pLFxuICBDREtfVE9PTEtJVF9JNTMxNTogbWFrZS5pbmZvKHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfSTUzMTUnLFxuICAgIGRlc2NyaXB0aW9uOiAnUXVldWVkIHdhdGNoIGRlcGxveW1lbnQgc3RhcnRlZCcsXG4gIH0pLFxuXG4gIC8vIEhvdHN3YXAgKDU0eHgpXG4gIENES19UT09MS0lUX0k1NDAwOiBtYWtlLnRyYWNlPEhvdHN3YXBEZXBsb3ltZW50QXR0ZW1wdD4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9JNTQwMCcsXG4gICAgZGVzY3JpcHRpb246ICdBdHRlbXB0aW5nIGEgaG90c3dhcCBkZXBsb3ltZW50JyxcbiAgICBpbnRlcmZhY2U6ICdIb3Rzd2FwRGVwbG95bWVudEF0dGVtcHQnLFxuICB9KSxcbiAgQ0RLX1RPT0xLSVRfSTU0MDE6IG1ha2UudHJhY2U8SG90c3dhcERlcGxveW1lbnREZXRhaWxzPih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0k1NDAxJyxcbiAgICBkZXNjcmlwdGlvbjogJ0NvbXB1dGVkIGRldGFpbHMgZm9yIHRoZSBob3Rzd2FwIGRlcGxveW1lbnQnLFxuICAgIGludGVyZmFjZTogJ0hvdHN3YXBEZXBsb3ltZW50RGV0YWlscycsXG4gIH0pLFxuICBDREtfVE9PTEtJVF9JNTQwMjogbWFrZS5pbmZvPEhvdHN3YXBwYWJsZUNoYW5nZT4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9JNTQwMicsXG4gICAgZGVzY3JpcHRpb246ICdBIGhvdHN3YXBwYWJsZSBjaGFuZ2UgaXMgcHJvY2Vzc2VkIGFzIHBhcnQgb2YgYSBob3Rzd2FwIGRlcGxveW1lbnQnLFxuICAgIGludGVyZmFjZTogJ0hvdHN3YXBwYWJsZUNoYW5nZScsXG4gIH0pLFxuICBDREtfVE9PTEtJVF9JNTQwMzogbWFrZS5pbmZvPEhvdHN3YXBwYWJsZUNoYW5nZT4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9JNTQwMycsXG4gICAgZGVzY3JpcHRpb246ICdUaGUgaG90c3dhcHBhYmxlIGNoYW5nZSBoYXMgY29tcGxldGVkIHByb2Nlc3NpbmcnLFxuICAgIGludGVyZmFjZTogJ0hvdHN3YXBwYWJsZUNoYW5nZScsXG4gIH0pLFxuICBDREtfVE9PTEtJVF9JNTQxMDogbWFrZS5pbmZvPEhvdHN3YXBSZXN1bHQ+KHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfSTU0MTAnLFxuICAgIGRlc2NyaXB0aW9uOiAnSG90c3dhcCBkZXBsb3ltZW50IGhhcyBlbmRlZCwgYSBmdWxsIGRlcGxveW1lbnQgbWlnaHQgc3RpbGwgZm9sbG93IGlmIG5lZWRlZCcsXG4gICAgaW50ZXJmYWNlOiAnSG90c3dhcFJlc3VsdCcsXG4gIH0pLFxuXG4gIC8vIFN0YWNrIE1vbml0b3IgKDU1eHgpXG4gIENES19UT09MS0lUX0k1NTAxOiBtYWtlLmluZm88U3RhY2tNb25pdG9yaW5nQ29udHJvbEV2ZW50Pih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0k1NTAxJyxcbiAgICBkZXNjcmlwdGlvbjogJ1N0YWNrIE1vbml0b3Jpbmc6IFN0YXJ0IG1vbml0b3Jpbmcgb2YgYSBzaW5nbGUgc3RhY2snLFxuICAgIGludGVyZmFjZTogJ1N0YWNrTW9uaXRvcmluZ0NvbnRyb2xFdmVudCcsXG4gIH0pLFxuICBDREtfVE9PTEtJVF9JNTUwMjogbWFrZS5pbmZvPFN0YWNrQWN0aXZpdHk+KHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfSTU1MDInLFxuICAgIGRlc2NyaXB0aW9uOiAnU3RhY2sgTW9uaXRvcmluZzogQWN0aXZpdHkgZXZlbnQgZm9yIGEgc2luZ2xlIHN0YWNrJyxcbiAgICBpbnRlcmZhY2U6ICdTdGFja0FjdGl2aXR5JyxcbiAgfSksXG4gIENES19UT09MS0lUX0k1NTAzOiBtYWtlLmluZm88U3RhY2tNb25pdG9yaW5nQ29udHJvbEV2ZW50Pih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0k1NTAzJyxcbiAgICBkZXNjcmlwdGlvbjogJ1N0YWNrIE1vbml0b3Jpbmc6IEZpbmlzaGVkIG1vbml0b3Jpbmcgb2YgYSBzaW5nbGUgc3RhY2snLFxuICAgIGludGVyZmFjZTogJ1N0YWNrTW9uaXRvcmluZ0NvbnRyb2xFdmVudCcsXG4gIH0pLFxuXG4gIC8vIFN1Y2Nlc3MgKDU5eHgpXG4gIENES19UT09MS0lUX0k1OTAwOiBtYWtlLnJlc3VsdDxTdWNjZXNzZnVsRGVwbG95U3RhY2tSZXN1bHQ+KHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfSTU5MDAnLFxuICAgIGRlc2NyaXB0aW9uOiAnRGVwbG95bWVudCByZXN1bHRzIG9uIHN1Y2Nlc3MnLFxuICAgIGludGVyZmFjZTogJ1N1Y2Nlc3NmdWxEZXBsb3lTdGFja1Jlc3VsdCcsXG4gIH0pLFxuICBDREtfVE9PTEtJVF9JNTkwMTogbWFrZS5pbmZvKHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfSTU5MDEnLFxuICAgIGRlc2NyaXB0aW9uOiAnR2VuZXJpYyBkZXBsb3ltZW50IHN1Y2Nlc3MgbWVzc2FnZXMnLFxuICB9KSxcbiAgQ0RLX1RPT0xLSVRfVzU0MDA6IG1ha2Uud2Fybih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX1c1NDAwJyxcbiAgICBkZXNjcmlwdGlvbjogJ0hvdHN3YXAgZGlzY2xvc3VyZSBtZXNzYWdlJyxcbiAgfSksXG5cbiAgQ0RLX1RPT0xLSVRfRTUwMDE6IG1ha2UuZXJyb3Ioe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9FNTAwMScsXG4gICAgZGVzY3JpcHRpb246ICdObyBzdGFja3MgZm91bmQnLFxuICB9KSxcbiAgQ0RLX1RPT0xLSVRfRTU1MDA6IG1ha2UuZXJyb3I8RXJyb3JQYXlsb2FkPih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0U1NTAwJyxcbiAgICBkZXNjcmlwdGlvbjogJ1N0YWNrIE1vbml0b3JpbmcgZXJyb3InLFxuICAgIGludGVyZmFjZTogJ0Vycm9yUGF5bG9hZCcsXG4gIH0pLFxuXG4gIC8vIDY6IFJvbGxiYWNrICg2eHh4KVxuICBDREtfVE9PTEtJVF9JNjAwMDogbWFrZS5pbmZvPER1cmF0aW9uPih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0k2MDAwJyxcbiAgICBkZXNjcmlwdGlvbjogJ1Byb3ZpZGVzIHJvbGxiYWNrIHRpbWVzJyxcbiAgICBpbnRlcmZhY2U6ICdEdXJhdGlvbicsXG4gIH0pLFxuICBDREtfVE9PTEtJVF9JNjEwMDogbWFrZS5pbmZvPFN0YWNrUm9sbGJhY2tQcm9ncmVzcz4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9JNjEwMCcsXG4gICAgZGVzY3JpcHRpb246ICdTdGFjayByb2xsYmFjayBwcm9ncmVzcycsXG4gICAgaW50ZXJmYWNlOiAnU3RhY2tSb2xsYmFja1Byb2dyZXNzJyxcbiAgfSksXG5cbiAgQ0RLX1RPT0xLSVRfRTYwMDE6IG1ha2UuZXJyb3Ioe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9FNjAwMScsXG4gICAgZGVzY3JpcHRpb246ICdObyBzdGFja3MgZm91bmQnLFxuICB9KSxcbiAgQ0RLX1RPT0xLSVRfRTY5MDA6IG1ha2UuZXJyb3I8RXJyb3JQYXlsb2FkPih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0U2OTAwJyxcbiAgICBkZXNjcmlwdGlvbjogJ1JvbGxiYWNrIGZhaWxlZCcsXG4gICAgaW50ZXJmYWNlOiAnRXJyb3JQYXlsb2FkJyxcbiAgfSksXG5cbiAgLy8gNzogRGVzdHJveSAoN3h4eClcbiAgQ0RLX1RPT0xLSVRfSTcwMDA6IG1ha2UuaW5mbzxEdXJhdGlvbj4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9JNzAwMCcsXG4gICAgZGVzY3JpcHRpb246ICdQcm92aWRlcyBkZXN0cm95IHRpbWVzJyxcbiAgICBpbnRlcmZhY2U6ICdEdXJhdGlvbicsXG4gIH0pLFxuICBDREtfVE9PTEtJVF9JNzAwMTogbWFrZS50cmFjZTxEdXJhdGlvbj4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9JNzAwMScsXG4gICAgZGVzY3JpcHRpb246ICdQcm92aWRlcyBkZXN0cm95IHRpbWUgZm9yIGEgc2luZ2xlIHN0YWNrJyxcbiAgICBpbnRlcmZhY2U6ICdEdXJhdGlvbicsXG4gIH0pLFxuICBDREtfVE9PTEtJVF9JNzAxMDogbWFrZS5jb25maXJtPENvbmZpcm1hdGlvblJlcXVlc3Q+KHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfSTcwMTAnLFxuICAgIGRlc2NyaXB0aW9uOiAnQ29uZmlybSBkZXN0cm95IHN0YWNrcycsXG4gICAgaW50ZXJmYWNlOiAnQ29uZmlybWF0aW9uUmVxdWVzdCcsXG4gIH0pLFxuICBDREtfVE9PTEtJVF9JNzEwMDogbWFrZS5pbmZvPFN0YWNrRGVzdHJveVByb2dyZXNzPih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0k3MTAwJyxcbiAgICBkZXNjcmlwdGlvbjogJ1N0YWNrIGRlc3Ryb3kgcHJvZ3Jlc3MnLFxuICAgIGludGVyZmFjZTogJ1N0YWNrRGVzdHJveVByb2dyZXNzJyxcbiAgfSksXG4gIENES19UT09MS0lUX0k3MTAxOiBtYWtlLnRyYWNlPFN0YWNrRGVzdHJveT4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9JNzEwMScsXG4gICAgZGVzY3JpcHRpb246ICdTdGFydCBzdGFjayBkZXN0cm95aW5nJyxcbiAgICBpbnRlcmZhY2U6ICdTdGFja0Rlc3Ryb3knLFxuICB9KSxcblxuICBDREtfVE9PTEtJVF9JNzkwMDogbWFrZS5yZXN1bHQ8Y3hhcGkuQ2xvdWRGb3JtYXRpb25TdGFja0FydGlmYWN0Pih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0k3OTAwJyxcbiAgICBkZXNjcmlwdGlvbjogJ1N0YWNrIGRlbGV0aW9uIHN1Y2NlZWRlZCcsXG4gICAgaW50ZXJmYWNlOiAnY3hhcGkuQ2xvdWRGb3JtYXRpb25TdGFja0FydGlmYWN0JyxcbiAgfSksXG5cbiAgQ0RLX1RPT0xLSVRfRTcwMTA6IG1ha2UuZXJyb3Ioe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9FNzAxMCcsXG4gICAgZGVzY3JpcHRpb246ICdBY3Rpb24gd2FzIGFib3J0ZWQgZHVlIHRvIG5lZ2F0aXZlIGNvbmZpcm1hdGlvbiBvZiByZXF1ZXN0JyxcbiAgfSksXG4gIENES19UT09MS0lUX0U3OTAwOiBtYWtlLmVycm9yPEVycm9yUGF5bG9hZD4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9FNzkwMCcsXG4gICAgZGVzY3JpcHRpb246ICdTdGFjayBkZWxldGlvbiBmYWlsZWQnLFxuICAgIGludGVyZmFjZTogJ0Vycm9yUGF5bG9hZCcsXG4gIH0pLFxuXG4gIC8vIDguIFJlZmFjdG9yICg4eHh4KVxuICBDREtfVE9PTEtJVF9FODkwMDogbWFrZS5lcnJvcjxFcnJvclBheWxvYWQ+KHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfRTg5MDAnLFxuICAgIGRlc2NyaXB0aW9uOiAnU3RhY2sgcmVmYWN0b3IgZmFpbGVkJyxcbiAgICBpbnRlcmZhY2U6ICdFcnJvclBheWxvYWQnLFxuICB9KSxcblxuICBDREtfVE9PTEtJVF9JODkwMDogbWFrZS5yZXN1bHQ8UmVmYWN0b3JSZXN1bHQ+KHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfSTg5MDAnLFxuICAgIGRlc2NyaXB0aW9uOiAnUmVmYWN0b3IgcmVzdWx0JyxcbiAgICBpbnRlcmZhY2U6ICdSZWZhY3RvclJlc3VsdCcsXG4gIH0pLFxuXG4gIENES19UT09MS0lUX0k4OTEwOiBtYWtlLmNvbmZpcm08Q29uZmlybWF0aW9uUmVxdWVzdD4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9JODkxMCcsXG4gICAgZGVzY3JpcHRpb246ICdDb25maXJtIHJlZmFjdG9yJyxcbiAgICBpbnRlcmZhY2U6ICdDb25maXJtYXRpb25SZXF1ZXN0JyxcbiAgfSksXG5cbiAgQ0RLX1RPT0xLSVRfVzgwMTA6IG1ha2Uud2Fybih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX1c4MDEwJyxcbiAgICBkZXNjcmlwdGlvbjogJ1JlZmFjdG9yIGV4ZWN1dGlvbiBub3QgeWV0IHN1cHBvcnRlZCcsXG4gIH0pLFxuXG4gIC8vIE9ycGhhbiAoODh4eClcbiAgQ0RLX1RPT0xLSVRfSTg4MTA6IG1ha2UuY29uZmlybTxDb25maXJtYXRpb25SZXF1ZXN0Pih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0k4ODEwJyxcbiAgICBkZXNjcmlwdGlvbjogJ0NvbmZpcm0gb3JwaGFuIHJlc291cmNlcycsXG4gICAgaW50ZXJmYWNlOiAnQ29uZmlybWF0aW9uUmVxdWVzdCcsXG4gIH0pLFxuXG4gIC8vIDk6IEJvb3RzdHJhcCwgZ2MsIGZsYWdzICYgcHVibGlzaCAoOXh4eClcbiAgQ0RLX1RPT0xLSVRfSTkwMDA6IG1ha2UuaW5mbzxEdXJhdGlvbj4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9JOTAwMCcsXG4gICAgZGVzY3JpcHRpb246ICdQcm92aWRlcyBib290c3RyYXAgdGltZXMnLFxuICAgIGludGVyZmFjZTogJ0R1cmF0aW9uJyxcbiAgfSksXG4gIENES19UT09MS0lUX0k5MTAwOiBtYWtlLmluZm88Qm9vdHN0cmFwRW52aXJvbm1lbnRQcm9ncmVzcz4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9JOTEwMCcsXG4gICAgZGVzY3JpcHRpb246ICdCb290c3RyYXAgcHJvZ3Jlc3MnLFxuICAgIGludGVyZmFjZTogJ0Jvb3RzdHJhcEVudmlyb25tZW50UHJvZ3Jlc3MnLFxuICB9KSxcblxuICAvLyBnYyAoOTJ4eClcbiAgQ0RLX1RPT0xLSVRfSTkyMTA6IG1ha2UucXVlc3Rpb248QXNzZXRCYXRjaERlbGV0aW9uUmVxdWVzdD4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9JOTIxMCcsXG4gICAgZGVzY3JpcHRpb246ICdDb25maXJtIHRoZSBkZWxldGlvbiBvZiBhIGJhdGNoIG9mIGFzc2V0cycsXG4gICAgaW50ZXJmYWNlOiAnQXNzZXRCYXRjaERlbGV0aW9uUmVxdWVzdCcsXG4gIH0pLFxuXG4gIENES19UT09MS0lUX0k5OTAwOiBtYWtlLnJlc3VsdDx7IGVudmlyb25tZW50OiBjeGFwaS5FbnZpcm9ubWVudCB9Pih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0k5OTAwJyxcbiAgICBkZXNjcmlwdGlvbjogJ0Jvb3RzdHJhcCByZXN1bHRzIG9uIHN1Y2Nlc3MnLFxuICAgIGludGVyZmFjZTogJ2N4YXBpLkVudmlyb25tZW50JyxcbiAgfSksXG4gIENES19UT09MS0lUX0U5OTAwOiBtYWtlLmVycm9yPEVycm9yUGF5bG9hZD4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9FOTkwMCcsXG4gICAgZGVzY3JpcHRpb246ICdCb290c3RyYXAgZmFpbGVkJyxcbiAgICBpbnRlcmZhY2U6ICdFcnJvclBheWxvYWQnLFxuICB9KSxcblxuICAvLyBmbGFncyAoOTN4eClcbiAgQ0RLX1RPT0xLSVRfSTkzMDA6IG1ha2UuaW5mbzxGZWF0dXJlRmxhZ0NoYW5nZVJlcXVlc3Q+KHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfSTkzMDAnLFxuICAgIGRlc2NyaXB0aW9uOiAnQ29uZmlybSB0aGUgZmVhdHVyZSBmbGFnIGNvbmZpZ3VyYXRpb24gY2hhbmdlcycsXG4gICAgaW50ZXJmYWNlOiAnRmVhdHVyZUZsYWdDaGFuZ2VSZXF1ZXN0JyxcbiAgfSksXG5cbiAgLy8gcHVibGlzaCAoOTR4eClcbiAgQ0RLX1RPT0xLSVRfSTk0MDA6IG1ha2UuaW5mbyh7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0k5NDAwJyxcbiAgICBkZXNjcmlwdGlvbjogJ0FsbCBhc3NldHMgYXJlIGFscmVhZHkgcHVibGlzaGVkJyxcbiAgfSksXG4gIENES19UT09MS0lUX0k5NDAxOiBtYWtlLmluZm88QXNzZXRzUGF5bG9hZD4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9JOTQwMScsXG4gICAgZGVzY3JpcHRpb246ICdQdWJsaXNoaW5nIGFzc2V0cycsXG4gICAgaW50ZXJmYWNlOiAnQXNzZXRzUGF5bG9hZCcsXG4gIH0pLFxuICBDREtfVE9PTEtJVF9JOTQwMjogbWFrZS5yZXN1bHQ8QXNzZXRzUGF5bG9hZD4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9JOTQwMicsXG4gICAgZGVzY3JpcHRpb246ICdQdWJsaXNoIGFzc2V0cyByZXN1bHRzIG9uIHN1Y2Nlc3MnLFxuICAgIGludGVyZmFjZTogJ0Fzc2V0c1BheWxvYWQnLFxuICB9KSxcblxuICAvLyBkaWFnbm9zZSAoOTV4eClcbiAgQ0RLX1RPT0xLSVRfSTk1MDA6IG1ha2UuaW5mbzxEaWFnbm9zZWRTdGFjaz4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9JOTUwMCcsXG4gICAgZGVzY3JpcHRpb246ICdTdGFjayBkaWFnbm9zaXMgKG5vIHByb2JsZW1zIGZvdW5kKScsXG4gICAgaW50ZXJmYWNlOiAnRGlhZ25vc2VkU3RhY2snLFxuICB9KSxcblxuICBDREtfVE9PTEtJVF9FOTUwMDogbWFrZS5lcnJvcjxEaWFnbm9zZWRTdGFjaz4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9FOTUwMCcsXG4gICAgZGVzY3JpcHRpb246ICdTdGFjayBkaWFnbm9zaXMgKHByb2JsZW1zIGZvdW5kKScsXG4gICAgaW50ZXJmYWNlOiAnRGlhZ25vc2VkU3RhY2snLFxuICB9KSxcblxuICBDREtfVE9PTEtJVF9XOTUwMTogbWFrZS53YXJuPERpYWdub3NlZFN0YWNrPih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX1c5NTAxJyxcbiAgICBkZXNjcmlwdGlvbjogJ1N0YWNrIGRpYWdub3NpcyAoZGlhZ25vc2lzIGNvdWxkIG5vdCBiZSBwZXJmb3JtZWQpJyxcbiAgICBpbnRlcmZhY2U6ICdEaWFnbm9zZWRTdGFjaycsXG4gIH0pLFxuXG4gIC8vIHZhbGlkYXRlICg5Nnh4KVxuICBDREtfVE9PTEtJVF9JOTYwMDogbWFrZS5pbmZvPFZhbGlkYXRlUmVzdWx0Pih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0k5NjAwJyxcbiAgICBkZXNjcmlwdGlvbjogJ1ZhbGlkYXRlIHBhc3NlZCB3aXRoIG5vIHByb2JsZW1zJyxcbiAgICBpbnRlcmZhY2U6ICdWYWxpZGF0ZVJlc3VsdCcsXG4gIH0pLFxuXG4gIENES19UT09MS0lUX0U5NjAwOiBtYWtlLmVycm9yPFZhbGlkYXRlUmVzdWx0Pih7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0U5NjAwJyxcbiAgICBkZXNjcmlwdGlvbjogJ1ZhbGlkYXRlIGZvdW5kIHByb2JsZW1zJyxcbiAgICBpbnRlcmZhY2U6ICdWYWxpZGF0ZVJlc3VsdCcsXG4gIH0pLFxuXG4gIENES19UT09MS0lUX0k5NjAxOiBtYWtlLmluZm8oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9JOTYwMScsXG4gICAgZGVzY3JpcHRpb246ICdObyB2YWxpZGF0aW9uIHBsdWdpbnMgY29uZmlndXJlZCcsXG4gIH0pLFxuXG4gIC8vIE5vdGljZXNcbiAgQ0RLX1RPT0xLSVRfSTAxMDA6IG1ha2UuaW5mbyh7XG4gICAgY29kZTogJ0NES19UT09MS0lUX0kwMTAwJyxcbiAgICBkZXNjcmlwdGlvbjogJ05vdGljZXMgZGVjb3JhdGlvbiAodGhlIGhlYWRlciBvciBmb290ZXIgb2YgYSBsaXN0IG9mIG5vdGljZXMpJyxcbiAgfSksXG4gIENES19UT09MS0lUX1cwMTAxOiBtYWtlLndhcm4oe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9XMDEwMScsXG4gICAgZGVzY3JpcHRpb246ICdBIG5vdGljZSB0aGF0IGlzIG1hcmtlZCBhcyBhIHdhcm5pbmcnLFxuICB9KSxcbiAgQ0RLX1RPT0xLSVRfRTAxMDE6IG1ha2UuZXJyb3Ioe1xuICAgIGNvZGU6ICdDREtfVE9PTEtJVF9FMDEwMScsXG4gICAgZGVzY3JpcHRpb246ICdBIG5vdGljZSB0aGF0IGlzIG1hcmtlZCBhcyBhbiBlcnJvcicsXG4gIH0pLFxuICBDREtfVE9PTEtJVF9JMDEwMTogbWFrZS5pbmZvKHtcbiAgICBjb2RlOiAnQ0RLX1RPT0xLSVRfSTAxMDEnLFxuICAgIGRlc2NyaXB0aW9uOiAnQSBub3RpY2UgdGhhdCBpcyBtYXJrZWQgYXMgaW5mb3JtYXRpb25hbCcsXG4gIH0pLFxuXG4gIC8vIEFzc2VtYmx5IGNvZGVzXG4gIENES19BU1NFTUJMWV9JMDAxMDogbWFrZS5kZWJ1Zyh7XG4gICAgY29kZTogJ0NES19BU1NFTUJMWV9JMDAxMCcsXG4gICAgZGVzY3JpcHRpb246ICdHZW5lcmljIGVudmlyb25tZW50IHByZXBhcmF0aW9uIGRlYnVnIG1lc3NhZ2VzJyxcbiAgfSksXG4gIENES19BU1NFTUJMWV9XMDAxMDogbWFrZS53YXJuKHtcbiAgICBjb2RlOiAnQ0RLX0FTU0VNQkxZX1cwMDEwJyxcbiAgICBkZXNjcmlwdGlvbjogJ0VtaXR0ZWQgaWYgdGhlIGZvdW5kIGZyYW1ld29yayB2ZXJzaW9uIGRvZXMgbm90IHN1cHBvcnQgY29udGV4dCBvdmVyZmxvdycsXG4gIH0pLFxuICBDREtfQVNTRU1CTFlfSTAwNDI6IG1ha2UuZGVidWc8VXBkYXRlZENvbnRleHQ+KHtcbiAgICBjb2RlOiAnQ0RLX0FTU0VNQkxZX0kwMDQyJyxcbiAgICBkZXNjcmlwdGlvbjogJ1dyaXRpbmcgY29udGV4dCB1cGRhdGVzJyxcbiAgICBpbnRlcmZhY2U6ICdVcGRhdGVkQ29udGV4dCcsXG4gIH0pLFxuICBDREtfQVNTRU1CTFlfSTAyNDA6IG1ha2UuZGVidWc8TWlzc2luZ0NvbnRleHQ+KHtcbiAgICBjb2RlOiAnQ0RLX0FTU0VNQkxZX0kwMjQwJyxcbiAgICBkZXNjcmlwdGlvbjogJ0NvbnRleHQgbG9va3VwIHdhcyBzdG9wcGVkIGFzIG5vIGZ1cnRoZXIgcHJvZ3Jlc3Mgd2FzIG1hZGUuICcsXG4gICAgaW50ZXJmYWNlOiAnTWlzc2luZ0NvbnRleHQnLFxuICB9KSxcbiAgQ0RLX0FTU0VNQkxZX0kwMjQxOiBtYWtlLmRlYnVnPE1pc3NpbmdDb250ZXh0Pih7XG4gICAgY29kZTogJ0NES19BU1NFTUJMWV9JMDI0MScsXG4gICAgZGVzY3JpcHRpb246ICdGZXRjaGluZyBtaXNzaW5nIGNvbnRleHQuIFRoaXMgaXMgYW4gaXRlcmF0aXZlIG1lc3NhZ2UgdGhhdCBtYXkgYXBwZWFyIG11bHRpcGxlIHRpbWVzIHdpdGggZGlmZmVyZW50IG1pc3Npbmcga2V5cy4nLFxuICAgIGludGVyZmFjZTogJ01pc3NpbmdDb250ZXh0JyxcbiAgfSksXG4gIENES19BU1NFTUJMWV9JMTAwMDogbWFrZS5kZWJ1Zyh7XG4gICAgY29kZTogJ0NES19BU1NFTUJMWV9JMTAwMCcsXG4gICAgZGVzY3JpcHRpb246ICdDbG91ZCBhc3NlbWJseSBvdXRwdXQgc3RhcnRzJyxcbiAgfSksXG4gIENES19BU1NFTUJMWV9JMTAwMTogbWFrZS5pbmZvKHtcbiAgICBjb2RlOiAnQ0RLX0FTU0VNQkxZX0kxMDAxJyxcbiAgICBkZXNjcmlwdGlvbjogJ091dHB1dCBsaW5lcyBlbWl0dGVkIGJ5IHRoZSBjbG91ZCBhc3NlbWJseSB0byBzdGRvdXQnLFxuICB9KSxcbiAgQ0RLX0FTU0VNQkxZX0UxMDAyOiBtYWtlLmVycm9yKHtcbiAgICBjb2RlOiAnQ0RLX0FTU0VNQkxZX0UxMDAyJyxcbiAgICBkZXNjcmlwdGlvbjogJ091dHB1dCBsaW5lcyBlbWl0dGVkIGJ5IHRoZSBjbG91ZCBhc3NlbWJseSB0byBzdGRlcnInLFxuICB9KSxcbiAgQ0RLX0FTU0VNQkxZX0kxMDAzOiBtYWtlLmluZm8oe1xuICAgIGNvZGU6ICdDREtfQVNTRU1CTFlfSTEwMDMnLFxuICAgIGRlc2NyaXB0aW9uOiAnQ2xvdWQgYXNzZW1ibHkgb3V0cHV0IGZpbmlzaGVkJyxcbiAgfSksXG4gIENES19BU1NFTUJMWV9FMTExMTogbWFrZS5lcnJvcjxFcnJvclBheWxvYWQ+KHtcbiAgICBjb2RlOiAnQ0RLX0FTU0VNQkxZX0UxMTExJyxcbiAgICBkZXNjcmlwdGlvbjogJ0luY29tcGF0aWJsZSBDREsgQ0xJIHZlcnNpb24uIFVwZ3JhZGUgbmVlZGVkLicsXG4gICAgaW50ZXJmYWNlOiAnRXJyb3JQYXlsb2FkJyxcbiAgfSksXG5cbiAgQ0RLX0FTU0VNQkxZX0kwMTUwOiBtYWtlLmRlYnVnPG5ldmVyPih7XG4gICAgY29kZTogJ0NES19BU1NFTUJMWV9JMDE1MCcsXG4gICAgZGVzY3JpcHRpb246ICdJbmRpY2F0ZXMgdGhlIHVzZSBvZiBhIHByZS1zeW50aGVzaXplZCBjbG91ZCBhc3NlbWJseSBkaXJlY3RvcnknLFxuICB9KSxcblxuICBDREtfQVNTRU1CTFlfSTAzMDA6IG1ha2UuaW5mbzxDb250ZXh0UHJvdmlkZXJNZXNzYWdlU291cmNlPih7XG4gICAgY29kZTogJ0NES19BU1NFTUJMWV9JMDMwMCcsXG4gICAgZGVzY3JpcHRpb246ICdBbiBpbmZvIG1lc3NhZ2UgZW1pdHRlZCBieSBhIENvbnRleHQgUHJvdmlkZXInLFxuICAgIGludGVyZmFjZTogJ0NvbnRleHRQcm92aWRlck1lc3NhZ2VTb3VyY2UnLFxuICB9KSxcbiAgQ0RLX0FTU0VNQkxZX0kwMzAxOiBtYWtlLmRlYnVnPENvbnRleHRQcm92aWRlck1lc3NhZ2VTb3VyY2U+KHtcbiAgICBjb2RlOiAnQ0RLX0FTU0VNQkxZX0kwMzAxJyxcbiAgICBkZXNjcmlwdGlvbjogJ0EgZGVidWcgbWVzc2FnZSBlbWl0dGVkIGJ5IGEgQ29udGV4dCBQcm92aWRlcicsXG4gICAgaW50ZXJmYWNlOiAnQ29udGV4dFByb3ZpZGVyTWVzc2FnZVNvdXJjZScsXG4gIH0pLFxuXG4gIC8vIEFzc2VtYmx5IEFubm90YXRpb25zXG4gIENES19BU1NFTUJMWV9JOTk5OTogbWFrZS5pbmZvPGN4YXBpLlN5bnRoZXNpc01lc3NhZ2U+KHtcbiAgICBjb2RlOiAnQ0RLX0FTU0VNQkxZX0k5OTk5JyxcbiAgICBkZXNjcmlwdGlvbjogJ0Fubm90YXRpb25zIGVtaXR0ZWQgYnkgdGhlIGNsb3VkIGFzc2VtYmx5JyxcbiAgICBpbnRlcmZhY2U6ICdjeGFwaS5TeW50aGVzaXNNZXNzYWdlJyxcbiAgfSksXG4gIENES19BU1NFTUJMWV9XOTk5OTogbWFrZS53YXJuPGN4YXBpLlN5bnRoZXNpc01lc3NhZ2U+KHtcbiAgICBjb2RlOiAnQ0RLX0FTU0VNQkxZX1c5OTk5JyxcbiAgICBkZXNjcmlwdGlvbjogJ1dhcm5pbmdzIGVtaXR0ZWQgYnkgdGhlIGNsb3VkIGFzc2VtYmx5JyxcbiAgICBpbnRlcmZhY2U6ICdjeGFwaS5TeW50aGVzaXNNZXNzYWdlJyxcbiAgfSksXG4gIENES19BU1NFTUJMWV9FOTk5OTogbWFrZS5lcnJvcjxjeGFwaS5TeW50aGVzaXNNZXNzYWdlPih7XG4gICAgY29kZTogJ0NES19BU1NFTUJMWV9FOTk5OScsXG4gICAgZGVzY3JpcHRpb246ICdFcnJvcnMgZW1pdHRlZCBieSB0aGUgY2xvdWQgYXNzZW1ibHknLFxuICAgIGludGVyZmFjZTogJ2N4YXBpLlN5bnRoZXNpc01lc3NhZ2UnLFxuICB9KSxcblxuICAvLyBTREsgY29kZXNcbiAgQ0RLX1NES19JMDEwMDogbWFrZS50cmFjZTxTZGtUcmFjZT4oe1xuICAgIGNvZGU6ICdDREtfU0RLX0kwMTAwJyxcbiAgICBkZXNjcmlwdGlvbjogJ0FuIFNESyB0cmFjZS4gU0RLIHRyYWNlcyBhcmUgZW1pdHRlZCBhcyB0cmFjZXMgdG8gdGhlIElvSG9zdCwgYnV0IGNvbnRhaW4gdGhlIG9yaWdpbmFsIFNESyBsb2dnaW5nIGxldmVsLicsXG4gICAgaW50ZXJmYWNlOiAnU2RrVHJhY2UnLFxuICB9KSxcbiAgQ0RLX1NES19JMTEwMDogbWFrZS5xdWVzdGlvbjxNZmFUb2tlblJlcXVlc3Q+KHtcbiAgICBjb2RlOiAnQ0RLX1NES19JMTEwMCcsXG4gICAgZGVzY3JpcHRpb246ICdHZXQgYW4gTUZBIHRva2VuIGZvciBhbiBNRkEgZGV2aWNlLicsXG4gICAgaW50ZXJmYWNlOiAnTWZhVG9rZW5SZXF1ZXN0JyxcbiAgfSksXG59O1xuXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuLyoqXG4gKiBQYXlsb2FkIHR5cGUgb2YgdGhlIGVuZCBtZXNzYWdlIG11c3QgZXh0ZW5kIER1cmF0aW9uXG4gKi9cbmV4cG9ydCBjb25zdCBTUEFOID0ge1xuICBTWU5USF9BU1NFTUJMWToge1xuICAgIG5hbWU6ICdTeW50aGVzaXMnLFxuICAgIHN0YXJ0OiBJTy5DREtfVE9PTEtJVF9JMTAwMSxcbiAgICBlbmQ6IElPLkNES19UT09MS0lUX0kxMDAwLFxuICB9LFxuICBERVBMT1lfU1RBQ0s6IHtcbiAgICBuYW1lOiAnRGVwbG95bWVudCcsXG4gICAgc3RhcnQ6IElPLkNES19UT09MS0lUX0k1MTAwLFxuICAgIGVuZDogSU8uQ0RLX1RPT0xLSVRfSTUwMDEsXG4gIH0sXG4gIFJPTExCQUNLX1NUQUNLOiB7XG4gICAgbmFtZTogJ1JvbGxiYWNrJyxcbiAgICBzdGFydDogSU8uQ0RLX1RPT0xLSVRfSTYxMDAsXG4gICAgZW5kOiBJTy5DREtfVE9PTEtJVF9JNjAwMCxcbiAgfSxcbiAgRElGRl9TVEFDSzoge1xuICAgIG5hbWU6ICdEaWZmJyxcbiAgICBzdGFydDogSU8uQ0RLX1RPT0xLSVRfSTQwMDAsXG4gICAgZW5kOiBJTy5DREtfVE9PTEtJVF9JNDAwMSxcbiAgfSxcbiAgRFJJRlRfQVBQOiB7XG4gICAgbmFtZTogJ0RyaWZ0JyxcbiAgICBzdGFydDogSU8uQ0RLX1RPT0xLSVRfSTQwMDAsXG4gICAgZW5kOiBJTy5DREtfVE9PTEtJVF9JNDUwOSxcbiAgfSxcbiAgREVTVFJPWV9TVEFDSzoge1xuICAgIG5hbWU6ICdEZXN0cm95JyxcbiAgICBzdGFydDogSU8uQ0RLX1RPT0xLSVRfSTcxMDAsXG4gICAgZW5kOiBJTy5DREtfVE9PTEtJVF9JNzAwMSxcbiAgfSxcbiAgREVTVFJPWV9BQ1RJT046IHtcbiAgICBuYW1lOiAnRGVzdHJveScsXG4gICAgc3RhcnQ6IElPLkNES19UT09MS0lUX0k3MTAxLFxuICAgIGVuZDogSU8uQ0RLX1RPT0xLSVRfSTcwMDAsXG4gIH0sXG4gIEJPT1RTVFJBUF9TSU5HTEU6IHtcbiAgICBuYW1lOiAnQm9vdHN0cmFwJyxcbiAgICBzdGFydDogSU8uQ0RLX1RPT0xLSVRfSTkxMDAsXG4gICAgZW5kOiBJTy5DREtfVE9PTEtJVF9JOTAwMCxcbiAgfSxcbiAgQlVJTERfQVNTRVQ6IHtcbiAgICBuYW1lOiAnQnVpbGQgQXNzZXQnLFxuICAgIHN0YXJ0OiBJTy5DREtfVE9PTEtJVF9JNTIxMCxcbiAgICBlbmQ6IElPLkNES19UT09MS0lUX0k1MjExLFxuICB9LFxuICBQVUJMSVNIX0FTU0VUOiB7XG4gICAgbmFtZTogJ1B1Ymxpc2ggQXNzZXQnLFxuICAgIHN0YXJ0OiBJTy5DREtfVE9PTEtJVF9JNTIyMCxcbiAgICBlbmQ6IElPLkNES19UT09MS0lUX0k1MjIxLFxuICB9LFxuICBIT1RTV0FQOiB7XG4gICAgbmFtZTogJ2hvdHN3YXAtZGVwbG95bWVudCcsXG4gICAgc3RhcnQ6IElPLkNES19UT09MS0lUX0k1NDAwLFxuICAgIGVuZDogSU8uQ0RLX1RPT0xLSVRfSTU0MTAsXG4gIH0sXG59IHNhdGlzZmllcyBSZWNvcmQ8c3RyaW5nLCBTcGFuRGVmaW5pdGlvbjxhbnksIGFueT4+O1xuIl19
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* The current action being performed by the Toolkit.
|
|
3
3
|
*/
|
|
4
|
-
export type ToolkitAction = 'assembly' | 'bootstrap' | 'synth' | 'list' | 'diff' | 'deploy' | 'drift' | 'rollback' | 'publish-assets' | 'watch' | 'destroy' | 'doctor' | 'gc' | 'import' | 'metadata' | 'init' | 'migrate' | 'refactor' | 'diagnose' | 'orphan' | 'flags';
|
|
4
|
+
export type ToolkitAction = 'assembly' | 'bootstrap' | 'synth' | 'list' | 'diff' | 'deploy' | 'drift' | 'rollback' | 'publish-assets' | 'watch' | 'destroy' | 'doctor' | 'gc' | 'import' | 'metadata' | 'init' | 'migrate' | 'refactor' | 'diagnose' | 'orphan' | 'flags' | 'validate';
|
|
5
5
|
//# sourceMappingURL=toolkit-action.d.ts.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbGtpdC1hY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ0b29sa2l0LWFjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUaGUgY3VycmVudCBhY3Rpb24gYmVpbmcgcGVyZm9ybWVkIGJ5IHRoZSBUb29sa2l0LlxuICovXG5leHBvcnQgdHlwZSBUb29sa2l0QWN0aW9uID1cbnwgJ2Fzc2VtYmx5J1xufCAnYm9vdHN0cmFwJ1xufCAnc3ludGgnXG58ICdsaXN0J1xufCAnZGlmZidcbnwgJ2RlcGxveSdcbnwgJ2RyaWZ0J1xufCAncm9sbGJhY2snXG58ICdwdWJsaXNoLWFzc2V0cydcbnwgJ3dhdGNoJ1xufCAnZGVzdHJveSdcbnwgJ2RvY3RvcidcbnwgJ2djJ1xufCAnaW1wb3J0J1xufCAnbWV0YWRhdGEnXG58ICdpbml0J1xufCAnbWlncmF0ZSdcbnwgJ3JlZmFjdG9yJ1xufCAnZGlhZ25vc2UnXG58ICdvcnBoYW4nXG58ICdmbGFncydcbnwgJ3ZhbGlkYXRlJztcbiJdfQ==
|
|
@@ -54,6 +54,12 @@ export interface StackActivityMonitorProps {
|
|
|
54
54
|
* @default - Bootstrap version is not reported in error messages
|
|
55
55
|
*/
|
|
56
56
|
readonly envResources?: EnvironmentResources;
|
|
57
|
+
/**
|
|
58
|
+
* Whether this deployment is an update to an existing stack (as opposed to a creation).
|
|
59
|
+
*
|
|
60
|
+
* @default false
|
|
61
|
+
*/
|
|
62
|
+
readonly isStackUpdate?: boolean;
|
|
57
63
|
}
|
|
58
64
|
/**
|
|
59
65
|
* Drives the monitoring of a Stack deployment
|
|
@@ -90,11 +96,17 @@ export declare class StackActivityMonitor {
|
|
|
90
96
|
private readonly stack;
|
|
91
97
|
private readonly cfn;
|
|
92
98
|
private readonly envResources?;
|
|
93
|
-
|
|
99
|
+
private readonly isStackUpdate;
|
|
100
|
+
constructor({ cfn, ioHelper, stack, stackArn, resourcesTotal, changeSetCreationTime, pollingInterval, envResources, isStackUpdate, }: StackActivityMonitorProps);
|
|
94
101
|
/**
|
|
95
102
|
* The resource errors that were discovered during monitoring of this stack
|
|
96
103
|
*/
|
|
97
104
|
get errors(): import("./resource-errors").ResourceErrors;
|
|
105
|
+
/**
|
|
106
|
+
* Resources that received DELETE_FAILED during the stack update.
|
|
107
|
+
* CloudFormation skips these and completes the update anyway.
|
|
108
|
+
*/
|
|
109
|
+
get deleteFailures(): import("../..").ResourceDeleteFailure[];
|
|
98
110
|
start(): Promise<this>;
|
|
99
111
|
stop(): Promise<void>;
|
|
100
112
|
private scheduleNextTick;
|