@ironcode/vas-lib 0.0.39 → 0.0.41

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.
Files changed (42) hide show
  1. package/cjs/lib/entity/vas-file.dto.d.ts +2 -1
  2. package/cjs/lib/entity/vas-file.dto.d.ts.map +1 -1
  3. package/cjs/lib/entity/vas-file.dto.js.map +1 -1
  4. package/cjs/lib/entity/vas-file.model.d.ts +3 -3
  5. package/cjs/lib/entity/vas-file.model.d.ts.map +1 -1
  6. package/cjs/lib/entity/vas-file.model.js +2 -2
  7. package/cjs/lib/entity/vas-file.model.js.map +1 -1
  8. package/cjs/lib/entity/vas-form.dto.d.ts +1 -0
  9. package/cjs/lib/entity/vas-form.dto.d.ts.map +1 -1
  10. package/cjs/lib/entity/vas-form.dto.js.map +1 -1
  11. package/cjs/lib/entity/vas-form.model.d.ts +2 -21
  12. package/cjs/lib/entity/vas-form.model.d.ts.map +1 -1
  13. package/cjs/lib/entity/vas-form.model.js +5 -23
  14. package/cjs/lib/entity/vas-form.model.js.map +1 -1
  15. package/cjs/lib/entity/vas-job.model.d.ts +11 -1
  16. package/cjs/lib/entity/vas-job.model.d.ts.map +1 -1
  17. package/cjs/lib/entity/vas-job.model.js +48 -1
  18. package/cjs/lib/entity/vas-job.model.js.map +1 -1
  19. package/cjs/lib/entity/vas-job.model.spec-data.d.ts.map +1 -1
  20. package/cjs/lib/entity/vas-job.model.spec-data.js +1 -0
  21. package/cjs/lib/entity/vas-job.model.spec-data.js.map +1 -1
  22. package/cjs/lib/utils/is-array-string.d.ts +2 -0
  23. package/cjs/lib/utils/is-array-string.d.ts.map +1 -0
  24. package/cjs/lib/utils/is-array-string.js +8 -0
  25. package/cjs/lib/utils/is-array-string.js.map +1 -0
  26. package/esm2020/lib/entity/vas-file.dto.mjs +1 -1
  27. package/esm2020/lib/entity/vas-file.model.mjs +3 -3
  28. package/esm2020/lib/entity/vas-form.dto.mjs +1 -1
  29. package/esm2020/lib/entity/vas-form.model.mjs +6 -24
  30. package/esm2020/lib/entity/vas-job.model.mjs +49 -2
  31. package/esm2020/lib/utils/is-array-string.mjs +4 -0
  32. package/fesm2015/ironcode-vas-lib.mjs +56 -26
  33. package/fesm2015/ironcode-vas-lib.mjs.map +1 -1
  34. package/fesm2020/ironcode-vas-lib.mjs +56 -26
  35. package/fesm2020/ironcode-vas-lib.mjs.map +1 -1
  36. package/lib/entity/vas-file.dto.d.ts +2 -1
  37. package/lib/entity/vas-file.model.d.ts +3 -3
  38. package/lib/entity/vas-form.dto.d.ts +1 -0
  39. package/lib/entity/vas-form.model.d.ts +2 -21
  40. package/lib/entity/vas-job.model.d.ts +11 -1
  41. package/lib/utils/is-array-string.d.ts +1 -0
  42. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"vas-job.model.spec-data.js","sourceRoot":"","sources":["../../../../../projects/vas-lib/src/lib/entity/vas-job.model.spec-data.ts"],"names":[],"mappings":";;;AAEa,QAAA,qBAAqB,GAAG;IACnC,EAAE,EAAE,MAAM;IACV,OAAO,EAAE,EAAE;IACX,SAAS,EAAE,EAAE;IACb,QAAQ,EAAE,EAAE;IACZ,UAAU,EAAE,EAAE;IACd,aAAa,EAAE,EAAE;IACjB,cAAc,EAAE,EAAE;IAClB,OAAO,EAAE,EAAE;IACX,WAAW,EAAE,EAAE;IACf,OAAO,EAAE,EAAE;IACX,KAAK,EAAE,EAAE;IACT,WAAW,EAAE,EAAE;IACf,iBAAiB,EAAE,EAAE;IACrB,SAAS,EAAE,EAAE;IACb,YAAY,EAAE,EAAE;IAChB,MAAM,EAAE,EAAE;IACV,kBAAkB,EAAE,KAAK;IACzB,MAAM,EAAE;QACN;YACE,EAAE,EAAE,OAAO;YACX,OAAO,EAAE,EAAE;YACX,SAAS,EAAE,EAAE;YACb,QAAQ,EAAE,EAAE;YACZ,UAAU,EAAE,EAAE;YACd,aAAa,EAAE,EAAE;YACjB,cAAc,EAAE,EAAE;YAClB,OAAO,EAAE,EAAE;YACX,WAAW,EAAE,EAAE;YACf,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,SAAS;YAChB,WAAW,EAAE,EAAE;YACf,QAAQ,EAAE,CAAC;YACX,gBAAgB,EAAE,IAAI;YACtB,KAAK,EAAE,EAAE;YACT,iBAAiB,EAAE,EAAE;YACrB,eAAe,EAAE,EAAE;YACnB,QAAQ,EAAE;gBACR;oBACE,EAAE,EAAE,SAAS;oBACb,OAAO,EAAE,EAAE;oBACX,SAAS,EAAE,EAAE;oBACb,QAAQ,EAAE,EAAE;oBACZ,UAAU,EAAE,EAAE;oBACd,aAAa,EAAE,EAAE;oBACjB,cAAc,EAAE,EAAE;oBAClB,OAAO,EAAE,EAAE;oBACX,WAAW,EAAE,EAAE;oBACf,WAAW,EAAE,MAAM;oBACnB,KAAK,EAAE,EAAE;oBACT,UAAU,EAAE,EAAE;oBACd,IAAI,EAAE,YAAY;oBAClB,KAAK,EAAE,EAAE;oBACT,QAAQ,EAAE,KAAK;oBACf,QAAQ,EAAE,CAAC;oBACX,WAAW,EAAE,EAAE;oBACf,gBAAgB,EAAE,EAAE;oBACpB,YAAY,EAAE,EAAE;oBAChB,MAAM,EAAE,EAAE;iBACX;aACF;YACD,WAAW,EAAE,CAAC;SACf;KACF;CACY,CAAC","sourcesContent":["import { VasFormDto } from './vas-form.dto';\n\nexport const formDto1Group1Control = {\n id: 'form',\n created: '',\n createdBy: '',\n modified: '',\n modifiedBy: '',\n serverCreated: '',\n serverModified: '',\n account: '',\n accessGroup: '',\n jobType: '',\n title: '',\n description: '',\n dynamicDescriptor: '',\n indexName: '',\n pipelineName: '',\n config: '',\n geoLocationEnabled: false,\n groups: [\n {\n id: 'group',\n created: '',\n createdBy: '',\n modified: '',\n modifiedBy: '',\n serverCreated: '',\n serverModified: '',\n account: '',\n accessGroup: '',\n name: 'groupa',\n title: 'Group A',\n description: '',\n sequence: 0,\n includeInSummary: true,\n forms: [],\n visibilityControl: '',\n visibleIfEquals: '',\n controls: [\n {\n id: 'control',\n created: '',\n createdBy: '',\n modified: '',\n modifiedBy: '',\n serverCreated: '',\n serverModified: '',\n account: '',\n accessGroup: '',\n controlType: 'text',\n group: '',\n validators: [],\n name: 'fields.foo',\n title: '',\n linkable: false,\n sequence: 0,\n description: '',\n descriptionImage: '',\n defaultValue: '',\n config: '',\n }\n ],\n scoreWeight: 1,\n }\n ],\n} as VasFormDto;\n"]}
1
+ {"version":3,"file":"vas-job.model.spec-data.js","sourceRoot":"","sources":["../../../../../projects/vas-lib/src/lib/entity/vas-job.model.spec-data.ts"],"names":[],"mappings":";;;AAEa,QAAA,qBAAqB,GAAG;IACnC,EAAE,EAAE,MAAM;IACV,OAAO,EAAE,EAAE;IACX,SAAS,EAAE,EAAE;IACb,QAAQ,EAAE,EAAE;IACZ,UAAU,EAAE,EAAE;IACd,aAAa,EAAE,EAAE;IACjB,cAAc,EAAE,EAAE;IAClB,OAAO,EAAE,EAAE;IACX,WAAW,EAAE,EAAE;IACf,OAAO,EAAE,EAAE;IACX,KAAK,EAAE,EAAE;IACT,WAAW,EAAE,EAAE;IACf,iBAAiB,EAAE,EAAE;IACrB,SAAS,EAAE,EAAE;IACb,YAAY,EAAE,EAAE;IAChB,MAAM,EAAE,EAAE;IACV,kBAAkB,EAAE,KAAK;IACzB,YAAY,EAAE,IAAI;IAClB,MAAM,EAAE;QACN;YACE,EAAE,EAAE,OAAO;YACX,OAAO,EAAE,EAAE;YACX,SAAS,EAAE,EAAE;YACb,QAAQ,EAAE,EAAE;YACZ,UAAU,EAAE,EAAE;YACd,aAAa,EAAE,EAAE;YACjB,cAAc,EAAE,EAAE;YAClB,OAAO,EAAE,EAAE;YACX,WAAW,EAAE,EAAE;YACf,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,SAAS;YAChB,WAAW,EAAE,EAAE;YACf,QAAQ,EAAE,CAAC;YACX,gBAAgB,EAAE,IAAI;YACtB,KAAK,EAAE,EAAE;YACT,iBAAiB,EAAE,EAAE;YACrB,eAAe,EAAE,EAAE;YACnB,QAAQ,EAAE;gBACR;oBACE,EAAE,EAAE,SAAS;oBACb,OAAO,EAAE,EAAE;oBACX,SAAS,EAAE,EAAE;oBACb,QAAQ,EAAE,EAAE;oBACZ,UAAU,EAAE,EAAE;oBACd,aAAa,EAAE,EAAE;oBACjB,cAAc,EAAE,EAAE;oBAClB,OAAO,EAAE,EAAE;oBACX,WAAW,EAAE,EAAE;oBACf,WAAW,EAAE,MAAM;oBACnB,KAAK,EAAE,EAAE;oBACT,UAAU,EAAE,EAAE;oBACd,IAAI,EAAE,YAAY;oBAClB,KAAK,EAAE,EAAE;oBACT,QAAQ,EAAE,KAAK;oBACf,QAAQ,EAAE,CAAC;oBACX,WAAW,EAAE,EAAE;oBACf,gBAAgB,EAAE,EAAE;oBACpB,YAAY,EAAE,EAAE;oBAChB,MAAM,EAAE,EAAE;iBACX;aACF;YACD,WAAW,EAAE,CAAC;SACf;KACF;CACY,CAAC","sourcesContent":["import { VasFormDto } from './vas-form.dto';\n\nexport const formDto1Group1Control = {\n id: 'form',\n created: '',\n createdBy: '',\n modified: '',\n modifiedBy: '',\n serverCreated: '',\n serverModified: '',\n account: '',\n accessGroup: '',\n jobType: '',\n title: '',\n description: '',\n dynamicDescriptor: '',\n indexName: '',\n pipelineName: '',\n config: '',\n geoLocationEnabled: false,\n filesEnabled: true,\n groups: [\n {\n id: 'group',\n created: '',\n createdBy: '',\n modified: '',\n modifiedBy: '',\n serverCreated: '',\n serverModified: '',\n account: '',\n accessGroup: '',\n name: 'groupa',\n title: 'Group A',\n description: '',\n sequence: 0,\n includeInSummary: true,\n forms: [],\n visibilityControl: '',\n visibleIfEquals: '',\n controls: [\n {\n id: 'control',\n created: '',\n createdBy: '',\n modified: '',\n modifiedBy: '',\n serverCreated: '',\n serverModified: '',\n account: '',\n accessGroup: '',\n controlType: 'text',\n group: '',\n validators: [],\n name: 'fields.foo',\n title: '',\n linkable: false,\n sequence: 0,\n description: '',\n descriptionImage: '',\n defaultValue: '',\n config: '',\n }\n ],\n scoreWeight: 1,\n }\n ],\n} as VasFormDto;\n"]}
@@ -0,0 +1,2 @@
1
+ export declare const isArrayString: (value: any) => value is string[];
2
+ //# sourceMappingURL=is-array-string.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"is-array-string.d.ts","sourceRoot":"","sources":["../../../../../projects/vas-lib/src/lib/utils/is-array-string.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,aAAa,UAAW,GAAG,sBAEvC,CAAC"}
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isArrayString = void 0;
4
+ const isArrayString = (value) => {
5
+ return Array.isArray(value) && value.every(i => typeof i === 'string');
6
+ };
7
+ exports.isArrayString = isArrayString;
8
+ //# sourceMappingURL=is-array-string.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"is-array-string.js","sourceRoot":"","sources":["../../../../../projects/vas-lib/src/lib/utils/is-array-string.ts"],"names":[],"mappings":";;;AAAO,MAAM,aAAa,GAAG,CAAC,KAAU,EAA0B,EAAE;IAClE,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC;AACzE,CAAC,CAAC;AAFW,QAAA,aAAa,iBAExB","sourcesContent":["export const isArrayString = (value: any): value is Array<string> => {\n return Array.isArray(value) && value.every(i => typeof i === 'string');\n};\n"]}
@@ -6,4 +6,4 @@ export function isFileDto(object) {
6
6
  && 'status' in object
7
7
  && 'controlPath' in object;
8
8
  }
9
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFzLWZpbGUuZHRvLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFzLWxpYi9zcmMvbGliL2VudGl0eS92YXMtZmlsZS5kdG8udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBNkJBLE1BQU0sVUFBVSxTQUFTLENBQUMsTUFBVztJQUNuQyxPQUFPLE1BQU0sWUFBWSxNQUFNO1dBQzFCLEtBQUssSUFBSSxNQUFNO1dBQ2YsS0FBSyxJQUFJLE1BQU07V0FDZixTQUFTLElBQUksTUFBTTtXQUNuQixRQUFRLElBQUksTUFBTTtXQUNsQixhQUFhLElBQUksTUFBTSxDQUFBO0FBQzlCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBWYXNKb2JEYXRhRHRvIH0gZnJvbSAnLi92YXMtam9iLWRhdGEuZHRvJztcblxuZXhwb3J0IGludGVyZmFjZSBWYXNGaWxlRHRvQ29uZmlnRHRvIHtcbiAgZGlzcGxheUFzPzogc3RyaW5nO1xuICBlbWJlZExpbms/OiBib29sZWFuO1xuICBncm91cD86IHN0cmluZztcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIGRpc3BsYXllZE5hbWU/OiBzdHJpbmc7XG4gIHJvdGF0aW9uPzogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFZhc0ZpbGVEdG8gZXh0ZW5kcyBWYXNKb2JEYXRhRHRvIHtcbiAgbmFtZTogc3RyaW5nO1xuICBmaWxlU2l6ZTogbnVtYmVyO1xuICBtaW1lVHlwZTogc3RyaW5nO1xuICBzZXF1ZW5jZTogbnVtYmVyO1xuICBjb25maWc6IHN0cmluZztcbiAgLy8gcHJlLXNpZ25lZCB1cmxcbiAgdXJsOiBzdHJpbmc7XG4gIC8vIHBhdGggdG8gZmlsZSBvbiBkZXZpY2VcbiAgdXJpOiBzdHJpbmc7XG4gIC8vIG1lc3NhZ2VzIGZyb20gc3luYyBwcm9jZXNzXG4gIG1lc3NhZ2U6IHN0cmluZztcbiAgLy8gdXBsb2FkIHN0YXR1c1xuICBzdGF0dXM6IHN0cmluZztcbiAgLy8gcGF0aCB0byBjb250cm9sIGluIGZvcm07IHRoaXMgd2lsbCBiZSBlbXB0eSBpZiB0aGUgZmlsZSBpcyBhZGRlZCB0byB0aGVcbiAgLy8gZmlsZXMgYXJyYXkgb2YgdGhlIGpvYiBkb2N1bWVudFxuICBjb250cm9sUGF0aDogc3RyaW5nXG59XG5leHBvcnQgZnVuY3Rpb24gaXNGaWxlRHRvKG9iamVjdDogYW55KTogb2JqZWN0IGlzIFZhc0ZpbGVEdG8ge1xuICByZXR1cm4gb2JqZWN0IGluc3RhbmNlb2YgT2JqZWN0XG4gICAgJiYgJ3VybCcgaW4gb2JqZWN0XG4gICAgJiYgJ3VyaScgaW4gb2JqZWN0XG4gICAgJiYgJ21lc3NhZ2UnIGluIG9iamVjdFxuICAgICYmICdzdGF0dXMnIGluIG9iamVjdFxuICAgICYmICdjb250cm9sUGF0aCcgaW4gb2JqZWN0XG59XG4iXX0=
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFzLWZpbGUuZHRvLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFzLWxpYi9zcmMvbGliL2VudGl0eS92YXMtZmlsZS5kdG8udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBK0JBLE1BQU0sVUFBVSxTQUFTLENBQUMsTUFBVztJQUNuQyxPQUFPLE1BQU0sWUFBWSxNQUFNO1dBQzFCLEtBQUssSUFBSSxNQUFNO1dBQ2YsS0FBSyxJQUFJLE1BQU07V0FDZixTQUFTLElBQUksTUFBTTtXQUNuQixRQUFRLElBQUksTUFBTTtXQUNsQixhQUFhLElBQUksTUFBTSxDQUFBO0FBQzlCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBWYXNKb2JEYXRhRHRvIH0gZnJvbSAnLi92YXMtam9iLWRhdGEuZHRvJztcblxuZXhwb3J0IGludGVyZmFjZSBWYXNGaWxlRHRvQ29uZmlnRHRvIHtcbiAgZGlzcGxheUFzPzogc3RyaW5nO1xuICBlbWJlZExpbms/OiBib29sZWFuO1xuICBncm91cD86IHN0cmluZztcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIGRpc3BsYXllZE5hbWU/OiBzdHJpbmc7XG4gIHJvdGF0aW9uPzogbnVtYmVyO1xufVxuXG5leHBvcnQgZGVjbGFyZSB0eXBlIFZhc0ZpbGVTdGF0dXMgPSAnTkVXJyB8J0NPTVBMRVRFJyB8J0FVVEhfRVJST1InIHwnVVBMT0FEX0VSUk9SJyB8J1VQREFURV9GSVJFQkFTRV9FUlJPUic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVmFzRmlsZUR0byBleHRlbmRzIFZhc0pvYkRhdGFEdG8ge1xuICBuYW1lOiBzdHJpbmc7XG4gIGZpbGVTaXplOiBudW1iZXI7XG4gIG1pbWVUeXBlOiBzdHJpbmc7XG4gIHNlcXVlbmNlOiBudW1iZXI7XG4gIGNvbmZpZzogc3RyaW5nO1xuICAvLyBwcmUtc2lnbmVkIHVybFxuICB1cmw6IHN0cmluZztcbiAgLy8gcGF0aCB0byBmaWxlIG9uIGRldmljZVxuICB1cmk6IHN0cmluZztcbiAgLy8gbWVzc2FnZXMgZnJvbSBzeW5jIHByb2Nlc3NcbiAgbWVzc2FnZTogc3RyaW5nO1xuICAvLyB1cGxvYWQgc3RhdHVzXG4gIHN0YXR1czogVmFzRmlsZVN0YXR1cztcbiAgLy8gcGF0aCB0byBjb250cm9sIGluIGZvcm07IHRoaXMgd2lsbCBiZSBlbXB0eSBpZiB0aGUgZmlsZSBpcyBhZGRlZCB0byB0aGVcbiAgLy8gZmlsZXMgYXJyYXkgb2YgdGhlIGpvYiBkb2N1bWVudFxuICBjb250cm9sUGF0aDogc3RyaW5nXG59XG5leHBvcnQgZnVuY3Rpb24gaXNGaWxlRHRvKG9iamVjdDogYW55KTogb2JqZWN0IGlzIFZhc0ZpbGVEdG8ge1xuICByZXR1cm4gb2JqZWN0IGluc3RhbmNlb2YgT2JqZWN0XG4gICAgJiYgJ3VybCcgaW4gb2JqZWN0XG4gICAgJiYgJ3VyaScgaW4gb2JqZWN0XG4gICAgJiYgJ21lc3NhZ2UnIGluIG9iamVjdFxuICAgICYmICdzdGF0dXMnIGluIG9iamVjdFxuICAgICYmICdjb250cm9sUGF0aCcgaW4gb2JqZWN0XG59XG4iXX0=
@@ -34,10 +34,10 @@ export class VasFileModel extends VasJobDataModel {
34
34
  description: '',
35
35
  displayedName: '',
36
36
  rotation: 0
37
- }, '', '', '', '', '');
37
+ }, '', '', '', 'NEW', '');
38
38
  }
39
39
  static fromDto(fileDto) {
40
- return new VasFileModel(fileDto.id || UUID.UUID(), fileDto.created || '', fileDto.serverCreated || '', fileDto.createdBy || '', fileDto.modified || '', fileDto.serverModified || '', fileDto.modifiedBy || '', fileDto.account || '', fileDto.job || '', fileDto.name || '', fileDto.fileSize || 0, fileDto.mimeType || '', fileDto.sequence || 0, VasFileModel.parseConfig(fileDto.config), fileDto.url || '', fileDto.controlPath || '', fileDto.message || '', fileDto.status || '', fileDto.uri || '');
40
+ return new VasFileModel(fileDto.id || UUID.UUID(), fileDto.created || '', fileDto.serverCreated || '', fileDto.createdBy || '', fileDto.modified || '', fileDto.serverModified || '', fileDto.modifiedBy || '', fileDto.account || '', fileDto.job || '', fileDto.name || '', fileDto.fileSize || 0, fileDto.mimeType || '', fileDto.sequence || 0, VasFileModel.parseConfig(fileDto.config), fileDto.url || '', fileDto.controlPath || '', fileDto.message || '', fileDto.status || 'NEW', fileDto.uri || '');
41
41
  }
