UNPKG

@cdk-cloudformation/freyraim-impactapi-apihandle-module

Version:

Schema for Module Fragment of type FreyrAIM::ImpactApi::ApiHandle::MODULE

318 lines 58 kB
"use strict"; var _a; Object.defineProperty(exports, "__esModule", { value: true }); exports.CfnApiHandleModule = exports.toJson_CfnApiHandleModulePropsResourcesLambdaFunctionCreateRole = exports.toJson_CfnApiHandleModulePropsResourcesImpactApiHandleLambdaFunction = exports.toJson_CfnApiHandleModulePropsResourcesLambdaPermission = exports.toJson_CfnApiHandleModulePropsResourcesDeploymentDocContentPost = exports.toJson_CfnApiHandleModulePropsResourcesApiGatewayCloudWatchLogsAccount = exports.toJson_CfnApiHandleModulePropsResourcesApiGatewayCloudWatchLogsRole = exports.toJson_CfnApiHandleModulePropsResourcesClassifierResource = exports.toJson_CfnApiHandleModulePropsResourcesImpactApi = exports.toJson_CfnApiHandleModulePropsResourcesDocContentResource = exports.toJson_CfnApiHandleModulePropsResourcesDocContentPostMethod = exports.toJson_CfnApiHandleModulePropsParametersSimilarityUrl = exports.toJson_CfnApiHandleModulePropsParametersEndpointName = exports.toJson_CfnApiHandleModulePropsParametersFunctionName = exports.toJson_CfnApiHandleModulePropsParametersImageUri = exports.toJson_CfnApiHandleModulePropsResources = exports.toJson_CfnApiHandleModulePropsParameters = exports.toJson_CfnApiHandleModuleProps = void 0; const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti"); // Generated by cdk-import const cdk = require("aws-cdk-lib"); /** * Converts an object of type 'CfnApiHandleModuleProps' to JSON representation. */ /* eslint-disable max-len, quote-props */ function toJson_CfnApiHandleModuleProps(obj) { if (obj === undefined) { return undefined; } const result = { 'Parameters': toJson_CfnApiHandleModulePropsParameters(obj.parameters), 'Resources': toJson_CfnApiHandleModulePropsResources(obj.resources), }; // filter undefined values return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } exports.toJson_CfnApiHandleModuleProps = toJson_CfnApiHandleModuleProps; /** * Converts an object of type 'CfnApiHandleModulePropsParameters' to JSON representation. */ /* eslint-disable max-len, quote-props */ function toJson_CfnApiHandleModulePropsParameters(obj) { if (obj === undefined) { return undefined; } const result = { 'ImageUri': toJson_CfnApiHandleModulePropsParametersImageUri(obj.imageUri), 'FunctionName': toJson_CfnApiHandleModulePropsParametersFunctionName(obj.functionName), 'EndpointName': toJson_CfnApiHandleModulePropsParametersEndpointName(obj.endpointName), 'SimilarityUrl': toJson_CfnApiHandleModulePropsParametersSimilarityUrl(obj.similarityUrl), }; // filter undefined values return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } exports.toJson_CfnApiHandleModulePropsParameters = toJson_CfnApiHandleModulePropsParameters; /** * Converts an object of type 'CfnApiHandleModulePropsResources' to JSON representation. */ /* eslint-disable max-len, quote-props */ function toJson_CfnApiHandleModulePropsResources(obj) { if (obj === undefined) { return undefined; } const result = { 'DocContentPostMethod': toJson_CfnApiHandleModulePropsResourcesDocContentPostMethod(obj.docContentPostMethod), 'DocContentResource': toJson_CfnApiHandleModulePropsResourcesDocContentResource(obj.docContentResource), 'ImpactApi': toJson_CfnApiHandleModulePropsResourcesImpactApi(obj.impactApi), 'ClassifierResource': toJson_CfnApiHandleModulePropsResourcesClassifierResource(obj.classifierResource), 'ApiGatewayCloudWatchLogsRole': toJson_CfnApiHandleModulePropsResourcesApiGatewayCloudWatchLogsRole(obj.apiGatewayCloudWatchLogsRole), 'ApiGatewayCloudWatchLogsAccount': toJson_CfnApiHandleModulePropsResourcesApiGatewayCloudWatchLogsAccount(obj.apiGatewayCloudWatchLogsAccount), 'DeploymentDocContentPost': toJson_CfnApiHandleModulePropsResourcesDeploymentDocContentPost(obj.deploymentDocContentPost), 'LambdaPermission': toJson_CfnApiHandleModulePropsResourcesLambdaPermission(obj.lambdaPermission), 'ImpactApiHandleLambdaFunction': toJson_CfnApiHandleModulePropsResourcesImpactApiHandleLambdaFunction(obj.impactApiHandleLambdaFunction), 'LambdaFunctionCreateRole': toJson_CfnApiHandleModulePropsResourcesLambdaFunctionCreateRole(obj.lambdaFunctionCreateRole), }; // filter undefined values return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } exports.toJson_CfnApiHandleModulePropsResources = toJson_CfnApiHandleModulePropsResources; /** * Converts an object of type 'CfnApiHandleModulePropsParametersImageUri' to JSON representation. */ /* eslint-disable max-len, quote-props */ function toJson_CfnApiHandleModulePropsParametersImageUri(obj) { if (obj === undefined) { return undefined; } const result = { 'Type': obj.type, 'Description': obj.description, }; // filter undefined values return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } exports.toJson_CfnApiHandleModulePropsParametersImageUri = toJson_CfnApiHandleModulePropsParametersImageUri; /** * Converts an object of type 'CfnApiHandleModulePropsParametersFunctionName' to JSON representation. */ /* eslint-disable max-len, quote-props */ function toJson_CfnApiHandleModulePropsParametersFunctionName(obj) { if (obj === undefined) { return undefined; } const result = { 'Type': obj.type, 'Description': obj.description, }; // filter undefined values return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } exports.toJson_CfnApiHandleModulePropsParametersFunctionName = toJson_CfnApiHandleModulePropsParametersFunctionName; /** * Converts an object of type 'CfnApiHandleModulePropsParametersEndpointName' to JSON representation. */ /* eslint-disable max-len, quote-props */ function toJson_CfnApiHandleModulePropsParametersEndpointName(obj) { if (obj === undefined) { return undefined; } const result = { 'Type': obj.type, 'Description': obj.description, }; // filter undefined values return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } exports.toJson_CfnApiHandleModulePropsParametersEndpointName = toJson_CfnApiHandleModulePropsParametersEndpointName; /** * Converts an object of type 'CfnApiHandleModulePropsParametersSimilarityUrl' to JSON representation. */ /* eslint-disable max-len, quote-props */ function toJson_CfnApiHandleModulePropsParametersSimilarityUrl(obj) { if (obj === undefined) { return undefined; } const result = { 'Type': obj.type, 'Description': obj.description, }; // filter undefined values return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } exports.toJson_CfnApiHandleModulePropsParametersSimilarityUrl = toJson_CfnApiHandleModulePropsParametersSimilarityUrl; /** * Converts an object of type 'CfnApiHandleModulePropsResourcesDocContentPostMethod' to JSON representation. */ /* eslint-disable max-len, quote-props */ function toJson_CfnApiHandleModulePropsResourcesDocContentPostMethod(obj) { if (obj === undefined) { return undefined; } const result = { 'Type': obj.type, 'Properties': obj.properties, }; // filter undefined values return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } exports.toJson_CfnApiHandleModulePropsResourcesDocContentPostMethod = toJson_CfnApiHandleModulePropsResourcesDocContentPostMethod; /** * Converts an object of type 'CfnApiHandleModulePropsResourcesDocContentResource' to JSON representation. */ /* eslint-disable max-len, quote-props */ function toJson_CfnApiHandleModulePropsResourcesDocContentResource(obj) { if (obj === undefined) { return undefined; } const result = { 'Type': obj.type, 'Properties': obj.properties, }; // filter undefined values return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } exports.toJson_CfnApiHandleModulePropsResourcesDocContentResource = toJson_CfnApiHandleModulePropsResourcesDocContentResource; /** * Converts an object of type 'CfnApiHandleModulePropsResourcesImpactApi' to JSON representation. */ /* eslint-disable max-len, quote-props */ function toJson_CfnApiHandleModulePropsResourcesImpactApi(obj) { if (obj === undefined) { return undefined; } const result = { 'Type': obj.type, 'Properties': obj.properties, }; // filter undefined values return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } exports.toJson_CfnApiHandleModulePropsResourcesImpactApi = toJson_CfnApiHandleModulePropsResourcesImpactApi; /** * Converts an object of type 'CfnApiHandleModulePropsResourcesClassifierResource' to JSON representation. */ /* eslint-disable max-len, quote-props */ function toJson_CfnApiHandleModulePropsResourcesClassifierResource(obj) { if (obj === undefined) { return undefined; } const result = { 'Type': obj.type, 'Properties': obj.properties, }; // filter undefined values return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } exports.toJson_CfnApiHandleModulePropsResourcesClassifierResource = toJson_CfnApiHandleModulePropsResourcesClassifierResource; /** * Converts an object of type 'CfnApiHandleModulePropsResourcesApiGatewayCloudWatchLogsRole' to JSON representation. */ /* eslint-disable max-len, quote-props */ function toJson_CfnApiHandleModulePropsResourcesApiGatewayCloudWatchLogsRole(obj) { if (obj === undefined) { return undefined; } const result = { 'Type': obj.type, 'Properties': obj.properties, }; // filter undefined values return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } exports.toJson_CfnApiHandleModulePropsResourcesApiGatewayCloudWatchLogsRole = toJson_CfnApiHandleModulePropsResourcesApiGatewayCloudWatchLogsRole; /** * Converts an object of type 'CfnApiHandleModulePropsResourcesApiGatewayCloudWatchLogsAccount' to JSON representation. */ /* eslint-disable max-len, quote-props */ function toJson_CfnApiHandleModulePropsResourcesApiGatewayCloudWatchLogsAccount(obj) { if (obj === undefined) { return undefined; } const result = { 'Type': obj.type, 'Properties': obj.properties, }; // filter undefined values return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } exports.toJson_CfnApiHandleModulePropsResourcesApiGatewayCloudWatchLogsAccount = toJson_CfnApiHandleModulePropsResourcesApiGatewayCloudWatchLogsAccount; /** * Converts an object of type 'CfnApiHandleModulePropsResourcesDeploymentDocContentPost' to JSON representation. */ /* eslint-disable max-len, quote-props */ function toJson_CfnApiHandleModulePropsResourcesDeploymentDocContentPost(obj) { if (obj === undefined) { return undefined; } const result = { 'Type': obj.type, 'Properties': obj.properties, }; // filter undefined values return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } exports.toJson_CfnApiHandleModulePropsResourcesDeploymentDocContentPost = toJson_CfnApiHandleModulePropsResourcesDeploymentDocContentPost; /** * Converts an object of type 'CfnApiHandleModulePropsResourcesLambdaPermission' to JSON representation. */ /* eslint-disable max-len, quote-props */ function toJson_CfnApiHandleModulePropsResourcesLambdaPermission(obj) { if (obj === undefined) { return undefined; } const result = { 'Type': obj.type, 'Properties': obj.properties, }; // filter undefined values return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } exports.toJson_CfnApiHandleModulePropsResourcesLambdaPermission = toJson_CfnApiHandleModulePropsResourcesLambdaPermission; /** * Converts an object of type 'CfnApiHandleModulePropsResourcesImpactApiHandleLambdaFunction' to JSON representation. */ /* eslint-disable max-len, quote-props */ function toJson_CfnApiHandleModulePropsResourcesImpactApiHandleLambdaFunction(obj) { if (obj === undefined) { return undefined; } const result = { 'Type': obj.type, 'Properties': obj.properties, }; // filter undefined values return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } exports.toJson_CfnApiHandleModulePropsResourcesImpactApiHandleLambdaFunction = toJson_CfnApiHandleModulePropsResourcesImpactApiHandleLambdaFunction; /** * Converts an object of type 'CfnApiHandleModulePropsResourcesLambdaFunctionCreateRole' to JSON representation. */ /* eslint-disable max-len, quote-props */ function toJson_CfnApiHandleModulePropsResourcesLambdaFunctionCreateRole(obj) { if (obj === undefined) { return undefined; } const result = { 'Type': obj.type, 'Properties': obj.properties, }; // filter undefined values return Object.entries(result).reduce((r, i) => (i[1] === undefined) ? r : ({ ...r, [i[0]]: i[1] }), {}); } exports.toJson_CfnApiHandleModulePropsResourcesLambdaFunctionCreateRole = toJson_CfnApiHandleModulePropsResourcesLambdaFunctionCreateRole; /* eslint-enable max-len, quote-props */ /** * A CloudFormation `FreyrAIM::ImpactApi::ApiHandle::MODULE` * * @cloudformationResource FreyrAIM::ImpactApi::ApiHandle::MODULE * @stability external * @link http://unknown-url */ class CfnApiHandleModule extends cdk.CfnResource { /** * Create a new `FreyrAIM::ImpactApi::ApiHandle::MODULE`. * * @param scope - scope in which this resource is defined * @param id - scoped id of the resource * @param props - resource properties */ constructor(scope, id, props) { super(scope, id, { type: CfnApiHandleModule.CFN_RESOURCE_TYPE_NAME, properties: toJson_CfnApiHandleModuleProps(props) }); this.props = props; } } exports.CfnApiHandleModule = CfnApiHandleModule; _a = JSII_RTTI_SYMBOL_1; CfnApiHandleModule[_a] = { fqn: "@cdk-cloudformation/freyraim-impactapi-apihandle-module.CfnApiHandleModule", version: "1.0.0-alpha.7" }; /** * The CloudFormation resource type name for this resource class. */ CfnApiHandleModule.CFN_RESOURCE_TYPE_NAME = "FreyrAIM::ImpactApi::ApiHandle::MODULE"; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSwwQkFBMEI7QUFDMUIsbUNBQW1DO0FBcUJuQzs7R0FFRztBQUNILHlDQUF5QztBQUN6QyxTQUFnQiw4QkFBOEIsQ0FBQyxHQUF3QztJQUNyRixJQUFJLEdBQUcsS0FBSyxTQUFTLEVBQUU7UUFBRSxPQUFPLFNBQVMsQ0FBQztLQUFFO0lBQzVDLE1BQU0sTUFBTSxHQUFHO1FBQ2IsWUFBWSxFQUFFLHdDQUF3QyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUM7UUFDdEUsV0FBVyxFQUFFLHVDQUF1QyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUM7S0FDcEUsQ0FBQztJQUNGLDBCQUEwQjtJQUMxQixPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUMxRyxDQUFDO0FBUkQsd0VBUUM7QUFxQ0Q7O0dBRUc7QUFDSCx5Q0FBeUM7QUFDekMsU0FBZ0Isd0NBQXdDLENBQUMsR0FBa0Q7SUFDekcsSUFBSSxHQUFHLEtBQUssU0FBUyxFQUFFO1FBQUUsT0FBTyxTQUFTLENBQUM7S0FBRTtJQUM1QyxNQUFNLE1BQU0sR0FBRztRQUNiLFVBQVUsRUFBRSxnREFBZ0QsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDO1FBQzFFLGNBQWMsRUFBRSxvREFBb0QsQ0FBQyxHQUFHLENBQUMsWUFBWSxD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RCxDQUFDLEdBQXlFO0lBQ3ZKLElBQUksR0FBRyxLQUFLLFNBQVMsRUFBRTtRQUFFLE9BQU8sU0FBUyxDQUFDO0tBQUU7SUFDNUMsTUFBTSxNQUFNLEdBQUc7UUFDYixNQUFNLEVBQUUsR0FBRyxDQUFDLElBQUk7UUFDaEIsWUFBWSxFQUFFLEdBQUcsQ0FBQyxVQUFVO0tBQzdCLENBQUM7SUFDRiwwQkFBMEI7SUFDMUIsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDMUcsQ0FBQztBQVJELDBJQVFDO0FBQ0Qsd0NBQXdDO0FBR3hDOzs7Ozs7R0FNRztBQUNILE1BQWEsa0JBQW1CLFNBQVEsR0FBRyxDQUFDLFdBQVc7SUFZckQ7Ozs7OztPQU1HO0lBQ0gsWUFBWSxLQUEyQixFQUFFLEVBQVUsRUFBRSxLQUE4QjtRQUNqRixLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxrQkFBa0IsQ0FBQyxzQkFBc0IsRUFBRSxVQUFVLEVBQUUsOEJBQThCLENBQUMsS0FBSyxDQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRTFILElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0lBRXJCLENBQUM7O0FBeEJILGdEQXlCQzs7O0FBeEJDOztFQUVFO0FBQ3FCLHlDQUFzQixHQUFHLHdDQUF3QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gR2VuZXJhdGVkIGJ5IGNkay1pbXBvcnRcbmltcG9ydCAqIGFzIGNkayBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgKiBhcyBjb25zdHJ1Y3RzIGZyb20gJ2NvbnN0cnVjdHMnO1xuXG4vKipcbiAqIFNjaGVtYSBmb3IgTW9kdWxlIEZyYWdtZW50IG9mIHR5cGUgRnJleXJBSU06OkltcGFjdEFwaTo6QXBpSGFuZGxlOjpNT0RVTEVcbiAqXG4gKiBAc2NoZW1hIENmbkFwaUhhbmRsZU1vZHVsZVByb3BzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2ZuQXBpSGFuZGxlTW9kdWxlUHJvcHMge1xuICAvKipcbiAgICogQHNjaGVtYSBDZm5BcGlIYW5kbGVNb2R1bGVQcm9wcyNQYXJhbWV0ZXJzXG4gICAqL1xuICByZWFkb25seSBwYXJhbWV0ZXJzPzogQ2ZuQXBpSGFuZGxlTW9kdWxlUHJvcHNQYXJhbWV0ZXJzO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIENmbkFwaUhhbmRsZU1vZHVsZVByb3BzI1Jlc291cmNlc1xuICAgKi9cbiAgcmVhZG9ubHkgcmVzb3VyY2VzPzogQ2ZuQXBpSGFuZGxlTW9kdWxlUHJvcHNSZXNvdXJjZXM7XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnQ2ZuQXBpSGFuZGxlTW9kdWxlUHJvcHMnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0NmbkFwaUhhbmRsZU1vZHVsZVByb3BzKG9iajogQ2ZuQXBpSGFuZGxlTW9kdWxlUHJvcHMgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdQYXJhbWV0ZXJzJzogdG9Kc29uX0NmbkFwaUhhbmRsZU1vZHVsZVByb3BzUGFyYW1ldGVycyhvYmoucGFyYW1ldGVycyksXG4gICAgJ1Jlc291cmNlcyc6IHRvSnNvbl9DZm5BcGlIYW5kbGVNb2R1bGVQcm9wc1Jlc291cmNlcyhvYmoucmVzb3VyY2VzKSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBAc2NoZW1hIENmbkFwaUhhbmRsZU1vZHVsZVByb3BzUGFyYW1ldGVyc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIENmbkFwaUhhbmRsZU1vZHVsZVByb3BzUGFyYW1ldGVycyB7XG4gIC8qKlxuICAgKiBUaGUgbGFtYmRhIGZ1bmN0aW9uYHMgSW1hZ2UgVVJJXG4gICAqXG4gICAqIEBzY2hlbWEgQ2ZuQXBpSGFuZGxlTW9kdWxlUHJvcHNQYXJhbWV0ZXJzI0ltYWdlVXJpXG4gICAqL1xuICByZWFkb25seSBpbWFnZVVyaT86IENmbkFwaUhhbmRsZU1vZHVsZVByb3BzUGFyYW1ldGVyc0ltYWdlVXJpO1xuXG4gIC8qKlxuICAgKiBUaGUgbGFtYmRhIGZ1bmN0aW9uYHMgbmFtZVxuICAgKlxuICAgKiBAc2NoZW1hIENmbkFwaUhhbmRsZU1vZHVsZVByb3BzUGFyYW1ldGVycyNGdW5jdGlvbk5hbWVcbiAgICovXG4gIHJlYWRvbmx5IGZ1bmN0aW9uTmFtZT86IENmbkFwaUhhbmRsZU1vZHVsZVByb3BzUGFyYW1ldGVyc0Z1bmN0aW9uTmFtZTtcblxuICAvKipcbiAgICogVGhlIGVuZHBvaW50IG5hbWVcbiAgICpcbiAgICogQHNjaGVtYSBDZm5BcGlIYW5kbGVNb2R1bGVQcm9wc1BhcmFtZXRlcnMjRW5kcG9pbnROYW1lXG4gICAqL1xuICByZWFkb25seSBlbmRwb2ludE5hbWU/OiBDZm5BcGlIYW5kbGVNb2R1bGVQcm9wc1BhcmFtZXRlcnNFbmRwb2ludE5hbWU7XG5cbiAgLyoqXG4gICAqIFRoZSBzaW1pbGFyaXR5IHVybFxuICAgKlxuICAgKiBAc2NoZW1hIENmbkFwaUhhbmRsZU1vZHVsZVByb3BzUGFyYW1ldGVycyNTaW1pbGFyaXR5VXJsXG4gICAqL1xuICByZWFkb25seSBzaW1pbGFyaXR5VXJsPzogQ2ZuQXBpSGFuZGxlTW9kdWxlUHJvcHNQYXJhbWV0ZXJzU2ltaWxhcml0eVVybDtcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdDZm5BcGlIYW5kbGVNb2R1bGVQcm9wc1BhcmFtZXRlcnMnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0NmbkFwaUhhbmRsZU1vZHVsZVByb3BzUGFyYW1ldGVycyhvYmo6IENmbkFwaUhhbmRsZU1vZHVsZVByb3BzUGFyYW1ldGVycyB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ0ltYWdlVXJpJzogdG9Kc29uX0NmbkFwaUhhbmRsZU1vZHVsZVByb3BzUGFyYW1ldGVyc0ltYWdlVXJpKG9iai5pbWFnZVVyaSksXG4gICAgJ0Z1bmN0aW9uTmFtZSc6IHRvSnNvbl9DZm5BcGlIYW5kbGVNb2R1bGVQcm9wc1BhcmFtZXRlcnNGdW5jdGlvbk5hbWUob2JqLmZ1bmN0aW9uTmFtZSksXG4gICAgJ0VuZHBvaW50TmFtZSc6IHRvSnNvbl9DZm5BcGlIYW5kbGVNb2R1bGVQcm9wc1BhcmFtZXRlcnNFbmRwb2ludE5hbWUob2JqLmVuZHBvaW50TmFtZSksXG4gICAgJ1NpbWlsYXJpdHlVcmwnOiB0b0pzb25fQ2ZuQXBpSGFuZGxlTW9kdWxlUHJvcHNQYXJhbWV0ZXJzU2ltaWxhcml0eVVybChvYmouc2ltaWxhcml0eVVybCksXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogQHNjaGVtYSBDZm5BcGlIYW5kbGVNb2R1bGVQcm9wc1Jlc291cmNlc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIENmbkFwaUhhbmRsZU1vZHVsZVByb3BzUmVzb3VyY2VzIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgQ2ZuQXBpSGFuZGxlTW9kdWxlUHJvcHNSZXNvdXJjZXMjRG9jQ29udGVudFBvc3RNZXRob2RcbiAgICovXG4gIHJlYWRvbmx5IGRvY0NvbnRlbnRQb3N0TWV0aG9kPzogQ2ZuQXBpSGFuZGxlTW9kdWxlUHJvcHNSZXNvdXJjZXNEb2NDb250ZW50UG9zdE1ldGhvZDtcblxuICAvKipcbiAgICogQHNjaGVtYSBDZm5BcGlIYW5kbGVNb2R1bGVQcm9wc1Jlc291cmNlcyNEb2NDb250ZW50UmVzb3VyY2VcbiAgICovXG4gIHJlYWRvbmx5IGRvY0NvbnRlbnRSZXNvdXJjZT86IENmbkFwaUhhbmRsZU1vZHVsZVByb3BzUmVzb3VyY2VzRG9jQ29udGVudFJlc291cmNlO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIENmbkFwaUhhbmRsZU1vZHVsZVByb3BzUmVzb3VyY2VzI0ltcGFjdEFwaVxuICAgKi9cbiAgcmVhZG9ubHkgaW1wYWN0QXBpPzogQ2ZuQXBpSGFuZGxlTW9kdWxlUHJvcHNSZXNvdXJjZXNJbXBhY3RBcGk7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgQ2ZuQXBpSGFuZGxlTW9kdWxlUHJvcHNSZXNvdXJjZXMjQ2xhc3NpZmllclJlc291cmNlXG4gICAqL1xuICByZWFkb25seSBjbGFzc2lmaWVyUmVzb3VyY2U/OiBDZm5BcGlIYW5kbGVNb2R1bGVQcm9wc1Jlc291cmNlc0NsYXNzaWZpZXJSZXNvdXJjZTtcblxuICAvKipcbiAgICogQHNjaGVtYSBDZm5BcGlIYW5kbGVNb2R1bGVQcm9wc1Jlc291cmNlcyNBcGlHYXRld2F5Q2xvdWRXYXRjaExvZ3NSb2xlXG4gICAqL1xuICByZWFkb25seSBhcGlHYXRld2F5Q2xvdWRXYXRjaExvZ3NSb2xlPzogQ2ZuQXBpSGFuZGxlTW9kdWxlUHJvcHNSZXNvdXJjZXNBcGlHYXRld2F5Q2xvdWRXYXRjaExvZ3NSb2xlO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIENmbkFwaUhhbmRsZU1vZHVsZVByb3BzUmVzb3VyY2VzI0FwaUdhdGV3YXlDbG91ZFdhdGNoTG9nc0FjY291bnRcbiAgICovXG4gIHJlYWRvbmx5IGFwaUdhdGV3YXlDbG91ZFdhdGNoTG9nc0FjY291bnQ/OiBDZm5BcGlIYW5kbGVNb2R1bGVQcm9wc1Jlc291cmNlc0FwaUdhdGV3YXlDbG91ZFdhdGNoTG9nc0FjY291bnQ7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgQ2ZuQXBpSGFuZGxlTW9kdWxlUHJvcHNSZXNvdXJjZXMjRGVwbG95bWVudERvY0NvbnRlbnRQb3N0XG4gICAqL1xuICByZWFkb25seSBkZXBsb3ltZW50RG9jQ29udGVudFBvc3Q/OiBDZm5BcGlIYW5kbGVNb2R1bGVQcm9wc1Jlc291cmNlc0RlcGxveW1lbnREb2NDb250ZW50UG9zdDtcblxuICAvKipcbiAgICogQHNjaGVtYSBDZm5BcGlIYW5kbGVNb2R1bGVQcm9wc1Jlc291cmNlcyNMYW1iZGFQZXJtaXNzaW9uXG4gICAqL1xuICByZWFkb25seSBsYW1iZGFQZXJtaXNzaW9uPzogQ2ZuQXBpSGFuZGxlTW9kdWxlUHJvcHNSZXNvdXJjZXNMYW1iZGFQZXJtaXNzaW9uO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIENmbkFwaUhhbmRsZU1vZHVsZVByb3BzUmVzb3VyY2VzI0ltcGFjdEFwaUhhbmRsZUxhbWJkYUZ1bmN0aW9uXG4gICAqL1xuICByZWFkb25seSBpbXBhY3RBcGlIYW5kbGVMYW1iZGFGdW5jdGlvbj86IENmbkFwaUhhbmRsZU1vZHVsZVByb3BzUmVzb3VyY2VzSW1wYWN0QXBpSGFuZGxlTGFtYmRhRnVuY3Rpb247XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgQ2ZuQXBpSGFuZGxlTW9kdWxlUHJvcHNSZXNvdXJjZXMjTGFtYmRhRnVuY3Rpb25DcmVhdGVSb2xlXG4gICAqL1xuICByZWFkb25seSBsYW1iZGFGdW5jdGlvbkNyZWF0ZVJvbGU/OiBDZm5BcGlIYW5kbGVNb2R1bGVQcm9wc1Jlc291cmNlc0xhbWJkYUZ1bmN0aW9uQ3JlYXRlUm9sZTtcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdDZm5BcGlIYW5kbGVNb2R1bGVQcm9wc1Jlc291cmNlcycgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fQ2ZuQXBpSGFuZGxlTW9kdWxlUHJvcHNSZXNvdXJjZXMob2JqOiBDZm5BcGlIYW5kbGVNb2R1bGVQcm9wc1Jlc291cmNlcyB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ0RvY0NvbnRlbnRQb3N0TWV0aG9kJzogdG9Kc29uX0NmbkFwaUhhbmRsZU1vZHVsZVByb3BzUmVzb3VyY2VzRG9jQ29udGVudFBvc3RNZXRob2Qob2JqLmRvY0NvbnRlbnRQb3N0TWV0aG9kKSxcbiAgICAnRG9jQ29udGVudFJlc291cmNlJzogdG9Kc29uX0NmbkFwaUhhbmRsZU1vZHVsZVByb3BzUmVzb3VyY2VzRG9jQ29udGVudFJlc291cmNlKG9iai5kb2NDb250ZW50UmVzb3VyY2UpLFxuICAgICdJbXBhY3RBcGknOiB0b0pzb25fQ2ZuQXBpSGFuZGxlTW9kdWxlUHJvcHNSZXNvdXJjZXNJbXBhY3RBcGkob2JqLmltcGFjdEFwaSksXG4gICAgJ0NsYXNzaWZpZXJSZXNvdXJjZSc6IHRvSnNvbl9DZm5BcGlIYW5kbGVNb2R1bGVQcm9wc1Jlc291cmNlc0NsYXNzaWZpZXJSZXNvdXJjZShvYmouY2xhc3NpZmllclJlc291cmNlKSxcbiAgICAnQXBpR2F0ZXdheUNsb3VkV2F0Y2hMb2dzUm9sZSc6IHRvSnNvbl9DZm5BcGlIYW5kbGVNb2R1bGVQcm9wc1Jlc291cmNlc0FwaUdhdGV3YXlDbG91ZFdhdGNoTG9nc1JvbGUob2JqLmFwaUdhdGV3YXlDbG91ZFdhdGNoTG9nc1JvbGUpLFxuICAgICdBcGlHYXRld2F5Q2xvdWRXYXRjaExvZ3NBY2NvdW50JzogdG9Kc29uX0NmbkFwaUhhbmRsZU1vZHVsZVByb3BzUmVzb3VyY2VzQXBpR2F0ZXdheUNsb3VkV2F0Y2hMb2dzQWNjb3VudChvYmouYXBpR2F0ZXdheUNsb3VkV2F0Y2hMb2dzQWNjb3VudCksXG4gICAgJ0RlcGxveW1lbnREb2NDb250ZW50UG9zdCc6IHRvSnNvbl9DZm5BcGlIYW5kbGVNb2R1bGVQcm9wc1Jlc291cmNlc0RlcGxveW1lbnREb2NDb250ZW50UG9zdChvYmouZGVwbG95bWVudERvY0NvbnRlbnRQb3N0KSxcbiAgICAnTGFtYmRhUGVybWlzc2lvbic6IHRvSnNvbl9DZm5BcGlIYW5kbGVNb2R1bGVQcm9wc1Jlc291cmNlc0xhbWJkYVBlcm1pc3Npb24ob2JqLmxhbWJkYVBlcm1pc3Npb24pLFxuICAgICdJbXBhY3RBcGlIYW5kbGVMYW1iZGFGdW5jdGlvbic6IHRvSnNvbl9DZm5BcGlIYW5kbGVNb2R1bGVQcm9wc1Jlc291cmNlc0ltcGFjdEFwaUhhbmRsZUxhbWJkYUZ1bmN0aW9uKG9iai5pbXBhY3RBcGlIYW5kbGVMYW1iZGFGdW5jdGlvbiksXG4gICAgJ0xhbWJkYUZ1bmN0aW9uQ3JlYXRlUm9sZSc6IHRvSnNvbl9DZm5BcGlIYW5kbGVNb2R1bGVQcm9wc1Jlc291cmNlc0xhbWJkYUZ1bmN0aW9uQ3JlYXRlUm9sZShvYmoubGFtYmRhRnVuY3Rpb25DcmVhdGVSb2xlKSxcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBUaGUgbGFtYmRhIGZ1bmN0aW9uYHMgSW1hZ2UgVVJJXG4gKlxuICogQHNjaGVtYSBDZm5BcGlIYW5kbGVNb2R1bGVQcm9wc1BhcmFtZXRlcnNJbWFnZVVyaVxuICovXG5leHBvcnQgaW50ZXJmYWNlIENmbkFwaUhhbmRsZU1vZHVsZVByb3BzUGFyYW1ldGVyc0ltYWdlVXJpIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgQ2ZuQXBpSGFuZGxlTW9kdWxlUHJvcHNQYXJhbWV0ZXJzSW1hZ2VVcmkjVHlwZVxuICAgKi9cbiAgcmVhZG9ubHkgdHlwZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIENmbkFwaUhhbmRsZU1vZHVsZVByb3BzUGFyYW1ldGVyc0ltYWdlVXJpI0Rlc2NyaXB0aW9uXG4gICAqL1xuICByZWFkb25seSBkZXNjcmlwdGlvbjogc3RyaW5nO1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0NmbkFwaUhhbmRsZU1vZHVsZVByb3BzUGFyYW1ldGVyc0ltYWdlVXJpJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9DZm5BcGlIYW5kbGVNb2R1bGVQcm9wc1BhcmFtZXRlcnNJbWFnZVVyaShvYmo6IENmbkFwaUhhbmRsZU1vZHVsZVByb3BzUGFyYW1ldGVyc0ltYWdlVXJpIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAnVHlwZSc6IG9iai50eXBlLFxuICAgICdEZXNjcmlwdGlvbic6IG9iai5kZXNjcmlwdGlvbixcbiAgfTtcbiAgLy8gZmlsdGVyIHVuZGVmaW5lZCB2YWx1ZXNcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJlc3VsdCkucmVkdWNlKChyLCBpKSA9PiAoaVsxXSA9PT0gdW5kZWZpbmVkKSA/IHIgOiAoeyAuLi5yLCBbaVswXV06IGlbMV0gfSksIHt9KTtcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cblxuLyoqXG4gKiBUaGUgbGFtYmRhIGZ1bmN0aW9uYHMgbmFtZVxuICpcbiAqIEBzY2hlbWEgQ2ZuQXBpSGFuZGxlTW9kdWxlUHJvcHNQYXJhbWV0ZXJzRnVuY3Rpb25OYW1lXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2ZuQXBpSGFuZGxlTW9kdWxlUHJvcHNQYXJhbWV0ZXJzRnVuY3Rpb25OYW1lIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgQ2ZuQXBpSGFuZGxlTW9kdWxlUHJvcHNQYXJhbWV0ZXJzRnVuY3Rpb25OYW1lI1R5cGVcbiAgICovXG4gIHJlYWRvbmx5IHR5cGU6IHN0cmluZztcblxuICAvKipcbiAgICogQHNjaGVtYSBDZm5BcGlIYW5kbGVNb2R1bGVQcm9wc1BhcmFtZXRlcnNGdW5jdGlvbk5hbWUjRGVzY3JpcHRpb25cbiAgICovXG4gIHJlYWRvbmx5IGRlc2NyaXB0aW9uOiBzdHJpbmc7XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnQ2ZuQXBpSGFuZGxlTW9kdWxlUHJvcHNQYXJhbWV0ZXJzRnVuY3Rpb25OYW1lJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9DZm5BcGlIYW5kbGVNb2R1bGVQcm9wc1BhcmFtZXRlcnNGdW5jdGlvbk5hbWUob2JqOiBDZm5BcGlIYW5kbGVNb2R1bGVQcm9wc1BhcmFtZXRlcnNGdW5jdGlvbk5hbWUgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdUeXBlJzogb2JqLnR5cGUsXG4gICAgJ0Rlc2NyaXB0aW9uJzogb2JqLmRlc2NyaXB0aW9uLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIFRoZSBlbmRwb2ludCBuYW1lXG4gKlxuICogQHNjaGVtYSBDZm5BcGlIYW5kbGVNb2R1bGVQcm9wc1BhcmFtZXRlcnNFbmRwb2ludE5hbWVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDZm5BcGlIYW5kbGVNb2R1bGVQcm9wc1BhcmFtZXRlcnNFbmRwb2ludE5hbWUge1xuICAvKipcbiAgICogQHNjaGVtYSBDZm5BcGlIYW5kbGVNb2R1bGVQcm9wc1BhcmFtZXRlcnNFbmRwb2ludE5hbWUjVHlwZVxuICAgKi9cbiAgcmVhZG9ubHkgdHlwZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIENmbkFwaUhhbmRsZU1vZHVsZVByb3BzUGFyYW1ldGVyc0VuZHBvaW50TmFtZSNEZXNjcmlwdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgZGVzY3JpcHRpb246IHN0cmluZztcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdDZm5BcGlIYW5kbGVNb2R1bGVQcm9wc1BhcmFtZXRlcnNFbmRwb2ludE5hbWUnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0NmbkFwaUhhbmRsZU1vZHVsZVByb3BzUGFyYW1ldGVyc0VuZHBvaW50TmFtZShvYmo6IENmbkFwaUhhbmRsZU1vZHVsZVByb3BzUGFyYW1ldGVyc0VuZHBvaW50TmFtZSB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ1R5cGUnOiBvYmoudHlwZSxcbiAgICAnRGVzY3JpcHRpb24nOiBvYmouZGVzY3JpcHRpb24sXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogVGhlIHNpbWlsYXJpdHkgdXJsXG4gKlxuICogQHNjaGVtYSBDZm5BcGlIYW5kbGVNb2R1bGVQcm9wc1BhcmFtZXRlcnNTaW1pbGFyaXR5VXJsXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2ZuQXBpSGFuZGxlTW9kdWxlUHJvcHNQYXJhbWV0ZXJzU2ltaWxhcml0eVVybCB7XG4gIC8qKlxuICAgKiBAc2NoZW1hIENmbkFwaUhhbmRsZU1vZHVsZVByb3BzUGFyYW1ldGVyc1NpbWlsYXJpdHlVcmwjVHlwZVxuICAgKi9cbiAgcmVhZG9ubHkgdHlwZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAc2NoZW1hIENmbkFwaUhhbmRsZU1vZHVsZVByb3BzUGFyYW1ldGVyc1NpbWlsYXJpdHlVcmwjRGVzY3JpcHRpb25cbiAgICovXG4gIHJlYWRvbmx5IGRlc2NyaXB0aW9uOiBzdHJpbmc7XG5cbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBvYmplY3Qgb2YgdHlwZSAnQ2ZuQXBpSGFuZGxlTW9kdWxlUHJvcHNQYXJhbWV0ZXJzU2ltaWxhcml0eVVybCcgdG8gSlNPTiByZXByZXNlbnRhdGlvbi5cbiAqL1xuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiwgcXVvdGUtcHJvcHMgKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0pzb25fQ2ZuQXBpSGFuZGxlTW9kdWxlUHJvcHNQYXJhbWV0ZXJzU2ltaWxhcml0eVVybChvYmo6IENmbkFwaUhhbmRsZU1vZHVsZVByb3BzUGFyYW1ldGVyc1NpbWlsYXJpdHlVcmwgfCB1bmRlZmluZWQpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgICdUeXBlJzogb2JqLnR5cGUsXG4gICAgJ0Rlc2NyaXB0aW9uJzogb2JqLmRlc2NyaXB0aW9uLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgQ2ZuQXBpSGFuZGxlTW9kdWxlUHJvcHNSZXNvdXJjZXNEb2NDb250ZW50UG9zdE1ldGhvZFxuICovXG5leHBvcnQgaW50ZXJmYWNlIENmbkFwaUhhbmRsZU1vZHVsZVByb3BzUmVzb3VyY2VzRG9jQ29udGVudFBvc3RNZXRob2Qge1xuICAvKipcbiAgICogQHNjaGVtYSBDZm5BcGlIYW5kbGVNb2R1bGVQcm9wc1Jlc291cmNlc0RvY0NvbnRlbnRQb3N0TWV0aG9kI1R5cGVcbiAgICovXG4gIHJlYWRvbmx5IHR5cGU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgQ2ZuQXBpSGFuZGxlTW9kdWxlUHJvcHNSZXNvdXJjZXNEb2NDb250ZW50UG9zdE1ldGhvZCNQcm9wZXJ0aWVzXG4gICAqL1xuICByZWFkb25seSBwcm9wZXJ0aWVzPzogYW55O1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0NmbkFwaUhhbmRsZU1vZHVsZVByb3BzUmVzb3VyY2VzRG9jQ29udGVudFBvc3RNZXRob2QnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0NmbkFwaUhhbmRsZU1vZHVsZVByb3BzUmVzb3VyY2VzRG9jQ29udGVudFBvc3RNZXRob2Qob2JqOiBDZm5BcGlIYW5kbGVNb2R1bGVQcm9wc1Jlc291cmNlc0RvY0NvbnRlbnRQb3N0TWV0aG9kIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAnVHlwZSc6IG9iai50eXBlLFxuICAgICdQcm9wZXJ0aWVzJzogb2JqLnByb3BlcnRpZXMsXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogQHNjaGVtYSBDZm5BcGlIYW5kbGVNb2R1bGVQcm9wc1Jlc291cmNlc0RvY0NvbnRlbnRSZXNvdXJjZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIENmbkFwaUhhbmRsZU1vZHVsZVByb3BzUmVzb3VyY2VzRG9jQ29udGVudFJlc291cmNlIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgQ2ZuQXBpSGFuZGxlTW9kdWxlUHJvcHNSZXNvdXJjZXNEb2NDb250ZW50UmVzb3VyY2UjVHlwZVxuICAgKi9cbiAgcmVhZG9ubHkgdHlwZT86IHN0cmluZztcblxuICAvKipcbiAgICogQHNjaGVtYSBDZm5BcGlIYW5kbGVNb2R1bGVQcm9wc1Jlc291cmNlc0RvY0NvbnRlbnRSZXNvdXJjZSNQcm9wZXJ0aWVzXG4gICAqL1xuICByZWFkb25seSBwcm9wZXJ0aWVzPzogYW55O1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0NmbkFwaUhhbmRsZU1vZHVsZVByb3BzUmVzb3VyY2VzRG9jQ29udGVudFJlc291cmNlJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9DZm5BcGlIYW5kbGVNb2R1bGVQcm9wc1Jlc291cmNlc0RvY0NvbnRlbnRSZXNvdXJjZShvYmo6IENmbkFwaUhhbmRsZU1vZHVsZVByb3BzUmVzb3VyY2VzRG9jQ29udGVudFJlc291cmNlIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAnVHlwZSc6IG9iai50eXBlLFxuICAgICdQcm9wZXJ0aWVzJzogb2JqLnByb3BlcnRpZXMsXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogQHNjaGVtYSBDZm5BcGlIYW5kbGVNb2R1bGVQcm9wc1Jlc291cmNlc0ltcGFjdEFwaVxuICovXG5leHBvcnQgaW50ZXJmYWNlIENmbkFwaUhhbmRsZU1vZHVsZVByb3BzUmVzb3VyY2VzSW1wYWN0QXBpIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgQ2ZuQXBpSGFuZGxlTW9kdWxlUHJvcHNSZXNvdXJjZXNJbXBhY3RBcGkjVHlwZVxuICAgKi9cbiAgcmVhZG9ubHkgdHlwZT86IHN0cmluZztcblxuICAvKipcbiAgICogQHNjaGVtYSBDZm5BcGlIYW5kbGVNb2R1bGVQcm9wc1Jlc291cmNlc0ltcGFjdEFwaSNQcm9wZXJ0aWVzXG4gICAqL1xuICByZWFkb25seSBwcm9wZXJ0aWVzPzogYW55O1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0NmbkFwaUhhbmRsZU1vZHVsZVByb3BzUmVzb3VyY2VzSW1wYWN0QXBpJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9DZm5BcGlIYW5kbGVNb2R1bGVQcm9wc1Jlc291cmNlc0ltcGFjdEFwaShvYmo6IENmbkFwaUhhbmRsZU1vZHVsZVByb3BzUmVzb3VyY2VzSW1wYWN0QXBpIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAnVHlwZSc6IG9iai50eXBlLFxuICAgICdQcm9wZXJ0aWVzJzogb2JqLnByb3BlcnRpZXMsXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogQHNjaGVtYSBDZm5BcGlIYW5kbGVNb2R1bGVQcm9wc1Jlc291cmNlc0NsYXNzaWZpZXJSZXNvdXJjZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIENmbkFwaUhhbmRsZU1vZHVsZVByb3BzUmVzb3VyY2VzQ2xhc3NpZmllclJlc291cmNlIHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgQ2ZuQXBpSGFuZGxlTW9kdWxlUHJvcHNSZXNvdXJjZXNDbGFzc2lmaWVyUmVzb3VyY2UjVHlwZVxuICAgKi9cbiAgcmVhZG9ubHkgdHlwZT86IHN0cmluZztcblxuICAvKipcbiAgICogQHNjaGVtYSBDZm5BcGlIYW5kbGVNb2R1bGVQcm9wc1Jlc291cmNlc0NsYXNzaWZpZXJSZXNvdXJjZSNQcm9wZXJ0aWVzXG4gICAqL1xuICByZWFkb25seSBwcm9wZXJ0aWVzPzogYW55O1xuXG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gb2JqZWN0IG9mIHR5cGUgJ0NmbkFwaUhhbmRsZU1vZHVsZVByb3BzUmVzb3VyY2VzQ2xhc3NpZmllclJlc291cmNlJyB0byBKU09OIHJlcHJlc2VudGF0aW9uLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvSnNvbl9DZm5BcGlIYW5kbGVNb2R1bGVQcm9wc1Jlc291cmNlc0NsYXNzaWZpZXJSZXNvdXJjZShvYmo6IENmbkFwaUhhbmRsZU1vZHVsZVByb3BzUmVzb3VyY2VzQ2xhc3NpZmllclJlc291cmNlIHwgdW5kZWZpbmVkKTogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCB7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAnVHlwZSc6IG9iai50eXBlLFxuICAgICdQcm9wZXJ0aWVzJzogb2JqLnByb3BlcnRpZXMsXG4gIH07XG4gIC8vIGZpbHRlciB1bmRlZmluZWQgdmFsdWVzXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhyZXN1bHQpLnJlZHVjZSgociwgaSkgPT4gKGlbMV0gPT09IHVuZGVmaW5lZCkgPyByIDogKHsgLi4uciwgW2lbMF1dOiBpWzFdIH0pLCB7fSk7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5cbi8qKlxuICogQHNjaGVtYSBDZm5BcGlIYW5kbGVNb2R1bGVQcm9wc1Jlc291cmNlc0FwaUdhdGV3YXlDbG91ZFdhdGNoTG9nc1JvbGVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDZm5BcGlIYW5kbGVNb2R1bGVQcm9wc1Jlc291cmNlc0FwaUdhdGV3YXlDbG91ZFdhdGNoTG9nc1JvbGUge1xuICAvKipcbiAgICogQHNjaGVtYSBDZm5BcGlIYW5kbGVNb2R1bGVQcm9wc1Jlc291cmNlc0FwaUdhdGV3YXlDbG91ZFdhdGNoTG9nc1JvbGUjVHlwZVxuICAgKi9cbiAgcmVhZG9ubHkgdHlwZT86IHN0cmluZztcblxuICAvKipcbiAgICogQHNjaGVtYSBDZm5BcGlIYW5kbGVNb2R1bGVQcm9wc1Jlc291cmNlc0FwaUdhdGV3YXlDbG91ZFdhdGNoTG9nc1JvbGUjUHJvcGVydGllc1xuICAgKi9cbiAgcmVhZG9ubHkgcHJvcGVydGllcz86IGFueTtcblxufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIG9iamVjdCBvZiB0eXBlICdDZm5BcGlIYW5kbGVNb2R1bGVQcm9wc1Jlc291cmNlc0FwaUdhdGV3YXlDbG91ZFdhdGNoTG9nc1JvbGUnIHRvIEpTT04gcmVwcmVzZW50YXRpb24uXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHF1b3RlLXByb3BzICovXG5leHBvcnQgZnVuY3Rpb24gdG9Kc29uX0NmbkFwaUhhbmRsZU1vZHVsZVByb3BzUmVzb3VyY2VzQXBpR2F0ZXdheUNsb3VkV2F0Y2hMb2dzUm9sZShvYmo6IENmbkFwaUhhbmRsZU1vZHVsZVByb3BzUmVzb3VyY2VzQXBpR2F0ZXdheUNsb3VkV2F0Y2hMb2dzUm9sZSB8IHVuZGVmaW5lZCk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQge1xuICBpZiAob2JqID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXN1bHQgPSB7XG4gICAgJ1R5cGUnOiBvYmoudHlwZSxcbiAgICAnUHJvcGVydGllcyc6IG9iai5wcm9wZXJ0aWVzLFxuICB9O1xuICAvLyBmaWx0ZXIgdW5kZWZpbmVkIHZhbHVlc1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMocmVzdWx0KS5yZWR1Y2UoKHIsIGkpID0+IChpWzFdID09PSB1bmRlZmluZWQpID8gciA6ICh7IC4uLnIsIFtpWzBdXTogaVsxXSB9KSwge30pO1xufVxuLyogZXNsaW50LWVuYWJsZSBtYXgtbGVuLCBxdW90ZS1wcm9wcyAqL1xuXG4vKipcbiAqIEBzY2hlbWEgQ2ZuQXBpSGFuZGxlTW9kdWxlUHJvcHNSZXNvdXJjZXNBcGlHYXRld2F5Q2xvdWRXYXRjaExvZ3NBY2NvdW50XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2ZuQXBpSGFuZGxlTW9kdWxlUHJvcHNSZXNvdXJjZXNBcGlHYXRld2F5Q2xvdWRXYXRjaExvZ3NBY2NvdW50IHtcbiAgLyoqXG4gICAqIEBzY2hlbWEgQ2ZuQXBpSGFuZGxlTW9kdWxlUHJvcHNSZXNvdXJjZXNBcGlHYXRld2F5Q2xvdWRXYXRjaExvZ3NBY2NvdW50I1R5cGVcbiAgICovXG4gIHJlYWRvbmx5IHR5cGU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBzY2hlbWEgQ2ZuQXBpSGFuZGxlTW9kdWxlUHJvcHNSZXNvdXJjZXNBcGlHYXRld2F5Q2xvdWRXYXRjaExvZ3NBY2NvdW50I1Byb3BlcnRpZXNcbiAgICovXG4gIHJlYWRvbmx5IHByb3BlcnRpZXM/OiBhbnk7XG5cb