@kaspernj/api-maker 1.0.2169 → 1.0.2171
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/config.d.ts +6 -0
- package/build/config.d.ts.map +1 -1
- package/build/config.js +10 -1
- package/build/table/large-per-page-warning-modal.d.ts +14 -0
- package/build/table/large-per-page-warning-modal.d.ts.map +1 -0
- package/build/table/large-per-page-warning-modal.js +44 -0
- package/build/table/table.d.ts +1 -1
- package/build/table/table.d.ts.map +1 -1
- package/build/table/table.js +32 -7
- package/build/utils/checkbox.d.ts +6 -1
- package/build/utils/checkbox.d.ts.map +1 -1
- package/build/utils/checkbox.js +64 -21
- package/package.json +3 -2
package/build/config.d.ts
CHANGED
|
@@ -32,6 +32,12 @@ declare class ApiMakerConfig {
|
|
|
32
32
|
getHost(): string;
|
|
33
33
|
/** @returns {string | undefined} */
|
|
34
34
|
getCableUrl(): string | undefined;
|
|
35
|
+
/** @returns {number} */
|
|
36
|
+
getDangerousRowCountThreshold(): number;
|
|
37
|
+
/**
|
|
38
|
+
* @param {number} _newValue
|
|
39
|
+
*/
|
|
40
|
+
setDangerousRowCountThreshold(_newValue: number): void;
|
|
35
41
|
/**
|
|
36
42
|
* @param {string | undefined} _newValue
|
|
37
43
|
*/
|
package/build/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"/src/","sources":["config.js"],"names":[],"mappings":";mCAIc,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC;6BAChC,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC;uBAC7B,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;+BACtB;IAAC,MAAM,EAAE,KAAK,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAC,CAAC,CAAA;CAAC;2BAE9C;IAAC,IAAI,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE;QAAC,QAAQ,EAAE,WAAW,CAAC;QAAC,QAAQ,EAAE,WAAW,CAAA;KAAC,KAAK,IAAI,CAAA;CAAC;0BAG5F,oBAAoB,EAAE,GAAG,cAAc,EAAE,GAAG,QAAQ,GAAG,gBAAgB,GAAG,YAAY,GAClG,OAAW,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"/src/","sources":["config.js"],"names":[],"mappings":";mCAIc,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC;6BAChC,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC;uBAC7B,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;+BACtB;IAAC,MAAM,EAAE,KAAK,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAC,CAAC,CAAA;CAAC;2BAE9C;IAAC,IAAI,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE;QAAC,QAAQ,EAAE,WAAW,CAAC;QAAC,QAAQ,EAAE,WAAW,CAAA;KAAC,KAAK,IAAI,CAAA;CAAC;0BAG5F,oBAAoB,EAAE,GAAG,cAAc,EAAE,GAAG,QAAQ,GAAG,gBAAgB,GAAG,YAAY,GAClG,OAAW,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS;AAyJnD,6CAA2C;6BArKhB,eAAe;AAkD1C,uFAAuF;AACvF;IAKI,YAA6C;IAC7C,2CAAgC;IAGlC;;;OAGG;IACH,aAFa,YAAY,CAES;IAElC,kDAAkD;IAClD,cADc,OAAO,SAAS,EAAE,cAAc,CAG7C;IAED,wBAAwB;IACxB,WADc,MAAM,CAGnB;IAED,oCAAoC;IACpC,eADc,MAAM,GAAG,SAAS,CAG/B;IAED,wBAAwB;IACxB,iCADc,MAAM,CAGnB;IAED;;OAEG;IACH,yCAFW,MAAM,QAEyF;IAE1G;;OAEG;IACH,uBAFW,MAAM,GAAG,SAAS,QAEyC;IAEtE,qCAAqC;IACrC,wBADc,OAAO,GAAG,SAAS,CAGhC;IAED;;OAEG;IACH,gCAFW,OAAO,GAAG,SAAS,QAE0D;IAExF,uCAAuC;IACvC,2BADc,KAAK,CAAC,cAAc,CAAC,CAGlC;IAED,wBAAwB;IACxB,YADc,MAAM,CAGnB;IAED,kCAAkC;IAClC,uBADc,gBAAgB,CAG7B;IAED,0BAA0B;IAC1B,aADc,QAAQ,CAGrB;IAED,yBAAyB;IACzB,kBADc,OAAO,CAGpB;IAED;;OAEG;IACH,0BAFW,OAAO,QAE0D;CAC7E"}
|
package/build/config.js
CHANGED
|
@@ -26,6 +26,7 @@ const accessors = {
|
|
|
26
26
|
},
|
|
27
27
|
cableUrl: { require: false },
|
|
28
28
|
currenciesCollection: { required: true },
|
|
29
|
+
dangerousRowCountThreshold: { default: 1000, required: false },
|
|
29
30
|
history: { required: true },
|
|
30
31
|
host: { required: false },
|
|
31
32
|
i18n: { required: false },
|
|
@@ -70,6 +71,14 @@ class ApiMakerConfig {
|
|
|
70
71
|
getCableUrl() {
|
|
71
72
|
return apiMakerConfigNotImplemented("getCableUrl");
|
|
72
73
|
}
|
|
74
|
+
/** @returns {number} */
|
|
75
|
+
getDangerousRowCountThreshold() {
|
|
76
|
+
return apiMakerConfigNotImplemented("getDangerousRowCountThreshold");
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* @param {number} _newValue
|
|
80
|
+
*/
|
|
81
|
+
setDangerousRowCountThreshold(_newValue) { apiMakerConfigNotImplemented("setDangerousRowCountThreshold"); }
|
|
73
82
|
/**
|
|
74
83
|
* @param {string | undefined} _newValue
|
|
75
84
|
*/
|
|
@@ -132,4 +141,4 @@ for (const accessorName in accessors) {
|
|
|
132
141
|
}
|
|
133
142
|
const apiMakerConfig = new ApiMakerConfig();
|
|
134
143
|
export default apiMakerConfig;
|
|
135
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6Ii9zcmMvIiwic291cmNlcyI6WyJjb25maWcuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWTtBQUNaLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxlQUFlLENBQUE7QUFDMUMsT0FBTyxLQUFLLFVBQVUsTUFBTSxZQUFZLENBQUEsQ0FBQyxtQ0FBbUM7QUFFNUUsdUVBQXVFO0FBQ3ZFLDhEQUE4RDtBQUM5RCxpREFBaUQ7QUFDakQsZ0ZBQWdGO0FBQ2hGOztHQUVHO0FBQ0g7OztHQUdHO0FBRUgsTUFBTSxTQUFTLEdBQUc7SUFDaEIsV0FBVyxFQUFFO1FBQ1gsT0FBTyxFQUFFO1lBQ1AsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDO1lBQ2IsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDO1lBQ1osQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDO1lBQ1gsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDO1lBQ1gsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDO1lBQ1gsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1NBQ1Y7UUFDRCxRQUFRLEVBQUUsSUFBSTtLQUNmO0lBQ0QsUUFBUSxFQUFFLEVBQUMsT0FBTyxFQUFFLEtBQUssRUFBQztJQUMxQixvQkFBb0IsRUFBRSxFQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUM7SUFDdEMsT0FBTyxFQUFFLEVBQUMsUUFBUSxFQUFFLElBQUksRUFBQztJQUN6QixJQUFJLEVBQUUsRUFBQyxRQUFRLEVBQUUsS0FBSyxFQUFDO0lBQ3ZCLElBQUksRUFBRSxFQUFDLFFBQVEsRUFBRSxLQUFLLEVBQUM7SUFDdkIsTUFBTSxFQUFFLEVBQUMsUUFBUSxFQUFFLElBQUksRUFBQztJQUN4QixLQUFLLEVBQUUsRUFBQyxRQUFRLEVBQUUsS0FBSyxFQUFDO0lBQ3hCLFVBQVUsRUFBRSxFQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUM7SUFDNUIsTUFBTSxFQUFFLEVBQUMsUUFBUSxFQUFFLEtBQUss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QUFFLENBQUM7WUFDMUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxpQkFBaUIsUUFBUSxFQUFFLEVBQUMsUUFBUSxFQUFFLFFBQVEsRUFBQyxDQUFDLENBQUE7UUFDeEUsQ0FBQztJQUNILENBQUMsQ0FBQTtJQUVELGNBQWMsQ0FBQyxTQUFTLENBQUMsTUFBTSxpQkFBaUIsRUFBRSxDQUFDLEdBQUcsVUFBVSxHQUFHLElBQUk7UUFDckUsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQzVDLElBQUksWUFBWSxDQUFDLE9BQU8sS0FBSyxTQUFTO2dCQUFFLE9BQU8sWUFBWSxDQUFDLE9BQU8sQ0FBQTtZQUNuRSxJQUFJLFlBQVksQ0FBQyxRQUFRO2dCQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsR0FBRyxZQUFZLGtCQUFrQixDQUFDLENBQUE7UUFDL0UsQ0FBQztRQUVELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUE7UUFFdkMsSUFBSSxPQUFPLEtBQUssSUFBSSxVQUFVO1lBQUUsT0FBTyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQTtRQUVyRCxPQUFPLEtBQUssQ0FBQTtJQUNkLENBQUMsQ0FBQTtBQUNILENBQUM7QUFFRCxNQUFNLGNBQWMsR0FBRyxJQUFJLGNBQWMsRUFBRSxDQUFBO0FBRTNDLGVBQWUsY0FBYyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWNoZWNrXG5pbXBvcnQge0V2ZW50RW1pdHRlcn0gZnJvbSBcImV2ZW50ZW1pdHRlcjNcIlxuaW1wb3J0ICogYXMgaW5mbGVjdGlvbiBmcm9tIFwiaW5mbGVjdGlvblwiIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgc29ydC1pbXBvcnRzXG5cbi8qKiBAdHlwZWRlZiB7W25hbWU6IHN0cmluZywgbWluV2lkdGg6IG51bWJlcl19IEJyZWFrcG9pbnREZWZpbml0aW9uICovXG4vKiogQHR5cGVkZWYge1tsYWJlbDogc3RyaW5nLCBjb2RlOiBzdHJpbmddfSBDdXJyZW5jeU9wdGlvbiAqL1xuLyoqIEB0eXBlZGVmIHtSZWNvcmQ8c3RyaW5nLCBvYmplY3Q+fSBSb3V0ZU1hcCAqL1xuLyoqIEB0eXBlZGVmIHt7cm91dGVzOiBBcnJheTx7bmFtZTogc3RyaW5nLCBwYXRoOiBzdHJpbmd9Pn19IFJvdXRlRGVmaW5pdGlvbnMgKi9cbi8qKlxuICogQHR5cGVkZWYge3tlbWl0OiAoZXZlbnROYW1lOiBzdHJpbmcsIHBheWxvYWQ6IHtvbGRWYWx1ZTogQ29uZmlnVmFsdWUsIG5ld1ZhbHVlOiBDb25maWdWYWx1ZX0pID0+IHZvaWR9fSBDb25maWdFdmVudHNcbiAqL1xuLyoqXG4gKiBAdHlwZWRlZiB7QnJlYWtwb2ludERlZmluaXRpb25bXSB8IEN1cnJlbmN5T3B0aW9uW10gfCBSb3V0ZU1hcCB8IFJvdXRlRGVmaW5pdGlvbnMgfCBFdmVudEVtaXR0ZXIgfFxuICogICBib29sZWFuIHwgbnVtYmVyIHwgb2JqZWN0IHwgc3RyaW5nIHwgdW5kZWZpbmVkfSBDb25maWdWYWx1ZVxuICovXG5cbmNvbnN0IGFjY2Vzc29ycyA9IHtcbiAgYnJlYWtwb2ludHM6IHtcbiAgICBkZWZhdWx0OiBbXG4gICAgICBbXCJ4eGxcIiwgMTQwMF0sXG4gICAgICBbXCJ4bFwiLCAxMjAwXSxcbiAgICAgIFtcImxnXCIsIDk5Ml0sXG4gICAgICBbXCJtZFwiLCA3NjhdLFxuICAgICAgW1wic21cIiwgNTc2XSxcbiAgICAgIFtcInhzXCIsIDBdXG4gICAgXSxcbiAgICByZXF1aXJlZDogdHJ1ZVxuICB9LFxuICBjYWJsZVVybDoge3JlcXVpcmU6IGZhbHNlfSxcbiAgY3VycmVuY2llc0NvbGxlY3Rpb246IHtyZXF1aXJlZDogdHJ1ZX0sXG4gIGhpc3Rvcnk6IHtyZXF1aXJlZDogdHJ1ZX0sXG4gIGhvc3Q6IHtyZXF1aXJlZDogZmFsc2V9LFxuICBpMThuOiB7cmVxdWlyZWQ6IGZhbHNlfSxcbiAgbGlua1RvOiB7cmVxdWlyZWQ6IHRydWV9LFxuICBtb2RhbDoge3JlcXVpcmVkOiBmYWxzZX0sXG4gIG5hdmlnYXRpb246IHtyZXF1aXJlZDogdHJ1ZX0sXG4gIHJvdXRlczoge3JlcXVpcmVkOiBmYWxzZX0sXG4gIHJvdXRlRGVmaW5pdGlvbnM6IHtyZXF1aXJlZDogZmFsc2V9LFxuICB1c2VIdG1sRm9ybToge2RlZmF1bHQ6IGZhbHNlLCByZXF1aXJlZDogZmFsc2V9LFxuICB3ZWJzb2NrZXRSZXF1ZXN0czoge3JlcXVpcmVkOiBmYWxzZX1cbn1cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gbWV0aG9kTmFtZVxuICogQHJldHVybnMge25ldmVyfVxuICovXG5jb25zdCBhcGlNYWtlckNvbmZpZ05vdEltcGxlbWVudGVkID0gKG1ldGhvZE5hbWUpID0+IHtcbiAgdGhyb3cgbmV3IEVycm9yKGAnJHttZXRob2ROYW1lfScgbm90IGltcGxlbWVudGVkYClcbn1cblxuLyoqIFN0b3JlcyBnbG9iYWxseSBjb25maWd1cmVkIEFwaSBNYWtlciBpbnRlZ3JhdGlvbiBob29rcyBhbmQgcnVudGltZSBkZXBlbmRlbmNpZXMuICovXG5jbGFzcyBBcGlNYWtlckNvbmZpZyB7XG4gIC8qKiBJbml0aWFsaXplcyB0aGUgc2hhcmVkIGNvbmZpZyBzdGF0ZSBhbmQgY2hhbmdlIGVtaXR0ZXIuICovXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGlmICghZ2xvYmFsVGhpcy5hcGlNYWtlckNvbmZpZ0dsb2JhbCkgZ2xvYmFsVGhpcy5hcGlNYWtlckNvbmZpZ0dsb2JhbCA9IHt9XG5cbiAgICB0aGlzLmdsb2JhbCA9IGdsb2JhbFRoaXMuYXBpTWFrZXJDb25maWdHbG9iYWxcbiAgICB0aGlzLmV2ZW50cyA9IG5ldyBFdmVudEVtaXR0ZXIoKVxuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGV2ZW50IGVtaXR0ZXIgdXNlZCBmb3IgY29uZmlnIGNoYW5nZSBub3RpZmljYXRpb25zLlxuICAgKiBAcmV0dXJucyB7Q29uZmlnRXZlbnRzfVxuICAgKi9cbiAgZ2V0RXZlbnRzKCkgeyByZXR1cm4gdGhpcy5ldmVudHMgfVxuXG4gIC8qKiBAcmV0dXJucyB7aW1wb3J0KFwiaGlzdG9yeVwiKS5Ccm93c2VySGlzdG9yeX0gKi9cbiAgZ2V0SGlzdG9yeSgpIHtcbiAgICByZXR1cm4gYXBpTWFrZXJDb25maWdOb3RJbXBsZW1lbnRlZChcImdldEhpc3RvcnlcIilcbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7c3RyaW5nfSAqL1xuICBnZXRIb3N0KCkge1xuICAgIHJldHVybiBhcGlNYWtlckNvbmZpZ05vdEltcGxlbWVudGVkKFwiZ2V0SG9zdFwiKVxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHtzdHJpbmcgfCB1bmRlZmluZWR9ICovXG4gIGdldENhYmxlVXJsKCkge1xuICAgIHJldHVybiBhcGlNYWtlckNvbmZpZ05vdEltcGxlbWVudGVkKFwiZ2V0Q2FibGVVcmxcIilcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZyB8IHVuZGVmaW5lZH0gX25ld1ZhbHVlXG4gICAqL1xuICBzZXRDYWJsZVVybChfbmV3VmFsdWUpIHsgYXBpTWFrZXJDb25maWdOb3RJbXBsZW1lbnRlZChcInNldENhYmxlVXJsXCIpIH1cblxuICAvKiogQHJldHVybnMge2Jvb2xlYW4gfCB1bmRlZmluZWR9ICovXG4gIGdldFdlYnNvY2tldFJlcXVlc3RzKCkge1xuICAgIHJldHVybiBhcGlNYWtlckNvbmZpZ05vdEltcGxlbWVudGVkKFwiZ2V0V2Vic29ja2V0UmVxdWVzdHNcIilcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge2Jvb2xlYW4gfCB1bmRlZmluZWR9IF9uZXdWYWx1ZVxuICAgKi9cbiAgc2V0V2Vic29ja2V0UmVxdWVzdHMoX25ld1ZhbHVlKSB7IGFwaU1ha2VyQ29uZmlnTm90SW1wbGVtZW50ZWQoXCJzZXRXZWJzb2NrZXRSZXF1ZXN0c1wiKSB9XG5cbiAgLyoqIEByZXR1cm5zIHtBcnJheTxDdXJyZW5jeU9wdGlvbj59ICovXG4gIGdldEN1cnJlbmNpZXNDb2xsZWN0aW9uKCkge1xuICAgIHJldHVybiBhcGlNYWtlckNvbmZpZ05vdEltcGxlbWVudGVkKFwiZ2V0Q3VycmVuY2llc0NvbGxlY3Rpb25cIilcbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7b2JqZWN0fSAqL1xuICBnZXRNb2RhbCgpIHtcbiAgICByZXR1cm4gYXBpTWFrZXJDb25maWdOb3RJbXBsZW1lbnRlZChcImdldE1vZGFsXCIpXG4gIH1cblxuICAvKiogQHJldHVybnMge1JvdXRlRGVmaW5pdGlvbnN9ICovXG4gIGdldFJvdXRlRGVmaW5pdGlvbnMoKSB7XG4gICAgcmV0dXJuIGFwaU1ha2VyQ29uZmlnTm90SW1wbGVtZW50ZWQoXCJnZXRSb3V0ZURlZmluaXRpb25zXCIpXG4gIH1cblxuICAvKiogQHJldHVybnMge1JvdXRlTWFwfSAqL1xuICBnZXRSb3V0ZXMoKSB7XG4gICAgcmV0dXJuIGFwaU1ha2VyQ29uZmlnTm90SW1wbGVtZW50ZWQoXCJnZXRSb3V0ZXNcIilcbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7Ym9vbGVhbn0gKi9cbiAgZ2V0VXNlSHRtbEZvcm0oKSB7XG4gICAgcmV0dXJuIGFwaU1ha2VyQ29uZmlnTm90SW1wbGVtZW50ZWQoXCJnZXRVc2VIdG1sRm9ybVwiKVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gX25ld1ZhbHVlXG4gICAqL1xuICBzZXRVc2VIdG1sRm9ybShfbmV3VmFsdWUpIHsgYXBpTWFrZXJDb25maWdOb3RJbXBsZW1lbnRlZChcInNldFVzZUh0bWxGb3JtXCIpIH1cbn1cblxuZm9yIChjb25zdCBhY2Nlc3Nvck5hbWUgaW4gYWNjZXNzb3JzKSB7XG4gIGNvbnN0IGFjY2Vzc29yRGF0YSA9IGFjY2Vzc29yc1thY2Nlc3Nvck5hbWVdXG4gIGNvbnN0IGNhbWVsaXplZEFjY2Vzc29yID0gaW5mbGVjdGlvbi5jYW1lbGl6ZShhY2Nlc3Nvck5hbWUpXG5cbiAgQXBpTWFrZXJDb25maWcucHJvdG90eXBlW2BzZXQke2NhbWVsaXplZEFjY2Vzc29yfWBdID0gZnVuY3Rpb24gKG5ld1ZhbHVlKSB7XG4gICAgY29uc3Qgb2xkVmFsdWUgPSB0aGlzLmdsb2JhbFthY2Nlc3Nvck5hbWVdXG5cbiAgICB0aGlzLmdsb2JhbFthY2Nlc3Nvck5hbWVdID0gbmV3VmFsdWVcblxuICAgIGlmIChvbGRWYWx1ZSAhPT0gbmV3VmFsdWUpIHtcbiAgICAgIHRoaXMuZXZlbnRzLmVtaXQoYG9uJHtjYW1lbGl6ZWRBY2Nlc3Nvcn1DaGFuZ2VgLCB7b2xkVmFsdWUsIG5ld1ZhbHVlfSlcbiAgICB9XG4gIH1cblxuICBBcGlNYWtlckNvbmZpZy5wcm90b3R5cGVbYGdldCR7Y2FtZWxpemVkQWNjZXNzb3J9YF0gPSBmdW5jdGlvbiAoLi4uYXJncykge1xuICAgIGlmICh0aGlzLmdsb2JhbFthY2Nlc3Nvck5hbWVdID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGlmIChhY2Nlc3NvckRhdGEuZGVmYXVsdCAhPT0gdW5kZWZpbmVkKSByZXR1cm4gYWNjZXNzb3JEYXRhLmRlZmF1bHRcbiAgICAgIGlmIChhY2Nlc3NvckRhdGEucmVxdWlyZWQpIHRocm93IG5ldyBFcnJvcihgJHthY2Nlc3Nvck5hbWV9IGhhc24ndCBiZWVuIHNldGApXG4gICAgfVxuXG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLmdsb2JhbFthY2Nlc3Nvck5hbWVdXG5cbiAgICBpZiAodHlwZW9mIHZhbHVlID09IFwiZnVuY3Rpb25cIikgcmV0dXJuIHZhbHVlKC4uLmFyZ3MpXG5cbiAgICByZXR1cm4gdmFsdWVcbiAgfVxufVxuXG5jb25zdCBhcGlNYWtlckNvbmZpZyA9IG5ldyBBcGlNYWtlckNvbmZpZygpXG5cbmV4cG9ydCBkZWZhdWx0IGFwaU1ha2VyQ29uZmlnXG4iXX0=
|
|
144
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6Ii9zcmMvIiwic291cmNlcyI6WyJjb25maWcuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWTtBQUNaLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxlQUFlLENBQUE7QUFDMUMsT0FBTyxLQUFLLFVBQVUsTUFBTSxZQUFZLENBQUEsQ0FBQyxtQ0FBbUM7QUFFNUUsdUVBQXVFO0FBQ3ZFLDhEQUE4RDtBQUM5RCxpREFBaUQ7QUFDakQsZ0ZBQWdGO0FBQ2hGOztHQUVHO0FBQ0g7OztHQUdHO0FBRUgsTUFBTSxTQUFTLEdBQUc7SUFDaEIsV0FBVyxFQUFFO1FBQ1gsT0FBTyxFQUFFO1lBQ1AsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDO1lBQ2IsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDO1lBQ1osQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDO1lBQ1gsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDO1lBQ1gsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDO1lBQ1gsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1NBQ1Y7UUFDRCxRQUFRLEVBQUUsSUFBSTtLQUNmO0lBQ0QsUUFBUSxFQUFFLEVBQUMsT0FBTyxFQUFFLEtBQUssRUFBQztJQUMxQixvQkFBb0IsRUFBRSxFQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUM7SUFDdEMsMEJBQTBCLEVBQUUsRUFBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUM7SUFDNUQsT0FBTyxFQUFFLEVBQUMsUUFBUSxFQUFFLElBQUksRUFBQztJQUN6QixJQUFJLEVBQUUsRUFBQyxRQUFRLEVBQUUsS0FBSyxFQUFDO0lBQ3ZCLElBQUksRUFBRSxFQUFDLFFBQVEsRUFBRSxLQUFLLEVBQUM7SUFDdkIsTUFBTSxFQUFFLEVBQUMsUUFBUSxFQUFFLElBQUksRUFBQztJQUN4QixLQUFLLEVBQUUsRUFBQyxRQUFRLEVBQUUsS0FBSyxFQUFDO0lBQ3hCLFVBQVUsRUFB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b3J0IHtFdmVudEVtaXR0ZXJ9IGZyb20gXCJldmVudGVtaXR0ZXIzXCJcbmltcG9ydCAqIGFzIGluZmxlY3Rpb24gZnJvbSBcImluZmxlY3Rpb25cIiAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIHNvcnQtaW1wb3J0c1xuXG4vKiogQHR5cGVkZWYge1tuYW1lOiBzdHJpbmcsIG1pbldpZHRoOiBudW1iZXJdfSBCcmVha3BvaW50RGVmaW5pdGlvbiAqL1xuLyoqIEB0eXBlZGVmIHtbbGFiZWw6IHN0cmluZywgY29kZTogc3RyaW5nXX0gQ3VycmVuY3lPcHRpb24gKi9cbi8qKiBAdHlwZWRlZiB7UmVjb3JkPHN0cmluZywgb2JqZWN0Pn0gUm91dGVNYXAgKi9cbi8qKiBAdHlwZWRlZiB7e3JvdXRlczogQXJyYXk8e25hbWU6IHN0cmluZywgcGF0aDogc3RyaW5nfT59fSBSb3V0ZURlZmluaXRpb25zICovXG4vKipcbiAqIEB0eXBlZGVmIHt7ZW1pdDogKGV2ZW50TmFtZTogc3RyaW5nLCBwYXlsb2FkOiB7b2xkVmFsdWU6IENvbmZpZ1ZhbHVlLCBuZXdWYWx1ZTogQ29uZmlnVmFsdWV9KSA9PiB2b2lkfX0gQ29uZmlnRXZlbnRzXG4gKi9cbi8qKlxuICogQHR5cGVkZWYge0JyZWFrcG9pbnREZWZpbml0aW9uW10gfCBDdXJyZW5jeU9wdGlvbltdIHwgUm91dGVNYXAgfCBSb3V0ZURlZmluaXRpb25zIHwgRXZlbnRFbWl0dGVyIHxcbiAqICAgYm9vbGVhbiB8IG51bWJlciB8IG9iamVjdCB8IHN0cmluZyB8IHVuZGVmaW5lZH0gQ29uZmlnVmFsdWVcbiAqL1xuXG5jb25zdCBhY2Nlc3NvcnMgPSB7XG4gIGJyZWFrcG9pbnRzOiB7XG4gICAgZGVmYXVsdDogW1xuICAgICAgW1wieHhsXCIsIDE0MDBdLFxuICAgICAgW1wieGxcIiwgMTIwMF0sXG4gICAgICBbXCJsZ1wiLCA5OTJdLFxuICAgICAgW1wibWRcIiwgNzY4XSxcbiAgICAgIFtcInNtXCIsIDU3Nl0sXG4gICAgICBbXCJ4c1wiLCAwXVxuICAgIF0sXG4gICAgcmVxdWlyZWQ6IHRydWVcbiAgfSxcbiAgY2FibGVVcmw6IHtyZXF1aXJlOiBmYWxzZX0sXG4gIGN1cnJlbmNpZXNDb2xsZWN0aW9uOiB7cmVxdWlyZWQ6IHRydWV9LFxuICBkYW5nZXJvdXNSb3dDb3VudFRocmVzaG9sZDoge2RlZmF1bHQ6IDEwMDAsIHJlcXVpcmVkOiBmYWxzZX0sXG4gIGhpc3Rvcnk6IHtyZXF1aXJlZDogdHJ1ZX0sXG4gIGhvc3Q6IHtyZXF1aXJlZDogZmFsc2V9LFxuICBpMThuOiB7cmVxdWlyZWQ6IGZhbHNlfSxcbiAgbGlua1RvOiB7cmVxdWlyZWQ6IHRydWV9LFxuICBtb2RhbDoge3JlcXVpcmVkOiBmYWxzZX0sXG4gIG5hdmlnYXRpb246IHtyZXF1aXJlZDogdHJ1ZX0sXG4gIHJvdXRlczoge3JlcXVpcmVkOiBmYWxzZX0sXG4gIHJvdXRlRGVmaW5pdGlvbnM6IHtyZXF1aXJlZDogZmFsc2V9LFxuICB1c2VIdG1sRm9ybToge2RlZmF1bHQ6IGZhbHNlLCByZXF1aXJlZDogZmFsc2V9LFxuICB3ZWJzb2NrZXRSZXF1ZXN0czoge3JlcXVpcmVkOiBmYWxzZX1cbn1cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gbWV0aG9kTmFtZVxuICogQHJldHVybnMge25ldmVyfVxuICovXG5jb25zdCBhcGlNYWtlckNvbmZpZ05vdEltcGxlbWVudGVkID0gKG1ldGhvZE5hbWUpID0+IHtcbiAgdGhyb3cgbmV3IEVycm9yKGAnJHttZXRob2ROYW1lfScgbm90IGltcGxlbWVudGVkYClcbn1cblxuLyoqIFN0b3JlcyBnbG9iYWxseSBjb25maWd1cmVkIEFwaSBNYWtlciBpbnRlZ3JhdGlvbiBob29rcyBhbmQgcnVudGltZSBkZXBlbmRlbmNpZXMuICovXG5jbGFzcyBBcGlNYWtlckNvbmZpZyB7XG4gIC8qKiBJbml0aWFsaXplcyB0aGUgc2hhcmVkIGNvbmZpZyBzdGF0ZSBhbmQgY2hhbmdlIGVtaXR0ZXIuICovXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGlmICghZ2xvYmFsVGhpcy5hcGlNYWtlckNvbmZpZ0dsb2JhbCkgZ2xvYmFsVGhpcy5hcGlNYWtlckNvbmZpZ0dsb2JhbCA9IHt9XG5cbiAgICB0aGlzLmdsb2JhbCA9IGdsb2JhbFRoaXMuYXBpTWFrZXJDb25maWdHbG9iYWxcbiAgICB0aGlzLmV2ZW50cyA9IG5ldyBFdmVudEVtaXR0ZXIoKVxuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGV2ZW50IGVtaXR0ZXIgdXNlZCBmb3IgY29uZmlnIGNoYW5nZSBub3RpZmljYXRpb25zLlxuICAgKiBAcmV0dXJucyB7Q29uZmlnRXZlbnRzfVxuICAgKi9cbiAgZ2V0RXZlbnRzKCkgeyByZXR1cm4gdGhpcy5ldmVudHMgfVxuXG4gIC8qKiBAcmV0dXJucyB7aW1wb3J0KFwiaGlzdG9yeVwiKS5Ccm93c2VySGlzdG9yeX0gKi9cbiAgZ2V0SGlzdG9yeSgpIHtcbiAgICByZXR1cm4gYXBpTWFrZXJDb25maWdOb3RJbXBsZW1lbnRlZChcImdldEhpc3RvcnlcIilcbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7c3RyaW5nfSAqL1xuICBnZXRIb3N0KCkge1xuICAgIHJldHVybiBhcGlNYWtlckNvbmZpZ05vdEltcGxlbWVudGVkKFwiZ2V0SG9zdFwiKVxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHtzdHJpbmcgfCB1bmRlZmluZWR9ICovXG4gIGdldENhYmxlVXJsKCkge1xuICAgIHJldHVybiBhcGlNYWtlckNvbmZpZ05vdEltcGxlbWVudGVkKFwiZ2V0Q2FibGVVcmxcIilcbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7bnVtYmVyfSAqL1xuICBnZXREYW5nZXJvdXNSb3dDb3VudFRocmVzaG9sZCgpIHtcbiAgICByZXR1cm4gYXBpTWFrZXJDb25maWdOb3RJbXBsZW1lbnRlZChcImdldERhbmdlcm91c1Jvd0NvdW50VGhyZXNob2xkXCIpXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtudW1iZXJ9IF9uZXdWYWx1ZVxuICAgKi9cbiAgc2V0RGFuZ2Vyb3VzUm93Q291bnRUaHJlc2hvbGQoX25ld1ZhbHVlKSB7IGFwaU1ha2VyQ29uZmlnTm90SW1wbGVtZW50ZWQoXCJzZXREYW5nZXJvdXNSb3dDb3VudFRocmVzaG9sZFwiKSB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nIHwgdW5kZWZpbmVkfSBfbmV3VmFsdWVcbiAgICovXG4gIHNldENhYmxlVXJsKF9uZXdWYWx1ZSkgeyBhcGlNYWtlckNvbmZpZ05vdEltcGxlbWVudGVkKFwic2V0Q2FibGVVcmxcIikgfVxuXG4gIC8qKiBAcmV0dXJucyB7Ym9vbGVhbiB8IHVuZGVmaW5lZH0gKi9cbiAgZ2V0V2Vic29ja2V0UmVxdWVzdHMoKSB7XG4gICAgcmV0dXJuIGFwaU1ha2VyQ29uZmlnTm90SW1wbGVtZW50ZWQoXCJnZXRXZWJzb2NrZXRSZXF1ZXN0c1wiKVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7Ym9vbGVhbiB8IHVuZGVmaW5lZH0gX25ld1ZhbHVlXG4gICAqL1xuICBzZXRXZWJzb2NrZXRSZXF1ZXN0cyhfbmV3VmFsdWUpIHsgYXBpTWFrZXJDb25maWdOb3RJbXBsZW1lbnRlZChcInNldFdlYnNvY2tldFJlcXVlc3RzXCIpIH1cblxuICAvKiogQHJldHVybnMge0FycmF5PEN1cnJlbmN5T3B0aW9uPn0gKi9cbiAgZ2V0Q3VycmVuY2llc0NvbGxlY3Rpb24oKSB7XG4gICAgcmV0dXJuIGFwaU1ha2VyQ29uZmlnTm90SW1wbGVtZW50ZWQoXCJnZXRDdXJyZW5jaWVzQ29sbGVjdGlvblwiKVxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHtvYmplY3R9ICovXG4gIGdldE1vZGFsKCkge1xuICAgIHJldHVybiBhcGlNYWtlckNvbmZpZ05vdEltcGxlbWVudGVkKFwiZ2V0TW9kYWxcIilcbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7Um91dGVEZWZpbml0aW9uc30gKi9cbiAgZ2V0Um91dGVEZWZpbml0aW9ucygpIHtcbiAgICByZXR1cm4gYXBpTWFrZXJDb25maWdOb3RJbXBsZW1lbnRlZChcImdldFJvdXRlRGVmaW5pdGlvbnNcIilcbiAgfVxuXG4gIC8qKiBAcmV0dXJucyB7Um91dGVNYXB9ICovXG4gIGdldFJvdXRlcygpIHtcbiAgICByZXR1cm4gYXBpTWFrZXJDb25maWdOb3RJbXBsZW1lbnRlZChcImdldFJvdXRlc1wiKVxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHtib29sZWFufSAqL1xuICBnZXRVc2VIdG1sRm9ybSgpIHtcbiAgICByZXR1cm4gYXBpTWFrZXJDb25maWdOb3RJbXBsZW1lbnRlZChcImdldFVzZUh0bWxGb3JtXCIpXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtib29sZWFufSBfbmV3VmFsdWVcbiAgICovXG4gIHNldFVzZUh0bWxGb3JtKF9uZXdWYWx1ZSkgeyBhcGlNYWtlckNvbmZpZ05vdEltcGxlbWVudGVkKFwic2V0VXNlSHRtbEZvcm1cIikgfVxufVxuXG5mb3IgKGNvbnN0IGFjY2Vzc29yTmFtZSBpbiBhY2Nlc3NvcnMpIHtcbiAgY29uc3QgYWNjZXNzb3JEYXRhID0gYWNjZXNzb3JzW2FjY2Vzc29yTmFtZV1cbiAgY29uc3QgY2FtZWxpemVkQWNjZXNzb3IgPSBpbmZsZWN0aW9uLmNhbWVsaXplKGFjY2Vzc29yTmFtZSlcblxuICBBcGlNYWtlckNvbmZpZy5wcm90b3R5cGVbYHNldCR7Y2FtZWxpemVkQWNjZXNzb3J9YF0gPSBmdW5jdGlvbiAobmV3VmFsdWUpIHtcbiAgICBjb25zdCBvbGRWYWx1ZSA9IHRoaXMuZ2xvYmFsW2FjY2Vzc29yTmFtZV1cblxuICAgIHRoaXMuZ2xvYmFsW2FjY2Vzc29yTmFtZV0gPSBuZXdWYWx1ZVxuXG4gICAgaWYgKG9sZFZhbHVlICE9PSBuZXdWYWx1ZSkge1xuICAgICAgdGhpcy5ldmVudHMuZW1pdChgb24ke2NhbWVsaXplZEFjY2Vzc29yfUNoYW5nZWAsIHtvbGRWYWx1ZSwgbmV3VmFsdWV9KVxuICAgIH1cbiAgfVxuXG4gIEFwaU1ha2VyQ29uZmlnLnByb3RvdHlwZVtgZ2V0JHtjYW1lbGl6ZWRBY2Nlc3Nvcn1gXSA9IGZ1bmN0aW9uICguLi5hcmdzKSB7XG4gICAgaWYgKHRoaXMuZ2xvYmFsW2FjY2Vzc29yTmFtZV0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgaWYgKGFjY2Vzc29yRGF0YS5kZWZhdWx0ICE9PSB1bmRlZmluZWQpIHJldHVybiBhY2Nlc3NvckRhdGEuZGVmYXVsdFxuICAgICAgaWYgKGFjY2Vzc29yRGF0YS5yZXF1aXJlZCkgdGhyb3cgbmV3IEVycm9yKGAke2FjY2Vzc29yTmFtZX0gaGFzbid0IGJlZW4gc2V0YClcbiAgICB9XG5cbiAgICBjb25zdCB2YWx1ZSA9IHRoaXMuZ2xvYmFsW2FjY2Vzc29yTmFtZV1cblxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT0gXCJmdW5jdGlvblwiKSByZXR1cm4gdmFsdWUoLi4uYXJncylcblxuICAgIHJldHVybiB2YWx1ZVxuICB9XG59XG5cbmNvbnN0IGFwaU1ha2VyQ29uZmlnID0gbmV3IEFwaU1ha2VyQ29uZmlnKClcblxuZXhwb3J0IGRlZmF1bHQgYXBpTWFrZXJDb25maWdcbiJdfQ==
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
declare const _default: React.NamedExoticComponent<Record<string, any>>;
|
|
2
|
+
export default _default;
|
|
3
|
+
/**
|
|
4
|
+
* Confirmation shown when a user tries to load more rows than the configured dangerous threshold (e.g. the
|
|
5
|
+
* "All" per-page option on a very large collection). Warns that the load may freeze the browser, advises
|
|
6
|
+
* filtering, points to the existing Download export, and lets the user proceed or cancel.
|
|
7
|
+
*/
|
|
8
|
+
export type Props = {
|
|
9
|
+
count: number;
|
|
10
|
+
onConfirm: () => void;
|
|
11
|
+
onRequestClose: () => void;
|
|
12
|
+
};
|
|
13
|
+
import React from "react";
|
|
14
|
+
//# sourceMappingURL=large-per-page-warning-modal.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"large-per-page-warning-modal.d.ts","sourceRoot":"/src/","sources":["table/large-per-page-warning-modal.jsx"],"names":[],"mappings":";;;;;;;;WAmBc,MAAM;eACN,MAAM,IAAI;oBACV,MAAM,IAAI;;kBAbN,OAAO"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
// @ts-check
|
|
3
|
+
/* eslint-disable sort-imports, react/jsx-max-depth */
|
|
4
|
+
import { ShapeComponent, shapeComponent } from "set-state-compare/build/shape-component.js";
|
|
5
|
+
import apiMakerConfig from "../config.js";
|
|
6
|
+
import Button from "../utils/button";
|
|
7
|
+
import memo from "set-state-compare/build/memo.js";
|
|
8
|
+
import PropTypes from "prop-types";
|
|
9
|
+
import propTypesExact from "prop-types-exact";
|
|
10
|
+
import React from "react";
|
|
11
|
+
import Text from "../utils/text";
|
|
12
|
+
import useI18n from "i18n-on-steroids/build/src/use-i18n.js";
|
|
13
|
+
import { View } from "react-native";
|
|
14
|
+
/**
|
|
15
|
+
* Confirmation shown when a user tries to load more rows than the configured dangerous threshold (e.g. the
|
|
16
|
+
* "All" per-page option on a very large collection). Warns that the load may freeze the browser, advises
|
|
17
|
+
* filtering, points to the existing Download export, and lets the user proceed or cancel.
|
|
18
|
+
*
|
|
19
|
+
* @typedef {object} Props
|
|
20
|
+
* @property {number} count
|
|
21
|
+
* @property {() => void} onConfirm
|
|
22
|
+
* @property {() => void} onRequestClose
|
|
23
|
+
*/
|
|
24
|
+
export default memo(shapeComponent(/** @augments {ShapeComponent<Props>} */ class ApiMakerTableLargePerPageWarningModal extends ShapeComponent {
|
|
25
|
+
static propTypes = propTypesExact({
|
|
26
|
+
count: PropTypes.number,
|
|
27
|
+
onConfirm: PropTypes.func.isRequired,
|
|
28
|
+
onRequestClose: PropTypes.func.isRequired
|
|
29
|
+
});
|
|
30
|
+
setup() {
|
|
31
|
+
const { t } = useI18n({ namespace: "js.api_maker.table.large_per_page_warning_modal" });
|
|
32
|
+
this.t = t;
|
|
33
|
+
}
|
|
34
|
+
render() {
|
|
35
|
+
const { count, onConfirm, onRequestClose, ...restProps } = this.p;
|
|
36
|
+
const Modal = apiMakerConfig.getModal();
|
|
37
|
+
const warningDefault = "You're about to load %{count} rows. " +
|
|
38
|
+
"This can make the page very slow or even crash your browser.";
|
|
39
|
+
const exportDefault = "To save the data as a file, open the table settings (the gear icon) and click " +
|
|
40
|
+
"Download — it saves the rows currently shown.";
|
|
41
|
+
return (_jsx(Modal, { onRequestClose: onRequestClose, ...restProps, children: _jsxs(View, { dataSet: this.cache("rootViewDataSet", { class: "large-per-page-warning-modal" }), style: this.cache("rootViewStyle", { padding: 20 }), testID: "large-per-page-warning-modal", children: [_jsx(Text, { style: this.cache("titleStyle", { fontSize: 18, fontWeight: "bold", marginBottom: 12 }), children: this.t(".title", { defaultValue: "Load a large number of rows?" }) }), _jsx(Text, { style: this.cache("warningStyle", { marginBottom: 8 }), children: this.t(".warning", { count, defaultValue: warningDefault }) }), _jsx(Text, { style: this.cache("filterAdviceStyle", { marginBottom: 8 }), children: this.t(".filter_advice", { defaultValue: "Consider narrowing your results with filters first." }) }), _jsx(Text, { style: this.cache("exportAdviceStyle", { marginBottom: 16 }), children: this.t(".export_advice", { defaultValue: exportDefault }) }), _jsxs(View, { style: this.cache("buttonsViewStyle", { flexDirection: "row", justifyContent: "flex-end" }), children: [_jsx(Button, { label: this.t(".cancel", { defaultValue: "Cancel" }), onPress: onRequestClose, pressableProps: this.cache("cancelButtonProps", { testID: "large-per-page-cancel-button" }) }), _jsx(View, { style: this.cache("buttonSpacerStyle", { width: 10 }) }), _jsx(Button, { danger: true, label: this.t(".proceed_anyway", { defaultValue: "Proceed anyway" }), onPress: onConfirm, pressableProps: this.cache("proceedButtonProps", { testID: "large-per-page-proceed-button" }) })] })] }) }));
|
|
42
|
+
}
|
|
43
|
+
}));
|
|
44
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFyZ2UtcGVyLXBhZ2Utd2FybmluZy1tb2RhbC5qcyIsInNvdXJjZVJvb3QiOiIvc3JjLyIsInNvdXJjZXMiOlsidGFibGUvbGFyZ2UtcGVyLXBhZ2Utd2FybmluZy1tb2RhbC5qc3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLFlBQVk7QUFDWixzREFBc0Q7QUFDdEQsT0FBTyxFQUFDLGNBQWMsRUFBRSxjQUFjLEVBQUMsTUFBTSw0Q0FBNEMsQ0FBQTtBQUN6RixPQUFPLGNBQWMsTUFBTSxjQUFjLENBQUE7QUFDekMsT0FBTyxNQUFNLE1BQU0saUJBQWlCLENBQUE7QUFDcEMsT0FBTyxJQUFJLE1BQU0saUNBQWlDLENBQUE7QUFDbEQsT0FBTyxTQUFTLE1BQU0sWUFBWSxDQUFBO0FBQ2xDLE9BQU8sY0FBYyxNQUFNLGtCQUFrQixDQUFBO0FBQzdDLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQTtBQUN6QixPQUFPLElBQUksTUFBTSxlQUFlLENBQUE7QUFDaEMsT0FBTyxPQUFPLE1BQU0sd0NBQXdDLENBQUE7QUFDNUQsT0FBTyxFQUFDLElBQUksRUFBQyxNQUFNLGNBQWMsQ0FBQTtBQUVqQzs7Ozs7Ozs7O0dBU0c7QUFDSCxlQUFlLElBQUksQ0FBQyxjQUFjLENBQUMsd0NBQXdDLENBQUMsTUFBTSxxQ0FBc0MsU0FBUSxjQUFjO0lBQzVJLE1BQU0sQ0FBQyxTQUFTLEdBQUcsY0FBYyxDQUFDO1FBQ2hDLEtBQUssRUFBRSxTQUFTLENBQUMsTUFBTTtRQUN2QixTQUFTLEVBQUUsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVO1FBQ3BDLGNBQWMsRUFBRSxTQUFTLENBQUMsSUFBSSxDQUFDLFVBQVU7S0FDMUMsQ0FBQyxDQUFBO0lBRUYsS0FBSztRQUNILE1BQU0sRUFBQyxDQUFDLEVBQUMsR0FBRyxPQUFPLENBQUMsRUFBQyxTQUFTLEVBQUUsaURBQWlELEVBQUMsQ0FBQyxDQUFBO1FBRW5GLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQ1os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QixFQUFDLENBQUMsR0FDM0YsSUFDRyxJQUNGLEdBQ0QsQ0FDVCxDQUFBO0lBQ0gsQ0FBQztDQUNGLENBQUMsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWNoZWNrXG4vKiBlc2xpbnQtZGlzYWJsZSBzb3J0LWltcG9ydHMsIHJlYWN0L2pzeC1tYXgtZGVwdGggKi9cbmltcG9ydCB7U2hhcGVDb21wb25lbnQsIHNoYXBlQ29tcG9uZW50fSBmcm9tIFwic2V0LXN0YXRlLWNvbXBhcmUvYnVpbGQvc2hhcGUtY29tcG9uZW50LmpzXCJcbmltcG9ydCBhcGlNYWtlckNvbmZpZyBmcm9tIFwiLi4vY29uZmlnLmpzXCJcbmltcG9ydCBCdXR0b24gZnJvbSBcIi4uL3V0aWxzL2J1dHRvblwiXG5pbXBvcnQgbWVtbyBmcm9tIFwic2V0LXN0YXRlLWNvbXBhcmUvYnVpbGQvbWVtby5qc1wiXG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCJcbmltcG9ydCBwcm9wVHlwZXNFeGFjdCBmcm9tIFwicHJvcC10eXBlcy1leGFjdFwiXG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCJcbmltcG9ydCBUZXh0IGZyb20gXCIuLi91dGlscy90ZXh0XCJcbmltcG9ydCB1c2VJMThuIGZyb20gXCJpMThuLW9uLXN0ZXJvaWRzL2J1aWxkL3NyYy91c2UtaTE4bi5qc1wiXG5pbXBvcnQge1ZpZXd9IGZyb20gXCJyZWFjdC1uYXRpdmVcIlxuXG4vKipcbiAqIENvbmZpcm1hdGlvbiBzaG93biB3aGVuIGEgdXNlciB0cmllcyB0byBsb2FkIG1vcmUgcm93cyB0aGFuIHRoZSBjb25maWd1cmVkIGRhbmdlcm91cyB0aHJlc2hvbGQgKGUuZy4gdGhlXG4gKiBcIkFsbFwiIHBlci1wYWdlIG9wdGlvbiBvbiBhIHZlcnkgbGFyZ2UgY29sbGVjdGlvbikuIFdhcm5zIHRoYXQgdGhlIGxvYWQgbWF5IGZyZWV6ZSB0aGUgYnJvd3NlciwgYWR2aXNlc1xuICogZmlsdGVyaW5nLCBwb2ludHMgdG8gdGhlIGV4aXN0aW5nIERvd25sb2FkIGV4cG9ydCwgYW5kIGxldHMgdGhlIHVzZXIgcHJvY2VlZCBvciBjYW5jZWwuXG4gKlxuICogQHR5cGVkZWYge29iamVjdH0gUHJvcHNcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBjb3VudFxuICogQHByb3BlcnR5IHsoKSA9PiB2b2lkfSBvbkNvbmZpcm1cbiAqIEBwcm9wZXJ0eSB7KCkgPT4gdm9pZH0gb25SZXF1ZXN0Q2xvc2VcbiAqL1xuZXhwb3J0IGRlZmF1bHQgbWVtbyhzaGFwZUNvbXBvbmVudCgvKiogQGF1Z21lbnRzIHtTaGFwZUNvbXBvbmVudDxQcm9wcz59ICovIGNsYXNzIEFwaU1ha2VyVGFibGVMYXJnZVBlclBhZ2VXYXJuaW5nTW9kYWwgZXh0ZW5kcyBTaGFwZUNvbXBvbmVudCB7XG4gIHN0YXRpYyBwcm9wVHlwZXMgPSBwcm9wVHlwZXNFeGFjdCh7XG4gICAgY291bnQ6IFByb3BUeXBlcy5udW1iZXIsXG4gICAgb25Db25maXJtOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICAgIG9uUmVxdWVzdENsb3NlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkXG4gIH0pXG5cbiAgc2V0dXAoKSB7XG4gICAgY29uc3Qge3R9ID0gdXNlSTE4bih7bmFtZXNwYWNlOiBcImpzLmFwaV9tYWtlci50YWJsZS5sYXJnZV9wZXJfcGFnZV93YXJuaW5nX21vZGFsXCJ9KVxuXG4gICAgdGhpcy50ID0gdFxuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHtjb3VudCwgb25Db25maXJtLCBvblJlcXVlc3RDbG9zZSwgLi4ucmVzdFByb3BzfSA9IHRoaXMucFxuICAgIGNvbnN0IE1vZGFsID0gYXBpTWFrZXJDb25maWcuZ2V0TW9kYWwoKVxuICAgIGNvbnN0IHdhcm5pbmdEZWZhdWx0ID0gXCJZb3UncmUgYWJvdXQgdG8gbG9hZCAle2NvdW50fSByb3dzLiBcIiArXG4gICAgICBcIlRoaXMgY2FuIG1ha2UgdGhlIHBhZ2UgdmVyeSBzbG93IG9yIGV2ZW4gY3Jhc2ggeW91ciBicm93c2VyLlwiXG4gICAgY29uc3QgZXhwb3J0RGVmYXVsdCA9IFwiVG8gc2F2ZSB0aGUgZGF0YSBhcyBhIGZpbGUsIG9wZW4gdGhlIHRhYmxlIHNldHRpbmdzICh0aGUgZ2VhciBpY29uKSBhbmQgY2xpY2sgXCIgK1xuICAgICAgXCJEb3dubG9hZCDigJQgaXQgc2F2ZXMgdGhlIHJvd3MgY3VycmVudGx5IHNob3duLlwiXG5cbiAgICByZXR1cm4gKFxuICAgICAgPE1vZGFsIG9uUmVxdWVzdENsb3NlPXtvblJlcXVlc3RDbG9zZX0gey4uLnJlc3RQcm9wc30+XG4gICAgICAgIDxWaWV3XG4gICAgICAgICAgZGF0YVNldD17dGhpcy5jYWNoZShcInJvb3RWaWV3RGF0YVNldFwiLCB7Y2xhc3M6IFwibGFyZ2UtcGVyLXBhZ2Utd2FybmluZy1tb2RhbFwifSl9XG4gICAgICAgICAgc3R5bGU9e3RoaXMuY2FjaGUoXCJyb290Vmlld1N0eWxlXCIsIHtwYWRkaW5nOiAyMH0pfVxuICAgICAgICAgIHRlc3RJRD1cImxhcmdlLXBlci1wYWdlLXdhcm5pbmctbW9kYWxcIlxuICAgICAgICA+XG4gICAgICAgICAgPFRleHQgc3R5bGU9e3RoaXMuY2FjaGUoXCJ0aXRsZVN0eWxlXCIsIHtmb250U2l6ZTogMTgsIGZvbnRXZWlnaHQ6IFwiYm9sZFwiLCBtYXJnaW5Cb3R0b206IDEyfSl9PlxuICAgICAgICAgICAge3RoaXMudChcIi50aXRsZVwiLCB7ZGVmYXVsdFZhbHVlOiBcIkxvYWQgYSBsYXJnZSBudW1iZXIgb2Ygcm93cz9cIn0pfVxuICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICA8VGV4dCBzdHlsZT17dGhpcy5jYWNoZShcIndhcm5pbmdTdHlsZVwiLCB7bWFyZ2luQm90dG9tOiA4fSl9PlxuICAgICAgICAgICAge3RoaXMudChcIi53YXJuaW5nXCIsIHtjb3VudCwgZGVmYXVsdFZhbHVlOiB3YXJuaW5nRGVmYXVsdH0pfVxuICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICA8VGV4dCBzdHlsZT17dGhpcy5jYWNoZShcImZpbHRlckFkdmljZVN0eWxlXCIsIHttYXJnaW5Cb3R0b206IDh9KX0+XG4gICAgICAgICAgICB7dGhpcy50KFwiLmZpbHRlcl9hZHZpY2VcIiwge2RlZmF1bHRWYWx1ZTogXCJDb25zaWRlciBuYXJyb3dpbmcgeW91ciByZXN1bHRzIHdpdGggZmlsdGVycyBmaXJzdC5cIn0pfVxuICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICA8VGV4dCBzdHlsZT17dGhpcy5jYWNoZShcImV4cG9ydEFkdmljZVN0eWxlXCIsIHttYXJnaW5Cb3R0b206IDE2fSl9PlxuICAgICAgICAgICAge3RoaXMudChcIi5leHBvcnRfYWR2aWNlXCIsIHtkZWZhdWx0VmFsdWU6IGV4cG9ydERlZmF1bHR9KX1cbiAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgPFZpZXcgc3R5bGU9e3RoaXMuY2FjaGUoXCJidXR0b25zVmlld1N0eWxlXCIsIHtmbGV4RGlyZWN0aW9uOiBcInJvd1wiLCBqdXN0aWZ5Q29udGVudDogXCJmbGV4LWVuZFwifSl9PlxuICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICBsYWJlbD17dGhpcy50KFwiLmNhbmNlbFwiLCB7ZGVmYXVsdFZhbHVlOiBcIkNhbmNlbFwifSl9XG4gICAgICAgICAgICAgIG9uUHJlc3M9e29uUmVxdWVzdENsb3NlfVxuICAgICAgICAgICAgICBwcmVzc2FibGVQcm9wcz17dGhpcy5jYWNoZShcImNhbmNlbEJ1dHRvblByb3BzXCIsIHt0ZXN0SUQ6IFwibGFyZ2UtcGVyLXBhZ2UtY2FuY2VsLWJ1dHRvblwifSl9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPFZpZXcgc3R5bGU9e3RoaXMuY2FjaGUoXCJidXR0b25TcGFjZXJTdHlsZVwiLCB7d2lkdGg6IDEwfSl9IC8+XG4gICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgIGRhbmdlclxuICAgICAgICAgICAgICBsYWJlbD17dGhpcy50KFwiLnByb2NlZWRfYW55d2F5XCIsIHtkZWZhdWx0VmFsdWU6IFwiUHJvY2VlZCBhbnl3YXlcIn0pfVxuICAgICAgICAgICAgICBvblByZXNzPXtvbkNvbmZpcm19XG4gICAgICAgICAgICAgIHByZXNzYWJsZVByb3BzPXt0aGlzLmNhY2hlKFwicHJvY2VlZEJ1dHRvblByb3BzXCIsIHt0ZXN0SUQ6IFwibGFyZ2UtcGVyLXBhZ2UtcHJvY2VlZC1idXR0b25cIn0pfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L1ZpZXc+XG4gICAgICAgIDwvVmlldz5cbiAgICAgIDwvTW9kYWw+XG4gICAgKVxuICB9XG59KSlcbiJdfQ==
|
package/build/table/table.d.ts
CHANGED
|
@@ -85,7 +85,7 @@ export type BaseModel = {
|
|
|
85
85
|
markForDestruction(): void;
|
|
86
86
|
markedForDestruction(): boolean;
|
|
87
87
|
uniqueKey(): number;
|
|
88
|
-
_callMemberCommand(args: ModelCommandDescriptor, commandArgs: ModelCommandOptions): import("../command-execution").default;
|
|
88
|
+
_callMemberCommand(args: ModelCommandDescriptor, commandArgs: ModelCommandOptions): import("../command-execution.js").default;
|
|
89
89
|
readAttribute(attributeName: string): ModelValue | null | undefined;
|
|
90
90
|
readAttributeUnderscore(attributeName: string): ModelValue | null | undefined;
|
|
91
91
|
isAttributeLoaded(attributeName: string): boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"table.d.ts","sourceRoot":"/src/","sources":["table/table.jsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"table.d.ts","sourceRoot":"/src/","sources":["table/table.jsx"],"names":[],"mappings":"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"}
|
package/build/table/table.js
CHANGED
|
@@ -7,7 +7,9 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
|
|
|
7
7
|
import { dig, digg, digs } from "diggerize";
|
|
8
8
|
import React, { createContext, useContext, useEffect, useMemo, useRef } from "react";
|
|
9
9
|
import { Animated, Platform, Pressable, View } from "react-native";
|
|
10
|
+
import apiMakerConfig from "../config.js";
|
|
10
11
|
import BlockingOverlay from "./blocking-overlay";
|
|
12
|
+
import LargePerPageWarningModal from "./large-per-page-warning-modal";
|
|
11
13
|
import Card from "../bootstrap/card";
|
|
12
14
|
import classNames from "classnames";
|
|
13
15
|
import Collection from "../collection.js";
|
|
@@ -316,6 +318,8 @@ export default memo(shapeComponent(/** @augments {ShapeComponent<Props, State>}
|
|
|
316
318
|
draggedColumn: null,
|
|
317
319
|
identifier: this.props.identifier || `${digg(this.p.modelClass.modelClassData(), "collectionKey")}-default`,
|
|
318
320
|
lastUpdate: new Date(),
|
|
321
|
+
pendingPerPageValue: null,
|
|
322
|
+
perPageSelectNonce: 0,
|
|
319
323
|
preload: undefined,
|
|
320
324
|
preparedColumns: undefined,
|
|
321
325
|
queryName: this.props.queryName || digg(this.p.modelClass.modelClassData(), "collectionKey"),
|
|
@@ -324,6 +328,7 @@ export default memo(shapeComponent(/** @augments {ShapeComponent<Props, State>}
|
|
|
324
328
|
querySName: `${this.props.queryName || digg(this.p.modelClass.modelClassData(), "collectionKey")}_s`,
|
|
325
329
|
resizing: false,
|
|
326
330
|
showFilters: Boolean(Params.parse()[`${this.props.queryName || digg(this.p.modelClass.modelClassData(), "collectionKey")}_s`]),
|
|
331
|
+
showLargePerPageWarning: false,
|
|
327
332
|
showSettings: false,
|
|
328
333
|
tableSetting: undefined,
|
|
329
334
|
tableSettingLoaded: false,
|
|
@@ -655,12 +660,31 @@ export default memo(shapeComponent(/** @augments {ShapeComponent<Props, State>}
|
|
|
655
660
|
this.s.showFilters = !this.s.showFilters;
|
|
656
661
|
};
|
|
657
662
|
onPerPageChanged = (e) => {
|
|
658
|
-
const { queryName } = this.s;
|
|
659
663
|
const newPerPageValue = digg(e, "target", "value");
|
|
660
|
-
const
|
|
661
|
-
const
|
|
662
|
-
|
|
663
|
-
|
|
664
|
+
const totalCount = this.collection?.result?.totalCount?.();
|
|
665
|
+
const wouldLoadCount = newPerPageValue == "all" ? totalCount : Math.min(Number(newPerPageValue), totalCount ?? Infinity);
|
|
666
|
+
if (typeof totalCount == "number" && wouldLoadCount > apiMakerConfig.getDangerousRowCountThreshold()) {
|
|
667
|
+
this.s.pendingPerPageValue = newPerPageValue;
|
|
668
|
+
this.s.showLargePerPageWarning = true;
|
|
669
|
+
return;
|
|
670
|
+
}
|
|
671
|
+
this.applyPerPageChange(newPerPageValue);
|
|
672
|
+
};
|
|
673
|
+
applyPerPageChange = (newPerPageValue) => {
|
|
674
|
+
const { queryName } = this.s;
|
|
675
|
+
Params.changeParams({ [`${queryName}_per`]: newPerPageValue });
|
|
676
|
+
};
|
|
677
|
+
onConfirmLargePerPage = () => {
|
|
678
|
+
const { pendingPerPageValue } = this.s;
|
|
679
|
+
this.s.pendingPerPageValue = null;
|
|
680
|
+
this.s.showLargePerPageWarning = false;
|
|
681
|
+
this.applyPerPageChange(pendingPerPageValue);
|
|
682
|
+
};
|
|
683
|
+
onCancelLargePerPage = () => {
|
|
684
|
+
this.s.pendingPerPageValue = null;
|
|
685
|
+
this.s.showLargePerPageWarning = false;
|
|
686
|
+
// Remount the uncontrolled per-page <Select> so it snaps back to the actual per-page value.
|
|
687
|
+
this.s.perPageSelectNonce += 1;
|
|
664
688
|
};
|
|
665
689
|
renderItem = ({ index, item: model }) => {
|
|
666
690
|
if (!this.s.tableSettingLoaded) {
|
|
@@ -790,7 +814,8 @@ export default memo(shapeComponent(/** @augments {ShapeComponent<Props, State>}
|
|
|
790
814
|
if (to === 0)
|
|
791
815
|
from = 0;
|
|
792
816
|
return (_jsxs(View, { style: styles.tableFooterRootViewStyle ||= { flexDirection: "row", justifyContent: "space-between", marginTop: 10 }, children: [_jsxs(View, { dataSet: dataSets.showingCounts ||= { class: "showing-counts" }, style: styles.showingCounts ||= { flexDirection: "row" }, children: [_jsx(Text, { children: this.tt.t(".showing_from_to_out_of_total", { defaultValue, from, to, total_count: totalCount }) }), this.p.workplace && this.s.currentWorkplaceCount !== null &&
|
|
793
|
-
_jsx(Text, { style: styles.xSelectedTextStyle ||= { marginLeft: 3 }, children: this.tt.t(".x_selected", { defaultValue: "%{selected} selected.", selected: this.s.currentWorkplaceCount }) })] }), _jsx(View, { children: _jsx(Select, { className: "per-page-select", defaultValue: perPage, onChange: this.tt.onPerPageChanged, options: paginationOptions }
|
|
817
|
+
_jsx(Text, { style: styles.xSelectedTextStyle ||= { marginLeft: 3 }, children: this.tt.t(".x_selected", { defaultValue: "%{selected} selected.", selected: this.s.currentWorkplaceCount }) })] }), _jsx(View, { children: _jsx(Select, { className: "per-page-select", defaultValue: perPage, onChange: this.tt.onPerPageChanged, options: paginationOptions }, `per-page-select-${this.s.perPageSelectNonce}`) }), this.s.showLargePerPageWarning &&
|
|
818
|
+
_jsx(LargePerPageWarningModal, { count: totalCount, onConfirm: this.tt.onConfirmLargePerPage, onRequestClose: this.tt.onCancelLargePerPage })] }));
|
|
794
819
|
}
|
|
795
820
|
className() {
|
|
796
821
|
const classNames = ["api-maker--table"];
|
|
@@ -955,4 +980,4 @@ export default memo(shapeComponent(/** @augments {ShapeComponent<Props, State>}
|
|
|
955
980
|
};
|
|
956
981
|
submitFilterDebounce = debounce(this.tt.submitFilter);
|
|
957
982
|
}));
|
|
958
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuanMiLCJzb3VyY2VSb290IjoiL3NyYy8iLCJzb3VyY2VzIjpbInRhYmxlL3RhYmxlLmpzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsWUFBWTtBQUNaLHVGQUF1RjtBQUN2RiwwRUFBMEU7QUFDMUUsNEVBQTRFO0FBQzVFLHdEQUF3RDtBQUN4RCxPQUFPLEVBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUMsTUFBTSxXQUFXLENBQUE7QUFDekMsT0FBTyxLQUFLLEVBQUUsRUFBQyxhQUFhLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFDLE1BQU0sT0FBTyxDQUFBO0FBQ2xGLE9BQU8sRUFBQyxRQUFRLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUMsTUFBTSxjQUFjLENBQUE7QUFDaEUsT0FBTyxlQUFlLE1BQU0sb0JBQW9CLENBQUE7QUFDaEQsT0FBTyxJQUFJLE1BQU0sbUJBQW1CLENBQUE7QUFDcEMsT0FBTyxVQUFVLE1BQU0sWUFBWSxDQUFBO0FBQ25DLE9BQU8sVUFBVSxNQUFNLGtCQUFrQixDQUFBO0FBQ3pDLE9BQU8sYUFBYSxNQUFNLHFCQUFxQixDQUFBO0FBQy9DLE9BQU8sUUFBUSxNQUFNLFVBQVUsQ0FBQTtBQUMvQixPQUFPLGFBQWEsTUFBTSx5QkFBeUIsQ0FBQTtBQUNuRCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sZUFBZSxDQUFBO0FBQzFDLE9BQU8sT0FBTyxNQUFNLGlCQUFpQixDQUFBO0FBQ3JDLE9BQU8sUUFBUSxNQUFNLHdCQUF3QixDQUFBO0FBQzdDLE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSxTQUFTLENBQUE7QUFDNUIsT0FBTyxNQUFNLE1BQU0scUJBQXFCLENBQUE7QUFDeEMsT0FBTyxZQUFZLE1BQU0saUJBQWlCLENBQUE7QUFDMUMsT0FBTyxZQUFZLE1BQU0saUJBQWlCLENBQUE7QUFDMUMsT0FBTyxJQUFJLE1BQU0sZUFBZSxDQUFBO0FBQ2hD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QUFDLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFBO1FBRTVDLElBQUksUUFBUSxDQUFDLEVBQUUsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUN6QixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsU0FBUyxDQUFDLENBQUE7WUFDekQsTUFBTSxpQkFBaUIsR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFBO1lBRTFELFdBQVcsQ0FBQyxPQUFPLEVBQUUsaUJBQWlCLENBQUMsQ0FBQTtRQUN6QyxDQUFDO1FBRUQsa0JBQWtCLENBQUMsVUFBVSxDQUFDLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUV4RCxNQUFNLENBQUMsWUFBWSxDQUFDLGtCQUFrQixFQUFFLEVBQUMsVUFBVSxFQUFDLENBQUMsQ0FBQTtJQUN2RCxDQUFDLENBQUE7SUFFRCxvQkFBb0IsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsQ0FBQTtDQUN0RCxDQUFDLENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1jaGVja1xuLyogZXNsaW50LWRpc2FibGUgYXJyb3ctYm9keS1zdHlsZSwgaW1wb3J0L25vLW5hbWVkLWFzLWRlZmF1bHQsIGltcG9ydC9uby11bnJlc29sdmVkICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1yZXR1cm4tYXNzaWduLCBuby11bnVzZWQtdmFycywgcmVhY3QvanN4LW1heC1kZXB0aCAqL1xuLyogZXNsaW50LWRpc2FibGUgcmVhY3QvanN4LW9uZS1leHByZXNzaW9uLXBlci1saW5lLCByZWFjdC9qc3gtc29ydC1wcm9wcyAqL1xuLyogZXNsaW50LWRpc2FibGUgcmVhY3Qvc29ydC1wcm9wLXR5cGVzLCBzb3J0LWltcG9ydHMgKi9cbmltcG9ydCB7ZGlnLCBkaWdnLCBkaWdzfSBmcm9tIFwiZGlnZ2VyaXplXCJcbmltcG9ydCBSZWFjdCwge2NyZWF0ZUNvbnRleHQsIHVzZUNvbnRleHQsIHVzZUVmZmVjdCwgdXNlTWVtbywgdXNlUmVmfSBmcm9tIFwicmVhY3RcIlxuaW1wb3J0IHtBbmltYXRlZCwgUGxhdGZvcm0sIFByZXNzYWJsZSwgVmlld30gZnJvbSBcInJlYWN0LW5hdGl2ZVwiXG5pbXBvcnQgQmxvY2tpbmdPdmVybGF5IGZyb20gXCIuL2Jsb2NraW5nLW92ZXJsYXlcIlxuaW1wb3J0IENhcmQgZnJvbSBcIi4uL2Jvb3RzdHJhcC9jYXJkXCJcbmltcG9ydCBjbGFzc05hbWVzIGZyb20gXCJjbGFzc25hbWVzXCJcbmltcG9ydCBDb2xsZWN0aW9uIGZyb20gXCIuLi9jb2xsZWN0aW9uLmpzXCJcbmltcG9ydCBjb2x1bW5WaXNpYmxlIGZyb20gXCIuL2NvbHVtbi12aXNpYmxlLmpzXCJcbmltcG9ydCBkZWJvdW5jZSBmcm9tIFwiZGVib3VuY2VcIlxuaW1wb3J0IERyYWdnYWJsZVNvcnQgZnJvbSBcIi4uL2RyYWdnYWJsZS1zb3J0L2luZGV4XCJcbmltcG9ydCB7RXZlbnRFbWl0dGVyfSBmcm9tIFwiZXZlbnRlbWl0dGVyM1wiXG5pbXBvcnQgRmlsdGVycyBmcm9tIFwiLi9maWx0ZXJzL2luZGV4XCJcbmltcG9ydCBGbGF0TGlzdCBmcm9tIFwiLi9jb21wb25lbnRzL2ZsYXQtbGlzdFwiXG5pbXBvcnQge0Zvcm19IGZyb20gXCIuLi9mb3JtXCJcbmltcG9ydCBIZWFkZXIgZnJvbSBcIi4vY29tcG9uZW50cy9oZWFkZXJcIlxuaW1wb3J0IEhlYWRlckNvbHVtbiBmcm9tIFwiLi9oZWFkZXItY29sdW1uXCJcbmltcG9ydCBIZWFkZXJTZWxlY3QgZnJvbSBcIi4vaGVhZGVyLXNlbGVjdFwiXG5pbXBvcnQgSWNvbiBmcm9tIFwiLi4vdXRpbHMvaWNvblwiXG5pbXBvcnQge2luY29ycG9yYXRlfSBmcm9tIFwiaW5jb3Jwb3JhdG9yXCJcbmltcG9ydCAqIGFzIGluZmxlY3Rpb24gZnJvbSBcImluZmxlY3Rpb25cIlxuaW1wb3J0IG1lbW8gZnJvbSBcInNldC1zdGF0ZS1jb21wYXJlL2J1aWxkL21lbW8uanNcIlxuaW1wb3J0IG1vZGVsQ2xhc3NSZXF1aXJlIGZyb20gXCIuLi9tb2RlbC1jbGFzcy1yZXF1aXJlLmpzXCJcbmltcG9ydCBNb2RlbFJvdyBmcm9tIFwiLi9tb2RlbC1yb3dcIlxuaW1wb3J0IG1vdmVEcmFnZ2VkQ29sdW1uUG9zaXRpb24gZnJvbSBcIi4vbW92ZS1kcmFnZ2VkLWNvbHVtbi1wb3NpdGlvbi5qc1wiXG5pbXBvcnQgUGFnaW5hdGUgZnJvbSBcIi4uL2Jvb3RzdHJhcC9wYWdpbmF0ZVwiXG5pbXBvcnQgUGFyYW1zIGZyb20gXCIuLi9wYXJhbXMuanNcIlxuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiXG5pbXBvcnQgUm93IGZyb20gXCIuL2NvbXBvbmVudHMvcm93XCJcbmltcG9ydCBzZWxlY3RDYWxjdWxhdG9yIGZyb20gXCIuL3NlbGVjdC1jYWxjdWxhdG9yLmpzXCJcbmltcG9ydCBTZWxlY3QgZnJvbSBcIi4uL2lucHV0cy9zZWxlY3RcIlxuaW1wb3J0IFNldHRpbmdzIGZyb20gXCIuL3NldHRpbmdzL2luZGV4XCJcbmltcG9ydCB7U2hhcGVDb21wb25lbnQsIHNoYXBlQ29tcG9uZW50fSBmcm9tIFwic2V0LXN0YXRlLWNvbXBhcmUvYnVpbGQvc2hhcGUtY29tcG9uZW50LmpzXCJcbmltcG9ydCBzaG91bGRSZW5kZXJMb2FkaW5nQ29udGVudCBmcm9tIFwiLi9zaG91bGQtcmVuZGVyLWxvYWRpbmctY29udGVudC5qc1wiXG5pbXBvcnQgVGFibGVTZXR0aW5ncyBmcm9tIFwiLi90YWJsZS1zZXR0aW5ncy5qc1wiXG5pbXBvcnQgVGV4dCBmcm9tIFwiLi4vdXRpbHMvdGV4dFwiXG5pbXBvcnQgdW5pcXVuaXplIGZyb20gXCJ1bmlxdW5pemVcIlxuaW1wb3J0IHt1c2VCcmVha3BvaW50fSBmcm9tIFwicmVzcG9uc2l2ZS1icmVha3BvaW50c1wiXG5pbXBvcnQgdXNlQ29sbGVjdGlvbiBmcm9tIFwiLi4vdXNlLWNvbGxlY3Rpb24uanNcIlxuaW1wb3J0IHVzZUkxOG4gZnJvbSBcImkxOG4tb24tc3Rlcm9pZHMvYnVpbGQvc3JjL3VzZS1pMThuLmpzXCJcbmltcG9ydCB1c2VFdmVudEVtaXR0ZXIgZnJvbSBcInlhLXVzZS1ldmVudC1lbWl0dGVyXCJcbmltcG9ydCB1c2VNb2RlbEV2ZW50IGZyb20gXCIuLi91c2UtbW9kZWwtZXZlbnQuanNcIlxuaW1wb3J0IHVzZVF1ZXJ5UGFyYW1zIGZyb20gXCJvbi1sb2NhdGlvbi1jaGFuZ2VkL2J1aWxkL3VzZS1xdWVyeS1wYXJhbXMuanNcIlxuaW1wb3J0IFdpZHRocyBmcm9tIFwiLi93aWR0aHNcIlxuaW1wb3J0IFdvcmtlclBsdWdpbnNDaGVja0FsbENoZWNrYm94IGZyb20gXCIuL3dvcmtlci1wbHVnaW5zLWNoZWNrLWFsbC1jaGVja2JveFwiXG5cbi8qKlxuICogVGFibGUgY29tcG9uZW50IHdpdGggc29ydGFibGUsIHJlc2l6YWJsZSBjb2x1bW5zIGFuZCBvcHRpb25hbCBmaWx0ZXJzLlxuICovXG5jb25zdCBkYXRhU2V0cyA9IHt9XG5jb25zdCBwYWdpbmF0aW9uT3B0aW9ucyA9IFszMCwgNjAsIDkwLCBbXCJBbGxcIiwgXCJhbGxcIl1dXG5jb25zdCBzdHlsZXMgPSB7fVxuY29uc3QgVGFibGVDb250ZXh0ID0gY3JlYXRlQ29udGV4dCh1bmRlZmluZWQpXG5cbi8qKiBAdHlwZWRlZiB7aW1wb3J0KFwiLi4vYmFzZS1tb2RlbC5qc1wiKS5kZWZhdWx0fSBCYXNlTW9kZWwgKi9cbi8qKiBAdHlwZWRlZiB7aW1wb3J0KFwiLi4vcmVzdWx0LmpzXCIpLmRlZmF1bHR9IFRhYmxlUmVzdWx0ICovXG4vKiogQHR5cGVkZWYge2ltcG9ydChcIi4uL2NvbGxlY3Rpb24uanNcIikuUXVlcnlQYXJhbVZhbHVlTWFwfSBUYWJsZVF1ZXJ5UGFyYW1zICovXG4vKiogQHR5cGVkZWYge2ltcG9ydChcIi4uL3VzZS1jb2xsZWN0aW9uLmpzXCIpLlVzZUNvbGxlY3Rpb25RdWVyeU1ldGhvZH0gVGFibGVRdWVyeU1ldGhvZCAqL1xuLyoqIEB0eXBlZGVmIHtpbXBvcnQoXCIuL3dpZHRoc1wiKS5kZWZhdWx0fSBUYWJsZVdpZHRocyAqL1xuLyoqXG4gKiBAdHlwZWRlZiB7QmFzZU1vZGVsICYge1xuICogICBpZCgpOiBudW1iZXIgfCBzdHJpbmcsXG4gKiAgIG1vZGVsQ2xhc3NEYXRhKCk6IHtuYW1lOiBzdHJpbmd9LFxuICogICBjYWNoZUtleSgpOiBzdHJpbmcsXG4gKiAgIGNhbihuYW1lOiBzdHJpbmcpOiBib29sZWFuLFxuICogICBkZXN0cm95KCk6IFByb21pc2U8dm9pZD5cbiAqIH19IFRhYmxlTW9kZWxcbiAqL1xuLyoqIEB0eXBlZGVmIHt7bmFtZTogc3RyaW5nLCByZXNvdXJjZV9uYW1lOiBzdHJpbmd9fSBUYWJsZVJlbGF0aW9uc2hpcCAqL1xuLyoqIEB0eXBlZGVmIHt7Y29sbGVjdGlvbktleTogc3RyaW5nLCBuYW1lOiBzdHJpbmcsIHBhcmFtS2V5OiBzdHJpbmcsIHJlbGF0aW9uc2hpcHM6IFRhYmxlUmVsYXRpb25zaGlwW119fSBUYWJsZU1vZGVsQ2xhc3NEYXRhICovXG4vKiogQHR5cGVkZWYge3todW1hbihhcmdzOiB7Y291bnQ6IG51bWJlcn0pOiBzdHJpbmd9fSBIdW1hbk1vZGVsTmFtZSAqL1xuLyoqXG4gKiBAdHlwZWRlZiB7e1xuICogICBoYXNBdHRyaWJ1dGUobmFtZTogc3RyaW5nKTogYm9vbGVhbixcbiAqICAgaHVtYW5BdHRyaWJ1dGVOYW1lKG5hbWU6IHN0cmluZyk6IHN0cmluZyxcbiAqICAgbW9kZWxDbGFzc0RhdGEoKTogVGFibGVNb2RlbENsYXNzRGF0YSxcbiAqICAgbW9kZWxOYW1lKCk6IEh1bWFuTW9kZWxOYW1lLFxuICogICBwcmltYXJ5S2V5KCk6IHN0cmluZ1xuICogfX0gVGFibGVNb2RlbENsYXNzXG4gKi9cbi8qKiBAdHlwZWRlZiB7QmFzZU1vZGVsICYge2lkKCk6IG51bWJlciB8IHN0cmluZ319IEN1cnJlbnRVc2VyTW9kZWwgKi9cbi8qKiBAdHlwZWRlZiB7QmFzZU1vZGVsICYge2lkKCk6IG51bWJlciB8IHN0cmluZ319IFdvcmtwbGFjZU1vZGVsICovXG4vKipcbiAqIEB0eXBlZGVmIHt7XG4gKiAgIGF0dHJpYnV0ZT86IHN0cmluZyxcbiAqICAgY2xhc3NOYW1lPzogc3RyaW5nLFxuICogICBkZWZhdWx0VmlzaWJsZT86IGJvb2xlYW4sXG4gKiAgIGlkZW50aWZpZXI/OiBzdHJpbmcsXG4gKiAgIGxhYmVsPzogc3RyaW5nLFxuICogICBwYXRoPzogc3RyaW5nW10sXG4gKiAgIHNvcnRLZXk/OiBzdHJpbmdcbiAqIH19IFRhYmxlQ29sdW1uRGVmaW5pdGlvblxuICovXG4vKipcbiAqIEB0eXBlZGVmIHt7XG4gKiAgIGZ1bGxDYWNoZUtleSgpOiBzdHJpbmcsXG4gKiAgIGlkZW50aWZpZXIoKTogc3RyaW5nLFxuICogICBwb3NpdGlvbigpOiBudW1iZXIsXG4gKiAgIHNvcnRLZXkoKTogc3RyaW5nLFxuICogICB2aXNpYmxlKCk6IGJvb2xlYW4gfCBudWxsLFxuICogICB1cGRhdGUoYXJnczoge3Zpc2libGU/OiBib29sZWFuLCB3aWR0aD86IG51bWJlcn0pOiBQcm9taXNlPHZvaWQ+XG4gKiB9fSBUYWJsZVNldHRpbmdDb2x1bW5cbiAqL1xuLyoqIEB0eXBlZGVmIHt7ZnVsbENhY2hlS2V5KCk6IHN0cmluZ319IFRhYmxlU2V0dGluZ1JlY29yZCAqL1xuLyoqXG4gKiBAdHlwZWRlZiB7e1xuICogICBhbmltYXRlZFBvc2l0aW9uPzogaW1wb3J0KFwicmVhY3QtbmF0aXZlXCIpLkFuaW1hdGVkLlZhbHVlWFksXG4gKiAgIGFuaW1hdGVkV2lkdGg/OiBpbXBvcnQoXCJyZWFjdC1uYXRpdmVcIikuQW5pbWF0ZWQuVmFsdWUsXG4gKiAgIGFuaW1hdGVkWkluZGV4PzogaW1wb3J0KFwicmVhY3QtbmF0aXZlXCIpLkFuaW1hdGVkLlZhbHVlLFxuICogICBjb2x1bW46IFRhYmxlQ29sdW1uRGVmaW5pdGlvbixcbiAqICAgdGFibGVTZXR0aW5nQ29sdW1uOiBUYWJsZVNldHRpbmdDb2x1bW4sXG4gKiAgIHdpZHRoPzogbnVtYmVyXG4gKiB9fSBQcmVwYXJlZENvbHVtblxuICovXG4vKiogQHR5cGVkZWYge3thc09iamVjdCgpOiBUYWJsZVF1ZXJ5UGFyYW1zfX0gVGFibGVGaWx0ZXJGb3JtU3RhdGUgKi9cbi8qKiBAdHlwZWRlZiB7UmVjb3JkPHN0cmluZywgQmFzZU1vZGVsIHwgc3RyaW5nPn0gVGFibGVNb2RlbENhbGxiYWNrQXJncyAqL1xuLyoqIEB0eXBlZGVmIHt7bW9kZWxzPzogVGFibGVNb2RlbFtdLCBxUGFyYW1zPzogVGFibGVRdWVyeVBhcmFtcywgcXVlcnk/OiBDb2xsZWN0aW9uLCByZXN1bHQ/OiBUYWJsZVJlc3VsdH19IFRhYmxlUmVuZGVyQXJncyAqL1xuLyoqIEB0eXBlZGVmIHt7b25GaWx0ZXJDaGFuZ2VkOiAoKSA9PiB2b2lkLCBvbkZpbHRlckNoYW5nZWRXaXRoRGVsYXk6ICgpID0+IHZvaWQsIHFQYXJhbXM6IFRhYmxlUXVlcnlQYXJhbXMsIHF1ZXJ5UU5hbWU6IHN0cmluZ319IEZpbHRlckNvbnRlbnRBcmdzICovXG4vKiogQHR5cGVkZWYge3ttb2RlbHM6IFRhYmxlTW9kZWxbXSwgcVBhcmFtczogVGFibGVRdWVyeVBhcmFtcywgcXVlcnk6IENvbGxlY3Rpb24sIHJlc3VsdDogVGFibGVSZXN1bHR9fSBPbk1vZGVsc0xvYWRlZEFyZ3MgKi9cblxuLyoqIEB0eXBlZGVmIHtSZWNvcmQ8c3RyaW5nLCBuZXZlcj59IEhlYWRlclByb3BzICovXG4vKipcbiAqIEB0eXBlZGVmIHtvYmplY3R9IEhlYWRlclN0YXRlXG4gKiBAcHJvcGVydHkge0RhdGV9IGxhc3RVcGRhdGVcbiAqL1xuY29uc3QgTGlzdEhlYWRlckNvbXBvbmVudCA9IG1lbW8oc2hhcGVDb21wb25lbnQoLyoqIEBhdWdtZW50cyB7U2hhcGVDb21wb25lbnQ8SGVhZGVyUHJvcHMsIEhlYWRlclN0YXRlPn0gKi8gY2xhc3MgTGlzdEhlYWRlckNvbXBvbmVudCBleHRlbmRzIFNoYXBlQ29tcG9uZW50IHtcbiAgc3RhdGUgPSB7XG4gICAgbGFzdFVwZGF0ZTogbmV3IERhdGUoKVxuICB9XG5cbiAgc2V0dXAoKSB7fVxuXG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCB7bWRVcH0gPSB1c2VCcmVha3BvaW50KClcbiAgICBjb25zdCB0YWJsZUNvbnRleHRWYWx1ZSA9IHVzZUNvbnRleHQoVGFibGVDb250ZXh0KVxuICAgIGNvbnN0IHRhYmxlID0gdGFibGVDb250ZXh0VmFsdWUudGFibGVcbiAgICBjb25zdCB7Y29sbGVjdGlvbiwgZXZlbnRzLCBxdWVyeVdpdGhvdXRQYWdpbmF0aW9uLCB0fSA9IHRhYmxlLnR0XG4gICAgY29uc3Qge3F1ZXJ5fSA9IGRpZ3MoY29sbGVjdGlvbiwgXCJxdWVyeVwiKVxuXG4gICAgdXNlRXZlbnRFbWl0dGVyKGV2ZW50cywgXCJjb2x1bW5WaXNpYmlsaXR5VXBkYXRlZFwiLCB0aGlzLnR0Lm9uQ29sdW1uVmlzaWJpbGl0eVVwZGF0ZWQpXG5cbiAgICByZXR1cm4gKFxuICAgICAgPFJvdyBzdHlsZT17dGFibGUuc3R5bGVGb3JSb3dIZWFkZXIoKX0gdGVzdElEPVwiYXBpLW1ha2VyL3RhYmxlL2hlYWRlci1yb3dcIj5cbiAgICAgICAge3RhYmxlLnAud29ya3BsYWNlICYmIHRhYmxlLnMuY3VycmVudFdvcmtwbGFjZSAmJlxuICAgICAgICAgIDxIZWFkZXIgc3R5bGU9e3RhYmxlLnN0eWxlRm9ySGVhZGVyKHtzdHlsZToge3dpZHRoOiBtZFVwID8gNDEgOiB1bmRlZmluZWR9fSl9PlxuICAgICAgICAgICAgPFdvcmtlclBsdWdpbnNDaGVja0FsbENoZWNrYm94XG4gICAgICAgICAgICAgIGN1cnJlbnRXb3JrcGxhY2U9e3RhYmxlLnMuY3VycmVudFdvcmtwbGFjZX1cbiAgICAgICAgICAgICAgcXVlcnk9e3F1ZXJ5V2l0aG91dFBhZ2luYXRpb259XG4gICAgICAgICAgICAgIHN0eWxlPXtzdHlsZXMud29ya2VyUGxndWluc0NoZWNrQWxsQ2hlY2tib3hTdHlsZSB8fD0ge21hcmdpbkhvcml6b250YWw6IFwiYXV0b1wifX1cbiAgICAgICAgICAgICAgdGFibGU9e3RhYmxlfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIHshbWRVcCAmJlxuICAgICAgICAgICAgICA8VGV4dCBzdHlsZT17c3R5bGVzLnNlbGVjdEFsbEZvdW5kVGV4dFN0eWxlIHx8PSB7bWFyZ2luTGVmdDogM319PlxuICAgICAgICAgICAgICAgIHt0KFwiLnNlbGVjdF9hbGxfZm91bmRcIiwge2RlZmF1bHRWYWx1ZTogXCJTZWxlY3QgYWxsIGZvdW5kXCJ9KX1cbiAgICAgICAgICAgICAgPC9UZXh0PlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvSGVhZGVyPlxuICAgICAgICB9XG4gICAgICAgIHshbWRVcCAmJlxuICAgICAgICAgIDxIZWFkZXIgc3R5bGU9e3RhYmxlLnN0eWxlRm9ySGVhZGVyKHtzdHlsZToge319KX0+XG4gICAgICAgICAgICA8SGVhZGVyU2VsZWN0IHByZXBhcmVkQ29sdW1ucz17dGFibGUucy5wcmVwYXJlZENvbHVtbnN9IHF1ZXJ5PXtxdWVyeX0gdGFibGU9e3RhYmxlfSAvPlxuICAgICAgICAgIDwvSGVhZGVyPlxuICAgICAgICB9XG4gICAgICAgIHttZFVwICYmXG4gICAgICAgICAgPD5cbiAgICAgICAgICAgIHt0YWJsZS5oZWFkZXJzQ29udGVudEZyb21Db2x1bW5zKCl9XG4gICAgICAgICAgICA8SGVhZGVyIHN0eWxlPXt0YWJsZS5zdHlsZUZvckhlYWRlcih7c3R5bGU6IHt9LCB0eXBlOiBcImFjdGlvbnNcIn0pfSAvPlxuICAgICAgICAgIDwvPlxuICAgICAgICB9XG4gICAgICA8L1Jvdz5cbiAgICApXG4gIH1cblxuICBvbkNvbHVtblZpc2liaWxpdHlVcGRhdGVkID0gKCkgPT4ge1xuICAgIHRoaXMucy5sYXN0VXBkYXRlID0gbmV3IERhdGUoKVxuICB9XG59KSlcblxuLyoqXG4gKiBAdHlwZWRlZiB7b2JqZWN0fSBQcm9wc1xuICogQHByb3BlcnR5IHtSZWNvcmQ8c3RyaW5nLCBzdHJpbmdbXT59IFthYmlsaXRpZXNdXG4gKiBAcHJvcGVydHkgeyhhcmdzOiBUYWJsZU1vZGVsQ2FsbGJhY2tBcmdzKSA9PiBpbXBvcnQoXCJyZWFjdFwiKS5SZWFjdE5vZGV9IFthY3Rpb25zQ29udGVudF1cbiAqIEBwcm9wZXJ0eSB7e3B1c2g/OiAocGF0aDogc3RyaW5nKSA9PiB2b2lkfX0gW2FwcEhpc3RvcnldXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IFtjYXJkXVxuICogQHByb3BlcnR5IHtzdHJpbmd9IFtjbGFzc05hbWVdXG4gKiBAcHJvcGVydHkge0NvbGxlY3Rpb259IFtjb2xsZWN0aW9uXVxuICogQHByb3BlcnR5IHtUYWJsZUNvbHVtbkRlZmluaXRpb25bXSB8ICgoKSA9PiBUYWJsZUNvbHVtbkRlZmluaXRpb25bXSl9IFtjb2x1bW5zXVxuICogQHByb3BlcnR5IHsoYXJnczogVGFibGVSZW5kZXJBcmdzKSA9PiBpbXBvcnQoXCJyZWFjdFwiKS5SZWFjdE5vZGV9IFtjb250cm9sc11cbiAqIEBwcm9wZXJ0eSB7Q3VycmVudFVzZXJNb2RlbCB8IG51bGx9IFtjdXJyZW50VXNlcl1cbiAqIEBwcm9wZXJ0eSB7KCh2YWx1ZTogRGF0ZSB8IG51bWJlciB8IHN0cmluZykgPT4gc3RyaW5nKSB8IHN0cmluZ30gW2RlZmF1bHREYXRlRm9ybWF0TmFtZV1cbiAqIEBwcm9wZXJ0eSB7KCh2YWx1ZTogRGF0ZSB8IG51bWJlciB8IHN0cmluZykgPT4gc3RyaW5nKSB8IHN0cmluZ30gW2RlZmF1bHREYXRlVGltZUZvcm1hdE5hbWVdXG4gKiBAcHJvcGVydHkge1RhYmxlUXVlcnlQYXJhbXN9IFtkZWZhdWx0UGFyYW1zXVxuICogQHByb3BlcnR5IHtib29sZWFufSBbZGVzdHJveUVuYWJsZWRdXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW2Rlc3Ryb3lNZXNzYWdlXVxuICogQHByb3BlcnR5IHtpbXBvcnQoXCJyZWFjdC1uYXRpdmVcIikuU3R5bGVQcm9wPGltcG9ydChcInJlYWN0LW5hdGl2ZVwiKS5WaWV3U3R5bGU+fSBbZHJhZ2dlZEhlYWRlclN0eWxlXVxuICogQHByb3BlcnR5IHsoYXJnczogVGFibGVNb2RlbENhbGxiYWNrQXJncykgPT4gc3RyaW5nfSBbZWRpdE1vZGVsUGF0aF1cbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gW2ZpbHRlckNhcmRdXG4gKiBAcHJvcGVydHkgeyhhcmdzOiBGaWx0ZXJDb250ZW50QXJncykgPT4gaW1wb3J0KFwicmVhY3RcIikuUmVhY3ROb2RlfSBbZmlsdGVyQ29udGVudF1cbiAqIEBwcm9wZXJ0eSB7bnVtYmVyIHwgc3RyaW5nIHwgc3RyaW5nW119IFtmaWx0ZXJTdWJtaXRMYWJlbF1cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nW119IFtncm91cEJ5XVxuICogQHByb3BlcnR5IHsoKGFyZ3M6IFRhYmxlUmVuZGVyQXJncykgPT4gaW1wb3J0KFwicmVhY3RcIikuUmVhY3ROb2RlKSB8IHN0cmluZ30gW2hlYWRlcl1cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBbaWRlbnRpZmllcl1cbiAqIEBwcm9wZXJ0eSB7VGFibGVNb2RlbENsYXNzfSBtb2RlbENsYXNzXG4gKiBAcHJvcGVydHkgeyhhcmdzOiBUYWJsZVJlbmRlckFyZ3MpID0+IGltcG9ydChcInJlYWN0XCIpLlJlYWN0Tm9kZX0gW25vUmVjb3Jkc0F2YWlsYWJsZUNvbnRlbnRdXG4gKiBAcHJvcGVydHkgeyhhcmdzOiBUYWJsZVJlbmRlckFyZ3MpID0+IGltcG9ydChcInJlYWN0XCIpLlJlYWN0Tm9kZX0gW25vUmVjb3Jkc0ZvdW5kQ29udGVudF1cbiAqIEBwcm9wZXJ0eSB7KGFyZ3M6IE9uTW9kZWxzTG9hZGVkQXJncykgPT4gdm9pZH0gW29uTW9kZWxzTG9hZGVkXVxuICogQHByb3BlcnR5IHsoYXJnczoge3Jlc3VsdDogVGFibGVSZXN1bHR9KSA9PiBpbXBvcnQoXCJyZWFjdFwiKS5SZWFjdE5vZGV9IFtwYWdpbmF0ZUNvbnRlbnRdXG4gKiBAcHJvcGVydHkge2ltcG9ydChcInJlYWN0XCIpLkNvbXBvbmVudFR5cGU8e3Jlc3VsdDogVGFibGVSZXN1bHR9Pn0gW3BhZ2luYXRpb25Db21wb25lbnRdXG4gKiBAcHJvcGVydHkge3N0cmluZ1tdfSBbcHJlbG9hZHNdXG4gKiBAcHJvcGVydHkge1RhYmxlUXVlcnlNZXRob2R9IFtxdWVyeU1ldGhvZF1cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBbcXVlcnlOYW1lXVxuICogQHByb3BlcnR5IHtSZWNvcmQ8c3RyaW5nLCBzdHJpbmdbXT59IFtzZWxlY3RdXG4gKiBAcHJvcGVydHkge1JlY29yZDxzdHJpbmcsIHN0cmluZ1tdPn0gW3NlbGVjdENvbHVtbnNdXG4gKiBAcHJvcGVydHkge3tjb250YWluZXI/OiBpbXBvcnQoXCJyZWFjdC1uYXRpdmVcIikuU3R5bGVQcm9wPGltcG9ydChcInJlYWN0LW5hdGl2ZVwiKS5WaWV3U3R5bGU+fX0gW3N0eWxlc11cbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gW3N0eWxlVUldXG4gKiBAcHJvcGVydHkgeyhhcmdzOiBUYWJsZU1vZGVsQ2FsbGJhY2tBcmdzKSA9PiBzdHJpbmd9IFt2aWV3TW9kZWxQYXRoXVxuICogQHByb3BlcnR5IHtib29sZWFufSBbd29ya3BsYWNlXVxuICovXG4vKipcbiAqIEB0eXBlZGVmIHtvYmplY3R9IFN0YXRlXG4gKiBAcHJvcGVydHkge1ByZXBhcmVkQ29sdW1uW119IGNvbHVtbnNcbiAqIEBwcm9wZXJ0eSB7UHJlcGFyZWRDb2x1bW5bXSB8IG51bGx9IGNvbHVtbnNUb1Nob3dcbiAqIEBwcm9wZXJ0eSB7V29ya3BsYWNlTW9kZWwgfCB1bmRlZmluZWR9IGN1cnJlbnRXb3JrcGxhY2VcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyIHwgbnVsbH0gY3VycmVudFdvcmtwbGFjZUNvdW50XG4gKiBAcHJvcGVydHkge1ByZXBhcmVkQ29sdW1uIHwgbnVsbH0gZHJhZ2dlZENvbHVtblxuICogQHByb3BlcnR5IHtUYWJsZUZpbHRlckZvcm1TdGF0ZSB8IG51bGx9IGZpbHRlckZvcm1cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBpZGVudGlmaWVyXG4gKiBAcHJvcGVydHkge0RhdGV9IGxhc3RVcGRhdGVcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nW10gfCB1bmRlZmluZWR9IHByZWxvYWRcbiAqIEBwcm9wZXJ0eSB7UHJlcGFyZWRDb2x1bW5bXSB8IHVuZGVmaW5lZH0gcHJlcGFyZWRDb2x1bW5zXG4gKiBAcHJvcGVydHkge3N0cmluZ30gcXVlcnlOYW1lXG4gKiBAcHJvcGVydHkge3N0cmluZ30gcXVlcnlQYWdlTmFtZVxuICogQHByb3BlcnR5IHtzdHJpbmd9IHF1ZXJ5UU5hbWVcbiAgKiBAcHJvcGVydHkge3N0cmluZ30gcXVlcnlTTmFtZVxuICAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gcmVzaXppbmdcbiAgKiBAcHJvcGVydHkge2Jvb2xlYW59IHNob3dGaWx0ZXJzXG4gICogQHByb3BlcnR5IHtib29sZWFufSBzaG93U2V0dGluZ3NcbiAqIEBwcm9wZXJ0eSB7VGFibGVTZXR0aW5nUmVjb3JkIHwgdW5kZWZpbmVkfSB0YWJsZVNldHRpbmdcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nIHwgdW5kZWZpbmVkfSB0YWJsZVNldHRpbmdGdWxsQ2FjaGVLZXlcbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gdGFibGVTZXR0aW5nTG9hZGVkXG4gKiBAcHJvcGVydHkge251bWJlciB8IHVuZGVmaW5lZH0gd2lkdGhcbiAqIEBwcm9wZXJ0eSB7VGFibGVXaWR0aHMgfCBudWxsfSB3aWR0aHNcbiAqL1xuZXhwb3J0IGRlZmF1bHQgbWVtbyhzaGFwZUNvbXBvbmVudCgvKiogQGF1Z21lbnRzIHtTaGFwZUNvbXBvbmVudDxQcm9wcywgU3RhdGU+fSAqLyBjbGFzcyBBcGlNYWtlclRhYmxlIGV4dGVuZHMgU2hhcGVDb21wb25lbnQge1xuICAvKipcbiAgICogQHBhcmFtIHtvYmplY3R9IHByb3BzXG4gICAqL1xuICBzdGF0aWMgZGVmYXVsdFByb3BzID0ge1xuICAgIGNhcmQ6IHRydWUsXG4gICAgY3VycmVudFVzZXI6IG51bGwsXG4gICAgZGVzdHJveUVuYWJsZWQ6IHRydWUsXG4gICAgZHJhZ2dlZEhlYWRlclN0eWxlOiB1bmRlZmluZWQsXG4gICAgZmlsdGVyQ2FyZDogdHJ1ZSxcbiAgICBmaWx0ZXJTdWJtaXRCdXR0b246IHRydWUsXG4gICAgbm9SZWNvcmRzQXZhaWxhYmxlQ29udGVudDogdW5kZWZpbmVkLFxuICAgIG5vUmVjb3Jkc0ZvdW5kQ29udGVudDogdW5kZWZpbmVkLFxuICAgIHByZWxvYWRzOiBbXSxcbiAgICBzZWxlY3Q6IHt9LFxuICAgIHN0eWxlVUk6IHRydWUsXG4gICAgd29ya3BsYWNlOiBmYWxzZVxuICB9XG5cbiAgc3RhdGljIHByb3BUeXBlcyA9IHtcbiAgICBhYmlsaXRpZXM6IFByb3BUeXBlcy5vYmplY3QsXG4gICAgYWN0aW9uc0NvbnRlbnQ6IFByb3BUeXBlcy5mdW5jLFxuICAgIGFwcEhpc3Rvcnk6IFByb3BUeXBlcy5vYmplY3QsXG4gICAgY2FyZDogUHJvcFR5cGVzLmJvb2wsXG4gICAgY2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIGNvbGxlY3Rpb246IFByb3BUeXBlcy5pbnN0YW5jZU9mKENvbGxlY3Rpb24pLFxuICAgIGNvbHVtbnM6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5hcnJheSwgUHJvcFR5cGVzLmZ1bmNdKSxcbiAgICBjb250cm9sczogUHJvcFR5cGVzLmZ1bmMsXG4gICAgY3VycmVudFVzZXI6IFByb3BUeXBlcy5vYmplY3QsXG4gICAgZGVmYXVsdERhdGVGb3JtYXROYW1lOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuZnVuYywgUHJvcFR5cGVzLnN0cmluZ10pLFxuICAgIGRlZmF1bHREYXRlVGltZUZvcm1hdE5hbWU6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5mdW5jLCBQcm9wVHlwZXMuc3RyaW5nXSksXG4gICAgZGVmYXVsdFBhcmFtczogUHJvcFR5cGVzLm9iamVjdCxcbiAgICBkZXN0cm95RW5hYmxlZDogUHJvcFR5cGVzLmJvb2wsXG4gICAgZGVzdHJveU1lc3NhZ2U6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgZHJhZ2dlZEhlYWRlclN0eWxlOiBQcm9wVHlwZXMub2JqZWN0LFxuICAgIGVkaXRNb2RlbFBhdGg6IFByb3BUeXBlcy5mdW5jLFxuICAgIGZpbHRlckNhcmQ6IFByb3BUeXBlcy5ib29sLFxuICAgIGZpbHRlckNvbnRlbnQ6IFByb3BUeXBlcy5mdW5jLFxuICAgIGZpbHRlclN1Ym1pdExhYmVsOiBQcm9wVHlwZXMuYW55LFxuICAgIGdyb3VwQnk6IFByb3BUeXBlcy5hcnJheSxcbiAgICBoZWFkZXI6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5mdW5jLCBQcm9wVHlwZXMuc3RyaW5nXSksXG4gICAgaWRlbnRpZmllcjogUHJvcFR5cGVzLnN0cmluZyxcbiAgICBtb2RlbENsYXNzOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICAgIG5vUmVjb3Jkc0F2YWlsYWJsZUNvbnRlbnQ6IFByb3BUeXBlcy5mdW5jLFxuICAgIG5vUmVjb3Jkc0ZvdW5kQ29udGVudDogUHJvcFR5cGVzLmZ1bmMsXG4gICAgb25Nb2RlbHNMb2FkZWQ6IFByb3BUeXBlcy5mdW5jLFxuICAgIHBhZ2luYXRlQ29udGVudDogUHJvcFR5cGVzLmZ1bmMsXG4gICAgcGFnaW5hdGlvbkNvbXBvbmVudDogUHJvcFR5cGVzLmVsZW1lbnRUeXBlLFxuICAgIHByZWxvYWRzOiBQcm9wVHlwZXMuYXJyYXksXG4gICAgcXVlcnlNZXRob2Q6IFByb3BUeXBlcy5mdW5jLFxuICAgIHF1ZXJ5TmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgICBzZWxlY3Q6IFByb3BUeXBlcy5vYmplY3QsXG4gICAgc2VsZWN0Q29sdW1uczogUHJvcFR5cGVzLm9iamVjdCxcbiAgICBzdHlsZXM6IFByb3BUeXBlcy5vYmplY3QsXG4gICAgc3R5bGVVSTogUHJvcFR5cGVzLmJvb2wsXG4gICAgdmlld01vZGVsUGF0aDogUHJvcFR5cGVzLmZ1bmMsXG4gICAgd29ya3BsYWNlOiBQcm9wVHlwZXMuYm9vbFxuICB9XG5cbiAgZHJhZ2dhYmxlU29ydEV2ZW50cyA9IG5ldyBFdmVudEVtaXR0ZXIoKVxuICBldmVudHMgPSBuZXcgRXZlbnRFbWl0dGVyKClcbiAgY3VycmVudFdvcmtwbGFjZUxvYWRSZXF1ZXN0SWQgPSAwXG4gIGN1cnJlbnRXb3JrcGxhY2VDb3VudFJlcXVlc3RJZCA9IDBcbiAgdGFibGVTZXR0aW5nTG9hZFJlcXVlc3RJZCA9IDBcbiAgdGFibGVTZXR0aW5ncyA9IG51bGxcbiAgYmxvY2tpbmdDb3VudCA9IDBcblxuICAvKipcbiAgICogUnVucyB0aGUgZ2l2ZW4gYXN5bmMgZnVuY3Rpb24gd2hpbGUgc2hvd2luZyB0aGUgdGFibGUncyBibG9ja2luZyBvdmVybGF5LFxuICAgKiBwcmV2ZW50aW5nIHRoZSB1c2VyIGZyb20gc3RhcnRpbmcgYSBzZWNvbmQgaGVhdnkgYWN0aW9uIChzZWxlY3QgYWxsLFxuICAgKiBkZXNlbGVjdCBhbGwsIHBlci1yb3cgZGVzdHJveSwgLi4uKSB3aGlsZSB0aGUgZmlyc3QgaXMgaW4gZmxpZ2h0LlxuICAgKlxuICAgKiBSZS1lbnRyYW50IOKAlCBuZXN0ZWQgb3Igb3ZlcmxhcHBpbmcgY2FsbHMga2VlcCB0aGUgb3ZlcmxheSBzaG93biB1bnRpbCB0aGVcbiAgICogb3V0ZXJtb3N0IGNhbGwgcmVzb2x2ZXMuXG4gICAqXG4gICAqIEVtaXRzIHRoZSBcImJsb2NraW5nXCIgZXZlbnRzIHZpYSBgcXVldWVNaWNyb3Rhc2tgIHNvIHRoZSBvdmVybGF5J3NcbiAgICogc3Vic2NyaXB0aW9uIGhhcyBjb21taXR0ZWQgYmVmb3JlIHRoZSBmaXJzdCBldmVudCBmaXJlcyDigJQgb3RoZXJ3aXNlIGFcbiAgICogaGVhdnkgYWN0aW9uIGtpY2tlZCBvZmYgZnJvbSBhIHNpYmxpbmcgY29tcG9uZW50J3MgYHNldHVwKClgIChlLmcuIHRoZVxuICAgKiBjaGVjay1hbGwgY2hlY2tib3gncyBpbml0aWFsIGB1cGRhdGVBbGxDaGVja2VkYCkgY2FuIGVtaXQgYmVmb3JlIHRoZVxuICAgKiBvdmVybGF5IG1vdW50cywgYW5kIHRoZSBpbml0aWFsIHRyYW5zaXRpb24gdG8gYmxvY2tpbmcgaXMgbG9zdC5cbiAgICpcbiAgICogQHRlbXBsYXRlIFRcbiAgICogQHBhcmFtIHsoKSA9PiBQcm9taXNlPFQ+fSBmblxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxUPn1cbiAgICovXG4gIHdpdGhCbG9ja2luZyA9IGFzeW5jIChmbikgPT4ge1xuICAgIHRoaXMuYmxvY2tpbmdDb3VudCArPSAxXG4gICAgaWYgKHRoaXMuYmxvY2tpbmdDb3VudCA9PT0gMSkgcXVldWVNaWNyb3Rhc2soKCkgPT4gdGhpcy5ldmVudHMuZW1pdChcImJsb2NraW5nXCIsIHRydWUpKVxuXG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBhd2FpdCBmbigpXG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMuYmxvY2tpbmdDb3VudCAtPSAxXG4gICAgICBpZiAodGhpcy5ibG9ja2luZ0NvdW50ID09PSAwKSBxdWV1ZU1pY3JvdGFzaygoKSA9PiB0aGlzLmV2ZW50cy5lbWl0KFwiYmxvY2tpbmdcIiwgZmFsc2UpKVxuICAgIH1cbiAgfVxuICBzdGF0ZSA9IHtcbiAgICBjb2x1bW5zOiB0aGlzLmNvbHVtbnNBc0FycmF5KCksXG4gICAgY3VycmVudFdvcmtwbGFjZTogdW5kZWZpbmVkLFxuICAgIGN1cnJlbnRXb3JrcGxhY2VDb3VudDogbnVsbCxcbiAgICBmaWx0ZXJGb3JtOiBudWxsLFxuICAgIGNvbHVtbnNUb1Nob3c6IG51bGwsXG4gICAgZHJhZ2dlZENvbHVtbjogbnVsbCxcbiAgICBpZGVudGlmaWVyOiB0aGlzLnByb3BzLmlkZW50aWZpZXIgfHwgYCR7ZGlnZyh0aGlzLnAubW9kZWxDbGFzcy5tb2RlbENsYXNzRGF0YSgpLCBcImNvbGxlY3Rpb25LZXlcIil9LWRlZmF1bHRgLFxuICAgIGxhc3RVcGRhdGU6IG5ldyBEYXRlKCksXG4gICAgcHJlbG9hZDogdW5kZWZpbmVkLFxuICAgIHByZXBhcmVkQ29sdW1uczogdW5kZWZpbmVkLFxuICAgIHF1ZXJ5TmFtZTogdGhpcy5wcm9wcy5xdWVyeU5hbWUgfHwgZGlnZyh0aGlzLnAubW9kZWxDbGFzcy5tb2RlbENsYXNzRGF0YSgpLCBcImNvbGxlY3Rpb25LZXlcIiksXG4gICAgcXVlcnlRTmFtZTogYCR7dGhpcy5wcm9wcy5xdWVyeU5hbWUgfHwgZGlnZyh0aGlzLnAubW9kZWxDbGFzcy5tb2RlbENsYXNzRGF0YSgpLCBcImNvbGxlY3Rpb25LZXlcIil9X3FgLFxuICAgIHF1ZXJ5UGFnZU5hbWU6IGAke3RoaXMucHJvcHMucXVlcnlOYW1lIHx8IGRpZ2codGhpcy5wLm1vZGVsQ2xhc3MubW9kZWxDbGFzc0RhdGEoKSwgXCJjb2xsZWN0aW9uS2V5XCIpfV9wYWdlYCxcbiAgICBxdWVyeVNOYW1lOiBgJHt0aGlzLnByb3BzLnF1ZXJ5TmFtZSB8fCBkaWdnKHRoaXMucC5tb2RlbENsYXNzLm1vZGVsQ2xhc3NEYXRhKCksIFwiY29sbGVjdGlvbktleVwiKX1fc2AsXG4gICAgcmVzaXppbmc6IGZhbHNlLFxuICAgIHNob3dGaWx0ZXJzOiBCb29sZWFuKFBhcmFtcy5wYXJzZSgpW2Ake3RoaXMucHJvcHMucXVlcnlOYW1lIHx8IGRpZ2codGhpcy5wLm1vZGVsQ2xhc3MubW9kZWxDbGFzc0RhdGEoKSwgXCJjb2xsZWN0aW9uS2V5XCIpfV9zYF0pLFxuICAgIHNob3dTZXR0aW5nczogZmFsc2UsXG4gICAgdGFibGVTZXR0aW5nOiB1bmRlZmluZWQsXG4gICAgdGFibGVTZXR0aW5nTG9hZGVkOiBmYWxzZSxcbiAgICB0YWJsZVNldHRpbmdGdWxsQ2FjaGVLZXk6IHVuZGVmaW5lZCxcbiAgICB3aWR0aDogdW5kZWZpbmVkLFxuICAgIHdpZHRoczogbnVsbFxuICB9XG5cbiAgc2V0dXAoKSB7XG4gICAgY29uc3Qge3R9ID0gdXNlSTE4bih7bmFtZXNwYWNlOiBcImpzLmFwaV9tYWtlci50YWJsZVwifSlcbiAgICBjb25zdCB7bmFtZTogYnJlYWtwb2ludCwgbWRVcH0gPSB1c2VCcmVha3BvaW50KClcbiAgICBjb25zdCBxdWVyeVBhcmFtcyA9IHVzZVF1ZXJ5UGFyYW1zKClcblxuICAgIHRoaXMuYnJlYWtwb2ludCA9IGJyZWFrcG9pbnRcbiAgICB0aGlzLmZpbHRlckZvcm1SZWYgPSB1c2VSZWYodW5kZWZpbmVkKVxuICAgIHRoaXMubWRVcCA9IG1kVXBcbiAgICB0aGlzLnQgPSB0XG5cbiAgICBjb25zdCBjb2xsZWN0aW9uS2V5ID0gZGlnZyh0aGlzLnAubW9kZWxDbGFzcy5tb2RlbENsYXNzRGF0YSgpLCBcImNvbGxlY3Rpb25LZXlcIilcbiAgICBsZXQgcXVlcnlOYW1lID0gdGhpcy5wcm9wcy5xdWVyeU5hbWVcblxuICAgIGlmICghcXVlcnlOYW1lKSBxdWVyeU5hbWUgPSBjb2xsZWN0aW9uS2V5XG5cbiAgICBjb25zdCBxdWVyeVNOYW1lID0gYCR7cXVlcnlOYW1lfV9zYFxuXG4gICAgaWYgKHRoaXMucy5xdWVyeU5hbWUgIT0gcXVlcnlOYW1lIHx8IHRoaXMucy5xdWVyeVNOYW1lICE9IHF1ZXJ5U05hbWUpIHtcbiAgICAgIHRoaXMucy5xdWVyeU5hbWUgPSBxdWVyeU5hbWVcbiAgICAgIHRoaXMucy5xdWVyeVFOYW1lID0gYCR7cXVlcnlOYW1lfV9xYFxuICAgICAgdGhpcy5zLnF1ZXJ5UGFnZU5hbWUgPSBgJHtxdWVyeU5hbWV9X3BhZ2VgXG4gICAgICB0aGlzLnMucXVlcnlTTmFtZSA9IHF1ZXJ5U05hbWVcbiAgICAgIHRoaXMucy5zaG93RmlsdGVycyA9IEJvb2xlYW4ocXVlcnlQYXJhbXNbcXVlcnlTTmFtZV0pXG4gICAgfVxuXG4gICAgdGhpcy50YWJsZUNvbnRleHRWYWx1ZSA9IHVzZU1lbW8oXG4gICAgICAoKSA9PiAoe1xuICAgICAgICBjYWNoZUtleTogdGhpcy5zLnRhYmxlU2V0dGluZ0Z1bGxDYWNoZUtleSxcbiAgICAgICAgbGFzdFVwZGF0ZTogdGhpcy5zLmxhc3RVcGRhdGUsXG4gICAgICAgIHJlc2l6aW5nOiB0aGlzLnMucmVzaXppbmcsXG4gICAgICAgIHRhYmxlOiB0aGlzXG4gICAgICB9KSxcbiAgICAgIFt0aGlzLnMubGFzdFVwZGF0ZSwgdGhpcy5zLnJlc2l6aW5nLCB0aGlzLnMudGFibGVTZXR0aW5nRnVsbENhY2hlS2V5XVxuICAgIClcblxuICAgIC8vIFRhYmxlIGJvb3RzdHJhcHBpbmcgc2hvdWxkIHN0YXJ0IGFmdGVyIG1vdW50IHNvIGZhc3QgYXN5bmMgY29tcGxldGlvbnMgY2Fubm90IGxhbmQgYmVmb3JlIFNoYXBlQ29tcG9uZW50IGlzIHJlYWR5LlxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5wcm9wcy53b3JrcGxhY2UpIHtcbiAgICAgICAgdGhpcy5sb2FkQ3VycmVudFdvcmtwbGFjZSgpXG4gICAgICB9XG5cbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIHRoaXMuY3VycmVudFdvcmtwbGFjZUxvYWRSZXF1ZXN0SWQgKz0gMVxuICAgICAgfVxuICAgIH0sIFt0aGlzLnAuY3VycmVudFVzZXI/LmlkKCksIHRoaXMucC5tb2RlbENsYXNzXSlcblxuICAgIC8vIExvYWQgdGFibGUgc2V0dGluZ3MgYWZ0ZXIgbW91bnQgZm9yIHRoZSBzYW1lIHJlYXNvbiBhcyBjb2xsZWN0aW9uL21vZGVsIGhvb2tzOiBhdm9pZCBwcmUtbW91bnQgc3RhdGUgd3JpdGVzLlxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAvLyBBbHdheXMgYm9vdHN0cmFwIHRhYmxlIHNldHRpbmdzIGZyb20gdGhlIG1vdW50ZWQgZWZmZWN0IHNvIGRpc2NhcmRlZCBwcmUtbW91bnQgcnVucyBjYW5ub3Qgc3RyYW5kIHRoZSB0YWJsZS5cbiAgICAgIHRoaXMubG9hZFRhYmxlU2V0dGluZygpXG5cbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIHRoaXMudGFibGVTZXR0aW5nTG9hZFJlcXVlc3RJZCArPSAxXG4gICAgICB9XG4gICAgfSwgW3RoaXMucC5jdXJyZW50VXNlcj8uaWQoKSwgdGhpcy5wLm1vZGVsQ2xhc3NdKVxuXG4gICAgdXNlTW9kZWxFdmVudCh0aGlzLnMuY3VycmVudFdvcmtwbGFjZSwgXCJ3b3JrcGxhY2VfbGlua3NfY3JlYXRlZFwiLCB0aGlzLnR0Lm9uTGlua3NDcmVhdGVkKVxuICAgIHVzZU1vZGVsRXZlbnQodGhpcy5zLmN1cnJlbnRXb3JrcGxhY2UsIFwid29ya3BsYWNlX2xpbmtzX2Rlc3Ryb3llZFwiLCB0aGlzLnR0Lm9uTGlua3NEZXN0cm95ZWQpXG5cbiAgICBsZXQgY29sbGVjdGlvblJlYWR5ID0gdHJ1ZVxuICAgIGxldCBzZWxlY3RcblxuICAgIGlmICghdGhpcy5zLnByZXBhcmVkQ29sdW1ucykge1xuICAgICAgY29sbGVjdGlvblJlYWR5ID0gZmFsc2VcbiAgICB9XG5cbiAgICBpZiAoY29sbGVjdGlvblJlYWR5KSB7XG4gICAgICBzZWxlY3QgPSBzZWxlY3RDYWxjdWxhdG9yKHtcbiAgICAgICAgdGFibGU6IHtcbiAgICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgbW9kZWxDbGFzczogdGhpcy5wLm1vZGVsQ2xhc3MsXG4gICAgICAgICAgICBzZWxlY3Q6IHRoaXMucC5zZWxlY3RcbiAgICAgICAgICB9LFxuICAgICAgICAgIHN0YXRlOiB7XG4gICAgICAgICAgICBwcmVwYXJlZENvbHVtbnM6IHRoaXMucy5wcmVwYXJlZENvbHVtbnMgfHwgW11cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfVxuXG4gICAgdGhpcy5jb2xsZWN0aW9uID0gdXNlQ29sbGVjdGlvbih7XG4gICAgICBhYmlsaXRpZXM6IHRoaXMuYWJpbGl0aWVzVG9Mb2FkKCksXG4gICAgICBkZWZhdWx0UGFyYW1zOiB0aGlzLnByb3BzLmRlZmF1bHRQYXJhbXMsXG4gICAgICBjb2xsZWN0aW9uOiB0aGlzLnByb3BzLmNvbGxlY3Rpb24sXG4gICAgICBncm91cEJ5OiB0aGlzLnByb3BzLmdyb3VwQnksXG4gICAgICBpZkNvbmRpdGlvbjogY29sbGVjdGlvblJlYWR5LFxuICAgICAgbW9kZWxDbGFzczogdGhpcy5wcm9wcy5tb2RlbENsYXNzLFxuICAgICAgb25Nb2RlbHNMb2FkZWQ6IHRoaXMucHJvcHMub25Nb2RlbHNMb2FkZWQsXG4gICAgICBub1JlY29yZHNBdmFpbGFibGVDb250ZW50OiB0aGlzLnByb3BzLm5vUmVjb3Jkc0F2YWlsYWJsZUNvbnRlbnQsXG4gICAgICBub1JlY29yZHNGb3VuZENvbnRlbnQ6IHRoaXMucHJvcHMubm9SZWNvcmRzRm91bmRDb250ZW50LFxuICAgICAgcGFnaW5hdGlvbjogdHJ1ZSxcbiAgICAgIHByZWxvYWRzOiB0aGlzLnMucHJlbG9hZCxcbiAgICAgIHF1ZXJ5TWV0aG9kOiB0aGlzLnByb3BzLnF1ZXJ5TWV0aG9kLFxuICAgICAgcXVlcnlOYW1lLFxuICAgICAgc2VsZWN0LFxuICAgICAgc2VsZWN0Q29sdW1uczogdGhpcy5wcm9wcy5zZWxlY3RDb2x1bW5zXG4gICAgfSlcbiAgICB0aGlzLnF1ZXJ5V2l0aG91dFBhZ2luYXRpb24gPSB1c2VNZW1vKFxuICAgICAgKCkgPT4gdGhpcy5jb2xsZWN0aW9uPy5xdWVyeT8uY2xvbmUoKT8uZXhjZXB0KFwicGFnZVwiKSxcbiAgICAgIFt0aGlzLmNvbGxlY3Rpb24ucXVlcnldXG4gICAgKVxuXG4gICAgdXNlRXZlbnRFbWl0dGVyKHRoaXMudHQuZHJhZ2dhYmxlU29ydEV2ZW50cywgXCJvbkRyYWdTdGFydFwiLCB0aGlzLnR0Lm9uRHJhZ1N0YXJ0KVxuICAgIHVzZUV2ZW50RW1pdHRlcih0aGlzLnR0LmRyYWdnYWJsZVNvcnRFdmVudHMsIFwib25EcmFnRW5kQW5pbWF0aW9uXCIsIHRoaXMudHQub25EcmFnRW5kQW5pbWF0aW9uKVxuICAgIHVzZUV2ZW50RW1pdHRlcih0aGlzLnR0LmV2ZW50cywgXCJjb2x1bW5WaXNpYmlsaXR5VXBkYXRlZFwiLCB0aGlzLnR0Lm9uQ29sdW1uVmlzaWJpbGl0eVVwZGF0ZWQpXG4gIH1cblxuICBvbkNvbHVtblZpc2liaWxpdHlVcGRhdGVkID0gKCkgPT4ge1xuICAgIHRoaXMucy5jb2x1bW5zVG9TaG93ID0gdGhpcy5nZXRDb2x1bW5zVG9TaG93KHRoaXMucy5jb2x1bW5zKVxuICAgIHRoaXMucy5sYXN0VXBkYXRlID0gbmV3IERhdGUoKVxuICB9XG4gIG9uRHJhZ1N0YXJ0ID0gKHtpdGVtfSkgPT4gaXRlbS5hbmltYXRlZFpJbmRleC5zZXRWYWx1ZSg5OTk5KVxuICBvbkRyYWdFbmRBbmltYXRpb24gPSAoe2l0ZW19KSA9PiBpdGVtLmFuaW1hdGVkWkluZGV4LnNldFZhbHVlKDApXG5cbiAgYXN5bmMgbG9hZEN1cnJlbnRXb3JrcGxhY2UoKSB7XG4gICAgLy8gT25seSB0aGUgbGF0ZXN0IHdvcmtwbGFjZSBib290c3RyYXAgcmVxdWVzdCBtYXkgdXBkYXRlIHRhYmxlIHN0YXRlLlxuICAgIGNvbnN0IHJlcXVlc3RJZCA9IHRoaXMuY3VycmVudFdvcmtwbGFjZUxvYWRSZXF1ZXN0SWQgKyAxXG5cbiAgICB0aGlzLmN1cnJlbnRXb3JrcGxhY2VMb2FkUmVxdWVzdElkID0gcmVxdWVzdElkXG4gICAgY29uc3QgV29ya3BsYWNlID0gbW9kZWxDbGFzc1JlcXVpcmUoXCJXb3JrcGxhY2VcIilcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBXb3JrcGxhY2UuY3VycmVudCgpXG4gICAgY29uc3QgY3VycmVudFdvcmtwbGFjZSA9IGRpZyhyZXN1bHQsIFwiY3VycmVudFwiLCAwKVxuXG4gICAgaWYgKHJlcXVlc3RJZCAhPSB0aGlzLmN1cnJlbnRXb3JrcGxhY2VMb2FkUmVxdWVzdElkKSByZXR1cm5cblxuICAgIHRoaXMucy5jdXJyZW50V29ya3BsYWNlID0gY3VycmVudFdvcmtwbGFjZVxuICAgIHRoaXMubG9hZEN1cnJlbnRXb3JrcGxhY2VDb3VudCgpXG4gIH1cblxuICBhc3luYyBsb2FkQ3VycmVudFdvcmtwbGFjZUNvdW50KCkge1xuICAgIGNvbnN0IHJlcXVlc3RJZCA9ICsrdGhpcy5jdXJyZW50V29ya3BsYWNlQ291bnRSZXF1ZXN0SWRcblxuICAgIGlmICghdGhpcy5zLmN1cnJlbnRXb3JrcGxhY2UpIHtcbiAgICAgIHRoaXMucy5jdXJyZW50V29ya3BsYWNlQ291bnQgPSAwXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBjb25zdCBXb3JrcGxhY2VMaW5rID0gbW9kZWxDbGFzc1JlcXVpcmUoXCJXb3JrcGxhY2VMaW5rXCIpXG4gICAgY29uc3QgY3VycmVudFdvcmtwbGFjZUNvdW50ID0gYXdhaXQgdGhpcy53aXRoQmxvY2tpbmcoKCkgPT4gV29ya3BsYWNlTGlua1xuICAgICAgLnJhbnNhY2soe1xuICAgICAgICByZXNvdXJjZV90eXBlX2VxOiB0aGlzLnAubW9kZWxDbGFzcy5tb2RlbENsYXNzRGF0YSgpLm5hbWUsXG4gICAgICAgIHdvcmtwbGFjZV9pZF9lcTogdGhpcy5zLmN1cnJlbnRXb3JrcGxhY2UuaWQoKVxuICAgICAgfSlcbiAgICAgIC5jb3VudCgpKVxuXG4gICAgaWYgKHJlcXVlc3RJZCAhPT0gdGhpcy5jdXJyZW50V29ya3BsYWNlQ291bnRSZXF1ZXN0SWQpIHJldHVyblxuXG4gICAgdGhpcy5zLmN1cnJlbnRXb3JrcGxhY2VDb3VudCA9IGN1cnJlbnRXb3JrcGxhY2VDb3VudFxuICB9XG5cbiAgZ2V0Q29sdW1uc1RvU2hvdyhjb2x1bW5zKSB7XG4gICAgcmV0dXJuIGNvbHVtbnNcbiAgICAgIC5maWx0ZXIoKHtjb2x1bW4sIHRhYmxlU2V0dGluZ0NvbHVtbn0pID0+IGNvbHVtblZpc2libGUoY29sdW1uLCB0YWJsZVNldHRpbmdDb2x1bW4pKVxuICAgICAgLnNvcnQoKGEsIGIpID0+IGEudGFibGVTZXR0aW5nQ29sdW1uLnBvc2l0aW9uKCkgLSBiLnRhYmxlU2V0dGluZ0NvbHVtbi5wb3NpdGlvbigpKVxuICB9XG5cbiAgYXN5bmMgbG9hZFRhYmxlU2V0dGluZygpIHtcbiAgICAvLyBJZ25vcmUgbGF0ZSB0YWJsZS1zZXR0aW5nIHJlc3BvbnNlcyBhZnRlciBuYXZpZ2F0aW9uIG9yIHJlbW91bnRzLlxuICAgIGNvbnN0IHJlcXVlc3RJZCA9IHRoaXMudGFibGVTZXR0aW5nTG9hZFJlcXVlc3RJZCArIDFcblxuICAgIHRoaXMudGFibGVTZXR0aW5nTG9hZFJlcXVlc3RJZCA9IHJlcXVlc3RJZFxuICAgIHRoaXMudGFibGVTZXR0aW5ncyA9IG5ldyBUYWJsZVNldHRpbmdzKHtcbiAgICAgIHRhYmxlOiAvKiogQHR5cGUge3twcm9wczoge2N1cnJlbnRVc2VyPzogQ3VycmVudFVzZXJNb2RlbCB8IG51bGx9LCBzdGF0ZToge2lkZW50aWZpZXI6IHN0cmluZ30sIGNvbHVtbnNBc0FycmF5KCk6IFRhYmxlQ29sdW1uRGVmaW5pdGlvbltdfX0gKi8gKHRoaXMpXG4gICAgfSlcbiAgICBjb25zdCB0YWJsZVNldHRpbmcgPSBhd2FpdCB0aGlzLnRhYmxlU2V0dGluZ3MubG9hZEV4aXN0aW5nT3JDcmVhdGVUYWJsZVNldHRpbmdzKClcblxuICAgIGlmICghdGFibGVTZXR0aW5nKSB0aHJvdyBuZXcgRXJyb3IoXCJObyB0YWJsZVNldHRpbmcgcmV0dXJuZWQgYnkgdGFibGVTZXR0aW5ncy5sb2FkRXhpc3RpbmdPckNyZWF0ZVRhYmxlU2V0dGluZ3MoKVwiKVxuXG4gICAgaWYgKHJlcXVlc3RJZCAhPSB0aGlzLnRhYmxlU2V0dGluZ0xvYWRSZXF1ZXN0SWQpIHJldHVyblxuXG4gICAgY29uc3Qge2NvbHVtbnMsIHByZWxvYWR9ID0gdGhpcy50YWJsZVNldHRpbmdzLnByZXBhcmVkQ29sdW1ucyh0YWJsZVNldHRpbmcpXG4gICAgY29uc3Qge3dpZHRofSA9IHRoaXMuc1xuICAgIGNvbnN0IHdpZHRocyA9IG5ldyBXaWR0aHMoe2NvbHVtbnMsIHRhYmxlOiB0aGlzLCB3aWR0aH0pXG4gICAgY29uc3QgY29sdW1uc1RvU2hvdyA9IHRoaXMuZ2V0Q29sdW1uc1RvU2hvdyhjb2x1bW5zKVxuXG4gICAgdGhpcy5zLmNvbHVtbnMgPSBjb2x1bW5zXG4gICAgdGhpcy5zLmNvbHVtbnNUb1Nob3cgPSBjb2x1bW5zVG9TaG93XG4gICAgdGhpcy5zLnByZXBhcmVkQ29sdW1ucyA9IGNvbHVtbnNcbiAgICB0aGlzLnMucHJlbG9hZCA9IHRoaXMubWVyZ2VkUHJlbG9hZHMocHJlbG9hZClcbiAgICB0aGlzLnMudGFibGVTZXR0aW5nID0gdGFibGVTZXR0aW5nXG4gICAgdGhpcy5zLnRhYmxlU2V0dGluZ0xvYWRlZCA9IHRydWVcbiAgICB0aGlzLnMudGFibGVTZXR0aW5nRnVsbENhY2hlS2V5ID0gdGFibGVTZXR0aW5nLmZ1bGxDYWNoZUtleSgpXG4gICAgdGhpcy5zLndpZHRocyA9IHdpZHRoc1xuICB9XG5cbiAgdXBkYXRlU2V0dGluZ3NGdWxsQ2FjaGVLZXkgPSAoKSA9PiB7XG4gICAgdGhpcy5zLnRhYmxlU2V0dGluZ0Z1bGxDYWNoZUtleSA9IHRoaXMucy50YWJsZVNldHRpbmcuZnVsbENhY2hlS2V5KClcbiAgfVxuXG4gIGNvbHVtbnNBc0FycmF5KCkge1xuICAgIGlmICh0eXBlb2YgdGhpcy5wcm9wcy5jb2x1bW5zID09IFwiZnVuY3Rpb25cIikge1xuICAgICAgcmV0dXJuIHRoaXMucHJvcHMuY29sdW1ucygpXG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMucHJvcHMuY29sdW1uc1xuICB9XG5cbiAgbWVyZ2VkUHJlbG9hZHMocHJlbG9hZCkge1xuICAgIGNvbnN0IHtwcmVsb2Fkc30gPSB0aGlzLnByb3BzXG4gICAgbGV0IG1lcmdlZFByZWxvYWRzID0gW11cblxuICAgIGlmIChwcmVsb2FkcykgbWVyZ2VkUHJlbG9hZHMgPSBtZXJnZWRQcmVsb2Fkcy5jb25jYXQocHJlbG9hZHMpXG4gICAgaWYgKHByZWxvYWQpIG1lcmdlZFByZWxvYWRzID0gbWVyZ2VkUHJlbG9hZHMuY29uY2F0KHByZWxvYWQpXG5cbiAgICByZXR1cm4gdW5pcXVuaXplKG1lcmdlZFByZWxvYWRzKVxuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHttb2RlbENsYXNzLCBub1JlY29yZHNBdmFpbGFibGVDb250ZW50LCBub1JlY29yZHNGb3VuZENvbnRlbnR9ID0gdGhpcy5wXG4gICAgY29uc3Qge2NvbGxlY3Rpb24sIGN1cnJlbnRVc2VyfSA9IHRoaXMucHJvcHNcbiAgICBjb25zdCB7cXVlcnlOYW1lLCBxdWVyeVNOYW1lLCBzaG93RmlsdGVyc30gPSB0aGlzLnNcbiAgICBjb25zdCB7XG4gICAgICBtb2RlbHMsXG4gICAgICBvdmVyYWxsQ291bnQsXG4gICAgICBxUGFyYW1zLFxuICAgICAgcXVlcnksXG4gICAgICByZXN1bHQsXG4gICAgICBzaG93Tm9SZWNvcmRzQXZhaWxhYmxlQ29udGVudCxcbiAgICAgIHNob3dOb1JlY29yZHNGb3VuZENvbnRlbnRcbiAgICB9ID0gZGlncyhcbiAgICAgIHRoaXMuY29sbGVjdGlvbixcbiAgICAgIFwibW9kZWxzXCIsXG4gICAgICBcIm92ZXJhbGxDb3VudFwiLFxuICAgICAgXCJxUGFyYW1zXCIsXG4gICAgICBcInF1ZXJ5XCIsXG4gICAgICBcInJlc3VsdFwiLFxuICAgICAgXCJzaG93Tm9SZWNvcmRzQXZhaWxhYmxlQ29udGVudFwiLFxuICAgICAgXCJzaG93Tm9SZWNvcmRzRm91bmRDb250ZW50XCJcbiAgICApXG4gICAgY29uc3Qgc2FmZVFQYXJhbXMgPSBxUGFyYW1zIHx8IHt9XG5cbiAgICBpZiAoY29sbGVjdGlvbiAmJiBjb2xsZWN0aW9uLmFyZ3MubW9kZWxDbGFzcy5tb2RlbENsYXNzRGF0YSgpLm5hbWUgIT0gbW9kZWxDbGFzcy5tb2RlbENsYXNzRGF0YSgpLm5hbWUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYE1vZGVsIGNsYXNzIGZyb20gY29sbGVjdGlvbiAnJHtjb2xsZWN0aW9uLmFyZ3MubW9kZWxDbGFzcy5tb2RlbENsYXNzRGF0YSgpLm5hbWV9JyBgICtcbiAgICAgICAgYGRpZG4ndCBtYXRjaCBtb2RlbCBjbGFzcyBvbiB0YWJsZTogJyR7bW9kZWxDbGFzcy5tb2RlbENsYXNzRGF0YSgpLm5hbWV9J2BcbiAgICAgIClcbiAgICB9XG5cbiAgICBjb25zdCBzaG91bGRTaG93TG9hZGluZ0NvbnRlbnQgPSBzaG91bGRSZW5kZXJMb2FkaW5nQ29udGVudCh7XG4gICAgICBtb2RlbHMsXG4gICAgICBxdWVyeSxcbiAgICAgIHJlc3VsdFxuICAgIH0pXG5cbiAgICByZXR1cm4gKFxuICAgICAgPFZpZXdcbiAgICAgICAgZGF0YVNldD17ZGF0YVNldHNbYHJvb3RWaWV3LSR7dGhpcy5jbGFzc05hbWUoKX1gXSB8fD0ge2NsYXNzOiB0aGlzLmNsYXNzTmFtZSgpfX1cbiAgICAgICAgb25MYXlvdXQ9e3RoaXMudHQub25Db250YWluZXJMYXlvdXR9XG4gICAgICAgIHN0eWxlPXt0aGlzLnByb3BzLnN0eWxlcz8uY29udGFpbmVyfVxuICAgICAgPlxuICAgICAgICB7c2hvd05vUmVjb3Jkc0F2YWlsYWJsZUNvbnRlbnQgJiZcbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImxpdmUtdGFibGUtLW5vLXJlY29yZHMtYXZhaWxhYmxlLWNvbnRlbnRcIj5cbiAgICAgICAgICAgIHtub1JlY29yZHNBdmFpbGFibGVDb250ZW50KHttb2RlbHMsIHFQYXJhbXM6IHNhZmVRUGFyYW1zLCBvdmVyYWxsQ291bnR9KX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgICAgICB7c2hvd05vUmVjb3Jkc0ZvdW5kQ29udGVudCAmJlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibGl2ZS10YWJsZS0tbm8tcmVjb3Jkcy1mb3VuZC1jb250ZW50XCI+XG4gICAgICAgICAgICB7bm9SZWNvcmRzRm91bmRDb250ZW50KHttb2RlbHMsIHFQYXJhbXM6IHNhZmVRUGFyYW1zLCBvdmVyYWxsQ291bnR9KX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgICAgICB7c2hvd0ZpbHRlcnMgJiZcbiAgICAgICAgICA8RmlsdGVycyBjdXJyZW50VXNlcj17Y3VycmVudFVzZXJ9IG1vZGVsQ2xhc3M9e21vZGVsQ2xhc3N9IHF1ZXJ5TmFtZT17cXVlcnlOYW1lfSBxdWVyeVNOYW1lPXtxdWVyeVNOYW1lfSAvPlxuICAgICAgICB9XG4gICAgICAgIHtzaG91bGRTaG93TG9hZGluZ0NvbnRlbnQgJiZcbiAgICAgICAgICB0aGlzLmxvYWRpbmdDb250ZW50KHttb2RlbHMsIHFQYXJhbXM6IHNhZmVRUGFyYW1zLCBxdWVyeSwgcmVzdWx0fSlcbiAgICAgICAgfVxuICAgICAgICB7IXNob3VsZFNob3dMb2FkaW5nQ29udGVudCAmJlxuICAgICAgICAgIHRoaXMuY2FyZE9yVGFibGUoKVxuICAgICAgICB9XG4gICAgICA8L1ZpZXc+XG4gICAgKVxuICB9XG5cbiAgLyoqXG4gICAqIFJlc29sdmUgdGhlIGhlYWRlciB0aXRsZSBvciBjdXN0b20gaGVhZGVyIGNvbnRlbnQuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBbYXJnc11cbiAgICogQHBhcmFtIHtBcnJheTxvYmplY3Q+fSBbYXJncy5tb2RlbHNdXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBbYXJncy5xUGFyYW1zXVxuICAgKiBAcGFyYW0ge29iamVjdH0gW2FyZ3MucXVlcnldXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBbYXJncy5yZXN1bHRdXG4gICAqIEByZXR1cm5zIHtzdHJpbmd8UmVhY3QuUmVhY3ROb2RlfVxuICAgKi9cbiAgdGFibGVIZWFkZXJDb250ZW50ICh7bW9kZWxzLCBxUGFyYW1zLCBxdWVyeSwgcmVzdWx0fSA9IHt9KSB7XG4gICAgY29uc3Qge2hlYWRlciwgbW9kZWxDbGFzc30gPSB0aGlzLnByb3BzXG5cbiAgICBpZiAodHlwZW9mIGhlYWRlciA9PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgIHJldHVybiBoZWFkZXIoe21vZGVscywgcVBhcmFtcywgcXVlcnksIHJlc3VsdH0pXG4gICAgfSBlbHNlIGlmIChoZWFkZXIpIHtcbiAgICAgIHJldHVybiBoZWFkZXJcbiAgICB9XG5cbiAgICByZXR1cm4gbW9kZWxDbGFzcy5tb2RlbE5hbWUoKS5odW1hbih7Y291bnQ6IDJ9KVxuICB9XG5cbiAgbG9hZGluZ0NvbnRlbnQgKHttb2RlbHMsIHFQYXJhbXMsIHF1ZXJ5LCByZXN1bHR9KSB7XG4gICAgY29uc3Qge1xuICAgICAgYWJpbGl0aWVzLFxuICAgICAgYWN0aW9uc0NvbnRlbnQsXG4gICAgICBhcHBIaXN0b3J5LFxuICAgICAgY2FyZCxcbiAgICAgIGNsYXNzTmFtZSxcbiAgICAgIGNvbGxlY3Rpb24sXG4gICAgICBjb2x1bW5zLFxuICAgICAgY29udHJvbHMsXG4gICAgICBjdXJyZW50VXNlcixcbiAgICAgIGRlZmF1bHREYXRlRm9ybWF0TmFtZSxcbiAgICAgIGRlZmF1bHREYXRlVGltZUZvcm1hdE5hbWUsXG4gICAgICBkZWZhdWx0UGFyYW1zLFxuICAgICAgZGVzdHJveUVuYWJsZWQsXG4gICAgICBkZXN0cm95TWVzc2FnZSxcbiAgICAgIGVkaXRNb2RlbFBhdGgsXG4gICAgICBmaWx0ZXJDYXJkLFxuICAgICAgZmlsdGVyQ29udGVudCxcbiAgICAgIGZpbHRlclN1Ym1pdEJ1dHRvbixcbiAgICAgIGZpbHRlclN1Ym1pdExhYmVsLFxuICAgICAgZ3JvdXBCeSxcbiAgICAgIGhlYWRlcixcbiAgICAgIGlkZW50aWZpZXIsXG4gICAgICBtb2RlbENsYXNzLFxuICAgICAgbm9SZWNvcmRzQXZhaWxhYmxlQ29udGVudCxcbiAgICAgIG5vUmVjb3Jkc0ZvdW5kQ29udGVudCxcbiAgICAgIG9uTW9kZWxzTG9hZGVkLFxuICAgICAgcGFnaW5hdGVDb250ZW50LFxuICAgICAgcGFnaW5hdGlvbkNvbXBvbmVudCxcbiAgICAgIHByZWxvYWRzLFxuICAgICAgcXVlcnlNZXRob2QsXG4gICAgICBxdWVyeU5hbWUsXG4gICAgICBzZWxlY3QsXG4gICAgICBzZWxlY3RDb2x1bW5zLFxuICAgICAgc3R5bGVVSSxcbiAgICAgIHZpZXdNb2RlbFBhdGgsXG4gICAgICB3b3JrcGxhY2UsXG4gICAgICAuLi5yZXN0UHJvcHNcbiAgICB9ID0gdGhpcy5wcm9wc1xuXG4gICAgY29uc3QgbG9hZGluZ0NvbnRlbnQgPSAoXG4gICAgICA8VmlldyBkYXRhU2V0PXtkYXRhU2V0cy5sb2FkaW5nIHx8PSB7Y2xhc3M6IFwiYXBpLW1ha2VyLS10YWJsZS0tbG9hZGluZ1wifX0+XG4gICAgICAgIDxUZXh0Pnt0aGlzLnR0LnQoXCIubG9hZGluZ19kb3RfZG90X2RpdFwiLCB7ZGVmYXVsdFZhbHVlOiBcIkxvYWRpbmcuLi5cIn0pfTwvVGV4dD5cbiAgICAgIDwvVmlldz5cbiAgICApXG5cbiAgICBpZiAoIWNhcmQpIHJldHVybiBsb2FkaW5nQ29udGVudFxuXG4gICAgY29uc3Qgc2FmZU1vZGVscyA9IG1vZGVscyB8fCBbXVxuICAgIGNvbnN0IHNhZmVBcmdzID0ge21vZGVsczogc2FmZU1vZGVscywgcVBhcmFtcywgcXVlcnksIHJlc3VsdH1cblxuICAgIHJldHVybiAoXG4gICAgICA8Q2FyZFxuICAgICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZXMoXCJsaXZlLXRhYmxlLS10YWJsZS1jYXJkXCIsIFwibWItNFwiLCBjbGFzc05hbWUpfVxuICAgICAgICBjb250cm9scz17dGhpcy50YWJsZUNvbnRyb2xzKHNhZmVBcmdzKX1cbiAgICAgICAgaGVhZGVyPXt0aGlzLnRhYmxlSGVhZGVyQ29udGVudChzYWZlQXJncyl9XG4gICAgICAgIHsuLi5yZXN0UHJvcHN9XG4gICAgICA+XG4gICAgICAgIHtsb2FkaW5nQ29udGVudH1cbiAgICAgIDwvQ2FyZD5cbiAgICApXG4gIH1cblxuICAvKiogQHJldHVybnMge1JlY29yZDxzdHJpbmcsIHN0cmluZ1tdPn0gKi9cbiAgYWJpbGl0aWVzVG9Mb2FkICgpIHtcbiAgICBjb25zdCBhYmlsaXRpZXNUb0xvYWQgPSAvKiogQHR5cGUge1JlY29yZDxzdHJpbmcsIHN0cmluZ1tdPn0gKi8gKHt9KVxuICAgIGNvbnN0IHthYmlsaXRpZXMsIG1vZGVsQ2xhc3N9ID0gdGhpcy5wcm9wc1xuICAgIGNvbnN0IG93bkFiaWxpdGllcyA9IFtdXG5cbiAgICBpZiAodGhpcy5wcm9wcy5kZXN0cm95RW5hYmxlZCkgb3duQWJpbGl0aWVzLnB1c2goXCJkZXN0cm95XCIpXG4gICAgaWYgKHRoaXMucHJvcHMuZWRpdE1vZGVsUGF0aCkgb3duQWJpbGl0aWVzLnB1c2goXCJlZGl0XCIpXG4gICAgaWYgKHRoaXMucHJvcHMudmlld01vZGVsUGF0aCkgb3duQWJpbGl0aWVzLnB1c2goXCJzaG93XCIpXG5cbiAgICBpZiAob3duQWJpbGl0aWVzLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IG1vZGVsQ2xhc3NOYW1lID0gZGlnZyhtb2RlbENsYXNzLm1vZGVsQ2xhc3NEYXRhKCksIFwibmFtZVwiKVxuXG4gICAgICBhYmlsaXRpZXNUb0xvYWRbbW9kZWxDbGFzc05hbWVdID0gb3duQWJpbGl0aWVzXG4gICAgfVxuXG4gICAgaWYgKGFiaWxpdGllcykge1xuICAgICAgZm9yIChjb25zdCBtb2RlbE5hbWUgaW4gYWJpbGl0aWVzKSB7XG4gICAgICAgIGlmICghKG1vZGVsTmFtZSBpbiBhYmlsaXRpZXNUb0xvYWQpKSB7XG4gICAgICAgICAgYWJpbGl0aWVzVG9Mb2FkW21vZGVsTmFtZV0gPSBbXVxuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChjb25zdCBhYmlsaXR5IG9mIGFiaWxpdGllc1ttb2RlbE5hbWVdKSB7XG4gICAgICAgICAgYWJpbGl0aWVzVG9Mb2FkW21vZGVsTmFtZV0ucHVzaChhYmlsaXR5KVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGFiaWxpdGllc1RvTG9hZFxuICB9XG5cbiAgLyoqXG4gICAqIERlY2lkZSBiZXR3ZWVuIGNhcmQvdGFibGUgcmVuZGVyaW5nIG9uY2UgZGF0YSBpcyByZWFkeS5cbiAgICogQHJldHVybnMge1JlYWN0LlJlYWN0Tm9kZX1cbiAgICovXG4gIGNhcmRPclRhYmxlICgpIHtcbiAgICBjb25zdCB7XG4gICAgICBhYmlsaXRpZXMsXG4gICAgICBhY3Rpb25zQ29udGVudCxcbiAgICAgIGFwcEhpc3RvcnksXG4gICAgICBjYXJkLFxuICAgICAgY2xhc3NOYW1lLFxuICAgICAgY29sbGVjdGlvbixcbiAgICAgIGNvbHVtbnMsXG4gICAgICBjb250cm9scyxcbiAgICAgIGN1cnJlbnRVc2VyLFxuICAgICAgZGVmYXVsdERhdGVGb3JtYXROYW1lLFxuICAgICAgZGVmYXVsdERhdGVUaW1lRm9ybWF0TmFtZSxcbiAgICAgIGRlZmF1bHRQYXJhbXMsXG4gICAgICBkZXN0cm95RW5hYmxlZCxcbiAgICAgIGRlc3Ryb3lNZXNzYWdlLFxuICAgICAgZWRpdE1vZGVsUGF0aCxcbiAgICAgIGZpbHRlckNhcmQsXG4gICAgICBmaWx0ZXJDb250ZW50LFxuICAgICAgZmlsdGVyU3VibWl0QnV0dG9uLFxuICAgICAgZmlsdGVyU3VibWl0TGFiZWwsXG4gICAgICBncm91cEJ5LFxuICAgICAgaGVhZGVyLFxuICAgICAgaWRlbnRpZmllcixcbiAgICAgIG1vZGVsQ2xhc3MsXG4gICAgICBub1JlY29yZHNBdmFpbGFibGVDb250ZW50LFxuICAgICAgbm9SZWNvcmRzRm91bmRDb250ZW50LFxuICAgICAgb25Nb2RlbHNMb2FkZWQsXG4gICAgICBwYWdpbmF0ZUNvbnRlbnQsXG4gICAgICBwYWdpbmF0aW9uQ29tcG9uZW50LFxuICAgICAgcHJlbG9hZHMsXG4gICAgICBxdWVyeU1ldGhvZCxcbiAgICAgIHF1ZXJ5TmFtZSxcbiAgICAgIHNlbGVjdCxcbiAgICAgIHNlbGVjdENvbHVtbnMsXG4gICAgICBzdHlsZVVJLFxuICAgICAgdmlld01vZGVsUGF0aCxcbiAgICAgIHdvcmtwbGFjZSxcbiAgICAgIC4uLnJlc3RQcm9wc1xuICAgIH0gPSB0aGlzLnByb3BzXG4gICAgY29uc3Qge21vZGVscywgcVBhcmFtcywgcXVlcnksIHJlc3VsdH0gPSBkaWdzKHRoaXMuY29sbGVjdGlvbiwgXCJtb2RlbHNcIiwgXCJxUGFyYW1zXCIsIFwicXVlcnlcIiwgXCJyZXN1bHRcIilcbiAgICBjb25zdCBzYWZlUVBhcmFtcyA9IHFQYXJhbXMgfHwge31cblxuICAgIGNvbnN0IGhlYWRlckNvbnRlbnQgPSB0aGlzLnRhYmxlSGVhZGVyQ29udGVudCh7bW9kZWxzLCBxUGFyYW1zOiBzYWZlUVBhcmFtcywgcXVlcnksIHJlc3VsdH0pXG4gICAgbGV0IFBhZ2luYXRpb25Db21wb25lbnRcblxuICAgIGlmICghcGFnaW5hdGVDb250ZW50KSB7XG4gICAgICBpZiAocGFnaW5hdGlvbkNvbXBvbmVudCkge1xuICAgICAgICBQYWdpbmF0aW9uQ29tcG9uZW50ID0gcGFnaW5hdGlvbkNvbXBvbmVudFxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgUGFnaW5hdGlvbkNvbXBvbmVudCA9IFBhZ2luYXRlXG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgZmxhdExpc3QgPSAoXG4gICAgICA8VGFibGVDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXt0aGlzLnR0LnRhYmxlQ29udGV4dFZhbHVlfT5cbiAgICAgICAgPFZpZXdcbiAgICAgICAgICBkYXRhU2V0PXtkYXRhU2V0cy5mbGF0TGlzdFdyYXBwZXIgfHw9IHtjbGFzczogXCJhcGktbWFrZXItLXRhYmxlLS1mbGF0LWxpc3Qtd3JhcHBlclwifX1cbiAgICAgICAgICBzdHlsZT17c3R5bGVzLmZsYXRMaXN0V3JhcHBlciB8fD0ge3Bvc2l0aW9uOiBcInJlbGF0aXZlXCJ9fVxuICAgICAgICA+XG4gICAgICAgICAgPEZsYXRMaXN0XG4gICAgICAgICAgICBkYXRhPXttb2RlbHN9XG4gICAgICAgICAgICBkYXRhU2V0PXtkYXRhU2V0c1tgZmxhdExpc3QtJHtjbGFzc05hbWV9LSR7dGhpcy5zLnRhYmxlU2V0dGluZ0Z1bGxDYWNoZUtleX1gXSB8fD0ge1xuICAgICAgICAgICAgICBjbGFzczogY2xhc3NOYW1lcyhcImFwaS1tYWtlci0tdGFibGVcIiwgY2xhc3NOYW1lKSxcbiAgICAgICAgICAgICAgY2FjaGVLZXk6IHRoaXMucy50YWJsZVNldHRpbmdGdWxsQ2FjaGVLZXksXG4gICAgICAgICAgICAgIGxhc3RVcGRhdGU6IHRoaXMucy5sYXN0VXBkYXRlXG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgZXh0cmFEYXRhPXt0aGlzLnMubGFzdFVwZGF0ZX1cbiAgICAgICAgICAgIGtleUV4dHJhY3Rvcj17dGhpcy50dC5rZXlFeHRyYXRvcn1cbiAgICAgICAgICAgIExpc3RIZWFkZXJDb21wb25lbnQ9e0xpc3RIZWFkZXJDb21wb25lbnR9XG4gICAgICAgICAgICByZW5kZXJJdGVtPXt0aGlzLnR0LnJlbmRlckl0ZW19XG4gICAgICAgICAgICBzaG93c0hvcml6b250YWxTY3JvbGxJbmRpY2F0b3JcbiAgICAgICAgICAgIHN0eWxlPXtzdHlsZXNbYGZsYXRMaXN0LSR7c3R5bGVVSX1gXSB8fD0ge1xuICAgICAgICAgICAgICBvdmVyZmxvd1g6IFwiYXV0b1wiLFxuICAgICAgICAgICAgICBib3JkZXI6IHN0eWxlVUkgPyBcIjFweCBzb2xpZCAjZGJkYmRiXCIgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgIGJvcmRlclJhZGl1czogc3R5bGVVSSA/IDUgOiB1bmRlZmluZWRcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgICB7Li4ucmVzdFByb3BzfVxuICAgICAgICAgIC8+XG4gICAgICAgICAgPEJsb2NraW5nT3ZlcmxheSBldmVudHM9e3RoaXMuZXZlbnRzfSAvPlxuICAgICAgICA8L1ZpZXc+XG4gICAgICA8L1RhYmxlQ29udGV4dC5Qcm92aWRlcj5cbiAgICApXG5cbiAgICByZXR1cm4gKFxuICAgICAgPD5cbiAgICAgICAge2ZpbHRlckNvbnRlbnQgJiYgZmlsdGVyQ2FyZCAmJlxuICAgICAgICAgIDxDYXJkIGNsYXNzTmFtZT1cImxpdmUtdGFibGUtLWZpbHRlci1jYXJkIG1iLTRcIj5cbiAgICAgICAgICAgIHt0aGlzLmZpbHRlckZvcm0oKX1cbiAgICAgICAgICA8L0NhcmQ+XG4gICAgICAgIH1cbiAgICAgICAge2ZpbHRlckNvbnRlbnQgJiYgIWZpbHRlckNhcmQgJiZcbiAgICAgICAgICB0aGlzLmZpbHRlckZvcm0oKVxuICAgICAgICB9XG4gICAgICAgIHtjYXJkICYmXG4gICAgICAgICAgPENhcmRcbiAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lcyhcImxpdmUtdGFibGUtLXRhYmxlLWNhcmRcIiwgXCJtYi00XCIsIGNsYXNzTmFtZSl9XG4gICAgICAgICAgICBjb250cm9scz17dGhpcy50YWJsZUNvbnRyb2xzKCl9XG4gICAgICAgICAgICBoZWFkZXI9e2hlYWRlckNvbnRlbnR9XG4gICAgICAgICAgICBmb290ZXI9e3RoaXMudGFibGVGb290ZXIoKX1cbiAgICAgICAgICAgIHsuLi5yZXN0UHJvcHN9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge2ZsYXRMaXN0fVxuICAgICAgICAgIDwvQ2FyZD5cbiAgICAgICAgfVxuICAgICAgICB7IWNhcmQgJiYgZmxhdExpc3R9XG4gICAgICAgIHtyZXN1bHQgJiYgUGFnaW5hdGlvbkNvbXBvbmVudCAmJlxuICAgICAgICAgIDxQYWdpbmF0aW9uQ29tcG9uZW50IHJlc3VsdD17cmVzdWx0fSAvPlxuICAgICAgICB9XG4gICAgICAgIHtyZXN1bHQgJiYgcGFnaW5hdGVDb250ZW50ICYmXG4gICAgICAgICAgcGFnaW5hdGVDb250ZW50KHtyZXN1bHR9KVxuICAgICAgICB9XG4gICAgICA8Lz5cbiAgICApXG4gIH1cblxuICBvbkNvbnRhaW5lckxheW91dCA9IChlKSA9PiB7XG4gICAgY29uc3Qge3dpZHRofSA9IGUubmF0aXZlRXZlbnQubGF5b3V0XG4gICAgY29uc3Qge3dpZHRoc30gPSB0aGlzLnNcblxuICAgIC8vIElmIHRhYmxlIHNldHRpbmdzIGxvYWRlZCBiZWZvcmUgUk4td2ViIHByb2R1Y2VkIGEgbGF5b3V0IHdpZHRoLCByZWNvbXB1dGUgb25jZSB3aXRoIHRoZSByZWFsIHdpZHRoLlxuICAgIGlmICh3aWR0aHM/LnVzZWRGYWxsYmFja1dpZHRoKSB7XG4gICAgICB3aWR0aHMudXBkYXRlVGFibGVXaWR0aCh3aWR0aClcbiAgICAgIHRoaXMucy5sYXN0VXBkYXRlID0gbmV3IERhdGUoKVxuICAgICAgdGhpcy5zLndpZHRoID0gd2lkdGhcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHRoaXMucy53aWR0aCA9IHdpZHRoXG4gICAgaWYgKHdpZHRocykgd2lkdGhzLnRhYmxlV2lkdGggPSB3aWR0aFxuICB9XG5cbiAgb25MaW5rc0NyZWF0ZWQgPSAoe2FyZ3N9KSA9PiB7XG4gICAgaWYgKGFyZ3MucmVzb3VyY2VfdHlwZXM/LmluY2x1ZGVzKHRoaXMucC5tb2RlbENsYXNzLm1vZGVsQ2xhc3NEYXRhKCkubmFtZSkpIHtcbiAgICAgIHRoaXMubG9hZEN1cnJlbnRXb3JrcGxhY2VDb3VudCgpXG4gICAgfVxuICB9XG5cbiAgb25MaW5rc0Rlc3Ryb3llZCA9ICh7YXJnc30pID0+IHtcbiAgICBpZiAoYXJncy5yZXNvdXJjZV90eXBlcz8uaW5jbHVkZXModGhpcy5wLm1vZGVsQ2xhc3MubW9kZWxDbGFzc0RhdGEoKS5uYW1lKSkge1xuICAgICAgdGhpcy5sb2FkQ3VycmVudFdvcmtwbGFjZUNvdW50KClcbiAgICB9XG4gIH1cblxuICBrZXlFeHRyYXRvciA9IChtb2RlbCkgPT4gYCR7dGhpcy5zLnRhYmxlU2V0dGluZ0Z1bGxDYWNoZUtleX0tJHttb2RlbC5pZCgpfWBcblxuICBmaWx0ZXJGb3JtID0gKCkgPT4ge1xuICAgIGNvbnN0IHtmaWx0ZXJGb3JtUmVmLCBzdWJtaXRGaWx0ZXIsIHN1Ym1pdEZpbHRlckRlYm91bmNlfSA9IHRoaXMudHRcbiAgICBjb25zdCB7ZmlsdGVyQ29udGVudCwgZmlsdGVyU3VibWl0QnV0dG9ufSA9IHRoaXMucFxuICAgIGNvbnN0IHtxdWVyeVFOYW1lfSA9IHRoaXMuc1xuICAgIGNvbnN0IHtmaWx0ZXJTdWJtaXRMYWJlbH0gPSB0aGlzLnByb3BzXG4gICAgY29uc3QgYWN0dWFsUVBhcmFtcyA9IGRpZ2codGhpcy5jb2xsZWN0aW9uLCBcInFQYXJhbXNcIikgfHwge31cblxuICAgIHJldHVybiAoXG4gICAgICA8Rm9ybVxuICAgICAgICBmb3JtUmVmPXtmaWx0ZXJGb3JtUmVmfVxuICAgICAgICBodG1sRm9ybVByb3BzPXtzdHlsZXMuZmlsdGVyRm9ybUh0bWxQcm9wcyB8fD0ge2NsYXNzTmFtZTogXCJsaXZlLXRhYmxlLS1maWx0ZXItZm9ybVwifX1cbiAgICAgICAgb25TdWJtaXQ9e3RoaXMudHQub25GaWx0ZXJGb3JtU3VibWl0fVxuICAgICAgICBzZXRGb3JtPXsvKiogQHR5cGUge3tmaWx0ZXJGb3JtKHZhbHVlOiBUYWJsZUZpbHRlckZvcm1TdGF0ZSk6IHZvaWR9fSAqLyAodGhpcy5zZXRTdGF0ZXMpLmZpbHRlckZvcm19XG4gICAgICAgIHVzZUh0bWxGb3JtXG4gICAgICA+XG4gICAgICAgIHtcInNcIiBpbiBhY3R1YWxRUGFyYW1zICYmXG4gICAgICAgICAgPGlucHV0IG5hbWU9XCJzXCIgdHlwZT1cImhpZGRlblwiIHZhbHVlPXthY3R1YWxRUGFyYW1zLnN9IC8+XG4gICAgICAgIH1cbiAgICAgICAge2ZpbHRlckNvbnRlbnQoe1xuICAgICAgICAgIG9uRmlsdGVyQ2hhbmdlZDogc3VibWl0RmlsdGVyLFxuICAgICAgICAgIG9uRmlsdGVyQ2hhbmdlZFdpdGhEZWxheTogc3VibWl0RmlsdGVyRGVib3VuY2UsXG4gICAgICAgICAgcVBhcmFtczogYWN0dWFsUVBhcmFtcyxcbiAgICAgICAgICBxdWVyeVFOYW1lXG4gICAgICAgIH0pfVxuICAgICAgICB7ZmlsdGVyU3VibWl0QnV0dG9uICYmXG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICBjbGFzc05hbWU9XCJidG4gYnRuLXByaW1hcnkgbGl2ZS10YWJsZS0tc3VibWl0LWZpbHRlci1idXR0b25cIlxuICAgICAgICAgICAgdHlwZT1cInN1Ym1pdFwiXG4gICAgICAgICAgICBzdHlsZT17c3R5bGVzLmZpbHRlclN1Ym1pdEJ1dHRvbiB8fD0ge21hcmdpblRvcDogXCI4cHhcIn19XG4gICAgICAgICAgICB2YWx1ZT17ZmlsdGVyU3VibWl0TGFiZWwgfHwgdGhpcy50dC50KFwiLmZpbHRlclwiLCB7ZGVmYXVsdFZhbHVlOiBcIkZpbHRlclwifSl9XG4gICAgICAgICAgLz5cbiAgICAgICAgfVxuICAgICAgPC9Gb3JtPlxuICAgIClcbiAgfVxuXG4gIG9uRmlsdGVyQ2xpY2tlZCA9IChlKSA9PiB7XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpXG4gICAgdGhpcy5zLnNob3dGaWx0ZXJzID0gIXRoaXMucy5zaG93RmlsdGVyc1xuICB9XG5cbiAgb25QZXJQYWdlQ2hhbmdlZCA9IChlKSA9PiB7XG4gICAgY29uc3Qge3F1ZXJ5TmFtZX0gPSB0aGlzLnNcbiAgICBjb25zdCBuZXdQZXJQYWdlVmFsdWUgPSBkaWdnKGUsIFwidGFyZ2V0XCIsIFwidmFsdWVcIilcbiAgICBjb25zdCBwZXJLZXkgPSBgJHtxdWVyeU5hbWV9X3BlcmBcbiAgICBjb25zdCBwYXJhbXNDaGFuZ2UgPSB7fVxuXG4gICAgcGFyYW1zQ2hhbmdlW3BlcktleV0gPSBuZXdQZXJQYWdlVmFsdWVcblxuICAgIFBhcmFtcy5jaGFuZ2VQYXJhbXMocGFyYW1zQ2hhbmdlKVxuICB9XG5cbiAgcmVuZGVySXRlbSA9ICh7aW5kZXgsIGl0ZW06IG1vZGVsfSkgPT4ge1xuICAgIGlmICghdGhpcy5zLnRhYmxlU2V0dGluZ0xvYWRlZCkge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgPFZpZXc+XG4gICAgICAgICAgPFRleHQ+XG4gICAgICAgICAgICB7dGhpcy50dC50KFwiLmxvYWRpbmdfZG90X2RvdF9kb3RcIiwge2RlZmF1bHRWYWx1ZTogXCJMb2FkaW5nLi4uXCJ9KX1cbiAgICAgICAgICA8L1RleHQ+XG4gICAgICAgIDwvVmlldz5cbiAgICAgIClcbiAgICB9XG5cbiAgICByZXR1cm4gKFxuICAgICAgPE1vZGVsUm93XG4gICAgICAgIGNhY2hlS2V5PXttb2RlbC5jYWNoZUtleSgpfVxuICAgICAgICBjb2x1bW5zPXt0aGlzLnMuY29sdW1uc1RvU2hvd31cbiAgICAgICAgY29sdW1uV2lkdGhzPXt0aGlzLmNvbHVtbldpZHRocygpfVxuICAgICAgICBldmVudHM9e3RoaXMudHQuZXZlbnRzfVxuICAgICAgICBpbmRleD17aW5kZXh9XG4gICAgICAgIGtleT17bW9kZWwuaWQoKX1cbiAgICAgICAgbW9kZWw9e21vZGVsfVxuICAgICAgICB0YWJsZT17dGhpc31cbiAgICAgICAgdGFibGVTZXR0aW5nRnVsbENhY2hlS2V5PXt0aGlzLnMudGFibGVTZXR0aW5nRnVsbENhY2hlS2V5fVxuICAgICAgLz5cbiAgICApXG4gIH1cblxuICAvKipcbiAgICogQnVpbGQgdGhlIGJhc2Ugc3R5bGUgZm9yIGEgZGF0YSBjb2x1bW4uXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBhcmdzXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBhcmdzLmNvbHVtblxuICAgKiBAcGFyYW0ge251bWJlcn0gYXJncy5jb2x1bW5JbmRleFxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGFyZ3MuZXZlblxuICAgKiBAcGFyYW0ge29iamVjdH0gYXJncy5zdHlsZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gYXJncy50eXBlXG4gICAqIEByZXR1cm5zIHtvYmplY3R9XG4gICAqL1xuICBzdHlsZUZvckNvbHVtbiA9ICh7Y29sdW1uLCBjb2x1bW5JbmRleCwgZXZlbiwgc3R5bGUsIHR5cGV9KSA9PiB7XG4gICAgY29uc3Qge3N0eWxlVUl9ID0gdGhpcy5wXG4gICAgY29uc3QgZGVmYXVsdFN0eWxlID0ge1xuICAgICAganVzdGlmeUNvbnRlbnQ6IFwiY2VudGVyXCIsXG4gICAgICBwYWRkaW5nOiA4LFxuICAgICAgb3ZlcmZsb3c6IFwiaGlkZGVuXCJcbiAgICB9XG5cbiAgICBpZiAoc3R5bGVVSSkge1xuICAgICAgT2JqZWN0LmFzc2lnbihkZWZhdWx0U3R5bGUsIHtcbiAgICAgICAgYmFja2dyb3VuZENvbG9yOiBldmVuID8gXCIjZjVmNWY1XCIgOiBcIiNmZmZcIlxuICAgICAgfSlcbiAgICB9XG5cbiAgICBpZiAodHlwZSA9PSBcImFjdGlvbnNcIikge1xuICAgICAgZGVmYXVsdFN0eWxlLmZsZXhEaXJlY3Rpb24gPSBcInJvd1wiXG4gICAgICBkZWZhdWx0U3R5bGUuYWxpZ25JdGVtcyA9IFwiY2VudGVyXCJcblxuICAgICAgaWYgKHRoaXMudHQubWRVcCkge1xuICAgICAgICBkZWZhdWx0U3R5bGUubWFyZ2luTGVmdCA9IFwiYXV0b1wiXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkZWZhdWx0U3R5bGUubWFyZ2luUmlnaHQgPSBcImF1dG9cIlxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodGhpcy50dC5tZFVwICYmIHN0eWxlVUkpIHtcbiAgICAgIGRlZmF1bHRTdHlsZS5ib3JkZXJSaWdodCA9IFwiMXB4IHNvbGlkICNkYmRiZGJcIlxuICAgIH1cblxuICAgIGNvbnN0IGFjdHVhbFN0eWxlID0gT2JqZWN0LmFzc2lnbihcbiAgICAgIGRlZmF1bHRTdHlsZSxcbiAgICAgIHN0eWxlXG4gICAgKVxuXG4gICAgcmV0dXJuIGFjdHVhbFN0eWxlXG4gIH1cblxuICAvKipcbiAgICogQnVpbGQgdGhlIGJhc2Ugc3R5bGUgZm9yIGEgaGVhZGVyIGNvbHVtbi5cbiAgICogQHBhcmFtIHtvYmplY3R9IGFyZ3NcbiAgICogQHBhcmFtIHtvYmplY3R9IGFyZ3MuY29sdW1uXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBhcmdzLmNvbHVtbkluZGV4XG4gICAqIEBwYXJhbSB7b2JqZWN0fSBhcmdzLnN0eWxlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhcmdzLnR5cGVcbiAgICogQHJldHVybnMge29iamVjdH1cbiAgICovXG4gIHN0eWxlRm9ySGVhZGVyID0gKHtjb2x1bW4sIGNvbHVtbkluZGV4LCBzdHlsZSwgdHlwZX0pID0+IHtcbiAgICBjb25zdCB7bWRVcH0gPSB0aGlzLnR0XG4gICAgcmV0dXJuIHRoaXMuY2FjaGUoXG4gICAgICBgaGVhZGVyU3R5bGUtJHt0eXBlIHx8IFwiZGVmYXVsdFwifWAsXG4gICAgICAoKSA9PiB7XG4gICAgICAgIGNvbnN0IGRlZmF1bHRTdHlsZSA9IHtcbiAgICAgICAgICBmbGV4RGlyZWN0aW9uOiBcInJvd1wiLFxuICAgICAgICAgIGFsaWduSXRlbXM6IFwiY2VudGVyXCIsXG4gICAgICAgICAgcGFkZGluZzogOFxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHR5cGUgIT0gXCJhY3Rpb25zXCIgJiYgbWRVcCAmJiB0aGlzLnAuc3R5bGVVSSkge1xuICAgICAgICAgIGRlZmF1bHRTdHlsZS5ib3JkZXJSaWdodCA9IFwiMXB4IHNvbGlkICNkYmRiZGJcIlxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oZGVmYXVsdFN0eWxlLCBzdHlsZSlcbiAgICAgIH0sXG4gICAgICBbbWRVcCwgdGhpcy5wLnN0eWxlVUksIHR5cGUsIHN0eWxlXVxuICAgIClcbiAgfVxuXG4gIC8qKlxuICAgKiBQcm92aWRlIGEgYm9sZCBoZWFkZXIgdGV4dCBzdHlsZS5cbiAgICogQHJldHVybnMge29iamVjdH1cbiAgICovXG4gIHN0eWxlRm9ySGVhZGVyVGV4dCA9ICgpID0+IHtcbiAgICByZXR1cm4gc3R5bGVzLmhlYWRlclRleHRTdHlsZSB8fD0ge2ZvbnRXZWlnaHQ6IFwiYm9sZFwifVxuICB9XG5cbiAgLyoqXG4gICAqIFN0eWxlIGZvciBhIHRhYmxlIHJvdyB3cmFwcGVyLlxuICAgKiBAcGFyYW0ge29iamVjdH0gW2FyZ3NdXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gW2FyZ3MuZXZlbl1cbiAgICogQHJldHVybnMge29iamVjdH1cbiAgICovXG4gIHN0eWxlRm9yUm93ID0gKHtldmVufSA9IHt9KSA9PiB7XG4gICAgcmV0dXJuIHRoaXMuY2FjaGUoXG4gICAgICBgcm93U3R5bGUtJHtldmVuID8gXCJldmVuXCIgOiBcIm9kZFwifWAsXG4gICAgICAoKSA9PiB7XG4gICAgICAgIGNvbnN0IGFjdHVhbFN0eWxlID0ge1xuICAgICAgICAgIGZsZXg6IDEsXG4gICAgICAgICAgYWxpZ25JdGVtczogXCJzdHJldGNoXCJcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChldmVuICYmIHRoaXMucC5zdHlsZVVJKSB7XG4gICAgICAgICAgYWN0dWFsU3R5bGUuYmFja2dyb3VuZENvbG9yID0gXCIjZjVmNWY1XCJcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBhY3R1YWxTdHlsZVxuICAgICAgfSxcbiAgICAgIFtldmVuLCB0aGlzLnAuc3R5bGVVSV1cbiAgICApXG4gIH1cblxuICAvKipcbiAgICogU3R5bGUgZm9yIHRoZSBoZWFkZXIgcm93IHdyYXBwZXIuXG4gICAqIEByZXR1cm5zIHtvYmplY3R9XG4gICAqL1xuICBzdHlsZUZvclJvd0hlYWRlciA9ICgpID0+IHtcbiAgICByZXR1cm4gdGhpcy5jYWNoZShcbiAgICAgIFwicm93SGVhZGVyU3R5bGVcIixcbiAgICAgICgpID0+ICh7XG4gICAgICAgIGZsZXg6IDEsXG4gICAgICAgIGFsaWduSXRlbXM6IFwic3RyZXRjaFwiXG4gICAgICB9KVxuICAgIClcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge1RhYmxlUmVuZGVyQXJnc30gW2FyZ3NdXG4gICAqIEByZXR1cm5zIHtpbXBvcnQoXCJyZWFjdFwiKS5SZWFjdE5vZGV9XG4gICAqL1xuICB0YWJsZUNvbnRyb2xzKHttb2RlbHMsIHFQYXJhbXMsIHF1ZXJ5LCByZXN1bHR9ID0ge30pIHtcbiAgICBjb25zdCB7Y29udHJvbHN9ID0gdGhpcy5wcm9wc1xuICAgIGNvbnN0IHtzaG93U2V0dGluZ3N9ID0gdGhpcy5zXG4gICAgY29uc3QgY29sbGVjdGlvbkFyZ3MgPSBkaWdzKHRoaXMuY29sbGVjdGlvbiwgXCJtb2RlbHNcIiwgXCJxUGFyYW1zXCIsIFwicXVlcnlcIiwgXCJyZXN1bHRcIilcbiAgICBjb25zdCBhY3R1YWxNb2RlbHMgPSBtb2RlbHMgPz8gY29sbGVjdGlvbkFyZ3MubW9kZWxzID8/IFtdXG4gICAgY29uc3QgYWN0dWFsUVBhcmFtcyA9IHFQYXJhbXMgPz8gY29sbGVjdGlvbkFyZ3MucVBhcmFtc1xuICAgIGNvbnN0IGFjdHVhbFF1ZXJ5ID0gcXVlcnkgPz8gY29sbGVjdGlvbkFyZ3MucXVlcnlcbiAgICBjb25zdCBhY3R1YWxSZXN1bHQgPSByZXN1bHQgPz8gY29sbGVjdGlvbkFyZ3MucmVzdWx0XG5cbiAgICByZXR1cm4gKFxuICAgICAgPFZpZXcgc3R5bGU9e3N0eWxlcy50YWJsZUNvbnRyb2xzUm9vdFZpZXcgfHw9IHtmbGV4RGlyZWN0aW9uOiBcInJvd1wifX0+XG4gICAgICAgIHtjb250cm9scyAmJiBjb250cm9scyh7bW9kZWxzOiBhY3R1YWxNb2RlbHMsIHFQYXJhbXM6IGFjdHVhbFFQYXJhbXMsIHF1ZXJ5OiBhY3R1YWxRdWVyeSwgcmVzdWx0OiBhY3R1YWxSZXN1bHR9KX1cbiAgICAgICAgPFByZXNzYWJsZVxuICAgICAgICAgIGRhdGFTZXQ9e2RhdGFTZXRzLmZpbHRlckJ1dHRvbiB8fD0ge2NsYXNzOiBcImZpbHRlci1idXR0b25cIn19XG4gICAgICAgICAgb25QcmVzcz17dGhpcy50dC5vbkZpbHRlckNsaWNrZWR9XG4gICAgICAgICAgdGVzdElEPVwiZmlsdGVyQnV0dG9uXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxJY29uIG5hbWU9XCJzZWFyY2hcIiBzaXplPXsyMH0gLz5cbiAgICAgICAgPC9QcmVzc2FibGU+XG4gICAgICAgIDxWaWV3PlxuICAgICAgICAgIHtzaG93U2V0dGluZ3MgJiZcbiAgICAgICAgICAgIDxTZXR0aW5ncyBvblJlcXVlc3RDbG9zZT17dGhpcy50dC5vblJlcXVlc3RDbG9zZVNldHRpbmdzfSB0YWJsZT17dGhpc30gLz5cbiAgICAgICAgICB9XG4gICAgICAgICAgPFByZXNzYWJsZSBvblByZXNzPXt0aGlzLnR0Lm9uU2V0dGluZ3NDbGlja2VkfSB0ZXN0SUQ9XCJzZXR0aW5ncy1idXR0b25cIj5cbiAgICAgICAgICAgIDxJY29uIG5hbWU9XCJnZWFyXCIgc2l6ZT17MjB9IC8+XG4gICAgICAgICAgPC9QcmVzc2FibGU+XG4gICAgICAgIDwvVmlldz5cbiAgICAgIDwvVmlldz5cbiAgICApXG4gIH1cblxuICB0YWJsZUZvb3RlcigpIHtcbiAgICBjb25zdCB7cmVzdWx0fSA9IGRpZ3ModGhpcy5jb2xsZWN0aW9uLCBcInJlc3VsdFwiKVxuICAgIGNvbnN0IGN1cnJlbnRQYWdlID0gcmVzdWx0LmN1cnJlbnRQYWdlKClcbiAgICBjb25zdCB0b3RhbENvdW50ID0gcmVzdWx0LnRvdGFsQ291bnQoKVxuICAgIGNvbnN0IHBlclBhZ2UgPSByZXN1bHQucGVyUGFnZSgpXG4gICAgY29uc3QgdG8gPSBNYXRoLm1pbihjdXJyZW50UGFnZSAqIHBlclBhZ2UsIHRvdGFsQ291bnQpXG4gICAgY29uc3QgZGVmYXVsdFZhbHVlID0gXCJTaG93aW5nICV7ZnJvbX0gdG8gJXt0b30gb3V0IG9mICV7dG90YWxfY291bnR9IHRvdGFsLlwiXG4gICAgbGV0IGZyb20gPSAoKGN1cnJlbnRQYWdlIC0gMSkgKiBwZXJQYWdlKSArIDFcblxuICAgIGlmICh0byA9PT0gMCkgZnJvbSA9IDBcblxuICAgIHJldHVybiAoXG4gICAgICA8VmlldyBzdHlsZT17c3R5bGVzLnRhYmxlRm9vdGVyUm9vdFZpZXdTdHlsZSB8fD0ge2ZsZXhEaXJlY3Rpb246IFwicm93XCIsIGp1c3RpZnlDb250ZW50OiBcInNwYWNlLWJldHdlZW5cIiwgbWFyZ2luVG9wOiAxMH19PlxuICAgICAgICA8VmlldyBkYXRhU2V0PXtkYXRhU2V0cy5zaG93aW5nQ291bnRzIHx8PSB7Y2xhc3M6IFwic2hvd2luZy1jb3VudHNcIn19IHN0eWxlPXtzdHlsZXMuc2hvd2luZ0NvdW50cyB8fD0ge2ZsZXhEaXJlY3Rpb246IFwicm93XCJ9fT5cbiAgICAgICAgICA8VGV4dD5cbiAgICAgICAgICAgIHt0aGlzLnR0LnQoXCIuc2hvd2luZ19mcm9tX3RvX291dF9vZl90b3RhbFwiLCB7ZGVmYXVsdFZhbHVlLCBmcm9tLCB0bywgdG90YWxfY291bnQ6IHRvdGFsQ291bnR9KX1cbiAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAge3RoaXMucC53b3JrcGxhY2UgJiYgdGhpcy5zLmN1cnJlbnRXb3JrcGxhY2VDb3VudCAhPT0gbnVsbCAmJlxuICAgICAgICAgICAgPFRleHQgc3R5bGU9e3N0eWxlcy54U2VsZWN0ZWRUZXh0U3R5bGUgfHw9IHttYXJnaW5MZWZ0OiAzfX0+XG4gICAgICAgICAgICAgIHt0aGlzLnR0LnQoXCIueF9zZWxlY3RlZFwiLCB7ZGVmYXVsdFZhbHVlOiBcIiV7c2VsZWN0ZWR9IHNlbGVjdGVkLlwiLCBzZWxlY3RlZDogdGhpcy5zLmN1cnJlbnRXb3JrcGxhY2VDb3VudH0pfVxuICAgICAgICAgICAgPC9UZXh0PlxuICAgICAgICAgIH1cbiAgICAgICAgPC9WaWV3PlxuICAgICAgICA8Vmlldz5cbiAgICAgICAgICA8U2VsZWN0XG4gICAgICAgICAgICBjbGFzc05hbWU9XCJwZXItcGFnZS1zZWxlY3RcIlxuICAgICAgICAgICAgZGVmYXVsdFZhbHVlPXtwZXJQYWdlfVxuICAgICAgICAgICAgb25DaGFuZ2U9e3RoaXMudHQub25QZXJQYWdlQ2hhbmdlZH1cbiAgICAgICAgICAgIG9wdGlvbnM9e3BhZ2luYXRpb25PcHRpb25zfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvVmlldz5cbiAgICAgIDwvVmlldz5cbiAgICApXG4gIH1cblxuICBjbGFzc05hbWUoKSB7XG4gICAgY29uc3QgY2xhc3NOYW1lcyA9IFtcImFwaS1tYWtlci0tdGFibGVcIl1cblxuICAgIGlmICh0aGlzLnByb3BzLmNsYXNzTmFtZSkge1xuICAgICAgY2xhc3NOYW1lcy5wdXNoKHRoaXMucHJvcHMuY2xhc3NOYW1lKVxuICAgIH1cblxuICAgIHJldHVybiBjbGFzc05hbWVzLmpvaW4oXCIgXCIpXG4gIH1cblxuICAvKipcbiAgICogQnVpbGQgcGVyLWNvbHVtbiBwcm9wcyBmb3IgdGFibGUgY2VsbHMuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBjb2x1bW5cbiAgICogQHJldHVybnMge29iamVjdH1cbiAgICovXG4gIGNvbHVtblByb3BzKGNvbHVtbikge1xuICAgIGxldCBjYWNoZUtleSA9IFwiZGVmYXVsdFwiXG5cbiAgICBpZiAoY29sdW1uLnRleHRDZW50ZXIpIHtcbiAgICAgIGNhY2hlS2V5ID0gXCJjZW50ZXJcIlxuICAgIH0gZWxzZSBpZiAoY29sdW1uLnRleHRSaWdodCkge1xuICAgICAgY2FjaGVLZXkgPSBcInJpZ2h0XCJcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5jYWNoZShcbiAgICAgIGBjb2x1bW5Qcm9wcy0ke2NhY2hlS2V5fWAsXG4gICAgICAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHByb3BzID0ge31cblxuICAgICAgICBpZiAoY29sdW1uLnRleHRDZW50ZXIpIHtcbiAgICAgICAgICBwcm9wcy5zdHlsZSB8fD0ge31cbiAgICAgICAgICBwcm9wcy5zdHlsZS50ZXh0QWxpZ24gPSBcImNlbnRlclwiXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY29sdW1uLnRleHRSaWdodCkge1xuICAgICAgICAgIHByb3BzLnN0eWxlIHx8PSB7fVxuICAgICAgICAgIHByb3BzLnN0eWxlLnRleHRBbGlnbiA9IFwicmlnaHRcIlxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHByb3BzXG4gICAgICB9LFxuICAgICAgW2NvbHVtbi50ZXh0Q2VudGVyLCBjb2x1bW4udGV4dFJpZ2h0XVxuICAgIClcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZCBwZXItY29sdW1uIHByb3BzIGZvciBoZWFkZXIgY2VsbHMuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBjb2x1bW5cbiAgICogQHJldHVybnMge29iamVjdH1cbiAgICovXG4gIGhlYWRlclByb3BzKGNvbHVtbikge1xuICAgIGxldCBjYWNoZUtleSA9IFwiZGVmYXVsdFwiXG5cbiAgICBpZiAoY29sdW1uLnRleHRDZW50ZXIpIHtcbiAgICAgIGNhY2hlS2V5ID0gXCJjZW50ZXJcIlxuICAgIH0gZWxzZSBpZiAoY29sdW1uLnRleHRSaWdodCkge1xuICAgICAgY2FjaGVLZXkgPSBcInJpZ2h0XCJcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5jYWNoZShcbiAgICAgIGBoZWFkZXJQcm9wcy0ke2NhY2hlS2V5fWAsXG4gICAgICAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHByb3BzID0ge31cblxuICAgICAgICBpZiAoY29sdW1uLnRleHRDZW50ZXIpIHtcbiAgICAgICAgICBwcm9wcy5zdHlsZSB8fD0ge31cbiAgICAgICAgICBwcm9wcy5zdHlsZS5qdXN0aWZ5Q29udGVudCA9IFwiY2VudGVyXCJcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjb2x1bW4udGV4dFJpZ2h0KSB7XG4gICAgICAgICAgcHJvcHMuc3R5bGUgfHw9IHt9XG4gICAgICAgICAgcHJvcHMuc3R5bGUuanVzdGlmeUNvbnRlbnQgPSBcImVuZFwiXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcHJvcHNcbiAgICAgIH0sXG4gICAgICBbY29sdW1uLnRleHRDZW50ZXIsIGNvbHVtbi50ZXh0UmlnaHRdXG4gICAgKVxuICB9XG5cbiAgLyoqXG4gICAqIENvbHVtbiB3aWR0aHMga2V5ZWQgYnkgaWRlbnRpZmllciBmb3IgdGFibGUgcm93cy5cbiAgICogQHJldHVybnMge29iamVjdH1cbiAgICovXG4gIGNvbHVtbldpZHRocygpIHtcbiAgICBjb25zdCBjb2x1bW5XaWR0aHMgPSB7fVxuXG4gICAgZm9yIChjb25zdCBjb2x1bW4gb2YgdGhpcy5zLnByZXBhcmVkQ29sdW1ucykge1xuICAgICAgY29sdW1uV2lkdGhzW2NvbHVtbi50YWJsZVNldHRpbmdDb2x1bW4uaWRlbnRpZmllcigpXSA9IGNvbHVtbi53aWR0aFxuICAgIH1cblxuICAgIHJldHVybiBjb2x1bW5XaWR0aHNcbiAgfVxuXG4gIGhlYWRlcnNDb250ZW50RnJvbUNvbHVtbnMgPSAoKSA9PiB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxEcmFnZ2FibGVTb3J0XG4gICAgICAgIGFjdGl2ZUl0ZW1TdHlsZT17dGhpcy50dC5kcmFnZ2VkSGVhZGVyU3R5bGUoKX1cbiAgICAgICAgZGF0YT17dGhpcy5zLmNvbHVtbnNUb1Nob3d9XG4gICAgICAgIGV2ZW50cz17dGhpcy50dC5kcmFnZ2FibGVTb3J0RXZlbnRzfVxuICAgICAgICBob3Jpem9udGFsXG4gICAgICAgIGtleUV4dHJhY3Rvcj17dGhpcy50dC5kcmFnTGlzdGtleUV4dHJhY3Rvcn1cbiAgICAgICAgb25JdGVtTW92ZWQ9e3RoaXMudHQub25JdGVtTW92ZWR9XG4gICAgICAgIG9uUmVvcmRlcmVkPXt0aGlzLnR0Lm9uUmVvcmRlcmVkfVxuICAgICAgICByZW5kZXJJdGVtPXt0aGlzLnR0LmRyYWdMaXN0UmVuZGVySXRlbUNvbnRlbnR9XG4gICAgICAvPlxuICAgIClcbiAgfVxuXG4gIGRyYWdMaXN0Q2FjaGVLZXlFeHRyYWN0b3IgPSAoaXRlbSkgPT4gYCR7aXRlbS50YWJsZVNldHRpbmdDb2x1bW4uaWRlbnRpZmllcigpfS0ke3RoaXMucy5yZXNpemluZ31gXG4gIGRyYWdMaXN0a2V5RXh0cmFjdG9yID0gKGl0ZW0pID0+IGl0ZW0udGFibGVTZXR0aW5nQ29sdW1uLmlkZW50aWZpZXIoKVxuXG4gIG9uSXRlbU1vdmVkID0gKHthbmltYXRpb25BcmdzLCBpdGVtLCB4LCB5fSkgPT4ge1xuICAgIG1vdmVEcmFnZ2VkQ29sdW1uUG9zaXRpb24oe2FuaW1hdGlvbkFyZ3MsIGl0ZW0sIHRpbWluZzogQW5pbWF0ZWQudGltaW5nLCB4LCB5fSlcbiAgfVxuXG4gIC8qKlxuICAgKiBQZXJzaXN0IHRoZSBuZXcgY29sdW1uIG9yZGVyaW5nLlxuICAgKiBAcGFyYW0ge29iamVjdH0gYXJnc1xuICAgKiBAcGFyYW0ge29iamVjdH0gYXJncy5mcm9tSXRlbVxuICAgKiBAcGFyYW0ge29iamVjdH0gYXJncy50b0l0ZW1cbiAgICogQHBhcmFtIHtudW1iZXJ9IGFyZ3MuZnJvbVBvc2l0aW9uXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBhcmdzLnRvUG9zaXRpb25cbiAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59XG4gICAqL1xuICBvblJlb3JkZXJlZCA9IGFzeW5jICh7ZnJvbUl0ZW0sIGZyb21Qb3NpdGlvbiwgdG9JdGVtLCB0b1Bvc2l0aW9ufSkgPT4ge1xuICAgIGlmIChmcm9tUG9zaXRpb24gPT0gdG9Qb3NpdGlvbikgcmV0dXJuIC8vIE9ubHkgZG8gcmVxdWVzdHMgYW5kIHF1ZXJpZXMgaWYgY2hhbmdlZFxuXG4gICAgY29uc3QgVGFibGVTZXR0aW5nQ29sdW1uID0gZnJvbUl0ZW0udGFibGVTZXR0aW5nQ29sdW1uLmNvbnN0cnVjdG9yXG4gICAgY29uc3QgdG9Db2x1bW4gPSBhd2FpdCBUYWJsZVNldHRpbmdDb2x1bW4uZmluZCh0b0l0ZW0udGFibGVTZXR0aW5nQ29sdW1uLmlkKCkpIC8vIE5lZWQgdG8gbG9hZCBsYXRlc3QgcG9zaXRpb24gYmVjYXVzZSBBY3RzQXNMaXN0IG1pZ2h0IGhhdmUgY2hhbmdlZCBpdFxuXG4gICAgYXdhaXQgZnJvbUl0ZW0udGFibGVTZXR0aW5nQ29sdW1uLnVwZGF0ZSh7cG9zaXRpb246IHRvQ29sdW1uLnBvc2l0aW9uKCl9KVxuICB9XG5cbiAgZHJhZ0xpc3RSZW5kZXJJdGVtQ29udGVudCA9ICh7aXNBY3RpdmUsIGl0ZW0sIHRvdWNoUHJvcHN9KSA9PiB7XG4gICAgY29uc3Qge2FuaW1hdGVkV2lkdGgsIGFuaW1hdGVkWkluZGV4LCBjb2x1bW4sIHRhYmxlU2V0dGluZ0NvbHVtbn0gPSBpdGVtXG5cbiAgICByZXR1cm4gKFxuICAgICAgPEhlYWRlckNvbHVtblxuICAgICAgICBhY3RpdmU9e2lzQWN0aXZlfVxuICAgICAgICBhbmltYXRlZFdpZHRoPXthbmltYXRlZFdpZHRofVxuICAgICAgICBhbmltYXRlZFpJbmRleD17YW5pbWF0ZWRaSW5kZXh9XG4gICAgICAgIGNvbHVtbj17Y29sdW1ufVxuICAgICAgICBrZXk9e3RhYmxlU2V0dGluZ0NvbHVtbi5pZGVudGlmaWVyKCl9XG4gICAgICAgIHJlc2l6aW5nPXt0aGlzLnMucmVzaXppbmd9XG4gICAgICAgIHRhYmxlPXt0aGlzfVxuICAgICAgICB0YWJsZVNldHRpbmdDb2x1bW49e3RhYmxlU2V0dGluZ0NvbHVtbn1cbiAgICAgICAgdG91Y2hQcm9wcz17dG91Y2hQcm9wc31cbiAgICAgICAgd2lkdGhzPXt0aGlzLnMud2lkdGhzfVxuICAgICAgLz5cbiAgICApXG4gIH1cblxuICBoZWFkZXJDbGFzc05hbWVGb3JDb2x1bW4oY29sdW1uKSB7XG4gICAgY29uc3QgY2xhc3NOYW1lcyA9IFtdXG5cbiAgICBpZiAoY29sdW1uLmNvbW1vblByb3BzICYmIGNvbHVtbi5jb21tb25Qcm9wcy5jbGFzc05hbWUpIGNsYXNzTmFtZXMucHVzaChjb2x1bW4uY29tbW9uUHJvcHMuY2xhc3NOYW1lKVxuICAgIGlmIChjb2x1bW4uaGVhZGVyUHJvcHMgJiYgY29sdW1uLmhlYWRlclByb3BzLmNsYXNzTmFtZSkgY2xhc3NOYW1lcy5wdXNoKGNvbHVtbi5oZWFkZXJQcm9wcy5jbGFzc05hbWUpXG5cbiAgICByZXR1cm4gY2xhc3NOYW1lc1xuICB9XG5cbiAgaGVhZGVyTGFiZWxGb3JDb2x1bW4oY29sdW1uKSB7XG4gICAgY29uc3Qge21vZGVsQ2xhc3N9ID0gdGhpcy5wXG5cbiAgICBpZiAoXCJsYWJlbFwiIGluIGNvbHVtbikge1xuICAgICAgaWYgKHR5cGVvZiBjb2x1bW4ubGFiZWwgPT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIHJldHVybiBjb2x1bW4ubGFiZWwoKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGNvbHVtbi5sYWJlbFxuICAgICAgfVxuICAgIH1cblxuICAgIGxldCBjdXJyZW50TW9kZWxDbGFzcyA9IG1vZGVsQ2xhc3NcblxuICAgIC8vIENhbGN1bGF0ZSBjdXJyZW50IG1vZGVsIGNsYXNzIHRocm91Z2ggcGF0aFxuICAgIGlmIChjb2x1bW4ucGF0aCkge1xuICAgICAgZm9yIChjb25zdCBwYXRoUGFydCBvZiBjb2x1bW4ucGF0aCkge1xuICAgICAgICBjb25zdCByZWxhdGlvbnNoaXBzID0gZGlnZyhjdXJyZW50TW9kZWxDbGFzcy5tb2RlbENsYXNzRGF0YSgpLCBcInJlbGF0aW9uc2hpcHNcIilcbiAgICAgICAgY29uc3QgcmVsYXRpb25zaGlwID0gcmVsYXRpb25zaGlwcy5maW5kKChyZWxhdGlvbnNoaXBJbkFycmF5KSA9PiByZWxhdGlvbnNoaXBJbkFycmF5Lm5hbWUgPT0gaW5mbGVjdGlvbi51bmRlcnNjb3JlKHBhdGhQYXJ0KSlcblxuICAgICAgICBjdXJyZW50TW9kZWxDbGFzcyA9IG1vZGVsQ2xhc3NSZXF1aXJlKGRpZ2cocmVsYXRpb25zaGlwLCBcInJlc291cmNlX25hbWVcIikpXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGNvbHVtbi5hdHRyaWJ1dGUpIHJldHVybiBjdXJyZW50TW9kZWxDbGFzcy5odW1hbkF0dHJpYnV0ZU5hbWUoY29sdW1uLmF0dHJpYnV0ZSlcblxuICAgIHRocm93IG5ldyBFcnJvcihcIk5vICdsYWJlbCcgb3IgJ2F0dHJpYnV0ZScgd2FzIGdpdmVuXCIpXG4gIH1cblxuICAvKipcbiAgICogUHJvdmlkZSBzdHlsaW5nIGZvciBhIGRyYWdnZWQgaGVhZGVyIGl0ZW0uXG4gICAqIEByZXR1cm5zIHtvYmplY3R8dW5kZWZpbmVkfVxuICAgKi9cbiAgZHJhZ2dlZEhlYWRlclN0eWxlID0gKCkgPT4ge1xuICAgIGlmICh0aGlzLnAuZHJhZ2dlZEhlYWRlclN0eWxlICE9PSB1bmRlZmluZWQpIHJldHVybiB0aGlzLnAuZHJhZ2dlZEhlYWRlclN0eWxlXG4gICAgaWYgKHRoaXMucC5zdHlsZVVJKSByZXR1cm4gdW5kZWZpbmVkXG5cbiAgICByZXR1cm4gc3R5bGVzLmRyYWdnZWRIZWFkZXJTdHlsZVRyYW5zcGFyZW50IHx8PSB7YmFja2dyb3VuZENvbG9yOiBcInRyYW5zcGFyZW50XCJ9XG4gIH1cblxuICBvbkZpbHRlckZvcm1TdWJtaXQgPSAoKSA9PiB0aGlzLnN1Ym1pdEZpbHRlcigpXG4gIG9uUmVxdWVzdENsb3NlU2V0dGluZ3MgPSAoKSA9PiB7XG4gICAgdGhpcy5zLnNob3dTZXR0aW5ncyA9IGZhbHNlXG4gIH1cblxuICBvblNldHRpbmdzQ2xpY2tlZCA9IChlKSA9PiB7XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpXG5cbiAgICB0aGlzLnMuc2hvd1NldHRpbmdzID0gIXRoaXMucy5zaG93U2V0dGluZ3NcbiAgfVxuXG4gIHN1Ym1pdEZpbHRlciA9ICgpID0+IHtcbiAgICBjb25zdCB7YXBwSGlzdG9yeX0gPSB0aGlzLnByb3BzXG4gICAgY29uc3Qge3F1ZXJ5UU5hbWV9ID0gdGhpcy5zXG4gICAgY29uc3QgY2hhbmdlUGFyYW1zUGFyYW1zID0ge31cbiAgICBjb25zdCBxUGFyYW1zID0gdGhpcy5zLmZpbHRlckZvcm0uYXNPYmplY3QoKVxuXG4gICAgaWYgKFBsYXRmb3JtLk9TID09IFwid2ViXCIpIHtcbiAgICAgIGNvbnN0IGZpbHRlckZvcm0gPSBkaWdnKHRoaXMudHQuZmlsdGVyRm9ybVJlZiwgXCJjdXJyZW50XCIpXG4gICAgICBjb25zdCBuYXZ0aXZlRm9ybVBhcmFtcyA9IFBhcmFtcy5zZXJpYWxpemVGb3JtKGZpbHRlckZvcm0pXG5cbiAgICAgIGluY29ycG9yYXRlKHFQYXJhbXMsIG5hdnRpdmVGb3JtUGFyYW1zKVxuICAgIH1cblxuICAgIGNoYW5nZVBhcmFtc1BhcmFtc1txdWVyeVFOYW1lXSA9IEpTT04uc3RyaW5naWZ5KHFQYXJhbXMpXG5cbiAgICBQYXJhbXMuY2hhbmdlUGFyYW1zKGNoYW5nZVBhcmFtc1BhcmFtcywge2FwcEhpc3Rvcnl9KVxuICB9XG5cbiAgc3VibWl0RmlsdGVyRGVib3VuY2UgPSBkZWJvdW5jZSh0aGlzLnR0LnN1Ym1pdEZpbHRlcilcbn0pKVxuIl19
|
|
983
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuanMiLCJzb3VyY2VSb290IjoiL3NyYy8iLCJzb3VyY2VzIjpbInRhYmxlL3RhYmxlLmpzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsWUFBWTtBQUNaLHVGQUF1RjtBQUN2RiwwRUFBMEU7QUFDMUUsNEVBQTRFO0FBQzVFLHdEQUF3RDtBQUN4RCxPQUFPLEVBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUMsTUFBTSxXQUFXLENBQUE7QUFDekMsT0FBTyxLQUFLLEVBQUUsRUFBQyxhQUFhLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFDLE1BQU0sT0FBTyxDQUFBO0FBQ2xGLE9BQU8sRUFBQyxRQUFRLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUMsTUFBTSxjQUFjLENBQUE7QUFDaEUsT0FBTyxjQUFjLE1BQU0sY0FBYyxDQUFBO0FBQ3pDLE9BQU8sZUFBZSxNQUFNLG9CQUFvQixDQUFBO0FBQ2hELE9BQU8sd0JBQXdCLE1BQU0sZ0NBQWdDLENBQUE7QUFDckUsT0FBTyxJQUFJLE1BQU0sbUJBQW1CLENBQUE7QUFDcEMsT0FBTyxVQUFVLE1BQU0sWUFBWSxDQUFBO0FBQ25DLE9BQU8sVUFBVSxNQUFNLGtCQUFrQixDQUFBO0FBQ3pDLE9BQU8sYUFBYSxNQUFNLHFCQUFxQixDQUFBO0FBQy9DLE9BQU8sUUFBUSxNQUFNLFVBQVUsQ0FBQTtBQUMvQixPQUFPLGFBQWEsTUFBTSx5QkFBeUIsQ0FBQTtBQUNuRCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sZUFBZSxDQUFBO0FBQzFDLE9BQU8sT0FBTyxNQUFNLGlCQUFpQixDQUFBO0FBQ3JDLE9BQU8sUUFBUSxNQUFNLHdCQUF3QixDQUFBO0FBQzdDLE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSxTQUFTLENBQUE7QUFDNUIsT0FBTyxNQUFNLE1BQU0scUJBQXFCLENBQUE7QUFDeEMsT0FBTyxZQUFZLE1BQU0saUJBQWlCLENBQUE7QUFDMUMsT0FBTyxZQUFZLE1BQU0saUJBQWlCLENBQUE7QUFDMUMsT0FBTyxJQUFJLE1BQU0sZUFBZSxDQUFBO0FBQ2hDLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxjQUFjLENBQUE7QUFDeEMsT0FBTyxLQUFLLFVBQVUsTUFBTSxZQUFZLENBQUE7QUFDeEMsT0FBTyxJQUFJLE1BQU0saUNBQWlDLENBQUE7QUFDbEQsT0FBTyxpQkFBaUIsTUFBTSwyQkFBMkIsQ0FBQTtBQUN6RCxPQUFPLFFBQVEsTUFBTSxhQUFhLENBQUE7QUFDbEMsT0FBTyx5QkFBeUIsTUFBTSxtQ0FBbUMsQ0FBQTtBQUN6RSxPQUFPLFFBQVEsTUFBTSx1QkFBdUIsQ0FBQTtBQUM1QyxPQUFPLE1BQU0sTUFBTSxjQUFjLENBQUE7QUFDakMsT0FBTyxTQUFTLE1BQU0sWUFBWSxDQUFBO0FBQ2xDLE9BQU8sR0FBRyxNQUFNLGtCQUFrQixDQUFBO0FBQ2xDLE9BQU8sZ0JBQWdCLE1BQU0sd0JBQXdCLENBQUE7QUFDckQsT0FBTyxNQUFNLE1BQU0sa0JBQWtCLENBQUE7QUFDckMsT0FBTyxRQUFRLE1BQU0sa0JBQWtCLENBQUE7QUFDdkMsT0FBTyxFQUFDLGNBQWMsRUFBRSxjQUFjLEVBQUMsTUFBTSw0Q0FBNEMsQ0FBQTtBQUN6RixPQUFPLDBCQUEwQixNQUFNLG9DQUFvQyxDQUFBO0FBQzNFLE9BQU8sYUFBYSxNQUFNLHFCQUFxQixDQUFBO0FBQy9DLE9BQU8sSUFBSSxNQUFNLGVBQWUsQ0FBQTtBQUNoQyxPQUFPLFNBQVMsTUFBTSxXQUFXLENBQUE7QUFDakMsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHdCQUF3QixDQUFBO0FBQ3BELE9BQU8sYUFBYSxNQUFNLHNCQUFzQixDQUFBO0FBQ2hELE9BQU8sT0FBTyxNQUFNLHdDQUF3QyxDQUFBO0FBQzVELE9BQU8sZUFBZSxNQUFNLHNCQUFzQixDQUFBO0FBQ2xELE9BQU8sYUFBYSxNQUFNLHVCQUF1QixDQUFBO0FBQ2pELE9BQU8sY0FBYyxNQUFNLCtDQUErQyxDQUFBO0FBQzFFLE9BQU8sTUFBTSxNQUFNLFVBQVUsQ0FBQTtBQUM3QixPQUFPLDZCQUE2QixNQUFNLHFDQUFxQyxDQUFBO0FBRS9FOztHQUVHO0FBQ0gsTUFBTSxRQUFRLEdBQUcsRUFBRSxDQUFBO0FBQ25CLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFBO0FBQ3RELE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQTtBQUNqQixNQUFNLFlBQVksR0FBRyxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUE7QUFFN0MsOERBQThEO0FBQzlELDREQUE0RDtBQUM1RCxnRkFBZ0Y7QUFDaEYsMEZBQTBGO0FBQzFGLHdEQUF3RDtBQUN4RDs7Ozs7Ozs7R0FRRztBQUNILHlFQUF5RTtBQUN6RSxpSUFBaUk7QUFDakksdUVBQXVFO0FBQ3ZFOzs7Ozs7OztHQVFHO0FBQ0gsc0VBQXNFO0FBQ3RFLG9FQUFvRTtBQUNwRTs7Ozs7Ozs7OztHQVVHO0FBQ0g7Ozs7Ozs7OztHQVNHO0FBQ0gsNkRBQTZEO0FBQzdEOzs7Ozs7Ozs7R0FTRztBQUNILHFFQUFxRTtBQUNyRSwyRUFBMkU7QUFDM0UsK0hBQStIO0FBQy9ILHNKQUFzSjtBQUN0Siw4SEFBOEg7QUFFOUgsbURBQW1EO0FBQ25EOzs7R0FHRztBQUNILE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQywyREFBMkQsQ0FBQyxNQUFNLG1CQUFvQixTQUFRLGNBQWM7SUFDMUosS0FBSyxHQUFHO1FBQ04sVUFBVSxFQUFFLElBQUksSUFBSSxFQUFFO0tBQ3ZCLENBQUE7SUFFRCxLQUFLLEtBQUksQ0FBQztJQUVWLE1BQU07UUFDSixNQUFNLEVBQUMsSUFBSSxFQUFDLEdBQUcsYUFBYSxFQUFFLENBQUE7UUFDOUIsTUFBTSxpQkFBaUIsR0FBRyxVQUFVLENBQUMsWUFBWSxDQUFDLENBQUE7UUFDbEQsTUFBTSxLQUFLLEdBQUcsaUJBQWlCLENBQUMsS0FBSyxDQUFBO1FBQ3JDLE1BQU0sRUFBQyxVQUFVLEVBQUUsTUFBTSxFQUFFLHNCQUFzQixFQUFFLENBQUMsRUFBQyxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUE7UUFDaEUsTUFBTSxFQUFDLEtBQUssRUFBQyxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUE7UUFFekMsZUFBZSxDQUFDLE1BQU0sRUFBRSx5QkFBeUIsRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLHlCQUF5QixDQUFDLENBQUE7UUFFckYsT0FBTyxDQUNMLE1BQUMsR0FBRyxJQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsaUJBQWlCLEVBQUUsRUFBRSxNQUFNLEVBQUMsNEJBQTRCLGFBQ3ZFLEtBQUssQ0FBQyxDQUFDLENBQUMsU0FBUyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsZ0JBQWdCO29CQUM1QyxNQUFDLE1BQU0sSUFBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLGNBQWMsQ0FBQyxFQUFDLEtBQUssRUFBRSxFQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFDLEVBQUMsQ0FBQyxhQUMxRSxLQUFDLDZCQUE2QixJQUM1QixnQkFBZ0IsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixFQUMxQyxLQUFLLEVBQUUsc0JBQXNCLEVBQzdCLEtBQUssRUFBRSxNQUFNLENBQUMsa0NBQWtDLEtBQUssRUFBQyxnQkFBZ0IsRUFBRSxNQUFNLEVBQUMsRUFDL0UsS0FBSyxFQUFFLEtBQUssR0FDWixFQUNELENBQUMsSUFBSTtnQ0FDSixLQUFDLElBQUksSUFBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLHVCQUF1QixLQUFLLEVBQUMsVUFBVSxFQUFFLENBQUMsRUFBQyxZQUM1RCxDQUFDLENBQUMsbUJBQW1CLEVBQUUsRUFBQyxZQUFZLEVBQUUsa0JBQWtCLEVBQUMsQ0FBQyxHQUN0RCxJQUVGLEVBRVYsQ0FBQyxJQUFJO29CQUNKLEtBQUMsTUFBTSxJQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsY0FBYyxDQUFDLEVBQUMsS0FBSyxFQUFFLEVBQUUsRUFBQyxDQUFDLFlBQzlDLEtBQUMsWUFBWSxJQUFDLGVBQWUsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLGVBQWUsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEdBQUksR0FDL0UsRUFFVixJQUFJO29CQUNILDhCQUNHLEtBQUssQ0FBQyx5QkFBeUIsRUFBRSxFQUNsQyxLQUFDLE1BQU0sSUFBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLGNBQWMsQ0FBQyxFQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBQyxDQUFDLEdBQUksSUFDcEUsSUFFRCxDQUNQLENBQUE7SUFDSCxDQUFDO0lBRUQseUJBQXlCLEdBQUcsR0FBRyxFQUFFO1FBQy9CLElBQUksQ0FBQyxDQUFDLENBQUMsVUFBVSxHQUFHLElBQUksSUFBSSxFQUFFLENBQUE7SUFDaEMsQ0FBQyxDQUFBO0NBQ0YsQ0FBQyxDQUFDLENBQUE7QUFFSDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBdUNHO0FBQ0g7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXdCRztBQUNILGVBQWUsSUFBSSxDQUFDLGNBQWMsQ0FBQywrQ0FBK0MsQ0FBQyxNQUFNLGFBQWMsU0FBUSxjQUFjO0lBQzNIOztPQUVHO0lBQ0gsTUFBTSxDQUFDLFlBQVksR0FBRztRQUNwQixJQUFJLEVBQUUsSUFBSTtRQUNWLFdBQVcsRUFBRSxJQUFJO1FBQ2pCLGNBQWMsRUFBRSxJQUFJO1FBQ3BCLGtCQUFrQixFQUFFLFNBQVM7UUFDN0IsVUFBVSxFQUFFLElBQUk7UUFDaEIsa0JBQWtCLEVBQUUsSUFBSTtRQUN4Qix5QkFBeUIsRUFBRSxTQUFTO1FBQ3BDLHFCQUFxQixFQUFFLFNBQVM7UUFDaEMsUUFBUSxFQUFFLEVBQUU7UUFDWixNQUFNLEVBQUUsRUFBRTtRQUNWLE9BQU8sRUFBRSxJQUFJO1FBQ2IsU0FBUyxFQUFFLEtBQUs7S0FDakIsQ0FBQTtJQUVELE1BQU0sQ0FBQyxTQUFTLEdBQUc7UUFDakIsU0FBUyxFQUFFLFNBQVMsQ0FBQyxNQUFNO1FBQzNCLGNBQWMsRUFBRSxTQUFTLENBQUMsSUFBSTtRQUM5QixVQUFVLEVBQUUsU0FBUyxDQUFDLE1BQU07UUFDNUIsSUFBSSxFQUFFLFNBQVMsQ0FBQyxJQUFJO1FBQ3BCLFNBQVMsRUFBRSxTQUFTLENBQUMsTUFBTTtRQUMzQixVQUFVLEVBQUUsU0FBUyxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUM7UUFDNUMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMvRCxRQUFRLEVBQUUsU0FBUyxDQUFDLElBQUk7UUFDeEIsV0FBVyxFQUFFLFNBQVMsQ0FBQyxNQUFNO1FBQzdCLHFCQUFxQixFQUFFLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM5RSx5QkFBeUIsRUFBRSxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDbEYsYUFBYSxFQUFFLFNBQVMsQ0FBQyxNQUFNO1FBQy9CLGNBQWMsRUFBRSxTQUFTLENBQUMsSUFBSTtRQUM5QixjQUFjLEVBQUUsU0FBUyxDQUFDLE1BQU07UUFDaEMsa0JBQWtCLEVBQUUsU0FBUyxDQUFDLE1BQU07UUFDcEMsYUFBYSxFQUFFLFNBQVMsQ0FBQyxJQUFJO1FBQzdCLFVBQVUsRUFBRSxTQUFTLENBQUMsSUFBSTtRQUMxQixhQUFhLEVBQUUsU0FBUyxDQUFDLElBQUk7UUFDN0IsaUJBQWlCLEVBQUUsU0FBUyxDQUFDLEdBQUc7UUFDaEMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxLQUFLO1FBQ3hCLE1BQU0sRUFBRSxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDL0QsVUFBVSxFQUFFLFNBQVMsQ0FBQyxNQUFNO1FBQzVCLFVBQVUsRUFBRSxTQUFTLENBQUMsSUFBSSxDQUFDLFVBQVU7UUFDckMseUJBQXlCLEVBQUUsU0FBUyxDQUFDLElBQUk7UUFDekMscUJBQXFCLEVBQUUsU0FBUyxDQUFDLElBQUk7UUFDckMsY0FBYyxFQUFFLFNBQVMsQ0FBQyxJQUFJO1FBQzlCLGVBQWUsRUFBRSxTQUFTLENBQUMsSUFBSTtRQUMvQixtQkFBbUIsRUFBRSxTQUFTLENBQUMsV0FBVztRQUMxQyxRQUFRLEVBQUUsU0FBUyxDQUFDLEtBQUs7UUFDekIsV0FBVyxFQUFFLFNBQVMsQ0FBQyxJQUFJO1FBQzNCLFNBQVMsRUFBRSxTQUFTLENBQUMsTUFBTTtRQUMzQixNQUFNLEVBQUUsU0FBUyxDQUFDLE1BQU07UUFDeEIsYUFBYSxFQUFFLFNBQVMsQ0FBQyxNQUFNO1FBQy9CLE1BQU0sRUFBRSxTQUFTLENBQUMsTUFBTTtRQUN4QixPQUFPLEVBQUUsU0FBUyxDQUFDLElBQUk7UUFDdkIsYUFBYSxFQUFFLFNBQVMsQ0FBQyxJQUFJO1FBQzdCLFNBQVMsRUFBRSxTQUFTLENBQUMsSUFBSTtLQUMxQixDQUFBO0lBRUQsbUJBQW1CLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQTtJQUN4QyxNQUFNLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQTtJQUMzQiw2QkFBNkIsR0FBRyxDQUFDLENBQUE7SUFDakMsOEJBQThCLEdBQUcsQ0FBQyxDQUFBO0lBQ2xDLHlCQUF5QixHQUFHLENBQUMsQ0FBQTtJQUM3QixhQUFhLEdBQUcsSUFBSSxDQUFBO0lBQ3BCLGFBQWEsR0FBRyxDQUFDLENBQUE7SUFFakI7Ozs7Ozs7Ozs7Ozs7Ozs7O09BaUJHO0lBQ0gsWUFBWSxHQUFHLEtBQUssRUFBRSxFQUFFLEVBQUUsRUFBRTtRQUMxQixJQUFJLENBQUMsYUFBYSxJQUFJLENBQUMsQ0FBQTtRQUN2QixJQUFJLElBQUksQ0FBQyxhQUFhLEtBQUssQ0FBQztZQUFFLGNBQWMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQTtRQUV0RixJQUFJLENBQUM7WUFDSCxPQUFPLE1BQU0sRUFBRSxFQUFFLENBQUE7UUFDbkIsQ0FBQztnQkFBUyxDQUFDO1lBQ1QsSUFBSSxDQUFDLGFBQWEsSUFBSSxDQUFDLENBQUE7WUFDdkIsSUFBSSxJQUFJLENBQUMsYUFBYSxLQUFLLENBQUM7Z0JBQUUsY0FBYyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFBO1FBQ3pGLENBQUM7SUFDSCxDQUFDLENBQUE7SUFDRCxLQUFLLEdBQUc7UUFDTixPQUFPLEVBQUUsSUFBSSxDQUFDLGNBQWMsRUFBRTtRQUM5QixnQkFBZ0IsRUFBRSxTQUFTO1FBQzNCLHFCQUFxQixFQUFFLElBQUk7UUFDM0IsVUFBVSxFQUFFLElBQUk7UUFDaEIsYUFBYSxFQUFFLElBQUk7UUFDbkIsYUFBYSxFQUFFLElBQUk7UUFDbkIsVUFBVSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLGNBQWMsRUFBRSxFQUFFLGVBQWUsQ0FBQyxVQUFVO1FBQzNHLFVBQVUsRUFBRSxJQUFJLElBQUksRUFBRTtRQUN0QixtQkFBbUIsRUFBRSxJQUFJO1FBQ3pCLGtCQUFrQixFQUFFLENBQUM7UUFDckIsT0FBTyxFQUFFLFNBQVM7UUFDbEIsZUFBZSxFQUFFLFNBQVM7UUFDMUIsU0FBUyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxjQUFjLEVBQUUsRUFBRSxlQUFlLENBQUM7UUFDNUYsVUFBVSxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLGNBQWMsRUFBRSxFQUFFLGVBQWUsQ0FBQyxJQUFJO1FBQ3BHLGFBQWEsRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxjQUFjLEVBQUUsRUFBRSxlQUFlLENBQUMsT0FBTztRQUMxRyxVQUFVLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsY0FBYyxFQUFFLEVBQUUsZUFBZSxDQUFDLElBQUk7UUFDcEcsUUFBUSxFQUFFLEtBQUs7UUFDZixXQUFXLEVBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxjQUFjLEVBQUUsRUFBRSxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDOUgsdUJBQXVCLEVBQUUsS0FBSztRQUM5QixZQUFZLEVBQUUsS0FBSztRQUNuQixZQUFZLEVBQUUsU0FBUztRQUN2QixrQkFBa0IsRUFBRSxLQUFLO1FBQ3pCLHdCQUF3QixFQUFFLFNBQVM7UUFDbkMsS0FBSyxFQUFFLFNBQVM7UUFDaEIsTUFBTSxFQUFFLElBQUk7S0FDYixDQUFBO0lBRUQsS0FBSztRQUNILE1BQU0sRUFBQyxDQUFDLEVBQUMsR0FBRyxPQUFPLENBQUMsRUFBQyxTQUFTLEVBQUUsb0JBQW9CLEVBQUMsQ0FBQyxDQUFBO1FBQ3RELE1BQU0sRUFBQyxJQUFJLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBQyxHQUFHLGFBQWEsRUFBRSxDQUFBO1FBQ2hELE1BQU0sV0FBVyxHQUFHLGNBQWMsRUFBRSxDQUFBO1FBRXBDLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFBO1FBQzVCLElBQUksQ0FBQyxhQUFhLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFBO1FBQ3RDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFBO1FBQ2hCLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFBO1FBRVYsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLGNBQWMsRUFBRSxFQUFFLGVBQWUsQ0FBQyxDQUFBO1FBQy9FLElBQUksU0FBUyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFBO1FBRXBDLElBQUksQ0FBQyxTQUFTO1lBQUUsU0FBUyxHQUFHLGFBQWEsQ0FBQTtRQUV6QyxNQUFNLFVBQVUsR0FBRyxHQUFHLFNBQVMsSUFBSSxDQUFBO1FBRW5DLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTLElBQUksU0FBUyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsVUFBVSxJQUFJLFVBQVUsRUFBRSxDQUFDO1lBQ3JFLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQTtZQUM1QixJQUFJLENBQUMsQ0FBQyxDQUFDLFVBQVUsR0FBRyxHQUFHLFNBQVMsSUFBSSxDQUFBO1lBQ3BDLElBQUksQ0FBQyxDQUFDLENBQUMsYUFBYSxHQUFHLEdBQUcsU0FBUyxPQUFPLENBQUE7WUFDMUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFBO1lBQzlCLElBQUksQ0FBQyxDQUFDLENBQUMsV0FBVyxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQTtRQUN2RCxDQUFDO1FBRUQsSUFBSSxDQUFDLGlCQUFpQixHQUFHLE9BQU8sQ0FDOUIsR0FBRyxFQUFFLENBQUMsQ0FBQztZQUNMLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLHdCQUF3QjtZQUN6QyxVQUFVLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxVQUFVO1lBQzdCLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVE7WUFDekIsS0FBSyxFQUFFLElBQUk7U0FDWixDQUFDLEVBQ0YsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLHdCQUF3QixDQUFDLENBQ3RFLENBQUE7UUFFRCxxSEFBcUg7UUFDckgsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNiLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUUsQ0FBQztnQkFDekIsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUE7WUFDN0IsQ0FBQztZQUVELE9BQU8sR0FBRyxFQUFFO2dCQUNWLElBQUksQ0FBQyw2QkFBNkIsSUFBSSxDQUFDLENBQUE7WUFDekMsQ0FBQyxDQUFBO1FBQ0gsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFBO1FBRWpELCtHQUErRztRQUMvRyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ2IsK0dBQStHO1lBQy9HLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFBO1lBRXZCLE9BQU8sR0FBRyxFQUFFO2dCQUNWLElBQUksQ0FBQyx5QkFBeUIsSUFBSSxDQUFDLENBQUE7WUFDckMsQ0FBQyxDQUFBO1FBQ0gsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFBO1FBRWpELGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixFQUFFLHlCQUF5QixFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsY0FBYyxDQUFDLENBQUE7UUFDekYsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLEVBQUUsMkJBQTJCLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFBO1FBRTdGLElBQUksZUFBZSxHQUFHLElBQUksQ0FBQTtRQUMxQixJQUFJLE1BQU0sQ0FBQTtRQUVWLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQzVCLGVBQWUsR0FBRyxLQUFLLENBQUE7UUFDekIsQ0FBQztRQUVELElBQUksZUFBZSxFQUFFLENBQUM7WUFDcEIsTUFBTSxHQUFHLGdCQUFnQixDQUFDO2dCQUN4QixLQUFLLEVBQUU7b0JBQ0wsS0FBSyxFQUFFO3dCQUNMLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLFVBQVU7d0JBQzdCLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU07cUJBQ3RCO29CQUNELEtBQUssRUFBRTt3QkFDTCxlQUFlLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxlQUFlLElBQUksRUFBRTtxQkFDOUM7aUJBQ0Y7YUFDRixDQUFDLENBQUE7UUFDSixDQUFDO1FBRUQsSUFBSSxDQUFDLFVBQVUsR0FBRyxhQUFhLENBQUM7WUFDOUIsU0FBUyxFQUFFLElBQUksQ0FBQyxlQUFlLEVBQUU7WUFDakMsYUFBYSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYTtZQUN2QyxVQUFVLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVO1lBQ2pDLE9BQU8sRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU87WUFDM0IsV0FBVyxFQUFFLGVBQWU7WUFDNUIsVUFBVSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVTtZQUNqQyxjQUFjLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjO1lBQ3pDLHlCQUF5QixFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMseUJBQXlCO1lBQy9ELHFCQUFxQixFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMscUJBQXFCO1lBQ3ZELFVBQVUsRUFBRSxJQUFJO1lBQ2hCLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU87WUFDeEIsV0FBVyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVztZQUNuQyxTQUFTO1lBQ1QsTUFBTTtZQUNOLGFBQWEsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWE7U0FDeEMsQ0FBQyxDQUFBO1FBQ0YsSUFBSSxDQUFDLHNCQUFzQixHQUFHLE9BQU8sQ0FDbkMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUNyRCxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQ3hCLENBQUE7UUFFRCxlQUFlLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxtQkFBbUIsRUFBRSxhQUFhLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsQ0FBQTtRQUNoRixlQUFlLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxtQkFBbUIsRUFBRSxvQkFBb0IsRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLGtCQUFrQixDQUFDLENBQUE7UUFDOUYsZUFBZSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsTUFBTSxFQUFFLHlCQUF5QixFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMseUJBQXlCLENBQUMsQ0FBQTtJQUMvRixDQUFDO0lBRUQseUJBQXlCLEdBQUcsR0FBRyxFQUFFO1FBQy9CLElBQUksQ0FBQyxDQUFDLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFBO1FBQzVELElBQUksQ0FBQyxDQUFDLENBQUMsVUFBVSxHQUFHLElBQUksSUFBSSxFQUFFLENBQUE7SUFDaEMsQ0FBQyxDQUFBO0lBQ0QsV0FBVyxHQUFHLENBQUMsRUFBQyxJQUFJLEVBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDNUQsa0JBQWtCLEdBQUcsQ0FBQyxFQUFDLElBQUksRUFBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUVoRSxLQUFLLENBQUMsb0JBQW9CO1FBQ3hCLHNFQUFzRTtRQUN0RSxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsNkJBQTZCLEdBQUcsQ0FBQyxDQUFBO1FBRXhELElBQUksQ0FBQyw2QkFBNkIsR0FBRyxTQUFTLENBQUE7UUFDOUMsTUFBTSxTQUFTLEdBQUcsaUJBQWlCLENBQUMsV0FBVyxDQUFDLENBQUE7UUFDaEQsTUFBTSxNQUFNLEdBQUcsTUFBTSxTQUFTLENBQUMsT0FBTyxFQUFFLENBQUE7UUFDeEMsTUFBTSxnQkFBZ0IsR0FBRyxHQUFHLENBQUMsTUFBTSxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQTtRQUVsRCxJQUFJLFNBQVMsSUFBSSxJQUFJLENBQUMsNkJBQTZCO1lBQUUsT0FBTTtRQUUzRCxJQUFJLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixHQUFHLGdCQUFnQixDQUFBO1FBQzFDLElBQUksQ0FBQyx5QkFBeUIsRUFBRSxDQUFBO0lBQ2xDLENBQUM7SUFFRCxLQUFLLENBQUMseUJBQXlCO1FBQzdCLE1BQU0sU0FBUyxHQUFHLEVBQUUsSUFBSSxDQUFDLDhCQUE4QixDQUFBO1FBRXZELElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDN0IsSUFBSSxDQUFDLENBQUMsQ0FBQyxxQkFBcUIsR0FBRyxDQUFDLENBQUE7WUFDaEMsT0FBTTtRQUNSLENBQUM7UUFFRCxNQUFNLGFBQWEsR0FBRyxpQkFBaUIsQ0FBQyxlQUFlLENBQUMsQ0FBQTtRQUN4RCxNQUFNLHFCQUFxQixHQUFHLE1BQU0sSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxhQUFhO2FBQ3RFLE9BQU8sQ0FBQztZQUNQLGdCQUFnQixFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLGNBQWMsRUFBRSxDQUFDLElBQUk7WUFDekQsZUFBZSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxFQUFFO1NBQzlDLENBQUM7YUFDRCxLQUFLLEVBQUUsQ0FBQyxDQUFBO1FBRVgsSUFBSSxTQUFTLEtBQUssSUFBSSxDQUFDLDhCQUE4QjtZQUFFLE9BQU07UUFFN0QsSUFBSSxDQUFDLENBQUMsQ0FBQyxxQkFBcUIsR0FBRyxxQkFBcUIsQ0FBQTtJQUN0RCxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsT0FBTztRQUN0QixPQUFPLE9BQU87YUFDWCxNQUFNLENBQUMsQ0FBQyxFQUFDLE1BQU0sRUFBRSxrQkFBa0IsRUFBQyxFQUFFLEVBQUUsQ0FBQyxhQUFhLENBQUMsTUFBTSxFQUFFLGtCQUFrQixDQUFDLENBQUM7YUFDbkYsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFBO0lBQ3RGLENBQUM7SUFFRCxLQUFLLENBQUMsZ0JBQWdCO1FBQ3BCLG9FQUFvRTtRQUNwRSxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMseUJBQXlCLEdBQUcsQ0FBQyxDQUFBO1FBRXBELElBQUksQ0FBQyx5QkFBeUIsR0FBRyxTQUFTLENBQUE7UUFDMUMsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLGFBQWEsQ0FBQztZQUNyQyxLQUFLLEVBQUUsdUlBQXVJLENBQUMsQ0FBQyxJQUFJLENBQUM7U0FDdEosQ0FBQyxDQUFBO1FBQ0YsTUFBTSxZQUFZLEdBQUcsTUFBTSxJQUFJLENBQUMsYUFBYSxDQUFDLGlDQUFpQyxFQUFFLENBQUE7UUFFakYsSUFBSSxDQUFDLFlBQVk7WUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLCtFQUErRSxDQUFDLENBQUE7UUFFbkgsSUFBSSxTQUFTLElBQUksSUFBSSxDQUFDLHlCQUF5QjtZQUFFLE9BQU07UUFFdkQsTUFBTSxFQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQUMsQ0FBQTtRQUMzRSxNQUFNLEVBQUMsS0FBSyxFQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQTtRQUN0QixNQUFNLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FBQyxFQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBQyxDQUFDLENBQUE7UUFDeEQsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFBO1FBRXBELElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQTtRQUN4QixJQUFJLENBQUMsQ0FBQyxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUE7UUFDcEMsSUFBSSxDQUFDLENBQUMsQ0FBQyxlQUFlLEdBQUcsT0FBTyxDQUFBO1FBQ2hDLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUE7UUFDN0MsSUFBSSxDQUFDLENBQUMsQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFBO1FBQ2xDLElBQUksQ0FBQyxDQUFDLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFBO1FBQ2hDLElBQUksQ0FBQyxDQUFDLENBQUMsd0JBQXdCLEdBQUcsWUFBWSxDQUFDLFlBQVksRUFBRSxDQUFBO1FBQzdELElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQTtJQUN4QixDQUFDO0lBRUQsMEJBQTBCLEdBQUcsR0FBRyxFQUFFO1FBQ2hDLElBQUksQ0FBQyxDQUFDLENBQUMsd0JBQXdCLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsWUFBWSxFQUFFLENBQUE7SUFDdEUsQ0FBQyxDQUFBO0lBRUQsY0FBYztRQUNaLElBQUksT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sSUFBSSxVQUFVLEVBQUUsQ0FBQztZQUM1QyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUE7UUFDN0IsQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUE7SUFDM0IsQ0FBQztJQUVELGNBQWMsQ0FBQyxPQUFPO1FBQ3BCLE1BQU0sRUFBQyxRQUFRLEVBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFBO1FBQzdCLElBQUksY0FBYyxHQUFHLEVBQUUsQ0FBQTtRQUV2QixJQUFJLFFBQVE7WUFBRSxjQUFjLEdBQUcsY0FBYyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQTtRQUM5RCxJQUFJLE9BQU87WUFBRSxjQUFjLEdBQUcsY0FBYyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUU1RCxPQUFPLFNBQVMsQ0FBQyxjQUFjLENBQUMsQ0FBQTtJQUNsQyxDQUFDO0lBRUQsTUFBTTtRQUNKLE1BQU0sRUFBQyxVQUFVLEVBQUUseUJBQXlCLEVBQUUscUJBQXFCLEVBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFBO1FBQzdFLE1BQU0sRUFBQyxVQUFVLEVBQUUsV0FBVyxFQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQTtRQUM1QyxNQUFNLEVBQUMsU0FBUyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFBO1FBQ25ELE1BQU0sRUFDSixNQUFNLEVBQ04sWUFBWSxFQUNaLE9BQU8sRUFDUCxLQUFLLEVBQ0wsTUFBTSxFQUNOLDZCQUE2QixFQUM3Qix5QkFBeUIsRUFDMUIsR0FBRyxJQUFJLENBQ04sSUFBSSxDQUFDLFVBQVUsRUFDZixRQUFRLEVBQ1IsY0FBYyxFQUNkLFNBQVMsRUFDVCxPQUFPLEVBQ1AsUUFBUSxFQUNSLCtCQUErQixFQUMvQiwyQkFBMkIsQ0FDNUIsQ0FBQTtRQUNELE1BQU0sV0FBVyxHQUFHLE9BQU8sSUFBSSxFQUFFLENBQUE7UUFFakMsSUFBSSxVQUFVLElBQUksVUFBVSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsY0FBYyxFQUFFLENBQUMsSUFBSSxJQUFJLFVBQVUsQ0FBQyxjQUFjLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUN2RyxNQUFNLElBQUksS0FBSyxDQUNiLGdDQUFnQyxVQUFVLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxjQUFjLEVBQUUsQ0FBQyxJQUFJLElBQUk7Z0JBQ3BGLHVDQUF1QyxVQUFVLENBQUMsY0FBYyxFQUFFLENBQUMsSUFBSSxHQUFHLENBQzNFLENBQUE7UUFDSCxDQUFDO1FBRUQsTUFBTSx3QkFBd0IsR0FBRywwQkFBMEIsQ0FBQztZQUMxRCxNQUFNO1lBQ04sS0FBSztZQUNMLE1BQU07U0FDUCxDQUFDLENBQUE7UUFFRixPQUFPLENBQ0wsTUFBQyxJQUFJLElBQ0gsT0FBTyxFQUFFLFFBQVEsQ0FBQyxZQUFZLElBQUksQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLEtBQUssRUFBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxFQUFDLEVBQy9FLFFBQVEsRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLGlCQUFpQixFQUNuQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsU0FBUyxhQUVsQyw2QkFBNkI7b0JBQzVCLGNBQUssU0FBUyxFQUFDLDBDQUEwQyxZQUN0RCx5QkFBeUIsQ0FBQyxFQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBQyxDQUFDLEdBQ3BFLEVBRVAseUJBQXlCO29CQUN4QixjQUFLLFNBQVMsRUFBQyxzQ0FBc0MsWUFDbEQscUJBQXFCLENBQUMsRUFBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUMsQ0FBQyxHQUNoRSxFQUVQLFdBQVc7b0JBQ1YsS0FBQyxPQUFPLElBQUMsV0FBVyxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFVBQVUsR0FBSSxFQUU1Ryx3QkFBd0I7b0JBQ3ZCLElBQUksQ0FBQyxjQUFjLENBQUMsRUFBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFDLENBQUMsRUFFbkUsQ0FBQyx3QkFBd0I7b0JBQ3hCLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFFZixDQUNSLENBQUE7SUFDSCxDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSCxrQkFBa0IsQ0FBRSxFQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBQyxHQUFHLEVBQUU7UUFDdkQsTUFBTSxFQUFDLE1BQU0sRUFBRSxVQUFVLEVBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFBO1FBRXZDLElBQUksT0FBTyxNQUFNLElBQUksVUFBVSxFQUFFLENBQUM7WUFDaEMsT0FBTyxNQUFNLENBQUMsRUFBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUMsQ0FBQyxDQUFBO1FBQ2pELENBQUM7YUFBTSxJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQ2xCLE9BQU8sTUFBTSxDQUFBO1FBQ2YsQ0FBQztRQUVELE9BQU8sVUFBVSxDQUFDLFNBQVMsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFDLEtBQUssRUFBRSxDQUFDLEVBQUMsQ0FBQyxDQUFBO0lBQ2pELENBQUM7SUFFRCxjQUFjLENBQUUsRUFBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUM7UUFDOUMsTUFBTSxFQUNKLFNBQVMsRUFDVCxjQUFjLEVBQ2QsVUFBVSxFQUNWLElBQUksRUFDSixTQUFTLEVBQ1QsVUFBVSxFQUNWLE9BQU8sRUFDUCxRQUFRLEVBQ1IsV0FBVyxFQUNYLHFCQUFxQixFQUNyQix5QkFBeUIsRUFDekIsYUFBYSxFQUNiLGNBQWMsRUFDZCxjQUFjLEVBQ2QsYUFBYSxFQUNiLFVBQVUsRUFDVixhQUFhLEVBQ2Isa0JBQWtCLEVBQ2xCLGlCQUFpQixFQUNqQixPQUFPLEVBQ1AsTUFBTSxFQUNOLFVBQVUsRUFDVixVQUFVLEVBQ1YseUJBQXlCLEVBQ3pCLHFCQUFxQixFQUNyQixjQUFjLEVBQ2QsZUFBZSxFQUNmLG1CQUFtQixFQUNuQixRQUFRLEVBQ1IsV0FBVyxFQUNYLFNBQVMsRUFDVCxNQUFNLEVBQ04sYUFBYSxFQUNiLE9BQU8sRUFDUCxhQUFhLEVBQ2IsU0FBUyxFQUNULEdBQUcsU0FBUyxFQUNiLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQTtRQUVkLE1BQU0sY0FBYyxHQUFHLENBQ3JCLEtBQUMsSUFBSSxJQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsT0FBTyxLQUFLLEVBQUMsS0FBSyxFQUFFLDJCQUEyQixFQUFDLFlBQ3RFLEtBQUMsSUFBSSxjQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLHNCQUFzQixFQUFFLEVBQUMsWUFBWSxFQUFFLFlBQVksRUFBQyxDQUFDLEdBQVEsR0FDekUsQ0FDUixDQUFBO1FBRUQsSUFBSSxDQUFDLElBQUk7WUFBRSxPQUFPLGNBQWMsQ0FBQTtRQUVoQyxNQUFNLFVBQVUsR0FBRyxNQUFNLElBQUksRUFBRSxDQUFBO1FBQy9CLE1BQU0sUUFBUSxHQUFHLEVBQUMsTUFBTSxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBQyxDQUFBO1FBRTdELE9BQU8sQ0FDTCxLQUFDLElBQUksSUFDSCxTQUFTLEVBQUUsVUFBVSxDQUFDLHdCQUF3QixFQUFFLE1BQU0sRUFBRSxTQUFTLENBQUMsRUFDbEUsUUFBUSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLEVBQ3RDLE1BQU0sRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsUUFBUSxDQUFDLEtBQ3JDLFNBQVMsWUFFWixjQUFjLEdBQ1YsQ0FDUixDQUFBO0lBQ0gsQ0FBQztJQUVELDBDQUEwQztJQUMxQyxlQUFlO1FBQ2IsTUFBTSxlQUFlLEdBQUcsdUNBQXVDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQTtRQUNwRSxNQUFNLEVBQUMsU0FBUyxFQUFFLFVBQVUsRUFBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUE7UUFDMUMsTUFBTSxZQUFZLEdBQUcsRUFBRSxDQUFBO1FBRXZCLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjO1lBQUUsWUFBWSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQTtRQUMzRCxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYTtZQUFFLFlBQVksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUE7UUFDdkQsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWE7WUFBRSxZQUFZLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFBO1FBRXZELElBQUksWUFBWSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUM1QixNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGNBQWMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFBO1lBRWhFLGVBQWUsQ0FBQyxjQUFjLENBQUMsR0FBRyxZQUFZLENBQUE7UUFDaEQsQ0FBQztRQUVELElBQUksU0FBUyxFQUFFLENBQUM7WUFDZCxLQUFLLE1BQU0sU0FBUyxJQUFJLFNBQVMsRUFBRSxDQUFDO2dCQUNsQyxJQUFJLENBQUMsQ0FBQyxTQUFTLElBQUksZUFBZSxDQUFDLEVBQUUsQ0FBQztvQkFDcEMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQTtnQkFDakMsQ0FBQztnQkFFRCxLQUFLLE1BQU0sT0FBTyxJQUFJLFNBQVMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO29CQUMzQyxlQUFlLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFBO2dCQUMxQyxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7UUFFRCxPQUFPLGVBQWUsQ0FBQTtJQUN4QixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsV0FBVztRQUNULE1BQU0sRUFDSixTQUFTLEVBQ1QsY0FBYyxFQUNkLFVBQVUsRUFDVixJQUFJLEVBQ0osU0FBUyxFQUNULFVBQVUsRUFDVixPQUFPLEVBQ1AsUUFBUSxFQUNSLFdBQVcsRUFDWCxxQkFBcUIsRUFDckIseUJBQXlCLEVBQ3pCLGFBQWEsRUFDYixjQUFjLEVBQ2QsY0FBYyxFQUNkLGFBQWEsRUFDYixVQUFVLEVBQ1YsYUFBYSxFQUNiLGtCQUFrQixFQUNsQixpQkFBaUIsRUFDakIsT0FBTyxFQUNQLE1BQU0sRUFDTixVQUFVLEVBQ1YsVUFBVSxFQUNWLHlCQUF5QixFQUN6QixxQkFBcUIsRUFDckIsY0FBYyxFQUNkLGVBQWUsRUFDZixtQkFBbUIsRUFDbkIsUUFBUSxFQUNSLFdBQVcsRUFDWCxTQUFTLEVBQ1QsTUFBTSxFQUNOLGFBQWEsRUFDYixPQUFPLEVBQ1AsYUFBYSxFQUNiLFNBQVMsRUFDVCxHQUFHLFNBQVMsRUFDYixHQUFHLElBQUksQ0FBQyxLQUFLLENBQUE7UUFDZCxNQUFNLEVBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsUUFBUSxDQUFDLENBQUE7UUFDdEcsTUFBTSxXQUFXLEdBQUcsT0FBTyxJQUFJLEVBQUUsQ0FBQTtRQUVqQyxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsRUFBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFDLENBQUMsQ0FBQTtRQUM1RixJQUFJLG1CQUFtQixDQUFBO1FBRXZCLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUNyQixJQUFJLG1CQUFtQixFQUFFLENBQUM7Z0JBQ3hCLG1CQUFtQixHQUFHLG1CQUFtQixDQUFBO1lBQzNDLENBQUM7aUJBQU0sQ0FBQztnQkFDTixtQkFBbUIsR0FBRyxRQUFRLENBQUE7WUFDaEMsQ0FBQztRQUNILENBQUM7UUFFRCxNQUFNLFFBQVEsR0FBRyxDQUNmLEtBQUMsWUFBWSxDQUFDLFFBQVEsSUFBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxpQkFBaUIsWUFDckQsTUFBQyxJQUFJLElBQ0gsT0FBTyxFQUFFLFFBQVEsQ0FBQyxlQUFlLEtBQUssRUFBQyxLQUFLLEVBQUUscUNBQXFDLEVBQUMsRUFDcEYsS0FBSyxFQUFFLE1BQU0sQ0FBQyxlQUFlLEtBQUssRUFBQyxRQUFRLEVBQUUsVUFBVSxFQUFDLGFBRXhELEtBQUMsUUFBUSxJQUNQLElBQUksRUFBRSxNQUFNLEVBQ1osT0FBTyxFQUFFLFFBQVEsQ0FBQyxZQUFZLFNBQVMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLHdCQUF3QixFQUFFLENBQUMsS0FBSzs0QkFDaEYsS0FBSyxFQUFFLFVBQVUsQ0FBQyxrQkFBa0IsRUFBRSxTQUFTLENBQUM7NEJBQ2hELFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLHdCQUF3Qjs0QkFDekMsVUFBVSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsVUFBVTt5QkFDOUIsRUFDRCxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxVQUFVLEVBQzVCLFlBQVksRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLFdBQVcsRUFDakMsbUJBQW1CLEVBQUUsbUJBQW1CLEVBQ3hDLFVBQVUsRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLFVBQVUsRUFDOUIsOEJBQThCLFFBQzlCLEtBQUssRUFBRSxNQUFNLENBQUMsWUFBWSxPQUFPLEVBQUUsQ0FBQyxLQUFLOzRCQUN2QyxTQUFTLEVBQUUsTUFBTTs0QkFDakIsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLFNBQVM7NEJBQ2pELFlBQVksRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUzt5QkFDdEMsS0FDRyxTQUFTLEdBQ2IsRUFDRixLQUFDLGVBQWUsSUFBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sR0FBSSxJQUNuQyxHQUNlLENBQ3pCLENBQUE7UUFFRCxPQUFPLENBQ0wsOEJBQ0csYUFBYSxJQUFJLFVBQVU7b0JBQzFCLEtBQUMsSUFBSSxJQUFDLFNBQVMsRUFBQyw4QkFBOEIsWUFDM0MsSUFBSSxDQUFDLFVBQVUsRUFBRSxHQUNiLEVBRVIsYUFBYSxJQUFJLENBQUMsVUFBVTtvQkFDM0IsSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUVsQixJQUFJO29CQUNILEtBQUMsSUFBSSxJQUNILFNBQVMsRUFBRSxVQUFVLENBQUMsd0JBQXdCLEVBQUUsTUFBTSxFQUFFLFNBQVMsQ0FBQyxFQUNsRSxRQUFRLEVBQUUsSUFBSSxDQUFDLGFBQWEsRUFBRSxFQUM5QixNQUFNLEVBQUUsYUFBYSxFQUNyQixNQUFNLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxLQUN0QixTQUFTLFlBRVosUUFBUSxHQUNKLEVBRVIsQ0FBQyxJQUFJLElBQUksUUFBUSxFQUNqQixNQUFNLElBQUksbUJBQW1CO29CQUM1QixLQUFDLG1CQUFtQixJQUFDLE1BQU0sRUFBRSxNQUFNLEdBQUksRUFFeEMsTUFBTSxJQUFJLGVBQWU7b0JBQ3hCLGVBQWUsQ0FBQyxFQUFDLE1BQU0sRUFBQyxDQUFDLElBRTFCLENBQ0osQ0FBQTtJQUNILENBQUM7SUFFRCxpQkFBaUIsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFO1FBQ3hCLE1BQU0sRUFBQyxLQUFLLEVBQUMsR0FBRyxDQUFDLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQTtRQUNwQyxNQUFNLEVBQUMsTUFBTSxFQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQTtRQUV2QixzR0FBc0c7UUFDdEcsSUFBSSxNQUFNLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQztZQUM5QixNQUFNLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUE7WUFDOUIsSUFBSSxDQUFDLENBQUMsQ0FBQyxVQUFVLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQTtZQUM5QixJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUE7WUFDcEIsT0FBTTtRQUNSLENBQUM7UUFFRCxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUE7UUFDcEIsSUFBSSxNQUFNO1lBQUUsTUFBTSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUE7SUFDdkMsQ0FBQyxDQUFBO0lBRUQsY0FBYyxHQUFHLENBQUMsRUFBQyxJQUFJLEVBQUMsRUFBRSxFQUFFO1FBQzFCLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsY0FBYyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUMzRSxJQUFJLENBQUMseUJBQXlCLEVBQUUsQ0FBQTtRQUNsQyxDQUFDO0lBQ0gsQ0FBQyxDQUFBO0lBRUQsZ0JBQWdCLEdBQUcsQ0FBQyxFQUFDLElBQUksRUFBQyxFQUFFLEVBQUU7UUFDNUIsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxjQUFjLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQzNFLElBQUksQ0FBQyx5QkFBeUIsRUFBRSxDQUFBO1FBQ2xDLENBQUM7SUFDSCxDQUFDLENBQUE7SUFFRCxXQUFXLEdBQUcsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyx3QkFBd0IsSUFBSSxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQTtJQUUzRSxVQUFVLEdBQUcsR0FBRyxFQUFFO1FBQ2hCLE1BQU0sRUFBQyxhQUFhLEVBQUUsWUFBWSxFQUFFLG9CQUFvQixFQUFDLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQTtRQUNuRSxNQUFNLEVBQUMsYUFBYSxFQUFFLGtCQUFrQixFQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQTtRQUNsRCxNQUFNLEVBQUMsVUFBVSxFQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQTtRQUMzQixNQUFNLEVBQUMsaUJBQWlCLEVBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFBO1FBQ3RDLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQTtRQUU1RCxPQUFPLENBQ0wsTUFBQyxJQUFJLElBQ0gsT0FBTyxFQUFFLGFBQWEsRUFDdEIsYUFBYSxFQUFFLE1BQU0sQ0FBQyxtQkFBbUIsS0FBSyxFQUFDLFNBQVMsRUFBRSx5QkFBeUIsRUFBQyxFQUNwRixRQUFRLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxrQkFBa0IsRUFDcEMsT0FBTyxFQUFFLDhEQUE4RCxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFVBQVUsRUFDbkcsV0FBVyxtQkFFVixHQUFHLElBQUksYUFBYTtvQkFDbkIsZ0JBQU8sSUFBSSxFQUFDLEdBQUcsRUFBQyxJQUFJLEVBQUMsUUFBUSxFQUFDLEtBQUssRUFBRSxhQUFhLENBQUMsQ0FBQyxHQUFJLEVBRXpELGFBQWEsQ0FBQztvQkFDYixlQUFlLEVBQUUsWUFBWTtvQkFDN0Isd0JBQXdCLEVBQUUsb0JBQW9CO29CQUM5QyxPQUFPLEVBQUUsYUFBYTtvQkFDdEIsVUFBVTtpQkFDWCxDQUFDLEVBQ0Qsa0JBQWtCO29CQUNqQixnQkFDRSxTQUFTLEVBQUMsa0RBQWtELEVBQzVELElBQUksRUFBQyxRQUFRLEVBQ2IsS0FBSyxFQUFFLE1BQU0sQ0FBQyxrQkFBa0IsS0FBSyxFQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUMsRUFDdkQsS0FBSyxFQUFFLGlCQUFpQixJQUFJLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFDLFlBQVksRUFBRSxRQUFRLEVBQUMsQ0FBQyxHQUMxRSxJQUVDLENBQ1IsQ0FBQTtJQUNILENBQUMsQ0FBQTtJQUVELGVBQWUsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFO1FBQ3RCLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQTtRQUNsQixJQUFJLENBQUMsQ0FBQyxDQUFDLFdBQVcsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFBO0lBQzFDLENBQUMsQ0FBQTtJQUVELGdCQUFnQixHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUU7UUFDdkIsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLENBQUMsRUFBRSxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUE7UUFDbEQsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLEVBQUUsQ0FBQTtRQUMxRCxNQUFNLGNBQWMsR0FBRyxlQUFlLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxFQUFFLFVBQVUsSUFBSSxRQUFRLENBQUMsQ0FBQTtRQUV4SCxJQUFJLE9BQU8sVUFBVSxJQUFJLFFBQVEsSUFBSSxjQUFjLEdBQUcsY0FBYyxDQUFDLDZCQUE2QixFQUFFLEVBQUUsQ0FBQztZQUNyRyxJQUFJLENBQUMsQ0FBQyxDQUFDLG1CQUFtQixHQUFHLGVBQWUsQ0FBQTtZQUM1QyxJQUFJLENBQUMsQ0FBQyxDQUFDLHVCQUF1QixHQUFHLElBQUksQ0FBQTtZQUVyQyxPQUFNO1FBQ1IsQ0FBQztRQUVELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxlQUFlLENBQUMsQ0FBQTtJQUMxQyxDQUFDLENBQUE7SUFFRCxrQkFBa0IsR0FBRyxDQUFDLGVBQWUsRUFBRSxFQUFFO1FBQ3ZDLE1BQU0sRUFBQyxTQUFTLEVBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFBO1FBRTFCLE1BQU0sQ0FBQyxZQUFZLENBQUMsRUFBQyxDQUFDLEdBQUcsU0FBUyxNQUFNLENBQUMsRUFBRSxlQUFlLEVBQUMsQ0FBQyxDQUFBO0lBQzlELENBQUMsQ0FBQTtJQUVELHFCQUFxQixHQUFHLEdBQUcsRUFBRTtRQUMzQixNQUFNLEVBQUMsbUJBQW1CLEVBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFBO1FBRXBDLElBQUksQ0FBQyxDQUFDLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFBO1FBQ2pDLElBQUksQ0FBQyxDQUFDLENBQUMsdUJBQXVCLEdBQUcsS0FBSyxDQUFBO1FBQ3RDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFBO0lBQzlDLENBQUMsQ0FBQTtJQUVELG9CQUFvQixHQUFHLEdBQUcsRUFBRTtRQUMxQixJQUFJLENBQUMsQ0FBQyxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQTtRQUNqQyxJQUFJLENBQUMsQ0FBQyxDQUFDLHVCQUF1QixHQUFHLEtBQUssQ0FBQTtRQUN0Qyw0RkFBNEY7UUFDNUYsSUFBSSxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsSUFBSSxDQUFDLENBQUE7SUFDaEMsQ0FBQyxDQUFBO0lBRUQsVUFBVSxHQUFHLENBQUMsRUFBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBQyxFQUFFLEVBQUU7UUFDcEMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztZQUMvQixPQUFPLENBQ0wsS0FBQyxJQUFJLGNBQ0gsS0FBQyxJQUFJLGNBQ0YsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsc0JBQXNCLEVBQUUsRUFBQyxZQUFZLEVBQUUsWUFBWSxFQUFDLENBQUMsR0FDM0QsR0FDRixDQUNSLENBQUE7UUFDSCxDQUFDO1FBRUQsT0FBTyxDQUNMLEtBQUMsUUFBUSxJQUNQLFFBQVEsRUFBRSxLQUFLLENBQUMsUUFBUSxFQUFFLEVBQzFCLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLGFBQWEsRUFDN0IsWUFBWSxFQUFFLElBQUksQ0FBQyxZQUFZLEVBQUUsRUFDakMsTUFBTSxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsTUFBTSxFQUN0QixLQUFLLEVBQUUsS0FBSyxFQUVaLEtBQUssRUFBRSxLQUFLLEVBQ1osS0FBSyxFQUFFLElBQUksRUFDWCx3QkFBd0IsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLHdCQUF3QixJQUhwRCxLQUFLLENBQUMsRUFBRSxFQUFFLENBSWYsQ0FDSCxDQUFBO0lBQ0gsQ0FBQyxDQUFBO0lBRUQ7Ozs7Ozs7OztPQVNHO0lBQ0gsY0FBYyxHQUFHLENBQUMsRUFBQyxNQUFNLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFDLEVBQUUsRUFBRTtRQUM1RCxNQUFNLEVBQUMsT0FBTyxFQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQTtRQUN4QixNQUFNLFlBQVksR0FBRztZQUNuQixjQUFjLEVBQUUsUUFBUTtZQUN4QixPQUFPLEVBQUUsQ0FBQztZQUNWLFFBQVEsRUFBRSxRQUFRO1NBQ25CLENBQUE7UUFFRCxJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQ1osTUFBTSxDQUFDLE1BQU0sQ0FBQyxZQUFZLEVBQUU7Z0JBQzFCLGVBQWUsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTTthQUMzQyxDQUFDLENBQUE7UUFDSixDQUFDO1FBRUQsSUFBSSxJQUFJLElBQUksU0FBUyxFQUFFLENBQUM7WUFDdEIsWUFBWSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUE7WUFDbEMsWUFBWSxDQUFDLFVBQVUsR0FBRyxRQUFRLENBQUE7WUFFbEMsSUFBSSxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUNqQixZQUFZLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQTtZQUNsQyxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sWUFBWSxDQUFDLFdBQVcsR0FBRyxNQUFNLENBQUE7WUFDbkMsQ0FBQztRQUNILENBQUM7YUFBTSxJQUFJLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQ25DLFlBQVksQ0FBQyxXQUFXLEdBQUcsbUJBQW1CLENBQUE7UUFDaEQsQ0FBQztRQUVELE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQy9CLFlBQVksRUFDWixLQUFLLENBQ04sQ0FBQTtRQUVELE9BQU8sV0FBVyxDQUFBO0lBQ3BCLENBQUMsQ0FBQTtJQUVEOzs7Ozs7OztPQVFHO0lBQ0gsY0FBYyxHQUFHLENBQUMsRUFBQyxNQUFNLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUMsRUFBRSxFQUFFO1FBQ3RELE1BQU0sRUFBQyxJQUFJLEVBQUMsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFBO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FDZixlQUFlLElBQUksSUFBSSxTQUFTLEVBQUUsRUFDbEMsR0FBRyxFQUFFO1lBQ0gsTUFBTSxZQUFZLEdBQUc7Z0JBQ25CLGFBQWEsRUFBRSxLQUFLO2dCQUNwQixVQUFVLEVBQUUsUUFBUTtnQkFDcEIsT0FBTyxFQUFFLENBQUM7YUFDWCxDQUFBO1lBRUQsSUFBSSxJQUFJLElBQUksU0FBUyxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUNoRCxZQUFZLENBQUMsV0FBVyxHQUFHLG1CQUFtQixDQUFBO1lBQ2hELENBQUM7WUFFRCxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFLEtBQUssQ0FBQyxDQUFBO1FBQzNDLENBQUMsRUFDRCxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQ3BDLENBQUE7SUFDSCxDQUFDLENBQUE7SUFFRDs7O09BR0c7SUFDSCxrQkFBa0IsR0FBRyxHQUFHLEVBQUU7UUFDeEIsT0FBTyxNQUFNLENBQUMsZUFBZSxLQUFLLEVBQUMsVUFBVSxFQUFFLE1BQU0sRUFBQyxDQUFBO0lBQ3hELENBQUMsQ0FBQTtJQUVEOzs7OztPQUtHO0lBQ0gsV0FBVyxHQUFHLENBQUMsRUFBQyxJQUFJLEVBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRTtRQUM1QixPQUFPLElBQUksQ0FBQyxLQUFLLENBQ2YsWUFBWSxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQ25DLEdBQUcsRUFBRTtZQUNILE1BQU0sV0FBVyxHQUFHO2dCQUNsQixJQUFJLEVBQUUsQ0FBQztnQkFDUCxVQUFVLEVBQUUsU0FBUzthQUN0QixDQUFBO1lBRUQsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDM0IsV0FBVyxDQUFDLGVBQWUsR0FBRyxTQUFTLENBQUE7WUFDekMsQ0FBQztZQUVELE9BQU8sV0FBVyxDQUFBO1FBQ3BCLENBQUMsRUFDRCxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUN2QixDQUFBO0lBQ0gsQ0FBQyxDQUFBO0lBRUQ7OztPQUdHO0lBQ0gsaUJBQWlCLEdBQUcsR0FBRyxFQUFFO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FDZixnQkFBZ0IsRUFDaEIsR0FBRyxFQUFFLENBQUMsQ0FBQztZQUNMLElBQUksRUFBRSxDQUFDO1lBQ1AsVUFBVSxFQUFFLFNBQVM7U0FDdEIsQ0FBQyxDQUNILENBQUE7SUFDSCxDQUFDLENBQUE7SUFFRDs7O09BR0c7SUFDSCxhQUFhLENBQUMsRUFBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUMsR0FBRyxFQUFFO1FBQ2pELE1BQU0sRUFBQyxRQUFRLEVBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFBO1FBQzdCLE1BQU0sRUFBQyxZQUFZLEVBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFBO1FBQzdCLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFBO1FBQ3BGLE1BQU0sWUFBWSxHQUFHLE1BQU0sSUFBSSxjQUFjLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQTtRQUMxRCxNQUFNLGFBQWEsR0FBRyxPQUFPLElBQUksY0FBYyxDQUFDLE9BQU8sQ0FBQTtRQUN2RCxNQUFNLFdBQVcsR0FBRyxLQUFLLElBQUksY0FBYyxDQUFDLEtBQUssQ0FBQTtRQUNqRCxNQUFNLFlBQVksR0FBRyxNQUFNLElBQUksY0FBYyxDQUFDLE1BQU0sQ0FBQTtRQUVwRCxPQUFPLENBQ0wsTUFBQyxJQUFJLElBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxxQkFBcUIsS0FBSyxFQUFDLGFBQWEsRUFBRSxLQUFLLEVBQUMsYUFDakUsUUFBUSxJQUFJLFFBQVEsQ0FBQyxFQUFDLE1BQU0sRUFBRSxZQUFZLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUMsQ0FBQyxFQUMvRyxLQUFDLFNBQVMsSUFDUixPQUFPLEVBQUUsUUFBUSxDQUFDLFlBQVksS0FBSyxFQUFDLEtBQUssRUFBRSxlQUFlLEVBQUMsRUFDM0QsT0FBTyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsZUFBZSxFQUNoQyxNQUFNLEVBQUMsY0FBYyxZQUVyQixLQUFDLElBQUksSUFBQyxJQUFJLEVBQUMsUUFBUSxFQUFDLElBQUksRUFBRSxFQUFFLEdBQUksR0FDdEIsRUFDWixNQUFDLElBQUksZUFDRixZQUFZOzRCQUNYLEtBQUMsUUFBUSxJQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLHNCQUFzQixFQUFFLEtBQUssRUFBRSxJQUFJLEdBQUksRUFFM0UsS0FBQyxTQUFTLElBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsaUJBQWlCLEVBQUUsTUFBTSxFQUFDLGlCQUFpQixZQUNyRSxLQUFDLElBQUksSUFBQyxJQUFJLEVBQUMsTUFBTSxFQUFDLElBQUksRUFBRSxFQUFFLEdBQUksR0FDcEIsSUFDUCxJQUNGLENBQ1IsQ0FBQTtJQUNILENBQUM7SUFFRCxXQUFXO1FBQ1QsTUFBTSxFQUFDLE1BQU0sRUFBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLFFBQVEsQ0FBQyxDQUFBO1FBQ2hELE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQTtRQUN4QyxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUE7UUFDdEMsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFBO1FBQ2hDLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsV0FBVyxHQUFHLE9BQU8sRUFBRSxVQUFVLENBQUMsQ0FBQTtRQUN0RCxNQUFNLFlBQVksR0FBRyx1REFBdUQsQ0FBQTtRQUM1RSxJQUFJLElBQUksR0FBRyxDQUFDLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUU1QyxJQUFJLEVBQUUsS0FBSyxDQUFDO1lBQUUsSUFBSSxHQUFHLENBQUMsQ0FBQTtRQUV0QixPQUFPLENBQ0wsTUFBQyxJQUFJLElBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyx3QkFBd0IsS0FBSyxFQUFDLGFBQWEsRUFBRSxLQUFLLEVBQUUsY0FBYyxFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFDLGFBQ3JILE1BQUMsSUFBSSxJQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsYUFBYSxLQUFLLEVBQUMsS0FBSyxFQUFFLGdCQUFnQixFQUFDLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxhQUFhLEtBQUssRUFBQyxhQUFhLEVBQUUsS0FBSyxFQUFDLGFBQ3pILEtBQUMsSUFBSSxjQUNGLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLCtCQUErQixFQUFFLEVBQUMsWUFBWSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBQyxDQUFDLEdBQ3pGLEVBQ04sSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxxQkFBcUIsS0FBSyxJQUFJOzRCQUN4RCxLQUFDLElBQUksSUFBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLGtCQUFrQixLQUFLLEVBQUMsVUFBVSxFQUFFLENBQUMsRUFBQyxZQUN2RCxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxhQUFhLEVBQUUsRUFBQyxZQUFZLEVBQUUsdUJBQXVCLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMscUJBQXFCLEVBQUMsQ0FBQyxHQUNyRyxJQUVKLEVBQ1AsS0FBQyxJQUFJLGNBQ0gsS0FBQyxNQUFNLElBQ0wsU0FBUyxFQUFDLGlCQUFpQixFQUMzQixZQUFZLEVBQUUsT0FBTyxFQUVyQixRQUFRLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxnQkFBZ0IsRUFDbEMsT0FBTyxFQUFFLGlCQUFpQixJQUZyQixtQkFBbUIsSUFBSSxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsRUFBRSxDQUduRCxHQUNHLEVBQ04sSUFBSSxDQUFDLENBQUMsQ0FBQyx1QkFBdUI7b0JBQzdCLEtBQUMsd0JBQXdCLElBQ3ZCLEtBQUssRUFBRSxVQUFVLEVBQ2pCLFNBQVMsRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLHFCQUFxQixFQUN4QyxjQUFjLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxvQkFBb0IsR0FDNUMsSUFFQyxDQUNSLENBQUE7SUFDSCxDQUFDO0lBRUQsU0FBUztRQUNQLE1BQU0sVUFBVSxHQUFHLENBQUMsa0JBQWtCLENBQUMsQ0FBQTtRQUV2QyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDekIsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFBO1FBQ3ZDLENBQUM7UUFFRCxPQUFPLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUE7SUFDN0IsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxXQUFXLENBQUMsTUFBTTtRQUNoQixJQUFJLFFBQVEsR0FBRyxTQUFTLENBQUE7UUFFeEIsSUFBSSxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDdEIsUUFBUSxHQUFHLFFBQVEsQ0FBQTtRQUNyQixDQUFDO2FBQU0sSUFBSSxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDNUIsUUFBUSxHQUFHLE9BQU8sQ0FBQTtRQUNwQixDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUNmLGVBQWUsUUFBUSxFQUFFLEVBQ3pCLEdBQUcsRUFBRTtZQUNILE1BQU0sS0FBSyxHQUFHLEVBQUUsQ0FBQTtZQUVoQixJQUFJLE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQztnQkFDdEIsS0FBSyxDQUFDLEtBQUssS0FBSyxFQUFFLENBQUE7Z0JBQ2xCLEtBQUssQ0FBQyxLQUFLLENBQUMsU0FBUyxHQUFHLFFBQVEsQ0FBQTtZQUNsQyxDQUFDO1lBRUQsSUFBSSxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUM7Z0JBQ3JCLEtBQUssQ0FBQyxLQUFLLEtBQUssRUFBRSxDQUFBO2dCQUNsQixLQUFLLENBQUMsS0FBSyxDQUFDLFNBQVMsR0FBRyxPQUFPLENBQUE7WUFDakMsQ0FBQztZQUVELE9BQU8sS0FBSyxDQUFBO1FBQ2QsQ0FBQyxFQUNELENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxNQUFNLENBQUMsU0FBUyxDQUFDLENBQ3RDLENBQUE7SUFDSCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILFdBQVcsQ0FBQyxNQUFNO1FBQ2hCLElBQUksUUFBUSxHQUFHLFNBQVMsQ0FBQTtRQUV4QixJQUFJLE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUN0QixRQUFRLEdBQUcsUUFBUSxDQUFBO1FBQ3JCLENBQUM7YUFBTSxJQUFJLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUM1QixRQUFRLEdBQUcsT0FBTyxDQUFBO1FBQ3BCLENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQ2YsZUFBZSxRQUFRLEVBQUUsRUFDekIsR0FBRyxFQUFFO1lBQ0gsTUFBTSxLQUFLLEdBQUcsRUFBRSxDQUFBO1lBRWhCLElBQUksTUFBTSxDQUFDLFVBQVUsRUFBRSxDQUFDO2dCQUN0QixLQUFLLENBQUMsS0FBSyxLQUFLLEVBQUUsQ0FBQTtnQkFDbEIsS0FBSyxDQUFDLEtBQUssQ0FBQyxjQUFjLEdBQUcsUUFBUSxDQUFBO1lBQ3ZDLENBQUM7WUFFRCxJQUFJLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQztnQkFDckIsS0FBSyxDQUFDLEtBQUssS0FBSyxFQUFFLENBQUE7Z0JBQ2xCLEtBQUssQ0FBQyxLQUFLLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQTtZQUNwQyxDQUFDO1lBRUQsT0FBTyxLQUFLLENBQUE7UUFDZCxDQUFDLEVBQ0QsQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FDdEMsQ0FBQTtJQUNILENBQUM7SUFFRDs7O09BR0c7SUFDSCxZQUFZO1FBQ1YsTUFBTSxZQUFZLEdBQUcsRUFBRSxDQUFBO1FBRXZCLEtBQUssTUFBTSxNQUFNLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUM1QyxZQUFZLENBQUMsTUFBTSxDQUFDLGtCQUFrQixDQUFDLFVBQVUsRUFBRSxDQUFDLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQTtRQUNyRSxDQUFDO1FBRUQsT0FBTyxZQUFZLENBQUE7SUFDckIsQ0FBQztJQUVELHlCQUF5QixHQUFHLEdBQUcsRUFBRTtRQUMvQixPQUFPLENBQ0wsS0FBQyxhQUFhLElBQ1osZUFBZSxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsa0JBQWtCLEVBQUUsRUFDN0MsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsYUFBYSxFQUMxQixNQUFNLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxtQkFBbUIsRUFDbkMsVUFBVSxRQUNWLFlBQVksRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLG9CQUFvQixFQUMxQyxXQUFXLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxXQUFXLEVBQ2hDLFdBQVcsRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLFdBQVcsRUFDaEMsVUFBVSxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMseUJBQXlCLEdBQzdDLENBQ0gsQ0FBQTtJQUNILENBQUMsQ0FBQTtJQUVELHlCQUF5QixHQUFHLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLEVBQUUsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFBO0lBQ2xHLG9CQUFvQixHQUFHLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsVUFBVSxFQUFFLENBQUE7SUFFckUsV0FBVyxHQUFHLENBQUMsRUFBQyxhQUFhLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUMsRUFBRSxFQUFFO1FBQzVDLHlCQUF5QixDQUFDLEVBQUMsYUFBYSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFDLENBQUMsQ0FBQTtJQUNqRixDQUFDLENBQUE7SUFFRDs7Ozs7Ozs7T0FRRztJQUNILFdBQVcsR0FBRyxLQUFLLEVBQUUsRUFBQyxRQUFRLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUMsRUFBRSxFQUFFO1FBQ25FLElBQUksWUFBWSxJQUFJLFVBQVU7WUFBRSxPQUFNLENBQUMsMENBQTBDO1FBRWpGLE1BQU0sa0JBQWtCLEdBQUcsUUFBUSxDQUFDLGtCQUFrQixDQUFDLFdBQVcsQ0FBQTtRQUNsRSxNQUFNLFFBQVEsR0FBRyxNQUFNLGtCQUFrQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsa0JBQWtCLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQSxDQUFDLHdFQUF3RTtRQUV2SixNQUFNLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsRUFBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLFFBQVEsRUFBRSxFQUFDLENBQUMsQ0FBQTtJQUMzRSxDQUFDLENBQUE7SUFFRCx5QkFBeUIsR0FBRyxDQUFDLEVBQUMsUUFBUSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUMsRUFBRSxFQUFFO1FBQzNELE1BQU0sRUFBQyxhQUFhLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxrQkFBa0IsRUFBQyxHQUFHLElBQUksQ0FBQTtRQUV4RSxPQUFPLENBQ0wsS0FBQyxZQUFZLElBQ1gsTUFBTSxFQUFFLFFBQVEsRUFDaEIsYUFBYSxFQUFFLGFBQWEsRUFDNUIsY0FBYyxFQUFFLGNBQWMsRUFDOUIsTUFBTSxFQUFFLE1BQU0sRUFFZCxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQ3pCLEtBQUssRUFBRSxJQUFJLEVBQ1gsa0JBQWtCLEVBQUUsa0JBQWtCLEVBQ3RDLFVBQVUsRUFBRSxVQUFVLEVBQ3RCLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sSUFMaEIsa0JBQWtCLENBQUMsVUFBVSxFQUFFLENBTXBDLENBQ0gsQ0FBQTtJQUNILENBQUMsQ0FBQTtJQUVELHdCQUF3QixDQUFDLE1BQU07UUFDN0IsTUFBTSxVQUFVLEdBQUcsRUFBRSxDQUFBO1FBRXJCLElBQUksTUFBTSxDQUFDLFdBQVcsSUFBSSxNQUFNLENBQUMsV0FBVyxDQUFDLFNBQVM7WUFBRSxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUE7UUFDckcsSUFBSSxNQUFNLENBQUMsV0FBVyxJQUFJLE1BQU0sQ0FBQyxXQUFXLENBQUMsU0FBUztZQUFFLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQTtRQUVyRyxPQUFPLFVBQVUsQ0FBQTtJQUNuQixDQUFDO0lBRUQsb0JBQW9CLENBQUMsTUFBTTtRQUN6QixNQUFNLEVBQUMsVUFBVSxFQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQTtRQUUzQixJQUFJLE9BQU8sSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUN0QixJQUFJLE9BQU8sTUFBTSxDQUFDLEtBQUssSUFBSSxVQUFVLEVBQUUsQ0FBQztnQkFDdEMsT0FBTyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUE7WUFDdkIsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLE9BQU8sTUFBTSxDQUFDLEtBQUssQ0FBQTtZQUNyQixDQUFDO1FBQ0gsQ0FBQztRQUVELElBQUksaUJBQWlCLEdBQUcsVUFBVSxDQUFBO1FBRWxDLDZDQUE2QztRQUM3QyxJQUFJLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNoQixLQUFLLE1BQU0sUUFBUSxJQUFJLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDbkMsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGNBQWMsRUFBRSxFQUFFLGVBQWUsQ0FBQyxDQUFBO2dCQUMvRSxNQUFNLFlBQVksR0FBRyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUMsbUJBQW1CLEVBQUUsRUFBRSxDQUFDLG1CQUFtQixDQUFDLElBQUksSUFBSSxVQUFVLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUE7Z0JBRTdILGlCQUFpQixHQUFHLGlCQUFpQixDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsZUFBZSxDQUFDLENBQUMsQ0FBQTtZQUM1RSxDQUFDO1FBQ0gsQ0FBQztRQUVELElBQUksTUFBTSxDQUFDLFNBQVM7WUFBRSxPQUFPLGlCQUFpQixDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQTtRQUVuRixNQUFNLElBQUksS0FBSyxDQUFDLHFDQUFxQyxDQUFDLENBQUE7SUFDeEQsQ0FBQztJQUVEOzs7T0FHRztJQUNILGtCQUFrQixHQUFHLEdBQUcsRUFBRTtRQUN4QixJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsa0JBQWtCLEtBQUssU0FBUztZQUFFLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQTtRQUM3RSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTztZQUFFLE9BQU8sU0FBUyxDQUFBO1FBRXBDLE9BQU8sTUFBTSxDQUFDLDZCQUE2QixLQUFLLEVBQUMsZUFBZSxFQUFFLGFBQWEsRUFBQyxDQUFBO0lBQ2xGLENBQUMsQ0FBQTtJQUVELGtCQUFrQixHQUFHLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQTtJQUM5QyxzQkFBc0IsR0FBRyxHQUFHLEVBQUU7UUFDNUIsSUFBSSxDQUFDLENBQUMsQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFBO0lBQzdCLENBQUMsQ0FBQTtJQUVELGlCQUFpQixHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUU7UUFDeEIsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFBO1FBRWxCLElBQUksQ0FBQyxDQUFDLENBQUMsWUFBWSxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUE7SUFDNUMsQ0FBQyxDQUFBO0lBRUQsWUFBWSxHQUFHLEdBQUcsRUFBRTtRQUNsQixNQUFNLEVBQUMsVUFBVSxFQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQTtRQUMvQixNQUFNLEVBQUMsVUFBVSxFQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQTtRQUMzQixNQUFNLGtCQUFrQixHQUFHLEVBQUUsQ0FBQTtRQUM3QixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQTtRQUU1QyxJQUFJLFFBQVEsQ0FBQyxFQUFFLElBQUksS0FBSyxFQUFFLENBQUM7WUFDekIsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLFNBQVMsQ0FBQyxDQUFBO1lBQ3pELE1BQU0saUJBQWlCLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQTtZQUUxRCxXQUFXLENBQUMsT0FBTyxFQUFFLGlCQUFpQixDQUFDLENBQUE7UUFDekMsQ0FBQztRQUVELGtCQUFrQixDQUFDLFVBQVUsQ0FBQyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUE7UUFFeEQsTUFBTSxDQUFDLFlBQVksQ0FBQyxrQkFBa0IsRUFBRSxFQUFDLFVBQVUsRUFBQyxDQUFDLENBQUE7SUFDdkQsQ0FBQyxDQUFBO0lBRUQsb0JBQW9CLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLENBQUE7Q0FDdEQsQ0FBQyxDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtY2hlY2tcbi8qIGVzbGludC1kaXNhYmxlIGFycm93LWJvZHktc3R5bGUsIGltcG9ydC9uby1uYW1lZC1hcy1kZWZhdWx0LCBpbXBvcnQvbm8tdW5yZXNvbHZlZCAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tcmV0dXJuLWFzc2lnbiwgbm8tdW51c2VkLXZhcnMsIHJlYWN0L2pzeC1tYXgtZGVwdGggKi9cbi8qIGVzbGludC1kaXNhYmxlIHJlYWN0L2pzeC1vbmUtZXhwcmVzc2lvbi1wZXItbGluZSwgcmVhY3QvanN4LXNvcnQtcHJvcHMgKi9cbi8qIGVzbGludC1kaXNhYmxlIHJlYWN0L3NvcnQtcHJvcC10eXBlcywgc29ydC1pbXBvcnRzICovXG5pbXBvcnQge2RpZywgZGlnZywgZGlnc30gZnJvbSBcImRpZ2dlcml6ZVwiXG5pbXBvcnQgUmVhY3QsIHtjcmVhdGVDb250ZXh0LCB1c2VDb250ZXh0LCB1c2VFZmZlY3QsIHVzZU1lbW8sIHVzZVJlZn0gZnJvbSBcInJlYWN0XCJcbmltcG9ydCB7QW5pbWF0ZWQsIFBsYXRmb3JtLCBQcmVzc2FibGUsIFZpZXd9IGZyb20gXCJyZWFjdC1uYXRpdmVcIlxuaW1wb3J0IGFwaU1ha2VyQ29uZmlnIGZyb20gXCIuLi9jb25maWcuanNcIlxuaW1wb3J0IEJsb2NraW5nT3ZlcmxheSBmcm9tIFwiLi9ibG9ja2luZy1vdmVybGF5XCJcbmltcG9ydCBMYXJnZVBlclBhZ2VXYXJuaW5nTW9kYWwgZnJvbSBcIi4vbGFyZ2UtcGVyLXBhZ2Utd2FybmluZy1tb2RhbFwiXG5pbXBvcnQgQ2FyZCBmcm9tIFwiLi4vYm9vdHN0cmFwL2NhcmRcIlxuaW1wb3J0IGNsYXNzTmFtZXMgZnJvbSBcImNsYXNzbmFtZXNcIlxuaW1wb3J0IENvbGxlY3Rpb24gZnJvbSBcIi4uL2NvbGxlY3Rpb24uanNcIlxuaW1wb3J0IGNvbHVtblZpc2libGUgZnJvbSBcIi4vY29sdW1uLXZpc2libGUuanNcIlxuaW1wb3J0IGRlYm91bmNlIGZyb20gXCJkZWJvdW5jZVwiXG5pbXBvcnQgRHJhZ2dhYmxlU29ydCBmcm9tIFwiLi4vZHJhZ2dhYmxlLXNvcnQvaW5kZXhcIlxuaW1wb3J0IHtFdmVudEVtaXR0ZXJ9IGZyb20gXCJldmVudGVtaXR0ZXIzXCJcbmltcG9ydCBGaWx0ZXJzIGZyb20gXCIuL2ZpbHRlcnMvaW5kZXhcIlxuaW1wb3J0IEZsYXRMaXN0IGZyb20gXCIuL2NvbXBvbmVudHMvZmxhdC1saXN0XCJcbmltcG9ydCB7Rm9ybX0gZnJvbSBcIi4uL2Zvcm1cIlxuaW1wb3J0IEhlYWRlciBmcm9tIFwiLi9jb21wb25lbnRzL2hlYWRlclwiXG5pbXBvcnQgSGVhZGVyQ29sdW1uIGZyb20gXCIuL2hlYWRlci1jb2x1bW5cIlxuaW1wb3J0IEhlYWRlclNlbGVjdCBmcm9tIFwiLi9oZWFkZXItc2VsZWN0XCJcbmltcG9ydCBJY29uIGZyb20gXCIuLi91dGlscy9pY29uXCJcbmltcG9ydCB7aW5jb3Jwb3JhdGV9IGZyb20gXCJpbmNvcnBvcmF0b3JcIlxuaW1wb3J0ICogYXMgaW5mbGVjdGlvbiBmcm9tIFwiaW5mbGVjdGlvblwiXG5pbXBvcnQgbWVtbyBmcm9tIFwic2V0LXN0YXRlLWNvbXBhcmUvYnVpbGQvbWVtby5qc1wiXG5pbXBvcnQgbW9kZWxDbGFzc1JlcXVpcmUgZnJvbSBcIi4uL21vZGVsLWNsYXNzLXJlcXVpcmUuanNcIlxuaW1wb3J0IE1vZGVsUm93IGZyb20gXCIuL21vZGVsLXJvd1wiXG5pbXBvcnQgbW92ZURyYWdnZWRDb2x1bW5Qb3NpdGlvbiBmcm9tIFwiLi9tb3ZlLWRyYWdnZWQtY29sdW1uLXBvc2l0aW9uLmpzXCJcbmltcG9ydCBQYWdpbmF0ZSBmcm9tIFwiLi4vYm9vdHN0cmFwL3BhZ2luYXRlXCJcbmltcG9ydCBQYXJhbXMgZnJvbSBcIi4uL3BhcmFtcy5qc1wiXG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCJcbmltcG9ydCBSb3cgZnJvbSBcIi4vY29tcG9uZW50cy9yb3dcIlxuaW1wb3J0IHNlbGVjdENhbGN1bGF0b3IgZnJvbSBcIi4vc2VsZWN0LWNhbGN1bGF0b3IuanNcIlxuaW1wb3J0IFNlbGVjdCBmcm9tIFwiLi4vaW5wdXRzL3NlbGVjdFwiXG5pbXBvcnQgU2V0dGluZ3MgZnJvbSBcIi4vc2V0dGluZ3MvaW5kZXhcIlxuaW1wb3J0IHtTaGFwZUNvbXBvbmVudCwgc2hhcGVDb21wb25lbnR9IGZyb20gXCJzZXQtc3RhdGUtY29tcGFyZS9idWlsZC9zaGFwZS1jb21wb25lbnQuanNcIlxuaW1wb3J0IHNob3VsZFJlbmRlckxvYWRpbmdDb250ZW50IGZyb20gXCIuL3Nob3VsZC1yZW5kZXItbG9hZGluZy1jb250ZW50LmpzXCJcbmltcG9ydCBUYWJsZVNldHRpbmdzIGZyb20gXCIuL3RhYmxlLXNldHRpbmdzLmpzXCJcbmltcG9ydCBUZXh0IGZyb20gXCIuLi91dGlscy90ZXh0XCJcbmltcG9ydCB1bmlxdW5pemUgZnJvbSBcInVuaXF1bml6ZVwiXG5pbXBvcnQge3VzZUJyZWFrcG9pbnR9IGZyb20gXCJyZXNwb25zaXZlLWJyZWFrcG9pbnRzXCJcbmltcG9ydCB1c2VDb2xsZWN0aW9uIGZyb20gXCIuLi91c2UtY29sbGVjdGlvbi5qc1wiXG5pbXBvcnQgdXNlSTE4biBmcm9tIFwiaTE4bi1vbi1zdGVyb2lkcy9idWlsZC9zcmMvdXNlLWkxOG4uanNcIlxuaW1wb3J0IHVzZUV2ZW50RW1pdHRlciBmcm9tIFwieWEtdXNlLWV2ZW50LWVtaXR0ZXJcIlxuaW1wb3J0IHVzZU1vZGVsRXZlbnQgZnJvbSBcIi4uL3VzZS1tb2RlbC1ldmVudC5qc1wiXG5pbXBvcnQgdXNlUXVlcnlQYXJhbXMgZnJvbSBcIm9uLWxvY2F0aW9uLWNoYW5nZWQvYnVpbGQvdXNlLXF1ZXJ5LXBhcmFtcy5qc1wiXG5pbXBvcnQgV2lkdGhzIGZyb20gXCIuL3dpZHRoc1wiXG5pbXBvcnQgV29ya2VyUGx1Z2luc0NoZWNrQWxsQ2hlY2tib3ggZnJvbSBcIi4vd29ya2VyLXBsdWdpbnMtY2hlY2stYWxsLWNoZWNrYm94XCJcblxuLyoqXG4gKiBUYWJsZSBjb21wb25lbnQgd2l0aCBzb3J0YWJsZSwgcmVzaXphYmxlIGNvbHVtbnMgYW5kIG9wdGlvbmFsIGZpbHRlcnMuXG4gKi9cbmNvbnN0IGRhdGFTZXRzID0ge31cbmNvbnN0IHBhZ2luYXRpb25PcHRpb25zID0gWzMwLCA2MCwgOTAsIFtcIkFsbFwiLCBcImFsbFwiXV1cbmNvbnN0IHN0eWxlcyA9IHt9XG5jb25zdCBUYWJsZUNvbnRleHQgPSBjcmVhdGVDb250ZXh0KHVuZGVmaW5lZClcblxuLyoqIEB0eXBlZGVmIHtpbXBvcnQoXCIuLi9iYXNlLW1vZGVsLmpzXCIpLmRlZmF1bHR9IEJhc2VNb2RlbCAqL1xuLyoqIEB0eXBlZGVmIHtpbXBvcnQoXCIuLi9yZXN1bHQuanNcIikuZGVmYXVsdH0gVGFibGVSZXN1bHQgKi9cbi8qKiBAdHlwZWRlZiB7aW1wb3J0KFwiLi4vY29sbGVjdGlvbi5qc1wiKS5RdWVyeVBhcmFtVmFsdWVNYXB9IFRhYmxlUXVlcnlQYXJhbXMgKi9cbi8qKiBAdHlwZWRlZiB7aW1wb3J0KFwiLi4vdXNlLWNvbGxlY3Rpb24uanNcIikuVXNlQ29sbGVjdGlvblF1ZXJ5TWV0aG9kfSBUYWJsZVF1ZXJ5TWV0aG9kICovXG4vKiogQHR5cGVkZWYge2ltcG9ydChcIi4vd2lkdGhzXCIpLmRlZmF1bHR9IFRhYmxlV2lkdGhzICovXG4vKipcbiAqIEB0eXBlZGVmIHtCYXNlTW9kZWwgJiB7XG4gKiAgIGlkKCk6IG51bWJlciB8IHN0cmluZyxcbiAqICAgbW9kZWxDbGFzc0RhdGEoKToge25hbWU6IHN0cmluZ30sXG4gKiAgIGNhY2hlS2V5KCk6IHN0cmluZyxcbiAqICAgY2FuKG5hbWU6IHN0cmluZyk6IGJvb2xlYW4sXG4gKiAgIGRlc3Ryb3koKTogUHJvbWlzZTx2b2lkPlxuICogfX0gVGFibGVNb2RlbFxuICovXG4vKiogQHR5cGVkZWYge3tuYW1lOiBzdHJpbmcsIHJlc291cmNlX25hbWU6IHN0cmluZ319IFRhYmxlUmVsYXRpb25zaGlwICovXG4vKiogQHR5cGVkZWYge3tjb2xsZWN0aW9uS2V5OiBzdHJpbmcsIG5hbWU6IHN0cmluZywgcGFyYW1LZXk6IHN0cmluZywgcmVsYXRpb25zaGlwczogVGFibGVSZWxhdGlvbnNoaXBbXX19IFRhYmxlTW9kZWxDbGFzc0RhdGEgKi9cbi8qKiBAdHlwZWRlZiB7e2h1bWFuKGFyZ3M6IHtjb3VudDogbnVtYmVyfSk6IHN0cmluZ319IEh1bWFuTW9kZWxOYW1lICovXG4vKipcbiAqIEB0eXBlZGVmIHt7XG4gKiAgIGhhc0F0dHJpYnV0ZShuYW1lOiBzdHJpbmcpOiBib29sZWFuLFxuICogICBodW1hbkF0dHJpYnV0ZU5hbWUobmFtZTogc3RyaW5nKTogc3RyaW5nLFxuICogICBtb2RlbENsYXNzRGF0YSgpOiBUYWJsZU1vZGVsQ2xhc3NEYXRhLFxuICogICBtb2RlbE5hbWUoKTogSHVtYW5Nb2RlbE5hbWUsXG4gKiAgIHByaW1hcnlLZXkoKTogc3RyaW5nXG4gKiB9fSBUYWJsZU1vZGVsQ2xhc3NcbiAqL1xuLyoqIEB0eXBlZGVmIHtCYXNlTW9kZWwgJiB7aWQoKTogbnVtYmVyIHwgc3RyaW5nfX0gQ3VycmVudFVzZXJNb2RlbCAqL1xuLyoqIEB0eXBlZGVmIHtCYXNlTW9kZWwgJiB7aWQoKTogbnVtYmVyIHwgc3RyaW5nfX0gV29ya3BsYWNlTW9kZWwgKi9cbi8qKlxuICogQHR5cGVkZWYge3tcbiAqICAgYXR0cmlidXRlPzogc3RyaW5nLFxuICogICBjbGFzc05hbWU/OiBzdHJpbmcsXG4gKiAgIGRlZmF1bHRWaXNpYmxlPzogYm9vbGVhbixcbiAqICAgaWRlbnRpZmllcj86IHN0cmluZyxcbiAqICAgbGFiZWw/OiBzdHJpbmcsXG4gKiAgIHBhdGg/OiBzdHJpbmdbXSxcbiAqICAgc29ydEtleT86IHN0cmluZ1xuICogfX0gVGFibGVDb2x1bW5EZWZpbml0aW9uXG4gKi9cbi8qKlxuICogQHR5cGVkZWYge3tcbiAqICAgZnVsbENhY2hlS2V5KCk6IHN0cmluZyxcbiAqICAgaWRlbnRpZmllcigpOiBzdHJpbmcsXG4gKiAgIHBvc2l0aW9uKCk6IG51bWJlcixcbiAqICAgc29ydEtleSgpOiBzdHJpbmcsXG4gKiAgIHZpc2libGUoKTogYm9vbGVhbiB8IG51bGwsXG4gKiAgIHVwZGF0ZShhcmdzOiB7dmlzaWJsZT86IGJvb2xlYW4sIHdpZHRoPzogbnVtYmVyfSk6IFByb21pc2U8dm9pZD5cbiAqIH19IFRhYmxlU2V0dGluZ0NvbHVtblxuICovXG4vKiogQHR5cGVkZWYge3tmdWxsQ2FjaGVLZXkoKTogc3RyaW5nfX0gVGFibGVTZXR0aW5nUmVjb3JkICovXG4vKipcbiAqIEB0eXBlZGVmIHt7XG4gKiAgIGFuaW1hdGVkUG9zaXRpb24/OiBpbXBvcnQoXCJyZWFjdC1uYXRpdmVcIikuQW5pbWF0ZWQuVmFsdWVYWSxcbiAqICAgYW5pbWF0ZWRXaWR0aD86IGltcG9ydChcInJlYWN0LW5hdGl2ZVwiKS5BbmltYXRlZC5WYWx1ZSxcbiAqICAgYW5pbWF0ZWRaSW5kZXg/OiBpbXBvcnQoXCJyZWFjdC1uYXRpdmVcIikuQW5pbWF0ZWQuVmFsdWUsXG4gKiAgIGNvbHVtbjogVGFibGVDb2x1bW5EZWZpbml0aW9uLFxuICogICB0YWJsZVNldHRpbmdDb2x1bW46IFRhYmxlU2V0dGluZ0NvbHVtbixcbiAqICAgd2lkdGg/OiBudW1iZXJcbiAqIH19IFByZXBhcmVkQ29sdW1uXG4gKi9cbi8qKiBAdHlwZWRlZiB7e2FzT2JqZWN0KCk6IFRhYmxlUXVlcnlQYXJhbXN9fSBUYWJsZUZpbHRlckZvcm1TdGF0ZSAqL1xuLyoqIEB0eXBlZGVmIHtSZWNvcmQ8c3RyaW5nLCBCYXNlTW9kZWwgfCBzdHJpbmc+fSBUYWJsZU1vZGVsQ2FsbGJhY2tBcmdzICovXG4vKiogQHR5cGVkZWYge3ttb2RlbHM/OiBUYWJsZU1vZGVsW10sIHFQYXJhbXM/OiBUYWJsZVF1ZXJ5UGFyYW1zLCBxdWVyeT86IENvbGxlY3Rpb24sIHJlc3VsdD86IFRhYmxlUmVzdWx0fX0gVGFibGVSZW5kZXJBcmdzICovXG4vKiogQHR5cGVkZWYge3tvbkZpbHRlckNoYW5nZWQ6ICgpID0+IHZvaWQsIG9uRmlsdGVyQ2hhbmdlZFdpdGhEZWxheTogKCkgPT4gdm9pZCwgcVBhcmFtczogVGFibGVRdWVyeVBhcmFtcywgcXVlcnlRTmFtZTogc3RyaW5nfX0gRmlsdGVyQ29udGVudEFyZ3MgKi9cbi8qKiBAdHlwZWRlZiB7e21vZGVsczogVGFibGVNb2RlbFtdLCBxUGFyYW1zOiBUYWJsZVF1ZXJ5UGFyYW1zLCBxdWVyeTogQ29sbGVjdGlvbiwgcmVzdWx0OiBUYWJsZVJlc3VsdH19IE9uTW9kZWxzTG9hZGVkQXJncyAqL1xuXG4vKiogQHR5cGVkZWYge1JlY29yZDxzdHJpbmcsIG5ldmVyPn0gSGVhZGVyUHJvcHMgKi9cbi8qKlxuICogQHR5cGVkZWYge29iamVjdH0gSGVhZGVyU3RhdGVcbiAqIEBwcm9wZXJ0eSB7RGF0ZX0gbGFzdFVwZGF0ZVxuICovXG5jb25zdCBMaXN0SGVhZGVyQ29tcG9uZW50ID0gbWVtbyhzaGFwZUNvbXBvbmVudCgvKiogQGF1Z21lbnRzIHtTaGFwZUNvbXBvbmVudDxIZWFkZXJQcm9wcywgSGVhZGVyU3RhdGU+fSAqLyBjbGFzcyBMaXN0SGVhZGVyQ29tcG9uZW50IGV4dGVuZHMgU2hhcGVDb21wb25lbnQge1xuICBzdGF0ZSA9IHtcbiAgICBsYXN0VXBkYXRlOiBuZXcgRGF0ZSgpXG4gIH1cblxuICBzZXR1cCgpIHt9XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHttZFVwfSA9IHVzZUJyZWFrcG9pbnQoKVxuICAgIGNvbnN0IHRhYmxlQ29udGV4dFZhbHVlID0gdXNlQ29udGV4dChUYWJsZUNvbnRleHQpXG4gICAgY29uc3QgdGFibGUgPSB0YWJsZUNvbnRleHRWYWx1ZS50YWJsZVxuICAgIGNvbnN0IHtjb2xsZWN0aW9uLCBldmVudHMsIHF1ZXJ5V2l0aG91dFBhZ2luYXRpb24sIHR9ID0gdGFibGUudHRcbiAgICBjb25zdCB7cXVlcnl9ID0gZGlncyhjb2xsZWN0aW9uLCBcInF1ZXJ5XCIpXG5cbiAgICB1c2VFdmVudEVtaXR0ZXIoZXZlbnRzLCBcImNvbHVtblZpc2liaWxpdHlVcGRhdGVkXCIsIHRoaXMudHQub25Db2x1bW5WaXNpYmlsaXR5VXBkYXRlZClcblxuICAgIHJldHVybiAoXG4gICAgICA8Um93IHN0eWxlPXt0YWJsZS5zdHlsZUZvclJvd0hlYWRlcigpfSB0ZXN0SUQ9XCJhcGktbWFrZXIvdGFibGUvaGVhZGVyLXJvd1wiPlxuICAgICAgICB7dGFibGUucC53b3JrcGxhY2UgJiYgdGFibGUucy5jdXJyZW50V29ya3BsYWNlICYmXG4gICAgICAgICAgPEhlYWRlciBzdHlsZT17dGFibGUuc3R5bGVGb3JIZWFkZXIoe3N0eWxlOiB7d2lkdGg6IG1kVXAgPyA0MSA6IHVuZGVmaW5lZH19KX0+XG4gICAgICAgICAgICA8V29ya2VyUGx1Z2luc0NoZWNrQWxsQ2hlY2tib3hcbiAgICAgICAgICAgICAgY3VycmVudFdvcmtwbGFjZT17dGFibGUucy5jdXJyZW50V29ya3BsYWNlfVxuICAgICAgICAgICAgICBxdWVyeT17cXVlcnlXaXRob3V0UGFnaW5hdGlvbn1cbiAgICAgICAgICAgICAgc3R5bGU9e3N0eWxlcy53b3JrZXJQbGd1aW5zQ2hlY2tBbGxDaGVja2JveFN0eWxlIHx8PSB7bWFyZ2luSG9yaXpvbnRhbDogXCJhdXRvXCJ9fVxuICAgICAgICAgICAgICB0YWJsZT17dGFibGV9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgeyFtZFVwICYmXG4gICAgICAgICAgICAgIDxUZXh0IHN0eWxlPXtzdHlsZXMuc2VsZWN0QWxsRm91bmRUZXh0U3R5bGUgfHw9IHttYXJnaW5MZWZ0OiAzfX0+XG4gICAgICAgICAgICAgICAge3QoXCIuc2VsZWN0X2FsbF9mb3VuZFwiLCB7ZGVmYXVsdFZhbHVlOiBcIlNlbGVjdCBhbGwgZm91bmRcIn0pfVxuICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9IZWFkZXI+XG4gICAgICAgIH1cbiAgICAgICAgeyFtZFVwICYmXG4gICAgICAgICAgPEhlYWRlciBzdHlsZT17dGFibGUuc3R5bGVGb3JIZWFkZXIoe3N0eWxlOiB7fX0pfT5cbiAgICAgICAgICAgIDxIZWFkZXJTZWxlY3QgcHJlcGFyZWRDb2x1bW5zPXt0YWJsZS5zLnByZXBhcmVkQ29sdW1uc30gcXVlcnk9e3F1ZXJ5fSB0YWJsZT17dGFibGV9IC8+XG4gICAgICAgICAgPC9IZWFkZXI+XG4gICAgICAgIH1cbiAgICAgICAge21kVXAgJiZcbiAgICAgICAgICA8PlxuICAgICAgICAgICAge3RhYmxlLmhlYWRlcnNDb250ZW50RnJvbUNvbHVtbnMoKX1cbiAgICAgICAgICAgIDxIZWFkZXIgc3R5bGU9e3RhYmxlLnN0eWxlRm9ySGVhZGVyKHtzdHlsZToge30sIHR5cGU6IFwiYWN0aW9uc1wifSl9IC8+XG4gICAgICAgICAgPC8+XG4gICAgICAgIH1cbiAgICAgIDwvUm93PlxuICAgIClcbiAgfVxuXG4gIG9uQ29sdW1uVmlzaWJpbGl0eVVwZGF0ZWQgPSAoKSA9PiB7XG4gICAgdGhpcy5zLmxhc3RVcGRhdGUgPSBuZXcgRGF0ZSgpXG4gIH1cbn0pKVxuXG4vKipcbiAqIEB0eXBlZGVmIHtvYmplY3R9IFByb3BzXG4gKiBAcHJvcGVydHkge1JlY29yZDxzdHJpbmcsIHN0cmluZ1tdPn0gW2FiaWxpdGllc11cbiAqIEBwcm9wZXJ0eSB7KGFyZ3M6IFRhYmxlTW9kZWxDYWxsYmFja0FyZ3MpID0+IGltcG9ydChcInJlYWN0XCIpLlJlYWN0Tm9kZX0gW2FjdGlvbnNDb250ZW50XVxuICogQHByb3BlcnR5IHt7cHVzaD86IChwYXRoOiBzdHJpbmcpID0+IHZvaWR9fSBbYXBwSGlzdG9yeV1cbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gW2NhcmRdXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW2NsYXNzTmFtZV1cbiAqIEBwcm9wZXJ0eSB7Q29sbGVjdGlvbn0gW2NvbGxlY3Rpb25dXG4gKiBAcHJvcGVydHkge1RhYmxlQ29sdW1uRGVmaW5pdGlvbltdIHwgKCgpID0+IFRhYmxlQ29sdW1uRGVmaW5pdGlvbltdKX0gW2NvbHVtbnNdXG4gKiBAcHJvcGVydHkgeyhhcmdzOiBUYWJsZVJlbmRlckFyZ3MpID0+IGltcG9ydChcInJlYWN0XCIpLlJlYWN0Tm9kZX0gW2NvbnRyb2xzXVxuICogQHByb3BlcnR5IHtDdXJyZW50VXNlck1vZGVsIHwgbnVsbH0gW2N1cnJlbnRVc2VyXVxuICogQHByb3BlcnR5IHsoKHZhbHVlOiBEYXRlIHwgbnVtYmVyIHwgc3RyaW5nKSA9PiBzdHJpbmcpIHwgc3RyaW5nfSBbZGVmYXVsdERhdGVGb3JtYXROYW1lXVxuICogQHByb3BlcnR5IHsoKHZhbHVlOiBEYXRlIHwgbnVtYmVyIHwgc3RyaW5nKSA9PiBzdHJpbmcpIHwgc3RyaW5nfSBbZGVmYXVsdERhdGVUaW1lRm9ybWF0TmFtZV1cbiAqIEBwcm9wZXJ0eSB7VGFibGVRdWVyeVBhcmFtc30gW2RlZmF1bHRQYXJhbXNdXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IFtkZXN0cm95RW5hYmxlZF1cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBbZGVzdHJveU1lc3NhZ2VdXG4gKiBAcHJvcGVydHkge2ltcG9ydChcInJlYWN0LW5hdGl2ZVwiKS5TdHlsZVByb3A8aW1wb3J0KFwicmVhY3QtbmF0aXZlXCIpLlZpZXdTdHlsZT59IFtkcmFnZ2VkSGVhZGVyU3R5bGVdXG4gKiBAcHJvcGVydHkgeyhhcmdzOiBUYWJsZU1vZGVsQ2FsbGJhY2tBcmdzKSA9PiBzdHJpbmd9IFtlZGl0TW9kZWxQYXRoXVxuICogQHByb3BlcnR5IHtib29sZWFufSBbZmlsdGVyQ2FyZF1cbiAqIEBwcm9wZXJ0eSB7KGFyZ3M6IEZpbHRlckNvbnRlbnRBcmdzKSA9PiBpbXBvcnQoXCJyZWFjdFwiKS5SZWFjdE5vZGV9IFtmaWx0ZXJDb250ZW50XVxuICogQHByb3BlcnR5IHtudW1iZXIgfCBzdHJpbmcgfCBzdHJpbmdbXX0gW2ZpbHRlclN1Ym1pdExhYmVsXVxuICogQHByb3BlcnR5IHtzdHJpbmdbXX0gW2dyb3VwQnldXG4gKiBAcHJvcGVydHkgeygoYXJnczogVGFibGVSZW5kZXJBcmdzKSA9PiBpbXBvcnQoXCJyZWFjdFwiKS5SZWFjdE5vZGUpIHwgc3RyaW5nfSBbaGVhZGVyXVxuICogQHByb3BlcnR5IHtzdHJpbmd9IFtpZGVudGlmaWVyXVxuICogQHByb3BlcnR5IHtUYWJsZU1vZGVsQ2xhc3N9IG1vZGVsQ2xhc3NcbiAqIEBwcm9wZXJ0eSB7KGFyZ3M6IFRhYmxlUmVuZGVyQXJncykgPT4gaW1wb3J0KFwicmVhY3RcIikuUmVhY3ROb2RlfSBbbm9SZWNvcmRzQXZhaWxhYmxlQ29udGVudF1cbiAqIEBwcm9wZXJ0eSB7KGFyZ3M6IFRhYmxlUmVuZGVyQXJncykgPT4gaW1wb3J0KFwicmVhY3RcIikuUmVhY3ROb2RlfSBbbm9SZWNvcmRzRm91bmRDb250ZW50XVxuICogQHByb3BlcnR5IHsoYXJnczogT25Nb2RlbHNMb2FkZWRBcmdzKSA9PiB2b2lkfSBbb25Nb2RlbHNMb2FkZWRdXG4gKiBAcHJvcGVydHkgeyhhcmdzOiB7cmVzdWx0OiBUYWJsZVJlc3VsdH0pID0+IGltcG9ydChcInJlYWN0XCIpLlJlYWN0Tm9kZX0gW3BhZ2luYXRlQ29udGVudF1cbiAqIEBwcm9wZXJ0eSB7aW1wb3J0KFwicmVhY3RcIikuQ29tcG9uZW50VHlwZTx7cmVzdWx0OiBUYWJsZVJlc3VsdH0+fSBbcGFnaW5hdGlvbkNvbXBvbmVudF1cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nW119IFtwcmVsb2Fkc11cbiAqIEBwcm9wZXJ0eSB7VGFibGVRdWVyeU1ldGhvZH0gW3F1ZXJ5TWV0aG9kXVxuICogQHByb3BlcnR5IHtzdHJpbmd9IFtxdWVyeU5hbWVdXG4gKiBAcHJvcGVydHkge1JlY29yZDxzdHJpbmcsIHN0cmluZ1tdPn0gW3NlbGVjdF1cbiAqIEBwcm9wZXJ0eSB7UmVjb3JkPHN0cmluZywgc3RyaW5nW10+fSBbc2VsZWN0Q29sdW1uc11cbiAqIEBwcm9wZXJ0eSB7e2NvbnRhaW5lcj86IGltcG9ydChcInJlYWN0LW5hdGl2ZVwiKS5TdHlsZVByb3A8aW1wb3J0KFwicmVhY3QtbmF0aXZlXCIpLlZpZXdTdHlsZT59fSBbc3R5bGVzXVxuICogQHByb3BlcnR5IHtib29sZWFufSBbc3R5bGVVSV1cbiAqIEBwcm9wZXJ0eSB7KGFyZ3M6IFRhYmxlTW9kZWxDYWxsYmFja0FyZ3MpID0+IHN0cmluZ30gW3ZpZXdNb2RlbFBhdGhdXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IFt3b3JrcGxhY2VdXG4gKi9cbi8qKlxuICogQHR5cGVkZWYge29iamVjdH0gU3RhdGVcbiAqIEBwcm9wZXJ0eSB7UHJlcGFyZWRDb2x1bW5bXX0gY29sdW1uc1xuICogQHByb3BlcnR5IHtQcmVwYXJlZENvbHVtbltdIHwgbnVsbH0gY29sdW1uc1RvU2hvd1xuICogQHByb3BlcnR5IHtXb3JrcGxhY2VNb2RlbCB8IHVuZGVmaW5lZH0gY3VycmVudFdvcmtwbGFjZVxuICogQHByb3BlcnR5IHtudW1iZXIgfCBudWxsfSBjdXJyZW50V29ya3BsYWNlQ291bnRcbiAqIEBwcm9wZXJ0eSB7UHJlcGFyZWRDb2x1bW4gfCBudWxsfSBkcmFnZ2VkQ29sdW1uXG4gKiBAcHJvcGVydHkge1RhYmxlRmlsdGVyRm9ybVN0YXRlIHwgbnVsbH0gZmlsdGVyRm9ybVxuICogQHByb3BlcnR5IHtzdHJpbmd9IGlkZW50aWZpZXJcbiAqIEBwcm9wZXJ0eSB7RGF0ZX0gbGFzdFVwZGF0ZVxuICogQHByb3BlcnR5IHtzdHJpbmdbXSB8IHVuZGVmaW5lZH0gcHJlbG9hZFxuICogQHByb3BlcnR5IHtQcmVwYXJlZENvbHVtbltdIHwgdW5kZWZpbmVkfSBwcmVwYXJlZENvbHVtbnNcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBxdWVyeU5hbWVcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBxdWVyeVBhZ2VOYW1lXG4gKiBAcHJvcGVydHkge3N0cmluZ30gcXVlcnlRTmFtZVxuICAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBxdWVyeVNOYW1lXG4gICogQHByb3BlcnR5IHtib29sZWFufSByZXNpemluZ1xuICAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gc2hvd0ZpbHRlcnNcbiAgKiBAcHJvcGVydHkge2Jvb2xlYW59IHNob3dTZXR0aW5nc1xuICogQHByb3BlcnR5IHtUYWJsZVNldHRpbmdSZWNvcmQgfCB1bmRlZmluZWR9IHRhYmxlU2V0dGluZ1xuICogQHByb3BlcnR5IHtzdHJpbmcgfCB1bmRlZmluZWR9IHRhYmxlU2V0dGluZ0Z1bGxDYWNoZUtleVxuICogQHByb3BlcnR5IHtib29sZWFufSB0YWJsZVNldHRpbmdMb2FkZWRcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyIHwgdW5kZWZpbmVkfSB3aWR0aFxuICogQHByb3BlcnR5IHtUYWJsZVdpZHRocyB8IG51bGx9IHdpZHRoc1xuICovXG5leHBvcnQgZGVmYXVsdCBtZW1vKHNoYXBlQ29tcG9uZW50KC8qKiBAYXVnbWVudHMge1NoYXBlQ29tcG9uZW50PFByb3BzLCBTdGF0ZT59ICovIGNsYXNzIEFwaU1ha2VyVGFibGUgZXh0ZW5kcyBTaGFwZUNvbXBvbmVudCB7XG4gIC8qKlxuICAgKiBAcGFyYW0ge29iamVjdH0gcHJvcHNcbiAgICovXG4gIHN0YXRpYyBkZWZhdWx0UHJvcHMgPSB7XG4gICAgY2FyZDogdHJ1ZSxcbiAgICBjdXJyZW50VXNlcjogbnVsbCxcbiAgICBkZXN0cm95RW5hYmxlZDogdHJ1ZSxcbiAgICBkcmFnZ2VkSGVhZGVyU3R5bGU6IHVuZGVmaW5lZCxcbiAgICBmaWx0ZXJDYXJkOiB0cnVlLFxuICAgIGZpbHRlclN1Ym1pdEJ1dHRvbjogdHJ1ZSxcbiAgICBub1JlY29yZHNBdmFpbGFibGVDb250ZW50OiB1bmRlZmluZWQsXG4gICAgbm9SZWNvcmRzRm91bmRDb250ZW50OiB1bmRlZmluZWQsXG4gICAgcHJlbG9hZHM6IFtdLFxuICAgIHNlbGVjdDoge30sXG4gICAgc3R5bGVVSTogdHJ1ZSxcbiAgICB3b3JrcGxhY2U6IGZhbHNlXG4gIH1cblxuICBzdGF0aWMgcHJvcFR5cGVzID0ge1xuICAgIGFiaWxpdGllczogUHJvcFR5cGVzLm9iamVjdCxcbiAgICBhY3Rpb25zQ29udGVudDogUHJvcFR5cGVzLmZ1bmMsXG4gICAgYXBwSGlzdG9yeTogUHJvcFR5cGVzLm9iamVjdCxcbiAgICBjYXJkOiBQcm9wVHlwZXMuYm9vbCxcbiAgICBjbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgY29sbGVjdGlvbjogUHJvcFR5cGVzLmluc3RhbmNlT2YoQ29sbGVjdGlvbiksXG4gICAgY29sdW1uczogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLmFycmF5LCBQcm9wVHlwZXMuZnVuY10pLFxuICAgIGNvbnRyb2xzOiBQcm9wVHlwZXMuZnVuYyxcbiAgICBjdXJyZW50VXNlcjogUHJvcFR5cGVzLm9iamVjdCxcbiAgICBkZWZhdWx0RGF0ZUZvcm1hdE5hbWU6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5mdW5jLCBQcm9wVHlwZXMuc3RyaW5nXSksXG4gICAgZGVmYXVsdERhdGVUaW1lRm9ybWF0TmFtZTogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLmZ1bmMsIFByb3BUeXBlcy5zdHJpbmddKSxcbiAgICBkZWZhdWx0UGFyYW1zOiBQcm9wVHlwZXMub2JqZWN0LFxuICAgIGRlc3Ryb3lFbmFibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgICBkZXN0cm95TWVzc2FnZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgICBkcmFnZ2VkSGVhZGVyU3R5bGU6IFByb3BUeXBlcy5vYmplY3QsXG4gICAgZWRpdE1vZGVsUGF0aDogUHJvcFR5cGVzLmZ1bmMsXG4gICAgZmlsdGVyQ2FyZDogUHJvcFR5cGVzLmJvb2wsXG4gICAgZmlsdGVyQ29udGVudDogUHJvcFR5cGVzLmZ1bmMsXG4gICAgZmlsdGVyU3VibWl0TGFiZWw6IFByb3BUeXBlcy5hbnksXG4gICAgZ3JvdXBCeTogUHJvcFR5cGVzLmFycmF5LFxuICAgIGhlYWRlcjogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLmZ1bmMsIFByb3BUeXBlcy5zdHJpbmddKSxcbiAgICBpZGVudGlmaWVyOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIG1vZGVsQ2xhc3M6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gICAgbm9SZWNvcmRzQXZhaWxhYmxlQ29udGVudDogUHJvcFR5cGVzLmZ1bmMsXG4gICAgbm9SZWNvcmRzRm91bmRDb250ZW50OiBQcm9wVHlwZXMuZnVuYyxcbiAgICBvbk1vZGVsc0xvYWRlZDogUHJvcFR5cGVzLmZ1bmMsXG4gICAgcGFnaW5hdGVDb250ZW50OiBQcm9wVHlwZXMuZnVuYyxcbiAgICBwYWdpbmF0aW9uQ29tcG9uZW50OiBQcm9wVHlwZXMuZWxlbWVudFR5cGUsXG4gICAgcHJlbG9hZHM6IFByb3BUeXBlcy5hcnJheSxcbiAgICBxdWVyeU1ldGhvZDogUHJvcFR5cGVzLmZ1bmMsXG4gICAgcXVlcnlOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIHNlbGVjdDogUHJvcFR5cGVzLm9iamVjdCxcbiAgICBzZWxlY3RDb2x1bW5zOiBQcm9wVHlwZXMub2JqZWN0LFxuICAgIHN0eWxlczogUHJvcFR5cGVzLm9iamVjdCxcbiAgICBzdHlsZVVJOiBQcm9wVHlwZXMuYm9vbCxcbiAgICB2aWV3TW9kZWxQYXRoOiBQcm9wVHlwZXMuZnVuYyxcbiAgICB3b3JrcGxhY2U6IFByb3BUeXBlcy5ib29sXG4gIH1cblxuICBkcmFnZ2FibGVTb3J0RXZlbnRzID0gbmV3IEV2ZW50RW1pdHRlcigpXG4gIGV2ZW50cyA9IG5ldyBFdmVudEVtaXR0ZXIoKVxuICBjdXJyZW50V29ya3BsYWNlTG9hZFJlcXVlc3RJZCA9IDBcbiAgY3VycmVudFdvcmtwbGFjZUNvdW50UmVxdWVzdElkID0gMFxuICB0YWJsZVNldHRpbmdMb2FkUmVxdWVzdElkID0gMFxuICB0YWJsZVNldHRpbmdzID0gbnVsbFxuICBibG9ja2luZ0NvdW50ID0gMFxuXG4gIC8qKlxuICAgKiBSdW5zIHRoZSBnaXZlbiBhc3luYyBmdW5jdGlvbiB3aGlsZSBzaG93aW5nIHRoZSB0YWJsZSdzIGJsb2NraW5nIG92ZXJsYXksXG4gICAqIHByZXZlbnRpbmcgdGhlIHVzZXIgZnJvbSBzdGFydGluZyBhIHNlY29uZCBoZWF2eSBhY3Rpb24gKHNlbGVjdCBhbGwsXG4gICAqIGRlc2VsZWN0IGFsbCwgcGVyLXJvdyBkZXN0cm95LCAuLi4pIHdoaWxlIHRoZSBmaXJzdCBpcyBpbiBmbGlnaHQuXG4gICAqXG4gICAqIFJlLWVudHJhbnQg4oCUIG5lc3RlZCBvciBvdmVybGFwcGluZyBjYWxscyBrZWVwIHRoZSBvdmVybGF5IHNob3duIHVudGlsIHRoZVxuICAgKiBvdXRlcm1vc3QgY2FsbCByZXNvbHZlcy5cbiAgICpcbiAgICogRW1pdHMgdGhlIFwiYmxvY2tpbmdcIiBldmVudHMgdmlhIGBxdWV1ZU1pY3JvdGFza2Agc28gdGhlIG92ZXJsYXknc1xuICAgKiBzdWJzY3JpcHRpb24gaGFzIGNvbW1pdHRlZCBiZWZvcmUgdGhlIGZpcnN0IGV2ZW50IGZpcmVzIOKAlCBvdGhlcndpc2UgYVxuICAgKiBoZWF2eSBhY3Rpb24ga2lja2VkIG9mZiBmcm9tIGEgc2libGluZyBjb21wb25lbnQncyBgc2V0dXAoKWAgKGUuZy4gdGhlXG4gICAqIGNoZWNrLWFsbCBjaGVja2JveCdzIGluaXRpYWwgYHVwZGF0ZUFsbENoZWNrZWRgKSBjYW4gZW1pdCBiZWZvcmUgdGhlXG4gICAqIG92ZXJsYXkgbW91bnRzLCBhbmQgdGhlIGluaXRpYWwgdHJhbnNpdGlvbiB0byBibG9ja2luZyBpcyBsb3N0LlxuICAgKlxuICAgKiBAdGVtcGxhdGUgVFxuICAgKiBAcGFyYW0geygpID0+IFByb21pc2U8VD59IGZuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPFQ+fVxuICAgKi9cbiAgd2l0aEJsb2NraW5nID0gYXN5bmMgKGZuKSA9PiB7XG4gICAgdGhpcy5ibG9ja2luZ0NvdW50ICs9IDFcbiAgICBpZiAodGhpcy5ibG9ja2luZ0NvdW50ID09PSAxKSBxdWV1ZU1pY3JvdGFzaygoKSA9PiB0aGlzLmV2ZW50cy5lbWl0KFwiYmxvY2tpbmdcIiwgdHJ1ZSkpXG5cbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGF3YWl0IGZuKClcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5ibG9ja2luZ0NvdW50IC09IDFcbiAgICAgIGlmICh0aGlzLmJsb2NraW5nQ291bnQgPT09IDApIHF1ZXVlTWljcm90YXNrKCgpID0+IHRoaXMuZXZlbnRzLmVtaXQoXCJibG9ja2luZ1wiLCBmYWxzZSkpXG4gICAgfVxuICB9XG4gIHN0YXRlID0ge1xuICAgIGNvbHVtbnM6IHRoaXMuY29sdW1uc0FzQXJyYXkoKSxcbiAgICBjdXJyZW50V29ya3BsYWNlOiB1bmRlZmluZWQsXG4gICAgY3VycmVudFdvcmtwbGFjZUNvdW50OiBudWxsLFxuICAgIGZpbHRlckZvcm06IG51bGwsXG4gICAgY29sdW1uc1RvU2hvdzogbnVsbCxcbiAgICBkcmFnZ2VkQ29sdW1uOiBudWxsLFxuICAgIGlkZW50aWZpZXI6IHRoaXMucHJvcHMuaWRlbnRpZmllciB8fCBgJHtkaWdnKHRoaXMucC5tb2RlbENsYXNzLm1vZGVsQ2xhc3NEYXRhKCksIFwiY29sbGVjdGlvbktleVwiKX0tZGVmYXVsdGAsXG4gICAgbGFzdFVwZGF0ZTogbmV3IERhdGUoKSxcbiAgICBwZW5kaW5nUGVyUGFnZVZhbHVlOiBudWxsLFxuICAgIHBlclBhZ2VTZWxlY3ROb25jZTogMCxcbiAgICBwcmVsb2FkOiB1bmRlZmluZWQsXG4gICAgcHJlcGFyZWRDb2x1bW5zOiB1bmRlZmluZWQsXG4gICAgcXVlcnlOYW1lOiB0aGlzLnByb3BzLnF1ZXJ5TmFtZSB8fCBkaWdnKHRoaXMucC5tb2RlbENsYXNzLm1vZGVsQ2xhc3NEYXRhKCksIFwiY29sbGVjdGlvbktleVwiKSxcbiAgICBxdWVyeVFOYW1lOiBgJHt0aGlzLnByb3BzLnF1ZXJ5TmFtZSB8fCBkaWdnKHRoaXMucC5tb2RlbENsYXNzLm1vZGVsQ2xhc3NEYXRhKCksIFwiY29sbGVjdGlvbktleVwiKX1fcWAsXG4gICAgcXVlcnlQYWdlTmFtZTogYCR7dGhpcy5wcm9wcy5xdWVyeU5hbWUgfHwgZGlnZyh0aGlzLnAubW9kZWxDbGFzcy5tb2RlbENsYXNzRGF0YSgpLCBcImNvbGxlY3Rpb25LZXlcIil9X3BhZ2VgLFxuICAgIHF1ZXJ5U05hbWU6IGAke3RoaXMucHJvcHMucXVlcnlOYW1lIHx8IGRpZ2codGhpcy5wLm1vZGVsQ2xhc3MubW9kZWxDbGFzc0RhdGEoKSwgXCJjb2xsZWN0aW9uS2V5XCIpfV9zYCxcbiAgICByZXNpemluZzogZmFsc2UsXG4gICAgc2hvd0ZpbHRlcnM6IEJvb2xlYW4oUGFyYW1zLnBhcnNlKClbYCR7dGhpcy5wcm9wcy5xdWVyeU5hbWUgfHwgZGlnZyh0aGlzLnAubW9kZWxDbGFzcy5tb2RlbENsYXNzRGF0YSgpLCBcImNvbGxlY3Rpb25LZXlcIil9X3NgXSksXG4gICAgc2hvd0xhcmdlUGVyUGFnZVdhcm5pbmc6IGZhbHNlLFxuICAgIHNob3dTZXR0aW5nczogZmFsc2UsXG4gICAgdGFibGVTZXR0aW5nOiB1bmRlZmluZWQsXG4gICAgdGFibGVTZXR0aW5nTG9hZGVkOiBmYWxzZSxcbiAgICB0YWJsZVNldHRpbmdGdWxsQ2FjaGVLZXk6IHVuZGVmaW5lZCxcbiAgICB3aWR0aDogdW5kZWZpbmVkLFxuICAgIHdpZHRoczogbnVsbFxuICB9XG5cbiAgc2V0dXAoKSB7XG4gICAgY29uc3Qge3R9ID0gdXNlSTE4bih7bmFtZXNwYWNlOiBcImpzLmFwaV9tYWtlci50YWJsZVwifSlcbiAgICBjb25zdCB7bmFtZTogYnJlYWtwb2ludCwgbWRVcH0gPSB1c2VCcmVha3BvaW50KClcbiAgICBjb25zdCBxdWVyeVBhcmFtcyA9IHVzZVF1ZXJ5UGFyYW1zKClcblxuICAgIHRoaXMuYnJlYWtwb2ludCA9IGJyZWFrcG9pbnRcbiAgICB0aGlzLmZpbHRlckZvcm1SZWYgPSB1c2VSZWYodW5kZWZpbmVkKVxuICAgIHRoaXMubWRVcCA9IG1kVXBcbiAgICB0aGlzLnQgPSB0XG5cbiAgICBjb25zdCBjb2xsZWN0aW9uS2V5ID0gZGlnZyh0aGlzLnAubW9kZWxDbGFzcy5tb2RlbENsYXNzRGF0YSgpLCBcImNvbGxlY3Rpb25LZXlcIilcbiAgICBsZXQgcXVlcnlOYW1lID0gdGhpcy5wcm9wcy5xdWVyeU5hbWVcblxuICAgIGlmICghcXVlcnlOYW1lKSBxdWVyeU5hbWUgPSBjb2xsZWN0aW9uS2V5XG5cbiAgICBjb25zdCBxdWVyeVNOYW1lID0gYCR7cXVlcnlOYW1lfV9zYFxuXG4gICAgaWYgKHRoaXMucy5xdWVyeU5hbWUgIT0gcXVlcnlOYW1lIHx8IHRoaXMucy5xdWVyeVNOYW1lICE9IHF1ZXJ5U05hbWUpIHtcbiAgICAgIHRoaXMucy5xdWVyeU5hbWUgPSBxdWVyeU5hbWVcbiAgICAgIHRoaXMucy5xdWVyeVFOYW1lID0gYCR7cXVlcnlOYW1lfV9xYFxuICAgICAgdGhpcy5zLnF1ZXJ5UGFnZU5hbWUgPSBgJHtxdWVyeU5hbWV9X3BhZ2VgXG4gICAgICB0aGlzLnMucXVlcnlTTmFtZSA9IHF1ZXJ5U05hbWVcbiAgICAgIHRoaXMucy5zaG93RmlsdGVycyA9IEJvb2xlYW4ocXVlcnlQYXJhbXNbcXVlcnlTTmFtZV0pXG4gICAgfVxuXG4gICAgdGhpcy50YWJsZUNvbnRleHRWYWx1ZSA9IHVzZU1lbW8oXG4gICAgICAoKSA9PiAoe1xuICAgICAgICBjYWNoZUtleTogdGhpcy5zLnRhYmxlU2V0dGluZ0Z1bGxDYWNoZUtleSxcbiAgICAgICAgbGFzdFVwZGF0ZTogdGhpcy5zLmxhc3RVcGRhdGUsXG4gICAgICAgIHJlc2l6aW5nOiB0aGlzLnMucmVzaXppbmcsXG4gICAgICAgIHRhYmxlOiB0aGlzXG4gICAgICB9KSxcbiAgICAgIFt0aGlzLnMubGFzdFVwZGF0ZSwgdGhpcy5zLnJlc2l6aW5nLCB0aGlzLnMudGFibGVTZXR0aW5nRnVsbENhY2hlS2V5XVxuICAgIClcblxuICAgIC8vIFRhYmxlIGJvb3RzdHJhcHBpbmcgc2hvdWxkIHN0YXJ0IGFmdGVyIG1vdW50IHNvIGZhc3QgYXN5bmMgY29tcGxldGlvbnMgY2Fubm90IGxhbmQgYmVmb3JlIFNoYXBlQ29tcG9uZW50IGlzIHJlYWR5LlxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5wcm9wcy53b3JrcGxhY2UpIHtcbiAgICAgICAgdGhpcy5sb2FkQ3VycmVudFdvcmtwbGFjZSgpXG4gICAgICB9XG5cbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIHRoaXMuY3VycmVudFdvcmtwbGFjZUxvYWRSZXF1ZXN0SWQgKz0gMVxuICAgICAgfVxuICAgIH0sIFt0aGlzLnAuY3VycmVudFVzZXI/LmlkKCksIHRoaXMucC5tb2RlbENsYXNzXSlcblxuICAgIC8vIExvYWQgdGFibGUgc2V0dGluZ3MgYWZ0ZXIgbW91bnQgZm9yIHRoZSBzYW1lIHJlYXNvbiBhcyBjb2xsZWN0aW9uL21vZGVsIGhvb2tzOiBhdm9pZCBwcmUtbW91bnQgc3RhdGUgd3JpdGVzLlxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAvLyBBbHdheXMgYm9vdHN0cmFwIHRhYmxlIHNldHRpbmdzIGZyb20gdGhlIG1vdW50ZWQgZWZmZWN0IHNvIGRpc2NhcmRlZCBwcmUtbW91bnQgcnVucyBjYW5ub3Qgc3RyYW5kIHRoZSB0YWJsZS5cbiAgICAgIHRoaXMubG9hZFRhYmxlU2V0dGluZygpXG5cbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIHRoaXMudGFibGVTZXR0aW5nTG9hZFJlcXVlc3RJZCArPSAxXG4gICAgICB9XG4gICAgfSwgW3RoaXMucC5jdXJyZW50VXNlcj8uaWQoKSwgdGhpcy5wLm1vZGVsQ2xhc3NdKVxuXG4gICAgdXNlTW9kZWxFdmVudCh0aGlzLnMuY3VycmVudFdvcmtwbGFjZSwgXCJ3b3JrcGxhY2VfbGlua3NfY3JlYXRlZFwiLCB0aGlzLnR0Lm9uTGlua3NDcmVhdGVkKVxuICAgIHVzZU1vZGVsRXZlbnQodGhpcy5zLmN1cnJlbnRXb3JrcGxhY2UsIFwid29ya3BsYWNlX2xpbmtzX2Rlc3Ryb3llZFwiLCB0aGlzLnR0Lm9uTGlua3NEZXN0cm95ZWQpXG5cbiAgICBsZXQgY29sbGVjdGlvblJlYWR5ID0gdHJ1ZVxuICAgIGxldCBzZWxlY3RcblxuICAgIGlmICghdGhpcy5zLnByZXBhcmVkQ29sdW1ucykge1xuICAgICAgY29sbGVjdGlvblJlYWR5ID0gZmFsc2VcbiAgICB9XG5cbiAgICBpZiAoY29sbGVjdGlvblJlYWR5KSB7XG4gICAgICBzZWxlY3QgPSBzZWxlY3RDYWxjdWxhdG9yKHtcbiAgICAgICAgdGFibGU6IHtcbiAgICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgbW9kZWxDbGFzczogdGhpcy5wLm1vZGVsQ2xhc3MsXG4gICAgICAgICAgICBzZWxlY3Q6IHRoaXMucC5zZWxlY3RcbiAgICAgICAgICB9LFxuICAgICAgICAgIHN0YXRlOiB7XG4gICAgICAgICAgICBwcmVwYXJlZENvbHVtbnM6IHRoaXMucy5wcmVwYXJlZENvbHVtbnMgfHwgW11cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfVxuXG4gICAgdGhpcy5jb2xsZWN0aW9uID0gdXNlQ29sbGVjdGlvbih7XG4gICAgICBhYmlsaXRpZXM6IHRoaXMuYWJpbGl0aWVzVG9Mb2FkKCksXG4gICAgICBkZWZhdWx0UGFyYW1zOiB0aGlzLnByb3BzLmRlZmF1bHRQYXJhbXMsXG4gICAgICBjb2xsZWN0aW9uOiB0aGlzLnByb3BzLmNvbGxlY3Rpb24sXG4gICAgICBncm91cEJ5OiB0aGlzLnByb3BzLmdyb3VwQnksXG4gICAgICBpZkNvbmRpdGlvbjogY29sbGVjdGlvblJlYWR5LFxuICAgICAgbW9kZWxDbGFzczogdGhpcy5wcm9wcy5tb2RlbENsYXNzLFxuICAgICAgb25Nb2RlbHNMb2FkZWQ6IHRoaXMucHJvcHMub25Nb2RlbHNMb2FkZWQsXG4gICAgICBub1JlY29yZHNBdmFpbGFibGVDb250ZW50OiB0aGlzLnByb3BzLm5vUmVjb3Jkc0F2YWlsYWJsZUNvbnRlbnQsXG4gICAgICBub1JlY29yZHNGb3VuZENvbnRlbnQ6IHRoaXMucHJvcHMubm9SZWNvcmRzRm91bmRDb250ZW50LFxuICAgICAgcGFnaW5hdGlvbjogdHJ1ZSxcbiAgICAgIHByZWxvYWRzOiB0aGlzLnMucHJlbG9hZCxcbiAgICAgIHF1ZXJ5TWV0aG9kOiB0aGlzLnByb3BzLnF1ZXJ5TWV0aG9kLFxuICAgICAgcXVlcnlOYW1lLFxuICAgICAgc2VsZWN0LFxuICAgICAgc2VsZWN0Q29sdW1uczogdGhpcy5wcm9wcy5zZWxlY3RDb2x1bW5zXG4gICAgfSlcbiAgICB0aGlzLnF1ZXJ5V2l0aG91dFBhZ2luYXRpb24gPSB1c2VNZW1vKFxuICAgICAgKCkgPT4gdGhpcy5jb2xsZWN0aW9uPy5xdWVyeT8uY2xvbmUoKT8uZXhjZXB0KFwicGFnZVwiKSxcbiAgICAgIFt0aGlzLmNvbGxlY3Rpb24ucXVlcnldXG4gICAgKVxuXG4gICAgdXNlRXZlbnRFbWl0dGVyKHRoaXMudHQuZHJhZ2dhYmxlU29ydEV2ZW50cywgXCJvbkRyYWdTdGFydFwiLCB0aGlzLnR0Lm9uRHJhZ1N0YXJ0KVxuICAgIHVzZUV2ZW50RW1pdHRlcih0aGlzLnR0LmRyYWdnYWJsZVNvcnRFdmVudHMsIFwib25EcmFnRW5kQW5pbWF0aW9uXCIsIHRoaXMudHQub25EcmFnRW5kQW5pbWF0aW9uKVxuICAgIHVzZUV2ZW50RW1pdHRlcih0aGlzLnR0LmV2ZW50cywgXCJjb2x1bW5WaXNpYmlsaXR5VXBkYXRlZFwiLCB0aGlzLnR0Lm9uQ29sdW1uVmlzaWJpbGl0eVVwZGF0ZWQpXG4gIH1cblxuICBvbkNvbHVtblZpc2liaWxpdHlVcGRhdGVkID0gKCkgPT4ge1xuICAgIHRoaXMucy5jb2x1bW5zVG9TaG93ID0gdGhpcy5nZXRDb2x1bW5zVG9TaG93KHRoaXMucy5jb2x1bW5zKVxuICAgIHRoaXMucy5sYXN0VXBkYXRlID0gbmV3IERhdGUoKVxuICB9XG4gIG9uRHJhZ1N0YXJ0ID0gKHtpdGVtfSkgPT4gaXRlbS5hbmltYXRlZFpJbmRleC5zZXRWYWx1ZSg5OTk5KVxuICBvbkRyYWdFbmRBbmltYXRpb24gPSAoe2l0ZW19KSA9PiBpdGVtLmFuaW1hdGVkWkluZGV4LnNldFZhbHVlKDApXG5cbiAgYXN5bmMgbG9hZEN1cnJlbnRXb3JrcGxhY2UoKSB7XG4gICAgLy8gT25seSB0aGUgbGF0ZXN0IHdvcmtwbGFjZSBib290c3RyYXAgcmVxdWVzdCBtYXkgdXBkYXRlIHRhYmxlIHN0YXRlLlxuICAgIGNvbnN0IHJlcXVlc3RJZCA9IHRoaXMuY3VycmVudFdvcmtwbGFjZUxvYWRSZXF1ZXN0SWQgKyAxXG5cbiAgICB0aGlzLmN1cnJlbnRXb3JrcGxhY2VMb2FkUmVxdWVzdElkID0gcmVxdWVzdElkXG4gICAgY29uc3QgV29ya3BsYWNlID0gbW9kZWxDbGFzc1JlcXVpcmUoXCJXb3JrcGxhY2VcIilcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBXb3JrcGxhY2UuY3VycmVudCgpXG4gICAgY29uc3QgY3VycmVudFdvcmtwbGFjZSA9IGRpZyhyZXN1bHQsIFwiY3VycmVudFwiLCAwKVxuXG4gICAgaWYgKHJlcXVlc3RJZCAhPSB0aGlzLmN1cnJlbnRXb3JrcGxhY2VMb2FkUmVxdWVzdElkKSByZXR1cm5cblxuICAgIHRoaXMucy5jdXJyZW50V29ya3BsYWNlID0gY3VycmVudFdvcmtwbGFjZVxuICAgIHRoaXMubG9hZEN1cnJlbnRXb3JrcGxhY2VDb3VudCgpXG4gIH1cblxuICBhc3luYyBsb2FkQ3VycmVudFdvcmtwbGFjZUNvdW50KCkge1xuICAgIGNvbnN0IHJlcXVlc3RJZCA9ICsrdGhpcy5jdXJyZW50V29ya3BsYWNlQ291bnRSZXF1ZXN0SWRcblxuICAgIGlmICghdGhpcy5zLmN1cnJlbnRXb3JrcGxhY2UpIHtcbiAgICAgIHRoaXMucy5jdXJyZW50V29ya3BsYWNlQ291bnQgPSAwXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBjb25zdCBXb3JrcGxhY2VMaW5rID0gbW9kZWxDbGFzc1JlcXVpcmUoXCJXb3JrcGxhY2VMaW5rXCIpXG4gICAgY29uc3QgY3VycmVudFdvcmtwbGFjZUNvdW50ID0gYXdhaXQgdGhpcy53aXRoQmxvY2tpbmcoKCkgPT4gV29ya3BsYWNlTGlua1xuICAgICAgLnJhbnNhY2soe1xuICAgICAgICByZXNvdXJjZV90eXBlX2VxOiB0aGlzLnAubW9kZWxDbGFzcy5tb2RlbENsYXNzRGF0YSgpLm5hbWUsXG4gICAgICAgIHdvcmtwbGFjZV9pZF9lcTogdGhpcy5zLmN1cnJlbnRXb3JrcGxhY2UuaWQoKVxuICAgICAgfSlcbiAgICAgIC5jb3VudCgpKVxuXG4gICAgaWYgKHJlcXVlc3RJZCAhPT0gdGhpcy5jdXJyZW50V29ya3BsYWNlQ291bnRSZXF1ZXN0SWQpIHJldHVyblxuXG4gICAgdGhpcy5zLmN1cnJlbnRXb3JrcGxhY2VDb3VudCA9IGN1cnJlbnRXb3JrcGxhY2VDb3VudFxuICB9XG5cbiAgZ2V0Q29sdW1uc1RvU2hvdyhjb2x1bW5zKSB7XG4gICAgcmV0dXJuIGNvbHVtbnNcbiAgICAgIC5maWx0ZXIoKHtjb2x1bW4sIHRhYmxlU2V0dGluZ0NvbHVtbn0pID0+IGNvbHVtblZpc2libGUoY29sdW1uLCB0YWJsZVNldHRpbmdDb2x1bW4pKVxuICAgICAgLnNvcnQoKGEsIGIpID0+IGEudGFibGVTZXR0aW5nQ29sdW1uLnBvc2l0aW9uKCkgLSBiLnRhYmxlU2V0dGluZ0NvbHVtbi5wb3NpdGlvbigpKVxuICB9XG5cbiAgYXN5bmMgbG9hZFRhYmxlU2V0dGluZygpIHtcbiAgICAvLyBJZ25vcmUgbGF0ZSB0YWJsZS1zZXR0aW5nIHJlc3BvbnNlcyBhZnRlciBuYXZpZ2F0aW9uIG9yIHJlbW91bnRzLlxuICAgIGNvbnN0IHJlcXVlc3RJZCA9IHRoaXMudGFibGVTZXR0aW5nTG9hZFJlcXVlc3RJZCArIDFcblxuICAgIHRoaXMudGFibGVTZXR0aW5nTG9hZFJlcXVlc3RJZCA9IHJlcXVlc3RJZFxuICAgIHRoaXMudGFibGVTZXR0aW5ncyA9IG5ldyBUYWJsZVNldHRpbmdzKHtcbiAgICAgIHRhYmxlOiAvKiogQHR5cGUge3twcm9wczoge2N1cnJlbnRVc2VyPzogQ3VycmVudFVzZXJNb2RlbCB8IG51bGx9LCBzdGF0ZToge2lkZW50aWZpZXI6IHN0cmluZ30sIGNvbHVtbnNBc0FycmF5KCk6IFRhYmxlQ29sdW1uRGVmaW5pdGlvbltdfX0gKi8gKHRoaXMpXG4gICAgfSlcbiAgICBjb25zdCB0YWJsZVNldHRpbmcgPSBhd2FpdCB0aGlzLnRhYmxlU2V0dGluZ3MubG9hZEV4aXN0aW5nT3JDcmVhdGVUYWJsZVNldHRpbmdzKClcblxuICAgIGlmICghdGFibGVTZXR0aW5nKSB0aHJvdyBuZXcgRXJyb3IoXCJObyB0YWJsZVNldHRpbmcgcmV0dXJuZWQgYnkgdGFibGVTZXR0aW5ncy5sb2FkRXhpc3RpbmdPckNyZWF0ZVRhYmxlU2V0dGluZ3MoKVwiKVxuXG4gICAgaWYgKHJlcXVlc3RJZCAhPSB0aGlzLnRhYmxlU2V0dGluZ0xvYWRSZXF1ZXN0SWQpIHJldHVyblxuXG4gICAgY29uc3Qge2NvbHVtbnMsIHByZWxvYWR9ID0gdGhpcy50YWJsZVNldHRpbmdzLnByZXBhcmVkQ29sdW1ucyh0YWJsZVNldHRpbmcpXG4gICAgY29uc3Qge3dpZHRofSA9IHRoaXMuc1xuICAgIGNvbnN0IHdpZHRocyA9IG5ldyBXaWR0aHMoe2NvbHVtbnMsIHRhYmxlOiB0aGlzLCB3aWR0aH0pXG4gICAgY29uc3QgY29sdW1uc1RvU2hvdyA9IHRoaXMuZ2V0Q29sdW1uc1RvU2hvdyhjb2x1bW5zKVxuXG4gICAgdGhpcy5zLmNvbHVtbnMgPSBjb2x1bW5zXG4gICAgdGhpcy5zLmNvbHVtbnNUb1Nob3cgPSBjb2x1bW5zVG9TaG93XG4gICAgdGhpcy5zLnByZXBhcmVkQ29sdW1ucyA9IGNvbHVtbnNcbiAgICB0aGlzLnMucHJlbG9hZCA9IHRoaXMubWVyZ2VkUHJlbG9hZHMocHJlbG9hZClcbiAgICB0aGlzLnMudGFibGVTZXR0aW5nID0gdGFibGVTZXR0aW5nXG4gICAgdGhpcy5zLnRhYmxlU2V0dGluZ0xvYWRlZCA9IHRydWVcbiAgICB0aGlzLnMudGFibGVTZXR0aW5nRnVsbENhY2hlS2V5ID0gdGFibGVTZXR0aW5nLmZ1bGxDYWNoZUtleSgpXG4gICAgdGhpcy5zLndpZHRocyA9IHdpZHRoc1xuICB9XG5cbiAgdXBkYXRlU2V0dGluZ3NGdWxsQ2FjaGVLZXkgPSAoKSA9PiB7XG4gICAgdGhpcy5zLnRhYmxlU2V0dGluZ0Z1bGxDYWNoZUtleSA9IHRoaXMucy50YWJsZVNldHRpbmcuZnVsbENhY2hlS2V5KClcbiAgfVxuXG4gIGNvbHVtbnNBc0FycmF5KCkge1xuICAgIGlmICh0eXBlb2YgdGhpcy5wcm9wcy5jb2x1bW5zID09IFwiZnVuY3Rpb25cIikge1xuICAgICAgcmV0dXJuIHRoaXMucHJvcHMuY29sdW1ucygpXG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMucHJvcHMuY29sdW1uc1xuICB9XG5cbiAgbWVyZ2VkUHJlbG9hZHMocHJlbG9hZCkge1xuICAgIGNvbnN0IHtwcmVsb2Fkc30gPSB0aGlzLnByb3BzXG4gICAgbGV0IG1lcmdlZFByZWxvYWRzID0gW11cblxuICAgIGlmIChwcmVsb2FkcykgbWVyZ2VkUHJlbG9hZHMgPSBtZXJnZWRQcmVsb2Fkcy5jb25jYXQocHJlbG9hZHMpXG4gICAgaWYgKHByZWxvYWQpIG1lcmdlZFByZWxvYWRzID0gbWVyZ2VkUHJlbG9hZHMuY29uY2F0KHByZWxvYWQpXG5cbiAgICByZXR1cm4gdW5pcXVuaXplKG1lcmdlZFByZWxvYWRzKVxuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHttb2RlbENsYXNzLCBub1JlY29yZHNBdmFpbGFibGVDb250ZW50LCBub1JlY29yZHNGb3VuZENvbnRlbnR9ID0gdGhpcy5wXG4gICAgY29uc3Qge2NvbGxlY3Rpb24sIGN1cnJlbnRVc2VyfSA9IHRoaXMucHJvcHNcbiAgICBjb25zdCB7cXVlcnlOYW1lLCBxdWVyeVNOYW1lLCBzaG93RmlsdGVyc30gPSB0aGlzLnNcbiAgICBjb25zdCB7XG4gICAgICBtb2RlbHMsXG4gICAgICBvdmVyYWxsQ291bnQsXG4gICAgICBxUGFyYW1zLFxuICAgICAgcXVlcnksXG4gICAgICByZXN1bHQsXG4gICAgICBzaG93Tm9SZWNvcmRzQXZhaWxhYmxlQ29udGVudCxcbiAgICAgIHNob3dOb1JlY29yZHNGb3VuZENvbnRlbnRcbiAgICB9ID0gZGlncyhcbiAgICAgIHRoaXMuY29sbGVjdGlvbixcbiAgICAgIFwibW9kZWxzXCIsXG4gICAgICBcIm92ZXJhbGxDb3VudFwiLFxuICAgICAgXCJxUGFyYW1zXCIsXG4gICAgICBcInF1ZXJ5XCIsXG4gICAgICBcInJlc3VsdFwiLFxuICAgICAgXCJzaG93Tm9SZWNvcmRzQXZhaWxhYmxlQ29udGVudFwiLFxuICAgICAgXCJzaG93Tm9SZWNvcmRzRm91bmRDb250ZW50XCJcbiAgICApXG4gICAgY29uc3Qgc2FmZVFQYXJhbXMgPSBxUGFyYW1zIHx8IHt9XG5cbiAgICBpZiAoY29sbGVjdGlvbiAmJiBjb2xsZWN0aW9uLmFyZ3MubW9kZWxDbGFzcy5tb2RlbENsYXNzRGF0YSgpLm5hbWUgIT0gbW9kZWxDbGFzcy5tb2RlbENsYXNzRGF0YSgpLm5hbWUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYE1vZGVsIGNsYXNzIGZyb20gY29sbGVjdGlvbiAnJHtjb2xsZWN0aW9uLmFyZ3MubW9kZWxDbGFzcy5tb2RlbENsYXNzRGF0YSgpLm5hbWV9JyBgICtcbiAgICAgICAgYGRpZG4ndCBtYXRjaCBtb2RlbCBjbGFzcyBvbiB0YWJsZTogJyR7bW9kZWxDbGFzcy5tb2RlbENsYXNzRGF0YSgpLm5hbWV9J2BcbiAgICAgIClcbiAgICB9XG5cbiAgICBjb25zdCBzaG91bGRTaG93TG9hZGluZ0NvbnRlbnQgPSBzaG91bGRSZW5kZXJMb2FkaW5nQ29udGVudCh7XG4gICAgICBtb2RlbHMsXG4gICAgICBxdWVyeSxcbiAgICAgIHJlc3VsdFxuICAgIH0pXG5cbiAgICByZXR1cm4gKFxuICAgICAgPFZpZXdcbiAgICAgICAgZGF0YVNldD17ZGF0YVNldHNbYHJvb3RWaWV3LSR7dGhpcy5jbGFzc05hbWUoKX1gXSB8fD0ge2NsYXNzOiB0aGlzLmNsYXNzTmFtZSgpfX1cbiAgICAgICAgb25MYXlvdXQ9e3RoaXMudHQub25Db250YWluZXJMYXlvdXR9XG4gICAgICAgIHN0eWxlPXt0aGlzLnByb3BzLnN0eWxlcz8uY29udGFpbmVyfVxuICAgICAgPlxuICAgICAgICB7c2hvd05vUmVjb3Jkc0F2YWlsYWJsZUNvbnRlbnQgJiZcbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImxpdmUtdGFibGUtLW5vLXJlY29yZHMtYXZhaWxhYmxlLWNvbnRlbnRcIj5cbiAgICAgICAgICAgIHtub1JlY29yZHNBdmFpbGFibGVDb250ZW50KHttb2RlbHMsIHFQYXJhbXM6IHNhZmVRUGFyYW1zLCBvdmVyYWxsQ291bnR9KX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgICAgICB7c2hvd05vUmVjb3Jkc0ZvdW5kQ29udGVudCAmJlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibGl2ZS10YWJsZS0tbm8tcmVjb3Jkcy1mb3VuZC1jb250ZW50XCI+XG4gICAgICAgICAgICB7bm9SZWNvcmRzRm91bmRDb250ZW50KHttb2RlbHMsIHFQYXJhbXM6IHNhZmVRUGFyYW1zLCBvdmVyYWxsQ291bnR9KX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgICAgICB7c2hvd0ZpbHRlcnMgJiZcbiAgICAgICAgICA8RmlsdGVycyBjdXJyZW50VXNlcj17Y3VycmVudFVzZXJ9IG1vZGVsQ2xhc3M9e21vZGVsQ2xhc3N9IHF1ZXJ5TmFtZT17cXVlcnlOYW1lfSBxdWVyeVNOYW1lPXtxdWVyeVNOYW1lfSAvPlxuICAgICAgICB9XG4gICAgICAgIHtzaG91bGRTaG93TG9hZGluZ0NvbnRlbnQgJiZcbiAgICAgICAgICB0aGlzLmxvYWRpbmdDb250ZW50KHttb2RlbHMsIHFQYXJhbXM6IHNhZmVRUGFyYW1zLCBxdWVyeSwgcmVzdWx0fSlcbiAgICAgICAgfVxuICAgICAgICB7IXNob3VsZFNob3dMb2FkaW5nQ29udGVudCAmJlxuICAgICAgICAgIHRoaXMuY2FyZE9yVGFibGUoKVxuICAgICAgICB9XG4gICAgICA8L1ZpZXc+XG4gICAgKVxuICB9XG5cbiAgLyoqXG4gICAqIFJlc29sdmUgdGhlIGhlYWRlciB0aXRsZSBvciBjdXN0b20gaGVhZGVyIGNvbnRlbnQuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBbYXJnc11cbiAgICogQHBhcmFtIHtBcnJheTxvYmplY3Q+fSBbYXJncy5tb2RlbHNdXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBbYXJncy5xUGFyYW1zXVxuICAgKiBAcGFyYW0ge29iamVjdH0gW2FyZ3MucXVlcnldXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBbYXJncy5yZXN1bHRdXG4gICAqIEByZXR1cm5zIHtzdHJpbmd8UmVhY3QuUmVhY3ROb2RlfVxuICAgKi9cbiAgdGFibGVIZWFkZXJDb250ZW50ICh7bW9kZWxzLCBxUGFyYW1zLCBxdWVyeSwgcmVzdWx0fSA9IHt9KSB7XG4gICAgY29uc3Qge2hlYWRlciwgbW9kZWxDbGFzc30gPSB0aGlzLnByb3BzXG5cbiAgICBpZiAodHlwZW9mIGhlYWRlciA9PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgIHJldHVybiBoZWFkZXIoe21vZGVscywgcVBhcmFtcywgcXVlcnksIHJlc3VsdH0pXG4gICAgfSBlbHNlIGlmIChoZWFkZXIpIHtcbiAgICAgIHJldHVybiBoZWFkZXJcbiAgICB9XG5cbiAgICByZXR1cm4gbW9kZWxDbGFzcy5tb2RlbE5hbWUoKS5odW1hbih7Y291bnQ6IDJ9KVxuICB9XG5cbiAgbG9hZGluZ0NvbnRlbnQgKHttb2RlbHMsIHFQYXJhbXMsIHF1ZXJ5LCByZXN1bHR9KSB7XG4gICAgY29uc3Qge1xuICAgICAgYWJpbGl0aWVzLFxuICAgICAgYWN0aW9uc0NvbnRlbnQsXG4gICAgICBhcHBIaXN0b3J5LFxuICAgICAgY2FyZCxcbiAgICAgIGNsYXNzTmFtZSxcbiAgICAgIGNvbGxlY3Rpb24sXG4gICAgICBjb2x1bW5zLFxuICAgICAgY29udHJvbHMsXG4gICAgICBjdXJyZW50VXNlcixcbiAgICAgIGRlZmF1bHREYXRlRm9ybWF0TmFtZSxcbiAgICAgIGRlZmF1bHREYXRlVGltZUZvcm1hdE5hbWUsXG4gICAgICBkZWZhdWx0UGFyYW1zLFxuICAgICAgZGVzdHJveUVuYWJsZWQsXG4gICAgICBkZXN0cm95TWVzc2FnZSxcbiAgICAgIGVkaXRNb2RlbFBhdGgsXG4gICAgICBmaWx0ZXJDYXJkLFxuICAgICAgZmlsdGVyQ29udGVudCxcbiAgICAgIGZpbHRlclN1Ym1pdEJ1dHRvbixcbiAgICAgIGZpbHRlclN1Ym1pdExhYmVsLFxuICAgICAgZ3JvdXBCeSxcbiAgICAgIGhlYWRlcixcbiAgICAgIGlkZW50aWZpZXIsXG4gICAgICBtb2RlbENsYXNzLFxuICAgICAgbm9SZWNvcmRzQXZhaWxhYmxlQ29udGVudCxcbiAgICAgIG5vUmVjb3Jkc0ZvdW5kQ29udGVudCxcbiAgICAgIG9uTW9kZWxzTG9hZGVkLFxuICAgICAgcGFnaW5hdGVDb250ZW50LFxuICAgICAgcGFnaW5hdGlvbkNvbXBvbmVudCxcbiAgICAgIHByZWxvYWRzLFxuICAgICAgcXVlcnlNZXRob2QsXG4gICAgICBxdWVyeU5hbWUsXG4gICAgICBzZWxlY3QsXG4gICAgICBzZWxlY3RDb2x1bW5zLFxuICAgICAgc3R5bGVVSSxcbiAgICAgIHZpZXdNb2RlbFBhdGgsXG4gICAgICB3b3JrcGxhY2UsXG4gICAgICAuLi5yZXN0UHJvcHNcbiAgICB9ID0gdGhpcy5wcm9wc1xuXG4gICAgY29uc3QgbG9hZGluZ0NvbnRlbnQgPSAoXG4gICAgICA8VmlldyBkYXRhU2V0PXtkYXRhU2V0cy5sb2FkaW5nIHx8PSB7Y2xhc3M6IFwiYXBpLW1ha2VyLS10YWJsZS0tbG9hZGluZ1wifX0+XG4gICAgICAgIDxUZXh0Pnt0aGlzLnR0LnQoXCIubG9hZGluZ19kb3RfZG90X2RpdFwiLCB7ZGVmYXVsdFZhbHVlOiBcIkxvYWRpbmcuLi5cIn0pfTwvVGV4dD5cbiAgICAgIDwvVmlldz5cbiAgICApXG5cbiAgICBpZiAoIWNhcmQpIHJldHVybiBsb2FkaW5nQ29udGVudFxuXG4gICAgY29uc3Qgc2FmZU1vZGVscyA9IG1vZGVscyB8fCBbXVxuICAgIGNvbnN0IHNhZmVBcmdzID0ge21vZGVsczogc2FmZU1vZGVscywgcVBhcmFtcywgcXVlcnksIHJlc3VsdH1cblxuICAgIHJldHVybiAoXG4gICAgICA8Q2FyZFxuICAgICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZXMoXCJsaXZlLXRhYmxlLS10YWJsZS1jYXJkXCIsIFwibWItNFwiLCBjbGFzc05hbWUpfVxuICAgICAgICBjb250cm9scz17dGhpcy50YWJsZUNvbnRyb2xzKHNhZmVBcmdzKX1cbiAgICAgICAgaGVhZGVyPXt0aGlzLnRhYmxlSGVhZGVyQ29udGVudChzYWZlQXJncyl9XG4gICAgICAgIHsuLi5yZXN0UHJvcHN9XG4gICAgICA+XG4gICAgICAgIHtsb2FkaW5nQ29udGVudH1cbiAgICAgIDwvQ2FyZD5cbiAgICApXG4gIH1cblxuICAvKiogQHJldHVybnMge1JlY29yZDxzdHJpbmcsIHN0cmluZ1tdPn0gKi9cbiAgYWJpbGl0aWVzVG9Mb2FkICgpIHtcbiAgICBjb25zdCBhYmlsaXRpZXNUb0xvYWQgPSAvKiogQHR5cGUge1JlY29yZDxzdHJpbmcsIHN0cmluZ1tdPn0gKi8gKHt9KVxuICAgIGNvbnN0IHthYmlsaXRpZXMsIG1vZGVsQ2xhc3N9ID0gdGhpcy5wcm9wc1xuICAgIGNvbnN0IG93bkFiaWxpdGllcyA9IFtdXG5cbiAgICBpZiAodGhpcy5wcm9wcy5kZXN0cm95RW5hYmxlZCkgb3duQWJpbGl0aWVzLnB1c2goXCJkZXN0cm95XCIpXG4gICAgaWYgKHRoaXMucHJvcHMuZWRpdE1vZGVsUGF0aCkgb3duQWJpbGl0aWVzLnB1c2goXCJlZGl0XCIpXG4gICAgaWYgKHRoaXMucHJvcHMudmlld01vZGVsUGF0aCkgb3duQWJpbGl0aWVzLnB1c2goXCJzaG93XCIpXG5cbiAgICBpZiAob3duQWJpbGl0aWVzLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IG1vZGVsQ2xhc3NOYW1lID0gZGlnZyhtb2RlbENsYXNzLm1vZGVsQ2xhc3NEYXRhKCksIFwibmFtZVwiKVxuXG4gICAgICBhYmlsaXRpZXNUb0xvYWRbbW9kZWxDbGFzc05hbWVdID0gb3duQWJpbGl0aWVzXG4gICAgfVxuXG4gICAgaWYgKGFiaWxpdGllcykge1xuICAgICAgZm9yIChjb25zdCBtb2RlbE5hbWUgaW4gYWJpbGl0aWVzKSB7XG4gICAgICAgIGlmICghKG1vZGVsTmFtZSBpbiBhYmlsaXRpZXNUb0xvYWQpKSB7XG4gICAgICAgICAgYWJpbGl0aWVzVG9Mb2FkW21vZGVsTmFtZV0gPSBbXVxuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChjb25zdCBhYmlsaXR5IG9mIGFiaWxpdGllc1ttb2RlbE5hbWVdKSB7XG4gICAgICAgICAgYWJpbGl0aWVzVG9Mb2FkW21vZGVsTmFtZV0ucHVzaChhYmlsaXR5KVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGFiaWxpdGllc1RvTG9hZFxuICB9XG5cbiAgLyoqXG4gICAqIERlY2lkZSBiZXR3ZWVuIGNhcmQvdGFibGUgcmVuZGVyaW5nIG9uY2UgZGF0YSBpcyByZWFkeS5cbiAgICogQHJldHVybnMge1JlYWN0LlJlYWN0Tm9kZX1cbiAgICovXG4gIGNhcmRPclRhYmxlICgpIHtcbiAgICBjb25zdCB7XG4gICAgICBhYmlsaXRpZXMsXG4gICAgICBhY3Rpb25zQ29udGVudCxcbiAgICAgIGFwcEhpc3RvcnksXG4gICAgICBjYXJkLFxuICAgICAgY2xhc3NOYW1lLFxuICAgICAgY29sbGVjdGlvbixcbiAgICAgIGNvbHVtbnMsXG4gICAgICBjb250cm9scyxcbiAgICAgIGN1cnJlbnRVc2VyLFxuICAgICAgZGVmYXVsdERhdGVGb3JtYXROYW1lLFxuICAgICAgZGVmYXVsdERhdGVUaW1lRm9ybWF0TmFtZSxcbiAgICAgIGRlZmF1bHRQYXJhbXMsXG4gICAgICBkZXN0cm95RW5hYmxlZCxcbiAgICAgIGRlc3Ryb3lNZXNzYWdlLFxuICAgICAgZWRpdE1vZGVsUGF0aCxcbiAgICAgIGZpbHRlckNhcmQsXG4gICAgICBmaWx0ZXJDb250ZW50LFxuICAgICAgZmlsdGVyU3VibWl0QnV0dG9uLFxuICAgICAgZmlsdGVyU3VibWl0TGFiZWwsXG4gICAgICBncm91cEJ5LFxuICAgICAgaGVhZGVyLFxuICAgICAgaWRlbnRpZmllcixcbiAgICAgIG1vZGVsQ2xhc3MsXG4gICAgICBub1JlY29yZHNBdmFpbGFibGVDb250ZW50LFxuICAgICAgbm9SZWNvcmRzRm91bmRDb250ZW50LFxuICAgICAgb25Nb2RlbHNMb2FkZWQsXG4gICAgICBwYWdpbmF0ZUNvbnRlbnQsXG4gICAgICBwYWdpbmF0aW9uQ29tcG9uZW50LFxuICAgICAgcHJlbG9hZHMsXG4gICAgICBxdWVyeU1ldGhvZCxcbiAgICAgIHF1ZXJ5TmFtZSxcbiAgICAgIHNlbGVjdCxcbiAgICAgIHNlbGVjdENvbHVtbnMsXG4gICAgICBzdHlsZVVJLFxuICAgICAgdmlld01vZGVsUGF0aCxcbiAgICAgIHdvcmtwbGFjZSxcbiAgICAgIC4uLnJlc3RQcm9wc1xuICAgIH0gPSB0aGlzLnByb3BzXG4gICAgY29uc3Qge21vZGVscywgcVBhcmFtcywgcXVlcnksIHJlc3VsdH0gPSBkaWdzKHRoaXMuY29sbGVjdGlvbiwgXCJtb2RlbHNcIiwgXCJxUGFyYW1zXCIsIFwicXVlcnlcIiwgXCJyZXN1bHRcIilcbiAgICBjb25zdCBzYWZlUVBhcmFtcyA9IHFQYXJhbXMgfHwge31cblxuICAgIGNvbnN0IGhlYWRlckNvbnRlbnQgPSB0aGlzLnRhYmxlSGVhZGVyQ29udGVudCh7bW9kZWxzLCBxUGFyYW1zOiBzYWZlUVBhcmFtcywgcXVlcnksIHJlc3VsdH0pXG4gICAgbGV0IFBhZ2luYXRpb25Db21wb25lbnRcblxuICAgIGlmICghcGFnaW5hdGVDb250ZW50KSB7XG4gICAgICBpZiAocGFnaW5hdGlvbkNvbXBvbmVudCkge1xuICAgICAgICBQYWdpbmF0aW9uQ29tcG9uZW50ID0gcGFnaW5hdGlvbkNvbXBvbmVudFxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgUGFnaW5hdGlvbkNvbXBvbmVudCA9IFBhZ2luYXRlXG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgZmxhdExpc3QgPSAoXG4gICAgICA8VGFibGVDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXt0aGlzLnR0LnRhYmxlQ29udGV4dFZhbHVlfT5cbiAgICAgICAgPFZpZXdcbiAgICAgICAgICBkYXRhU2V0PXtkYXRhU2V0cy5mbGF0TGlzdFdyYXBwZXIgfHw9IHtjbGFzczogXCJhcGktbWFrZXItLXRhYmxlLS1mbGF0LWxpc3Qtd3JhcHBlclwifX1cbiAgICAgICAgICBzdHlsZT17c3R5bGVzLmZsYXRMaXN0V3JhcHBlciB8fD0ge3Bvc2l0aW9uOiBcInJlbGF0aXZlXCJ9fVxuICAgICAgICA+XG4gICAgICAgICAgPEZsYXRMaXN0XG4gICAgICAgICAgICBkYXRhPXttb2RlbHN9XG4gICAgICAgICAgICBkYXRhU2V0PXtkYXRhU2V0c1tgZmxhdExpc3QtJHtjbGFzc05hbWV9LSR7dGhpcy5zLnRhYmxlU2V0dGluZ0Z1bGxDYWNoZUtleX1gXSB8fD0ge1xuICAgICAgICAgICAgICBjbGFzczogY2xhc3NOYW1lcyhcImFwaS1tYWtlci0tdGFibGVcIiwgY2xhc3NOYW1lKSxcbiAgICAgICAgICAgICAgY2FjaGVLZXk6IHRoaXMucy50YWJsZVNldHRpbmdGdWxsQ2FjaGVLZXksXG4gICAgICAgICAgICAgIGxhc3RVcGRhdGU6IHRoaXMucy5sYXN0VXBkYXRlXG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgZXh0cmFEYXRhPXt0aGlzLnMubGFzdFVwZGF0ZX1cbiAgICAgICAgICAgIGtleUV4dHJhY3Rvcj17dGhpcy50dC5rZXlFeHRyYXRvcn1cbiAgICAgICAgICAgIExpc3RIZWFkZXJDb21wb25lbnQ9e0xpc3RIZWFkZXJDb21wb25lbnR9XG4gICAgICAgICAgICByZW5kZXJJdGVtPXt0aGlzLnR0LnJlbmRlckl0ZW19XG4gICAgICAgICAgICBzaG93c0hvcml6b250YWxTY3JvbGxJbmRpY2F0b3JcbiAgICAgICAgICAgIHN0eWxlPXtzdHlsZXNbYGZsYXRMaXN0LSR7c3R5bGVVSX1gXSB8fD0ge1xuICAgICAgICAgICAgICBvdmVyZmxvd1g6IFwiYXV0b1wiLFxuICAgICAgICAgICAgICBib3JkZXI6IHN0eWxlVUkgPyBcIjFweCBzb2xpZCAjZGJkYmRiXCIgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgIGJvcmRlclJhZGl1czogc3R5bGVVSSA/IDUgOiB1bmRlZmluZWRcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgICB7Li4ucmVzdFByb3BzfVxuICAgICAgICAgIC8+XG4gICAgICAgICAgPEJsb2NraW5nT3ZlcmxheSBldmVudHM9e3RoaXMuZXZlbnRzfSAvPlxuICAgICAgICA8L1ZpZXc+XG4gICAgICA8L1RhYmxlQ29udGV4dC5Qcm92aWRlcj5cbiAgICApXG5cbiAgICByZXR1cm4gKFxuICAgICAgPD5cbiAgICAgICAge2ZpbHRlckNvbnRlbnQgJiYgZmlsdGVyQ2FyZCAmJlxuICAgICAgICAgIDxDYXJkIGNsYXNzTmFtZT1cImxpdmUtdGFibGUtLWZpbHRlci1jYXJkIG1iLTRcIj5cbiAgICAgICAgICAgIHt0aGlzLmZpbHRlckZvcm0oKX1cbiAgICAgICAgICA8L0NhcmQ+XG4gICAgICAgIH1cbiAgICAgICAge2ZpbHRlckNvbnRlbnQgJiYgIWZpbHRlckNhcmQgJiZcbiAgICAgICAgICB0aGlzLmZpbHRlckZvcm0oKVxuICAgICAgICB9XG4gICAgICAgIHtjYXJkICYmXG4gICAgICAgICAgPENhcmRcbiAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lcyhcImxpdmUtdGFibGUtLXRhYmxlLWNhcmRcIiwgXCJtYi00XCIsIGNsYXNzTmFtZSl9XG4gICAgICAgICAgICBjb250cm9scz17dGhpcy50YWJsZUNvbnRyb2xzKCl9XG4gICAgICAgICAgICBoZWFkZXI9e2hlYWRlckNvbnRlbnR9XG4gICAgICAgICAgICBmb290ZXI9e3RoaXMudGFibGVGb290ZXIoKX1cbiAgICAgICAgICAgIHsuLi5yZXN0UHJvcHN9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge2ZsYXRMaXN0fVxuICAgICAgICAgIDwvQ2FyZD5cbiAgICAgICAgfVxuICAgICAgICB7IWNhcmQgJiYgZmxhdExpc3R9XG4gICAgICAgIHtyZXN1bHQgJiYgUGFnaW5hdGlvbkNvbXBvbmVudCAmJlxuICAgICAgICAgIDxQYWdpbmF0aW9uQ29tcG9uZW50IHJlc3VsdD17cmVzdWx0fSAvPlxuICAgICAgICB9XG4gICAgICAgIHtyZXN1bHQgJiYgcGFnaW5hdGVDb250ZW50ICYmXG4gICAgICAgICAgcGFnaW5hdGVDb250ZW50KHtyZXN1bHR9KVxuICAgICAgICB9XG4gICAgICA8Lz5cbiAgICApXG4gIH1cblxuICBvbkNvbnRhaW5lckxheW91dCA9IChlKSA9PiB7XG4gICAgY29uc3Qge3dpZHRofSA9IGUubmF0aXZlRXZlbnQubGF5b3V0XG4gICAgY29uc3Qge3dpZHRoc30gPSB0aGlzLnNcblxuICAgIC8vIElmIHRhYmxlIHNldHRpbmdzIGxvYWRlZCBiZWZvcmUgUk4td2ViIHByb2R1Y2VkIGEgbGF5b3V0IHdpZHRoLCByZWNvbXB1dGUgb25jZSB3aXRoIHRoZSByZWFsIHdpZHRoLlxuICAgIGlmICh3aWR0aHM/LnVzZWRGYWxsYmFja1dpZHRoKSB7XG4gICAgICB3aWR0aHMudXBkYXRlVGFibGVXaWR0aCh3aWR0aClcbiAgICAgIHRoaXMucy5sYXN0VXBkYXRlID0gbmV3IERhdGUoKVxuICAgICAgdGhpcy5zLndpZHRoID0gd2lkdGhcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHRoaXMucy53aWR0aCA9IHdpZHRoXG4gICAgaWYgKHdpZHRocykgd2lkdGhzLnRhYmxlV2lkdGggPSB3aWR0aFxuICB9XG5cbiAgb25MaW5rc0NyZWF0ZWQgPSAoe2FyZ3N9KSA9PiB7XG4gICAgaWYgKGFyZ3MucmVzb3VyY2VfdHlwZXM/LmluY2x1ZGVzKHRoaXMucC5tb2RlbENsYXNzLm1vZGVsQ2xhc3NEYXRhKCkubmFtZSkpIHtcbiAgICAgIHRoaXMubG9hZEN1cnJlbnRXb3JrcGxhY2VDb3VudCgpXG4gICAgfVxuICB9XG5cbiAgb25MaW5rc0Rlc3Ryb3llZCA9ICh7YXJnc30pID0+IHtcbiAgICBpZiAoYXJncy5yZXNvdXJjZV90eXBlcz8uaW5jbHVkZXModGhpcy5wLm1vZGVsQ2xhc3MubW9kZWxDbGFzc0RhdGEoKS5uYW1lKSkge1xuICAgICAgdGhpcy5sb2FkQ3VycmVudFdvcmtwbGFjZUNvdW50KClcbiAgICB9XG4gIH1cblxuICBrZXlFeHRyYXRvciA9IChtb2RlbCkgPT4gYCR7dGhpcy5zLnRhYmxlU2V0dGluZ0Z1bGxDYWNoZUtleX0tJHttb2RlbC5pZCgpfWBcblxuICBmaWx0ZXJGb3JtID0gKCkgPT4ge1xuICAgIGNvbnN0IHtmaWx0ZXJGb3JtUmVmLCBzdWJtaXRGaWx0ZXIsIHN1Ym1pdEZpbHRlckRlYm91bmNlfSA9IHRoaXMudHRcbiAgICBjb25zdCB7ZmlsdGVyQ29udGVudCwgZmlsdGVyU3VibWl0QnV0dG9ufSA9IHRoaXMucFxuICAgIGNvbnN0IHtxdWVyeVFOYW1lfSA9IHRoaXMuc1xuICAgIGNvbnN0IHtmaWx0ZXJTdWJtaXRMYWJlbH0gPSB0aGlzLnByb3BzXG4gICAgY29uc3QgYWN0dWFsUVBhcmFtcyA9IGRpZ2codGhpcy5jb2xsZWN0aW9uLCBcInFQYXJhbXNcIikgfHwge31cblxuICAgIHJldHVybiAoXG4gICAgICA8Rm9ybVxuICAgICAgICBmb3JtUmVmPXtmaWx0ZXJGb3JtUmVmfVxuICAgICAgICBodG1sRm9ybVByb3BzPXtzdHlsZXMuZmlsdGVyRm9ybUh0bWxQcm9wcyB8fD0ge2NsYXNzTmFtZTogXCJsaXZlLXRhYmxlLS1maWx0ZXItZm9ybVwifX1cbiAgICAgICAgb25TdWJtaXQ9e3RoaXMudHQub25GaWx0ZXJGb3JtU3VibWl0fVxuICAgICAgICBzZXRGb3JtPXsvKiogQHR5cGUge3tmaWx0ZXJGb3JtKHZhbHVlOiBUYWJsZUZpbHRlckZvcm1TdGF0ZSk6IHZvaWR9fSAqLyAodGhpcy5zZXRTdGF0ZXMpLmZpbHRlckZvcm19XG4gICAgICAgIHVzZUh0bWxGb3JtXG4gICAgICA+XG4gICAgICAgIHtcInNcIiBpbiBhY3R1YWxRUGFyYW1zICYmXG4gICAgICAgICAgPGlucHV0IG5hbWU9XCJzXCIgdHlwZT1cImhpZGRlblwiIHZhbHVlPXthY3R1YWxRUGFyYW1zLnN9IC8+XG4gICAgICAgIH1cbiAgICAgICAge2ZpbHRlckNvbnRlbnQoe1xuICAgICAgICAgIG9uRmlsdGVyQ2hhbmdlZDogc3VibWl0RmlsdGVyLFxuICAgICAgICAgIG9uRmlsdGVyQ2hhbmdlZFdpdGhEZWxheTogc3VibWl0RmlsdGVyRGVib3VuY2UsXG4gICAgICAgICAgcVBhcmFtczogYWN0dWFsUVBhcmFtcyxcbiAgICAgICAgICBxdWVyeVFOYW1lXG4gICAgICAgIH0pfVxuICAgICAgICB7ZmlsdGVyU3VibWl0QnV0dG9uICYmXG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICBjbGFzc05hbWU9XCJidG4gYnRuLXByaW1hcnkgbGl2ZS10YWJsZS0tc3VibWl0LWZpbHRlci1idXR0b25cIlxuICAgICAgICAgICAgdHlwZT1cInN1Ym1pdFwiXG4gICAgICAgICAgICBzdHlsZT17c3R5bGVzLmZpbHRlclN1Ym1pdEJ1dHRvbiB8fD0ge21hcmdpblRvcDogXCI4cHhcIn19XG4gICAgICAgICAgICB2YWx1ZT17ZmlsdGVyU3VibWl0TGFiZWwgfHwgdGhpcy50dC50KFwiLmZpbHRlclwiLCB7ZGVmYXVsdFZhbHVlOiBcIkZpbHRlclwifSl9XG4gICAgICAgICAgLz5cbiAgICAgICAgfVxuICAgICAgPC9Gb3JtPlxuICAgIClcbiAgfVxuXG4gIG9uRmlsdGVyQ2xpY2tlZCA9IChlKSA9PiB7XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpXG4gICAgdGhpcy5zLnNob3dGaWx0ZXJzID0gIXRoaXMucy5zaG93RmlsdGVyc1xuICB9XG5cbiAgb25QZXJQYWdlQ2hhbmdlZCA9IChlKSA9PiB7XG4gICAgY29uc3QgbmV3UGVyUGFnZVZhbHVlID0gZGlnZyhlLCBcInRhcmdldFwiLCBcInZhbHVlXCIpXG4gICAgY29uc3QgdG90YWxDb3VudCA9IHRoaXMuY29sbGVjdGlvbj8ucmVzdWx0Py50b3RhbENvdW50Py4oKVxuICAgIGNvbnN0IHdvdWxkTG9hZENvdW50ID0gbmV3UGVyUGFnZVZhbHVlID09IFwiYWxsXCIgPyB0b3RhbENvdW50IDogTWF0aC5taW4oTnVtYmVyKG5ld1BlclBhZ2VWYWx1ZSksIHRvdGFsQ291bnQgPz8gSW5maW5pdHkpXG5cbiAgICBpZiAodHlwZW9mIHRvdGFsQ291bnQgPT0gXCJudW1iZXJcIiAmJiB3b3VsZExvYWRDb3VudCA+IGFwaU1ha2VyQ29uZmlnLmdldERhbmdlcm91c1Jvd0NvdW50VGhyZXNob2xkKCkpIHtcbiAgICAgIHRoaXMucy5wZW5kaW5nUGVyUGFnZVZhbHVlID0gbmV3UGVyUGFnZVZhbHVlXG4gICAgICB0aGlzLnMuc2hvd0xhcmdlUGVyUGFnZVdhcm5pbmcgPSB0cnVlXG5cbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHRoaXMuYXBwbHlQZXJQYWdlQ2hhbmdlKG5ld1BlclBhZ2VWYWx1ZSlcbiAgfVxuXG4gIGFwcGx5UGVyUGFnZUNoYW5nZSA9IChuZXdQZXJQYWdlVmFsdWUpID0+IHtcbiAgICBjb25zdCB7cXVlcnlOYW1lfSA9IHRoaXMuc1xuXG4gICAgUGFyYW1zLmNoYW5nZVBhcmFtcyh7W2Ake3F1ZXJ5TmFtZX1fcGVyYF06IG5ld1BlclBhZ2VWYWx1ZX0pXG4gIH1cblxuICBvbkNvbmZpcm1MYXJnZVBlclBhZ2UgPSAoKSA9PiB7XG4gICAgY29uc3Qge3BlbmRpbmdQZXJQYWdlVmFsdWV9ID0gdGhpcy5zXG5cbiAgICB0aGlzLnMucGVuZGluZ1BlclBhZ2VWYWx1ZSA9IG51bGxcbiAgICB0aGlzLnMuc2hvd0xhcmdlUGVyUGFnZVdhcm5pbmcgPSBmYWxzZVxuICAgIHRoaXMuYXBwbHlQZXJQYWdlQ2hhbmdlKHBlbmRpbmdQZXJQYWdlVmFsdWUpXG4gIH1cblxuICBvbkNhbmNlbExhcmdlUGVyUGFnZSA9ICgpID0+IHtcbiAgICB0aGlzLnMucGVuZGluZ1BlclBhZ2VWYWx1ZSA9IG51bGxcbiAgICB0aGlzLnMuc2hvd0xhcmdlUGVyUGFnZVdhcm5pbmcgPSBmYWxzZVxuICAgIC8vIFJlbW91bnQgdGhlIHVuY29udHJvbGxlZCBwZXItcGFnZSA8U2VsZWN0PiBzbyBpdCBzbmFwcyBiYWNrIHRvIHRoZSBhY3R1YWwgcGVyLXBhZ2UgdmFsdWUuXG4gICAgdGhpcy5zLnBlclBhZ2VTZWxlY3ROb25jZSArPSAxXG4gIH1cblxuICByZW5kZXJJdGVtID0gKHtpbmRleCwgaXRlbTogbW9kZWx9KSA9PiB7XG4gICAgaWYgKCF0aGlzLnMudGFibGVTZXR0aW5nTG9hZGVkKSB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICA8Vmlldz5cbiAgICAgICAgICA8VGV4dD5cbiAgICAgICAgICAgIHt0aGlzLnR0LnQoXCIubG9hZGluZ19kb3RfZG90X2RvdFwiLCB7ZGVmYXVsdFZhbHVlOiBcIkxvYWRpbmcuLi5cIn0pfVxuICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgPC9WaWV3PlxuICAgICAgKVxuICAgIH1cblxuICAgIHJldHVybiAoXG4gICAgICA8TW9kZWxSb3dcbiAgICAgICAgY2FjaGVLZXk9e21vZGVsLmNhY2hlS2V5KCl9XG4gICAgICAgIGNvbHVtbnM9e3RoaXMucy5jb2x1bW5zVG9TaG93fVxuICAgICAgICBjb2x1bW5XaWR0aHM9e3RoaXMuY29sdW1uV2lkdGhzKCl9XG4gICAgICAgIGV2ZW50cz17dGhpcy50dC5ldmVudHN9XG4gICAgICAgIGluZGV4PXtpbmRleH1cbiAgICAgICAga2V5PXttb2RlbC5pZCgpfVxuICAgICAgICBtb2RlbD17bW9kZWx9XG4gICAgICAgIHRhYmxlPXt0aGlzfVxuICAgICAgICB0YWJsZVNldHRpbmdGdWxsQ2FjaGVLZXk9e3RoaXMucy50YWJsZVNldHRpbmdGdWxsQ2FjaGVLZXl9XG4gICAgICAvPlxuICAgIClcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZCB0aGUgYmFzZSBzdHlsZSBmb3IgYSBkYXRhIGNvbHVtbi5cbiAgICogQHBhcmFtIHtvYmplY3R9IGFyZ3NcbiAgICogQHBhcmFtIHtvYmplY3R9IGFyZ3MuY29sdW1uXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBhcmdzLmNvbHVtbkluZGV4XG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gYXJncy5ldmVuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBhcmdzLnN0eWxlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhcmdzLnR5cGVcbiAgICogQHJldHVybnMge29iamVjdH1cbiAgICovXG4gIHN0eWxlRm9yQ29sdW1uID0gKHtjb2x1bW4sIGNvbHVtbkluZGV4LCBldmVuLCBzdHlsZSwgdHlwZX0pID0+IHtcbiAgICBjb25zdCB7c3R5bGVVSX0gPSB0aGlzLnBcbiAgICBjb25zdCBkZWZhdWx0U3R5bGUgPSB7XG4gICAgICBqdXN0aWZ5Q29udGVudDogXCJjZW50ZXJcIixcbiAgICAgIHBhZGRpbmc6IDgsXG4gICAgICBvdmVyZmxvdzogXCJoaWRkZW5cIlxuICAgIH1cblxuICAgIGlmIChzdHlsZVVJKSB7XG4gICAgICBPYmplY3QuYXNzaWduKGRlZmF1bHRTdHlsZSwge1xuICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IGV2ZW4gPyBcIiNmNWY1ZjVcIiA6IFwiI2ZmZlwiXG4gICAgICB9KVxuICAgIH1cblxuICAgIGlmICh0eXBlID09IFwiYWN0aW9uc1wiKSB7XG4gICAgICBkZWZhdWx0U3R5bGUuZmxleERpcmVjdGlvbiA9IFwicm93XCJcbiAgICAgIGRlZmF1bHRTdHlsZS5hbGlnbkl0ZW1zID0gXCJjZW50ZXJcIlxuXG4gICAgICBpZiAodGhpcy50dC5tZFVwKSB7XG4gICAgICAgIGRlZmF1bHRTdHlsZS5tYXJnaW5MZWZ0ID0gXCJhdXRvXCJcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRlZmF1bHRTdHlsZS5tYXJnaW5SaWdodCA9IFwiYXV0b1wiXG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0aGlzLnR0Lm1kVXAgJiYgc3R5bGVVSSkge1xuICAgICAgZGVmYXVsdFN0eWxlLmJvcmRlclJpZ2h0ID0gXCIxcHggc29saWQgI2RiZGJkYlwiXG4gICAgfVxuXG4gICAgY29uc3QgYWN0dWFsU3R5bGUgPSBPYmplY3QuYXNzaWduKFxuICAgICAgZGVmYXVsdFN0eWxlLFxuICAgICAgc3R5bGVcbiAgICApXG5cbiAgICByZXR1cm4gYWN0dWFsU3R5bGVcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZCB0aGUgYmFzZSBzdHlsZSBmb3IgYSBoZWFkZXIgY29sdW1uLlxuICAgKiBAcGFyYW0ge29iamVjdH0gYXJnc1xuICAgKiBAcGFyYW0ge29iamVjdH0gYXJncy5jb2x1bW5cbiAgICogQHBhcmFtIHtudW1iZXJ9IGFyZ3MuY29sdW1uSW5kZXhcbiAgICogQHBhcmFtIHtvYmplY3R9IGFyZ3Muc3R5bGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IGFyZ3MudHlwZVxuICAgKiBAcmV0dXJucyB7b2JqZWN0fVxuICAgKi9cbiAgc3R5bGVGb3JIZWFkZXIgPSAoe2NvbHVtbiwgY29sdW1uSW5kZXgsIHN0eWxlLCB0eXBlfSkgPT4ge1xuICAgIGNvbnN0IHttZFVwfSA9IHRoaXMudHRcbiAgICByZXR1cm4gdGhpcy5jYWNoZShcbiAgICAgIGBoZWFkZXJTdHlsZS0ke3R5cGUgfHwgXCJkZWZhdWx0XCJ9YCxcbiAgICAgICgpID0+IHtcbiAgICAgICAgY29uc3QgZGVmYXVsdFN0eWxlID0ge1xuICAgICAgICAgIGZsZXhEaXJlY3Rpb246IFwicm93XCIsXG4gICAgICAgICAgYWxpZ25JdGVtczogXCJjZW50ZXJcIixcbiAgICAgICAgICBwYWRkaW5nOiA4XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodHlwZSAhPSBcImFjdGlvbnNcIiAmJiBtZFVwICYmIHRoaXMucC5zdHlsZVVJKSB7XG4gICAgICAgICAgZGVmYXVsdFN0eWxlLmJvcmRlclJpZ2h0ID0gXCIxcHggc29saWQgI2RiZGJkYlwiXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihkZWZhdWx0U3R5bGUsIHN0eWxlKVxuICAgICAgfSxcbiAgICAgIFttZFVwLCB0aGlzLnAuc3R5bGVVSSwgdHlwZSwgc3R5bGVdXG4gICAgKVxuICB9XG5cbiAgLyoqXG4gICAqIFByb3ZpZGUgYSBib2xkIGhlYWRlciB0ZXh0IHN0eWxlLlxuICAgKiBAcmV0dXJucyB7b2JqZWN0fVxuICAgKi9cbiAgc3R5bGVGb3JIZWFkZXJUZXh0ID0gKCkgPT4ge1xuICAgIHJldHVybiBzdHlsZXMuaGVhZGVyVGV4dFN0eWxlIHx8PSB7Zm9udFdlaWdodDogXCJib2xkXCJ9XG4gIH1cblxuICAvKipcbiAgICogU3R5bGUgZm9yIGEgdGFibGUgcm93IHdyYXBwZXIuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBbYXJnc11cbiAgICogQHBhcmFtIHtib29sZWFufSBbYXJncy5ldmVuXVxuICAgKiBAcmV0dXJucyB7b2JqZWN0fVxuICAgKi9cbiAgc3R5bGVGb3JSb3cgPSAoe2V2ZW59ID0ge30pID0+IHtcbiAgICByZXR1cm4gdGhpcy5jYWNoZShcbiAgICAgIGByb3dTdHlsZS0ke2V2ZW4gPyBcImV2ZW5cIiA6IFwib2RkXCJ9YCxcbiAgICAgICgpID0+IHtcbiAgICAgICAgY29uc3QgYWN0dWFsU3R5bGUgPSB7XG4gICAgICAgICAgZmxleDogMSxcbiAgICAgICAgICBhbGlnbkl0ZW1zOiBcInN0cmV0Y2hcIlxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGV2ZW4gJiYgdGhpcy5wLnN0eWxlVUkpIHtcbiAgICAgICAgICBhY3R1YWxTdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSBcIiNmNWY1ZjVcIlxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGFjdHVhbFN0eWxlXG4gICAgICB9LFxuICAgICAgW2V2ZW4sIHRoaXMucC5zdHlsZVVJXVxuICAgIClcbiAgfVxuXG4gIC8qKlxuICAgKiBTdHlsZSBmb3IgdGhlIGhlYWRlciByb3cgd3JhcHBlci5cbiAgICogQHJldHVybnMge29iamVjdH1cbiAgICovXG4gIHN0eWxlRm9yUm93SGVhZGVyID0gKCkgPT4ge1xuICAgIHJldHVybiB0aGlzLmNhY2hlKFxuICAgICAgXCJyb3dIZWFkZXJTdHlsZVwiLFxuICAgICAgKCkgPT4gKHtcbiAgICAgICAgZmxleDogMSxcbiAgICAgICAgYWxpZ25JdGVtczogXCJzdHJldGNoXCJcbiAgICAgIH0pXG4gICAgKVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7VGFibGVSZW5kZXJBcmdzfSBbYXJnc11cbiAgICogQHJldHVybnMge2ltcG9ydChcInJlYWN0XCIpLlJlYWN0Tm9kZX1cbiAgICovXG4gIHRhYmxlQ29udHJvbHMoe21vZGVscywgcVBhcmFtcywgcXVlcnksIHJlc3VsdH0gPSB7fSkge1xuICAgIGNvbnN0IHtjb250cm9sc30gPSB0aGlzLnByb3BzXG4gICAgY29uc3Qge3Nob3dTZXR0aW5nc30gPSB0aGlzLnNcbiAgICBjb25zdCBjb2xsZWN0aW9uQXJncyA9IGRpZ3ModGhpcy5jb2xsZWN0aW9uLCBcIm1vZGVsc1wiLCBcInFQYXJhbXNcIiwgXCJxdWVyeVwiLCBcInJlc3VsdFwiKVxuICAgIGNvbnN0IGFjdHVhbE1vZGVscyA9IG1vZGVscyA/PyBjb2xsZWN0aW9uQXJncy5tb2RlbHMgPz8gW11cbiAgICBjb25zdCBhY3R1YWxRUGFyYW1zID0gcVBhcmFtcyA/PyBjb2xsZWN0aW9uQXJncy5xUGFyYW1zXG4gICAgY29uc3QgYWN0dWFsUXVlcnkgPSBxdWVyeSA/PyBjb2xsZWN0aW9uQXJncy5xdWVyeVxuICAgIGNvbnN0IGFjdHVhbFJlc3VsdCA9IHJlc3VsdCA/PyBjb2xsZWN0aW9uQXJncy5yZXN1bHRcblxuICAgIHJldHVybiAoXG4gICAgICA8VmlldyBzdHlsZT17c3R5bGVzLnRhYmxlQ29udHJvbHNSb290VmlldyB8fD0ge2ZsZXhEaXJlY3Rpb246IFwicm93XCJ9fT5cbiAgICAgICAge2NvbnRyb2xzICYmIGNvbnRyb2xzKHttb2RlbHM6IGFjdHVhbE1vZGVscywgcVBhcmFtczogYWN0dWFsUVBhcmFtcywgcXVlcnk6IGFjdHVhbFF1ZXJ5LCByZXN1bHQ6IGFjdHVhbFJlc3VsdH0pfVxuICAgICAgICA8UHJlc3NhYmxlXG4gICAgICAgICAgZGF0YVNldD17ZGF0YVNldHMuZmlsdGVyQnV0dG9uIHx8PSB7Y2xhc3M6IFwiZmlsdGVyLWJ1dHRvblwifX1cbiAgICAgICAgICBvblByZXNzPXt0aGlzLnR0Lm9uRmlsdGVyQ2xpY2tlZH1cbiAgICAgICAgICB0ZXN0SUQ9XCJmaWx0ZXJCdXR0b25cIlxuICAgICAgICA+XG4gICAgICAgICAgPEljb24gbmFtZT1cInNlYXJjaFwiIHNpemU9ezIwfSAvPlxuICAgICAgICA8L1ByZXNzYWJsZT5cbiAgICAgICAgPFZpZXc+XG4gICAgICAgICAge3Nob3dTZXR0aW5ncyAmJlxuICAgICAgICAgICAgPFNldHRpbmdzIG9uUmVxdWVzdENsb3NlPXt0aGlzLnR0Lm9uUmVxdWVzdENsb3NlU2V0dGluZ3N9IHRhYmxlPXt0aGlzfSAvPlxuICAgICAgICAgIH1cbiAgICAgICAgICA8UHJlc3NhYmxlIG9uUHJlc3M9e3RoaXMudHQub25TZXR0aW5nc0NsaWNrZWR9IHRlc3RJRD1cInNldHRpbmdzLWJ1dHRvblwiPlxuICAgICAgICAgICAgPEljb24gbmFtZT1cImdlYXJcIiBzaXplPXsyMH0gLz5cbiAgICAgICAgICA8L1ByZXNzYWJsZT5cbiAgICAgICAgPC9WaWV3PlxuICAgICAgPC9WaWV3PlxuICAgIClcbiAgfVxuXG4gIHRhYmxlRm9vdGVyKCkge1xuICAgIGNvbnN0IHtyZXN1bHR9ID0gZGlncyh0aGlzLmNvbGxlY3Rpb24sIFwicmVzdWx0XCIpXG4gICAgY29uc3QgY3VycmVudFBhZ2UgPSByZXN1bHQuY3VycmVudFBhZ2UoKVxuICAgIGNvbnN0IHRvdGFsQ291bnQgPSByZXN1bHQudG90YWxDb3VudCgpXG4gICAgY29uc3QgcGVyUGFnZSA9IHJlc3VsdC5wZXJQYWdlKClcbiAgICBjb25zdCB0byA9IE1hdGgubWluKGN1cnJlbnRQYWdlICogcGVyUGFnZSwgdG90YWxDb3VudClcbiAgICBjb25zdCBkZWZhdWx0VmFsdWUgPSBcIlNob3dpbmcgJXtmcm9tfSB0byAle3RvfSBvdXQgb2YgJXt0b3RhbF9jb3VudH0gdG90YWwuXCJcbiAgICBsZXQgZnJvbSA9ICgoY3VycmVudFBhZ2UgLSAxKSAqIHBlclBhZ2UpICsgMVxuXG4gICAgaWYgKHRvID09PSAwKSBmcm9tID0gMFxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxWaWV3IHN0eWxlPXtzdHlsZXMudGFibGVGb290ZXJSb290Vmlld1N0eWxlIHx8PSB7ZmxleERpcmVjdGlvbjogXCJyb3dcIiwganVzdGlmeUNvbnRlbnQ6IFwic3BhY2UtYmV0d2VlblwiLCBtYXJnaW5Ub3A6IDEwfX0+XG4gICAgICAgIDxWaWV3IGRhdGFTZXQ9e2RhdGFTZXRzLnNob3dpbmdDb3VudHMgfHw9IHtjbGFzczogXCJzaG93aW5nLWNvdW50c1wifX0gc3R5bGU9e3N0eWxlcy5zaG93aW5nQ291bnRzIHx8PSB7ZmxleERpcmVjdGlvbjogXCJyb3dcIn19PlxuICAgICAgICAgIDxUZXh0PlxuICAgICAgICAgICAge3RoaXMudHQudChcIi5zaG93aW5nX2Zyb21fdG9fb3V0X29mX3RvdGFsXCIsIHtkZWZhdWx0VmFsdWUsIGZyb20sIHRvLCB0b3RhbF9jb3VudDogdG90YWxDb3VudH0pfVxuICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICB7dGhpcy5wLndvcmtwbGFjZSAmJiB0aGlzLnMuY3VycmVudFdvcmtwbGFjZUNvdW50ICE9PSBudWxsICYmXG4gICAgICAgICAgICA8VGV4dCBzdHlsZT17c3R5bGVzLnhTZWxlY3RlZFRleHRTdHlsZSB8fD0ge21hcmdpbkxlZnQ6IDN9fT5cbiAgICAgICAgICAgICAge3RoaXMudHQudChcIi54X3NlbGVjdGVkXCIsIHtkZWZhdWx0VmFsdWU6IFwiJXtzZWxlY3RlZH0gc2VsZWN0ZWQuXCIsIHNlbGVjdGVkOiB0aGlzLnMuY3VycmVudFdvcmtwbGFjZUNvdW50fSl9XG4gICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgfVxuICAgICAgICA8L1ZpZXc+XG4gICAgICAgIDxWaWV3PlxuICAgICAgICAgIDxTZWxlY3RcbiAgICAgICAgICAgIGNsYXNzTmFtZT1cInBlci1wYWdlLXNlbGVjdFwiXG4gICAgICAgICAgICBkZWZhdWx0VmFsdWU9e3BlclBhZ2V9XG4gICAgICAgICAgICBrZXk9e2BwZXItcGFnZS1zZWxlY3QtJHt0aGlzLnMucGVyUGFnZVNlbGVjdE5vbmNlfWB9XG4gICAgICAgICAgICBvbkNoYW5nZT17dGhpcy50dC5vblBlclBhZ2VDaGFuZ2VkfVxuICAgICAgICAgICAgb3B0aW9ucz17cGFnaW5hdGlvbk9wdGlvbnN9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9WaWV3PlxuICAgICAgICB7dGhpcy5zLnNob3dMYXJnZVBlclBhZ2VXYXJuaW5nICYmXG4gICAgICAgICAgPExhcmdlUGVyUGFnZVdhcm5pbmdNb2RhbFxuICAgICAgICAgICAgY291bnQ9e3RvdGFsQ291bnR9XG4gICAgICAgICAgICBvbkNvbmZpcm09e3RoaXMudHQub25Db25maXJtTGFyZ2VQZXJQYWdlfVxuICAgICAgICAgICAgb25SZXF1ZXN0Q2xvc2U9e3RoaXMudHQub25DYW5jZWxMYXJnZVBlclBhZ2V9XG4gICAgICAgICAgLz5cbiAgICAgICAgfVxuICAgICAgPC9WaWV3PlxuICAgIClcbiAgfVxuXG4gIGNsYXNzTmFtZSgpIHtcbiAgICBjb25zdCBjbGFzc05hbWVzID0gW1wiYXBpLW1ha2VyLS10YWJsZVwiXVxuXG4gICAgaWYgKHRoaXMucHJvcHMuY2xhc3NOYW1lKSB7XG4gICAgICBjbGFzc05hbWVzLnB1c2godGhpcy5wcm9wcy5jbGFzc05hbWUpXG4gICAgfVxuXG4gICAgcmV0dXJuIGNsYXNzTmFtZXMuam9pbihcIiBcIilcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZCBwZXItY29sdW1uIHByb3BzIGZvciB0YWJsZSBjZWxscy5cbiAgICogQHBhcmFtIHtvYmplY3R9IGNvbHVtblxuICAgKiBAcmV0dXJucyB7b2JqZWN0fVxuICAgKi9cbiAgY29sdW1uUHJvcHMoY29sdW1uKSB7XG4gICAgbGV0IGNhY2hlS2V5ID0gXCJkZWZhdWx0XCJcblxuICAgIGlmIChjb2x1bW4udGV4dENlbnRlcikge1xuICAgICAgY2FjaGVLZXkgPSBcImNlbnRlclwiXG4gICAgfSBlbHNlIGlmIChjb2x1bW4udGV4dFJpZ2h0KSB7XG4gICAgICBjYWNoZUtleSA9IFwicmlnaHRcIlxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmNhY2hlKFxuICAgICAgYGNvbHVtblByb3BzLSR7Y2FjaGVLZXl9YCxcbiAgICAgICgpID0+IHtcbiAgICAgICAgY29uc3QgcHJvcHMgPSB7fVxuXG4gICAgICAgIGlmIChjb2x1bW4udGV4dENlbnRlcikge1xuICAgICAgICAgIHByb3BzLnN0eWxlIHx8PSB7fVxuICAgICAgICAgIHByb3BzLnN0eWxlLnRleHRBbGlnbiA9IFwiY2VudGVyXCJcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjb2x1bW4udGV4dFJpZ2h0KSB7XG4gICAgICAgICAgcHJvcHMuc3R5bGUgfHw9IHt9XG4gICAgICAgICAgcHJvcHMuc3R5bGUudGV4dEFsaWduID0gXCJyaWdodFwiXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcHJvcHNcbiAgICAgIH0sXG4gICAgICBbY29sdW1uLnRleHRDZW50ZXIsIGNvbHVtbi50ZXh0UmlnaHRdXG4gICAgKVxuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkIHBlci1jb2x1bW4gcHJvcHMgZm9yIGhlYWRlciBjZWxscy5cbiAgICogQHBhcmFtIHtvYmplY3R9IGNvbHVtblxuICAgKiBAcmV0dXJucyB7b2JqZWN0fVxuICAgKi9cbiAgaGVhZGVyUHJvcHMoY29sdW1uKSB7XG4gICAgbGV0IGNhY2hlS2V5ID0gXCJkZWZhdWx0XCJcblxuICAgIGlmIChjb2x1bW4udGV4dENlbnRlcikge1xuICAgICAgY2FjaGVLZXkgPSBcImNlbnRlclwiXG4gICAgfSBlbHNlIGlmIChjb2x1bW4udGV4dFJpZ2h0KSB7XG4gICAgICBjYWNoZUtleSA9IFwicmlnaHRcIlxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmNhY2hlKFxuICAgICAgYGhlYWRlclByb3BzLSR7Y2FjaGVLZXl9YCxcbiAgICAgICgpID0+IHtcbiAgICAgICAgY29uc3QgcHJvcHMgPSB7fVxuXG4gICAgICAgIGlmIChjb2x1bW4udGV4dENlbnRlcikge1xuICAgICAgICAgIHByb3BzLnN0eWxlIHx8PSB7fVxuICAgICAgICAgIHByb3BzLnN0eWxlLmp1c3RpZnlDb250ZW50ID0gXCJjZW50ZXJcIlxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNvbHVtbi50ZXh0UmlnaHQpIHtcbiAgICAgICAgICBwcm9wcy5zdHlsZSB8fD0ge31cbiAgICAgICAgICBwcm9wcy5zdHlsZS5qdXN0aWZ5Q29udGVudCA9IFwiZW5kXCJcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBwcm9wc1xuICAgICAgfSxcbiAgICAgIFtjb2x1bW4udGV4dENlbnRlciwgY29sdW1uLnRleHRSaWdodF1cbiAgICApXG4gIH1cblxuICAvKipcbiAgICogQ29sdW1uIHdpZHRocyBrZXllZCBieSBpZGVudGlmaWVyIGZvciB0YWJsZSByb3dzLlxuICAgKiBAcmV0dXJucyB7b2JqZWN0fVxuICAgKi9cbiAgY29sdW1uV2lkdGhzKCkge1xuICAgIGNvbnN0IGNvbHVtbldpZHRocyA9IHt9XG5cbiAgICBmb3IgKGNvbnN0IGNvbHVtbiBvZiB0aGlzLnMucHJlcGFyZWRDb2x1bW5zKSB7XG4gICAgICBjb2x1bW5XaWR0aHNbY29sdW1uLnRhYmxlU2V0dGluZ0NvbHVtbi5pZGVudGlmaWVyKCldID0gY29sdW1uLndpZHRoXG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbHVtbldpZHRoc1xuICB9XG5cbiAgaGVhZGVyc0NvbnRlbnRGcm9tQ29sdW1ucyA9ICgpID0+IHtcbiAgICByZXR1cm4gKFxuICAgICAgPERyYWdnYWJsZVNvcnRcbiAgICAgICAgYWN0aXZlSXRlbVN0eWxlPXt0aGlzLnR0LmRyYWdnZWRIZWFkZXJTdHlsZSgpfVxuICAgICAgICBkYXRhPXt0aGlzLnMuY29sdW1uc1RvU2hvd31cbiAgICAgICAgZXZlbnRzPXt0aGlzLnR0LmRyYWdnYWJsZVNvcnRFdmVudHN9XG4gICAgICAgIGhvcml6b250YWxcbiAgICAgICAga2V5RXh0cmFjdG9yPXt0aGlzLnR0LmRyYWdMaXN0a2V5RXh0cmFjdG9yfVxuICAgICAgICBvbkl0ZW1Nb3ZlZD17dGhpcy50dC5vbkl0ZW1Nb3ZlZH1cbiAgICAgICAgb25SZW9yZGVyZWQ9e3RoaXMudHQub25SZW9yZGVyZWR9XG4gICAgICAgIHJlbmRlckl0ZW09e3RoaXMudHQuZHJhZ0xpc3RSZW5kZXJJdGVtQ29udGVudH1cbiAgICAgIC8+XG4gICAgKVxuICB9XG5cbiAgZHJhZ0xpc3RDYWNoZUtleUV4dHJhY3RvciA9IChpdGVtKSA9PiBgJHtpdGVtLnRhYmxlU2V0dGluZ0NvbHVtbi5pZGVudGlmaWVyKCl9LSR7dGhpcy5zLnJlc2l6aW5nfWBcbiAgZHJhZ0xpc3RrZXlFeHRyYWN0b3IgPSAoaXRlbSkgPT4gaXRlbS50YWJsZVNldHRpbmdDb2x1bW4uaWRlbnRpZmllcigpXG5cbiAgb25JdGVtTW92ZWQgPSAoe2FuaW1hdGlvbkFyZ3MsIGl0ZW0sIHgsIHl9KSA9PiB7XG4gICAgbW92ZURyYWdnZWRDb2x1bW5Qb3NpdGlvbih7YW5pbWF0aW9uQXJncywgaXRlbSwgdGltaW5nOiBBbmltYXRlZC50aW1pbmcsIHgsIHl9KVxuICB9XG5cbiAgLyoqXG4gICAqIFBlcnNpc3QgdGhlIG5ldyBjb2x1bW4gb3JkZXJpbmcuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBhcmdzXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBhcmdzLmZyb21JdGVtXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBhcmdzLnRvSXRlbVxuICAgKiBAcGFyYW0ge251bWJlcn0gYXJncy5mcm9tUG9zaXRpb25cbiAgICogQHBhcmFtIHtudW1iZXJ9IGFyZ3MudG9Qb3NpdGlvblxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn1cbiAgICovXG4gIG9uUmVvcmRlcmVkID0gYXN5bmMgKHtmcm9tSXRlbSwgZnJvbVBvc2l0aW9uLCB0b0l0ZW0sIHRvUG9zaXRpb259KSA9PiB7XG4gICAgaWYgKGZyb21Qb3NpdGlvbiA9PSB0b1Bvc2l0aW9uKSByZXR1cm4gLy8gT25seSBkbyByZXF1ZXN0cyBhbmQgcXVlcmllcyBpZiBjaGFuZ2VkXG5cbiAgICBjb25zdCBUYWJsZVNldHRpbmdDb2x1bW4gPSBmcm9tSXRlbS50YWJsZVNldHRpbmdDb2x1bW4uY29uc3RydWN0b3JcbiAgICBjb25zdCB0b0NvbHVtbiA9IGF3YWl0IFRhYmxlU2V0dGluZ0NvbHVtbi5maW5kKHRvSXRlbS50YWJsZVNldHRpbmdDb2x1bW4uaWQoKSkgLy8gTmVlZCB0byBsb2FkIGxhdGVzdCBwb3NpdGlvbiBiZWNhdXNlIEFjdHNBc0xpc3QgbWlnaHQgaGF2ZSBjaGFuZ2VkIGl0XG5cbiAgICBhd2FpdCBmcm9tSXRlbS50YWJsZVNldHRpbmdDb2x1bW4udXBkYXRlKHtwb3NpdGlvbjogdG9Db2x1bW4ucG9zaXRpb24oKX0pXG4gIH1cblxuICBkcmFnTGlzdFJlbmRlckl0ZW1Db250ZW50ID0gKHtpc0FjdGl2ZSwgaXRlbSwgdG91Y2hQcm9wc30pID0+IHtcbiAgICBjb25zdCB7YW5pbWF0ZWRXaWR0aCwgYW5pbWF0ZWRaSW5kZXgsIGNvbHVtbiwgdGFibGVTZXR0aW5nQ29sdW1ufSA9IGl0ZW1cblxuICAgIHJldHVybiAoXG4gICAgICA8SGVhZGVyQ29sdW1uXG4gICAgICAgIGFjdGl2ZT17aXNBY3RpdmV9XG4gICAgICAgIGFuaW1hdGVkV2lkdGg9e2FuaW1hdGVkV2lkdGh9XG4gICAgICAgIGFuaW1hdGVkWkluZGV4PXthbmltYXRlZFpJbmRleH1cbiAgICAgICAgY29sdW1uPXtjb2x1bW59XG4gICAgICAgIGtleT17dGFibGVTZXR0aW5nQ29sdW1uLmlkZW50aWZpZXIoKX1cbiAgICAgICAgcmVzaXppbmc9e3RoaXMucy5yZXNpemluZ31cbiAgICAgICAgdGFibGU9e3RoaXN9XG4gICAgICAgIHRhYmxlU2V0dGluZ0NvbHVtbj17dGFibGVTZXR0aW5nQ29sdW1ufVxuICAgICAgICB0b3VjaFByb3BzPXt0b3VjaFByb3BzfVxuICAgICAgICB3aWR0aHM9e3RoaXMucy53aWR0aHN9XG4gICAgICAvPlxuICAgIClcbiAgfVxuXG4gIGhlYWRlckNsYXNzTmFtZUZvckNvbHVtbihjb2x1bW4pIHtcbiAgICBjb25zdCBjbGFzc05hbWVzID0gW11cblxuICAgIGlmIChjb2x1bW4uY29tbW9uUHJvcHMgJiYgY29sdW1uLmNvbW1vblByb3BzLmNsYXNzTmFtZSkgY2xhc3NOYW1lcy5wdXNoKGNvbHVtbi5jb21tb25Qcm9wcy5jbGFzc05hbWUpXG4gICAgaWYgKGNvbHVtbi5oZWFkZXJQcm9wcyAmJiBjb2x1bW4uaGVhZGVyUHJvcHMuY2xhc3NOYW1lKSBjbGFzc05hbWVzLnB1c2goY29sdW1uLmhlYWRlclByb3BzLmNsYXNzTmFtZSlcblxuICAgIHJldHVybiBjbGFzc05hbWVzXG4gIH1cblxuICBoZWFkZXJMYWJlbEZvckNvbHVtbihjb2x1bW4pIHtcbiAgICBjb25zdCB7bW9kZWxDbGFzc30gPSB0aGlzLnBcblxuICAgIGlmIChcImxhYmVsXCIgaW4gY29sdW1uKSB7XG4gICAgICBpZiAodHlwZW9mIGNvbHVtbi5sYWJlbCA9PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgcmV0dXJuIGNvbHVtbi5sYWJlbCgpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gY29sdW1uLmxhYmVsXG4gICAgICB9XG4gICAgfVxuXG4gICAgbGV0IGN1cnJlbnRNb2RlbENsYXNzID0gbW9kZWxDbGFzc1xuXG4gICAgLy8gQ2FsY3VsYXRlIGN1cnJlbnQgbW9kZWwgY2xhc3MgdGhyb3VnaCBwYXRoXG4gICAgaWYgKGNvbHVtbi5wYXRoKSB7XG4gICAgICBmb3IgKGNvbnN0IHBhdGhQYXJ0IG9mIGNvbHVtbi5wYXRoKSB7XG4gICAgICAgIGNvbnN0IHJlbGF0aW9uc2hpcHMgPSBkaWdnKGN1cnJlbnRNb2RlbENsYXNzLm1vZGVsQ2xhc3NEYXRhKCksIFwicmVsYXRpb25zaGlwc1wiKVxuICAgICAgICBjb25zdCByZWxhdGlvbnNoaXAgPSByZWxhdGlvbnNoaXBzLmZpbmQoKHJlbGF0aW9uc2hpcEluQXJyYXkpID0+IHJlbGF0aW9uc2hpcEluQXJyYXkubmFtZSA9PSBpbmZsZWN0aW9uLnVuZGVyc2NvcmUocGF0aFBhcnQpKVxuXG4gICAgICAgIGN1cnJlbnRNb2RlbENsYXNzID0gbW9kZWxDbGFzc1JlcXVpcmUoZGlnZyhyZWxhdGlvbnNoaXAsIFwicmVzb3VyY2VfbmFtZVwiKSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoY29sdW1uLmF0dHJpYnV0ZSkgcmV0dXJuIGN1cnJlbnRNb2RlbENsYXNzLmh1bWFuQXR0cmlidXRlTmFtZShjb2x1bW4uYXR0cmlidXRlKVxuXG4gICAgdGhyb3cgbmV3IEVycm9yKFwiTm8gJ2xhYmVsJyBvciAnYXR0cmlidXRlJyB3YXMgZ2l2ZW5cIilcbiAgfVxuXG4gIC8qKlxuICAgKiBQcm92aWRlIHN0eWxpbmcgZm9yIGEgZHJhZ2dlZCBoZWFkZXIgaXRlbS5cbiAgICogQHJldHVybnMge29iamVjdHx1bmRlZmluZWR9XG4gICAqL1xuICBkcmFnZ2VkSGVhZGVyU3R5bGUgPSAoKSA9PiB7XG4gICAgaWYgKHRoaXMucC5kcmFnZ2VkSGVhZGVyU3R5bGUgIT09IHVuZGVmaW5lZCkgcmV0dXJuIHRoaXMucC5kcmFnZ2VkSGVhZGVyU3R5bGVcbiAgICBpZiAodGhpcy5wLnN0eWxlVUkpIHJldHVybiB1bmRlZmluZWRcblxuICAgIHJldHVybiBzdHlsZXMuZHJhZ2dlZEhlYWRlclN0eWxlVHJhbnNwYXJlbnQgfHw9IHtiYWNrZ3JvdW5kQ29sb3I6IFwidHJhbnNwYXJlbnRcIn1cbiAgfVxuXG4gIG9uRmlsdGVyRm9ybVN1Ym1pdCA9ICgpID0+IHRoaXMuc3VibWl0RmlsdGVyKClcbiAgb25SZXF1ZXN0Q2xvc2VTZXR0aW5ncyA9ICgpID0+IHtcbiAgICB0aGlzLnMuc2hvd1NldHRpbmdzID0gZmFsc2VcbiAgfVxuXG4gIG9uU2V0dGluZ3NDbGlja2VkID0gKGUpID0+IHtcbiAgICBlLnByZXZlbnREZWZhdWx0KClcblxuICAgIHRoaXMucy5zaG93U2V0dGluZ3MgPSAhdGhpcy5zLnNob3dTZXR0aW5nc1xuICB9XG5cbiAgc3VibWl0RmlsdGVyID0gKCkgPT4ge1xuICAgIGNvbnN0IHthcHBIaXN0b3J5fSA9IHRoaXMucHJvcHNcbiAgICBjb25zdCB7cXVlcnlRTmFtZX0gPSB0aGlzLnNcbiAgICBjb25zdCBjaGFuZ2VQYXJhbXNQYXJhbXMgPSB7fVxuICAgIGNvbnN0IHFQYXJhbXMgPSB0aGlzLnMuZmlsdGVyRm9ybS5hc09iamVjdCgpXG5cbiAgICBpZiAoUGxhdGZvcm0uT1MgPT0gXCJ3ZWJcIikge1xuICAgICAgY29uc3QgZmlsdGVyRm9ybSA9IGRpZ2codGhpcy50dC5maWx0ZXJGb3JtUmVmLCBcImN1cnJlbnRcIilcbiAgICAgIGNvbnN0IG5hdnRpdmVGb3JtUGFyYW1zID0gUGFyYW1zLnNlcmlhbGl6ZUZvcm0oZmlsdGVyRm9ybSlcblxuICAgICAgaW5jb3Jwb3JhdGUocVBhcmFtcywgbmF2dGl2ZUZvcm1QYXJhbXMpXG4gICAgfVxuXG4gICAgY2hhbmdlUGFyYW1zUGFyYW1zW3F1ZXJ5UU5hbWVdID0gSlNPTi5zdHJpbmdpZnkocVBhcmFtcylcblxuICAgIFBhcmFtcy5jaGFuZ2VQYXJhbXMoY2hhbmdlUGFyYW1zUGFyYW1zLCB7YXBwSGlzdG9yeX0pXG4gIH1cblxuICBzdWJtaXRGaWx0ZXJEZWJvdW5jZSA9IGRlYm91bmNlKHRoaXMudHQuc3VibWl0RmlsdGVyKVxufSkpXG4iXX0=
|
|
@@ -1,16 +1,21 @@
|
|
|
1
1
|
declare const _default: React.NamedExoticComponent<Record<string, any>>;
|
|
2
2
|
export default _default;
|
|
3
3
|
export type Props = {
|
|
4
|
+
attribute?: string;
|
|
4
5
|
checked?: boolean;
|
|
5
6
|
dataSet?: object;
|
|
6
7
|
defaultChecked?: boolean;
|
|
8
|
+
id?: string;
|
|
9
|
+
inputRef?: object;
|
|
7
10
|
label?: string;
|
|
11
|
+
model?: object;
|
|
12
|
+
name?: string;
|
|
8
13
|
onCheckedChange?: Function;
|
|
9
14
|
style?: object;
|
|
10
15
|
testID?: string;
|
|
11
16
|
};
|
|
12
17
|
export type State = {
|
|
13
|
-
checked: boolean
|
|
18
|
+
checked: boolean;
|
|
14
19
|
};
|
|
15
20
|
import React from "react";
|
|
16
21
|
//# sourceMappingURL=checkbox.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkbox.d.ts","sourceRoot":"/src/","sources":["utils/checkbox.jsx"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"checkbox.d.ts","sourceRoot":"/src/","sources":["utils/checkbox.jsx"],"names":[],"mappings":";;;gBAec,MAAM;cACN,OAAO;cACP,MAAM;qBACN,OAAO;SACP,MAAM;eACN,MAAM;YACN,MAAM;YACN,MAAM;WACN,MAAM;;YAEN,MAAM;aACN,MAAM;;;aAIN,OAAO;;kBA1BmB,OAAO"}
|
package/build/utils/checkbox.js
CHANGED
|
@@ -3,78 +3,121 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
3
3
|
/* eslint-disable prefer-object-spread, sort-imports */
|
|
4
4
|
// @ts-expect-error CheckBox removed from react-native core in newer versions
|
|
5
5
|
import { CheckBox, Pressable, View } from "react-native";
|
|
6
|
-
import React, { useMemo } from "react";
|
|
6
|
+
import React, { useEffect, useMemo } from "react";
|
|
7
7
|
import memo from "set-state-compare/build/memo.js";
|
|
8
8
|
import PropTypes from "prop-types";
|
|
9
9
|
import propTypesExact from "prop-types-exact";
|
|
10
10
|
import { ShapeComponent, shapeComponent } from "set-state-compare/build/shape-component.js";
|
|
11
11
|
import Text from "./text";
|
|
12
|
+
import { useForm } from "../form";
|
|
13
|
+
import useInput from "../use-input.js";
|
|
12
14
|
/**
|
|
13
15
|
* @typedef {object} Props
|
|
16
|
+
* @property {string} [attribute]
|
|
14
17
|
* @property {boolean} [checked]
|
|
15
18
|
* @property {object} [dataSet]
|
|
16
19
|
* @property {boolean} [defaultChecked]
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
20
|
+
* @property {string} [id]
|
|
21
|
+
* @property {object} [inputRef]
|
|
22
|
+
* @property {string} [label]
|
|
23
|
+
* @property {object} [model]
|
|
24
|
+
* @property {string} [name]
|
|
25
|
+
* @property {Function} [onCheckedChange]
|
|
26
|
+
* @property {object} [style]
|
|
27
|
+
* @property {string} [testID]
|
|
21
28
|
*/
|
|
22
29
|
/**
|
|
23
30
|
* @typedef {object} State
|
|
24
|
-
* @property {boolean
|
|
31
|
+
* @property {boolean} checked
|
|
25
32
|
*/
|
|
26
33
|
export default memo(shapeComponent(/** @augments {ShapeComponent<Props, State>} */ class ApiMakerUtilsCheckbox extends ShapeComponent {
|
|
27
34
|
static defaultProps = {
|
|
28
35
|
dataSet: null,
|
|
29
|
-
label: undefined,
|
|
30
36
|
style: null,
|
|
31
37
|
testID: undefined
|
|
32
38
|
};
|
|
33
39
|
static propTypes = propTypesExact({
|
|
40
|
+
attribute: PropTypes.string,
|
|
34
41
|
checked: PropTypes.bool,
|
|
35
42
|
dataSet: PropTypes.object,
|
|
36
43
|
defaultChecked: PropTypes.bool,
|
|
44
|
+
id: PropTypes.string,
|
|
45
|
+
inputRef: PropTypes.object,
|
|
37
46
|
label: PropTypes.string,
|
|
47
|
+
model: PropTypes.object,
|
|
48
|
+
name: PropTypes.string,
|
|
38
49
|
onCheckedChange: PropTypes.func,
|
|
39
50
|
style: PropTypes.object,
|
|
40
51
|
testID: PropTypes.string
|
|
41
52
|
});
|
|
42
53
|
state = {
|
|
43
|
-
checked: this.
|
|
54
|
+
checked: this.defaultChecked()
|
|
44
55
|
};
|
|
45
|
-
setup() {
|
|
56
|
+
setup() {
|
|
57
|
+
const { inputProps, restProps: useInputRestProps, wrapperOpts } = useInput({ props: this.props, wrapperOptions: { type: "checkbox" } });
|
|
58
|
+
const form = useForm();
|
|
59
|
+
const inputName = inputProps.name;
|
|
60
|
+
const initialChecked = this.calculateChecked();
|
|
61
|
+
this.form = form;
|
|
62
|
+
this.inputProps = inputProps;
|
|
63
|
+
this.useInputRestProps = useInputRestProps;
|
|
64
|
+
this.wrapperOpts = wrapperOpts;
|
|
65
|
+
useEffect(() => {
|
|
66
|
+
if (form && inputName) {
|
|
67
|
+
form.setValue(inputName, initialChecked);
|
|
68
|
+
}
|
|
69
|
+
}, [form, inputName]);
|
|
70
|
+
}
|
|
46
71
|
calculateChecked() {
|
|
47
72
|
if ("checked" in this.props) {
|
|
48
|
-
return this.p.checked;
|
|
73
|
+
return Boolean(this.p.checked);
|
|
49
74
|
}
|
|
50
75
|
else {
|
|
51
76
|
return this.s.checked;
|
|
52
77
|
}
|
|
53
78
|
}
|
|
54
79
|
render() {
|
|
55
|
-
const {
|
|
80
|
+
const { inputProps, useInputRestProps, wrapperOpts } = this.tt;
|
|
81
|
+
const { attribute, checked, dataSet, defaultChecked, id, inputRef, label, model, name, onCheckedChange, style, testID, ...restProps } = useInputRestProps;
|
|
56
82
|
const isChecked = this.calculateChecked();
|
|
83
|
+
const actualLabel = typeof label == "undefined" ? wrapperOpts.label : label;
|
|
57
84
|
const actualStyle = useMemo(() => Object.assign({ flexDirection: "row", alignItems: "center" }, style), [style]);
|
|
58
85
|
const actualDataSet = useMemo(() => Object.assign({ checked: isChecked }, dataSet), [dataSet, isChecked]);
|
|
59
|
-
return (_jsxs(View, { dataSet: this.cache("viewContainerDataSet", { component: "api-maker/utils/checkbox" }), style: actualStyle, children: [_jsx(CheckBox, { dataSet: actualDataSet, onValueChange: this.tt.onValueChange, testID: testID, value: isChecked }),
|
|
60
|
-
_jsx(Pressable, { onPress: this.tt.onLabelPressed, children: _jsx(Text, { style: this.cache("textStyle", { marginLeft: 3 }), children:
|
|
86
|
+
return (_jsxs(View, { dataSet: this.cache("viewContainerDataSet", { component: "api-maker/utils/checkbox" }), style: actualStyle, children: [_jsx(CheckBox, { ...restProps, dataSet: actualDataSet, onValueChange: this.tt.onValueChange, ref: inputProps.ref, testID: testID, value: isChecked }), actualLabel &&
|
|
87
|
+
_jsx(Pressable, { onPress: this.tt.onLabelPressed, children: _jsx(Text, { style: this.cache("textStyle", { marginLeft: 3 }), children: actualLabel }) })] }));
|
|
61
88
|
}
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
this.p.onCheckedChange(newChecked);
|
|
89
|
+
defaultChecked() {
|
|
90
|
+
if ("defaultChecked" in this.props) {
|
|
91
|
+
return Boolean(this.props.defaultChecked);
|
|
66
92
|
}
|
|
67
|
-
if (
|
|
68
|
-
this.
|
|
93
|
+
else if (this.props.attribute && this.props.model) {
|
|
94
|
+
if (!this.props.model[this.props.attribute]) {
|
|
95
|
+
throw new Error(`No such attribute: ${this.props.attribute}`);
|
|
96
|
+
}
|
|
97
|
+
return Boolean(this.props.model[this.props.attribute]());
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
return false;
|
|
69
101
|
}
|
|
102
|
+
}
|
|
103
|
+
onLabelPressed = () => {
|
|
104
|
+
const newChecked = !this.calculateChecked();
|
|
105
|
+
this.setChecked(newChecked);
|
|
70
106
|
};
|
|
71
107
|
onValueChange = (newChecked) => {
|
|
108
|
+
this.setChecked(newChecked);
|
|
109
|
+
};
|
|
110
|
+
setChecked(newChecked) {
|
|
111
|
+
const { form, inputProps } = this.tt;
|
|
112
|
+
if (form && inputProps.name) {
|
|
113
|
+
form.setValue(inputProps.name, newChecked);
|
|
114
|
+
}
|
|
72
115
|
if (this.props.onCheckedChange) {
|
|
73
116
|
this.p.onCheckedChange(newChecked);
|
|
74
117
|
}
|
|
75
118
|
if (!("checked" in this.props)) {
|
|
76
119
|
this.s.checked = newChecked;
|
|
77
120
|
}
|
|
78
|
-
}
|
|
121
|
+
}
|
|
79
122
|
}));
|
|
80
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3guanMiLCJzb3VyY2VSb290IjoiL3NyYy8iLCJzb3VyY2VzIjpbInV0aWxzL2NoZWNrYm94LmpzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsWUFBWTtBQUNaLHVEQUF1RDtBQUN2RCw2RUFBNkU7QUFDN0UsT0FBTyxFQUFDLFFBQVEsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFDLE1BQU0sY0FBYyxDQUFBO0FBQ3RELE9BQU8sS0FBSyxFQUFFLEVBQUMsT0FBTyxFQUFDLE1BQU0sT0FBTyxDQUFBO0FBQ3BDLE9BQU8sSUFBSSxNQUFNLGlDQUFpQyxDQUFBO0FBQ2xELE9BQU8sU0FBUyxNQUFNLFlBQVksQ0FBQTtBQUNsQyxPQUFPLGNBQWMsTUFBTSxrQkFBa0IsQ0FBQTtBQUM3QyxPQUFPLEVBQUMsY0FBYyxFQUFFLGNBQWMsRUFBQyxNQUFNLDRDQUE0QyxDQUFBO0FBQ3pGLE9BQU8sSUFBSSxNQUFNLFFBQVEsQ0FBQTtBQUV6Qjs7Ozs7Ozs7O0dBU0c7QUFDSDs7O0dBR0c7QUFDSCxlQUFlLElBQUksQ0FBQyxjQUFjLENBQUMsK0NBQStDLENBQUMsTUFBTSxxQkFBc0IsU0FBUSxjQUFjO0lBQ25JLE1BQU0sQ0FBQyxZQUFZLEdBQUc7UUFDcEIsT0FBTyxFQUFFLElBQUk7UUFDYixLQUFLLEVBQUUsU0FBUztRQUNoQixLQUFLLEVBQUUsSUFBSTtRQUNYLE1BQU0sRUFBRSxTQUFTO0tBQ2xCLENBQUE7SUFFRCxNQUFNLENBQUMsU0FBUyxHQUFHLGNBQWMsQ0FBQztRQUNoQyxPQUFPLEVBQUUsU0FBUyxDQUFDLElBQUk7UUFDdkIsT0FBTyxFQUFFLFNBQVMsQ0FBQyxNQUFNO1FBQ3pCLGNBQWMsRUFBRSxTQUFTLENBQUMsSUFBSTtRQUM5QixLQUFLLEVBQUUsU0FBUyxDQUFDLE1BQU07UUFDdkIsZUFBZSxFQUFFLFNBQVMsQ0FBQyxJQUFJO1FBQy9CLEtBQUssRUFBRSxTQUFTLENBQUMsTUFBTTtRQUN2QixNQUFNLEVBQUUsU0FBUyxDQUFD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c0NvbnRlbnQiOlsiLy8gQHRzLWNoZWNrXG4vKiBlc2xpbnQtZGlzYWJsZSBwcmVmZXItb2JqZWN0LXNwcmVhZCwgc29ydC1pbXBvcnRzICovXG4vLyBAdHMtZXhwZWN0LWVycm9yIENoZWNrQm94IHJlbW92ZWQgZnJvbSByZWFjdC1uYXRpdmUgY29yZSBpbiBuZXdlciB2ZXJzaW9uc1xuaW1wb3J0IHtDaGVja0JveCwgUHJlc3NhYmxlLCBWaWV3fSBmcm9tIFwicmVhY3QtbmF0aXZlXCJcbmltcG9ydCBSZWFjdCwge3VzZU1lbW99IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQgbWVtbyBmcm9tIFwic2V0LXN0YXRlLWNvbXBhcmUvYnVpbGQvbWVtby5qc1wiXG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCJcbmltcG9ydCBwcm9wVHlwZXNFeGFjdCBmcm9tIFwicHJvcC10eXBlcy1leGFjdFwiXG5pbXBvcnQge1NoYXBlQ29tcG9uZW50LCBzaGFwZUNvbXBvbmVudH0gZnJvbSBcInNldC1zdGF0ZS1jb21wYXJlL2J1aWxkL3NoYXBlLWNvbXBvbmVudC5qc1wiXG5pbXBvcnQgVGV4dCBmcm9tIFwiLi90ZXh0XCJcblxuLyoqXG4gKiBAdHlwZWRlZiB7b2JqZWN0fSBQcm9wc1xuICogQHByb3BlcnR5IHtib29sZWFufSBbY2hlY2tlZF1cbiAqIEBwcm9wZXJ0eSB7b2JqZWN0fSBbZGF0YVNldF1cbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gW2RlZmF1bHRDaGVja2VkXVxuICAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBbbGFiZWxdXG4gICogQHByb3BlcnR5IHtGdW5jdGlvbn0gW29uQ2hlY2tlZENoYW5nZV1cbiAgKiBAcHJvcGVydHkge29iamVjdH0gW3N0eWxlXVxuICAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBbdGVzdElEXVxuICovXG4vKipcbiAqIEB0eXBlZGVmIHtvYmplY3R9IFN0YXRlXG4gKiBAcHJvcGVydHkge2Jvb2xlYW4gfCB1bmRlZmluZWR9IGNoZWNrZWRcbiAqL1xuZXhwb3J0IGRlZmF1bHQgbWVtbyhzaGFwZUNvbXBvbmVudCgvKiogQGF1Z21lbnRzIHtTaGFwZUNvbXBvbmVudDxQcm9wcywgU3RhdGU+fSAqLyBjbGFzcyBBcGlNYWtlclV0aWxzQ2hlY2tib3ggZXh0ZW5kcyBTaGFwZUNvbXBvbmVudCB7XG4gIHN0YXRpYyBkZWZhdWx0UHJvcHMgPSB7XG4gICAgZGF0YVNldDogbnVsbCxcbiAgICBsYWJlbDogdW5kZWZpbmVkLFxuICAgIHN0eWxlOiBudWxsLFxuICAgIHRlc3RJRDogdW5kZWZpbmVkXG4gIH1cblxuICBzdGF0aWMgcHJvcFR5cGVzID0gcHJvcFR5cGVzRXhhY3Qoe1xuICAgIGNoZWNrZWQ6IFByb3BUeXBlcy5ib29sLFxuICAgIGRhdGFTZXQ6IFByb3BUeXBlcy5vYmplY3QsXG4gICAgZGVmYXVsdENoZWNrZWQ6IFByb3BUeXBlcy5ib29sLFxuICAgIGxhYmVsOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIG9uQ2hlY2tlZENoYW5nZTogUHJvcFR5cGVzLmZ1bmMsXG4gICAgc3R5bGU6IFByb3BUeXBlcy5vYmplY3QsXG4gICAgdGVzdElEOiBQcm9wVHlwZXMuc3RyaW5nXG4gIH0pXG4gIHN0YXRlID0ge1xuICAgIGNoZWNrZWQ6IHRoaXMucHJvcHMuZGVmYXVsdENoZWNrZWRcbiAgfVxuXG4gIHNldHVwKCkge31cblxuICBjYWxjdWxhdGVDaGVja2VkKCkge1xuICAgIGlmIChcImNoZWNrZWRcIiBpbiB0aGlzLnByb3BzKSB7XG4gICAgICByZXR1cm4gdGhpcy5wLmNoZWNrZWRcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMucy5jaGVja2VkXG4gICAgfVxuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHtkYXRhU2V0LCBsYWJlbCwgc3R5bGUsIHRlc3RJRH0gPSB0aGlzLnBcbiAgICBjb25zdCBpc0NoZWNrZWQgPSB0aGlzLmNhbGN1bGF0ZUNoZWNrZWQoKVxuICAgIGNvbnN0IGFjdHVhbFN0eWxlID0gdXNlTWVtbygoKSA9PiBPYmplY3QuYXNzaWduKHtmbGV4RGlyZWN0aW9uOiBcInJvd1wiLCBhbGlnbkl0ZW1zOiBcImNlbnRlclwifSwgc3R5bGUpLCBbc3R5bGVdKVxuICAgIGNvbnN0IGFjdHVhbERhdGFTZXQgPSB1c2VNZW1vKCgpID0+IE9iamVjdC5hc3NpZ24oe2NoZWNrZWQ6IGlzQ2hlY2tlZH0sIGRhdGFTZXQpLCBbZGF0YVNldCwgaXNDaGVja2VkXSlcblxuICAgIHJldHVybiAoXG4gICAgICA8Vmlld1xuICAgICAgICBkYXRhU2V0PXt0aGlzLmNhY2hlKFwidmlld0NvbnRhaW5lckRhdGFTZXRcIiwge2NvbXBvbmVudDogXCJhcGktbWFrZXIvdXRpbHMvY2hlY2tib3hcIn0pfVxuICAgICAgICBzdHlsZT17YWN0dWFsU3R5bGV9XG4gICAgICA+XG4gICAgICAgIDxDaGVja0JveCBkYXRhU2V0PXthY3R1YWxEYXRhU2V0fSBvblZhbHVlQ2hhbmdlPXt0aGlzLnR0Lm9uVmFsdWVDaGFuZ2V9IHRlc3RJRD17dGVzdElEfSB2YWx1ZT17aXNDaGVja2VkfSAvPlxuICAgICAgICB7bGFiZWwgJiZcbiAgICAgICAgICA8UHJlc3NhYmxlIG9uUHJlc3M9e3RoaXMudHQub25MYWJlbFByZXNzZWR9PlxuICAgICAgICAgICAgPFRleHQgc3R5bGU9e3RoaXMuY2FjaGUoXCJ0ZXh0U3R5bGVcIiwge21hcmdpbkxlZnQ6IDN9KX0+XG4gICAgICAgICAgICAgIHtsYWJlbH1cbiAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICA8L1ByZXNzYWJsZT5cbiAgICAgICAgfVxuICAgICAgPC9WaWV3PlxuICAgIClcbiAgfVxuXG4gIG9uTGFiZWxQcmVzc2VkID0gKCkgPT4ge1xuICAgIGNvbnN0IG5ld0NoZWNrZWQgPSAhdGhpcy5jYWxjdWxhdGVDaGVja2VkKClcblxuICAgIGlmICh0aGlzLnByb3BzLm9uQ2hlY2tlZENoYW5nZSkge1xuICAgICAgdGhpcy5wLm9uQ2hlY2tlZENoYW5nZShuZXdDaGVja2VkKVxuICAgIH1cblxuICAgIGlmICghKFwiY2hlY2tlZFwiIGluIHRoaXMucHJvcHMpKSB7XG4gICAgICB0aGlzLnMuY2hlY2tlZCA9IG5ld0NoZWNrZWRcbiAgICB9XG4gIH1cblxuICBvblZhbHVlQ2hhbmdlID0gKG5ld0NoZWNrZWQpID0+IHtcbiAgICBpZiAodGhpcy5wcm9wcy5vbkNoZWNrZWRDaGFuZ2UpIHtcbiAgICAgIHRoaXMucC5vbkNoZWNrZWRDaGFuZ2UobmV3Q2hlY2tlZClcbiAgICB9XG5cbiAgICBpZiAoIShcImNoZWNrZWRcIiBpbiB0aGlzLnByb3BzKSkge1xuICAgICAgdGhpcy5zLmNoZWNrZWQgPSBuZXdDaGVja2VkXG4gICAgfVxuICB9XG59KSlcbiJdfQ==
|
|
123
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3guanMiLCJzb3VyY2VSb290IjoiL3NyYy8iLCJzb3VyY2VzIjpbInV0aWxzL2NoZWNrYm94LmpzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsWUFBWTtBQUNaLHVEQUF1RDtBQUN2RCw2RUFBNkU7QUFDN0UsT0FBTyxFQUFDLFFBQVEsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFDLE1BQU0sY0FBYyxDQUFBO0FBQ3RELE9BQU8sS0FBSyxFQUFFLEVBQUMsU0FBUyxFQUFFLE9BQU8sRUFBQyxNQUFNLE9BQU8sQ0FBQTtBQUMvQyxPQUFPLElBQUksTUFBTSxpQ0FBaUMsQ0FBQTtBQUNsRCxPQUFPLFNBQVMsTUFBTSxZQUFZLENBQUE7QUFDbEMsT0FBTyxjQUFjLE1BQU0sa0JBQWtCLENBQUE7QUFDN0MsT0FBTyxFQUFDLGNBQWMsRUFBRSxjQUFjLEVBQUMsTUFBTSw0Q0FBNEMsQ0FBQTtBQUN6RixPQUFPLElBQUksTUFBTSxRQUFRLENBQUE7QUFDekIsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLFNBQVMsQ0FBQTtBQUMvQixPQUFPLFFBQVEsTUFBTSxpQkFBaUIsQ0FBQTtBQUV0Qzs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUNIOzs7R0FHRztBQUNILGVBQWUsSUFBSSxDQUFDLGNBQWMsQ0FBQywrQ0FBK0MsQ0FBQyxNQUFNLHFCQUFzQixTQUFRLGNBQWM7SUFDbkksTUFBTSxDQUFDLFlBQVksR0FBRztRQUNwQixPQUFPLEVBQUUsSUFBSTtRQUNiLEtBQUssRUFBRSxJQUFJO1FBQ1gsTUFBTSxFQUFFLFNBQVM7S0FDbEIsQ0FBQTtJQUVELE1BQU0sQ0FBQyxTQUFTLEdBQUcsY0FBYyxDQUFDO1FBQ2hDLFNBQVMsRUFBRSxTQUFTLENBQUMsTUFBTTtRQUMzQixPQUFPLEVBQUUsU0FBUyxDQUFDLElBQUk7UUFDdkIsT0FBTyxFQUFFLFNBQVMsQ0FBQyxNQUFNO1FBQ3pCLGNBQWMsRUFBRSxTQUFTLENBQUMsSUFBSTtRQUM5QixFQUFFLEVBQUUsU0FB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LENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUE7UUFDMUQsQ0FBQzthQUFNLENBQUM7WUFDTixPQUFPLEtBQUssQ0FBQTtRQUNkLENBQUM7SUFDSCxDQUFDO0lBRUQsY0FBYyxHQUFHLEdBQUcsRUFBRTtRQUNwQixNQUFNLFVBQVUsR0FBRyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFBO1FBRTNDLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUE7SUFDN0IsQ0FBQyxDQUFBO0lBRUQsYUFBYSxHQUFHLENBQUMsVUFBVSxFQUFFLEVBQUU7UUFDN0IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQTtJQUM3QixDQUFDLENBQUE7SUFFRCxVQUFVLENBQUMsVUFBVTtRQUNuQixNQUFNLEVBQUMsSUFBSSxFQUFFLFVBQVUsRUFBQyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUE7UUFFbEMsSUFBSSxJQUFJLElBQUksVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQzVCLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsQ0FBQTtRQUM1QyxDQUFDO1FBRUQsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQy9CLElBQUksQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQyxDQUFBO1FBQ3BDLENBQUM7UUFFRCxJQUFJLENBQUMsQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDL0IsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLEdBQUcsVUFBVSxDQUFBO1FBQzdCLENBQUM7SUFDSCxDQUFDO0NBQ0YsQ0FBQyxDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtY2hlY2tcbi8qIGVzbGludC1kaXNhYmxlIHByZWZlci1vYmplY3Qtc3ByZWFkLCBzb3J0LWltcG9ydHMgKi9cbi8vIEB0cy1leHBlY3QtZXJyb3IgQ2hlY2tCb3ggcmVtb3ZlZCBmcm9tIHJlYWN0LW5hdGl2ZSBjb3JlIGluIG5ld2VyIHZlcnNpb25zXG5pbXBvcnQge0NoZWNrQm94LCBQcmVzc2FibGUsIFZpZXd9IGZyb20gXCJyZWFjdC1uYXRpdmVcIlxuaW1wb3J0IFJlYWN0LCB7dXNlRWZmZWN0LCB1c2VNZW1vfSBmcm9tIFwicmVhY3RcIlxuaW1wb3J0IG1lbW8gZnJvbSBcInNldC1zdGF0ZS1jb21wYXJlL2J1aWxkL21lbW8uanNcIlxuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiXG5pbXBvcnQgcHJvcFR5cGVzRXhhY3QgZnJvbSBcInByb3AtdHlwZXMtZXhhY3RcIlxuaW1wb3J0IHtTaGFwZUNvbXBvbmVudCwgc2hhcGVDb21wb25lbnR9IGZyb20gXCJzZXQtc3RhdGUtY29tcGFyZS9idWlsZC9zaGFwZS1jb21wb25lbnQuanNcIlxuaW1wb3J0IFRleHQgZnJvbSBcIi4vdGV4dFwiXG5pbXBvcnQge3VzZUZvcm19IGZyb20gXCIuLi9mb3JtXCJcbmltcG9ydCB1c2VJbnB1dCBmcm9tIFwiLi4vdXNlLWlucHV0LmpzXCJcblxuLyoqXG4gKiBAdHlwZWRlZiB7b2JqZWN0fSBQcm9wc1xuICogQHByb3BlcnR5IHtzdHJpbmd9IFthdHRyaWJ1dGVdXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IFtjaGVja2VkXVxuICogQHByb3BlcnR5IHtvYmplY3R9IFtkYXRhU2V0XVxuICogQHByb3BlcnR5IHtib29sZWFufSBbZGVmYXVsdENoZWNrZWRdXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW2lkXVxuICogQHByb3BlcnR5IHtvYmplY3R9IFtpbnB1dFJlZl1cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBbbGFiZWxdXG4gKiBAcHJvcGVydHkge29iamVjdH0gW21vZGVsXVxuICogQHByb3BlcnR5IHtzdHJpbmd9IFtuYW1lXVxuICogQHByb3BlcnR5IHtGdW5jdGlvbn0gW29uQ2hlY2tlZENoYW5nZV1cbiAqIEBwcm9wZXJ0eSB7b2JqZWN0fSBbc3R5bGVdXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW3Rlc3RJRF1cbiAqL1xuLyoqXG4gKiBAdHlwZWRlZiB7b2JqZWN0fSBTdGF0ZVxuICogQHByb3BlcnR5IHtib29sZWFufSBjaGVja2VkXG4gKi9cbmV4cG9ydCBkZWZhdWx0IG1lbW8oc2hhcGVDb21wb25lbnQoLyoqIEBhdWdtZW50cyB7U2hhcGVDb21wb25lbnQ8UHJvcHMsIFN0YXRlPn0gKi8gY2xhc3MgQXBpTWFrZXJVdGlsc0NoZWNrYm94IGV4dGVuZHMgU2hhcGVDb21wb25lbnQge1xuICBzdGF0aWMgZGVmYXVsdFByb3BzID0ge1xuICAgIGRhdGFTZXQ6IG51bGwsXG4gICAgc3R5bGU6IG51bGwsXG4gICAgdGVzdElEOiB1bmRlZmluZWRcbiAgfVxuXG4gIHN0YXRpYyBwcm9wVHlwZXMgPSBwcm9wVHlwZXNFeGFjdCh7XG4gICAgYXR0cmlidXRlOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIGNoZWNrZWQ6IFByb3BUeXBlcy5ib29sLFxuICAgIGRhdGFTZXQ6IFByb3BUeXBlcy5vYmplY3QsXG4gICAgZGVmYXVsdENoZWNrZWQ6IFByb3BUeXBlcy5ib29sLFxuICAgIGlkOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIGlucHV0UmVmOiBQcm9wVHlwZXMub2JqZWN0LFxuICAgIGxhYmVsOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIG1vZGVsOiBQcm9wVHlwZXMub2JqZWN0LFxuICAgIG5hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgb25DaGVja2VkQ2hhbmdlOiBQcm9wVHlwZXMuZnVuYyxcbiAgICBzdHlsZTogUHJvcFR5cGVzLm9iamVjdCxcbiAgICB0ZXN0SUQ6IFByb3BUeXBlcy5zdHJpbmdcbiAgfSlcblxuICBzdGF0ZSA9IHtcbiAgICBjaGVja2VkOiB0aGlzLmRlZmF1bHRDaGVja2VkKClcbiAgfVxuXG4gIHNldHVwKCkge1xuICAgIGNvbnN0IHtpbnB1dFByb3BzLCByZXN0UHJvcHM6IHVzZUlucHV0UmVzdFByb3BzLCB3cmFwcGVyT3B0c30gPSB1c2VJbnB1dCh7cHJvcHM6IHRoaXMucHJvcHMsIHdyYXBwZXJPcHRpb25zOiB7dHlwZTogXCJjaGVja2JveFwifX0pXG4gICAgY29uc3QgZm9ybSA9IHVzZUZvcm0oKVxuICAgIGNvbnN0IGlucHV0TmFtZSA9IGlucHV0UHJvcHMubmFtZVxuICAgIGNvbnN0IGluaXRpYWxDaGVja2VkID0gdGhpcy5jYWxjdWxhdGVDaGVja2VkKClcblxuICAgIHRoaXMuZm9ybSA9IGZvcm1cbiAgICB0aGlzLmlucHV0UHJvcHMgPSBpbnB1dFByb3BzXG4gICAgdGhpcy51c2VJbnB1dFJlc3RQcm9wcyA9IHVzZUlucHV0UmVzdFByb3BzXG4gICAgdGhpcy53cmFwcGVyT3B0cyA9IHdyYXBwZXJPcHRzXG5cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgaWYgKGZvcm0gJiYgaW5wdXROYW1lKSB7XG4gICAgICAgIGZvcm0uc2V0VmFsdWUoaW5wdXROYW1lLCBpbml0aWFsQ2hlY2tlZClcbiAgICAgIH1cbiAgICB9LCBbZm9ybSwgaW5wdXROYW1lXSlcbiAgfVxuXG4gIGNhbGN1bGF0ZUNoZWNrZWQoKSB7XG4gICAgaWYgKFwiY2hlY2tlZFwiIGluIHRoaXMucHJvcHMpIHtcbiAgICAgIHJldHVybiBCb29sZWFuKHRoaXMucC5jaGVja2VkKVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5zLmNoZWNrZWRcbiAgICB9XG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgY29uc3Qge2lucHV0UHJvcHMsIHVzZUlucHV0UmVzdFByb3BzLCB3cmFwcGVyT3B0c30gPSB0aGlzLnR0XG4gICAgY29uc3Qge1xuICAgICAgYXR0cmlidXRlLFxuICAgICAgY2hlY2tlZCxcbiAgICAgIGRhdGFTZXQsXG4gICAgICBkZWZhdWx0Q2hlY2tlZCxcbiAgICAgIGlkLFxuICAgICAgaW5wdXRSZWYsXG4gICAgICBsYWJlbCxcbiAgICAgIG1vZGVsLFxuICAgICAgbmFtZSxcbiAgICAgIG9uQ2hlY2tlZENoYW5nZSxcbiAgICAgIHN0eWxlLFxuICAgICAgdGVzdElELFxuICAgICAgLi4ucmVzdFByb3BzXG4gICAgfSA9IHVzZUlucHV0UmVzdFByb3BzXG4gICAgY29uc3QgaXNDaGVja2VkID0gdGhpcy5jYWxjdWxhdGVDaGVja2VkKClcbiAgICBjb25zdCBhY3R1YWxMYWJlbCA9IHR5cGVvZiBsYWJlbCA9PSBcInVuZGVmaW5lZFwiID8gd3JhcHBlck9wdHMubGFiZWwgOiBsYWJlbFxuICAgIGNvbnN0IGFjdHVhbFN0eWxlID0gdXNlTWVtbygoKSA9PiBPYmplY3QuYXNzaWduKHtmbGV4RGlyZWN0aW9uOiBcInJvd1wiLCBhbGlnbkl0ZW1zOiBcImNlbnRlclwifSwgc3R5bGUpLCBbc3R5bGVdKVxuICAgIGNvbnN0IGFjdHVhbERhdGFTZXQgPSB1c2VNZW1vKCgpID0+IE9iamVjdC5hc3NpZ24oe2NoZWNrZWQ6IGlzQ2hlY2tlZH0sIGRhdGFTZXQpLCBbZGF0YVNldCwgaXNDaGVja2VkXSlcblxuICAgIHJldHVybiAoXG4gICAgICA8Vmlld1xuICAgICAgICBkYXRhU2V0PXt0aGlzLmNhY2hlKFwidmlld0NvbnRhaW5lckRhdGFTZXRcIiwge2NvbXBvbmVudDogXCJhcGktbWFrZXIvdXRpbHMvY2hlY2tib3hcIn0pfVxuICAgICAgICBzdHlsZT17YWN0dWFsU3R5bGV9XG4gICAgICA+XG4gICAgICAgIDxDaGVja0JveFxuICAgICAgICAgIHsuLi5yZXN0UHJvcHN9XG4gICAgICAgICAgZGF0YVNldD17YWN0dWFsRGF0YVNldH1cbiAgICAgICAgICBvblZhbHVlQ2hhbmdlPXt0aGlzLnR0Lm9uVmFsdWVDaGFuZ2V9XG4gICAgICAgICAgcmVmPXtpbnB1dFByb3BzLnJlZn1cbiAgICAgICAgICB0ZXN0SUQ9e3Rlc3RJRH1cbiAgICAgICAgICB2YWx1ZT17aXNDaGVja2VkfVxuICAgICAgICAvPlxuICAgICAgICB7YWN0dWFsTGFiZWwgJiZcbiAgICAgICAgICA8UHJlc3NhYmxlIG9uUHJlc3M9e3RoaXMudHQub25MYWJlbFByZXNzZWR9PlxuICAgICAgICAgICAgPFRleHQgc3R5bGU9e3RoaXMuY2FjaGUoXCJ0ZXh0U3R5bGVcIiwge21hcmdpbkxlZnQ6IDN9KX0+XG4gICAgICAgICAgICAgIHthY3R1YWxMYWJlbH1cbiAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICA8L1ByZXNzYWJsZT5cbiAgICAgICAgfVxuICAgICAgPC9WaWV3PlxuICAgIClcbiAgfVxuXG4gIGRlZmF1bHRDaGVja2VkKCkge1xuICAgIGlmIChcImRlZmF1bHRDaGVja2VkXCIgaW4gdGhpcy5wcm9wcykge1xuICAgICAgcmV0dXJuIEJvb2xlYW4odGhpcy5wcm9wcy5kZWZhdWx0Q2hlY2tlZClcbiAgICB9IGVsc2UgaWYgKHRoaXMucHJvcHMuYXR0cmlidXRlICYmIHRoaXMucHJvcHMubW9kZWwpIHtcbiAgICAgIGlmICghdGhpcy5wcm9wcy5tb2RlbFt0aGlzLnByb3BzLmF0dHJpYnV0ZV0pIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBObyBzdWNoIGF0dHJpYnV0ZTogJHt0aGlzLnByb3BzLmF0dHJpYnV0ZX1gKVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gQm9vbGVhbih0aGlzLnByb3BzLm1vZGVsW3RoaXMucHJvcHMuYXR0cmlidXRlXSgpKVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9XG4gIH1cblxuICBvbkxhYmVsUHJlc3NlZCA9ICgpID0+IHtcbiAgICBjb25zdCBuZXdDaGVja2VkID0gIXRoaXMuY2FsY3VsYXRlQ2hlY2tlZCgpXG5cbiAgICB0aGlzLnNldENoZWNrZWQobmV3Q2hlY2tlZClcbiAgfVxuXG4gIG9uVmFsdWVDaGFuZ2UgPSAobmV3Q2hlY2tlZCkgPT4ge1xuICAgIHRoaXMuc2V0Q2hlY2tlZChuZXdDaGVja2VkKVxuICB9XG5cbiAgc2V0Q2hlY2tlZChuZXdDaGVja2VkKSB7XG4gICAgY29uc3Qge2Zvcm0sIGlucHV0UHJvcHN9ID0gdGhpcy50dFxuXG4gICAgaWYgKGZvcm0gJiYgaW5wdXRQcm9wcy5uYW1lKSB7XG4gICAgICBmb3JtLnNldFZhbHVlKGlucHV0UHJvcHMubmFtZSwgbmV3Q2hlY2tlZClcbiAgICB9XG5cbiAgICBpZiAodGhpcy5wcm9wcy5vbkNoZWNrZWRDaGFuZ2UpIHtcbiAgICAgIHRoaXMucC5vbkNoZWNrZWRDaGFuZ2UobmV3Q2hlY2tlZClcbiAgICB9XG5cbiAgICBpZiAoIShcImNoZWNrZWRcIiBpbiB0aGlzLnByb3BzKSkge1xuICAgICAgdGhpcy5zLmNoZWNrZWQgPSBuZXdDaGVja2VkXG4gICAgfVxuICB9XG59KSlcbiJdfQ==
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kaspernj/api-maker",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "1.0.
|
|
4
|
+
"version": "1.0.2171",
|
|
5
5
|
"description": "My new module",
|
|
6
6
|
"files": [
|
|
7
7
|
"build/**"
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
"open:ios": "xed example/ios",
|
|
19
19
|
"open:android": "open -a \"Android Studio\" example/android",
|
|
20
20
|
"lint:eslint": "eslint --max-warnings 0 --ext .js,.jsx",
|
|
21
|
-
"release:patch": "
|
|
21
|
+
"release:patch": "release-patch",
|
|
22
22
|
"release:patch-master": "node scripts/release-patch.js --require-master",
|
|
23
23
|
"typecheck": "tsc --noEmit",
|
|
24
24
|
"typecheck:file": "sh -c 'file=\"${npm_config_file:-${FILE:-}}\"; if [ -z \"$file\" ] && [ \"${0#--file=}\" != \"$0\" ]; then file=\"${0#--file=}\"; fi; if [ -z \"$file\" ] && [ \"${1#--file=}\" != \"$1\" ]; then file=\"${1#--file=}\"; fi; file=\"${file#npm-api-maker/}\"; file=\"${file#./}\"; if [ -z \"$file\" ]; then echo \"Missing --file=src/path/to/file.js\"; exit 2; fi; tmp=$(mktemp); tsc --noEmit -p tsconfig.json --pretty false >\"$tmp\" 2>&1; if rg --fixed-strings \"$file\" \"$tmp\" >/dev/null; then rg --fixed-strings \"$file\" \"$tmp\"; rm -f \"$tmp\"; exit 1; else rm -f \"$tmp\"; exit 0; fi'",
|
|
@@ -96,6 +96,7 @@
|
|
|
96
96
|
"react-dom": "19.0.0",
|
|
97
97
|
"react-native": "0.79.6",
|
|
98
98
|
"react-native-vector-icons": "^10.3.0",
|
|
99
|
+
"release-patch": "^1.0.0",
|
|
99
100
|
"typescript": "~5.8.3",
|
|
100
101
|
"velocious": "^1.0.343"
|
|
101
102
|
},
|