@aws-cdk/aws-imagebuilder-alpha 2.257.0-alpha.0 → 2.258.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/image.js CHANGED
@@ -1,4 +1,20 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
2
18
  var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
3
19
  var useValue = arguments.length > 2;
4
20
  for (var i = 0; i < initializers.length; i++) {
@@ -33,12 +49,29 @@ var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn,
33
49
  if (target) Object.defineProperty(target, contextIn.name, descriptor);
34
50
  done = true;
35
51
  };
52
+ var __importStar = (this && this.__importStar) || (function () {
53
+ var ownKeys = function(o) {
54
+ ownKeys = Object.getOwnPropertyNames || function (o) {
55
+ var ar = [];
56
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
57
+ return ar;
58
+ };
59
+ return ownKeys(o);
60
+ };
61
+ return function (mod) {
62
+ if (mod && mod.__esModule) return mod;
63
+ var result = {};
64
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
65
+ __setModuleDefault(result, mod);
66
+ return result;
67
+ };
68
+ })();
36
69
  Object.defineProperty(exports, "__esModule", { value: true });
37
70
  exports.Image = exports.ImageType = exports.ImageArchitecture = void 0;
38
71
  const jsiiDeprecationWarnings = require("../.warnings.jsii.js");
39
72
  const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
40
- const cdk = require("aws-cdk-lib");
41
- const iam = require("aws-cdk-lib/aws-iam");
73
+ const cdk = __importStar(require("aws-cdk-lib"));
74
+ const iam = __importStar(require("aws-cdk-lib/aws-iam"));
42
75
  const aws_imagebuilder_1 = require("aws-cdk-lib/aws-imagebuilder");
43
76
  const helpers_internal_1 = require("aws-cdk-lib/core/lib/helpers-internal");
44
77
  const metadata_resource_1 = require("aws-cdk-lib/core/lib/metadata-resource");