42
42
  static parseConfig(config = '') {
43
43
  try {
@@ -119,4 +119,4 @@ export class VasFileModel extends VasJobDataModel {
119
119
  return value;
120
120
  }
121
121
  }
122
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFzLWZpbGUubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YXMtbGliL3NyYy9saWIvZW50aXR5L3Zhcy1maWxlLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHckMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBUXZEOztHQUVHO0FBQ0gsTUFBTSxPQUFPLFlBQWEsU0FBUSxlQUFlO0lBQy9DLFlBQ2tCLEVBQVUsRUFDVixPQUFlLEVBQ2YsYUFBcUIsRUFDckIsU0FBaUIsRUFDakIsUUFBZ0IsRUFDaEIsY0FBc0IsRUFDdEIsVUFBa0IsRUFDbEIsT0FBZSxFQUNmLEdBQVcsRUFDcEIsSUFBWSxFQUNaLFFBQWdCLEVBQ2hCLFFBQWdCLEVBQ2hCLFFBQWdCLEVBQ2hCLE1BQTJCLEVBQzNCLEdBQVcsRUFDWCxXQUFtQixFQUNuQixPQUFlLEVBQ2YsTUFBYyxFQUNkLEdBQVc7UUFFbEIsS0FBSyxDQUNILEVBQUUsRUFDRixPQUFPLEVBQ1AsYUFBYSxFQUNiLFNBQVMsRUFDVCxRQUFRLEVBQ1IsY0FBYyxFQUNkLFVBQVUsRUFDVixPQUFPLEVBQ1AsR0FBRyxDQUNKLENBQUM7UUE5QmMsT0FBRSxHQUFGLEVBQUUsQ0FBUTtRQUNWLFlBQU8sR0FBUCxPQUFPLENBQVE7UUFDZixrQkFBYSxHQUFiLGFBQWEsQ0FBUTtRQUNyQixjQUFTLEdBQVQsU0FBUyxDQUFRO1FBQ2pCLGFBQVEsR0FBUixRQUFRLENBQVE7UUFDaEIsbUJBQWMsR0FBZCxjQUFjLENBQVE7UUFDdEIsZUFBVSxHQUFWLFVBQVUsQ0FBUTtRQUNsQixZQUFPLEdBQVAsT0FBTyxDQUFRO1FBQ2YsUUFBRyxHQUFILEdBQUcsQ0FBUTtRQUNwQixTQUFJLEdBQUosSUFBSSxDQUFRO1FBQ1osYUFBUSxHQUFSLFFBQVEsQ0FBUTtRQUNo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QyxRQUFRLEVBQUU7WUFDbkIsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLElBQUksR0FBRztZQUN0QixRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsSUFBSSxHQUFHO1lBQzlCLFFBQVEsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7WUFDeEMsTUFBTSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztTQUNwQyxDQUFDO1FBRUYsSUFBSSxPQUFPLENBQUMsZUFBZSxFQUFFO1lBQzNCLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDO1NBQzlCO1FBRUQsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVTLFVBQVUsQ0FBQyxLQUFhO1FBQ2hDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQzNCLE9BQU8sQ0FBQyxDQUFDO1NBQ1Y7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFVVSUQgfSBmcm9tICdhbmd1bGFyMi11dWlkJztcbmltcG9ydCB7IFZhc0ZpZWxkRHRvIH0gZnJvbSAnLi92YXMtZmllbGQuZHRvJztcbmltcG9ydCB7IFZhc0ZpbGVEdG8sIFZhc0ZpbGVEdG9Db25maWdEdG8gfSBmcm9tICcuL3Zhcy1maWxlLmR0byc7XG5pbXBvcnQgeyBWYXNKb2JEYXRhTW9kZWwgfSBmcm9tICcuL3Zhcy1qb2ItZGF0YS5tb2RlbCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVmFzRmlsZU1vZGVsVG9BcGlEdG9PcHRpb25zIHtcbiAgLy8gc2V0IHRoaXMgdG8gdHJ1ZSBpZiB0aGUgY29udGVudCBoYXMgYWxyZWFkeSBiZWVuIHVwbG9hZGVkIHRvIHRoZSBiYWNrZW5kXG4gIC8vIHN0b3JhZ2VcbiAgY29udGVudFVwbG9hZGVkOiBib29sZWFuO1xufVxuXG4vKipcbiAqIFZhc0ZpbGVEdG9cbiAqL1xuZXhwb3J0IGNsYXNzIFZhc0ZpbGVNb2RlbCBleHRlbmRzIFZhc0pvYkRhdGFNb2RlbCB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBvdmVycmlkZSBpZDogc3RyaW5nLFxuICAgIHB1YmxpYyBvdmVycmlkZSBjcmVhdGVkOiBzdHJpbmcsXG4gICAgcHVibGljIG92ZXJyaWRlIHNlcnZlckNyZWF0ZWQ6IHN0cmluZyxcbiAgICBwdWJsaWMgb3ZlcnJpZGUgY3JlYXRlZEJ5OiBzdHJpbmcsXG4gICAgcHVibGljIG92ZXJyaWRlIG1vZGlmaWVkOiBzdHJpbmcsXG4gICAgcHVibGljIG92ZXJyaWRlIHNlcnZlck1vZGlmaWVkOiBzdHJpbmcsXG4gICAgcHVibGljIG92ZXJyaWRlIG1vZGlmaWVkQnk6IHN0cmluZyxcbiAgICBwdWJsaWMgb3ZlcnJpZGUgYWNjb3VudDogc3RyaW5nLFxuICAgIHB1YmxpYyBvdmVycmlkZSBqb2I6IHN0cmluZyxcbiAgICBwdWJsaWMgbmFtZTogc3RyaW5nLFxuICAgIHB1YmxpYyBmaWxlU2l6ZTogbnVtYmVyLFxuICAgIHB1YmxpYyBtaW1lVHlwZTogc3RyaW5nLFxuICAgIHB1YmxpYyBzZXF1ZW5jZTogbnVtYmVyLFxuICAgIHB1YmxpYyBjb25maWc6IFZhc0ZpbGVEdG9Db25maWdEdG8sXG4gICAgcHVibGljIHVybDogc3RyaW5nLFxuICAgIHB1YmxpYyBjb250cm9sUGF0aDogc3RyaW5nLFxuICAgIHB1YmxpYyBtZXNzYWdlOiBzdHJpbmcsXG4gICAgcHVibGljIHN0YXR1czogc3RyaW5nLFxuICAgIHB1YmxpYyB1cmk6IHN0cmluZ1xuICApIHtcbiAgICBzdXBlcihcbiAgICAgIGlkLFxuICAgICAgY3JlYXRlZCxcbiAgICAgIHNlcnZlckNyZWF0ZWQsXG4gICAgICBjcmVhdGVkQnksXG4gICAgICBtb2RpZmllZCxcbiAgICAgIHNlcnZlck1vZGlmaWVkLFxuICAgICAgbW9kaWZpZWRCeSxcbiAgICAgIGFjY291bnQsXG4gICAgICBqb2JcbiAgICApO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBlbXB0eSgpOiBWYXNGaWxlTW9kZWwge1xuICAgIHJldHVybiBuZXcgVmFzRmlsZU1vZGVsKFxuICAgICAgJycsXG4gICAgICAnJyxcbiAgICAgICcnLFxuICAgICAgJycsXG4gICAgICAnJyxcbiAgICAgICcnLFxuICAgICAgJycsXG4gICAgICAnJyxcbiAgICAgICcnLFxuICAgICAgJycsXG4gICAgICAwLFxuICAgICAgJycsXG4gICAgICAwLFxuICAgICAge1xuICAgICAgICBkaXNwbGF5QXM6ICdncmlkJyxcbiAgICAgICAgZW1iZWRMaW5rOiBmYWxzZSxcbiAgICAgICAgZ3JvdXA6ICdwaG90bycsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnJyxcbiAgICAgICAgZGlzcGxheWVkTmFtZTogJycsXG4gICAgICAgIHJvdGF0aW9uOiAwXG4gICAgICB9LFxuICAgICAgJycsXG4gICAgICAnJyxcbiAgICAgICcnLFxuICAgICAgJycsXG4gICAgICAnJ1xuICAgICk7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGZyb21EdG8oZmlsZUR0bzogUGFydGlhbDxWYXNGaWxlRHRvPik6IFZhc0ZpbGVNb2RlbCB7XG4gICAgcmV0dXJuIG5ldyBWYXNGaWxlTW9kZWwoXG4gICAgICBmaWxlRHRvLmlkIHx8IFVVSUQuVVVJRCgpLFxuICAgICAgZmlsZUR0by5jcmVhdGVkIHx8ICcnLFxuICAgICAgZmlsZUR0by5zZXJ2ZXJDcmVhdGVkIHx8ICcnLFxuICAgICAgZmlsZUR0by5jcmVhdGVkQnkgfHwgJycsXG4gICAgICBmaWxlRHRvLm1vZGlmaWVkIHx8ICcnLFxuICAgICAgZmlsZUR0by5zZXJ2ZXJNb2RpZmllZCB8fCAnJyxcbiAgICAgIGZpbGVEdG8ubW9kaWZpZWRCeSB8fCAnJyxcbiAgICAgIGZpbGVEdG8uYWNjb3VudCB8fCAnJyxcbiAgICAgIGZpbGVEdG8uam9iIHx8ICcnLFxuICAgICAgZmlsZUR0by5uYW1lIHx8ICcnLFxuICAgICAgZmlsZUR0by5maWxlU2l6ZSB8fCAwLFxuICAgICAgZmlsZUR0by5taW1lVHlwZSB8fCAnJyxcbiAgICAgIGZpbGVEdG8uc2VxdWVuY2UgfHwgMCxcbiAgICAgIFZhc0ZpbGVNb2RlbC5wYXJzZUNvbmZpZyhmaWxlRHRvLmNvbmZpZyksXG4gICAgICBmaWxlRHRvLnVybCB8fCAnJyxcbiAgICAgIGZpbGVEdG8uY29udHJvbFBhdGggfHwgJycsXG4gICAgICBmaWxlRHRvLm1lc3NhZ2UgfHwgJycsXG4gICAgICBmaWxlRHRvLnN0YXR1cyB8fCAnJyxcbiAgICAgIGZpbGVEdG8udXJpIHx8ICcnLFxuICAgICk7XG4gIH1cblxuICBzdGF0aWMgcGFyc2VDb25maWcoY29uZmlnID0gJycpOiBWYXNGaWxlRHRvQ29uZmlnRHRvIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIEpTT04ucGFyc2UoY29uZmlnKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBkaXNwbGF5QXM6ICdncmlkJyxcbiAgICAgICAgZW1iZWRMaW5rOiBmYWxzZSxcbiAgICAgICAgZ3JvdXA6ICdwaG90bycsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnJyxcbiAgICAgICAgZGlzcGxheWVkTmFtZTogJycsXG4gICAgICAgIHJvdGF0aW9uOiAwXG4gICAgICB9IGFzIFZhc0ZpbGVEdG9Db25maWdEdG87XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm4ge1Zhc0ZpbGVEdG99XG4gICAqL1xuICB0b0R0bygpOiBWYXNGaWxlRHRvIHtcbiAgICByZXR1cm4ge1xuICAgICAgaWQ6IHRoaXMuaWQsXG4gICAgICBjcmVhdGVkOiB0aGlzLmNyZWF0ZWQsXG4gICAgICBzZXJ2ZXJDcmVhdGVkOiB0aGlzLnNlcnZlckNyZWF0ZWQsXG4gICAgICBjcmVhdGVkQnk6IHRoaXMuY3JlYXRlZEJ5LFxuICAgICAgbW9kaWZpZWQ6IHRoaXMubW9kaWZpZWQsXG4gICAgICBzZXJ2ZXJNb2RpZmllZDogdGhpcy5zZXJ2ZXJNb2RpZmllZCxcbiAgICAgIG1vZGlmaWVkQnk6IHRoaXMubW9kaWZpZWRCeSxcbiAgICAgIGFjY291bnQ6IHRoaXMuYWNjb3VudCxcbiAgICAgIGpvYjogdGhpcy5qb2IsXG4gICAgICBuYW1lOiB0aGlzLm5hbWUsXG4gICAgICBmaWxlU2l6ZTogdGhpcy5maWxlU2l6ZSxcbiAgICAgIG1pbWVUeXBlOiB0aGlzLm1pbWVUeXBlLFxuICAgICAgc2VxdWVuY2U6IHRoaXMuc2VxdWVuY2UsXG4gICAgICBjb25maWc6IHRoaXMuc3RyaW5naWZ5Q29uZmlnKHRoaXMuY29uZmlnKSxcbiAgICAgIHVybDogdGhpcy51cmwsXG4gICAgICBjb250cm9sUGF0aDogdGhpcy5jb250cm9sUGF0aCxcbiAgICAgIG1lc3NhZ2U6IHRoaXMubWVzc2FnZSxcbiAgICAgIHN0YXR1czogdGhpcy5zdGF0dXMsXG4gICAgICB1cmk6IHRoaXMudXJpLFxuICAgIH07XG4gIH1cblxuICBzdHJpbmdpZnlDb25maWcoY29uZmlnOiBWYXNGaWxlRHRvQ29uZmlnRHRvKTogc3RyaW5nIHtcbiAgICBpZiAoIWNvbmZpZykge1xuICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgZGlzcGxheUFzOiAnZ3JpZCcsXG4gICAgICAgIGVtYmVkTGluazogZmFsc2UsXG4gICAgICAgIGdyb3VwOiAncGhvdG8nLFxuICAgICAgICBkZXNjcmlwdGlvbjogJycsXG4gICAgICAgIGRpc3BsYXllZE5hbWU6ICcnLFxuICAgICAgICByb3RhdGlvbjogMFxuICAgICAgfSBhcyBWYXNGaWxlRHRvQ29uZmlnRHRvKTtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KGNvbmZpZyk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS53YXJuKGUpO1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgfVxuXG4gIG92ZXJyaWRlIHRvQXBpRHRvKFxuICAgIG9wdGlvbnM6IFZhc0ZpbGVNb2RlbFRvQXBpRHRvT3B0aW9ucyA9IHtjb250ZW50VXBsb2FkZWQ6IGZhbHNlfVxuICApOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuPiB7XG4gICAgY29uc3QgYXBpRHRvOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge1xuICAgICAgLi4uc3VwZXIudG9BcGlEdG8oKSxcbiAgICAgIG5hbWU6IHRoaXMubmFtZSB8fCAnficsXG4gICAgICBtaW1lVHlwZTogdGhpcy5taW1lVHlwZSB8fCAnficsXG4gICAgICBzZXF1ZW5jZTogdGhpcy5zYWZlTnVtYmVyKHRoaXMuc2VxdWVuY2UpLFxuICAgICAgY29uZmlnOiBKU09OLnN0cmluZ2lmeSh0aGlzLmNvbmZpZylcbiAgICB9O1xuXG4gICAgaWYgKG9wdGlvbnMuY29udGVudFVwbG9hZGVkKSB7XG4gICAgICBhcGlEdG9bJ29yaWdpbmFsJ10gPSB0aGlzLmlkO1xuICAgIH1cblxuICAgIHJldHVybiBhcGlEdG87XG4gIH1cblxuICBwcm90ZWN0ZWQgc2FmZU51bWJlcih2YWx1ZTogbnVtYmVyKTogbnVtYmVyIHtcbiAgICBpZiAoIU51bWJlci5pc0Zpbml0ZSh2YWx1ZSkpIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbn1cbiJdfQ==
122
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFzLWZpbGUubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YXMtbGliL3NyYy9saWIvZW50aXR5L3Zhcy1maWxlLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHckMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBUXZEOztHQUVHO0FBQ0gsTUFBTSxPQUFPLFlBQWEsU0FBUSxlQUFlO0lBQy9DLFlBQ2tCLEVBQVUsRUFDVixPQUFlLEVBQ2YsYUFBcUIsRUFDckIsU0FBaUIsRUFDakIsUUFBZ0IsRUFDaEIsY0FBc0IsRUFDdEIsVUFBa0IsRUFDbEIsT0FBZSxFQUNmLEdBQVcsRUFDcEIsSUFBWSxFQUNaLFFBQWdCLEVBQ2hCLFFBQWdCLEVBQ2hCLFFBQWdCLEVBQ2hCLE1BQTJCLEVBQzNCLEdBQVcsRUFDWCxXQUFtQixFQUNuQixPQUFlLEVBQ2YsTUFBcUIsRUFDckIsR0FBVztRQUVsQixLQUFLLENBQ0gsRUFBRSxFQUNGLE9BQU8sRUFDUCxhQUFhLEVBQ2IsU0FBUyxFQUNULFFBQVEsRUFDUixjQUFjLEVBQ2QsVUFBVSxFQUNWLE9BQU8sRUFDUCxHQUFHLENBQ0osQ0FBQztRQTlCYyxPQUFFLEdBQUYsRUFBRSxDQUFRO1FBQ1YsWUFBTyxHQUFQLE9BQU8sQ0FBUTtRQUNmLGtCQUFhLEdBQWIsYUFBYSxDQUFRO1FBQ3JCLGNBQVMsR0FBVCxTQUFTLENBQVE7UUFDakIsYUFBUSxHQUFSLFFBQVEsQ0FBUTtRQUNoQixtQkFBYyxHQUFkLGNBQWMsQ0FBUTtRQUN0QixlQUFVLEdBQVYsVUFBVSxDQUFRO1FBQ2xCLFlBQU8sR0FBUCxPQUFPLENBQVE7UUFDZixRQUFHLEdBQUgsR0FBRyxDQUFRO1FBQ3BCLFNBQUksR0FBSixJQUFJLENBQVE7UUFDWixhQUFRLEdBQVIsUUFBUSxDQUFRO1FB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Q0FBQyxRQUFRLEVBQUU7WUFDbkIsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLElBQUksR0FBRztZQUN0QixRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsSUFBSSxHQUFHO1lBQzlCLFFBQVEsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7WUFDeEMsTUFBTSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztTQUNwQyxDQUFDO1FBRUYsSUFBSSxPQUFPLENBQUMsZUFBZSxFQUFFO1lBQzNCLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDO1NBQzlCO1FBRUQsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVTLFVBQVUsQ0FBQyxLQUFhO1FBQ2hDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQzNCLE9BQU8sQ0FBQyxDQUFDO1NBQ1Y7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFVVSUQgfSBmcm9tICdhbmd1bGFyMi11dWlkJztcbmltcG9ydCB7IFZhc0ZpZWxkRHRvIH0gZnJvbSAnLi92YXMtZmllbGQuZHRvJztcbmltcG9ydCB7IFZhc0ZpbGVEdG8sIFZhc0ZpbGVEdG9Db25maWdEdG8sIFZhc0ZpbGVTdGF0dXMgfSBmcm9tICcuL3Zhcy1maWxlLmR0byc7XG5pbXBvcnQgeyBWYXNKb2JEYXRhTW9kZWwgfSBmcm9tICcuL3Zhcy1qb2ItZGF0YS5tb2RlbCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVmFzRmlsZU1vZGVsVG9BcGlEdG9PcHRpb25zIHtcbiAgLy8gc2V0IHRoaXMgdG8gdHJ1ZSBpZiB0aGUgY29udGVudCBoYXMgYWxyZWFkeSBiZWVuIHVwbG9hZGVkIHRvIHRoZSBiYWNrZW5kXG4gIC8vIHN0b3JhZ2VcbiAgY29udGVudFVwbG9hZGVkOiBib29sZWFuO1xufVxuXG4vKipcbiAqIFZhc0ZpbGVEdG9cbiAqL1xuZXhwb3J0IGNsYXNzIFZhc0ZpbGVNb2RlbCBleHRlbmRzIFZhc0pvYkRhdGFNb2RlbCB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBvdmVycmlkZSBpZDogc3RyaW5nLFxuICAgIHB1YmxpYyBvdmVycmlkZSBjcmVhdGVkOiBzdHJpbmcsXG4gICAgcHVibGljIG92ZXJyaWRlIHNlcnZlckNyZWF0ZWQ6IHN0cmluZyxcbiAgICBwdWJsaWMgb3ZlcnJpZGUgY3JlYXRlZEJ5OiBzdHJpbmcsXG4gICAgcHVibGljIG92ZXJyaWRlIG1vZGlmaWVkOiBzdHJpbmcsXG4gICAgcHVibGljIG92ZXJyaWRlIHNlcnZlck1vZGlmaWVkOiBzdHJpbmcsXG4gICAgcHVibGljIG92ZXJyaWRlIG1vZGlmaWVkQnk6IHN0cmluZyxcbiAgICBwdWJsaWMgb3ZlcnJpZGUgYWNjb3VudDogc3RyaW5nLFxuICAgIHB1YmxpYyBvdmVycmlkZSBqb2I6IHN0cmluZyxcbiAgICBwdWJsaWMgbmFtZTogc3RyaW5nLFxuICAgIHB1YmxpYyBmaWxlU2l6ZTogbnVtYmVyLFxuICAgIHB1YmxpYyBtaW1lVHlwZTogc3RyaW5nLFxuICAgIHB1YmxpYyBzZXF1ZW5jZTogbnVtYmVyLFxuICAgIHB1YmxpYyBjb25maWc6IFZhc0ZpbGVEdG9Db25maWdEdG8sXG4gICAgcHVibGljIHVybDogc3RyaW5nLFxuICAgIHB1YmxpYyBjb250cm9sUGF0aDogc3RyaW5nLFxuICAgIHB1YmxpYyBtZXNzYWdlOiBzdHJpbmcsXG4gICAgcHVibGljIHN0YXR1czogVmFzRmlsZVN0YXR1cyxcbiAgICBwdWJsaWMgdXJpOiBzdHJpbmdcbiAgKSB7XG4gICAgc3VwZXIoXG4gICAgICBpZCxcbiAgICAgIGNyZWF0ZWQsXG4gICAgICBzZXJ2ZXJDcmVhdGVkLFxuICAgICAgY3JlYXRlZEJ5LFxuICAgICAgbW9kaWZpZWQsXG4gICAgICBzZXJ2ZXJNb2RpZmllZCxcbiAgICAgIG1vZGlmaWVkQnksXG4gICAgICBhY2NvdW50LFxuICAgICAgam9iXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgZW1wdHkoKTogVmFzRmlsZU1vZGVsIHtcbiAgICByZXR1cm4gbmV3IFZhc0ZpbGVNb2RlbChcbiAgICAgICcnLFxuICAgICAgJycsXG4gICAgICAnJyxcbiAgICAgICcnLFxuICAgICAgJycsXG4gICAgICAnJyxcbiAgICAgICcnLFxuICAgICAgJycsXG4gICAgICAnJyxcbiAgICAgICcnLFxuICAgICAgMCxcbiAgICAgICcnLFxuICAgICAgMCxcbiAgICAgIHtcbiAgICAgICAgZGlzcGxheUFzOiAnZ3JpZCcsXG4gICAgICAgIGVtYmVkTGluazogZmFsc2UsXG4gICAgICAgIGdyb3VwOiAncGhvdG8nLFxuICAgICAgICBkZXNjcmlwdGlvbjogJycsXG4gICAgICAgIGRpc3BsYXllZE5hbWU6ICcnLFxuICAgICAgICByb3RhdGlvbjogMFxuICAgICAgfSxcbiAgICAgICcnLFxuICAgICAgJycsXG4gICAgICAnJyxcbiAgICAgICdORVcnLFxuICAgICAgJydcbiAgICApO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBmcm9tRHRvKGZpbGVEdG86IFBhcnRpYWw8VmFzRmlsZUR0bz4pOiBWYXNGaWxlTW9kZWwge1xuICAgIHJldHVybiBuZXcgVmFzRmlsZU1vZGVsKFxuICAgICAgZmlsZUR0by5pZCB8fCBVVUlELlVVSUQoKSxcbiAgICAgIGZpbGVEdG8uY3JlYXRlZCB8fCAnJyxcbiAgICAgIGZpbGVEdG8uc2VydmVyQ3JlYXRlZCB8fCAnJyxcbiAgICAgIGZpbGVEdG8uY3JlYXRlZEJ5IHx8ICcnLFxuICAgICAgZmlsZUR0by5tb2RpZmllZCB8fCAnJyxcbiAgICAgIGZpbGVEdG8uc2VydmVyTW9kaWZpZWQgfHwgJycsXG4gICAgICBmaWxlRHRvLm1vZGlmaWVkQnkgfHwgJycsXG4gICAgICBmaWxlRHRvLmFjY291bnQgfHwgJycsXG4gICAgICBmaWxlRHRvLmpvYiB8fCAnJyxcbiAgICAgIGZpbGVEdG8ubmFtZSB8fCAnJyxcbiAgICAgIGZpbGVEdG8uZmlsZVNpemUgfHwgMCxcbiAgICAgIGZpbGVEdG8ubWltZVR5cGUgfHwgJycsXG4gICAgICBmaWxlRHRvLnNlcXVlbmNlIHx8IDAsXG4gICAgICBWYXNGaWxlTW9kZWwucGFyc2VDb25maWcoZmlsZUR0by5jb25maWcpLFxuICAgICAgZmlsZUR0by51cmwgfHwgJycsXG4gICAgICBmaWxlRHRvLmNvbnRyb2xQYXRoIHx8ICcnLFxuICAgICAgZmlsZUR0by5tZXNzYWdlIHx8ICcnLFxuICAgICAgZmlsZUR0by5zdGF0dXMgfHwgJ05FVycsXG4gICAgICBmaWxlRHRvLnVyaSB8fCAnJyxcbiAgICApO1xuICB9XG5cbiAgc3RhdGljIHBhcnNlQ29uZmlnKGNvbmZpZyA9ICcnKTogVmFzRmlsZUR0b0NvbmZpZ0R0byB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBKU09OLnBhcnNlKGNvbmZpZyk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGlzcGxheUFzOiAnZ3JpZCcsXG4gICAgICAgIGVtYmVkTGluazogZmFsc2UsXG4gICAgICAgIGdyb3VwOiAncGhvdG8nLFxuICAgICAgICBkZXNjcmlwdGlvbjogJycsXG4gICAgICAgIGRpc3BsYXllZE5hbWU6ICcnLFxuICAgICAgICByb3RhdGlvbjogMFxuICAgICAgfSBhcyBWYXNGaWxlRHRvQ29uZmlnRHRvO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJuIHtWYXNGaWxlRHRvfVxuICAgKi9cbiAgdG9EdG8oKTogVmFzRmlsZUR0byB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGlkOiB0aGlzLmlkLFxuICAgICAgY3JlYXRlZDogdGhpcy5jcmVhdGVkLFxuICAgICAgc2VydmVyQ3JlYXRlZDogdGhpcy5zZXJ2ZXJDcmVhdGVkLFxuICAgICAgY3JlYXRlZEJ5OiB0aGlzLmNyZWF0ZWRCeSxcbiAgICAgIG1vZGlmaWVkOiB0aGlzLm1vZGlmaWVkLFxuICAgICAgc2VydmVyTW9kaWZpZWQ6IHRoaXMuc2VydmVyTW9kaWZpZWQsXG4gICAgICBtb2RpZmllZEJ5OiB0aGlzLm1vZGlmaWVkQnksXG4gICAgICBhY2NvdW50OiB0aGlzLmFjY291bnQsXG4gICAgICBqb2I6IHRoaXMuam9iLFxuICAgICAgbmFtZTogdGhpcy5uYW1lLFxuICAgICAgZmlsZVNpemU6IHRoaXMuZmlsZVNpemUsXG4gICAgICBtaW1lVHlwZTogdGhpcy5taW1lVHlwZSxcbiAgICAgIHNlcXVlbmNlOiB0aGlzLnNlcXVlbmNlLFxuICAgICAgY29uZmlnOiB0aGlzLnN0cmluZ2lmeUNvbmZpZyh0aGlzLmNvbmZpZyksXG4gICAgICB1cmw6IHRoaXMudXJsLFxuICAgICAgY29udHJvbFBhdGg6IHRoaXMuY29udHJvbFBhdGgsXG4gICAgICBtZXNzYWdlOiB0aGlzLm1lc3NhZ2UsXG4gICAgICBzdGF0dXM6IHRoaXMuc3RhdHVzLFxuICAgICAgdXJpOiB0aGlzLnVyaSxcbiAgICB9O1xuICB9XG5cbiAgc3RyaW5naWZ5Q29uZmlnKGNvbmZpZzogVmFzRmlsZUR0b0NvbmZpZ0R0byk6IHN0cmluZyB7XG4gICAgaWYgKCFjb25maWcpIHtcbiAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgIGRpc3BsYXlBczogJ2dyaWQnLFxuICAgICAgICBlbWJlZExpbms6IGZhbHNlLFxuICAgICAgICBncm91cDogJ3Bob3RvJyxcbiAgICAgICAgZGVzY3JpcHRpb246ICcnLFxuICAgICAgICBkaXNwbGF5ZWROYW1lOiAnJyxcbiAgICAgICAgcm90YXRpb246IDBcbiAgICAgIH0gYXMgVmFzRmlsZUR0b0NvbmZpZ0R0byk7XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShjb25maWcpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGNvbnNvbGUud2FybihlKTtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG4gIH1cblxuICBvdmVycmlkZSB0b0FwaUR0byhcbiAgICBvcHRpb25zOiBWYXNGaWxlTW9kZWxUb0FwaUR0b09wdGlvbnMgPSB7Y29udGVudFVwbG9hZGVkOiBmYWxzZX1cbiAgKTogUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbj4ge1xuICAgIGNvbnN0IGFwaUR0bzogUmVjb3JkPHN0cmluZywgYW55PiA9IHtcbiAgICAgIC4uLnN1cGVyLnRvQXBpRHRvKCksXG4gICAgICBuYW1lOiB0aGlzLm5hbWUgfHwgJ34nLFxuICAgICAgbWltZVR5cGU6IHRoaXMubWltZVR5cGUgfHwgJ34nLFxuICAgICAgc2VxdWVuY2U6IHRoaXMuc2FmZU51bWJlcih0aGlzLnNlcXVlbmNlKSxcbiAgICAgIGNvbmZpZzogSlNPTi5zdHJpbmdpZnkodGhpcy5jb25maWcpXG4gICAgfTtcblxuICAgIGlmIChvcHRpb25zLmNvbnRlbnRVcGxvYWRlZCkge1xuICAgICAgYXBpRHRvWydvcmlnaW5hbCddID0gdGhpcy5pZDtcbiAgICB9XG5cbiAgICByZXR1cm4gYXBpRHRvO1xuICB9XG5cbiAgcHJvdGVjdGVkIHNhZmVOdW1iZXIodmFsdWU6IG51bWJlcik6IG51bWJlciB7XG4gICAgaWYgKCFOdW1iZXIuaXNGaW5pdGUodmFsdWUpKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG59XG4iXX0=
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFzLWZvcm0uZHRvLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFzLWxpYi9zcmMvbGliL2VudGl0eS92YXMtZm9ybS5kdG8udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFZhc0dyb3VwRHRvIH0gZnJvbSAnLi92YXMtZ3JvdXAuZHRvJztcbmltcG9ydCB7IFZhc1Jlc3RyaWN0ZWRBY2NvdW50T2JqZWN0RHRvIH0gZnJvbSAnLi92YXMtcmVzdHJpY3RlZC1hY2NvdW50LW9iamVjdC5kdG8nO1xuXG5leHBvcnQgaW50ZXJmYWNlIFZhc0Zvcm1EdG8gZXh0ZW5kcyBWYXNSZXN0cmljdGVkQWNjb3VudE9iamVjdER0byB7XG4gIGpvYlR5cGU6IHN0cmluZztcbiAgdGl0bGU6IHN0cmluZztcbiAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgZ3JvdXBzOiBWYXNHcm91cER0b1tdO1xuICBkeW5hbWljRGVzY3JpcHRvcjogc3RyaW5nO1xuICBwaXBlbGluZU5hbWU6IHN0cmluZztcbiAgaW5kZXhOYW1lOiBzdHJpbmc7XG4gIGNvbmZpZzogc3RyaW5nO1xuICBnZW9Mb2NhdGlvbkVuYWJsZWQ6IGJvb2xlYW47XG59XG4iXX0=
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFzLWZvcm0uZHRvLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFzLWxpYi9zcmMvbGliL2VudGl0eS92YXMtZm9ybS5kdG8udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFZhc0dyb3VwRHRvIH0gZnJvbSAnLi92YXMtZ3JvdXAuZHRvJztcbmltcG9ydCB7IFZhc1Jlc3RyaWN0ZWRBY2NvdW50T2JqZWN0RHRvIH0gZnJvbSAnLi92YXMtcmVzdHJpY3RlZC1hY2NvdW50LW9iamVjdC5kdG8nO1xuXG5leHBvcnQgaW50ZXJmYWNlIFZhc0Zvcm1EdG8gZXh0ZW5kcyBWYXNSZXN0cmljdGVkQWNjb3VudE9iamVjdER0byB7XG4gIGpvYlR5cGU6IHN0cmluZztcbiAgdGl0bGU6IHN0cmluZztcbiAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgZ3JvdXBzOiBWYXNHcm91cER0b1tdO1xuICBkeW5hbWljRGVzY3JpcHRvcjogc3RyaW5nO1xuICBwaXBlbGluZU5hbWU6IHN0cmluZztcbiAgaW5kZXhOYW1lOiBzdHJpbmc7XG4gIGNvbmZpZzogc3RyaW5nO1xuICBnZW9Mb2NhdGlvbkVuYWJsZWQ6IGJvb2xlYW47XG4gIGZpbGVzRW5hYmxlZDogYm9vbGVhbjtcbn1cbiJdfQ==
@@ -5,27 +5,7 @@ import { VasGroupModel } from './vas-group.model';
5
5
  * VasFormModel
6
6
  */
7
7
  export class VasFormModel extends VasRestrictedAccountObjectModel {
8
- /**
9
- * @param {string} id
10
- * @param {string} created
11
- * @param {string} serverCreated
12
- * @param {string} createdBy
13
- * @param {string} modified
14
- * @param {string} serverModified
15
- * @param {string} modifiedBy
16
- * @param {string} account
17
- * @param {string} accessGroup
18
- * @param {string} jobType
19
- * @param {string} title
20
- * @param {string} description
21
- * @param {VasGroupModel[]} groups
22
- * @param {string} dynamicDescriptor
23
- * @param {string} indexName
24
- * @param {string} pipelineName
25
- * @param {string} config
26
- * @param {boolean} geoLocationEnabled
27
- */
28
- constructor(id, created, serverCreated, createdBy, modified, serverModified, modifiedBy, account, accessGroup, jobType, title, description, groups, dynamicDescriptor, indexName, pipelineName, config, geoLocationEnabled) {
8
+ constructor(id, created, serverCreated, createdBy, modified, serverModified, modifiedBy, account, accessGroup, jobType, title, description, groups, dynamicDescriptor, indexName, pipelineName, config, geoLocationEnabled, filesEnabled) {
29
9
  super(id, created, serverCreated, createdBy, modified, serverModified, modifiedBy, account, accessGroup);
30
10
  this.id = id;
31
11
  this.created = created;
@@ -45,6 +25,7 @@ export class VasFormModel extends VasRestrictedAccountObjectModel {
45
25
  this.pipelineName = pipelineName;
46
26
  this.config = config;
47
27
  this.geoLocationEnabled = geoLocationEnabled;
28
+ this.filesEnabled = filesEnabled;
48
29
  }
49
30
  /**
50
31
  * Returns the name of this form in a "safe" way, i.e. no spaces, special
@@ -87,7 +68,7 @@ export class VasFormModel extends VasRestrictedAccountObjectModel {
87
68
  static fromDto(dto) {
88
69
  return new VasFormModel(dto.id || '', dto.created || '', dto.serverCreated || '', dto.createdBy || '', dto.modified || '', dto.serverModified || '', dto.modifiedBy || '', dto.account || '', dto.accessGroup || '', dto.jobType || '', dto.title || '', dto.description || '', (dto.groups || [])
89
70
  .sort((a, b) => a.sequence - b.sequence)
90
- .map(g => VasGroupModel.fromDto(g)), dto.dynamicDescriptor || '', dto.indexName || '', dto.pipelineName || '', dto.config || '', dto.geoLocationEnabled || false);
71
+ .map(g => VasGroupModel.fromDto(g)), dto.dynamicDescriptor || '', dto.indexName || '', dto.pipelineName || '', dto.config || '', dto.geoLocationEnabled || false, dto.filesEnabled || false);
91
72
  }
92
73
  addControlTypesToControl(controlTypes) {
93
74
  const controlTypeModels = controlTypes
@@ -192,8 +173,9 @@ export class VasFormModel extends VasRestrictedAccountObjectModel {
192
173
  indexName: this.indexName,
193
174
  pipelineName: this.pipelineName,
194
175
  config: this.config,
195
- geoLocationEnabled: this.geoLocationEnabled
176
+ geoLocationEnabled: this.geoLocationEnabled,
177
+ filesEnabled: this.filesEnabled
196
178
  };
197
179
  }
198
180
  }
199
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFzLWZvcm0ubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YXMtbGliL3NyYy9saWIvZW50aXR5L3Zhcy1mb3JtLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBRXhGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBSS9ELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUdsRDs7R0FFRztBQUNILE1BQU0sT0FBTyxZQUFhLFNBQVEsK0JBQStCO0lBQy9EOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O09BbUJHO0lBQ0gsWUFDa0IsRUFBVSxFQUNWLE9BQWUsRUFDZixhQUFxQixFQUNyQixTQUFpQixFQUNqQixRQUFnQixFQUNoQixjQUFzQixFQUN0QixVQUFrQixFQUNsQixPQUFlLEVBQ2YsV0FBbUIsRUFDNUIsT0FBZSxFQUNmLEtBQWEsRUFDYixXQUFtQixFQUNuQixNQUF1QixFQUN2QixpQkFBeUIsRUFDekIsU0FBaUIsRUFDakIsWUFBb0IsRUFDcEIsTUFBYyxFQUNkLGtCQUEyQjtRQUVsQyxLQUFLLENBQ0gsRUFBRSxFQUNGLE9BQU8sRUFDUCxhQUFhLEVBQ2IsU0FBUyxFQUNULFFBQVEsRUFDUixjQUFjLEVBQ2QsVUFBVSxFQUNWLE9BQU8sRUFDUCxXQUFXLENBQ1osQ0FBQztRQTdCYyxPQUFFLEdBQUYsRUFBRSxDQUFRO1FBQ1YsWUFBTyxHQUFQLE9BQU8sQ0FBUTtRQUNmLGtCQUFhLEdBQWIsYUFBYSxDQUFRO1FBQ3JCLGNBQVMsR0FBVCxTQUFTLENBQVE7UUFDakIsYUFBUSxHQUFSLFFBQVEsQ0FBUTtRQUNoQixtQkFBYyxHQUFkLGNBQWMsQ0FBUTtRQUN0QixlQUFVLEdBQVYsVUFBVSxDQUFRO1FBQ2xCLFlBQU8sR0FBUCxPQUFPLENBQVE7UUFDZixn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LE9BQU87WUFDTCxFQUFFLEVBQUUsSUFBSSxDQUFDLEVBQUU7WUFDWCxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87WUFDckIsYUFBYSxFQUFFLElBQUksQ0FBQyxhQUFhO1lBQ2pDLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUztZQUN6QixRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7WUFDdkIsY0FBYyxFQUFFLElBQUksQ0FBQyxjQUFjO1lBQ25DLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVTtZQUMzQixPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87WUFDckIsV0FBVyxFQUFFLElBQUksQ0FBQyxXQUFXO1lBQzdCLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztZQUNyQixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7WUFDakIsV0FBVyxFQUFFLElBQUksQ0FBQyxXQUFXO1lBQzdCLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUMvQyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsaUJBQWlCO1lBQ3pDLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUztZQUN6QixZQUFZLEVBQUUsSUFBSSxDQUFDLFlBQVk7WUFDL0IsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNO1lBQ25CLGtCQUFrQixFQUFFLElBQUksQ0FBQyxrQkFBa0I7U0FDNUMsQ0FBQztJQUNKLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFZhc1Jlc3RyaWN0ZWRBY2NvdW50T2JqZWN0TW9kZWwgfSBmcm9tICcuL3Zhcy1yZXN0cmljdGVkLWFjY291bnQtb2JqZWN0Lm1vZGVsJztcbmltcG9ydCB7IFZhc0NvbnRyb2xUeXBlRHRvIH0gZnJvbSAnLi92YXMtY29udHJvbC10eXBlLmR0byc7XG5pbXBvcnQgeyBWYXNDb250cm9sVHlwZU1vZGVsIH0gZnJvbSAnLi92YXMtY29udHJvbC10eXBlLm1vZGVsJztcbmltcG9ydCB7IFZhc0NvbnRyb2xNb2RlbCB9IGZyb20gJy4vdmFzLWNvbnRyb2wubW9kZWwnO1xuaW1wb3J0IHsgVmFzRmllbGREdG9WYWx1ZSB9IGZyb20gJy4vdmFzLWZpZWxkLmR0byc7XG5pbXBvcnQgeyBWYXNGb3JtRHRvIH0gZnJvbSAnLi92YXMtZm9ybS5kdG8nO1xuaW1wb3J0IHsgVmFzR3JvdXBNb2RlbCB9IGZyb20gJy4vdmFzLWdyb3VwLm1vZGVsJztcbmltcG9ydCB7IFZhc0pvYk1vZGVsIH0gZnJvbSAnLi92YXMtam9iLm1vZGVsJztcblxuLyoqXG4gKiBWYXNGb3JtTW9kZWxcbiAqL1xuZXhwb3J0IGNsYXNzIFZhc0Zvcm1Nb2RlbCBleHRlbmRzIFZhc1Jlc3RyaWN0ZWRBY2NvdW50T2JqZWN0TW9kZWwge1xuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmd9IGlkXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjcmVhdGVkXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzZXJ2ZXJDcmVhdGVkXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjcmVhdGVkQnlcbiAgICogQHBhcmFtIHtzdHJpbmd9IG1vZGlmaWVkXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzZXJ2ZXJNb2RpZmllZFxuICAgKiBAcGFyYW0ge3N0cmluZ30gbW9kaWZpZWRCeVxuICAgKiBAcGFyYW0ge3N0cmluZ30gYWNjb3VudFxuICAgKiBAcGFyYW0ge3N0cmluZ30gYWNjZXNzR3JvdXBcbiAgICogQHBhcmFtIHtzdHJpbmd9IGpvYlR5cGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IHRpdGxlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBkZXNjcmlwdGlvblxuICAgKiBAcGFyYW0ge1Zhc0dyb3VwTW9kZWxbXX0gZ3JvdXBzXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBkeW5hbWljRGVzY3JpcHRvclxuICAgKiBAcGFyYW0ge3N0cmluZ30gaW5kZXhOYW1lXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBwaXBlbGluZU5hbWVcbiAgICogQHBhcmFtIHtzdHJpbmd9IGNvbmZpZ1xuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGdlb0xvY2F0aW9uRW5hYmxlZFxuICAgKi9cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIG92ZXJyaWRlIGlkOiBzdHJpbmcsXG4gICAgcHVibGljIG92ZXJyaWRlIGNyZWF0ZWQ6IHN0cmluZyxcbiAgICBwdWJsaWMgb3ZlcnJpZGUgc2VydmVyQ3JlYXRlZDogc3RyaW5nLFxuICAgIHB1YmxpYyBvdmVycmlkZSBjcmVhdGVkQnk6IHN0cmluZyxcbiAgICBwdWJsaWMgb3ZlcnJpZGUgbW9kaWZpZWQ6IHN0cmluZyxcbiAgICBwdWJsaWMgb3ZlcnJpZGUgc2VydmVyTW9kaWZpZWQ6IHN0cmluZyxcbiAgICBwdWJsaWMgb3ZlcnJpZGUgbW9kaWZpZWRCeTogc3RyaW5nLFxuICAgIHB1YmxpYyBvdmVycmlkZSBhY2NvdW50OiBzdHJpbmcsXG4gICAgcHVibGljIG92ZXJyaWRlIGFjY2Vzc0dyb3VwOiBzdHJpbmcsXG4gICAgcHVibGljIGpvYlR5cGU6IHN0cmluZyxcbiAgICBwdWJsaWMgdGl0bGU6IHN0cmluZyxcbiAgICBwdWJsaWMgZGVzY3JpcHRpb246IHN0cmluZyxcbiAgICBwdWJsaWMgZ3JvdXBzOiBWYXNHcm91cE1vZGVsW10sXG4gICAgcHVibGljIGR5bmFtaWNEZXNjcmlwdG9yOiBzdHJpbmcsXG4gICAgcHVibGljIGluZGV4TmFtZTogc3RyaW5nLFxuICAgIHB1YmxpYyBwaXBlbGluZU5hbWU6IHN0cmluZyxcbiAgICBwdWJsaWMgY29uZmlnOiBzdHJpbmcsXG4gICAgcHVibGljIGdlb0xvY2F0aW9uRW5hYmxlZDogYm9vbGVhblxuICApIHtcbiAgICBzdXBlcihcbiAgICAgIGlkLFxuICAgICAgY3JlYXRlZCxcbiAgICAgIHNlcnZlckNyZWF0ZWQsXG4gICAgICBjcmVhdGVkQnksXG4gICAgICBtb2RpZmllZCxcbiAgICAgIHNlcnZlck1vZGlmaWVkLFxuICAgICAgbW9kaWZpZWRCeSxcbiAgICAgIGFjY291bnQsXG4gICAgICBhY2Nlc3NHcm91cFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgbmFtZSBvZiB0aGlzIGZvcm0gaW4gYSBcInNhZmVcIiB3YXksIGkuZS4gbm8gc3BhY2VzLCBzcGVjaWFsXG4gICAqIGNoYXJhY3RlcnNcbiAgICogQHJldHVybiB7c3RyaW5nfVxuICAgKi9cbiAgZ2V0IHNhZmVUaXRsZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnRpdGxlXG4gICAgICAucmVwbGFjZSgvW15hLXowLTldL2dpLCAnLScpXG4gICAgICAucmVwbGFjZSgvLSsvZywgJy0nKVxuICAgICAgLnRvTG93ZXJDYXNlKCk7XG4gIH1cblxuXG4gIC8qKlxuICAgKiBUaGUgVkFTIEFQSSByZXNwb25zZSBmb3IgRm9ybSB3aWxsIGlubGluZSBHcm91cCBhbmQgQ29udHJvbCBidXQgbm90XG4gICAqIENvbnRyb2xUeXBlLiBUaGlzIG1ldGhvZCBpcyBhIGhlbHAgd2hpY2ggd2lsbCBhbGxvd3MgdXMgdG8gY29uc3RydWN0IGFuXG4gICAqIGluc3RhbmNlIG9mIFZhc0Zvcm1Nb2RlbCB3aXRoIHRoZSBDb250cm9sVHlwZSBtb2RlbCBzZXQgYXBwcm9wcmlhdGVseSBpbnRvXG4gICAqIGVhY2ggVmFzQ29udHJvbE1vZGVsXG4gICAqIEBwYXJhbSB7VmFzRm9ybUR0b30gZm9ybUR0b1xuICAgKiBAcGFyYW0ge0FycmF5PFZhc0NvbnRyb2xUeXBlRHRvPn0gY29udHJvbFR5cGVEdG9zXG4gICAqIEByZXR1cm4ge1Zhc0Zvcm1Nb2RlbH1cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbUFwaVJlc3BvbnNlKFxuICAgIGZvcm1EdG86IFZhc0Zvcm1EdG8sXG4gICAgY29udHJvbFR5cGVEdG9zOiBBcnJheTxWYXNDb250cm9sVHlwZUR0bz5cbiAgKTogVmFzRm9ybU1vZGVsIHtcbiAgICBjb25zdCBjb250cm9sVHlwZU1vZGVscyA9IGNvbnRyb2xUeXBlRHRvc1xuICAgICAgLm1hcChjdER0byA9PiBWYXNDb250cm9sVHlwZU1vZGVsLmZyb21EdG8oY3REdG8pKTtcbiAgICBjb25zdCBmb3JtTW9kZWwgPSBWYXNGb3JtTW9kZWwuZnJvbUR0byhmb3JtRHRvKTtcbiAgICBmb3JtTW9kZWwuZ3JvdXBzXG4gICAgICAuZm9yRWFjaChncm91cCA9PiB7XG4gICAgICAgIGdyb3VwLmNvbnRyb2xzXG4gICAgICAgICAgLmZvckVhY2goY29udHJvbCA9PiB7XG4gICAgICAgICAgICBjb250cm9sLmNvbnRyb2xUeXBlTW9kZWwgPSBjb250cm9sVHlwZU1vZGVsc1xuICAgICAgICAgICAgICAuZmluZChjdCA9PiBjdC5pZCA9PT0gY29udHJvbC5jb250cm9sVHlwZSk7XG4gICAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICByZXR1cm4gZm9ybU1vZGVsO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7VmFzRm9ybUR0b30gZHRvXG4gICAqIEByZXR1cm4ge1Zhc0Zvcm1Nb2RlbH1cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbUR0byhkdG86IFBhcnRpYWw8VmFzRm9ybUR0bz4pOiBWYXNGb3JtTW9kZWwge1xuICAgIHJldHVybiBuZXcgVmFzRm9ybU1vZGVsKFxuICAgICAgZHRvLmlkIHx8ICcnLFxuICAgICAgZHRvLmNyZWF0ZWQgfHwgJycsXG4gICAgICBkdG8uc2VydmVyQ3JlYXRlZCB8fCAnJyxcbiAgICAgIGR0by5jcmVhdGVkQnkgfHwgJycsXG4gICAgICBkdG8ubW9kaWZpZWQgfHwgJycsXG4gICAgICBkdG8uc2VydmVyTW9kaWZpZWQgfHwgJycsXG4gICAgICBkdG8ubW9kaWZpZWRCeSB8fCAnJyxcbiAgICAgIGR0by5hY2NvdW50IHx8ICcnLFxuICAgICAgZHRvLmFjY2Vzc0dyb3VwIHx8ICcnLFxuICAgICAgZHRvLmpvYlR5cGUgfHwgJycsXG4gICAgICBkdG8udGl0bGUgfHwgJycsXG4gICAgICBkdG8uZGVzY3JpcHRpb24gfHwgJycsXG4gICAgICAoZHRvLmdyb3VwcyB8fCBbXSlcbiAgICAgICAgLnNvcnQoKGEsIGIpID0+IGEuc2VxdWVuY2UgLSBiLnNlcXVlbmNlKVxuICAgICAgICAubWFwKGcgPT4gVmFzR3JvdXBNb2RlbC5mcm9tRHRvKGcpKSxcbiAgICAgIGR0by5keW5hbWljRGVzY3JpcHRvciB8fCAnJyxcbiAgICAgIGR0by5pbmRleE5hbWUgfHwgJycsXG4gICAgICBkdG8ucGlwZWxpbmVOYW1lIHx8ICcnLFxuICAgICAgZHRvLmNvbmZpZyB8fCAnJyxcbiAgICAgIGR0by5nZW9Mb2NhdGlvbkVuYWJsZWQgfHwgZmFsc2VcbiAgICApO1xuICB9XG5cbiAgYWRkQ29udHJvbFR5cGVzVG9Db250cm9sKGNvbnRyb2xUeXBlczogQXJyYXk8VmFzQ29udHJvbFR5cGVEdG8+KTogdm9pZCB7XG4gICAgY29uc3QgY29udHJvbFR5cGVNb2RlbHMgPSBjb250cm9sVHlwZXNcbiAgICAgIC5tYXAoY3QgPT4gVmFzQ29udHJvbFR5cGVNb2RlbC5mcm9tRHRvKGN0KSlcbiAgICB0aGlzLmdyb3Vwc1xuICAgICAgLmZvckVhY2goZ3JvdXAgPT4ge1xuICAgICAgICBncm91cC5jb250cm9sc1xuICAgICAgICAgIC5mb3JFYWNoKGNvbnRyb2wgPT4ge1xuICAgICAgICAgICAgY29udHJvbC5jb250cm9sVHlwZU1vZGVsID0gY29udHJvbFR5cGVNb2RlbHNcbiAgICAgICAgICAgICAgLmZpbmQoY3RtID0+IGN0bS5pZCA9PT0gY29udHJvbC5jb250cm9sVHlwZSlcbiAgICAgICAgICB9KTtcbiAgICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBpZFxuICAgKiBAcmV0dXJuIHtWYXNDb250cm9sTW9kZWwgfCB1bmRlZmluZWR9XG4gICAqL1xuICBmaW5kQ29udHJvbE1vZGVsQnlJZChpZDogc3RyaW5nKTogVmFzQ29udHJvbE1vZGVsIHwgdW5kZWZpbmVkIHtcbiAgICBsZXQgcmVzdWx0O1xuICAgIHRoaXMuZ3JvdXBzXG4gICAgICAuZmluZChncm91cCA9PiBncm91cC5jb250cm9sc1xuICAgICAgICAuZmluZChjb250cm9sID0+IHtcbiAgICAgICAgICBpZiAoY29udHJvbC5pZCAhPT0gaWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmVzdWx0ID0gY29udHJvbDtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSkpO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvKipcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWVcbiAgICogQHJldHVybiB7VmFzQ29udHJvbE1vZGVsIHwgdW5kZWZpbmVkfVxuICAgKi9cbiAgZmluZENvbnRyb2xNb2RlbEJ5TmFtZShuYW1lOiBzdHJpbmcpOiBWYXNDb250cm9sTW9kZWwgfCB1bmRlZmluZWQge1xuICAgIGxldCByZXN1bHQ7XG4gICAgdGhpcy5ncm91cHNcbiAgICAgIC5maW5kKGdyb3VwID0+IGdyb3VwLmNvbnRyb2xzXG4gICAgICAgIC5maW5kKGNvbnRyb2wgPT4ge1xuICAgICAgICAgIGlmIChjb250cm9sLm5hbWUgIT09IG5hbWUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmVzdWx0ID0gY29udHJvbDtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSkpO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvKipcbiAgICpcbiAgICogQHJldHVybiB7QXJyYXk8QXJyYXk8c3RyaW5nPj59XG4gICAqL1xuICBnZXRDYW1lcmFDb250cm9sUGF0aHMoKTogQXJyYXk8QXJyYXk8c3RyaW5nPj4ge1xuICAgIGNvbnN0IHBhdGhzOiBzdHJpbmdbXVtdID0gW107XG4gICAgdGhpcy5ncm91cHMuZm9yRWFjaChncm91cCA9PiB7XG4gICAgICBncm91cC5jb250cm9scy5mb3JFYWNoKGNvbnRyb2wgPT4ge1xuICAgICAgICBpZiAoY29udHJvbC5jb250cm9sVHlwZU1vZGVsPy5uYW1lICE9PSAnY2FtZXJhJykge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBwYXRocy5wdXNoKFtncm91cC5uYW1lLCBjb250cm9sLnNhZmVOYW1lXSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICByZXR1cm4gcGF0aHM7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtWYXNKb2JNb2RlbH0gam9iTW9kZWxcbiAgICogQHJldHVybiB7QXJyYXk8e2lkOiBzdHJpbmcsIHZhbHVlOiBWYXNGaWVsZER0b1ZhbHVlfT59XG4gICAqL1xuICBnZXRWYWx1ZXNCeUNvbnRyb2xJZChcbiAgICBqb2JNb2RlbDogVmFzSm9iTW9kZWxcbiAgKTogQXJyYXk8e2lkOiBzdHJpbmcsIHZhbHVlOiBWYXNGaWVsZER0b1ZhbHVlIHwgdW5kZWZpbmVkfT4ge1xuICAgIGNvbnN0IGl0ZW1zOiBBcnJheTx7aWQ6IHN0cmluZywgdmFsdWU6IFZhc0ZpZWxkRHRvVmFsdWUgfCB1bmRlZmluZWR9PiA9IFtdO1xuICAgIHRoaXMuZ3JvdXBzXG4gICAgICAuZm9yRWFjaChncm91cCA9PiB7XG4gICAgICAgIGdyb3VwLmNvbnRyb2xzXG4gICAgICAgICAgLmZvckVhY2goY29udHJvbCA9PiB7XG4gICAgICAgICAgICBpdGVtcy5wdXNoKHtcbiAgICAgICAgICAgICAgaWQ6IGNvbnRyb2wuaWQsXG4gICAgICAgICAgICAgIHZhbHVlOiBqb2JNb2RlbC5nZXRWYWx1ZUJ5UGF0aChbZ3JvdXAubmFtZSwgY29udHJvbC5zYWZlTmFtZV0pXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIHJldHVybiBpdGVtcztcbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJuIHtWYXNGb3JtRHRvfVxuICAgKi9cbiAgdG9EdG8oKTogVmFzRm9ybUR0byB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGlkOiB0aGlzLmlkLFxuICAgICAgY3JlYXRlZDogdGhpcy5jcmVhdGVkLFxuICAgICAgc2VydmVyQ3JlYXRlZDogdGhpcy5zZXJ2ZXJDcmVhdGVkLFxuICAgICAgY3JlYXRlZEJ5OiB0aGlzLmNyZWF0ZWRCeSxcbiAgICAgIG1vZGlmaWVkOiB0aGlzLm1vZGlmaWVkLFxuICAgICAgc2VydmVyTW9kaWZpZWQ6IHRoaXMuc2VydmVyTW9kaWZpZWQsXG4gICAgICBtb2RpZmllZEJ5OiB0aGlzLm1vZGlmaWVkQnksXG4gICAgICBhY2NvdW50OiB0aGlzLmFjY291bnQsXG4gICAgICBhY2Nlc3NHcm91cDogdGhpcy5hY2Nlc3NHcm91cCxcbiAgICAgIGpvYlR5cGU6IHRoaXMuam9iVHlwZSxcbiAgICAgIHRpdGxlOiB0aGlzLnRpdGxlLFxuICAgICAgZGVzY3JpcHRpb246IHRoaXMuZGVzY3JpcHRpb24sXG4gICAgICBncm91cHM6IHRoaXMuZ3JvdXBzLm1hcChncm91cCA9PiBncm91cC50b0R0bygpKSxcbiAgICAgIGR5bmFtaWNEZXNjcmlwdG9yOiB0aGlzLmR5bmFtaWNEZXNjcmlwdG9yLFxuICAgICAgaW5kZXhOYW1lOiB0aGlzLmluZGV4TmFtZSxcbiAgICAgIHBpcGVsaW5lTmFtZTogdGhpcy5waXBlbGluZU5hbWUsXG4gICAgICBjb25maWc6IHRoaXMuY29uZmlnLFxuICAgICAgZ2VvTG9jYXRpb25FbmFibGVkOiB0aGlzLmdlb0xvY2F0aW9uRW5hYmxlZFxuICAgIH07XG4gIH1cbn1cblxuIl19
181
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFzLWZvcm0ubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YXMtbGliL3NyYy9saWIvZW50aXR5L3Zhcy1mb3JtLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBRXhGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBSS9ELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUdsRDs7R0FFRztBQUNILE1BQU0sT0FBTyxZQUFhLFNBQVEsK0JBQStCO0lBRS9ELFlBQ2tCLEVBQVUsRUFDVixPQUFlLEVBQ2YsYUFBcUIsRUFDckIsU0FBaUIsRUFDakIsUUFBZ0IsRUFDaEIsY0FBc0IsRUFDdEIsVUFBa0IsRUFDbEIsT0FBZSxFQUNmLFdBQW1CLEVBQzVCLE9BQWUsRUFDZixLQUFhLEVBQ2IsV0FBbUIsRUFDbkIsTUFBdUIsRUFDdkIsaUJBQXlCLEVBQ3pCLFNBQWlCLEVBQ2pCLFlBQW9CLEVBQ3BCLE1BQWMsRUFDZCxrQkFBMkIsRUFDM0IsWUFBcUI7UUFFNUIsS0FBSyxDQUNILEVBQUUsRUFDRixPQUFPLEVBQ1AsYUFBYSxFQUNiLFNBQVMsRUFDVCxRQUFRLEVBQ1IsY0FBYyxFQUNkLFVBQVUsRUFDVixPQUFPLEVBQ1AsV0FBVyxDQUNaLENBQUM7UUE5QmMsT0FBRSxHQUFGLEVBQUUsQ0FBUTtRQUNWLFlBQU8sR0FBUCxPQUFPLENBQVE7UUFDZixrQkFBYSxHQUFiLGFBQWEsQ0FBUTtRQUNyQixjQUFTLEdBQVQsU0FBUyxDQUFRO1FBQ2pCLGFBQVEsR0FBUixRQUFRLENBQVE7UUFDaEIsbUJBQWMsR0FBZCxjQUFjLENBQVE7UUFDdEIsZUFBVSxHQUFWLFVBQVUsQ0FBUTtRQUNsQixZQUFPLEdBQVAsT0FBTyxDQUFRO1FBQ2YsZ0JBQVcsR0FBWCxXQUFXLENB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LENBQUM7SUFDZixDQUFDO0lBRUQ7O09BRUc7SUFDSCxLQUFLO1FBQ0gsT0FBTztZQUNMLEVBQUUsRUFBRSxJQUFJLENBQUMsRUFBRTtZQUNYLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztZQUNyQixhQUFhLEVBQUUsSUFBSSxDQUFDLGFBQWE7WUFDakMsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTO1lBQ3pCLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTtZQUN2QixjQUFjLEVBQUUsSUFBSSxDQUFDLGNBQWM7WUFDbkMsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVO1lBQzNCLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztZQUNyQixXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVc7WUFDN0IsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPO1lBQ3JCLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztZQUNqQixXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVc7WUFDN0IsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQy9DLGlCQUFpQixFQUFFLElBQUksQ0FBQyxpQkFBaUI7WUFDekMsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTO1lBQ3pCLFlBQVksRUFBRSxJQUFJLENBQUMsWUFBWTtZQUMvQixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07WUFDbkIsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLGtCQUFrQjtZQUMzQyxZQUFZLEVBQUUsSUFBSSxDQUFDLFlBQVk7U0FDaEMsQ0FBQztJQUNKLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFZhc1Jlc3RyaWN0ZWRBY2NvdW50T2JqZWN0TW9kZWwgfSBmcm9tICcuL3Zhcy1yZXN0cmljdGVkLWFjY291bnQtb2JqZWN0Lm1vZGVsJztcbmltcG9ydCB7IFZhc0NvbnRyb2xUeXBlRHRvIH0gZnJvbSAnLi92YXMtY29udHJvbC10eXBlLmR0byc7XG5pbXBvcnQgeyBWYXNDb250cm9sVHlwZU1vZGVsIH0gZnJvbSAnLi92YXMtY29udHJvbC10eXBlLm1vZGVsJztcbmltcG9ydCB7IFZhc0NvbnRyb2xNb2RlbCB9IGZyb20gJy4vdmFzLWNvbnRyb2wubW9kZWwnO1xuaW1wb3J0IHsgVmFzRmllbGREdG9WYWx1ZSB9IGZyb20gJy4vdmFzLWZpZWxkLmR0byc7XG5pbXBvcnQgeyBWYXNGb3JtRHRvIH0gZnJvbSAnLi92YXMtZm9ybS5kdG8nO1xuaW1wb3J0IHsgVmFzR3JvdXBNb2RlbCB9IGZyb20gJy4vdmFzLWdyb3VwLm1vZGVsJztcbmltcG9ydCB7IFZhc0pvYk1vZGVsIH0gZnJvbSAnLi92YXMtam9iLm1vZGVsJztcblxuLyoqXG4gKiBWYXNGb3JtTW9kZWxcbiAqL1xuZXhwb3J0IGNsYXNzIFZhc0Zvcm1Nb2RlbCBleHRlbmRzIFZhc1Jlc3RyaWN0ZWRBY2NvdW50T2JqZWN0TW9kZWwge1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBvdmVycmlkZSBpZDogc3RyaW5nLFxuICAgIHB1YmxpYyBvdmVycmlkZSBjcmVhdGVkOiBzdHJpbmcsXG4gICAgcHVibGljIG92ZXJyaWRlIHNlcnZlckNyZWF0ZWQ6IHN0cmluZyxcbiAgICBwdWJsaWMgb3ZlcnJpZGUgY3JlYXRlZEJ5OiBzdHJpbmcsXG4gICAgcHVibGljIG92ZXJyaWRlIG1vZGlmaWVkOiBzdHJpbmcsXG4gICAgcHVibGljIG92ZXJyaWRlIHNlcnZlck1vZGlmaWVkOiBzdHJpbmcsXG4gICAgcHVibGljIG92ZXJyaWRlIG1vZGlmaWVkQnk6IHN0cmluZyxcbiAgICBwdWJsaWMgb3ZlcnJpZGUgYWNjb3VudDogc3RyaW5nLFxuICAgIHB1YmxpYyBvdmVycmlkZSBhY2Nlc3NHcm91cDogc3RyaW5nLFxuICAgIHB1YmxpYyBqb2JUeXBlOiBzdHJpbmcsXG4gICAgcHVibGljIHRpdGxlOiBzdHJpbmcsXG4gICAgcHVibGljIGRlc2NyaXB0aW9uOiBzdHJpbmcsXG4gICAgcHVibGljIGdyb3VwczogVmFzR3JvdXBNb2RlbFtdLFxuICAgIHB1YmxpYyBkeW5hbWljRGVzY3JpcHRvcjogc3RyaW5nLFxuICAgIHB1YmxpYyBpbmRleE5hbWU6IHN0cmluZyxcbiAgICBwdWJsaWMgcGlwZWxpbmVOYW1lOiBzdHJpbmcsXG4gICAgcHVibGljIGNvbmZpZzogc3RyaW5nLFxuICAgIHB1YmxpYyBnZW9Mb2NhdGlvbkVuYWJsZWQ6IGJvb2xlYW4sXG4gICAgcHVibGljIGZpbGVzRW5hYmxlZDogYm9vbGVhblxuICApIHtcbiAgICBzdXBlcihcbiAgICAgIGlkLFxuICAgICAgY3JlYXRlZCxcbiAgICAgIHNlcnZlckNyZWF0ZWQsXG4gICAgICBjcmVhdGVkQnksXG4gICAgICBtb2RpZmllZCxcbiAgICAgIHNlcnZlck1vZGlmaWVkLFxuICAgICAgbW9kaWZpZWRCeSxcbiAgICAgIGFjY291bnQsXG4gICAgICBhY2Nlc3NHcm91cFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgbmFtZSBvZiB0aGlzIGZvcm0gaW4gYSBcInNhZmVcIiB3YXksIGkuZS4gbm8gc3BhY2VzLCBzcGVjaWFsXG4gICAqIGNoYXJhY3RlcnNcbiAgICogQHJldHVybiB7c3RyaW5nfVxuICAgKi9cbiAgZ2V0IHNhZmVUaXRsZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnRpdGxlXG4gICAgICAucmVwbGFjZSgvW15hLXowLTldL2dpLCAnLScpXG4gICAgICAucmVwbGFjZSgvLSsvZywgJy0nKVxuICAgICAgLnRvTG93ZXJDYXNlKCk7XG4gIH1cblxuXG4gIC8qKlxuICAgKiBUaGUgVkFTIEFQSSByZXNwb25zZSBmb3IgRm9ybSB3aWxsIGlubGluZSBHcm91cCBhbmQgQ29udHJvbCBidXQgbm90XG4gICAqIENvbnRyb2xUeXBlLiBUaGlzIG1ldGhvZCBpcyBhIGhlbHAgd2hpY2ggd2lsbCBhbGxvd3MgdXMgdG8gY29uc3RydWN0IGFuXG4gICAqIGluc3RhbmNlIG9mIFZhc0Zvcm1Nb2RlbCB3aXRoIHRoZSBDb250cm9sVHlwZSBtb2RlbCBzZXQgYXBwcm9wcmlhdGVseSBpbnRvXG4gICAqIGVhY2ggVmFzQ29udHJvbE1vZGVsXG4gICAqIEBwYXJhbSB7VmFzRm9ybUR0b30gZm9ybUR0b1xuICAgKiBAcGFyYW0ge0FycmF5PFZhc0NvbnRyb2xUeXBlRHRvPn0gY29udHJvbFR5cGVEdG9zXG4gICAqIEByZXR1cm4ge1Zhc0Zvcm1Nb2RlbH1cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbUFwaVJlc3BvbnNlKFxuICAgIGZvcm1EdG86IFZhc0Zvcm1EdG8sXG4gICAgY29udHJvbFR5cGVEdG9zOiBBcnJheTxWYXNDb250cm9sVHlwZUR0bz5cbiAgKTogVmFzRm9ybU1vZGVsIHtcbiAgICBjb25zdCBjb250cm9sVHlwZU1vZGVscyA9IGNvbnRyb2xUeXBlRHRvc1xuICAgICAgLm1hcChjdER0byA9PiBWYXNDb250cm9sVHlwZU1vZGVsLmZyb21EdG8oY3REdG8pKTtcbiAgICBjb25zdCBmb3JtTW9kZWwgPSBWYXNGb3JtTW9kZWwuZnJvbUR0byhmb3JtRHRvKTtcbiAgICBmb3JtTW9kZWwuZ3JvdXBzXG4gICAgICAuZm9yRWFjaChncm91cCA9PiB7XG4gICAgICAgIGdyb3VwLmNvbnRyb2xzXG4gICAgICAgICAgLmZvckVhY2goY29udHJvbCA9PiB7XG4gICAgICAgICAgICBjb250cm9sLmNvbnRyb2xUeXBlTW9kZWwgPSBjb250cm9sVHlwZU1vZGVsc1xuICAgICAgICAgICAgICAuZmluZChjdCA9PiBjdC5pZCA9PT0gY29udHJvbC5jb250cm9sVHlwZSk7XG4gICAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICByZXR1cm4gZm9ybU1vZGVsO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7VmFzRm9ybUR0b30gZHRvXG4gICAqIEByZXR1cm4ge1Zhc0Zvcm1Nb2RlbH1cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbUR0byhkdG86IFBhcnRpYWw8VmFzRm9ybUR0bz4pOiBWYXNGb3JtTW9kZWwge1xuICAgIHJldHVybiBuZXcgVmFzRm9ybU1vZGVsKFxuICAgICAgZHRvLmlkIHx8ICcnLFxuICAgICAgZHRvLmNyZWF0ZWQgfHwgJycsXG4gICAgICBkdG8uc2VydmVyQ3JlYXRlZCB8fCAnJyxcbiAgICAgIGR0by5jcmVhdGVkQnkgfHwgJycsXG4gICAgICBkdG8ubW9kaWZpZWQgfHwgJycsXG4gICAgICBkdG8uc2VydmVyTW9kaWZpZWQgfHwgJycsXG4gICAgICBkdG8ubW9kaWZpZWRCeSB8fCAnJyxcbiAgICAgIGR0by5hY2NvdW50IHx8ICcnLFxuICAgICAgZHRvLmFjY2Vzc0dyb3VwIHx8ICcnLFxuICAgICAgZHRvLmpvYlR5cGUgfHwgJycsXG4gICAgICBkdG8udGl0bGUgfHwgJycsXG4gICAgICBkdG8uZGVzY3JpcHRpb24gfHwgJycsXG4gICAgICAoZHRvLmdyb3VwcyB8fCBbXSlcbiAgICAgICAgLnNvcnQoKGEsIGIpID0+IGEuc2VxdWVuY2UgLSBiLnNlcXVlbmNlKVxuICAgICAgICAubWFwKGcgPT4gVmFzR3JvdXBNb2RlbC5mcm9tRHRvKGcpKSxcbiAgICAgIGR0by5keW5hbWljRGVzY3JpcHRvciB8fCAnJyxcbiAgICAgIGR0by5pbmRleE5hbWUgfHwgJycsXG4gICAgICBkdG8ucGlwZWxpbmVOYW1lIHx8ICcnLFxuICAgICAgZHRvLmNvbmZpZyB8fCAnJyxcbiAgICAgIGR0by5nZW9Mb2NhdGlvbkVuYWJsZWQgfHwgZmFsc2UsXG4gICAgICBkdG8uZmlsZXNFbmFibGVkIHx8IGZhbHNlXG4gICAgKTtcbiAgfVxuXG4gIGFkZENvbnRyb2xUeXBlc1RvQ29udHJvbChjb250cm9sVHlwZXM6IEFycmF5PFZhc0NvbnRyb2xUeXBlRHRvPik6IHZvaWQge1xuICAgIGNvbnN0IGNvbnRyb2xUeXBlTW9kZWxzID0gY29udHJvbFR5cGVzXG4gICAgICAubWFwKGN0ID0+IFZhc0NvbnRyb2xUeXBlTW9kZWwuZnJvbUR0byhjdCkpXG4gICAgdGhpcy5ncm91cHNcbiAgICAgIC5mb3JFYWNoKGdyb3VwID0+IHtcbiAgICAgICAgZ3JvdXAuY29udHJvbHNcbiAgICAgICAgICAuZm9yRWFjaChjb250cm9sID0+IHtcbiAgICAgICAgICAgIGNvbnRyb2wuY29udHJvbFR5cGVNb2RlbCA9IGNvbnRyb2xUeXBlTW9kZWxzXG4gICAgICAgICAgICAgIC5maW5kKGN0bSA9PiBjdG0uaWQgPT09IGNvbnRyb2wuY29udHJvbFR5cGUpXG4gICAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gaWRcbiAgICogQHJldHVybiB7VmFzQ29udHJvbE1vZGVsIHwgdW5kZWZpbmVkfVxuICAgKi9cbiAgZmluZENvbnRyb2xNb2RlbEJ5SWQoaWQ6IHN0cmluZyk6IFZhc0NvbnRyb2xNb2RlbCB8IHVuZGVmaW5lZCB7XG4gICAgbGV0IHJlc3VsdDtcbiAgICB0aGlzLmdyb3Vwc1xuICAgICAgLmZpbmQoZ3JvdXAgPT4gZ3JvdXAuY29udHJvbHNcbiAgICAgICAgLmZpbmQoY29udHJvbCA9PiB7XG4gICAgICAgICAgaWYgKGNvbnRyb2wuaWQgIT09IGlkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIHJlc3VsdCA9IGNvbnRyb2w7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0pKTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyoqXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lXG4gICAqIEByZXR1cm4ge1Zhc0NvbnRyb2xNb2RlbCB8IHVuZGVmaW5lZH1cbiAgICovXG4gIGZpbmRDb250cm9sTW9kZWxCeU5hbWUobmFtZTogc3RyaW5nKTogVmFzQ29udHJvbE1vZGVsIHwgdW5kZWZpbmVkIHtcbiAgICBsZXQgcmVzdWx0O1xuICAgIHRoaXMuZ3JvdXBzXG4gICAgICAuZmluZChncm91cCA9PiBncm91cC5jb250cm9sc1xuICAgICAgICAuZmluZChjb250cm9sID0+IHtcbiAgICAgICAgICBpZiAoY29udHJvbC5uYW1lICE9PSBuYW1lKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIHJlc3VsdCA9IGNvbnRyb2w7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0pKTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyoqXG4gICAqXG4gICAqIEByZXR1cm4ge0FycmF5PEFycmF5PHN0cmluZz4+fVxuICAgKi9cbiAgZ2V0Q2FtZXJhQ29udHJvbFBhdGhzKCk6IEFycmF5PEFycmF5PHN0cmluZz4+IHtcbiAgICBjb25zdCBwYXRoczogc3RyaW5nW11bXSA9IFtdO1xuICAgIHRoaXMuZ3JvdXBzLmZvckVhY2goZ3JvdXAgPT4ge1xuICAgICAgZ3JvdXAuY29udHJvbHMuZm9yRWFjaChjb250cm9sID0+IHtcbiAgICAgICAgaWYgKGNvbnRyb2wuY29udHJvbFR5cGVNb2RlbD8ubmFtZSAhPT0gJ2NhbWVyYScpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgcGF0aHMucHVzaChbZ3JvdXAubmFtZSwgY29udHJvbC5zYWZlTmFtZV0pO1xuICAgICAgfSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHBhdGhzO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7VmFzSm9iTW9kZWx9IGpvYk1vZGVsXG4gICAqIEByZXR1cm4ge0FycmF5PHtpZDogc3RyaW5nLCB2YWx1ZTogVmFzRmllbGREdG9WYWx1ZX0+fVxuICAgKi9cbiAgZ2V0VmFsdWVzQnlDb250cm9sSWQoXG4gICAgam9iTW9kZWw6IFZhc0pvYk1vZGVsXG4gICk6IEFycmF5PHtpZDogc3RyaW5nLCB2YWx1ZTogVmFzRmllbGREdG9WYWx1ZSB8IHVuZGVmaW5lZH0+IHtcbiAgICBjb25zdCBpdGVtczogQXJyYXk8e2lkOiBzdHJpbmcsIHZhbHVlOiBWYXNGaWVsZER0b1ZhbHVlIHwgdW5kZWZpbmVkfT4gPSBbXTtcbiAgICB0aGlzLmdyb3Vwc1xuICAgICAgLmZvckVhY2goZ3JvdXAgPT4ge1xuICAgICAgICBncm91cC5jb250cm9sc1xuICAgICAgICAgIC5mb3JFYWNoKGNvbnRyb2wgPT4ge1xuICAgICAgICAgICAgaXRlbXMucHVzaCh7XG4gICAgICAgICAgICAgIGlkOiBjb250cm9sLmlkLFxuICAgICAgICAgICAgICB2YWx1ZTogam9iTW9kZWwuZ2V0VmFsdWVCeVBhdGgoW2dyb3VwLm5hbWUsIGNvbnRyb2wuc2FmZU5hbWVdKVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICByZXR1cm4gaXRlbXM7XG4gIH1cblxuICAvKipcbiAgICogQHJldHVybiB7VmFzRm9ybUR0b31cbiAgICovXG4gIHRvRHRvKCk6IFZhc0Zvcm1EdG8ge1xuICAgIHJldHVybiB7XG4gICAgICBpZDogdGhpcy5pZCxcbiAgICAgIGNyZWF0ZWQ6IHRoaXMuY3JlYXRlZCxcbiAgICAgIHNlcnZlckNyZWF0ZWQ6IHRoaXMuc2VydmVyQ3JlYXRlZCxcbiAgICAgIGNyZWF0ZWRCeTogdGhpcy5jcmVhdGVkQnksXG4gICAgICBtb2RpZmllZDogdGhpcy5tb2RpZmllZCxcbiAgICAgIHNlcnZlck1vZGlmaWVkOiB0aGlzLnNlcnZlck1vZGlmaWVkLFxuICAgICAgbW9kaWZpZWRCeTogdGhpcy5tb2RpZmllZEJ5LFxuICAgICAgYWNjb3VudDogdGhpcy5hY2NvdW50LFxuICAgICAgYWNjZXNzR3JvdXA6IHRoaXMuYWNjZXNzR3JvdXAsXG4gICAgICBqb2JUeXBlOiB0aGlzLmpvYlR5cGUsXG4gICAgICB0aXRsZTogdGhpcy50aXRsZSxcbiAgICAgIGRlc2NyaXB0aW9uOiB0aGlzLmRlc2NyaXB0aW9uLFxuICAgICAgZ3JvdXBzOiB0aGlzLmdyb3Vwcy5tYXAoZ3JvdXAgPT4gZ3JvdXAudG9EdG8oKSksXG4gICAgICBkeW5hbWljRGVzY3JpcHRvcjogdGhpcy5keW5hbWljRGVzY3JpcHRvcixcbiAgICAgIGluZGV4TmFtZTogdGhpcy5pbmRleE5hbWUsXG4gICAgICBwaXBlbGluZU5hbWU6IHRoaXMucGlwZWxpbmVOYW1lLFxuICAgICAgY29uZmlnOiB0aGlzLmNvbmZpZyxcbiAgICAgIGdlb0xvY2F0aW9uRW5hYmxlZDogdGhpcy5nZW9Mb2NhdGlvbkVuYWJsZWQsXG4gICAgICBmaWxlc0VuYWJsZWQ6IHRoaXMuZmlsZXNFbmFibGVkXG4gICAgfTtcbiAgfVxufVxuXG4iXX0=
@@ -1,9 +1,12 @@
1
+ import { isFileDto } from './vas-file.dto';
1
2
  import { UUID } from 'angular2-uuid';
2
3
  import moment from 'moment';
3
4
  import { getValueByPath } from '../utils/get-value-by-path';
4
5
  import { VasFieldModel } from './vas-field.model';
5
6
  import { VasRestrictedAccountObjectModel } from './vas-restricted-account-object.model';
6
7
  import { getEmptyGeoLocation } from '../model/geo-location';
8
+ import { isCameraControlValueV1 } from '../control-value/vas-camera-control-value.model';
9
+ import { isArrayString } from '../utils/is-array-string';
7
10
  /**
8
11
  * JobModel
9
12
  */
@@ -144,6 +147,51 @@ export class VasJobModel extends VasRestrictedAccountObjectModel {
144
147
  }, {});
145
148
  return fields;
146
149
  }
150
+ /**
151
+ * Returns an object describing how many attachments were added to this job
152
+ * (camera controls and files), and how many have not been uploaded yet.
153
+ *
154
+ * @param formModel instance of {@link VasFormModel} that was used when the
155
+ * job was created
156
+ */
157
+ getFilesUploadStatus(formModel) {
158
+ const pathsWithValue = formModel
159
+ .getCameraControlPaths()
160
+ .map(path => {
161
+ const value = this.getValueByPath(path);
162
+ if (value && !!value.id) {
163
+ return path;
164
+ }
165
+ return null;
166
+ })
167
+ .filter(path => path !== null ? path : null)
168
+ .filter(isArrayString);
169
+ let total = pathsWithValue.length;
170
+ total += this.files.length;
171
+ // calculate the number of camera images still to upload
172
+ let pending = pathsWithValue
173
+ .map(path => this.getValueByPath(path))
174
+ .map((value) => {
175
+ if (isFileDto(value)) {
176
+ return value.id && value.status !== 'COMPLETE';
177
+ }
178
+ else if (isCameraControlValueV1(value)) {
179
+ // if url is not set, it hasn't been uploaded
180
+ return value.id && !value.url;
181
+ }
182
+ return false;
183
+ })
184
+ .filter(hasUploaded => hasUploaded)
185
+ .length;
186
+ // add total from files that are pending
187
+ pending += this.files
188
+ .filter(value => value.status !== 'COMPLETE')
189
+ .length;
190
+ return {
191
+ pending,
192
+ total
193
+ };
194
+ }
147
195
  /**
148
196
  * This method will hydrate the `fields` property of the model. The reason for
149
197
  * this is that we have different ways to store the field data. One way, is
@@ -253,7 +301,6 @@ export class VasJobModel extends VasRestrictedAccountObjectModel {
253
301
  this.fields = fields;
254
302
  }
255
303
  /**
256
-
257
304
  * @param {string[]} path path segments
258
305
  * @return {void}
259
306
  */
@@ -453,4 +500,4 @@ export class VasJobModel extends VasRestrictedAccountObjectModel {
453
500
  };
454
501
  }
455
502
  }
