@micropermit/client-angular 0.4.4 → 0.4.5-alpha2

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 (55) hide show
  1. package/{fesm2015/micropermit-client-angular.js → fesm2022/micropermit-client-angular.mjs} +354 -1513
  2. package/fesm2022/micropermit-client-angular.mjs.map +1 -0
  3. package/{micropermit-client-angular.d.ts → index.d.ts} +1 -0
  4. package/lib/components/errorindicator.component.d.ts +3 -0
  5. package/lib/components/loadingindicator.component.d.ts +3 -0
  6. package/lib/directives/call-link.directive.d.ts +3 -0
  7. package/lib/directives/linkfield.directive.d.ts +7 -4
  8. package/lib/directives/micro-link-validate.directive.d.ts +3 -0
  9. package/lib/link-field-paging-support.d.ts +1 -1
  10. package/lib/microclient.module.d.ts +10 -0
  11. package/lib/microclient.service.d.ts +3 -0
  12. package/lib/pipes/linkfield.pipe.d.ts +3 -0
  13. package/package.json +14 -12
  14. package/bundles/micropermit-client-angular.umd.js +0 -3315
  15. package/bundles/micropermit-client-angular.umd.js.map +0 -1
  16. package/bundles/micropermit-client-angular.umd.min.js +0 -16
  17. package/bundles/micropermit-client-angular.umd.min.js.map +0 -1
  18. package/esm2015/lib/components/errorindicator.component.js +0 -53
  19. package/esm2015/lib/components/loadingindicator.component.js +0 -49
  20. package/esm2015/lib/directives/call-link.directive.js +0 -110
  21. package/esm2015/lib/directives/linkfield.directive.js +0 -363
  22. package/esm2015/lib/directives/micro-link-validate.directive.js +0 -141
  23. package/esm2015/lib/error/microerror.js +0 -27
  24. package/esm2015/lib/link-field-paging-support.js +0 -318
  25. package/esm2015/lib/links/callablelink.js +0 -265
  26. package/esm2015/lib/links/linkfield.js +0 -289
  27. package/esm2015/lib/links/mock-linkfield.js +0 -42
  28. package/esm2015/lib/microclient.module.js +0 -54
  29. package/esm2015/lib/microclient.service.js +0 -515
  30. package/esm2015/lib/microobject.js +0 -222
  31. package/esm2015/lib/paramutils.js +0 -176
  32. package/esm2015/lib/pipes/linkfield.pipe.js +0 -53
  33. package/esm2015/micropermit-client-angular.js +0 -9
  34. package/esm2015/public_api.js +0 -23
  35. package/esm5/lib/components/errorindicator.component.js +0 -36
  36. package/esm5/lib/components/loadingindicator.component.js +0 -19
  37. package/esm5/lib/directives/call-link.directive.js +0 -112
  38. package/esm5/lib/directives/linkfield.directive.js +0 -420
  39. package/esm5/lib/directives/micro-link-validate.directive.js +0 -152
  40. package/esm5/lib/error/microerror.js +0 -31
  41. package/esm5/lib/link-field-paging-support.js +0 -387
  42. package/esm5/lib/links/callablelink.js +0 -336
  43. package/esm5/lib/links/linkfield.js +0 -369
  44. package/esm5/lib/links/mock-linkfield.js +0 -56
  45. package/esm5/lib/microclient.module.js +0 -61
  46. package/esm5/lib/microclient.service.js +0 -616
  47. package/esm5/lib/microobject.js +0 -296
  48. package/esm5/lib/paramutils.js +0 -228
  49. package/esm5/lib/pipes/linkfield.pipe.js +0 -60
  50. package/esm5/micropermit-client-angular.js +0 -9
  51. package/esm5/public_api.js +0 -23
  52. package/fesm2015/micropermit-client-angular.js.map +0 -1
  53. package/fesm5/micropermit-client-angular.js +0 -3116
  54. package/fesm5/micropermit-client-angular.js.map +0 -1
  55. package/micropermit-client-angular.metadata.json +0 -1