@@ -171,7 +204,7 @@ let Image = (() => {
171
204
  Image = _classThis = _classDescriptor.value;
172
205
  if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
173
206
  }
174
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.Image", version: "2.257.0-alpha.0" };
207
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.Image", version: "2.258.0-alpha.0" };
175
208
  /** Uniquely identifies this class. */
176
209
  static PROPERTY_INJECTION_ID = '@aws-cdk.aws-imagebuilder-alpha.Image';
177
210
  /**
@@ -381,4 +414,4 @@ let Image = (() => {
381
414
  return Image = _classThis;
382
415
  })();
383
416
  exports.Image = Image;
384
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbWFnZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxtQ0FBbUM7QUFFbkMsMkNBQTJDO0FBQzNDLG1FQUF3RDtBQUV4RCw0RUFBNEU7QUFDNUUsOEVBQThGO0FBQzlGLDBFQUEwRTtBQUUxRSw2Q0FBNkQ7QUFHN0QsaUZBQTZFO0FBQzdFLG1EQUFxRDtBQUNyRCwrRkFJbUQ7QUFDbkQsMkRBQXVGO0FBSXZGLE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsdUNBQXVDLENBQUMsQ0FBQztBQXdNekU7O0dBRUc7QUFDSCxJQUFZLGlCQVVYO0FBVkQsV0FBWSxpQkFBaUI7SUFDM0I7O09BRUc7SUFDSCxvQ0FBZSxDQUFBO0lBRWY7O09BRUc7SUFDSCxzQ0FBaUIsQ0FBQTtBQUNuQixDQUFDLEVBVlcsaUJBQWlCLGlDQUFqQixpQkFBaUIsUUFVNUI7QUFFRDs7R0FFRztBQUNILElBQVksU0FVWDtBQVZELFdBQVksU0FBUztJQUNuQjs7T0FFRztJQUNILHdCQUFXLENBQUE7SUFFWDs7T0FFRztJQUNILDhCQUFpQixDQUFBO0FBQ25CLENBQUMsRUFWVyxTQUFTLHlCQUFULFNBQVMsUUFVcEI7QUFFRDs7R0FFRztBQUNILE1BQWUsU0FBVSxTQUFRLEdBQUcsQ0FBQyxRQUFRO0lBZ0IzQzs7Ozs7OztPQU9HO0lBQ0ksS0FBSyxDQUFDLE9BQXVCLEVBQUUsR0FBRyxPQUFpQjtRQUN4RCxPQUFPLEdBQUcsQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDO1lBQzlCLE9BQU87WUFDUCxZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO1lBQzdCLE9BQU87U0FDUixDQUFDLENBQUM7S0FDSjtJQUVEOzs7Ozs7T0FNRztJQUNJLG9DQUFvQyxDQUFDLE9BQXVCO1FBQ2pFLE1BQU0sUUFBUSxHQUFHLElBQUEsMENBQTBCLEVBQUMsSUFBSSxDQUFDLENBQUM7UUFDbEQsT0FBTyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FDN0IsR0FBRyxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUM7WUFDdkIsT0FBTyxFQUFFLE9BQU87WUFDaEIsWUFBWSxFQUFFLE1BQU0sQ0FBQyxTQUFTO1lBQzlCLE9BQU8sRUFBRSxNQUFNLENBQUMsT0FBTztZQUN2QixVQUFVLEVBQUUsTUFBTSxDQUFDLFVBQVU7WUFDN0IsS0FBSyxFQUFFLElBQUk7U0FDWixDQUFDLENBQ0gsQ0FBQztLQUNIO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksU0FBUyxDQUFDLE9BQXVCO1FBQ3RDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsdUJBQXVCLENBQUMsQ0FBQztLQUNyRDtJQUVEOztPQUVHO0lBQ0ksV0FBVztRQUNoQixPQUFPLHNCQUFTLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQ2xDO0lBRUQ7O09BRUc7SUFDSSxvQkFBb0I7UUFDekIsT0FBTywrQkFBa0IsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDM0M7Q0FDRjtBQUVEOzs7O0dBSUc7SUFFVSxLQUFLOzRCQURqQixvQ0FBa0I7Ozs7c0JBQ1EsU0FBUzs7Ozs7OztxQkFBakIsU0FBUSxXQUFTOzs7O2dFQTZHakMsSUFBQSxrQ0FBYyxHQUFFO3lDQWNoQixpQ0FBYzt3Q0FLZCxpQ0FBYzs0Q0FLZCxpQ0FBYzt1Q0FpQmQsaUNBQWM7WUF4Q2YsK1BBQU8sb0NBQW9DLDZEQVcxQztZQUdELGtMQUFXLFNBQVMsNkRBRW5CO1lBR0QsK0tBQVcsUUFBUSw2REFFbEI7WUFHRCwyTEFBVyxZQUFZLDZEQVN0QjtZQVFELDRLQUFXLE9BQU8sNkRBU2pCO1lBaEtILDZLQXVPQzs7Ozs7UUF0T0Msc0NBQXNDO1FBQy9CLE1BQU0sQ0FBVSxxQkFBcUIsR0FBVyx1Q0FBdUMsQ0FBQztRQUUvRjs7V0FFRztRQUNJLE1BQU0sQ0FBQyxZQUFZLENBQUMsS0FBZ0IsRUFBRSxFQUFVLEVBQUUsUUFBZ0I7WUFDdkUsT0FBTyxJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7U0FDMUQ7UUFFRDs7O1dBR0c7UUFDSSxNQUFNLENBQUMsYUFBYSxDQUFDLEtBQWdCLEVBQUUsRUFBVSxFQUFFLFNBQWlCO1lBQ3pFLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO1NBQzNEO1FBRUQ7Ozs7V0FJRztRQUNJLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUFzQjs7Ozs7Ozs7OztZQUNwRixJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUUsQ0FBQztnQkFDeEMsTUFBTSxJQUFJLEdBQUcsQ0FBQyxlQUFlLENBQUMsSUFBQSxzQkFBRyxFQUFBLG1DQUFtQyxFQUFFLDBDQUEwQyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQzNILENBQUM7WUFFRCxNQUFNLFFBQVEsR0FDWixLQUFLLENBQUMsUUFBUTtnQkFDZCxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxTQUFTLENBQUM7b0JBQzVCLE9BQU8sRUFBRSxjQUFjO29CQUN2QixRQUFRLEVBQUUsT0FBTztvQkFDakIsWUFBWSxFQUFFLEdBQUcsS0FBSyxDQUFDLFNBQVMsSUFBSSxLQUFLLENBQUMsWUFBWSxJQUFJLDBCQUFjLEVBQUU7aUJBQzNFLENBQUMsQ0FBQztZQUVMLE1BQU0sQ0FBQyxTQUFTLEVBQUUsWUFBWSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUU7Z0JBQ3RDLElBQUksS0FBSyxDQUFDLFNBQVMsRUFBRSxDQUFDO29CQUNwQixPQUFPLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsWUFBWSxJQUFJLDBCQUFjLENBQUMsQ0FBQztnQkFDakUsQ0FBQztnQkFFRCxNQUFNLGdCQUFnQixHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLFNBQVMsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLFlBQWEsQ0FBQztnQkFFakgsTUFBTSxxQkFBcUIsR0FBRyxHQUFHLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztnQkFDbEUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxxQkFBcUIsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxxQkFBcUIsQ0FBQyxDQUFDLENBQUM7WUFDNUYsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUVMLE1BQU0sTUFBTyxTQUFRLFNBQVM7Z0JBQ1osUUFBUSxHQUFHLFFBQVEsQ0FBQztnQkFDcEIsU0FBUyxHQUFHLFNBQVMsQ0FBQztnQkFDdEIsWUFBWSxHQUFHLFlBQVksQ0FBQzthQUM3QztZQUVELE9BQU8sSUFBSSxNQUFNLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1NBQzlCO1FBRUQ7O1dBRUc7UUFDSSxNQUFNLENBQUMsT0FBTyxDQUFDLENBQU07WUFDMUIsT0FBTyxDQUFDLEtBQUssSUFBSSxJQUFJLE9BQU8sQ0FBQyxLQUFLLFFBQVEsSUFBSSxZQUFZLElBQUksQ0FBQyxDQUFDO1NBQ2pFO1FBRUQ7O1dBRUc7UUFDYSwyQkFBMkIsR0FuRWhDLG1EQUFLLENBbUUwRDtRQUUxRTs7V0FFRztRQUNhLGFBQWEsQ0FBYTtRQUV6QixLQUFLLENBQWE7UUFDM0IsUUFBUSxDQUFXO1FBRTNCLFlBQW1CLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQWlCO1lBQ2hFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7Ozs7OzttREE5RVIsS0FBSzs7OztZQStFZCxtQ0FBbUM7WUFDbkMsSUFBQSx3Q0FBb0IsRUFBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFFbEMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsWUFBWSxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7WUFFM0QsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7WUFFbkIsSUFBSSxDQUFDLDJCQUEyQjtnQkFDOUIsS0FBSyxDQUFDLDJCQUEyQixJQUFJLElBQUksMERBQTJCLENBQUMsSUFBSSxFQUFFLDZCQUE2QixDQUFDLENBQUM7WUFFNUcsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFBLGdDQUFnQixFQUNuQyxJQUFJLEVBQ0osQ0FBQyxPQUF1QixFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsb0NBQW9DLENBQUMsT0FBTyxDQUFDLEVBQy9FO2dCQUNFLEdBQUcsS0FBSztnQkFDUixhQUFhLEVBQUUsS0FBSyxDQUFDLFFBQVE7YUFDOUIsQ0FDRixDQUFDO1lBRUYsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDckQsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7U0FDdkI7UUFFRDs7Ozs7O1dBTUc7UUFFSSxvQ0FBb0MsQ0FBQyxPQUF1QjtZQUNqRSxNQUFNLFFBQVEsR0FBRyxJQUFBLDBDQUEwQixFQUFDLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDOUQsT0FBTyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FDN0IsR0FBRyxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUM7Z0JBQ3ZCLE9BQU8sRUFBRSxPQUFPO2dCQUNoQixZQUFZLEVBQUUsTUFBTSxDQUFDLFNBQVM7Z0JBQzlCLE9BQU8sRUFBRSxNQUFNLENBQUMsT0FBTztnQkFDdkIsVUFBVSxFQUFFLE1BQU0sQ0FBQyxVQUFVO2dCQUM3QixLQUFLLEVBQUUsSUFBSTthQUNaLENBQUMsQ0FDSCxDQUFDO1NBQ0g7UUFHRCxJQUFXLFNBQVM7WUFDbEIsT0FBTyxJQUFJLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUM5RDtRQUdELElBQVcsUUFBUTtZQUNqQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDO1NBQzlCO1FBR0QsSUFBVyxZQUFZO1lBQ3JCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDO1lBQ2pDLElBQUksTUFBTSxDQUFDLGNBQWMsRUFBRSxFQUFFLENBQUM7Z0JBQzVCLE9BQU8sTUFBTSxDQUFDLGtCQUFrQixDQUFDO1lBQ25DLENBQUM7aUJBQU0sSUFBSSxNQUFNLENBQUMsa0JBQWtCLEVBQUUsRUFBRSxDQUFDO2dCQUN2QyxPQUFPLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQztZQUN2QyxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sTUFBTSxJQUFJLEdBQUcsQ0FBQyxlQUFlLENBQUMsSUFBQSxzQkFBRyxFQUFBLG1CQUFtQixFQUFFLDJEQUEyRCxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQzNILENBQUM7U0FDRjtRQUVEOzs7O1dBSUc7UUFFSCxJQUFXLE9BQU87WUFDaEIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUM7WUFDakMsSUFBSSxNQUFNLENBQUMsY0FBYyxFQUFFLEVBQUUsQ0FBQztnQkFDNUIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQztZQUNuQyxDQUFDO2lCQUFNLElBQUksTUFBTSxDQUFDLGtCQUFrQixFQUFFLEVBQUUsQ0FBQztnQkFDdkMsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQztZQUNwQyxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sTUFBTSxJQUFJLEdBQUcsQ0FBQyxlQUFlLENBQUMsSUFBQSxzQkFBRyxFQUFBLG1CQUFtQixFQUFFLDJEQUEyRCxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQzNILENBQUM7U0FDRjtRQUVEOzs7OztXQUtHO1FBQ0sscUJBQXFCLENBQUMsS0FBaUI7WUFDN0MsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQztZQUM1QixJQUFJLDBEQUEyQixDQUFDLDZCQUE2QixDQUFDLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxFQUFFLENBQUM7Z0JBQ2hHLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxLQUFLLENBQUMsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLENBQUMsa0JBQWtCLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDNUYsQ0FBQztZQUVELElBQUksTUFBTSxDQUFDLGNBQWMsRUFBRSxJQUFJLE1BQU0sQ0FBQyxrQkFBa0IsRUFBRSxFQUFFLENBQUM7Z0JBQzNELE1BQU0sSUFBSSxHQUFHLENBQUMsZUFBZSxDQUFDLElBQUEsc0JBQUcsRUFBQSxxQ0FBcUMsRUFBRSxtRUFBbUUsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUNySixDQUFDO1lBRUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsRUFBRSxFQUFFLENBQUM7Z0JBQzdELE1BQU0sSUFBSSxHQUFHLENBQUMsZUFBZSxDQUFDLElBQUEsc0JBQUcsRUFBQSw4QkFBOEIsRUFBRSwrREFBK0QsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUMxSSxDQUFDO1lBRUQsTUFBTSxLQUFLLEdBQUcsSUFBSSwyQkFBUSxDQUFDLElBQUksRUFBRSxVQUFVLEVBQUU7Z0JBQzNDLEdBQUcsQ0FBQyxNQUFNLENBQUMsY0FBYyxFQUFFLElBQUksRUFBRSxjQUFjLEVBQUUsTUFBTSxDQUFDLGNBQWMsRUFBRSxDQUFDO2dCQUN6RSxHQUFHLENBQUMsTUFBTSxDQUFDLGtCQUFrQixFQUFFLElBQUksRUFBRSxrQkFBa0IsRUFBRSxNQUFNLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztnQkFDckYsOEJBQThCLEVBQUUsSUFBSSxDQUFDLDJCQUEyQixDQUFDLDhCQUE4QjtnQkFDL0YsNEJBQTRCLEVBQUUsS0FBSyxDQUFDLHlCQUF5QixFQUFFLDRCQUE0QjtnQkFDM0YsYUFBYSxFQUFFLElBQUksQ0FBQyxhQUFhLEVBQUUsT0FBTztnQkFDMUMsNEJBQTRCLEVBQUUsS0FBSyxDQUFDLDRCQUE0QjtnQkFDaEUsb0JBQW9CLEVBQUUsSUFBSSxDQUFDLHlCQUF5QixDQUFDLEtBQUssQ0FBQztnQkFDM0QsdUJBQXVCLEVBQUUsSUFBQSw4REFBNEIsRUFDbkQsS0FBSyxDQUNOO2dCQUNELDBCQUEwQixFQUFFLElBQUEsaUVBQStCLEVBR3pELElBQUksRUFBRSxLQUFLLENBQUM7Z0JBQ2QsU0FBUyxFQUFFLElBQUEsZ0RBQWMsRUFBdUQsS0FBSyxDQUFDO2dCQUN0RixnQkFBZ0IsRUFBRSxJQUFJLENBQUMscUJBQXFCLENBQUMsS0FBSyxDQUFDO2dCQUNuRCxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUk7YUFDakIsQ0FBQyxDQUFDO1lBRUgsT0FBTyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztTQUN4QjtRQUVEOzs7OztXQUtHO1FBQ0sseUJBQXlCLENBQUMsS0FBaUI7WUFDakQsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDcEIsT0FBTyxTQUFTLENBQUM7WUFDbkIsQ0FBQztZQUVELE9BQU8sRUFBRSxZQUFZLEVBQUUsS0FBSyxDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQUUsQ0FBQztTQUN0RDtRQUVEOzs7O1dBSUc7UUFDSyxxQkFBcUIsQ0FBQyxLQUFpQjtZQUM3QyxJQUFJLEtBQUssQ0FBQyxxQkFBcUIsS0FBSyxTQUFTLEVBQUUsQ0FBQztnQkFDOUMsT0FBTyxTQUFTLENBQUM7WUFDbkIsQ0FBQztZQUVELE9BQU8sRUFBRSxhQUFhLEVBQUUsS0FBSyxDQUFDLHFCQUFxQixDQUFDLE9BQU8sRUFBRSxDQUFDO1NBQy9EOztZQXRPVSx1REFBSzs7Ozs7QUFBTCxzQkFBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGNkayBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgdHlwZSAqIGFzIGVjciBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZWNyJztcbmltcG9ydCAqIGFzIGlhbSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcbmltcG9ydCB7IENmbkltYWdlIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWltYWdlYnVpbGRlcic7XG5pbXBvcnQgdHlwZSAqIGFzIGxvZ3MgZnJvbSAnYXdzLWNkay1saWIvYXdzLWxvZ3MnO1xuaW1wb3J0IHsgbWVtb2l6ZWRHZXR0ZXIsIGxpdCB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUvbGliL2hlbHBlcnMtaW50ZXJuYWwnO1xuaW1wb3J0IHsgYWRkQ29uc3RydWN0TWV0YWRhdGEsIE1ldGhvZE1ldGFkYXRhIH0gZnJvbSAnYXdzLWNkay1saWIvY29yZS9saWIvbWV0YWRhdGEtcmVzb3VyY2UnO1xuaW1wb3J0IHsgcHJvcGVydHlJbmplY3RhYmxlIH0gZnJvbSAnYXdzLWNkay1saWIvY29yZS9saWIvcHJvcC1pbmplY3RhYmxlJztcbmltcG9ydCB0eXBlIHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBCYXNlQ29udGFpbmVySW1hZ2UsIEJhc2VJbWFnZSB9IGZyb20gJy4vYmFzZS1pbWFnZSc7XG5pbXBvcnQgdHlwZSB7IElEaXN0cmlidXRpb25Db25maWd1cmF0aW9uIH0gZnJvbSAnLi9kaXN0cmlidXRpb24tY29uZmlndXJhdGlvbic7XG5pbXBvcnQgdHlwZSB7IElJbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb24gfSBmcm9tICcuL2luZnJhc3RydWN0dXJlLWNvbmZpZ3VyYXRpb24nO1xuaW1wb3J0IHsgSW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uIH0gZnJvbSAnLi9pbmZyYXN0cnVjdHVyZS1jb25maWd1cmF0aW9uJztcbmltcG9ydCB7IExBVEVTVF9WRVJTSU9OIH0gZnJvbSAnLi9wcml2YXRlL2NvbnN0YW50cyc7XG5pbXBvcnQge1xuICBidWlsZEltYWdlU2Nhbm5pbmdDb25maWd1cmF0aW9uLFxuICBidWlsZEltYWdlVGVzdHNDb25maWd1cmF0aW9uLFxuICBidWlsZFdvcmtmbG93cyxcbn0gZnJvbSAnLi9wcml2YXRlL2ltYWdlLWFuZC1waXBlbGluZS1wcm9wcy1oZWxwZXInO1xuaW1wb3J0IHsgZGVmYXVsdEV4ZWN1dGlvblJvbGVQb2xpY3ksIGdldEV4ZWN1dGlvblJvbGUgfSBmcm9tICcuL3ByaXZhdGUvcG9saWN5LWhlbHBlcic7XG5pbXBvcnQgdHlwZSB7IElSZWNpcGVCYXNlIH0gZnJvbSAnLi9yZWNpcGUtYmFzZSc7XG5pbXBvcnQgdHlwZSB7IFdvcmtmbG93Q29uZmlndXJhdGlvbiB9IGZyb20gJy4vd29ya2Zsb3cnO1xuXG5jb25zdCBJTUFHRV9TWU1CT0wgPSBTeW1ib2wuZm9yKCdAYXdzLWNkay9hd3MtaW1hZ2VidWlsZGVyLWFscGhhLkltYWdlJyk7XG5cbi8qKlxuICogQW4gRUMyIEltYWdlIEJ1aWxkZXIgSW1hZ2VcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJSW1hZ2UgZXh0ZW5kcyBjZGsuSVJlc291cmNlIHtcbiAgLyoqXG4gICAqIFRoZSBBUk4gb2YgdGhlIGltYWdlXG4gICAqXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHJlYWRvbmx5IGltYWdlQXJuOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBpbWFnZVxuICAgKlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSBpbWFnZU5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHZlcnNpb24gb2YgdGhlIGltYWdlXG4gICAqXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHJlYWRvbmx5IGltYWdlVmVyc2lvbjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBHcmFudCBjdXN0b20gYWN0aW9ucyB0byB0aGUgZ2l2ZW4gZ3JhbnRlZSBmb3IgdGhlIGltYWdlXG4gICAqXG4gICAqIEBwYXJhbSBncmFudGVlIFRoZSBwcmluY2lwYWxcbiAgICogQHBhcmFtIGFjdGlvbnMgVGhlIGxpc3Qgb2YgYWN0aW9uc1xuICAgKi9cbiAgZ3JhbnQoZ3JhbnRlZTogaWFtLklHcmFudGFibGUsIC4uLmFjdGlvbnM6IHN0cmluZ1tdKTogaWFtLkdyYW50O1xuXG4gIC8qKlxuICAgKiBHcmFudHMgdGhlIGRlZmF1bHQgcGVybWlzc2lvbnMgZm9yIGJ1aWxkaW5nIGFuIGltYWdlIHRvIHRoZSBwcm92aWRlZCBleGVjdXRpb24gcm9sZS5cbiAgICpcbiAgICogQHBhcmFtIGdyYW50ZWUgVGhlIGV4ZWN1dGlvbiByb2xlIHVzZWQgZm9yIHRoZSBpbWFnZSBidWlsZC5cbiAgICovXG4gIGdyYW50RGVmYXVsdEV4ZWN1dGlvblJvbGVQZXJtaXNzaW9ucyhncmFudGVlOiBpYW0uSUdyYW50YWJsZSk6IGlhbS5HcmFudFtdO1xuXG4gIC8qKlxuICAgKiBHcmFudCByZWFkIHBlcm1pc3Npb25zIHRvIHRoZSBnaXZlbiBncmFudGVlIGZvciB0aGUgaW1hZ2VcbiAgICpcbiAgICogQHBhcmFtIGdyYW50ZWUgVGhlIHByaW5jaXBhbFxuICAgKi9cbiAgZ3JhbnRSZWFkKGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlKTogaWFtLkdyYW50O1xuXG4gIC8qKlxuICAgKiBDb252ZXJ0cyB0aGUgaW1hZ2UgdG8gYSBCYXNlSW1hZ2UsIHRvIHVzZSBhcyB0aGUgcGFyZW50IGltYWdlIGluIGFuIGltYWdlIHJlY2lwZVxuICAgKi9cbiAgdG9CYXNlSW1hZ2UoKTogQmFzZUltYWdlO1xuXG4gIC8qKlxuICAgKiBDb252ZXJ0cyB0aGUgaW1hZ2UgdG8gYSBDb250YWluZXJCYXNlSW1hZ2UsIHRvIHVzZSBhcyB0aGUgcGFyZW50IGltYWdlIGluIGEgY29udGFpbmVyIHJlY2lwZVxuICAgKi9cbiAgdG9Db250YWluZXJCYXNlSW1hZ2UoKTogQmFzZUNvbnRhaW5lckltYWdlO1xufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGNyZWF0aW5nIGFuIEltYWdlIHJlc291cmNlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW1hZ2VQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgcmVjaXBlIHRoYXQgZGVmaW5lcyB0aGUgYmFzZSBpbWFnZSwgY29tcG9uZW50cywgYW5kIGN1c3RvbWl6YXRpb25zIHVzZWQgdG8gYnVpbGQgdGhlIGltYWdlLiBUaGlzIGNhbiBlaXRoZXIgYmVcbiAgICogYW4gaW1hZ2UgcmVjaXBlLCBvciBhIGNvbnRhaW5lciByZWNpcGUuXG4gICAqL1xuICByZWFkb25seSByZWNpcGU6IElSZWNpcGVCYXNlO1xuXG4gIC8qKlxuICAgKiBUaGUgaW5mcmFzdHJ1Y3R1cmUgY29uZmlndXJhdGlvbiB1c2VkIGZvciBidWlsZGluZyB0aGUgaW1hZ2UuXG4gICAqXG4gICAqIEEgZGVmYXVsdCBpbmZyYXN0cnVjdHVyZSBjb25maWd1cmF0aW9uIHdpbGwgYmUgdXNlZCBpZiBvbmUgaXMgbm90IHByb3ZpZGVkLlxuICAgKlxuICAgKiBUaGUgZGVmYXVsdCBjb25maWd1cmF0aW9uIHdpbGwgY3JlYXRlIGFuIGluc3RhbmNlIHByb2ZpbGUgYW5kIHJvbGUgd2l0aCBtaW5pbWFsIHBlcm1pc3Npb25zIG5lZWRlZCB0byBidWlsZCB0aGVcbiAgICogaW1hZ2UsIGF0dGFjaGVkIHRvIHRoZSBFQzIgaW5zdGFuY2UuXG4gICAqXG4gICAqIElNRFN2MiB3aWxsIGJlIHJlcXVpcmVkIGJ5IGRlZmF1bHQgb24gdGhlIGluc3RhbmNlcyB1c2VkIHRvIGJ1aWxkIGFuZCB0ZXN0IHRoZSBpbWFnZS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBhbiBpbmZyYXN0cnVjdHVyZSBjb25maWd1cmF0aW9uIHdpbGwgYmUgY3JlYXRlZCB3aXRoIHRoZSBkZWZhdWx0IHNldHRpbmdzXG4gICAqL1xuICByZWFkb25seSBpbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb24/OiBJSW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uO1xuXG4gIC8qKlxuICAgKiBUaGUgZGlzdHJpYnV0aW9uIGNvbmZpZ3VyYXRpb24gdXNlZCBmb3IgZGlzdHJpYnV0aW5nIHRoZSBpbWFnZS5cbiAgICpcbiAgICogQGRlZmF1bHQgTm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgZGlzdHJpYnV0aW9uQ29uZmlndXJhdGlvbj86IElEaXN0cmlidXRpb25Db25maWd1cmF0aW9uO1xuXG4gIC8qKlxuICAgKiBUaGUgbGlzdCBvZiB3b3JrZmxvdyBjb25maWd1cmF0aW9ucyB1c2VkIHRvIGJ1aWxkIHRoZSBpbWFnZS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBJbWFnZSBCdWlsZGVyIHdpbGwgdXNlIGEgZGVmYXVsdCBzZXQgb2Ygd29ya2Zsb3dzIGZvciB0aGUgYnVpbGQgdG8gYnVpbGQsIHRlc3QsIGFuZCBkaXN0cmlidXRlIHRoZVxuICAgKiBpbWFnZVxuICAgKi9cbiAgcmVhZG9ubHkgd29ya2Zsb3dzPzogV29ya2Zsb3dDb25maWd1cmF0aW9uW107XG5cbiAgLyoqXG4gICAqIFRoZSBleGVjdXRpb24gcm9sZSB1c2VkIHRvIHBlcmZvcm0gd29ya2Zsb3cgYWN0aW9ucyB0byBidWlsZCB0aGUgaW1hZ2UuXG4gICAqXG4gICAqIEJ5IGRlZmF1bHQsIHRoZSBJbWFnZSBCdWlsZGVyIFNlcnZpY2UgTGlua2VkIFJvbGUgKFNMUikgd2lsbCBiZSBjcmVhdGVkIGF1dG9tYXRpY2FsbHkgYW5kIHVzZWQgYXMgdGhlIGV4ZWN1dGlvblxuICAgKiByb2xlLiBIb3dldmVyLCB3aGVuIHByb3ZpZGluZyBhIGN1c3RvbSBzZXQgb2YgaW1hZ2Ugd29ya2Zsb3dzIGZvciB0aGUgaW1hZ2UsIGFuIGV4ZWN1dGlvbiByb2xlIHdpbGwgYmVcbiAgICogZ2VuZXJhdGVkIHdpdGggdGhlIG1pbmltYWwgcGVybWlzc2lvbnMgbmVlZGVkIHRvIGV4ZWN1dGUgdGhlIHdvcmtmbG93cy5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBJbWFnZSBCdWlsZGVyIHdpbGwgdXNlIHRoZSBTTFIgaWYgcG9zc2libGUuIE90aGVyd2lzZSwgYW4gZXhlY3V0aW9uIHJvbGUgd2lsbCBiZSBnZW5lcmF0ZWRcbiAgICovXG4gIHJlYWRvbmx5IGV4ZWN1dGlvblJvbGU/OiBpYW0uSVJvbGU7XG5cbiAgLyoqXG4gICAqIFRoZSBsb2cgZ3JvdXAgdG8gdXNlIGZvciB0aGUgaW1hZ2UuIEJ5IGRlZmF1bHQsIGEgbG9nIGdyb3VwIHdpbGwgYmUgY3JlYXRlZCB3aXRoIHRoZSBmb3JtYXRcbiAgICogYC9hd3MvaW1hZ2VidWlsZGVyLzxpbWFnZS1uYW1lPmBcbiAgICpcbiAgICogQGRlZmF1bHQgLSBhIGxvZyBncm91cCB3aWxsIGJlIGNyZWF0ZWRcbiAgICovXG4gIHJlYWRvbmx5IGxvZ0dyb3VwPzogbG9ncy5JTG9nR3JvdXA7XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIEltYWdlIEJ1aWxkZXIga2VlcHMgYSBzbmFwc2hvdCBvZiB0aGUgdnVsbmVyYWJpbGl0eSBzY2FucyB0aGF0IEFtYXpvbiBJbnNwZWN0b3IgcnVucyBhZ2FpbnN0IHRoZVxuICAgKiBidWlsZCBpbnN0YW5jZSB3aGVuIHlvdSBjcmVhdGUgYSBuZXcgaW1hZ2UuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBpbWFnZVNjYW5uaW5nRW5hYmxlZD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBjb250YWluZXIgcmVwb3NpdG9yeSB0aGF0IEFtYXpvbiBJbnNwZWN0b3Igc2NhbnMgdG8gaWRlbnRpZnkgZmluZGluZ3MgZm9yIHlvdXIgY29udGFpbmVyIGltYWdlcy4gSWYgYVxuICAgKiByZXBvc2l0b3J5IGlzIG5vdCBwcm92aWRlZCwgSW1hZ2UgQnVpbGRlciBjcmVhdGVzIGEgcmVwb3NpdG9yeSBuYW1lZCBgaW1hZ2UtYnVpbGRlci1pbWFnZS1zY2FubmluZy1yZXBvc2l0b3J5YFxuICAgKiBmb3IgdnVsbmVyYWJpbGl0eSBzY2FubmluZy5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBpZiBzY2FubmluZyBpcyBlbmFibGVkLCBhIHJlcG9zaXRvcnkgd2lsbCBiZSBjcmVhdGVkIGJ5IEltYWdlIEJ1aWxkZXIgaWYgb25lIGlzIG5vdCBwcm92aWRlZFxuICAgKi9cbiAgcmVhZG9ubHkgaW1hZ2VTY2FubmluZ0VjclJlcG9zaXRvcnk/OiBlY3IuSVJlcG9zaXRvcnk7XG5cbiAgLyoqXG4gICAqIFRoZSB0YWdzIGZvciBJbWFnZSBCdWlsZGVyIHRvIGFwcGx5IHRvIHRoZSBvdXRwdXQgY29udGFpbmVyIGltYWdlIHRoYXQgQW1hem9uIEluc3BlY3RvciBzY2Fucy5cbiAgICpcbiAgICogQGRlZmF1bHQgTm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgaW1hZ2VTY2FubmluZ0VjclRhZ3M/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogSWYgZW5hYmxlZCwgY29sbGVjdHMgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgaW1hZ2UgYmVpbmcgY3JlYXRlZCwgaW5jbHVkaW5nIHRoZSBvcGVyYXRpbmcgc3lzdGVtIChPUylcbiAgICogdmVyc2lvbiBhbmQgcGFja2FnZSBsaXN0IGZvciB0aGUgQU1JLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBlbmhhbmNlZEltYWdlTWV0YWRhdGFFbmFibGVkPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciB0byBydW4gdGVzdHMgYWZ0ZXIgYnVpbGRpbmcgYW4gaW1hZ2UuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGltYWdlVGVzdHNFbmFibGVkPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIGV4ZWN1dGlvbiByb2xlIHRvIHVzZSBmb3IgZGVsZXRpbmcgdGhlIGltYWdlIGFzIHdlbGwgYXMgdGhlIHVuZGVybHlpbmcgcmVzb3VyY2VzLCBzdWNoIGFzIHRoZSBBTUlzLCBzbmFwc2hvdHMsXG4gICAqIGFuZCBjb250YWluZXJzLiBUaGlzIHJvbGUgc2hvdWxkIGNvbnRhaW4gcmVzb3VyY2UgbGlmZWN5Y2xlIHBlcm1pc3Npb25zIHJlcXVpcmVkIHRvIGRlbGV0ZSB0aGUgdW5kZXJseWluZ1xuICAgKiBBTUlzL2NvbnRhaW5lcnMuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gZXhlY3V0aW9uIHJvbGUuIE9ubHkgdGhlIEltYWdlIEJ1aWxkZXIgaW1hZ2Ugd2lsbCBiZSBkZWxldGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgZGVsZXRpb25FeGVjdXRpb25Sb2xlPzogaWFtLklSb2xlO1xuXG4gIC8qKlxuICAgKiBUaGUgdGFncyB0byBhcHBseSB0byB0aGUgaW1hZ2VcbiAgICpcbiAgICogQGRlZmF1bHQgTm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgdGFncz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgYW4gRUMyIEltYWdlIEJ1aWxkZXIgaW1hZ2VcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbWFnZUF0dHJpYnV0ZXMge1xuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgaW1hZ2VcbiAgICpcbiAgICogQGRlZmF1bHQgLSBkZXJpdmVkIGZyb20gdGhlIGltYWdlTmFtZVxuICAgKi9cbiAgcmVhZG9ubHkgaW1hZ2VBcm4/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBpbWFnZVxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGRlcml2ZWQgZnJvbSB0aGUgaW1hZ2VBcm5cbiAgICovXG4gIHJlYWRvbmx5IGltYWdlTmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHZlcnNpb24gb2YgdGhlIGltYWdlXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIHRoZSBpbWFnZSwgeC54LnhcbiAgICovXG4gIHJlYWRvbmx5IGltYWdlVmVyc2lvbj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBUaGUgYXJjaGl0ZWN0dXJlIG9mIHRoZSBpbWFnZVxuICovXG5leHBvcnQgZW51bSBJbWFnZUFyY2hpdGVjdHVyZSB7XG4gIC8qKlxuICAgKiA2NCBiaXQgYXJjaGl0ZWN0dXJlIHdpdGggdGhlIEFSTSBpbnN0cnVjdGlvbiBzZXRcbiAgICovXG4gIEFSTTY0ID0gJ2FybTY0JyxcblxuICAvKipcbiAgICogNjQgYml0IGFyY2hpdGVjdHVyZSB3aXRoIHg4NiBpbnN0cnVjdGlvbiBzZXRcbiAgICovXG4gIFg4Nl82NCA9ICd4ODZfNjQnLFxufVxuXG4vKipcbiAqIFRoZSB0eXBlIG9mIHRoZSBpbWFnZVxuICovXG5leHBvcnQgZW51bSBJbWFnZVR5cGUge1xuICAvKipcbiAgICogSW5kaWNhdGVzIHRoZSBpbWFnZSBwcm9kdWNlZCBpcyBhbiBBTUlcbiAgICovXG4gIEFNSSA9ICdBTUknLFxuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgdGhlIGltYWdlIHByb2R1Y2VkIGlzIGEgRG9ja2VyIGltYWdlXG4gICAqL1xuICBET0NLRVIgPSAnRE9DS0VSJyxcbn1cblxuLyoqXG4gKiBBIG5ldyBvciBpbXBvcnRlZCBJbWFnZVxuICovXG5hYnN0cmFjdCBjbGFzcyBJbWFnZUJhc2UgZXh0ZW5kcyBjZGsuUmVzb3VyY2UgaW1wbGVtZW50cyBJSW1hZ2Uge1xuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgaW1hZ2VcbiAgICovXG4gIGFic3RyYWN0IHJlYWRvbmx5IGltYWdlQXJuOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBpbWFnZVxuICAgKi9cbiAgYWJzdHJhY3QgcmVhZG9ubHkgaW1hZ2VOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSB2ZXJzaW9uIG9mIHRoZSBpbWFnZVxuICAgKi9cbiAgYWJzdHJhY3QgcmVhZG9ubHkgaW1hZ2VWZXJzaW9uOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEdyYW50IGN1c3RvbSBhY3Rpb25zIHRvIHRoZSBnaXZlbiBncmFudGVlIGZvciB0aGUgaW1hZ2VcbiAgICpcbiAgICogW2Rpc2FibGUtYXdzbGludDpuby1ncmFudHNdXG4gICAqXG4gICAqIEBwYXJhbSBncmFudGVlIFRoZSBwcmluY2lwYWxcbiAgICogQHBhcmFtIGFjdGlvbnMgVGhlIGxpc3Qgb2YgYWN0aW9uc1xuICAgKi9cbiAgcHVibGljIGdyYW50KGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlLCAuLi5hY3Rpb25zOiBzdHJpbmdbXSk6IGlhbS5HcmFudCB7XG4gICAgcmV0dXJuIGlhbS5HcmFudC5hZGRUb1ByaW5jaXBhbCh7XG4gICAgICBncmFudGVlLFxuICAgICAgcmVzb3VyY2VBcm5zOiBbdGhpcy5pbWFnZUFybl0sXG4gICAgICBhY3Rpb25zLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyB0aGUgZGVmYXVsdCBwZXJtaXNzaW9ucyBmb3IgYnVpbGRpbmcgYW4gaW1hZ2UgdG8gdGhlIHByb3ZpZGVkIGV4ZWN1dGlvbiByb2xlLlxuICAgKlxuICAgKiBbZGlzYWJsZS1hd3NsaW50Om5vLWdyYW50c11cbiAgICpcbiAgICogQHBhcmFtIGdyYW50ZWUgVGhlIGV4ZWN1dGlvbiByb2xlIHVzZWQgZm9yIHRoZSBpbWFnZSBidWlsZC5cbiAgICovXG4gIHB1YmxpYyBncmFudERlZmF1bHRFeGVjdXRpb25Sb2xlUGVybWlzc2lvbnMoZ3JhbnRlZTogaWFtLklHcmFudGFibGUpOiBpYW0uR3JhbnRbXSB7XG4gICAgY29uc3QgcG9saWNpZXMgPSBkZWZhdWx0RXhlY3V0aW9uUm9sZVBvbGljeSh0aGlzKTtcbiAgICByZXR1cm4gcG9saWNpZXMubWFwKChwb2xpY3kpID0+XG4gICAgICBpYW0uR3JhbnQuYWRkVG9QcmluY2lwYWwoe1xuICAgICAgICBncmFudGVlOiBncmFudGVlLFxuICAgICAgICByZXNvdXJjZUFybnM6IHBvbGljeS5yZXNvdXJjZXMsXG4gICAgICAgIGFjdGlvbnM6IHBvbGljeS5hY3Rpb25zLFxuICAgICAgICBjb25kaXRpb25zOiBwb2xpY3kuY29uZGl0aW9ucyxcbiAgICAgICAgc2NvcGU6IHRoaXMsXG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50IHJlYWQgcGVybWlzc2lvbnMgdG8gdGhlIGdpdmVuIGdyYW50ZWUgZm9yIHRoZSBpbWFnZVxuICAgKlxuICAgKiBbZGlzYWJsZS1hd3NsaW50Om5vLWdyYW50c11cbiAgICpcbiAgICogQHBhcmFtIGdyYW50ZWUgVGhlIHByaW5jaXBhbFxuICAgKi9cbiAgcHVibGljIGdyYW50UmVhZChncmFudGVlOiBpYW0uSUdyYW50YWJsZSk6IGlhbS5HcmFudCB7XG4gICAgcmV0dXJuIHRoaXMuZ3JhbnQoZ3JhbnRlZSwgJ2ltYWdlYnVpbGRlcjpHZXRJbWFnZScpO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnRzIHRoZSBpbWFnZSB0byBhIEJhc2VJbWFnZSwgdG8gdXNlIGFzIHRoZSBwYXJlbnQgaW1hZ2UgaW4gYW4gaW1hZ2UgcmVjaXBlXG4gICAqL1xuICBwdWJsaWMgdG9CYXNlSW1hZ2UoKTogQmFzZUltYWdlIHtcbiAgICByZXR1cm4gQmFzZUltYWdlLmZyb21JbWFnZSh0aGlzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0cyB0aGUgaW1hZ2UgdG8gYSBDb250YWluZXJCYXNlSW1hZ2UsIHRvIHVzZSBhcyB0aGUgcGFyZW50IGltYWdlIGluIGEgY29udGFpbmVyIHJlY2lwZVxuICAgKi9cbiAgcHVibGljIHRvQ29udGFpbmVyQmFzZUltYWdlKCk6IEJhc2VDb250YWluZXJJbWFnZSB7XG4gICAgcmV0dXJuIEJhc2VDb250YWluZXJJbWFnZS5mcm9tSW1hZ2UodGhpcyk7XG4gIH1cbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGFuIEVDMiBJbWFnZSBCdWlsZGVyIEltYWdlLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2ltYWdlYnVpbGRlci9sYXRlc3QvdXNlcmd1aWRlL2NyZWF0ZS1pbWFnZXMuaHRtbFxuICovXG5AcHJvcGVydHlJbmplY3RhYmxlXG5leHBvcnQgY2xhc3MgSW1hZ2UgZXh0ZW5kcyBJbWFnZUJhc2Uge1xuICAvKiogVW5pcXVlbHkgaWRlbnRpZmllcyB0aGlzIGNsYXNzLiAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFBST1BFUlRZX0lOSkVDVElPTl9JRDogc3RyaW5nID0gJ0Bhd3MtY2RrLmF3cy1pbWFnZWJ1aWxkZXItYWxwaGEuSW1hZ2UnO1xuXG4gIC8qKlxuICAgKiBJbXBvcnQgYW4gZXhpc3RpbmcgaW1hZ2UgZ2l2ZW4gaXRzIEFSTlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tSW1hZ2VBcm4oc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgaW1hZ2VBcm46IHN0cmluZyk6IElJbWFnZSB7XG4gICAgcmV0dXJuIHRoaXMuZnJvbUltYWdlQXR0cmlidXRlcyhzY29wZSwgaWQsIHsgaW1hZ2VBcm4gfSk7XG4gIH1cblxuICAvKipcbiAgICogSW1wb3J0IGFuIGV4aXN0aW5nIGltYWdlIGdpdmVuIGl0cyBuYW1lLiBUaGUgcHJvdmlkZWQgbmFtZSBtdXN0IGJlIG5vcm1hbGl6ZWQgYnkgY29udmVydGluZyBhbGwgYWxwaGFiZXRpY2FsXG4gICAqIGNoYXJhY3RlcnMgdG8gbG93ZXJjYXNlLCBhbmQgcmVwbGFjaW5nIGFsbCBzcGFjZXMgYW5kIHVuZGVyc2NvcmVzIHdpdGggaHlwaGVucy5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbUltYWdlTmFtZShzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBpbWFnZU5hbWU6IHN0cmluZyk6IElJbWFnZSB7XG4gICAgcmV0dXJuIHRoaXMuZnJvbUltYWdlQXR0cmlidXRlcyhzY29wZSwgaWQsIHsgaW1hZ2VOYW1lIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEltcG9ydCBhbiBleGlzdGluZyBpbWFnZSBieSBwcm92aWRpbmcgaXRzIGF0dHJpYnV0ZXMuIElmIHRoZSBpbWFnZSBuYW1lIGlzIHByb3ZpZGVkIGFzIGFuIGF0dHJpYnV0ZSwgaXQgbXVzdCBiZVxuICAgKiBub3JtYWxpemVkIGJ5IGNvbnZlcnRpbmcgYWxsIGFscGhhYmV0aWNhbCBjaGFyYWN0ZXJzIHRvIGxvd2VyY2FzZSwgYW5kIHJlcGxhY2luZyBhbGwgc3BhY2VzIGFuZCB1bmRlcnNjb3JlcyB3aXRoXG4gICAqIGh5cGhlbnMuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21JbWFnZUF0dHJpYnV0ZXMoc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgYXR0cnM6IEltYWdlQXR0cmlidXRlcyk6IElJbWFnZSB7XG4gICAgaWYgKCFhdHRycy5pbWFnZUFybiAmJiAhYXR0cnMuaW1hZ2VOYW1lKSB7XG4gICAgICB0aHJvdyBuZXcgY2RrLlZhbGlkYXRpb25FcnJvcihsaXRgRWl0aGVySW1hZ2VBcm5PckltYWdlTmFtZVJlcXVpcmVkYCwgJ2VpdGhlciBpbWFnZUFybiBvciBpbWFnZU5hbWUgaXMgcmVxdWlyZWQnLCBzY29wZSk7XG4gICAgfVxuXG4gICAgY29uc3QgaW1hZ2VBcm4gPVxuICAgICAgYXR0cnMuaW1hZ2VBcm4gPz9cbiAgICAgIGNkay5TdGFjay5vZihzY29wZSkuZm9ybWF0QXJuKHtcbiAgICAgICAgc2VydmljZTogJ2ltYWdlYnVpbGRlcicsXG4gICAgICAgIHJlc291cmNlOiAnaW1hZ2UnLFxuICAgICAgICByZXNvdXJjZU5hbWU6IGAke2F0dHJzLmltYWdlTmFtZX0vJHthdHRycy5pbWFnZVZlcnNpb24gPz8gTEFURVNUX1ZFUlNJT059YCxcbiAgICAgIH0pO1xuXG4gICAgY29uc3QgW2ltYWdlTmFtZSwgaW1hZ2VWZXJzaW9uXSA9ICgoKSA9PiB7XG4gICAgICBpZiAoYXR0cnMuaW1hZ2VOYW1lKSB7XG4gICAgICAgIHJldHVybiBbYXR0cnMuaW1hZ2VOYW1lLCBhdHRycy5pbWFnZVZlcnNpb24gPz8gTEFURVNUX1ZFUlNJT05dO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBpbWFnZU5hbWVWZXJzaW9uID0gY2RrLlN0YWNrLm9mKHNjb3BlKS5zcGxpdEFybihpbWFnZUFybiwgY2RrLkFybkZvcm1hdC5TTEFTSF9SRVNPVVJDRV9OQU1FKS5yZXNvdXJjZU5hbWUhO1xuXG4gICAgICBjb25zdCBpbWFnZU5hbWVWZXJzaW9uU3BsaXQgPSBjZGsuRm4uc3BsaXQoJy8nLCBpbWFnZU5hbWVWZXJzaW9uKTtcbiAgICAgIHJldHVybiBbY2RrLkZuLnNlbGVjdCgwLCBpbWFnZU5hbWVWZXJzaW9uU3BsaXQpLCBjZGsuRm4uc2VsZWN0KDEsIGltYWdlTmFtZVZlcnNpb25TcGxpdCldO1xuICAgIH0pKCk7XG5cbiAgICBjbGFzcyBJbXBvcnQgZXh0ZW5kcyBJbWFnZUJhc2Uge1xuICAgICAgcHVibGljIHJlYWRvbmx5IGltYWdlQXJuID0gaW1hZ2VBcm47XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgaW1hZ2VOYW1lID0gaW1hZ2VOYW1lO1xuICAgICAgcHVibGljIHJlYWRvbmx5IGltYWdlVmVyc2lvbiA9IGltYWdlVmVyc2lvbjtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IEltcG9ydChzY29wZSwgaWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiB3aGV0aGVyIHRoZSBnaXZlbiBvYmplY3QgaXMgYW4gSW1hZ2UuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGlzSW1hZ2UoeDogYW55KTogeCBpcyBJbWFnZSB7XG4gICAgcmV0dXJuIHggIT09IG51bGwgJiYgdHlwZW9mIHggPT09ICdvYmplY3QnICYmIElNQUdFX1NZTUJPTCBpbiB4O1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBpbmZyYXN0cnVjdHVyZSBjb25maWd1cmF0aW9uIHVzZWQgZm9yIHRoZSBpbWFnZSBidWlsZFxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGluZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvbjogSUluZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvbjtcblxuICAvKipcbiAgICogVGhlIGV4ZWN1dGlvbiByb2xlIHVzZWQgZm9yIHRoZSBpbWFnZSBidWlsZFxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGV4ZWN1dGlvblJvbGU/OiBpYW0uSVJvbGU7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBwcm9wczogSW1hZ2VQcm9wcztcbiAgcHJpdmF0ZSByZXNvdXJjZTogQ2ZuSW1hZ2U7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBJbWFnZVByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcbiAgICAvLyBFbmhhbmNlZCBDREsgQW5hbHl0aWNzIFRlbGVtZXRyeVxuICAgIGFkZENvbnN0cnVjdE1ldGFkYXRhKHRoaXMsIHByb3BzKTtcblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCBJTUFHRV9TWU1CT0wsIHsgdmFsdWU6IHRydWUgfSk7XG5cbiAgICB0aGlzLnByb3BzID0gcHJvcHM7XG5cbiAgICB0aGlzLmluZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvbiA9XG4gICAgICBwcm9wcy5pbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb24gPz8gbmV3IEluZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvbih0aGlzLCAnSW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uJyk7XG5cbiAgICB0aGlzLmV4ZWN1dGlvblJvbGUgPSBnZXRFeGVjdXRpb25Sb2xlKFxuICAgICAgdGhpcyxcbiAgICAgIChncmFudGVlOiBpYW0uSUdyYW50YWJsZSkgPT4gdGhpcy5ncmFudERlZmF1bHRFeGVjdXRpb25Sb2xlUGVybWlzc2lvbnMoZ3JhbnRlZSksXG4gICAgICB7XG4gICAgICAgIC4uLnByb3BzLFxuICAgICAgICBpbWFnZUxvZ0dyb3VwOiBwcm9wcy5sb2dHcm91cCxcbiAgICAgIH0sXG4gICAgKTtcblxuICAgIGNvbnN0IFtpbWFnZSwgX10gPSB0aGlzLmNyZWF0ZUltYWdlRnJvbVJlY2lwZShwcm9wcyk7XG4gICAgdGhpcy5yZXNvdXJjZSA9IGltYWdlO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyB0aGUgZGVmYXVsdCBwZXJtaXNzaW9ucyBmb3IgYnVpbGRpbmcgYW4gaW1hZ2UgdG8gdGhlIHByb3ZpZGVkIGV4ZWN1dGlvbiByb2xlLlxuICAgKlxuICAgKiBbZGlzYWJsZS1hd3NsaW50Om5vLWdyYW50c11cbiAgICpcbiAgICogQHBhcmFtIGdyYW50ZWUgVGhlIGV4ZWN1dGlvbiByb2xlIHVzZWQgZm9yIHRoZSBpbWFnZSBidWlsZC5cbiAgICovXG4gIEBNZXRob2RNZXRhZGF0YSgpXG4gIHB1YmxpYyBncmFudERlZmF1bHRFeGVjdXRpb25Sb2xlUGVybWlzc2lvbnMoZ3JhbnRlZTogaWFtLklHcmFudGFibGUpOiBpYW0uR3JhbnRbXSB7XG4gICAgY29uc3QgcG9saWNpZXMgPSBkZWZhdWx0RXhlY3V0aW9uUm9sZVBvbGljeSh0aGlzLCB0aGlzLnByb3BzKTtcbiAgICByZXR1cm4gcG9saWNpZXMubWFwKChwb2xpY3kpID0+XG4gICAgICBpYW0uR3JhbnQuYWRkVG9QcmluY2lwYWwoe1xuICAgICAgICBncmFudGVlOiBncmFudGVlLFxuICAgICAgICByZXNvdXJjZUFybnM6IHBvbGljeS5yZXNvdXJjZXMsXG4gICAgICAgIGFjdGlvbnM6IHBvbGljeS5hY3Rpb25zLFxuICAgICAgICBjb25kaXRpb25zOiBwb2xpY3kuY29uZGl0aW9ucyxcbiAgICAgICAgc2NvcGU6IHRoaXMsXG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgQG1lbW9pemVkR2V0dGVyXG4gIHB1YmxpYyBnZXQgaW1hZ2VOYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0UmVzb3VyY2VOYW1lQXR0cmlidXRlKHRoaXMucmVzb3VyY2UuYXR0ck5hbWUpO1xuICB9XG5cbiAgQG1lbW9pemVkR2V0dGVyXG4gIHB1YmxpYyBnZXQgaW1hZ2VBcm4oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5yZXNvdXJjZS5hdHRyQXJuO1xuICB9XG5cbiAgQG1lbW9pemVkR2V0dGVyXG4gIHB1YmxpYyBnZXQgaW1hZ2VWZXJzaW9uKCk6IHN0cmluZyB7XG4gICAgY29uc3QgcmVjaXBlID0gdGhpcy5wcm9wcy5yZWNpcGU7XG4gICAgaWYgKHJlY2lwZS5faXNJbWFnZVJlY2lwZSgpKSB7XG4gICAgICByZXR1cm4gcmVjaXBlLmltYWdlUmVjaXBlVmVyc2lvbjtcbiAgICB9IGVsc2UgaWYgKHJlY2lwZS5faXNDb250YWluZXJSZWNpcGUoKSkge1xuICAgICAgcmV0dXJuIHJlY2lwZS5jb250YWluZXJSZWNpcGVWZXJzaW9uO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgY2RrLlZhbGlkYXRpb25FcnJvcihsaXRgSW52YWxpZFJlY2lwZVR5cGVgLCAncmVjaXBlIG11c3QgZWl0aGVyIGJlIGFuIGltYWdlIHJlY2lwZSBvciBjb250YWluZXIgcmVjaXBlJywgdGhpcyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBBTUkgSUQgb2YgdGhlIEVDMiBBTUksIG9yIFVSSSBmb3IgdGhlIGNvbnRhaW5lclxuICAgKlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICBAbWVtb2l6ZWRHZXR0ZXJcbiAgcHVibGljIGdldCBpbWFnZUlkKCk6IHN0cmluZyB7XG4gICAgY29uc3QgcmVjaXBlID0gdGhpcy5wcm9wcy5yZWNpcGU7XG4gICAgaWYgKHJlY2lwZS5faXNJbWFnZVJlY2lwZSgpKSB7XG4gICAgICByZXR1cm4gdGhpcy5yZXNvdXJjZS5hdHRySW1hZ2VJZDtcbiAgICB9IGVsc2UgaWYgKHJlY2lwZS5faXNDb250YWluZXJSZWNpcGUoKSkge1xuICAgICAgcmV0dXJuIHRoaXMucmVzb3VyY2UuYXR0ckltYWdlVXJpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgY2RrLlZhbGlkYXRpb25FcnJvcihsaXRgSW52YWxpZFJlY2lwZVR5cGVgLCAncmVjaXBlIG11c3QgZWl0aGVyIGJlIGFuIGltYWdlIHJlY2lwZSBvciBjb250YWluZXIgcmVjaXBlJywgdGhpcyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBDZm5JbWFnZSByZXNvdXJjZSBmcm9tIHRoZSByZWNpcGUgYW5kIHByb3BzIHByb3ZpZGVkLlxuICAgKlxuICAgKiBAcGFyYW0gcHJvcHMgUHJvcHMgaW5wdXQgZm9yIHRoZSBjb25zdHJ1Y3RcbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgY3JlYXRlSW1hZ2VGcm9tUmVjaXBlKHByb3BzOiBJbWFnZVByb3BzKTogW0NmbkltYWdlLCBJUmVjaXBlQmFzZV0ge1xuICAgIGNvbnN0IHJlY2lwZSA9IHByb3BzLnJlY2lwZTtcbiAgICBpZiAoSW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uLmlzSW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uKHRoaXMuaW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uKSkge1xuICAgICAgdGhpcy5pbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb24uX2JpbmQoeyBpc0NvbnRhaW5lckJ1aWxkOiByZWNpcGUuX2lzQ29udGFpbmVyUmVjaXBlKCkgfSk7XG4gICAgfVxuXG4gICAgaWYgKHJlY2lwZS5faXNJbWFnZVJlY2lwZSgpICYmIHJlY2lwZS5faXNDb250YWluZXJSZWNpcGUoKSkge1xuICAgICAgdGhyb3cgbmV3IGNkay5WYWxpZGF0aW9uRXJyb3IobGl0YFJlY2lwZUNhbm5vdEJlQm90aEltYWdlQW5kQ29udGFpbmVyYCwgJ3RoZSByZWNpcGUgY2Fubm90IGJlIGJvdGggYW4gSUltYWdlUmVjaXBlIGFuZCBhbiBJQ29udGFpbmVyUmVjaXBlJywgdGhpcyk7XG4gICAgfVxuXG4gICAgaWYgKCFyZWNpcGUuX2lzSW1hZ2VSZWNpcGUoKSAmJiAhcmVjaXBlLl9pc0NvbnRhaW5lclJlY2lwZSgpKSB7XG4gICAgICB0aHJvdyBuZXcgY2RrLlZhbGlkYXRpb25FcnJvcihsaXRgUmVjaXBlTXVzdEJlSW1hZ2VPckNvbnRhaW5lcmAsICd0aGUgcmVjaXBlIG11c3QgZWl0aGVyIGJlIGFuIElJbWFnZVJlY2lwZSBvciBJQ29udGFpbmVyUmVjaXBlJywgdGhpcyk7XG4gICAgfVxuXG4gICAgY29uc3QgaW1hZ2UgPSBuZXcgQ2ZuSW1hZ2UodGhpcywgJ1Jlc291cmNlJywge1xuICAgICAgLi4uKHJlY2lwZS5faXNJbWFnZVJlY2lwZSgpICYmIHsgaW1hZ2VSZWNpcGVBcm46IHJlY2lwZS5pbWFnZVJlY2lwZUFybiB9KSxcbiAgICAgIC4uLihyZWNpcGUuX2lzQ29udGFpbmVyUmVjaXBlKCkgJiYgeyBjb250YWluZXJSZWNpcGVBcm46IHJlY2lwZS5jb250YWluZXJSZWNpcGVBcm4gfSksXG4gICAgICBpbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb25Bcm46IHRoaXMuaW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uLmluZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvbkFybixcbiAgICAgIGRpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb25Bcm46IHByb3BzLmRpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb24/LmRpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb25Bcm4sXG4gICAgICBleGVjdXRpb25Sb2xlOiB0aGlzLmV4ZWN1dGlvblJvbGU/LnJvbGVBcm4sXG4gICAgICBlbmhhbmNlZEltYWdlTWV0YWRhdGFFbmFibGVkOiBwcm9wcy5lbmhhbmNlZEltYWdlTWV0YWRhdGFFbmFibGVkLFxuICAgICAgbG9nZ2luZ0NvbmZpZ3VyYXRpb246IHRoaXMuYnVpbGRMb2dnaW5nQ29uZmlndXJhdGlvbihwcm9wcyksXG4gICAgICBpbWFnZVRlc3RzQ29uZmlndXJhdGlvbjogYnVpbGRJbWFnZVRlc3RzQ29uZmlndXJhdGlvbjxJbWFnZVByb3BzLCBDZm5JbWFnZS5JbWFnZVRlc3RzQ29uZmlndXJhdGlvblByb3BlcnR5PihcbiAgICAgICAgcHJvcHMsXG4gICAgICApLFxuICAgICAgaW1hZ2VTY2FubmluZ0NvbmZpZ3VyYXRpb246IGJ1aWxkSW1hZ2VTY2FubmluZ0NvbmZpZ3VyYXRpb248XG4gICAgICAgIEltYWdlUHJvcHMsXG4gICAgICAgIENmbkltYWdlLkltYWdlU2Nhbm5pbmdDb25maWd1cmF0aW9uUHJvcGVydHlcbiAgICAgID4odGhpcywgcHJvcHMpLFxuICAgICAgd29ya2Zsb3dzOiBidWlsZFdvcmtmbG93czxJbWFnZVByb3BzLCBDZm5JbWFnZS5Xb3JrZmxvd0NvbmZpZ3VyYXRpb25Qcm9wZXJ0eVtdPihwcm9wcyksXG4gICAgICBkZWxldGlvblNldHRpbmdzOiB0aGlzLmJ1aWxkRGVsZXRpb25TZXR0aW5ncyhwcm9wcyksXG4gICAgICB0YWdzOiBwcm9wcy50YWdzLFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIFtpbWFnZSwgcmVjaXBlXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZXMgdGhlIGxvZ2dpbmdDb25maWd1cmF0aW9uIHByb3BlcnR5IGludG8gdGhlIGBMb2dnaW5nQ29uZmlndXJhdGlvbmAgdHlwZSBpbiB0aGUgQ2xvdWRGb3JtYXRpb24gTDFcbiAgICogZGVmaW5pdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIHByb3BzIFByb3BzIGlucHV0IGZvciB0aGUgY29uc3RydWN0XG4gICAqL1xuICBwcml2YXRlIGJ1aWxkTG9nZ2luZ0NvbmZpZ3VyYXRpb24ocHJvcHM6IEltYWdlUHJvcHMpOiBDZm5JbWFnZS5JbWFnZUxvZ2dpbmdDb25maWd1cmF0aW9uUHJvcGVydHkgfCB1bmRlZmluZWQge1xuICAgIGlmICghcHJvcHMubG9nR3JvdXApIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHsgbG9nR3JvdXBOYW1lOiBwcm9wcy5sb2dHcm91cC5sb2dHcm91cE5hbWUgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZXMgdGhlIGRlbGV0aW9uU2V0dGluZ3MgcHJvcGVydHkgaW50byB0aGUgYERlbGV0aW9uU2V0dGluZ3NgIHR5cGUgaW4gdGhlIENsb3VkRm9ybWF0aW9uIEwxIGRlZmluaXRpb24uXG4gICAqXG4gICAqIEBwYXJhbSBwcm9wcyBQcm9wcyBpbnB1dCBmb3IgdGhlIGNvbnN0cnVjdFxuICAgKi9cbiAgcHJpdmF0ZSBidWlsZERlbGV0aW9uU2V0dGluZ3MocHJvcHM6IEltYWdlUHJvcHMpOiBDZm5JbWFnZS5EZWxldGlvblNldHRpbmdzUHJvcGVydHkgfCB1bmRlZmluZWQge1xuICAgIGlmIChwcm9wcy5kZWxldGlvbkV4ZWN1dGlvblJvbGUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICByZXR1cm4geyBleGVjdXRpb25Sb2xlOiBwcm9wcy5kZWxldGlvbkV4ZWN1dGlvblJvbGUucm9sZUFybiB9O1xuICB9XG59XG4iXX0=
417
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbWFnZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxpREFBbUM7QUFFbkMseURBQTJDO0FBQzNDLG1FQUF3RDtBQUV4RCw0RUFBNEU7QUFDNUUsOEVBQThGO0FBQzlGLDBFQUEwRTtBQUUxRSw2Q0FBNkQ7QUFHN0QsaUZBQTZFO0FBQzdFLG1EQUFxRDtBQUNyRCwrRkFJbUQ7QUFDbkQsMkRBQXVGO0FBSXZGLE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsdUNBQXVDLENBQUMsQ0FBQztBQXdNekU7O0dBRUc7QUFDSCxJQUFZLGlCQVVYO0FBVkQsV0FBWSxpQkFBaUI7SUFDM0I7O09BRUc7SUFDSCxvQ0FBZSxDQUFBO0lBRWY7O09BRUc7SUFDSCxzQ0FBaUIsQ0FBQTtBQUNuQixDQUFDLEVBVlcsaUJBQWlCLGlDQUFqQixpQkFBaUIsUUFVNUI7QUFFRDs7R0FFRztBQUNILElBQVksU0FVWDtBQVZELFdBQVksU0FBUztJQUNuQjs7T0FFRztJQUNILHdCQUFXLENBQUE7SUFFWDs7T0FFRztJQUNILDhCQUFpQixDQUFBO0FBQ25CLENBQUMsRUFWVyxTQUFTLHlCQUFULFNBQVMsUUFVcEI7QUFFRDs7R0FFRztBQUNILE1BQWUsU0FBVSxTQUFRLEdBQUcsQ0FBQyxRQUFRO0lBZ0IzQzs7Ozs7OztPQU9HO0lBQ0ksS0FBSyxDQUFDLE9BQXVCLEVBQUUsR0FBRyxPQUFpQjtRQUN4RCxPQUFPLEdBQUcsQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDO1lBQzlCLE9BQU87WUFDUCxZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO1lBQzdCLE9BQU87U0FDUixDQUFDLENBQUM7S0FDSjtJQUVEOzs7Ozs7T0FNRztJQUNJLG9DQUFvQyxDQUFD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IjpbImltcG9ydCAqIGFzIGNkayBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgdHlwZSAqIGFzIGVjciBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZWNyJztcbmltcG9ydCAqIGFzIGlhbSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcbmltcG9ydCB7IENmbkltYWdlIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWltYWdlYnVpbGRlcic7XG5pbXBvcnQgdHlwZSAqIGFzIGxvZ3MgZnJvbSAnYXdzLWNkay1saWIvYXdzLWxvZ3MnO1xuaW1wb3J0IHsgbWVtb2l6ZWRHZXR0ZXIsIGxpdCB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUvbGliL2hlbHBlcnMtaW50ZXJuYWwnO1xuaW1wb3J0IHsgYWRkQ29uc3RydWN0TWV0YWRhdGEsIE1ldGhvZE1ldGFkYXRhIH0gZnJvbSAnYXdzLWNkay1saWIvY29yZS9saWIvbWV0YWRhdGEtcmVzb3VyY2UnO1xuaW1wb3J0IHsgcHJvcGVydHlJbmplY3RhYmxlIH0gZnJvbSAnYXdzLWNkay1saWIvY29yZS9saWIvcHJvcC1pbmplY3RhYmxlJztcbmltcG9ydCB0eXBlIHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBCYXNlQ29udGFpbmVySW1hZ2UsIEJhc2VJbWFnZSB9IGZyb20gJy4vYmFzZS1pbWFnZSc7XG5pbXBvcnQgdHlwZSB7IElEaXN0cmlidXRpb25Db25maWd1cmF0aW9uIH0gZnJvbSAnLi9kaXN0cmlidXRpb24tY29uZmlndXJhdGlvbic7XG5pbXBvcnQgdHlwZSB7IElJbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb24gfSBmcm9tICcuL2luZnJhc3RydWN0dXJlLWNvbmZpZ3VyYXRpb24nO1xuaW1wb3J0IHsgSW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uIH0gZnJvbSAnLi9pbmZyYXN0cnVjdHVyZS1jb25maWd1cmF0aW9uJztcbmltcG9ydCB7IExBVEVTVF9WRVJTSU9OIH0gZnJvbSAnLi9wcml2YXRlL2NvbnN0YW50cyc7XG5pbXBvcnQge1xuICBidWlsZEltYWdlU2Nhbm5pbmdDb25maWd1cmF0aW9uLFxuICBidWlsZEltYWdlVGVzdHNDb25maWd1cmF0aW9uLFxuICBidWlsZFdvcmtmbG93cyxcbn0gZnJvbSAnLi9wcml2YXRlL2ltYWdlLWFuZC1waXBlbGluZS1wcm9wcy1oZWxwZXInO1xuaW1wb3J0IHsgZGVmYXVsdEV4ZWN1dGlvblJvbGVQb2xpY3ksIGdldEV4ZWN1dGlvblJvbGUgfSBmcm9tICcuL3ByaXZhdGUvcG9saWN5LWhlbHBlcic7XG5pbXBvcnQgdHlwZSB7IElSZWNpcGVCYXNlIH0gZnJvbSAnLi9yZWNpcGUtYmFzZSc7XG5pbXBvcnQgdHlwZSB7IFdvcmtmbG93Q29uZmlndXJhdGlvbiB9IGZyb20gJy4vd29ya2Zsb3cnO1xuXG5jb25zdCBJTUFHRV9TWU1CT0wgPSBTeW1ib2wuZm9yKCdAYXdzLWNkay9hd3MtaW1hZ2VidWlsZGVyLWFscGhhLkltYWdlJyk7XG5cbi8qKlxuICogQW4gRUMyIEltYWdlIEJ1aWxkZXIgSW1hZ2VcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJSW1hZ2UgZXh0ZW5kcyBjZGsuSVJlc291cmNlIHtcbiAgLyoqXG4gICAqIFRoZSBBUk4gb2YgdGhlIGltYWdlXG4gICAqXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHJlYWRvbmx5IGltYWdlQXJuOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBpbWFnZVxuICAgKlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSBpbWFnZU5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHZlcnNpb24gb2YgdGhlIGltYWdlXG4gICAqXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHJlYWRvbmx5IGltYWdlVmVyc2lvbjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBHcmFudCBjdXN0b20gYWN0aW9ucyB0byB0aGUgZ2l2ZW4gZ3JhbnRlZSBmb3IgdGhlIGltYWdlXG4gICAqXG4gICAqIEBwYXJhbSBncmFudGVlIFRoZSBwcmluY2lwYWxcbiAgICogQHBhcmFtIGFjdGlvbnMgVGhlIGxpc3Qgb2YgYWN0aW9uc1xuICAgKi9cbiAgZ3JhbnQoZ3JhbnRlZTogaWFtLklHcmFudGFibGUsIC4uLmFjdGlvbnM6IHN0cmluZ1tdKTogaWFtLkdyYW50O1xuXG4gIC8qKlxuICAgKiBHcmFudHMgdGhlIGRlZmF1bHQgcGVybWlzc2lvbnMgZm9yIGJ1aWxkaW5nIGFuIGltYWdlIHRvIHRoZSBwcm92aWRlZCBleGVjdXRpb24gcm9sZS5cbiAgICpcbiAgICogQHBhcmFtIGdyYW50ZWUgVGhlIGV4ZWN1dGlvbiByb2xlIHVzZWQgZm9yIHRoZSBpbWFnZSBidWlsZC5cbiAgICovXG4gIGdyYW50RGVmYXVsdEV4ZWN1dGlvblJvbGVQZXJtaXNzaW9ucyhncmFudGVlOiBpYW0uSUdyYW50YWJsZSk6IGlhbS5HcmFudFtdO1xuXG4gIC8qKlxuICAgKiBHcmFudCByZWFkIHBlcm1pc3Npb25zIHRvIHRoZSBnaXZlbiBncmFudGVlIGZvciB0aGUgaW1hZ2VcbiAgICpcbiAgICogQHBhcmFtIGdyYW50ZWUgVGhlIHByaW5jaXBhbFxuICAgKi9cbiAgZ3JhbnRSZWFkKGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlKTogaWFtLkdyYW50O1xuXG4gIC8qKlxuICAgKiBDb252ZXJ0cyB0aGUgaW1hZ2UgdG8gYSBCYXNlSW1hZ2UsIHRvIHVzZSBhcyB0aGUgcGFyZW50IGltYWdlIGluIGFuIGltYWdlIHJlY2lwZVxuICAgKi9cbiAgdG9CYXNlSW1hZ2UoKTogQmFzZUltYWdlO1xuXG4gIC8qKlxuICAgKiBDb252ZXJ0cyB0aGUgaW1hZ2UgdG8gYSBDb250YWluZXJCYXNlSW1hZ2UsIHRvIHVzZSBhcyB0aGUgcGFyZW50IGltYWdlIGluIGEgY29udGFpbmVyIHJlY2lwZVxuICAgKi9cbiAgdG9Db250YWluZXJCYXNlSW1hZ2UoKTogQmFzZUNvbnRhaW5lckltYWdlO1xufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGNyZWF0aW5nIGFuIEltYWdlIHJlc291cmNlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW1hZ2VQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgcmVjaXBlIHRoYXQgZGVmaW5lcyB0aGUgYmFzZSBpbWFnZSwgY29tcG9uZW50cywgYW5kIGN1c3RvbWl6YXRpb25zIHVzZWQgdG8gYnVpbGQgdGhlIGltYWdlLiBUaGlzIGNhbiBlaXRoZXIgYmVcbiAgICogYW4gaW1hZ2UgcmVjaXBlLCBvciBhIGNvbnRhaW5lciByZWNpcGUuXG4gICAqL1xuICByZWFkb25seSByZWNpcGU6IElSZWNpcGVCYXNlO1xuXG4gIC8qKlxuICAgKiBUaGUgaW5mcmFzdHJ1Y3R1cmUgY29uZmlndXJhdGlvbiB1c2VkIGZvciBidWlsZGluZyB0aGUgaW1hZ2UuXG4gICAqXG4gICAqIEEgZGVmYXVsdCBpbmZyYXN0cnVjdHVyZSBjb25maWd1cmF0aW9uIHdpbGwgYmUgdXNlZCBpZiBvbmUgaXMgbm90IHByb3ZpZGVkLlxuICAgKlxuICAgKiBUaGUgZGVmYXVsdCBjb25maWd1cmF0aW9uIHdpbGwgY3JlYXRlIGFuIGluc3RhbmNlIHByb2ZpbGUgYW5kIHJvbGUgd2l0aCBtaW5pbWFsIHBlcm1pc3Npb25zIG5lZWRlZCB0byBidWlsZCB0aGVcbiAgICogaW1hZ2UsIGF0dGFjaGVkIHRvIHRoZSBFQzIgaW5zdGFuY2UuXG4gICAqXG4gICAqIElNRFN2MiB3aWxsIGJlIHJlcXVpcmVkIGJ5IGRlZmF1bHQgb24gdGhlIGluc3RhbmNlcyB1c2VkIHRvIGJ1aWxkIGFuZCB0ZXN0IHRoZSBpbWFnZS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBhbiBpbmZyYXN0cnVjdHVyZSBjb25maWd1cmF0aW9uIHdpbGwgYmUgY3JlYXRlZCB3aXRoIHRoZSBkZWZhdWx0IHNldHRpbmdzXG4gICAqL1xuICByZWFkb25seSBpbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb24/OiBJSW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uO1xuXG4gIC8qKlxuICAgKiBUaGUgZGlzdHJpYnV0aW9uIGNvbmZpZ3VyYXRpb24gdXNlZCBmb3IgZGlzdHJpYnV0aW5nIHRoZSBpbWFnZS5cbiAgICpcbiAgICogQGRlZmF1bHQgTm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgZGlzdHJpYnV0aW9uQ29uZmlndXJhdGlvbj86IElEaXN0cmlidXRpb25Db25maWd1cmF0aW9uO1xuXG4gIC8qKlxuICAgKiBUaGUgbGlzdCBvZiB3b3JrZmxvdyBjb25maWd1cmF0aW9ucyB1c2VkIHRvIGJ1aWxkIHRoZSBpbWFnZS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBJbWFnZSBCdWlsZGVyIHdpbGwgdXNlIGEgZGVmYXVsdCBzZXQgb2Ygd29ya2Zsb3dzIGZvciB0aGUgYnVpbGQgdG8gYnVpbGQsIHRlc3QsIGFuZCBkaXN0cmlidXRlIHRoZVxuICAgKiBpbWFnZVxuICAgKi9cbiAgcmVhZG9ubHkgd29ya2Zsb3dzPzogV29ya2Zsb3dDb25maWd1cmF0aW9uW107XG5cbiAgLyoqXG4gICAqIFRoZSBleGVjdXRpb24gcm9sZSB1c2VkIHRvIHBlcmZvcm0gd29ya2Zsb3cgYWN0aW9ucyB0byBidWlsZCB0aGUgaW1hZ2UuXG4gICAqXG4gICAqIEJ5IGRlZmF1bHQsIHRoZSBJbWFnZSBCdWlsZGVyIFNlcnZpY2UgTGlua2VkIFJvbGUgKFNMUikgd2lsbCBiZSBjcmVhdGVkIGF1dG9tYXRpY2FsbHkgYW5kIHVzZWQgYXMgdGhlIGV4ZWN1dGlvblxuICAgKiByb2xlLiBIb3dldmVyLCB3aGVuIHByb3ZpZGluZyBhIGN1c3RvbSBzZXQgb2YgaW1hZ2Ugd29ya2Zsb3dzIGZvciB0aGUgaW1hZ2UsIGFuIGV4ZWN1dGlvbiByb2xlIHdpbGwgYmVcbiAgICogZ2VuZXJhdGVkIHdpdGggdGhlIG1pbmltYWwgcGVybWlzc2lvbnMgbmVlZGVkIHRvIGV4ZWN1dGUgdGhlIHdvcmtmbG93cy5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBJbWFnZSBCdWlsZGVyIHdpbGwgdXNlIHRoZSBTTFIgaWYgcG9zc2libGUuIE90aGVyd2lzZSwgYW4gZXhlY3V0aW9uIHJvbGUgd2lsbCBiZSBnZW5lcmF0ZWRcbiAgICovXG4gIHJlYWRvbmx5IGV4ZWN1dGlvblJvbGU/OiBpYW0uSVJvbGU7XG5cbiAgLyoqXG4gICAqIFRoZSBsb2cgZ3JvdXAgdG8gdXNlIGZvciB0aGUgaW1hZ2UuIEJ5IGRlZmF1bHQsIGEgbG9nIGdyb3VwIHdpbGwgYmUgY3JlYXRlZCB3aXRoIHRoZSBmb3JtYXRcbiAgICogYC9hd3MvaW1hZ2VidWlsZGVyLzxpbWFnZS1uYW1lPmBcbiAgICpcbiAgICogQGRlZmF1bHQgLSBhIGxvZyBncm91cCB3aWxsIGJlIGNyZWF0ZWRcbiAgICovXG4gIHJlYWRvbmx5IGxvZ0dyb3VwPzogbG9ncy5JTG9nR3JvdXA7XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIEltYWdlIEJ1aWxkZXIga2VlcHMgYSBzbmFwc2hvdCBvZiB0aGUgdnVsbmVyYWJpbGl0eSBzY2FucyB0aGF0IEFtYXpvbiBJbnNwZWN0b3IgcnVucyBhZ2FpbnN0IHRoZVxuICAgKiBidWlsZCBpbnN0YW5jZSB3aGVuIHlvdSBjcmVhdGUgYSBuZXcgaW1hZ2UuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBpbWFnZVNjYW5uaW5nRW5hYmxlZD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBjb250YWluZXIgcmVwb3NpdG9yeSB0aGF0IEFtYXpvbiBJbnNwZWN0b3Igc2NhbnMgdG8gaWRlbnRpZnkgZmluZGluZ3MgZm9yIHlvdXIgY29udGFpbmVyIGltYWdlcy4gSWYgYVxuICAgKiByZXBvc2l0b3J5IGlzIG5vdCBwcm92aWRlZCwgSW1hZ2UgQnVpbGRlciBjcmVhdGVzIGEgcmVwb3NpdG9yeSBuYW1lZCBgaW1hZ2UtYnVpbGRlci1pbWFnZS1zY2FubmluZy1yZXBvc2l0b3J5YFxuICAgKiBmb3IgdnVsbmVyYWJpbGl0eSBzY2FubmluZy5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBpZiBzY2FubmluZyBpcyBlbmFibGVkLCBhIHJlcG9zaXRvcnkgd2lsbCBiZSBjcmVhdGVkIGJ5IEltYWdlIEJ1aWxkZXIgaWYgb25lIGlzIG5vdCBwcm92aWRlZFxuICAgKi9cbiAgcmVhZG9ubHkgaW1hZ2VTY2FubmluZ0VjclJlcG9zaXRvcnk/OiBlY3IuSVJlcG9zaXRvcnk7XG5cbiAgLyoqXG4gICAqIFRoZSB0YWdzIGZvciBJbWFnZSBCdWlsZGVyIHRvIGFwcGx5IHRvIHRoZSBvdXRwdXQgY29udGFpbmVyIGltYWdlIHRoYXQgQW1hem9uIEluc3BlY3RvciBzY2Fucy5cbiAgICpcbiAgICogQGRlZmF1bHQgTm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgaW1hZ2VTY2FubmluZ0VjclRhZ3M/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogSWYgZW5hYmxlZCwgY29sbGVjdHMgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgaW1hZ2UgYmVpbmcgY3JlYXRlZCwgaW5jbHVkaW5nIHRoZSBvcGVyYXRpbmcgc3lzdGVtIChPUylcbiAgICogdmVyc2lvbiBhbmQgcGFja2FnZSBsaXN0IGZvciB0aGUgQU1JLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBlbmhhbmNlZEltYWdlTWV0YWRhdGFFbmFibGVkPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciB0byBydW4gdGVzdHMgYWZ0ZXIgYnVpbGRpbmcgYW4gaW1hZ2UuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGltYWdlVGVzdHNFbmFibGVkPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIGV4ZWN1dGlvbiByb2xlIHRvIHVzZSBmb3IgZGVsZXRpbmcgdGhlIGltYWdlIGFzIHdlbGwgYXMgdGhlIHVuZGVybHlpbmcgcmVzb3VyY2VzLCBzdWNoIGFzIHRoZSBBTUlzLCBzbmFwc2hvdHMsXG4gICAqIGFuZCBjb250YWluZXJzLiBUaGlzIHJvbGUgc2hvdWxkIGNvbnRhaW4gcmVzb3VyY2UgbGlmZWN5Y2xlIHBlcm1pc3Npb25zIHJlcXVpcmVkIHRvIGRlbGV0ZSB0aGUgdW5kZXJseWluZ1xuICAgKiBBTUlzL2NvbnRhaW5lcnMuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gZXhlY3V0aW9uIHJvbGUuIE9ubHkgdGhlIEltYWdlIEJ1aWxkZXIgaW1hZ2Ugd2lsbCBiZSBkZWxldGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgZGVsZXRpb25FeGVjdXRpb25Sb2xlPzogaWFtLklSb2xlO1xuXG4gIC8qKlxuICAgKiBUaGUgdGFncyB0byBhcHBseSB0byB0aGUgaW1hZ2VcbiAgICpcbiAgICogQGRlZmF1bHQgTm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgdGFncz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgYW4gRUMyIEltYWdlIEJ1aWxkZXIgaW1hZ2VcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbWFnZUF0dHJpYnV0ZXMge1xuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgaW1hZ2VcbiAgICpcbiAgICogQGRlZmF1bHQgLSBkZXJpdmVkIGZyb20gdGhlIGltYWdlTmFtZVxuICAgKi9cbiAgcmVhZG9ubHkgaW1hZ2VBcm4/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBpbWFnZVxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGRlcml2ZWQgZnJvbSB0aGUgaW1hZ2VBcm5cbiAgICovXG4gIHJlYWRvbmx5IGltYWdlTmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHZlcnNpb24gb2YgdGhlIGltYWdlXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIHRoZSBpbWFnZSwgeC54LnhcbiAgICovXG4gIHJlYWRvbmx5IGltYWdlVmVyc2lvbj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBUaGUgYXJjaGl0ZWN0dXJlIG9mIHRoZSBpbWFnZVxuICovXG5leHBvcnQgZW51bSBJbWFnZUFyY2hpdGVjdHVyZSB7XG4gIC8qKlxuICAgKiA2NCBiaXQgYXJjaGl0ZWN0dXJlIHdpdGggdGhlIEFSTSBpbnN0cnVjdGlvbiBzZXRcbiAgICovXG4gIEFSTTY0ID0gJ2FybTY0JyxcblxuICAvKipcbiAgICogNjQgYml0IGFyY2hpdGVjdHVyZSB3aXRoIHg4NiBpbnN0cnVjdGlvbiBzZXRcbiAgICovXG4gIFg4Nl82NCA9ICd4ODZfNjQnLFxufVxuXG4vKipcbiAqIFRoZSB0eXBlIG9mIHRoZSBpbWFnZVxuICovXG5leHBvcnQgZW51bSBJbWFnZVR5cGUge1xuICAvKipcbiAgICogSW5kaWNhdGVzIHRoZSBpbWFnZSBwcm9kdWNlZCBpcyBhbiBBTUlcbiAgICovXG4gIEFNSSA9ICdBTUknLFxuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgdGhlIGltYWdlIHByb2R1Y2VkIGlzIGEgRG9ja2VyIGltYWdlXG4gICAqL1xuICBET0NLRVIgPSAnRE9DS0VSJyxcbn1cblxuLyoqXG4gKiBBIG5ldyBvciBpbXBvcnRlZCBJbWFnZVxuICovXG5hYnN0cmFjdCBjbGFzcyBJbWFnZUJhc2UgZXh0ZW5kcyBjZGsuUmVzb3VyY2UgaW1wbGVtZW50cyBJSW1hZ2Uge1xuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgaW1hZ2VcbiAgICovXG4gIGFic3RyYWN0IHJlYWRvbmx5IGltYWdlQXJuOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBpbWFnZVxuICAgKi9cbiAgYWJzdHJhY3QgcmVhZG9ubHkgaW1hZ2VOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSB2ZXJzaW9uIG9mIHRoZSBpbWFnZVxuICAgKi9cbiAgYWJzdHJhY3QgcmVhZG9ubHkgaW1hZ2VWZXJzaW9uOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEdyYW50IGN1c3RvbSBhY3Rpb25zIHRvIHRoZSBnaXZlbiBncmFudGVlIGZvciB0aGUgaW1hZ2VcbiAgICpcbiAgICogW2Rpc2FibGUtYXdzbGludDpuby1ncmFudHNdXG4gICAqXG4gICAqIEBwYXJhbSBncmFudGVlIFRoZSBwcmluY2lwYWxcbiAgICogQHBhcmFtIGFjdGlvbnMgVGhlIGxpc3Qgb2YgYWN0aW9uc1xuICAgKi9cbiAgcHVibGljIGdyYW50KGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlLCAuLi5hY3Rpb25zOiBzdHJpbmdbXSk6IGlhbS5HcmFudCB7XG4gICAgcmV0dXJuIGlhbS5HcmFudC5hZGRUb1ByaW5jaXBhbCh7XG4gICAgICBncmFudGVlLFxuICAgICAgcmVzb3VyY2VBcm5zOiBbdGhpcy5pbWFnZUFybl0sXG4gICAgICBhY3Rpb25zLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyB0aGUgZGVmYXVsdCBwZXJtaXNzaW9ucyBmb3IgYnVpbGRpbmcgYW4gaW1hZ2UgdG8gdGhlIHByb3ZpZGVkIGV4ZWN1dGlvbiByb2xlLlxuICAgKlxuICAgKiBbZGlzYWJsZS1hd3NsaW50Om5vLWdyYW50c11cbiAgICpcbiAgICogQHBhcmFtIGdyYW50ZWUgVGhlIGV4ZWN1dGlvbiByb2xlIHVzZWQgZm9yIHRoZSBpbWFnZSBidWlsZC5cbiAgICovXG4gIHB1YmxpYyBncmFudERlZmF1bHRFeGVjdXRpb25Sb2xlUGVybWlzc2lvbnMoZ3JhbnRlZTogaWFtLklHcmFudGFibGUpOiBpYW0uR3JhbnRbXSB7XG4gICAgY29uc3QgcG9saWNpZXMgPSBkZWZhdWx0RXhlY3V0aW9uUm9sZVBvbGljeSh0aGlzKTtcbiAgICByZXR1cm4gcG9saWNpZXMubWFwKChwb2xpY3kpID0+XG4gICAgICBpYW0uR3JhbnQuYWRkVG9QcmluY2lwYWwoe1xuICAgICAgICBncmFudGVlOiBncmFudGVlLFxuICAgICAgICByZXNvdXJjZUFybnM6IHBvbGljeS5yZXNvdXJjZXMsXG4gICAgICAgIGFjdGlvbnM6IHBvbGljeS5hY3Rpb25zLFxuICAgICAgICBjb25kaXRpb25zOiBwb2xpY3kuY29uZGl0aW9ucyxcbiAgICAgICAgc2NvcGU6IHRoaXMsXG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50IHJlYWQgcGVybWlzc2lvbnMgdG8gdGhlIGdpdmVuIGdyYW50ZWUgZm9yIHRoZSBpbWFnZVxuICAgKlxuICAgKiBbZGlzYWJsZS1hd3NsaW50Om5vLWdyYW50c11cbiAgICpcbiAgICogQHBhcmFtIGdyYW50ZWUgVGhlIHByaW5jaXBhbFxuICAgKi9cbiAgcHVibGljIGdyYW50UmVhZChncmFudGVlOiBpYW0uSUdyYW50YWJsZSk6IGlhbS5HcmFudCB7XG4gICAgcmV0dXJuIHRoaXMuZ3JhbnQoZ3JhbnRlZSwgJ2ltYWdlYnVpbGRlcjpHZXRJbWFnZScpO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnRzIHRoZSBpbWFnZSB0byBhIEJhc2VJbWFnZSwgdG8gdXNlIGFzIHRoZSBwYXJlbnQgaW1hZ2UgaW4gYW4gaW1hZ2UgcmVjaXBlXG4gICAqL1xuICBwdWJsaWMgdG9CYXNlSW1hZ2UoKTogQmFzZUltYWdlIHtcbiAgICByZXR1cm4gQmFzZUltYWdlLmZyb21JbWFnZSh0aGlzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0cyB0aGUgaW1hZ2UgdG8gYSBDb250YWluZXJCYXNlSW1hZ2UsIHRvIHVzZSBhcyB0aGUgcGFyZW50IGltYWdlIGluIGEgY29udGFpbmVyIHJlY2lwZVxuICAgKi9cbiAgcHVibGljIHRvQ29udGFpbmVyQmFzZUltYWdlKCk6IEJhc2VDb250YWluZXJJbWFnZSB7XG4gICAgcmV0dXJuIEJhc2VDb250YWluZXJJbWFnZS5mcm9tSW1hZ2UodGhpcyk7XG4gIH1cbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGFuIEVDMiBJbWFnZSBCdWlsZGVyIEltYWdlLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2ltYWdlYnVpbGRlci9sYXRlc3QvdXNlcmd1aWRlL2NyZWF0ZS1pbWFnZXMuaHRtbFxuICovXG5AcHJvcGVydHlJbmplY3RhYmxlXG5leHBvcnQgY2xhc3MgSW1hZ2UgZXh0ZW5kcyBJbWFnZUJhc2Uge1xuICAvKiogVW5pcXVlbHkgaWRlbnRpZmllcyB0aGlzIGNsYXNzLiAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFBST1BFUlRZX0lOSkVDVElPTl9JRDogc3RyaW5nID0gJ0Bhd3MtY2RrLmF3cy1pbWFnZWJ1aWxkZXItYWxwaGEuSW1hZ2UnO1xuXG4gIC8qKlxuICAgKiBJbXBvcnQgYW4gZXhpc3RpbmcgaW1hZ2UgZ2l2ZW4gaXRzIEFSTlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tSW1hZ2VBcm4oc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgaW1hZ2VBcm46IHN0cmluZyk6IElJbWFnZSB7XG4gICAgcmV0dXJuIHRoaXMuZnJvbUltYWdlQXR0cmlidXRlcyhzY29wZSwgaWQsIHsgaW1hZ2VBcm4gfSk7XG4gIH1cblxuICAvKipcbiAgICogSW1wb3J0IGFuIGV4aXN0aW5nIGltYWdlIGdpdmVuIGl0cyBuYW1lLiBUaGUgcHJvdmlkZWQgbmFtZSBtdXN0IGJlIG5vcm1hbGl6ZWQgYnkgY29udmVydGluZyBhbGwgYWxwaGFiZXRpY2FsXG4gICAqIGNoYXJhY3RlcnMgdG8gbG93ZXJjYXNlLCBhbmQgcmVwbGFjaW5nIGFsbCBzcGFjZXMgYW5kIHVuZGVyc2NvcmVzIHdpdGggaHlwaGVucy5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbUltYWdlTmFtZShzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBpbWFnZU5hbWU6IHN0cmluZyk6IElJbWFnZSB7XG4gICAgcmV0dXJuIHRoaXMuZnJvbUltYWdlQXR0cmlidXRlcyhzY29wZSwgaWQsIHsgaW1hZ2VOYW1lIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEltcG9ydCBhbiBleGlzdGluZyBpbWFnZSBieSBwcm92aWRpbmcgaXRzIGF0dHJpYnV0ZXMuIElmIHRoZSBpbWFnZSBuYW1lIGlzIHByb3ZpZGVkIGFzIGFuIGF0dHJpYnV0ZSwgaXQgbXVzdCBiZVxuICAgKiBub3JtYWxpemVkIGJ5IGNvbnZlcnRpbmcgYWxsIGFscGhhYmV0aWNhbCBjaGFyYWN0ZXJzIHRvIGxvd2VyY2FzZSwgYW5kIHJlcGxhY2luZyBhbGwgc3BhY2VzIGFuZCB1bmRlcnNjb3JlcyB3aXRoXG4gICAqIGh5cGhlbnMuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21JbWFnZUF0dHJpYnV0ZXMoc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgYXR0cnM6IEltYWdlQXR0cmlidXRlcyk6IElJbWFnZSB7XG4gICAgaWYgKCFhdHRycy5pbWFnZUFybiAmJiAhYXR0cnMuaW1hZ2VOYW1lKSB7XG4gICAgICB0aHJvdyBuZXcgY2RrLlZhbGlkYXRpb25FcnJvcihsaXRgRWl0aGVySW1hZ2VBcm5PckltYWdlTmFtZVJlcXVpcmVkYCwgJ2VpdGhlciBpbWFnZUFybiBvciBpbWFnZU5hbWUgaXMgcmVxdWlyZWQnLCBzY29wZSk7XG4gICAgfVxuXG4gICAgY29uc3QgaW1hZ2VBcm4gPVxuICAgICAgYXR0cnMuaW1hZ2VBcm4gPz9cbiAgICAgIGNkay5TdGFjay5vZihzY29wZSkuZm9ybWF0QXJuKHtcbiAgICAgICAgc2VydmljZTogJ2ltYWdlYnVpbGRlcicsXG4gICAgICAgIHJlc291cmNlOiAnaW1hZ2UnLFxuICAgICAgICByZXNvdXJjZU5hbWU6IGAke2F0dHJzLmltYWdlTmFtZX0vJHthdHRycy5pbWFnZVZlcnNpb24gPz8gTEFURVNUX1ZFUlNJT059YCxcbiAgICAgIH0pO1xuXG4gICAgY29uc3QgW2ltYWdlTmFtZSwgaW1hZ2VWZXJzaW9uXSA9ICgoKSA9PiB7XG4gICAgICBpZiAoYXR0cnMuaW1hZ2VOYW1lKSB7XG4gICAgICAgIHJldHVybiBbYXR0cnMuaW1hZ2VOYW1lLCBhdHRycy5pbWFnZVZlcnNpb24gPz8gTEFURVNUX1ZFUlNJT05dO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBpbWFnZU5hbWVWZXJzaW9uID0gY2RrLlN0YWNrLm9mKHNjb3BlKS5zcGxpdEFybihpbWFnZUFybiwgY2RrLkFybkZvcm1hdC5TTEFTSF9SRVNPVVJDRV9OQU1FKS5yZXNvdXJjZU5hbWUhO1xuXG4gICAgICBjb25zdCBpbWFnZU5hbWVWZXJzaW9uU3BsaXQgPSBjZGsuRm4uc3BsaXQoJy8nLCBpbWFnZU5hbWVWZXJzaW9uKTtcbiAgICAgIHJldHVybiBbY2RrLkZuLnNlbGVjdCgwLCBpbWFnZU5hbWVWZXJzaW9uU3BsaXQpLCBjZGsuRm4uc2VsZWN0KDEsIGltYWdlTmFtZVZlcnNpb25TcGxpdCldO1xuICAgIH0pKCk7XG5cbiAgICBjbGFzcyBJbXBvcnQgZXh0ZW5kcyBJbWFnZUJhc2Uge1xuICAgICAgcHVibGljIHJlYWRvbmx5IGltYWdlQXJuID0gaW1hZ2VBcm47XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgaW1hZ2VOYW1lID0gaW1hZ2VOYW1lO1xuICAgICAgcHVibGljIHJlYWRvbmx5IGltYWdlVmVyc2lvbiA9IGltYWdlVmVyc2lvbjtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IEltcG9ydChzY29wZSwgaWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiB3aGV0aGVyIHRoZSBnaXZlbiBvYmplY3QgaXMgYW4gSW1hZ2UuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGlzSW1hZ2UoeDogYW55KTogeCBpcyBJbWFnZSB7XG4gICAgcmV0dXJuIHggIT09IG51bGwgJiYgdHlwZW9mIHggPT09ICdvYmplY3QnICYmIElNQUdFX1NZTUJPTCBpbiB4O1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBpbmZyYXN0cnVjdHVyZSBjb25maWd1cmF0aW9uIHVzZWQgZm9yIHRoZSBpbWFnZSBidWlsZFxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGluZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvbjogSUluZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvbjtcblxuICAvKipcbiAgICogVGhlIGV4ZWN1dGlvbiByb2xlIHVzZWQgZm9yIHRoZSBpbWFnZSBidWlsZFxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGV4ZWN1dGlvblJvbGU/OiBpYW0uSVJvbGU7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBwcm9wczogSW1hZ2VQcm9wcztcbiAgcHJpdmF0ZSByZXNvdXJjZTogQ2ZuSW1hZ2U7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBJbWFnZVByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcbiAgICAvLyBFbmhhbmNlZCBDREsgQW5hbHl0aWNzIFRlbGVtZXRyeVxuICAgIGFkZENvbnN0cnVjdE1ldGFkYXRhKHRoaXMsIHByb3BzKTtcblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCBJTUFHRV9TWU1CT0wsIHsgdmFsdWU6IHRydWUgfSk7XG5cbiAgICB0aGlzLnByb3BzID0gcHJvcHM7XG5cbiAgICB0aGlzLmluZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvbiA9XG4gICAgICBwcm9wcy5pbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb24gPz8gbmV3IEluZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvbih0aGlzLCAnSW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uJyk7XG5cbiAgICB0aGlzLmV4ZWN1dGlvblJvbGUgPSBnZXRFeGVjdXRpb25Sb2xlKFxuICAgICAgdGhpcyxcbiAgICAgIChncmFudGVlOiBpYW0uSUdyYW50YWJsZSkgPT4gdGhpcy5ncmFudERlZmF1bHRFeGVjdXRpb25Sb2xlUGVybWlzc2lvbnMoZ3JhbnRlZSksXG4gICAgICB7XG4gICAgICAgIC4uLnByb3BzLFxuICAgICAgICBpbWFnZUxvZ0dyb3VwOiBwcm9wcy5sb2dHcm91cCxcbiAgICAgIH0sXG4gICAgKTtcblxuICAgIGNvbnN0IFtpbWFnZSwgX10gPSB0aGlzLmNyZWF0ZUltYWdlRnJvbVJlY2lwZShwcm9wcyk7XG4gICAgdGhpcy5yZXNvdXJjZSA9IGltYWdlO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyB0aGUgZGVmYXVsdCBwZXJtaXNzaW9ucyBmb3IgYnVpbGRpbmcgYW4gaW1hZ2UgdG8gdGhlIHByb3ZpZGVkIGV4ZWN1dGlvbiByb2xlLlxuICAgKlxuICAgKiBbZGlzYWJsZS1hd3NsaW50Om5vLWdyYW50c11cbiAgICpcbiAgICogQHBhcmFtIGdyYW50ZWUgVGhlIGV4ZWN1dGlvbiByb2xlIHVzZWQgZm9yIHRoZSBpbWFnZSBidWlsZC5cbiAgICovXG4gIEBNZXRob2RNZXRhZGF0YSgpXG4gIHB1YmxpYyBncmFudERlZmF1bHRFeGVjdXRpb25Sb2xlUGVybWlzc2lvbnMoZ3JhbnRlZTogaWFtLklHcmFudGFibGUpOiBpYW0uR3JhbnRbXSB7XG4gICAgY29uc3QgcG9saWNpZXMgPSBkZWZhdWx0RXhlY3V0aW9uUm9sZVBvbGljeSh0aGlzLCB0aGlzLnByb3BzKTtcbiAgICByZXR1cm4gcG9saWNpZXMubWFwKChwb2xpY3kpID0+XG4gICAgICBpYW0uR3JhbnQuYWRkVG9QcmluY2lwYWwoe1xuICAgICAgICBncmFudGVlOiBncmFudGVlLFxuICAgICAgICByZXNvdXJjZUFybnM6IHBvbGljeS5yZXNvdXJjZXMsXG4gICAgICAgIGFjdGlvbnM6IHBvbGljeS5hY3Rpb25zLFxuICAgICAgICBjb25kaXRpb25zOiBwb2xpY3kuY29uZGl0aW9ucyxcbiAgICAgICAgc2NvcGU6IHRoaXMsXG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgQG1lbW9pemVkR2V0dGVyXG4gIHB1YmxpYyBnZXQgaW1hZ2VOYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0UmVzb3VyY2VOYW1lQXR0cmlidXRlKHRoaXMucmVzb3VyY2UuYXR0ck5hbWUpO1xuICB9XG5cbiAgQG1lbW9pemVkR2V0dGVyXG4gIHB1YmxpYyBnZXQgaW1hZ2VBcm4oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5yZXNvdXJjZS5hdHRyQXJuO1xuICB9XG5cbiAgQG1lbW9pemVkR2V0dGVyXG4gIHB1YmxpYyBnZXQgaW1hZ2VWZXJzaW9uKCk6IHN0cmluZyB7XG4gICAgY29uc3QgcmVjaXBlID0gdGhpcy5wcm9wcy5yZWNpcGU7XG4gICAgaWYgKHJlY2lwZS5faXNJbWFnZVJlY2lwZSgpKSB7XG4gICAgICByZXR1cm4gcmVjaXBlLmltYWdlUmVjaXBlVmVyc2lvbjtcbiAgICB9IGVsc2UgaWYgKHJlY2lwZS5faXNDb250YWluZXJSZWNpcGUoKSkge1xuICAgICAgcmV0dXJuIHJlY2lwZS5jb250YWluZXJSZWNpcGVWZXJzaW9uO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgY2RrLlZhbGlkYXRpb25FcnJvcihsaXRgSW52YWxpZFJlY2lwZVR5cGVgLCAncmVjaXBlIG11c3QgZWl0aGVyIGJlIGFuIGltYWdlIHJlY2lwZSBvciBjb250YWluZXIgcmVjaXBlJywgdGhpcyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBBTUkgSUQgb2YgdGhlIEVDMiBBTUksIG9yIFVSSSBmb3IgdGhlIGNvbnRhaW5lclxuICAgKlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICBAbWVtb2l6ZWRHZXR0ZXJcbiAgcHVibGljIGdldCBpbWFnZUlkKCk6IHN0cmluZyB7XG4gICAgY29uc3QgcmVjaXBlID0gdGhpcy5wcm9wcy5yZWNpcGU7XG4gICAgaWYgKHJlY2lwZS5faXNJbWFnZVJlY2lwZSgpKSB7XG4gICAgICByZXR1cm4gdGhpcy5yZXNvdXJjZS5hdHRySW1hZ2VJZDtcbiAgICB9IGVsc2UgaWYgKHJlY2lwZS5faXNDb250YWluZXJSZWNpcGUoKSkge1xuICAgICAgcmV0dXJuIHRoaXMucmVzb3VyY2UuYXR0ckltYWdlVXJpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgY2RrLlZhbGlkYXRpb25FcnJvcihsaXRgSW52YWxpZFJlY2lwZVR5cGVgLCAncmVjaXBlIG11c3QgZWl0aGVyIGJlIGFuIGltYWdlIHJlY2lwZSBvciBjb250YWluZXIgcmVjaXBlJywgdGhpcyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBDZm5JbWFnZSByZXNvdXJjZSBmcm9tIHRoZSByZWNpcGUgYW5kIHByb3BzIHByb3ZpZGVkLlxuICAgKlxuICAgKiBAcGFyYW0gcHJvcHMgUHJvcHMgaW5wdXQgZm9yIHRoZSBjb25zdHJ1Y3RcbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgY3JlYXRlSW1hZ2VGcm9tUmVjaXBlKHByb3BzOiBJbWFnZVByb3BzKTogW0NmbkltYWdlLCBJUmVjaXBlQmFzZV0ge1xuICAgIGNvbnN0IHJlY2lwZSA9IHByb3BzLnJlY2lwZTtcbiAgICBpZiAoSW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uLmlzSW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uKHRoaXMuaW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uKSkge1xuICAgICAgdGhpcy5pbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb24uX2JpbmQoeyBpc0NvbnRhaW5lckJ1aWxkOiByZWNpcGUuX2lzQ29udGFpbmVyUmVjaXBlKCkgfSk7XG4gICAgfVxuXG4gICAgaWYgKHJlY2lwZS5faXNJbWFnZVJlY2lwZSgpICYmIHJlY2lwZS5faXNDb250YWluZXJSZWNpcGUoKSkge1xuICAgICAgdGhyb3cgbmV3IGNkay5WYWxpZGF0aW9uRXJyb3IobGl0YFJlY2lwZUNhbm5vdEJlQm90aEltYWdlQW5kQ29udGFpbmVyYCwgJ3RoZSByZWNpcGUgY2Fubm90IGJlIGJvdGggYW4gSUltYWdlUmVjaXBlIGFuZCBhbiBJQ29udGFpbmVyUmVjaXBlJywgdGhpcyk7XG4gICAgfVxuXG4gICAgaWYgKCFyZWNpcGUuX2lzSW1hZ2VSZWNpcGUoKSAmJiAhcmVjaXBlLl9pc0NvbnRhaW5lclJlY2lwZSgpKSB7XG4gICAgICB0aHJvdyBuZXcgY2RrLlZhbGlkYXRpb25FcnJvcihsaXRgUmVjaXBlTXVzdEJlSW1hZ2VPckNvbnRhaW5lcmAsICd0aGUgcmVjaXBlIG11c3QgZWl0aGVyIGJlIGFuIElJbWFnZVJlY2lwZSBvciBJQ29udGFpbmVyUmVjaXBlJywgdGhpcyk7XG4gICAgfVxuXG4gICAgY29uc3QgaW1hZ2UgPSBuZXcgQ2ZuSW1hZ2UodGhpcywgJ1Jlc291cmNlJywge1xuICAgICAgLi4uKHJlY2lwZS5faXNJbWFnZVJlY2lwZSgpICYmIHsgaW1hZ2VSZWNpcGVBcm46IHJlY2lwZS5pbWFnZVJlY2lwZUFybiB9KSxcbiAgICAgIC4uLihyZWNpcGUuX2lzQ29udGFpbmVyUmVjaXBlKCkgJiYgeyBjb250YWluZXJSZWNpcGVBcm46IHJlY2lwZS5jb250YWluZXJSZWNpcGVBcm4gfSksXG4gICAgICBpbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb25Bcm46IHRoaXMuaW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uLmluZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvbkFybixcbiAgICAgIGRpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb25Bcm46IHByb3BzLmRpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb24/LmRpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb25Bcm4sXG4gICAgICBleGVjdXRpb25Sb2xlOiB0aGlzLmV4ZWN1dGlvblJvbGU/LnJvbGVBcm4sXG4gICAgICBlbmhhbmNlZEltYWdlTWV0YWRhdGFFbmFibGVkOiBwcm9wcy5lbmhhbmNlZEltYWdlTWV0YWRhdGFFbmFibGVkLFxuICAgICAgbG9nZ2luZ0NvbmZpZ3VyYXRpb246IHRoaXMuYnVpbGRMb2dnaW5nQ29uZmlndXJhdGlvbihwcm9wcyksXG4gICAgICBpbWFnZVRlc3RzQ29uZmlndXJhdGlvbjogYnVpbGRJbWFnZVRlc3RzQ29uZmlndXJhdGlvbjxJbWFnZVByb3BzLCBDZm5JbWFnZS5JbWFnZVRlc3RzQ29uZmlndXJhdGlvblByb3BlcnR5PihcbiAgICAgICAgcHJvcHMsXG4gICAgICApLFxuICAgICAgaW1hZ2VTY2FubmluZ0NvbmZpZ3VyYXRpb246IGJ1aWxkSW1hZ2VTY2FubmluZ0NvbmZpZ3VyYXRpb248XG4gICAgICAgIEltYWdlUHJvcHMsXG4gICAgICAgIENmbkltYWdlLkltYWdlU2Nhbm5pbmdDb25maWd1cmF0aW9uUHJvcGVydHlcbiAgICAgID4odGhpcywgcHJvcHMpLFxuICAgICAgd29ya2Zsb3dzOiBidWlsZFdvcmtmbG93czxJbWFnZVByb3BzLCBDZm5JbWFnZS5Xb3JrZmxvd0NvbmZpZ3VyYXRpb25Qcm9wZXJ0eVtdPihwcm9wcyksXG4gICAgICBkZWxldGlvblNldHRpbmdzOiB0aGlzLmJ1aWxkRGVsZXRpb25TZXR0aW5ncyhwcm9wcyksXG4gICAgICB0YWdzOiBwcm9wcy50YWdzLFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIFtpbWFnZSwgcmVjaXBlXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZXMgdGhlIGxvZ2dpbmdDb25maWd1cmF0aW9uIHByb3BlcnR5IGludG8gdGhlIGBMb2dnaW5nQ29uZmlndXJhdGlvbmAgdHlwZSBpbiB0aGUgQ2xvdWRGb3JtYXRpb24gTDFcbiAgICogZGVmaW5pdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIHByb3BzIFByb3BzIGlucHV0IGZvciB0aGUgY29uc3RydWN0XG4gICAqL1xuICBwcml2YXRlIGJ1aWxkTG9nZ2luZ0NvbmZpZ3VyYXRpb24ocHJvcHM6IEltYWdlUHJvcHMpOiBDZm5JbWFnZS5JbWFnZUxvZ2dpbmdDb25maWd1cmF0aW9uUHJvcGVydHkgfCB1bmRlZmluZWQge1xuICAgIGlmICghcHJvcHMubG9nR3JvdXApIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHsgbG9nR3JvdXBOYW1lOiBwcm9wcy5sb2dHcm91cC5sb2dHcm91cE5hbWUgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZXMgdGhlIGRlbGV0aW9uU2V0dGluZ3MgcHJvcGVydHkgaW50byB0aGUgYERlbGV0aW9uU2V0dGluZ3NgIHR5cGUgaW4gdGhlIENsb3VkRm9ybWF0aW9uIEwxIGRlZmluaXRpb24uXG4gICAqXG4gICAqIEBwYXJhbSBwcm9wcyBQcm9wcyBpbnB1dCBmb3IgdGhlIGNvbnN0cnVjdFxuICAgKi9cbiAgcHJpdmF0ZSBidWlsZERlbGV0aW9uU2V0dGluZ3MocHJvcHM6IEltYWdlUHJvcHMpOiBDZm5JbWFnZS5EZWxldGlvblNldHRpbmdzUHJvcGVydHkgfCB1bmRlZmluZWQge1xuICAgIGlmIChwcm9wcy5kZWxldGlvbkV4ZWN1dGlvblJvbGUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICByZXR1cm4geyBleGVjdXRpb25Sb2xlOiBwcm9wcy5kZWxldGlvbkV4ZWN1dGlvblJvbGUucm9sZUFybiB9O1xuICB9XG59XG4iXX0=
@@ -1,4 +1,20 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
2
18
  var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
3
19
  var useValue = arguments.length > 2;
4
20
  for (var i = 0; i < initializers.length; i++) {
@@ -33,12 +49,29 @@ var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn,
33
49
  if (target) Object.defineProperty(target, contextIn.name, descriptor);
34
50
  done = true;
35
51
  };
52
+ var __importStar = (this && this.__importStar) || (function () {
53
+ var ownKeys = function(o) {
54
+ ownKeys = Object.getOwnPropertyNames || function (o) {
55
+ var ar = [];
56
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
57
+ return ar;
58
+ };
59
+ return ownKeys(o);
60
+ };
61
+ return function (mod) {
62
+ if (mod && mod.__esModule) return mod;
63
+ var result = {};
64
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
65
+ __setModuleDefault(result, mod);
66
+ return result;
67
+ };
68
+ })();
36
69
  Object.defineProperty(exports, "__esModule", { value: true });
37
70
  exports.InfrastructureConfiguration = exports.Tenancy = exports.HttpTokens = void 0;
38
71
  const jsiiDeprecationWarnings = require("../.warnings.jsii.js");
39
72
  const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
40
- const cdk = require("aws-cdk-lib");
41
- const iam = require("aws-cdk-lib/aws-iam");
73
+ const cdk = __importStar(require("aws-cdk-lib"));
74
+ const iam = __importStar(require("aws-cdk-lib/aws-iam"));
42
75
  const aws_imagebuilder_1 = require("aws-cdk-lib/aws-imagebuilder");
43
76
  const helpers_internal_1 = require("aws-cdk-lib/core/lib/helpers-internal");
44
77
  const metadata_resource_1 = require("aws-cdk-lib/core/lib/metadata-resource");
@@ -135,7 +168,7 @@ let InfrastructureConfiguration = (() => {
135
168
  InfrastructureConfiguration = _classThis = _classDescriptor.value;
136
169
  if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
137
170
  }
138
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.InfrastructureConfiguration", version: "2.257.0-alpha.0" };
171
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.InfrastructureConfiguration", version: "2.258.0-alpha.0" };
139
172
  /** Uniquely identifies this class. */
140
173
  static PROPERTY_INJECTION_ID = '@aws-cdk.aws-imagebuilder-alpha.InfrastructureConfiguration';
141
174
  /**
@@ -346,4 +379,4 @@ let InfrastructureConfiguration = (() => {
346
379
  return InfrastructureConfiguration = _classThis;
347
380
  })();
348
381
  exports.InfrastructureConfiguration = InfrastructureConfiguration;
349
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5mcmFzdHJ1Y3R1cmUtY29uZmlndXJhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImluZnJhc3RydWN0dXJlLWNvbmZpZ3VyYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsbUNBQW1DO0FBRW5DLDJDQUEyQztBQUMzQyxtRUFBOEU7QUFHOUUsNEVBQTRFO0FBQzVFLDhFQUE4RTtBQUM5RSwwRUFBMEU7QUFHMUUsTUFBTSxtQ0FBbUMsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLDZEQUE2RCxDQUFDLENBQUM7QUFvQ3RIOzs7O0dBSUc7QUFDSCxJQUFZLFVBVVg7QUFWRCxXQUFZLFVBQVU7SUFDcEI7O09BRUc7SUFDSCxtQ0FBcUIsQ0FBQTtJQUVyQjs7T0FFRztJQUNILG1DQUFxQixDQUFBO0FBQ3ZCLENBQUMsRUFWVyxVQUFVLDBCQUFWLFVBQVUsUUFVckI7QUFFRDs7OztHQUlHO0FBQ0gsSUFBWSxPQWVYO0FBZkQsV0FBWSxPQUFPO0lBQ2pCOztPQUVHO0lBQ0gsOEJBQW1CLENBQUE7SUFFbkI7O09BRUc7SUFDSCxrQ0FBdUIsQ0FBQTtJQUV2Qjs7T0FFRztJQUNILHdCQUFhLENBQUE7QUFDZixDQUFDLEVBZlcsT0FBTyx1QkFBUCxPQUFPLFFBZWxCO0FBcU1EOztHQUVHO0FBQ0gsTUFBZSwrQkFBZ0MsU0FBUSxHQUFHLENBQUMsUUFBUTtJQVVqRTs7Ozs7O09BTUc7SUFDSSxLQUFLLENBQUMsT0FBdUIsRUFBRSxHQUFHLE9BQWlCO1FBQ3hELE9BQU8sR0FBRyxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUM7WUFDOUIsT0FBTztZQUNQLE9BQU87WUFDUCxZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQUMsOEJBQThCLENBQUM7WUFDbkQsS0FBSyxFQUFFLElBQUk7U0FDWixDQUFDLENBQUM7S0FDSjtJQUVEOzs7OztPQUtHO0lBQ0ksU0FBUyxDQUFDLE9B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SUFBSSxHQUFHLENBQUMsZUFBZSxDQUFDLElBQUEsc0JBQUcsRUFBQSw2Q0FBNkMsRUFBRSx1REFBdUQsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUNqSixDQUFDO1NBQ0Y7UUFFRDs7V0FFRztRQUNJLEtBQUssQ0FBQyxPQUErQztZQUMxRCxJQUFJLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO2dCQUM3QixJQUFJLENBQUMsZ0NBQWdDLEVBQUUsZ0JBQWdCLENBQ3JELEdBQUcsQ0FBQyxhQUFhLENBQUMsd0JBQXdCLENBQUMscURBQXFELENBQUMsQ0FDbEcsQ0FBQztZQUNKLENBQUM7U0FDRjs7WUExUVUsdURBQTJCOzs7OztBQUEzQixrRUFBMkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBjZGsgZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHR5cGUgKiBhcyBlYzIgZnJvbSAnYXdzLWNkay1saWIvYXdzLWVjMic7XG5pbXBvcnQgKiBhcyBpYW0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWlhbSc7XG5pbXBvcnQgeyBDZm5JbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb24gfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaW1hZ2VidWlsZGVyJztcbmltcG9ydCB0eXBlICogYXMgczMgZnJvbSAnYXdzLWNkay1saWIvYXdzLXMzJztcbmltcG9ydCB0eXBlICogYXMgc25zIGZyb20gJ2F3cy1jZGstbGliL2F3cy1zbnMnO1xuaW1wb3J0IHsgbWVtb2l6ZWRHZXR0ZXIsIGxpdCB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUvbGliL2hlbHBlcnMtaW50ZXJuYWwnO1xuaW1wb3J0IHsgYWRkQ29uc3RydWN0TWV0YWRhdGEgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlL2xpYi9tZXRhZGF0YS1yZXNvdXJjZSc7XG5pbXBvcnQgeyBwcm9wZXJ0eUluamVjdGFibGUgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlL2xpYi9wcm9wLWluamVjdGFibGUnO1xuaW1wb3J0IHR5cGUgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcblxuY29uc3QgSU5GUkFTVFJVQ1RVUkVfQ09ORklHVVJBVElPTl9TWU1CT0wgPSBTeW1ib2wuZm9yKCdAYXdzLWNkay9hd3MtaW1hZ2VidWlsZGVyLWFscGhhLkluZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvbicpO1xuXG4vKipcbiAqIEFuIEVDMiBJbWFnZSBCdWlsZGVyIEluZnJhc3RydWN0dXJlIENvbmZpZ3VyYXRpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUluZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvbiBleHRlbmRzIGNkay5JUmVzb3VyY2Uge1xuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgaW5mcmFzdHJ1Y3R1cmUgY29uZmlndXJhdGlvblxuICAgKlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSBpbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb25Bcm46IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGluZnJhc3RydWN0dXJlIGNvbmZpZ3VyYXRpb25cbiAgICpcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcmVhZG9ubHkgaW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBHcmFudCBjdXN0b20gYWN0aW9ucyB0byB0aGUgZ2l2ZW4gZ3JhbnRlZSBmb3IgdGhlIGluZnJhc3RydWN0dXJlIGNvbmZpZ3VyYXRpb25cbiAgICpcbiAgICogQHBhcmFtIGdyYW50ZWUgLSBUaGUgcHJpbmNpcGFsXG4gICAqIEBwYXJhbSBhY3Rpb25zIC0gVGhlIGxpc3Qgb2YgYWN0aW9uc1xuICAgKi9cbiAgZ3JhbnQoZ3JhbnRlZTogaWFtLklHcmFudGFibGUsIC4uLmFjdGlvbnM6IHN0cmluZ1tdKTogaWFtLkdyYW50O1xuXG4gIC8qKlxuICAgKiBHcmFudCByZWFkIHBlcm1pc3Npb25zIHRvIHRoZSBnaXZlbiBncmFudGVlIGZvciB0aGUgaW5mcmFzdHJ1Y3R1cmUgY29uZmlndXJhdGlvblxuICAgKlxuICAgKiBAcGFyYW0gZ3JhbnRlZSAtIFRoZSBwcmluY2lwYWxcbiAgICovXG4gIGdyYW50UmVhZChncmFudGVlOiBpYW0uSUdyYW50YWJsZSk6IGlhbS5HcmFudDtcbn1cblxuLyoqXG4gKiBJbmRpY2F0ZXMgd2hldGhlciBhIHNpZ25lZCB0b2tlbiBoZWFkZXIgaXMgcmVxdWlyZWQgZm9yIGluc3RhbmNlIG1ldGFkYXRhIHJldHJpZXZhbCByZXF1ZXN0cy5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9pbWFnZWJ1aWxkZXIvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfSW5zdGFuY2VNZXRhZGF0YU9wdGlvbnMuaHRtbCNpbWFnZWJ1aWxkZXItVHlwZS1JbnN0YW5jZU1ldGFkYXRhT3B0aW9ucy1odHRwVG9rZW5zXG4gKi9cbmV4cG9ydCBlbnVtIEh0dHBUb2tlbnMge1xuICAvKipcbiAgICogQWxsb3dzIHJldHJpZXZhbCBvZiBpbnN0YW5jZSBtZXRhZGF0YSB3aXRoIG9yIHdpdGhvdXQgYSBzaWduZWQgdG9rZW4gaGVhZGVyIGluIHRoZSByZXF1ZXN0XG4gICAqL1xuICBPUFRJT05BTCA9ICdvcHRpb25hbCcsXG5cbiAgLyoqXG4gICAqIFJlcXVpcmVzIGEgc2lnbmVkIHRva2VuIGhlYWRlciBpbiBpbnN0YW5jZSBtZXRhZGF0YSByZXRyaWV2YWwgcmVxdWVzdHNcbiAgICovXG4gIFJFUVVJUkVEID0gJ3JlcXVpcmVkJyxcbn1cblxuLyoqXG4gKiBUaGUgdGVuYW5jeSB0byB1c2UgZm9yIGFuIGluc3RhbmNlLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2ltYWdlYnVpbGRlci9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9QbGFjZW1lbnQuaHRtbCNpbWFnZWJ1aWxkZXItVHlwZS1QbGFjZW1lbnQtdGVuYW5jeVxuICovXG5leHBvcnQgZW51bSBUZW5hbmN5IHtcbiAgLyoqXG4gICAqIEluc3RhbmNlcyB3aWxsIGJlIGxhdW5jaGVkIHdpdGggZGVmYXVsdCB0ZW5hbmN5XG4gICAqL1xuICBERUZBVUxUID0gJ2RlZmF1bHQnLFxuXG4gIC8qKlxuICAgKiBJbnN0YW5jZXMgd2lsbCBiZSBsYXVuY2hlZCB3aXRoIGRlZGljYXRlZCB0ZW5hbmN5XG4gICAqL1xuICBERURJQ0FURUQgPSAnZGVkaWNhdGVkJyxcblxuICAvKipcbiAgICogSW5zdGFuY2VzIHdpbGwgYmUgbGF1bmNoZWQgb24gYSBkZWRpY2F0ZWQgaG9zdFxuICAgKi9cbiAgSE9TVCA9ICdob3N0Jyxcbn1cblxuLyoqXG4gKiBUaGUgbG9nIHNldHRpbmdzIGZvciBkZXRhaWxlZCBidWlsZCBsb2dnaW5nXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uTG9nZ2luZyB7XG4gIC8qKlxuICAgKiBUaGUgUzMgbG9nZ2luZyBidWNrZXQgdG8gdXNlIGZvciBkZXRhaWxlZCBidWlsZCBsb2dnaW5nXG4gICAqL1xuICByZWFkb25seSBzM0J1Y2tldDogczMuSUJ1Y2tldDtcblxuICAvKipcbiAgICogVGhlIFMzIGxvZ2dpbmcgcHJlZml4IHRvIHVzZSBmb3IgZGV0YWlsZWQgYnVpbGQgbG9nZ2luZ1xuICAgKlxuICAgKiBAZGVmYXVsdCBObyBwcmVmaXhcbiAgICovXG4gIHJlYWRvbmx5IHMzS2V5UHJlZml4Pzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGNyZWF0aW5nIGFuIEluZnJhc3RydWN0dXJlIENvbmZpZ3VyYXRpb24gcmVzb3VyY2VcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb25Qcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgaW5mcmFzdHJ1Y3R1cmUgY29uZmlndXJhdGlvbi4gVGhpcyBuYW1lIG11c3QgYmUgbm9ybWFsaXplZCBieSB0cmFuc2Zvcm1pbmcgYWxsIGFscGhhYmV0aWNhbFxuICAgKiBjaGFyYWN0ZXJzIHRvIGxvd2VyY2FzZSwgYW5kIHJlcGxhY2luZyBhbGwgc3BhY2VzIGFuZCB1bmRlcnNjb3JlcyB3aXRoIGh5cGhlbnMuXG4gICAqXG4gICAqIEBkZWZhdWx0IEEgbmFtZSBpcyBnZW5lcmF0ZWRcbiAgICovXG4gIHJlYWRvbmx5IGluZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvbk5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgaW5mcmFzdHJ1Y3R1cmUgY29uZmlndXJhdGlvbi5cbiAgICpcbiAgICogQGRlZmF1bHQgTm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBpbnN0YW5jZSB0eXBlcyB0byBsYXVuY2ggYnVpbGQgYW5kIHRlc3QgRUMyIGluc3RhbmNlcyB3aXRoLlxuICAgKlxuICAgKiBAZGVmYXVsdCBJbWFnZSBCdWlsZGVyIHdpbGwgY2hvb3NlIGZyb20gYSBkZWZhdWx0IHNldCBvZiBpbnN0YW5jZSB0eXBlcyBjb21wYXRpYmxlIHdpdGggdGhlIEFNSVxuICAgKi9cbiAgcmVhZG9ubHkgaW5zdGFuY2VUeXBlcz86IGVjMi5JbnN0YW5jZVR5cGVbXTtcblxuICAvKipcbiAgICogVGhlIGluc3RhbmNlIHByb2ZpbGUgdG8gYXNzb2NpYXRlIHdpdGggdGhlIGluc3RhbmNlIHVzZWQgdG8gY3VzdG9taXplIHRoZSBBTUkuXG4gICAqXG4gICAqIEJ5IGRlZmF1bHQsIGFuIGluc3RhbmNlIHByb2ZpbGUgYW5kIHJvbGUgd2lsbCBiZSBjcmVhdGVkIHdpdGggbWluaW1hbCBwZXJtaXNzaW9ucyBuZWVkZWQgdG8gYnVpbGQgdGhlIGltYWdlLFxuICAgKiBhdHRhY2hlZCB0byB0aGUgRUMyIGluc3RhbmNlLlxuICAgKlxuICAgKiBJZiBhbiBTMyBsb2dnaW5nIGJ1Y2tldCBhbmQga2V5IHByZWZpeCBpcyBwcm92aWRlZCwgYW4gSUFNIGlubGluZSBwb2xpY3kgd2lsbCBiZSBhdHRhY2hlZCB0byB0aGUgaW5zdGFuY2UgcHJvZmlsZSdzXG4gICAqIHJvbGUsIGFsbG93aW5nIHMzOlB1dE9iamVjdCBwZXJtaXNzaW9ucyBvbiB0aGUgYnVja2V0LlxuICAgKlxuICAgKiBAZGVmYXVsdCBBbiBpbnN0YW5jZSBwcm9maWxlIHdpbGwgYmUgZ2VuZXJhdGVkXG4gICAqL1xuICByZWFkb25seSBpbnN0YW5jZVByb2ZpbGU/OiBpYW0uSUluc3RhbmNlUHJvZmlsZTtcbiAgLyoqXG4gICAqIEFuIElBTSByb2xlIHRvIGFzc29jaWF0ZSB3aXRoIHRoZSBpbnN0YW5jZSBwcm9maWxlIHVzZWQgYnkgSW1hZ2UgQnVpbGRlclxuICAgKlxuICAgKiBUaGUgcm9sZSBtdXN0IGJlIGFzc3VtYWJsZSBieSB0aGUgc2VydmljZSBwcmluY2lwYWwgYGVjMi5hbWF6b25hd3MuY29tYDpcbiAgICogTm90ZTogWW91IGNhbiBwcm92aWRlIGFuIGluc3RhbmNlUHJvZmlsZSBvciBhIHJvbGUsIGJ1dCBub3QgYm90aC5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogY29uc3QgaW5zdGFuY2VQcm9maWxlUm9sZSA9IG5ldyBpYW0uUm9sZSh0aGlzLCAnTXlSb2xlJywge1xuICAgKiAgIGFzc3VtZWRCeTogbmV3IGlhbS5TZXJ2aWNlUHJpbmNpcGFsKCdlYzIuYW1hem9uYXdzLmNvbScpXG4gICAqIH0pO1xuICAgKlxuICAgKiBAZGVmYXVsdCBBIHJvbGUgd2lsbCBhdXRvbWF0aWNhbGx5IGJlIGNyZWF0ZWQsIGl0IGNhbiBiZSBhY2Nlc3NlZCB2aWEgdGhlIGByb2xlYCBwcm9wZXJ0eVxuICAgKi9cbiAgcmVhZG9ubHkgcm9sZT86IGlhbS5JUm9sZTtcblxuICAvKipcbiAgICogVGhlIFZQQyB0byBwbGFjZSB0aGUgaW5zdGFuY2UgdXNlZCB0byBjdXN0b21pemUgdGhlIEFNSS5cbiAgICpcbiAgICogQGRlZmF1bHQgVGhlIGRlZmF1bHQgVlBDIHdpbGwgYmUgdXNlZFxuICAgKi9cbiAgcmVhZG9ubHkgdnBjPzogZWMyLklWcGM7XG5cbiAgLyoqXG4gICAqIFNlbGVjdCB3aGljaCBzdWJuZXQgdG8gcGxhY2UgdGhlIGluc3RhbmNlIHVzZWQgdG8gY3VzdG9taXplIHRoZSBBTUkuIFRoZSBmaXJzdCBzdWJuZXQgdGhhdCBpcyBzZWxlY3RlZCB3aWxsIGJlIHVzZWQuXG4gICAqIFlvdSBtdXN0IHNwZWNpZnkgdGhlIFZQQyB0byBjdXN0b21pemUgdGhlIHN1Ym5ldCBzZWxlY3Rpb24uXG4gICAqXG4gICAqIEBkZWZhdWx0IFRoZSBmaXJzdCBzdWJuZXQgc2VsZWN0ZWQgZnJvbSB0aGUgcHJvdmlkZWQgVlBDIHdpbGwgYmUgdXNlZFxuICAgKi9cbiAgcmVhZG9ubHkgc3VibmV0U2VsZWN0aW9uPzogZWMyLlN1Ym5ldFNlbGVjdGlvbjtcblxuICAvKipcbiAgICogVGhlIHNlY3VyaXR5IGdyb3VwcyB0byBhc3NvY2lhdGUgd2l0aCB0aGUgaW5zdGFuY2UgdXNlZCB0byBjdXN0b21pemUgdGhlIEFNSS5cbiAgICpcbiAgICogQGRlZmF1bHQgVGhlIGRlZmF1bHQgc2VjdXJpdHkgZ3JvdXAgZm9yIHRoZSBWUEMgd2lsbCBiZSB1c2VkXG4gICAqL1xuICByZWFkb25seSBzZWN1cml0eUdyb3Vwcz86IGVjMi5JU2VjdXJpdHlHcm91cFtdO1xuXG4gIC8qKlxuICAgKiBUaGUga2V5IHBhaXIgdXNlZCB0byBjb25uZWN0IHRvIHRoZSBidWlsZCBhbmQgdGVzdCBFQzIgaW5zdGFuY2VzLiBUaGUga2V5IHBhaXIgY2FuIGJlIHVzZWQgdG8gbG9nIGludG8gdGhlIGJ1aWxkXG4gICAqIG9yIHRlc3QgaW5zdGFuY2VzIGZvciB0cm91Ymxlc2hvb3RpbmcgYW55IGZhaWx1cmVzLlxuICAgKlxuICAgKiBAZGVmYXVsdCBOb25lXG4gICAqL1xuICByZWFkb25seSBrZXlQYWlyPzogZWMyLklLZXlQYWlyO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHRlcm1pbmF0ZSB0aGUgRUMyIGluc3RhbmNlIHdoZW4gdGhlIGJ1aWxkIG9yIHRlc3Qgd29ya2Zsb3cgZmFpbHMuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IHRlcm1pbmF0ZUluc3RhbmNlT25GYWlsdXJlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIG1heGltdW0gbnVtYmVyIG9mIGhvcHMgdGhhdCBhbiBpbnN0YW5jZSBtZXRhZGF0YSByZXF1ZXN0IGNhbiB0cmF2ZXJzZSB0byByZWFjaCBpdHMgZGVzdGluYXRpb24uIEJ5IGRlZmF1bHQsXG4gICAqIHRoaXMgaXMgc2V0IHRvIDIuXG4gICAqXG4gICAqIEBkZWZhdWx0IDJcbiAgICovXG4gIHJlYWRvbmx5IGh0dHBQdXRSZXNwb25zZUhvcExpbWl0PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciBhIHNpZ25lZCB0b2tlbiBoZWFkZXIgaXMgcmVxdWlyZWQgZm9yIGluc3RhbmNlIG1ldGFkYXRhIHJldHJpZXZhbCByZXF1ZXN0cy4gQnkgZGVmYXVsdCwgdGhpcyBpc1xuICAgKiBzZXQgdG8gYHJlcXVpcmVkYCB0byByZXF1aXJlIElNRFN2MiBvbiBidWlsZCBhbmQgdGVzdCBFQzIgaW5zdGFuY2VzLlxuICAgKlxuICAgKiBAZGVmYXVsdCBIdHRwVG9rZW5zLlJFUVVJUkVEXG4gICAqL1xuICByZWFkb25seSBodHRwVG9rZW5zPzogSHR0cFRva2VucztcblxuICAvKipcbiAgICogVGhlIFNOUyB0b3BpYyBvbiB3aGljaCBub3RpZmljYXRpb25zIGFyZSBzZW50IHdoZW4gYW4gaW1hZ2UgYnVpbGQgY29tcGxldGVzLlxuICAgKlxuICAgKiBAZGVmYXVsdCBObyBub3RpZmljYXRpb25zIGFyZSBzZW50XG4gICAqL1xuICByZWFkb25seSBub3RpZmljYXRpb25Ub3BpYz86IHNucy5JVG9waWM7XG5cbiAgLyoqXG4gICAqIFRoZSBsb2cgc2V0dGluZ3MgZm9yIGRldGFpbGVkIGJ1aWxkIGxvZ2dpbmcuXG4gICAqXG4gICAqIEBkZWZhdWx0IE5vbmVcbiAgICovXG4gIHJlYWRvbmx5IGxvZ2dpbmc/OiBJbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb25Mb2dnaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgYXZhaWxhYmlsaXR5IHpvbmUgdG8gcGxhY2UgSW1hZ2UgQnVpbGRlciBidWlsZCBhbmQgdGVzdCBFQzIgaW5zdGFuY2VzLlxuICAgKlxuICAgKiBAZGVmYXVsdCBFQzIgd2lsbCBzZWxlY3QgYSByYW5kb20gem9uZVxuICAgKi9cbiAgcmVhZG9ubHkgZWMySW5zdGFuY2VBdmFpbGFiaWxpdHlab25lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgSUQgb2YgdGhlIERlZGljYXRlZCBIb3N0IG9uIHdoaWNoIGJ1aWxkIGFuZCB0ZXN0IGluc3RhbmNlcyBydW4uIFRoaXMgb25seSBhcHBsaWVzIGlmIHRoZSBpbnN0YW5jZSB0ZW5hbmN5IGlzXG4gICAqIGBob3N0YC4gVGhpcyBjYW5ub3QgYmUgdXNlZCB3aXRoIHRoZSBgZWMySW5zdGFuY2VIb3N0UmVzb3VyY2VHcm91cEFybmAgcGFyYW1ldGVyLlxuICAgKlxuICAgKiBAZGVmYXVsdCBOb25lXG4gICAqL1xuICByZWFkb25seSBlYzJJbnN0YW5jZUhvc3RJZD86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgaG9zdCByZXNvdXJjZSBncm91cCBvbiB3aGljaCBidWlsZCBhbmQgdGVzdCBpbnN0YW5jZXMgcnVuLiBUaGlzIG9ubHkgYXBwbGllcyBpZiB0aGUgaW5zdGFuY2UgdGVuYW5jeVxuICAgKiBpcyBgaG9zdGAuIFRoaXMgY2Fubm90IGJlIHVzZWQgd2l0aCB0aGUgYGVjMkluc3RhbmNlSG9zdElkYCBwYXJhbWV0ZXIuXG4gICAqXG4gICAqIEBkZWZhdWx0IE5vbmVcbiAgICovXG4gIHJlYWRvbmx5IGVjMkluc3RhbmNlSG9zdFJlc291cmNlR3JvdXBBcm4/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSB0ZW5hbmN5IG9mIHRoZSBpbnN0YW5jZS4gRGVkaWNhdGVkIHRlbmFuY3kgcnVucyBpbnN0YW5jZXMgb24gc2luZ2xlLXRlbmFudCBoYXJkd2FyZSwgd2hpbGUgaG9zdCB0ZW5hbmN5IHJ1bnNcbiAgICogaW5zdGFuY2VzIG9uIGEgZGVkaWNhdGVkIGhvc3QuIFNoYXJlZCB0ZW5hbmN5IGlzIHVzZWQgYnkgZGVmYXVsdC5cbiAgICpcbiAgICogQGRlZmF1bHQgVGVuYW5jeS5ERUZBVUxUXG4gICAqL1xuICByZWFkb25seSBlYzJJbnN0YW5jZVRlbmFuY3k/OiBUZW5hbmN5O1xuXG4gIC8qKlxuICAgKiBUaGUgYWRkaXRpb25hbCB0YWdzIHRvIGFzc2lnbiB0byB0aGUgQW1hem9uIEVDMiBpbnN0YW5jZSB0aGF0IEltYWdlIEJ1aWxkZXIgbGF1bmNoZXMgZHVyaW5nIHRoZSBidWlsZCBwcm9jZXNzLlxuICAgKlxuICAgKiBAZGVmYXVsdCBOb25lXG4gICAqL1xuICByZWFkb25seSByZXNvdXJjZVRhZ3M/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xuXG4gIC8qKlxuICAgKiBUaGUgdGFncyB0byBhcHBseSB0byB0aGUgaW5mcmFzdHJ1Y3R1cmUgY29uZmlndXJhdGlvblxuICAgKlxuICAgKiBAZGVmYXVsdCBOb25lXG4gICAqL1xuICByZWFkb25seSB0YWdzPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcbn1cblxuLyoqXG4gKiBDb250ZXh0IGluZm9ybWF0aW9uIHBhc3NlZCB3aGVuIGFuIEluZnJhc3RydWN0dXJlIENvbmZpZ3VyYXRpb24gaXMgYmVpbmcgY29uc3VtZWRcbiAqXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb25CaW5kT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciB0aGUgaW5mcmFzdHJ1Y3R1cmUgY29uZmlndXJhdGlvbiBpcyBiZWluZyBjb25zdW1lZCBpbnNpZGUgb2YgYSBjb250YWluZXIgYnVpbGRcbiAgICovXG4gIHJlYWRvbmx5IGlzQ29udGFpbmVyQnVpbGQ/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIEEgbmV3IG9yIGltcG9ydGVkIEluZnJhc3RydWN0dXJlIENvbmZpZ3VyYXRpb25cbiAqL1xuYWJzdHJhY3QgY2xhc3MgSW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uQmFzZSBleHRlbmRzIGNkay5SZXNvdXJjZSBpbXBsZW1lbnRzIElJbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb24ge1xuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgaW5mcmFzdHJ1Y3R1cmUgY29uZmlndXJhdGlvblxuICAgKi9cbiAgYWJzdHJhY3QgcmVhZG9ubHkgaW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uQXJuOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgaW5mcmFzdHJ1Y3R1cmUgY29uZmlndXJhdGlvblxuICAgKi9cbiAgYWJzdHJhY3QgcmVhZG9ubHkgaW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBHcmFudCBjdXN0b20gYWN0aW9ucyB0byB0aGUgZ2l2ZW4gZ3JhbnRlZSBmb3IgdGhlIGluZnJhc3RydWN0dXJlIGNvbmZpZ3VyYXRpb25cbiAgICogW2Rpc2FibGUtYXdzbGludDpuby1ncmFudHNdXG4gICAqXG4gICAqIEBwYXJhbSBncmFudGVlIC0gVGhlIHByaW5jaXBhbFxuICAgKiBAcGFyYW0gYWN0aW9ucyAtIFRoZSBsaXN0IG9mIGFjdGlvbnNcbiAgICovXG4gIHB1YmxpYyBncmFudChncmFudGVlOiBpYW0uSUdyYW50YWJsZSwgLi4uYWN0aW9uczogc3RyaW5nW10pOiBpYW0uR3JhbnQge1xuICAgIHJldHVybiBpYW0uR3JhbnQuYWRkVG9QcmluY2lwYWwoe1xuICAgICAgZ3JhbnRlZSxcbiAgICAgIGFjdGlvbnMsXG4gICAgICByZXNvdXJjZUFybnM6IFt0aGlzLmluZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvbkFybl0sXG4gICAgICBzY29wZTogdGhpcyxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudCByZWFkIHBlcm1pc3Npb25zIHRvIHRoZSBnaXZlbiBncmFudGVlIGZvciB0aGUgaW5mcmFzdHJ1Y3R1cmUgY29uZmlndXJhdGlvblxuICAgKiBbZGlzYWJsZS1hd3NsaW50Om5vLWdyYW50c11cbiAgICpcbiAgICogQHBhcmFtIGdyYW50ZWUgLSBUaGUgcHJpbmNpcGFsXG4gICAqL1xuICBwdWJsaWMgZ3JhbnRSZWFkKGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlKTogaWFtLkdyYW50IHtcbiAgICByZXR1cm4gdGhpcy5ncmFudChncmFudGVlLCAnaW1hZ2VidWlsZGVyOkdldEluZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvbicpO1xuICB9XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyBhbiBFQzIgSW1hZ2UgQnVpbGRlciBJbmZyYXN0cnVjdHVyZSBDb25maWd1cmF0aW9uLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2ltYWdlYnVpbGRlci9sYXRlc3QvdXNlcmd1aWRlL21hbmFnZS1pbmZyYS1jb25maWcuaHRtbFxuICovXG5AcHJvcGVydHlJbmplY3RhYmxlXG5leHBvcnQgY2xhc3MgSW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uIGV4dGVuZHMgSW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uQmFzZSB7XG4gIC8qKiBVbmlxdWVseSBpZGVudGlmaWVzIHRoaXMgY2xhc3MuICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgUFJPUEVSVFlfSU5KRUNUSU9OX0lEOiBzdHJpbmcgPSAnQGF3cy1jZGsuYXdzLWltYWdlYnVpbGRlci1hbHBoYS5JbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb24nO1xuXG4gIC8qKlxuICAgKiBJbXBvcnQgYW4gZXhpc3RpbmcgaW5mcmFzdHJ1Y3R1cmUgY29uZmlndXJhdGlvbiBnaXZlbiBpdHMgQVJOLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tSW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uQXJuKFxuICAgIHNjb3BlOiBDb25zdHJ1Y3QsXG4gICAgaWQ6IHN0cmluZyxcbiAgICBpbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb25Bcm46IHN0cmluZyxcbiAgKTogSUluZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvbiB7XG4gICAgY29uc3QgaW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uTmFtZSA9IGNkay5TdGFjay5vZihzY29wZSkuc3BsaXRBcm4oXG4gICAgICBpbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb25Bcm4sXG4gICAgICBjZGsuQXJuRm9ybWF0LlNMQVNIX1JFU09VUkNFX05BTUUsXG4gICAgKS5yZXNvdXJjZU5hbWUhO1xuXG4gICAgY2xhc3MgSW1wb3J0IGV4dGVuZHMgSW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uQmFzZSB7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgaW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uQXJuID0gaW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uQXJuO1xuICAgICAgcHVibGljIHJlYWRvbmx5IGluZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvbk5hbWUgPSBpbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb25OYW1lO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgSW1wb3J0KHNjb3BlLCBpZCk7XG4gIH1cblxuICAvKipcbiAgICogSW1wb3J0IGFuIGV4aXN0aW5nIGluZnJhc3RydWN0dXJlIGNvbmZpZ3VyYXRpb24gZ2l2ZW4gaXRzIG5hbWUuIFRoZSBwcm92aWRlZCBuYW1lIG11c3QgYmUgbm9ybWFsaXplZCBieSBjb252ZXJ0aW5nXG4gICAqIGFsbCBhbHBoYWJldGljYWwgY2hhcmFjdGVycyB0byBsb3dlcmNhc2UsIGFuZCByZXBsYWNpbmcgYWxsIHNwYWNlcyBhbmQgdW5kZXJzY29yZXMgd2l0aCBoeXBoZW5zLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tSW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uTmFtZShcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgaW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uTmFtZTogc3RyaW5nLFxuICApOiBJSW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uIHtcbiAgICByZXR1cm4gSW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uLmZyb21JbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb25Bcm4oXG4gICAgICBzY29wZSxcbiAgICAgIGlkLFxuICAgICAgY2RrLlN0YWNrLm9mKHNjb3BlKS5mb3JtYXRBcm4oe1xuICAgICAgICBzZXJ2aWNlOiAnaW1hZ2VidWlsZGVyJyxcbiAgICAgICAgcmVzb3VyY2U6ICdpbmZyYXN0cnVjdHVyZS1jb25maWd1cmF0aW9uJyxcbiAgICAgICAgcmVzb3VyY2VOYW1lOiBpbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb25OYW1lLFxuICAgICAgfSksXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gd2hldGhlciB0aGUgZ2l2ZW4gb2JqZWN0IGlzIGFuIEluZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvbi5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgaXNJbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb24oeDogYW55KTogeCBpcyBJbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb24ge1xuICAgIHJldHVybiB4ICE9PSBudWxsICYmIHR5cGVvZiB4ID09PSAnb2JqZWN0JyAmJiBJTkZSQVNUUlVDVFVSRV9DT05GSUdVUkFUSU9OX1NZTUJPTCBpbiB4O1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBFQzIgaW5zdGFuY2UgcHJvZmlsZSB0byB1c2UgZm9yIHRoZSBidWlsZFxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGluc3RhbmNlUHJvZmlsZTogaWFtLklJbnN0YW5jZVByb2ZpbGU7XG5cbiAgLyoqXG4gICAqIFRoZSByb2xlIGFzc29jaWF0ZWQgd2l0aCB0aGUgRUMyIGluc3RhbmNlIHByb2ZpbGUgdXNlZCBmb3IgdGhlIGJ1aWxkXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcm9sZT86IGlhbS5JUm9sZTtcblxuICAvKipcbiAgICogVGhlIGJ1Y2tldCB1c2VkIHRvIHVwbG9hZCBpbWFnZSBidWlsZCBsb2dzXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgbG9nQnVja2V0PzogczMuSUJ1Y2tldDtcblxuICBwcml2YXRlIHJlYWRvbmx5IGF1dG9HZW5lcmF0ZWRJbnN0YW5jZVByb2ZpbGVSb2xlPzogaWFtLklSb2xlO1xuICBwcml2YXRlIHJlc291cmNlOiBDZm5JbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb247XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBJbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb25Qcm9wcyA9IHt9KSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCB7XG4gICAgICBwaHlzaWNhbE5hbWU6XG4gICAgICAgIHByb3BzLmluZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvbk5hbWUgPz9cbiAgICAgICAgY2RrLkxhenkuc3RyaW5nKHtcbiAgICAgICAgICBwcm9kdWNlOiAoKSA9PlxuICAgICAgICAgICAgY2RrLk5hbWVzLnVuaXF1ZVJlc291cmNlTmFtZSh0aGlzLCB7XG4gICAgICAgICAgICAgIG1heExlbmd0aDogMTI4LFxuICAgICAgICAgICAgICBzZXBhcmF0b3I6ICctJyxcbiAgICAgICAgICAgICAgYWxsb3dlZFNwZWNpYWxDaGFyYWN0ZXJzOiAnLScsXG4gICAgICAgICAgICB9KS50b0xvd2VyQ2FzZSgpLCAvLyBFbmZvcmNlIGxvd2VyY2FzZSBmb3IgdGhlIGF1dG8tZ2VuZXJhdGVkIGZhbGxiYWNrXG4gICAgICAgIH0pLFxuICAgIH0pO1xuICAgIC8vIEVuaGFuY2VkIENESyBBbmFseXRpY3MgVGVsZW1ldHJ5XG4gICAgYWRkQ29uc3RydWN0TWV0YWRhdGEodGhpcywgcHJvcHMpO1xuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsIElORlJBU1RSVUNUVVJFX0NPTkZJR1VSQVRJT05fU1lNQk9MLCB7IHZhbHVlOiB0cnVlIH0pO1xuXG4gICAgdGhpcy52YWxpZGF0ZUluZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvbk5hbWUoKTtcblxuICAgIGlmIChwcm9wcy5zdWJuZXRTZWxlY3Rpb24gJiYgIXByb3BzLnZwYykge1xuICAgICAgdGhyb3cgbmV3IGNkay5WYWxpZGF0aW9uRXJyb3IobGl0YFZwY1JlcXVpcmVkRm9yU3VibmV0U2VsZWN0aW9uYCwgJ0EgdnBjIG11c3QgYmUgcHJvdmlkZWQgd2hlbiB1c2luZyBzdWJuZXRTZWxlY3Rpb24nLCB0aGlzKTtcbiAgICB9XG5cbiAgICBjb25zdCBzZWxlY3RlZFN1Ym5ldHMgPSBwcm9wcy52cGM/LnNlbGVjdFN1Ym5ldHMocHJvcHMuc3VibmV0U2VsZWN0aW9uKTtcbiAgICBpZiAocHJvcHMudnBjICYmIHNlbGVjdGVkU3VibmV0cyAmJiBzZWxlY3RlZFN1Ym5ldHMuc3VibmV0SWRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhyb3cgbmV3IGNkay5WYWxpZGF0aW9uRXJyb3IobGl0YE5vU3VibmV0c01hdGNoZWRgLCAnTm8gc3VibmV0cyBtYXRjaGVkIHRoZSBnaXZlbiBzdWJuZXRTZWxlY3Rpb24gZm9yIHRoZSBwcm92aWRlZCBWUEMuJywgdGhpcyk7XG4gICAgfVxuXG4gICAgaWYgKHByb3BzLmluc3RhbmNlUHJvZmlsZSAmJiBwcm9wcy5yb2xlKSB7XG4gICAgICB0aHJvdyBuZXcgY2RrLlZhbGlkYXRpb25FcnJvcihsaXRgQm90aEluc3RhbmNlUHJvZmlsZUFuZFJvbGVQcm92aWRlZGAsICdCb3RoIGFuIGluc3RhbmNlIHByb2ZpbGUgYW5kIGEgcm9sZSBjYW5ub3QgYmUgcHJvdmlkZWQnLCB0aGlzKTtcbiAgICB9XG5cbiAgICBpZiAoIWNkay5Ub2tlbi5pc1VucmVzb2x2ZWQocHJvcHMuZWMySW5zdGFuY2VUZW5hbmN5KSkge1xuICAgICAgaWYgKHByb3BzLmVjMkluc3RhbmNlVGVuYW5jeSA9PT0gVGVuYW5jeS5IT1NUKSB7XG4gICAgICAgIGlmIChwcm9wcy5lYzJJbnN0YW5jZUhvc3RJZCA9PT0gdW5kZWZpbmVkICYmIHByb3BzLmVjMkluc3RhbmNlSG9zdFJlc291cmNlR3JvdXBBcm4gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHRocm93IG5ldyBjZGsuVmFsaWRhdGlvbkVycm9yKFxuICAgICAgICAgICAgbGl0YEhvc3RUZW5hbmN5UmVxdWlyZXNIb3N0SWRPclJlc291cmNlR3JvdXBgLFxuICAgICAgICAgICAgJ2VjMkluc3RhbmNlSG9zdElkIG9yIGVjMkluc3RhbmNlSG9zdFJlc291cmNlR3JvdXBBcm4gbXVzdCBiZSBzcGVjaWZpZWQgd2hlbiBlYzJJbnN0YW5jZVRlbmFuY3kgaXMgc2V0IHRvIGhvc3QnLFxuICAgICAgICAgICAgdGhpcyxcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAocHJvcHMuZWMySW5zdGFuY2VIb3N0SWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHRocm93IG5ldyBjZGsuVmFsaWRhdGlvbkVycm9yKFxuICAgICAgICAgICAgbGl0YEhvc3RJZFJlcXVpcmVzSG9zdFRlbmFuY3lgLFxuICAgICAgICAgICAgJ2VjMkluc3RhbmNlSG9zdElkIGNhbm5vdCBiZSBzcGVjaWZpZWQgdW5sZXNzIGVjMkluc3RhbmNlVGVuYW5jeSBpcyBzZXQgdG8gaG9zdCcsXG4gICAgICAgICAgICB0aGlzLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocHJvcHMuZWMySW5zdGFuY2VIb3N0UmVzb3VyY2VHcm91cEFybiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IGNkay5WYWxpZGF0aW9uRXJyb3IoXG4gICAgICAgICAgICBsaXRgSG9zdFJlc291cmNlR3JvdXBBcm5SZXF1aXJlc0hvc3RUZW5hbmN5YCxcbiAgICAgICAgICAgICdlYzJJbnN0YW5jZUhvc3RSZXNvdXJjZUdyb3VwQXJuIGNhbm5vdCBiZSBzcGVjaWZpZWQgdW5sZXNzIGVjMkluc3RhbmNlVGVuYW5jeSBpcyBzZXQgdG8gaG9zdCcsXG4gICAgICAgICAgICB0aGlzLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAocHJvcHMuZWMySW5zdGFuY2VIb3N0SWQgIT09IHVuZGVmaW5lZCAmJiBwcm9wcy5lYzJJbnN0YW5jZUhvc3RSZXNvdXJjZUdyb3VwQXJuICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBjZGsuVmFsaWRhdGlvbkVycm9yKFxuICAgICAgICBsaXRgSG9zdElkQW5kUmVzb3VyY2VHcm91cEFybkNvbmZsaWN0YCxcbiAgICAgICAgJ2VjMkluc3RhbmNlSG9zdElkIGFuZCBlYzJJbnN0YW5jZUhvc3RSZXNvdXJjZUdyb3VwQXJuIGNhbm5vdCBiZSB1c2VkIHRvZ2V0aGVyJyxcbiAgICAgICAgdGhpcyxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKHByb3BzLmh0dHBQdXRSZXNwb25zZUhvcExpbWl0ICE9PSB1bmRlZmluZWQgJiYgcHJvcHMuaHR0cFB1dFJlc3BvbnNlSG9wTGltaXQgPCAxKSB7XG4gICAgICB0aHJvdyBuZXcgY2RrLlZhbGlkYXRpb25FcnJvcihsaXRgSHR0cFB1dFJlc3BvbnNlSG9wTGltaXRUb29Mb3dgLCAnaHR0cFB1dFJlc3BvbnNlSG9wTGltaXQgbXVzdCBiZSBhdCBsZWFzdCAxJywgdGhpcyk7XG4gICAgfVxuXG4gICAgaWYgKHByb3BzLmh0dHBQdXRSZXNwb25zZUhvcExpbWl0ICE9PSB1bmRlZmluZWQgJiYgcHJvcHMuaHR0cFB1dFJlc3BvbnNlSG9wTGltaXQgPiA2NCkge1xuICAgICAgdGhyb3cgbmV3IGNkay5WYWxpZGF0aW9uRXJyb3IobGl0YEh0dHBQdXRSZXNwb25zZUhvcExpbWl0VG9vSGlnaGAsICdodHRwUHV0UmVzcG9uc2VIb3BMaW1pdCBtdXN0IGJlIGF0IG1vc3QgNjQnLCB0aGlzKTtcbiAgICB9XG5cbiAgICBpZiAoIXByb3BzLmluc3RhbmNlUHJvZmlsZSAmJiAhcHJvcHMucm9sZSkge1xuICAgICAgdGhpcy5hdXRvR2VuZXJhdGVkSW5zdGFuY2VQcm9maWxlUm9sZSA9IG5ldyBpYW0uUm9sZSh0aGlzLCAnSW5zdGFuY2VQcm9maWxlUm9sZScsIHtcbiAgICAgICAgYXNzdW1lZEJ5OiBuZXcgaWFtLlNlcnZpY2VQcmluY2lwYWwoJ2VjMi5hbWF6b25hd3MuY29tJyksXG4gICAgICAgIG1hbmFnZWRQb2xpY2llczogW1xuICAgICAgICAgIGlhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZSgnQW1hem9uU1NNTWFuYWdlZEluc3RhbmNlQ29yZScpLFxuICAgICAgICAgIGlhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZSgnRUMySW5zdGFuY2VQcm9maWxlRm9ySW1hZ2VCdWlsZGVyJyksXG4gICAgICAgIF0sXG4gICAgICB9KTtcbiAgICAgIHRoaXMucm9sZSA9IHRoaXMuYXV0b0dlbmVyYXRlZEluc3RhbmNlUHJvZmlsZVJvbGU7XG4gICAgfVxuXG4gICAgdGhpcy5pbnN0YW5jZVByb2ZpbGUgPVxuICAgICAgcHJvcHMuaW5zdGFuY2VQcm9maWxlIHx8XG4gICAgICBuZXcgaWFtLkluc3RhbmNlUHJvZmlsZSh0aGlzLCAnSW5zdGFuY2VQcm9maWxlJywgeyByb2xlOiBwcm9wcy5yb2xlID8/IHRoaXMuYXV0b0dlbmVyYXRlZEluc3RhbmNlUHJvZmlsZVJvbGUgfSk7XG5cbiAgICB0aGlzLnJvbGUgPSB0aGlzLmluc3RhbmNlUHJvZmlsZS5yb2xlO1xuICAgIHRoaXMubG9nQnVja2V0ID0gcHJvcHMubG9nZ2luZz8uczNCdWNrZXQ7XG5cbiAgICBpZiAodGhpcy5sb2dCdWNrZXQgJiYgdGhpcy5yb2xlKSB7XG4gICAgICB0aGlzLmxvZ0J1Y2tldC5ncmFudFB1dCh0aGlzLnJvbGUsIHByb3BzLmxvZ2dpbmc/LnMzS2V5UHJlZml4ID8gYCR7cHJvcHMubG9nZ2luZy5zM0tleVByZWZpeH0vKmAgOiAnKicpO1xuICAgIH1cblxuICAgIGNvbnN0IGhhc1BsYWNlbWVudE9wdGlvbnMgPVxuICAgICAgcHJvcHMuZWMySW5zdGFuY2VBdmFpbGFiaWxpdHlab25lICE9PSB1bmRlZmluZWQgfHxcbiAgICAgIHByb3BzLmVjMkluc3RhbmNlSG9zdElkICE9PSB1bmRlZmluZWQgfHxcbiAgICAgIHByb3BzLmVjMkluc3RhbmNlSG9zdFJlc291cmNlR3JvdXBBcm4gIT09IHVuZGVmaW5lZCB8fFxuICAgICAgcHJvcHMuZWMySW5zdGFuY2VUZW5hbmN5ICE9PSB1bmRlZmluZWQ7XG4gICAgY29uc3QgcGxhY2VtZW50OiBDZm5JbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb24uUGxhY2VtZW50UHJvcGVydHkgfCB1bmRlZmluZWQgPSBoYXNQbGFjZW1lbnRPcHRpb25zXG4gICAgICA/IHtcbiAgICAgICAgLi4uKHByb3BzLmVjMkluc3RhbmNlQXZhaWxhYmlsaXR5Wm9uZSAhPT0gdW5kZWZpbmVkICYmIHtcbiAgICAgICAgICBhdmFpbGFiaWxpdHlab25lOiBwcm9wcy5lYzJJbnN0YW5jZUF2YWlsYWJpbGl0eVpvbmUsXG4gICAgICAgIH0pLFxuICAgICAgICAuLi4ocHJvcHMuZWMySW5zdGFuY2VIb3N0SWQgIT09IHVuZGVmaW5lZCAmJiB7IGhvc3RJZDogcHJvcHMuZWMySW5zdGFuY2VIb3N0SWQgfSksXG4gICAgICAgIC4uLihwcm9wcy5lYzJJbnN0YW5jZUhvc3RSZXNvdXJjZUdyb3VwQXJuICE9PSB1bmRlZmluZWQgJiYge1xuICAgICAgICAgIGhvc3RSZXNvdXJjZUdyb3VwQXJuOiBwcm9wcy5lYzJJbnN0YW5jZUhvc3RSZXNvdXJjZUdyb3VwQXJuLFxuICAgICAgICB9KSxcbiAgICAgICAgLi4uKHByb3BzLmVjMkluc3RhbmNlVGVuYW5jeSAhPT0gdW5kZWZpbmVkICYmIHsgdGVuYW5jeTogcHJvcHMuZWMySW5zdGFuY2VUZW5hbmN5IH0pLFxuICAgICAgfVxuICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICBjb25zdCBpbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb24gPSBuZXcgQ2ZuSW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uKHRoaXMsICdSZXNvdXJjZScsIHtcbiAgICAgIG5hbWU6IHRoaXMucGh5c2ljYWxOYW1lLFxuICAgICAgaW5zdGFuY2VQcm9maWxlTmFtZTogdGhpcy5pbnN0YW5jZVByb2ZpbGUuaW5zdGFuY2VQcm9maWxlTmFtZSxcbiAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcy5kZXNjcmlwdGlvbixcbiAgICAgIGluc3RhbmNlTWV0YWRhdGFPcHRpb25zOiB7XG4gICAgICAgIGh0dHBUb2tlbnM6IHByb3BzLmh0dHBUb2tlbnMgPz8gSHR0cFRva2Vucy5SRVFVSVJFRCxcbiAgICAgICAgaHR0cFB1dFJlc3BvbnNlSG9wTGltaXQ6IHByb3BzLmh0dHBQdXRSZXNwb25zZUhvcExpbWl0ID8/IDIsXG4gICAgICB9LFxuICAgICAgaW5zdGFuY2VUeXBlczogcHJvcHMuaW5zdGFuY2VUeXBlcz8ubGVuZ3RoXG4gICAgICAgID8gcHJvcHMuaW5zdGFuY2VUeXBlcz8ubWFwKChpbnN0YW5jZVR5cGUpID0+IGluc3RhbmNlVHlwZS50b1N0cmluZygpKVxuICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgIGtleVBhaXI6IHByb3BzLmtleVBhaXI/LmtleVBhaXJOYW1lLFxuICAgICAgLi4uKHByb3BzLmxvZ2dpbmcgJiYge1xuICAgICAgICBsb2dnaW5nOiB7XG4gICAgICAgICAgczNMb2dzOiB7XG4gICAgICAgICAgICBzM0J1Y2tldE5hbWU6IHByb3BzLmxvZ2dpbmc/LnMzQnVja2V0LmJ1Y2tldE5hbWUsXG4gICAgICAgICAgICBzM0tleVByZWZpeDogcHJvcHMubG9nZ2luZz8uczNLZXlQcmVmaXgsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0pLFxuICAgICAgLi4uKHBsYWNlbWVudCAmJiB7IHBsYWNlbWVudCB9KSxcbiAgICAgIHJlc291cmNlVGFnczogcHJvcHMucmVzb3VyY2VUYWdzLFxuICAgICAgc2VjdXJpdHlHcm91cElkczogcHJvcHMuc2VjdXJpdHlHcm91cHM/Lmxlbmd0aFxuICAgICAgICA/IHByb3BzLnNlY3VyaXR5R3JvdXBzPy5tYXAoKHNlY3VyaXR5R3JvdXApID0+IHNlY3VyaXR5R3JvdXAuc2VjdXJpdHlHcm91cElkKVxuICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgIHN1Ym5ldElkOiBwcm9wcy52cGM/LnNlbGVjdFN1Ym5ldHMocHJvcHMuc3VibmV0U2VsZWN0aW9uKS5zdWJuZXRJZHNbMF0sXG4gICAgICBzbnNUb3BpY0FybjogcHJvcHMubm90aWZpY2F0aW9uVG9waWM/LnRvcGljQXJuLFxuICAgICAgdGFnczogcHJvcHMudGFncyxcbiAgICAgIHRlcm1pbmF0ZUluc3RhbmNlT25GYWlsdXJlOiBwcm9wcy50ZXJtaW5hdGVJbnN0YW5jZU9uRmFpbHVyZSxcbiAgICB9KTtcblxuICAgIHRoaXMucmVzb3VyY2UgPSBpbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb247XG4gIH1cblxuICBAbWVtb2l6ZWRHZXR0ZXJcbiAgcHVibGljIGdldCBpbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb25OYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0UmVzb3VyY2VOYW1lQXR0cmlidXRlKHRoaXMucmVzb3VyY2UuYXR0ck5hbWUpO1xuICB9XG5cbiAgQG1lbW9pemVkR2V0dGVyXG4gIHB1YmxpYyBnZXQgaW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uQXJuKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0UmVzb3VyY2VBcm5BdHRyaWJ1dGUodGhpcy5yZXNvdXJjZS5hdHRyQXJuLCB7XG4gICAgICBzZXJ2aWNlOiAnaW1hZ2VidWlsZGVyJyxcbiAgICAgIHJlc291cmNlOiAnaW5mcmFzdHJ1Y3R1cmUtY29uZmlndXJhdGlvbicsXG4gICAgICByZXNvdXJjZU5hbWU6IHRoaXMucGh5c2ljYWxOYW1lLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSB2YWxpZGF0ZUluZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvbk5hbWUoKSB7XG4gICAgaWYgKGNkay5Ub2tlbi5pc1VucmVzb2x2ZWQodGhpcy5waHlzaWNhbE5hbWUpKSB7XG4gICAgICByZXR1cm47IC8vIENhbm5vdCB2YWxpZGF0ZSB1bnJlc29sdmVkIHRva2VucywgZ2l2ZW4gdGhlaXIgYWN0dWFsIHZhbHVlIGlzIHJlbmRlcmVkIGF0IGRlcGxveW1lbnQgdGltZVxuICAgIH1cblxuICAgIGlmICh0aGlzLnBoeXNpY2FsTmFtZS5sZW5ndGggPiAxMjgpIHtcbiAgICAgIHRocm93IG5ldyBjZGsuVmFsaWRhdGlvbkVycm9yKGxpdGBJbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb25OYW1lVG9vTG9uZ2AsICdUaGUgaW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uTmFtZSBjYW5ub3QgYmUgbG9uZ2VyIHRoYW4gMTI4IGNoYXJhY3RlcnMnLCB0aGlzKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5waHlzaWNhbE5hbWUuaW5jbHVkZXMoJyAnKSkge1xuICAgICAgdGhyb3cgbmV3IGNkay5WYWxpZGF0aW9uRXJyb3IobGl0YEluZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvbk5hbWVDb250YWluc1NwYWNlc2AsICdUaGUgaW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uTmFtZSBjYW5ub3QgY29udGFpbiBzcGFjZXMnLCB0aGlzKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5waHlzaWNhbE5hbWUuaW5jbHVkZXMoJ18nKSkge1xuICAgICAgdGhyb3cgbmV3IGNkay5WYWxpZGF0aW9uRXJyb3IobGl0YEluZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvbk5hbWVDb250YWluc1VuZGVyc2NvcmVzYCwgJ1RoZSBpbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb25OYW1lIGNhbm5vdCBjb250YWluIHVuZGVyc2NvcmVzJywgdGhpcyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucGh5c2ljYWxOYW1lICE9PSB0aGlzLnBoeXNpY2FsTmFtZS50b0xvd2VyQ2FzZSgpKSB7XG4gICAgICB0aHJvdyBuZXcgY2RrLlZhbGlkYXRpb25FcnJvcihsaXRgSW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uTmFtZU5vdExvd2VyY2FzZWAsICdUaGUgaW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uTmFtZSBtdXN0IGJlIGxvd2VyY2FzZScsIHRoaXMpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyBfYmluZChvcHRpb25zOiBJbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb25CaW5kT3B0aW9ucykge1xuICAgIGlmIChvcHRpb25zLmlzQ29udGFpbmVyQnVpbGQpIHtcbiAgICAgIHRoaXMuYXV0b0dlbmVyYXRlZEluc3RhbmNlUHJvZmlsZVJvbGU/LmFkZE1hbmFnZWRQb2xpY3koXG4gICAgICAgIGlhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZSgnRUMySW5zdGFuY2VQcm9maWxlRm9ySW1hZ2VCdWlsZGVyRUNSQ29udGFpbmVyQnVpbGRzJyksXG4gICAgICApO1xuICAgIH1cbiAgfVxufVxuIl19
382
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5mcmFzdHJ1Y3R1cmUtY29uZmlndXJhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImluZnJhc3RydWN0dXJlLWNvbmZpZ3VyYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsaURBQW1DO0FBRW5DLHlEQUEyQztBQUMzQyxtRUFBOEU7QUFHOUUsNEVBQTRFO0FBQzVFLDhFQUE4RTtBQUM5RSwwRUFBMEU7QUFHMUUsTUFBTSxtQ0FBbUMsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLDZEQUE2RCxDQUFDLENBQUM7QUFvQ3RIOzs7O0dBSUc7QUFDSCxJQUFZLFVBVVg7QUFWRCxXQUFZLFVBQVU7SUFDcEI7O09BRUc7SUFDSCxtQ0FBcUIsQ0FBQTtJQUVyQjs7T0FFRztJQUNILG1DQUFxQixDQUFBO0FBQ3ZCLENBQUMsRUFWVyxVQUFVLDBCQUFWLFVBQVUsUUFVckI7QUFFRDs7OztHQUlHO0FBQ0gsSUFBWSxPQWVYO0FBZkQsV0FBWSxPQUFPO0lBQ2pCOztPQUVHO0lBQ0gsOEJBQW1CLENBQUE7SUFFbkI7O09BRUc7SUFDSCxrQ0FBdUIsQ0FBQTtJQUV2Qjs7T0FFRztJQUNILHdCQUFhLENBQUE7QUFDZixDQUFDLEVBZlcsT0FBTyx1QkFBUCxPQUFPLFFBZWxCO0FBcU1EOztHQUVHO0FBQ0gsTUFBZSwrQkFBZ0MsU0FBUSxHQUFHLENBQUMsUUFBUTtJQVVqRTs7Ozs7O09BTUc7SUFDSSxLQUFLLENBQUMsT0FBdUIsRUFBRSxHQUFHLE9BQWlCO1FBQ3hELE9BQU8sR0FBRyxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUM7WUFDOUIsT0FBTztZQUNQLE9BQU87WUFDUCxZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQUMsOEJBQThCLENBQUM7WUFDbkQsS0FBSyxFQUFFLElBQUk7U0FDWixDQUFDLENBQUM7S0FD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LFdBQVcsRUFBRSxFQUFFLENBQUM7Z0JBQzFELE1BQU0sSUFBSSxHQUFHLENBQUMsZUFBZSxDQUFDLElBQUEsc0JBQUcsRUFBQSw2Q0FBNkMsRUFBRSx1REFBdUQsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUNqSixDQUFDO1NBQ0Y7UUFFRDs7V0FFRztRQUNJLEtBQUssQ0FBQyxPQUErQztZQUMxRCxJQUFJLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO2dCQUM3QixJQUFJLENBQUMsZ0NBQWdDLEVBQUUsZ0JBQWdCLENBQ3JELEdBQUcsQ0FBQyxhQUFhLENBQUMsd0JBQXdCLENBQUMscURBQXFELENBQUMsQ0FDbEcsQ0FBQztZQUNKLENBQUM7U0FDRjs7WUExUVUsdURBQTJCOzs7OztBQUEzQixrRUFBMkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBjZGsgZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHR5cGUgKiBhcyBlYzIgZnJvbSAnYXdzLWNkay1saWIvYXdzLWVjMic7XG5pbXBvcnQgKiBhcyBpYW0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWlhbSc7XG5pbXBvcnQgeyBDZm5JbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb24gfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaW1hZ2VidWlsZGVyJztcbmltcG9ydCB0eXBlICogYXMgczMgZnJvbSAnYXdzLWNkay1saWIvYXdzLXMzJztcbmltcG9ydCB0eXBlICogYXMgc25zIGZyb20gJ2F3cy1jZGstbGliL2F3cy1zbnMnO1xuaW1wb3J0IHsgbWVtb2l6ZWRHZXR0ZXIsIGxpdCB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUvbGliL2hlbHBlcnMtaW50ZXJuYWwnO1xuaW1wb3J0IHsgYWRkQ29uc3RydWN0TWV0YWRhdGEgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlL2xpYi9tZXRhZGF0YS1yZXNvdXJjZSc7XG5pbXBvcnQgeyBwcm9wZXJ0eUluamVjdGFibGUgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlL2xpYi9wcm9wLWluamVjdGFibGUnO1xuaW1wb3J0IHR5cGUgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcblxuY29uc3QgSU5GUkFTVFJVQ1RVUkVfQ09ORklHVVJBVElPTl9TWU1CT0wgPSBTeW1ib2wuZm9yKCdAYXdzLWNkay9hd3MtaW1hZ2VidWlsZGVyLWFscGhhLkluZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvbicpO1xuXG4vKipcbiAqIEFuIEVDMiBJbWFnZSBCdWlsZGVyIEluZnJhc3RydWN0dXJlIENvbmZpZ3VyYXRpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUluZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvbiBleHRlbmRzIGNkay5JUmVzb3VyY2Uge1xuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgaW5mcmFzdHJ1Y3R1cmUgY29uZmlndXJhdGlvblxuICAgKlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSBpbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb25Bcm46IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGluZnJhc3RydWN0dXJlIGNvbmZpZ3VyYXRpb25cbiAgICpcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcmVhZG9ubHkgaW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBHcmFudCBjdXN0b20gYWN0aW9ucyB0byB0aGUgZ2l2ZW4gZ3JhbnRlZSBmb3IgdGhlIGluZnJhc3RydWN0dXJlIGNvbmZpZ3VyYXRpb25cbiAgICpcbiAgICogQHBhcmFtIGdyYW50ZWUgLSBUaGUgcHJpbmNpcGFsXG4gICAqIEBwYXJhbSBhY3Rpb25zIC0gVGhlIGxpc3Qgb2YgYWN0aW9uc1xuICAgKi9cbiAgZ3JhbnQoZ3JhbnRlZTogaWFtLklHcmFudGFibGUsIC4uLmFjdGlvbnM6IHN0cmluZ1tdKTogaWFtLkdyYW50O1xuXG4gIC8qKlxuICAgKiBHcmFudCByZWFkIHBlcm1pc3Npb25zIHRvIHRoZSBnaXZlbiBncmFudGVlIGZvciB0aGUgaW5mcmFzdHJ1Y3R1cmUgY29uZmlndXJhdGlvblxuICAgKlxuICAgKiBAcGFyYW0gZ3JhbnRlZSAtIFRoZSBwcmluY2lwYWxcbiAgICovXG4gIGdyYW50UmVhZChncmFudGVlOiBpYW0uSUdyYW50YWJsZSk6IGlhbS5HcmFudDtcbn1cblxuLyoqXG4gKiBJbmRpY2F0ZXMgd2hldGhlciBhIHNpZ25lZCB0b2tlbiBoZWFkZXIgaXMgcmVxdWlyZWQgZm9yIGluc3RhbmNlIG1ldGFkYXRhIHJldHJpZXZhbCByZXF1ZXN0cy5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9pbWFnZWJ1aWxkZXIvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfSW5zdGFuY2VNZXRhZGF0YU9wdGlvbnMuaHRtbCNpbWFnZWJ1aWxkZXItVHlwZS1JbnN0YW5jZU1ldGFkYXRhT3B0aW9ucy1odHRwVG9rZW5zXG4gKi9cbmV4cG9ydCBlbnVtIEh0dHBUb2tlbnMge1xuICAvKipcbiAgICogQWxsb3dzIHJldHJpZXZhbCBvZiBpbnN0YW5jZSBtZXRhZGF0YSB3aXRoIG9yIHdpdGhvdXQgYSBzaWduZWQgdG9rZW4gaGVhZGVyIGluIHRoZSByZXF1ZXN0XG4gICAqL1xuICBPUFRJT05BTCA9ICdvcHRpb25hbCcsXG5cbiAgLyoqXG4gICAqIFJlcXVpcmVzIGEgc2lnbmVkIHRva2VuIGhlYWRlciBpbiBpbnN0YW5jZSBtZXRhZGF0YSByZXRyaWV2YWwgcmVxdWVzdHNcbiAgICovXG4gIFJFUVVJUkVEID0gJ3JlcXVpcmVkJyxcbn1cblxuLyoqXG4gKiBUaGUgdGVuYW5jeSB0byB1c2UgZm9yIGFuIGluc3RhbmNlLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2ltYWdlYnVpbGRlci9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9QbGFjZW1lbnQuaHRtbCNpbWFnZWJ1aWxkZXItVHlwZS1QbGFjZW1lbnQtdGVuYW5jeVxuICovXG5leHBvcnQgZW51bSBUZW5hbmN5IHtcbiAgLyoqXG4gICAqIEluc3RhbmNlcyB3aWxsIGJlIGxhdW5jaGVkIHdpdGggZGVmYXVsdCB0ZW5hbmN5XG4gICAqL1xuICBERUZBVUxUID0gJ2RlZmF1bHQnLFxuXG4gIC8qKlxuICAgKiBJbnN0YW5jZXMgd2lsbCBiZSBsYXVuY2hlZCB3aXRoIGRlZGljYXRlZCB0ZW5hbmN5XG4gICAqL1xuICBERURJQ0FURUQgPSAnZGVkaWNhdGVkJyxcblxuICAvKipcbiAgICogSW5zdGFuY2VzIHdpbGwgYmUgbGF1bmNoZWQgb24gYSBkZWRpY2F0ZWQgaG9zdFxuICAgKi9cbiAgSE9TVCA9ICdob3N0Jyxcbn1cblxuLyoqXG4gKiBUaGUgbG9nIHNldHRpbmdzIGZvciBkZXRhaWxlZCBidWlsZCBsb2dnaW5nXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uTG9nZ2luZyB7XG4gIC8qKlxuICAgKiBUaGUgUzMgbG9nZ2luZyBidWNrZXQgdG8gdXNlIGZvciBkZXRhaWxlZCBidWlsZCBsb2dnaW5nXG4gICAqL1xuICByZWFkb25seSBzM0J1Y2tldDogczMuSUJ1Y2tldDtcblxuICAvKipcbiAgICogVGhlIFMzIGxvZ2dpbmcgcHJlZml4IHRvIHVzZSBmb3IgZGV0YWlsZWQgYnVpbGQgbG9nZ2luZ1xuICAgKlxuICAgKiBAZGVmYXVsdCBObyBwcmVmaXhcbiAgICovXG4gIHJlYWRvbmx5IHMzS2V5UHJlZml4Pzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGNyZWF0aW5nIGFuIEluZnJhc3RydWN0dXJlIENvbmZpZ3VyYXRpb24gcmVzb3VyY2VcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb25Qcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgaW5mcmFzdHJ1Y3R1cmUgY29uZmlndXJhdGlvbi4gVGhpcyBuYW1lIG11c3QgYmUgbm9ybWFsaXplZCBieSB0cmFuc2Zvcm1pbmcgYWxsIGFscGhhYmV0aWNhbFxuICAgKiBjaGFyYWN0ZXJzIHRvIGxvd2VyY2FzZSwgYW5kIHJlcGxhY2luZyBhbGwgc3BhY2VzIGFuZCB1bmRlcnNjb3JlcyB3aXRoIGh5cGhlbnMuXG4gICAqXG4gICAqIEBkZWZhdWx0IEEgbmFtZSBpcyBnZW5lcmF0ZWRcbiAgICovXG4gIHJlYWRvbmx5IGluZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvbk5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgaW5mcmFzdHJ1Y3R1cmUgY29uZmlndXJhdGlvbi5cbiAgICpcbiAgICogQGRlZmF1bHQgTm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBpbnN0YW5jZSB0eXBlcyB0byBsYXVuY2ggYnVpbGQgYW5kIHRlc3QgRUMyIGluc3RhbmNlcyB3aXRoLlxuICAgKlxuICAgKiBAZGVmYXVsdCBJbWFnZSBCdWlsZGVyIHdpbGwgY2hvb3NlIGZyb20gYSBkZWZhdWx0IHNldCBvZiBpbnN0YW5jZSB0eXBlcyBjb21wYXRpYmxlIHdpdGggdGhlIEFNSVxuICAgKi9cbiAgcmVhZG9ubHkgaW5zdGFuY2VUeXBlcz86IGVjMi5JbnN0YW5jZVR5cGVbXTtcblxuICAvKipcbiAgICogVGhlIGluc3RhbmNlIHByb2ZpbGUgdG8gYXNzb2NpYXRlIHdpdGggdGhlIGluc3RhbmNlIHVzZWQgdG8gY3VzdG9taXplIHRoZSBBTUkuXG4gICAqXG4gICAqIEJ5IGRlZmF1bHQsIGFuIGluc3RhbmNlIHByb2ZpbGUgYW5kIHJvbGUgd2lsbCBiZSBjcmVhdGVkIHdpdGggbWluaW1hbCBwZXJtaXNzaW9ucyBuZWVkZWQgdG8gYnVpbGQgdGhlIGltYWdlLFxuICAgKiBhdHRhY2hlZCB0byB0aGUgRUMyIGluc3RhbmNlLlxuICAgKlxuICAgKiBJZiBhbiBTMyBsb2dnaW5nIGJ1Y2tldCBhbmQga2V5IHByZWZpeCBpcyBwcm92aWRlZCwgYW4gSUFNIGlubGluZSBwb2xpY3kgd2lsbCBiZSBhdHRhY2hlZCB0byB0aGUgaW5zdGFuY2UgcHJvZmlsZSdzXG4gICAqIHJvbGUsIGFsbG93aW5nIHMzOlB1dE9iamVjdCBwZXJtaXNzaW9ucyBvbiB0aGUgYnVja2V0LlxuICAgKlxuICAgKiBAZGVmYXVsdCBBbiBpbnN0YW5jZSBwcm9maWxlIHdpbGwgYmUgZ2VuZXJhdGVkXG4gICAqL1xuICByZWFkb25seSBpbnN0YW5jZVByb2ZpbGU/OiBpYW0uSUluc3RhbmNlUHJvZmlsZTtcbiAgLyoqXG4gICAqIEFuIElBTSByb2xlIHRvIGFzc29jaWF0ZSB3aXRoIHRoZSBpbnN0YW5jZSBwcm9maWxlIHVzZWQgYnkgSW1hZ2UgQnVpbGRlclxuICAgKlxuICAgKiBUaGUgcm9sZSBtdXN0IGJlIGFzc3VtYWJsZSBieSB0aGUgc2VydmljZSBwcmluY2lwYWwgYGVjMi5hbWF6b25hd3MuY29tYDpcbiAgICogTm90ZTogWW91IGNhbiBwcm92aWRlIGFuIGluc3RhbmNlUHJvZmlsZSBvciBhIHJvbGUsIGJ1dCBub3QgYm90aC5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogY29uc3QgaW5zdGFuY2VQcm9maWxlUm9sZSA9IG5ldyBpYW0uUm9sZSh0aGlzLCAnTXlSb2xlJywge1xuICAgKiAgIGFzc3VtZWRCeTogbmV3IGlhbS5TZXJ2aWNlUHJpbmNpcGFsKCdlYzIuYW1hem9uYXdzLmNvbScpXG4gICAqIH0pO1xuICAgKlxuICAgKiBAZGVmYXVsdCBBIHJvbGUgd2lsbCBhdXRvbWF0aWNhbGx5IGJlIGNyZWF0ZWQsIGl0IGNhbiBiZSBhY2Nlc3NlZCB2aWEgdGhlIGByb2xlYCBwcm9wZXJ0eVxuICAgKi9cbiAgcmVhZG9ubHkgcm9sZT86IGlhbS5JUm9sZTtcblxuICAvKipcbiAgICogVGhlIFZQQyB0byBwbGFjZSB0aGUgaW5zdGFuY2UgdXNlZCB0byBjdXN0b21pemUgdGhlIEFNSS5cbiAgICpcbiAgICogQGRlZmF1bHQgVGhlIGRlZmF1bHQgVlBDIHdpbGwgYmUgdXNlZFxuICAgKi9cbiAgcmVhZG9ubHkgdnBjPzogZWMyLklWcGM7XG5cbiAgLyoqXG4gICAqIFNlbGVjdCB3aGljaCBzdWJuZXQgdG8gcGxhY2UgdGhlIGluc3RhbmNlIHVzZWQgdG8gY3VzdG9taXplIHRoZSBBTUkuIFRoZSBmaXJzdCBzdWJuZXQgdGhhdCBpcyBzZWxlY3RlZCB3aWxsIGJlIHVzZWQuXG4gICAqIFlvdSBtdXN0IHNwZWNpZnkgdGhlIFZQQyB0byBjdXN0b21pemUgdGhlIHN1Ym5ldCBzZWxlY3Rpb24uXG4gICAqXG4gICAqIEBkZWZhdWx0IFRoZSBmaXJzdCBzdWJuZXQgc2VsZWN0ZWQgZnJvbSB0aGUgcHJvdmlkZWQgVlBDIHdpbGwgYmUgdXNlZFxuICAgKi9cbiAgcmVhZG9ubHkgc3VibmV0U2VsZWN0aW9uPzogZWMyLlN1Ym5ldFNlbGVjdGlvbjtcblxuICAvKipcbiAgICogVGhlIHNlY3VyaXR5IGdyb3VwcyB0byBhc3NvY2lhdGUgd2l0aCB0aGUgaW5zdGFuY2UgdXNlZCB0byBjdXN0b21pemUgdGhlIEFNSS5cbiAgICpcbiAgICogQGRlZmF1bHQgVGhlIGRlZmF1bHQgc2VjdXJpdHkgZ3JvdXAgZm9yIHRoZSBWUEMgd2lsbCBiZSB1c2VkXG4gICAqL1xuICByZWFkb25seSBzZWN1cml0eUdyb3Vwcz86IGVjMi5JU2VjdXJpdHlHcm91cFtdO1xuXG4gIC8qKlxuICAgKiBUaGUga2V5IHBhaXIgdXNlZCB0byBjb25uZWN0IHRvIHRoZSBidWlsZCBhbmQgdGVzdCBFQzIgaW5zdGFuY2VzLiBUaGUga2V5IHBhaXIgY2FuIGJlIHVzZWQgdG8gbG9nIGludG8gdGhlIGJ1aWxkXG4gICAqIG9yIHRlc3QgaW5zdGFuY2VzIGZvciB0cm91Ymxlc2hvb3RpbmcgYW55IGZhaWx1cmVzLlxuICAgKlxuICAgKiBAZGVmYXVsdCBOb25lXG4gICAqL1xuICByZWFkb25seSBrZXlQYWlyPzogZWMyLklLZXlQYWlyO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHRlcm1pbmF0ZSB0aGUgRUMyIGluc3RhbmNlIHdoZW4gdGhlIGJ1aWxkIG9yIHRlc3Qgd29ya2Zsb3cgZmFpbHMuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IHRlcm1pbmF0ZUluc3RhbmNlT25GYWlsdXJlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIG1heGltdW0gbnVtYmVyIG9mIGhvcHMgdGhhdCBhbiBpbnN0YW5jZSBtZXRhZGF0YSByZXF1ZXN0IGNhbiB0cmF2ZXJzZSB0byByZWFjaCBpdHMgZGVzdGluYXRpb24uIEJ5IGRlZmF1bHQsXG4gICAqIHRoaXMgaXMgc2V0IHRvIDIuXG4gICAqXG4gICAqIEBkZWZhdWx0IDJcbiAgICovXG4gIHJlYWRvbmx5IGh0dHBQdXRSZXNwb25zZUhvcExpbWl0PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciBhIHNpZ25lZCB0b2tlbiBoZWFkZXIgaXMgcmVxdWlyZWQgZm9yIGluc3RhbmNlIG1ldGFkYXRhIHJldHJpZXZhbCByZXF1ZXN0cy4gQnkgZGVmYXVsdCwgdGhpcyBpc1xuICAgKiBzZXQgdG8gYHJlcXVpcmVkYCB0byByZXF1aXJlIElNRFN2MiBvbiBidWlsZCBhbmQgdGVzdCBFQzIgaW5zdGFuY2VzLlxuICAgKlxuICAgKiBAZGVmYXVsdCBIdHRwVG9rZW5zLlJFUVVJUkVEXG4gICAqL1xuICByZWFkb25seSBodHRwVG9rZW5zPzogSHR0cFRva2VucztcblxuICAvKipcbiAgICogVGhlIFNOUyB0b3BpYyBvbiB3aGljaCBub3RpZmljYXRpb25zIGFyZSBzZW50IHdoZW4gYW4gaW1hZ2UgYnVpbGQgY29tcGxldGVzLlxuICAgKlxuICAgKiBAZGVmYXVsdCBObyBub3RpZmljYXRpb25zIGFyZSBzZW50XG4gICAqL1xuICByZWFkb25seSBub3RpZmljYXRpb25Ub3BpYz86IHNucy5JVG9waWM7XG5cbiAgLyoqXG4gICAqIFRoZSBsb2cgc2V0dGluZ3MgZm9yIGRldGFpbGVkIGJ1aWxkIGxvZ2dpbmcuXG4gICAqXG4gICAqIEBkZWZhdWx0IE5vbmVcbiAgICovXG4gIHJlYWRvbmx5IGxvZ2dpbmc/OiBJbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb25Mb2dnaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgYXZhaWxhYmlsaXR5IHpvbmUgdG8gcGxhY2UgSW1hZ2UgQnVpbGRlciBidWlsZCBhbmQgdGVzdCBFQzIgaW5zdGFuY2VzLlxuICAgKlxuICAgKiBAZGVmYXVsdCBFQzIgd2lsbCBzZWxlY3QgYSByYW5kb20gem9uZVxuICAgKi9cbiAgcmVhZG9ubHkgZWMySW5zdGFuY2VBdmFpbGFiaWxpdHlab25lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgSUQgb2YgdGhlIERlZGljYXRlZCBIb3N0IG9uIHdoaWNoIGJ1aWxkIGFuZCB0ZXN0IGluc3RhbmNlcyBydW4uIFRoaXMgb25seSBhcHBsaWVzIGlmIHRoZSBpbnN0YW5jZSB0ZW5hbmN5IGlzXG4gICAqIGBob3N0YC4gVGhpcyBjYW5ub3QgYmUgdXNlZCB3aXRoIHRoZSBgZWMySW5zdGFuY2VIb3N0UmVzb3VyY2VHcm91cEFybmAgcGFyYW1ldGVyLlxuICAgKlxuICAgKiBAZGVmYXVsdCBOb25lXG4gICAqL1xuICByZWFkb25seSBlYzJJbnN0YW5jZUhvc3RJZD86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgaG9zdCByZXNvdXJjZSBncm91cCBvbiB3aGljaCBidWlsZCBhbmQgdGVzdCBpbnN0YW5jZXMgcnVuLiBUaGlzIG9ubHkgYXBwbGllcyBpZiB0aGUgaW5zdGFuY2UgdGVuYW5jeVxuICAgKiBpcyBgaG9zdGAuIFRoaXMgY2Fubm90IGJlIHVzZWQgd2l0aCB0aGUgYGVjMkluc3RhbmNlSG9zdElkYCBwYXJhbWV0ZXIuXG4gICAqXG4gICAqIEBkZWZhdWx0IE5vbmVcbiAgICovXG4gIHJlYWRvbmx5IGVjMkluc3RhbmNlSG9zdFJlc291cmNlR3JvdXBBcm4/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSB0ZW5hbmN5IG9mIHRoZSBpbnN0YW5jZS4gRGVkaWNhdGVkIHRlbmFuY3kgcnVucyBpbnN0YW5jZXMgb24gc2luZ2xlLXRlbmFudCBoYXJkd2FyZSwgd2hpbGUgaG9zdCB0ZW5hbmN5IHJ1bnNcbiAgICogaW5zdGFuY2VzIG9uIGEgZGVkaWNhdGVkIGhvc3QuIFNoYXJlZCB0ZW5hbmN5IGlzIHVzZWQgYnkgZGVmYXVsdC5cbiAgICpcbiAgICogQGRlZmF1bHQgVGVuYW5jeS5ERUZBVUxUXG4gICAqL1xuICByZWFkb25seSBlYzJJbnN0YW5jZVRlbmFuY3k/OiBUZW5hbmN5O1xuXG4gIC8qKlxuICAgKiBUaGUgYWRkaXRpb25hbCB0YWdzIHRvIGFzc2lnbiB0byB0aGUgQW1hem9uIEVDMiBpbnN0YW5jZSB0aGF0IEltYWdlIEJ1aWxkZXIgbGF1bmNoZXMgZHVyaW5nIHRoZSBidWlsZCBwcm9jZXNzLlxuICAgKlxuICAgKiBAZGVmYXVsdCBOb25lXG4gICAqL1xuICByZWFkb25seSByZXNvdXJjZVRhZ3M/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xuXG4gIC8qKlxuICAgKiBUaGUgdGFncyB0byBhcHBseSB0byB0aGUgaW5mcmFzdHJ1Y3R1cmUgY29uZmlndXJhdGlvblxuICAgKlxuICAgKiBAZGVmYXVsdCBOb25lXG4gICAqL1xuICByZWFkb25seSB0YWdzPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcbn1cblxuLyoqXG4gKiBDb250ZXh0IGluZm9ybWF0aW9uIHBhc3NlZCB3aGVuIGFuIEluZnJhc3RydWN0dXJlIENvbmZpZ3VyYXRpb24gaXMgYmVpbmcgY29uc3VtZWRcbiAqXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb25CaW5kT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciB0aGUgaW5mcmFzdHJ1Y3R1cmUgY29uZmlndXJhdGlvbiBpcyBiZWluZyBjb25zdW1lZCBpbnNpZGUgb2YgYSBjb250YWluZXIgYnVpbGRcbiAgICovXG4gIHJlYWRvbmx5IGlzQ29udGFpbmVyQnVpbGQ/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIEEgbmV3IG9yIGltcG9ydGVkIEluZnJhc3RydWN0dXJlIENvbmZpZ3VyYXRpb25cbiAqL1xuYWJzdHJhY3QgY2xhc3MgSW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uQmFzZSBleHRlbmRzIGNkay5SZXNvdXJjZSBpbXBsZW1lbnRzIElJbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb24ge1xuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgaW5mcmFzdHJ1Y3R1cmUgY29uZmlndXJhdGlvblxuICAgKi9cbiAgYWJzdHJhY3QgcmVhZG9ubHkgaW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uQXJuOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgaW5mcmFzdHJ1Y3R1cmUgY29uZmlndXJhdGlvblxuICAgKi9cbiAgYWJzdHJhY3QgcmVhZG9ubHkgaW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBHcmFudCBjdXN0b20gYWN0aW9ucyB0byB0aGUgZ2l2ZW4gZ3JhbnRlZSBmb3IgdGhlIGluZnJhc3RydWN0dXJlIGNvbmZpZ3VyYXRpb25cbiAgICogW2Rpc2FibGUtYXdzbGludDpuby1ncmFudHNdXG4gICAqXG4gICAqIEBwYXJhbSBncmFudGVlIC0gVGhlIHByaW5jaXBhbFxuICAgKiBAcGFyYW0gYWN0aW9ucyAtIFRoZSBsaXN0IG9mIGFjdGlvbnNcbiAgICovXG4gIHB1YmxpYyBncmFudChncmFudGVlOiBpYW0uSUdyYW50YWJsZSwgLi4uYWN0aW9uczogc3RyaW5nW10pOiBpYW0uR3JhbnQge1xuICAgIHJldHVybiBpYW0uR3JhbnQuYWRkVG9QcmluY2lwYWwoe1xuICAgICAgZ3JhbnRlZSxcbiAgICAgIGFjdGlvbnMsXG4gICAgICByZXNvdXJjZUFybnM6IFt0aGlzLmluZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvbkFybl0sXG4gICAgICBzY29wZTogdGhpcyxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudCByZWFkIHBlcm1pc3Npb25zIHRvIHRoZSBnaXZlbiBncmFudGVlIGZvciB0aGUgaW5mcmFzdHJ1Y3R1cmUgY29uZmlndXJhdGlvblxuICAgKiBbZGlzYWJsZS1hd3NsaW50Om5vLWdyYW50c11cbiAgICpcbiAgICogQHBhcmFtIGdyYW50ZWUgLSBUaGUgcHJpbmNpcGFsXG4gICAqL1xuICBwdWJsaWMgZ3JhbnRSZWFkKGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlKTogaWFtLkdyYW50IHtcbiAgICByZXR1cm4gdGhpcy5ncmFudChncmFudGVlLCAnaW1hZ2VidWlsZGVyOkdldEluZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvbicpO1xuICB9XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyBhbiBFQzIgSW1hZ2UgQnVpbGRlciBJbmZyYXN0cnVjdHVyZSBDb25maWd1cmF0aW9uLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2ltYWdlYnVpbGRlci9sYXRlc3QvdXNlcmd1aWRlL21hbmFnZS1pbmZyYS1jb25maWcuaHRtbFxuICovXG5AcHJvcGVydHlJbmplY3RhYmxlXG5leHBvcnQgY2xhc3MgSW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uIGV4dGVuZHMgSW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uQmFzZSB7XG4gIC8qKiBVbmlxdWVseSBpZGVudGlmaWVzIHRoaXMgY2xhc3MuICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgUFJPUEVSVFlfSU5KRUNUSU9OX0lEOiBzdHJpbmcgPSAnQGF3cy1jZGsuYXdzLWltYWdlYnVpbGRlci1hbHBoYS5JbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb24nO1xuXG4gIC8qKlxuICAgKiBJbXBvcnQgYW4gZXhpc3RpbmcgaW5mcmFzdHJ1Y3R1cmUgY29uZmlndXJhdGlvbiBnaXZlbiBpdHMgQVJOLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tSW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uQXJuKFxuICAgIHNjb3BlOiBDb25zdHJ1Y3QsXG4gICAgaWQ6IHN0cmluZyxcbiAgICBpbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb25Bcm46IHN0cmluZyxcbiAgKTogSUluZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvbiB7XG4gICAgY29uc3QgaW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uTmFtZSA9IGNkay5TdGFjay5vZihzY29wZSkuc3BsaXRBcm4oXG4gICAgICBpbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb25Bcm4sXG4gICAgICBjZGsuQXJuRm9ybWF0LlNMQVNIX1JFU09VUkNFX05BTUUsXG4gICAgKS5yZXNvdXJjZU5hbWUhO1xuXG4gICAgY2xhc3MgSW1wb3J0IGV4dGVuZHMgSW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uQmFzZSB7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgaW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uQXJuID0gaW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uQXJuO1xuICAgICAgcHVibGljIHJlYWRvbmx5IGluZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvbk5hbWUgPSBpbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb25OYW1lO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgSW1wb3J0KHNjb3BlLCBpZCk7XG4gIH1cblxuICAvKipcbiAgICogSW1wb3J0IGFuIGV4aXN0aW5nIGluZnJhc3RydWN0dXJlIGNvbmZpZ3VyYXRpb24gZ2l2ZW4gaXRzIG5hbWUuIFRoZSBwcm92aWRlZCBuYW1lIG11c3QgYmUgbm9ybWFsaXplZCBieSBjb252ZXJ0aW5nXG4gICAqIGFsbCBhbHBoYWJldGljYWwgY2hhcmFjdGVycyB0byBsb3dlcmNhc2UsIGFuZCByZXBsYWNpbmcgYWxsIHNwYWNlcyBhbmQgdW5kZXJzY29yZXMgd2l0aCBoeXBoZW5zLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tSW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uTmFtZShcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgaW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uTmFtZTogc3RyaW5nLFxuICApOiBJSW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uIHtcbiAgICByZXR1cm4gSW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uLmZyb21JbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb25Bcm4oXG4gICAgICBzY29wZSxcbiAgICAgIGlkLFxuICAgICAgY2RrLlN0YWNrLm9mKHNjb3BlKS5mb3JtYXRBcm4oe1xuICAgICAgICBzZXJ2aWNlOiAnaW1hZ2VidWlsZGVyJyxcbiAgICAgICAgcmVzb3VyY2U6ICdpbmZyYXN0cnVjdHVyZS1jb25maWd1cmF0aW9uJyxcbiAgICAgICAgcmVzb3VyY2VOYW1lOiBpbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb25OYW1lLFxuICAgICAgfSksXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gd2hldGhlciB0aGUgZ2l2ZW4gb2JqZWN0IGlzIGFuIEluZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvbi5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgaXNJbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb24oeDogYW55KTogeCBpcyBJbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb24ge1xuICAgIHJldHVybiB4ICE9PSBudWxsICYmIHR5cGVvZiB4ID09PSAnb2JqZWN0JyAmJiBJTkZSQVNUUlVDVFVSRV9DT05GSUdVUkFUSU9OX1NZTUJPTCBpbiB4O1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBFQzIgaW5zdGFuY2UgcHJvZmlsZSB0byB1c2UgZm9yIHRoZSBidWlsZFxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGluc3RhbmNlUHJvZmlsZTogaWFtLklJbnN0YW5jZVByb2ZpbGU7XG5cbiAgLyoqXG4gICAqIFRoZSByb2xlIGFzc29jaWF0ZWQgd2l0aCB0aGUgRUMyIGluc3RhbmNlIHByb2ZpbGUgdXNlZCBmb3IgdGhlIGJ1aWxkXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcm9sZT86IGlhbS5JUm9sZTtcblxuICAvKipcbiAgICogVGhlIGJ1Y2tldCB1c2VkIHRvIHVwbG9hZCBpbWFnZSBidWlsZCBsb2dzXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgbG9nQnVja2V0PzogczMuSUJ1Y2tldDtcblxuICBwcml2YXRlIHJlYWRvbmx5IGF1dG9HZW5lcmF0ZWRJbnN0YW5jZVByb2ZpbGVSb2xlPzogaWFtLklSb2xlO1xuICBwcml2YXRlIHJlc291cmNlOiBDZm5JbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb247XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBJbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb25Qcm9wcyA9IHt9KSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCB7XG4gICAgICBwaHlzaWNhbE5hbWU6XG4gICAgICAgIHByb3BzLmluZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvbk5hbWUgPz9cbiAgICAgICAgY2RrLkxhenkuc3RyaW5nKHtcbiAgICAgICAgICBwcm9kdWNlOiAoKSA9PlxuICAgICAgICAgICAgY2RrLk5hbWVzLnVuaXF1ZVJlc291cmNlTmFtZSh0aGlzLCB7XG4gICAgICAgICAgICAgIG1heExlbmd0aDogMTI4LFxuICAgICAgICAgICAgICBzZXBhcmF0b3I6ICctJyxcbiAgICAgICAgICAgICAgYWxsb3dlZFNwZWNpYWxDaGFyYWN0ZXJzOiAnLScsXG4gICAgICAgICAgICB9KS50b0xvd2VyQ2FzZSgpLCAvLyBFbmZvcmNlIGxvd2VyY2FzZSBmb3IgdGhlIGF1dG8tZ2VuZXJhdGVkIGZhbGxiYWNrXG4gICAgICAgIH0pLFxuICAgIH0pO1xuICAgIC8vIEVuaGFuY2VkIENESyBBbmFseXRpY3MgVGVsZW1ldHJ5XG4gICAgYWRkQ29uc3RydWN0TWV0YWRhdGEodGhpcywgcHJvcHMpO1xuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsIElORlJBU1RSVUNUVVJFX0NPTkZJR1VSQVRJT05fU1lNQk9MLCB7IHZhbHVlOiB0cnVlIH0pO1xuXG4gICAgdGhpcy52YWxpZGF0ZUluZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvbk5hbWUoKTtcblxuICAgIGlmIChwcm9wcy5zdWJuZXRTZWxlY3Rpb24gJiYgIXByb3BzLnZwYykge1xuICAgICAgdGhyb3cgbmV3IGNkay5WYWxpZGF0aW9uRXJyb3IobGl0YFZwY1JlcXVpcmVkRm9yU3VibmV0U2VsZWN0aW9uYCwgJ0EgdnBjIG11c3QgYmUgcHJvdmlkZWQgd2hlbiB1c2luZyBzdWJuZXRTZWxlY3Rpb24nLCB0aGlzKTtcbiAgICB9XG5cbiAgICBjb25zdCBzZWxlY3RlZFN1Ym5ldHMgPSBwcm9wcy52cGM/LnNlbGVjdFN1Ym5ldHMocHJvcHMuc3VibmV0U2VsZWN0aW9uKTtcbiAgICBpZiAocHJvcHMudnBjICYmIHNlbGVjdGVkU3VibmV0cyAmJiBzZWxlY3RlZFN1Ym5ldHMuc3VibmV0SWRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhyb3cgbmV3IGNkay5WYWxpZGF0aW9uRXJyb3IobGl0YE5vU3VibmV0c01hdGNoZWRgLCAnTm8gc3VibmV0cyBtYXRjaGVkIHRoZSBnaXZlbiBzdWJuZXRTZWxlY3Rpb24gZm9yIHRoZSBwcm92aWRlZCBWUEMuJywgdGhpcyk7XG4gICAgfVxuXG4gICAgaWYgKHByb3BzLmluc3RhbmNlUHJvZmlsZSAmJiBwcm9wcy5yb2xlKSB7XG4gICAgICB0aHJvdyBuZXcgY2RrLlZhbGlkYXRpb25FcnJvcihsaXRgQm90aEluc3RhbmNlUHJvZmlsZUFuZFJvbGVQcm92aWRlZGAsICdCb3RoIGFuIGluc3RhbmNlIHByb2ZpbGUgYW5kIGEgcm9sZSBjYW5ub3QgYmUgcHJvdmlkZWQnLCB0aGlzKTtcbiAgICB9XG5cbiAgICBpZiAoIWNkay5Ub2tlbi5pc1VucmVzb2x2ZWQocHJvcHMuZWMySW5zdGFuY2VUZW5hbmN5KSkge1xuICAgICAgaWYgKHByb3BzLmVjMkluc3RhbmNlVGVuYW5jeSA9PT0gVGVuYW5jeS5IT1NUKSB7XG4gICAgICAgIGlmIChwcm9wcy5lYzJJbnN0YW5jZUhvc3RJZCA9PT0gdW5kZWZpbmVkICYmIHByb3BzLmVjMkluc3RhbmNlSG9zdFJlc291cmNlR3JvdXBBcm4gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHRocm93IG5ldyBjZGsuVmFsaWRhdGlvbkVycm9yKFxuICAgICAgICAgICAgbGl0YEhvc3RUZW5hbmN5UmVxdWlyZXNIb3N0SWRPclJlc291cmNlR3JvdXBgLFxuICAgICAgICAgICAgJ2VjMkluc3RhbmNlSG9zdElkIG9yIGVjMkluc3RhbmNlSG9zdFJlc291cmNlR3JvdXBBcm4gbXVzdCBiZSBzcGVjaWZpZWQgd2hlbiBlYzJJbnN0YW5jZVRlbmFuY3kgaXMgc2V0IHRvIGhvc3QnLFxuICAgICAgICAgICAgdGhpcyxcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAocHJvcHMuZWMySW5zdGFuY2VIb3N0SWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHRocm93IG5ldyBjZGsuVmFsaWRhdGlvbkVycm9yKFxuICAgICAgICAgICAgbGl0YEhvc3RJZFJlcXVpcmVzSG9zdFRlbmFuY3lgLFxuICAgICAgICAgICAgJ2VjMkluc3RhbmNlSG9zdElkIGNhbm5vdCBiZSBzcGVjaWZpZWQgdW5sZXNzIGVjMkluc3RhbmNlVGVuYW5jeSBpcyBzZXQgdG8gaG9zdCcsXG4gICAgICAgICAgICB0aGlzLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocHJvcHMuZWMySW5zdGFuY2VIb3N0UmVzb3VyY2VHcm91cEFybiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IGNkay5WYWxpZGF0aW9uRXJyb3IoXG4gICAgICAgICAgICBsaXRgSG9zdFJlc291cmNlR3JvdXBBcm5SZXF1aXJlc0hvc3RUZW5hbmN5YCxcbiAgICAgICAgICAgICdlYzJJbnN0YW5jZUhvc3RSZXNvdXJjZUdyb3VwQXJuIGNhbm5vdCBiZSBzcGVjaWZpZWQgdW5sZXNzIGVjMkluc3RhbmNlVGVuYW5jeSBpcyBzZXQgdG8gaG9zdCcsXG4gICAgICAgICAgICB0aGlzLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAocHJvcHMuZWMySW5zdGFuY2VIb3N0SWQgIT09IHVuZGVmaW5lZCAmJiBwcm9wcy5lYzJJbnN0YW5jZUhvc3RSZXNvdXJjZUdyb3VwQXJuICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBjZGsuVmFsaWRhdGlvbkVycm9yKFxuICAgICAgICBsaXRgSG9zdElkQW5kUmVzb3VyY2VHcm91cEFybkNvbmZsaWN0YCxcbiAgICAgICAgJ2VjMkluc3RhbmNlSG9zdElkIGFuZCBlYzJJbnN0YW5jZUhvc3RSZXNvdXJjZUdyb3VwQXJuIGNhbm5vdCBiZSB1c2VkIHRvZ2V0aGVyJyxcbiAgICAgICAgdGhpcyxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKHByb3BzLmh0dHBQdXRSZXNwb25zZUhvcExpbWl0ICE9PSB1bmRlZmluZWQgJiYgcHJvcHMuaHR0cFB1dFJlc3BvbnNlSG9wTGltaXQgPCAxKSB7XG4gICAgICB0aHJvdyBuZXcgY2RrLlZhbGlkYXRpb25FcnJvcihsaXRgSHR0cFB1dFJlc3BvbnNlSG9wTGltaXRUb29Mb3dgLCAnaHR0cFB1dFJlc3BvbnNlSG9wTGltaXQgbXVzdCBiZSBhdCBsZWFzdCAxJywgdGhpcyk7XG4gICAgfVxuXG4gICAgaWYgKHByb3BzLmh0dHBQdXRSZXNwb25zZUhvcExpbWl0ICE9PSB1bmRlZmluZWQgJiYgcHJvcHMuaHR0cFB1dFJlc3BvbnNlSG9wTGltaXQgPiA2NCkge1xuICAgICAgdGhyb3cgbmV3IGNkay5WYWxpZGF0aW9uRXJyb3IobGl0YEh0dHBQdXRSZXNwb25zZUhvcExpbWl0VG9vSGlnaGAsICdodHRwUHV0UmVzcG9uc2VIb3BMaW1pdCBtdXN0IGJlIGF0IG1vc3QgNjQnLCB0aGlzKTtcbiAgICB9XG5cbiAgICBpZiAoIXByb3BzLmluc3RhbmNlUHJvZmlsZSAmJiAhcHJvcHMucm9sZSkge1xuICAgICAgdGhpcy5hdXRvR2VuZXJhdGVkSW5zdGFuY2VQcm9maWxlUm9sZSA9IG5ldyBpYW0uUm9sZSh0aGlzLCAnSW5zdGFuY2VQcm9maWxlUm9sZScsIHtcbiAgICAgICAgYXNzdW1lZEJ5OiBuZXcgaWFtLlNlcnZpY2VQcmluY2lwYWwoJ2VjMi5hbWF6b25hd3MuY29tJyksXG4gICAgICAgIG1hbmFnZWRQb2xpY2llczogW1xuICAgICAgICAgIGlhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZSgnQW1hem9uU1NNTWFuYWdlZEluc3RhbmNlQ29yZScpLFxuICAgICAgICAgIGlhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZSgnRUMySW5zdGFuY2VQcm9maWxlRm9ySW1hZ2VCdWlsZGVyJyksXG4gICAgICAgIF0sXG4gICAgICB9KTtcbiAgICAgIHRoaXMucm9sZSA9IHRoaXMuYXV0b0dlbmVyYXRlZEluc3RhbmNlUHJvZmlsZVJvbGU7XG4gICAgfVxuXG4gICAgdGhpcy5pbnN0YW5jZVByb2ZpbGUgPVxuICAgICAgcHJvcHMuaW5zdGFuY2VQcm9maWxlIHx8XG4gICAgICBuZXcgaWFtLkluc3RhbmNlUHJvZmlsZSh0aGlzLCAnSW5zdGFuY2VQcm9maWxlJywgeyByb2xlOiBwcm9wcy5yb2xlID8/IHRoaXMuYXV0b0dlbmVyYXRlZEluc3RhbmNlUHJvZmlsZVJvbGUgfSk7XG5cbiAgICB0aGlzLnJvbGUgPSB0aGlzLmluc3RhbmNlUHJvZmlsZS5yb2xlO1xuICAgIHRoaXMubG9nQnVja2V0ID0gcHJvcHMubG9nZ2luZz8uczNCdWNrZXQ7XG5cbiAgICBpZiAodGhpcy5sb2dCdWNrZXQgJiYgdGhpcy5yb2xlKSB7XG4gICAgICB0aGlzLmxvZ0J1Y2tldC5ncmFudFB1dCh0aGlzLnJvbGUsIHByb3BzLmxvZ2dpbmc/LnMzS2V5UHJlZml4ID8gYCR7cHJvcHMubG9nZ2luZy5zM0tleVByZWZpeH0vKmAgOiAnKicpO1xuICAgIH1cblxuICAgIGNvbnN0IGhhc1BsYWNlbWVudE9wdGlvbnMgPVxuICAgICAgcHJvcHMuZWMySW5zdGFuY2VBdmFpbGFiaWxpdHlab25lICE9PSB1bmRlZmluZWQgfHxcbiAgICAgIHByb3BzLmVjMkluc3RhbmNlSG9zdElkICE9PSB1bmRlZmluZWQgfHxcbiAgICAgIHByb3BzLmVjMkluc3RhbmNlSG9zdFJlc291cmNlR3JvdXBBcm4gIT09IHVuZGVmaW5lZCB8fFxuICAgICAgcHJvcHMuZWMySW5zdGFuY2VUZW5hbmN5ICE9PSB1bmRlZmluZWQ7XG4gICAgY29uc3QgcGxhY2VtZW50OiBDZm5JbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb24uUGxhY2VtZW50UHJvcGVydHkgfCB1bmRlZmluZWQgPSBoYXNQbGFjZW1lbnRPcHRpb25zXG4gICAgICA/IHtcbiAgICAgICAgLi4uKHByb3BzLmVjMkluc3RhbmNlQXZhaWxhYmlsaXR5Wm9uZSAhPT0gdW5kZWZpbmVkICYmIHtcbiAgICAgICAgICBhdmFpbGFiaWxpdHlab25lOiBwcm9wcy5lYzJJbnN0YW5jZUF2YWlsYWJpbGl0eVpvbmUsXG4gICAgICAgIH0pLFxuICAgICAgICAuLi4ocHJvcHMuZWMySW5zdGFuY2VIb3N0SWQgIT09IHVuZGVmaW5lZCAmJiB7IGhvc3RJZDogcHJvcHMuZWMySW5zdGFuY2VIb3N0SWQgfSksXG4gICAgICAgIC4uLihwcm9wcy5lYzJJbnN0YW5jZUhvc3RSZXNvdXJjZUdyb3VwQXJuICE9PSB1bmRlZmluZWQgJiYge1xuICAgICAgICAgIGhvc3RSZXNvdXJjZUdyb3VwQXJuOiBwcm9wcy5lYzJJbnN0YW5jZUhvc3RSZXNvdXJjZUdyb3VwQXJuLFxuICAgICAgICB9KSxcbiAgICAgICAgLi4uKHByb3BzLmVjMkluc3RhbmNlVGVuYW5jeSAhPT0gdW5kZWZpbmVkICYmIHsgdGVuYW5jeTogcHJvcHMuZWMySW5zdGFuY2VUZW5hbmN5IH0pLFxuICAgICAgfVxuICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICBjb25zdCBpbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb24gPSBuZXcgQ2ZuSW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uKHRoaXMsICdSZXNvdXJjZScsIHtcbiAgICAgIG5hbWU6IHRoaXMucGh5c2ljYWxOYW1lLFxuICAgICAgaW5zdGFuY2VQcm9maWxlTmFtZTogdGhpcy5pbnN0YW5jZVByb2ZpbGUuaW5zdGFuY2VQcm9maWxlTmFtZSxcbiAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcy5kZXNjcmlwdGlvbixcbiAgICAgIGluc3RhbmNlTWV0YWRhdGFPcHRpb25zOiB7XG4gICAgICAgIGh0dHBUb2tlbnM6IHByb3BzLmh0dHBUb2tlbnMgPz8gSHR0cFRva2Vucy5SRVFVSVJFRCxcbiAgICAgICAgaHR0cFB1dFJlc3BvbnNlSG9wTGltaXQ6IHByb3BzLmh0dHBQdXRSZXNwb25zZUhvcExpbWl0ID8/IDIsXG4gICAgICB9LFxuICAgICAgaW5zdGFuY2VUeXBlczogcHJvcHMuaW5zdGFuY2VUeXBlcz8ubGVuZ3RoXG4gICAgICAgID8gcHJvcHMuaW5zdGFuY2VUeXBlcz8ubWFwKChpbnN0YW5jZVR5cGUpID0+IGluc3RhbmNlVHlwZS50b1N0cmluZygpKVxuICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgIGtleVBhaXI6IHByb3BzLmtleVBhaXI/LmtleVBhaXJOYW1lLFxuICAgICAgLi4uKHByb3BzLmxvZ2dpbmcgJiYge1xuICAgICAgICBsb2dnaW5nOiB7XG4gICAgICAgICAgczNMb2dzOiB7XG4gICAgICAgICAgICBzM0J1Y2tldE5hbWU6IHByb3BzLmxvZ2dpbmc/LnMzQnVja2V0LmJ1Y2tldE5hbWUsXG4gICAgICAgICAgICBzM0tleVByZWZpeDogcHJvcHMubG9nZ2luZz8uczNLZXlQcmVmaXgsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0pLFxuICAgICAgLi4uKHBsYWNlbWVudCAmJiB7IHBsYWNlbWVudCB9KSxcbiAgICAgIHJlc291cmNlVGFnczogcHJvcHMucmVzb3VyY2VUYWdzLFxuICAgICAgc2VjdXJpdHlHcm91cElkczogcHJvcHMuc2VjdXJpdHlHcm91cHM/Lmxlbmd0aFxuICAgICAgICA/IHByb3BzLnNlY3VyaXR5R3JvdXBzPy5tYXAoKHNlY3VyaXR5R3JvdXApID0+IHNlY3VyaXR5R3JvdXAuc2VjdXJpdHlHcm91cElkKVxuICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgIHN1Ym5ldElkOiBwcm9wcy52cGM/LnNlbGVjdFN1Ym5ldHMocHJvcHMuc3VibmV0U2VsZWN0aW9uKS5zdWJuZXRJZHNbMF0sXG4gICAgICBzbnNUb3BpY0FybjogcHJvcHMubm90aWZpY2F0aW9uVG9waWM/LnRvcGljQXJuLFxuICAgICAgdGFnczogcHJvcHMudGFncyxcbiAgICAgIHRlcm1pbmF0ZUluc3RhbmNlT25GYWlsdXJlOiBwcm9wcy50ZXJtaW5hdGVJbnN0YW5jZU9uRmFpbHVyZSxcbiAgICB9KTtcblxuICAgIHRoaXMucmVzb3VyY2UgPSBpbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb247XG4gIH1cblxuICBAbWVtb2l6ZWRHZXR0ZXJcbiAgcHVibGljIGdldCBpbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb25OYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0UmVzb3VyY2VOYW1lQXR0cmlidXRlKHRoaXMucmVzb3VyY2UuYXR0ck5hbWUpO1xuICB9XG5cbiAgQG1lbW9pemVkR2V0dGVyXG4gIHB1YmxpYyBnZXQgaW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uQXJuKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0UmVzb3VyY2VBcm5BdHRyaWJ1dGUodGhpcy5yZXNvdXJjZS5hdHRyQXJuLCB7XG4gICAgICBzZXJ2aWNlOiAnaW1hZ2VidWlsZGVyJyxcbiAgICAgIHJlc291cmNlOiAnaW5mcmFzdHJ1Y3R1cmUtY29uZmlndXJhdGlvbicsXG4gICAgICByZXNvdXJjZU5hbWU6IHRoaXMucGh5c2ljYWxOYW1lLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSB2YWxpZGF0ZUluZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvbk5hbWUoKSB7XG4gICAgaWYgKGNkay5Ub2tlbi5pc1VucmVzb2x2ZWQodGhpcy5waHlzaWNhbE5hbWUpKSB7XG4gICAgICByZXR1cm47IC8vIENhbm5vdCB2YWxpZGF0ZSB1bnJlc29sdmVkIHRva2VucywgZ2l2ZW4gdGhlaXIgYWN0dWFsIHZhbHVlIGlzIHJlbmRlcmVkIGF0IGRlcGxveW1lbnQgdGltZVxuICAgIH1cblxuICAgIGlmICh0aGlzLnBoeXNpY2FsTmFtZS5sZW5ndGggPiAxMjgpIHtcbiAgICAgIHRocm93IG5ldyBjZGsuVmFsaWRhdGlvbkVycm9yKGxpdGBJbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb25OYW1lVG9vTG9uZ2AsICdUaGUgaW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uTmFtZSBjYW5ub3QgYmUgbG9uZ2VyIHRoYW4gMTI4IGNoYXJhY3RlcnMnLCB0aGlzKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5waHlzaWNhbE5hbWUuaW5jbHVkZXMoJyAnKSkge1xuICAgICAgdGhyb3cgbmV3IGNkay5WYWxpZGF0aW9uRXJyb3IobGl0YEluZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvbk5hbWVDb250YWluc1NwYWNlc2AsICdUaGUgaW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uTmFtZSBjYW5ub3QgY29udGFpbiBzcGFjZXMnLCB0aGlzKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5waHlzaWNhbE5hbWUuaW5jbHVkZXMoJ18nKSkge1xuICAgICAgdGhyb3cgbmV3IGNkay5WYWxpZGF0aW9uRXJyb3IobGl0YEluZnJhc3RydWN0dXJlQ29uZmlndXJhdGlvbk5hbWVDb250YWluc1VuZGVyc2NvcmVzYCwgJ1RoZSBpbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb25OYW1lIGNhbm5vdCBjb250YWluIHVuZGVyc2NvcmVzJywgdGhpcyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucGh5c2ljYWxOYW1lICE9PSB0aGlzLnBoeXNpY2FsTmFtZS50b0xvd2VyQ2FzZSgpKSB7XG4gICAgICB0aHJvdyBuZXcgY2RrLlZhbGlkYXRpb25FcnJvcihsaXRgSW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uTmFtZU5vdExvd2VyY2FzZWAsICdUaGUgaW5mcmFzdHJ1Y3R1cmVDb25maWd1cmF0aW9uTmFtZSBtdXN0IGJlIGxvd2VyY2FzZScsIHRoaXMpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyBfYmluZChvcHRpb25zOiBJbmZyYXN0cnVjdHVyZUNvbmZpZ3VyYXRpb25CaW5kT3B0aW9ucykge1xuICAgIGlmIChvcHRpb25zLmlzQ29udGFpbmVyQnVpbGQpIHtcbiAgICAgIHRoaXMuYXV0b0dlbmVyYXRlZEluc3RhbmNlUHJvZmlsZVJvbGU/LmFkZE1hbmFnZWRQb2xpY3koXG4gICAgICAgIGlhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZSgnRUMySW5zdGFuY2VQcm9maWxlRm9ySW1hZ2VCdWlsZGVyRUNSQ29udGFpbmVyQnVpbGRzJyksXG4gICAgICApO1xuICAgIH1cbiAgfVxufVxuIl19