footprintjs 0.2.2 → 0.3.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/README.md +137 -41
- package/dist/esm/index.js +7 -1
- package/dist/esm/lib/builder/FlowChartBuilder.js +72 -91
- package/dist/esm/lib/builder/types.js +1 -1
- package/dist/esm/lib/contract/defineContract.js +32 -0
- package/dist/esm/lib/contract/index.js +18 -0
- package/dist/esm/lib/contract/openapi.js +120 -0
- package/dist/esm/lib/contract/schema.js +199 -0
- package/dist/esm/lib/contract/types.js +9 -0
- package/dist/esm/lib/engine/graph/StageNode.js +1 -1
- package/dist/esm/lib/engine/handlers/ChildrenExecutor.js +5 -5
- package/dist/esm/lib/engine/handlers/ContinuationResolver.js +6 -6
- package/dist/esm/lib/engine/handlers/DeciderHandler.js +4 -4
- package/dist/esm/lib/engine/handlers/NodeResolver.js +1 -2
- package/dist/esm/lib/engine/handlers/RuntimeStructureManager.js +1 -2
- package/dist/esm/lib/engine/handlers/SelectorHandler.js +6 -6
- package/dist/esm/lib/engine/narrative/ControlFlowNarrativeGenerator.js +13 -18
- package/dist/esm/lib/engine/narrative/types.js +1 -1
- package/dist/esm/lib/engine/traversal/FlowchartTraverser.js +10 -11
- package/dist/esm/lib/engine/types.js +1 -1
- package/dist/esm/lib/runner/ExecutionRuntime.js +1 -1
- package/dist/esm/types/index.d.ts +4 -0
- package/dist/esm/types/lib/builder/FlowChartBuilder.d.ts +17 -10
- package/dist/esm/types/lib/builder/types.d.ts +6 -6
- package/dist/esm/types/lib/contract/defineContract.d.ts +18 -0
- package/dist/esm/types/lib/contract/index.d.ts +14 -0
- package/dist/esm/types/lib/contract/openapi.d.ts +12 -0
- package/dist/esm/types/lib/contract/schema.d.ts +14 -0
- package/dist/esm/types/lib/contract/types.d.ts +94 -0
- package/dist/esm/types/lib/engine/graph/StageNode.d.ts +0 -2
- package/dist/esm/types/lib/engine/narrative/ControlFlowNarrativeGenerator.d.ts +6 -6
- package/dist/esm/types/lib/engine/narrative/types.d.ts +6 -6
- package/dist/esm/types/lib/engine/types.d.ts +0 -1
- package/dist/esm/types/lib/runner/ExecutionRuntime.d.ts +0 -1
- package/dist/index.js +12 -2
- package/dist/lib/builder/FlowChartBuilder.js +72 -91
- package/dist/lib/builder/types.js +1 -1
- package/dist/lib/contract/defineContract.js +36 -0
- package/dist/lib/contract/index.js +26 -0
- package/dist/lib/contract/openapi.js +124 -0
- package/dist/lib/contract/schema.js +205 -0
- package/dist/lib/contract/types.js +10 -0
- package/dist/lib/engine/graph/StageNode.js +1 -1
- package/dist/lib/engine/handlers/ChildrenExecutor.js +5 -5
- package/dist/lib/engine/handlers/ContinuationResolver.js +6 -6
- package/dist/lib/engine/handlers/DeciderHandler.js +4 -4
- package/dist/lib/engine/handlers/NodeResolver.js +1 -2
- package/dist/lib/engine/handlers/RuntimeStructureManager.js +1 -2
- package/dist/lib/engine/handlers/SelectorHandler.js +6 -6
- package/dist/lib/engine/narrative/ControlFlowNarrativeGenerator.js +13 -18
- package/dist/lib/engine/narrative/types.js +1 -1
- package/dist/lib/engine/traversal/FlowchartTraverser.js +10 -11
- package/dist/lib/engine/types.js +1 -1
- package/dist/lib/runner/ExecutionRuntime.js +1 -1
- package/dist/types/index.d.ts +4 -0
- package/dist/types/lib/builder/FlowChartBuilder.d.ts +17 -10
- package/dist/types/lib/builder/types.d.ts +6 -6
- package/dist/types/lib/contract/defineContract.d.ts +18 -0
- package/dist/types/lib/contract/index.d.ts +14 -0
- package/dist/types/lib/contract/openapi.d.ts +12 -0
- package/dist/types/lib/contract/schema.d.ts +14 -0
- package/dist/types/lib/contract/types.d.ts +94 -0
- package/dist/types/lib/engine/graph/StageNode.d.ts +0 -2
- package/dist/types/lib/engine/narrative/ControlFlowNarrativeGenerator.d.ts +6 -6
- package/dist/types/lib/engine/narrative/types.d.ts +6 -6
- package/dist/types/lib/engine/types.d.ts +0 -1
- package/dist/types/lib/runner/ExecutionRuntime.d.ts +0 -1
- package/package.json +1 -1
|
@@ -7,4 +7,4 @@
|
|
|
7
7
|
* are defined locally here for the new library.
|
|
8
8
|
*/
|
|
9
9
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2J1aWxkZXIvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7R0FNRyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogYnVpbGRlci90eXBlcy50cyDigJQgQWxsIHR5cGVzIHVzZWQgYnkgdGhlIGJ1aWxkZXIgbGlicmFyeS5cbiAqXG4gKiBaZXJvIGRlcHMgb24gb2xkIGNvZGUuIE9ubHkgaW1wb3J0cyBmcm9tIGxpYi9tZW1vcnkgKFBoYXNlIDEpLlxuICogVHlwZXMgdGhhdCBvcmlnaW5hdGVkIGluIGV4ZWN1dG9yL1BpcGVsaW5lLnRzIGFuZCBleGVjdXRvci90eXBlcy50c1xuICogYXJlIGRlZmluZWQgbG9jYWxseSBoZXJlIGZvciB0aGUgbmV3IGxpYnJhcnkuXG4gKi9cblxuLy8g4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG4vLyBMb2dnZXIgKGNvcGllZCBmcm9tIHV0aWxzL2xvZ2dlci50cyB0byBhdm9pZCBvbGQtY29kZSBkZXApXG4vLyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcblxuZXhwb3J0IGludGVyZmFjZSBJTG9nZ2VyIHtcbiAgaW5mbyhtZXNzYWdlPzogYW55LCAuLi5vcHRpb25hbFBhcmFtczogYW55W10pOiB2b2lkO1xuICBsb2cobWVzc2FnZT86IGFueSwgLi4ub3B0aW9uYWxQYXJhbXM6IGFueVtdKTogdm9pZDtcbiAgZGVidWcobWVzc2FnZT86IGFueSwgLi4ub3B0aW9uYWxQYXJhbXM6IGFueVtdKTogdm9pZDtcbiAgZXJyb3IobWVzc2FnZT86IGFueSwgLi4ub3B0aW9uYWxQYXJhbXM6IGFueVtdKTogdm9pZDtcbiAgd2FybihtZXNzYWdlPzogYW55LCAuLi5vcHRpb25hbFBhcmFtczogYW55W10pOiB2b2lkO1xufVxuXG4vLyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbi8vIFNjb3BlIFByb3RlY3Rpb24gKGNvcGllZCBmcm9tIHNjb3BlL3Byb3RlY3Rpb24vdHlwZXMudHMpXG4vLyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcblxuZXhwb3J0IHR5cGUgU2NvcGVQcm90ZWN0aW9uTW9kZSA9ICdlcnJvcicgfCAnd2FybicgfCAnb2ZmJztcblxuLy8g4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG4vLyBTdGFnZSBGdW5jdGlvblxuLy8g4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG5cbi8qKiBDYWxsYmFjayBmb3Igc3RyZWFtaW5nIHN0YWdlcyB0byBlbWl0IHRva2VucyBpbmNyZW1lbnRhbGx5LiAqL1xuZXhwb3J0IHR5cGUgU3RyZWFtQ2FsbGJhY2sgPSAodG9rZW46IHN0cmluZykgPT4gdm9pZDtcblxuLyoqXG4gKiBUaGUgZnVuY3Rpb24gc2lnbmF0dXJlIGZvciBzdGFnZSBoYW5kbGVycy5cbiAqXG4gKiBUT3V0ICAg4oCTIHJldHVybiB0eXBlIHByb2R1Y2VkIGJ5IHRoZSBzdGFnZVxuICogVFNjb3BlIOKAkyB0aGUgc2NvcGUgb2JqZWN0IHBhc3NlZCB0byB0aGUgc3RhZ2VcbiAqL1xuZXhwb3J0IHR5cGUgUGlwZWxpbmVTdGFnZUZ1bmN0aW9uPFRPdXQgPSBhbnksIFRTY29wZSA9IGFueT4gPSAoXG4gIHNjb3BlOiBUU2NvcGUsXG4gIGJyZWFrUGlwZWxpbmU6ICgpID0+IHZvaWQsXG4gIHN0cmVhbUNhbGxiYWNrPzogU3RyZWFtQ2FsbGJhY2ssXG4pID0+IFByb21pc2U8VE91dD4gfCBUT3V0O1xuXG4vKiogUmVsYXhlZC1nZW5lcmljIGFsaWFzIGZvciBidWlsZGVyIGVyZ29ub21pY3MuICovXG5leHBvcnQgdHlwZSBTdGFnZUZuID0gUGlwZWxpbmVTdGFnZUZ1bmN0aW9uPGFueSwgYW55PjtcblxuLy8g4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG4vLyBTdHJlYW1pbmdcbi8vIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuXG5leHBvcnQgdHlwZSBTdHJlYW1Ub2tlbkhhbmRsZXIgPSAoc3RyZWFtSWQ6IHN0cmluZywgdG9rZW46IHN0cmluZykgPT4gdm9pZDtcbmV4cG9ydCB0eXBlIFN0cmVhbUxpZmVjeWNsZUhhbmRsZXIgPSAoc3RyZWFtSWQ6IHN0cmluZywgZnVsbFRleHQ/OiBzdHJpbmcpID0+IHZvaWQ7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3RyZWFtSGFuZGxlcnMge1xuICBvblRva2VuPzogU3RyZWFtVG9rZW5IYW5kbGVyO1xuICBvblN0YXJ0PzogU3RyZWFtTGlmZWN5Y2xlSGFuZGxlcjtcbiAgb25FbmQ/OiBTdHJlYW1MaWZlY3ljbGVIYW5kbGVyO1xufVxuXG4vLyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbi8vIFN1YmZsb3cgTW91bnQgT3B0aW9uc1xuLy8g4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG5cbmV4cG9ydCBpbnRlcmZhY2UgU3ViZmxvd01vdW50T3B0aW9uczxUUGFyZW50U2NvcGUgPSBhbnksIFRTdWJmbG93SW5wdXQgPSBhbnksIFRTdWJmbG93T3V0cHV0ID0gYW55PiB7XG4gIGlucHV0TWFwcGVyPzogKHBhcmVudFNjb3BlOiBUUGFyZW50U2NvcGUpID0+IFRTdWJmbG93SW5wdXQ7XG4gIG91dHB1dE1hcHBlcj86IChzdWJmbG93T3V0cHV0OiBUU3ViZmxvd091dHB1dCwgcGFyZW50U2NvcGU6IFRQYXJlbnRTY29wZSkgPT4gUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG59XG5cbi8vIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuLy8gU3RhZ2VOb2RlIOKAlCB0aGUgcnVudGltZSBncmFwaCBub2RlXG4vLyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcblxuZXhwb3J0IHR5cGUgU3RhZ2VOb2RlPFRPdXQgPSBhbnksIFRTY29wZSA9IGFueT4gPSB7XG4gIC8qKiBIdW1hbi1yZWFkYWJsZSBzdGFnZSBuYW1lOyBhbHNvIHVzZWQgYXMgdGhlIHN0YWdlTWFwIGtleS4gKi9cbiAgbmFtZTogc3RyaW5nO1xuICAvKiogT3B0aW9uYWwgc3RhYmxlIGlkIChyZXF1aXJlZCBieSBkZWNpZGVyL2ZvcmsgYWdncmVnYXRpb24pLiAqL1xuICBpZD86IHN0cmluZztcbiAgLyoqIEh1bWFuLXJlYWRhYmxlIGRpc3BsYXkgbmFtZSBmb3IgVUkuICovXG4gIGRpc3BsYXlOYW1lPzogc3RyaW5nO1xuICAvKiogSHVtYW4tcmVhZGFibGUgZGVzY3JpcHRpb24gb2Ygd2hhdCB0aGlzIHN0YWdlIGRvZXMuICovXG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuXG4gIC8vIOKUgOKUgCBDb250aW51YXRpb25zIOKUgOKUgFxuICAvKiogTGluZWFyIGNvbnRpbnVhdGlvbi4gKi9cbiAgbmV4dD86IFN0YWdlTm9kZTxUT3V0LCBUU2NvcGU+O1xuICAvKiogUGFyYWxsZWwgY2hpbGRyZW4gKGZvcmspLiAqL1xuICBjaGlsZHJlbj86IFN0YWdlTm9kZTxUT3V0LCBUU2NvcGU+W107XG5cbiAgLy8g4pSA4pSAIERlY2lkZXJzICYgU2VsZWN0b3JzIOKUgOKUgFxuICAvKiogV2hlbiB0cnVlLCBmbiBJUyB0aGUgZGVjaWRlciDigJQgcmV0dXJucyBhIGJyYW5jaCBJRCBzdHJpbmcuICovXG4gIGRlY2lkZXJGbj86IGJvb2xlYW47XG4gIC8qKiBXaGVuIHRydWUsIGZuIElTIHRoZSBzZWxlY3RvciDigJQgcmV0dXJucyBicmFuY2ggSUQocykuICovXG4gIHNlbGVjdG9yRm4/OiBib29sZWFuO1xuXG4gIC8vIOKUgOKUgCBTdGFnZSBmdW5jdGlvbiDilIDilIBcbiAgZm4/OiBQaXBlbGluZVN0YWdlRnVuY3Rpb248VE91dCwgVFNjb3BlPjtcblxuICAvLyDilIDilIAgU3RyZWFtaW5nIOKUgOKUgFxuICBpc1N0cmVhbWluZz86IGJvb2xlYW47XG4gIHN0cmVhbUlkPzogc3RyaW5nO1xuXG4gIC8vIOKUgOKUgCBTdWJmbG93IOKUgOKUgFxuICBpc1N1YmZsb3dSb290PzogYm9vbGVhbjtcbiAgc3ViZmxvd0lkPzogc3RyaW5nO1xuICBzdWJmbG93TmFtZT86IHN0cmluZztcbiAgJHJlZj86IHN0cmluZztcbiAgbW91bnRJZD86IHN0cmluZztcbiAgc3ViZmxvd01vdW50T3B0aW9ucz86IFN1YmZsb3dNb3VudE9wdGlvbnM7XG5cbiAgLyoqIFdoZW4gdHJ1ZSwgcGFyYWxsZWwgY2hpbGRyZW4gdXNlIGZhaWwtZmFzdCBzZW1hbnRpY3MgKHJlamVjdCBvbiBmaXJzdCBlcnJvcikuICovXG4gIGZhaWxGYXN0PzogYm9vbGVhbjtcblxuICAvKiogSW5saW5lIHN1YmZsb3cgZGVmaW5pdGlvbiBmb3IgZHluYW1pYyBzdWJmbG93IGF0dGFjaG1lbnQuICovXG4gIHN1YmZsb3dEZWY/OiB7XG4gICAgcm9vdDogU3RhZ2VOb2RlO1xuICAgIHN0YWdlTWFwPzogTWFwPHN0cmluZywgUGlwZWxpbmVTdGFnZUZ1bmN0aW9uPFRPdXQsIFRTY29wZT4+O1xuICAgIGJ1aWxkVGltZVN0cnVjdHVyZT86IHVua25vd247XG4gICAgc3ViZmxvd3M/OiBSZWNvcmQ8c3RyaW5nLCB7IHJvb3Q6IFN0YWdlTm9kZSB9PjtcbiAgfTtcbn07XG5cbi8vIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuLy8gU2VyaWFsaXplZCBQaXBlbGluZSBTdHJ1Y3R1cmUgKEpTT04tc2FmZSwgZm9yIHZpc3VhbGl6YXRpb24pXG4vLyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcblxuZXhwb3J0IGludGVyZmFjZSBTZXJpYWxpemVkUGlwZWxpbmVTdHJ1Y3R1cmUge1xuICBuYW1lOiBzdHJpbmc7XG4gIGlkPzogc3RyaW5nO1xuICB0eXBlOiAnc3RhZ2UnIHwgJ2RlY2lkZXInIHwgJ2ZvcmsnIHwgJ3N0cmVhbWluZyc7XG4gIGRpc3BsYXlOYW1lPzogc3RyaW5nO1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgY2hpbGRyZW4/OiBTZXJpYWxpemVkUGlwZWxpbmVTdHJ1Y3R1cmVbXTtcbiAgbmV4dD86IFNlcmlhbGl6ZWRQaXBlbGluZVN0cnVjdHVyZTtcbiAgaGFzRGVjaWRlcj86IGJvb2xlYW47XG4gIGhhc1NlbGVjdG9yPzogYm9vbGVhbjtcbiAgYnJhbmNoSWRzPzogc3RyaW5nW107XG4gIGxvb3BUYXJnZXQ/OiBzdHJpbmc7XG4gIGlzU3RyZWFtaW5nPzogYm9vbGVhbjtcbiAgc3RyZWFtSWQ/OiBzdHJpbmc7XG4gIGlzUGFyYWxsZWxDaGlsZD86IGJvb2xlYW47XG4gIHBhcmFsbGVsR3JvdXBJZD86IHN0cmluZztcbiAgaXNTdWJmbG93Um9vdD86IGJvb2xlYW47XG4gIHN1YmZsb3dJZD86IHN0cmluZztcbiAgc3ViZmxvd05hbWU/OiBzdHJpbmc7XG4gIHN1YmZsb3dTdHJ1Y3R1cmU/OiBTZXJpYWxpemVkUGlwZWxpbmVTdHJ1Y3R1cmU7XG4gIGl0ZXJhdGlvbkNvdW50PzogbnVtYmVyO1xufVxuXG4vLyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbi8vIEZsb3dDaGFydFNwZWMgKHB1cmUgSlNPTiwgbm8gZnVuY3Rpb25zIOKAlCBmb3IgRkXihpJCRSB0cmFuc3BvcnQpXG4vLyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcblxuZXhwb3J0IGludGVyZmFjZSBGbG93Q2hhcnRTcGVjIHtcbiAgbmFtZTogc3RyaW5nO1xuICBpZD86IHN0cmluZztcbiAgZGlzcGxheU5hbWU/OiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICBjaGlsZHJlbj86IEZsb3dDaGFydFNwZWNbXTtcbiAgbmV4dD86IEZsb3dDaGFydFNwZWM7XG4gIGhhc0RlY2lkZXI/OiBib29sZWFuO1xuICBoYXNTZWxlY3Rvcj86IGJvb2xlYW47XG4gIGJyYW5jaElkcz86IHN0cmluZ1tdO1xuICBsb29wVGFyZ2V0Pzogc3RyaW5nO1xuICBpc1N0cmVhbWluZz86IGJvb2xlYW47XG4gIHN0cmVhbUlkPzogc3RyaW5nO1xuICBpc1BhcmFsbGVsQ2hpbGQ/OiBib29sZWFuO1xuICBwYXJhbGxlbEdyb3VwSWQ/OiBzdHJpbmc7XG4gIGlzU3ViZmxvd1Jvb3Q/OiBib29sZWFuO1xuICBzdWJmbG93SWQ/OiBzdHJpbmc7XG4gIHN1YmZsb3dOYW1lPzogc3RyaW5nO1xufVxuXG4vLyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbi8vIEJ1aWxkLVRpbWUgRXh0cmFjdG9yXG4vLyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcblxuLyoqIE1ldGFkYXRhIHByb3ZpZGVkIHRvIHRoZSBidWlsZC10aW1lIGV4dHJhY3RvciBmb3IgZWFjaCBub2RlLiAqL1xuZXhwb3J0IHR5cGUgQnVpbGRUaW1lTm9kZU1ldGFkYXRhID0gRmxvd0NoYXJ0U3BlYztcblxuZXhwb3J0IHR5cGUgQnVpbGRUaW1lRXh0cmFjdG9yPFRSZXN1bHQgPSBGbG93Q2hhcnRTcGVjPiA9IChtZXRhZGF0YTogQnVpbGRUaW1lTm9kZU1ldGFkYXRhKSA9PiBUUmVzdWx0O1xuXG4vLyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbi8vIFRyYXZlcnNhbCBFeHRyYWN0b3IgKHJ1bnRpbWUpXG4vLyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcblxuZXhwb3J0IHR5cGUgVHJhdmVyc2FsRXh0cmFjdG9yPFRSZXN1bHQgPSB1bmtub3duPiA9IChzbmFwc2hvdDogdW5rbm93bikgPT4gVFJlc3VsdCB8IHVuZGVmaW5lZCB8IG51bGw7XG5cbi8vIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuLy8gRmxvd0NoYXJ0IOKAlCBjb21waWxlZCBvdXRwdXQgb2YgYnVpbGQoKVxuLy8g4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG5cbmV4cG9ydCB0eXBlIEZsb3dDaGFydDxUT3V0ID0gYW55LCBUU2NvcGUgPSBhbnk+ID0ge1xuICByb290OiBTdGFnZU5vZGU8VE91dCwgVFNjb3BlPjtcbiAgc3RhZ2VNYXA6IE1hcDxzdHJpbmcsIFBpcGVsaW5lU3RhZ2VGdW5jdGlvbjxUT3V0LCBUU2NvcGU+PjtcbiAgZXh0cmFjdG9yPzogVHJhdmVyc2FsRXh0cmFjdG9yO1xuICBzdWJmbG93cz86IFJlY29yZDxzdHJpbmcsIHsgcm9vdDogU3RhZ2VOb2RlPFRPdXQsIFRTY29wZT4gfT47XG4gIGJ1aWxkVGltZVN0cnVjdHVyZTogU2VyaWFsaXplZFBpcGVsaW5lU3RydWN0dXJlO1xuICBlbmFibGVOYXJyYXRpdmU/OiBib29sZWFuO1xuICBsb2dnZXI/OiBJTG9nZ2VyO1xuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICBzdGFnZURlc2NyaXB0aW9uczogTWFwPHN0cmluZywgc3RyaW5nPjtcbn07XG5cbi8vIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuLy8gU2ltcGxpZmllZCBQYXJhbGxlbCBTcGVjIChmb3IgYWRkTGlzdE9mRnVuY3Rpb24pXG4vLyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcblxuZXhwb3J0IHR5cGUgU2ltcGxpZmllZFBhcmFsbGVsU3BlYzxUT3V0ID0gYW55LCBUU2NvcGUgPSBhbnk+ID0ge1xuICBpZDogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIGRpc3BsYXlOYW1lPzogc3RyaW5nO1xuICBmbj86IFBpcGVsaW5lU3RhZ2VGdW5jdGlvbjxUT3V0LCBUU2NvcGU+O1xufTtcblxuLy8g4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG4vLyBFeGVjT3B0aW9ucyAoZm9yIGV4ZWN1dGUoKSBjb252ZW5pZW5jZSDigJQgdXNlZCBieSBydW5uZXIgbGF5ZXIpXG4vLyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcblxuZXhwb3J0IHR5cGUgRXhlY09wdGlvbnMgPSB7XG4gIGRlZmF1bHRzPzogdW5rbm93bjtcbiAgaW5pdGlhbD86IHVua25vd247XG4gIHJlYWRPbmx5PzogdW5rbm93bjtcbiAgdGhyb3R0bGluZ0Vycm9yQ2hlY2tlcj86IChlOiB1bmtub3duKSA9PiBib29sZWFuO1xuICBzY29wZVByb3RlY3Rpb25Nb2RlPzogU2NvcGVQcm90ZWN0aW9uTW9kZTtcbiAgZW5hYmxlTmFycmF0aXZlPzogYm9vbGVhbjtcbn07XG5cbi8vIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuLy8gU3ViZmxvd1JlZlxuLy8g4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG5cbmV4cG9ydCBpbnRlcmZhY2UgU3ViZmxvd1JlZiB7XG4gICRyZWY6IHN0cmluZztcbiAgbW91bnRJZDogc3RyaW5nO1xuICBkaXNwbGF5TmFtZT86IHN0cmluZztcbn1cbiJdfQ==
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2J1aWxkZXIvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7R0FNRyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogYnVpbGRlci90eXBlcy50cyDigJQgQWxsIHR5cGVzIHVzZWQgYnkgdGhlIGJ1aWxkZXIgbGlicmFyeS5cbiAqXG4gKiBaZXJvIGRlcHMgb24gb2xkIGNvZGUuIE9ubHkgaW1wb3J0cyBmcm9tIGxpYi9tZW1vcnkgKFBoYXNlIDEpLlxuICogVHlwZXMgdGhhdCBvcmlnaW5hdGVkIGluIGV4ZWN1dG9yL1BpcGVsaW5lLnRzIGFuZCBleGVjdXRvci90eXBlcy50c1xuICogYXJlIGRlZmluZWQgbG9jYWxseSBoZXJlIGZvciB0aGUgbmV3IGxpYnJhcnkuXG4gKi9cblxuLy8g4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG4vLyBMb2dnZXIgKGNvcGllZCBmcm9tIHV0aWxzL2xvZ2dlci50cyB0byBhdm9pZCBvbGQtY29kZSBkZXApXG4vLyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcblxuZXhwb3J0IGludGVyZmFjZSBJTG9nZ2VyIHtcbiAgaW5mbyhtZXNzYWdlPzogYW55LCAuLi5vcHRpb25hbFBhcmFtczogYW55W10pOiB2b2lkO1xuICBsb2cobWVzc2FnZT86IGFueSwgLi4ub3B0aW9uYWxQYXJhbXM6IGFueVtdKTogdm9pZDtcbiAgZGVidWcobWVzc2FnZT86IGFueSwgLi4ub3B0aW9uYWxQYXJhbXM6IGFueVtdKTogdm9pZDtcbiAgZXJyb3IobWVzc2FnZT86IGFueSwgLi4ub3B0aW9uYWxQYXJhbXM6IGFueVtdKTogdm9pZDtcbiAgd2FybihtZXNzYWdlPzogYW55LCAuLi5vcHRpb25hbFBhcmFtczogYW55W10pOiB2b2lkO1xufVxuXG4vLyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbi8vIFNjb3BlIFByb3RlY3Rpb24gKGNvcGllZCBmcm9tIHNjb3BlL3Byb3RlY3Rpb24vdHlwZXMudHMpXG4vLyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcblxuZXhwb3J0IHR5cGUgU2NvcGVQcm90ZWN0aW9uTW9kZSA9ICdlcnJvcicgfCAnd2FybicgfCAnb2ZmJztcblxuLy8g4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG4vLyBTdGFnZSBGdW5jdGlvblxuLy8g4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG5cbi8qKiBDYWxsYmFjayBmb3Igc3RyZWFtaW5nIHN0YWdlcyB0byBlbWl0IHRva2VucyBpbmNyZW1lbnRhbGx5LiAqL1xuZXhwb3J0IHR5cGUgU3RyZWFtQ2FsbGJhY2sgPSAodG9rZW46IHN0cmluZykgPT4gdm9pZDtcblxuLyoqXG4gKiBUaGUgZnVuY3Rpb24gc2lnbmF0dXJlIGZvciBzdGFnZSBoYW5kbGVycy5cbiAqXG4gKiBUT3V0ICAg4oCTIHJldHVybiB0eXBlIHByb2R1Y2VkIGJ5IHRoZSBzdGFnZVxuICogVFNjb3BlIOKAkyB0aGUgc2NvcGUgb2JqZWN0IHBhc3NlZCB0byB0aGUgc3RhZ2VcbiAqL1xuZXhwb3J0IHR5cGUgUGlwZWxpbmVTdGFnZUZ1bmN0aW9uPFRPdXQgPSBhbnksIFRTY29wZSA9IGFueT4gPSAoXG4gIHNjb3BlOiBUU2NvcGUsXG4gIGJyZWFrUGlwZWxpbmU6ICgpID0+IHZvaWQsXG4gIHN0cmVhbUNhbGxiYWNrPzogU3RyZWFtQ2FsbGJhY2ssXG4pID0+IFByb21pc2U8VE91dD4gfCBUT3V0O1xuXG4vKiogUmVsYXhlZC1nZW5lcmljIGFsaWFzIGZvciBidWlsZGVyIGVyZ29ub21pY3MuICovXG5leHBvcnQgdHlwZSBTdGFnZUZuID0gUGlwZWxpbmVTdGFnZUZ1bmN0aW9uPGFueSwgYW55PjtcblxuLy8g4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG4vLyBTdHJlYW1pbmdcbi8vIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuXG5leHBvcnQgdHlwZSBTdHJlYW1Ub2tlbkhhbmRsZXIgPSAoc3RyZWFtSWQ6IHN0cmluZywgdG9rZW46IHN0cmluZykgPT4gdm9pZDtcbmV4cG9ydCB0eXBlIFN0cmVhbUxpZmVjeWNsZUhhbmRsZXIgPSAoc3RyZWFtSWQ6IHN0cmluZywgZnVsbFRleHQ/OiBzdHJpbmcpID0+IHZvaWQ7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3RyZWFtSGFuZGxlcnMge1xuICBvblRva2VuPzogU3RyZWFtVG9rZW5IYW5kbGVyO1xuICBvblN0YXJ0PzogU3RyZWFtTGlmZWN5Y2xlSGFuZGxlcjtcbiAgb25FbmQ/OiBTdHJlYW1MaWZlY3ljbGVIYW5kbGVyO1xufVxuXG4vLyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbi8vIFN1YmZsb3cgTW91bnQgT3B0aW9uc1xuLy8g4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG5cbmV4cG9ydCBpbnRlcmZhY2UgU3ViZmxvd01vdW50T3B0aW9uczxUUGFyZW50U2NvcGUgPSBhbnksIFRTdWJmbG93SW5wdXQgPSBhbnksIFRTdWJmbG93T3V0cHV0ID0gYW55PiB7XG4gIGlucHV0TWFwcGVyPzogKHBhcmVudFNjb3BlOiBUUGFyZW50U2NvcGUpID0+IFRTdWJmbG93SW5wdXQ7XG4gIG91dHB1dE1hcHBlcj86IChzdWJmbG93T3V0cHV0OiBUU3ViZmxvd091dHB1dCwgcGFyZW50U2NvcGU6IFRQYXJlbnRTY29wZSkgPT4gUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG59XG5cbi8vIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuLy8gU3RhZ2VOb2RlIOKAlCB0aGUgcnVudGltZSBncmFwaCBub2RlXG4vLyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcblxuZXhwb3J0IHR5cGUgU3RhZ2VOb2RlPFRPdXQgPSBhbnksIFRTY29wZSA9IGFueT4gPSB7XG4gIC8qKiBIdW1hbi1yZWFkYWJsZSBzdGFnZSBuYW1lOyBhbHNvIHVzZWQgYXMgdGhlIHN0YWdlTWFwIGtleS4gKi9cbiAgbmFtZTogc3RyaW5nO1xuICAvKiogT3B0aW9uYWwgc3RhYmxlIGlkIChyZXF1aXJlZCBieSBkZWNpZGVyL2ZvcmsgYWdncmVnYXRpb24pLiAqL1xuICBpZD86IHN0cmluZztcbiAgLyoqIEh1bWFuLXJlYWRhYmxlIGRlc2NyaXB0aW9uIG9mIHdoYXQgdGhpcyBzdGFnZSBkb2VzLiAqL1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcblxuICAvLyDilIDilIAgQ29udGludWF0aW9ucyDilIDilIBcbiAgLyoqIExpbmVhciBjb250aW51YXRpb24uICovXG4gIG5leHQ/OiBTdGFnZU5vZGU8VE91dCwgVFNjb3BlPjtcbiAgLyoqIFBhcmFsbGVsIGNoaWxkcmVuIChmb3JrKS4gKi9cbiAgY2hpbGRyZW4/OiBTdGFnZU5vZGU8VE91dCwgVFNjb3BlPltdO1xuXG4gIC8vIOKUgOKUgCBEZWNpZGVycyAmIFNlbGVjdG9ycyDilIDilIBcbiAgLyoqIFdoZW4gdHJ1ZSwgZm4gSVMgdGhlIGRlY2lkZXIg4oCUIHJldHVybnMgYSBicmFuY2ggSUQgc3RyaW5nLiAqL1xuICBkZWNpZGVyRm4/OiBib29sZWFuO1xuICAvKiogV2hlbiB0cnVlLCBmbiBJUyB0aGUgc2VsZWN0b3Ig4oCUIHJldHVybnMgYnJhbmNoIElEKHMpLiAqL1xuICBzZWxlY3RvckZuPzogYm9vbGVhbjtcblxuICAvLyDilIDilIAgU3RhZ2UgZnVuY3Rpb24g4pSA4pSAXG4gIGZuPzogUGlwZWxpbmVTdGFnZUZ1bmN0aW9uPFRPdXQsIFRTY29wZT47XG5cbiAgLy8g4pSA4pSAIFN0cmVhbWluZyDilIDilIBcbiAgaXNTdHJlYW1pbmc/OiBib29sZWFuO1xuICBzdHJlYW1JZD86IHN0cmluZztcblxuICAvLyDilIDilIAgU3ViZmxvdyDilIDilIBcbiAgaXNTdWJmbG93Um9vdD86IGJvb2xlYW47XG4gIHN1YmZsb3dJZD86IHN0cmluZztcbiAgc3ViZmxvd05hbWU/OiBzdHJpbmc7XG4gICRyZWY/OiBzdHJpbmc7XG4gIG1vdW50SWQ/OiBzdHJpbmc7XG4gIHN1YmZsb3dNb3VudE9wdGlvbnM/OiBTdWJmbG93TW91bnRPcHRpb25zO1xuXG4gIC8qKiBXaGVuIHRydWUsIHBhcmFsbGVsIGNoaWxkcmVuIHVzZSBmYWlsLWZhc3Qgc2VtYW50aWNzIChyZWplY3Qgb24gZmlyc3QgZXJyb3IpLiAqL1xuICBmYWlsRmFzdD86IGJvb2xlYW47XG5cbiAgLyoqIElubGluZSBzdWJmbG93IGRlZmluaXRpb24gZm9yIGR5bmFtaWMgc3ViZmxvdyBhdHRhY2htZW50LiAqL1xuICBzdWJmbG93RGVmPzoge1xuICAgIHJvb3Q6IFN0YWdlTm9kZTtcbiAgICBzdGFnZU1hcD86IE1hcDxzdHJpbmcsIFBpcGVsaW5lU3RhZ2VGdW5jdGlvbjxUT3V0LCBUU2NvcGU+PjtcbiAgICBidWlsZFRpbWVTdHJ1Y3R1cmU/OiB1bmtub3duO1xuICAgIHN1YmZsb3dzPzogUmVjb3JkPHN0cmluZywgeyByb290OiBTdGFnZU5vZGUgfT47XG4gIH07XG59O1xuXG4vLyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbi8vIFNlcmlhbGl6ZWQgUGlwZWxpbmUgU3RydWN0dXJlIChKU09OLXNhZmUsIGZvciB2aXN1YWxpemF0aW9uKVxuLy8g4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VyaWFsaXplZFBpcGVsaW5lU3RydWN0dXJlIHtcbiAgbmFtZTogc3RyaW5nO1xuICBpZD86IHN0cmluZztcbiAgdHlwZTogJ3N0YWdlJyB8ICdkZWNpZGVyJyB8ICdmb3JrJyB8ICdzdHJlYW1pbmcnO1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgY2hpbGRyZW4/OiBTZXJpYWxpemVkUGlwZWxpbmVTdHJ1Y3R1cmVbXTtcbiAgbmV4dD86IFNlcmlhbGl6ZWRQaXBlbGluZVN0cnVjdHVyZTtcbiAgaGFzRGVjaWRlcj86IGJvb2xlYW47XG4gIGhhc1NlbGVjdG9yPzogYm9vbGVhbjtcbiAgYnJhbmNoSWRzPzogc3RyaW5nW107XG4gIGxvb3BUYXJnZXQ/OiBzdHJpbmc7XG4gIGlzU3RyZWFtaW5nPzogYm9vbGVhbjtcbiAgc3RyZWFtSWQ/OiBzdHJpbmc7XG4gIGlzUGFyYWxsZWxDaGlsZD86IGJvb2xlYW47XG4gIHBhcmFsbGVsR3JvdXBJZD86IHN0cmluZztcbiAgaXNTdWJmbG93Um9vdD86IGJvb2xlYW47XG4gIHN1YmZsb3dJZD86IHN0cmluZztcbiAgc3ViZmxvd05hbWU/OiBzdHJpbmc7XG4gIHN1YmZsb3dTdHJ1Y3R1cmU/OiBTZXJpYWxpemVkUGlwZWxpbmVTdHJ1Y3R1cmU7XG4gIGl0ZXJhdGlvbkNvdW50PzogbnVtYmVyO1xufVxuXG4vLyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbi8vIEZsb3dDaGFydFNwZWMgKHB1cmUgSlNPTiwgbm8gZnVuY3Rpb25zIOKAlCBmb3IgRkXihpJCRSB0cmFuc3BvcnQpXG4vLyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcblxuZXhwb3J0IGludGVyZmFjZSBGbG93Q2hhcnRTcGVjIHtcbiAgbmFtZTogc3RyaW5nO1xuICBpZD86IHN0cmluZztcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIGNoaWxkcmVuPzogRmxvd0NoYXJ0U3BlY1tdO1xuICBuZXh0PzogRmxvd0NoYXJ0U3BlYztcbiAgaGFzRGVjaWRlcj86IGJvb2xlYW47XG4gIGhhc1NlbGVjdG9yPzogYm9vbGVhbjtcbiAgYnJhbmNoSWRzPzogc3RyaW5nW107XG4gIGxvb3BUYXJnZXQ/OiBzdHJpbmc7XG4gIGlzU3RyZWFtaW5nPzogYm9vbGVhbjtcbiAgc3RyZWFtSWQ/OiBzdHJpbmc7XG4gIGlzUGFyYWxsZWxDaGlsZD86IGJvb2xlYW47XG4gIHBhcmFsbGVsR3JvdXBJZD86IHN0cmluZztcbiAgaXNTdWJmbG93Um9vdD86IGJvb2xlYW47XG4gIHN1YmZsb3dJZD86IHN0cmluZztcbiAgc3ViZmxvd05hbWU/OiBzdHJpbmc7XG59XG5cbi8vIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuLy8gQnVpbGQtVGltZSBFeHRyYWN0b3Jcbi8vIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuXG4vKiogTWV0YWRhdGEgcHJvdmlkZWQgdG8gdGhlIGJ1aWxkLXRpbWUgZXh0cmFjdG9yIGZvciBlYWNoIG5vZGUuICovXG5leHBvcnQgdHlwZSBCdWlsZFRpbWVOb2RlTWV0YWRhdGEgPSBGbG93Q2hhcnRTcGVjO1xuXG5leHBvcnQgdHlwZSBCdWlsZFRpbWVFeHRyYWN0b3I8VFJlc3VsdCA9IEZsb3dDaGFydFNwZWM+ID0gKG1ldGFkYXRhOiBCdWlsZFRpbWVOb2RlTWV0YWRhdGEpID0+IFRSZXN1bHQ7XG5cbi8vIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuLy8gVHJhdmVyc2FsIEV4dHJhY3RvciAocnVudGltZSlcbi8vIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuXG5leHBvcnQgdHlwZSBUcmF2ZXJzYWxFeHRyYWN0b3I8VFJlc3VsdCA9IHVua25vd24+ID0gKHNuYXBzaG90OiB1bmtub3duKSA9PiBUUmVzdWx0IHwgdW5kZWZpbmVkIHwgbnVsbDtcblxuLy8g4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG4vLyBGbG93Q2hhcnQg4oCUIGNvbXBpbGVkIG91dHB1dCBvZiBidWlsZCgpXG4vLyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcblxuZXhwb3J0IHR5cGUgRmxvd0NoYXJ0PFRPdXQgPSBhbnksIFRTY29wZSA9IGFueT4gPSB7XG4gIHJvb3Q6IFN0YWdlTm9kZTxUT3V0LCBUU2NvcGU+O1xuICBzdGFnZU1hcDogTWFwPHN0cmluZywgUGlwZWxpbmVTdGFnZUZ1bmN0aW9uPFRPdXQsIFRTY29wZT4+O1xuICBleHRyYWN0b3I/OiBUcmF2ZXJzYWxFeHRyYWN0b3I7XG4gIHN1YmZsb3dzPzogUmVjb3JkPHN0cmluZywgeyByb290OiBTdGFnZU5vZGU8VE91dCwgVFNjb3BlPiB9PjtcbiAgYnVpbGRUaW1lU3RydWN0dXJlOiBTZXJpYWxpemVkUGlwZWxpbmVTdHJ1Y3R1cmU7XG4gIGVuYWJsZU5hcnJhdGl2ZT86IGJvb2xlYW47XG4gIGxvZ2dlcj86IElMb2dnZXI7XG4gIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIHN0YWdlRGVzY3JpcHRpb25zOiBNYXA8c3RyaW5nLCBzdHJpbmc+O1xuICAvKiogSW5wdXQgc2NoZW1hIChab2Qgb3IgSlNPTiBTY2hlbWEpIOKAlCBkZWNsYXJlZCB2aWEgc2V0SW5wdXRTY2hlbWEoKS4gKi9cbiAgaW5wdXRTY2hlbWE/OiB1bmtub3duO1xuICAvKiogT3V0cHV0IHNjaGVtYSAoWm9kIG9yIEpTT04gU2NoZW1hKSDigJQgZGVjbGFyZWQgdmlhIHNldE91dHB1dFNjaGVtYSgpLiAqL1xuICBvdXRwdXRTY2hlbWE/OiB1bmtub3duO1xuICAvKiogT3V0cHV0IG1hcHBlciDigJQgZXh0cmFjdHMgcmVzcG9uc2UgZnJvbSBmaW5hbCBzY29wZS4gKi9cbiAgb3V0cHV0TWFwcGVyPzogKGZpbmFsU2NvcGU6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KSA9PiB1bmtub3duO1xufTtcblxuLy8g4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG4vLyBTaW1wbGlmaWVkIFBhcmFsbGVsIFNwZWMgKGZvciBhZGRMaXN0T2ZGdW5jdGlvbilcbi8vIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuXG5leHBvcnQgdHlwZSBTaW1wbGlmaWVkUGFyYWxsZWxTcGVjPFRPdXQgPSBhbnksIFRTY29wZSA9IGFueT4gPSB7XG4gIGlkOiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcbiAgZm4/OiBQaXBlbGluZVN0YWdlRnVuY3Rpb248VE91dCwgVFNjb3BlPjtcbn07XG5cbi8vIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuLy8gRXhlY09wdGlvbnMgKGZvciBleGVjdXRlKCkgY29udmVuaWVuY2Ug4oCUIHVzZWQgYnkgcnVubmVyIGxheWVyKVxuLy8g4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG5cbmV4cG9ydCB0eXBlIEV4ZWNPcHRpb25zID0ge1xuICBkZWZhdWx0cz86IHVua25vd247XG4gIGluaXRpYWw/OiB1bmtub3duO1xuICByZWFkT25seT86IHVua25vd247XG4gIHRocm90dGxpbmdFcnJvckNoZWNrZXI/OiAoZTogdW5rbm93bikgPT4gYm9vbGVhbjtcbiAgc2NvcGVQcm90ZWN0aW9uTW9kZT86IFNjb3BlUHJvdGVjdGlvbk1vZGU7XG4gIGVuYWJsZU5hcnJhdGl2ZT86IGJvb2xlYW47XG59O1xuXG4vLyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbi8vIFN1YmZsb3dSZWZcbi8vIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuXG5leHBvcnQgaW50ZXJmYWNlIFN1YmZsb3dSZWYge1xuICAkcmVmOiBzdHJpbmc7XG4gIG1vdW50SWQ6IHN0cmluZztcbn1cbiJdfQ==
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* contract/defineContract.ts — Factory for creating a FlowChartContract.
|
|
4
|
+
*
|
|
5
|
+
* Wraps a compiled FlowChart with I/O schemas and an output mapper,
|
|
6
|
+
* using the same pattern as SubflowMountOptions (inputMapper/outputMapper).
|
|
7
|
+
*
|
|
8
|
+
* Usage:
|
|
9
|
+
* const contract = defineContract(chart, {
|
|
10
|
+
* inputSchema: z.object({ name: z.string() }),
|
|
11
|
+
* outputSchema: z.object({ greeting: z.string() }),
|
|
12
|
+
* outputMapper: (scope) => ({ greeting: scope.message as string }),
|
|
13
|
+
* });
|
|
14
|
+
*
|
|
15
|
+
* const openapi = contract.toOpenAPI();
|
|
16
|
+
*/
|
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
exports.defineContract = void 0;
|
|
19
|
+
const openapi_1 = require("./openapi");
|
|
20
|
+
const schema_1 = require("./schema");
|
|
21
|
+
function defineContract(chart, options) {
|
|
22
|
+
const inputSchema = options.inputSchema ? (0, schema_1.normalizeSchema)(options.inputSchema) : undefined;
|
|
23
|
+
const outputSchema = options.outputSchema ? (0, schema_1.normalizeSchema)(options.outputSchema) : undefined;
|
|
24
|
+
const contract = {
|
|
25
|
+
chart,
|
|
26
|
+
inputSchema,
|
|
27
|
+
outputSchema,
|
|
28
|
+
outputMapper: options.outputMapper,
|
|
29
|
+
toOpenAPI(apiOptions) {
|
|
30
|
+
return (0, openapi_1.generateOpenAPI)(contract, apiOptions);
|
|
31
|
+
},
|
|
32
|
+
};
|
|
33
|
+
return contract;
|
|
34
|
+
}
|
|
35
|
+
exports.defineContract = defineContract;
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmaW5lQ29udHJhY3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2NvbnRyYWN0L2RlZmluZUNvbnRyYWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRzs7O0FBR0gsdUNBQTRDO0FBQzVDLHFDQUEyQztBQUczQyxTQUFnQixjQUFjLENBQzVCLEtBQWdCLEVBQ2hCLE9BQWtEO0lBRWxELE1BQU0sV0FBVyxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUEsd0JBQWUsRUFBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUMzRixNQUFNLFlBQVksR0FBRyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxJQUFBLHdCQUFlLEVBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFFOUYsTUFBTSxRQUFRLEdBQXVDO1FBQ25ELEtBQUs7UUFDTCxXQUFXO1FBQ1gsWUFBWTtRQUNaLFlBQVksRUFBRSxPQUFPLENBQUMsWUFBWTtRQUNsQyxTQUFTLENBQUMsVUFBMkI7WUFDbkMsT0FBTyxJQUFBLHlCQUFlLEVBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQy9DLENBQUM7S0FDRixDQUFDO0lBRUYsT0FBTyxRQUFRLENBQUM7QUFDbEIsQ0FBQztBQWxCRCx3Q0FrQkMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIGNvbnRyYWN0L2RlZmluZUNvbnRyYWN0LnRzIOKAlCBGYWN0b3J5IGZvciBjcmVhdGluZyBhIEZsb3dDaGFydENvbnRyYWN0LlxuICpcbiAqIFdyYXBzIGEgY29tcGlsZWQgRmxvd0NoYXJ0IHdpdGggSS9PIHNjaGVtYXMgYW5kIGFuIG91dHB1dCBtYXBwZXIsXG4gKiB1c2luZyB0aGUgc2FtZSBwYXR0ZXJuIGFzIFN1YmZsb3dNb3VudE9wdGlvbnMgKGlucHV0TWFwcGVyL291dHB1dE1hcHBlcikuXG4gKlxuICogVXNhZ2U6XG4gKiAgIGNvbnN0IGNvbnRyYWN0ID0gZGVmaW5lQ29udHJhY3QoY2hhcnQsIHtcbiAqICAgICBpbnB1dFNjaGVtYTogei5vYmplY3QoeyBuYW1lOiB6LnN0cmluZygpIH0pLFxuICogICAgIG91dHB1dFNjaGVtYTogei5vYmplY3QoeyBncmVldGluZzogei5zdHJpbmcoKSB9KSxcbiAqICAgICBvdXRwdXRNYXBwZXI6IChzY29wZSkgPT4gKHsgZ3JlZXRpbmc6IHNjb3BlLm1lc3NhZ2UgYXMgc3RyaW5nIH0pLFxuICogICB9KTtcbiAqXG4gKiAgIGNvbnN0IG9wZW5hcGkgPSBjb250cmFjdC50b09wZW5BUEkoKTtcbiAqL1xuXG5pbXBvcnQgdHlwZSB7IEZsb3dDaGFydCB9IGZyb20gJy4uL2J1aWxkZXIvdHlwZXMnO1xuaW1wb3J0IHsgZ2VuZXJhdGVPcGVuQVBJIH0gZnJvbSAnLi9vcGVuYXBpJztcbmltcG9ydCB7IG5vcm1hbGl6ZVNjaGVtYSB9IGZyb20gJy4vc2NoZW1hJztcbmltcG9ydCB0eXBlIHsgRmxvd0NoYXJ0Q29udHJhY3QsIEZsb3dDaGFydENvbnRyYWN0T3B0aW9ucywgT3BlbkFQSU9wdGlvbnMsIE9wZW5BUElTcGVjIH0gZnJvbSAnLi90eXBlcyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWZpbmVDb250cmFjdDxUSW5wdXQgPSB1bmtub3duLCBUT3V0cHV0ID0gdW5rbm93bj4oXG4gIGNoYXJ0OiBGbG93Q2hhcnQsXG4gIG9wdGlvbnM6IEZsb3dDaGFydENvbnRyYWN0T3B0aW9uczxUSW5wdXQsIFRPdXRwdXQ+LFxuKTogRmxvd0NoYXJ0Q29udHJhY3Q8VElucHV0LCBUT3V0cHV0PiB7XG4gIGNvbnN0IGlucHV0U2NoZW1hID0gb3B0aW9ucy5pbnB1dFNjaGVtYSA/IG5vcm1hbGl6ZVNjaGVtYShvcHRpb25zLmlucHV0U2NoZW1hKSA6IHVuZGVmaW5lZDtcbiAgY29uc3Qgb3V0cHV0U2NoZW1hID0gb3B0aW9ucy5vdXRwdXRTY2hlbWEgPyBub3JtYWxpemVTY2hlbWEob3B0aW9ucy5vdXRwdXRTY2hlbWEpIDogdW5kZWZpbmVkO1xuXG4gIGNvbnN0IGNvbnRyYWN0OiBGbG93Q2hhcnRDb250cmFjdDxUSW5wdXQsIFRPdXRwdXQ+ID0ge1xuICAgIGNoYXJ0LFxuICAgIGlucHV0U2NoZW1hLFxuICAgIG91dHB1dFNjaGVtYSxcbiAgICBvdXRwdXRNYXBwZXI6IG9wdGlvbnMub3V0cHV0TWFwcGVyLFxuICAgIHRvT3BlbkFQSShhcGlPcHRpb25zPzogT3BlbkFQSU9wdGlvbnMpOiBPcGVuQVBJU3BlYyB7XG4gICAgICByZXR1cm4gZ2VuZXJhdGVPcGVuQVBJKGNvbnRyYWN0LCBhcGlPcHRpb25zKTtcbiAgICB9LFxuICB9O1xuXG4gIHJldHVybiBjb250cmFjdDtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/* istanbul ignore file */
|
|
3
|
+
/**
|
|
4
|
+
* contract/ — FlowChart I/O contract and OpenAPI generation layer.
|
|
5
|
+
*
|
|
6
|
+
* Standalone library: wraps a compiled FlowChart with input/output schemas
|
|
7
|
+
* and generates OpenAPI 3.1 specs. Uses the same inputMapper/outputMapper
|
|
8
|
+
* pattern as subflow mounting.
|
|
9
|
+
*
|
|
10
|
+
* Zero runtime deps on Zod — Zod schemas detected via duck-typing and
|
|
11
|
+
* converted to JSON Schema at contract creation time.
|
|
12
|
+
*/
|
|
13
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
+
exports.generateOpenAPI = exports.zodToJsonSchema = exports.normalizeSchema = exports.isZodSchema = exports.defineContract = void 0;
|
|
15
|
+
// Factory
|
|
16
|
+
var defineContract_1 = require("./defineContract");
|
|
17
|
+
Object.defineProperty(exports, "defineContract", { enumerable: true, get: function () { return defineContract_1.defineContract; } });
|
|
18
|
+
// Schema utilities
|
|
19
|
+
var schema_1 = require("./schema");
|
|
20
|
+
Object.defineProperty(exports, "isZodSchema", { enumerable: true, get: function () { return schema_1.isZodSchema; } });
|
|
21
|
+
Object.defineProperty(exports, "normalizeSchema", { enumerable: true, get: function () { return schema_1.normalizeSchema; } });
|
|
22
|
+
Object.defineProperty(exports, "zodToJsonSchema", { enumerable: true, get: function () { return schema_1.zodToJsonSchema; } });
|
|
23
|
+
// OpenAPI generator
|
|
24
|
+
var openapi_1 = require("./openapi");
|
|
25
|
+
Object.defineProperty(exports, "generateOpenAPI", { enumerable: true, get: function () { return openapi_1.generateOpenAPI; } });
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2NvbnRyYWN0L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSwwQkFBMEI7QUFDMUI7Ozs7Ozs7OztHQVNHOzs7QUFFSCxVQUFVO0FBQ1YsbURBQWtEO0FBQXpDLGdIQUFBLGNBQWMsT0FBQTtBQUV2QixtQkFBbUI7QUFDbkIsbUNBQXlFO0FBQWhFLHFHQUFBLFdBQVcsT0FBQTtBQUFFLHlHQUFBLGVBQWUsT0FBQTtBQUFFLHlHQUFBLGVBQWUsT0FBQTtBQUV0RCxvQkFBb0I7QUFDcEIscUNBQTRDO0FBQW5DLDBHQUFBLGVBQWUsT0FBQSIsInNvdXJjZXNDb250ZW50IjpbIi8qIGlzdGFuYnVsIGlnbm9yZSBmaWxlICovXG4vKipcbiAqIGNvbnRyYWN0LyDigJQgRmxvd0NoYXJ0IEkvTyBjb250cmFjdCBhbmQgT3BlbkFQSSBnZW5lcmF0aW9uIGxheWVyLlxuICpcbiAqIFN0YW5kYWxvbmUgbGlicmFyeTogd3JhcHMgYSBjb21waWxlZCBGbG93Q2hhcnQgd2l0aCBpbnB1dC9vdXRwdXQgc2NoZW1hc1xuICogYW5kIGdlbmVyYXRlcyBPcGVuQVBJIDMuMSBzcGVjcy4gVXNlcyB0aGUgc2FtZSBpbnB1dE1hcHBlci9vdXRwdXRNYXBwZXJcbiAqIHBhdHRlcm4gYXMgc3ViZmxvdyBtb3VudGluZy5cbiAqXG4gKiBaZXJvIHJ1bnRpbWUgZGVwcyBvbiBab2Qg4oCUIFpvZCBzY2hlbWFzIGRldGVjdGVkIHZpYSBkdWNrLXR5cGluZyBhbmRcbiAqIGNvbnZlcnRlZCB0byBKU09OIFNjaGVtYSBhdCBjb250cmFjdCBjcmVhdGlvbiB0aW1lLlxuICovXG5cbi8vIEZhY3RvcnlcbmV4cG9ydCB7IGRlZmluZUNvbnRyYWN0IH0gZnJvbSAnLi9kZWZpbmVDb250cmFjdCc7XG5cbi8vIFNjaGVtYSB1dGlsaXRpZXNcbmV4cG9ydCB7IGlzWm9kU2NoZW1hLCBub3JtYWxpemVTY2hlbWEsIHpvZFRvSnNvblNjaGVtYSB9IGZyb20gJy4vc2NoZW1hJztcblxuLy8gT3BlbkFQSSBnZW5lcmF0b3JcbmV4cG9ydCB7IGdlbmVyYXRlT3BlbkFQSSB9IGZyb20gJy4vb3BlbmFwaSc7XG5cbi8vIFR5cGVzXG5leHBvcnQgdHlwZSB7XG4gIEZsb3dDaGFydENvbnRyYWN0LFxuICBGbG93Q2hhcnRDb250cmFjdE9wdGlvbnMsXG4gIEpzb25TY2hlbWEsXG4gIE9wZW5BUElPcHRpb25zLFxuICBPcGVuQVBJU3BlYyxcbiAgU2NoZW1hSW5wdXQsXG59IGZyb20gJy4vdHlwZXMnO1xuIl19
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* contract/openapi.ts — OpenAPI 3.1 spec generator.
|
|
4
|
+
*
|
|
5
|
+
* Generates an OpenAPI spec from a FlowChartContract by combining:
|
|
6
|
+
* - chart.description → operation description
|
|
7
|
+
* - chart.stageDescriptions → step-by-step detail
|
|
8
|
+
* - inputSchema → requestBody
|
|
9
|
+
* - outputSchema → response
|
|
10
|
+
* - chart.buildTimeStructure → operation metadata (branches, forks, etc.)
|
|
11
|
+
*/
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
exports.generateOpenAPI = void 0;
|
|
14
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
15
|
+
// Internal helpers
|
|
16
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
17
|
+
function slugify(name) {
|
|
18
|
+
return name
|
|
19
|
+
.toLowerCase()
|
|
20
|
+
.replace(/[^a-z0-9]+/g, '-')
|
|
21
|
+
.replace(/^-|-$/g, '');
|
|
22
|
+
}
|
|
23
|
+
function buildStepsDescription(chart) {
|
|
24
|
+
// Walk buildTimeStructure to produce a step-by-step description
|
|
25
|
+
const lines = [];
|
|
26
|
+
let step = 0;
|
|
27
|
+
const walk = (node) => {
|
|
28
|
+
step++;
|
|
29
|
+
const desc = node.description ? ` — ${node.description}` : '';
|
|
30
|
+
if (node.hasDecider && node.branchIds) {
|
|
31
|
+
lines.push(`${step}. ${node.name}${desc} — Decides between: ${node.branchIds.join(', ')}`);
|
|
32
|
+
}
|
|
33
|
+
else if (node.children && node.children.length > 0 && !node.hasDecider) {
|
|
34
|
+
const childNames = node.children.map((c) => c.name).join(', ');
|
|
35
|
+
lines.push(`${step}. ${node.name}${desc} (parallel: ${childNames})`);
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
lines.push(`${step}. ${node.name}${desc}`);
|
|
39
|
+
}
|
|
40
|
+
if (node.children) {
|
|
41
|
+
for (const child of node.children)
|
|
42
|
+
walk(child);
|
|
43
|
+
}
|
|
44
|
+
if (node.next)
|
|
45
|
+
walk(node.next);
|
|
46
|
+
};
|
|
47
|
+
walk(chart.buildTimeStructure);
|
|
48
|
+
const header = chart.description ? `${chart.description}\n\n` : '';
|
|
49
|
+
return `${header}FlowChart: ${chart.root.name}\nSteps:\n${lines.join('\n')}`;
|
|
50
|
+
}
|
|
51
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
52
|
+
// Public API
|
|
53
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
54
|
+
function generateOpenAPI(contract, options) {
|
|
55
|
+
var _a, _b, _c;
|
|
56
|
+
const { chart, inputSchema, outputSchema } = contract;
|
|
57
|
+
const version = (_a = options === null || options === void 0 ? void 0 : options.version) !== null && _a !== void 0 ? _a : '1.0.0';
|
|
58
|
+
const basePath = (_b = options === null || options === void 0 ? void 0 : options.basePath) !== null && _b !== void 0 ? _b : '/';
|
|
59
|
+
const method = (_c = options === null || options === void 0 ? void 0 : options.method) !== null && _c !== void 0 ? _c : 'post';
|
|
60
|
+
const rootName = chart.root.name;
|
|
61
|
+
const operationId = slugify(rootName);
|
|
62
|
+
const path = `${basePath === '/' ? '' : basePath}/${operationId}`;
|
|
63
|
+
const fullDescription = buildStepsDescription(chart);
|
|
64
|
+
// Build schemas for components
|
|
65
|
+
const schemas = {};
|
|
66
|
+
const inputRef = `${rootName}Input`;
|
|
67
|
+
const outputRef = `${rootName}Output`;
|
|
68
|
+
if (inputSchema)
|
|
69
|
+
schemas[inputRef] = inputSchema;
|
|
70
|
+
if (outputSchema)
|
|
71
|
+
schemas[outputRef] = outputSchema;
|
|
72
|
+
// Build operation
|
|
73
|
+
const operation = {
|
|
74
|
+
operationId,
|
|
75
|
+
summary: rootName,
|
|
76
|
+
description: fullDescription,
|
|
77
|
+
...(inputSchema
|
|
78
|
+
? {
|
|
79
|
+
requestBody: {
|
|
80
|
+
required: true,
|
|
81
|
+
content: {
|
|
82
|
+
'application/json': {
|
|
83
|
+
schema: { $ref: `#/components/schemas/${inputRef}` },
|
|
84
|
+
},
|
|
85
|
+
},
|
|
86
|
+
},
|
|
87
|
+
}
|
|
88
|
+
: {}),
|
|
89
|
+
responses: {
|
|
90
|
+
'200': {
|
|
91
|
+
description: 'Successful execution',
|
|
92
|
+
...(outputSchema
|
|
93
|
+
? {
|
|
94
|
+
content: {
|
|
95
|
+
'application/json': {
|
|
96
|
+
schema: { $ref: `#/components/schemas/${outputRef}` },
|
|
97
|
+
},
|
|
98
|
+
},
|
|
99
|
+
}
|
|
100
|
+
: {}),
|
|
101
|
+
},
|
|
102
|
+
'500': {
|
|
103
|
+
description: 'Pipeline execution error',
|
|
104
|
+
},
|
|
105
|
+
},
|
|
106
|
+
};
|
|
107
|
+
const spec = {
|
|
108
|
+
openapi: '3.1.0',
|
|
109
|
+
info: {
|
|
110
|
+
title: rootName,
|
|
111
|
+
description: fullDescription,
|
|
112
|
+
version,
|
|
113
|
+
},
|
|
114
|
+
paths: {
|
|
115
|
+
[path]: {
|
|
116
|
+
[method]: operation,
|
|
117
|
+
},
|
|
118
|
+
},
|
|
119
|
+
...(Object.keys(schemas).length > 0 ? { components: { schemas } } : {}),
|
|
120
|
+
};
|
|
121
|
+
return spec;
|
|
122
|
+
}
|
|
123
|
+
exports.generateOpenAPI = generateOpenAPI;
|
|
124
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BlbmFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvY29udHJhY3Qvb3BlbmFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7OztHQVNHOzs7QUFLSCxnRkFBZ0Y7QUFDaEYsbUJBQW1CO0FBQ25CLGdGQUFnRjtBQUVoRixTQUFTLE9BQU8sQ0FBQyxJQUFZO0lBQzNCLE9BQU8sSUFBSTtTQUNSLFdBQVcsRUFBRTtTQUNiLE9BQU8sQ0FBQyxhQUFhLEVBQUUsR0FBRyxDQUFDO1NBQzNCLE9BQU8sQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDM0IsQ0FBQztBQUVELFNBQVMscUJBQXFCLENBQUMsS0FBZ0I7SUFDN0MsZ0VBQWdFO0lBQ2hFLE1BQU0sS0FBSyxHQUFhLEVBQUUsQ0FBQztJQUMzQixJQUFJLElBQUksR0FBRyxDQUFDLENBQUM7SUFFYixNQUFNLElBQUksR0FBRyxDQUFDLElBQWlDLEVBQUUsRUFBRTtRQUNqRCxJQUFJLEVBQUUsQ0FBQztRQUNQLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLE1BQU0sSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFFOUQsSUFBSSxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUN0QyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxLQUFLLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSx1QkFBdUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzdGLENBQUM7YUFBTSxJQUFJLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3pFLE1BQU0sVUFB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LGtCQUFrQixFQUFFOzRCQUNsQixNQUFNLEVBQUUsRUFBRSxJQUFJLEVBQUUsd0JBQXdCLFFBQVEsRUFBRSxFQUFFO3lCQUNyRDtxQkFDRjtpQkFDRjthQUNGO1lBQ0gsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNQLFNBQVMsRUFBRTtZQUNULEtBQUssRUFBRTtnQkFDTCxXQUFXLEVBQUUsc0JBQXNCO2dCQUNuQyxHQUFHLENBQUMsWUFBWTtvQkFDZCxDQUFDLENBQUM7d0JBQ0UsT0FBTyxFQUFFOzRCQUNQLGtCQUFrQixFQUFFO2dDQUNsQixNQUFNLEVBQUUsRUFBRSxJQUFJLEVBQUUsd0JBQXdCLFNBQVMsRUFBRSxFQUFFOzZCQUN0RDt5QkFDRjtxQkFDRjtvQkFDSCxDQUFDLENBQUMsRUFBRSxDQUFDO2FBQ1I7WUFDRCxLQUFLLEVBQUU7Z0JBQ0wsV0FBVyxFQUFFLDBCQUEwQjthQUN4QztTQUNGO0tBQ0YsQ0FBQztJQUVGLE1BQU0sSUFBSSxHQUFnQjtRQUN4QixPQUFPLEVBQUUsT0FBTztRQUNoQixJQUFJLEVBQUU7WUFDSixLQUFLLEVBQUUsUUFBUTtZQUNmLFdBQVcsRUFBRSxlQUFlO1lBQzVCLE9BQU87U0FDUjtRQUNELEtBQUssRUFBRTtZQUNMLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQ04sQ0FBQyxNQUFNLENBQUMsRUFBRSxTQUFTO2FBQ3BCO1NBQ0Y7UUFDRCxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLFVBQVUsRUFBRSxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztLQUN4RSxDQUFDO0lBRUYsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDO0FBeEVELDBDQXdFQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogY29udHJhY3Qvb3BlbmFwaS50cyDigJQgT3BlbkFQSSAzLjEgc3BlYyBnZW5lcmF0b3IuXG4gKlxuICogR2VuZXJhdGVzIGFuIE9wZW5BUEkgc3BlYyBmcm9tIGEgRmxvd0NoYXJ0Q29udHJhY3QgYnkgY29tYmluaW5nOlxuICogLSBjaGFydC5kZXNjcmlwdGlvbiDihpIgb3BlcmF0aW9uIGRlc2NyaXB0aW9uXG4gKiAtIGNoYXJ0LnN0YWdlRGVzY3JpcHRpb25zIOKGkiBzdGVwLWJ5LXN0ZXAgZGV0YWlsXG4gKiAtIGlucHV0U2NoZW1hIOKGkiByZXF1ZXN0Qm9keVxuICogLSBvdXRwdXRTY2hlbWEg4oaSIHJlc3BvbnNlXG4gKiAtIGNoYXJ0LmJ1aWxkVGltZVN0cnVjdHVyZSDihpIgb3BlcmF0aW9uIG1ldGFkYXRhIChicmFuY2hlcywgZm9ya3MsIGV0Yy4pXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBGbG93Q2hhcnQsIFNlcmlhbGl6ZWRQaXBlbGluZVN0cnVjdHVyZSB9IGZyb20gJy4uL2J1aWxkZXIvdHlwZXMnO1xuaW1wb3J0IHR5cGUgeyBGbG93Q2hhcnRDb250cmFjdCwgSnNvblNjaGVtYSwgT3BlbkFQSU9wZXJhdGlvbiwgT3BlbkFQSU9wdGlvbnMsIE9wZW5BUElTcGVjIH0gZnJvbSAnLi90eXBlcyc7XG5cbi8vIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuLy8gSW50ZXJuYWwgaGVscGVyc1xuLy8g4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG5cbmZ1bmN0aW9uIHNsdWdpZnkobmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIG5hbWVcbiAgICAudG9Mb3dlckNhc2UoKVxuICAgIC5yZXBsYWNlKC9bXmEtejAtOV0rL2csICctJylcbiAgICAucmVwbGFjZSgvXi18LSQvZywgJycpO1xufVxuXG5mdW5jdGlvbiBidWlsZFN0ZXBzRGVzY3JpcHRpb24oY2hhcnQ6IEZsb3dDaGFydCk6IHN0cmluZyB7XG4gIC8vIFdhbGsgYnVpbGRUaW1lU3RydWN0dXJlIHRvIHByb2R1Y2UgYSBzdGVwLWJ5LXN0ZXAgZGVzY3JpcHRpb25cbiAgY29uc3QgbGluZXM6IHN0cmluZ1tdID0gW107XG4gIGxldCBzdGVwID0gMDtcblxuICBjb25zdCB3YWxrID0gKG5vZGU6IFNlcmlhbGl6ZWRQaXBlbGluZVN0cnVjdHVyZSkgPT4ge1xuICAgIHN0ZXArKztcbiAgICBjb25zdCBkZXNjID0gbm9kZS5kZXNjcmlwdGlvbiA/IGAg4oCUICR7bm9kZS5kZXNjcmlwdGlvbn1gIDogJyc7XG5cbiAgICBpZiAobm9kZS5oYXNEZWNpZGVyICYmIG5vZGUuYnJhbmNoSWRzKSB7XG4gICAgICBsaW5lcy5wdXNoKGAke3N0ZXB9LiAke25vZGUubmFtZX0ke2Rlc2N9IOKAlCBEZWNpZGVzIGJldHdlZW46ICR7bm9kZS5icmFuY2hJZHMuam9pbignLCAnKX1gKTtcbiAgICB9IGVsc2UgaWYgKG5vZGUuY2hpbGRyZW4gJiYgbm9kZS5jaGlsZHJlbi5sZW5ndGggPiAwICYmICFub2RlLmhhc0RlY2lkZXIpIHtcbiAgICAgIGNvbnN0IGNoaWxkTmFtZXMgPSBub2RlLmNoaWxkcmVuLm1hcCgoYykgPT4gYy5uYW1lKS5qb2luKCcsICcpO1xuICAgICAgbGluZXMucHVzaChgJHtzdGVwfS4gJHtub2RlLm5hbWV9JHtkZXNjfSAocGFyYWxsZWw6ICR7Y2hpbGROYW1lc30pYCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxpbmVzLnB1c2goYCR7c3RlcH0uICR7bm9kZS5uYW1lfSR7ZGVzY31gKTtcbiAgICB9XG5cbiAgICBpZiAobm9kZS5jaGlsZHJlbikge1xuICAgICAgZm9yIChjb25zdCBjaGlsZCBvZiBub2RlLmNoaWxkcmVuKSB3YWxrKGNoaWxkKTtcbiAgICB9XG4gICAgaWYgKG5vZGUubmV4dCkgd2Fsayhub2RlLm5leHQpO1xuICB9O1xuXG4gIHdhbGsoY2hhcnQuYnVpbGRUaW1lU3RydWN0dXJlKTtcblxuICBjb25zdCBoZWFkZXIgPSBjaGFydC5kZXNjcmlwdGlvbiA/IGAke2NoYXJ0LmRlc2NyaXB0aW9ufVxcblxcbmAgOiAnJztcbiAgcmV0dXJuIGAke2hlYWRlcn1GbG93Q2hhcnQ6ICR7Y2hhcnQucm9vdC5uYW1lfVxcblN0ZXBzOlxcbiR7bGluZXMuam9pbignXFxuJyl9YDtcbn1cblxuLy8g4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG4vLyBQdWJsaWMgQVBJXG4vLyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcblxuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlT3BlbkFQSShjb250cmFjdDogRmxvd0NoYXJ0Q29udHJhY3QsIG9wdGlvbnM/OiBPcGVuQVBJT3B0aW9ucyk6IE9wZW5BUElTcGVjIHtcbiAgY29uc3QgeyBjaGFydCwgaW5wdXRTY2hlbWEsIG91dHB1dFNjaGVtYSB9ID0gY29udHJhY3Q7XG4gIGNvbnN0IHZlcnNpb24gPSBvcHRpb25zPy52ZXJzaW9uID8/ICcxLjAuMCc7XG4gIGNvbnN0IGJhc2VQYXRoID0gb3B0aW9ucz8uYmFzZVBhdGggPz8gJy8nO1xuICBjb25zdCBtZXRob2QgPSBvcHRpb25zPy5tZXRob2QgPz8gJ3Bvc3QnO1xuXG4gIGNvbnN0IHJvb3ROYW1lID0gY2hhcnQucm9vdC5uYW1lO1xuICBjb25zdCBvcGVyYXRpb25JZCA9IHNsdWdpZnkocm9vdE5hbWUpO1xuICBjb25zdCBwYXRoID0gYCR7YmFzZVBhdGggPT09ICcvJyA/ICcnIDogYmFzZVBhdGh9LyR7b3BlcmF0aW9uSWR9YDtcblxuICBjb25zdCBmdWxsRGVzY3JpcHRpb24gPSBidWlsZFN0ZXBzRGVzY3JpcHRpb24oY2hhcnQpO1xuXG4gIC8vIEJ1aWxkIHNjaGVtYXMgZm9yIGNvbXBvbmVudHNcbiAgY29uc3Qgc2NoZW1hczogUmVjb3JkPHN0cmluZywgSnNvblNjaGVtYT4gPSB7fTtcbiAgY29uc3QgaW5wdXRSZWYgPSBgJHtyb290TmFtZX1JbnB1dGA7XG4gIGNvbnN0IG91dHB1dFJlZiA9IGAke3Jvb3ROYW1lfU91dHB1dGA7XG5cbiAgaWYgKGlucHV0U2NoZW1hKSBzY2hlbWFzW2lucHV0UmVmXSA9IGlucHV0U2NoZW1hO1xuICBpZiAob3V0cHV0U2NoZW1hKSBzY2hlbWFzW291dHB1dFJlZl0gPSBvdXRwdXRTY2hlbWE7XG5cbiAgLy8gQnVpbGQgb3BlcmF0aW9uXG4gIGNvbnN0IG9wZXJhdGlvbjogT3BlbkFQSU9wZXJhdGlvbiA9IHtcbiAgICBvcGVyYXRpb25JZCxcbiAgICBzdW1tYXJ5OiByb290TmFtZSxcbiAgICBkZXNjcmlwdGlvbjogZnVsbERlc2NyaXB0aW9uLFxuICAgIC4uLihpbnB1dFNjaGVtYVxuICAgICAgPyB7XG4gICAgICAgICAgcmVxdWVzdEJvZHk6IHtcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgICAgY29udGVudDoge1xuICAgICAgICAgICAgICAnYXBwbGljYXRpb24vanNvbic6IHtcbiAgICAgICAgICAgICAgICBzY2hlbWE6IHsgJHJlZjogYCMvY29tcG9uZW50cy9zY2hlbWFzLyR7aW5wdXRSZWZ9YCB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICB9XG4gICAgICA6IHt9KSxcbiAgICByZXNwb25zZXM6IHtcbiAgICAgICcyMDAnOiB7XG4gICAgICAgIGRlc2NyaXB0aW9uOiAnU3VjY2Vzc2Z1bCBleGVjdXRpb24nLFxuICAgICAgICAuLi4ob3V0cHV0U2NoZW1hXG4gICAgICAgICAgPyB7XG4gICAgICAgICAgICAgIGNvbnRlbnQ6IHtcbiAgICAgICAgICAgICAgICAnYXBwbGljYXRpb24vanNvbic6IHtcbiAgICAgICAgICAgICAgICAgIHNjaGVtYTogeyAkcmVmOiBgIy9jb21wb25lbnRzL3NjaGVtYXMvJHtvdXRwdXRSZWZ9YCB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9XG4gICAgICAgICAgOiB7fSksXG4gICAgICB9LFxuICAgICAgJzUwMCc6IHtcbiAgICAgICAgZGVzY3JpcHRpb246ICdQaXBlbGluZSBleGVjdXRpb24gZXJyb3InLFxuICAgICAgfSxcbiAgICB9LFxuICB9O1xuXG4gIGNvbnN0IHNwZWM6IE9wZW5BUElTcGVjID0ge1xuICAgIG9wZW5hcGk6ICczLjEuMCcsXG4gICAgaW5mbzoge1xuICAgICAgdGl0bGU6IHJvb3ROYW1lLFxuICAgICAgZGVzY3JpcHRpb246IGZ1bGxEZXNjcmlwdGlvbixcbiAgICAgIHZlcnNpb24sXG4gICAgfSxcbiAgICBwYXRoczoge1xuICAgICAgW3BhdGhdOiB7XG4gICAgICAgIFttZXRob2RdOiBvcGVyYXRpb24sXG4gICAgICB9LFxuICAgIH0sXG4gICAgLi4uKE9iamVjdC5rZXlzKHNjaGVtYXMpLmxlbmd0aCA+IDAgPyB7IGNvbXBvbmVudHM6IHsgc2NoZW1hcyB9IH0gOiB7fSksXG4gIH07XG5cbiAgcmV0dXJuIHNwZWM7XG59XG4iXX0=
|
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* contract/schema.ts — Schema normalization utilities.
|
|
4
|
+
*
|
|
5
|
+
* Converts Zod schemas or raw JSON Schema objects into a normalized
|
|
6
|
+
* JsonSchema format. Zod detection uses duck-typing (checks for `_def`).
|
|
7
|
+
*
|
|
8
|
+
* Standalone: no dependency on Zod at import time.
|
|
9
|
+
* Compatible with Zod v4 internals.
|
|
10
|
+
*/
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.normalizeSchema = exports.zodToJsonSchema = exports.isZodSchema = void 0;
|
|
13
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
14
|
+
// Zod Detection (duck-typing)
|
|
15
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
16
|
+
function isZodSchema(input) {
|
|
17
|
+
if (!input || typeof input !== 'object')
|
|
18
|
+
return false;
|
|
19
|
+
const obj = input;
|
|
20
|
+
// Zod v4: top-level schema has `def` with a `type` string
|
|
21
|
+
if ('def' in obj && typeof obj.def === 'object' && obj.def !== null) {
|
|
22
|
+
return typeof obj.def.type === 'string';
|
|
23
|
+
}
|
|
24
|
+
// Zod v3 fallback: `_def` with `typeName`
|
|
25
|
+
if ('_def' in obj && typeof obj._def === 'object' && obj._def !== null) {
|
|
26
|
+
return typeof obj._def.type === 'string';
|
|
27
|
+
}
|
|
28
|
+
return false;
|
|
29
|
+
}
|
|
30
|
+
exports.isZodSchema = isZodSchema;
|
|
31
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
32
|
+
// Zod v4 → JSON Schema (minimal converter for common types)
|
|
33
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
34
|
+
/**
|
|
35
|
+
* Get the def object from a Zod schema.
|
|
36
|
+
* In Zod v4, top-level schemas have `.def`, inner types accessed via
|
|
37
|
+
* `_def` or `.def` depending on context.
|
|
38
|
+
*/
|
|
39
|
+
function getDef(zodSchema) {
|
|
40
|
+
// Top-level Zod v4 schema: `.def` property
|
|
41
|
+
if (zodSchema.def && typeof zodSchema.def === 'object') {
|
|
42
|
+
return zodSchema.def;
|
|
43
|
+
}
|
|
44
|
+
// Nested via _def (e.g., when accessing directly)
|
|
45
|
+
if (zodSchema._def && typeof zodSchema._def === 'object') {
|
|
46
|
+
return zodSchema._def;
|
|
47
|
+
}
|
|
48
|
+
return undefined;
|
|
49
|
+
}
|
|
50
|
+
/** Get description from a Zod v4 schema (stored via .description or .meta()) */
|
|
51
|
+
function getDescription(zodSchema) {
|
|
52
|
+
if (typeof zodSchema.description === 'string')
|
|
53
|
+
return zodSchema.description;
|
|
54
|
+
return undefined;
|
|
55
|
+
}
|
|
56
|
+
function zodDefToJsonSchema(def, zodSchema) {
|
|
57
|
+
const typeName = def.type;
|
|
58
|
+
const description = zodSchema ? getDescription(zodSchema) : undefined;
|
|
59
|
+
const base = {};
|
|
60
|
+
if (description)
|
|
61
|
+
base.description = description;
|
|
62
|
+
switch (typeName) {
|
|
63
|
+
case 'string':
|
|
64
|
+
return { ...base, type: 'string' };
|
|
65
|
+
case 'number':
|
|
66
|
+
return { ...base, type: 'number' };
|
|
67
|
+
case 'boolean':
|
|
68
|
+
return { ...base, type: 'boolean' };
|
|
69
|
+
case 'literal': {
|
|
70
|
+
// Zod v4: _def.values is an array of literal values
|
|
71
|
+
const values = def.values;
|
|
72
|
+
if (values && values.length === 1) {
|
|
73
|
+
return { ...base, type: typeof values[0], enum: values };
|
|
74
|
+
}
|
|
75
|
+
return { ...base, enum: values !== null && values !== void 0 ? values : [] };
|
|
76
|
+
}
|
|
77
|
+
case 'enum': {
|
|
78
|
+
// Zod v4: _def.entries is { key: value } object
|
|
79
|
+
const entries = def.entries;
|
|
80
|
+
const values = entries ? Object.values(entries) : [];
|
|
81
|
+
return { ...base, type: 'string', enum: values };
|
|
82
|
+
}
|
|
83
|
+
case 'array': {
|
|
84
|
+
// Zod v4: _def.element is the inner schema object
|
|
85
|
+
const element = def.element;
|
|
86
|
+
const elementDef = element ? getDef(element) : undefined;
|
|
87
|
+
const items = elementDef ? zodDefToJsonSchema(elementDef, element) : {};
|
|
88
|
+
return { ...base, type: 'array', items };
|
|
89
|
+
}
|
|
90
|
+
case 'object': {
|
|
91
|
+
// Zod v4: _def.shape is a direct object (not a function)
|
|
92
|
+
const shape = def.shape;
|
|
93
|
+
if (!shape)
|
|
94
|
+
return { ...base, type: 'object' };
|
|
95
|
+
const properties = {};
|
|
96
|
+
const required = [];
|
|
97
|
+
for (const [key, value] of Object.entries(shape)) {
|
|
98
|
+
const fieldSchema = value;
|
|
99
|
+
const fieldDef = getDef(fieldSchema);
|
|
100
|
+
if (fieldDef) {
|
|
101
|
+
// Check if field is optional or has default
|
|
102
|
+
if (fieldDef.type === 'optional' || fieldDef.type === 'default') {
|
|
103
|
+
const inner = fieldDef.innerType;
|
|
104
|
+
const innerDef = inner ? getDef(inner) : undefined;
|
|
105
|
+
if (innerDef) {
|
|
106
|
+
const schema = zodDefToJsonSchema(innerDef, inner);
|
|
107
|
+
if (fieldDef.type === 'default' && fieldDef.defaultValue !== undefined) {
|
|
108
|
+
schema.default = fieldDef.defaultValue;
|
|
109
|
+
}
|
|
110
|
+
properties[key] = schema;
|
|
111
|
+
}
|
|
112
|
+
else {
|
|
113
|
+
properties[key] = {};
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
else {
|
|
117
|
+
properties[key] = zodDefToJsonSchema(fieldDef, fieldSchema);
|
|
118
|
+
required.push(key);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
return {
|
|
123
|
+
...base,
|
|
124
|
+
type: 'object',
|
|
125
|
+
properties,
|
|
126
|
+
...(required.length > 0 ? { required } : {}),
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
case 'optional': {
|
|
130
|
+
const inner = def.innerType;
|
|
131
|
+
const innerDef = inner ? getDef(inner) : undefined;
|
|
132
|
+
return innerDef ? zodDefToJsonSchema(innerDef, inner) : base;
|
|
133
|
+
}
|
|
134
|
+
case 'default': {
|
|
135
|
+
const inner = def.innerType;
|
|
136
|
+
const innerDef = inner ? getDef(inner) : undefined;
|
|
137
|
+
const schema = innerDef ? zodDefToJsonSchema(innerDef, inner) : base;
|
|
138
|
+
if (def.defaultValue !== undefined) {
|
|
139
|
+
schema.default = def.defaultValue;
|
|
140
|
+
}
|
|
141
|
+
return schema;
|
|
142
|
+
}
|
|
143
|
+
case 'nullable': {
|
|
144
|
+
const inner = def.innerType;
|
|
145
|
+
const innerDef = inner ? getDef(inner) : undefined;
|
|
146
|
+
const schema = innerDef ? zodDefToJsonSchema(innerDef, inner) : {};
|
|
147
|
+
return { ...base, oneOf: [schema, { type: 'null' }] };
|
|
148
|
+
}
|
|
149
|
+
case 'union': {
|
|
150
|
+
const options = def.options;
|
|
151
|
+
if (!options)
|
|
152
|
+
return base;
|
|
153
|
+
return {
|
|
154
|
+
...base,
|
|
155
|
+
oneOf: options
|
|
156
|
+
.map((o) => {
|
|
157
|
+
const oDef = getDef(o);
|
|
158
|
+
return oDef ? zodDefToJsonSchema(oDef, o) : null;
|
|
159
|
+
})
|
|
160
|
+
.filter((s) => s !== null),
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
case 'record': {
|
|
164
|
+
// Zod v4: _def.valueType is the value schema
|
|
165
|
+
const valueType = def.valueType;
|
|
166
|
+
const valueDef = valueType ? getDef(valueType) : undefined;
|
|
167
|
+
return {
|
|
168
|
+
...base,
|
|
169
|
+
type: 'object',
|
|
170
|
+
additionalProperties: valueDef ? zodDefToJsonSchema(valueDef, valueType) : true,
|
|
171
|
+
};
|
|
172
|
+
}
|
|
173
|
+
case 'any':
|
|
174
|
+
return base;
|
|
175
|
+
case 'pipe': {
|
|
176
|
+
// Zod v4: .transform() / .refine() — unwrap to input schema
|
|
177
|
+
const inner = def.in;
|
|
178
|
+
const innerDef = inner ? getDef(inner) : undefined;
|
|
179
|
+
return innerDef ? zodDefToJsonSchema(innerDef, inner) : base;
|
|
180
|
+
}
|
|
181
|
+
default:
|
|
182
|
+
// Unknown Zod type — return empty schema
|
|
183
|
+
return base;
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
/** Convert a Zod schema object to JSON Schema. */
|
|
187
|
+
function zodToJsonSchema(zodSchema) {
|
|
188
|
+
const def = getDef(zodSchema);
|
|
189
|
+
if (!def)
|
|
190
|
+
return {};
|
|
191
|
+
return zodDefToJsonSchema(def, zodSchema);
|
|
192
|
+
}
|
|
193
|
+
exports.zodToJsonSchema = zodToJsonSchema;
|
|
194
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
195
|
+
// Normalize — accepts either Zod or JSON Schema, returns JSON Schema
|
|
196
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
197
|
+
function normalizeSchema(input) {
|
|
198
|
+
if (isZodSchema(input)) {
|
|
199
|
+
return zodToJsonSchema(input);
|
|
200
|
+
}
|
|
201
|
+
// Already a JSON Schema
|
|
202
|
+
return input;
|
|
203
|
+
}
|
|
204
|
+
exports.normalizeSchema = normalizeSchema;
|
|
205
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZW1hLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9jb250cmFjdC9zY2hlbWEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7OztHQVFHOzs7QUFJSCxnRkFBZ0Y7QUFDaEYsOEJBQThCO0FBQzlCLGdGQUFnRjtBQUVoRixTQUFnQixXQUFXLENBQUMsS0FBYztJQUN4QyxJQUFJLENBQUMsS0FBSyxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVE7UUFBRSxPQUFPLEtBQUssQ0FBQztJQUN0RCxNQUFNLEdBQUcsR0FBRyxLQUFnQyxDQUFDO0lBQzdDLDBEQUEwRDtJQUMxRCxJQUFJLEtBQUssSUFBSSxHQUFHLElBQUksT0FBTyxHQUFHLENBQUMsR0FBRyxLQUFLLFFBQVEsSUFBSSxHQUFHLENBQUMsR0FBRyxLQUFLLElBQUksRUFBRSxDQUFDO1FBQ3BFLE9BQU8sT0FBUSxHQUFHLENBQUMsR0FBK0IsQ0FBQyxJQUFJLEtBQUssUUFBUSxDQUFDO0lBQ3ZFLENBQUM7SUFDRCwwQ0FBMEM7SUFDMUMsSUFBSSxNQUFNLElBQUksR0FBRyxJQUFJLE9BQU8sR0FBRyxDQUFDLElBQUksS0FBSyxRQUFRLElBQUksR0FBRyxDQUFDLElBQUksS0FBSyxJQUFJLEVBQUUsQ0FBQztRQUN2RSxPQUFPLE9BQVEsR0FBRyxDQUFDLElBQWdDLENBQUMsSUFBSSxLQUFLLFFBQVEsQ0FBQztJQUN4RSxDQUFDO0lBQ0QsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDO0FBWkQsa0NBWUM7QUFFRCxnRkFBZ0Y7QUFDaEYsNERBQTREO0FBQzVELGdGQUFnRjtBQUVoRjs7OztHQUlHO0FBQ0gsU0FBUyxNQUFNLENBQUMsU0FBa0M7SUFDaEQsMkNBQTJDO0lBQzNDLElBQUksU0FBUyxDQUFDLEdBQUcsSUFBSSxPQUFPLFNBQVMsQ0FBQyxHQUFHLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDdkQsT0FBTyxTQUFTLENBQUMsR0FBOEIsQ0FB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SUM7QUFFRCxnRkFBZ0Y7QUFDaEYscUVBQXFFO0FBQ3JFLGdGQUFnRjtBQUVoRixTQUFnQixlQUFlLENBQUMsS0FBa0I7SUFDaEQsSUFBSSxXQUFXLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUN2QixPQUFPLGVBQWUsQ0FBQyxLQUFnQyxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUNELHdCQUF3QjtJQUN4QixPQUFPLEtBQW1CLENBQUM7QUFDN0IsQ0FBQztBQU5ELDBDQU1DIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBjb250cmFjdC9zY2hlbWEudHMg4oCUIFNjaGVtYSBub3JtYWxpemF0aW9uIHV0aWxpdGllcy5cbiAqXG4gKiBDb252ZXJ0cyBab2Qgc2NoZW1hcyBvciByYXcgSlNPTiBTY2hlbWEgb2JqZWN0cyBpbnRvIGEgbm9ybWFsaXplZFxuICogSnNvblNjaGVtYSBmb3JtYXQuIFpvZCBkZXRlY3Rpb24gdXNlcyBkdWNrLXR5cGluZyAoY2hlY2tzIGZvciBgX2RlZmApLlxuICpcbiAqIFN0YW5kYWxvbmU6IG5vIGRlcGVuZGVuY3kgb24gWm9kIGF0IGltcG9ydCB0aW1lLlxuICogQ29tcGF0aWJsZSB3aXRoIFpvZCB2NCBpbnRlcm5hbHMuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBKc29uU2NoZW1hLCBTY2hlbWFJbnB1dCB9IGZyb20gJy4vdHlwZXMnO1xuXG4vLyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbi8vIFpvZCBEZXRlY3Rpb24gKGR1Y2stdHlwaW5nKVxuLy8g4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG5cbmV4cG9ydCBmdW5jdGlvbiBpc1pvZFNjaGVtYShpbnB1dDogdW5rbm93bik6IGJvb2xlYW4ge1xuICBpZiAoIWlucHV0IHx8IHR5cGVvZiBpbnB1dCAhPT0gJ29iamVjdCcpIHJldHVybiBmYWxzZTtcbiAgY29uc3Qgb2JqID0gaW5wdXQgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIC8vIFpvZCB2NDogdG9wLWxldmVsIHNjaGVtYSBoYXMgYGRlZmAgd2l0aCBhIGB0eXBlYCBzdHJpbmdcbiAgaWYgKCdkZWYnIGluIG9iaiAmJiB0eXBlb2Ygb2JqLmRlZiA9PT0gJ29iamVjdCcgJiYgb2JqLmRlZiAhPT0gbnVsbCkge1xuICAgIHJldHVybiB0eXBlb2YgKG9iai5kZWYgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pLnR5cGUgPT09ICdzdHJpbmcnO1xuICB9XG4gIC8vIFpvZCB2MyBmYWxsYmFjazogYF9kZWZgIHdpdGggYHR5cGVOYW1lYFxuICBpZiAoJ19kZWYnIGluIG9iaiAmJiB0eXBlb2Ygb2JqLl9kZWYgPT09ICdvYmplY3QnICYmIG9iai5fZGVmICE9PSBudWxsKSB7XG4gICAgcmV0dXJuIHR5cGVvZiAob2JqLl9kZWYgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pLnR5cGUgPT09ICdzdHJpbmcnO1xuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cblxuLy8g4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG4vLyBab2QgdjQg4oaSIEpTT04gU2NoZW1hIChtaW5pbWFsIGNvbnZlcnRlciBmb3IgY29tbW9uIHR5cGVzKVxuLy8g4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG5cbi8qKlxuICogR2V0IHRoZSBkZWYgb2JqZWN0IGZyb20gYSBab2Qgc2NoZW1hLlxuICogSW4gWm9kIHY0LCB0b3AtbGV2ZWwgc2NoZW1hcyBoYXZlIGAuZGVmYCwgaW5uZXIgdHlwZXMgYWNjZXNzZWQgdmlhXG4gKiBgX2RlZmAgb3IgYC5kZWZgIGRlcGVuZGluZyBvbiBjb250ZXh0LlxuICovXG5mdW5jdGlvbiBnZXREZWYoem9kU2NoZW1hOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPik6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgdW5kZWZpbmVkIHtcbiAgLy8gVG9wLWxldmVsIFpvZCB2NCBzY2hlbWE6IGAuZGVmYCBwcm9wZXJ0eVxuICBpZiAoem9kU2NoZW1hLmRlZiAmJiB0eXBlb2Ygem9kU2NoZW1hLmRlZiA9PT0gJ29iamVjdCcpIHtcbiAgICByZXR1cm4gem9kU2NoZW1hLmRlZiBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgfVxuICAvLyBOZXN0ZWQgdmlhIF9kZWYgKGUuZy4sIHdoZW4gYWNjZXNzaW5nIGRpcmVjdGx5KVxuICBpZiAoem9kU2NoZW1hLl9kZWYgJiYgdHlwZW9mIHpvZFNjaGVtYS5fZGVmID09PSAnb2JqZWN0Jykge1xuICAgIHJldHVybiB6b2RTY2hlbWEuX2RlZiBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgfVxuICByZXR1cm4gdW5kZWZpbmVkO1xufVxuXG4vKiogR2V0IGRlc2NyaXB0aW9uIGZyb20gYSBab2QgdjQgc2NoZW1hIChzdG9yZWQgdmlhIC5kZXNjcmlwdGlvbiBvciAubWV0YSgpKSAqL1xuZnVuY3Rpb24gZ2V0RGVzY3JpcHRpb24oem9kU2NoZW1hOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGlmICh0eXBlb2Ygem9kU2NoZW1hLmRlc2NyaXB0aW9uID09PSAnc3RyaW5nJykgcmV0dXJuIHpvZFNjaGVtYS5kZXNjcmlwdGlvbjtcbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuZnVuY3Rpb24gem9kRGVmVG9Kc29uU2NoZW1hKGRlZjogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sIHpvZFNjaGVtYT86IFJlY29yZDxzdHJpbmcsIHVua25vd24+KTogSnNvblNjaGVtYSB7XG4gIGNvbnN0IHR5cGVOYW1lID0gZGVmLnR5cGUgYXMgc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBjb25zdCBkZXNjcmlwdGlvbiA9IHpvZFNjaGVtYSA/IGdldERlc2NyaXB0aW9uKHpvZFNjaGVtYSkgOiB1bmRlZmluZWQ7XG4gIGNvbnN0IGJhc2U6IEpzb25TY2hlbWEgPSB7fTtcbiAgaWYgKGRlc2NyaXB0aW9uKSBiYXNlLmRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb247XG5cbiAgc3dpdGNoICh0eXBlTmFtZSkge1xuICAgIGNhc2UgJ3N0cmluZyc6XG4gICAgICByZXR1cm4geyAuLi5iYXNlLCB0eXBlOiAnc3RyaW5nJyB9O1xuXG4gICAgY2FzZSAnbnVtYmVyJzpcbiAgICAgIHJldHVybiB7IC4uLmJhc2UsIHR5cGU6ICdudW1iZXInIH07XG5cbiAgICBjYXNlICdib29sZWFuJzpcbiAgICAgIHJldHVybiB7IC4uLmJhc2UsIHR5cGU6ICdib29sZWFuJyB9O1xuXG4gICAgY2FzZSAnbGl0ZXJhbCc6IHtcbiAgICAgIC8vIFpvZCB2NDogX2RlZi52YWx1ZXMgaXMgYW4gYXJyYXkgb2YgbGl0ZXJhbCB2YWx1ZXNcbiAgICAgIGNvbnN0IHZhbHVlcyA9IGRlZi52YWx1ZXMgYXMgdW5rbm93bltdIHwgdW5kZWZpbmVkO1xuICAgICAgaWYgKHZhbHVlcyAmJiB2YWx1ZXMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIHJldHVybiB7IC4uLmJhc2UsIHR5cGU6IHR5cGVvZiB2YWx1ZXNbMF0sIGVudW06IHZhbHVlcyB9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHsgLi4uYmFzZSwgZW51bTogdmFsdWVzID8/IFtdIH07XG4gICAgfVxuXG4gICAgY2FzZSAnZW51bSc6IHtcbiAgICAgIC8vIFpvZCB2NDogX2RlZi5lbnRyaWVzIGlzIHsga2V5OiB2YWx1ZSB9IG9iamVjdFxuICAgICAgY29uc3QgZW50cmllcyA9IGRlZi5lbnRyaWVzIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgdW5kZWZpbmVkO1xuICAgICAgY29uc3QgdmFsdWVzID0gZW50cmllcyA/IE9iamVjdC52YWx1ZXMoZW50cmllcykgOiBbXTtcbiAgICAgIHJldHVybiB7IC4uLmJhc2UsIHR5cGU6ICdzdHJpbmcnLCBlbnVtOiB2YWx1ZXMgfTtcbiAgICB9XG5cbiAgICBjYXNlICdhcnJheSc6IHtcbiAgICAgIC8vIFpvZCB2NDogX2RlZi5lbGVtZW50IGlzIHRoZSBpbm5lciBzY2hlbWEgb2JqZWN0XG4gICAgICBjb25zdCBlbGVtZW50ID0gZGVmLmVsZW1lbnQgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfCB1bmRlZmluZWQ7XG4gICAgICBjb25zdCBlbGVtZW50RGVmID0gZWxlbWVudCA/IGdldERlZihlbGVtZW50KSA6IHVuZGVmaW5lZDtcbiAgICAgIGNvbnN0IGl0ZW1zID0gZWxlbWVudERlZiA/IHpvZERlZlRvSnNvblNjaGVtYShlbGVtZW50RGVmLCBlbGVtZW50KSA6IHt9O1xuICAgICAgcmV0dXJuIHsgLi4uYmFzZSwgdHlwZTogJ2FycmF5JywgaXRlbXMgfTtcbiAgICB9XG5cbiAgICBjYXNlICdvYmplY3QnOiB7XG4gICAgICAvLyBab2QgdjQ6IF9kZWYuc2hhcGUgaXMgYSBkaXJlY3Qgb2JqZWN0IChub3QgYSBmdW5jdGlvbilcbiAgICAgIGNvbnN0IHNoYXBlID0gZGVmLnNoYXBlIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgdW5kZWZpbmVkO1xuICAgICAgaWYgKCFzaGFwZSkgcmV0dXJuIHsgLi4uYmFzZSwgdHlwZTogJ29iamVjdCcgfTtcblxuICAgICAgY29uc3QgcHJvcGVydGllczogUmVjb3JkPHN0cmluZywgSnNvblNjaGVtYT4gPSB7fTtcbiAgICAgIGNvbnN0IHJlcXVpcmVkOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhzaGFwZSkpIHtcbiAgICAgICAgY29uc3QgZmllbGRTY2hlbWEgPSB2YWx1ZSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgICAgICAgY29uc3QgZmllbGREZWYgPSBnZXREZWYoZmllbGRTY2hlbWEpO1xuICAgICAgICBpZiAoZmllbGREZWYpIHtcbiAgICAgICAgICAvLyBDaGVjayBpZiBmaWVsZCBpcyBvcHRpb25hbCBvciBoYXMgZGVmYXVsdFxuICAgICAgICAgIGlmIChmaWVsZERlZi50eXBlID09PSAnb3B0aW9uYWwnIHx8IGZpZWxkRGVmLnR5cGUgPT09ICdkZWZhdWx0Jykge1xuICAgICAgICAgICAgY29uc3QgaW5uZXIgPSBmaWVsZERlZi5pbm5lclR5cGUgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfCB1bmRlZmluZWQ7XG4gICAgICAgICAgICBjb25zdCBpbm5lckRlZiA9IGlubmVyID8gZ2V0RGVmKGlubmVyKSA6IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIGlmIChpbm5lckRlZikge1xuICAgICAgICAgICAgICBjb25zdCBzY2hlbWEgPSB6b2REZWZUb0pzb25TY2hlbWEoaW5uZXJEZWYsIGlubmVyKTtcbiAgICAgICAgICAgICAgaWYgKGZpZWxkRGVmLnR5cGUgPT09ICdkZWZhdWx0JyAmJiBmaWVsZERlZi5kZWZhdWx0VmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHNjaGVtYS5kZWZhdWx0ID0gZmllbGREZWYuZGVmYXVsdFZhbHVlO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHByb3BlcnRpZXNba2V5XSA9IHNjaGVtYTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHByb3BlcnRpZXNba2V5XSA9IHt9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwcm9wZXJ0aWVzW2tleV0gPSB6b2REZWZUb0pzb25TY2hlbWEoZmllbGREZWYsIGZpZWxkU2NoZW1hKTtcbiAgICAgICAgICAgIHJlcXVpcmVkLnB1c2goa2V5KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uYmFzZSxcbiAgICAgICAgdHlwZTogJ29iamVjdCcsXG4gICAgICAgIHByb3BlcnRpZXMsXG4gICAgICAgIC4uLihyZXF1aXJlZC5sZW5ndGggPiAwID8geyByZXF1aXJlZCB9IDoge30pLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBjYXNlICdvcHRpb25hbCc6IHtcbiAgICAgIGNvbnN0IGlubmVyID0gZGVmLmlubmVyVHlwZSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IHVuZGVmaW5lZDtcbiAgICAgIGNvbnN0IGlubmVyRGVmID0gaW5uZXIgPyBnZXREZWYoaW5uZXIpIDogdW5kZWZpbmVkO1xuICAgICAgcmV0dXJuIGlubmVyRGVmID8gem9kRGVmVG9Kc29uU2NoZW1hKGlubmVyRGVmLCBpbm5lcikgOiBiYXNlO1xuICAgIH1cblxuICAgIGNhc2UgJ2RlZmF1bHQnOiB7XG4gICAgICBjb25zdCBpbm5lciA9IGRlZi5pbm5lclR5cGUgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfCB1bmRlZmluZWQ7XG4gICAgICBjb25zdCBpbm5lckRlZiA9IGlubmVyID8gZ2V0RGVmKGlubmVyKSA6IHVuZGVmaW5lZDtcbiAgICAgIGNvbnN0IHNjaGVtYSA9IGlubmVyRGVmID8gem9kRGVmVG9Kc29uU2NoZW1hKGlubmVyRGVmLCBpbm5lcikgOiBiYXNlO1xuICAgICAgaWYgKGRlZi5kZWZhdWx0VmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBzY2hlbWEuZGVmYXVsdCA9IGRlZi5kZWZhdWx0VmFsdWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gc2NoZW1hO1xuICAgIH1cblxuICAgIGNhc2UgJ251bGxhYmxlJzoge1xuICAgICAgY29uc3QgaW5uZXIgPSBkZWYuaW5uZXJUeXBlIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgdW5kZWZpbmVkO1xuICAgICAgY29uc3QgaW5uZXJEZWYgPSBpbm5lciA/IGdldERlZihpbm5lcikgOiB1bmRlZmluZWQ7XG4gICAgICBjb25zdCBzY2hlbWEgPSBpbm5lckRlZiA/IHpvZERlZlRvSnNvblNjaGVtYShpbm5lckRlZiwgaW5uZXIpIDoge307XG4gICAgICByZXR1cm4geyAuLi5iYXNlLCBvbmVPZjogW3NjaGVtYSwgeyB0eXBlOiAnbnVsbCcgfV0gfTtcbiAgICB9XG5cbiAgICBjYXNlICd1bmlvbic6IHtcbiAgICAgIGNvbnN0IG9wdGlvbnMgPSBkZWYub3B0aW9ucyBhcyBBcnJheTxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4gfCB1bmRlZmluZWQ7XG4gICAgICBpZiAoIW9wdGlvbnMpIHJldHVybiBiYXNlO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uYmFzZSxcbiAgICAgICAgb25lT2Y6IG9wdGlvbnNcbiAgICAgICAgICAubWFwKChvKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBvRGVmID0gZ2V0RGVmKG8pO1xuICAgICAgICAgICAgcmV0dXJuIG9EZWYgPyB6b2REZWZUb0pzb25TY2hlbWEob0RlZiwgbykgOiBudWxsO1xuICAgICAgICAgIH0pXG4gICAgICAgICAgLmZpbHRlcigocyk6IHMgaXMgSnNvblNjaGVtYSA9PiBzICE9PSBudWxsKSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgY2FzZSAncmVjb3JkJzoge1xuICAgICAgLy8gWm9kIHY0OiBfZGVmLnZhbHVlVHlwZSBpcyB0aGUgdmFsdWUgc2NoZW1hXG4gICAgICBjb25zdCB2YWx1ZVR5cGUgPSBkZWYudmFsdWVUeXBlIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgdW5kZWZpbmVkO1xuICAgICAgY29uc3QgdmFsdWVEZWYgPSB2YWx1ZVR5cGUgPyBnZXREZWYodmFsdWVUeXBlKSA6IHVuZGVmaW5lZDtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLmJhc2UsXG4gICAgICAgIHR5cGU6ICdvYmplY3QnLFxuICAgICAgICBhZGRpdGlvbmFsUHJvcGVydGllczogdmFsdWVEZWYgPyB6b2REZWZUb0pzb25TY2hlbWEodmFsdWVEZWYsIHZhbHVlVHlwZSkgOiB0cnVlLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBjYXNlICdhbnknOlxuICAgICAgcmV0dXJuIGJhc2U7XG5cbiAgICBjYXNlICdwaXBlJzoge1xuICAgICAgLy8gWm9kIHY0OiAudHJhbnNmb3JtKCkgLyAucmVmaW5lKCkg4oCUIHVud3JhcCB0byBpbnB1dCBzY2hlbWFcbiAgICAgIGNvbnN0IGlubmVyID0gZGVmLmluIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgdW5kZWZpbmVkO1xuICAgICAgY29uc3QgaW5uZXJEZWYgPSBpbm5lciA/IGdldERlZihpbm5lcikgOiB1bmRlZmluZWQ7XG4gICAgICByZXR1cm4gaW5uZXJEZWYgPyB6b2REZWZUb0pzb25TY2hlbWEoaW5uZXJEZWYsIGlubmVyKSA6IGJhc2U7XG4gICAgfVxuXG4gICAgZGVmYXVsdDpcbiAgICAgIC8vIFVua25vd24gWm9kIHR5cGUg4oCUIHJldHVybiBlbXB0eSBzY2hlbWFcbiAgICAgIHJldHVybiBiYXNlO1xuICB9XG59XG5cbi8qKiBDb252ZXJ0IGEgWm9kIHNjaGVtYSBvYmplY3QgdG8gSlNPTiBTY2hlbWEuICovXG5leHBvcnQgZnVuY3Rpb24gem9kVG9Kc29uU2NoZW1hKHpvZFNjaGVtYTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pOiBKc29uU2NoZW1hIHtcbiAgY29uc3QgZGVmID0gZ2V0RGVmKHpvZFNjaGVtYSk7XG4gIGlmICghZGVmKSByZXR1cm4ge307XG4gIHJldHVybiB6b2REZWZUb0pzb25TY2hlbWEoZGVmLCB6b2RTY2hlbWEpO1xufVxuXG4vLyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbi8vIE5vcm1hbGl6ZSDigJQgYWNjZXB0cyBlaXRoZXIgWm9kIG9yIEpTT04gU2NoZW1hLCByZXR1cm5zIEpTT04gU2NoZW1hXG4vLyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcblxuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZVNjaGVtYShpbnB1dDogU2NoZW1hSW5wdXQpOiBKc29uU2NoZW1hIHtcbiAgaWYgKGlzWm9kU2NoZW1hKGlucHV0KSkge1xuICAgIHJldHVybiB6b2RUb0pzb25TY2hlbWEoaW5wdXQgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pO1xuICB9XG4gIC8vIEFscmVhZHkgYSBKU09OIFNjaGVtYVxuICByZXR1cm4gaW5wdXQgYXMgSnNvblNjaGVtYTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* contract/types.ts — Types for the FlowChart contract layer.
|
|
4
|
+
*
|
|
5
|
+
* Defines the I/O boundary for a flowchart: input schema, output schema,
|
|
6
|
+
* and output mapper. Uses the same pattern as SubflowMountOptions
|
|
7
|
+
* (inputMapper/outputMapper) but at the top-level flowchart boundary.
|
|
8
|
+
*/
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2NvbnRyYWN0L3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7O0dBTUciLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIGNvbnRyYWN0L3R5cGVzLnRzIOKAlCBUeXBlcyBmb3IgdGhlIEZsb3dDaGFydCBjb250cmFjdCBsYXllci5cbiAqXG4gKiBEZWZpbmVzIHRoZSBJL08gYm91bmRhcnkgZm9yIGEgZmxvd2NoYXJ0OiBpbnB1dCBzY2hlbWEsIG91dHB1dCBzY2hlbWEsXG4gKiBhbmQgb3V0cHV0IG1hcHBlci4gVXNlcyB0aGUgc2FtZSBwYXR0ZXJuIGFzIFN1YmZsb3dNb3VudE9wdGlvbnNcbiAqIChpbnB1dE1hcHBlci9vdXRwdXRNYXBwZXIpIGJ1dCBhdCB0aGUgdG9wLWxldmVsIGZsb3djaGFydCBib3VuZGFyeS5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IEZsb3dDaGFydCB9IGZyb20gJy4uL2J1aWxkZXIvdHlwZXMnO1xuXG4vLyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbi8vIEpTT04gU2NoZW1hIChzdWJzZXQgb2YgSlNPTiBTY2hlbWEgRHJhZnQgMjAyMC0xMiAvIE9wZW5BUEkgMy4xKVxuLy8g4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG5cbmV4cG9ydCB0eXBlIEpzb25TY2hlbWEgPSB7XG4gIHR5cGU/OiBzdHJpbmcgfCBzdHJpbmdbXTtcbiAgcHJvcGVydGllcz86IFJlY29yZDxzdHJpbmcsIEpzb25TY2hlbWE+O1xuICByZXF1aXJlZD86IHN0cmluZ1tdO1xuICBpdGVtcz86IEpzb25TY2hlbWE7XG4gIGVudW0/OiB1bmtub3duW107XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICBkZWZhdWx0PzogdW5rbm93bjtcbiAgZm9ybWF0Pzogc3RyaW5nO1xuICBhZGRpdGlvbmFsUHJvcGVydGllcz86IGJvb2xlYW4gfCBKc29uU2NoZW1hO1xuICBvbmVPZj86IEpzb25TY2hlbWFbXTtcbiAgYW55T2Y/OiBKc29uU2NoZW1hW107XG4gIGFsbE9mPzogSnNvblNjaGVtYVtdO1xuICAkcmVmPzogc3RyaW5nO1xuICBba2V5OiBzdHJpbmddOiB1bmtub3duO1xufTtcblxuLy8g4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG4vLyBTY2hlbWEgSW5wdXQg4oCUIGFjY2VwdHMgZWl0aGVyIFpvZCBzY2hlbWEgb3IgcmF3IEpTT04gU2NoZW1hXG4vLyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcblxuLyoqIEFueXRoaW5nIHdpdGggYSBgZGVmYCAoWm9kIHY0KSBvciBgX2RlZmAgKFpvZCB2MykgcHJvcGVydHkgaXMgdHJlYXRlZCBhcyBhIFpvZCBzY2hlbWEuICovXG5leHBvcnQgdHlwZSBTY2hlbWFJbnB1dCA9IEpzb25TY2hlbWEgfCB7IGRlZjogdW5rbm93bjsgW2tleTogc3RyaW5nXTogdW5rbm93biB9O1xuXG4vLyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcbi8vIEZsb3dDaGFydCBDb250cmFjdCDigJQgSS9PIGJvdW5kYXJ5IGRlZmluaXRpb25cbi8vIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuXG5leHBvcnQgaW50ZXJmYWNlIEZsb3dDaGFydENvbnRyYWN0T3B0aW9uczxUSW5wdXQgPSB1bmtub3duLCBUT3V0cHV0ID0gdW5rbm93bj4ge1xuICAvKiogU2NoZW1hIGRlc2NyaWJpbmcgdGhlIGlucHV0IChyZWFkT25seUNvbnRleHQpIHNoYXBlLiBab2Qgb3IgSlNPTiBTY2hlbWEuICovXG4gIGlucHV0U2NoZW1hPzogU2NoZW1hSW5wdXQ7XG4gIC8qKiBTY2hlbWEgZGVzY3JpYmluZyB0aGUgb3V0cHV0IHNoYXBlLiBab2Qgb3IgSlNPTiBTY2hlbWEuICovXG4gIG91dHB1dFNjaGVtYT86IFNjaGVtYUlucHV0O1xuICAvKiogTWFwcyB0aGUgZmluYWwgc2NvcGUgc3RhdGUgaW50byB0aGUgcmVzcG9uc2Ugc2hhcGUuICovXG4gIG91dHB1dE1hcHBlcj86IChmaW5hbFNjb3BlOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikgPT4gVE91dHB1dDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGbG93Q2hhcnRDb250cmFjdDxUSW5wdXQgPSB1bmtub3duLCBUT3V0cHV0ID0gdW5rbm93bj4ge1xuICAvKiogVGhlIGNvbXBpbGVkIGZsb3djaGFydC4gKi9cbiAgY2hhcnQ6IEZsb3dDaGFydDtcbiAgLyoqIEpTT04gU2NoZW1hIGZvciB0aGUgaW5wdXQgKG5vcm1hbGl6ZWQgZnJvbSBab2Qgb3IgcmF3KS4gKi9cbiAgaW5wdXRTY2hlbWE/OiBKc29uU2NoZW1hO1xuICAvKiogSlNPTiBTY2hlbWEgZm9yIHRoZSBvdXRwdXQgKG5vcm1hbGl6ZWQgZnJvbSBab2Qgb3IgcmF3KS4gKi9cbiAgb3V0cHV0U2NoZW1hPzogSnNvblNjaGVtYTtcbiAgLyoqIE1hcHMgdGhlIGZpbmFsIHNjb3BlIHN0YXRlIGludG8gdGhlIHJlc3BvbnNlIHNoYXBlLiAqL1xuICBvdXRwdXRNYXBwZXI/OiAoZmluYWxTY29wZTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pID0+IFRPdXRwdXQ7XG4gIC8qKiBBdXRvLWdlbmVyYXRlZCBPcGVuQVBJIHNwZWMuICovXG4gIHRvT3BlbkFQSShvcHRpb25zPzogT3BlbkFQSU9wdGlvbnMpOiBPcGVuQVBJU3BlYztcbn1cblxuLy8g4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG4vLyBPcGVuQVBJIFR5cGVzIChtaW5pbWFsIHN1YnNldCBvZiBPcGVuQVBJIDMuMSlcbi8vIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuXG5leHBvcnQgaW50ZXJmYWNlIE9wZW5BUElPcHRpb25zIHtcbiAgLyoqIEFQSSB2ZXJzaW9uIHN0cmluZyAoZGVmYXVsdDogXCIxLjAuMFwiKS4gKi9cbiAgdmVyc2lvbj86IHN0cmluZztcbiAgLyoqIEJhc2UgcGF0aCBwcmVmaXggKGRlZmF1bHQ6IFwiL1wiKS4gKi9cbiAgYmFzZVBhdGg/OiBzdHJpbmc7XG4gIC8qKiBIVFRQIG1ldGhvZCBmb3IgdGhlIGV4ZWN1dGUgZW5kcG9pbnQgKGRlZmF1bHQ6IFwicG9zdFwiKS4gKi9cbiAgbWV0aG9kPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE9wZW5BUElTcGVjIHtcbiAgb3BlbmFwaTogJzMuMS4wJztcbiAgaW5mbzoge1xuICAgIHRpdGxlOiBzdHJpbmc7XG4gICAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgICB2ZXJzaW9uOiBzdHJpbmc7XG4gIH07XG4gIHBhdGhzOiBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBPcGVuQVBJT3BlcmF0aW9uPj47XG4gIGNvbXBvbmVudHM/OiB7XG4gICAgc2NoZW1hcz86IFJlY29yZDxzdHJpbmcsIEpzb25TY2hlbWE+O1xuICB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE9wZW5BUElPcGVyYXRpb24ge1xuICBvcGVyYXRpb25JZDogc3RyaW5nO1xuICBzdW1tYXJ5OiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIHJlcXVlc3RCb2R5Pzoge1xuICAgIHJlcXVpcmVkOiBib29sZWFuO1xuICAgIGNvbnRlbnQ6IHtcbiAgICAgICdhcHBsaWNhdGlvbi9qc29uJzoge1xuICAgICAgICBzY2hlbWE6IEpzb25TY2hlbWEgfCB7ICRyZWY6IHN0cmluZyB9O1xuICAgICAgfTtcbiAgICB9O1xuICB9O1xuICByZXNwb25zZXM6IFJlY29yZDxcbiAgICBzdHJpbmcsXG4gICAge1xuICAgICAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgICAgIGNvbnRlbnQ/OiB7XG4gICAgICAgICdhcHBsaWNhdGlvbi9qc29uJzoge1xuICAgICAgICAgIHNjaGVtYTogSnNvblNjaGVtYSB8IHsgJHJlZjogc3RyaW5nIH07XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH1cbiAgPjtcbn1cbiJdfQ==
|
|
@@ -39,4 +39,4 @@ function isStageNodeReturn(output) {
|
|
|
39
39
|
}
|
|
40
40
|
}
|
|
41
41
|
exports.isStageNodeReturn = isStageNodeReturn;
|
|
42
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
42
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3RhZ2VOb2RlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9lbmdpbmUvZ3JhcGgvU3RhZ2VOb2RlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7O0dBU0c7OztBQXFGSCw4RUFBOEU7QUFDOUUscUVBQXFFO0FBQ3JFLDhFQUE4RTtBQUU5RTs7Ozs7OztHQU9HO0FBQ0gsU0FBZ0IsaUJBQWlCLENBQUMsTUFBZTtJQUMvQyxJQUFJLENBQUMsTUFBTSxJQUFJLE9BQU8sTUFBTSxLQUFLLFFBQVE7UUFBRSxPQUFPLEtBQUssQ0FBQztJQUV4RCxJQUFJLENBQUM7UUFDSCxNQUFNLEdBQUcsR0FBRyxNQUFpQyxDQUFDO1FBQzlDLElBQUksT0FBTyxHQUFHLENBQUMsSUFBSSxLQUFLLFFBQVE7WUFBRSxPQUFPLEtBQUssQ0FBQztRQUUvQyxNQUFNLGVBQWUsR0FDbkIsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsSUFBSSxHQUFHLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7WUFDeEQsR0FBRyxDQUFDLElBQUksS0FBSyxTQUFTO1lBQ3RCLE9BQU8sR0FBRyxDQUFDLGdCQUFnQixLQUFLLFVBQVUsQ0FBQztRQUU3QyxPQUFPLGVBQWUsQ0FBQztJQUN6QixDQUFDO0lBQUMsV0FBTSxDQUFDO1FBQ1AsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0FBQ0gsQ0FBQztBQWhCRCw4Q0FnQkMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFN0YWdlTm9kZSDigJQgVGhlIGdyYXBoIG5vZGUgdHlwZSBmb3IgZmxvd2NoYXJ0IHRyYXZlcnNhbC5cbiAqXG4gKiBEZWZpbmVzIHRoZSBzaGFwZSBvZiBlYWNoIG5vZGUgaW4gdGhlIGZsb3djaGFydCBEQUc6XG4gKiAtIExpbmVhciBjb250aW51YXRpb24gdmlhIGBuZXh0YCAobGlua2VkIGxpc3QgdHJhdmVyc2FsKVxuICogLSBQYXJhbGxlbCBmYW4tb3V0IHZpYSBgY2hpbGRyZW5gIChmb3JrKVxuICogLSBDb25kaXRpb25hbCBicmFuY2hpbmcgdmlhIGBkZWNpZGVyRm5gIChzaW5nbGUtY2hvaWNlKSBvciBgc2VsZWN0b3JGbmAgKG11bHRpLWNob2ljZSlcbiAqIC0gQmFjay1lZGdlcyB2aWEgZHluYW1pYyBuZXh0IChsb29wKVxuICogLSBJc29sYXRlZCBzdWItdHJhdmVyc2FscyB2aWEgYGlzU3ViZmxvd1Jvb3RgIChzdWJmbG93KVxuICovXG5cbmltcG9ydCB0eXBlIHsgU3RhZ2VGdW5jdGlvbiwgU3ViZmxvd01vdW50T3B0aW9ucyB9IGZyb20gJy4uL3R5cGVzJztcblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBEZWNpZGVyICsgU2VsZWN0b3Jcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vKiogUGlja3MgZXhhY3RseSBPTkUgY2hpbGQgYnkgSUQuIENvbmRpdGlvbmFsIGJyYW5jaCAoaWYvc3dpdGNoKS4gKi9cbmV4cG9ydCB0eXBlIERlY2lkZXIgPSAobm9kZUFyZ3M6IGFueSkgPT4gc3RyaW5nIHwgUHJvbWlzZTxzdHJpbmc+O1xuXG4vKipcbiAqIFBpY2tzIE9ORSBPUiBNT1JFIGNoaWxkcmVuIGJ5IElELiBGaWx0ZXJlZCBmYW4tb3V0LlxuICogLSBTaW5nbGUgc3RyaW5nOiBiZWhhdmVzIGxpa2UgRGVjaWRlclxuICogLSBBcnJheTogc2VsZWN0ZWQgY2hpbGRyZW4gZXhlY3V0ZSBpbiBwYXJhbGxlbFxuICogLSBFbXB0eSBhcnJheTogc2tpcCBhbGwgY2hpbGRyZW5cbiAqL1xuZXhwb3J0IHR5cGUgU2VsZWN0b3IgPSAobm9kZUFyZ3M6IGFueSkgPT4gc3RyaW5nIHwgc3RyaW5nW10gfCBQcm9taXNlPHN0cmluZyB8IHN0cmluZ1tdPjtcblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBTdGFnZU5vZGVcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5leHBvcnQgdHlwZSBTdGFnZU5vZGU8VE91dCA9IGFueSwgVFNjb3BlID0gYW55PiA9IHtcbiAgLyoqIEh1bWFuLXJlYWRhYmxlIHN0YWdlIG5hbWU7IGFsc28gdXNlZCBhcyB0aGUgc3RhZ2VNYXAga2V5ICovXG4gIG5hbWU6IHN0cmluZztcbiAgLyoqIE9wdGlvbmFsIHN0YWJsZSBpZCAocmVxdWlyZWQgYnkgZGVjaWRlci9mb3JrIGFnZ3JlZ2F0aW9uKSAqL1xuICBpZD86IHN0cmluZztcbiAgLyoqIERlc2NyaXB0aW9uIG9mIHdoYXQgdGhpcyBzdGFnZSBkb2VzLiBVc2VkIGZvciBuYXJyYXRpdmUgYW5kIHRvb2wgZGVzY3JpcHRpb25zLiAqL1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcblxuICAvLyDilIDilIAgQ29udGludWF0aW9uIHBvaW50ZXJzIOKUgOKUgFxuXG4gIC8qKiBMaW5lYXIgY29udGludWF0aW9uIChsaW5rZWQgbGlzdCBuZXh0IHBvaW50ZXIpICovXG4gIG5leHQ/OiBTdGFnZU5vZGU8VE91dCwgVFNjb3BlPjtcbiAgLyoqIFBhcmFsbGVsIGNoaWxkcmVuIChmb3JrIGZhbi1vdXQpICovXG4gIGNoaWxkcmVuPzogU3RhZ2VOb2RlPFRPdXQsIFRTY29wZT5bXTtcblxuICAvLyDilIDilIAgQnJhbmNoaW5nIOKUgOKUgFxuXG4gIC8qKiBPdXRwdXQtYmFzZWQgc2VsZWN0b3I6IHBpY2tzIHN1YnNldCBvZiBjaGlsZHJlbiAqL1xuICBuZXh0Tm9kZVNlbGVjdG9yPzogU2VsZWN0b3I7XG4gIC8qKiBXaGVuIHRydWUsIGZuIElTIGEgc2NvcGUtYmFzZWQgZGVjaWRlciB0aGF0IHJldHVybnMgYSBicmFuY2ggSUQgc3RyaW5nICovXG4gIGRlY2lkZXJGbj86IGJvb2xlYW47XG4gIC8qKiBXaGVuIHRydWUsIGZuIElTIGEgc2NvcGUtYmFzZWQgc2VsZWN0b3IgdGhhdCByZXR1cm5zIGJyYW5jaCBJRChzKSAqL1xuICBzZWxlY3RvckZuPzogYm9vbGVhbjtcblxuICAvLyDilIDilIAgU3RhZ2UgZnVuY3Rpb24g4pSA4pSAXG5cbiAgLyoqIEVtYmVkZGVkIGZ1bmN0aW9uOyBvdGhlcndpc2UgcmVzb2x2ZWQgZnJvbSBzdGFnZU1hcCBieSBgbmFtZWAgKi9cbiAgZm4/OiBTdGFnZUZ1bmN0aW9uPFRPdXQsIFRTY29wZT47XG5cbiAgLy8g4pSA4pSAIFN0cmVhbWluZyDilIDilIBcblxuICAvKiogV2hlbiB0cnVlLCBQaXBlbGluZSBpbmplY3RzIGEgc3RyZWFtQ2FsbGJhY2sgYXMgM3JkIHBhcmFtZXRlciAqL1xuICBpc1N0cmVhbWluZz86IGJvb2xlYW47XG4gIC8qKiBVbmlxdWUgc3RyZWFtIGlkZW50aWZpZXIgZm9yIHJvdXRpbmcgdG9rZW5zICovXG4gIHN0cmVhbUlkPzogc3RyaW5nO1xuXG4gIC8vIOKUgOKUgCBTdWJmbG93IOKUgOKUgFxuXG4gIC8qKiBUcnVlIGlmIHRoaXMgaXMgdGhlIHJvb3Qgbm9kZSBvZiBhIG1vdW50ZWQgc3ViZmxvdyAqL1xuICBpc1N1YmZsb3dSb290PzogYm9vbGVhbjtcbiAgLyoqIE1vdW50IGlkIG9mIHRoZSBzdWJmbG93IChlLmcuLCBcImxsbS1jb3JlXCIpICovXG4gIHN1YmZsb3dJZD86IHN0cmluZztcbiAgLyoqIERpc3BsYXkgbmFtZSBvZiB0aGUgc3ViZmxvdyAqL1xuICBzdWJmbG93TmFtZT86IHN0cmluZztcbiAgLyoqIFJlZmVyZW5jZSBrZXkgaW50byB0aGUgc3ViZmxvd3MgZGljdGlvbmFyeSAqL1xuICAkcmVmPzogc3RyaW5nO1xuICAvKiogVW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoaXMgbW91bnQgaW5zdGFuY2UgKi9cbiAgbW91bnRJZD86IHN0cmluZztcbiAgLyoqIElucHV0L291dHB1dCBtYXBwaW5nIG9wdGlvbnMgZm9yIHN1YmZsb3dzICovXG4gIHN1YmZsb3dNb3VudE9wdGlvbnM/OiBTdWJmbG93TW91bnRPcHRpb25zO1xuICAvKiogV2hlbiB0cnVlLCBwYXJhbGxlbCBjaGlsZHJlbiB1c2UgZmFpbC1mYXN0IHNlbWFudGljcyAocmVqZWN0IG9uIGZpcnN0IGVycm9yKSAqL1xuICBmYWlsRmFzdD86IGJvb2xlYW47XG5cbiAgLyoqIElubGluZSBzdWJmbG93IGRlZmluaXRpb24gZm9yIGR5bmFtaWMgc3ViZmxvdyBhdHRhY2htZW50ICovXG4gIHN1YmZsb3dEZWY/OiB7XG4gICAgcm9vdDogU3RhZ2VOb2RlO1xuICAgIHN0YWdlTWFwPzogTWFwPHN0cmluZywgU3RhZ2VGdW5jdGlvbjxUT3V0LCBUU2NvcGU+PjtcbiAgICBidWlsZFRpbWVTdHJ1Y3R1cmU/OiB1bmtub3duO1xuICAgIHN1YmZsb3dzPzogUmVjb3JkPHN0cmluZywgeyByb290OiBTdGFnZU5vZGUgfT47XG4gIH07XG59O1xuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIGlzU3RhZ2VOb2RlUmV0dXJuIOKAlCBkdWNrLXR5cGluZyBkZXRlY3Rpb24gZm9yIGR5bmFtaWMgY29udGludWF0aW9uXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLyoqXG4gKiBEZXRlY3RzIGlmIGEgc3RhZ2Ugb3V0cHV0IGlzIGEgU3RhZ2VOb2RlIGZvciBkeW5hbWljIGNvbnRpbnVhdGlvbi5cbiAqXG4gKiBVc2VzIGR1Y2stdHlwaW5nOiBtdXN0IGhhdmUgYG5hbWVgIChzdHJpbmcpIEFORCBhdCBsZWFzdCBvbmUgY29udGludWF0aW9uXG4gKiBwcm9wZXJ0eSAobm9uLWVtcHR5IGNoaWxkcmVuLCBuZXh0LCBvciBuZXh0Tm9kZVNlbGVjdG9yKS5cbiAqXG4gKiBTYWZlbHkgaGFuZGxlcyBwcm94eSBvYmplY3RzIChlLmcuLCBab2Qgc2NvcGUpIHRoYXQgbWF5IHRocm93IG9uIHByb3BlcnR5IGFjY2Vzcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzU3RhZ2VOb2RlUmV0dXJuKG91dHB1dDogdW5rbm93bik6IG91dHB1dCBpcyBTdGFnZU5vZGUge1xuICBpZiAoIW91dHB1dCB8fCB0eXBlb2Ygb3V0cHV0ICE9PSAnb2JqZWN0JykgcmV0dXJuIGZhbHNlO1xuXG4gIHRyeSB7XG4gICAgY29uc3Qgb2JqID0gb3V0cHV0IGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICAgIGlmICh0eXBlb2Ygb2JqLm5hbWUgIT09ICdzdHJpbmcnKSByZXR1cm4gZmFsc2U7XG5cbiAgICBjb25zdCBoYXNDb250aW51YXRpb24gPVxuICAgICAgKEFycmF5LmlzQXJyYXkob2JqLmNoaWxkcmVuKSAmJiBvYmouY2hpbGRyZW4ubGVuZ3RoID4gMCkgfHxcbiAgICAgIG9iai5uZXh0ICE9PSB1bmRlZmluZWQgfHxcbiAgICAgIHR5cGVvZiBvYmoubmV4dE5vZGVTZWxlY3RvciA9PT0gJ2Z1bmN0aW9uJztcblxuICAgIHJldHVybiBoYXNDb250aW51YXRpb247XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuIl19
|