@@ -1,152 +0,0 @@
1
- /**
2
- * @fileoverview added by tsickle
3
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
- */
5
- import { Directive, forwardRef, Input } from '@angular/core';
6
- import { FormGroup, NG_ASYNC_VALIDATORS } from '@angular/forms';
7
- import { timer } from 'rxjs';
8
- import { map, switchMap } from 'rxjs/operators';
9
- import { CallableLink } from '../links/callablelink';
10
- var MicroLinkValidateDirective = /** @class */ (function () {
11
- function MicroLinkValidateDirective() {
12
- this.UNSET = "";
13
- this.microLinkValidateField = null;
14
- this.microLinkValidateValue = this.UNSET;
15
- this.microLinkValidateDebounce = 500;
16
- }
17
- /**
18
- * @param {?} control
19
- * @return {?}
20
- */
21
- MicroLinkValidateDirective.prototype.validate = /**
22
- * @param {?} control
23
- * @return {?}
24
- */
25
- function (control) {
26
- var _this = this;
27
- return timer(this.microLinkValidateDebounce).pipe(switchMap((/**
28
- * @return {?}
29
- */
30
- function () {
31
- /** @type {?} */
32
- var validateValue = _this.microLinkValidateValue;
33
- if (validateValue === _this.UNSET) {
34
- validateValue = control.value;
35
- }
36
- /** @type {?} */
37
- var obj = {};
38
- if (_this.microLinkValidateField) {
39
- obj[_this.microLinkValidateField] = validateValue;
40
- }
41
- else {
42
- obj = validateValue;
43
- }
44
- return _this.microLinkValidate.callWithObs(obj, null).pipe(map((/**
45
- * @param {?} validationRes
46
- * @return {?}
47
- */
48
- function (validationRes) {
49
- /** @type {?} */
50
- var hasErrors = false;
51
- if (_this.microLinkValidateField) {
52
- if (validationRes[_this.microLinkValidateField] != null) {
53
- hasErrors = true;
54
- }
55
- }
56
- else {
57
- for (var key in validationRes) {
58
- if (validationRes[key] != null) {
59
- hasErrors = true;
60
- }
61
- }
62
- }
63
- if (hasErrors) {
64
- _this.result = validationRes;
65
- return {
66
- validateMicroLink: _this.result
67
- };
68
- }
69
- else {
70
- _this.result = null;
71
- return null;
72
- }
73
- })));
74
- })));
75
- };
76
- /**
77
- * @param {?} control
78
- * @return {?}
79
- */
80
- MicroLinkValidateDirective.prototype.getControlName = /**
81
- * @param {?} control
82
- * @return {?}
83
- */
84
- function (control) {
85
- /** @type {?} */
86
- var controlName = null;
87
- /** @type {?} */
88
- var parent = control.parent;
89
- // only such parent, which is FormGroup, has a dictionary
90
- // with control-names as a key and a form-control as a value
91
- if (parent instanceof FormGroup) {
92
- // now we will iterate those keys (i.e. names of controls)
93
- Object.keys(parent.controls).forEach((/**
94
- * @param {?} name
95
- * @return {?}
96
- */
97
- function (name) {
98
- // and compare the passed control and
99
- // a child control of a parent - with provided name (we iterate them all)
100
- if (control === parent.controls[name]) {
101
- // both are same: control passed to Validator
102
- // and this child - are the same references
103
- controlName = name;
104
- }
105
- }));
106
- }
107
- // we either found a name or simply return null
108
- return controlName;
109
- };
110
- MicroLinkValidateDirective.decorators = [
111
- { type: Directive, args: [{
112
- selector: '[microLinkValidate]',
113
- providers: [
114
- {
115
- provide: NG_ASYNC_VALIDATORS,
116
- useExisting: forwardRef((/**
117
- * @return {?}
118
- */
119
- function () { return MicroLinkValidateDirective; })),
120
- multi: true
121
- }
122
- ],
123
- exportAs: 'microValidator'
124
- },] }
125
- ];
126
- MicroLinkValidateDirective.propDecorators = {
127
- microLinkValidate: [{ type: Input }],
128
- microLinkValidateField: [{ type: Input }],
129
- microLinkValidateValue: [{ type: Input }],
130
- microLinkValidateDebounce: [{ type: Input }]
131
- };
132
- return MicroLinkValidateDirective;
133
- }());
134
- export { MicroLinkValidateDirective };
135
- if (false) {
136
- /**
137
- * @type {?}
138
- * @private
139
- */
140
- MicroLinkValidateDirective.prototype.UNSET;
141
- /** @type {?} */
142
- MicroLinkValidateDirective.prototype.microLinkValidate;
143
- /** @type {?} */
144
- MicroLinkValidateDirective.prototype.microLinkValidateField;
145
- /** @type {?} */
146
- MicroLinkValidateDirective.prototype.microLinkValidateValue;
147
- /** @type {?} */
148
- MicroLinkValidateDirective.prototype.microLinkValidateDebounce;
149
- /** @type {?} */
150
- MicroLinkValidateDirective.prototype.result;
151
- }
152
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWljcm8tbGluay12YWxpZGF0ZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AbWljcm9wZXJtaXQvY2xpZW50LWFuZ3VsYXIvIiwic291cmNlcyI6WyJsaWIvZGlyZWN0aXZlcy9taWNyby1saW5rLXZhbGlkYXRlLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzNELE9BQU8sRUFFSCxTQUFTLEVBQ1QsbUJBQW1CLEVBR3RCLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFhLEtBQUssRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUN2QyxPQUFPLEVBQUMsR0FBRyxFQUFFLFNBQVMsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzlDLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUVuRDtJQUFBO1FBYVksVUFBSyxHQUFHLEVBQUUsQ0FBQTtRQU1sQiwyQkFBc0IsR0FBVyxJQUFJLENBQUE7UUFHckMsMkJBQXNCLEdBQVEsSUFBSSxDQUFDLEtBQUssQ0FBQTtRQUd4Qyw4QkFBeUIsR0FBRyxHQUFHLENBQUM7SUF3RXBDLENBQUM7Ozs7O0lBbkVHLDZDQUFROzs7O0lBQVIsVUFBUyxPQUF3QjtRQUFqQyxpQkEyQ0M7UUExQ0csT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLHlCQUF5QixDQUFDLENBQUMsSUFBSSxDQUM3QyxTQUFTOzs7UUFBQzs7Z0JBQ0YsYUFBYSxHQUFHLEtBQUksQ0FBQyxzQkFBc0I7WUFDL0MsSUFBSSxhQUFhLEtBQUssS0FBSSxDQUFDLEtBQUssRUFBRTtnQkFDOUIsYUFBYSxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUE7YUFDaEM7O2dCQUVHLEdBQUcsR0FBRyxFQUFFO1lBQ1osSUFBSSxLQUFJLENBQUMsc0JBQXNCLEVBQUU7Z0JBQzdCLEdBQUcsQ0FBQyxLQUFJLENBQUMsc0JBQXNCLENBQUMsR0FBRyxhQUFhLENBQUE7YUFDbkQ7aUJBQU07Z0JBQ0gsR0FBRyxHQUFHLGFBQWEsQ0FBQTthQUN0QjtZQUVELE9BQU8sS0FBSSxDQUFDLGlCQUFpQixDQUFDLFdBQVcsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUNyRCxHQUFHOzs7O1lBQUMsVUFBQSxhQUFhOztvQkFDVCxTQUFTLEdBQUcsS0FBSztnQkFDckIsSUFBSSxLQUFJLENBQUMsc0JBQXNCLEVBQUU7b0JBQzdCLElBQUksYUFBYSxDQUFDLEtBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLElBQUksRUFBRTt3QkFDcEQsU0FBUyxHQUFHLElBQUksQ0FBQTtxQkFDbkI7aUJBQ0o7cUJBQU07b0JBQ0gsS0FBSyxJQUFJLEdBQUcsSUFBSSxhQUFhLEVBQUU7d0JBQzNCLElBQUksYUFBYSxDQUFDLEdBQUcsQ0FBQyxJQUFJLElBQUksRUFBRTs0QkFDNUIsU0FBUyxHQUFHLElBQUksQ0FBQTt5QkFDbkI7cUJBQ0o7aUJBQ0o7Z0JBQ0QsSUFBSSxTQUFTLEVBQUU7b0JBQ1gsS0FBSSxDQUFDLE1BQU0sR0FBRyxhQUFhLENBQUE7b0JBQzNCLE9BQU87d0JBQ0gsaUJBQWlCLEVBQUUsS0FBSSxDQUFDLE1BQU07cUJBQ2pDLENBQUE7aUJBRUo7cUJBQU07b0JBQ0gsS0FBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUE7b0JBQ2xCLE9BQU8sSUFBSSxDQUFBO2lCQUNkO1lBQ0wsQ0FBQyxFQUFDLENBQ0wsQ0FBQTtRQUNMLENBQUMsRUFBQyxDQUNMLENBQUE7SUFDTCxDQUFDOzs7OztJQUVELG1EQUFjOzs7O0lBQWQsVUFBZSxPQUF3Qjs7WUFDL0IsV0FBVyxHQUFHLElBQUk7O1lBQ2xCLE1BQU0sR0FBRyxPQUFPLENBQUMsTUFBTTtRQUUzQix5REFBeUQ7UUFDekQsNERBQTREO1FBQzVELElBQUksTUFBTSxZQUFZLFNBQVMsRUFBRTtZQUM3QiwwREFBMEQ7WUFDMUQsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTzs7OztZQUFDLFVBQUMsSUFBSTtnQkFDdEMscUNBQXFDO2dCQUNyQyx5RUFBeUU7Z0JBQ3pFLElBQUksT0FBTyxLQUFLLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUU7b0JBQ25DLDZDQUE2QztvQkFDN0MsNENBQTRDO29CQUM1QyxXQUFXLEdBQUcsSUFBSSxDQUFDO2lCQUN0QjtZQUNMLENBQUMsRUFBQyxDQUFDO1NBQ047UUFDRCwrQ0FBK0M7UUFDL0MsT0FBTyxXQUFXLENBQUM7SUFDdkIsQ0FBQzs7Z0JBL0ZKLFNBQVMsU0FBQztvQkFDUCxRQUFRLEVBQUUscUJBQXFCO29CQUMvQixTQUFTLEVBQUU7d0JBQ1A7NEJBQ0ksT0FBTyxFQUFFLG1CQUFtQjs0QkFDNUIsV0FBVyxFQUFFLFVBQVU7Ozs0QkFBQyxjQUFNLE9BQUEsMEJBQTBCLEVBQTFCLENBQTBCLEVBQUM7NEJBQ3pELEtBQUssRUFBRSxJQUFJO3lCQUNkO3FCQUNKO29CQUNELFFBQVEsRUFBRSxnQkFBZ0I7aUJBQzdCOzs7b0NBS0ksS0FBSzt5Q0FHTCxLQUFLO3lDQUdMLEtBQUs7NENBR0wsS0FBSzs7SUF5RVYsaUNBQUM7Q0FBQSxBQWpHRCxJQWlHQztTQXRGWSwwQkFBMEI7Ozs7OztJQUVuQywyQ0FBa0I7O0lBRWxCLHVEQUNvQzs7SUFFcEMsNERBQ3FDOztJQUVyQyw0REFDd0M7O0lBRXhDLCtEQUNnQzs7SUFFaEMsNENBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtEaXJlY3RpdmUsIGZvcndhcmRSZWYsIElucHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gICAgQWJzdHJhY3RDb250cm9sLFxuICAgIEZvcm1Hcm91cCxcbiAgICBOR19BU1lOQ19WQUxJREFUT1JTLFxuICAgIFZhbGlkYXRpb25FcnJvcnMsXG4gICAgVmFsaWRhdG9yXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7T2JzZXJ2YWJsZSwgdGltZXJ9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHttYXAsIHN3aXRjaE1hcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtDYWxsYWJsZUxpbmt9IGZyb20gJy4uL2xpbmtzL2NhbGxhYmxlbGluayc7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW21pY3JvTGlua1ZhbGlkYXRlXScsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IE5HX0FTWU5DX1ZBTElEQVRPUlMsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBNaWNyb0xpbmtWYWxpZGF0ZURpcmVjdGl2ZSksXG4gICAgICAgICAgICBtdWx0aTogdHJ1ZVxuICAgICAgICB9XG4gICAgXSxcbiAgICBleHBvcnRBczogJ21pY3JvVmFsaWRhdG9yJ1xufSlcbmV4cG9ydCBjbGFzcyBNaWNyb0xpbmtWYWxpZGF0ZURpcmVjdGl2ZSBpbXBsZW1lbnRzIFZhbGlkYXRvciB7XG5cbiAgICBwcml2YXRlIFVOU0VUID0gXCJcIlxuXG4gICAgQElucHV0KClcbiAgICBtaWNyb0xpbmtWYWxpZGF0ZTogQ2FsbGFibGVMaW5rPGFueT5cblxuICAgIEBJbnB1dCgpXG4gICAgbWljcm9MaW5rVmFsaWRhdGVGaWVsZDogc3RyaW5nID0gbnVsbFxuXG4gICAgQElucHV0KClcbiAgICBtaWNyb0xpbmtWYWxpZGF0ZVZhbHVlOiBhbnkgPSB0aGlzLlVOU0VUXG5cbiAgICBASW5wdXQoKVxuICAgIG1pY3JvTGlua1ZhbGlkYXRlRGVib3VuY2UgPSA1MDA7XG5cbiAgICBwdWJsaWMgcmVzdWx0OmFueTtcblxuXG4gICAgdmFsaWRhdGUoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogT2JzZXJ2YWJsZTxWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbD4ge1xuICAgICAgICByZXR1cm4gdGltZXIodGhpcy5taWNyb0xpbmtWYWxpZGF0ZURlYm91bmNlKS5waXBlKFxuICAgICAgICAgICAgc3dpdGNoTWFwKCgpID0+IHtcbiAgICAgICAgICAgICAgICBsZXQgdmFsaWRhdGVWYWx1ZSA9IHRoaXMubWljcm9MaW5rVmFsaWRhdGVWYWx1ZVxuICAgICAgICAgICAgICAgIGlmICh2YWxpZGF0ZVZhbHVlID09PSB0aGlzLlVOU0VUKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhbGlkYXRlVmFsdWUgPSBjb250cm9sLnZhbHVlXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgbGV0IG9iaiA9IHt9XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMubWljcm9MaW5rVmFsaWRhdGVGaWVsZCkge1xuICAgICAgICAgICAgICAgICAgICBvYmpbdGhpcy5taWNyb0xpbmtWYWxpZGF0ZUZpZWxkXSA9IHZhbGlkYXRlVmFsdWVcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBvYmogPSB2YWxpZGF0ZVZhbHVlXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMubWljcm9MaW5rVmFsaWRhdGUuY2FsbFdpdGhPYnMob2JqLCBudWxsKS5waXBlKFxuICAgICAgICAgICAgICAgICAgICBtYXAodmFsaWRhdGlvblJlcyA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgaGFzRXJyb3JzID0gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLm1pY3JvTGlua1ZhbGlkYXRlRmllbGQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFsaWRhdGlvblJlc1t0aGlzLm1pY3JvTGlua1ZhbGlkYXRlRmllbGRdICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzRXJyb3JzID0gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQga2V5IGluIHZhbGlkYXRpb25SZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbGlkYXRpb25SZXNba2V5XSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXNFcnJvcnMgPSB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaGFzRXJyb3JzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZXN1bHQgPSB2YWxpZGF0aW9uUmVzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGVNaWNyb0xpbms6IHRoaXMucmVzdWx0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVzdWx0ID0gbnVsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfSlcbiAgICAgICAgKVxuICAgIH1cblxuICAgIGdldENvbnRyb2xOYW1lKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCkge1xuICAgICAgICBsZXQgY29udHJvbE5hbWUgPSBudWxsO1xuICAgICAgICBsZXQgcGFyZW50ID0gY29udHJvbC5wYXJlbnQ7XG5cbiAgICAgICAgLy8gb25seSBzdWNoIHBhcmVudCwgd2hpY2ggaXMgRm9ybUdyb3VwLCBoYXMgYSBkaWN0aW9uYXJ5XG4gICAgICAgIC8vIHdpdGggY29udHJvbC1uYW1lcyBhcyBhIGtleSBhbmQgYSBmb3JtLWNvbnRyb2wgYXMgYSB2YWx1ZVxuICAgICAgICBpZiAocGFyZW50IGluc3RhbmNlb2YgRm9ybUdyb3VwKSB7XG4gICAgICAgICAgICAvLyBub3cgd2Ugd2lsbCBpdGVyYXRlIHRob3NlIGtleXMgKGkuZS4gbmFtZXMgb2YgY29udHJvbHMpXG4gICAgICAgICAgICBPYmplY3Qua2V5cyhwYXJlbnQuY29udHJvbHMpLmZvckVhY2goKG5hbWUpID0+IHtcbiAgICAgICAgICAgICAgICAvLyBhbmQgY29tcGFyZSB0aGUgcGFzc2VkIGNvbnRyb2wgYW5kXG4gICAgICAgICAgICAgICAgLy8gYSBjaGlsZCBjb250cm9sIG9mIGEgcGFyZW50IC0gd2l0aCBwcm92aWRlZCBuYW1lICh3ZSBpdGVyYXRlIHRoZW0gYWxsKVxuICAgICAgICAgICAgICAgIGlmIChjb250cm9sID09PSBwYXJlbnQuY29udHJvbHNbbmFtZV0pIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gYm90aCBhcmUgc2FtZTogY29udHJvbCBwYXNzZWQgdG8gVmFsaWRhdG9yXG4gICAgICAgICAgICAgICAgICAgIC8vICBhbmQgdGhpcyBjaGlsZCAtIGFyZSB0aGUgc2FtZSByZWZlcmVuY2VzXG4gICAgICAgICAgICAgICAgICAgIGNvbnRyb2xOYW1lID0gbmFtZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICAvLyB3ZSBlaXRoZXIgZm91bmQgYSBuYW1lIG9yIHNpbXBseSByZXR1cm4gbnVsbFxuICAgICAgICByZXR1cm4gY29udHJvbE5hbWU7XG4gICAgfVxuXG59XG4iXX0=
@@ -1,31 +0,0 @@
1
- /**
2
- * @fileoverview added by tsickle
3
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
- */
5
- var MicroError = /** @class */ (function () {
6
- function MicroError() {
7
- }
8
- return MicroError;
9
- }());
10
- export { MicroError };
11
- if (false) {
12
- /** @type {?} */
13
- MicroError.prototype.timestamp;
14
- /** @type {?} */
15
- MicroError.prototype.errorMessage;
16
- /** @type {?} */
17
- MicroError.prototype.atService;
18
- /** @type {?} */
19
- MicroError.prototype.atEndpoint;
20
- /** @type {?} */
21
- MicroError.prototype.instanceID;
22
- /** @type {?} */
23
- MicroError.prototype.httpEquivCode;
24
- /** @type {?} */
25
- MicroError.prototype.cause;
26
- /** @type {?} */
27
- MicroError.prototype.errorID;
28
- /** @type {?} */
29
- MicroError.prototype.errorType;
30
- }
31
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWljcm9lcnJvci5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BtaWNyb3Blcm1pdC9jbGllbnQtYW5ndWxhci8iLCJzb3VyY2VzIjpbImxpYi9lcnJvci9taWNyb2Vycm9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQTtJQUFBO0lBVUEsQ0FBQztJQUFELGlCQUFDO0FBQUQsQ0FBQyxBQVZELElBVUM7Ozs7SUFURywrQkFBa0I7O0lBQ2xCLGtDQUFxQjs7SUFDckIsK0JBQWtCOztJQUNsQixnQ0FBbUI7O0lBQ25CLGdDQUFtQjs7SUFDbkIsbUNBQXNCOztJQUN0QiwyQkFBa0I7O0lBQ2xCLDZCQUFnQjs7SUFDaEIsK0JBQXlCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNsYXNzIE1pY3JvRXJyb3Ige1xuICAgIHRpbWVzdGFtcDogbnVtYmVyO1xuICAgIGVycm9yTWVzc2FnZTogc3RyaW5nO1xuICAgIGF0U2VydmljZTogc3RyaW5nO1xuICAgIGF0RW5kcG9pbnQ6IHN0cmluZztcbiAgICBpbnN0YW5jZUlEOiBzdHJpbmc7XG4gICAgaHR0cEVxdWl2Q29kZTogbnVtYmVyO1xuICAgIGNhdXNlOiBNaWNyb0Vycm9yO1xuICAgIGVycm9ySUQ6IHN0cmluZztcbiAgICBlcnJvclR5cGU6IEFycmF5PFN0cmluZz47XG59XG4iXX0=
@@ -1,387 +0,0 @@
1
- /**
2
- * @fileoverview added by tsickle
3
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
- */
5
- import * as tslib_1 from "tslib";
6
- var LinkFieldPagingSupport = /** @class */ (function () {
7
- function LinkFieldPagingSupport(pageLink, changeDetectorRef, pageLimit) {
8
- var _this = this;
9
- if (pageLimit === void 0) { pageLimit = 200; }
10
- this.pageLink = pageLink;
11
- this.changeDetectorRef = changeDetectorRef;
12
- this.pageLimit = pageLimit;
13
- this.sorts = null;
14
- this.isLoading = false;
15
- this.loadedCompletely = false;
16
- this.hasLoaded = false;
17
- this._rows = null;
18
- this.loadingSubscription = null;
19
- this.loadingCallback = (/**
20
- * @return {?}
21
- */
22
- function () {
23
- _this.setLoading(false);
24
- });
25
- }
26
- Object.defineProperty(LinkFieldPagingSupport.prototype, "rows", {
27
- get: /**
28
- * @return {?}
29
- */
30
- function () {
31
- if (!this.hasLoaded) {
32
- this.loadNextPage();
33
- }
34
- return this._rows;
35
- },
36
- enumerable: true,
37
- configurable: true
38
- });
39
- /**
40
- * @param {?} pageLink
41
- * @param {?} changeDetectorRef
42
- * @param {?=} pageLimit
43
- * @return {?}
44
- */
45
- LinkFieldPagingSupport.from = /**
46
- * @param {?} pageLink
47
- * @param {?} changeDetectorRef
48
- * @param {?=} pageLimit
49
- * @return {?}
50
- */
51
- function (pageLink, changeDetectorRef, pageLimit) {
52
- if (pageLimit === void 0) { pageLimit = 200; }
53
- return new LinkFieldPagingSupport(pageLink, changeDetectorRef, pageLimit);
54
- };
55
- /**
56
- * @param {?} sorts
57
- * @param {?=} externalSorting
58
- * @return {?}
59
- */
60
- LinkFieldPagingSupport.prototype.applySort = /**
61
- * @param {?} sorts
62
- * @param {?=} externalSorting
63
- * @return {?}
64
- */
65
- function (sorts, externalSorting) {
66
- if (externalSorting === void 0) { externalSorting = true; }
67
- this.hasLoaded = false;
68
- this.sorts = null;
69
- this._rows = null;
70
- if (externalSorting) {
71
- this.sorts = sorts;
72
- this.loadNextPage();
73
- }
74
- else {
75
- if (!this.loadedCompletely) {
76
- this.loadNextPage(null);
77
- }
78
- else {
79
- this.changeDetectorRef.detectChanges();
80
- }
81
- }
82
- };
83
- /**
84
- * @param {?=} pageSize
85
- * @param {?=} resultCallback
86
- * @return {?}
87
- */
88
- LinkFieldPagingSupport.prototype.loadNextPage = /**
89
- * @param {?=} pageSize
90
- * @param {?=} resultCallback
91
- * @return {?}
92
- */
93
- function (pageSize, resultCallback) {
94
- var _this = this;
95
- if (pageSize === void 0) { pageSize = this.pageLimit; }
96
- if (resultCallback === void 0) { resultCallback = null; }
97
- if (this.pageLink && !this.isLoading) {
98
- if (this.loadingSubscription) {
99
- this.loadingSubscription.unsubscribe();
100
- this.loadingSubscription = null;
101
- }
102
- this.hasLoaded = true;
103
- this.loadedCompletely = false;
104
- if (this._rows == null) {
105
- this.setLoading(true);
106
- /** @type {?} */
107
- var reqOptions = {};
108
- if (this.sorts != null) {
109
- reqOptions.sorting = this.sorts;
110
- }
111
- if (pageSize != null) {
112
- reqOptions.pageSize = pageSize;
113
- }
114
- this.loadingSubscription = this.pageLink.initWithObs(null, reqOptions).subscribe((/**
115
- * @param {?} firstPage
116
- * @return {?}
117
- */
118
- function (firstPage) {
119
- _this.setRows(firstPage, resultCallback);
120
- }), this.loadingCallback, this.loadingCallback);
121
- }
122
- else {
123
- /** @type {?} */
124
- var lastRow = this.lastRow();
125
- if (lastRow) {
126
- if (lastRow.__meta.nextPage) {
127
- /** @type {?} */
128
- var reqOptions = null;
129
- if (pageSize != null) {
130
- reqOptions = {
131
- pageSize: pageSize
132
- };
133
- }
134
- /** @type {?} */
135
- var nextPageObs = lastRow.__meta.nextPage.initWithObs(null, reqOptions);
136
- if (nextPageObs) {
137
- this.setLoading(true);
138
- this.loadingSubscription = nextPageObs.subscribe((/**
139
- * @param {?} nextPage
140
- * @return {?}
141
- */
142
- function (nextPage) {
143
- _this.setRows(nextPage, resultCallback);
144
- }), this.loadingCallback, this.loadingCallback);
145
- }
146
- }
147
- }
148
- }
149
- }
150
- else if (!this.pageLink) {
151
- this.clearRows();
152
- }
153
- };
154
- /**
155
- * @return {?}
156
- */
157
- LinkFieldPagingSupport.prototype.loadEverything = /**
158
- * @return {?}
159
- */
160
- function () {
161
- this.loadNextPage(null);
162
- };
163
- /**
164
- * @private
165
- * @return {?}
166
- */
167
- LinkFieldPagingSupport.prototype.lastRow = /**
168
- * @private
169
- * @return {?}
170
- */
171
- function () {
172
- return this._rows[this._rows.length - 1];
173
- };
174
- /**
175
- * @private
176
- * @param {?} additionalPage
177
- * @param {?} loadCallback
178
- * @return {?}
179
- */
180
- LinkFieldPagingSupport.prototype.setRows = /**
181
- * @private
182
- * @param {?} additionalPage
183
- * @param {?} loadCallback
184
- * @return {?}
185
- */
186
- function (additionalPage, loadCallback) {
187
- if (this._rows) {
188
- this._rows = tslib_1.__spread(this.rows, additionalPage);
189
- }
190
- else {
191
- this._rows = additionalPage;
192
- }
193
- if (loadCallback) {
194
- loadCallback(additionalPage, this._rows);
195
- }
196
- this.reflectChanges();
197
- };
198
- /**
199
- * @private
200
- * @return {?}
201
- */
202
- LinkFieldPagingSupport.prototype.clearRows = /**
203
- * @private
204
- * @return {?}
205
- */
206
- function () {
207
- if (this._rows != null) {
208
- this._rows = null;
209
- this.reflectChanges();
210
- }
211
- };
212
- /**
213
- * @private
214
- * @return {?}
215
- */
216
- LinkFieldPagingSupport.prototype.reflectChanges = /**
217
- * @private
218
- * @return {?}
219
- */
220
- function () {
221
- /** @type {?} */
222
- var lastRow = this.lastRow();
223
- if (lastRow && lastRow.__meta) {
224
- this.loadedCompletely = lastRow.__meta.nextPage == null;
225
- }
226
- else {
227
- this.loadedCompletely = false;
228
- }
229
- if (this.rowsChangeCallback) {
230
- this.rowsChangeCallback(this._rows);
231
- }
232
- this.changeDetectorRef.detectChanges();
233
- };
234
- /**
235
- * @private
236
- * @param {?} isLoading
237
- * @return {?}
238
- */
239
- LinkFieldPagingSupport.prototype.setLoading = /**
240
- * @private
241
- * @param {?} isLoading
242
- * @return {?}
243
- */
244
- function (isLoading) {
245
- this.isLoading = isLoading;
246
- if (this.isLoadingCallback) {
247
- this.isLoadingCallback(this.isLoading);
248
- }
249
- this.changeDetectorRef.detectChanges();
250
- };
251
- /**
252
- * @return {?}
253
- */
254
- LinkFieldPagingSupport.prototype.dispose = /**
255
- * @return {?}
256
- */
257
- function () {
258
- this.rowsChangeCallback = null;
259
- this.isLoadingCallback = null;
260
- };
261
- /**
262
- * @param {?} pageLink
263
- * @return {?}
264
- */
265
- LinkFieldPagingSupport.prototype.setPageLink = /**
266
- * @param {?} pageLink
267
- * @return {?}
268
- */
269
- function (pageLink) {
270
- this.clearState();
271
- this.pageLink = pageLink;
272
- this.loadNextPage();
273
- };
274
- /**
275
- * @return {?}
276
- */
277
- LinkFieldPagingSupport.prototype.hasLoadedCompletely = /**
278
- * @return {?}
279
- */
280
- function () {
281
- return this.loadedCompletely;
282
- };
283
- /**
284
- * @param {?} rowsChangeCallback
285
- * @param {?=} isLoadingCallback
286
- * @return {?}
287
- */
288
- LinkFieldPagingSupport.prototype.init = /**
289
- * @param {?} rowsChangeCallback
290
- * @param {?=} isLoadingCallback
291
- * @return {?}
292
- */
293
- function (rowsChangeCallback, isLoadingCallback) {
294
- if (isLoadingCallback === void 0) { isLoadingCallback = null; }
295
- this.rowsChangeCallback = rowsChangeCallback;
296
- this.isLoadingCallback = isLoadingCallback;
297
- };
298
- /**
299
- * @private
300
- * @return {?}
301
- */
302
- LinkFieldPagingSupport.prototype.clearState = /**
303
- * @private
304
- * @return {?}
305
- */
306
- function () {
307
- this.isLoading = false;
308
- this.loadedCompletely = false;
309
- this.hasLoaded = false;
310
- this._rows = null;
311
- if (this.loadingSubscription) {
312
- this.loadingSubscription.unsubscribe();
313
- this.loadingSubscription = null;
314
- }
315
- };
316
- return LinkFieldPagingSupport;
317
- }());
318
- export { LinkFieldPagingSupport };
319
- if (false) {
320
- /**
321
- * @type {?}
322
- * @private
323
- */
324
- LinkFieldPagingSupport.prototype.sorts;
325
- /** @type {?} */
326
- LinkFieldPagingSupport.prototype.isLoading;
327
- /**
328
- * @type {?}
329
- * @private
330
- */
331
- LinkFieldPagingSupport.prototype.loadedCompletely;
332
- /**
333
- * @type {?}
334
- * @private
335
- */
336
- LinkFieldPagingSupport.prototype.hasLoaded;
337
- /**
338
- * @type {?}
339
- * @private
340
- */
341
- LinkFieldPagingSupport.prototype._rows;
342
- /**
343
- * @type {?}
344
- * @private
345
- */
346
- LinkFieldPagingSupport.prototype.loadingSubscription;
347
- /** @type {?} */
348
- LinkFieldPagingSupport.prototype.rowsChangeCallback;
349
- /** @type {?} */
350
- LinkFieldPagingSupport.prototype.isLoadingCallback;
351
- /**
352
- * @type {?}
353
- * @private
354
- */
355
- LinkFieldPagingSupport.prototype.loadingCallback;
356
- /**
357
- * @type {?}
358
- * @private
359
- */
360
- LinkFieldPagingSupport.prototype.pageLink;
361
- /**
362
- * @type {?}
363
- * @private
364
- */
365
- LinkFieldPagingSupport.prototype.changeDetectorRef;
366
- /** @type {?} */
367
- LinkFieldPagingSupport.prototype.pageLimit;
368
- }
369
- var SortInfo = /** @class */ (function () {
370
- function SortInfo(field, dir) {
371
- this.field = field;
372
- this.dir = dir;
373
- this.dir = dir.toUpperCase();
374
- if (!(this.dir === 'ASC' || this.dir === 'DESC')) {
375
- throw Error('dir can only be \'ASC\' or \'DESC\'');
376
- }
377
- }
378
- return SortInfo;
379
- }());
380
- export { SortInfo };
381
- if (false) {
382
- /** @type {?} */
383
- SortInfo.prototype.field;
384
- /** @type {?} */
385
- SortInfo.prototype.dir;
386
- }
387
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluay1maWVsZC1wYWdpbmctc3VwcG9ydC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BtaWNyb3Blcm1pdC9jbGllbnQtYW5ndWxhci8iLCJzb3VyY2VzIjpbImxpYi9saW5rLWZpZWxkLXBhZ2luZy1zdXBwb3J0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBS0E7SUFFSSxnQ0FDWSxRQUFrQyxFQUNsQyxpQkFBb0MsRUFDckMsU0FBdUI7UUFIbEMsaUJBS0M7UUFGVSwwQkFBQSxFQUFBLGVBQXVCO1FBRnRCLGFBQVEsR0FBUixRQUFRLENBQTBCO1FBQ2xDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDckMsY0FBUyxHQUFULFNBQVMsQ0FBYztRQUkxQixVQUFLLEdBQWUsSUFBSSxDQUFDO1FBRTFCLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFDakIscUJBQWdCLEdBQUcsS0FBSyxDQUFDO1FBQ3pCLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFDbEIsVUFBSyxHQUFVLElBQUksQ0FBQztRQUNwQix3QkFBbUIsR0FBaUIsSUFBSSxDQUFDO1FBc0N6QyxvQkFBZTs7O1FBQUc7WUFDdEIsS0FBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMzQixDQUFDLEVBQUM7SUFoREYsQ0FBQztJQWFELHNCQUFJLHdDQUFJOzs7O1FBQVI7WUFDSSxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRTtnQkFDakIsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO2FBQ3ZCO1lBQ0QsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQ3RCLENBQUM7OztPQUFBOzs7Ozs7O0lBRWEsMkJBQUk7Ozs7OztJQUFsQixVQUNJLFFBQWtDLEVBQ2xDLGlCQUFvQyxFQUNwQyxTQUF1QjtRQUF2QiwwQkFBQSxFQUFBLGVBQXVCO1FBRXZCLE9BQU8sSUFBSSxzQkFBc0IsQ0FBQyxRQUFRLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDOUUsQ0FBQzs7Ozs7O0lBRU0sMENBQVM7Ozs7O0lBQWhCLFVBQWlCLEtBQWlCLEVBQUUsZUFBc0I7UUFBdEIsZ0NBQUEsRUFBQSxzQkFBc0I7UUFDdEQsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7UUFDdkIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7UUFDbEIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7UUFFbEIsSUFBSSxlQUFlLEVBQUU7WUFDakIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7WUFDbkIsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1NBQ3ZCO2FBQU07WUFDSCxJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFO2dCQUN4QixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQzNCO2lCQUFNO2dCQUNILElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLEVBQUUsQ0FBQzthQUMxQztTQUNKO0lBRUwsQ0FBQzs7Ozs7O0lBTU0sNkNBQVk7Ozs7O0lBQW5CLFVBQW9CLFFBQWlDLEVBQUUsY0FBMEQ7UUFBakgsaUJBZ0RDO1FBaERtQix5QkFBQSxFQUFBLFdBQW1CLElBQUksQ0FBQyxTQUFTO1FBQUUsK0JBQUEsRUFBQSxxQkFBMEQ7UUFDN0csSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNsQyxJQUFJLElBQUksQ0FBQyxtQkFBbUIsRUFBRTtnQkFDMUIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFdBQVcsRUFBRSxDQUFDO2dCQUN2QyxJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDO2FBQ25DO1lBRUQsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7WUFDdEIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEtBQUssQ0FBQztZQUM5QixJQUFJLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxFQUFFO2dCQUNwQixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDOztvQkFFaEIsVUFBVSxHQUFRLEVBQUU7Z0JBQzFCLElBQUksSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLEVBQUU7b0JBQ3BCLFVBQVUsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztpQkFDbkM7Z0JBQ0QsSUFBSSxRQUFRLElBQUksSUFBSSxFQUFFO29CQUNsQixVQUFVLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztpQkFDbEM7Z0JBR0QsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsQ0FBQyxTQUFTOzs7O2dCQUFDLFVBQUMsU0FBUztvQkFDdkYsS0FBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsY0FBYyxDQUFDLENBQUM7Z0JBQzVDLENBQUMsR0FBRSxJQUFJLENBQUMsZUFBZSxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQzthQUNsRDtpQkFBTTs7b0JBQ0csT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUU7Z0JBQzlCLElBQUksT0FBTyxFQUFFO29CQUNULElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUU7OzRCQUNyQixVQUFVLEdBQUcsSUFBSTt3QkFDckIsSUFBSSxRQUFRLElBQUksSUFBSSxFQUFFOzRCQUNsQixVQUFVLEdBQUc7Z0NBQ1QsUUFBUSxFQUFFLFFBQVE7NkJBQ3JCLENBQUM7eUJBQ0w7OzRCQUVLLFdBQVcsR0FBOEIsT0FBTyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxVQUFVLENBQUM7d0JBQ3BHLElBQUksV0FBVyxFQUFFOzRCQUNiLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7NEJBQ3RCLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxXQUFXLENBQUMsU0FBUzs7Ozs0QkFBQyxVQUFDLFFBQVE7Z0NBQ3RELEtBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLGNBQWMsQ0FBQyxDQUFDOzRCQUMzQyxDQUFDLEdBQUUsSUFBSSxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7eUJBQ2xEO3FCQUNKO2lCQUNKO2FBQ0o7U0FDSjthQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ3ZCLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztTQUNwQjtJQUNMLENBQUM7Ozs7SUFFTSwrQ0FBYzs7O0lBQXJCO1FBQ0ksSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM1QixDQUFDOzs7OztJQUVPLHdDQUFPOzs7O0lBQWY7UUFDSSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDN0MsQ0FBQzs7Ozs7OztJQUVPLHdDQUFPOzs7Ozs7SUFBZixVQUFnQixjQUFxQixFQUFFLFlBQWlEO1FBQ3BGLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNaLElBQUksQ0FBQyxLQUFLLG9CQUFPLElBQUksQ0FBQyxJQUFJLEVBQUssY0FBYyxDQUFDLENBQUM7U0FDbEQ7YUFBTTtZQUNILElBQUksQ0FBQyxLQUFLLEdBQUcsY0FBYyxDQUFDO1NBQy9CO1FBQ0QsSUFBSSxZQUFZLEVBQUU7WUFDZCxZQUFZLENBQUMsY0FBYyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUM1QztRQUNELElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUMxQixDQUFDOzs7OztJQUVPLDBDQUFTOzs7O0lBQWpCO1FBQ0ksSUFBSSxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksRUFBRTtZQUNwQixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztZQUNsQixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7U0FDekI7SUFDTCxDQUFDOzs7OztJQUVPLCtDQUFjOzs7O0lBQXRCOztZQUNVLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFO1FBQzlCLElBQUksT0FBTyxJQUFJLE9BQU8sQ0FBQyxNQUFNLEVBQUU7WUFDM0IsSUFBSSxDQUFDLGdCQUFnQixHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQztTQUMzRDthQUFNO1lBQ0gsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEtBQUssQ0FBQztTQUNqQztRQUVELElBQUksSUFBSSxDQUFDLGtCQUFrQixFQUFFO1lBQ3pCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDdkM7UUFDRCxJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDM0MsQ0FBQzs7Ozs7O0lBRU8sMkNBQVU7Ozs7O0lBQWxCLFVBQW1CLFNBQWtCO1FBQ2pDLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO1FBQzNCLElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFO1lBQ3hCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7U0FDMUM7UUFDRCxJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDM0MsQ0FBQzs7OztJQUVNLHdDQUFPOzs7SUFBZDtRQUNJLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUM7UUFDL0IsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQztJQUNsQyxDQUFDOzs7OztJQUVNLDRDQUFXOzs7O0lBQWxCLFVBQW1CLFFBQWtDO1FBQ2pELElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNsQixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUN6QixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDeEIsQ0FBQzs7OztJQUVNLG9EQUFtQjs7O0lBQTFCO1FBQ0ksT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7SUFDakMsQ0FBQzs7Ozs7O0lBRU0scUNBQUk7Ozs7O0lBQVgsVUFBWSxrQkFBeUMsRUFBRSxpQkFBd0Q7UUFBeEQsa0NBQUEsRUFBQSx3QkFBd0Q7UUFDM0csSUFBSSxDQUFDLGtCQUFrQixHQUFHLGtCQUFrQixDQUFDO1FBQzdDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxpQkFBaUIsQ0FBQztJQUMvQyxDQUFDOzs7OztJQUVPLDJDQUFVOzs7O0lBQWxCO1FBQ0ksSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7UUFDdkIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEtBQUssQ0FBQztRQUM5QixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztRQUN2QixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztRQUNsQixJQUFJLElBQUksQ0FBQyxtQkFBbUIsRUFBRTtZQUMxQixJQUFJLENBQUMsbUJBQW1CLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDdkMsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQztTQUNuQztJQUNMLENBQUM7SUFDTCw2QkFBQztBQUFELENBQUMsQUExTEQsSUEwTEM7Ozs7Ozs7SUFqTEcsdUNBQWlDOztJQUVqQywyQ0FBeUI7Ozs7O0lBQ3pCLGtEQUFpQzs7Ozs7SUFDakMsMkNBQTBCOzs7OztJQUMxQix1Q0FBNEI7Ozs7O0lBQzVCLHFEQUFpRDs7SUFFakQsb0RBQWlEOztJQUNqRCxtREFBdUQ7Ozs7O0lBbUN2RCxpREFFRTs7Ozs7SUFwREUsMENBQTBDOzs7OztJQUMxQyxtREFBNEM7O0lBQzVDLDJDQUE4Qjs7QUF1THRDO0lBQ0ksa0JBQW1CLEtBQWEsRUFBUyxHQUFXO1FBQWpDLFVBQUssR0FBTCxLQUFLLENBQVE7UUFBUyxRQUFHLEdBQUgsR0FBRyxDQUFRO1FBQ2hELElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQzdCLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEtBQUssS0FBSyxJQUFJLElBQUksQ0FBQyxHQUFHLEtBQUssTUFBTSxDQUFDLEVBQUU7WUFDOUMsTUFBTSxLQUFLLENBQUMscUNBQXFDLENBQUMsQ0FBQztTQUN0RDtJQUNMLENBQUM7SUFDTCxlQUFDO0FBQUQsQ0FBQyxBQVBELElBT0M7Ozs7SUFOZSx5QkFBb0I7O0lBQUUsdUJBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDaGFuZ2VEZXRlY3RvclJlZn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge09ic2VydmFibGUsIFN1YnNjcmlwdGlvbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge0xpbmtGaWVsZH0gZnJvbSAnLi9saW5rcy9saW5rZmllbGQnO1xuaW1wb3J0IHtNaWNyb09iamVjdH0gZnJvbSAnLi9taWNyb29iamVjdCc7XG5cbmV4cG9ydCBjbGFzcyBMaW5rRmllbGRQYWdpbmdTdXBwb3J0IHtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHBhZ2VMaW5rOiBMaW5rRmllbGQ8TWljcm9PYmplY3RbXT4sXG4gICAgICAgIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBwdWJsaWMgcGFnZUxpbWl0OiBudW1iZXIgPSAyMDBcbiAgICApIHtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNvcnRzOiBTb3J0SW5mb1tdID0gbnVsbDtcblxuICAgIHB1YmxpYyBpc0xvYWRpbmcgPSBmYWxzZTtcbiAgICBwcml2YXRlIGxvYWRlZENvbXBsZXRlbHkgPSBmYWxzZTtcbiAgICBwcml2YXRlIGhhc0xvYWRlZCA9IGZhbHNlO1xuICAgIHByaXZhdGUgX3Jvd3M6IGFueVtdID0gbnVsbDtcbiAgICBwcml2YXRlIGxvYWRpbmdTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiA9IG51bGw7XG5cbiAgICBwdWJsaWMgcm93c0NoYW5nZUNhbGxiYWNrOiAocm93czogYW55W10pID0+IHZvaWQ7XG4gICAgcHVibGljIGlzTG9hZGluZ0NhbGxiYWNrOiAoaXNMb2FkaW5nOiBib29sZWFuKSA9PiB2b2lkO1xuXG4gICAgZ2V0IHJvd3MoKTogYW55W10ge1xuICAgICAgICBpZiAoIXRoaXMuaGFzTG9hZGVkKSB7XG4gICAgICAgICAgICB0aGlzLmxvYWROZXh0UGFnZSgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLl9yb3dzO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZnJvbShcbiAgICAgICAgcGFnZUxpbms6IExpbmtGaWVsZDxNaWNyb09iamVjdFtdPixcbiAgICAgICAgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBwYWdlTGltaXQ6IG51bWJlciA9IDIwMFxuICAgICk6IExpbmtGaWVsZFBhZ2luZ1N1cHBvcnQge1xuICAgICAgICByZXR1cm4gbmV3IExpbmtGaWVsZFBhZ2luZ1N1cHBvcnQocGFnZUxpbmssIGNoYW5nZURldGVjdG9yUmVmLCBwYWdlTGltaXQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhcHBseVNvcnQoc29ydHM6IFNvcnRJbmZvW10sIGV4dGVybmFsU29ydGluZyA9IHRydWUpIHtcbiAgICAgICAgdGhpcy5oYXNMb2FkZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5zb3J0cyA9IG51bGw7XG4gICAgICAgIHRoaXMuX3Jvd3MgPSBudWxsO1xuXG4gICAgICAgIGlmIChleHRlcm5hbFNvcnRpbmcpIHtcbiAgICAgICAgICAgIHRoaXMuc29ydHMgPSBzb3J0cztcbiAgICAgICAgICAgIHRoaXMubG9hZE5leHRQYWdlKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMubG9hZGVkQ29tcGxldGVseSkge1xuICAgICAgICAgICAgICAgIHRoaXMubG9hZE5leHRQYWdlKG51bGwpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgfVxuXG4gICAgcHJpdmF0ZSBsb2FkaW5nQ2FsbGJhY2sgPSAoKSA9PiB7XG4gICAgICAgIHRoaXMuc2V0TG9hZGluZyhmYWxzZSk7XG4gICAgfTtcblxuICAgIHB1YmxpYyBsb2FkTmV4dFBhZ2UocGFnZVNpemU6IG51bWJlciA9IHRoaXMucGFnZUxpbWl0LCByZXN1bHRDYWxsYmFjazogKChwYWdlOiBhbnlbXSwgYWxsOiBhbnlbXSkgPT4gdm9pZCkgPSBudWxsKSB7XG4gICAgICAgIGlmICh0aGlzLnBhZ2VMaW5rICYmICF0aGlzLmlzTG9hZGluZykge1xuICAgICAgICAgICAgaWYgKHRoaXMubG9hZGluZ1N1YnNjcmlwdGlvbikge1xuICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZ1N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZ1N1YnNjcmlwdGlvbiA9IG51bGw7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuaGFzTG9hZGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMubG9hZGVkQ29tcGxldGVseSA9IGZhbHNlO1xuICAgICAgICAgICAgaWYgKHRoaXMuX3Jvd3MgPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0TG9hZGluZyh0cnVlKTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IHJlcU9wdGlvbnM6IGFueSA9IHt9O1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnNvcnRzICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVxT3B0aW9ucy5zb3J0aW5nID0gdGhpcy5zb3J0cztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHBhZ2VTaXplICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVxT3B0aW9ucy5wYWdlU2l6ZSA9IHBhZ2VTaXplO1xuICAgICAgICAgICAgICAgIH1cblxuXG4gICAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nU3Vic2NyaXB0aW9uID0gdGhpcy5wYWdlTGluay5pbml0V2l0aE9icyhudWxsLCByZXFPcHRpb25zKS5zdWJzY3JpYmUoKGZpcnN0UGFnZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFJvd3MoZmlyc3RQYWdlLCByZXN1bHRDYWxsYmFjayk7XG4gICAgICAgICAgICAgICAgfSwgdGhpcy5sb2FkaW5nQ2FsbGJhY2ssIHRoaXMubG9hZGluZ0NhbGxiYWNrKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbGFzdFJvdyA9IHRoaXMubGFzdFJvdygpO1xuICAgICAgICAgICAgICAgIGlmIChsYXN0Um93KSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChsYXN0Um93Ll9fbWV0YS5uZXh0UGFnZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJlcU9wdGlvbnMgPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBhZ2VTaXplICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXFPcHRpb25zID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWdlU2l6ZTogcGFnZVNpemVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXh0UGFnZU9iczogT2JzZXJ2YWJsZTxNaWNyb09iamVjdFtdPiA9IGxhc3RSb3cuX19tZXRhLm5leHRQYWdlLmluaXRXaXRoT2JzKG51bGwsIHJlcU9wdGlvbnMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5leHRQYWdlT2JzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRMb2FkaW5nKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZ1N1YnNjcmlwdGlvbiA9IG5leHRQYWdlT2JzLnN1YnNjcmliZSgobmV4dFBhZ2UpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRSb3dzKG5leHRQYWdlLCByZXN1bHRDYWxsYmFjayk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgdGhpcy5sb2FkaW5nQ2FsbGJhY2ssIHRoaXMubG9hZGluZ0NhbGxiYWNrKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmICghdGhpcy5wYWdlTGluaykge1xuICAgICAgICAgICAgdGhpcy5jbGVhclJvd3MoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBsb2FkRXZlcnl0aGluZygpIHtcbiAgICAgICAgdGhpcy5sb2FkTmV4dFBhZ2UobnVsbCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBsYXN0Um93KCk6IE1pY3JvT2JqZWN0IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Jvd3NbdGhpcy5fcm93cy5sZW5ndGggLSAxXTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldFJvd3MoYWRkaXRpb25hbFBhZ2U6IGFueVtdLCBsb2FkQ2FsbGJhY2s6ICgocGFnZTogYW55W10sIGFsbDogYW55W10pID0+IHZvaWQpKSB7XG4gICAgICAgIGlmICh0aGlzLl9yb3dzKSB7XG4gICAgICAgICAgICB0aGlzLl9yb3dzID0gWy4uLnRoaXMucm93cywgLi4uYWRkaXRpb25hbFBhZ2VdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fcm93cyA9IGFkZGl0aW9uYWxQYWdlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChsb2FkQ2FsbGJhY2spIHtcbiAgICAgICAgICAgIGxvYWRDYWxsYmFjayhhZGRpdGlvbmFsUGFnZSwgdGhpcy5fcm93cyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5yZWZsZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2xlYXJSb3dzKCkge1xuICAgICAgICBpZiAodGhpcy5fcm93cyAhPSBudWxsKSB7XG4gICAgICAgICAgICB0aGlzLl9yb3dzID0gbnVsbDtcbiAgICAgICAgICAgIHRoaXMucmVmbGVjdENoYW5nZXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgcmVmbGVjdENoYW5nZXMoKSB7XG4gICAgICAgIGNvbnN0IGxhc3RSb3cgPSB0aGlzLmxhc3RSb3coKTtcbiAgICAgICAgaWYgKGxhc3RSb3cgJiYgbGFzdFJvdy5fX21ldGEpIHtcbiAgICAgICAgICAgIHRoaXMubG9hZGVkQ29tcGxldGVseSA9IGxhc3RSb3cuX19tZXRhLm5leHRQYWdlID09IG51bGw7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmxvYWRlZENvbXBsZXRlbHkgPSBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnJvd3NDaGFuZ2VDYWxsYmFjaykge1xuICAgICAgICAgICAgdGhpcy5yb3dzQ2hhbmdlQ2FsbGJhY2sodGhpcy5fcm93cyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRMb2FkaW5nKGlzTG9hZGluZzogYm9vbGVhbikge1xuICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGlzTG9hZGluZztcbiAgICAgICAgaWYgKHRoaXMuaXNMb2FkaW5nQ2FsbGJhY2spIHtcbiAgICAgICAgICAgIHRoaXMuaXNMb2FkaW5nQ2FsbGJhY2sodGhpcy5pc0xvYWRpbmcpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIHB1YmxpYyBkaXNwb3NlKCkge1xuICAgICAgICB0aGlzLnJvd3NDaGFuZ2VDYWxsYmFjayA9IG51bGw7XG4gICAgICAgIHRoaXMuaXNMb2FkaW5nQ2FsbGJhY2sgPSBudWxsO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXRQYWdlTGluayhwYWdlTGluazogTGlua0ZpZWxkPE1pY3JvT2JqZWN0W10+KSB7XG4gICAgICAgIHRoaXMuY2xlYXJTdGF0ZSgpO1xuICAgICAgICB0aGlzLnBhZ2VMaW5rID0gcGFnZUxpbms7XG4gICAgICAgIHRoaXMubG9hZE5leHRQYWdlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGhhc0xvYWRlZENvbXBsZXRlbHkoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmxvYWRlZENvbXBsZXRlbHk7XG4gICAgfVxuXG4gICAgcHVibGljIGluaXQocm93c0NoYW5nZUNhbGxiYWNrOiAocm93czogYW55W10pID0+IHZvaWQsIGlzTG9hZGluZ0NhbGxiYWNrOiAoKGlzTG9hZGluZzogYm9vbGVhbikgPT4gdm9pZCkgPSBudWxsKSB7XG4gICAgICAgIHRoaXMucm93c0NoYW5nZUNhbGxiYWNrID0gcm93c0NoYW5nZUNhbGxiYWNrO1xuICAgICAgICB0aGlzLmlzTG9hZGluZ0NhbGxiYWNrID0gaXNMb2FkaW5nQ2FsbGJhY2s7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjbGVhclN0YXRlKCkge1xuICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICB0aGlzLmxvYWRlZENvbXBsZXRlbHkgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5oYXNMb2FkZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5fcm93cyA9IG51bGw7XG4gICAgICAgIGlmICh0aGlzLmxvYWRpbmdTdWJzY3JpcHRpb24pIHtcbiAgICAgICAgICAgIHRoaXMubG9hZGluZ1N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgdGhpcy5sb2FkaW5nU3Vic2NyaXB0aW9uID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIFNvcnRJbmZvIHtcbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgZmllbGQ6IHN0cmluZywgcHVibGljIGRpcjogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuZGlyID0gZGlyLnRvVXBwZXJDYXNlKCk7XG4gICAgICAgIGlmICghKHRoaXMuZGlyID09PSAnQVNDJyB8fCB0aGlzLmRpciA9PT0gJ0RFU0MnKSkge1xuICAgICAgICAgICAgdGhyb3cgRXJyb3IoJ2RpciBjYW4gb25seSBiZSBcXCdBU0NcXCcgb3IgXFwnREVTQ1xcJycpO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19