parse-server 8.2.0 → 8.2.1-alpha.2
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/lib/Adapters/Logger/WinstonLogger.js +2 -3
- package/lib/Adapters/Storage/Mongo/MongoTransform.js +7 -4
- package/lib/Controllers/DatabaseController.js +2 -3
- package/lib/Controllers/HooksController.js +2 -3
- package/lib/GraphQL/ParseGraphQLSchema.js +2 -3
- package/lib/GraphQL/ParseGraphQLServer.js +2 -3
- package/lib/GraphQL/loaders/defaultGraphQLMutations.js +2 -3
- package/lib/GraphQL/loaders/defaultGraphQLQueries.js +2 -3
- package/lib/GraphQL/loaders/defaultRelaySchema.js +2 -3
- package/lib/GraphQL/loaders/filesMutations.js +2 -3
- package/lib/GraphQL/loaders/functionsMutations.js +2 -3
- package/lib/GraphQL/loaders/parseClassMutations.js +2 -3
- package/lib/GraphQL/loaders/parseClassQueries.js +2 -3
- package/lib/GraphQL/loaders/parseClassTypes.js +2 -3
- package/lib/GraphQL/loaders/schemaMutations.js +2 -3
- package/lib/GraphQL/loaders/schemaQueries.js +2 -3
- package/lib/GraphQL/loaders/usersMutations.js +2 -3
- package/lib/GraphQL/transformers/constraintType.js +2 -3
- package/lib/GraphQL/transformers/inputType.js +2 -3
- package/lib/GraphQL/transformers/mutation.js +2 -3
- package/lib/GraphQL/transformers/outputType.js +2 -3
- package/lib/ParseServer.js +2 -3
- package/lib/Push/PushWorker.js +2 -3
- package/lib/Routers/AggregateRouter.js +2 -3
- package/lib/Routers/AudiencesRouter.js +2 -3
- package/lib/Routers/FeaturesRouter.js +2 -3
- package/lib/Routers/FilesRouter.js +2 -3
- package/lib/Routers/FunctionsRouter.js +2 -2
- package/lib/Routers/GlobalConfigRouter.js +2 -3
- package/lib/Routers/GraphQLRouter.js +2 -3
- package/lib/Routers/HooksRouter.js +2 -3
- package/lib/Routers/LogsRouter.js +2 -3
- package/lib/Routers/PurgeRouter.js +2 -3
- package/lib/Routers/PushRouter.js +2 -3
- package/lib/Routers/SchemasRouter.js +2 -3
- package/lib/Routers/SecurityRouter.js +2 -3
- package/lib/SchemaMigrations/DefinedSchemas.js +2 -3
- package/lib/Security/CheckRunner.js +2 -3
- package/lib/StatusHandler.js +2 -3
- package/lib/cloud-code/Parse.Cloud.js +2 -3
- package/lib/index.js +2 -3
- package/package.json +11 -11
|
@@ -5,8 +5,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.transformConstraintTypeToGraphQL = void 0;
|
|
7
7
|
var defaultGraphQLTypes = _interopRequireWildcard(require("../loaders/defaultGraphQLTypes"));
|
|
8
|
-
function
|
|
9
|
-
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
8
|
+
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
10
9
|
const transformConstraintTypeToGraphQL = (parseType, targetClass, parseClassTypes, fieldName) => {
|
|
11
10
|
if (fieldName === 'id' || fieldName === 'objectId') {
|
|
12
11
|
return defaultGraphQLTypes.ID_WHERE_INPUT;
|
|
@@ -51,4 +50,4 @@ const transformConstraintTypeToGraphQL = (parseType, targetClass, parseClassType
|
|
|
51
50
|
}
|
|
52
51
|
};
|
|
53
52
|
exports.transformConstraintTypeToGraphQL = transformConstraintTypeToGraphQL;
|
|
54
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
53
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJkZWZhdWx0R3JhcGhRTFR5cGVzIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJyZXF1aXJlIiwiZSIsInQiLCJXZWFrTWFwIiwiciIsIm4iLCJfX2VzTW9kdWxlIiwibyIsImkiLCJmIiwiX19wcm90b19fIiwiZGVmYXVsdCIsImhhcyIsImdldCIsInNldCIsImhhc093blByb3BlcnR5IiwiY2FsbCIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwidHJhbnNmb3JtQ29uc3RyYWludFR5cGVUb0dyYXBoUUwiLCJwYXJzZVR5cGUiLCJ0YXJnZXRDbGFzcyIsInBhcnNlQ2xhc3NUeXBlcyIsImZpZWxkTmFtZSIsIklEX1dIRVJFX0lOUFVUIiwiU1RSSU5HX1dIRVJFX0lOUFVUIiwiTlVNQkVSX1dIRVJFX0lOUFVUIiwiQk9PTEVBTl9XSEVSRV9JTlBVVCIsIkFSUkFZX1dIRVJFX0lOUFVUIiwiT0JKRUNUX1dIRVJFX0lOUFVUIiwiREFURV9XSEVSRV9JTlBVVCIsImNsYXNzR3JhcGhRTFJlbGF0aW9uQ29uc3RyYWludHNUeXBlIiwiT0JKRUNUIiwiRklMRV9XSEVSRV9JTlBVVCIsIkdFT19QT0lOVF9XSEVSRV9JTlBVVCIsIlBPTFlHT05fV0hFUkVfSU5QVVQiLCJCWVRFU19XSEVSRV9JTlBVVCIsInVuZGVmaW5lZCIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvR3JhcGhRTC90cmFuc2Zvcm1lcnMvY29uc3RyYWludFR5cGUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgZGVmYXVsdEdyYXBoUUxUeXBlcyBmcm9tICcuLi9sb2FkZXJzL2RlZmF1bHRHcmFwaFFMVHlwZXMnO1xuXG5jb25zdCB0cmFuc2Zvcm1Db25zdHJhaW50VHlwZVRvR3JhcGhRTCA9IChwYXJzZVR5cGUsIHRhcmdldENsYXNzLCBwYXJzZUNsYXNzVHlwZXMsIGZpZWxkTmFtZSkgPT4ge1xuICBpZiAoZmllbGROYW1lID09PSAnaWQnIHx8IGZpZWxkTmFtZSA9PT0gJ29iamVjdElkJykge1xuICAgIHJldHVybiBkZWZhdWx0R3JhcGhRTFR5cGVzLklEX1dIRVJFX0lOUFVUO1xuICB9XG5cbiAgc3dpdGNoIChwYXJzZVR5cGUpIHtcbiAgICBjYXNlICdTdHJpbmcnOlxuICAgICAgcmV0dXJuIGRlZmF1bHRHcmFwaFFMVHlwZXMuU1RSSU5HX1dIRVJFX0lOUFVUO1xuICAgIGNhc2UgJ051bWJlcic6XG4gICAgICByZXR1cm4gZGVmYXVsdEdyYXBoUUxUeXBlcy5OVU1CRVJfV0hFUkVfSU5QVVQ7XG4gICAgY2FzZSAnQm9vbGVhbic6XG4gICAgICByZXR1cm4gZGVmYXVsdEdyYXBoUUxUeXBlcy5CT09MRUFOX1dIRVJFX0lOUFVUO1xuICAgIGNhc2UgJ0FycmF5JzpcbiAgICAgIHJldHVybiBkZWZhdWx0R3JhcGhRTFR5cGVzLkFSUkFZX1dIRVJFX0lOUFVUO1xuICAgIGNhc2UgJ09iamVjdCc6XG4gICAgICByZXR1cm4gZGVmYXVsdEdyYXBoUUxUeXBlcy5PQkpFQ1RfV0hFUkVfSU5QVVQ7XG4gICAgY2FzZSAnRGF0ZSc6XG4gICAgICByZXR1cm4gZGVmYXVsdEdyYXBoUUxUeXBlcy5EQVRFX1dIRVJFX0lOUFVUO1xuICAgIGNhc2UgJ1BvaW50ZXInOlxuICAgICAgaWYgKFxuICAgICAgICBwYXJzZUNsYXNzVHlwZXNbdGFyZ2V0Q2xhc3NdICYmXG4gICAgICAgIHBhcnNlQ2xhc3NUeXBlc1t0YXJnZXRDbGFzc10uY2xhc3NHcmFwaFFMUmVsYXRpb25Db25zdHJhaW50c1R5cGVcbiAgICAgICkge1xuICAgICAgICByZXR1cm4gcGFyc2VDbGFzc1R5cGVzW3RhcmdldENsYXNzXS5jbGFzc0dyYXBoUUxSZWxhdGlvbkNvbnN0cmFpbnRzVHlwZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBkZWZhdWx0R3JhcGhRTFR5cGVzLk9CSkVDVDtcbiAgICAgIH1cbiAgICBjYXNlICdGaWxlJzpcbiAgICAgIHJldHVybiBkZWZhdWx0R3JhcGhRTFR5cGVzLkZJTEVfV0hFUkVfSU5QVVQ7XG4gICAgY2FzZSAnR2VvUG9pbnQnOlxuICAgICAgcmV0dXJuIGRlZmF1bHRHcmFwaFFMVHlwZXMuR0VPX1BPSU5UX1dIRVJFX0lOUFVUO1xuICAgIGNhc2UgJ1BvbHlnb24nOlxuICAgICAgcmV0dXJuIGRlZmF1bHRHcmFwaFFMVHlwZXMuUE9MWUdPTl9XSEVSRV9JTlBVVDtcbiAgICBjYXNlICdCeXRlcyc6XG4gICAgICByZXR1cm4gZGVmYXVsdEdyYXBoUUxUeXBlcy5CWVRFU19XSEVSRV9JTlBVVDtcbiAgICBjYXNlICdBQ0wnOlxuICAgICAgcmV0dXJuIGRlZmF1bHRHcmFwaFFMVHlwZXMuT0JKRUNUX1dIRVJFX0lOUFVUO1xuICAgIGNhc2UgJ1JlbGF0aW9uJzpcbiAgICAgIGlmIChcbiAgICAgICAgcGFyc2VDbGFzc1R5cGVzW3RhcmdldENsYXNzXSAmJlxuICAgICAgICBwYXJzZUNsYXNzVHlwZXNbdGFyZ2V0Q2xhc3NdLmNsYXNzR3JhcGhRTFJlbGF0aW9uQ29uc3RyYWludHNUeXBlXG4gICAgICApIHtcbiAgICAgICAgcmV0dXJuIHBhcnNlQ2xhc3NUeXBlc1t0YXJnZXRDbGFzc10uY2xhc3NHcmFwaFFMUmVsYXRpb25Db25zdHJhaW50c1R5cGU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gZGVmYXVsdEdyYXBoUUxUeXBlcy5PQkpFQ1Q7XG4gICAgICB9XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbn07XG5cbmV4cG9ydCB7IHRyYW5zZm9ybUNvbnN0cmFpbnRUeXBlVG9HcmFwaFFMIH07XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLElBQUFBLG1CQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFBc0UsU0FBQUQsd0JBQUFFLENBQUEsRUFBQUMsQ0FBQSw2QkFBQUMsT0FBQSxNQUFBQyxDQUFBLE9BQUFELE9BQUEsSUFBQUUsQ0FBQSxPQUFB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
|
|
@@ -6,8 +6,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.transformInputTypeToGraphQL = void 0;
|
|
7
7
|
var _graphql = require("graphql");
|
|
8
8
|
var defaultGraphQLTypes = _interopRequireWildcard(require("../loaders/defaultGraphQLTypes"));
|
|
9
|
-
function
|
|
10
|
-
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
9
|
+
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
11
10
|
const transformInputTypeToGraphQL = (parseType, targetClass, parseClassTypes) => {
|
|
12
11
|
switch (parseType) {
|
|
13
12
|
case 'String':
|
|
@@ -49,4 +48,4 @@ const transformInputTypeToGraphQL = (parseType, targetClass, parseClassTypes) =>
|
|
|
49
48
|
}
|
|
50
49
|
};
|
|
51
50
|
exports.transformInputTypeToGraphQL = transformInputTypeToGraphQL;
|
|
52
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
51
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZ3JhcGhxbCIsInJlcXVpcmUiLCJkZWZhdWx0R3JhcGhRTFR5cGVzIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJlIiwidCIsIldlYWtNYXAiLCJyIiwibiIsIl9fZXNNb2R1bGUiLCJvIiwiaSIsImYiLCJfX3Byb3RvX18iLCJkZWZhdWx0IiwiaGFzIiwiZ2V0Iiwic2V0IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ0cmFuc2Zvcm1JbnB1dFR5cGVUb0dyYXBoUUwiLCJwYXJzZVR5cGUiLCJ0YXJnZXRDbGFzcyIsInBhcnNlQ2xhc3NUeXBlcyIsIkdyYXBoUUxTdHJpbmciLCJHcmFwaFFMRmxvYXQiLCJHcmFwaFFMQm9vbGVhbiIsIkdyYXBoUUxMaXN0IiwiQU5ZIiwiT0JKRUNUIiwiREFURSIsImNsYXNzR3JhcGhRTFBvaW50ZXJUeXBlIiwiY2xhc3NHcmFwaFFMUmVsYXRpb25UeXBlIiwiRklMRV9JTlBVVCIsIkdFT19QT0lOVF9JTlBVVCIsIlBPTFlHT05fSU5QVVQiLCJCWVRFUyIsIkFDTF9JTlBVVCIsInVuZGVmaW5lZCIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvR3JhcGhRTC90cmFuc2Zvcm1lcnMvaW5wdXRUeXBlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEdyYXBoUUxTdHJpbmcsIEdyYXBoUUxGbG9hdCwgR3JhcGhRTEJvb2xlYW4sIEdyYXBoUUxMaXN0IH0gZnJvbSAnZ3JhcGhxbCc7XG5pbXBvcnQgKiBhcyBkZWZhdWx0R3JhcGhRTFR5cGVzIGZyb20gJy4uL2xvYWRlcnMvZGVmYXVsdEdyYXBoUUxUeXBlcyc7XG5cbmNvbnN0IHRyYW5zZm9ybUlucHV0VHlwZVRvR3JhcGhRTCA9IChwYXJzZVR5cGUsIHRhcmdldENsYXNzLCBwYXJzZUNsYXNzVHlwZXMpID0+IHtcbiAgc3dpdGNoIChwYXJzZVR5cGUpIHtcbiAgICBjYXNlICdTdHJpbmcnOlxuICAgICAgcmV0dXJuIEdyYXBoUUxTdHJpbmc7XG4gICAgY2FzZSAnTnVtYmVyJzpcbiAgICAgIHJldHVybiBHcmFwaFFMRmxvYXQ7XG4gICAgY2FzZSAnQm9vbGVhbic6XG4gICAgICByZXR1cm4gR3JhcGhRTEJvb2xlYW47XG4gICAgY2FzZSAnQXJyYXknOlxuICAgICAgcmV0dXJuIG5ldyBHcmFwaFFMTGlzdChkZWZhdWx0R3JhcGhRTFR5cGVzLkFOWSk7XG4gICAgY2FzZSAnT2JqZWN0JzpcbiAgICAgIHJldHVybiBkZWZhdWx0R3JhcGhRTFR5cGVzLk9CSkVDVDtcbiAgICBjYXNlICdEYXRlJzpcbiAgICAgIHJldHVybiBkZWZhdWx0R3JhcGhRTFR5cGVzLkRBVEU7XG4gICAgY2FzZSAnUG9pbnRlcic6XG4gICAgICBpZiAoXG4gICAgICAgIHBhcnNlQ2xhc3NUeXBlcyAmJlxuICAgICAgICBwYXJzZUNsYXNzVHlwZXNbdGFyZ2V0Q2xhc3NdICYmXG4gICAgICAgIHBhcnNlQ2xhc3NUeXBlc1t0YXJnZXRDbGFzc10uY2xhc3NHcmFwaFFMUG9pbnRlclR5cGVcbiAgICAgICkge1xuICAgICAgICByZXR1cm4gcGFyc2VDbGFzc1R5cGVzW3RhcmdldENsYXNzXS5jbGFzc0dyYXBoUUxQb2ludGVyVHlwZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBkZWZhdWx0R3JhcGhRTFR5cGVzLk9CSkVDVDtcbiAgICAgIH1cbiAgICBjYXNlICdSZWxhdGlvbic6XG4gICAgICBpZiAoXG4gICAgICAgIHBhcnNlQ2xhc3NUeXBlcyAmJlxuICAgICAgICBwYXJzZUNsYXNzVHlwZXNbdGFyZ2V0Q2xhc3NdICYmXG4gICAgICAgIHBhcnNlQ2xhc3NUeXBlc1t0YXJnZXRDbGFzc10uY2xhc3NHcmFwaFFMUmVsYXRpb25UeXBlXG4gICAgICApIHtcbiAgICAgICAgcmV0dXJuIHBhcnNlQ2xhc3NUeXBlc1t0YXJnZXRDbGFzc10uY2xhc3NHcmFwaFFMUmVsYXRpb25UeXBlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGRlZmF1bHRHcmFwaFFMVHlwZXMuT0JKRUNUO1xuICAgICAgfVxuICAgIGNhc2UgJ0ZpbGUnOlxuICAgICAgcmV0dXJuIGRlZmF1bHRHcmFwaFFMVHlwZXMuRklMRV9JTlBVVDtcbiAgICBjYXNlICdHZW9Qb2ludCc6XG4gICAgICByZXR1cm4gZGVmYXVsdEdyYXBoUUxUeXBlcy5HRU9fUE9JTlRfSU5QVVQ7XG4gICAgY2FzZSAnUG9seWdvbic6XG4gICAgICByZXR1cm4gZGVmYXVsdEdyYXBoUUxUeXBlcy5QT0xZR09OX0lOUFVUO1xuICAgIGNhc2UgJ0J5dGVzJzpcbiAgICAgIHJldHVybiBkZWZhdWx0R3JhcGhRTFR5cGVzLkJZVEVTO1xuICAgIGNhc2UgJ0FDTCc6XG4gICAgICByZXR1cm4gZGVmYXVsdEdyYXBoUUxUeXBlcy5BQ0xfSU5QVVQ7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbn07XG5cbmV4cG9ydCB7IHRyYW5zZm9ybUlucHV0VHlwZVRvR3JhcGhRTCB9O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxJQUFBQSxRQUFBLEdBQUFDLE9BQUE7QUFDQSxJQUFBQyxtQkFBQSxHQUFBQyx1QkFBQSxDQUFBRixPQUFBO0FBQXNFLFNBQUFFLHdCQUFBQyxDQUFBLEVBQUFDLENBQUEsNkJBQUFDLE9BQUEsTUFBQUMsQ0FBQSxPQUFBRCxPQUFBLElBQUFFLENBQUEsT0FBQUYsT0FBQSxZQUFBSCx1QkFBQSxZQUFBQSxDQUFBQyxDQUFBLEVBQUFDLENBQUEsU0FBQUEsQ0FBQSxJQUFBRCxDQUFBLElBQUFBLENBQUEsQ0FBQUssVUFBQSxTQUFBTCxDQUFBLE1BQUFNLENBQUEsRUFBQUMsQ0FBQSxFQUFBQyxDQUFBLEtBQUFDLFNBQUEsUUFBQUMsT0FBQSxFQUFBVixDQUFBLGlCQUFBQSxDQUFBLHVCQUFBQSxDQUFBLHlCQUFBQSxDQUFBLFNBQUFRLENBQUEsTUFBQUYsQ0FBQSxH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
|
|
@@ -8,8 +8,7 @@ var _node = _interopRequireDefault(require("parse/node"));
|
|
|
8
8
|
var _graphqlRelay = require("graphql-relay");
|
|
9
9
|
var _filesMutations = require("../loaders/filesMutations");
|
|
10
10
|
var objectsMutations = _interopRequireWildcard(require("../helpers/objectsMutations"));
|
|
11
|
-
function
|
|
12
|
-
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
11
|
+
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
13
12
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
14
13
|
const transformTypes = async (inputType, fields, {
|
|
15
14
|
className,
|
|
@@ -272,4 +271,4 @@ const transformers = {
|
|
|
272
271
|
}
|
|
273
272
|
}
|
|
274
273
|
};
|
|
275
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbm9kZSIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX2dyYXBocWxSZWxheSIsIl9maWxlc011dGF0aW9ucyIsIm9iamVjdHNNdXRhdGlvbnMiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImUiLCJXZWFrTWFwIiwiciIsInQiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsInRyYW5zZm9ybVR5cGVzIiwiaW5wdXRUeXBlIiwiZmllbGRzIiwiY2xhc3NOYW1lIiwicGFyc2VHcmFwaFFMU2NoZW1hIiwicmVxIiwib3JpZ2luYWxGaWVsZHMiLCJjbGFzc0dyYXBoUUxDcmVhdGVUeXBlIiwiY2xhc3NHcmFwaFFMVXBkYXRlVHlwZSIsImNvbmZpZyIsImlzQ3JlYXRlRW5hYmxlZCIsImlzVXBkYXRlRW5hYmxlZCIsInBhcnNlQ2xhc3NUeXBlcyIsInBhcnNlQ2xhc3MiLCJwYXJzZUNsYXNzZXMiLCJjbGFzc0dyYXBoUUxDcmVhdGVUeXBlRmllbGRzIiwiZ2V0RmllbGRzIiwiY2xhc3NHcmFwaFFMVXBkYXRlVHlwZUZpZWxkcyIsInByb21pc2VzIiwia2V5cyIsIm1hcCIsImZpZWxkIiwiaW5wdXRUeXBlRmllbGQiLCJwYXJzZUZpZWxkVHlwZSIsInR5cGUiLCJfX29wIiwidHJhbnNmb3JtZXJzIiwiZ2VvUG9pbnQiLCJwb2x5Z29uIiwiZmlsZSIsInJlbGF0aW9uIiwidGFyZ2V0Q2xhc3MiLCJwb2ludGVyIiwiUHJvbWlzZSIsImFsbCIsIkFDTCIsImV4cG9ydHMiLCJpbnB1dCIsInVwbG9hZCIsImZpbGVJbmZvIiwiaGFuZGxlVXBsb2FkIiwiX190eXBlIiwibmFtZSIsInVybCIsIlBhcnNlIiwiRXJyb3IiLCJGSUxFX1NBVkVfRVJST1IiLCJ2YWx1ZSIsImNvb3JkaW5hdGVzIiwibGF0aXR1ZGUiLCJsb25naXR1ZGUiLCJwYXJzZUFDTCIsInB1YmxpYyIsInJlYWQiLCJ3cml0ZSIsInVzZXJzIiwiZm9yRWFjaCIsInJ1bGUiLCJnbG9iYWxJZE9iamVjdCIsImZyb21HbG9iYWxJZCIsInVzZXJJZCIsImlkIiwicm9sZXMiLCJyb2xlTmFtZSIsIm9yaWdpbmFsVmFsdWUiLCJhdXRoIiwiaW5mbyIsImxlbmd0aCIsIklOVkFMSURfUE9JTlRFUiIsIm9wIiwib3BzIiwibmVzdGVkT2JqZWN0c1RvQWRkIiwiY3JlYXRlQW5kQWRkIiwicGFyc2VGaWVsZHMiLCJjcmVhdGVPYmplY3QiLCJvYmplY3QiLCJvYmplY3RJZCIsImFkZCIsInB1c2giLCJvYmplY3RzIiwicmVtb3ZlIiwibmVzdGVkT2JqZWN0VG9BZGQiLCJjcmVhdGVBbmRMaW5rIiwibGluayJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9HcmFwaFFML3RyYW5zZm9ybWVycy9tdXRhdGlvbi5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUGFyc2UgZnJvbSAncGFyc2Uvbm9kZSc7XG5pbXBvcnQgeyBmcm9tR2xvYmFsSWQgfSBmcm9tICdncmFwaHFsLXJlbGF5JztcbmltcG9ydCB7IGhhbmRsZVVwbG9hZCB9IGZyb20gJy4uL2xvYWRlcnMvZmlsZXNNdXRhdGlvbnMnO1xuaW1wb3J0ICogYXMgb2JqZWN0c011dGF0aW9ucyBmcm9tICcuLi9oZWxwZXJzL29iamVjdHNNdXRhdGlvbnMnO1xuXG5jb25zdCB0cmFuc2Zvcm1UeXBlcyA9IGFzeW5jIChcbiAgaW5wdXRUeXBlOiAnY3JlYXRlJyB8ICd1cGRhdGUnLFxuICBmaWVsZHMsXG4gIHsgY2xhc3NOYW1lLCBwYXJzZUdyYXBoUUxTY2hlbWEsIHJlcSwgb3JpZ2luYWxGaWVsZHMgfVxuKSA9PiB7XG4gIGNvbnN0IHtcbiAgICBjbGFzc0dyYXBoUUxDcmVhdGVUeXBlLFxuICAgIGNsYXNzR3JhcGhRTFVwZGF0ZVR5cGUsXG4gICAgY29uZmlnOiB7IGlzQ3JlYXRlRW5hYmxlZCwgaXNVcGRhdGVFbmFibGVkIH0sXG4gIH0gPSBwYXJzZUdyYXBoUUxTY2hlbWEucGFyc2VDbGFzc1R5cGVzW2NsYXNzTmFtZV07XG4gIGNvbnN0IHBhcnNlQ2xhc3MgPSBwYXJzZUdyYXBoUUxTY2hlbWEucGFyc2VDbGFzc2VzW2NsYXNzTmFtZV07XG4gIGlmIChmaWVsZHMpIHtcbiAgICBjb25zdCBjbGFzc0dyYXBoUUxDcmVhdGVUeXBlRmllbGRzID1cbiAgICAgIGlzQ3JlYXRlRW5hYmxlZCAmJiBjbGFzc0dyYXBoUUxDcmVhdGVUeXBlID8gY2xhc3NHcmFwaFFMQ3JlYXRlVHlwZS5nZXRGaWVsZHMoKSA6IG51bGw7XG4gICAgY29uc3QgY2xhc3NHcmFwaFFMVXBkYXRlVHlwZUZpZWxkcyA9XG4gICAgICBpc1VwZGF0ZUVuYWJsZWQgJiYgY2xhc3NHcmFwaFFMVXBkYXRlVHlwZSA/IGNsYXNzR3JhcGhRTFVwZGF0ZVR5cGUuZ2V0RmllbGRzKCkgOiBudWxsO1xuICAgIGNvbnN0IHByb21pc2VzID0gT2JqZWN0LmtleXMoZmllbGRzKS5tYXAoYXN5bmMgZmllbGQgPT4ge1xuICAgICAgbGV0IGlucHV0VHlwZUZpZWxkO1xuICAgICAgaWYgKGlucHV0VHlwZSA9PT0gJ2NyZWF0ZScgJiYgY2xhc3NHcmFwaFFMQ3JlYXRlVHlwZUZpZWxkcykge1xuICAgICAgICBpbnB1dFR5cGVGaWVsZCA9IGNsYXNzR3JhcGhRTENyZWF0ZVR5cGVGaWVsZHNbZmllbGRdO1xuICAgICAgfSBlbHNlIGlmIChjbGFzc0dyYXBoUUxVcGRhdGVUeXBlRmllbGRzKSB7XG4gICAgICAgIGlucHV0VHlwZUZpZWxkID0gY2xhc3NHcmFwaFFMVXBkYXRlVHlwZUZpZWxkc1tmaWVsZF07XG4gICAgICB9XG4gICAgICBpZiAoaW5wdXRUeXBlRmllbGQpIHtcbiAgICAgICAgY29uc3QgcGFyc2VGaWVsZFR5cGUgPSBwYXJzZUNsYXNzLmZpZWxkc1tmaWVsZF0udHlwZTtcbiAgICAgICAgc3dpdGNoIChwYXJzZUZpZWxkVHlwZSkge1xuICAgICAgICAgIGNhc2UgJ0dlb1BvaW50JzpcbiAgICAgICAgICAgIGlmIChmaWVsZHNbZmllbGRdID09PSBudWxsKSB7XG4gICAgICAgICAgICAgIGZpZWxkc1tmaWVsZF0gPSB7IF9fb3A6ICdEZWxldGUnIH07XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZmllbGRzW2ZpZWxkXSA9IHRyYW5zZm9ybWVycy5nZW9Qb2ludChmaWVsZHNbZmllbGRdKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ1BvbHlnb24nOlxuICAgICAgICAgICAgaWYgKGZpZWxkc1tmaWVsZF0gPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgZmllbGRzW2ZpZWxkXSA9IHsgX19vcDogJ0RlbGV0ZScgfTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmaWVsZHNbZmllbGRdID0gdHJhbnNmb3JtZXJzLnBvbHlnb24oZmllbGRzW2ZpZWxkXSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlICdGaWxlJzpcbiAgICAgICAgICAgIC8vIFdlIG5lZWQgdG8gdXNlIHRoZSBvcmlnaW5hbEZpZWxkcyB0byBoYW5kbGUgdGhlIGZpbGUgdXBsb2FkXG4gICAgICAgICAgICAvLyBzaW5jZSBmaWVsZHMgYXJlIGEgZGVlcGNvcHkgYW5kIGRvIG5vdCBrZWVwIHRoZSBmaWxlIG9iamVjdFxuICAgICAgICAgICAgZmllbGRzW2ZpZWxkXSA9IGF3YWl0IHRyYW5zZm9ybWVycy5maWxlKG9yaWdpbmFsRmllbGRzW2ZpZWxkXSwgcmVxKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ1JlbGF0aW9uJzpcbiAgICAgICAgICAgIGZpZWxkc1tmaWVsZF0gPSBhd2FpdCB0cmFuc2Zvcm1lcnMucmVsYXRpb24oXG4gICAgICAgICAgICAgIHBhcnNlQ2xhc3MuZmllbGRzW2ZpZWxkXS50YXJnZXRDbGFzcyxcbiAgICAgICAgICAgICAgZmllbGQsXG4gICAgICAgICAgICAgIGZpZWxkc1tmaWVsZF0sXG4gICAgICAgICAgICAgIG9yaWdpbmFsRmllbGRzW2ZpZWxkXSxcbiAgICAgICAgICAgICAgcGFyc2VHcmFwaFFMU2NoZW1hLFxuICAgICAgICAgICAgICByZXFcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlICdQb2ludGVyJzpcbiAgICAgICAgICAgIGlmIChmaWVsZHNbZmllbGRdID09PSBudWxsKSB7XG4gICAgICAgICAgICAgIGZpZWxkc1tmaWVsZF0gPSB7IF9fb3A6ICdEZWxldGUnIH07XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZmllbGRzW2ZpZWxkXSA9IGF3YWl0IHRyYW5zZm9ybWVycy5wb2ludGVyKFxuICAgICAgICAgICAgICBwYXJzZUNsYXNzLmZpZWxkc1tmaWVsZF0udGFyZ2V0Q2xhc3MsXG4gICAgICAgICAgICAgIGZpZWxkLFxuICAgICAgICAgICAgICBmaWVsZHNbZmllbGRdLFxuICAgICAgICAgICAgICBvcmlnaW5hbEZpZWxkc1tmaWVsZF0sXG4gICAgICAgICAgICAgIHBhcnNlR3JhcGhRTFNjaGVtYSxcbiAgICAgICAgICAgICAgcmVxXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIGlmIChmaWVsZHNbZmllbGRdID09PSBudWxsKSB7XG4gICAgICAgICAgICAgIGZpZWxkc1tmaWVsZF0gPSB7IF9fb3A6ICdEZWxldGUnIH07XG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gICAgYXdhaXQgUHJvbWlzZS5hbGwocHJvbWlzZXMpO1xuICAgIGlmIChmaWVsZHMuQUNMKSB7IGZpZWxkcy5BQ0wgPSB0cmFuc2Zvcm1lcnMuQUNMKGZpZWxkcy5BQ0wpOyB9XG4gIH1cbiAgcmV0dXJuIGZpZWxkcztcbn07XG5cbmNvbnN0IHRyYW5zZm9ybWVycyA9IHtcbiAgZmlsZTogYXN5bmMgKGlucHV0LCB7IGNvbmZpZyB9KSA9PiB7XG4gICAgaWYgKGlucHV0ID09PSBudWxsKSB7XG4gICAgICByZXR1cm4geyBfX29wOiAnRGVsZXRlJyB9O1xuICAgIH1cbiAgICBjb25zdCB7IGZpbGUsIHVwbG9hZCB9ID0gaW5wdXQ7XG4gICAgaWYgKHVwbG9hZCkge1xuICAgICAgY29uc3QgeyBmaWxlSW5mbyB9ID0gYXdhaXQgaGFuZGxlVXBsb2FkKHVwbG9hZCwgY29uZmlnKTtcbiAgICAgIHJldHVybiB7IC4uLmZpbGVJbmZvLCBfX3R5cGU6ICdGaWxlJyB9O1xuICAgIH0gZWxzZSBpZiAoZmlsZSAmJiBmaWxlLm5hbWUpIHtcbiAgICAgIHJldHVybiB7IG5hbWU6IGZpbGUubmFtZSwgX190eXBlOiAnRmlsZScsIHVybDogZmlsZS51cmwgfTtcbiAgICB9XG4gICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFBhcnNlLkVycm9yLkZJTEVfU0FWRV9FUlJPUiwgJ0ludmFsaWQgZmlsZSB1cGxvYWQuJyk7XG4gIH0sXG4gIHBvbHlnb246IHZhbHVlID0+ICh7XG4gICAgX190eXBlOiAnUG9seWdvbicsXG4gICAgY29vcmRpbmF0ZXM6IHZhbHVlLm1hcChnZW9Qb2ludCA9PiBbZ2VvUG9pbnQubGF0aXR1ZGUsIGdlb1BvaW50LmxvbmdpdHVkZV0pLFxuICB9KSxcbiAgZ2VvUG9pbnQ6IHZhbHVlID0+ICh7XG4gICAgLi4udmFsdWUsXG4gICAgX190eXBlOiAnR2VvUG9pbnQnLFxuICB9KSxcbiAgQUNMOiB2YWx1ZSA9PiB7XG4gICAgY29uc3QgcGFyc2VBQ0wgPSB7fTtcbiAgICBpZiAodmFsdWUucHVibGljKSB7XG4gICAgICBwYXJzZUFDTFsnKiddID0ge1xuICAgICAgICByZWFkOiB2YWx1ZS5wdWJsaWMucmVhZCxcbiAgICAgICAgd3JpdGU6IHZhbHVlLnB1YmxpYy53cml0ZSxcbiAgICAgIH07XG4gICAgfVxuICAgIGlmICh2YWx1ZS51c2Vycykge1xuICAgICAgdmFsdWUudXNlcnMuZm9yRWFjaChydWxlID0+IHtcbiAgICAgICAgY29uc3QgZ2xvYmFsSWRPYmplY3QgPSBmcm9tR2xvYmFsSWQocnVsZS51c2VySWQpO1xuICAgICAgICBpZiAoZ2xvYmFsSWRPYmplY3QudHlwZSA9PT0gJ19Vc2VyJykge1xuICAgICAgICAgIHJ1bGUudXNlcklkID0gZ2xvYmFsSWRPYmplY3QuaWQ7XG4gICAgICAgIH1cbiAgICAgICAgcGFyc2VBQ0xbcnVsZS51c2VySWRdID0ge1xuICAgICAgICAgIHJlYWQ6IHJ1bGUucmVhZCxcbiAgICAgICAgICB3cml0ZTogcnVsZS53cml0ZSxcbiAgICAgICAgfTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICBpZiAodmFsdWUucm9sZXMpIHtcbiAgICAgIHZhbHVlLnJvbGVzLmZvckVhY2gocnVsZSA9PiB7XG4gICAgICAgIHBhcnNlQUNMW2Byb2xlOiR7cnVsZS5yb2xlTmFtZX1gXSA9IHtcbiAgICAgICAgICByZWFkOiBydWxlLnJlYWQsXG4gICAgICAgICAgd3JpdGU6IHJ1bGUud3JpdGUsXG4gICAgICAgIH07XG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHBhcnNlQUNMO1xuICB9LFxuICByZWxhdGlvbjogYXN5bmMgKFxuICAgIHRhcmdldENsYXNzLFxuICAgIGZpZWxkLFxuICAgIHZhbHVlLFxuICAgIG9yaWdpbmFsVmFsdWUsXG4gICAgcGFyc2VHcmFwaFFMU2NoZW1hLFxuICAgIHsgY29uZmlnLCBhdXRoLCBpbmZvIH1cbiAgKSA9PiB7XG4gICAgaWYgKE9iamVjdC5rZXlzKHZhbHVlKS5sZW5ndGggPT09IDApXG4gICAgeyB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoXG4gICAgICBQYXJzZS5FcnJvci5JTlZBTElEX1BPSU5URVIsXG4gICAgICBgWW91IG5lZWQgdG8gcHJvdmlkZSBhdCBsZWFzdCBvbmUgb3BlcmF0aW9uIG9uIHRoZSByZWxhdGlvbiBtdXRhdGlvbiBvZiBmaWVsZCAke2ZpZWxkfWBcbiAgICApOyB9XG5cbiAgICBjb25zdCBvcCA9IHtcbiAgICAgIF9fb3A6ICdCYXRjaCcsXG4gICAgICBvcHM6IFtdLFxuICAgIH07XG4gICAgbGV0IG5lc3RlZE9iamVjdHNUb0FkZCA9IFtdO1xuXG4gICAgaWYgKHZhbHVlLmNyZWF0ZUFuZEFkZCkge1xuICAgICAgbmVzdGVkT2JqZWN0c1RvQWRkID0gKFxuICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgICAgICB2YWx1ZS5jcmVhdGVBbmRBZGQubWFwKGFzeW5jIChpbnB1dCwgaSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgcGFyc2VGaWVsZHMgPSBhd2FpdCB0cmFuc2Zvcm1UeXBlcygnY3JlYXRlJywgaW5wdXQsIHtcbiAgICAgICAgICAgICAgY2xhc3NOYW1lOiB0YXJnZXRDbGFzcyxcbiAgICAgICAgICAgICAgb3JpZ2luYWxGaWVsZHM6IG9yaWdpbmFsVmFsdWUuY3JlYXRlQW5kQWRkW2ldLFxuICAgICAgICAgICAgICBwYXJzZUdyYXBoUUxTY2hlbWEsXG4gICAgICAgICAgICAgIHJlcTogeyBjb25maWcsIGF1dGgsIGluZm8gfSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIG9iamVjdHNNdXRhdGlvbnMuY3JlYXRlT2JqZWN0KHRhcmdldENsYXNzLCBwYXJzZUZpZWxkcywgY29uZmlnLCBhdXRoLCBpbmZvKTtcbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICApLm1hcChvYmplY3QgPT4gKHtcbiAgICAgICAgX190eXBlOiAnUG9pbnRlcicsXG4gICAgICAgIGNsYXNzTmFtZTogdGFyZ2V0Q2xhc3MsXG4gICAgICAgIG9iamVjdElkOiBvYmplY3Qub2JqZWN0SWQsXG4gICAgICB9KSk7XG4gICAgfVxuXG4gICAgaWYgKHZhbHVlLmFkZCB8fCBuZXN0ZWRPYmplY3RzVG9BZGQubGVuZ3RoID4gMCkge1xuICAgICAgaWYgKCF2YWx1ZS5hZGQpIHsgdmFsdWUuYWRkID0gW107IH1cbiAgICAgIHZhbHVlLmFkZCA9IHZhbHVlLmFkZC5tYXAoaW5wdXQgPT4ge1xuICAgICAgICBjb25zdCBnbG9iYWxJZE9iamVjdCA9IGZyb21HbG9iYWxJZChpbnB1dCk7XG4gICAgICAgIGlmIChnbG9iYWxJZE9iamVjdC50eXBlID09PSB0YXJnZXRDbGFzcykge1xuICAgICAgICAgIGlucHV0ID0gZ2xvYmFsSWRPYmplY3QuaWQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBfX3R5cGU6ICdQb2ludGVyJyxcbiAgICAgICAgICBjbGFzc05hbWU6IHRhcmdldENsYXNzLFxuICAgICAgICAgIG9iamVjdElkOiBpbnB1dCxcbiAgICAgICAgfTtcbiAgICAgIH0pO1xuICAgICAgb3Aub3BzLnB1c2goe1xuICAgICAgICBfX29wOiAnQWRkUmVsYXRpb24nLFxuICAgICAgICBvYmplY3RzOiBbLi4udmFsdWUuYWRkLCAuLi5uZXN0ZWRPYmplY3RzVG9BZGRdLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKHZhbHVlLnJlbW92ZSkge1xuICAgICAgb3Aub3BzLnB1c2goe1xuICAgICAgICBfX29wOiAnUmVtb3ZlUmVsYXRpb24nLFxuICAgICAgICBvYmplY3RzOiB2YWx1ZS5yZW1vdmUubWFwKGlucHV0ID0+IHtcbiAgICAgICAgICBjb25zdCBnbG9iYWxJZE9iamVjdCA9IGZyb21HbG9iYWxJZChpbnB1dCk7XG4gICAgICAgICAgaWYgKGdsb2JhbElkT2JqZWN0LnR5cGUgPT09IHRhcmdldENsYXNzKSB7XG4gICAgICAgICAgICBpbnB1dCA9IGdsb2JhbElkT2JqZWN0LmlkO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgX190eXBlOiAnUG9pbnRlcicsXG4gICAgICAgICAgICBjbGFzc05hbWU6IHRhcmdldENsYXNzLFxuICAgICAgICAgICAgb2JqZWN0SWQ6IGlucHV0LFxuICAgICAgICAgIH07XG4gICAgICAgIH0pLFxuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBvcDtcbiAgfSxcbiAgcG9pbnRlcjogYXN5bmMgKFxuICAgIHRhcmdldENsYXNzLFxuICAgIGZpZWxkLFxuICAgIHZhbHVlLFxuICAgIG9yaWdpbmFsVmFsdWUsXG4gICAgcGFyc2VHcmFwaFFMU2NoZW1hLFxuICAgIHsgY29uZmlnLCBhdXRoLCBpbmZvIH1cbiAgKSA9PiB7XG4gICAgaWYgKE9iamVjdC5rZXlzKHZhbHVlKS5sZW5ndGggPiAxIHx8IE9iamVjdC5rZXlzKHZhbHVlKS5sZW5ndGggPT09IDApXG4gICAgeyB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoXG4gICAgICBQYXJzZS5FcnJvci5JTlZBTElEX1BPSU5URVIsXG4gICAgICBgWW91IG5lZWQgdG8gcHJvdmlkZSBsaW5rIE9SIGNyZWF0ZUxpbmsgb24gdGhlIHBvaW50ZXIgbXV0YXRpb24gb2YgZmllbGQgJHtmaWVsZH1gXG4gICAgKTsgfVxuXG4gICAgbGV0IG5lc3RlZE9iamVjdFRvQWRkO1xuICAgIGlmICh2YWx1ZS5jcmVhdGVBbmRMaW5rKSB7XG4gICAgICBjb25zdCBwYXJzZUZpZWxkcyA9IGF3YWl0IHRyYW5zZm9ybVR5cGVzKCdjcmVhdGUnLCB2YWx1ZS5jcmVhdGVBbmRMaW5rLCB7XG4gICAgICAgIGNsYXNzTmFtZTogdGFyZ2V0Q2xhc3MsXG4gICAgICAgIHBhcnNlR3JhcGhRTFNjaGVtYSxcbiAgICAgICAgb3JpZ2luYWxGaWVsZHM6IG9yaWdpbmFsVmFsdWUuY3JlYXRlQW5kTGluayxcbiAgICAgICAgcmVxOiB7IGNvbmZpZywgYXV0aCwgaW5mbyB9LFxuICAgICAgfSk7XG4gICAgICBuZXN0ZWRPYmplY3RUb0FkZCA9IGF3YWl0IG9iamVjdHNNdXRhdGlvbnMuY3JlYXRlT2JqZWN0KFxuICAgICAgICB0YXJnZXRDbGFzcyxcbiAgICAgICAgcGFyc2VGaWVsZHMsXG4gICAgICAgIGNvbmZpZyxcbiAgICAgICAgYXV0aCxcbiAgICAgICAgaW5mb1xuICAgICAgKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIF9fdHlwZTogJ1BvaW50ZXInLFxuICAgICAgICBjbGFzc05hbWU6IHRhcmdldENsYXNzLFxuICAgICAgICBvYmplY3RJZDogbmVzdGVkT2JqZWN0VG9BZGQub2JqZWN0SWQsXG4gICAgICB9O1xuICAgIH1cbiAgICBpZiAodmFsdWUubGluaykge1xuICAgICAgbGV0IG9iamVjdElkID0gdmFsdWUubGluaztcbiAgICAgIGNvbnN0IGdsb2JhbElkT2JqZWN0ID0gZnJvbUdsb2JhbElkKG9iamVjdElkKTtcbiAgICAgIGlmIChnbG9iYWxJZE9iamVjdC50eXBlID09PSB0YXJnZXRDbGFzcykge1xuICAgICAgICBvYmplY3RJZCA9IGdsb2JhbElkT2JqZWN0LmlkO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgX190eXBlOiAnUG9pbnRlcicsXG4gICAgICAgIGNsYXNzTmFtZTogdGFyZ2V0Q2xhc3MsXG4gICAgICAgIG9iamVjdElkLFxuICAgICAgfTtcbiAgICB9XG4gIH0sXG59O1xuXG5leHBvcnQgeyB0cmFuc2Zvcm1UeXBlcyB9O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxJQUFBQSxLQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxhQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxlQUFBLEdBQUFGLE9BQUE7QUFDQSxJQUFBRyxnQkFBQSxHQUFBQyx1QkFBQSxDQUFBSixPQUFBO0FBQWdFLFNBQUFLLHlCQUFBQyxDQUFBLDZCQUFBQyxPQUFBLG1CQUFBQyxDQUFBLE9BQUFELE9BQUEsSUFBQUUsQ0FBQSxPQUFBRixPQUFBLFlBQUFGLHdCQUFBLFlBQUFBLENBQUFDLENBQUEsV0FBQUEsQ0FBQSxH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QUVDO0VBQUssQ0FBQyxLQUNuQjtJQUNILElBQUkxRSxNQUFNLENBQUMyQixJQUFJLENBQUM0QixLQUFLLENBQUMsQ0FBQ29CLE1BQU0sR0FBRyxDQUFDLElBQUkzRSxNQUFNLENBQUMyQixJQUFJLENBQUM0QixLQUFLLENBQUMsQ0FBQ29CLE1BQU0sS0FBSyxDQUFDLEVBQ3BFO01BQUUsTUFBTSxJQUFJdkIsYUFBSyxDQUFDQyxLQUFLLENBQ3JCRCxhQUFLLENBQUNDLEtBQUssQ0FBQ3VCLGVBQWUsRUFDM0IsMkVBQTJFL0MsS0FBSyxFQUNsRixDQUFDO0lBQUU7SUFFSCxJQUFJNEQsaUJBQWlCO0lBQ3JCLElBQUlsQyxLQUFLLENBQUNtQyxhQUFhLEVBQUU7TUFDdkIsTUFBTVQsV0FBVyxHQUFHLE1BQU16RSxjQUFjLENBQUMsUUFBUSxFQUFFK0MsS0FBSyxDQUFDbUMsYUFBYSxFQUFFO1FBQ3RFL0UsU0FBUyxFQUFFNEIsV0FBVztRQUN0QjNCLGtCQUFrQjtRQUNsQkUsY0FBYyxFQUFFMEQsYUFBYSxDQUFDa0IsYUFBYTtRQUMzQzdFLEdBQUcsRUFBRTtVQUFFSSxNQUFNO1VBQUV3RCxJQUFJO1VBQUVDO1FBQUs7TUFDNUIsQ0FBQyxDQUFDO01BQ0ZlLGlCQUFpQixHQUFHLE1BQU12RyxnQkFBZ0IsQ0FBQ2dHLFlBQVksQ0FDckQzQyxXQUFXLEVBQ1gwQyxXQUFXLEVBQ1hoRSxNQUFNLEVBQ053RCxJQUFJLEVBQ0pDLElBQ0YsQ0FBQztNQUNELE9BQU87UUFDTHpCLE1BQU0sRUFBRSxTQUFTO1FBQ2pCdEMsU0FBUyxFQUFFNEIsV0FBVztRQUN0QjZDLFFBQVEsRUFBRUssaUJBQWlCLENBQUNMO01BQzlCLENBQUM7SUFDSDtJQUNBLElBQUk3QixLQUFLLENBQUNvQyxJQUFJLEVBQUU7TUFDZCxJQUFJUCxRQUFRLEdBQUc3QixLQUFLLENBQUNvQyxJQUFJO01BQ3pCLE1BQU16QixjQUFjLEdBQUcsSUFBQUMsMEJBQVksRUFBQ2lCLFFBQVEsQ0FBQztNQUM3QyxJQUFJbEIsY0FBYyxDQUFDbEMsSUFBSSxLQUFLTyxXQUFXLEVBQUU7UUFDdkM2QyxRQUFRLEdBQUdsQixjQUFjLENBQUNHLEVBQUU7TUFDOUI7TUFDQSxPQUFPO1FBQ0xwQixNQUFNLEVBQUUsU0FBUztRQUNqQnRDLFNBQVMsRUFBRTRCLFdBQVc7UUFDdEI2QztNQUNGLENBQUM7SUFDSDtFQUNGO0FBQ0YsQ0FBQyIsImlnbm9yZUxpc3QiOltdfQ==
|
|
274
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbm9kZSIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX2dyYXBocWxSZWxheSIsIl9maWxlc011dGF0aW9ucyIsIm9iamVjdHNNdXRhdGlvbnMiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsImUiLCJ0IiwiV2Vha01hcCIsInIiLCJuIiwiX19lc01vZHVsZSIsIm8iLCJpIiwiZiIsIl9fcHJvdG9fXyIsImRlZmF1bHQiLCJoYXMiLCJnZXQiLCJzZXQiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsInRyYW5zZm9ybVR5cGVzIiwiaW5wdXRUeXBlIiwiZmllbGRzIiwiY2xhc3NOYW1lIiwicGFyc2VHcmFwaFFMU2NoZW1hIiwicmVxIiwib3JpZ2luYWxGaWVsZHMiLCJjbGFzc0dyYXBoUUxDcmVhdGVUeXBlIiwiY2xhc3NHcmFwaFFMVXBkYXRlVHlwZSIsImNvbmZpZyIsImlzQ3JlYXRlRW5hYmxlZCIsImlzVXBkYXRlRW5hYmxlZCIsInBhcnNlQ2xhc3NUeXBlcyIsInBhcnNlQ2xhc3MiLCJwYXJzZUNsYXNzZXMiLCJjbGFzc0dyYXBoUUxDcmVhdGVUeXBlRmllbGRzIiwiZ2V0RmllbGRzIiwiY2xhc3NHcmFwaFFMVXBkYXRlVHlwZUZpZWxkcyIsInByb21pc2VzIiwia2V5cyIsIm1hcCIsImZpZWxkIiwiaW5wdXRUeXBlRmllbGQiLCJwYXJzZUZpZWxkVHlwZSIsInR5cGUiLCJfX29wIiwidHJhbnNmb3JtZXJzIiwiZ2VvUG9pbnQiLCJwb2x5Z29uIiwiZmlsZSIsInJlbGF0aW9uIiwidGFyZ2V0Q2xhc3MiLCJwb2ludGVyIiwiUHJvbWlzZSIsImFsbCIsIkFDTCIsImV4cG9ydHMiLCJpbnB1dCIsInVwbG9hZCIsImZpbGVJbmZvIiwiaGFuZGxlVXBsb2FkIiwiX190eXBlIiwibmFtZSIsInVybCIsIlBhcnNlIiwiRXJyb3IiLCJGSUxFX1NBVkVfRVJST1IiLCJ2YWx1ZSIsImNvb3JkaW5hdGVzIiwibGF0aXR1ZGUiLCJsb25naXR1ZGUiLCJwYXJzZUFDTCIsInB1YmxpYyIsInJlYWQiLCJ3cml0ZSIsInVzZXJzIiwiZm9yRWFjaCIsInJ1bGUiLCJnbG9iYWxJZE9iamVjdCIsImZyb21HbG9iYWxJZCIsInVzZXJJZCIsImlkIiwicm9sZXMiLCJyb2xlTmFtZSIsIm9yaWdpbmFsVmFsdWUiLCJhdXRoIiwiaW5mbyIsImxlbmd0aCIsIklOVkFMSURfUE9JTlRFUiIsIm9wIiwib3BzIiwibmVzdGVkT2JqZWN0c1RvQWRkIiwiY3JlYXRlQW5kQWRkIiwicGFyc2VGaWVsZHMiLCJjcmVhdGVPYmplY3QiLCJvYmplY3QiLCJvYmplY3RJZCIsImFkZCIsInB1c2giLCJvYmplY3RzIiwicmVtb3ZlIiwibmVzdGVkT2JqZWN0VG9BZGQiLCJjcmVhdGVBbmRMaW5rIiwibGluayJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9HcmFwaFFML3RyYW5zZm9ybWVycy9tdXRhdGlvbi5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUGFyc2UgZnJvbSAncGFyc2Uvbm9kZSc7XG5pbXBvcnQgeyBmcm9tR2xvYmFsSWQgfSBmcm9tICdncmFwaHFsLXJlbGF5JztcbmltcG9ydCB7IGhhbmRsZVVwbG9hZCB9IGZyb20gJy4uL2xvYWRlcnMvZmlsZXNNdXRhdGlvbnMnO1xuaW1wb3J0ICogYXMgb2JqZWN0c011dGF0aW9ucyBmcm9tICcuLi9oZWxwZXJzL29iamVjdHNNdXRhdGlvbnMnO1xuXG5jb25zdCB0cmFuc2Zvcm1UeXBlcyA9IGFzeW5jIChcbiAgaW5wdXRUeXBlOiAnY3JlYXRlJyB8ICd1cGRhdGUnLFxuICBmaWVsZHMsXG4gIHsgY2xhc3NOYW1lLCBwYXJzZUdyYXBoUUxTY2hlbWEsIHJlcSwgb3JpZ2luYWxGaWVsZHMgfVxuKSA9PiB7XG4gIGNvbnN0IHtcbiAgICBjbGFzc0dyYXBoUUxDcmVhdGVUeXBlLFxuICAgIGNsYXNzR3JhcGhRTFVwZGF0ZVR5cGUsXG4gICAgY29uZmlnOiB7IGlzQ3JlYXRlRW5hYmxlZCwgaXNVcGRhdGVFbmFibGVkIH0sXG4gIH0gPSBwYXJzZUdyYXBoUUxTY2hlbWEucGFyc2VDbGFzc1R5cGVzW2NsYXNzTmFtZV07XG4gIGNvbnN0IHBhcnNlQ2xhc3MgPSBwYXJzZUdyYXBoUUxTY2hlbWEucGFyc2VDbGFzc2VzW2NsYXNzTmFtZV07XG4gIGlmIChmaWVsZHMpIHtcbiAgICBjb25zdCBjbGFzc0dyYXBoUUxDcmVhdGVUeXBlRmllbGRzID1cbiAgICAgIGlzQ3JlYXRlRW5hYmxlZCAmJiBjbGFzc0dyYXBoUUxDcmVhdGVUeXBlID8gY2xhc3NHcmFwaFFMQ3JlYXRlVHlwZS5nZXRGaWVsZHMoKSA6IG51bGw7XG4gICAgY29uc3QgY2xhc3NHcmFwaFFMVXBkYXRlVHlwZUZpZWxkcyA9XG4gICAgICBpc1VwZGF0ZUVuYWJsZWQgJiYgY2xhc3NHcmFwaFFMVXBkYXRlVHlwZSA/IGNsYXNzR3JhcGhRTFVwZGF0ZVR5cGUuZ2V0RmllbGRzKCkgOiBudWxsO1xuICAgIGNvbnN0IHByb21pc2VzID0gT2JqZWN0LmtleXMoZmllbGRzKS5tYXAoYXN5bmMgZmllbGQgPT4ge1xuICAgICAgbGV0IGlucHV0VHlwZUZpZWxkO1xuICAgICAgaWYgKGlucHV0VHlwZSA9PT0gJ2NyZWF0ZScgJiYgY2xhc3NHcmFwaFFMQ3JlYXRlVHlwZUZpZWxkcykge1xuICAgICAgICBpbnB1dFR5cGVGaWVsZCA9IGNsYXNzR3JhcGhRTENyZWF0ZVR5cGVGaWVsZHNbZmllbGRdO1xuICAgICAgfSBlbHNlIGlmIChjbGFzc0dyYXBoUUxVcGRhdGVUeXBlRmllbGRzKSB7XG4gICAgICAgIGlucHV0VHlwZUZpZWxkID0gY2xhc3NHcmFwaFFMVXBkYXRlVHlwZUZpZWxkc1tmaWVsZF07XG4gICAgICB9XG4gICAgICBpZiAoaW5wdXRUeXBlRmllbGQpIHtcbiAgICAgICAgY29uc3QgcGFyc2VGaWVsZFR5cGUgPSBwYXJzZUNsYXNzLmZpZWxkc1tmaWVsZF0udHlwZTtcbiAgICAgICAgc3dpdGNoIChwYXJzZUZpZWxkVHlwZSkge1xuICAgICAgICAgIGNhc2UgJ0dlb1BvaW50JzpcbiAgICAgICAgICAgIGlmIChmaWVsZHNbZmllbGRdID09PSBudWxsKSB7XG4gICAgICAgICAgICAgIGZpZWxkc1tmaWVsZF0gPSB7IF9fb3A6ICdEZWxldGUnIH07XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZmllbGRzW2ZpZWxkXSA9IHRyYW5zZm9ybWVycy5nZW9Qb2ludChmaWVsZHNbZmllbGRdKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ1BvbHlnb24nOlxuICAgICAgICAgICAgaWYgKGZpZWxkc1tmaWVsZF0gPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgZmllbGRzW2ZpZWxkXSA9IHsgX19vcDogJ0RlbGV0ZScgfTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmaWVsZHNbZmllbGRdID0gdHJhbnNmb3JtZXJzLnBvbHlnb24oZmllbGRzW2ZpZWxkXSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlICdGaWxlJzpcbiAgICAgICAgICAgIC8vIFdlIG5lZWQgdG8gdXNlIHRoZSBvcmlnaW5hbEZpZWxkcyB0byBoYW5kbGUgdGhlIGZpbGUgdXBsb2FkXG4gICAgICAgICAgICAvLyBzaW5jZSBmaWVsZHMgYXJlIGEgZGVlcGNvcHkgYW5kIGRvIG5vdCBrZWVwIHRoZSBmaWxlIG9iamVjdFxuICAgICAgICAgICAgZmllbGRzW2ZpZWxkXSA9IGF3YWl0IHRyYW5zZm9ybWVycy5maWxlKG9yaWdpbmFsRmllbGRzW2ZpZWxkXSwgcmVxKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ1JlbGF0aW9uJzpcbiAgICAgICAgICAgIGZpZWxkc1tmaWVsZF0gPSBhd2FpdCB0cmFuc2Zvcm1lcnMucmVsYXRpb24oXG4gICAgICAgICAgICAgIHBhcnNlQ2xhc3MuZmllbGRzW2ZpZWxkXS50YXJnZXRDbGFzcyxcbiAgICAgICAgICAgICAgZmllbGQsXG4gICAgICAgICAgICAgIGZpZWxkc1tmaWVsZF0sXG4gICAgICAgICAgICAgIG9yaWdpbmFsRmllbGRzW2ZpZWxkXSxcbiAgICAgICAgICAgICAgcGFyc2VHcmFwaFFMU2NoZW1hLFxuICAgICAgICAgICAgICByZXFcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlICdQb2ludGVyJzpcbiAgICAgICAgICAgIGlmIChmaWVsZHNbZmllbGRdID09PSBudWxsKSB7XG4gICAgICAgICAgICAgIGZpZWxkc1tmaWVsZF0gPSB7IF9fb3A6ICdEZWxldGUnIH07XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZmllbGRzW2ZpZWxkXSA9IGF3YWl0IHRyYW5zZm9ybWVycy5wb2ludGVyKFxuICAgICAgICAgICAgICBwYXJzZUNsYXNzLmZpZWxkc1tmaWVsZF0udGFyZ2V0Q2xhc3MsXG4gICAgICAgICAgICAgIGZpZWxkLFxuICAgICAgICAgICAgICBmaWVsZHNbZmllbGRdLFxuICAgICAgICAgICAgICBvcmlnaW5hbEZpZWxkc1tmaWVsZF0sXG4gICAgICAgICAgICAgIHBhcnNlR3JhcGhRTFNjaGVtYSxcbiAgICAgICAgICAgICAgcmVxXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIGlmIChmaWVsZHNbZmllbGRdID09PSBudWxsKSB7XG4gICAgICAgICAgICAgIGZpZWxkc1tmaWVsZF0gPSB7IF9fb3A6ICdEZWxldGUnIH07XG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gICAgYXdhaXQgUHJvbWlzZS5hbGwocHJvbWlzZXMpO1xuICAgIGlmIChmaWVsZHMuQUNMKSB7IGZpZWxkcy5BQ0wgPSB0cmFuc2Zvcm1lcnMuQUNMKGZpZWxkcy5BQ0wpOyB9XG4gIH1cbiAgcmV0dXJuIGZpZWxkcztcbn07XG5cbmNvbnN0IHRyYW5zZm9ybWVycyA9IHtcbiAgZmlsZTogYXN5bmMgKGlucHV0LCB7IGNvbmZpZyB9KSA9PiB7XG4gICAgaWYgKGlucHV0ID09PSBudWxsKSB7XG4gICAgICByZXR1cm4geyBfX29wOiAnRGVsZXRlJyB9O1xuICAgIH1cbiAgICBjb25zdCB7IGZpbGUsIHVwbG9hZCB9ID0gaW5wdXQ7XG4gICAgaWYgKHVwbG9hZCkge1xuICAgICAgY29uc3QgeyBmaWxlSW5mbyB9ID0gYXdhaXQgaGFuZGxlVXBsb2FkKHVwbG9hZCwgY29uZmlnKTtcbiAgICAgIHJldHVybiB7IC4uLmZpbGVJbmZvLCBfX3R5cGU6ICdGaWxlJyB9O1xuICAgIH0gZWxzZSBpZiAoZmlsZSAmJiBmaWxlLm5hbWUpIHtcbiAgICAgIHJldHVybiB7IG5hbWU6IGZpbGUubmFtZSwgX190eXBlOiAnRmlsZScsIHVybDogZmlsZS51cmwgfTtcbiAgICB9XG4gICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFBhcnNlLkVycm9yLkZJTEVfU0FWRV9FUlJPUiwgJ0ludmFsaWQgZmlsZSB1cGxvYWQuJyk7XG4gIH0sXG4gIHBvbHlnb246IHZhbHVlID0+ICh7XG4gICAgX190eXBlOiAnUG9seWdvbicsXG4gICAgY29vcmRpbmF0ZXM6IHZhbHVlLm1hcChnZW9Qb2ludCA9PiBbZ2VvUG9pbnQubGF0aXR1ZGUsIGdlb1BvaW50LmxvbmdpdHVkZV0pLFxuICB9KSxcbiAgZ2VvUG9pbnQ6IHZhbHVlID0+ICh7XG4gICAgLi4udmFsdWUsXG4gICAgX190eXBlOiAnR2VvUG9pbnQnLFxuICB9KSxcbiAgQUNMOiB2YWx1ZSA9PiB7XG4gICAgY29uc3QgcGFyc2VBQ0wgPSB7fTtcbiAgICBpZiAodmFsdWUucHVibGljKSB7XG4gICAgICBwYXJzZUFDTFsnKiddID0ge1xuICAgICAgICByZWFkOiB2YWx1ZS5wdWJsaWMucmVhZCxcbiAgICAgICAgd3JpdGU6IHZhbHVlLnB1YmxpYy53cml0ZSxcbiAgICAgIH07XG4gICAgfVxuICAgIGlmICh2YWx1ZS51c2Vycykge1xuICAgICAgdmFsdWUudXNlcnMuZm9yRWFjaChydWxlID0+IHtcbiAgICAgICAgY29uc3QgZ2xvYmFsSWRPYmplY3QgPSBmcm9tR2xvYmFsSWQocnVsZS51c2VySWQpO1xuICAgICAgICBpZiAoZ2xvYmFsSWRPYmplY3QudHlwZSA9PT0gJ19Vc2VyJykge1xuICAgICAgICAgIHJ1bGUudXNlcklkID0gZ2xvYmFsSWRPYmplY3QuaWQ7XG4gICAgICAgIH1cbiAgICAgICAgcGFyc2VBQ0xbcnVsZS51c2VySWRdID0ge1xuICAgICAgICAgIHJlYWQ6IHJ1bGUucmVhZCxcbiAgICAgICAgICB3cml0ZTogcnVsZS53cml0ZSxcbiAgICAgICAgfTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICBpZiAodmFsdWUucm9sZXMpIHtcbiAgICAgIHZhbHVlLnJvbGVzLmZvckVhY2gocnVsZSA9PiB7XG4gICAgICAgIHBhcnNlQUNMW2Byb2xlOiR7cnVsZS5yb2xlTmFtZX1gXSA9IHtcbiAgICAgICAgICByZWFkOiBydWxlLnJlYWQsXG4gICAgICAgICAgd3JpdGU6IHJ1bGUud3JpdGUsXG4gICAgICAgIH07XG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHBhcnNlQUNMO1xuICB9LFxuICByZWxhdGlvbjogYXN5bmMgKFxuICAgIHRhcmdldENsYXNzLFxuICAgIGZpZWxkLFxuICAgIHZhbHVlLFxuICAgIG9yaWdpbmFsVmFsdWUsXG4gICAgcGFyc2VHcmFwaFFMU2NoZW1hLFxuICAgIHsgY29uZmlnLCBhdXRoLCBpbmZvIH1cbiAgKSA9PiB7XG4gICAgaWYgKE9iamVjdC5rZXlzKHZhbHVlKS5sZW5ndGggPT09IDApXG4gICAgeyB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoXG4gICAgICBQYXJzZS5FcnJvci5JTlZBTElEX1BPSU5URVIsXG4gICAgICBgWW91IG5lZWQgdG8gcHJvdmlkZSBhdCBsZWFzdCBvbmUgb3BlcmF0aW9uIG9uIHRoZSByZWxhdGlvbiBtdXRhdGlvbiBvZiBmaWVsZCAke2ZpZWxkfWBcbiAgICApOyB9XG5cbiAgICBjb25zdCBvcCA9IHtcbiAgICAgIF9fb3A6ICdCYXRjaCcsXG4gICAgICBvcHM6IFtdLFxuICAgIH07XG4gICAgbGV0IG5lc3RlZE9iamVjdHNUb0FkZCA9IFtdO1xuXG4gICAgaWYgKHZhbHVlLmNyZWF0ZUFuZEFkZCkge1xuICAgICAgbmVzdGVkT2JqZWN0c1RvQWRkID0gKFxuICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgICAgICB2YWx1ZS5jcmVhdGVBbmRBZGQubWFwKGFzeW5jIChpbnB1dCwgaSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgcGFyc2VGaWVsZHMgPSBhd2FpdCB0cmFuc2Zvcm1UeXBlcygnY3JlYXRlJywgaW5wdXQsIHtcbiAgICAgICAgICAgICAgY2xhc3NOYW1lOiB0YXJnZXRDbGFzcyxcbiAgICAgICAgICAgICAgb3JpZ2luYWxGaWVsZHM6IG9yaWdpbmFsVmFsdWUuY3JlYXRlQW5kQWRkW2ldLFxuICAgICAgICAgICAgICBwYXJzZUdyYXBoUUxTY2hlbWEsXG4gICAgICAgICAgICAgIHJlcTogeyBjb25maWcsIGF1dGgsIGluZm8gfSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIG9iamVjdHNNdXRhdGlvbnMuY3JlYXRlT2JqZWN0KHRhcmdldENsYXNzLCBwYXJzZUZpZWxkcywgY29uZmlnLCBhdXRoLCBpbmZvKTtcbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICApLm1hcChvYmplY3QgPT4gKHtcbiAgICAgICAgX190eXBlOiAnUG9pbnRlcicsXG4gICAgICAgIGNsYXNzTmFtZTogdGFyZ2V0Q2xhc3MsXG4gICAgICAgIG9iamVjdElkOiBvYmplY3Qub2JqZWN0SWQsXG4gICAgICB9KSk7XG4gICAgfVxuXG4gICAgaWYgKHZhbHVlLmFkZCB8fCBuZXN0ZWRPYmplY3RzVG9BZGQubGVuZ3RoID4gMCkge1xuICAgICAgaWYgKCF2YWx1ZS5hZGQpIHsgdmFsdWUuYWRkID0gW107IH1cbiAgICAgIHZhbHVlLmFkZCA9IHZhbHVlLmFkZC5tYXAoaW5wdXQgPT4ge1xuICAgICAgICBjb25zdCBnbG9iYWxJZE9iamVjdCA9IGZyb21HbG9iYWxJZChpbnB1dCk7XG4gICAgICAgIGlmIChnbG9iYWxJZE9iamVjdC50eXBlID09PSB0YXJnZXRDbGFzcykge1xuICAgICAgICAgIGlucHV0ID0gZ2xvYmFsSWRPYmplY3QuaWQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBfX3R5cGU6ICdQb2ludGVyJyxcbiAgICAgICAgICBjbGFzc05hbWU6IHRhcmdldENsYXNzLFxuICAgICAgICAgIG9iamVjdElkOiBpbnB1dCxcbiAgICAgICAgfTtcbiAgICAgIH0pO1xuICAgICAgb3Aub3BzLnB1c2goe1xuICAgICAgICBfX29wOiAnQWRkUmVsYXRpb24nLFxuICAgICAgICBvYmplY3RzOiBbLi4udmFsdWUuYWRkLCAuLi5uZXN0ZWRPYmplY3RzVG9BZGRdLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKHZhbHVlLnJlbW92ZSkge1xuICAgICAgb3Aub3BzLnB1c2goe1xuICAgICAgICBfX29wOiAnUmVtb3ZlUmVsYXRpb24nLFxuICAgICAgICBvYmplY3RzOiB2YWx1ZS5yZW1vdmUubWFwKGlucHV0ID0+IHtcbiAgICAgICAgICBjb25zdCBnbG9iYWxJZE9iamVjdCA9IGZyb21HbG9iYWxJZChpbnB1dCk7XG4gICAgICAgICAgaWYgKGdsb2JhbElkT2JqZWN0LnR5cGUgPT09IHRhcmdldENsYXNzKSB7XG4gICAgICAgICAgICBpbnB1dCA9IGdsb2JhbElkT2JqZWN0LmlkO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgX190eXBlOiAnUG9pbnRlcicsXG4gICAgICAgICAgICBjbGFzc05hbWU6IHRhcmdldENsYXNzLFxuICAgICAgICAgICAgb2JqZWN0SWQ6IGlucHV0LFxuICAgICAgICAgIH07XG4gICAgICAgIH0pLFxuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBvcDtcbiAgfSxcbiAgcG9pbnRlcjogYXN5bmMgKFxuICAgIHRhcmdldENsYXNzLFxuICAgIGZpZWxkLFxuICAgIHZhbHVlLFxuICAgIG9yaWdpbmFsVmFsdWUsXG4gICAgcGFyc2VHcmFwaFFMU2NoZW1hLFxuICAgIHsgY29uZmlnLCBhdXRoLCBpbmZvIH1cbiAgKSA9PiB7XG4gICAgaWYgKE9iamVjdC5rZXlzKHZhbHVlKS5sZW5ndGggPiAxIHx8IE9iamVjdC5rZXlzKHZhbHVlKS5sZW5ndGggPT09IDApXG4gICAgeyB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoXG4gICAgICBQYXJzZS5FcnJvci5JTlZBTElEX1BPSU5URVIsXG4gICAgICBgWW91IG5lZWQgdG8gcHJvdmlkZSBsaW5rIE9SIGNyZWF0ZUxpbmsgb24gdGhlIHBvaW50ZXIgbXV0YXRpb24gb2YgZmllbGQgJHtmaWVsZH1gXG4gICAgKTsgfVxuXG4gICAgbGV0IG5lc3RlZE9iamVjdFRvQWRkO1xuICAgIGlmICh2YWx1ZS5jcmVhdGVBbmRMaW5rKSB7XG4gICAgICBjb25zdCBwYXJzZUZpZWxkcyA9IGF3YWl0IHRyYW5zZm9ybVR5cGVzKCdjcmVhdGUnLCB2YWx1ZS5jcmVhdGVBbmRMaW5rLCB7XG4gICAgICAgIGNsYXNzTmFtZTogdGFyZ2V0Q2xhc3MsXG4gICAgICAgIHBhcnNlR3JhcGhRTFNjaGVtYSxcbiAgICAgICAgb3JpZ2luYWxGaWVsZHM6IG9yaWdpbmFsVmFsdWUuY3JlYXRlQW5kTGluayxcbiAgICAgICAgcmVxOiB7IGNvbmZpZywgYXV0aCwgaW5mbyB9LFxuICAgICAgfSk7XG4gICAgICBuZXN0ZWRPYmplY3RUb0FkZCA9IGF3YWl0IG9iamVjdHNNdXRhdGlvbnMuY3JlYXRlT2JqZWN0KFxuICAgICAgICB0YXJnZXRDbGFzcyxcbiAgICAgICAgcGFyc2VGaWVsZHMsXG4gICAgICAgIGNvbmZpZyxcbiAgICAgICAgYXV0aCxcbiAgICAgICAgaW5mb1xuICAgICAgKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIF9fdHlwZTogJ1BvaW50ZXInLFxuICAgICAgICBjbGFzc05hbWU6IHRhcmdldENsYXNzLFxuICAgICAgICBvYmplY3RJZDogbmVzdGVkT2JqZWN0VG9BZGQub2JqZWN0SWQsXG4gICAgICB9O1xuICAgIH1cbiAgICBpZiAodmFsdWUubGluaykge1xuICAgICAgbGV0IG9iamVjdElkID0gdmFsdWUubGluaztcbiAgICAgIGNvbnN0IGdsb2JhbElkT2JqZWN0ID0gZnJvbUdsb2JhbElkKG9iamVjdElkKTtcbiAgICAgIGlmIChnbG9iYWxJZE9iamVjdC50eXBlID09PSB0YXJnZXRDbGFzcykge1xuICAgICAgICBvYmplY3RJZCA9IGdsb2JhbElkT2JqZWN0LmlkO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgX190eXBlOiAnUG9pbnRlcicsXG4gICAgICAgIGNsYXNzTmFtZTogdGFyZ2V0Q2xhc3MsXG4gICAgICAgIG9iamVjdElkLFxuICAgICAgfTtcbiAgICB9XG4gIH0sXG59O1xuXG5leHBvcnQgeyB0cmFuc2Zvcm1UeXBlcyB9O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxJQUFBQSxLQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxhQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxlQUFBLEdBQUFGLE9BQUE7QUFDQSxJQUFBRyxnQkFBQSxHQUFBQyx1QkFBQSxDQUFBSixPQUFBO0FBQWdFLFNBQUFJLHdCQUFBQyxDQUFBLEVBQUFDLENBQUEsNkJBQUFDLE9BQUEsTUFBQUMsQ0FBQSxPQUFBRCxPQUFBLElBQUFFLENBQUEsT0FBQUYsT0FBQSxZQUFBSCx1QkFBQSxZQUFBQSxDQUFBQyxDQUFBLEVBQUFDLENBQUEsU0FBQUEsQ0FBQSxJQUFBRCxDQUFBLElBQUFBLENBQUEsQ0FBQUssVUFBQSxTQUFBTCxDQUFBLE1BQUFNLENBQUEsRUFBQUMsQ0FBQSxFQUFBQyxDQUFBLEtBQUFDLFNBQUEsUUFBQUMsT0FBQSxFQUFBVixDQUFBLGlCQUFBQSxDQUFBLHVCQUFBQSxDQUFBLHlCQUFBQSxDQUFBLFNBQUFRLENBQUEsTUFBQUYsQ0FBQSxHQUFBTCxDQUFBLEdBQUFHLENBQUEsR0FBQUQsQ0FBQSxRQUFBRyxDQUFBLENBQUFLLEdBQUEsQ0FBQVgsQ0FBQSxVQUFBTSxDQUFBLENBQUFNLEdBQUEsQ0FBQVosQ0FBQSxHQUFBTSxDQUFBLENBQUFPLEdBQUEsQ0FBQWIsQ0FBQSxFQUFBUSxDQUFBLGdCQUFBUCxDQUFBLElBQUFELENBQUEsZ0JBQUFDLENBQUEsT0FBQWEsY0FBQSxDQUFBQyxJQUFBLENBQUFmLENBQUEsRUFBQUMsQ0FBQSxPQUFBTSxDQUFBLElBQUFELENBQUEsR0FBQVUsTUFBQSxDQUFBQyxjQUFBLEtBQUFELE1BQUEsQ0FBQUUsd0JBQUEsQ0FBQWxCLENBQUEsRUFBQUMsQ0FBQSxPQUFBTSxDQUFBLENBQUFLLEdBQUEsSUFBQUwsQ0FBQSxDQUFBTSxHQUFBLElBQUFQLENBQUEsQ0FBQUUsQ0FBQSxFQUFBUCxDQUFBLEVBQUFNLENBQUEsSUFBQUMsQ0FBQSxDQUFBUCxDQUFBLElBQUFELENBQUEsQ0FBQUMsQ0FBQSxXQUFBTyxDQUFBLEtBQUFSLENBQUEsRUFBQUMsQ0FBQTtBQUFBLFNBQUFQLHVCQUFBTSxDQUFBLFdBQUFBLENBQUEsSUFBQUEsQ0FBQSxDQUFBSyxVQUFBLEdBQUFMLENBQUEsS0FBQVUsT0FBQSxFQUFBVixDQUFBO0FBRWhFLE1BQU1tQixjQUFjLEdBQUcsTUFBQUEsQ0FDckJDLFNBQThCLEVBQzlCQyxNQUFNLEVBQ047RUFBRUMsU0FBUztFQUFFQyxrQkFBa0I7RUFBRUMsR0FBRztFQUFFQztBQUFlLENBQUMsS0FDbkQ7RUFDSCxNQUFNO0lBQ0pDLHNCQUFzQjtJQUN0QkMsc0JBQXNCO0lBQ3RCQyxNQUFNLEVBQUU7TUFBRUMsZUFBZTtNQUFFQztJQUFnQjtFQUM3QyxDQUFDLEdBQUdQLGtCQUFrQixDQUFDUSxlQUFlLENBQUNULFNBQVMsQ0FBQztFQUNqRCxNQUFNVSxVQUFVLEdBQUdULGtCQUFrQixDQUFDVSxZQUFZLENBQUNYLFNBQVMsQ0FBQztFQUM3RCxJQUFJRCxNQUFNLEVBQUU7SUFDVixNQUFNYSw0QkFBNEIsR0FDaENMLGVBQWUsSUFBSUgsc0JBQXNCLEdBQUdBLHNCQUFzQixDQUFDUyxTQUFTLENBQUMsQ0FBQyxHQUFHLElBQUk7SUFDdkYsTUFBTUMsNEJBQTRCLEdBQ2hDTixlQUFlLElBQUlILHNCQUFzQixHQUFHQSxzQkFBc0IsQ0FBQ1EsU0FBUyxDQUFDLENBQUMsR0FBRyxJQUFJO0lBQ3ZGLE1BQU1FLFFBQVEsR0FBR3JCLE1BQU0sQ0FBQ3NCLElBQUksQ0FBQ2pCLE1BQU0sQ0FBQyxDQUFDa0IsR0FBRyxDQUFDLE1BQU1DLEtBQUssSUFBSTtNQUN0RCxJQUFJQyxjQUFjO01BQ2xCLElBQUlyQixTQUFTLEtBQUssUUFBUSxJQUFJYyw0QkFBNEIsRUFBRTtRQUMxRE8sY0FBYyxHQUFHUCw0QkFBNEIsQ0FBQ00sS0FBSyxDQUFDO01BQ3RELENBQUMsTUFBTSxJQUFJSiw0QkFBNEIsRUFBRTtRQUN2Q0ssY0FBYyxHQUFHTCw0QkFBNEIsQ0FBQ0ksS0FBSyxDQUFDO01BQ3REO01BQ0EsSUFBSUMsY0FBYyxFQUFFO1FBQ2xCLE1BQU1DLGNBQWMsR0FBR1YsVUFBVSxDQUFDWCxNQUFNLENBQUNtQixLQUFLLENBQUMsQ0FBQ0csSUFBSTtRQUNwRCxRQUFRRCxjQUFjO1VBQ3BCLEtBQUssVUFBVTtZQUNiLElBQUlyQixNQUFNLENBQUNtQixLQUFLLENBQUMsS0FBSyxJQUFJLEVBQUU7Y0FDMUJuQixNQUFNLENBQUNtQixLQUFLLENBQUMsR0FBRztnQkFBRUksSUFBSSxFQUFFO2NBQVMsQ0FBQztjQUNsQztZQUNGO1lBQ0F2QixNQUFNLENBQUNtQixLQUFLLENBQUMsR0FBR0ssWUFBWSxDQUFDQyxRQUFRLENBQUN6QixNQUFNLENBQUNtQixLQUFLLENBQUMsQ0FBQztZQUNwRDtVQUNGLEtBQUssU0FBUztZQUNaLElBQUluQixNQUFNLENBQUNtQixLQUFLLENBQUMsS0FBSyxJQUFJLEVBQUU7Y0FDMUJuQixNQUFNLENBQUNtQixLQUFLLENBQUMsR0FBRztnQkFBRUksSUFBSSxFQUFFO2NBQVMsQ0FBQztjQUNsQztZQUNGO1lBQ0F2QixNQUFNLENBQUNtQixLQUFLLENBQUMsR0FBR0ssWUFBWSxDQUFDRSxPQUFPLENBQUMxQixNQUFNLENBQUNtQixLQUFLLENBQUMsQ0FBQztZQUNuRDtVQUNGLEtBQUssTUFBTTtZQUNUO1lBQ0E7WUFDQW5CLE1BQU0sQ0FBQ21CLEtBQUssQ0FBQyxHQUFHLE1BQU1LLFlBQVksQ0FBQ0csSUFBSSxDQUFDdkIsY0FBYyxDQUFDZSxLQUFLLENBQUMsRUFBRWhCLEdBQUcsQ0FBQztZQUNuRTtVQUNGLEtBQUssVUFBVTtZQUNiSCxNQUFNLENBQUNtQixLQUFLLENBQUMsR0FBRyxNQUFNSyxZQUFZLENBQUNJLFFBQVEsQ0FDekNqQixVQUFVLENBQUNYLE1BQU0sQ0FBQ21CLEtBQUssQ0FBQyxDQUFDVSxXQUFXLEVBQ3BDVixLQUFLLEVBQ0xuQixNQUFNLENBQUNtQixLQUFLLENBQUMsRUFDYmYsY0FBYyxDQUFDZSxLQUFLLENBQUMsRUFDckJqQixrQkFBa0IsRUFDbEJDLEdBQ0YsQ0FBQztZQUNEO1VBQ0YsS0FBSyxTQUFTO1lBQ1osSUFBSUgsTUFBTSxDQUFDbUIsS0FBSyxDQUFDLEtBQUssSUFBSSxFQUFFO2NBQzFCbkIsTUFBTSxDQUFDbUIsS0FBSyxDQUFDLEdBQUc7Z0JBQUVJLElBQUksRUFBRTtjQUFTLENBQUM7Y0FDbEM7WUFDRjtZQUNBdkIsTUFBTSxDQUFDbUIsS0FBSyxDQUFDLEdBQUcsTUFBTUssWUFBWSxDQUFDTSxPQUFPLENBQ3hDbkIsVUFBVSxDQUFDWCxNQUFNLENBQUNtQixLQUFLLENBQUMsQ0FBQ1UsV0FBVyxFQUNwQ1YsS0FBSyxFQUNMbkIsTUFBTSxDQUFDbUIsS0FBSyxDQUFDLEVBQ2JmLGNBQWMsQ0FBQ2UsS0FBSyxDQUFDLEVBQ3JCakIsa0JBQWtCLEVBQ2xCQyxHQUNGLENBQUM7WUFDRDtVQUNGO1lBQ0UsSUFBSUgsTUFBTSxDQUFDbUIsS0FBSyxDQUFDLEtBQUssSUFBSSxFQUFFO2NBQzFCbkIsTUFBTSxDQUFDbUIsS0FBSyxDQUFDLEdBQUc7Z0JBQUVJLElBQUksRUFBRTtjQUFTLENBQUM7Y0FDbEM7WUFDRjtZQUNBO1FBQ0o7TUFDRjtJQUNGLENBQUMsQ0FBQztJQUNGLE1BQU1RLE9BQU8sQ0FBQ0MsR0FBRyxDQUFDaEIsUUFBUSxDQUFDO0lBQzNCLElBQUloQixNQUFNLENBQUNpQyxHQUFHLEVBQUU7TUFBRWpDLE1BQU0sQ0FBQ2lDLEdBQUcsR0FBR1QsWUFBWSxDQUFDUyxHQUFHLENBQUNqQyxNQUFNLENBQUNpQyxHQUFHLENBQUM7SUFBRTtFQUMvRDtFQUNBLE9BQU9qQyxNQUFNO0FBQ2YsQ0FBQztBQUFDa0MsT0FBQSxDQUFBcEMsY0FBQSxHQUFBQSxjQUFBO0FBRUYsTUFBTTBCLFlBQVksR0FBRztFQUNuQkcsSUFBSSxFQUFFLE1BQUFBLENBQU9RLEtBQUssRUFBRTtJQUFFNUI7RUFBTyxDQUFDLEtBQUs7SUFDakMsSUFBSTRCLEtBQUssS0FBSyxJQUFJLEVBQUU7TUFDbEIsT0FBTztRQUFFWixJQUFJLEVBQUU7TUFBUyxDQUFDO0lBQzNCO0lBQ0EsTUFBTTtNQUFFSSxJQUFJO01BQUVTO0lBQU8sQ0FBQyxHQUFHRCxLQUFLO0lBQzlCLElBQUlDLE1BQU0sRUFBRTtNQUNWLE1BQU07UUFBRUM7TUFBUyxDQUFDLEdBQUcsTUFBTSxJQUFBQyw0QkFBWSxFQUFDRixNQUFNLEVBQUU3QixNQUFNLENBQUM7TUFDdkQsT0FBTztRQUFFLEdBQUc4QixRQUFRO1FBQUVFLE1BQU0sRUFBRTtNQUFPLENBQUM7SUFDeEMsQ0FBQyxNQUFNLElBQUlaLElBQUksSUFBSUEsSUFBSSxDQUFDYSxJQUFJLEVBQUU7TUFDNUIsT0FBTztRQUFFQSxJQUFJLEVBQUViLElBQUksQ0FBQ2EsSUFBSTtRQUFFRCxNQUFNLEVBQUUsTUFBTTtRQUFFRSxHQUFHLEVBQUVkLElBQUksQ0FBQ2M7TUFBSSxDQUFDO0lBQzNEO0lBQ0EsTUFBTSxJQUFJQyxhQUFLLENBQUNDLEtBQUssQ0FBQ0QsYUFBSyxDQUFDQyxLQUFLLENBQUNDLGVBQWUsRUFBRSxzQkFBc0IsQ0FBQztFQUM1RSxDQUFDO0VBQ0RsQixPQUFPLEVBQUVtQixLQUFLLEtBQUs7SUFDakJOLE1BQU0sRUFBRSxTQUFTO0lBQ2pCTyxXQUFXLEVBQUVELEtBQUssQ0FBQzNCLEdBQUcsQ0FBQ08sUUFBUSxJQUFJLENBQUNBLFFBQVEsQ0FBQ3NCLFFBQVEsRUFBRXRCLFFBQVEsQ0FBQ3VCLFNBQVMsQ0FBQztFQUM1RSxDQUFDLENBQUM7RUFDRnZCLFFBQVEsRUFBRW9CLEtBQUssS0FBSztJQUNsQixHQUFHQSxLQUFLO0lBQ1JOLE1BQU0sRUFBRTtFQUNWLENBQUMsQ0FBQztFQUNGTixHQUFHLEVBQUVZLEtBQUssSUFBSTtJQUNaLE1BQU1JLFFBQVEsR0FBRyxDQUFDLENBQUM7SUFDbkIsSUFBSUosS0FBSyxDQUFDSyxNQUFNLEVBQUU7TUFDaEJELFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBRztRQUNkRSxJQUFJLEVBQUVOLEtBQUssQ0FBQ0ssTUFBTSxDQUFDQyxJQUFJO1FBQ3ZCQyxLQUFLLEVBQUVQLEtBQUssQ0FBQ0ssTUFBTSxDQUFDRTtNQUN0QixDQUFDO0lBQ0g7SUFDQSxJQUFJUCxLQUFLLENBQUNRLEtBQUssRUFBRTtNQUNmUixLQUFLLENBQUNRLEtBQUssQ0FBQ0MsT0FBTyxDQUFDQyxJQUFJLElBQUk7UUFDMUIsTUFBTUMsY0FBYyxHQUFHLElBQUFDLDBCQUFZLEVBQUNGLElBQUksQ0FBQ0csTUFBTSxDQUFDO1FBQ2hELElBQUlGLGNBQWMsQ0FBQ2xDLElBQUksS0FBSyxPQUFPLEVBQUU7VUFDbkNpQyxJQUFJLENBQUNHLE1BQU0sR0FBR0YsY0FBYyxDQUFDRyxFQUFFO1FBQ2pDO1FBQ0FWLFFBQVEsQ0FBQ00sSUFBSSxDQUFDRyxNQUFNLENBQUMsR0FBRztVQUN0QlAsSUFBSSxFQUFFSSxJQUFJLENBQUNKLElBQUk7VUFDZkMsS0FBSyxFQUFFRyxJQUFJLENBQUNIO1FBQ2QsQ0FBQztNQUNILENBQUMsQ0FBQztJQUNKO0lBQ0EsSUFBSVAsS0FBSyxDQUFDZSxLQUFLLEVBQUU7TUFDZmYsS0FBSyxDQUFDZSxLQUFLLENBQUNOLE9BQU8sQ0FBQ0MsSUFBSSxJQUFJO1FBQzFCTixRQUFRLENBQUMsUUFBUU0sSUFBSSxDQUFDTSxRQUFRLEVBQUUsQ0FBQyxHQUFHO1VBQ2xDVixJQUFJLEVBQUVJLElBQUksQ0FBQ0osSUFBSTtVQUNmQyxLQUFLLEVBQUVHLElBQUksQ0FBQ0g7UUFDZCxDQUFDO01BQ0gsQ0FBQyxDQUFDO0lBQ0o7SUFDQSxPQUFPSCxRQUFRO0VBQ2pCLENBQUM7RUFDRHJCLFFBQVEsRUFBRSxNQUFBQSxDQUNSQyxXQUFXLEVBQ1hWLEtBQUssRUFDTDBCLEtBQUssRUFDTGlCLGFBQWEsRUFDYjVELGtCQUFrQixFQUNsQjtJQUFFSyxNQUFNO0lBQUV3RCxJQUFJO0lBQUVDO0VBQUssQ0FBQyxLQUNuQjtJQUNILElBQUlyRSxNQUFNLENBQUNzQixJQUFJLENBQUM0QixLQUFLLENBQUMsQ0FBQ29CLE1BQU0sS0FBSyxDQUFDLEVBQ25DO01BQUUsTUFBTSxJQUFJdkIsYUFBSyxDQUFDQyxLQUFLLENBQ3JCRCxhQUFLLENBQUNDLEtBQUssQ0FBQ3VCLGVBQWUsRUFDM0IsZ0ZBQWdGL0MsS0FBSyxFQUN2RixDQUFDO0lBQUU7SUFFSCxNQUFNZ0QsRUFBRSxHQUFHO01BQ1Q1QyxJQUFJLEVBQUUsT0FBTztNQUNiNkMsR0FBRyxFQUFFO0lBQ1AsQ0FBQztJQUNELElBQUlDLGtCQUFrQixHQUFHLEVBQUU7SUFFM0IsSUFBSXhCLEtBQUssQ0FBQ3lCLFlBQVksRUFBRTtNQUN0QkQsa0JBQWtCLEdBQUcsQ0FDbkIsTUFBTXRDLE9BQU8sQ0FBQ0MsR0FBRyxDQUNmYSxLQUFLLENBQUN5QixZQUFZLENBQUNwRCxHQUFHLENBQUMsT0FBT2lCLEtBQUssRUFBRWpELENBQUMsS0FBSztRQUN6QyxNQUFNcUYsV0FBVyxHQUFHLE1BQU16RSxjQUFjLENBQUMsUUFBUSxFQUFFcUMsS0FBSyxFQUFFO1VBQ3hEbEMsU0FBUyxFQUFFNEIsV0FBVztVQUN0QnpCLGNBQWMsRUFBRTBELGFBQWEsQ0FBQ1EsWUFBWSxDQUFDcEYsQ0FBQyxDQUFDO1VBQzdDZ0Isa0JBQWtCO1VBQ2xCQyxHQUFHLEVBQUU7WUFBRUksTUFBTTtZQUFFd0QsSUFBSTtZQUFFQztVQUFLO1FBQzVCLENBQUMsQ0FBQztRQUNGLE9BQU92RixnQkFBZ0IsQ0FBQytGLFlBQVksQ0FBQzNDLFdBQVcsRUFBRTBDLFdBQVcsRUFBRWhFLE1BQU0sRUFBRXdELElBQUksRUFBRUMsSUFBSSxDQUFDO01BQ3BGLENBQUMsQ0FDSCxDQUFDLEVBQ0Q5QyxHQUFHLENBQUN1RCxNQUFNLEtBQUs7UUFDZmxDLE1BQU0sRUFBRSxTQUFTO1FBQ2pCdEMsU0FBUyxFQUFFNEIsV0FBVztRQUN0QjZDLFFBQVEsRUFBRUQsTUFBTSxDQUFDQztNQUNuQixDQUFDLENBQUMsQ0FBQztJQUNMO0lBRUEsSUFBSTdCLEtBQUssQ0FBQzhCLEdBQUcsSUFBSU4sa0JBQWtCLENBQUNKLE1BQU0sR0FBRyxDQUFDLEVBQUU7TUFDOUMsSUFBSSxDQUFDcEIsS0FBSyxDQUFDOEIsR0FBRyxFQUFFO1FBQUU5QixLQUFLLENBQUM4QixHQUFHLEdBQUcsRUFBRTtNQUFFO01BQ2xDOUIsS0FBSyxDQUFDOEIsR0FBRyxHQUFHOUIsS0FBSyxDQUFDOEIsR0FBRyxDQUFDekQsR0FBRyxDQUFDaUIsS0FBSyxJQUFJO1FBQ2pDLE1BQU1xQixjQUFjLEdBQUcsSUFBQUMsMEJBQVksRUFBQ3RCLEtBQUssQ0FBQztRQUMxQyxJQUFJcUIsY0FBYyxDQUFDbEMsSUFBSSxLQUFLTyxXQUFXLEVBQUU7VUFDdkNNLEtBQUssR0FBR3FCLGNBQWMsQ0FBQ0csRUFBRTtRQUMzQjtRQUNBLE9BQU87VUFDTHBCLE1BQU0sRUFBRSxTQUFTO1VBQ2pCdEMsU0FBUyxFQUFFNEIsV0FBVztVQUN0QjZDLFFBQVEsRUFBRXZDO1FBQ1osQ0FBQztNQUNILENBQUMsQ0FBQztNQUNGZ0MsRUFBRSxDQUFDQyxHQUFHLENBQUNRLElBQUksQ0FBQztRQUNWckQsSUFBSSxFQUFFLGFBQWE7UUFDbkJzRCxPQUFPLEVBQUUsQ0FBQyxHQUFHaEMsS0FBSyxDQUFDOEIsR0FBRyxFQUFFLEdBQUdOLGtCQUFrQjtNQUMvQyxDQUFDLENBQUM7SUFDSjtJQUVBLElBQUl4QixLQUFLLENBQUNpQyxNQUFNLEVBQUU7TUFDaEJYLEVBQUUsQ0FBQ0MsR0FBRyxDQUFDUSxJQUFJLENBQUM7UUFDVnJELElBQUksRUFBRSxnQkFBZ0I7UUFDdEJzRCxPQUFPLEVBQUVoQyxLQUFLLENBQUNpQyxNQUFNLENBQUM1RCxHQUFHLENBQUNpQixLQUFLLElBQUk7VUFDakMsTUFBTXFCLGNBQWMsR0FBRyxJQUFBQywwQkFBWSxFQUFDdEIsS0FBSyxDQUFDO1VBQzFDLElBQUlxQixjQUFjLENBQUNsQyxJQUFJLEtBQUtPLFdBQVcsRUFBRTtZQUN2Q00sS0FBSyxHQUFHcUIsY0FBYyxDQUFDRyxFQUFFO1VBQzNCO1VBQ0EsT0FBTztZQUNMcEIsTUFBTSxFQUFFLFNBQVM7WUFDakJ0QyxTQUFTLEVBQUU0QixXQUFXO1lBQ3RCNkMsUUFBUSxFQUFFdkM7VUFDWixDQUFDO1FBQ0gsQ0FBQztNQUNILENBQUMsQ0FBQztJQUNKO0lBQ0EsT0FBT2dDLEVBQUU7RUFDWCxDQUFDO0VBQ0RyQyxPQUFPLEVBQUUsTUFBQUEsQ0FDUEQsV0FBVyxFQUNYVixLQUFLLEVBQ0wwQixLQUFLLEVBQ0xpQixhQUFhLEVBQ2I1RCxrQkFBa0IsRUFDbEI7SUFBRUssTUFBTTtJQUFFd0QsSUFBSTtJQUFFQztFQUFLLENBQUMsS0FDbkI7SUFDSCxJQUFJckUsTUFBTSxDQUFDc0IsSUFBSSxDQUFDNEIsS0FBSyxDQUFDLENBQUNvQixNQUFNLEdBQUcsQ0FBQyxJQUFJdEUsTUFBTSxDQUFDc0IsSUFBSSxDQUFDNEIsS0FBSyxDQUFDLENBQUNvQixNQUFNLEtBQUssQ0FBQyxFQUNwRTtNQUFFLE1BQU0sSUFBSXZCLGFBQUssQ0FBQ0MsS0FBSyxDQUNyQkQsYUFBSyxDQUFDQyxLQUFLLENBQUN1QixlQUFlLEVBQzNCLDJFQUEyRS9DLEtBQUssRUFDbEYsQ0FBQztJQUFFO0lBRUgsSUFBSTRELGlCQUFpQjtJQUNyQixJQUFJbEMsS0FBSyxDQUFDbUMsYUFBYSxFQUFFO01BQ3ZCLE1BQU1ULFdBQVcsR0FBRyxNQUFNekUsY0FBYyxDQUFDLFFBQVEsRUFBRStDLEtBQUssQ0FBQ21DLGFBQWEsRUFBRTtRQUN0RS9FLFNBQVMsRUFBRTRCLFdBQVc7UUFDdEIzQixrQkFBa0I7UUFDbEJFLGNBQWMsRUFBRTBELGFBQWEsQ0FBQ2tCLGFBQWE7UUFDM0M3RSxHQUFHLEVBQUU7VUFBRUksTUFBTTtVQUFFd0QsSUFBSTtVQUFFQztRQUFLO01BQzVCLENBQUMsQ0FBQztNQUNGZSxpQkFBaUIsR0FBRyxNQUFNdEcsZ0JBQWdCLENBQUMrRixZQUFZLENBQ3JEM0MsV0FBVyxFQUNYMEMsV0FBVyxFQUNYaEUsTUFBTSxFQUNOd0QsSUFBSSxFQUNKQyxJQUNGLENBQUM7TUFDRCxPQUFPO1FBQ0x6QixNQUFNLEVBQUUsU0FBUztRQUNqQnRDLFNBQVMsRUFBRTRCLFdBQVc7UUFDdEI2QyxRQUFRLEVBQUVLLGlCQUFpQixDQUFDTDtNQUM5QixDQUFDO0lBQ0g7SUFDQSxJQUFJN0IsS0FBSyxDQUFDb0MsSUFBSSxFQUFFO01BQ2QsSUFBSVAsUUFBUSxHQUFHN0IsS0FBSyxDQUFDb0MsSUFBSTtNQUN6QixNQUFNekIsY0FBYyxHQUFHLElBQUFDLDBCQUFZLEVBQUNpQixRQUFRLENBQUM7TUFDN0MsSUFBSWxCLGNBQWMsQ0FBQ2xDLElBQUksS0FBS08sV0FBVyxFQUFFO1FBQ3ZDNkMsUUFBUSxHQUFHbEIsY0FBYyxDQUFDRyxFQUFFO01BQzlCO01BQ0EsT0FBTztRQUNMcEIsTUFBTSxFQUFFLFNBQVM7UUFDakJ0QyxTQUFTLEVBQUU0QixXQUFXO1FBQ3RCNkM7TUFDRixDQUFDO0lBQ0g7RUFDRjtBQUNGLENBQUMiLCJpZ25vcmVMaXN0IjpbXX0=
|
|
@@ -6,8 +6,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.transformOutputTypeToGraphQL = void 0;
|
|
7
7
|
var defaultGraphQLTypes = _interopRequireWildcard(require("../loaders/defaultGraphQLTypes"));
|
|
8
8
|
var _graphql = require("graphql");
|
|
9
|
-
function
|
|
10
|
-
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
9
|
+
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
11
10
|
const transformOutputTypeToGraphQL = (parseType, targetClass, parseClassTypes) => {
|
|
12
11
|
switch (parseType) {
|
|
13
12
|
case 'String':
|
|
@@ -49,4 +48,4 @@ const transformOutputTypeToGraphQL = (parseType, targetClass, parseClassTypes) =
|
|
|
49
48
|
}
|
|
50
49
|
};
|
|
51
50
|
exports.transformOutputTypeToGraphQL = transformOutputTypeToGraphQL;
|
|
52
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
51
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJkZWZhdWx0R3JhcGhRTFR5cGVzIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJyZXF1aXJlIiwiX2dyYXBocWwiLCJlIiwidCIsIldlYWtNYXAiLCJyIiwibiIsIl9fZXNNb2R1bGUiLCJvIiwiaSIsImYiLCJfX3Byb3RvX18iLCJkZWZhdWx0IiwiaGFzIiwiZ2V0Iiwic2V0IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ0cmFuc2Zvcm1PdXRwdXRUeXBlVG9HcmFwaFFMIiwicGFyc2VUeXBlIiwidGFyZ2V0Q2xhc3MiLCJwYXJzZUNsYXNzVHlwZXMiLCJHcmFwaFFMU3RyaW5nIiwiR3JhcGhRTEZsb2F0IiwiR3JhcGhRTEJvb2xlYW4iLCJHcmFwaFFMTGlzdCIsIkFSUkFZX1JFU1VMVCIsIk9CSkVDVCIsIkRBVEUiLCJjbGFzc0dyYXBoUUxPdXRwdXRUeXBlIiwiY2xhc3NHcmFwaFFMRmluZFJlc3VsdFR5cGUiLCJHcmFwaFFMTm9uTnVsbCIsIkZJTEVfSU5GTyIsIkdFT19QT0lOVCIsIlBPTFlHT04iLCJCWVRFUyIsIkFDTCIsInVuZGVmaW5lZCIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvR3JhcGhRTC90cmFuc2Zvcm1lcnMvb3V0cHV0VHlwZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBkZWZhdWx0R3JhcGhRTFR5cGVzIGZyb20gJy4uL2xvYWRlcnMvZGVmYXVsdEdyYXBoUUxUeXBlcyc7XG5pbXBvcnQgeyBHcmFwaFFMU3RyaW5nLCBHcmFwaFFMRmxvYXQsIEdyYXBoUUxCb29sZWFuLCBHcmFwaFFMTGlzdCwgR3JhcGhRTE5vbk51bGwgfSBmcm9tICdncmFwaHFsJztcblxuY29uc3QgdHJhbnNmb3JtT3V0cHV0VHlwZVRvR3JhcGhRTCA9IChwYXJzZVR5cGUsIHRhcmdldENsYXNzLCBwYXJzZUNsYXNzVHlwZXMpID0+IHtcbiAgc3dpdGNoIChwYXJzZVR5cGUpIHtcbiAgICBjYXNlICdTdHJpbmcnOlxuICAgICAgcmV0dXJuIEdyYXBoUUxTdHJpbmc7XG4gICAgY2FzZSAnTnVtYmVyJzpcbiAgICAgIHJldHVybiBHcmFwaFFMRmxvYXQ7XG4gICAgY2FzZSAnQm9vbGVhbic6XG4gICAgICByZXR1cm4gR3JhcGhRTEJvb2xlYW47XG4gICAgY2FzZSAnQXJyYXknOlxuICAgICAgcmV0dXJuIG5ldyBHcmFwaFFMTGlzdChkZWZhdWx0R3JhcGhRTFR5cGVzLkFSUkFZX1JFU1VMVCk7XG4gICAgY2FzZSAnT2JqZWN0JzpcbiAgICAgIHJldHVybiBkZWZhdWx0R3JhcGhRTFR5cGVzLk9CSkVDVDtcbiAgICBjYXNlICdEYXRlJzpcbiAgICAgIHJldHVybiBkZWZhdWx0R3JhcGhRTFR5cGVzLkRBVEU7XG4gICAgY2FzZSAnUG9pbnRlcic6XG4gICAgICBpZiAoXG4gICAgICAgIHBhcnNlQ2xhc3NUeXBlcyAmJlxuICAgICAgICBwYXJzZUNsYXNzVHlwZXNbdGFyZ2V0Q2xhc3NdICYmXG4gICAgICAgIHBhcnNlQ2xhc3NUeXBlc1t0YXJnZXRDbGFzc10uY2xhc3NHcmFwaFFMT3V0cHV0VHlwZVxuICAgICAgKSB7XG4gICAgICAgIHJldHVybiBwYXJzZUNsYXNzVHlwZXNbdGFyZ2V0Q2xhc3NdLmNsYXNzR3JhcGhRTE91dHB1dFR5cGU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gZGVmYXVsdEdyYXBoUUxUeXBlcy5PQkpFQ1Q7XG4gICAgICB9XG4gICAgY2FzZSAnUmVsYXRpb24nOlxuICAgICAgaWYgKFxuICAgICAgICBwYXJzZUNsYXNzVHlwZXMgJiZcbiAgICAgICAgcGFyc2VDbGFzc1R5cGVzW3RhcmdldENsYXNzXSAmJlxuICAgICAgICBwYXJzZUNsYXNzVHlwZXNbdGFyZ2V0Q2xhc3NdLmNsYXNzR3JhcGhRTEZpbmRSZXN1bHRUeXBlXG4gICAgICApIHtcbiAgICAgICAgcmV0dXJuIG5ldyBHcmFwaFFMTm9uTnVsbChwYXJzZUNsYXNzVHlwZXNbdGFyZ2V0Q2xhc3NdLmNsYXNzR3JhcGhRTEZpbmRSZXN1bHRUeXBlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBuZXcgR3JhcGhRTE5vbk51bGwoZGVmYXVsdEdyYXBoUUxUeXBlcy5PQkpFQ1QpO1xuICAgICAgfVxuICAgIGNhc2UgJ0ZpbGUnOlxuICAgICAgcmV0dXJuIGRlZmF1bHRHcmFwaFFMVHlwZXMuRklMRV9JTkZPO1xuICAgIGNhc2UgJ0dlb1BvaW50JzpcbiAgICAgIHJldHVybiBkZWZhdWx0R3JhcGhRTFR5cGVzLkdFT19QT0lOVDtcbiAgICBjYXNlICdQb2x5Z29uJzpcbiAgICAgIHJldHVybiBkZWZhdWx0R3JhcGhRTFR5cGVzLlBPTFlHT047XG4gICAgY2FzZSAnQnl0ZXMnOlxuICAgICAgcmV0dXJuIGRlZmF1bHRHcmFwaFFMVHlwZXMuQllURVM7XG4gICAgY2FzZSAnQUNMJzpcbiAgICAgIHJldHVybiBuZXcgR3JhcGhRTE5vbk51bGwoZGVmYXVsdEdyYXBoUUxUeXBlcy5BQ0wpO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG59O1xuXG5leHBvcnQgeyB0cmFuc2Zvcm1PdXRwdXRUeXBlVG9HcmFwaFFMIH07XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLElBQUFBLG1CQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxRQUFBLEdBQUFELE9BQUE7QUFBbUcsU0FBQUQsd0JBQUFHLENBQUEsRUFBQUMsQ0FBQSw2QkFBQUMsT0FBQSxNQUFBQyxDQUFBLE9BQUFELE9BQUEsSUFBQUUsQ0FBQSxPQUFBRixPQUFBLFlBQUFMLHVCQUFBLFlBQUFBLENBQUFHLENBQUEsRUFBQUMsQ0FBQSxTQUFBQSxDQUFBLElBQUFELENBQUEsSUFBQUEsQ0FBQSxDQUFBSyxVQUFBLFNBQUFMLENBQUEsTUFBQU0sQ0FBQSxFQUFBQyxDQUFBLEVBQUFDLENBQUEsS0FBQUMsU0FBQSxR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
|
package/lib/ParseServer.js
CHANGED
|
@@ -41,8 +41,7 @@ var _Deprecator = _interopRequireDefault(require("./Deprecator/Deprecator"));
|
|
|
41
41
|
var _DefinedSchemas = require("./SchemaMigrations/DefinedSchemas");
|
|
42
42
|
var _Definitions = _interopRequireDefault(require("./Options/Definitions"));
|
|
43
43
|
var _TestUtils = require("./TestUtils");
|
|
44
|
-
function
|
|
45
|
-
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
44
|
+
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
46
45
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
47
46
|
// ParseServer - open-source compatible API Server for Parse apps
|
|
48
47
|
|
|
@@ -598,4 +597,4 @@ function configureListeners(parseServer) {
|
|
|
598
597
|
process.on('SIGINT', handleShutdown);
|
|
599
598
|
}
|
|
600
599
|
var _default = exports.default = ParseServer;
|
|
601
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZGVmYXVsdHMiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsImxvZ2dpbmciLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsIl9Db25maWciLCJfUHJvbWlzZVJvdXRlciIsIl9yZXF1aXJlZFBhcmFtZXRlciIsIl9BbmFseXRpY3NSb3V0ZXIiLCJfQ2xhc3Nlc1JvdXRlciIsIl9GZWF0dXJlc1JvdXRlciIsIl9GaWxlc1JvdXRlciIsIl9GdW5jdGlvbnNSb3V0ZXIiLCJfR2xvYmFsQ29uZmlnUm91dGVyIiwiX0dyYXBoUUxSb3V0ZXIiLCJfSG9va3NSb3V0ZXIiLCJfSUFQVmFsaWRhdGlvblJvdXRlciIsIl9JbnN0YWxsYXRpb25zUm91dGVyIiwiX0xvZ3NSb3V0ZXIiLCJfUGFyc2VMaXZlUXVlcnlTZXJ2ZXIiLCJfUGFnZXNSb3V0ZXIiLCJfUHVibGljQVBJUm91dGVyIiwiX1B1c2hSb3V0ZXIiLCJfQ2xvdWRDb2RlUm91dGVyIiwiX1JvbGVzUm91dGVyIiwiX1NjaGVtYXNSb3V0ZXIiLCJfU2Vzc2lvbnNSb3V0ZXIiLCJfVXNlcnNSb3V0ZXIiLCJfUHVyZ2VSb3V0ZXIiLCJfQXVkaWVuY2VzUm91dGVyIiwiX0FnZ3JlZ2F0ZVJvdXRlciIsIl9QYXJzZVNlcnZlclJFU1RDb250cm9sbGVyIiwiY29udHJvbGxlcnMiLCJfUGFyc2VHcmFwaFFMU2VydmVyIiwiX1NlY3VyaXR5Um91dGVyIiwiX0NoZWNrUnVubmVyIiwiX0RlcHJlY2F0b3IiLCJfRGVmaW5lZFNjaGVtYXMiLCJfRGVmaW5pdGlvbnMiLCJfVGVzdFV0aWxzIiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwiZSIsIldlYWtNYXAiLCJyIiwidCIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiaGFzIiwiZ2V0IiwibiIsIl9fcHJvdG9fXyIsImEiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsInUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJpIiwic2V0IiwiYmF0Y2giLCJleHByZXNzIiwibWlkZGxld2FyZXMiLCJQYXJzZSIsInBhcnNlIiwicGF0aCIsImZzIiwiYWRkUGFyc2VDbG91ZCIsImNvbm5lY3Rpb25zIiwiQ29ubmVjdGlvbnMiLCJQYXJzZVNlcnZlciIsImNvbnN0cnVjdG9yIiwib3B0aW9ucyIsIkRlcHJlY2F0b3IiLCJzY2FuUGFyc2VTZXJ2ZXJPcHRpb25zIiwiaW50ZXJmYWNlcyIsIkpTT04iLCJzdHJpbmdpZnkiLCJPcHRpb25zRGVmaW5pdGlvbnMiLCJnZXRWYWxpZE9iamVjdCIsInJvb3QiLCJyZXN1bHQiLCJrZXkiLCJwcm90b3R5cGUiLCJ0eXBlIiwiZW5kc1dpdGgiLCJzbGljZSIsIm9wdGlvbnNCbHVlcHJpbnQiLCJ2YWxpZGF0ZUtleU5hbWVzIiwib3JpZ2luYWwiLCJyZWYiLCJuYW1lIiwicHJlZml4IiwicHVzaCIsInJlcyIsIkFycmF5IiwiaXNBcnJheSIsImZvckVhY2giLCJpdGVtIiwiaWR4IiwiY29uY2F0IiwiZGlmZiIsImxlbmd0aCIsImxvZ2dlciIsImVycm9yIiwiam9pbiIsImluamVjdERlZmF1bHRzIiwiYXBwSWQiLCJyZXF1aXJlZFBhcmFtZXRlciIsIm1hc3RlcktleSIsImphdmFzY3JpcHRLZXkiLCJzZXJ2ZXJVUkwiLCJpbml0aWFsaXplIiwiQ29uZmlnIiwidmFsaWRhdGVPcHRpb25zIiwiYWxsQ29udHJvbGxlcnMiLCJnZXRDb250cm9sbGVycyIsInN0YXRlIiwiY29uZmlnIiwicHV0IiwiYXNzaWduIiwibWFzdGVyS2V5SXBzU3RvcmUiLCJNYXAiLCJtYWludGVuYW5jZUtleUlwc1N0b3JlIiwic2V0TG9nZ2VyIiwibG9nZ2VyQ29udHJvbGxlciIsInN0YXJ0IiwiZGF0YWJhc2VDb250cm9sbGVyIiwiaG9va3NDb250cm9sbGVyIiwiY2FjaGVDb250cm9sbGVyIiwiY2xvdWQiLCJzZWN1cml0eSIsInNjaGVtYSIsImxpdmVRdWVyeUNvbnRyb2xsZXIiLCJwZXJmb3JtSW5pdGlhbGl6YXRpb24iLCJjb2RlIiwiRXJyb3IiLCJEVVBMSUNBVEVfVkFMVUUiLCJwdXNoQ29udHJvbGxlciIsImdldFB1c2hDb250cm9sbGVyIiwibG9hZCIsInN0YXJ0dXBQcm9taXNlcyIsImxvYWRNYXN0ZXJLZXkiLCJEZWZpbmVkU2NoZW1hcyIsImV4ZWN1dGUiLCJhZGFwdGVyIiwiY29ubmVjdCIsIlByb21pc2UiLCJhbGwiLCJyZXNvbHZlIiwianNvbiIsInByb2Nlc3MiLCJlbnYiLCJucG1fcGFja2FnZV9qc29uIiwibnBtX3BhY2thZ2VfdHlwZSIsImN3ZCIsInNldFRpbWVvdXQiLCJlbmFibGVDaGVjayIsImVuYWJsZUNoZWNrTG9nIiwiQ2hlY2tSdW5uZXIiLCJydW4iLCJjb25zb2xlIiwiYXBwIiwiX2FwcCIsImhhbmRsZVNodXRkb3duIiwic2VydmVyQ2xvc2VQcm9taXNlIiwicmVzb2x2aW5nUHJvbWlzZSIsImxpdmVRdWVyeVNlcnZlckNsb3NlUHJvbWlzZSIsInByb21pc2VzIiwic2VydmVyIiwiY2xvc2UiLCJsaXZlUXVlcnlTZXJ2ZXIiLCJkYXRhYmFzZUFkYXB0ZXIiLCJmaWxlQWRhcHRlciIsImZpbGVzQ29udHJvbGxlciIsImNhY2hlQWRhcHRlciIsInNodXRkb3duIiwiZGVzdHJveUFsbCIsInNlcnZlckNsb3NlQ29tcGxldGUiLCJtYXhVcGxvYWRTaXplIiwiZGlyZWN0QWNjZXNzIiwicGFnZXMiLCJyYXRlTGltaXQiLCJhcGkiLCJ1c2UiLCJhbGxvd0Nyb3NzRG9tYWluIiwiYWxsb3dEb3VibGVGb3J3YXJkU2xhc2giLCJGaWxlc1JvdXRlciIsImV4cHJlc3NSb3V0ZXIiLCJyZXEiLCJzdGF0dXMiLCJ1cmxlbmNvZGVkIiwiZXh0ZW5kZWQiLCJlbmFibGVSb3V0ZXIiLCJQYWdlc1JvdXRlciIsIlB1YmxpY0FQSVJvdXRlciIsImxpbWl0IiwiYWxsb3dNZXRob2RPdmVycmlkZSIsImhhbmRsZVBhcnNlSGVhZGVycyIsInJvdXRlcyIsInJvdXRlIiwiYWRkUmF0ZUxpbWl0IiwiaGFuZGxlUGFyc2VTZXNzaW9uIiwiYXBwUm91dGVyIiwicHJvbWlzZVJvdXRlciIsImhhbmRsZVBhcnNlRXJyb3JzIiwiVEVTVElORyIsIm9uIiwiZXJyIiwic3RkZXJyIiwid3JpdGUiLCJwb3J0IiwiZXhpdCIsIm1lc3NhZ2UiLCJzdGFjayIsInZlcmlmeVNlcnZlclVybCIsIlBBUlNFX1NFUlZFUl9FTkFCTEVfRVhQRVJJTUVOVEFMX0RJUkVDVF9BQ0NFU1MiLCJDb3JlTWFuYWdlciIsInNldFJFU1RDb250cm9sbGVyIiwiUGFyc2VTZXJ2ZXJSRVNUQ29udHJvbGxlciIsInJvdXRlcnMiLCJDbGFzc2VzUm91dGVyIiwiVXNlcnNSb3V0ZXIiLCJTZXNzaW9uc1JvdXRlciIsIlJvbGVzUm91dGVyIiwiQW5hbHl0aWNzUm91dGVyIiwiSW5zdGFsbGF0aW9uc1JvdXRlciIsIkZ1bmN0aW9uc1JvdXRlciIsIlNjaGVtYXNSb3V0ZXIiLCJQdXNoUm91dGVyIiwiTG9nc1JvdXRlciIsIklBUFZhbGlkYXRpb25Sb3V0ZXIiLCJGZWF0dXJlc1JvdXRlciIsIkdsb2JhbENvbmZpZ1JvdXRlciIsIkdyYXBoUUxSb3V0ZXIiLCJQdXJnZVJvdXRlciIsIkhvb2tzUm91dGVyIiwiQ2xvdWRDb2RlUm91dGVyIiwiQXVkaWVuY2VzUm91dGVyIiwiQWdncmVnYXRlUm91dGVyIiwiU2VjdXJpdHlSb3V0ZXIiLCJyZWR1Y2UiLCJtZW1vIiwicm91dGVyIiwiUHJvbWlzZVJvdXRlciIsIm1vdW50T250byIsInN0YXJ0QXBwIiwibWlkZGxld2FyZSIsIm1vdW50UGF0aCIsIm1vdW50R3JhcGhRTCIsIm1vdW50UGxheWdyb3VuZCIsImdyYXBoUUxDdXN0b21UeXBlRGVmcyIsInVuZGVmaW5lZCIsImdyYXBoUUxTY2hlbWEiLCJyZWFkRmlsZVN5bmMiLCJwYXJzZUdyYXBoUUxTZXJ2ZXIiLCJQYXJzZUdyYXBoUUxTZXJ2ZXIiLCJncmFwaFFMUGF0aCIsInBsYXlncm91bmRQYXRoIiwiYXBwbHlHcmFwaFFMIiwiYXBwbHlQbGF5Z3JvdW5kIiwibGlzdGVuIiwiaG9zdCIsInRyYWNrIiwic3RhcnRMaXZlUXVlcnlTZXJ2ZXIiLCJsaXZlUXVlcnlTZXJ2ZXJPcHRpb25zIiwiY3JlYXRlTGl2ZVF1ZXJ5U2VydmVyIiwidHJ1c3RQcm94eSIsImNvbmZpZ3VyZUxpc3RlbmVycyIsImV4cHJlc3NBcHAiLCJwYXJzZVNlcnZlciIsImh0dHBTZXJ2ZXIiLCJjcmVhdGVTZXJ2ZXIiLCJQYXJzZUxpdmVRdWVyeVNlcnZlciIsImlzVmFsaWRIdHRwVXJsIiwic3RyaW5nIiwidXJsIiwiVVJMIiwiXyIsInByb3RvY29sIiwicmVwbGFjZSIsIndhcm4iLCJyZXF1ZXN0IiwicmVzcG9uc2UiLCJjYXRjaCIsImRhdGEiLCJyZXRyeSIsImhlYWRlcnMiLCJQYXJzZUNsb3VkIiwiY29uZiIsImFwcGxpY2F0aW9uSWQiLCJuZXdWYWwiLCJjb25maWd1cmFibGUiLCJDbG91ZCIsImdsb2JhbCIsImtleXMiLCJkZWZhdWx0cyIsInJlZ2V4IiwibWF0Y2giLCJ1c2VyU2Vuc2l0aXZlRmllbGRzIiwiZnJvbSIsIlNldCIsInByb3RlY3RlZEZpZWxkcyIsIl9Vc2VyIiwiYyIsImN1ciIsInVucSIsInN0ZG91dCIsIl9kZWZhdWx0IiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uL3NyYy9QYXJzZVNlcnZlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBQYXJzZVNlcnZlciAtIG9wZW4tc291cmNlIGNvbXBhdGlibGUgQVBJIFNlcnZlciBmb3IgUGFyc2UgYXBwc1xuXG52YXIgYmF0Y2ggPSByZXF1aXJlKCcuL2JhdGNoJyksXG4gIGV4cHJlc3MgPSByZXF1aXJlKCdleHByZXNzJyksXG4gIG1pZGRsZXdhcmVzID0gcmVxdWlyZSgnLi9taWRkbGV3YXJlcycpLFxuICBQYXJzZSA9IHJlcXVpcmUoJ3BhcnNlL25vZGUnKS5QYXJzZSxcbiAgeyBwYXJzZSB9ID0gcmVxdWlyZSgnZ3JhcGhxbCcpLFxuICBwYXRoID0gcmVxdWlyZSgncGF0aCcpLFxuICBmcyA9IHJlcXVpcmUoJ2ZzJyk7XG5cbmltcG9ydCB7IFBhcnNlU2VydmVyT3B0aW9ucywgTGl2ZVF1ZXJ5U2VydmVyT3B0aW9ucyB9IGZyb20gJy4vT3B0aW9ucyc7XG5pbXBvcnQgZGVmYXVsdHMgZnJvbSAnLi9kZWZhdWx0cyc7XG5pbXBvcnQgKiBhcyBsb2dnaW5nIGZyb20gJy4vbG9nZ2VyJztcbmltcG9ydCBDb25maWcgZnJvbSAnLi9Db25maWcnO1xuaW1wb3J0IFByb21pc2VSb3V0ZXIgZnJvbSAnLi9Qcm9taXNlUm91dGVyJztcbmltcG9ydCByZXF1aXJlZFBhcmFtZXRlciBmcm9tICcuL3JlcXVpcmVkUGFyYW1ldGVyJztcbmltcG9ydCB7IEFuYWx5dGljc1JvdXRlciB9IGZyb20gJy4vUm91dGVycy9BbmFseXRpY3NSb3V0ZXInO1xuaW1wb3J0IHsgQ2xhc3Nlc1JvdXRlciB9IGZyb20gJy4vUm91dGVycy9DbGFzc2VzUm91dGVyJztcbmltcG9ydCB7IEZlYXR1cmVzUm91dGVyIH0gZnJvbSAnLi9Sb3V0ZXJzL0ZlYXR1cmVzUm91dGVyJztcbmltcG9ydCB7IEZpbGVzUm91dGVyIH0gZnJvbSAnLi9Sb3V0ZXJzL0ZpbGVzUm91dGVyJztcbmltcG9ydCB7IEZ1bmN0aW9uc1JvdXRlciB9IGZyb20gJy4vUm91dGVycy9GdW5jdGlvbnNSb3V0ZXInO1xuaW1wb3J0IHsgR2xvYmFsQ29uZmlnUm91dGVyIH0gZnJvbSAnLi9Sb3V0ZXJzL0dsb2JhbENvbmZpZ1JvdXRlcic7XG5pbXBvcnQgeyBHcmFwaFFMUm91dGVyIH0gZnJvbSAnLi9Sb3V0ZXJzL0dyYXBoUUxSb3V0ZXInO1xuaW1wb3J0IHsgSG9va3NSb3V0ZXIgfSBmcm9tICcuL1JvdXRlcnMvSG9va3NSb3V0ZXInO1xuaW1wb3J0IHsgSUFQVmFsaWRhdGlvblJvdXRlciB9IGZyb20gJy4vUm91dGVycy9JQVBWYWxpZGF0aW9uUm91dGVyJztcbmltcG9ydCB7IEluc3RhbGxhdGlvbnNSb3V0ZXIgfSBmcm9tICcuL1JvdXRlcnMvSW5zdGFsbGF0aW9uc1JvdXRlcic7XG5pbXBvcnQgeyBMb2dzUm91dGVyIH0gZnJvbSAnLi9Sb3V0ZXJzL0xvZ3NSb3V0ZXInO1xuaW1wb3J0IHsgUGFyc2VMaXZlUXVlcnlTZXJ2ZXIgfSBmcm9tICcuL0xpdmVRdWVyeS9QYXJzZUxpdmVRdWVyeVNlcnZlcic7XG5pbXBvcnQgeyBQYWdlc1JvdXRlciB9IGZyb20gJy4vUm91dGVycy9QYWdlc1JvdXRlcic7XG5pbXBvcnQgeyBQdWJsaWNBUElSb3V0ZXIgfSBmcm9tICcuL1JvdXRlcnMvUHVibGljQVBJUm91dGVyJztcbmltcG9ydCB7IFB1c2hSb3V0ZXIgfSBmcm9tICcuL1JvdXRlcnMvUHVzaFJvdXRlcic7XG5pbXBvcnQgeyBDbG91ZENvZGVSb3V0ZXIgfSBmcm9tICcuL1JvdXRlcnMvQ2xvdWRDb2RlUm91dGVyJztcbmltcG9ydCB7IFJvbGVzUm91dGVyIH0gZnJvbSAnLi9Sb3V0ZXJzL1JvbGVzUm91dGVyJztcbmltcG9ydCB7IFNjaGVtYXNSb3V0ZXIgfSBmcm9tICcuL1JvdXRlcnMvU2NoZW1hc1JvdXRlcic7XG5pbXBvcnQgeyBTZXNzaW9uc1JvdXRlciB9IGZyb20gJy4vUm91dGVycy9TZXNzaW9uc1JvdXRlcic7XG5pbXBvcnQgeyBVc2Vyc1JvdXRlciB9IGZyb20gJy4vUm91dGVycy9Vc2Vyc1JvdXRlcic7XG5pbXBvcnQgeyBQdXJnZVJvdXRlciB9IGZyb20gJy4vUm91dGVycy9QdXJnZVJvdXRlcic7XG5pbXBvcnQgeyBBdWRpZW5jZXNSb3V0ZXIgfSBmcm9tICcuL1JvdXRlcnMvQXVkaWVuY2VzUm91dGVyJztcbmltcG9ydCB7IEFnZ3JlZ2F0ZVJvdXRlciB9IGZyb20gJy4vUm91dGVycy9BZ2dyZWdhdGVSb3V0ZXInO1xuaW1wb3J0IHsgUGFyc2VTZXJ2ZXJSRVNUQ29udHJvbGxlciB9IGZyb20gJy4vUGFyc2VTZXJ2ZXJSRVNUQ29udHJvbGxlcic7XG5pbXBvcnQgKiBhcyBjb250cm9sbGVycyBmcm9tICcuL0NvbnRyb2xsZXJzJztcbmltcG9ydCB7IFBhcnNlR3JhcGhRTFNlcnZlciB9IGZyb20gJy4vR3JhcGhRTC9QYXJzZUdyYXBoUUxTZXJ2ZXInO1xuaW1wb3J0IHsgU2VjdXJpdHlSb3V0ZXIgfSBmcm9tICcuL1JvdXRlcnMvU2VjdXJpdHlSb3V0ZXInO1xuaW1wb3J0IENoZWNrUnVubmVyIGZyb20gJy4vU2VjdXJpdHkvQ2hlY2tSdW5uZXInO1xuaW1wb3J0IERlcHJlY2F0b3IgZnJvbSAnLi9EZXByZWNhdG9yL0RlcHJlY2F0b3InO1xuaW1wb3J0IHsgRGVmaW5lZFNjaGVtYXMgfSBmcm9tICcuL1NjaGVtYU1pZ3JhdGlvbnMvRGVmaW5lZFNjaGVtYXMnO1xuaW1wb3J0IE9wdGlvbnNEZWZpbml0aW9ucyBmcm9tICcuL09wdGlvbnMvRGVmaW5pdGlvbnMnO1xuaW1wb3J0IHsgcmVzb2x2aW5nUHJvbWlzZSwgQ29ubmVjdGlvbnMgfSBmcm9tICcuL1Rlc3RVdGlscyc7XG5cbi8vIE11dGF0ZSB0aGUgUGFyc2Ugb2JqZWN0IHRvIGFkZCB0aGUgQ2xvdWQgQ29kZSBoYW5kbGVyc1xuYWRkUGFyc2VDbG91ZCgpO1xuXG4vLyBUcmFjayBjb25uZWN0aW9ucyB0byBkZXN0cm95IHRoZW0gb24gc2h1dGRvd25cbmNvbnN0IGNvbm5lY3Rpb25zID0gbmV3IENvbm5lY3Rpb25zKCk7XG5cbi8vIFBhcnNlU2VydmVyIHdvcmtzIGxpa2UgYSBjb25zdHJ1Y3RvciBvZiBhbiBleHByZXNzIGFwcC5cbi8vIGh0dHBzOi8vcGFyc2VwbGF0Zm9ybS5vcmcvcGFyc2Utc2VydmVyL2FwaS9tYXN0ZXIvUGFyc2VTZXJ2ZXJPcHRpb25zLmh0bWxcbmNsYXNzIFBhcnNlU2VydmVyIHtcbiAgX2FwcDogYW55O1xuICBjb25maWc6IGFueTtcbiAgc2VydmVyOiBhbnk7XG4gIGV4cHJlc3NBcHA6IGFueTtcbiAgbGl2ZVF1ZXJ5U2VydmVyOiBhbnk7XG4gIC8qKlxuICAgKiBAY29uc3RydWN0b3JcbiAgICogQHBhcmFtIHtQYXJzZVNlcnZlck9wdGlvbnN9IG9wdGlvbnMgdGhlIHBhcnNlIHNlcnZlciBpbml0aWFsaXphdGlvbiBvcHRpb25zXG4gICAqL1xuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBQYXJzZVNlcnZlck9wdGlvbnMpIHtcbiAgICAvLyBTY2FuIGZvciBkZXByZWNhdGVkIFBhcnNlIFNlcnZlciBvcHRpb25zXG4gICAgRGVwcmVjYXRvci5zY2FuUGFyc2VTZXJ2ZXJPcHRpb25zKG9wdGlvbnMpO1xuXG4gICAgY29uc3QgaW50ZXJmYWNlcyA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoT3B0aW9uc0RlZmluaXRpb25zKSk7XG5cbiAgICBmdW5jdGlvbiBnZXRWYWxpZE9iamVjdChyb290KSB7XG4gICAgICBjb25zdCByZXN1bHQgPSB7fTtcbiAgICAgIGZvciAoY29uc3Qga2V5IGluIHJvb3QpIHtcbiAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChyb290W2tleV0sICd0eXBlJykpIHtcbiAgICAgICAgICBpZiAocm9vdFtrZXldLnR5cGUuZW5kc1dpdGgoJ1tdJykpIHtcbiAgICAgICAgICAgIHJlc3VsdFtrZXldID0gW2dldFZhbGlkT2JqZWN0KGludGVyZmFjZXNbcm9vdFtrZXldLnR5cGUuc2xpY2UoMCwgLTIpXSldO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXN1bHRba2V5XSA9IGdldFZhbGlkT2JqZWN0KGludGVyZmFjZXNbcm9vdFtrZXldLnR5cGVdKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVzdWx0W2tleV0gPSAnJztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBjb25zdCBvcHRpb25zQmx1ZXByaW50ID0gZ2V0VmFsaWRPYmplY3QoaW50ZXJmYWNlc1snUGFyc2VTZXJ2ZXJPcHRpb25zJ10pO1xuXG4gICAgZnVuY3Rpb24gdmFsaWRhdGVLZXlOYW1lcyhvcmlnaW5hbCwgcmVmLCBuYW1lID0gJycpIHtcbiAgICAgIGxldCByZXN1bHQgPSBbXTtcbiAgICAgIGNvbnN0IHByZWZpeCA9IG5hbWUgKyAobmFtZSAhPT0gJycgPyAnLicgOiAnJyk7XG4gICAgICBmb3IgKGNvbnN0IGtleSBpbiBvcmlnaW5hbCkge1xuICAgICAgICBpZiAoIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChyZWYsIGtleSkpIHtcbiAgICAgICAgICByZXN1bHQucHVzaChwcmVmaXggKyBrZXkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmIChyZWZba2V5XSA9PT0gJycpIHsgY29udGludWU7IH1cbiAgICAgICAgICBsZXQgcmVzID0gW107XG4gICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkob3JpZ2luYWxba2V5XSkgJiYgQXJyYXkuaXNBcnJheShyZWZba2V5XSkpIHtcbiAgICAgICAgICAgIGNvbnN0IHR5cGUgPSByZWZba2V5XVswXTtcbiAgICAgICAgICAgIG9yaWdpbmFsW2tleV0uZm9yRWFjaCgoaXRlbSwgaWR4KSA9PiB7XG4gICAgICAgICAgICAgIGlmICh0eXBlb2YgaXRlbSA9PT0gJ29iamVjdCcgJiYgaXRlbSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHJlcyA9IHJlcy5jb25jYXQodmFsaWRhdGVLZXlOYW1lcyhpdGVtLCB0eXBlLCBwcmVmaXggKyBrZXkgKyBgWyR7aWR4fV1gKSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIG9yaWdpbmFsW2tleV0gPT09ICdvYmplY3QnICYmIHR5cGVvZiByZWZba2V5XSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlS2V5TmFtZXMob3JpZ2luYWxba2V5XSwgcmVmW2tleV0sIHByZWZpeCArIGtleSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdC5jb25jYXQocmVzKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBjb25zdCBkaWZmID0gdmFsaWRhdGVLZXlOYW1lcyhvcHRpb25zLCBvcHRpb25zQmx1ZXByaW50KTtcbiAgICBpZiAoZGlmZi5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBsb2dnZXIgPSAobG9nZ2luZyBhcyBhbnkpLmxvZ2dlcjtcbiAgICAgIGxvZ2dlci5lcnJvcihgSW52YWxpZCBrZXkocykgZm91bmQgaW4gUGFyc2UgU2VydmVyIGNvbmZpZ3VyYXRpb246ICR7ZGlmZi5qb2luKCcsICcpfWApO1xuICAgIH1cblxuICAgIC8vIFNldCBvcHRpb24gZGVmYXVsdHNcbiAgICBpbmplY3REZWZhdWx0cyhvcHRpb25zKTtcbiAgICBjb25zdCB7XG4gICAgICBhcHBJZCA9IHJlcXVpcmVkUGFyYW1ldGVyKCdZb3UgbXVzdCBwcm92aWRlIGFuIGFwcElkIScpLFxuICAgICAgbWFzdGVyS2V5ID0gcmVxdWlyZWRQYXJhbWV0ZXIoJ1lvdSBtdXN0IHByb3ZpZGUgYSBtYXN0ZXJLZXkhJyksXG4gICAgICBqYXZhc2NyaXB0S2V5LFxuICAgICAgc2VydmVyVVJMID0gcmVxdWlyZWRQYXJhbWV0ZXIoJ1lvdSBtdXN0IHByb3ZpZGUgYSBzZXJ2ZXJVUkwhJyksXG4gICAgfSA9IG9wdGlvbnM7XG4gICAgLy8gSW5pdGlhbGl6ZSB0aGUgbm9kZSBjbGllbnQgU0RLIGF1dG9tYXRpY2FsbHlcbiAgICBQYXJzZS5pbml0aWFsaXplKGFwcElkLCBqYXZhc2NyaXB0S2V5IHx8ICd1bnVzZWQnLCBtYXN0ZXJLZXkpO1xuICAgIFBhcnNlLnNlcnZlclVSTCA9IHNlcnZlclVSTDtcbiAgICBDb25maWcudmFsaWRhdGVPcHRpb25zKG9wdGlvbnMpO1xuICAgIGNvbnN0IGFsbENvbnRyb2xsZXJzID0gY29udHJvbGxlcnMuZ2V0Q29udHJvbGxlcnMob3B0aW9ucyk7XG5cbiAgICAob3B0aW9ucyBhcyBhbnkpLnN0YXRlID0gJ2luaXRpYWxpemVkJztcbiAgICB0aGlzLmNvbmZpZyA9IENvbmZpZy5wdXQoT2JqZWN0LmFzc2lnbih7fSwgb3B0aW9ucywgYWxsQ29udHJvbGxlcnMpKTtcbiAgICB0aGlzLmNvbmZpZy5tYXN0ZXJLZXlJcHNTdG9yZSA9IG5ldyBNYXAoKTtcbiAgICB0aGlzLmNvbmZpZy5tYWludGVuYW5jZUtleUlwc1N0b3JlID0gbmV3IE1hcCgpO1xuICAgIGxvZ2dpbmcuc2V0TG9nZ2VyKGFsbENvbnRyb2xsZXJzLmxvZ2dlckNvbnRyb2xsZXIpO1xuICB9XG5cbiAgLyoqXG4gICAqIFN0YXJ0cyBQYXJzZSBTZXJ2ZXIgYXMgYW4gZXhwcmVzcyBhcHA7IHRoaXMgcHJvbWlzZSByZXNvbHZlcyB3aGVuIFBhcnNlIFNlcnZlciBpcyByZWFkeSB0byBhY2NlcHQgcmVxdWVzdHMuXG4gICAqL1xuXG4gIGFzeW5jIHN0YXJ0KCk6IFByb21pc2U8dGhpcz4ge1xuICAgIHRyeSB7XG4gICAgICBpZiAodGhpcy5jb25maWcuc3RhdGUgPT09ICdvaycpIHtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICB9XG4gICAgICB0aGlzLmNvbmZpZy5zdGF0ZSA9ICdzdGFydGluZyc7XG4gICAgICBDb25maWcucHV0KHRoaXMuY29uZmlnKTtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgZGF0YWJhc2VDb250cm9sbGVyLFxuICAgICAgICBob29rc0NvbnRyb2xsZXIsXG4gICAgICAgIGNhY2hlQ29udHJvbGxlcixcbiAgICAgICAgY2xvdWQsXG4gICAgICAgIHNlY3VyaXR5LFxuICAgICAgICBzY2hlbWEsXG4gICAgICAgIGxpdmVRdWVyeUNvbnRyb2xsZXIsXG4gICAgICB9ID0gdGhpcy5jb25maWc7XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCBkYXRhYmFzZUNvbnRyb2xsZXIucGVyZm9ybUluaXRpYWxpemF0aW9uKCk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGlmIChlLmNvZGUgIT09IFBhcnNlLkVycm9yLkRVUExJQ0FURV9WQUxVRSkge1xuICAgICAgICAgIHRocm93IGU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGNvbnN0IHB1c2hDb250cm9sbGVyID0gYXdhaXQgY29udHJvbGxlcnMuZ2V0UHVzaENvbnRyb2xsZXIodGhpcy5jb25maWcpO1xuICAgICAgYXdhaXQgaG9va3NDb250cm9sbGVyLmxvYWQoKTtcbiAgICAgIGNvbnN0IHN0YXJ0dXBQcm9taXNlcyA9IFt0aGlzLmNvbmZpZy5sb2FkTWFzdGVyS2V5Py4oKV07XG4gICAgICBpZiAoc2NoZW1hKSB7XG4gICAgICAgIHN0YXJ0dXBQcm9taXNlcy5wdXNoKG5ldyBEZWZpbmVkU2NoZW1hcyhzY2hlbWEsIHRoaXMuY29uZmlnKS5leGVjdXRlKCkpO1xuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICBjYWNoZUNvbnRyb2xsZXIuYWRhcHRlcj8uY29ubmVjdCAmJlxuICAgICAgICB0eXBlb2YgY2FjaGVDb250cm9sbGVyLmFkYXB0ZXIuY29ubmVjdCA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgKSB7XG4gICAgICAgIHN0YXJ0dXBQcm9taXNlcy5wdXNoKGNhY2hlQ29udHJvbGxlci5hZGFwdGVyLmNvbm5lY3QoKSk7XG4gICAgICB9XG4gICAgICBzdGFydHVwUHJvbWlzZXMucHVzaChsaXZlUXVlcnlDb250cm9sbGVyLmNvbm5lY3QoKSk7XG4gICAgICBhd2FpdCBQcm9taXNlLmFsbChzdGFydHVwUHJvbWlzZXMpO1xuICAgICAgaWYgKGNsb3VkKSB7XG4gICAgICAgIGFkZFBhcnNlQ2xvdWQoKTtcbiAgICAgICAgaWYgKHR5cGVvZiBjbG91ZCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgIGF3YWl0IFByb21pc2UucmVzb2x2ZShjbG91ZChQYXJzZSkpO1xuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBjbG91ZCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICBsZXQganNvbjtcbiAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYubnBtX3BhY2thZ2VfanNvbikge1xuICAgICAgICAgICAganNvbiA9IHJlcXVpcmUocHJvY2Vzcy5lbnYubnBtX3BhY2thZ2VfanNvbik7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5ucG1fcGFja2FnZV90eXBlID09PSAnbW9kdWxlJyB8fCBqc29uPy50eXBlID09PSAnbW9kdWxlJykge1xuICAgICAgICAgICAgYXdhaXQgaW1wb3J0KHBhdGgucmVzb2x2ZShwcm9jZXNzLmN3ZCgpLCBjbG91ZCkpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXF1aXJlKHBhdGgucmVzb2x2ZShwcm9jZXNzLmN3ZCgpLCBjbG91ZCkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aHJvdyBcImFyZ3VtZW50ICdjbG91ZCcgbXVzdCBlaXRoZXIgYmUgYSBzdHJpbmcgb3IgYSBmdW5jdGlvblwiO1xuICAgICAgICB9XG4gICAgICAgIGF3YWl0IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gc2V0VGltZW91dChyZXNvbHZlLCAxMCkpO1xuICAgICAgfVxuICAgICAgaWYgKHNlY3VyaXR5ICYmIHNlY3VyaXR5LmVuYWJsZUNoZWNrICYmIHNlY3VyaXR5LmVuYWJsZUNoZWNrTG9nKSB7XG4gICAgICAgIG5ldyBDaGVja1J1bm5lcihzZWN1cml0eSkucnVuKCk7XG4gICAgICB9XG4gICAgICB0aGlzLmNvbmZpZy5zdGF0ZSA9ICdvayc7XG4gICAgICB0aGlzLmNvbmZpZyA9IHsgLi4udGhpcy5jb25maWcsIC4uLnB1c2hDb250cm9sbGVyIH07XG4gICAgICBDb25maWcucHV0KHRoaXMuY29uZmlnKTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gICAgICB0aGlzLmNvbmZpZy5zdGF0ZSA9ICdlcnJvcic7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG4gIH1cblxuICBnZXQgYXBwKCkge1xuICAgIGlmICghdGhpcy5fYXBwKSB7XG4gICAgICB0aGlzLl9hcHAgPSBQYXJzZVNlcnZlci5hcHAodGhpcy5jb25maWcpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fYXBwO1xuICB9XG5cbiAgLyoqXG4gICAqIFN0b3BzIHRoZSBwYXJzZSBzZXJ2ZXIsIGNhbmNlbHMgYW55IG9uZ29pbmcgcmVxdWVzdHMgYW5kIGNsb3NlcyBhbGwgY29ubmVjdGlvbnMuXG4gICAqXG4gICAqIEN1cnJlbnRseSwgZXhwcmVzcyBkb2Vzbid0IHNodXQgZG93biBpbW1lZGlhdGVseSBhZnRlciByZWNlaXZpbmcgU0lHSU5UL1NJR1RFUk1cbiAgICogaWYgaXQgaGFzIGNsaWVudCBjb25uZWN0aW9ucyB0aGF0IGhhdmVuJ3QgdGltZWQgb3V0LlxuICAgKiAoVGhpcyBpcyBhIGtub3duIGlzc3VlIHdpdGggbm9kZSAtIGh0dHBzOi8vZ2l0aHViLmNvbS9ub2RlanMvbm9kZS9pc3N1ZXMvMjY0MilcbiAgICpcbiAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59IGEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIHNlcnZlciBpcyBzdG9wcGVkXG4gICAqL1xuICBhc3luYyBoYW5kbGVTaHV0ZG93bigpIHtcbiAgICBjb25zdCBzZXJ2ZXJDbG9zZVByb21pc2UgPSByZXNvbHZpbmdQcm9taXNlKCk7XG4gICAgY29uc3QgbGl2ZVF1ZXJ5U2VydmVyQ2xvc2VQcm9taXNlID0gcmVzb2x2aW5nUHJvbWlzZSgpO1xuICAgIGNvbnN0IHByb21pc2VzID0gW107XG4gICAgdGhpcy5zZXJ2ZXIuY2xvc2UoKGVycm9yKSA9PiB7XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHdoaWxlIGNsb3NpbmcgcGFyc2Ugc2VydmVyJywgZXJyb3IpO1xuICAgICAgfVxuICAgICAgc2VydmVyQ2xvc2VQcm9taXNlLnJlc29sdmUoKTtcbiAgICB9KTtcbiAgICBpZiAodGhpcy5saXZlUXVlcnlTZXJ2ZXI/LnNlcnZlcj8uY2xvc2UgJiYgdGhpcy5saXZlUXVlcnlTZXJ2ZXIuc2VydmVyICE9PSB0aGlzLnNlcnZlcikge1xuICAgICAgdGhpcy5saXZlUXVlcnlTZXJ2ZXIuc2VydmVyLmNsb3NlKChlcnJvcikgPT4ge1xuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHdoaWxlIGNsb3NpbmcgbGl2ZSBxdWVyeSBzZXJ2ZXInLCBlcnJvcik7XG4gICAgICAgIH1cbiAgICAgICAgbGl2ZVF1ZXJ5U2VydmVyQ2xvc2VQcm9taXNlLnJlc29sdmUoKTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBsaXZlUXVlcnlTZXJ2ZXJDbG9zZVByb21pc2UucmVzb2x2ZSgpO1xuICAgIH1cbiAgICBjb25zdCB7IGFkYXB0ZXI6IGRhdGFiYXNlQWRhcHRlciB9ID0gdGhpcy5jb25maWcuZGF0YWJhc2VDb250cm9sbGVyO1xuICAgIGlmIChkYXRhYmFzZUFkYXB0ZXIgJiYgdHlwZW9mIGRhdGFiYXNlQWRhcHRlci5oYW5kbGVTaHV0ZG93biA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcHJvbWlzZXMucHVzaChkYXRhYmFzZUFkYXB0ZXIuaGFuZGxlU2h1dGRvd24oKSk7XG4gICAgfVxuICAgIGNvbnN0IHsgYWRhcHRlcjogZmlsZUFkYXB0ZXIgfSA9IHRoaXMuY29uZmlnLmZpbGVzQ29udHJvbGxlcjtcbiAgICBpZiAoZmlsZUFkYXB0ZXIgJiYgdHlwZW9mIGZpbGVBZGFwdGVyLmhhbmRsZVNodXRkb3duID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBwcm9taXNlcy5wdXNoKGZpbGVBZGFwdGVyLmhhbmRsZVNodXRkb3duKCkpO1xuICAgIH1cbiAgICBjb25zdCB7IGFkYXB0ZXI6IGNhY2hlQWRhcHRlciB9ID0gdGhpcy5jb25maWcuY2FjaGVDb250cm9sbGVyO1xuICAgIGlmIChjYWNoZUFkYXB0ZXIgJiYgdHlwZW9mIGNhY2hlQWRhcHRlci5oYW5kbGVTaHV0ZG93biA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcHJvbWlzZXMucHVzaChjYWNoZUFkYXB0ZXIuaGFuZGxlU2h1dGRvd24oKSk7XG4gICAgfVxuICAgIGlmICh0aGlzLmxpdmVRdWVyeVNlcnZlcikge1xuICAgICAgcHJvbWlzZXMucHVzaCh0aGlzLmxpdmVRdWVyeVNlcnZlci5zaHV0ZG93bigpKTtcbiAgICB9XG4gICAgYXdhaXQgUHJvbWlzZS5hbGwocHJvbWlzZXMpO1xuICAgIGNvbm5lY3Rpb25zLmRlc3Ryb3lBbGwoKTtcbiAgICBhd2FpdCBQcm9taXNlLmFsbChbc2VydmVyQ2xvc2VQcm9taXNlLCBsaXZlUXVlcnlTZXJ2ZXJDbG9zZVByb21pc2VdKTtcbiAgICBpZiAodGhpcy5jb25maWcuc2VydmVyQ2xvc2VDb21wbGV0ZSkge1xuICAgICAgdGhpcy5jb25maWcuc2VydmVyQ2xvc2VDb21wbGV0ZSgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAc3RhdGljXG4gICAqIENyZWF0ZSBhbiBleHByZXNzIGFwcCBmb3IgdGhlIHBhcnNlIHNlcnZlclxuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0aW9ucyBsZXQgeW91IHNwZWNpZnkgdGhlIG1heFVwbG9hZFNpemUgd2hlbiBjcmVhdGluZyB0aGUgZXhwcmVzcyBhcHAgICovXG4gIHN0YXRpYyBhcHAob3B0aW9ucykge1xuICAgIGNvbnN0IHsgbWF4VXBsb2FkU2l6ZSA9ICcyMG1iJywgYXBwSWQsIGRpcmVjdEFjY2VzcywgcGFnZXMsIHJhdGVMaW1pdCA9IFtdIH0gPSBvcHRpb25zO1xuICAgIC8vIFRoaXMgYXBwIHNlcnZlcyB0aGUgUGFyc2UgQVBJIGRpcmVjdGx5LlxuICAgIC8vIEl0J3MgdGhlIGVxdWl2YWxlbnQgb2YgaHR0cHM6Ly9hcGkucGFyc2UuY29tLzEgaW4gdGhlIGhvc3RlZCBQYXJzZSBBUEkuXG4gICAgdmFyIGFwaSA9IGV4cHJlc3MoKTtcbiAgICAvL2FwaS51c2UoXCIvYXBwc1wiLCBleHByZXNzLnN0YXRpYyhfX2Rpcm5hbWUgKyBcIi9wdWJsaWNcIikpO1xuICAgIGFwaS51c2UobWlkZGxld2FyZXMuYWxsb3dDcm9zc0RvbWFpbihhcHBJZCkpO1xuICAgIGFwaS51c2UobWlkZGxld2FyZXMuYWxsb3dEb3VibGVGb3J3YXJkU2xhc2gpO1xuICAgIC8vIEZpbGUgaGFuZGxpbmcgbmVlZHMgdG8gYmUgYmVmb3JlIGRlZmF1bHQgbWlkZGxld2FyZXMgYXJlIGFwcGxpZWRcbiAgICBhcGkudXNlKFxuICAgICAgJy8nLFxuICAgICAgbmV3IEZpbGVzUm91dGVyKCkuZXhwcmVzc1JvdXRlcih7XG4gICAgICAgIG1heFVwbG9hZFNpemU6IG1heFVwbG9hZFNpemUsXG4gICAgICB9KVxuICAgICk7XG5cbiAgICBhcGkudXNlKCcvaGVhbHRoJywgZnVuY3Rpb24gKHJlcSwgcmVzKSB7XG4gICAgICByZXMuc3RhdHVzKG9wdGlvbnMuc3RhdGUgPT09ICdvaycgPyAyMDAgOiA1MDMpO1xuICAgICAgaWYgKG9wdGlvbnMuc3RhdGUgPT09ICdzdGFydGluZycpIHtcbiAgICAgICAgcmVzLnNldCgnUmV0cnktQWZ0ZXInLCAxKTtcbiAgICAgIH1cbiAgICAgIHJlcy5qc29uKHtcbiAgICAgICAgc3RhdHVzOiBvcHRpb25zLnN0YXRlLFxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBhcGkudXNlKFxuICAgICAgJy8nLFxuICAgICAgZXhwcmVzcy51cmxlbmNvZGVkKHsgZXh0ZW5kZWQ6IGZhbHNlIH0pLFxuICAgICAgcGFnZXMuZW5hYmxlUm91dGVyXG4gICAgICAgID8gbmV3IFBhZ2VzUm91dGVyKHBhZ2VzKS5leHByZXNzUm91dGVyKClcbiAgICAgICAgOiBuZXcgUHVibGljQVBJUm91dGVyKCkuZXhwcmVzc1JvdXRlcigpXG4gICAgKTtcblxuICAgIGFwaS51c2UoZXhwcmVzcy5qc29uKHsgdHlwZTogJyovKicsIGxpbWl0OiBtYXhVcGxvYWRTaXplIH0pKTtcbiAgICBhcGkudXNlKG1pZGRsZXdhcmVzLmFsbG93TWV0aG9kT3ZlcnJpZGUpO1xuICAgIGFwaS51c2UobWlkZGxld2FyZXMuaGFuZGxlUGFyc2VIZWFkZXJzKTtcbiAgICBhcGkuc2V0KCdxdWVyeSBwYXJzZXInLCAnZXh0ZW5kZWQnKTtcbiAgICBjb25zdCByb3V0ZXMgPSBBcnJheS5pc0FycmF5KHJhdGVMaW1pdCkgPyByYXRlTGltaXQgOiBbcmF0ZUxpbWl0XTtcbiAgICBmb3IgKGNvbnN0IHJvdXRlIG9mIHJvdXRlcykge1xuICAgICAgbWlkZGxld2FyZXMuYWRkUmF0ZUxpbWl0KHJvdXRlLCBvcHRpb25zKTtcbiAgICB9XG4gICAgYXBpLnVzZShtaWRkbGV3YXJlcy5oYW5kbGVQYXJzZVNlc3Npb24pO1xuXG4gICAgY29uc3QgYXBwUm91dGVyID0gUGFyc2VTZXJ2ZXIucHJvbWlzZVJvdXRlcih7IGFwcElkIH0pO1xuICAgIGFwaS51c2UoYXBwUm91dGVyLmV4cHJlc3NSb3V0ZXIoKSk7XG5cbiAgICBhcGkudXNlKG1pZGRsZXdhcmVzLmhhbmRsZVBhcnNlRXJyb3JzKTtcblxuICAgIC8vIHJ1biB0aGUgZm9sbG93aW5nIHdoZW4gbm90IHRlc3RpbmdcbiAgICBpZiAoIXByb2Nlc3MuZW52LlRFU1RJTkcpIHtcbiAgICAgIC8vVGhpcyBjYXVzZXMgdGVzdHMgdG8gc3BldyBzb21lIHVzZWxlc3Mgd2FybmluZ3MsIHNvIGRpc2FibGUgaW4gdGVzdFxuICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgIHByb2Nlc3Mub24oJ3VuY2F1Z2h0RXhjZXB0aW9uJywgKGVycjogYW55KSA9PiB7XG4gICAgICAgIGlmIChlcnIuY29kZSA9PT0gJ0VBRERSSU5VU0UnKSB7XG4gICAgICAgICAgLy8gdXNlci1mcmllbmRseSBtZXNzYWdlIGZvciB0aGlzIGNvbW1vbiBlcnJvclxuICAgICAgICAgIHByb2Nlc3Muc3RkZXJyLndyaXRlKGBVbmFibGUgdG8gbGlzdGVuIG9uIHBvcnQgJHtlcnIucG9ydH0uIFRoZSBwb3J0IGlzIGFscmVhZHkgaW4gdXNlLmApO1xuICAgICAgICAgIHByb2Nlc3MuZXhpdCgwKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAoZXJyLm1lc3NhZ2UpIHtcbiAgICAgICAgICAgIHByb2Nlc3Muc3RkZXJyLndyaXRlKCdBbiB1bmNhdWdodCBleGNlcHRpb24gb2NjdXJyZWQ6ICcgKyBlcnIubWVzc2FnZSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChlcnIuc3RhY2spIHtcbiAgICAgICAgICAgIHByb2Nlc3Muc3RkZXJyLndyaXRlKCdTdGFjayBUcmFjZTpcXG4nICsgZXJyLnN0YWNrKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcHJvY2Vzcy5zdGRlcnIud3JpdGUoZXJyKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcHJvY2Vzcy5leGl0KDEpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIC8vIHZlcmlmeSB0aGUgc2VydmVyIHVybCBhZnRlciBhICdtb3VudCcgZXZlbnQgaXMgcmVjZWl2ZWRcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICBhcGkub24oJ21vdW50JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBhd2FpdCBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgMTAwMCkpO1xuICAgICAgICBQYXJzZVNlcnZlci52ZXJpZnlTZXJ2ZXJVcmwoKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICBpZiAocHJvY2Vzcy5lbnYuUEFSU0VfU0VSVkVSX0VOQUJMRV9FWFBFUklNRU5UQUxfRElSRUNUX0FDQ0VTUyA9PT0gJzEnIHx8IGRpcmVjdEFjY2Vzcykge1xuICAgICAgUGFyc2UuQ29yZU1hbmFnZXIuc2V0UkVTVENvbnRyb2xsZXIoUGFyc2VTZXJ2ZXJSRVNUQ29udHJvbGxlcihhcHBJZCwgYXBwUm91dGVyKSk7XG4gICAgfVxuICAgIHJldHVybiBhcGk7XG4gIH1cblxuICBzdGF0aWMgcHJvbWlzZVJvdXRlcih7IGFwcElkIH0pIHtcbiAgICBjb25zdCByb3V0ZXJzID0gW1xuICAgICAgbmV3IENsYXNzZXNSb3V0ZXIoKSxcbiAgICAgIG5ldyBVc2Vyc1JvdXRlcigpLFxuICAgICAgbmV3IFNlc3Npb25zUm91dGVyKCksXG4gICAgICBuZXcgUm9sZXNSb3V0ZXIoKSxcbiAgICAgIG5ldyBBbmFseXRpY3NSb3V0ZXIoKSxcbiAgICAgIG5ldyBJbnN0YWxsYXRpb25zUm91dGVyKCksXG4gICAgICBuZXcgRnVuY3Rpb25zUm91dGVyKCksXG4gICAgICBuZXcgU2NoZW1hc1JvdXRlcigpLFxuICAgICAgbmV3IFB1c2hSb3V0ZXIoKSxcbiAgICAgIG5ldyBMb2dzUm91dGVyKCksXG4gICAgICBuZXcgSUFQVmFsaWRhdGlvblJvdXRlcigpLFxuICAgICAgbmV3IEZlYXR1cmVzUm91dGVyKCksXG4gICAgICBuZXcgR2xvYmFsQ29uZmlnUm91dGVyKCksXG4gICAgICBuZXcgR3JhcGhRTFJvdXRlcigpLFxuICAgICAgbmV3IFB1cmdlUm91dGVyKCksXG4gICAgICBuZXcgSG9va3NSb3V0ZXIoKSxcbiAgICAgIG5ldyBDbG91ZENvZGVSb3V0ZXIoKSxcbiAgICAgIG5ldyBBdWRpZW5jZXNSb3V0ZXIoKSxcbiAgICAgIG5ldyBBZ2dyZWdhdGVSb3V0ZXIoKSxcbiAgICAgIG5ldyBTZWN1cml0eVJvdXRlcigpLFxuICAgIF07XG5cbiAgICBjb25zdCByb3V0ZXMgPSByb3V0ZXJzLnJlZHVjZSgobWVtbywgcm91dGVyKSA9PiB7XG4gICAgICByZXR1cm4gbWVtby5jb25jYXQocm91dGVyLnJvdXRlcyk7XG4gICAgfSwgW10pO1xuXG4gICAgY29uc3QgYXBwUm91dGVyID0gbmV3IFByb21pc2VSb3V0ZXIocm91dGVzLCBhcHBJZCk7XG5cbiAgICBiYXRjaC5tb3VudE9udG8oYXBwUm91dGVyKTtcbiAgICByZXR1cm4gYXBwUm91dGVyO1xuICB9XG5cbiAgLyoqXG4gICAqIHN0YXJ0cyB0aGUgcGFyc2Ugc2VydmVyJ3MgZXhwcmVzcyBhcHBcbiAgICogQHBhcmFtIHtQYXJzZVNlcnZlck9wdGlvbnN9IG9wdGlvbnMgdG8gdXNlIHRvIHN0YXJ0IHRoZSBzZXJ2ZXJcbiAgICogQHJldHVybnMge1BhcnNlU2VydmVyfSB0aGUgcGFyc2Ugc2VydmVyIGluc3RhbmNlXG4gICAqL1xuXG4gIGFzeW5jIHN0YXJ0QXBwKG9wdGlvbnM6IFBhcnNlU2VydmVyT3B0aW9ucykge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLnN0YXJ0KCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIG9uIFBhcnNlU2VydmVyLnN0YXJ0QXBwOiAnLCBlKTtcbiAgICAgIHRocm93IGU7XG4gICAgfVxuICAgIGNvbnN0IGFwcCA9IGV4cHJlc3MoKTtcbiAgICBpZiAob3B0aW9ucy5taWRkbGV3YXJlKSB7XG4gICAgICBsZXQgbWlkZGxld2FyZTtcbiAgICAgIGlmICh0eXBlb2Ygb3B0aW9ucy5taWRkbGV3YXJlID09ICdzdHJpbmcnKSB7XG4gICAgICAgIG1pZGRsZXdhcmUgPSByZXF1aXJlKHBhdGgucmVzb2x2ZShwcm9jZXNzLmN3ZCgpLCBvcHRpb25zLm1pZGRsZXdhcmUpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG1pZGRsZXdhcmUgPSBvcHRpb25zLm1pZGRsZXdhcmU7IC8vIHVzZSBhcy1pcyBsZXQgZXhwcmVzcyBmYWlsXG4gICAgICB9XG4gICAgICBhcHAudXNlKG1pZGRsZXdhcmUpO1xuICAgIH1cbiAgICBhcHAudXNlKG9wdGlvbnMubW91bnRQYXRoLCB0aGlzLmFwcCk7XG5cbiAgICBpZiAob3B0aW9ucy5tb3VudEdyYXBoUUwgPT09IHRydWUgfHwgb3B0aW9ucy5tb3VudFBsYXlncm91bmQgPT09IHRydWUpIHtcbiAgICAgIGxldCBncmFwaFFMQ3VzdG9tVHlwZURlZnMgPSB1bmRlZmluZWQ7XG4gICAgICBpZiAodHlwZW9mIG9wdGlvbnMuZ3JhcGhRTFNjaGVtYSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgZ3JhcGhRTEN1c3RvbVR5cGVEZWZzID0gcGFyc2UoZnMucmVhZEZpbGVTeW5jKG9wdGlvbnMuZ3JhcGhRTFNjaGVtYSwgJ3V0ZjgnKSk7XG4gICAgICB9IGVsc2UgaWYgKFxuICAgICAgICB0eXBlb2Ygb3B0aW9ucy5ncmFwaFFMU2NoZW1hID09PSAnb2JqZWN0JyB8fFxuICAgICAgICB0eXBlb2Ygb3B0aW9ucy5ncmFwaFFMU2NoZW1hID09PSAnZnVuY3Rpb24nXG4gICAgICApIHtcbiAgICAgICAgZ3JhcGhRTEN1c3RvbVR5cGVEZWZzID0gb3B0aW9ucy5ncmFwaFFMU2NoZW1hO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBwYXJzZUdyYXBoUUxTZXJ2ZXIgPSBuZXcgUGFyc2VHcmFwaFFMU2VydmVyKHRoaXMsIHtcbiAgICAgICAgZ3JhcGhRTFBhdGg6IG9wdGlvbnMuZ3JhcGhRTFBhdGgsXG4gICAgICAgIHBsYXlncm91bmRQYXRoOiBvcHRpb25zLnBsYXlncm91bmRQYXRoLFxuICAgICAgICBncmFwaFFMQ3VzdG9tVHlwZURlZnMsXG4gICAgICB9KTtcblxuICAgICAgaWYgKG9wdGlvbnMubW91bnRHcmFwaFFMKSB7XG4gICAgICAgIHBhcnNlR3JhcGhRTFNlcnZlci5hcHBseUdyYXBoUUwoYXBwKTtcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMubW91bnRQbGF5Z3JvdW5kKSB7XG4gICAgICAgIHBhcnNlR3JhcGhRTFNlcnZlci5hcHBseVBsYXlncm91bmQoYXBwKTtcbiAgICAgIH1cbiAgICB9XG4gICAgY29uc3Qgc2VydmVyID0gYXdhaXQgbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7XG4gICAgICBhcHAubGlzdGVuKG9wdGlvbnMucG9ydCwgb3B0aW9ucy5ob3N0LCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJlc29sdmUodGhpcyk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICB0aGlzLnNlcnZlciA9IHNlcnZlcjtcbiAgICBjb25uZWN0aW9ucy50cmFjayhzZXJ2ZXIpO1xuXG4gICAgaWYgKG9wdGlvbnMuc3RhcnRMaXZlUXVlcnlTZXJ2ZXIgfHwgb3B0aW9ucy5saXZlUXVlcnlTZXJ2ZXJPcHRpb25zKSB7XG4gICAgICB0aGlzLmxpdmVRdWVyeVNlcnZlciA9IGF3YWl0IFBhcnNlU2VydmVyLmNyZWF0ZUxpdmVRdWVyeVNlcnZlcihcbiAgICAgICAgc2VydmVyLFxuICAgICAgICBvcHRpb25zLmxpdmVRdWVyeVNlcnZlck9wdGlvbnMsXG4gICAgICAgIG9wdGlvbnNcbiAgICAgICk7XG4gICAgICBpZiAodGhpcy5saXZlUXVlcnlTZXJ2ZXIuc2VydmVyICE9PSB0aGlzLnNlcnZlcikge1xuICAgICAgICBjb25uZWN0aW9ucy50cmFjayh0aGlzLmxpdmVRdWVyeVNlcnZlci5zZXJ2ZXIpO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAob3B0aW9ucy50cnVzdFByb3h5KSB7XG4gICAgICBhcHAuc2V0KCd0cnVzdCBwcm94eScsIG9wdGlvbnMudHJ1c3RQcm94eSk7XG4gICAgfVxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgaWYgKCFwcm9jZXNzLmVudi5URVNUSU5HKSB7XG4gICAgICBjb25maWd1cmVMaXN0ZW5lcnModGhpcyk7XG4gICAgfVxuICAgIHRoaXMuZXhwcmVzc0FwcCA9IGFwcDtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IFBhcnNlU2VydmVyIGFuZCBzdGFydHMgaXQuXG4gICAqIEBwYXJhbSB7UGFyc2VTZXJ2ZXJPcHRpb25zfSBvcHRpb25zIHVzZWQgdG8gc3RhcnQgdGhlIHNlcnZlclxuICAgKiBAcmV0dXJucyB7UGFyc2VTZXJ2ZXJ9IHRoZSBwYXJzZSBzZXJ2ZXIgaW5zdGFuY2VcbiAgICovXG4gIHN0YXRpYyBhc3luYyBzdGFydEFwcChvcHRpb25zOiBQYXJzZVNlcnZlck9wdGlvbnMpIHtcbiAgICBjb25zdCBwYXJzZVNlcnZlciA9IG5ldyBQYXJzZVNlcnZlcihvcHRpb25zKTtcbiAgICByZXR1cm4gcGFyc2VTZXJ2ZXIuc3RhcnRBcHAob3B0aW9ucyk7XG4gIH1cblxuICAvKipcbiAgICogSGVscGVyIG1ldGhvZCB0byBjcmVhdGUgYSBsaXZlUXVlcnkgc2VydmVyXG4gICAqIEBzdGF0aWNcbiAgICogQHBhcmFtIHtTZXJ2ZXJ9IGh0dHBTZXJ2ZXIgYW4gb3B0aW9uYWwgaHR0cCBzZXJ2ZXIgdG8gcGFzc1xuICAgKiBAcGFyYW0ge0xpdmVRdWVyeVNlcnZlck9wdGlvbnN9IGNvbmZpZyBvcHRpb25zIGZvciB0aGUgbGl2ZVF1ZXJ5U2VydmVyXG4gICAqIEBwYXJhbSB7UGFyc2VTZXJ2ZXJPcHRpb25zfSBvcHRpb25zIG9wdGlvbnMgZm9yIHRoZSBQYXJzZVNlcnZlclxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxQYXJzZUxpdmVRdWVyeVNlcnZlcj59IHRoZSBsaXZlIHF1ZXJ5IHNlcnZlciBpbnN0YW5jZVxuICAgKi9cbiAgc3RhdGljIGFzeW5jIGNyZWF0ZUxpdmVRdWVyeVNlcnZlcihcbiAgICBodHRwU2VydmVyLFxuICAgIGNvbmZpZzogTGl2ZVF1ZXJ5U2VydmVyT3B0aW9ucyxcbiAgICBvcHRpb25zOiBQYXJzZVNlcnZlck9wdGlvbnNcbiAgKTogUHJvbWlzZTxQYXJzZUxpdmVRdWVyeVNlcnZlcj4ge1xuICAgIGlmICghaHR0cFNlcnZlciB8fCAoY29uZmlnICYmIGNvbmZpZy5wb3J0KSkge1xuICAgICAgdmFyIGFwcCA9IGV4cHJlc3MoKTtcbiAgICAgIGh0dHBTZXJ2ZXIgPSByZXF1aXJlKCdodHRwJykuY3JlYXRlU2VydmVyKGFwcCk7XG4gICAgICBodHRwU2VydmVyLmxpc3Rlbihjb25maWcucG9ydCk7XG4gICAgfVxuICAgIGNvbnN0IHNlcnZlciA9IG5ldyBQYXJzZUxpdmVRdWVyeVNlcnZlcihodHRwU2VydmVyLCBjb25maWcsIG9wdGlvbnMpO1xuICAgIGF3YWl0IHNlcnZlci5jb25uZWN0KCk7XG4gICAgcmV0dXJuIHNlcnZlcjtcbiAgfVxuXG4gIHN0YXRpYyBhc3luYyB2ZXJpZnlTZXJ2ZXJVcmwoKSB7XG4gICAgLy8gcGVyZm9ybSBhIGhlYWx0aCBjaGVjayBvbiB0aGUgc2VydmVyVVJMIHZhbHVlXG4gICAgaWYgKFBhcnNlLnNlcnZlclVSTCkge1xuICAgICAgY29uc3QgaXNWYWxpZEh0dHBVcmwgPSBzdHJpbmcgPT4ge1xuICAgICAgICBsZXQgdXJsO1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHVybCA9IG5ldyBVUkwoc3RyaW5nKTtcbiAgICAgICAgfSBjYXRjaCAoXykge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdXJsLnByb3RvY29sID09PSAnaHR0cDonIHx8IHVybC5wcm90b2NvbCA9PT0gJ2h0dHBzOic7XG4gICAgICB9O1xuICAgICAgY29uc3QgdXJsID0gYCR7UGFyc2Uuc2VydmVyVVJMLnJlcGxhY2UoL1xcLyQvLCAnJyl9L2hlYWx0aGA7XG4gICAgICBpZiAoIWlzVmFsaWRIdHRwVXJsKHVybCkpIHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgIGBcXG5XQVJOSU5HLCBVbmFibGUgdG8gY29ubmVjdCB0byAnJHtQYXJzZS5zZXJ2ZXJVUkx9JyBhcyB0aGUgVVJMIGlzIGludmFsaWQuYCArXG4gICAgICAgICAgICBgIENsb3VkIGNvZGUgYW5kIHB1c2ggbm90aWZpY2F0aW9ucyBtYXkgYmUgdW5hdmFpbGFibGUhXFxuYFxuICAgICAgICApO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjb25zdCByZXF1ZXN0ID0gcmVxdWlyZSgnLi9yZXF1ZXN0Jyk7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHJlcXVlc3QoeyB1cmwgfSkuY2F0Y2gocmVzcG9uc2UgPT4gcmVzcG9uc2UpO1xuICAgICAgY29uc3QganNvbiA9IHJlc3BvbnNlLmRhdGEgfHwgbnVsbDtcbiAgICAgIGNvbnN0IHJldHJ5ID0gcmVzcG9uc2UuaGVhZGVycz8uWydyZXRyeS1hZnRlciddO1xuICAgICAgaWYgKHJldHJ5KSB7XG4gICAgICAgIGF3YWl0IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gc2V0VGltZW91dChyZXNvbHZlLCByZXRyeSAqIDEwMDApKTtcbiAgICAgICAgcmV0dXJuIHRoaXMudmVyaWZ5U2VydmVyVXJsKCk7XG4gICAgICB9XG4gICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzICE9PSAyMDAgfHwganNvbj8uc3RhdHVzICE9PSAnb2snKSB7XG4gICAgICAgIC8qIGVzbGludC1kaXNhYmxlIG5vLWNvbnNvbGUgKi9cbiAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgIGBcXG5XQVJOSU5HLCBVbmFibGUgdG8gY29ubmVjdCB0byAnJHtQYXJzZS5zZXJ2ZXJVUkx9Jy5gICtcbiAgICAgICAgICAgIGAgQ2xvdWQgY29kZSBhbmQgcHVzaCBub3RpZmljYXRpb25zIG1heSBiZSB1bmF2YWlsYWJsZSFcXG5gXG4gICAgICAgICk7XG4gICAgICAgIC8qIGVzbGludC1lbmFibGUgbm8tY29uc29sZSAqL1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gYWRkUGFyc2VDbG91ZCgpIHtcbiAgY29uc3QgUGFyc2VDbG91ZCA9IHJlcXVpcmUoJy4vY2xvdWQtY29kZS9QYXJzZS5DbG91ZCcpO1xuICBjb25zdCBQYXJzZVNlcnZlciA9IHJlcXVpcmUoJy4vY2xvdWQtY29kZS9QYXJzZS5TZXJ2ZXInKTtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFBhcnNlLCAnU2VydmVyJywge1xuICAgIGdldCgpIHtcbiAgICAgIGNvbnN0IGNvbmYgPSBDb25maWcuZ2V0KFBhcnNlLmFwcGxpY2F0aW9uSWQpO1xuICAgICAgcmV0dXJuIHsgLi4uY29uZiwgLi4uUGFyc2VTZXJ2ZXIgfTtcbiAgICB9LFxuICAgIHNldChuZXdWYWwpIHtcbiAgICAgIG5ld1ZhbC5hcHBJZCA9IFBhcnNlLmFwcGxpY2F0aW9uSWQ7XG4gICAgICBDb25maWcucHV0KG5ld1ZhbCk7XG4gICAgfSxcbiAgICBjb25maWd1cmFibGU6IHRydWUsXG4gIH0pO1xuICBPYmplY3QuYXNzaWduKFBhcnNlLkNsb3VkLCBQYXJzZUNsb3VkKTtcbiAgZ2xvYmFsLlBhcnNlID0gUGFyc2U7XG59XG5cbmZ1bmN0aW9uIGluamVjdERlZmF1bHRzKG9wdGlvbnM6IFBhcnNlU2VydmVyT3B0aW9ucykge1xuICBPYmplY3Qua2V5cyhkZWZhdWx0cykuZm9yRWFjaChrZXkgPT4ge1xuICAgIGlmICghT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9wdGlvbnMsIGtleSkpIHtcbiAgICAgIG9wdGlvbnNba2V5XSA9IGRlZmF1bHRzW2tleV07XG4gICAgfVxuICB9KTtcblxuICBpZiAoIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvcHRpb25zLCAnc2VydmVyVVJMJykpIHtcbiAgICBvcHRpb25zLnNlcnZlclVSTCA9IGBodHRwOi8vbG9jYWxob3N0OiR7b3B0aW9ucy5wb3J0fSR7b3B0aW9ucy5tb3VudFBhdGh9YDtcbiAgfVxuXG4gIC8vIFJlc2VydmVkIENoYXJhY3RlcnNcbiAgaWYgKG9wdGlvbnMuYXBwSWQpIHtcbiAgICBjb25zdCByZWdleCA9IC9bISMkJScoKSorJi86Oz0/QFtcXF17fV4sfDw+XS9nO1xuICAgIGlmIChvcHRpb25zLmFwcElkLm1hdGNoKHJlZ2V4KSkge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgYFxcbldBUk5JTkcsIGFwcElkIHRoYXQgY29udGFpbnMgc3BlY2lhbCBjaGFyYWN0ZXJzIGNhbiBjYXVzZSBpc3N1ZXMgd2hpbGUgdXNpbmcgd2l0aCB1cmxzLlxcbmBcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgLy8gQmFja3dhcmRzIGNvbXBhdGliaWxpdHlcbiAgaWYgKG9wdGlvbnMudXNlclNlbnNpdGl2ZUZpZWxkcykge1xuICAgIC8qIGVzbGludC1kaXNhYmxlIG5vLWNvbnNvbGUgKi9cbiAgICAhcHJvY2Vzcy5lbnYuVEVTVElORyAmJlxuICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICBgXFxuREVQUkVDQVRFRDogdXNlclNlbnNpdGl2ZUZpZWxkcyBoYXMgYmVlbiByZXBsYWNlZCBieSBwcm90ZWN0ZWRGaWVsZHMgYWxsb3dpbmcgdGhlIGFiaWxpdHkgdG8gcHJvdGVjdCBmaWVsZHMgaW4gYWxsIGNsYXNzZXMgd2l0aCBDTFAuIFxcbmBcbiAgICAgICk7XG4gICAgLyogZXNsaW50LWVuYWJsZSBuby1jb25zb2xlICovXG5cbiAgICBjb25zdCB1c2VyU2Vuc2l0aXZlRmllbGRzID0gQXJyYXkuZnJvbShcbiAgICAgIG5ldyBTZXQoWy4uLihkZWZhdWx0cy51c2VyU2Vuc2l0aXZlRmllbGRzIHx8IFtdKSwgLi4uKG9wdGlvbnMudXNlclNlbnNpdGl2ZUZpZWxkcyB8fCBbXSldKVxuICAgICk7XG5cbiAgICAvLyBJZiB0aGUgb3B0aW9ucy5wcm90ZWN0ZWRGaWVsZHMgaXMgdW5zZXQsXG4gICAgLy8gaXQnbGwgYmUgYXNzaWduZWQgdGhlIGRlZmF1bHQgYWJvdmUuXG4gICAgLy8gSGVyZSwgcHJvdGVjdCBhZ2FpbnN0IHRoZSBjYXNlIHdoZXJlIHByb3RlY3RlZEZpZWxkc1xuICAgIC8vIGlzIHNldCwgYnV0IGRvZXNuJ3QgaGF2ZSBfVXNlci5cbiAgICBpZiAoISgnX1VzZXInIGluIG9wdGlvbnMucHJvdGVjdGVkRmllbGRzKSkge1xuICAgICAgb3B0aW9ucy5wcm90ZWN0ZWRGaWVsZHMgPSBPYmplY3QuYXNzaWduKHsgX1VzZXI6IFtdIH0sIG9wdGlvbnMucHJvdGVjdGVkRmllbGRzKTtcbiAgICB9XG5cbiAgICBvcHRpb25zLnByb3RlY3RlZEZpZWxkc1snX1VzZXInXVsnKiddID0gQXJyYXkuZnJvbShcbiAgICAgIG5ldyBTZXQoWy4uLihvcHRpb25zLnByb3RlY3RlZEZpZWxkc1snX1VzZXInXVsnKiddIHx8IFtdKSwgLi4udXNlclNlbnNpdGl2ZUZpZWxkc10pXG4gICAgKTtcbiAgfVxuXG4gIC8vIE1lcmdlIHByb3RlY3RlZEZpZWxkcyBvcHRpb25zIHdpdGggZGVmYXVsdHMuXG4gIE9iamVjdC5rZXlzKGRlZmF1bHRzLnByb3RlY3RlZEZpZWxkcykuZm9yRWFjaChjID0+IHtcbiAgICBjb25zdCBjdXIgPSBvcHRpb25zLnByb3RlY3RlZEZpZWxkc1tjXTtcbiAgICBpZiAoIWN1cikge1xuICAgICAgb3B0aW9ucy5wcm90ZWN0ZWRGaWVsZHNbY10gPSBkZWZhdWx0cy5wcm90ZWN0ZWRGaWVsZHNbY107XG4gICAgfSBlbHNlIHtcbiAgICAgIE9iamVjdC5rZXlzKGRlZmF1bHRzLnByb3RlY3RlZEZpZWxkc1tjXSkuZm9yRWFjaChyID0+IHtcbiAgICAgICAgY29uc3QgdW5xID0gbmV3IFNldChbXG4gICAgICAgICAgLi4uKG9wdGlvbnMucHJvdGVjdGVkRmllbGRzW2NdW3JdIHx8IFtdKSxcbiAgICAgICAgICAuLi5kZWZhdWx0cy5wcm90ZWN0ZWRGaWVsZHNbY11bcl0sXG4gICAgICAgIF0pO1xuICAgICAgICBvcHRpb25zLnByb3RlY3RlZEZpZWxkc1tjXVtyXSA9IEFycmF5LmZyb20odW5xKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfSk7XG59XG5cbi8vIFRob3NlIGNhbid0IGJlIHRlc3RlZCBhcyBpdCByZXF1aXJlcyBhIHN1YnByb2Nlc3Ncbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5mdW5jdGlvbiBjb25maWd1cmVMaXN0ZW5lcnMocGFyc2VTZXJ2ZXIpIHtcbiAgY29uc3QgaGFuZGxlU2h1dGRvd24gPSBmdW5jdGlvbiAoKSB7XG4gICAgcHJvY2Vzcy5zdGRvdXQud3JpdGUoJ1Rlcm1pbmF0aW9uIHNpZ25hbCByZWNlaXZlZC4gU2h1dHRpbmcgZG93bi4nKTtcbiAgICBwYXJzZVNlcnZlci5oYW5kbGVTaHV0ZG93bigpO1xuICB9O1xuICBwcm9jZXNzLm9uKCdTSUdURVJNJywgaGFuZGxlU2h1dGRvd24pO1xuICBwcm9jZXNzLm9uKCdTSUdJTlQnLCBoYW5kbGVTaHV0ZG93bik7XG59XG5cbmV4cG9ydCBkZWZhdWx0IFBhcnNlU2VydmVyO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFXQSxJQUFBQSxTQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxPQUFBLEdBQUFDLHVCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBRyxPQUFBLEdBQUFKLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBSSxjQUFBLEdBQUFMLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBSyxrQkFBQSxHQUFBTixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQU0sZ0JBQUEsR0FBQU4sT0FBQTtBQUNBLElBQUFPLGNBQUEsR0FBQVAsT0FBQTtBQUNBLElBQUFRLGVBQUEsR0FBQVIsT0FBQTtBQUNBLElBQUFTLFlBQUEsR0FBQVQsT0FBQTtBQUNBLElBQUFVLGdCQUFBLEdBQUFWLE9BQUE7QUFDQSxJQUFBVyxtQkFBQSxHQUFBWCxPQUFBO0FBQ0EsSUFBQVksY0FBQSxHQUFBWixPQUFBO0FBQ0EsSUFBQWEsWUFBQSxHQUFBYixPQUFBO0FBQ0EsSUFBQWMs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
|
|
600
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZGVmYXVsdHMiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsImxvZ2dpbmciLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsIl9Db25maWciLCJfUHJvbWlzZVJvdXRlciIsIl9yZXF1aXJlZFBhcmFtZXRlciIsIl9BbmFseXRpY3NSb3V0ZXIiLCJfQ2xhc3Nlc1JvdXRlciIsIl9GZWF0dXJlc1JvdXRlciIsIl9GaWxlc1JvdXRlciIsIl9GdW5jdGlvbnNSb3V0ZXIiLCJfR2xvYmFsQ29uZmlnUm91dGVyIiwiX0dyYXBoUUxSb3V0ZXIiLCJfSG9va3NSb3V0ZXIiLCJfSUFQVmFsaWRhdGlvblJvdXRlciIsIl9JbnN0YWxsYXRpb25zUm91dGVyIiwiX0xvZ3NSb3V0ZXIiLCJfUGFyc2VMaXZlUXVlcnlTZXJ2ZXIiLCJfUGFnZXNSb3V0ZXIiLCJfUHVibGljQVBJUm91dGVyIiwiX1B1c2hSb3V0ZXIiLCJfQ2xvdWRDb2RlUm91dGVyIiwiX1JvbGVzUm91dGVyIiwiX1NjaGVtYXNSb3V0ZXIiLCJfU2Vzc2lvbnNSb3V0ZXIiLCJfVXNlcnNSb3V0ZXIiLCJfUHVyZ2VSb3V0ZXIiLCJfQXVkaWVuY2VzUm91dGVyIiwiX0FnZ3JlZ2F0ZVJvdXRlciIsIl9QYXJzZVNlcnZlclJFU1RDb250cm9sbGVyIiwiY29udHJvbGxlcnMiLCJfUGFyc2VHcmFwaFFMU2VydmVyIiwiX1NlY3VyaXR5Um91dGVyIiwiX0NoZWNrUnVubmVyIiwiX0RlcHJlY2F0b3IiLCJfRGVmaW5lZFNjaGVtYXMiLCJfRGVmaW5pdGlvbnMiLCJfVGVzdFV0aWxzIiwiZSIsInQiLCJXZWFrTWFwIiwiciIsIm4iLCJfX2VzTW9kdWxlIiwibyIsImkiLCJmIiwiX19wcm90b19fIiwiZGVmYXVsdCIsImhhcyIsImdldCIsInNldCIsImhhc093blByb3BlcnR5IiwiY2FsbCIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiYmF0Y2giLCJleHByZXNzIiwibWlkZGxld2FyZXMiLCJQYXJzZSIsInBhcnNlIiwicGF0aCIsImZzIiwiYWRkUGFyc2VDbG91ZCIsImNvbm5lY3Rpb25zIiwiQ29ubmVjdGlvbnMiLCJQYXJzZVNlcnZlciIsImNvbnN0cnVjdG9yIiwib3B0aW9ucyIsIkRlcHJlY2F0b3IiLCJzY2FuUGFyc2VTZXJ2ZXJPcHRpb25zIiwiaW50ZXJmYWNlcyIsIkpTT04iLCJzdHJpbmdpZnkiLCJPcHRpb25zRGVmaW5pdGlvbnMiLCJnZXRWYWxpZE9iamVjdCIsInJvb3QiLCJyZXN1bHQiLCJrZXkiLCJwcm90b3R5cGUiLCJ0eXBlIiwiZW5kc1dpdGgiLCJzbGljZSIsIm9wdGlvbnNCbHVlcHJpbnQiLCJ2YWxpZGF0ZUtleU5hbWVzIiwib3JpZ2luYWwiLCJyZWYiLCJuYW1lIiwicHJlZml4IiwicHVzaCIsInJlcyIsIkFycmF5IiwiaXNBcnJheSIsImZvckVhY2giLCJpdGVtIiwiaWR4IiwiY29uY2F0IiwiZGlmZiIsImxlbmd0aCIsImxvZ2dlciIsImVycm9yIiwiam9pbiIsImluamVjdERlZmF1bHRzIiwiYXBwSWQiLCJyZXF1aXJlZFBhcmFtZXRlciIsIm1hc3RlcktleSIsImphdmFzY3JpcHRLZXkiLCJzZXJ2ZXJVUkwiLCJpbml0aWFsaXplIiwiQ29uZmlnIiwidmFsaWRhdGVPcHRpb25zIiwiYWxsQ29udHJvbGxlcnMiLCJnZXRDb250cm9sbGVycyIsInN0YXRlIiwiY29uZmlnIiwicHV0IiwiYXNzaWduIiwibWFzdGVyS2V5SXBzU3RvcmUiLCJNYXAiLCJtYWludGVuYW5jZUtleUlwc1N0b3JlIiwic2V0TG9nZ2VyIiwibG9nZ2VyQ29udHJvbGxlciIsInN0YXJ0IiwiZGF0YWJhc2VDb250cm9sbGVyIiwiaG9va3NDb250cm9sbGVyIiwiY2FjaGVDb250cm9sbGVyIiwiY2xvdWQiLCJzZWN1cml0eSIsInNjaGVtYSIsImxpdmVRdWVyeUNvbnRyb2xsZXIiLCJwZXJmb3JtSW5pdGlhbGl6YXRpb24iLCJjb2RlIiwiRXJyb3IiLCJEVVBMSUNBVEVfVkFMVUUiLCJwdXNoQ29udHJvbGxlciIsImdldFB1c2hDb250cm9sbGVyIiwibG9hZCIsInN0YXJ0dXBQcm9taXNlcyIsImxvYWRNYXN0ZXJLZXkiLCJEZWZpbmVkU2NoZW1hcyIsImV4ZWN1dGUiLCJhZGFwdGVyIiwiY29ubmVjdCIsIlByb21pc2UiLCJhbGwiLCJyZXNvbHZlIiwianNvbiIsInByb2Nlc3MiLCJlbnYiLCJucG1fcGFja2FnZV9qc29uIiwibnBtX3BhY2thZ2VfdHlwZSIsImN3ZCIsInNldFRpbWVvdXQiLCJlbmFibGVDaGVjayIsImVuYWJsZUNoZWNrTG9nIiwiQ2hlY2tSdW5uZXIiLCJydW4iLCJjb25zb2xlIiwiYXBwIiwiX2FwcCIsImhhbmRsZVNodXRkb3duIiwic2VydmVyQ2xvc2VQcm9taXNlIiwicmVzb2x2aW5nUHJvbWlzZSIsImxpdmVRdWVyeVNlcnZlckNsb3NlUHJvbWlzZSIsInByb21pc2VzIiwic2VydmVyIiwiY2xvc2UiLCJsaXZlUXVlcnlTZXJ2ZXIiLCJkYXRhYmFzZUFkYXB0ZXIiLCJmaWxlQWRhcHRlciIsImZpbGVzQ29udHJvbGxlciIsImNhY2hlQWRhcHRlciIsInNodXRkb3duIiwiZGVzdHJveUFsbCIsInNlcnZlckNsb3NlQ29tcGxldGUiLCJtYXhVcGxvYWRTaXplIiwiZGlyZWN0QWNjZXNzIiwicGFnZXMiLCJyYXRlTGltaXQiLCJhcGkiLCJ1c2UiLCJhbGxvd0Nyb3NzRG9tYWluIiwiYWxsb3dEb3VibGVGb3J3YXJkU2xhc2giLCJGaWxlc1JvdXRlciIsImV4cHJlc3NSb3V0ZXIiLCJyZXEiLCJzdGF0dXMiLCJ1cmxlbmNvZGVkIiwiZXh0ZW5kZWQiLCJlbmFibGVSb3V0ZXIiLCJQYWdlc1JvdXRlciIsIlB1YmxpY0FQSVJvdXRlciIsImxpbWl0IiwiYWxsb3dNZXRob2RPdmVycmlkZSIsImhhbmRsZVBhcnNlSGVhZGVycyIsInJvdXRlcyIsInJvdXRlIiwiYWRkUmF0ZUxpbWl0IiwiaGFuZGxlUGFyc2VTZXNzaW9uIiwiYXBwUm91dGVyIiwicHJvbWlzZVJvdXRlciIsImhhbmRsZVBhcnNlRXJyb3JzIiwiVEVTVElORyIsIm9uIiwiZXJyIiwic3RkZXJyIiwid3JpdGUiLCJwb3J0IiwiZXhpdCIsIm1lc3NhZ2UiLCJzdGFjayIsInZlcmlmeVNlcnZlclVybCIsIlBBUlNFX1NFUlZFUl9FTkFCTEVfRVhQRVJJTUVOVEFMX0RJUkVDVF9BQ0NFU1MiLCJDb3JlTWFuYWdlciIsInNldFJFU1RDb250cm9sbGVyIiwiUGFyc2VTZXJ2ZXJSRVNUQ29udHJvbGxlciIsInJvdXRlcnMiLCJDbGFzc2VzUm91dGVyIiwiVXNlcnNSb3V0ZXIiLCJTZXNzaW9uc1JvdXRlciIsIlJvbGVzUm91dGVyIiwiQW5hbHl0aWNzUm91dGVyIiwiSW5zdGFsbGF0aW9uc1JvdXRlciIsIkZ1bmN0aW9uc1JvdXRlciIsIlNjaGVtYXNSb3V0ZXIiLCJQdXNoUm91dGVyIiwiTG9nc1JvdXRlciIsIklBUFZhbGlkYXRpb25Sb3V0ZXIiLCJGZWF0dXJlc1JvdXRlciIsIkdsb2JhbENvbmZpZ1JvdXRlciIsIkdyYXBoUUxSb3V0ZXIiLCJQdXJnZVJvdXRlciIsIkhvb2tzUm91dGVyIiwiQ2xvdWRDb2RlUm91dGVyIiwiQXVkaWVuY2VzUm91dGVyIiwiQWdncmVnYXRlUm91dGVyIiwiU2VjdXJpdHlSb3V0ZXIiLCJyZWR1Y2UiLCJtZW1vIiwicm91dGVyIiwiUHJvbWlzZVJvdXRlciIsIm1vdW50T250byIsInN0YXJ0QXBwIiwibWlkZGxld2FyZSIsIm1vdW50UGF0aCIsIm1vdW50R3JhcGhRTCIsIm1vdW50UGxheWdyb3VuZCIsImdyYXBoUUxDdXN0b21UeXBlRGVmcyIsInVuZGVmaW5lZCIsImdyYXBoUUxTY2hlbWEiLCJyZWFkRmlsZVN5bmMiLCJwYXJzZUdyYXBoUUxTZXJ2ZXIiLCJQYXJzZUdyYXBoUUxTZXJ2ZXIiLCJncmFwaFFMUGF0aCIsInBsYXlncm91bmRQYXRoIiwiYXBwbHlHcmFwaFFMIiwiYXBwbHlQbGF5Z3JvdW5kIiwibGlzdGVuIiwiaG9zdCIsInRyYWNrIiwic3RhcnRMaXZlUXVlcnlTZXJ2ZXIiLCJsaXZlUXVlcnlTZXJ2ZXJPcHRpb25zIiwiY3JlYXRlTGl2ZVF1ZXJ5U2VydmVyIiwidHJ1c3RQcm94eSIsImNvbmZpZ3VyZUxpc3RlbmVycyIsImV4cHJlc3NBcHAiLCJwYXJzZVNlcnZlciIsImh0dHBTZXJ2ZXIiLCJjcmVhdGVTZXJ2ZXIiLCJQYXJzZUxpdmVRdWVyeVNlcnZlciIsImlzVmFsaWRIdHRwVXJsIiwic3RyaW5nIiwidXJsIiwiVVJMIiwiXyIsInByb3RvY29sIiwicmVwbGFjZSIsIndhcm4iLCJyZXF1ZXN0IiwicmVzcG9uc2UiLCJjYXRjaCIsImRhdGEiLCJyZXRyeSIsImhlYWRlcnMiLCJQYXJzZUNsb3VkIiwiY29uZiIsImFwcGxpY2F0aW9uSWQiLCJuZXdWYWwiLCJjb25maWd1cmFibGUiLCJDbG91ZCIsImdsb2JhbCIsImtleXMiLCJkZWZhdWx0cyIsInJlZ2V4IiwibWF0Y2giLCJ1c2VyU2Vuc2l0aXZlRmllbGRzIiwiZnJvbSIsIlNldCIsInByb3RlY3RlZEZpZWxkcyIsIl9Vc2VyIiwiYyIsImN1ciIsInVucSIsInN0ZG91dCIsIl9kZWZhdWx0IiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uL3NyYy9QYXJzZVNlcnZlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBQYXJzZVNlcnZlciAtIG9wZW4tc291cmNlIGNvbXBhdGlibGUgQVBJIFNlcnZlciBmb3IgUGFyc2UgYXBwc1xuXG52YXIgYmF0Y2ggPSByZXF1aXJlKCcuL2JhdGNoJyksXG4gIGV4cHJlc3MgPSByZXF1aXJlKCdleHByZXNzJyksXG4gIG1pZGRsZXdhcmVzID0gcmVxdWlyZSgnLi9taWRkbGV3YXJlcycpLFxuICBQYXJzZSA9IHJlcXVpcmUoJ3BhcnNlL25vZGUnKS5QYXJzZSxcbiAgeyBwYXJzZSB9ID0gcmVxdWlyZSgnZ3JhcGhxbCcpLFxuICBwYXRoID0gcmVxdWlyZSgncGF0aCcpLFxuICBmcyA9IHJlcXVpcmUoJ2ZzJyk7XG5cbmltcG9ydCB7IFBhcnNlU2VydmVyT3B0aW9ucywgTGl2ZVF1ZXJ5U2VydmVyT3B0aW9ucyB9IGZyb20gJy4vT3B0aW9ucyc7XG5pbXBvcnQgZGVmYXVsdHMgZnJvbSAnLi9kZWZhdWx0cyc7XG5pbXBvcnQgKiBhcyBsb2dnaW5nIGZyb20gJy4vbG9nZ2VyJztcbmltcG9ydCBDb25maWcgZnJvbSAnLi9Db25maWcnO1xuaW1wb3J0IFByb21pc2VSb3V0ZXIgZnJvbSAnLi9Qcm9taXNlUm91dGVyJztcbmltcG9ydCByZXF1aXJlZFBhcmFtZXRlciBmcm9tICcuL3JlcXVpcmVkUGFyYW1ldGVyJztcbmltcG9ydCB7IEFuYWx5dGljc1JvdXRlciB9IGZyb20gJy4vUm91dGVycy9BbmFseXRpY3NSb3V0ZXInO1xuaW1wb3J0IHsgQ2xhc3Nlc1JvdXRlciB9IGZyb20gJy4vUm91dGVycy9DbGFzc2VzUm91dGVyJztcbmltcG9ydCB7IEZlYXR1cmVzUm91dGVyIH0gZnJvbSAnLi9Sb3V0ZXJzL0ZlYXR1cmVzUm91dGVyJztcbmltcG9ydCB7IEZpbGVzUm91dGVyIH0gZnJvbSAnLi9Sb3V0ZXJzL0ZpbGVzUm91dGVyJztcbmltcG9ydCB7IEZ1bmN0aW9uc1JvdXRlciB9IGZyb20gJy4vUm91dGVycy9GdW5jdGlvbnNSb3V0ZXInO1xuaW1wb3J0IHsgR2xvYmFsQ29uZmlnUm91dGVyIH0gZnJvbSAnLi9Sb3V0ZXJzL0dsb2JhbENvbmZpZ1JvdXRlcic7XG5pbXBvcnQgeyBHcmFwaFFMUm91dGVyIH0gZnJvbSAnLi9Sb3V0ZXJzL0dyYXBoUUxSb3V0ZXInO1xuaW1wb3J0IHsgSG9va3NSb3V0ZXIgfSBmcm9tICcuL1JvdXRlcnMvSG9va3NSb3V0ZXInO1xuaW1wb3J0IHsgSUFQVmFsaWRhdGlvblJvdXRlciB9IGZyb20gJy4vUm91dGVycy9JQVBWYWxpZGF0aW9uUm91dGVyJztcbmltcG9ydCB7IEluc3RhbGxhdGlvbnNSb3V0ZXIgfSBmcm9tICcuL1JvdXRlcnMvSW5zdGFsbGF0aW9uc1JvdXRlcic7XG5pbXBvcnQgeyBMb2dzUm91dGVyIH0gZnJvbSAnLi9Sb3V0ZXJzL0xvZ3NSb3V0ZXInO1xuaW1wb3J0IHsgUGFyc2VMaXZlUXVlcnlTZXJ2ZXIgfSBmcm9tICcuL0xpdmVRdWVyeS9QYXJzZUxpdmVRdWVyeVNlcnZlcic7XG5pbXBvcnQgeyBQYWdlc1JvdXRlciB9IGZyb20gJy4vUm91dGVycy9QYWdlc1JvdXRlcic7XG5pbXBvcnQgeyBQdWJsaWNBUElSb3V0ZXIgfSBmcm9tICcuL1JvdXRlcnMvUHVibGljQVBJUm91dGVyJztcbmltcG9ydCB7IFB1c2hSb3V0ZXIgfSBmcm9tICcuL1JvdXRlcnMvUHVzaFJvdXRlcic7XG5pbXBvcnQgeyBDbG91ZENvZGVSb3V0ZXIgfSBmcm9tICcuL1JvdXRlcnMvQ2xvdWRDb2RlUm91dGVyJztcbmltcG9ydCB7IFJvbGVzUm91dGVyIH0gZnJvbSAnLi9Sb3V0ZXJzL1JvbGVzUm91dGVyJztcbmltcG9ydCB7IFNjaGVtYXNSb3V0ZXIgfSBmcm9tICcuL1JvdXRlcnMvU2NoZW1hc1JvdXRlcic7XG5pbXBvcnQgeyBTZXNzaW9uc1JvdXRlciB9IGZyb20gJy4vUm91dGVycy9TZXNzaW9uc1JvdXRlcic7XG5pbXBvcnQgeyBVc2Vyc1JvdXRlciB9IGZyb20gJy4vUm91dGVycy9Vc2Vyc1JvdXRlcic7XG5pbXBvcnQgeyBQdXJnZVJvdXRlciB9IGZyb20gJy4vUm91dGVycy9QdXJnZVJvdXRlcic7XG5pbXBvcnQgeyBBdWRpZW5jZXNSb3V0ZXIgfSBmcm9tICcuL1JvdXRlcnMvQXVkaWVuY2VzUm91dGVyJztcbmltcG9ydCB7IEFnZ3JlZ2F0ZVJvdXRlciB9IGZyb20gJy4vUm91dGVycy9BZ2dyZWdhdGVSb3V0ZXInO1xuaW1wb3J0IHsgUGFyc2VTZXJ2ZXJSRVNUQ29udHJvbGxlciB9IGZyb20gJy4vUGFyc2VTZXJ2ZXJSRVNUQ29udHJvbGxlcic7XG5pbXBvcnQgKiBhcyBjb250cm9sbGVycyBmcm9tICcuL0NvbnRyb2xsZXJzJztcbmltcG9ydCB7IFBhcnNlR3JhcGhRTFNlcnZlciB9IGZyb20gJy4vR3JhcGhRTC9QYXJzZUdyYXBoUUxTZXJ2ZXInO1xuaW1wb3J0IHsgU2VjdXJpdHlSb3V0ZXIgfSBmcm9tICcuL1JvdXRlcnMvU2VjdXJpdHlSb3V0ZXInO1xuaW1wb3J0IENoZWNrUnVubmVyIGZyb20gJy4vU2VjdXJpdHkvQ2hlY2tSdW5uZXInO1xuaW1wb3J0IERlcHJlY2F0b3IgZnJvbSAnLi9EZXByZWNhdG9yL0RlcHJlY2F0b3InO1xuaW1wb3J0IHsgRGVmaW5lZFNjaGVtYXMgfSBmcm9tICcuL1NjaGVtYU1pZ3JhdGlvbnMvRGVmaW5lZFNjaGVtYXMnO1xuaW1wb3J0IE9wdGlvbnNEZWZpbml0aW9ucyBmcm9tICcuL09wdGlvbnMvRGVmaW5pdGlvbnMnO1xuaW1wb3J0IHsgcmVzb2x2aW5nUHJvbWlzZSwgQ29ubmVjdGlvbnMgfSBmcm9tICcuL1Rlc3RVdGlscyc7XG5cbi8vIE11dGF0ZSB0aGUgUGFyc2Ugb2JqZWN0IHRvIGFkZCB0aGUgQ2xvdWQgQ29kZSBoYW5kbGVyc1xuYWRkUGFyc2VDbG91ZCgpO1xuXG4vLyBUcmFjayBjb25uZWN0aW9ucyB0byBkZXN0cm95IHRoZW0gb24gc2h1dGRvd25cbmNvbnN0IGNvbm5lY3Rpb25zID0gbmV3IENvbm5lY3Rpb25zKCk7XG5cbi8vIFBhcnNlU2VydmVyIHdvcmtzIGxpa2UgYSBjb25zdHJ1Y3RvciBvZiBhbiBleHByZXNzIGFwcC5cbi8vIGh0dHBzOi8vcGFyc2VwbGF0Zm9ybS5vcmcvcGFyc2Utc2VydmVyL2FwaS9tYXN0ZXIvUGFyc2VTZXJ2ZXJPcHRpb25zLmh0bWxcbmNsYXNzIFBhcnNlU2VydmVyIHtcbiAgX2FwcDogYW55O1xuICBjb25maWc6IGFueTtcbiAgc2VydmVyOiBhbnk7XG4gIGV4cHJlc3NBcHA6IGFueTtcbiAgbGl2ZVF1ZXJ5U2VydmVyOiBhbnk7XG4gIC8qKlxuICAgKiBAY29uc3RydWN0b3JcbiAgICogQHBhcmFtIHtQYXJzZVNlcnZlck9wdGlvbnN9IG9wdGlvbnMgdGhlIHBhcnNlIHNlcnZlciBpbml0aWFsaXphdGlvbiBvcHRpb25zXG4gICAqL1xuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBQYXJzZVNlcnZlck9wdGlvbnMpIHtcbiAgICAvLyBTY2FuIGZvciBkZXByZWNhdGVkIFBhcnNlIFNlcnZlciBvcHRpb25zXG4gICAgRGVwcmVjYXRvci5zY2FuUGFyc2VTZXJ2ZXJPcHRpb25zKG9wdGlvbnMpO1xuXG4gICAgY29uc3QgaW50ZXJmYWNlcyA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoT3B0aW9uc0RlZmluaXRpb25zKSk7XG5cbiAgICBmdW5jdGlvbiBnZXRWYWxpZE9iamVjdChyb290KSB7XG4gICAgICBjb25zdCByZXN1bHQgPSB7fTtcbiAgICAgIGZvciAoY29uc3Qga2V5IGluIHJvb3QpIHtcbiAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChyb290W2tleV0sICd0eXBlJykpIHtcbiAgICAgICAgICBpZiAocm9vdFtrZXldLnR5cGUuZW5kc1dpdGgoJ1tdJykpIHtcbiAgICAgICAgICAgIHJlc3VsdFtrZXldID0gW2dldFZhbGlkT2JqZWN0KGludGVyZmFjZXNbcm9vdFtrZXldLnR5cGUuc2xpY2UoMCwgLTIpXSldO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXN1bHRba2V5XSA9IGdldFZhbGlkT2JqZWN0KGludGVyZmFjZXNbcm9vdFtrZXldLnR5cGVdKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVzdWx0W2tleV0gPSAnJztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBjb25zdCBvcHRpb25zQmx1ZXByaW50ID0gZ2V0VmFsaWRPYmplY3QoaW50ZXJmYWNlc1snUGFyc2VTZXJ2ZXJPcHRpb25zJ10pO1xuXG4gICAgZnVuY3Rpb24gdmFsaWRhdGVLZXlOYW1lcyhvcmlnaW5hbCwgcmVmLCBuYW1lID0gJycpIHtcbiAgICAgIGxldCByZXN1bHQgPSBbXTtcbiAgICAgIGNvbnN0IHByZWZpeCA9IG5hbWUgKyAobmFtZSAhPT0gJycgPyAnLicgOiAnJyk7XG4gICAgICBmb3IgKGNvbnN0IGtleSBpbiBvcmlnaW5hbCkge1xuICAgICAgICBpZiAoIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChyZWYsIGtleSkpIHtcbiAgICAgICAgICByZXN1bHQucHVzaChwcmVmaXggKyBrZXkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmIChyZWZba2V5XSA9PT0gJycpIHsgY29udGludWU7IH1cbiAgICAgICAgICBsZXQgcmVzID0gW107XG4gICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkob3JpZ2luYWxba2V5XSkgJiYgQXJyYXkuaXNBcnJheShyZWZba2V5XSkpIHtcbiAgICAgICAgICAgIGNvbnN0IHR5cGUgPSByZWZba2V5XVswXTtcbiAgICAgICAgICAgIG9yaWdpbmFsW2tleV0uZm9yRWFjaCgoaXRlbSwgaWR4KSA9PiB7XG4gICAgICAgICAgICAgIGlmICh0eXBlb2YgaXRlbSA9PT0gJ29iamVjdCcgJiYgaXRlbSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHJlcyA9IHJlcy5jb25jYXQodmFsaWRhdGVLZXlOYW1lcyhpdGVtLCB0eXBlLCBwcmVmaXggKyBrZXkgKyBgWyR7aWR4fV1gKSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIG9yaWdpbmFsW2tleV0gPT09ICdvYmplY3QnICYmIHR5cGVvZiByZWZba2V5XSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlS2V5TmFtZXMob3JpZ2luYWxba2V5XSwgcmVmW2tleV0sIHByZWZpeCArIGtleSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdC5jb25jYXQocmVzKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBjb25zdCBkaWZmID0gdmFsaWRhdGVLZXlOYW1lcyhvcHRpb25zLCBvcHRpb25zQmx1ZXByaW50KTtcbiAgICBpZiAoZGlmZi5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBsb2dnZXIgPSAobG9nZ2luZyBhcyBhbnkpLmxvZ2dlcjtcbiAgICAgIGxvZ2dlci5lcnJvcihgSW52YWxpZCBrZXkocykgZm91bmQgaW4gUGFyc2UgU2VydmVyIGNvbmZpZ3VyYXRpb246ICR7ZGlmZi5qb2luKCcsICcpfWApO1xuICAgIH1cblxuICAgIC8vIFNldCBvcHRpb24gZGVmYXVsdHNcbiAgICBpbmplY3REZWZhdWx0cyhvcHRpb25zKTtcbiAgICBjb25zdCB7XG4gICAgICBhcHBJZCA9IHJlcXVpcmVkUGFyYW1ldGVyKCdZb3UgbXVzdCBwcm92aWRlIGFuIGFwcElkIScpLFxuICAgICAgbWFzdGVyS2V5ID0gcmVxdWlyZWRQYXJhbWV0ZXIoJ1lvdSBtdXN0IHByb3ZpZGUgYSBtYXN0ZXJLZXkhJyksXG4gICAgICBqYXZhc2NyaXB0S2V5LFxuICAgICAgc2VydmVyVVJMID0gcmVxdWlyZWRQYXJhbWV0ZXIoJ1lvdSBtdXN0IHByb3ZpZGUgYSBzZXJ2ZXJVUkwhJyksXG4gICAgfSA9IG9wdGlvbnM7XG4gICAgLy8gSW5pdGlhbGl6ZSB0aGUgbm9kZSBjbGllbnQgU0RLIGF1dG9tYXRpY2FsbHlcbiAgICBQYXJzZS5pbml0aWFsaXplKGFwcElkLCBqYXZhc2NyaXB0S2V5IHx8ICd1bnVzZWQnLCBtYXN0ZXJLZXkpO1xuICAgIFBhcnNlLnNlcnZlclVSTCA9IHNlcnZlclVSTDtcbiAgICBDb25maWcudmFsaWRhdGVPcHRpb25zKG9wdGlvbnMpO1xuICAgIGNvbnN0IGFsbENvbnRyb2xsZXJzID0gY29udHJvbGxlcnMuZ2V0Q29udHJvbGxlcnMob3B0aW9ucyk7XG5cbiAgICAob3B0aW9ucyBhcyBhbnkpLnN0YXRlID0gJ2luaXRpYWxpemVkJztcbiAgICB0aGlzLmNvbmZpZyA9IENvbmZpZy5wdXQoT2JqZWN0LmFzc2lnbih7fSwgb3B0aW9ucywgYWxsQ29udHJvbGxlcnMpKTtcbiAgICB0aGlzLmNvbmZpZy5tYXN0ZXJLZXlJcHNTdG9yZSA9IG5ldyBNYXAoKTtcbiAgICB0aGlzLmNvbmZpZy5tYWludGVuYW5jZUtleUlwc1N0b3JlID0gbmV3IE1hcCgpO1xuICAgIGxvZ2dpbmcuc2V0TG9nZ2VyKGFsbENvbnRyb2xsZXJzLmxvZ2dlckNvbnRyb2xsZXIpO1xuICB9XG5cbiAgLyoqXG4gICAqIFN0YXJ0cyBQYXJzZSBTZXJ2ZXIgYXMgYW4gZXhwcmVzcyBhcHA7IHRoaXMgcHJvbWlzZSByZXNvbHZlcyB3aGVuIFBhcnNlIFNlcnZlciBpcyByZWFkeSB0byBhY2NlcHQgcmVxdWVzdHMuXG4gICAqL1xuXG4gIGFzeW5jIHN0YXJ0KCk6IFByb21pc2U8dGhpcz4ge1xuICAgIHRyeSB7XG4gICAgICBpZiAodGhpcy5jb25maWcuc3RhdGUgPT09ICdvaycpIHtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICB9XG4gICAgICB0aGlzLmNvbmZpZy5zdGF0ZSA9ICdzdGFydGluZyc7XG4gICAgICBDb25maWcucHV0KHRoaXMuY29uZmlnKTtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgZGF0YWJhc2VDb250cm9sbGVyLFxuICAgICAgICBob29rc0NvbnRyb2xsZXIsXG4gICAgICAgIGNhY2hlQ29udHJvbGxlcixcbiAgICAgICAgY2xvdWQsXG4gICAgICAgIHNlY3VyaXR5LFxuICAgICAgICBzY2hlbWEsXG4gICAgICAgIGxpdmVRdWVyeUNvbnRyb2xsZXIsXG4gICAgICB9ID0gdGhpcy5jb25maWc7XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCBkYXRhYmFzZUNvbnRyb2xsZXIucGVyZm9ybUluaXRpYWxpemF0aW9uKCk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGlmIChlLmNvZGUgIT09IFBhcnNlLkVycm9yLkRVUExJQ0FURV9WQUxVRSkge1xuICAgICAgICAgIHRocm93IGU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGNvbnN0IHB1c2hDb250cm9sbGVyID0gYXdhaXQgY29udHJvbGxlcnMuZ2V0UHVzaENvbnRyb2xsZXIodGhpcy5jb25maWcpO1xuICAgICAgYXdhaXQgaG9va3NDb250cm9sbGVyLmxvYWQoKTtcbiAgICAgIGNvbnN0IHN0YXJ0dXBQcm9taXNlcyA9IFt0aGlzLmNvbmZpZy5sb2FkTWFzdGVyS2V5Py4oKV07XG4gICAgICBpZiAoc2NoZW1hKSB7XG4gICAgICAgIHN0YXJ0dXBQcm9taXNlcy5wdXNoKG5ldyBEZWZpbmVkU2NoZW1hcyhzY2hlbWEsIHRoaXMuY29uZmlnKS5leGVjdXRlKCkpO1xuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICBjYWNoZUNvbnRyb2xsZXIuYWRhcHRlcj8uY29ubmVjdCAmJlxuICAgICAgICB0eXBlb2YgY2FjaGVDb250cm9sbGVyLmFkYXB0ZXIuY29ubmVjdCA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgKSB7XG4gICAgICAgIHN0YXJ0dXBQcm9taXNlcy5wdXNoKGNhY2hlQ29udHJvbGxlci5hZGFwdGVyLmNvbm5lY3QoKSk7XG4gICAgICB9XG4gICAgICBzdGFydHVwUHJvbWlzZXMucHVzaChsaXZlUXVlcnlDb250cm9sbGVyLmNvbm5lY3QoKSk7XG4gICAgICBhd2FpdCBQcm9taXNlLmFsbChzdGFydHVwUHJvbWlzZXMpO1xuICAgICAgaWYgKGNsb3VkKSB7XG4gICAgICAgIGFkZFBhcnNlQ2xvdWQoKTtcbiAgICAgICAgaWYgKHR5cGVvZiBjbG91ZCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgIGF3YWl0IFByb21pc2UucmVzb2x2ZShjbG91ZChQYXJzZSkpO1xuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBjbG91ZCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICBsZXQganNvbjtcbiAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYubnBtX3BhY2thZ2VfanNvbikge1xuICAgICAgICAgICAganNvbiA9IHJlcXVpcmUocHJvY2Vzcy5lbnYubnBtX3BhY2thZ2VfanNvbik7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5ucG1fcGFja2FnZV90eXBlID09PSAnbW9kdWxlJyB8fCBqc29uPy50eXBlID09PSAnbW9kdWxlJykge1xuICAgICAgICAgICAgYXdhaXQgaW1wb3J0KHBhdGgucmVzb2x2ZShwcm9jZXNzLmN3ZCgpLCBjbG91ZCkpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXF1aXJlKHBhdGgucmVzb2x2ZShwcm9jZXNzLmN3ZCgpLCBjbG91ZCkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aHJvdyBcImFyZ3VtZW50ICdjbG91ZCcgbXVzdCBlaXRoZXIgYmUgYSBzdHJpbmcgb3IgYSBmdW5jdGlvblwiO1xuICAgICAgICB9XG4gICAgICAgIGF3YWl0IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gc2V0VGltZW91dChyZXNvbHZlLCAxMCkpO1xuICAgICAgfVxuICAgICAgaWYgKHNlY3VyaXR5ICYmIHNlY3VyaXR5LmVuYWJsZUNoZWNrICYmIHNlY3VyaXR5LmVuYWJsZUNoZWNrTG9nKSB7XG4gICAgICAgIG5ldyBDaGVja1J1bm5lcihzZWN1cml0eSkucnVuKCk7XG4gICAgICB9XG4gICAgICB0aGlzLmNvbmZpZy5zdGF0ZSA9ICdvayc7XG4gICAgICB0aGlzLmNvbmZpZyA9IHsgLi4udGhpcy5jb25maWcsIC4uLnB1c2hDb250cm9sbGVyIH07XG4gICAgICBDb25maWcucHV0KHRoaXMuY29uZmlnKTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gICAgICB0aGlzLmNvbmZpZy5zdGF0ZSA9ICdlcnJvcic7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG4gIH1cblxuICBnZXQgYXBwKCkge1xuICAgIGlmICghdGhpcy5fYXBwKSB7XG4gICAgICB0aGlzLl9hcHAgPSBQYXJzZVNlcnZlci5hcHAodGhpcy5jb25maWcpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fYXBwO1xuICB9XG5cbiAgLyoqXG4gICAqIFN0b3BzIHRoZSBwYXJzZSBzZXJ2ZXIsIGNhbmNlbHMgYW55IG9uZ29pbmcgcmVxdWVzdHMgYW5kIGNsb3NlcyBhbGwgY29ubmVjdGlvbnMuXG4gICAqXG4gICAqIEN1cnJlbnRseSwgZXhwcmVzcyBkb2Vzbid0IHNodXQgZG93biBpbW1lZGlhdGVseSBhZnRlciByZWNlaXZpbmcgU0lHSU5UL1NJR1RFUk1cbiAgICogaWYgaXQgaGFzIGNsaWVudCBjb25uZWN0aW9ucyB0aGF0IGhhdmVuJ3QgdGltZWQgb3V0LlxuICAgKiAoVGhpcyBpcyBhIGtub3duIGlzc3VlIHdpdGggbm9kZSAtIGh0dHBzOi8vZ2l0aHViLmNvbS9ub2RlanMvbm9kZS9pc3N1ZXMvMjY0MilcbiAgICpcbiAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59IGEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGhlIHNlcnZlciBpcyBzdG9wcGVkXG4gICAqL1xuICBhc3luYyBoYW5kbGVTaHV0ZG93bigpIHtcbiAgICBjb25zdCBzZXJ2ZXJDbG9zZVByb21pc2UgPSByZXNvbHZpbmdQcm9taXNlKCk7XG4gICAgY29uc3QgbGl2ZVF1ZXJ5U2VydmVyQ2xvc2VQcm9taXNlID0gcmVzb2x2aW5nUHJvbWlzZSgpO1xuICAgIGNvbnN0IHByb21pc2VzID0gW107XG4gICAgdGhpcy5zZXJ2ZXIuY2xvc2UoKGVycm9yKSA9PiB7XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHdoaWxlIGNsb3NpbmcgcGFyc2Ugc2VydmVyJywgZXJyb3IpO1xuICAgICAgfVxuICAgICAgc2VydmVyQ2xvc2VQcm9taXNlLnJlc29sdmUoKTtcbiAgICB9KTtcbiAgICBpZiAodGhpcy5saXZlUXVlcnlTZXJ2ZXI/LnNlcnZlcj8uY2xvc2UgJiYgdGhpcy5saXZlUXVlcnlTZXJ2ZXIuc2VydmVyICE9PSB0aGlzLnNlcnZlcikge1xuICAgICAgdGhpcy5saXZlUXVlcnlTZXJ2ZXIuc2VydmVyLmNsb3NlKChlcnJvcikgPT4ge1xuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHdoaWxlIGNsb3NpbmcgbGl2ZSBxdWVyeSBzZXJ2ZXInLCBlcnJvcik7XG4gICAgICAgIH1cbiAgICAgICAgbGl2ZVF1ZXJ5U2VydmVyQ2xvc2VQcm9taXNlLnJlc29sdmUoKTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBsaXZlUXVlcnlTZXJ2ZXJDbG9zZVByb21pc2UucmVzb2x2ZSgpO1xuICAgIH1cbiAgICBjb25zdCB7IGFkYXB0ZXI6IGRhdGFiYXNlQWRhcHRlciB9ID0gdGhpcy5jb25maWcuZGF0YWJhc2VDb250cm9sbGVyO1xuICAgIGlmIChkYXRhYmFzZUFkYXB0ZXIgJiYgdHlwZW9mIGRhdGFiYXNlQWRhcHRlci5oYW5kbGVTaHV0ZG93biA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcHJvbWlzZXMucHVzaChkYXRhYmFzZUFkYXB0ZXIuaGFuZGxlU2h1dGRvd24oKSk7XG4gICAgfVxuICAgIGNvbnN0IHsgYWRhcHRlcjogZmlsZUFkYXB0ZXIgfSA9IHRoaXMuY29uZmlnLmZpbGVzQ29udHJvbGxlcjtcbiAgICBpZiAoZmlsZUFkYXB0ZXIgJiYgdHlwZW9mIGZpbGVBZGFwdGVyLmhhbmRsZVNodXRkb3duID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBwcm9taXNlcy5wdXNoKGZpbGVBZGFwdGVyLmhhbmRsZVNodXRkb3duKCkpO1xuICAgIH1cbiAgICBjb25zdCB7IGFkYXB0ZXI6IGNhY2hlQWRhcHRlciB9ID0gdGhpcy5jb25maWcuY2FjaGVDb250cm9sbGVyO1xuICAgIGlmIChjYWNoZUFkYXB0ZXIgJiYgdHlwZW9mIGNhY2hlQWRhcHRlci5oYW5kbGVTaHV0ZG93biA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcHJvbWlzZXMucHVzaChjYWNoZUFkYXB0ZXIuaGFuZGxlU2h1dGRvd24oKSk7XG4gICAgfVxuICAgIGlmICh0aGlzLmxpdmVRdWVyeVNlcnZlcikge1xuICAgICAgcHJvbWlzZXMucHVzaCh0aGlzLmxpdmVRdWVyeVNlcnZlci5zaHV0ZG93bigpKTtcbiAgICB9XG4gICAgYXdhaXQgUHJvbWlzZS5hbGwocHJvbWlzZXMpO1xuICAgIGNvbm5lY3Rpb25zLmRlc3Ryb3lBbGwoKTtcbiAgICBhd2FpdCBQcm9taXNlLmFsbChbc2VydmVyQ2xvc2VQcm9taXNlLCBsaXZlUXVlcnlTZXJ2ZXJDbG9zZVByb21pc2VdKTtcbiAgICBpZiAodGhpcy5jb25maWcuc2VydmVyQ2xvc2VDb21wbGV0ZSkge1xuICAgICAgdGhpcy5jb25maWcuc2VydmVyQ2xvc2VDb21wbGV0ZSgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAc3RhdGljXG4gICAqIENyZWF0ZSBhbiBleHByZXNzIGFwcCBmb3IgdGhlIHBhcnNlIHNlcnZlclxuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0aW9ucyBsZXQgeW91IHNwZWNpZnkgdGhlIG1heFVwbG9hZFNpemUgd2hlbiBjcmVhdGluZyB0aGUgZXhwcmVzcyBhcHAgICovXG4gIHN0YXRpYyBhcHAob3B0aW9ucykge1xuICAgIGNvbnN0IHsgbWF4VXBsb2FkU2l6ZSA9ICcyMG1iJywgYXBwSWQsIGRpcmVjdEFjY2VzcywgcGFnZXMsIHJhdGVMaW1pdCA9IFtdIH0gPSBvcHRpb25zO1xuICAgIC8vIFRoaXMgYXBwIHNlcnZlcyB0aGUgUGFyc2UgQVBJIGRpcmVjdGx5LlxuICAgIC8vIEl0J3MgdGhlIGVxdWl2YWxlbnQgb2YgaHR0cHM6Ly9hcGkucGFyc2UuY29tLzEgaW4gdGhlIGhvc3RlZCBQYXJzZSBBUEkuXG4gICAgdmFyIGFwaSA9IGV4cHJlc3MoKTtcbiAgICAvL2FwaS51c2UoXCIvYXBwc1wiLCBleHByZXNzLnN0YXRpYyhfX2Rpcm5hbWUgKyBcIi9wdWJsaWNcIikpO1xuICAgIGFwaS51c2UobWlkZGxld2FyZXMuYWxsb3dDcm9zc0RvbWFpbihhcHBJZCkpO1xuICAgIGFwaS51c2UobWlkZGxld2FyZXMuYWxsb3dEb3VibGVGb3J3YXJkU2xhc2gpO1xuICAgIC8vIEZpbGUgaGFuZGxpbmcgbmVlZHMgdG8gYmUgYmVmb3JlIGRlZmF1bHQgbWlkZGxld2FyZXMgYXJlIGFwcGxpZWRcbiAgICBhcGkudXNlKFxuICAgICAgJy8nLFxuICAgICAgbmV3IEZpbGVzUm91dGVyKCkuZXhwcmVzc1JvdXRlcih7XG4gICAgICAgIG1heFVwbG9hZFNpemU6IG1heFVwbG9hZFNpemUsXG4gICAgICB9KVxuICAgICk7XG5cbiAgICBhcGkudXNlKCcvaGVhbHRoJywgZnVuY3Rpb24gKHJlcSwgcmVzKSB7XG4gICAgICByZXMuc3RhdHVzKG9wdGlvbnMuc3RhdGUgPT09ICdvaycgPyAyMDAgOiA1MDMpO1xuICAgICAgaWYgKG9wdGlvbnMuc3RhdGUgPT09ICdzdGFydGluZycpIHtcbiAgICAgICAgcmVzLnNldCgnUmV0cnktQWZ0ZXInLCAxKTtcbiAgICAgIH1cbiAgICAgIHJlcy5qc29uKHtcbiAgICAgICAgc3RhdHVzOiBvcHRpb25zLnN0YXRlLFxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBhcGkudXNlKFxuICAgICAgJy8nLFxuICAgICAgZXhwcmVzcy51cmxlbmNvZGVkKHsgZXh0ZW5kZWQ6IGZhbHNlIH0pLFxuICAgICAgcGFnZXMuZW5hYmxlUm91dGVyXG4gICAgICAgID8gbmV3IFBhZ2VzUm91dGVyKHBhZ2VzKS5leHByZXNzUm91dGVyKClcbiAgICAgICAgOiBuZXcgUHVibGljQVBJUm91dGVyKCkuZXhwcmVzc1JvdXRlcigpXG4gICAgKTtcblxuICAgIGFwaS51c2UoZXhwcmVzcy5qc29uKHsgdHlwZTogJyovKicsIGxpbWl0OiBtYXhVcGxvYWRTaXplIH0pKTtcbiAgICBhcGkudXNlKG1pZGRsZXdhcmVzLmFsbG93TWV0aG9kT3ZlcnJpZGUpO1xuICAgIGFwaS51c2UobWlkZGxld2FyZXMuaGFuZGxlUGFyc2VIZWFkZXJzKTtcbiAgICBhcGkuc2V0KCdxdWVyeSBwYXJzZXInLCAnZXh0ZW5kZWQnKTtcbiAgICBjb25zdCByb3V0ZXMgPSBBcnJheS5pc0FycmF5KHJhdGVMaW1pdCkgPyByYXRlTGltaXQgOiBbcmF0ZUxpbWl0XTtcbiAgICBmb3IgKGNvbnN0IHJvdXRlIG9mIHJvdXRlcykge1xuICAgICAgbWlkZGxld2FyZXMuYWRkUmF0ZUxpbWl0KHJvdXRlLCBvcHRpb25zKTtcbiAgICB9XG4gICAgYXBpLnVzZShtaWRkbGV3YXJlcy5oYW5kbGVQYXJzZVNlc3Npb24pO1xuXG4gICAgY29uc3QgYXBwUm91dGVyID0gUGFyc2VTZXJ2ZXIucHJvbWlzZVJvdXRlcih7IGFwcElkIH0pO1xuICAgIGFwaS51c2UoYXBwUm91dGVyLmV4cHJlc3NSb3V0ZXIoKSk7XG5cbiAgICBhcGkudXNlKG1pZGRsZXdhcmVzLmhhbmRsZVBhcnNlRXJyb3JzKTtcblxuICAgIC8vIHJ1biB0aGUgZm9sbG93aW5nIHdoZW4gbm90IHRlc3RpbmdcbiAgICBpZiAoIXByb2Nlc3MuZW52LlRFU1RJTkcpIHtcbiAgICAgIC8vVGhpcyBjYXVzZXMgdGVzdHMgdG8gc3BldyBzb21lIHVzZWxlc3Mgd2FybmluZ3MsIHNvIGRpc2FibGUgaW4gdGVzdFxuICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgIHByb2Nlc3Mub24oJ3VuY2F1Z2h0RXhjZXB0aW9uJywgKGVycjogYW55KSA9PiB7XG4gICAgICAgIGlmIChlcnIuY29kZSA9PT0gJ0VBRERSSU5VU0UnKSB7XG4gICAgICAgICAgLy8gdXNlci1mcmllbmRseSBtZXNzYWdlIGZvciB0aGlzIGNvbW1vbiBlcnJvclxuICAgICAgICAgIHByb2Nlc3Muc3RkZXJyLndyaXRlKGBVbmFibGUgdG8gbGlzdGVuIG9uIHBvcnQgJHtlcnIucG9ydH0uIFRoZSBwb3J0IGlzIGFscmVhZHkgaW4gdXNlLmApO1xuICAgICAgICAgIHByb2Nlc3MuZXhpdCgwKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAoZXJyLm1lc3NhZ2UpIHtcbiAgICAgICAgICAgIHByb2Nlc3Muc3RkZXJyLndyaXRlKCdBbiB1bmNhdWdodCBleGNlcHRpb24gb2NjdXJyZWQ6ICcgKyBlcnIubWVzc2FnZSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChlcnIuc3RhY2spIHtcbiAgICAgICAgICAgIHByb2Nlc3Muc3RkZXJyLndyaXRlKCdTdGFjayBUcmFjZTpcXG4nICsgZXJyLnN0YWNrKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcHJvY2Vzcy5zdGRlcnIud3JpdGUoZXJyKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcHJvY2Vzcy5leGl0KDEpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIC8vIHZlcmlmeSB0aGUgc2VydmVyIHVybCBhZnRlciBhICdtb3VudCcgZXZlbnQgaXMgcmVjZWl2ZWRcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICBhcGkub24oJ21vdW50JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBhd2FpdCBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgMTAwMCkpO1xuICAgICAgICBQYXJzZVNlcnZlci52ZXJpZnlTZXJ2ZXJVcmwoKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICBpZiAocHJvY2Vzcy5lbnYuUEFSU0VfU0VSVkVSX0VOQUJMRV9FWFBFUklNRU5UQUxfRElSRUNUX0FDQ0VTUyA9PT0gJzEnIHx8IGRpcmVjdEFjY2Vzcykge1xuICAgICAgUGFyc2UuQ29yZU1hbmFnZXIuc2V0UkVTVENvbnRyb2xsZXIoUGFyc2VTZXJ2ZXJSRVNUQ29udHJvbGxlcihhcHBJZCwgYXBwUm91dGVyKSk7XG4gICAgfVxuICAgIHJldHVybiBhcGk7XG4gIH1cblxuICBzdGF0aWMgcHJvbWlzZVJvdXRlcih7IGFwcElkIH0pIHtcbiAgICBjb25zdCByb3V0ZXJzID0gW1xuICAgICAgbmV3IENsYXNzZXNSb3V0ZXIoKSxcbiAgICAgIG5ldyBVc2Vyc1JvdXRlcigpLFxuICAgICAgbmV3IFNlc3Npb25zUm91dGVyKCksXG4gICAgICBuZXcgUm9sZXNSb3V0ZXIoKSxcbiAgICAgIG5ldyBBbmFseXRpY3NSb3V0ZXIoKSxcbiAgICAgIG5ldyBJbnN0YWxsYXRpb25zUm91dGVyKCksXG4gICAgICBuZXcgRnVuY3Rpb25zUm91dGVyKCksXG4gICAgICBuZXcgU2NoZW1hc1JvdXRlcigpLFxuICAgICAgbmV3IFB1c2hSb3V0ZXIoKSxcbiAgICAgIG5ldyBMb2dzUm91dGVyKCksXG4gICAgICBuZXcgSUFQVmFsaWRhdGlvblJvdXRlcigpLFxuICAgICAgbmV3IEZlYXR1cmVzUm91dGVyKCksXG4gICAgICBuZXcgR2xvYmFsQ29uZmlnUm91dGVyKCksXG4gICAgICBuZXcgR3JhcGhRTFJvdXRlcigpLFxuICAgICAgbmV3IFB1cmdlUm91dGVyKCksXG4gICAgICBuZXcgSG9va3NSb3V0ZXIoKSxcbiAgICAgIG5ldyBDbG91ZENvZGVSb3V0ZXIoKSxcbiAgICAgIG5ldyBBdWRpZW5jZXNSb3V0ZXIoKSxcbiAgICAgIG5ldyBBZ2dyZWdhdGVSb3V0ZXIoKSxcbiAgICAgIG5ldyBTZWN1cml0eVJvdXRlcigpLFxuICAgIF07XG5cbiAgICBjb25zdCByb3V0ZXMgPSByb3V0ZXJzLnJlZHVjZSgobWVtbywgcm91dGVyKSA9PiB7XG4gICAgICByZXR1cm4gbWVtby5jb25jYXQocm91dGVyLnJvdXRlcyk7XG4gICAgfSwgW10pO1xuXG4gICAgY29uc3QgYXBwUm91dGVyID0gbmV3IFByb21pc2VSb3V0ZXIocm91dGVzLCBhcHBJZCk7XG5cbiAgICBiYXRjaC5tb3VudE9udG8oYXBwUm91dGVyKTtcbiAgICByZXR1cm4gYXBwUm91dGVyO1xuICB9XG5cbiAgLyoqXG4gICAqIHN0YXJ0cyB0aGUgcGFyc2Ugc2VydmVyJ3MgZXhwcmVzcyBhcHBcbiAgICogQHBhcmFtIHtQYXJzZVNlcnZlck9wdGlvbnN9IG9wdGlvbnMgdG8gdXNlIHRvIHN0YXJ0IHRoZSBzZXJ2ZXJcbiAgICogQHJldHVybnMge1BhcnNlU2VydmVyfSB0aGUgcGFyc2Ugc2VydmVyIGluc3RhbmNlXG4gICAqL1xuXG4gIGFzeW5jIHN0YXJ0QXBwKG9wdGlvbnM6IFBhcnNlU2VydmVyT3B0aW9ucykge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLnN0YXJ0KCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIG9uIFBhcnNlU2VydmVyLnN0YXJ0QXBwOiAnLCBlKTtcbiAgICAgIHRocm93IGU7XG4gICAgfVxuICAgIGNvbnN0IGFwcCA9IGV4cHJlc3MoKTtcbiAgICBpZiAob3B0aW9ucy5taWRkbGV3YXJlKSB7XG4gICAgICBsZXQgbWlkZGxld2FyZTtcbiAgICAgIGlmICh0eXBlb2Ygb3B0aW9ucy5taWRkbGV3YXJlID09ICdzdHJpbmcnKSB7XG4gICAgICAgIG1pZGRsZXdhcmUgPSByZXF1aXJlKHBhdGgucmVzb2x2ZShwcm9jZXNzLmN3ZCgpLCBvcHRpb25zLm1pZGRsZXdhcmUpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG1pZGRsZXdhcmUgPSBvcHRpb25zLm1pZGRsZXdhcmU7IC8vIHVzZSBhcy1pcyBsZXQgZXhwcmVzcyBmYWlsXG4gICAgICB9XG4gICAgICBhcHAudXNlKG1pZGRsZXdhcmUpO1xuICAgIH1cbiAgICBhcHAudXNlKG9wdGlvbnMubW91bnRQYXRoLCB0aGlzLmFwcCk7XG5cbiAgICBpZiAob3B0aW9ucy5tb3VudEdyYXBoUUwgPT09IHRydWUgfHwgb3B0aW9ucy5tb3VudFBsYXlncm91bmQgPT09IHRydWUpIHtcbiAgICAgIGxldCBncmFwaFFMQ3VzdG9tVHlwZURlZnMgPSB1bmRlZmluZWQ7XG4gICAgICBpZiAodHlwZW9mIG9wdGlvbnMuZ3JhcGhRTFNjaGVtYSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgZ3JhcGhRTEN1c3RvbVR5cGVEZWZzID0gcGFyc2UoZnMucmVhZEZpbGVTeW5jKG9wdGlvbnMuZ3JhcGhRTFNjaGVtYSwgJ3V0ZjgnKSk7XG4gICAgICB9IGVsc2UgaWYgKFxuICAgICAgICB0eXBlb2Ygb3B0aW9ucy5ncmFwaFFMU2NoZW1hID09PSAnb2JqZWN0JyB8fFxuICAgICAgICB0eXBlb2Ygb3B0aW9ucy5ncmFwaFFMU2NoZW1hID09PSAnZnVuY3Rpb24nXG4gICAgICApIHtcbiAgICAgICAgZ3JhcGhRTEN1c3RvbVR5cGVEZWZzID0gb3B0aW9ucy5ncmFwaFFMU2NoZW1hO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBwYXJzZUdyYXBoUUxTZXJ2ZXIgPSBuZXcgUGFyc2VHcmFwaFFMU2VydmVyKHRoaXMsIHtcbiAgICAgICAgZ3JhcGhRTFBhdGg6IG9wdGlvbnMuZ3JhcGhRTFBhdGgsXG4gICAgICAgIHBsYXlncm91bmRQYXRoOiBvcHRpb25zLnBsYXlncm91bmRQYXRoLFxuICAgICAgICBncmFwaFFMQ3VzdG9tVHlwZURlZnMsXG4gICAgICB9KTtcblxuICAgICAgaWYgKG9wdGlvbnMubW91bnRHcmFwaFFMKSB7XG4gICAgICAgIHBhcnNlR3JhcGhRTFNlcnZlci5hcHBseUdyYXBoUUwoYXBwKTtcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMubW91bnRQbGF5Z3JvdW5kKSB7XG4gICAgICAgIHBhcnNlR3JhcGhRTFNlcnZlci5hcHBseVBsYXlncm91bmQoYXBwKTtcbiAgICAgIH1cbiAgICB9XG4gICAgY29uc3Qgc2VydmVyID0gYXdhaXQgbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7XG4gICAgICBhcHAubGlzdGVuKG9wdGlvbnMucG9ydCwgb3B0aW9ucy5ob3N0LCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJlc29sdmUodGhpcyk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICB0aGlzLnNlcnZlciA9IHNlcnZlcjtcbiAgICBjb25uZWN0aW9ucy50cmFjayhzZXJ2ZXIpO1xuXG4gICAgaWYgKG9wdGlvbnMuc3RhcnRMaXZlUXVlcnlTZXJ2ZXIgfHwgb3B0aW9ucy5saXZlUXVlcnlTZXJ2ZXJPcHRpb25zKSB7XG4gICAgICB0aGlzLmxpdmVRdWVyeVNlcnZlciA9IGF3YWl0IFBhcnNlU2VydmVyLmNyZWF0ZUxpdmVRdWVyeVNlcnZlcihcbiAgICAgICAgc2VydmVyLFxuICAgICAgICBvcHRpb25zLmxpdmVRdWVyeVNlcnZlck9wdGlvbnMsXG4gICAgICAgIG9wdGlvbnNcbiAgICAgICk7XG4gICAgICBpZiAodGhpcy5saXZlUXVlcnlTZXJ2ZXIuc2VydmVyICE9PSB0aGlzLnNlcnZlcikge1xuICAgICAgICBjb25uZWN0aW9ucy50cmFjayh0aGlzLmxpdmVRdWVyeVNlcnZlci5zZXJ2ZXIpO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAob3B0aW9ucy50cnVzdFByb3h5KSB7XG4gICAgICBhcHAuc2V0KCd0cnVzdCBwcm94eScsIG9wdGlvbnMudHJ1c3RQcm94eSk7XG4gICAgfVxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgaWYgKCFwcm9jZXNzLmVudi5URVNUSU5HKSB7XG4gICAgICBjb25maWd1cmVMaXN0ZW5lcnModGhpcyk7XG4gICAgfVxuICAgIHRoaXMuZXhwcmVzc0FwcCA9IGFwcDtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IFBhcnNlU2VydmVyIGFuZCBzdGFydHMgaXQuXG4gICAqIEBwYXJhbSB7UGFyc2VTZXJ2ZXJPcHRpb25zfSBvcHRpb25zIHVzZWQgdG8gc3RhcnQgdGhlIHNlcnZlclxuICAgKiBAcmV0dXJucyB7UGFyc2VTZXJ2ZXJ9IHRoZSBwYXJzZSBzZXJ2ZXIgaW5zdGFuY2VcbiAgICovXG4gIHN0YXRpYyBhc3luYyBzdGFydEFwcChvcHRpb25zOiBQYXJzZVNlcnZlck9wdGlvbnMpIHtcbiAgICBjb25zdCBwYXJzZVNlcnZlciA9IG5ldyBQYXJzZVNlcnZlcihvcHRpb25zKTtcbiAgICByZXR1cm4gcGFyc2VTZXJ2ZXIuc3RhcnRBcHAob3B0aW9ucyk7XG4gIH1cblxuICAvKipcbiAgICogSGVscGVyIG1ldGhvZCB0byBjcmVhdGUgYSBsaXZlUXVlcnkgc2VydmVyXG4gICAqIEBzdGF0aWNcbiAgICogQHBhcmFtIHtTZXJ2ZXJ9IGh0dHBTZXJ2ZXIgYW4gb3B0aW9uYWwgaHR0cCBzZXJ2ZXIgdG8gcGFzc1xuICAgKiBAcGFyYW0ge0xpdmVRdWVyeVNlcnZlck9wdGlvbnN9IGNvbmZpZyBvcHRpb25zIGZvciB0aGUgbGl2ZVF1ZXJ5U2VydmVyXG4gICAqIEBwYXJhbSB7UGFyc2VTZXJ2ZXJPcHRpb25zfSBvcHRpb25zIG9wdGlvbnMgZm9yIHRoZSBQYXJzZVNlcnZlclxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxQYXJzZUxpdmVRdWVyeVNlcnZlcj59IHRoZSBsaXZlIHF1ZXJ5IHNlcnZlciBpbnN0YW5jZVxuICAgKi9cbiAgc3RhdGljIGFzeW5jIGNyZWF0ZUxpdmVRdWVyeVNlcnZlcihcbiAgICBodHRwU2VydmVyLFxuICAgIGNvbmZpZzogTGl2ZVF1ZXJ5U2VydmVyT3B0aW9ucyxcbiAgICBvcHRpb25zOiBQYXJzZVNlcnZlck9wdGlvbnNcbiAgKTogUHJvbWlzZTxQYXJzZUxpdmVRdWVyeVNlcnZlcj4ge1xuICAgIGlmICghaHR0cFNlcnZlciB8fCAoY29uZmlnICYmIGNvbmZpZy5wb3J0KSkge1xuICAgICAgdmFyIGFwcCA9IGV4cHJlc3MoKTtcbiAgICAgIGh0dHBTZXJ2ZXIgPSByZXF1aXJlKCdodHRwJykuY3JlYXRlU2VydmVyKGFwcCk7XG4gICAgICBodHRwU2VydmVyLmxpc3Rlbihjb25maWcucG9ydCk7XG4gICAgfVxuICAgIGNvbnN0IHNlcnZlciA9IG5ldyBQYXJzZUxpdmVRdWVyeVNlcnZlcihodHRwU2VydmVyLCBjb25maWcsIG9wdGlvbnMpO1xuICAgIGF3YWl0IHNlcnZlci5jb25uZWN0KCk7XG4gICAgcmV0dXJuIHNlcnZlcjtcbiAgfVxuXG4gIHN0YXRpYyBhc3luYyB2ZXJpZnlTZXJ2ZXJVcmwoKSB7XG4gICAgLy8gcGVyZm9ybSBhIGhlYWx0aCBjaGVjayBvbiB0aGUgc2VydmVyVVJMIHZhbHVlXG4gICAgaWYgKFBhcnNlLnNlcnZlclVSTCkge1xuICAgICAgY29uc3QgaXNWYWxpZEh0dHBVcmwgPSBzdHJpbmcgPT4ge1xuICAgICAgICBsZXQgdXJsO1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHVybCA9IG5ldyBVUkwoc3RyaW5nKTtcbiAgICAgICAgfSBjYXRjaCAoXykge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdXJsLnByb3RvY29sID09PSAnaHR0cDonIHx8IHVybC5wcm90b2NvbCA9PT0gJ2h0dHBzOic7XG4gICAgICB9O1xuICAgICAgY29uc3QgdXJsID0gYCR7UGFyc2Uuc2VydmVyVVJMLnJlcGxhY2UoL1xcLyQvLCAnJyl9L2hlYWx0aGA7XG4gICAgICBpZiAoIWlzVmFsaWRIdHRwVXJsKHVybCkpIHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgIGBcXG5XQVJOSU5HLCBVbmFibGUgdG8gY29ubmVjdCB0byAnJHtQYXJzZS5zZXJ2ZXJVUkx9JyBhcyB0aGUgVVJMIGlzIGludmFsaWQuYCArXG4gICAgICAgICAgICBgIENsb3VkIGNvZGUgYW5kIHB1c2ggbm90aWZpY2F0aW9ucyBtYXkgYmUgdW5hdmFpbGFibGUhXFxuYFxuICAgICAgICApO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjb25zdCByZXF1ZXN0ID0gcmVxdWlyZSgnLi9yZXF1ZXN0Jyk7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHJlcXVlc3QoeyB1cmwgfSkuY2F0Y2gocmVzcG9uc2UgPT4gcmVzcG9uc2UpO1xuICAgICAgY29uc3QganNvbiA9IHJlc3BvbnNlLmRhdGEgfHwgbnVsbDtcbiAgICAgIGNvbnN0IHJldHJ5ID0gcmVzcG9uc2UuaGVhZGVycz8uWydyZXRyeS1hZnRlciddO1xuICAgICAgaWYgKHJldHJ5KSB7XG4gICAgICAgIGF3YWl0IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gc2V0VGltZW91dChyZXNvbHZlLCByZXRyeSAqIDEwMDApKTtcbiAgICAgICAgcmV0dXJuIHRoaXMudmVyaWZ5U2VydmVyVXJsKCk7XG4gICAgICB9XG4gICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzICE9PSAyMDAgfHwganNvbj8uc3RhdHVzICE9PSAnb2snKSB7XG4gICAgICAgIC8qIGVzbGludC1kaXNhYmxlIG5vLWNvbnNvbGUgKi9cbiAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgIGBcXG5XQVJOSU5HLCBVbmFibGUgdG8gY29ubmVjdCB0byAnJHtQYXJzZS5zZXJ2ZXJVUkx9Jy5gICtcbiAgICAgICAgICAgIGAgQ2xvdWQgY29kZSBhbmQgcHVzaCBub3RpZmljYXRpb25zIG1heSBiZSB1bmF2YWlsYWJsZSFcXG5gXG4gICAgICAgICk7XG4gICAgICAgIC8qIGVzbGludC1lbmFibGUgbm8tY29uc29sZSAqL1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gYWRkUGFyc2VDbG91ZCgpIHtcbiAgY29uc3QgUGFyc2VDbG91ZCA9IHJlcXVpcmUoJy4vY2xvdWQtY29kZS9QYXJzZS5DbG91ZCcpO1xuICBjb25zdCBQYXJzZVNlcnZlciA9IHJlcXVpcmUoJy4vY2xvdWQtY29kZS9QYXJzZS5TZXJ2ZXInKTtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFBhcnNlLCAnU2VydmVyJywge1xuICAgIGdldCgpIHtcbiAgICAgIGNvbnN0IGNvbmYgPSBDb25maWcuZ2V0KFBhcnNlLmFwcGxpY2F0aW9uSWQpO1xuICAgICAgcmV0dXJuIHsgLi4uY29uZiwgLi4uUGFyc2VTZXJ2ZXIgfTtcbiAgICB9LFxuICAgIHNldChuZXdWYWwpIHtcbiAgICAgIG5ld1ZhbC5hcHBJZCA9IFBhcnNlLmFwcGxpY2F0aW9uSWQ7XG4gICAgICBDb25maWcucHV0KG5ld1ZhbCk7XG4gICAgfSxcbiAgICBjb25maWd1cmFibGU6IHRydWUsXG4gIH0pO1xuICBPYmplY3QuYXNzaWduKFBhcnNlLkNsb3VkLCBQYXJzZUNsb3VkKTtcbiAgZ2xvYmFsLlBhcnNlID0gUGFyc2U7XG59XG5cbmZ1bmN0aW9uIGluamVjdERlZmF1bHRzKG9wdGlvbnM6IFBhcnNlU2VydmVyT3B0aW9ucykge1xuICBPYmplY3Qua2V5cyhkZWZhdWx0cykuZm9yRWFjaChrZXkgPT4ge1xuICAgIGlmICghT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9wdGlvbnMsIGtleSkpIHtcbiAgICAgIG9wdGlvbnNba2V5XSA9IGRlZmF1bHRzW2tleV07XG4gICAgfVxuICB9KTtcblxuICBpZiAoIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvcHRpb25zLCAnc2VydmVyVVJMJykpIHtcbiAgICBvcHRpb25zLnNlcnZlclVSTCA9IGBodHRwOi8vbG9jYWxob3N0OiR7b3B0aW9ucy5wb3J0fSR7b3B0aW9ucy5tb3VudFBhdGh9YDtcbiAgfVxuXG4gIC8vIFJlc2VydmVkIENoYXJhY3RlcnNcbiAgaWYgKG9wdGlvbnMuYXBwSWQpIHtcbiAgICBjb25zdCByZWdleCA9IC9bISMkJScoKSorJi86Oz0/QFtcXF17fV4sfDw+XS9nO1xuICAgIGlmIChvcHRpb25zLmFwcElkLm1hdGNoKHJlZ2V4KSkge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgYFxcbldBUk5JTkcsIGFwcElkIHRoYXQgY29udGFpbnMgc3BlY2lhbCBjaGFyYWN0ZXJzIGNhbiBjYXVzZSBpc3N1ZXMgd2hpbGUgdXNpbmcgd2l0aCB1cmxzLlxcbmBcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgLy8gQmFja3dhcmRzIGNvbXBhdGliaWxpdHlcbiAgaWYgKG9wdGlvbnMudXNlclNlbnNpdGl2ZUZpZWxkcykge1xuICAgIC8qIGVzbGludC1kaXNhYmxlIG5vLWNvbnNvbGUgKi9cbiAgICAhcHJvY2Vzcy5lbnYuVEVTVElORyAmJlxuICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICBgXFxuREVQUkVDQVRFRDogdXNlclNlbnNpdGl2ZUZpZWxkcyBoYXMgYmVlbiByZXBsYWNlZCBieSBwcm90ZWN0ZWRGaWVsZHMgYWxsb3dpbmcgdGhlIGFiaWxpdHkgdG8gcHJvdGVjdCBmaWVsZHMgaW4gYWxsIGNsYXNzZXMgd2l0aCBDTFAuIFxcbmBcbiAgICAgICk7XG4gICAgLyogZXNsaW50LWVuYWJsZSBuby1jb25zb2xlICovXG5cbiAgICBjb25zdCB1c2VyU2Vuc2l0aXZlRmllbGRzID0gQXJyYXkuZnJvbShcbiAgICAgIG5ldyBTZXQoWy4uLihkZWZhdWx0cy51c2VyU2Vuc2l0aXZlRmllbGRzIHx8IFtdKSwgLi4uKG9wdGlvbnMudXNlclNlbnNpdGl2ZUZpZWxkcyB8fCBbXSldKVxuICAgICk7XG5cbiAgICAvLyBJZiB0aGUgb3B0aW9ucy5wcm90ZWN0ZWRGaWVsZHMgaXMgdW5zZXQsXG4gICAgLy8gaXQnbGwgYmUgYXNzaWduZWQgdGhlIGRlZmF1bHQgYWJvdmUuXG4gICAgLy8gSGVyZSwgcHJvdGVjdCBhZ2FpbnN0IHRoZSBjYXNlIHdoZXJlIHByb3RlY3RlZEZpZWxkc1xuICAgIC8vIGlzIHNldCwgYnV0IGRvZXNuJ3QgaGF2ZSBfVXNlci5cbiAgICBpZiAoISgnX1VzZXInIGluIG9wdGlvbnMucHJvdGVjdGVkRmllbGRzKSkge1xuICAgICAgb3B0aW9ucy5wcm90ZWN0ZWRGaWVsZHMgPSBPYmplY3QuYXNzaWduKHsgX1VzZXI6IFtdIH0sIG9wdGlvbnMucHJvdGVjdGVkRmllbGRzKTtcbiAgICB9XG5cbiAgICBvcHRpb25zLnByb3RlY3RlZEZpZWxkc1snX1VzZXInXVsnKiddID0gQXJyYXkuZnJvbShcbiAgICAgIG5ldyBTZXQoWy4uLihvcHRpb25zLnByb3RlY3RlZEZpZWxkc1snX1VzZXInXVsnKiddIHx8IFtdKSwgLi4udXNlclNlbnNpdGl2ZUZpZWxkc10pXG4gICAgKTtcbiAgfVxuXG4gIC8vIE1lcmdlIHByb3RlY3RlZEZpZWxkcyBvcHRpb25zIHdpdGggZGVmYXVsdHMuXG4gIE9iamVjdC5rZXlzKGRlZmF1bHRzLnByb3RlY3RlZEZpZWxkcykuZm9yRWFjaChjID0+IHtcbiAgICBjb25zdCBjdXIgPSBvcHRpb25zLnByb3RlY3RlZEZpZWxkc1tjXTtcbiAgICBpZiAoIWN1cikge1xuICAgICAgb3B0aW9ucy5wcm90ZWN0ZWRGaWVsZHNbY10gPSBkZWZhdWx0cy5wcm90ZWN0ZWRGaWVsZHNbY107XG4gICAgfSBlbHNlIHtcbiAgICAgIE9iamVjdC5rZXlzKGRlZmF1bHRzLnByb3RlY3RlZEZpZWxkc1tjXSkuZm9yRWFjaChyID0+IHtcbiAgICAgICAgY29uc3QgdW5xID0gbmV3IFNldChbXG4gICAgICAgICAgLi4uKG9wdGlvbnMucHJvdGVjdGVkRmllbGRzW2NdW3JdIHx8IFtdKSxcbiAgICAgICAgICAuLi5kZWZhdWx0cy5wcm90ZWN0ZWRGaWVsZHNbY11bcl0sXG4gICAgICAgIF0pO1xuICAgICAgICBvcHRpb25zLnByb3RlY3RlZEZpZWxkc1tjXVtyXSA9IEFycmF5LmZyb20odW5xKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfSk7XG59XG5cbi8vIFRob3NlIGNhbid0IGJlIHRlc3RlZCBhcyBpdCByZXF1aXJlcyBhIHN1YnByb2Nlc3Ncbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5mdW5jdGlvbiBjb25maWd1cmVMaXN0ZW5lcnMocGFyc2VTZXJ2ZXIpIHtcbiAgY29uc3QgaGFuZGxlU2h1dGRvd24gPSBmdW5jdGlvbiAoKSB7XG4gICAgcHJvY2Vzcy5zdGRvdXQud3JpdGUoJ1Rlcm1pbmF0aW9uIHNpZ25hbCByZWNlaXZlZC4gU2h1dHRpbmcgZG93bi4nKTtcbiAgICBwYXJzZVNlcnZlci5oYW5kbGVTaHV0ZG93bigpO1xuICB9O1xuICBwcm9jZXNzLm9uKCdTSUdURVJNJywgaGFuZGxlU2h1dGRvd24pO1xuICBwcm9jZXNzLm9uKCdTSUdJTlQnLCBoYW5kbGVTaHV0ZG93bik7XG59XG5cbmV4cG9ydCBkZWZhdWx0IFBhcnNlU2VydmVyO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFXQSxJQUFBQSxTQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxPQUFBLEdBQUFDLHVCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBRyxPQUFBLEdBQUFKLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBSSxjQUFBLEdBQUFMLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBSyxrQkFBQSxHQUFBTixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQU0sZ0JBQUEsR0FBQU4sT0FBQTtBQUNBLElBQUFPLGNBQUEsR0FBQVAsT0FBQTtBQUNBLElBQUFRLGVBQUEsR0FBQVIsT0FBQTtBQUNBLElBQUFTLFlBQUEsR0FBQVQsT0FBQTtBQUNBLElBQUFVLGdCQUFBLEdBQUFWLE9BQUE7QUFDQSxJQUFBVyxtQkFBQSxHQUFBWCxPQUFBO0FBQ0EsSUFBQVksY0FBQSxHQUFBWixPQUFBO0FBQ0EsSUFBQWEsWUFBQSxHQUFBYixPQUFBO0FBQ0EsSUFBQWMsb0JBQUEsR0FBQWQsT0FBQTtBQUNBLElBQUFl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
|