456
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFzLWpvYi5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Zhcy1saWIvc3JjL2xpYi9lbnRpdHkvdmFzLWpvYi5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JDLE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUM1QixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFHNUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBR2xELE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ3hGLE9BQU8sRUFBZSxtQkFBbUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBb0J6RTs7R0FFRztBQUNILE1BQU0sT0FBTyxXQUFZLFNBQVEsK0JBQStCO0lBQzlEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09BeUJHO0lBQ0gsWUFDa0IsRUFBVSxFQUNWLE9BQWUsRUFDZixhQUFxQixFQUNyQixTQUFpQixFQUNqQixRQUFnQixFQUNoQixjQUFzQixFQUN0QixVQUFrQixFQUNsQixPQUFlLEVBQ2YsV0FBbUIsRUFDNUIsU0FBaUIsRUFDakIsT0FBZSxFQUNmLFNBQWlCLEVBQ2pCLE9BQWUsRUFDZixVQUFrQixFQUNsQixNQUFjLEVBQ2QsY0FBc0IsRUFDdEIsYUFBcUIsRUFDckIsYUFBcUIsRUFDckIsT0FBZSxFQUNmLE1BQTBCLEVBQzFCLEtBQXdCLEVBQ3hCLG9CQUE0QixFQUM1QixxQkFBNkIsRUFDN0IsV0FBd0I7UUFFL0IsS0FBSyxDQUNILEVBQUUsRUFDRixPQUFPLEVBQ1AsYUFBYSxFQUNiLFNBQVMsRUFDVCxRQUFRLEVBQ1IsY0FBYyxFQUNkLFVBQVUsRUFDVixPQUFPLEVBQ1AsV0FBVyxDQUNaLENBQUM7UUFuQ2MsT0FBRSxHQUFGLEVBQUUsQ0FBUTtRQUNWLFlBQU8sR0FBUCxPQUFPLENBQVE7UUFDZixrQkFBYSxHQUFiLGFBQWEsQ0FBUTtRQUNyQixjQUFTLEdBQVQsU0FBUyxDQUFRO1FBQ2pCLGFBQVEsR0FBUixRQUFRLENBQVE7UUFDaEIsbUJBQWMsR0FBZCxjQUFjLENBQVE7UUFDdEIsZUFBVSxHQUFWLFVBQVUsQ0FBUTtRQUNsQixZQUFPLEdBQVAsT0FBTyxDQUFRO1FBQ2YsZ0JBQVcsR0FBWCxXQUFXLENBQVE7UUFDNUIsY0FBUyxHQUFULFNBQVMsQ0FBUTtRQUNqQixZQUFPLEdBQVAsT0FBTyxDQUFRO1FBQ2YsY0FBUyxHQUFULFNBQVMsQ0FBUTtRQUNqQixZQUFPLEdBQVAsT0FBTyxDQUFRO1FBQ2YsZUFBVSxHQUFWLFVBQVUsQ0FBUTtRQUNsQixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsbUJBQWMsR0FBZCxjQUFjLENBQVE7UUFDdEIsa0JBQWEsR0FBYixhQUFhLENBQVE7UUFDckIsa0JBQWEsR0FBYixhQUFhLENBQVE7UUFDckIsWUFBTyxHQUFQLE9BQU8sQ0FBUTtRQUNmLFdBQU0sR0FBTixNQUFNLENBQW9CO1FBQzFCLFVBQUssR0FBTCxLQUFLLENBQW1CO1FBQ3hCLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBUTtRQUM1QiwwQkFBcUIsR0FBckIscUJBQXFCLENBQVE7UUFDN0IsZ0JBQVcsR0FBWCxXQUFXLENBQWE7SUFhakMsQ0FBQztJQUVEOzs7T0FHRztJQUNILElBQUksS0FBSztRQUNQLE9BQU8sSUFBVyxDQUFDO0lBQ3JCLENBQUM7SUFFRDs7O09BR0c7SUFDSCxJQUFJLGlCQUFpQjtRQUNuQixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7UUFDMUMsT0FBTyxNQUFNO2FBQ1YsbUJBQW1CLENBQUMsSUFBSSxDQUFDO2FBQ3pCLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFFRDs7O09BR0c7SUFDSCxJQUFJLGdCQUFnQjtRQUNsQixPQUFPLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxNQUFNLENBQUMsS0FBSztRQUNqQixPQUFPLElBQUksV0FBVztRQUNwQixtQ0FBbUM7UUFDbkMsSUFBSSxDQUFDLElBQUksRUFBRSxFQUNYLEVBQUUsRUFDRixFQUFFLEVBQ0YsRUFBRSxFQUNGLEVBQUUsRUFDRixFQUFFLEVBQ0YsRUFBRSxFQUNGLEVBQUUsRUFDRixFQUFFLEVBQ0YsRUFBRSxFQUNGLEVBQUUsRUFDRixFQUFFLEVBQ0YsRUFBRSxFQUNGLEVBQUUsRUFDRixFQUFFLEVBQ0YsTUFBTSxFQUFFLENBQUMsU0FBUyxFQUFFLEVBQ3BCLENBQUMsRUFDRCxFQUFFLEVBQ0YsQ0FBQyxFQUNELEVBQUUsRUFDRixFQUFFLEVBQ0YsRUFBRSxFQUNGLEVBQUUsRUFDRixtQkFBbUIsRUFBRSxDQUN0QixDQUFDO0lBQ0osQ0FBQztJQUVEOzs7T0FHRztJQUNJLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBMEI7UUFDOUMsTUFBTSxLQUFLLEdBQUcsSUFBSSxXQUFXO1FBQzNCLG1DQUFtQztRQUNuQyxNQUFNLENBQUMsRUFBRSxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFDeEIsTUFBTSxDQUFDLE9BQU8sSUFBSSxFQUFFLEVBQ3BCLE1BQU0sQ0FBQyxhQUFhLElBQUksRUFBRSxFQUMxQixNQUFNLENBQUMsU0FBUyxJQUFJLEVBQUUsRUFDdEIsTUFBTSxDQUFDLFFBQVEsSUFBSSxFQUFFLEVBQ3JCLE1BQU0sQ0FBQyxjQUFjLElBQUksRUFBRSxFQUMzQixNQUFNLENBQUMsVUFBVSxJQUFJLEVBQUUsRUFDdkIsTUFBTSxDQUFDLE9BQU8sSUFBSSxFQUFFLEVBQ3BCLE1BQU0sQ0FBQyxXQUFXLElBQUksRUFBRSxFQUN4QixNQUFNLENBQUMsU0FBUyxJQUFJLEVBQUUsRUFDdEIsTUFBTSxDQUFDLE9BQU8sSUFBSSxFQUFFLEVBQ3BCLE1BQU0sQ0FBQyxTQUFTLElBQUksRUFBRSxFQUN0QixNQUFNLENBQUMsT0FBTyxJQUFJLEVBQUUsRUFDcEIsTUFBTSxDQUFDLFVBQVUsSUFBSSxFQUFFLEVBQ3ZCLE1BQU0sQ0FBQyxNQUFNLElBQUksRUFBRSxFQUNuQixNQUFNLENBQUMsY0FBYyxJQUFJLE1BQU0sRUFBRSxDQUFDLFNBQVMsRUFBRSxFQUM3QyxNQUFNLENBQUMsYUFBYSxJQUFJLENBQUMsRUFDekIsTUFBTSxDQUFDLGFBQWEsSUFBSSxFQUFFLEVBQzFCLE1BQU0sQ0FBQyxPQUFPLElBQUksQ0FBQyxFQUNuQixNQUFNLENBQUMsTUFBTSxJQUFJLEVBQUUsRUFDbkIsTUFBTSxDQUFDLEtBQUssSUFBSSxFQUFFLEVBQ2xCLE1BQU0sQ0FBQyxvQkFBb0IsSUFBSSxFQUFFLEVBQ2pDLE1BQU0sQ0FBQyxxQkFBcUIsSUFBSSxFQUFFLEVBQ2xDLE1BQU0sQ0FBQyxXQUFXLElBQUksbUJBQW1CLEVBQUUsQ0FDNUMsQ0FBQztRQUNGLE1BQU0sU0FBUyxHQUFHLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQztRQUN6QyxNQUFNO2FBQ0gsSUFBSSxDQUFDLE1BQU0sQ0FBQzthQUNaLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7YUFDNUMsT0FBTyxDQUFDLENBQUMsR0FBVyxFQUFFLEVBQUUsQ0FDdkIsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBSSxNQUFzQyxDQUFDLEdBQUcsQ0FBQyxDQUNoRSxDQUFDO1FBQ0osT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsU0FBUyxDQUFDLFNBQXVCO1FBQy9CLE1BQU0sTUFBTSxHQUFzQyxFQUFFLENBQUM7UUFDckQsU0FBUyxDQUFDLE1BQU07YUFDYixPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDZixLQUFLLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRTtnQkFDL0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUMsa0JBQWtCLENBQUM7b0JBQ2xDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBQ3BELENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFDTCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNILFVBQVU7UUFDUixJQUFJLE1BQU0sR0FBc0MsRUFBRSxDQUFDO1FBQ25ELElBQUksQ0FBQyxpQkFBaUI7YUFDbkIsT0FBTyxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUU7WUFDckIsTUFBTTtpQkFDSCxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztpQkFDM0IsT0FBTyxDQUFDLFdBQVcsQ0FBQyxFQUFFO2dCQUNyQixNQUFNLGdCQUFnQixHQUFHLFdBQVcsQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUM3RCxNQUFNLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUM1QyxDQUFDLFNBQVMsRUFBRSxXQUFXLENBQUMsQ0FDekIsQ0FBQTtZQUNILENBQUMsQ0FBQyxDQUFBO1FBQ04sQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFBO1FBQ1IsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09BK0VHO0lBQ0gsYUFBYSxDQUNYLFNBQXVCLEVBQ3ZCLG9CQUF5QyxJQUFJLEdBQUcsRUFBa0IsRUFDbEUsWUFBNEI7UUFFNUIsTUFBTSxNQUFNLEdBQXVCLEVBQUUsQ0FBQztRQUN0QyxTQUFTLENBQUMsTUFBTTthQUNiLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNmLEtBQUssQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFO2dCQUUvQixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLEVBQUU7b0JBQ3ZDLE9BQU87aUJBQ1I7Z0JBRUQsSUFBSSxZQUFZLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRTtvQkFDeEQsT0FBTztpQkFDUjtnQkFFRCxNQUFNLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUM7b0JBQ2hDLGtFQUFrRTtvQkFDbEUsNkNBQTZDO29CQUM3QyxFQUFFLEVBQUUsaUJBQWlCLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFO29CQUNwRCxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87b0JBQ3JCLEdBQUcsRUFBRSxJQUFJLENBQUMsRUFBRTtvQkFDWixTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVM7b0JBQ3pCLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztvQkFDckIsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVO29CQUMzQixRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7b0JBQ3ZCLE9BQU8sRUFBRSxPQUFPLENBQUMsRUFBRTtvQkFDbkIsS0FBSyxFQUFFLElBQUksQ0FBQyxjQUFjLENBQ3hCLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQzNCO2lCQUNGLENBQUMsQ0FBQyxDQUFDO1lBQ04sQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUNMLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO0lBQ3ZCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsY0FBYyxDQUNaLE9BQWlCLEVBQUU7UUFFbkIsT0FBTyxjQUFjLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7T0FnQkc7SUFDSCxjQUFjLENBQUMsS0FBdUIsRUFBRSxPQUFpQixFQUFFO1FBQ3pELFFBQVEsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNuQixLQUFLLENBQUMsQ0FBQyxDQUFDO2dCQUNOLE9BQU87YUFDUjtZQUNELEtBQUssQ0FBQyxDQUFDLENBQUM7Z0JBQ0wsSUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQztnQkFDL0IsT0FBTzthQUNSO1lBQ0QsS0FBSyxDQUFDLENBQUMsQ0FBQztnQkFDTixtQ0FBbUM7Z0JBQ2xDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFzQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQztnQkFDM0UsT0FBTzthQUNSO1lBQ0QsS0FBSyxDQUFDLENBQUMsQ0FBQztnQkFDTixtQ0FBbUM7Z0JBQ2pDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFzQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBc0MsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUM7Z0JBQzFILE9BQU87YUFDUjtZQUNELE9BQU8sQ0FBQyxDQUFDO2dCQUNQLE1BQU0sS0FBSyxDQUFDLDRCQUE0QixDQUFDLENBQUM7YUFDM0M7U0FDRjtJQUNILENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksS0FBSyxDQUFDLFVBQVUsR0FBRyxLQUFLO1FBRTdCLElBQUksVUFBVSxFQUFFO1lBQ2QsT0FBTztnQkFDTCxFQUFFLEVBQUUsSUFBSSxDQUFDLEVBQUU7Z0JBQ1gsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPO2dCQUNyQixTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVM7Z0JBQ3pCLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTtnQkFDdkIsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVO2dCQUMzQixhQUFhLEVBQUUsSUFBSSxDQUFDLGFBQWE7Z0JBQ2pDLGNBQWMsRUFBRSxJQUFJLENBQUMsY0FBYztnQkFDbkMsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPO2dCQUNyQixXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVc7Z0JBQzdCLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUztnQkFDekIsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPO2dCQUNyQixTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVM7Z0JBQ3pCLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztnQkFDckIsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVO2dCQUMzQixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07Z0JBQ25CLGNBQWMsRUFBRSxJQUFJLENBQUMsY0FBYztnQkFDbkMsYUFBYSxFQUFFLElBQUksQ0FBQyxhQUFhO2dCQUNqQyxhQUFhLEVBQUUsSUFBSSxDQUFDLGFBQWE7Z0JBQ2pDLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztnQkFDckIsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNO2dCQUNuQixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7Z0JBQ2pCLG9CQUFvQixFQUFFLElBQUksQ0FBQyxvQkFBb0I7Z0JBQy9DLHFCQUFxQixFQUFFLElBQUksQ0FBQyxxQkFBcUI7Z0JBQ2pELFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVzthQUM5QixDQUFDO1NBQ0g7UUFFRCxNQUFNLEdBQUcsR0FBRyxFQUFpQyxDQUFDO1FBQzlDLENBQUMsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUM7YUFDbEQsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQ2QsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFFcEMsT0FBTyxHQUFVLENBQUM7SUFDcEIsQ0FBQztJQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09BeUJHO0lBQ0gsV0FBVyxDQUNULEtBQWEsRUFDYixVQUE4QjtRQUM1QixjQUFjLEVBQUUsQ0FBQztLQUNsQjtRQUdELElBQUksQ0FBQyxLQUFLLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFO1lBQ3ZDLE9BQU8sRUFBRSxDQUFDO1NBQ1g7UUFDRCxPQUFPLEtBQUssQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLENBQUMsS0FBYSxFQUFFLEtBQWEsRUFBRSxFQUFFO1lBQ2xFLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFFcEQsSUFBSSxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3RDLEdBQUcsR0FBRyxDQUFDLEdBQUcsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUN6QixNQUFNLEdBQUcsQ0FBQyxNQUFNLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUE7WUFFOUIsSUFBSSxVQUFVLEVBQUUsU0FBUyxHQUFXLEVBQUUsQ0FBQztZQUN2QyxJQUFJLE1BQU0sRUFBRTtnQkFDVixNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUN2QyxJQUFJLFVBQVUsS0FBSyxDQUFDLENBQUMsRUFBRTtvQkFDckIsVUFBVSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxDQUFDO29CQUM3QyxTQUFTLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFDLENBQUM7aUJBQzlDO3FCQUFNO29CQUNMLFVBQVUsR0FBRyxNQUFNLENBQUM7b0JBQ3BCLFNBQVMsR0FBRyxFQUFFLENBQUM7aUJBQ2hCO2dCQUNELFVBQVUsR0FBRyxDQUFDLFVBQVUsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDdkMsU0FBUyxHQUFHLENBQUMsU0FBUyxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO2FBQ3RDO1lBQ0QsTUFBTSxJQUFJLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUM1QixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDO1lBQ3JDLElBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQztZQUNoQixJQUFJLFNBQVMsS0FBSyxLQUFLLEVBQUU7Z0JBQ3ZCLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7YUFDdkQ7aUJBQU0sSUFBSSxTQUFTLEtBQUssUUFBUSxFQUFFO2dCQUNqQyxNQUFNLEdBQUcsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO2FBQ3JFO2lCQUFNLElBQUksU0FBUyxDQUFDLE1BQU0sRUFBRTtnQkFDM0IsSUFBSSxPQUFPLENBQUMsT0FBTyxFQUFFO29CQUNuQixJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEtBQUssU0FBUyxFQUFFO3dCQUM1QyxPQUFPLENBQUMsS0FBSyxDQUNYLGFBQWEsU0FBUyxtQ0FBbUMsQ0FDMUQsQ0FBQzt3QkFDRixNQUFNLEdBQUcsRUFBRSxDQUFDO3FCQUNiO3lCQUFNO3dCQUNMLE1BQU0sR0FBRyxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQzs2QkFDOUQsUUFBUSxFQUFFLENBQUM7cUJBQ2Y7aUJBQ0Y7cUJBQU07b0JBQ0wsT0FBTyxDQUFDLEtBQUssQ0FDWCxhQUFhLFNBQVMseUNBQXlDLENBQ2hFLENBQUM7b0JBQ0YsT0FBTyxFQUFFLENBQUM7aUJBQ1g7YUFDRjtpQkFBTTtnQkFDTCxPQUFPLEVBQUUsQ0FBQzthQUNYO1lBR0QsSUFBSSxVQUFVLElBQUksTUFBTSxFQUFFO2dCQUN4QixRQUFRLFVBQVUsRUFBRTtvQkFDbEIsS0FBSyxNQUFNLENBQUMsQ0FBQzt3QkFDWCxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUM7NkJBQ2xCLFNBQVMsQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDOzZCQUNqQyxNQUFNLENBQUMsU0FBUyxJQUFJLEVBQUUsQ0FBQyxDQUFDO3FCQUM1QjtvQkFDRCxPQUFPLENBQUMsQ0FBQzt3QkFDUCxPQUFPLENBQUMsSUFBSSxDQUFDLG1CQUFtQixFQUFFLFVBQVUsQ0FBQyxDQUFDO3FCQUMvQztpQkFDRjthQUNGO1lBRUQsT0FBTyxNQUFNLENBQUM7UUFDaEIsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDWixDQUFDO0lBQUEsQ0FBQztJQUVGOztPQUVHO0lBQ00sUUFBUTtRQUNmLE9BQU87WUFDTCxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQUU7WUFDbkIsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTLElBQUksR0FBRztZQUNoQyxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sSUFBSSxHQUFHO1lBQzVCLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTyxJQUFJLEdBQUc7WUFDNUIsV0FBVyxFQUFFLElBQUksQ0FBQyxXQUFXLElBQUksR0FBRztZQUNwQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVMsSUFBSSxHQUFHO1lBQ2hDLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVSxJQUFJLEdBQUc7WUFDbEMsY0FBYyxFQUFFLElBQUksQ0FBQyxjQUFjLElBQUksQ0FBQztZQUN4QyxhQUFhLEVBQUUsSUFBSSxDQUFDLGFBQWEsSUFBSSxDQUFDO1lBQ3RDLFFBQVEsRUFBRSxJQUFJLENBQUMsTUFBTSxJQUFJLEdBQUc7U0FDN0IsQ0FBQztJQUNKLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFZhc0ZpbGVEdG8gfSBmcm9tICcuL3Zhcy1maWxlLmR0byc7XG5pbXBvcnQgeyBVVUlEIH0gZnJvbSAnYW5ndWxhcjItdXVpZCc7XG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgeyBnZXRWYWx1ZUJ5UGF0aCB9IGZyb20gJy4uL3V0aWxzL2dldC12YWx1ZS1ieS1wYXRoJztcbmltcG9ydCB7IFZhc0Jhc2VEdG8gfSBmcm9tICcuL3Zhcy1iYXNlLmR0byc7XG5pbXBvcnQgeyBWYXNGaWVsZER0bywgVmFzRmllbGREdG9WYWx1ZSB9IGZyb20gJy4vdmFzLWZpZWxkLmR0byc7XG5pbXBvcnQgeyBWYXNGaWVsZE1vZGVsIH0gZnJvbSAnLi92YXMtZmllbGQubW9kZWwnO1xuaW1wb3J0IHsgVmFzRm9ybU1vZGVsIH0gZnJvbSAnLi92YXMtZm9ybS5tb2RlbCc7XG5pbXBvcnQgeyBWYXNKb2JEdG8gfSBmcm9tICcuL3Zhcy1qb2IuZHRvJztcbmltcG9ydCB7IFZhc1Jlc3RyaWN0ZWRBY2NvdW50T2JqZWN0TW9kZWwgfSBmcm9tICcuL3Zhcy1yZXN0cmljdGVkLWFjY291bnQtb2JqZWN0Lm1vZGVsJztcbmltcG9ydCB7IEdlb0xvY2F0aW9uLCBnZXRFbXB0eUdlb0xvY2F0aW9uIH0gZnJvbSAnLi4vbW9kZWwvZ2VvLWxvY2F0aW9uJztcblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZhc0pvYk1vZGVsRHluYW1pY0ludGVyZmFjZSB7XG4gIFtzOiBzdHJpbmddOiBzdHJpbmcgfCBudW1iZXIgfCBSZWNvcmQ8c3RyaW5nLCBWYXNGaWVsZER0b1ZhbHVlPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQYXJzZVN5bnRheE9wdGlvbnMge1xuICAvLyBUaGlzIHZhbHVlIHdpbGwgYmUgdXNlZCB0byBhZGp1c3QgYW55IGRhdGV0aW1lIHZhbHVlcyB0aGF0IGFyZSByZWZlcmVuY2VkXG4gIC8vIGluIHRoZSBzeW50YXggc3RyaW5nLiBTZWVcbiAgLy8gaHR0cHM6Ly9tb21lbnRqc2NvbS5yZWFkdGhlZG9jcy5pby9lbi9sYXRlc3QvbW9tZW50LzAzLW1hbmlwdWxhdGluZy8wOS11dGMtb2Zmc2V0L1xuICAvLyBmb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBob3cgYG1vbWVudGAgd2lsbCBoYW5kbGUgdGhlIHZhbHVlLlxuICB0aW1lWm9uZU9mZnNldDogbnVtYmVyLFxuICAvLyB0aGlzIGRpY3Rpb25hcnkgY2FuIGJlIHBhc3NlZCBpbiB0byBjb250YWluIG90aGVyIG9iamVjdHMgdG8gYmUgcmVmZXJlbmNlZFxuICAvLyBpbiB0aGUgc3ludGF4LiBGb3IgZXhhbXBsZSBpZiB3ZSBoYXZlIHtqb2IuZm9vfSB0aGlzIHdpbGwgcmVmZXJlbmNlIHRoZVxuICAvLyBqb2IncyBgZm9vYCBwcm9wZXJ0eSwgaG93ZXZlciBpZiB3ZSBoYXZlIFwicmVwb3J0TGF5b3V0LnRpdGxlXCIgdGhpcyB3aWxsXG4gIC8vIGV4cGVjdCB0byBmaW5kIGEgcHJvcGVydHkgb2YgYG9iamVjdHNgIGNhbGxlZCBgcmVwb3J0TGF5b3V0YCB3aGljaCB3aWxsXG4gIC8vIGhhdmUgYSBwcm9wZXJ0eSBjYWxsZWQgYHRpdGxlYFxuICBvYmplY3RzPzogUmVjb3JkPHN0cmluZywgUGFydGlhbDxWYXNCYXNlRHRvPiB8IFJlY29yZDxzdHJpbmcsIFZhc0ZpZWxkRHRvVmFsdWU+Pjtcbn1cblxuLyoqXG4gKiBKb2JNb2RlbFxuICovXG5leHBvcnQgY2xhc3MgVmFzSm9iTW9kZWwgZXh0ZW5kcyBWYXNSZXN0cmljdGVkQWNjb3VudE9iamVjdE1vZGVsIHtcbiAgLyoqXG4gICAqIEBwYXJhbSBpZFxuICAgKiBAcGFyYW0gY3JlYXRlZFxuICAgKiBAcGFyYW0gc2VydmVyQ3JlYXRlZFxuICAgKiBAcGFyYW0gY3JlYXRlZEJ5XG4gICAqIEBwYXJhbSBtb2RpZmllZFxuICAgKiBAcGFyYW0gc2VydmVyTW9kaWZpZWRcbiAgICogQHBhcmFtIG1vZGlmaWVkQnlcbiAgICogQHBhcmFtIGFjY291bnRcbiAgICogQHBhcmFtIGFjY2Vzc0dyb3VwXG4gICAqIEBwYXJhbSByZWZlcmVuY2VcbiAgICogQHBhcmFtIGpvYkRhdGVcbiAgICogQHBhcmFtIGpvYlN0YXR1c1xuICAgKiBAcGFyYW0gam9iVHlwZVxuICAgKiBAcGFyYW0gYXNzaWduZWVJZFxuICAgKiBAcGFyYW0gZm9ybUlkXG4gICAqIEBwYXJhbSB0aW1lWm9uZU9mZnNldFxuICAgKiBAcGFyYW0gcGVuZGluZ0ZpZWxkc1xuICAgKiBAcGFyYW0gY2hpbGRNb2RpZmllZFxuICAgKiBAcGFyYW0gdmVyc2lvblxuICAgKiBAcGFyYW0gZmllbGRzXG4gICAqIEBwYXJhbSBmaWxlcyxcbiAgICogQHBhcmFtIGNyZWF0ZWRCeURpc3BsYXlOYW1lXG4gICAqIEBwYXJhbSBtb2RpZmllZEJ5RGlzcGxheU5hbWVcbiAgICogQHBhcmFtIGdlb0xvY2F0aW9uXG4gICAqL1xuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgb3ZlcnJpZGUgaWQ6IHN0cmluZyxcbiAgICBwdWJsaWMgb3ZlcnJpZGUgY3JlYXRlZDogc3RyaW5nLFxuICAgIHB1YmxpYyBvdmVycmlkZSBzZXJ2ZXJDcmVhdGVkOiBzdHJpbmcsXG4gICAgcHVibGljIG92ZXJyaWRlIGNyZWF0ZWRCeTogc3RyaW5nLFxuICAgIHB1YmxpYyBvdmVycmlkZSBtb2RpZmllZDogc3RyaW5nLFxuICAgIHB1YmxpYyBvdmVycmlkZSBzZXJ2ZXJNb2RpZmllZDogc3RyaW5nLFxuICAgIHB1YmxpYyBvdmVycmlkZSBtb2RpZmllZEJ5OiBzdHJpbmcsXG4gICAgcHVibGljIG92ZXJyaWRlIGFjY291bnQ6IHN0cmluZyxcbiAgICBwdWJsaWMgb3ZlcnJpZGUgYWNjZXNzR3JvdXA6IHN0cmluZyxcbiAgICBwdWJsaWMgcmVmZXJlbmNlOiBzdHJpbmcsXG4gICAgcHVibGljIGpvYkRhdGU6IHN0cmluZyxcbiAgICBwdWJsaWMgam9iU3RhdHVzOiBzdHJpbmcsXG4gICAgcHVibGljIGpvYlR5cGU6IHN0cmluZyxcbiAgICBwdWJsaWMgYXNzaWduZWVJZDogc3RyaW5nLFxuICAgIHB1YmxpYyBmb3JtSWQ6IHN0cmluZyxcbiAgICBwdWJsaWMgdGltZVpvbmVPZmZzZXQ6IG51bWJlcixcbiAgICBwdWJsaWMgcGVuZGluZ0ZpZWxkczogbnVtYmVyLFxuICAgIHB1YmxpYyBjaGlsZE1vZGlmaWVkOiBzdHJpbmcsXG4gICAgcHVibGljIHZlcnNpb246IG51bWJlcixcbiAgICBwdWJsaWMgZmllbGRzOiBBcnJheTxWYXNGaWVsZER0bz4sXG4gICAgcHVibGljIGZpbGVzOiBBcnJheTxWYXNGaWxlRHRvPixcbiAgICBwdWJsaWMgY3JlYXRlZEJ5RGlzcGxheU5hbWU6IHN0cmluZyxcbiAgICBwdWJsaWMgbW9kaWZpZWRCeURpc3BsYXlOYW1lOiBzdHJpbmcsXG4gICAgcHVibGljIGdlb0xvY2F0aW9uOiBHZW9Mb2NhdGlvblxuICApIHtcbiAgICBzdXBlcihcbiAgICAgIGlkLFxuICAgICAgY3JlYXRlZCxcbiAgICAgIHNlcnZlckNyZWF0ZWQsXG4gICAgICBjcmVhdGVkQnksXG4gICAgICBtb2RpZmllZCxcbiAgICAgIHNlcnZlck1vZGlmaWVkLFxuICAgICAgbW9kaWZpZWRCeSxcbiAgICAgIGFjY291bnQsXG4gICAgICBhY2Nlc3NHcm91cFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGlzIHdpdGggdGhlIGR5bmFtaWMgaW50ZXJmYWNlXG4gICAqIEByZXR1cm4ge1Zhc0pvYk1vZGVsRHluYW1pY0ludGVyZmFjZX1cbiAgICovXG4gIGdldCAkdGhpcygpOiBWYXNKb2JNb2RlbER5bmFtaWNJbnRlcmZhY2Uge1xuICAgIHJldHVybiB0aGlzIGFzIGFueTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgbGlzdCBvZiBKb2IgZHluYW1pYyBwcm9wZXJ0aWVzIGkuZS4gdGhvc2UgdGhhdCBhcmUgYWRkZWQgYnkgdGhlXG4gICAqIGR5bmFtaWMgZm9ybXNcbiAgICovXG4gIGdldCBkeW5hbWljUHJvcGVydGllcygpOiBBcnJheTxzdHJpbmc+IHtcbiAgICBjb25zdCBuYXRpdmVQcm9wcyA9IHRoaXMuc3RhdGljUHJvcGVydGllcztcbiAgICByZXR1cm4gT2JqZWN0XG4gICAgICAuZ2V0T3duUHJvcGVydHlOYW1lcyh0aGlzKVxuICAgICAgLmZpbHRlcihwcm9wID0+ICFuYXRpdmVQcm9wcy5pbmNsdWRlcyhwcm9wKSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIGxpc3Qgb2YgSm9iIHN0YXRpYyBwcm9wZXJ0aWVzIGkuZS4gdGhvc2UgdGhhdCBhcmUgZGVjbGFyZWQgYnlcbiAgICogdGhlIHR5cGVcbiAgICovXG4gIGdldCBzdGF0aWNQcm9wZXJ0aWVzKCk6IEFycmF5PHN0cmluZz4ge1xuICAgIHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhWYXNKb2JNb2RlbC5lbXB0eSgpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJuIHtWYXNKb2JNb2RlbH1cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZW1wdHkoKTogVmFzSm9iTW9kZWwge1xuICAgIHJldHVybiBuZXcgVmFzSm9iTW9kZWwoXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbmV3LWNhcFxuICAgICAgVVVJRC5VVUlEKCksXG4gICAgICAnJyxcbiAgICAgICcnLFxuICAgICAgJycsXG4gICAgICAnJyxcbiAgICAgICcnLFxuICAgICAgJycsXG4gICAgICAnJyxcbiAgICAgICcnLFxuICAgICAgJycsXG4gICAgICAnJyxcbiAgICAgICcnLFxuICAgICAgJycsXG4gICAgICAnJyxcbiAgICAgICcnLFxuICAgICAgbW9tZW50KCkudXRjT2Zmc2V0KCksXG4gICAgICAwLFxuICAgICAgJycsXG4gICAgICAwLFxuICAgICAgW10sXG4gICAgICBbXSxcbiAgICAgICcnLFxuICAgICAgJycsXG4gICAgICBnZXRFbXB0eUdlb0xvY2F0aW9uKClcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7VmFzSm9iRHRvfSBqb2JEdG9cbiAgICogQHJldHVybiB7VmFzSm9iTW9kZWx9XG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21EdG8oam9iRHRvOiBQYXJ0aWFsPFZhc0pvYkR0bz4pOiBWYXNKb2JNb2RlbCB7XG4gICAgY29uc3QgbW9kZWwgPSBuZXcgVmFzSm9iTW9kZWwoXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbmV3LWNhcFxuICAgICAgam9iRHRvLmlkIHx8IFVVSUQuVVVJRCgpLFxuICAgICAgam9iRHRvLmNyZWF0ZWQgfHwgJycsXG4gICAgICBqb2JEdG8uc2VydmVyQ3JlYXRlZCB8fCAnJyxcbiAgICAgIGpvYkR0by5jcmVhdGVkQnkgfHwgJycsXG4gICAgICBqb2JEdG8ubW9kaWZpZWQgfHwgJycsXG4gICAgICBqb2JEdG8uc2VydmVyTW9kaWZpZWQgfHwgJycsXG4gICAgICBqb2JEdG8ubW9kaWZpZWRCeSB8fCAnJyxcbiAgICAgIGpvYkR0by5hY2NvdW50IHx8ICcnLFxuICAgICAgam9iRHRvLmFjY2Vzc0dyb3VwIHx8ICcnLFxuICAgICAgam9iRHRvLnJlZmVyZW5jZSB8fCAnJyxcbiAgICAgIGpvYkR0by5qb2JEYXRlIHx8ICcnLFxuICAgICAgam9iRHRvLmpvYlN0YXR1cyB8fCAnJyxcbiAgICAgIGpvYkR0by5qb2JUeXBlIHx8ICcnLFxuICAgICAgam9iRHRvLmFzc2lnbmVlSWQgfHwgJycsXG4gICAgICBqb2JEdG8uZm9ybUlkIHx8ICcnLFxuICAgICAgam9iRHRvLnRpbWVab25lT2Zmc2V0IHx8IG1vbWVudCgpLnV0Y09mZnNldCgpLFxuICAgICAgam9iRHRvLnBlbmRpbmdGaWVsZHMgfHwgMCxcbiAgICAgIGpvYkR0by5jaGlsZE1vZGlmaWVkIHx8ICcnLFxuICAgICAgam9iRHRvLnZlcnNpb24gfHwgMCxcbiAgICAgIGpvYkR0by5maWVsZHMgfHwgW10sXG4gICAgICBqb2JEdG8uZmlsZXMgfHwgW10sXG4gICAgICBqb2JEdG8uY3JlYXRlZEJ5RGlzcGxheU5hbWUgfHwgJycsXG4gICAgICBqb2JEdG8ubW9kaWZpZWRCeURpc3BsYXlOYW1lIHx8ICcnLFxuICAgICAgam9iRHRvLmdlb0xvY2F0aW9uIHx8IGdldEVtcHR5R2VvTG9jYXRpb24oKVxuICAgICk7XG4gICAgY29uc3QgZW1wdHlLZXlzID0gbW9kZWwuc3RhdGljUHJvcGVydGllcztcbiAgICBPYmplY3RcbiAgICAgIC5rZXlzKGpvYkR0bylcbiAgICAgIC5maWx0ZXIoa2V5ID0+IGVtcHR5S2V5cy5pbmRleE9mKGtleSkgPT09IC0xKVxuICAgICAgLmZvckVhY2goKGtleTogc3RyaW5nKSA9PlxuICAgICAgICBtb2RlbC4kdGhpc1trZXldID0gKGpvYkR0byBhcyBWYXNKb2JNb2RlbER5bmFtaWNJbnRlcmZhY2UpW2tleV1cbiAgICAgICk7XG4gICAgcmV0dXJuIG1vZGVsO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7VmFzRm9ybU1vZGVsfSBmb3JtTW9kZWxcbiAgICogQHJldHVybiB7UmVjb3JkPHN0cmluZywgVmFzRmllbGREdG9WYWx1ZT59XG4gICAqL1xuICBnZXRGaWVsZHMoZm9ybU1vZGVsOiBWYXNGb3JtTW9kZWwpOiBSZWNvcmQ8c3RyaW5nLCBWYXNGaWVsZER0b1ZhbHVlPiB7XG4gICAgY29uc3QgZmllbGRzOiB7W2tleTogc3RyaW5nXTogVmFzRmllbGREdG9WYWx1ZX0gPSB7fTtcbiAgICBmb3JtTW9kZWwuZ3JvdXBzXG4gICAgICAuZm9yRWFjaChncm91cCA9PiB7XG4gICAgICAgIGdyb3VwLmNvbnRyb2xzLmZvckVhY2goY29udHJvbCA9PiB7XG4gICAgICAgICAgKGZpZWxkcylbY29udHJvbC5yZXBvcnRUZW1wbGF0ZU5hbWVdID1cbiAgICAgICAgICAgIHRoaXMuZ2V0VmFsdWVCeVBhdGgoW2dyb3VwLm5hbWUsIGNvbnRyb2wubmFtZV0pO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIHJldHVybiBmaWVsZHM7XG4gIH1cblxuICAvKipcbiAgICogV2lsbCByZXR1cm4gYW4gb2JqZWN0IHdob3NlIGtleXMgYXJlIHRoZSBuYW1lcyBvZiBhbGwgZmllbGRzIGluIHRoZSBqb2IgYnV0XG4gICAqIHdpdGggdGhlIFwiZmllbGRzLlwiIHBhcnQgcmVtb3ZlZC4gVGhpcyBtZXRob2QgaXMgc2ltaWxhciB0byBgZ2V0RmllbGRzYFxuICAgKiBleGNlcHQgdGhhdCB0aGlzIG1ldGhvZCB3aWxsIG9ubHkgcmV0dXJuIHZhbHVlcyB0aGF0IGFyZSBzZXQgd2hlcmVhc1xuICAgKiBgZ2V0RmllbGRzYCB3aWxsIHJldHVybiBhIHByb3BlcnR5IHJlZ2FyZGxlc3MgKGJlY2F1c2UgaXQgdXNlcyB0aGUgZm9ybSB0b1xuICAgKiBkcml2ZSB0aGUgbG9naWMpXG4gICAqIEByZXR1cm4ge1JlY29yZDxzdHJpbmcsIFZhc0ZpZWxkRHRvVmFsdWU+fVxuICAgKi9cbiAgZ2V0RmllbGRzMigpOiBSZWNvcmQ8c3RyaW5nLCBWYXNGaWVsZER0b1ZhbHVlPiB7XG4gICAgbGV0IGZpZWxkczoge1trZXk6IHN0cmluZ106IFZhc0ZpZWxkRHRvVmFsdWV9ID0ge307XG4gICAgdGhpcy5keW5hbWljUHJvcGVydGllc1xuICAgICAgLmZvckVhY2goKGdyb3VwTmFtZSkgPT4ge1xuICAgICAgICBPYmplY3RcbiAgICAgICAgICAua2V5cyh0aGlzLiR0aGlzW2dyb3VwTmFtZV0pXG4gICAgICAgICAgLmZvckVhY2goY29udHJvbE5hbWUgPT4ge1xuICAgICAgICAgICAgY29uc3QgY29udHJvbE5hbWVTaG9ydCA9IGNvbnRyb2xOYW1lLnJlcGxhY2UoL2ZpZWxkc1xcLi8sICcnKTtcbiAgICAgICAgICAgIGZpZWxkc1tjb250cm9sTmFtZVNob3J0XSA9IHRoaXMuZ2V0VmFsdWVCeVBhdGgoXG4gICAgICAgICAgICAgIFtncm91cE5hbWUsIGNvbnRyb2xOYW1lXVxuICAgICAgICAgICAgKVxuICAgICAgICAgIH0pXG4gICAgICB9LCB7fSlcbiAgICByZXR1cm4gZmllbGRzO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoaXMgbWV0aG9kIHdpbGwgaHlkcmF0ZSB0aGUgYGZpZWxkc2AgcHJvcGVydHkgb2YgdGhlIG1vZGVsLiBUaGUgcmVhc29uIGZvclxuICAgKiB0aGlzIGlzIHRoYXQgd2UgaGF2ZSBkaWZmZXJlbnQgd2F5cyB0byBzdG9yZSB0aGUgZmllbGQgZGF0YS4gT25lIHdheSwgaXNcbiAgICogd2Ugc3RvcmUgdGhlbSBhcyBkeW5hbWljIHByb3BlcnRpZXMgb2YgdGhlIGpvYi4gRm9yIGV4YW1wbGUgam9iLmZvby5iYXIsXG4gICAqIHdoZXJlIGBmb29gIGlzIHRoZSBuYW1lIG9mIGEgR3JvdXAsIGFuZCBgYmFyYCBpcyB0aGUgbmFtZSBvZiBhIGNvbnRyb2wuXG4gICAqIFRodXMsIHdoZW4gd2UgY3JlYXRlIGEgam9iIHVzaW5nIGEgZm9ybSBpbiB0aGUgY2xpZW50LCB0aGUgam9iIG9iamVjdCB3aWxsXG4gICAqIGhhdmUgaXRzIHN0YXRpYyBwcm9wZXJ0aWVzIChpZCwgYWNjb3VudCwgcmVmZXJlbmNlIGV0YyksIGFuZCBhbHNvIGEgbnVtYmVyXG4gICAqIG9mIGR5bmFtaWMgcHJvcGVydGllcyBkZXRlcm1pbmVkIGJ5IHRoZSBHcm91cHMgYW5kIENvbnRyb2xzLiBUaGlzIGtpbmQgb2ZcbiAgICogb2JqZWN0IGlzIG5pY2UgdG8gd29yayB3aXRoIGluIGNlcnRhaW4gY2lyY3Vtc3RhbmNlcy4gSG93ZXZlciwgdGhlIGFwaVxuICAgKiB3b3JrcyBkaWZmZXJlbnRseS4gSW4gdGhlIEFQSSBhIEpvYiBpcyBhIHJlY29yZCwgYW5kIHJlZmVyZW5jZXMgYSBudW1iZXIgb2ZcbiAgICogRmllbGQgcmVjb3Jkcy4gRWFjaCBGaWVsZCBzdG9yZXMgdGhlIHZhbHVlLiBDb21wYXJpbmcgdGhlc2UgdHdvIG1vZGVscyB3ZVxuICAgKiBoYXZlOlxuICAgKiBBKSBqb2Igd2l0aCBkeW5hbWljIHByb3BlcnRpZXMsIGUuZy5cbiAgICoge1xuICAgKiAgIGlkOiA8Z3VpZD4sXG4gICAqICAgcmVmZXJlbmNlOiBcInNvbWV0aGluZ1wiXG4gICAqICAgPG90aGVyIHN0YXRpYyBqb2IgcHJvcGVydGllcz4uLi5cbiAgICogICBmb286IHtcbiAgICogICAgIGJhcjogXCJ2YWx1ZVwiXG4gICAqICAgfVxuICAgKiB9XG4gICAqXG4gICAqIEIpIGpvYiB3aXRoIGZpZWxkc1xuICAgKiB7XG4gICAqICAgaWQ6IDxndWlkPixcbiAgICogICByZWZlcmVuY2U6IFwic29tZXRoaW5nXCJcbiAgICogICA8b3RoZXIgc3RhdGljIGpvYiBwcm9wZXJ0aWVzPi4uLlxuICAgKiAgIDx3aWxsIG5vdCBoYXZlIGR5bmFtaWMgcHJvcGVydGllcz4uLi5cbiAgICogICBmaWVsZHM6IFtcbiAgICogICAgIHtcbiAgICogICAgICAgaWQ6IDxndWlkPixcbiAgICogICAgICAgPG90aGVyIGZpZWxkIHByb3BlcnRpZXM+LFxuICAgKiAgICAgICB2YWx1ZTogXCJ2YWx1ZVwiXG4gICAqICAgICB9XG4gICAqICAgXVxuICAgKiB9XG4gICAqXG4gICAqIFNvLCB3aGF0IHRoaXMgbWV0aG9kIGRvZXMgaXMgZ2l2ZW4gYSBKb2JNb2RlbCBpbiB0aGUgZm9ybSBvZiBBLCByZWFkIGFsbFxuICAgKiBvZiB0aG9zZSBkeW5hbWljIHByb3BlcnRpZXMgYW5kIHNldCB0aGVtIGludG8gYGZpZWxkc2AuIERvaW5nIHRoaXMgcmVxdWlyZXNcbiAgICoga25vd2xlZGdlIG9mIHRoZSBGb3JtIHRoYXQgd2FzIHVzZWQgdG8gY3JlYXRlIHRoZSBqb2IuIE1vcmVvdmVyLCBzaW5jZSB0aGVcbiAgICogZHluYW1pYyBwcm9wZXJ0aWVzIGRvIG5vdCBjb250YWluIHRoZSBpZHMgb2YgdGhlIGZpZWxkcywgd2UgYWxzbyBhbGxvdyB0b1xuICAgKiBwYXNzIGluIGEgYGNvbnRyb2xGaWVsZElkTWFwYC4gVGhpcyBtYXAgc3RvcmVzIHRoZSBtYXBwaW5nIGJldHdlZW4gQ29udHJvbFxuICAgKiBhbmQgdGhlIEZpZWxkIHRoYXQgd2FzIGNyZWF0ZWQgaW4gdGhlIEpvYiB0byBzdG9yZSB0aGUgdmFsdWUgZm9yIHRoYXRcbiAgICogQ29udHJvbC4gVGhpcyBpcyB1c2VmdWwsIGlmIGZvciBleGFtcGxlIHlvdSB3YW50IHRvIGNvbXBhcmUgYSBKb2IgaW4gZm9ybSBBXG4gICAqIHdpdGggYSBKb2IgaW4gZm9ybSBCLCBmb3IgZXhhbXBsZSBpZiB5b3Ugd2FudCB0byB1cGRhdGUgdGhlIEpvYiBvbiB0aGUgQVBJXG4gICAqIHdpdGggYSBKb2IgdGhhdCB3YXMgc2F2ZWQgYnkgYSBjbGllbnQgaW4gZm9ybSBBLlxuICAgKlxuICAgKiBFLmcuXG4gICAqIENsaWVudCAtPiBBUEk6IGNsaWVudCByZXF1ZXN0cyBmb3JtXG4gICAqIFVzZXIgLT4gQ2xpZW50OiB1c2VyIGZpbGxzIGluIHRoZSBmb3JtIGFuZCBzdWJtaXRzXG4gICAqIENsaWVudCAtPiBGaXJlc3RvcmU6IGNsaWVudCBzYXZlcyB0aGUgSm9iIGluIGZvcm0gQSBpLmUuIGR5bmFtaWMgcHJvcHNcbiAgICogRmlyZXN0b3JlIC0+IEZ1bmN0aW9uOiBBIGZ1bmN0aW9uIGlzIHRyaWdnZXJlZCB0byBzeW5jIHRoZSBqb2IgdG8gdGhlIEFQSVxuICAgKiBGdW5jdGlvbiAtPiBBUEk6IEZ1bmN0aW9uIGNoZWNrcyBpZiBqb2IgYWxyZWFkeSBleGlzdHMsIGl0IHJlY2VpdmVzIDQwNFxuICAgKiBGdW5jdGlvbiAtPiBGdW5jdGlvbjogVGhlIGZ1bmN0aW9uIGNhbGxzIGBoeWRyYXRlRmllbGRzKC4uLilgXG4gICAqIEZ1bmN0aW9uIC0+IEFQSTogVGhlIGZ1bmN0aW9uIFBPU1QgdGhlIEpvYiB0byAvam9ic1xuICAgKiBGdW5jdGlvbiAtPiBBUEk6IFRoZSBmdW5jdGlvbiBQT1NUIGVhY2ggZmllbGQgdG8gL2ZpZWxkc1xuICAgKlxuICAgKiBTaW1pbGFybHksIGlmIHRoZSB1c2VyIHVwZGF0ZXMgdGhlIGpvYlxuICAgKiBDbGllbnQgLT4gQVBJOiBjbGllbnQgcmVxdWVzdHMgZm9ybVxuICAgKiBVc2VyIC0+IENsaWVudDogdXNlciBmaWxscyBpbiB0aGUgZm9ybSBhbmQgc3VibWl0cyBhbiB1cGRhdGVcbiAgICogQ2xpZW50IC0+IEZpcmVzdG9yZTogY2xpZW50IHNhdmVzIHRoZSBKb2IgaW4gZm9ybSBBIGkuZS4gZHluYW1pYyBwcm9wc1xuICAgKiBGaXJlc3RvcmUgLT4gRnVuY3Rpb246IEEgZnVuY3Rpb24gaXMgdHJpZ2dlcmVkIHRvIHN5bmMgdGhlIGpvYiB0byB0aGUgQVBJXG4gICAqIEZ1bmN0aW9uIC0+IEFQSTogRnVuY3Rpb24gY2hlY2tzIGlmIGpvYiBhbHJlYWR5IGV4aXN0cywgaXQgcmVjZWl2ZXMgMjAwXG4gICAqIEZ1bmN0aW9uIC0+IEZ1bmN0aW9uOiBUaGUgZnVuY3Rpb24gY2FsbHMgYGh5ZHJhdGVGaWVsZHMoLi4uKWAgcGFzc2luZyBpblxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgdGhlIG1hcCBpcyBtYWRlIGJ5IGl0ZXJhdGluZyBvdmVyIHRoZSBmaWVsZHMgaXRcbiAgICogICAgICAgICAgICAgICAgICAgICAgIHJlY2VpdmVkIGZyb20gdGhlIEFQSSBhbmQgc3RvcmluZyB0aGUgbWFwcGluZ3NcbiAgICogICAgICAgICAgICAgICAgICAgICAgIGJldHdlZW4gY29udHJvbElkIGFuZCBmaWVsZElkIGZvciBlYWNoIGZpZWxkXG4gICAqIEZ1bmN0aW9uIC0+IEFQSTogVGhlIGZ1bmN0aW9uIFBBVENIIHRoZSBKb2IgdG8gL2pvYnNcbiAgICogRnVuY3Rpb24gLT4gQVBJOiBUaGUgZnVuY3Rpb24gUE9TVC9QQVRDSCBlYWNoIGZpZWxkIHRvIC9maWVsZHNcbiAgICogdHJlYXRlZCBhcyBuZXdcbiAgICpcbiAgICogQHBhcmFtIHtWYXNGb3JtTW9kZWx9IGZvcm1Nb2RlbCB0aGUgVmFzRm9ybU1vZGVsIHRoYXQgd2FzIHVzZWQgdG8gY3JlYXRlXG4gICAqIHRoZSBqb2JcbiAgICogQHBhcmFtIHtNYXA8c3RyaW5nLCBzdHJpbmc+fSBjb250cm9sRmllbGRJZE1hcCBhIG1hcHBpbmcgb2YgY29udHJvbCB0b1xuICAgKiBmaWVsZCBpZHMuIFRoaXMgaXMgdXNlZCB0byBkZXRlcm1pbmUgd2hldGhlciBhIG5ldyBpZCBmb3IgdGhlIGZpZWxkIHNob3VsZFxuICAgKiBiZSBnZW5lcmF0ZWQsIG9yIHRvIHJldXNlIGFuIGV4aXN0aW5nIG9uZSBmcm9tIHRoZSBtYXAuXG4gICAqIEBwYXJhbSB7QXJyYXk8c3RyaW5nPn0gY29udHJvbE5hbWVzIGlmIGEgdmFsdWUgaXMgcHJvdmlkZWQsIGl0IHdpbGwgYmUgdXNlZFxuICAgKiB0byBmaWx0ZXIgdGhlIGZpZWxkcyB0aGF0IGFyZSByZXR1cm5lZC5cbiAgICogQHJldHVybiB7QXJyYXk8VmFzRmllbGREdG8+fVxuICAgKi9cbiAgaHlkcmF0ZUZpZWxkcyhcbiAgICBmb3JtTW9kZWw6IFZhc0Zvcm1Nb2RlbCxcbiAgICBjb250cm9sRmllbGRJZE1hcDogTWFwPHN0cmluZywgc3RyaW5nPiA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KCksXG4gICAgY29udHJvbE5hbWVzPzogQXJyYXk8c3RyaW5nPlxuICApOiB2b2lkIHtcbiAgICBjb25zdCBmaWVsZHM6IEFycmF5PFZhc0ZpZWxkRHRvPiA9IFtdO1xuICAgIGZvcm1Nb2RlbC5ncm91cHNcbiAgICAgIC5mb3JFYWNoKGdyb3VwID0+IHtcbiAgICAgICAgZ3JvdXAuY29udHJvbHMuZm9yRWFjaChjb250cm9sID0+IHtcblxuICAgICAgICAgIGlmICghY29udHJvbC5uYW1lLnN0YXJ0c1dpdGgoJ2ZpZWxkcy4nKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChjb250cm9sTmFtZXMgJiYgIWNvbnRyb2xOYW1lcy5pbmNsdWRlcyhjb250cm9sLm5hbWUpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgZmllbGRzLnB1c2goVmFzRmllbGRNb2RlbC5mcm9tRHRvKHtcbiAgICAgICAgICAgIC8vIGlmIHRoZSBjb250cm9sSWQgZXhpc3RzIGluIHRoZSBtYXAsIHVzZSB0aGUgYXNzb2NpYXRlZCBmaWVsZElkLFxuICAgICAgICAgICAgLy8gb3RoZXJ3aXNlIGdlbmVyYXRlIGEgbmV3IGlkIGZvciB0aGUgZmllbGQuXG4gICAgICAgICAgICBpZDogY29udHJvbEZpZWxkSWRNYXAuZ2V0KGNvbnRyb2wuaWQpIHx8IFVVSUQuVVVJRCgpLFxuICAgICAgICAgICAgYWNjb3VudDogdGhpcy5hY2NvdW50LFxuICAgICAgICAgICAgam9iOiB0aGlzLmlkLFxuICAgICAgICAgICAgY3JlYXRlZEJ5OiB0aGlzLmNyZWF0ZWRCeSxcbiAgICAgICAgICAgIGNyZWF0ZWQ6IHRoaXMuY3JlYXRlZCxcbiAgICAgICAgICAgIG1vZGlmaWVkQnk6IHRoaXMubW9kaWZpZWRCeSxcbiAgICAgICAgICAgIG1vZGlmaWVkOiB0aGlzLm1vZGlmaWVkLFxuICAgICAgICAgICAgY29udHJvbDogY29udHJvbC5pZCxcbiAgICAgICAgICAgIHZhbHVlOiB0aGlzLmdldFZhbHVlQnlQYXRoKFxuICAgICAgICAgICAgICBbZ3JvdXAubmFtZSwgY29udHJvbC5uYW1lXVxuICAgICAgICAgICAgKVxuICAgICAgICAgIH0pKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB0aGlzLmZpZWxkcyA9IGZpZWxkcztcbiAgfVxuXG4gIC8qKlxuXG4gICAqIEBwYXJhbSB7c3RyaW5nW119IHBhdGggcGF0aCBzZWdtZW50c1xuICAgKiBAcmV0dXJuIHt2b2lkfVxuICAgKi9cbiAgZ2V0VmFsdWVCeVBhdGg8VCBleHRlbmRzIFZhc0ZpZWxkRHRvVmFsdWU+KFxuICAgIHBhdGg6IHN0cmluZ1tdID0gW11cbiAgKTogVCB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIGdldFZhbHVlQnlQYXRoKHBhdGgsIHRoaXMuJHRoaXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEEgdmVyeSBub24gc29waGlzdGljYXRlZCB3YXkgdG8gc2V0IHZhbHVlcyBpbiB0aGUgam9iIHZpYSBwYXRoc1xuICAgKlxuICAgKiBGb3IgZXhhbXBsZTpcbiAgICpcbiAgICogc2V0VmFsdWVCeVBhdGgoJ3ZhbHVlJywgWydmb28nLCAnYmFyJ10pO1xuICAgKlxuICAgKiB3aWxsIG1ha2UgcmVzdWx0cyBpbiBqb2JcbiAgICoge1xuICAgKiAgIGZvbzoge1xuICAgKiAgICAgYmFyOiAndmFsdWUnXG4gICAqICAgfVxuICAgKiB9XG4gICAqXG4gICAqIEBwYXJhbSB7YW55fSB2YWx1ZSB0aGUgdmFsdWUgdG8gc2V0XG4gICAqIEBwYXJhbSB7c3RyaW5nW119IHBhdGggcGF0aCBzZWdtZW50c1xuICAgKi9cbiAgc2V0VmFsdWVCeVBhdGgodmFsdWU6IFZhc0ZpZWxkRHRvVmFsdWUsIHBhdGg6IHN0cmluZ1tdID0gW10pOiB2b2lkIHtcbiAgICBzd2l0Y2ggKHBhdGgubGVuZ3RoKSB7XG4gICAgICBjYXNlIDA6IHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY2FzZSAxOiB7XG4gICAgICAgICh0aGlzIGFzIGFueSlbcGF0aFswXV0gPSB2YWx1ZTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY2FzZSAyOiB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBtYXgtbGVuXG4gICAgICAgICh0aGlzLiR0aGlzW3BhdGhbMF1dIGFzIFJlY29yZDxzdHJpbmcsIFZhc0ZpZWxkRHRvVmFsdWU+KVtwYXRoWzFdXSA9IHZhbHVlO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjYXNlIDM6IHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG1heC1sZW5cbiAgICAgICAgKCh0aGlzLiR0aGlzW3BhdGhbMF1dIGFzIFJlY29yZDxzdHJpbmcsIFZhc0ZpZWxkRHRvVmFsdWU+KVtwYXRoWzFdXSBhcyBSZWNvcmQ8c3RyaW5nLCBWYXNGaWVsZER0b1ZhbHVlPilbcGF0aFsyXV0gPSB2YWx1ZTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgZGVmYXVsdDoge1xuICAgICAgICB0aHJvdyBFcnJvcigncGF0aCBoYXMgdG9vIG1hbnkgc2VnbWVudHMnKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtib29sZWFufSBzdGF0aWNPbmx5IGlmIHRydWUsIHdpbGwgb25seSBvdXRwdXQgdmFsdWVzIGZvciB0aGUgc3RhdGljXG4gICAqIHByb3BlcnRpZXMgaW4gdGhlIGR0b1xuICAgKiBAcmV0dXJuIHtWYXNKb2JEdG99XG4gICAqL1xuICBwdWJsaWMgdG9EdG8oc3RhdGljT25seSA9IGZhbHNlKTogVmFzSm9iRHRvIHtcblxuICAgIGlmIChzdGF0aWNPbmx5KSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBpZDogdGhpcy5pZCxcbiAgICAgICAgY3JlYXRlZDogdGhpcy5jcmVhdGVkLFxuICAgICAgICBjcmVhdGVkQnk6IHRoaXMuY3JlYXRlZEJ5LFxuICAgICAgICBtb2RpZmllZDogdGhpcy5tb2RpZmllZCxcbiAgICAgICAgbW9kaWZpZWRCeTogdGhpcy5tb2RpZmllZEJ5LFxuICAgICAgICBzZXJ2ZXJDcmVhdGVkOiB0aGlzLnNlcnZlckNyZWF0ZWQsXG4gICAgICAgIHNlcnZlck1vZGlmaWVkOiB0aGlzLnNlcnZlck1vZGlmaWVkLFxuICAgICAgICBhY2NvdW50OiB0aGlzLmFjY291bnQsXG4gICAgICAgIGFjY2Vzc0dyb3VwOiB0aGlzLmFjY2Vzc0dyb3VwLFxuICAgICAgICByZWZlcmVuY2U6IHRoaXMucmVmZXJlbmNlLFxuICAgICAgICBqb2JEYXRlOiB0aGlzLmpvYkRhdGUsXG4gICAgICAgIGpvYlN0YXR1czogdGhpcy5qb2JTdGF0dXMsXG4gICAgICAgIGpvYlR5cGU6IHRoaXMuam9iVHlwZSxcbiAgICAgICAgYXNzaWduZWVJZDogdGhpcy5hc3NpZ25lZUlkLFxuICAgICAgICBmb3JtSWQ6IHRoaXMuZm9ybUlkLFxuICAgICAgICB0aW1lWm9uZU9mZnNldDogdGhpcy50aW1lWm9uZU9mZnNldCxcbiAgICAgICAgcGVuZGluZ0ZpZWxkczogdGhpcy5wZW5kaW5nRmllbGRzLFxuICAgICAgICBjaGlsZE1vZGlmaWVkOiB0aGlzLmNoaWxkTW9kaWZpZWQsXG4gICAgICAgIHZlcnNpb246IHRoaXMudmVyc2lvbixcbiAgICAgICAgZmllbGRzOiB0aGlzLmZpZWxkcyxcbiAgICAgICAgZmlsZXM6IHRoaXMuZmlsZXMsXG4gICAgICAgIGNyZWF0ZWRCeURpc3BsYXlOYW1lOiB0aGlzLmNyZWF0ZWRCeURpc3BsYXlOYW1lLFxuICAgICAgICBtb2RpZmllZEJ5RGlzcGxheU5hbWU6IHRoaXMubW9kaWZpZWRCeURpc3BsYXlOYW1lLFxuICAgICAgICBnZW9Mb2NhdGlvbjogdGhpcy5nZW9Mb2NhdGlvblxuICAgICAgfTtcbiAgICB9XG5cbiAgICBjb25zdCBkdG8gPSB7fSBhcyBWYXNKb2JNb2RlbER5bmFtaWNJbnRlcmZhY2U7XG4gICAgWy4uLnRoaXMuc3RhdGljUHJvcGVydGllcywgLi4udGhpcy5keW5hbWljUHJvcGVydGllc11cbiAgICAgIC5mb3JFYWNoKHByb3AgPT5cbiAgICAgICAgKGR0bylbcHJvcF0gPSB0aGlzLiR0aGlzW3Byb3BdKTtcblxuICAgIHJldHVybiBkdG8gYXMgYW55O1xuICB9XG5cbiAgLyoqXG4gICAqIFRoaXMgbWV0aG9kIHdpbGwgcGFyc2UgYSBzeW50YXggdGhhdCBhbGxvd3MgdXMgdG8gYnVpbGQgc3RyaW5ncyBmcm9tIHRoZVxuICAgKiB2YWx1ZXMgb2YgZnJvbSB0aGUgam9iIG1vZGVsLiBGb3IgZXhhbXBsZSBpZiB0aGUgam9iIG1vZGVsIHdhczpcbiAgICpcbiAgICoge1xuICAgKiAgIGZvbzogJ2JhcidcbiAgICogfVxuICAgKlxuICAgKiBhbmQgd2UgcGFzcyBcImkgYW0gZm9vIHtmb299XCIsIHRoZSByZXN1bHQgd291bGQgYmU6XG4gICAqXG4gICAqIFwiaSBhbSBmb28gYmFyXCJcbiAgICpcbiAgICogd2UgY2FuIGFsc28gdXNlIG1vbWVudCB0byBwYXJzZSBkYXRlcywgZm9yIGV4YW1wbGUgaWYgdGhlIGpvYiBtb2RlbCB3YXM6XG4gICAqXG4gICAqIHtcbiAgICogICBjcmVhdGVkOiBcIjIwMjItMDEtMDFUMDA6MDA6MDArMDAwMFwiXG4gICAqIH1cbiAgICpcbiAgICogYW5kIHdlIHBhc3MgXCJ7Y3JlYXRlZHxkYXRlOllZLU1NLUREfVwiLCB0aGUgcmVzdWx0IHdvdWxkIGJlOlxuICAgKlxuICAgKiBcIjIwMjItMDEtMDFcIlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdmFsdWUgYSBzdHJpbmcgd2l0aCB0aGUgc3ludGF4XG4gICAqIEBwYXJhbSB7UGFyc2VTeW50YXhPcHRpb25zfSBvcHRpb25zXG4gICAqIEByZXR1cm4ge3N0cmluZ30gdGhlIHJlc3VsdHMgb2YgcGFyc2luZyB0aGUgc3ludGF4IG9uIHRoaXMgam9iXG4gICAqL1xuICBwYXJzZVN5bnRheChcbiAgICB2YWx1ZTogc3RyaW5nLFxuICAgIG9wdGlvbnM6IFBhcnNlU3ludGF4T3B0aW9ucyA9IHtcbiAgICAgIHRpbWVab25lT2Zmc2V0OiAwXG4gICAgfVxuICApOiBzdHJpbmcge1xuXG4gICAgaWYgKCF2YWx1ZSB8fCB0eXBlb2YgdmFsdWUgIT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICAgIHJldHVybiB2YWx1ZS5yZXBsYWNlKC8oe1tefV0qfSkvZywgKG1hdGNoOiBzdHJpbmcsIHRva2VuOiBzdHJpbmcpID0+IHtcbiAgICAgIGNvbnN0IHN5bnRheCA9IHRva2VuLnN1YnN0cmluZygxLCB0b2tlbi5sZW5ndGggLSAxKTtcblxuICAgICAgbGV0IFtrZXksIGZpbHRlcl0gPSBzeW50YXguc3BsaXQoJ3wnKTtcbiAgICAgIGtleSA9IChrZXkgfHwgJycpLnRyaW0oKTtcbiAgICAgIGZpbHRlciA9IChmaWx0ZXIgfHwgJycpLnRyaW0oKVxuXG4gICAgICBsZXQgZmlsdGVyTmFtZSwgZmlsdGVyQXJnOiBzdHJpbmcgPSAnJztcbiAgICAgIGlmIChmaWx0ZXIpIHtcbiAgICAgICAgY29uc3Qgc3BsaXRJbmRleCA9IGZpbHRlci5pbmRleE9mKCc6Jyk7XG4gICAgICAgIGlmIChzcGxpdEluZGV4ICE9PSAtMSkge1xuICAgICAgICAgIGZpbHRlck5hbWUgPSBmaWx0ZXIuc3Vic3RyaW5nKDAsIHNwbGl0SW5kZXgpO1xuICAgICAgICAgIGZpbHRlckFyZyA9IGZpbHRlci5zdWJzdHJpbmcoc3BsaXRJbmRleCArIDEpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGZpbHRlck5hbWUgPSBmaWx0ZXI7XG4gICAgICAgICAgZmlsdGVyQXJnID0gJyc7XG4gICAgICAgIH1cbiAgICAgICAgZmlsdGVyTmFtZSA9IChmaWx0ZXJOYW1lIHx8ICcnKS50cmltKCk7XG4gICAgICAgIGZpbHRlckFyZyA9IChmaWx0ZXJBcmcgfHwgJycpLnRyaW0oKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHBhdGggPSBrZXkuc3BsaXQoJy4nKTtcbiAgICAgIGNvbnN0IG9iamVjdEtleSA9IHBhdGguc2hpZnQoKSB8fCAnJztcbiAgICAgIGxldCByZXN1bHQgPSAnJztcbiAgICAgIGlmIChvYmplY3RLZXkgPT09ICdqb2InKSB7XG4gICAgICAgIHJlc3VsdCA9ICh0aGlzLmdldFZhbHVlQnlQYXRoKHBhdGgpIHx8ICcnKS50b1N0cmluZygpO1xuICAgICAgfSBlbHNlIGlmIChvYmplY3RLZXkgPT09ICdmaWVsZHMnKSB7XG4gICAgICAgIHJlc3VsdCA9IChnZXRWYWx1ZUJ5UGF0aChwYXRoLCB0aGlzLmdldEZpZWxkczIoKSkgfHwgJycpLnRvU3RyaW5nKCk7XG4gICAgICB9IGVsc2UgaWYgKG9iamVjdEtleS5sZW5ndGgpIHtcbiAgICAgICAgaWYgKG9wdGlvbnMub2JqZWN0cykge1xuICAgICAgICAgIGlmIChvcHRpb25zLm9iamVjdHNbb2JqZWN0S2V5XSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBjb25zb2xlLmRlYnVnKFxuICAgICAgICAgICAgICBgb2JqZWN0S2V5ICR7b2JqZWN0S2V5fSBpcyBub3QgcHJlc2VudCBpbiBvcHRpb25zLm9iamVjdGBcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICByZXN1bHQgPSAnJztcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVzdWx0ID0gKGdldFZhbHVlQnlQYXRoKHBhdGgsIG9wdGlvbnMub2JqZWN0c1tvYmplY3RLZXldKSB8fCAnJylcbiAgICAgICAgICAgICAgLnRvU3RyaW5nKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnNvbGUuZGVidWcoXG4gICAgICAgICAgICBgb2JqZWN0S2V5ICR7b2JqZWN0S2V5fSB3YXMgdXNlZCBidXQgb3B0aW9ucy5vYmplY3QgaXMgbm90IHNldGBcbiAgICAgICAgICApO1xuICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuICcnO1xuICAgICAgfVxuXG5cbiAgICAgIGlmIChmaWx0ZXJOYW1lICYmIHJlc3VsdCkge1xuICAgICAgICBzd2l0Y2ggKGZpbHRlck5hbWUpIHtcbiAgICAgICAgICBjYXNlICdkYXRlJzoge1xuICAgICAgICAgICAgcmV0dXJuIG1vbWVudChyZXN1bHQpXG4gICAgICAgICAgICAgIC51dGNPZmZzZXQob3B0aW9ucy50aW1lWm9uZU9mZnNldClcbiAgICAgICAgICAgICAgLmZvcm1hdChmaWx0ZXJBcmcgfHwgJycpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oJ3Vua25vd24gZmlsdGVyICVzJywgZmlsdGVyTmFtZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfSkudHJpbSgpO1xuICB9O1xuXG4gIC8qKlxuICAgKiBAcmV0dXJuIHtvYmplY3R9XG4gICAqL1xuICBvdmVycmlkZSB0b0FwaUR0bygpOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuPiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnN1cGVyLnRvQXBpRHRvKCksXG4gICAgICByZWZlcmVuY2U6IHRoaXMucmVmZXJlbmNlIHx8ICd+JyxcbiAgICAgIGpvYkRhdGU6IHRoaXMuam9iRGF0ZSB8fCAnficsXG4gICAgICBqb2JUeXBlOiB0aGlzLmpvYlR5cGUgfHwgJ34nLFxuICAgICAgYWNjZXNzR3JvdXA6IHRoaXMuYWNjZXNzR3JvdXAgfHwgJ34nLFxuICAgICAgam9iU3RhdHVzOiB0aGlzLmpvYlN0YXR1cyB8fCAnficsXG4gICAgICBhc3NpZ25lZUlkOiB0aGlzLmFzc2lnbmVlSWQgfHwgJ34nLFxuICAgICAgdGltZVpvbmVPZmZzZXQ6IHRoaXMudGltZVpvbmVPZmZzZXQgfHwgMCxcbiAgICAgIHBlbmRpbmdGaWVsZHM6IHRoaXMucGVuZGluZ0ZpZWxkcyB8fCAwLFxuICAgICAgbGFzdEZvcm06IHRoaXMuZm9ybUlkIHx8ICd+J1xuICAgIH07XG4gIH1cbn1cbiJdfQ==
503
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFzLWpvYi5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Zhcy1saWIvc3JjL2xpYi9lbnRpdHkvdmFzLWpvYi5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyQyxPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFDNUIsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRzVELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUdsRCxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUN4RixPQUFPLEVBQWUsbUJBQW1CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN6RSxPQUFPLEVBQUUsc0JBQXNCLEVBQThCLE1BQU0saURBQWlELENBQUM7QUFDckgsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBb0J6RDs7R0FFRztBQUNILE1BQU0sT0FBTyxXQUFZLFNBQVEsK0JBQStCO0lBQzlEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09BeUJHO0lBQ0gsWUFDa0IsRUFBVSxFQUNWLE9BQWUsRUFDZixhQUFxQixFQUNyQixTQUFpQixFQUNqQixRQUFnQixFQUNoQixjQUFzQixFQUN0QixVQUFrQixFQUNsQixPQUFlLEVBQ2YsV0FBbUIsRUFDNUIsU0FBaUIsRUFDakIsT0FBZSxFQUNmLFNBQWlCLEVBQ2pCLE9BQWUsRUFDZixVQUFrQixFQUNsQixNQUFjLEVBQ2QsY0FBc0IsRUFDdEIsYUFBcUIsRUFDckIsYUFBcUIsRUFDckIsT0FBZSxFQUNmLE1BQTBCLEVBQzFCLEtBQXdCLEVBQ3hCLG9CQUE0QixFQUM1QixxQkFBNkIsRUFDN0IsV0FBd0I7UUFF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RztZQUM1QixPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sSUFBSSxHQUFHO1lBQzVCLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVyxJQUFJLEdBQUc7WUFDcEMsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTLElBQUksR0FBRztZQUNoQyxVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVUsSUFBSSxHQUFHO1lBQ2xDLGNBQWMsRUFBRSxJQUFJLENBQUMsY0FBYyxJQUFJLENBQUM7WUFDeEMsYUFBYSxFQUFFLElBQUksQ0FBQyxhQUFhLElBQUksQ0FBQztZQUN0QyxRQUFRLEVBQUUsSUFBSSxDQUFDLE1BQU0sSUFBSSxHQUFHO1NBQzdCLENBQUM7SUFDSixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc0ZpbGVEdG8sIFZhc0ZpbGVEdG8gfSBmcm9tICcuL3Zhcy1maWxlLmR0byc7XG5pbXBvcnQgeyBVVUlEIH0gZnJvbSAnYW5ndWxhcjItdXVpZCc7XG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgeyBnZXRWYWx1ZUJ5UGF0aCB9IGZyb20gJy4uL3V0aWxzL2dldC12YWx1ZS1ieS1wYXRoJztcbmltcG9ydCB7IFZhc0Jhc2VEdG8gfSBmcm9tICcuL3Zhcy1iYXNlLmR0byc7XG5pbXBvcnQgeyBWYXNGaWVsZER0bywgVmFzRmllbGREdG9WYWx1ZSB9IGZyb20gJy4vdmFzLWZpZWxkLmR0byc7XG5pbXBvcnQgeyBWYXNGaWVsZE1vZGVsIH0gZnJvbSAnLi92YXMtZmllbGQubW9kZWwnO1xuaW1wb3J0IHsgVmFzRm9ybU1vZGVsIH0gZnJvbSAnLi92YXMtZm9ybS5tb2RlbCc7XG5pbXBvcnQgeyBWYXNKb2JEdG8gfSBmcm9tICcuL3Zhcy1qb2IuZHRvJztcbmltcG9ydCB7IFZhc1Jlc3RyaWN0ZWRBY2NvdW50T2JqZWN0TW9kZWwgfSBmcm9tICcuL3Zhcy1yZXN0cmljdGVkLWFjY291bnQtb2JqZWN0Lm1vZGVsJztcbmltcG9ydCB7IEdlb0xvY2F0aW9uLCBnZXRFbXB0eUdlb0xvY2F0aW9uIH0gZnJvbSAnLi4vbW9kZWwvZ2VvLWxvY2F0aW9uJztcbmltcG9ydCB7IGlzQ2FtZXJhQ29udHJvbFZhbHVlVjEsIFZhc0NhbWVyYUNvbnRyb2xWYWx1ZU1vZGVsIH0gZnJvbSAnLi4vY29udHJvbC12YWx1ZS92YXMtY2FtZXJhLWNvbnRyb2wtdmFsdWUubW9kZWwnO1xuaW1wb3J0IHsgaXNBcnJheVN0cmluZyB9IGZyb20gJy4uL3V0aWxzL2lzLWFycmF5LXN0cmluZyc7XG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWYXNKb2JNb2RlbER5bmFtaWNJbnRlcmZhY2Uge1xuICBbczogc3RyaW5nXTogc3RyaW5nIHwgbnVtYmVyIHwgUmVjb3JkPHN0cmluZywgVmFzRmllbGREdG9WYWx1ZT47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGFyc2VTeW50YXhPcHRpb25zIHtcbiAgLy8gVGhpcyB2YWx1ZSB3aWxsIGJlIHVzZWQgdG8gYWRqdXN0IGFueSBkYXRldGltZSB2YWx1ZXMgdGhhdCBhcmUgcmVmZXJlbmNlZFxuICAvLyBpbiB0aGUgc3ludGF4IHN0cmluZy4gU2VlXG4gIC8vIGh0dHBzOi8vbW9tZW50anNjb20ucmVhZHRoZWRvY3MuaW8vZW4vbGF0ZXN0L21vbWVudC8wMy1tYW5pcHVsYXRpbmcvMDktdXRjLW9mZnNldC9cbiAgLy8gZm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgaG93IGBtb21lbnRgIHdpbGwgaGFuZGxlIHRoZSB2YWx1ZS5cbiAgdGltZVpvbmVPZmZzZXQ6IG51bWJlcixcbiAgLy8gdGhpcyBkaWN0aW9uYXJ5IGNhbiBiZSBwYXNzZWQgaW4gdG8gY29udGFpbiBvdGhlciBvYmplY3RzIHRvIGJlIHJlZmVyZW5jZWRcbiAgLy8gaW4gdGhlIHN5bnRheC4gRm9yIGV4YW1wbGUgaWYgd2UgaGF2ZSB7am9iLmZvb30gdGhpcyB3aWxsIHJlZmVyZW5jZSB0aGVcbiAgLy8gam9iJ3MgYGZvb2AgcHJvcGVydHksIGhvd2V2ZXIgaWYgd2UgaGF2ZSBcInJlcG9ydExheW91dC50aXRsZVwiIHRoaXMgd2lsbFxuICAvLyBleHBlY3QgdG8gZmluZCBhIHByb3BlcnR5IG9mIGBvYmplY3RzYCBjYWxsZWQgYHJlcG9ydExheW91dGAgd2hpY2ggd2lsbFxuICAvLyBoYXZlIGEgcHJvcGVydHkgY2FsbGVkIGB0aXRsZWBcbiAgb2JqZWN0cz86IFJlY29yZDxzdHJpbmcsIFBhcnRpYWw8VmFzQmFzZUR0bz4gfCBSZWNvcmQ8c3RyaW5nLCBWYXNGaWVsZER0b1ZhbHVlPj47XG59XG5cbi8qKlxuICogSm9iTW9kZWxcbiAqL1xuZXhwb3J0IGNsYXNzIFZhc0pvYk1vZGVsIGV4dGVuZHMgVmFzUmVzdHJpY3RlZEFjY291bnRPYmplY3RNb2RlbCB7XG4gIC8qKlxuICAgKiBAcGFyYW0gaWRcbiAgICogQHBhcmFtIGNyZWF0ZWRcbiAgICogQHBhcmFtIHNlcnZlckNyZWF0ZWRcbiAgICogQHBhcmFtIGNyZWF0ZWRCeVxuICAgKiBAcGFyYW0gbW9kaWZpZWRcbiAgICogQHBhcmFtIHNlcnZlck1vZGlmaWVkXG4gICAqIEBwYXJhbSBtb2RpZmllZEJ5XG4gICAqIEBwYXJhbSBhY2NvdW50XG4gICAqIEBwYXJhbSBhY2Nlc3NHcm91cFxuICAgKiBAcGFyYW0gcmVmZXJlbmNlXG4gICAqIEBwYXJhbSBqb2JEYXRlXG4gICAqIEBwYXJhbSBqb2JTdGF0dXNcbiAgICogQHBhcmFtIGpvYlR5cGVcbiAgICogQHBhcmFtIGFzc2lnbmVlSWRcbiAgICogQHBhcmFtIGZvcm1JZFxuICAgKiBAcGFyYW0gdGltZVpvbmVPZmZzZXRcbiAgICogQHBhcmFtIHBlbmRpbmdGaWVsZHNcbiAgICogQHBhcmFtIGNoaWxkTW9kaWZpZWRcbiAgICogQHBhcmFtIHZlcnNpb25cbiAgICogQHBhcmFtIGZpZWxkc1xuICAgKiBAcGFyYW0gZmlsZXMsXG4gICAqIEBwYXJhbSBjcmVhdGVkQnlEaXNwbGF5TmFtZVxuICAgKiBAcGFyYW0gbW9kaWZpZWRCeURpc3BsYXlOYW1lXG4gICAqIEBwYXJhbSBnZW9Mb2NhdGlvblxuICAgKi9cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIG92ZXJyaWRlIGlkOiBzdHJpbmcsXG4gICAgcHVibGljIG92ZXJyaWRlIGNyZWF0ZWQ6IHN0cmluZyxcbiAgICBwdWJsaWMgb3ZlcnJpZGUgc2VydmVyQ3JlYXRlZDogc3RyaW5nLFxuICAgIHB1YmxpYyBvdmVycmlkZSBjcmVhdGVkQnk6IHN0cmluZyxcbiAgICBwdWJsaWMgb3ZlcnJpZGUgbW9kaWZpZWQ6IHN0cmluZyxcbiAgICBwdWJsaWMgb3ZlcnJpZGUgc2VydmVyTW9kaWZpZWQ6IHN0cmluZyxcbiAgICBwdWJsaWMgb3ZlcnJpZGUgbW9kaWZpZWRCeTogc3RyaW5nLFxuICAgIHB1YmxpYyBvdmVycmlkZSBhY2NvdW50OiBzdHJpbmcsXG4gICAgcHVibGljIG92ZXJyaWRlIGFjY2Vzc0dyb3VwOiBzdHJpbmcsXG4gICAgcHVibGljIHJlZmVyZW5jZTogc3RyaW5nLFxuICAgIHB1YmxpYyBqb2JEYXRlOiBzdHJpbmcsXG4gICAgcHVibGljIGpvYlN0YXR1czogc3RyaW5nLFxuICAgIHB1YmxpYyBqb2JUeXBlOiBzdHJpbmcsXG4gICAgcHVibGljIGFzc2lnbmVlSWQ6IHN0cmluZyxcbiAgICBwdWJsaWMgZm9ybUlkOiBzdHJpbmcsXG4gICAgcHVibGljIHRpbWVab25lT2Zmc2V0OiBudW1iZXIsXG4gICAgcHVibGljIHBlbmRpbmdGaWVsZHM6IG51bWJlcixcbiAgICBwdWJsaWMgY2hpbGRNb2RpZmllZDogc3RyaW5nLFxuICAgIHB1YmxpYyB2ZXJzaW9uOiBudW1iZXIsXG4gICAgcHVibGljIGZpZWxkczogQXJyYXk8VmFzRmllbGREdG8+LFxuICAgIHB1YmxpYyBmaWxlczogQXJyYXk8VmFzRmlsZUR0bz4sXG4gICAgcHVibGljIGNyZWF0ZWRCeURpc3BsYXlOYW1lOiBzdHJpbmcsXG4gICAgcHVibGljIG1vZGlmaWVkQnlEaXNwbGF5TmFtZTogc3RyaW5nLFxuICAgIHB1YmxpYyBnZW9Mb2NhdGlvbjogR2VvTG9jYXRpb25cbiAgKSB7XG4gICAgc3VwZXIoXG4gICAgICBpZCxcbiAgICAgIGNyZWF0ZWQsXG4gICAgICBzZXJ2ZXJDcmVhdGVkLFxuICAgICAgY3JlYXRlZEJ5LFxuICAgICAgbW9kaWZpZWQsXG4gICAgICBzZXJ2ZXJNb2RpZmllZCxcbiAgICAgIG1vZGlmaWVkQnksXG4gICAgICBhY2NvdW50LFxuICAgICAgYWNjZXNzR3JvdXBcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhpcyB3aXRoIHRoZSBkeW5hbWljIGludGVyZmFjZVxuICAgKiBAcmV0dXJuIHtWYXNKb2JNb2RlbER5bmFtaWNJbnRlcmZhY2V9XG4gICAqL1xuICBnZXQgJHRoaXMoKTogVmFzSm9iTW9kZWxEeW5hbWljSW50ZXJmYWNlIHtcbiAgICByZXR1cm4gdGhpcyBhcyBhbnk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIGxpc3Qgb2YgSm9iIGR5bmFtaWMgcHJvcGVydGllcyBpLmUuIHRob3NlIHRoYXQgYXJlIGFkZGVkIGJ5IHRoZVxuICAgKiBkeW5hbWljIGZvcm1zXG4gICAqL1xuICBnZXQgZHluYW1pY1Byb3BlcnRpZXMoKTogQXJyYXk8c3RyaW5nPiB7XG4gICAgY29uc3QgbmF0aXZlUHJvcHMgPSB0aGlzLnN0YXRpY1Byb3BlcnRpZXM7XG4gICAgcmV0dXJuIE9iamVjdFxuICAgICAgLmdldE93blByb3BlcnR5TmFtZXModGhpcylcbiAgICAgIC5maWx0ZXIocHJvcCA9PiAhbmF0aXZlUHJvcHMuaW5jbHVkZXMocHJvcCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBsaXN0IG9mIEpvYiBzdGF0aWMgcHJvcGVydGllcyBpLmUuIHRob3NlIHRoYXQgYXJlIGRlY2xhcmVkIGJ5XG4gICAqIHRoZSB0eXBlXG4gICAqL1xuICBnZXQgc3RhdGljUHJvcGVydGllcygpOiBBcnJheTxzdHJpbmc+IHtcbiAgICByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoVmFzSm9iTW9kZWwuZW1wdHkoKSk7XG4gIH1cblxuICAvKipcbiAgICogQHJldHVybiB7VmFzSm9iTW9kZWx9XG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGVtcHR5KCk6IFZhc0pvYk1vZGVsIHtcbiAgICByZXR1cm4gbmV3IFZhc0pvYk1vZGVsKFxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5ldy1jYXBcbiAgICAgIFVVSUQuVVVJRCgpLFxuICAgICAgJycsXG4gICAgICAnJyxcbiAgICAgICcnLFxuICAgICAgJycsXG4gICAgICAnJyxcbiAgICAgICcnLFxuICAgICAgJycsXG4gICAgICAnJyxcbiAgICAgICcnLFxuICAgICAgJycsXG4gICAgICAnJyxcbiAgICAgICcnLFxuICAgICAgJycsXG4gICAgICAnJyxcbiAgICAgIG1vbWVudCgpLnV0Y09mZnNldCgpLFxuICAgICAgMCxcbiAgICAgICcnLFxuICAgICAgMCxcbiAgICAgIFtdLFxuICAgICAgW10sXG4gICAgICAnJyxcbiAgICAgICcnLFxuICAgICAgZ2V0RW1wdHlHZW9Mb2NhdGlvbigpXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge1Zhc0pvYkR0b30gam9iRHRvXG4gICAqIEByZXR1cm4ge1Zhc0pvYk1vZGVsfVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tRHRvKGpvYkR0bzogUGFydGlhbDxWYXNKb2JEdG8+KTogVmFzSm9iTW9kZWwge1xuICAgIGNvbnN0IG1vZGVsID0gbmV3IFZhc0pvYk1vZGVsKFxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5ldy1jYXBcbiAgICAgIGpvYkR0by5pZCB8fCBVVUlELlVVSUQoKSxcbiAgICAgIGpvYkR0by5jcmVhdGVkIHx8ICcnLFxuICAgICAgam9iRHRvLnNlcnZlckNyZWF0ZWQgfHwgJycsXG4gICAgICBqb2JEdG8uY3JlYXRlZEJ5IHx8ICcnLFxuICAgICAgam9iRHRvLm1vZGlmaWVkIHx8ICcnLFxuICAgICAgam9iRHRvLnNlcnZlck1vZGlmaWVkIHx8ICcnLFxuICAgICAgam9iRHRvLm1vZGlmaWVkQnkgfHwgJycsXG4gICAgICBqb2JEdG8uYWNjb3VudCB8fCAnJyxcbiAgICAgIGpvYkR0by5hY2Nlc3NHcm91cCB8fCAnJyxcbiAgICAgIGpvYkR0by5yZWZlcmVuY2UgfHwgJycsXG4gICAgICBqb2JEdG8uam9iRGF0ZSB8fCAnJyxcbiAgICAgIGpvYkR0by5qb2JTdGF0dXMgfHwgJycsXG4gICAgICBqb2JEdG8uam9iVHlwZSB8fCAnJyxcbiAgICAgIGpvYkR0by5hc3NpZ25lZUlkIHx8ICcnLFxuICAgICAgam9iRHRvLmZvcm1JZCB8fCAnJyxcbiAgICAgIGpvYkR0by50aW1lWm9uZU9mZnNldCB8fCBtb21lbnQoKS51dGNPZmZzZXQoKSxcbiAgICAgIGpvYkR0by5wZW5kaW5nRmllbGRzIHx8IDAsXG4gICAgICBqb2JEdG8uY2hpbGRNb2RpZmllZCB8fCAnJyxcbiAgICAgIGpvYkR0by52ZXJzaW9uIHx8IDAsXG4gICAgICBqb2JEdG8uZmllbGRzIHx8IFtdLFxuICAgICAgam9iRHRvLmZpbGVzIHx8IFtdLFxuICAgICAgam9iRHRvLmNyZWF0ZWRCeURpc3BsYXlOYW1lIHx8ICcnLFxuICAgICAgam9iRHRvLm1vZGlmaWVkQnlEaXNwbGF5TmFtZSB8fCAnJyxcbiAgICAgIGpvYkR0by5nZW9Mb2NhdGlvbiB8fCBnZXRFbXB0eUdlb0xvY2F0aW9uKClcbiAgICApO1xuICAgIGNvbnN0IGVtcHR5S2V5cyA9IG1vZGVsLnN0YXRpY1Byb3BlcnRpZXM7XG4gICAgT2JqZWN0XG4gICAgICAua2V5cyhqb2JEdG8pXG4gICAgICAuZmlsdGVyKGtleSA9PiBlbXB0eUtleXMuaW5kZXhPZihrZXkpID09PSAtMSlcbiAgICAgIC5mb3JFYWNoKChrZXk6IHN0cmluZykgPT5cbiAgICAgICAgbW9kZWwuJHRoaXNba2V5XSA9IChqb2JEdG8gYXMgVmFzSm9iTW9kZWxEeW5hbWljSW50ZXJmYWNlKVtrZXldXG4gICAgICApO1xuICAgIHJldHVybiBtb2RlbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge1Zhc0Zvcm1Nb2RlbH0gZm9ybU1vZGVsXG4gICAqIEByZXR1cm4ge1JlY29yZDxzdHJpbmcsIFZhc0ZpZWxkRHRvVmFsdWU+fVxuICAgKi9cbiAgZ2V0RmllbGRzKGZvcm1Nb2RlbDogVmFzRm9ybU1vZGVsKTogUmVjb3JkPHN0cmluZywgVmFzRmllbGREdG9WYWx1ZT4ge1xuICAgIGNvbnN0IGZpZWxkczoge1trZXk6IHN0cmluZ106IFZhc0ZpZWxkRHRvVmFsdWV9ID0ge307XG4gICAgZm9ybU1vZGVsLmdyb3Vwc1xuICAgICAgLmZvckVhY2goZ3JvdXAgPT4ge1xuICAgICAgICBncm91cC5jb250cm9scy5mb3JFYWNoKGNvbnRyb2wgPT4ge1xuICAgICAgICAgIChmaWVsZHMpW2NvbnRyb2wucmVwb3J0VGVtcGxhdGVOYW1lXSA9XG4gICAgICAgICAgICB0aGlzLmdldFZhbHVlQnlQYXRoKFtncm91cC5uYW1lLCBjb250cm9sLm5hbWVdKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICByZXR1cm4gZmllbGRzO1xuICB9XG5cbiAgLyoqXG4gICAqIFdpbGwgcmV0dXJuIGFuIG9iamVjdCB3aG9zZSBrZXlzIGFyZSB0aGUgbmFtZXMgb2YgYWxsIGZpZWxkcyBpbiB0aGUgam9iIGJ1dFxuICAgKiB3aXRoIHRoZSBcImZpZWxkcy5cIiBwYXJ0IHJlbW92ZWQuIFRoaXMgbWV0aG9kIGlzIHNpbWlsYXIgdG8gYGdldEZpZWxkc2BcbiAgICogZXhjZXB0IHRoYXQgdGhpcyBtZXRob2Qgd2lsbCBvbmx5IHJldHVybiB2YWx1ZXMgdGhhdCBhcmUgc2V0IHdoZXJlYXNcbiAgICogYGdldEZpZWxkc2Agd2lsbCByZXR1cm4gYSBwcm9wZXJ0eSByZWdhcmRsZXNzIChiZWNhdXNlIGl0IHVzZXMgdGhlIGZvcm0gdG9cbiAgICogZHJpdmUgdGhlIGxvZ2ljKVxuICAgKiBAcmV0dXJuIHtSZWNvcmQ8c3RyaW5nLCBWYXNGaWVsZER0b1ZhbHVlPn1cbiAgICovXG4gIGdldEZpZWxkczIoKTogUmVjb3JkPHN0cmluZywgVmFzRmllbGREdG9WYWx1ZT4ge1xuICAgIGxldCBmaWVsZHM6IHtba2V5OiBzdHJpbmddOiBWYXNGaWVsZER0b1ZhbHVlfSA9IHt9O1xuICAgIHRoaXMuZHluYW1pY1Byb3BlcnRpZXNcbiAgICAgIC5mb3JFYWNoKChncm91cE5hbWUpID0+IHtcbiAgICAgICAgT2JqZWN0XG4gICAgICAgICAgLmtleXModGhpcy4kdGhpc1tncm91cE5hbWVdKVxuICAgICAgICAgIC5mb3JFYWNoKGNvbnRyb2xOYW1lID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNvbnRyb2xOYW1lU2hvcnQgPSBjb250cm9sTmFtZS5yZXBsYWNlKC9maWVsZHNcXC4vLCAnJyk7XG4gICAgICAgICAgICBmaWVsZHNbY29udHJvbE5hbWVTaG9ydF0gPSB0aGlzLmdldFZhbHVlQnlQYXRoKFxuICAgICAgICAgICAgICBbZ3JvdXBOYW1lLCBjb250cm9sTmFtZV1cbiAgICAgICAgICAgIClcbiAgICAgICAgICB9KVxuICAgICAgfSwge30pXG4gICAgcmV0dXJuIGZpZWxkcztcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGFuIG9iamVjdCBkZXNjcmliaW5nIGhvdyBtYW55IGF0dGFjaG1lbnRzIHdlcmUgYWRkZWQgdG8gdGhpcyBqb2JcbiAgICogKGNhbWVyYSBjb250cm9scyBhbmQgZmlsZXMpLCBhbmQgaG93IG1hbnkgaGF2ZSBub3QgYmVlbiB1cGxvYWRlZCB5ZXQuXG4gICAqXG4gICAqIEBwYXJhbSBmb3JtTW9kZWwgaW5zdGFuY2Ugb2Yge0BsaW5rIFZhc0Zvcm1Nb2RlbH0gdGhhdCB3YXMgdXNlZCB3aGVuIHRoZVxuICAgKiBqb2Igd2FzIGNyZWF0ZWRcbiAgICovXG4gIGdldEZpbGVzVXBsb2FkU3RhdHVzKFxuICAgIGZvcm1Nb2RlbDogVmFzRm9ybU1vZGVsXG4gICk6IHtwZW5kaW5nOiBudW1iZXI7IHRvdGFsOiBudW1iZXJ9IHtcblxuICAgIGNvbnN0IHBhdGhzV2l0aFZhbHVlOiBBcnJheTxBcnJheTxzdHJpbmc+PiA9IGZvcm1Nb2RlbFxuICAgICAgLmdldENhbWVyYUNvbnRyb2xQYXRocygpXG4gICAgICAubWFwKHBhdGggPT4ge1xuICAgICAgICBjb25zdCB2YWx1ZTogVmFzRmlsZUR0byB8IFZhc0NhbWVyYUNvbnRyb2xWYWx1ZU1vZGVsID1cbiAgICAgICAgICB0aGlzLmdldFZhbHVlQnlQYXRoKHBhdGgpIGFzIGFueTtcbiAgICAgICAgaWYgKHZhbHVlICYmICEhdmFsdWUuaWQpIHtcbiAgICAgICAgICByZXR1cm4gcGF0aDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH0pXG4gICAgICAuZmlsdGVyKHBhdGggPT4gcGF0aCAhPT0gbnVsbCA/IHBhdGggOiBudWxsKVxuICAgICAgLmZpbHRlcihpc0FycmF5U3RyaW5nKTtcblxuICAgIGxldCB0b3RhbCA9IHBhdGhzV2l0aFZhbHVlLmxlbmd0aDtcblxuICAgIHRvdGFsICs9IHRoaXMuZmlsZXMubGVuZ3RoO1xuXG4gICAgLy8gY2FsY3VsYXRlIHRoZSBudW1iZXIgb2YgY2FtZXJhIGltYWdlcyBzdGlsbCB0byB1cGxvYWRcbiAgICBsZXQgcGVuZGluZyA9IHBhdGhzV2l0aFZhbHVlXG4gICAgICAubWFwKHBhdGggPT4gdGhpcy5nZXRWYWx1ZUJ5UGF0aChwYXRoKSBhcyBhbnkpXG4gICAgICAubWFwKCh2YWx1ZTogVmFzRmlsZUR0byB8IFZhc0NhbWVyYUNvbnRyb2xWYWx1ZU1vZGVsKSA9PiB7XG4gICAgICAgIGlmIChpc0ZpbGVEdG8odmFsdWUpKSB7XG4gICAgICAgICAgcmV0dXJuIHZhbHVlLmlkICYmIHZhbHVlLnN0YXR1cyAhPT0gJ0NPTVBMRVRFJztcbiAgICAgICAgfSBlbHNlIGlmIChpc0NhbWVyYUNvbnRyb2xWYWx1ZVYxKHZhbHVlKSkge1xuICAgICAgICAgIC8vIGlmIHVybCBpcyBub3Qgc2V0LCBpdCBoYXNuJ3QgYmVlbiB1cGxvYWRlZFxuICAgICAgICAgIHJldHVybiB2YWx1ZS5pZCAmJiAhdmFsdWUudXJsO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH0pXG4gICAgICAuZmlsdGVyKGhhc1VwbG9hZGVkID0+IGhhc1VwbG9hZGVkKVxuICAgICAgLmxlbmd0aDtcblxuICAgIC8vIGFkZCB0b3RhbCBmcm9tIGZpbGVzIHRoYXQgYXJlIHBlbmRpbmdcbiAgICBwZW5kaW5nICs9IHRoaXMuZmlsZXNcbiAgICAgIC5maWx0ZXIodmFsdWUgPT4gdmFsdWUuc3RhdHVzICE9PSAnQ09NUExFVEUnKVxuICAgICAgLmxlbmd0aDtcblxuICAgIHJldHVybiB7XG4gICAgICBwZW5kaW5nLFxuICAgICAgdG90YWxcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVGhpcyBtZXRob2Qgd2lsbCBoeWRyYXRlIHRoZSBgZmllbGRzYCBwcm9wZXJ0eSBvZiB0aGUgbW9kZWwuIFRoZSByZWFzb24gZm9yXG4gICAqIHRoaXMgaXMgdGhhdCB3ZSBoYXZlIGRpZmZlcmVudCB3YXlzIHRvIHN0b3JlIHRoZSBmaWVsZCBkYXRhLiBPbmUgd2F5LCBpc1xuICAgKiB3ZSBzdG9yZSB0aGVtIGFzIGR5bmFtaWMgcHJvcGVydGllcyBvZiB0aGUgam9iLiBGb3IgZXhhbXBsZSBqb2IuZm9vLmJhcixcbiAgICogd2hlcmUgYGZvb2AgaXMgdGhlIG5hbWUgb2YgYSBHcm91cCwgYW5kIGBiYXJgIGlzIHRoZSBuYW1lIG9mIGEgY29udHJvbC5cbiAgICogVGh1cywgd2hlbiB3ZSBjcmVhdGUgYSBqb2IgdXNpbmcgYSBmb3JtIGluIHRoZSBjbGllbnQsIHRoZSBqb2Igb2JqZWN0IHdpbGxcbiAgICogaGF2ZSBpdHMgc3RhdGljIHByb3BlcnRpZXMgKGlkLCBhY2NvdW50LCByZWZlcmVuY2UgZXRjKSwgYW5kIGFsc28gYSBudW1iZXJcbiAgICogb2YgZHluYW1pYyBwcm9wZXJ0aWVzIGRldGVybWluZWQgYnkgdGhlIEdyb3VwcyBhbmQgQ29udHJvbHMuIFRoaXMga2luZCBvZlxuICAgKiBvYmplY3QgaXMgbmljZSB0byB3b3JrIHdpdGggaW4gY2VydGFpbiBjaXJjdW1zdGFuY2VzLiBIb3dldmVyLCB0aGUgYXBpXG4gICAqIHdvcmtzIGRpZmZlcmVudGx5LiBJbiB0aGUgQVBJIGEgSm9iIGlzIGEgcmVjb3JkLCBhbmQgcmVmZXJlbmNlcyBhIG51bWJlciBvZlxuICAgKiBGaWVsZCByZWNvcmRzLiBFYWNoIEZpZWxkIHN0b3JlcyB0aGUgdmFsdWUuIENvbXBhcmluZyB0aGVzZSB0d28gbW9kZWxzIHdlXG4gICAqIGhhdmU6XG4gICAqIEEpIGpvYiB3aXRoIGR5bmFtaWMgcHJvcGVydGllcywgZS5nLlxuICAgKiB7XG4gICAqICAgaWQ6IDxndWlkPixcbiAgICogICByZWZlcmVuY2U6IFwic29tZXRoaW5nXCJcbiAgICogICA8b3RoZXIgc3RhdGljIGpvYiBwcm9wZXJ0aWVzPi4uLlxuICAgKiAgIGZvbzoge1xuICAgKiAgICAgYmFyOiBcInZhbHVlXCJcbiAgICogICB9XG4gICAqIH1cbiAgICpcbiAgICogQikgam9iIHdpdGggZmllbGRzXG4gICAqIHtcbiAgICogICBpZDogPGd1aWQ+LFxuICAgKiAgIHJlZmVyZW5jZTogXCJzb21ldGhpbmdcIlxuICAgKiAgIDxvdGhlciBzdGF0aWMgam9iIHByb3BlcnRpZXM+Li4uXG4gICAqICAgPHdpbGwgbm90IGhhdmUgZHluYW1pYyBwcm9wZXJ0aWVzPi4uLlxuICAgKiAgIGZpZWxkczogW1xuICAgKiAgICAge1xuICAgKiAgICAgICBpZDogPGd1aWQ+LFxuICAgKiAgICAgICA8b3RoZXIgZmllbGQgcHJvcGVydGllcz4sXG4gICAqICAgICAgIHZhbHVlOiBcInZhbHVlXCJcbiAgICogICAgIH1cbiAgICogICBdXG4gICAqIH1cbiAgICpcbiAgICogU28sIHdoYXQgdGhpcyBtZXRob2QgZG9lcyBpcyBnaXZlbiBhIEpvYk1vZGVsIGluIHRoZSBmb3JtIG9mIEEsIHJlYWQgYWxsXG4gICAqIG9mIHRob3NlIGR5bmFtaWMgcHJvcGVydGllcyBhbmQgc2V0IHRoZW0gaW50byBgZmllbGRzYC4gRG9pbmcgdGhpcyByZXF1aXJlc1xuICAgKiBrbm93bGVkZ2Ugb2YgdGhlIEZvcm0gdGhhdCB3YXMgdXNlZCB0byBjcmVhdGUgdGhlIGpvYi4gTW9yZW92ZXIsIHNpbmNlIHRoZVxuICAgKiBkeW5hbWljIHByb3BlcnRpZXMgZG8gbm90IGNvbnRhaW4gdGhlIGlkcyBvZiB0aGUgZmllbGRzLCB3ZSBhbHNvIGFsbG93IHRvXG4gICAqIHBhc3MgaW4gYSBgY29udHJvbEZpZWxkSWRNYXBgLiBUaGlzIG1hcCBzdG9yZXMgdGhlIG1hcHBpbmcgYmV0d2VlbiBDb250cm9sXG4gICAqIGFuZCB0aGUgRmllbGQgdGhhdCB3YXMgY3JlYXRlZCBpbiB0aGUgSm9iIHRvIHN0b3JlIHRoZSB2YWx1ZSBmb3IgdGhhdFxuICAgKiBDb250cm9sLiBUaGlzIGlzIHVzZWZ1bCwgaWYgZm9yIGV4YW1wbGUgeW91IHdhbnQgdG8gY29tcGFyZSBhIEpvYiBpbiBmb3JtIEFcbiAgICogd2l0aCBhIEpvYiBpbiBmb3JtIEIsIGZvciBleGFtcGxlIGlmIHlvdSB3YW50IHRvIHVwZGF0ZSB0aGUgSm9iIG9uIHRoZSBBUElcbiAgICogd2l0aCBhIEpvYiB0aGF0IHdhcyBzYXZlZCBieSBhIGNsaWVudCBpbiBmb3JtIEEuXG4gICAqXG4gICAqIEUuZy5cbiAgICogQ2xpZW50IC0+IEFQSTogY2xpZW50IHJlcXVlc3RzIGZvcm1cbiAgICogVXNlciAtPiBDbGllbnQ6IHVzZXIgZmlsbHMgaW4gdGhlIGZvcm0gYW5kIHN1Ym1pdHNcbiAgICogQ2xpZW50IC0+IEZpcmVzdG9yZTogY2xpZW50IHNhdmVzIHRoZSBKb2IgaW4gZm9ybSBBIGkuZS4gZHluYW1pYyBwcm9wc1xuICAgKiBGaXJlc3RvcmUgLT4gRnVuY3Rpb246IEEgZnVuY3Rpb24gaXMgdHJpZ2dlcmVkIHRvIHN5bmMgdGhlIGpvYiB0byB0aGUgQVBJXG4gICAqIEZ1bmN0aW9uIC0+IEFQSTogRnVuY3Rpb24gY2hlY2tzIGlmIGpvYiBhbHJlYWR5IGV4aXN0cywgaXQgcmVjZWl2ZXMgNDA0XG4gICAqIEZ1bmN0aW9uIC0+IEZ1bmN0aW9uOiBUaGUgZnVuY3Rpb24gY2FsbHMgYGh5ZHJhdGVGaWVsZHMoLi4uKWBcbiAgICogRnVuY3Rpb24gLT4gQVBJOiBUaGUgZnVuY3Rpb24gUE9TVCB0aGUgSm9iIHRvIC9qb2JzXG4gICAqIEZ1bmN0aW9uIC0+IEFQSTogVGhlIGZ1bmN0aW9uIFBPU1QgZWFjaCBmaWVsZCB0byAvZmllbGRzXG4gICAqXG4gICAqIFNpbWlsYXJseSwgaWYgdGhlIHVzZXIgdXBkYXRlcyB0aGUgam9iXG4gICAqIENsaWVudCAtPiBBUEk6IGNsaWVudCByZXF1ZXN0cyBmb3JtXG4gICAqIFVzZXIgLT4gQ2xpZW50OiB1c2VyIGZpbGxzIGluIHRoZSBmb3JtIGFuZCBzdWJtaXRzIGFuIHVwZGF0ZVxuICAgKiBDbGllbnQgLT4gRmlyZXN0b3JlOiBjbGllbnQgc2F2ZXMgdGhlIEpvYiBpbiBmb3JtIEEgaS5lLiBkeW5hbWljIHByb3BzXG4gICAqIEZpcmVzdG9yZSAtPiBGdW5jdGlvbjogQSBmdW5jdGlvbiBpcyB0cmlnZ2VyZWQgdG8gc3luYyB0aGUgam9iIHRvIHRoZSBBUElcbiAgICogRnVuY3Rpb24gLT4gQVBJOiBGdW5jdGlvbiBjaGVja3MgaWYgam9iIGFscmVhZHkgZXhpc3RzLCBpdCByZWNlaXZlcyAyMDBcbiAgICogRnVuY3Rpb24gLT4gRnVuY3Rpb246IFRoZSBmdW5jdGlvbiBjYWxscyBgaHlkcmF0ZUZpZWxkcyguLi4pYCBwYXNzaW5nIGluXG4gICAqICAgICAgICAgICAgICAgICAgICAgICB0aGUgbWFwIGlzIG1hZGUgYnkgaXRlcmF0aW5nIG92ZXIgdGhlIGZpZWxkcyBpdFxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgcmVjZWl2ZWQgZnJvbSB0aGUgQVBJIGFuZCBzdG9yaW5nIHRoZSBtYXBwaW5nc1xuICAgKiAgICAgICAgICAgICAgICAgICAgICAgYmV0d2VlbiBjb250cm9sSWQgYW5kIGZpZWxkSWQgZm9yIGVhY2ggZmllbGRcbiAgICogRnVuY3Rpb24gLT4gQVBJOiBUaGUgZnVuY3Rpb24gUEFUQ0ggdGhlIEpvYiB0byAvam9ic1xuICAgKiBGdW5jdGlvbiAtPiBBUEk6IFRoZSBmdW5jdGlvbiBQT1NUL1BBVENIIGVhY2ggZmllbGQgdG8gL2ZpZWxkc1xuICAgKiB0cmVhdGVkIGFzIG5ld1xuICAgKlxuICAgKiBAcGFyYW0ge1Zhc0Zvcm1Nb2RlbH0gZm9ybU1vZGVsIHRoZSBWYXNGb3JtTW9kZWwgdGhhdCB3YXMgdXNlZCB0byBjcmVhdGVcbiAgICogdGhlIGpvYlxuICAgKiBAcGFyYW0ge01hcDxzdHJpbmcsIHN0cmluZz59IGNvbnRyb2xGaWVsZElkTWFwIGEgbWFwcGluZyBvZiBjb250cm9sIHRvXG4gICAqIGZpZWxkIGlkcy4gVGhpcyBpcyB1c2VkIHRvIGRldGVybWluZSB3aGV0aGVyIGEgbmV3IGlkIGZvciB0aGUgZmllbGQgc2hvdWxkXG4gICAqIGJlIGdlbmVyYXRlZCwgb3IgdG8gcmV1c2UgYW4gZXhpc3Rpbmcgb25lIGZyb20gdGhlIG1hcC5cbiAgICogQHBhcmFtIHtBcnJheTxzdHJpbmc+fSBjb250cm9sTmFtZXMgaWYgYSB2YWx1ZSBpcyBwcm92aWRlZCwgaXQgd2lsbCBiZSB1c2VkXG4gICAqIHRvIGZpbHRlciB0aGUgZmllbGRzIHRoYXQgYXJlIHJldHVybmVkLlxuICAgKiBAcmV0dXJuIHtBcnJheTxWYXNGaWVsZER0bz59XG4gICAqL1xuICBoeWRyYXRlRmllbGRzKFxuICAgIGZvcm1Nb2RlbDogVmFzRm9ybU1vZGVsLFxuICAgIGNvbnRyb2xGaWVsZElkTWFwOiBNYXA8c3RyaW5nLCBzdHJpbmc+ID0gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oKSxcbiAgICBjb250cm9sTmFtZXM/OiBBcnJheTxzdHJpbmc+XG4gICk6IHZvaWQge1xuICAgIGNvbnN0IGZpZWxkczogQXJyYXk8VmFzRmllbGREdG8+ID0gW107XG4gICAgZm9ybU1vZGVsLmdyb3Vwc1xuICAgICAgLmZvckVhY2goZ3JvdXAgPT4ge1xuICAgICAgICBncm91cC5jb250cm9scy5mb3JFYWNoKGNvbnRyb2wgPT4ge1xuXG4gICAgICAgICAgaWYgKCFjb250cm9sLm5hbWUuc3RhcnRzV2l0aCgnZmllbGRzLicpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGNvbnRyb2xOYW1lcyAmJiAhY29udHJvbE5hbWVzLmluY2x1ZGVzKGNvbnRyb2wubmFtZSkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBmaWVsZHMucHVzaChWYXNGaWVsZE1vZGVsLmZyb21EdG8oe1xuICAgICAgICAgICAgLy8gaWYgdGhlIGNvbnRyb2xJZCBleGlzdHMgaW4gdGhlIG1hcCwgdXNlIHRoZSBhc3NvY2lhdGVkIGZpZWxkSWQsXG4gICAgICAgICAgICAvLyBvdGhlcndpc2UgZ2VuZXJhdGUgYSBuZXcgaWQgZm9yIHRoZSBmaWVsZC5cbiAgICAgICAgICAgIGlkOiBjb250cm9sRmllbGRJZE1hcC5nZXQoY29udHJvbC5pZCkgfHwgVVVJRC5VVUlEKCksXG4gICAgICAgICAgICBhY2NvdW50OiB0aGlzLmFjY291bnQsXG4gICAgICAgICAgICBqb2I6IHRoaXMuaWQsXG4gICAgICAgICAgICBjcmVhdGVkQnk6IHRoaXMuY3JlYXRlZEJ5LFxuICAgICAgICAgICAgY3JlYXRlZDogdGhpcy5jcmVhdGVkLFxuICAgICAgICAgICAgbW9kaWZpZWRCeTogdGhpcy5tb2RpZmllZEJ5LFxuICAgICAgICAgICAgbW9kaWZpZWQ6IHRoaXMubW9kaWZpZWQsXG4gICAgICAgICAgICBjb250cm9sOiBjb250cm9sLmlkLFxuICAgICAgICAgICAgdmFsdWU6IHRoaXMuZ2V0VmFsdWVCeVBhdGgoXG4gICAgICAgICAgICAgIFtncm91cC5uYW1lLCBjb250cm9sLm5hbWVdXG4gICAgICAgICAgICApXG4gICAgICAgICAgfSkpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIHRoaXMuZmllbGRzID0gZmllbGRzO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nW119IHBhdGggcGF0aCBzZWdtZW50c1xuICAgKiBAcmV0dXJuIHt2b2lkfVxuICAgKi9cbiAgZ2V0VmFsdWVCeVBhdGg8VCBleHRlbmRzIFZhc0ZpZWxkRHRvVmFsdWU+KFxuICAgIHBhdGg6IHN0cmluZ1tdID0gW11cbiAgKTogVCB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIGdldFZhbHVlQnlQYXRoKHBhdGgsIHRoaXMuJHRoaXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEEgdmVyeSBub24gc29waGlzdGljYXRlZCB3YXkgdG8gc2V0IHZhbHVlcyBpbiB0aGUgam9iIHZpYSBwYXRoc1xuICAgKlxuICAgKiBGb3IgZXhhbXBsZTpcbiAgICpcbiAgICogc2V0VmFsdWVCeVBhdGgoJ3ZhbHVlJywgWydmb28nLCAnYmFyJ10pO1xuICAgKlxuICAgKiB3aWxsIG1ha2UgcmVzdWx0cyBpbiBqb2JcbiAgICoge1xuICAgKiAgIGZvbzoge1xuICAgKiAgICAgYmFyOiAndmFsdWUnXG4gICAqICAgfVxuICAgKiB9XG4gICAqXG4gICAqIEBwYXJhbSB7YW55fSB2YWx1ZSB0aGUgdmFsdWUgdG8gc2V0XG4gICAqIEBwYXJhbSB7c3RyaW5nW119IHBhdGggcGF0aCBzZWdtZW50c1xuICAgKi9cbiAgc2V0VmFsdWVCeVBhdGgodmFsdWU6IFZhc0ZpZWxkRHRvVmFsdWUsIHBhdGg6IHN0cmluZ1tdID0gW10pOiB2b2lkIHtcbiAgICBzd2l0Y2ggKHBhdGgubGVuZ3RoKSB7XG4gICAgICBjYXNlIDA6IHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY2FzZSAxOiB7XG4gICAgICAgICh0aGlzIGFzIGFueSlbcGF0aFswXV0gPSB2YWx1ZTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY2FzZSAyOiB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBtYXgtbGVuXG4gICAgICAgICh0aGlzLiR0aGlzW3BhdGhbMF1dIGFzIFJlY29yZDxzdHJpbmcsIFZhc0ZpZWxkRHRvVmFsdWU+KVtwYXRoWzFdXSA9IHZhbHVlO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjYXNlIDM6IHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG1heC1sZW5cbiAgICAgICAgKCh0aGlzLiR0aGlzW3BhdGhbMF1dIGFzIFJlY29yZDxzdHJpbmcsIFZhc0ZpZWxkRHRvVmFsdWU+KVtwYXRoWzFdXSBhcyBSZWNvcmQ8c3RyaW5nLCBWYXNGaWVsZER0b1ZhbHVlPilbcGF0aFsyXV0gPSB2YWx1ZTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgZGVmYXVsdDoge1xuICAgICAgICB0aHJvdyBFcnJvcigncGF0aCBoYXMgdG9vIG1hbnkgc2VnbWVudHMnKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtib29sZWFufSBzdGF0aWNPbmx5IGlmIHRydWUsIHdpbGwgb25seSBvdXRwdXQgdmFsdWVzIGZvciB0aGUgc3RhdGljXG4gICAqIHByb3BlcnRpZXMgaW4gdGhlIGR0b1xuICAgKiBAcmV0dXJuIHtWYXNKb2JEdG99XG4gICAqL1xuICBwdWJsaWMgdG9EdG8oc3RhdGljT25seSA9IGZhbHNlKTogVmFzSm9iRHRvIHtcblxuICAgIGlmIChzdGF0aWNPbmx5KSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBpZDogdGhpcy5pZCxcbiAgICAgICAgY3JlYXRlZDogdGhpcy5jcmVhdGVkLFxuICAgICAgICBjcmVhdGVkQnk6IHRoaXMuY3JlYXRlZEJ5LFxuICAgICAgICBtb2RpZmllZDogdGhpcy5tb2RpZmllZCxcbiAgICAgICAgbW9kaWZpZWRCeTogdGhpcy5tb2RpZmllZEJ5LFxuICAgICAgICBzZXJ2ZXJDcmVhdGVkOiB0aGlzLnNlcnZlckNyZWF0ZWQsXG4gICAgICAgIHNlcnZlck1vZGlmaWVkOiB0aGlzLnNlcnZlck1vZGlmaWVkLFxuICAgICAgICBhY2NvdW50OiB0aGlzLmFjY291bnQsXG4gICAgICAgIGFjY2Vzc0dyb3VwOiB0aGlzLmFjY2Vzc0dyb3VwLFxuICAgICAgICByZWZlcmVuY2U6IHRoaXMucmVmZXJlbmNlLFxuICAgICAgICBqb2JEYXRlOiB0aGlzLmpvYkRhdGUsXG4gICAgICAgIGpvYlN0YXR1czogdGhpcy5qb2JTdGF0dXMsXG4gICAgICAgIGpvYlR5cGU6IHRoaXMuam9iVHlwZSxcbiAgICAgICAgYXNzaWduZWVJZDogdGhpcy5hc3NpZ25lZUlkLFxuICAgICAgICBmb3JtSWQ6IHRoaXMuZm9ybUlkLFxuICAgICAgICB0aW1lWm9uZU9mZnNldDogdGhpcy50aW1lWm9uZU9mZnNldCxcbiAgICAgICAgcGVuZGluZ0ZpZWxkczogdGhpcy5wZW5kaW5nRmllbGRzLFxuICAgICAgICBjaGlsZE1vZGlmaWVkOiB0aGlzLmNoaWxkTW9kaWZpZWQsXG4gICAgICAgIHZlcnNpb246IHRoaXMudmVyc2lvbixcbiAgICAgICAgZmllbGRzOiB0aGlzLmZpZWxkcyxcbiAgICAgICAgZmlsZXM6IHRoaXMuZmlsZXMsXG4gICAgICAgIGNyZWF0ZWRCeURpc3BsYXlOYW1lOiB0aGlzLmNyZWF0ZWRCeURpc3BsYXlOYW1lLFxuICAgICAgICBtb2RpZmllZEJ5RGlzcGxheU5hbWU6IHRoaXMubW9kaWZpZWRCeURpc3BsYXlOYW1lLFxuICAgICAgICBnZW9Mb2NhdGlvbjogdGhpcy5nZW9Mb2NhdGlvblxuICAgICAgfTtcbiAgICB9XG5cbiAgICBjb25zdCBkdG8gPSB7fSBhcyBWYXNKb2JNb2RlbER5bmFtaWNJbnRlcmZhY2U7XG4gICAgWy4uLnRoaXMuc3RhdGljUHJvcGVydGllcywgLi4udGhpcy5keW5hbWljUHJvcGVydGllc11cbiAgICAgIC5mb3JFYWNoKHByb3AgPT5cbiAgICAgICAgKGR0bylbcHJvcF0gPSB0aGlzLiR0aGlzW3Byb3BdKTtcblxuICAgIHJldHVybiBkdG8gYXMgYW55O1xuICB9XG5cbiAgLyoqXG4gICAqIFRoaXMgbWV0aG9kIHdpbGwgcGFyc2UgYSBzeW50YXggdGhhdCBhbGxvd3MgdXMgdG8gYnVpbGQgc3RyaW5ncyBmcm9tIHRoZVxuICAgKiB2YWx1ZXMgb2YgZnJvbSB0aGUgam9iIG1vZGVsLiBGb3IgZXhhbXBsZSBpZiB0aGUgam9iIG1vZGVsIHdhczpcbiAgICpcbiAgICoge1xuICAgKiAgIGZvbzogJ2JhcidcbiAgICogfVxuICAgKlxuICAgKiBhbmQgd2UgcGFzcyBcImkgYW0gZm9vIHtmb299XCIsIHRoZSByZXN1bHQgd291bGQgYmU6XG4gICAqXG4gICAqIFwiaSBhbSBmb28gYmFyXCJcbiAgICpcbiAgICogd2UgY2FuIGFsc28gdXNlIG1vbWVudCB0byBwYXJzZSBkYXRlcywgZm9yIGV4YW1wbGUgaWYgdGhlIGpvYiBtb2RlbCB3YXM6XG4gICAqXG4gICAqIHtcbiAgICogICBjcmVhdGVkOiBcIjIwMjItMDEtMDFUMDA6MDA6MDArMDAwMFwiXG4gICAqIH1cbiAgICpcbiAgICogYW5kIHdlIHBhc3MgXCJ7Y3JlYXRlZHxkYXRlOllZLU1NLUREfVwiLCB0aGUgcmVzdWx0IHdvdWxkIGJlOlxuICAgKlxuICAgKiBcIjIwMjItMDEtMDFcIlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdmFsdWUgYSBzdHJpbmcgd2l0aCB0aGUgc3ludGF4XG4gICAqIEBwYXJhbSB7UGFyc2VTeW50YXhPcHRpb25zfSBvcHRpb25zXG4gICAqIEByZXR1cm4ge3N0cmluZ30gdGhlIHJlc3VsdHMgb2YgcGFyc2luZyB0aGUgc3ludGF4IG9uIHRoaXMgam9iXG4gICAqL1xuICBwYXJzZVN5bnRheChcbiAgICB2YWx1ZTogc3RyaW5nLFxuICAgIG9wdGlvbnM6IFBhcnNlU3ludGF4T3B0aW9ucyA9IHtcbiAgICAgIHRpbWVab25lT2Zmc2V0OiAwXG4gICAgfVxuICApOiBzdHJpbmcge1xuXG4gICAgaWYgKCF2YWx1ZSB8fCB0eXBlb2YgdmFsdWUgIT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICAgIHJldHVybiB2YWx1ZS5yZXBsYWNlKC8oe1tefV0qfSkvZywgKG1hdGNoOiBzdHJpbmcsIHRva2VuOiBzdHJpbmcpID0+IHtcbiAgICAgIGNvbnN0IHN5bnRheCA9IHRva2VuLnN1YnN0cmluZygxLCB0b2tlbi5sZW5ndGggLSAxKTtcblxuICAgICAgbGV0IFtrZXksIGZpbHRlcl0gPSBzeW50YXguc3BsaXQoJ3wnKTtcbiAgICAgIGtleSA9IChrZXkgfHwgJycpLnRyaW0oKTtcbiAgICAgIGZpbHRlciA9IChmaWx0ZXIgfHwgJycpLnRyaW0oKVxuXG4gICAgICBsZXQgZmlsdGVyTmFtZSwgZmlsdGVyQXJnOiBzdHJpbmcgPSAnJztcbiAgICAgIGlmIChmaWx0ZXIpIHtcbiAgICAgICAgY29uc3Qgc3BsaXRJbmRleCA9IGZpbHRlci5pbmRleE9mKCc6Jyk7XG4gICAgICAgIGlmIChzcGxpdEluZGV4ICE9PSAtMSkge1xuICAgICAgICAgIGZpbHRlck5hbWUgPSBmaWx0ZXIuc3Vic3RyaW5nKDAsIHNwbGl0SW5kZXgpO1xuICAgICAgICAgIGZpbHRlckFyZyA9IGZpbHRlci5zdWJzdHJpbmcoc3BsaXRJbmRleCArIDEpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGZpbHRlck5hbWUgPSBmaWx0ZXI7XG4gICAgICAgICAgZmlsdGVyQXJnID0gJyc7XG4gICAgICAgIH1cbiAgICAgICAgZmlsdGVyTmFtZSA9IChmaWx0ZXJOYW1lIHx8ICcnKS50cmltKCk7XG4gICAgICAgIGZpbHRlckFyZyA9IChmaWx0ZXJBcmcgfHwgJycpLnRyaW0oKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHBhdGggPSBrZXkuc3BsaXQoJy4nKTtcbiAgICAgIGNvbnN0IG9iamVjdEtleSA9IHBhdGguc2hpZnQoKSB8fCAnJztcbiAgICAgIGxldCByZXN1bHQgPSAnJztcbiAgICAgIGlmIChvYmplY3RLZXkgPT09ICdqb2InKSB7XG4gICAgICAgIHJlc3VsdCA9ICh0aGlzLmdldFZhbHVlQnlQYXRoKHBhdGgpIHx8ICcnKS50b1N0cmluZygpO1xuICAgICAgfSBlbHNlIGlmIChvYmplY3RLZXkgPT09ICdmaWVsZHMnKSB7XG4gICAgICAgIHJlc3VsdCA9IChnZXRWYWx1ZUJ5UGF0aChwYXRoLCB0aGlzLmdldEZpZWxkczIoKSkgfHwgJycpLnRvU3RyaW5nKCk7XG4gICAgICB9IGVsc2UgaWYgKG9iamVjdEtleS5sZW5ndGgpIHtcbiAgICAgICAgaWYgKG9wdGlvbnMub2JqZWN0cykge1xuICAgICAgICAgIGlmIChvcHRpb25zLm9iamVjdHNbb2JqZWN0S2V5XSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBjb25zb2xlLmRlYnVnKFxuICAgICAgICAgICAgICBgb2JqZWN0S2V5ICR7b2JqZWN0S2V5fSBpcyBub3QgcHJlc2VudCBpbiBvcHRpb25zLm9iamVjdGBcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICByZXN1bHQgPSAnJztcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVzdWx0ID0gKGdldFZhbHVlQnlQYXRoKHBhdGgsIG9wdGlvbnMub2JqZWN0c1tvYmplY3RLZXldKSB8fCAnJylcbiAgICAgICAgICAgICAgLnRvU3RyaW5nKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnNvbGUuZGVidWcoXG4gICAgICAgICAgICBgb2JqZWN0S2V5ICR7b2JqZWN0S2V5fSB3YXMgdXNlZCBidXQgb3B0aW9ucy5vYmplY3QgaXMgbm90IHNldGBcbiAgICAgICAgICApO1xuICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuICcnO1xuICAgICAgfVxuXG5cbiAgICAgIGlmIChmaWx0ZXJOYW1lICYmIHJlc3VsdCkge1xuICAgICAgICBzd2l0Y2ggKGZpbHRlck5hbWUpIHtcbiAgICAgICAgICBjYXNlICdkYXRlJzoge1xuICAgICAgICAgICAgcmV0dXJuIG1vbWVudChyZXN1bHQpXG4gICAgICAgICAgICAgIC51dGNPZmZzZXQob3B0aW9ucy50aW1lWm9uZU9mZnNldClcbiAgICAgICAgICAgICAgLmZvcm1hdChmaWx0ZXJBcmcgfHwgJycpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oJ3Vua25vd24gZmlsdGVyICVzJywgZmlsdGVyTmFtZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfSkudHJpbSgpO1xuICB9O1xuXG4gIC8qKlxuICAgKiBAcmV0dXJuIHtvYmplY3R9XG4gICAqL1xuICBvdmVycmlkZSB0b0FwaUR0bygpOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuPiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnN1cGVyLnRvQXBpRHRvKCksXG4gICAgICByZWZlcmVuY2U6IHRoaXMucmVmZXJlbmNlIHx8ICd+JyxcbiAgICAgIGpvYkRhdGU6IHRoaXMuam9iRGF0ZSB8fCAnficsXG4gICAgICBqb2JUeXBlOiB0aGlzLmpvYlR5cGUgfHwgJ34nLFxuICAgICAgYWNjZXNzR3JvdXA6IHRoaXMuYWNjZXNzR3JvdXAgfHwgJ34nLFxuICAgICAgam9iU3RhdHVzOiB0aGlzLmpvYlN0YXR1cyB8fCAnficsXG4gICAgICBhc3NpZ25lZUlkOiB0aGlzLmFzc2lnbmVlSWQgfHwgJ34nLFxuICAgICAgdGltZVpvbmVPZmZzZXQ6IHRoaXMudGltZVpvbmVPZmZzZXQgfHwgMCxcbiAgICAgIHBlbmRpbmdGaWVsZHM6IHRoaXMucGVuZGluZ0ZpZWxkcyB8fCAwLFxuICAgICAgbGFzdEZvcm06IHRoaXMuZm9ybUlkIHx8ICd+J1xuICAgIH07XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,4 @@
1
+ export const isArrayString = (value) => {
2
+ return Array.isArray(value) && value.every(i => typeof i === 'string');
3
+ };
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXMtYXJyYXktc3RyaW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFzLWxpYi9zcmMvbGliL3V0aWxzL2lzLWFycmF5LXN0cmluZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsQ0FBQyxLQUFVLEVBQTBCLEVBQUU7SUFDbEUsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxRQUFRLENBQUMsQ0FBQztBQUN6RSxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgaXNBcnJheVN0cmluZyA9ICh2YWx1ZTogYW55KTogdmFsdWUgaXMgQXJyYXk8c3RyaW5nPiA9PiB7XG4gIHJldHVybiBBcnJheS5pc0FycmF5KHZhbHVlKSAmJiB2YWx1ZS5ldmVyeShpID0+IHR5cGVvZiBpID09PSAnc3RyaW5nJyk7XG59O1xuIl19