@skyux/datetime 11.0.0-alpha.1 → 11.0.0-alpha.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -13,15 +13,33 @@ import * as i0 from "@angular/core";
13
13
  */
14
14
  export class SkyDateService {
15
15
  /* spell-checker:disable */
16
+ // See: https://github.com/angular/angular/blob/17.3.x/packages/common/src/pipes/date_pipe.ts
17
+ // See: https://www.ibm.com/docs/en/app-connect/11.0.0?topic=function-formatting-parsing-datetimes-as-strings
16
18
  #ALIASES = {
17
- medium: 'yMMMdjms',
19
+ // TODO: replace with 'M/d/yy, h:mm a' in a breaking change.
18
20
  short: 'yMdjm',
19
- fullDate: 'yMMMMEEEEd',
20
- longDate: 'yMMMMd',
21
- mediumDate: 'yMMMd',
21
+ // TODO: replace with 'MMM d, y, h:mm:ss a' in a breaking change.
22
+ medium: 'yMMMdjms',
23
+ // TODO: This format was modified from 'MMMM d, y, h:mm:ss a z' due to the limitations of the Intl API.
24
+ long: 'MMMM d, y, h:mm:ss a Z',
25
+ // TODO: This format was modified from 'EEEE, MMMM d, y, h:mm:ss a zzzz' due to the limitations of the Intl API.
26
+ full: 'EEEE, MMMM d, y, h:mm:ss a z',
27
+ // TODO: Replace with 'M/d/yy' in a breaking change.
22
28
  shortDate: 'yMd',
23
- mediumTime: 'jms',
29
+ // TODO: Replace with 'MMM d, y' in a breaking change.
30
+ mediumDate: 'yMMMd',
31
+ // TODO: Replace with 'MMMM d, y' in a breaking change.
32
+ longDate: 'yMMMMd',
33
+ // TODO: Replace with 'EEEE, MMMM d, y' in a breaking change.
34
+ fullDate: 'yMMMMEEEEd',
35
+ // TODO: Replace with 'h:mm a' in a breaking change.
24
36
  shortTime: 'jm',
37
+ // TODO: Replace with 'h:mm:ss a' in a breaking change.
38
+ mediumTime: 'jms',
39
+ // TODO: This format was modified from 'h:mm:ss a z' due to the limitations of the Intl API.
40
+ longTime: 'h:mm:ss a Z',
41
+ // TODO: This format was modified from 'h:mm:ss a zzzz' due to the limitations of the Intl API.
42
+ fullTime: 'h:mm:ss a z',
25
43
  };
26
44
  /* spell-checker:enable */
27
45
  #defaultFormat = 'short';
@@ -73,4 +91,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.5", ngImpor
73
91
  function isBlank(obj) {
74
92
  return !obj;
75
93
  }
76
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2RhdGV0aW1lL3NyYy9saWIvbW9kdWxlcy9kYXRlLXBpcGUvZGF0ZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHlGQUF5RjtBQUN6Riw2RkFBNkY7QUFDN0Ysb0JBQW9CO0FBQ3BCLHVGQUF1RjtBQUN2RixPQUFPLEVBQUUsVUFBVSxFQUFhLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RCxPQUFPLEVBRUwsb0JBQW9CLEVBQ3BCLG9CQUFvQixHQUNyQixNQUFNLGFBQWEsQ0FBQztBQUVyQixPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFDNUIsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7O0FBRTNDOztHQUVHO0FBSUgsTUFBTSxPQUFPLGNBQWM7SUFDekIsMkJBQTJCO0lBQzNCLFFBQVEsR0FBMkI7UUFDakMsTUFBTSxFQUFFLFVBQVU7UUFDbEIsS0FBSyxFQUFFLE9BQU87UUFDZCxRQUFRLEVBQUUsWUFBWTtRQUN0QixRQUFRLEVBQUUsUUFBUTtRQUNsQixVQUFVLEVBQUUsT0FBTztRQUNuQixTQUFTLEVBQUUsS0FBSztRQUNoQixVQUFVLEVBQUUsS0FBSztRQUNqQixTQUFTLEVBQUUsSUFBSTtLQUNoQixDQUFDO0lBQ0YsMEJBQTBCO0lBRTFCLGNBQWMsR0FBRyxPQUFPLENBQUM7SUFDekIsY0FBYyxHQUFHLE9BQU8sQ0FBQztJQUN6QixjQUFjLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztJQUVyQztRQUNFLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQzthQUN6QixhQUFhLEVBQUU7YUFDZixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQzthQUNwQyxTQUFTLENBQUMsQ0FBQyxVQUE0QixFQUFFLEVBQUU7WUFDMUMsSUFBSSxDQUFDLGNBQWMsR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDO1FBQzFDLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVNLFdBQVc7UUFDaEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUMzQixJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ2pDLENBQUM7SUFFTSxNQUFNLENBQ1gsS0FBVSxFQUNWLE1BQWUsRUFDZixNQUFlO1FBRWYsSUFBSSxJQUFVLENBQUM7UUFDZixNQUFNLE9BQU8sR0FBRyxNQUFNLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQztRQUU5QyxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLEtBQUssS0FBSyxFQUFFLENBQUM7WUFDdEMsT0FBTyxTQUFTLENBQUM7UUFDbkIsQ0FBQztRQUVELHdFQUF3RTtRQUN4RSx1RkFBdUY7UUFDdkYsNkJBQTZCO1FBQzdCLElBQUksS0FBSyxZQUFZLE1BQU0sSUFBSSxDQUFDLENBQUMsS0FBSyxZQUFZLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDeEQsTUFBTSxJQUFJLEtBQUssQ0FBQyxpQkFBaUIsR0FBRyxLQUFLLENBQUMsQ0FBQztRQUM3QyxDQUFDO1FBRUQsMkZBQTJGO1FBQzNGLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNqQyxJQUFJLFVBQVUsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDO1lBQ3pCLElBQUksR0FBRyxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDN0IsQ0FBQzthQUFNLENBQUM7WUFDTixNQUFNLElBQUksS0FBSyxDQUFDLGlCQUFpQixHQUFHLEtBQUssQ0FBQyxDQUFDO1FBQzdDLENBQUM7UUFFRCxPQUFPLG9CQUFvQixDQUFDLE1BQU0sQ0FDaEMsSUFBSSxFQUNKLE1BQU0sSUFBSSxJQUFJLENBQUMsY0FBYyxFQUM3QixJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLE9BQU8sQ0FDbEMsQ0FBQztJQUNKLENBQUM7OEdBaEVVLGNBQWM7a0hBQWQsY0FBYyxjQUZiLE1BQU07OzJGQUVQLGNBQWM7a0JBSDFCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COztBQW9FRCxTQUFTLE9BQU8sQ0FBQyxHQUFRO0lBQ3ZCLE9BQU8sQ0FBQyxHQUFHLENBQUM7QUFDZCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gVGhpcyBjbGFzcyBpcyBtb3N0bHkgcG9ydGVkIGZyb20gdGhlIEFuZ3VsYXIgNC54IERhdGVQaXBlIGluIG9yZGVyIHRvIG1haW50YWluIHRoZSBvbGRcbi8vIGJlaGF2aW9yIG9mIHVzaW5nIHRoZSBgSW50bGAgQVBJIGZvciBmb3JtYXR0aW5nIGRhdGVzIHJhdGhlciB0aGFuIGhhdmluZyB0byByZWdpc3RlciBldmVyeVxuLy8gc3VwcG9ydGVkIGxvY2FsZS5cbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIvYmxvYi80LjQueC9wYWNrYWdlcy9jb21tb24vc3JjL3BpcGVzL2RhdGVfcGlwZS50c1xuaW1wb3J0IHsgSW5qZWN0YWJsZSwgT25EZXN0cm95LCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIFNreUFwcExvY2FsZUluZm8sXG4gIFNreUFwcExvY2FsZVByb3ZpZGVyLFxuICBTa3lJbnRsRGF0ZUZvcm1hdHRlcixcbn0gZnJvbSAnQHNreXV4L2kxOG4nO1xuXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lEYXRlU2VydmljZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIC8qIHNwZWxsLWNoZWNrZXI6ZGlzYWJsZSAqL1xuICAjQUxJQVNFUzogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgICBtZWRpdW06ICd5TU1NZGptcycsXG4gICAgc2hvcnQ6ICd5TWRqbScsXG4gICAgZnVsbERhdGU6ICd5TU1NTUVFRUVkJyxcbiAgICBsb25nRGF0ZTogJ3lNTU1NZCcsXG4gICAgbWVkaXVtRGF0ZTogJ3lNTU1kJyxcbiAgICBzaG9ydERhdGU6ICd5TWQnLFxuICAgIG1lZGl1bVRpbWU6ICdqbXMnLFxuICAgIHNob3J0VGltZTogJ2ptJyxcbiAgfTtcbiAgLyogc3BlbGwtY2hlY2tlcjplbmFibGUgKi9cblxuICAjZGVmYXVsdEZvcm1hdCA9ICdzaG9ydCc7XG4gICNkZWZhdWx0TG9jYWxlID0gJ2VuLVVTJztcbiAgI25nVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGluamVjdChTa3lBcHBMb2NhbGVQcm92aWRlcilcbiAgICAgIC5nZXRMb2NhbGVJbmZvKClcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLiNuZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKGxvY2FsZUluZm86IFNreUFwcExvY2FsZUluZm8pID0+IHtcbiAgICAgICAgdGhpcy4jZGVmYXVsdExvY2FsZSA9IGxvY2FsZUluZm8ubG9jYWxlO1xuICAgICAgfSk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy4jbmdVbnN1YnNjcmliZS5uZXh0KCk7XG4gICAgdGhpcy4jbmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpO1xuICB9XG5cbiAgcHVibGljIGZvcm1hdChcbiAgICB2YWx1ZTogYW55LFxuICAgIGxvY2FsZT86IHN0cmluZyxcbiAgICBmb3JtYXQ/OiBzdHJpbmcsXG4gICk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgbGV0IGRhdGU6IERhdGU7XG4gICAgY29uc3QgcGF0dGVybiA9IGZvcm1hdCB8fCB0aGlzLiNkZWZhdWx0Rm9ybWF0O1xuXG4gICAgaWYgKGlzQmxhbmsodmFsdWUpIHx8IHZhbHVlICE9PSB2YWx1ZSkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvLyBNb21lbnQgd2lsbCBpbnRlcnByZXQgYW55IG5vbi1kYXRlIG9iamVjdCBhcyB0b2RheSdzIGRhdGUuIFRoYXQgd291bGRcbiAgICAvLyBpbnRyb2R1Y2UgYSBicmVha2luZyBjaGFuZ2UsIHNvIHdlIGNoZWNrIGZvciBpdCBoZXJlLiBUaGlzIGNvdWxkIHByb2JhYmx5IGJlIHJlbW92ZWRcbiAgICAvLyBpbiBhIGZ1dHVyZSBtYWpvciB2ZXJzaW9uLlxuICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIE9iamVjdCAmJiAhKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCB2YWx1ZTogJyArIHZhbHVlKTtcbiAgICB9XG5cbiAgICAvLyBVc2UgbW9tZW50IHRvIGF2b2lkIGluY29uc2lzdGVuY2llcyBiZXR3ZWVuIGJyb3dzZXJzIGludGVycHJldGluZyB0aGUgdmFsdWUgZGlmZmVyZW50bHkuXG4gICAgY29uc3QgbW9tZW50RGF0ZSA9IG1vbWVudCh2YWx1ZSk7XG4gICAgaWYgKG1vbWVudERhdGUuaXNWYWxpZCgpKSB7XG4gICAgICBkYXRlID0gbW9tZW50RGF0ZS50b0RhdGUoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHZhbHVlOiAnICsgdmFsdWUpO1xuICAgIH1cblxuICAgIHJldHVybiBTa3lJbnRsRGF0ZUZvcm1hdHRlci5mb3JtYXQoXG4gICAgICBkYXRlLFxuICAgICAgbG9jYWxlIHx8IHRoaXMuI2RlZmF1bHRMb2NhbGUsXG4gICAgICB0aGlzLiNBTElBU0VTW3BhdHRlcm5dIHx8IHBhdHRlcm4sXG4gICAgKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBpc0JsYW5rKG9iajogYW55KTogYm9vbGVhbiB7XG4gIHJldHVybiAhb2JqO1xufVxuIl19
94
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2RhdGV0aW1lL3NyYy9saWIvbW9kdWxlcy9kYXRlLXBpcGUvZGF0ZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHlGQUF5RjtBQUN6Riw2RkFBNkY7QUFDN0Ysb0JBQW9CO0FBQ3BCLHVGQUF1RjtBQUN2RixPQUFPLEVBQUUsVUFBVSxFQUFhLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RCxPQUFPLEVBRUwsb0JBQW9CLEVBQ3BCLG9CQUFvQixHQUNyQixNQUFNLGFBQWEsQ0FBQztBQUVyQixPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFDNUIsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7O0FBRTNDOztHQUVHO0FBSUgsTUFBTSxPQUFPLGNBQWM7SUFDekIsMkJBQTJCO0lBQzNCLDZGQUE2RjtJQUM3Riw2R0FBNkc7SUFDN0csUUFBUSxHQUEyQjtRQUNqQyw0REFBNEQ7UUFDNUQsS0FBSyxFQUFFLE9BQU87UUFDZCxpRUFBaUU7UUFDakUsTUFBTSxFQUFFLFVBQVU7UUFDbEIsdUdBQXVHO1FBQ3ZHLElBQUksRUFBRSx3QkFBd0I7UUFDOUIsZ0hBQWdIO1FBQ2hILElBQUksRUFBRSw4QkFBOEI7UUFDcEMsb0RBQW9EO1FBQ3BELFNBQVMsRUFBRSxLQUFLO1FBQ2hCLHNEQUFzRDtRQUN0RCxVQUFVLEVBQUUsT0FBTztRQUNuQix1REFBdUQ7UUFDdkQsUUFBUSxFQUFFLFFBQVE7UUFDbEIsNkRBQTZEO1FBQzdELFFBQVEsRUFBRSxZQUFZO1FBQ3RCLG9EQUFvRDtRQUNwRCxTQUFTLEVBQUUsSUFBSTtRQUNmLHVEQUF1RDtRQUN2RCxVQUFVLEVBQUUsS0FBSztRQUNqQiw0RkFBNEY7UUFDNUYsUUFBUSxFQUFFLGFBQWE7UUFDdkIsK0ZBQStGO1FBQy9GLFFBQVEsRUFBRSxhQUFhO0tBQ3hCLENBQUM7SUFDRiwwQkFBMEI7SUFFMUIsY0FBYyxHQUFHLE9BQU8sQ0FBQztJQUN6QixjQUFjLEdBQUcsT0FBTyxDQUFDO0lBQ3pCLGNBQWMsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO0lBRXJDO1FBQ0UsTUFBTSxDQUFDLG9CQUFvQixDQUFDO2FBQ3pCLGFBQWEsRUFBRTthQUNmLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO2FBQ3BDLFNBQVMsQ0FBQyxDQUFDLFVBQTRCLEVBQUUsRUFBRTtZQUMxQyxJQUFJLENBQUMsY0FBYyxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUM7UUFDMUMsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU0sV0FBVztRQUNoQixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzNCLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDakMsQ0FBQztJQUVNLE1BQU0sQ0FDWCxLQUFVLEVBQ1YsTUFBZSxFQUNmLE1BQWU7UUFFZixJQUFJLElBQVUsQ0FBQztRQUNmLE1BQU0sT0FBTyxHQUFHLE1BQU0sSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDO1FBRTlDLElBQUksT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssS0FBSyxLQUFLLEVBQUUsQ0FBQztZQUN0QyxPQUFPLFNBQVMsQ0FBQztRQUNuQixDQUFDO1FBRUQsd0VBQXdFO1FBQ3hFLHVGQUF1RjtRQUN2Riw2QkFBNkI7UUFDN0IsSUFBSSxLQUFLLFlBQVksTUFBTSxJQUFJLENBQUMsQ0FBQyxLQUFLLFlBQVksSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUN4RCxNQUFNLElBQUksS0FBSyxDQUFDLGlCQUFpQixHQUFHLEtBQUssQ0FBQyxDQUFDO1FBQzdDLENBQUM7UUFFRCwyRkFBMkY7UUFDM0YsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pDLElBQUksVUFBVSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUM7WUFDekIsSUFBSSxHQUFHLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUM3QixDQUFDO2FBQU0sQ0FBQztZQUNOLE1BQU0sSUFBSSxLQUFLLENBQUMsaUJBQWlCLEdBQUcsS0FBSyxDQUFDLENBQUM7UUFDN0MsQ0FBQztRQUVELE9BQU8sb0JBQW9CLENBQUMsTUFBTSxDQUNoQyxJQUFJLEVBQ0osTUFBTSxJQUFJLElBQUksQ0FBQyxjQUFjLEVBQzdCLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksT0FBTyxDQUNsQyxDQUFDO0lBQ0osQ0FBQzs4R0FsRlUsY0FBYztrSEFBZCxjQUFjLGNBRmIsTUFBTTs7MkZBRVAsY0FBYztrQkFIMUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7O0FBc0ZELFNBQVMsT0FBTyxDQUFDLEdBQVE7SUFDdkIsT0FBTyxDQUFDLEdBQUcsQ0FBQztBQUNkLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBUaGlzIGNsYXNzIGlzIG1vc3RseSBwb3J0ZWQgZnJvbSB0aGUgQW5ndWxhciA0LnggRGF0ZVBpcGUgaW4gb3JkZXIgdG8gbWFpbnRhaW4gdGhlIG9sZFxuLy8gYmVoYXZpb3Igb2YgdXNpbmcgdGhlIGBJbnRsYCBBUEkgZm9yIGZvcm1hdHRpbmcgZGF0ZXMgcmF0aGVyIHRoYW4gaGF2aW5nIHRvIHJlZ2lzdGVyIGV2ZXJ5XG4vLyBzdXBwb3J0ZWQgbG9jYWxlLlxuLy8gaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci9ibG9iLzQuNC54L3BhY2thZ2VzL2NvbW1vbi9zcmMvcGlwZXMvZGF0ZV9waXBlLnRzXG5pbXBvcnQgeyBJbmplY3RhYmxlLCBPbkRlc3Ryb3ksIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgU2t5QXBwTG9jYWxlSW5mbyxcbiAgU2t5QXBwTG9jYWxlUHJvdmlkZXIsXG4gIFNreUludGxEYXRlRm9ybWF0dGVyLFxufSBmcm9tICdAc2t5dXgvaTE4bic7XG5cbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50JztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFNreURhdGVTZXJ2aWNlIGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgLyogc3BlbGwtY2hlY2tlcjpkaXNhYmxlICovXG4gIC8vIFNlZTogaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci9ibG9iLzE3LjMueC9wYWNrYWdlcy9jb21tb24vc3JjL3BpcGVzL2RhdGVfcGlwZS50c1xuICAvLyBTZWU6IGh0dHBzOi8vd3d3LmlibS5jb20vZG9jcy9lbi9hcHAtY29ubmVjdC8xMS4wLjA/dG9waWM9ZnVuY3Rpb24tZm9ybWF0dGluZy1wYXJzaW5nLWRhdGV0aW1lcy1hcy1zdHJpbmdzXG4gICNBTElBU0VTOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAgIC8vIFRPRE86IHJlcGxhY2Ugd2l0aCAnTS9kL3l5LCBoOm1tIGEnIGluIGEgYnJlYWtpbmcgY2hhbmdlLlxuICAgIHNob3J0OiAneU1kam0nLFxuICAgIC8vIFRPRE86IHJlcGxhY2Ugd2l0aCAnTU1NIGQsIHksIGg6bW06c3MgYScgaW4gYSBicmVha2luZyBjaGFuZ2UuXG4gICAgbWVkaXVtOiAneU1NTWRqbXMnLFxuICAgIC8vIFRPRE86IFRoaXMgZm9ybWF0IHdhcyBtb2RpZmllZCBmcm9tICdNTU1NIGQsIHksIGg6bW06c3MgYSB6JyBkdWUgdG8gdGhlIGxpbWl0YXRpb25zIG9mIHRoZSBJbnRsIEFQSS5cbiAgICBsb25nOiAnTU1NTSBkLCB5LCBoOm1tOnNzIGEgWicsXG4gICAgLy8gVE9ETzogVGhpcyBmb3JtYXQgd2FzIG1vZGlmaWVkIGZyb20gJ0VFRUUsIE1NTU0gZCwgeSwgaDptbTpzcyBhIHp6enonIGR1ZSB0byB0aGUgbGltaXRhdGlvbnMgb2YgdGhlIEludGwgQVBJLlxuICAgIGZ1bGw6ICdFRUVFLCBNTU1NIGQsIHksIGg6bW06c3MgYSB6JyxcbiAgICAvLyBUT0RPOiBSZXBsYWNlIHdpdGggJ00vZC95eScgaW4gYSBicmVha2luZyBjaGFuZ2UuXG4gICAgc2hvcnREYXRlOiAneU1kJyxcbiAgICAvLyBUT0RPOiBSZXBsYWNlIHdpdGggJ01NTSBkLCB5JyBpbiBhIGJyZWFraW5nIGNoYW5nZS5cbiAgICBtZWRpdW1EYXRlOiAneU1NTWQnLFxuICAgIC8vIFRPRE86IFJlcGxhY2Ugd2l0aCAnTU1NTSBkLCB5JyBpbiBhIGJyZWFraW5nIGNoYW5nZS5cbiAgICBsb25nRGF0ZTogJ3lNTU1NZCcsXG4gICAgLy8gVE9ETzogUmVwbGFjZSB3aXRoICdFRUVFLCBNTU1NIGQsIHknIGluIGEgYnJlYWtpbmcgY2hhbmdlLlxuICAgIGZ1bGxEYXRlOiAneU1NTU1FRUVFZCcsXG4gICAgLy8gVE9ETzogUmVwbGFjZSB3aXRoICdoOm1tIGEnIGluIGEgYnJlYWtpbmcgY2hhbmdlLlxuICAgIHNob3J0VGltZTogJ2ptJyxcbiAgICAvLyBUT0RPOiBSZXBsYWNlIHdpdGggJ2g6bW06c3MgYScgaW4gYSBicmVha2luZyBjaGFuZ2UuXG4gICAgbWVkaXVtVGltZTogJ2ptcycsXG4gICAgLy8gVE9ETzogVGhpcyBmb3JtYXQgd2FzIG1vZGlmaWVkIGZyb20gJ2g6bW06c3MgYSB6JyBkdWUgdG8gdGhlIGxpbWl0YXRpb25zIG9mIHRoZSBJbnRsIEFQSS5cbiAgICBsb25nVGltZTogJ2g6bW06c3MgYSBaJyxcbiAgICAvLyBUT0RPOiBUaGlzIGZvcm1hdCB3YXMgbW9kaWZpZWQgZnJvbSAnaDptbTpzcyBhIHp6enonIGR1ZSB0byB0aGUgbGltaXRhdGlvbnMgb2YgdGhlIEludGwgQVBJLlxuICAgIGZ1bGxUaW1lOiAnaDptbTpzcyBhIHonLFxuICB9O1xuICAvKiBzcGVsbC1jaGVja2VyOmVuYWJsZSAqL1xuXG4gICNkZWZhdWx0Rm9ybWF0ID0gJ3Nob3J0JztcbiAgI2RlZmF1bHRMb2NhbGUgPSAnZW4tVVMnO1xuICAjbmdVbnN1YnNjcmliZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgaW5qZWN0KFNreUFwcExvY2FsZVByb3ZpZGVyKVxuICAgICAgLmdldExvY2FsZUluZm8oKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuI25nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgobG9jYWxlSW5mbzogU2t5QXBwTG9jYWxlSW5mbykgPT4ge1xuICAgICAgICB0aGlzLiNkZWZhdWx0TG9jYWxlID0gbG9jYWxlSW5mby5sb2NhbGU7XG4gICAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLiNuZ1Vuc3Vic2NyaWJlLm5leHQoKTtcbiAgICB0aGlzLiNuZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKCk7XG4gIH1cblxuICBwdWJsaWMgZm9ybWF0KFxuICAgIHZhbHVlOiBhbnksXG4gICAgbG9jYWxlPzogc3RyaW5nLFxuICAgIGZvcm1hdD86IHN0cmluZyxcbiAgKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICBsZXQgZGF0ZTogRGF0ZTtcbiAgICBjb25zdCBwYXR0ZXJuID0gZm9ybWF0IHx8IHRoaXMuI2RlZmF1bHRGb3JtYXQ7XG5cbiAgICBpZiAoaXNCbGFuayh2YWx1ZSkgfHwgdmFsdWUgIT09IHZhbHVlKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8vIE1vbWVudCB3aWxsIGludGVycHJldCBhbnkgbm9uLWRhdGUgb2JqZWN0IGFzIHRvZGF5J3MgZGF0ZS4gVGhhdCB3b3VsZFxuICAgIC8vIGludHJvZHVjZSBhIGJyZWFraW5nIGNoYW5nZSwgc28gd2UgY2hlY2sgZm9yIGl0IGhlcmUuIFRoaXMgY291bGQgcHJvYmFibHkgYmUgcmVtb3ZlZFxuICAgIC8vIGluIGEgZnV0dXJlIG1ham9yIHZlcnNpb24uXG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0ICYmICEodmFsdWUgaW5zdGFuY2VvZiBEYXRlKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHZhbHVlOiAnICsgdmFsdWUpO1xuICAgIH1cblxuICAgIC8vIFVzZSBtb21lbnQgdG8gYXZvaWQgaW5jb25zaXN0ZW5jaWVzIGJldHdlZW4gYnJvd3NlcnMgaW50ZXJwcmV0aW5nIHRoZSB2YWx1ZSBkaWZmZXJlbnRseS5cbiAgICBjb25zdCBtb21lbnREYXRlID0gbW9tZW50KHZhbHVlKTtcbiAgICBpZiAobW9tZW50RGF0ZS5pc1ZhbGlkKCkpIHtcbiAgICAgIGRhdGUgPSBtb21lbnREYXRlLnRvRGF0ZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgdmFsdWU6ICcgKyB2YWx1ZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIFNreUludGxEYXRlRm9ybWF0dGVyLmZvcm1hdChcbiAgICAgIGRhdGUsXG4gICAgICBsb2NhbGUgfHwgdGhpcy4jZGVmYXVsdExvY2FsZSxcbiAgICAgIHRoaXMuI0FMSUFTRVNbcGF0dGVybl0gfHwgcGF0dGVybixcbiAgICApO1xuICB9XG59XG5cbmZ1bmN0aW9uIGlzQmxhbmsob2JqOiBhbnkpOiBib29sZWFuIHtcbiAgcmV0dXJuICFvYmo7XG59XG4iXX0=
@@ -360,7 +360,7 @@ export class SkyDateRangePickerComponent {
360
360
  this.#updatePickerVisibility(this.selectedCalculator);
361
361
  }
362
362
  if (options?.emitEvent) {
363
- this.formGroup.setValue(valueOrDefault);
363
+ this.formGroup.patchValue(valueOrDefault);
364
364
  }
365
365
  }
366
366
  }
@@ -463,4 +463,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.5", ngImpor
463
463
  type: HostBinding,
464
464
  args: ['style.display']
465
465
  }] } });
466
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1yYW5nZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2RhdGV0aW1lL3NyYy9saWIvbW9kdWxlcy9kYXRlLXJhbmdlLXBpY2tlci9kYXRlLXJhbmdlLXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZGF0ZXRpbWUvc3JjL2xpYi9tb2R1bGVzL2RhdGUtcmFuZ2UtcGlja2VyL2RhdGUtcmFuZ2UtcGlja2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBRVQsV0FBVyxFQUNYLFFBQVEsRUFDUixLQUFLLEVBSUwsZ0JBQWdCLEVBQ2hCLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBR0wsV0FBVyxFQUNYLFdBQVcsRUFFWCxXQUFXLEVBQ1gsYUFBYSxFQUNiLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsbUJBQW1CLEVBR25CLFVBQVUsR0FDWCxNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDNUMsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixtQkFBbUIsRUFDbkIsb0NBQW9DLEVBQ3BDLGlCQUFpQixHQUNsQixNQUFNLGNBQWMsQ0FBQztBQUV0QixPQUFPLEVBQUUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFdkUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDdEUsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0seUNBQXlD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aUJBQWlCO3dCQUNqQixtQkFBbUI7cUJBQ3BCLGFBQ1U7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGFBQWE7NEJBQ3RCLFdBQVcsNkJBQTZCOzRCQUN4QyxLQUFLLEVBQUUsSUFBSTt5QkFDWjt3QkFDRDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLDZCQUE2Qjs0QkFDeEMsS0FBSyxFQUFFLElBQUk7eUJBQ1o7d0JBQ0QsRUFBRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtxQkFDckQsWUFDUyx1QkFBdUIsY0FDckIsSUFBSTt3REFtQkwsYUFBYTtzQkFEdkIsS0FBSztnQkFpQ0MsVUFBVTtzQkFEaEIsS0FBSztnQkFXSyxRQUFRO3NCQURsQixLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQWUvQixlQUFlO3NCQURyQixLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQVMvQixrQkFBa0I7c0JBRHhCLEtBQUs7Z0JBUUMsZ0JBQWdCO3NCQUR0QixLQUFLO2dCQVFDLFFBQVE7c0JBRGQsS0FBSztnQkFRSyxLQUFLO3NCQURmLEtBQUs7Z0JBb0JDLFNBQVM7c0JBRGYsS0FBSztnQkFPQyxRQUFRO3NCQURkLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBUy9CLE9BQU87c0JBRmIsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTs7c0JBQ3JDLFdBQVc7dUJBQUMsNkJBQTZCO2dCQVNuQyxpQkFBaUI7c0JBRHZCLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBUy9CLE9BQU87c0JBRGIsS0FBSztnQkFJSSxPQUFPO3NCQURoQixXQUFXO3VCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIERvQ2hlY2ssXG4gIEhvc3RCaW5kaW5nLFxuICBJbmplY3RvcixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBUZW1wbGF0ZVJlZixcbiAgYm9vbGVhbkF0dHJpYnV0ZSxcbiAgaW5qZWN0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEFic3RyYWN0Q29udHJvbCxcbiAgQ29udHJvbFZhbHVlQWNjZXNzb3IsXG4gIEZvcm1CdWlsZGVyLFxuICBGb3JtQ29udHJvbCxcbiAgRm9ybUdyb3VwLFxuICBGb3Jtc01vZHVsZSxcbiAgTkdfVkFMSURBVE9SUyxcbiAgTkdfVkFMVUVfQUNDRVNTT1IsXG4gIE5nQ29udHJvbCxcbiAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgVmFsaWRhdGlvbkVycm9ycyxcbiAgVmFsaWRhdG9yLFxuICBWYWxpZGF0b3JzLFxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBTa3lMb2dTZXJ2aWNlIH0gZnJvbSAnQHNreXV4L2NvcmUnO1xuaW1wb3J0IHtcbiAgU0tZX0ZPUk1fRVJST1JTX0VOQUJMRUQsXG4gIFNreUZvcm1FcnJvcnNNb2R1bGUsXG4gIFNreUZvcm1GaWVsZExhYmVsVGV4dFJlcXVpcmVkU2VydmljZSxcbiAgU2t5SW5wdXRCb3hNb2R1bGUsXG59IGZyb20gJ0Bza3l1eC9mb3Jtcyc7XG5cbmltcG9ydCB7IFN1YmplY3QsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBtZXJnZSwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IFNreURhdGVwaWNrZXJNb2R1bGUgfSBmcm9tICcuLi9kYXRlcGlja2VyL2RhdGVwaWNrZXIubW9kdWxlJztcbmltcG9ydCB7IFNreURhdGV0aW1lUmVzb3VyY2VzTW9kdWxlIH0gZnJvbSAnLi4vc2hhcmVkL3NreS1kYXRldGltZS1yZXNvdXJjZXMubW9kdWxlJztcblxuaW1wb3J0IHsgU2t5RGF0ZVJhbmdlUGlja2VyRW5kRGF0ZVJlc291cmNlS2V5UGlwZSB9IGZyb20gJy4vZGF0ZS1yYW5nZS1waWNrZXItZW5kLWRhdGUtcmVzb3VyY2Uta2V5LnBpcGUnO1xuaW1wb3J0IHsgU2t5RGF0ZVJhbmdlUGlja2VyU3RhcnREYXRlUmVzb3VyY2VLZXlQaXBlIH0gZnJvbSAnLi9kYXRlLXJhbmdlLXBpY2tlci1zdGFydC1kYXRlLXJlc291cmNlLWtleS5waXBlJztcbmltcG9ydCB7IFNreURhdGVSYW5nZVNlcnZpY2UgfSBmcm9tICcuL2RhdGUtcmFuZ2Uuc2VydmljZSc7XG5pbXBvcnQgeyBTa3lEYXRlUmFuZ2VDYWxjdWxhdGlvbiB9IGZyb20gJy4vdHlwZXMvZGF0ZS1yYW5nZS1jYWxjdWxhdGlvbic7XG5pbXBvcnQgeyBTa3lEYXRlUmFuZ2VDYWxjdWxhdG9yIH0gZnJvbSAnLi90eXBlcy9kYXRlLXJhbmdlLWNhbGN1bGF0b3InO1xuaW1wb3J0IHsgU2t5RGF0ZVJhbmdlQ2FsY3VsYXRvcklkIH0gZnJvbSAnLi90eXBlcy9kYXRlLXJhbmdlLWNhbGN1bGF0b3ItaWQnO1xuaW1wb3J0IHsgU2t5RGF0ZVJhbmdlQ2FsY3VsYXRvclR5cGUgfSBmcm9tICcuL3R5cGVzL2RhdGUtcmFuZ2UtY2FsY3VsYXRvci10eXBlJztcbmltcG9ydCB7IFNLWV9ERUZBVUxUX0NBTENVTEFUT1JfSURTIH0gZnJvbSAnLi90eXBlcy9kYXRlLXJhbmdlLWRlZmF1bHQtY2FsY3VsYXRvci1jb25maWdzJztcblxudHlwZSBEYXRlVmFsdWUgPSBEYXRlIHwgc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcblxuZnVuY3Rpb24gYXJlRGF0ZVJhbmdlc0VxdWFsKFxuICByYW5nZUE6IFNreURhdGVSYW5nZUNhbGN1bGF0aW9uIHwgdW5kZWZpbmVkLFxuICByYW5nZUI6IFNreURhdGVSYW5nZUNhbGN1bGF0aW9uIHwgdW5kZWZpbmVkLFxuKTogYm9vbGVhbiB7XG4gIHJldHVybiAoXG4gICAgISFyYW5nZUEgJiZcbiAgICAhIXJhbmdlQiAmJlxuICAgIHJhbmdlQS5jYWxjdWxhdG9ySWQgPT09IHJhbmdlQi5jYWxjdWxhdG9ySWQgJiZcbiAgICBhcmVEYXRlc0VxdWFsKHJhbmdlQS5zdGFydERhdGUsIHJhbmdlQi5zdGFydERhdGUpICYmXG4gICAgYXJlRGF0ZXNFcXVhbChyYW5nZUEuZW5kRGF0ZSwgcmFuZ2VCLmVuZERhdGUpXG4gICk7XG59XG5cbmZ1bmN0aW9uIGFyZURhdGVzRXF1YWwoYTogRGF0ZVZhbHVlLCBiOiBEYXRlVmFsdWUpOiBib29sZWFuIHtcbiAgaWYgKHR5cGVvZiBhICE9PSB0eXBlb2YgYikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmICghYSAmJiAhYikge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgaWYgKHR5cGVvZiBhID09PSAnc3RyaW5nJyAmJiBhID09PSBiKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICByZXR1cm4gYSBpbnN0YW5jZW9mIERhdGUgJiYgYiBpbnN0YW5jZW9mIERhdGUgJiYgYS5nZXRUaW1lKCkgPT09IGIuZ2V0VGltZSgpO1xufVxuXG5mdW5jdGlvbiBpc051bGxPclVuZGVmaW5lZCh2YWx1ZTogdW5rbm93bik6IHZhbHVlIGlzIHVuZGVmaW5lZCB8IG51bGwge1xuICByZXR1cm4gdmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gbnVsbDtcbn1cblxuZnVuY3Rpb24gaXNQYXJ0aWFsVmFsdWUoXG4gIHZhbHVlOiBQYXJ0aWFsPFNreURhdGVSYW5nZUNhbGN1bGF0aW9uPiB8IG51bGwgfCB1bmRlZmluZWQsXG4pOiB2YWx1ZSBpcyBQYXJ0aWFsPFNreURhdGVSYW5nZUNhbGN1bGF0aW9uPiB8IG51bGwgfCB1bmRlZmluZWQge1xuICByZXR1cm4gKFxuICAgIGlzTnVsbE9yVW5kZWZpbmVkKHZhbHVlKSB8fFxuICAgIGlzTnVsbE9yVW5kZWZpbmVkKHZhbHVlLmNhbGN1bGF0b3JJZCkgfHxcbiAgICAhKCdlbmREYXRlJyBpbiB2YWx1ZSkgfHxcbiAgICAhKCdzdGFydERhdGUnIGluIHZhbHVlKVxuICApO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBTa3lEYXRlcGlja2VyTW9kdWxlLFxuICAgIFNreURhdGVSYW5nZVBpY2tlckVuZERhdGVSZXNvdXJjZUtleVBpcGUsXG4gICAgU2t5RGF0ZVJhbmdlUGlja2VyU3RhcnREYXRlUmVzb3VyY2VLZXlQaXBlLFxuICAgIFNreURhdGV0aW1lUmVzb3VyY2VzTW9kdWxlLFxuICAgIFNreUlucHV0Qm94TW9kdWxlLFxuICAgIFNreUZvcm1FcnJvcnNNb2R1bGUsXG4gIF0sXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTElEQVRPUlMsXG4gICAgICB1c2VFeGlzdGluZzogU2t5RGF0ZVJhbmdlUGlja2VyQ29tcG9uZW50LFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBTa3lEYXRlUmFuZ2VQaWNrZXJDb21wb25lbnQsXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9LFxuICAgIHsgcHJvdmlkZTogU0tZX0ZPUk1fRVJST1JTX0VOQUJMRUQsIHVzZVZhbHVlOiB0cnVlIH0sXG4gIF0sXG4gIHNlbGVjdG9yOiAnc2t5LWRhdGUtcmFuZ2UtcGlja2VyJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgc3R5bGVVcmw6ICcuL2RhdGUtcmFuZ2UtcGlja2VyLmNvbXBvbmVudC5zY3NzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2RhdGUtcmFuZ2UtcGlja2VyLmNvbXBvbmVudC5odG1sJyxcbn0pXG5leHBvcnQgY2xhc3MgU2t5RGF0ZVJhbmdlUGlja2VyQ29tcG9uZW50XG4gIGltcGxlbWVudHNcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxuICAgIERvQ2hlY2ssXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBWYWxpZGF0b3JcbntcbiAgLyoqXG4gICAqIElEcyBmb3IgdGhlIGRhdGUgcmFuZ2Ugb3B0aW9ucyB0byBpbmNsdWRlIGluIHRoZSBwaWNrZXIncyBkcm9wZG93bi5cbiAgICogVGhlIG9wdGlvbnMgc3BlY2lmeSBjYWxjdWxhdG9yIG9iamVjdHMgdGhhdCByZXR1cm4gdHdvIGBEYXRlYCBvYmplY3RzIHRvIHJlcHJlc2VudCBkYXRlIHJhbmdlcy5cbiAgICogQnkgZGVmYXVsdCwgdGhpcyBwcm9wZXJ0eSBpbmNsdWRlcyBhbGwgYFNreURhdGVSYW5nZUNhbGN1bGF0b3JJZGAgdmFsdWVzLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBjYWxjdWxhdG9ySWRzKFxuICAgIGNhbGN1bGF0b3JJZHM6IFNreURhdGVSYW5nZUNhbGN1bGF0b3JJZFtdIHwgdW5kZWZpbmVkLFxuICApIHtcbiAgICBjb25zdCBjdXJyZW50Q2FsY3VsYXRvcklkID0gdGhpcy4jZ2V0VmFsdWUoKS5jYWxjdWxhdG9ySWQ7XG5cbiAgICB0aGlzLiNfY2FsY3VsYXRvcklkcyA9IGNhbGN1bGF0b3JJZHMgPz8gU0tZX0RFRkFVTFRfQ0FMQ1VMQVRPUl9JRFM7XG4gICAgdGhpcy5jYWxjdWxhdG9ycyA9IHRoaXMuI2RhdGVSYW5nZVN2Yy5maWx0ZXJDYWxjdWxhdG9ycyhcbiAgICAgIHRoaXMuI19jYWxjdWxhdG9ySWRzLFxuICAgICk7XG5cbiAgICAvLyBJZiB0aGUgY3VycmVudGx5IHNlbGVjdGVkIGNhbGN1bGF0b3IgaXNuJ3QgYXZhaWxhYmxlIGFueW1vcmUsXG4gICAgLy8gc2VsZWN0IHRoZSBmaXJzdCBjYWxjdWxhdG9yIGluIHRoZSBuZXcgYXJyYXkuXG4gICAgaWYgKCF0aGlzLiNfY2FsY3VsYXRvcklkcy5pbmNsdWRlcyhjdXJyZW50Q2FsY3VsYXRvcklkKSkge1xuICAgICAgdGhpcy4jc2V0VmFsdWUoXG4gICAgICAgIHsgY2FsY3VsYXRvcklkOiB0aGlzLmNhbGN1bGF0b3JJZHNbMF0gfSxcbiAgICAgICAgeyBlbWl0RXZlbnQ6IHRydWUgfSxcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldCBjYWxjdWxhdG9ySWRzKCk6IFNreURhdGVSYW5nZUNhbGN1bGF0b3JJZFtdIHtcbiAgICByZXR1cm4gdGhpcy4jX2NhbGN1bGF0b3JJZHM7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGRhdGUgZm9ybWF0IGZvclxuICAgKiBbdGhlIGBza3ktZGF0ZXBpY2tlcmAgY29tcG9uZW50c10oaHR0cHM6Ly9kZXZlbG9wZXIuYmxhY2tiYXVkLmNvbS9za3l1eC9jb21wb25lbnRzL2RhdGVwaWNrZXIpXG4gICAqIHRoYXQgbWFrZSB1cCB0aGUgZGF0ZSByYW5nZSBwaWNrZXIuIFRoZSB0ZXh0IGlucHV0IGlzIGEgY29tcG9zaXRlIGNvbXBvbmVudCBvZlxuICAgKiB1cCB0byB0d28gYHNreS1kYXRlcGlja2VyYCBjb21wb25lbnRzLlxuICAgKiBAZGVmYXVsdCBcIk1NL0REL1lZWVlcIlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGRhdGVGb3JtYXQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogV2hldGhlciB0byBkaXNhYmxlIHRoZSBkYXRlIHJhbmdlIHBpY2tlciBvbiB0ZW1wbGF0ZS1kcml2ZW4gZm9ybXMuIERvbid0IHVzZVxuICAgKiB0aGlzIGlucHV0IG9uIHJlYWN0aXZlIGZvcm1zIGJlY2F1c2UgdGhleSBtYXkgb3ZlcndyaXRlIHRoZSBpbnB1dCBvciBsZWF2ZVxuICAgKiB0aGUgY29udHJvbCBvdXQgb2Ygc3luYy4gVG8gc2V0IHRoZSBkaXNhYmxlZCBzdGF0ZSBvbiByZWFjdGl2ZSBmb3JtcyxcbiAgICogdXNlIHRoZSBgRm9ybUNvbnRyb2xgIGluc3RlYWQuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgcHVibGljIHNldCBkaXNhYmxlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy5mb3JtR3JvdXAuZGlzYWJsZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZvcm1Hcm91cC5lbmFibGUoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0byByZXF1aXJlIHVzZXJzIHRvIHNwZWNpZnkgYSBlbmQgZGF0ZS5cbiAgICogQGRlcHJlY2F0ZWQgVXNlIHRoZSBgcmVxdWlyZWRgIGRpcmVjdGl2ZSBvciBBbmd1bGFyJ3MgYFZhbGlkYXRvcnMucmVxdWlyZWRgXG4gICAqIG9uIHRoZSBmb3JtIGNvbnRyb2wgdG8gbWFyayB0aGUgZGF0ZSByYW5nZSBwaWNrZXIgYXMgcmVxdWlyZWQuXG4gICAqL1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgcHVibGljIGVuZERhdGVSZXF1aXJlZCA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBUaGUgY29udGVudCBvZiB0aGUgaGVscCBwb3BvdmVyLiBXaGVuIHNwZWNpZmllZCBhbG9uZyB3aXRoIGBsYWJlbFRleHRgLCBhIFtoZWxwIGlubGluZV0oaHR0cHM6Ly9kZXZlbG9wZXIuYmxhY2tiYXVkLmNvbS9za3l1eC9jb21wb25lbnRzL2hlbHAtaW5saW5lKVxuICAgKiBidXR0b24gaXMgYWRkZWQgdG8gZGF0ZSByYW5nZSBwaWNrZXIuIFRoZSBoZWxwIGlubGluZSBidXR0b24gZGlzcGxheXMgYSBbcG9wb3Zlcl0oaHR0cHM6Ly9kZXZlbG9wZXIuYmxhY2tiYXVkLmNvbS9za3l1eC9jb21wb25lbnRzL3BvcG92ZXIpXG4gICAqIHdoZW4gY2xpY2tlZCB1c2luZyB0aGUgc3BlY2lmaWVkIGNvbnRlbnQgYW5kIG9wdGlvbmFsIHRpdGxlLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGhlbHBQb3BvdmVyQ29udGVudDogc3RyaW5nIHwgVGVtcGxhdGVSZWY8dW5rbm93bj4gfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFRoZSB0aXRsZSBvZiB0aGUgaGVscCBwb3BvdmVyLiBUaGlzIHByb3BlcnR5IG9ubHkgYXBwbGllcyB3aGVuIGBoZWxwUG9wb3ZlckNvbnRlbnRgIGlzXG4gICAqIGFsc28gc3BlY2lmaWVkLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGhlbHBQb3BvdmVyVGl0bGU6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogW1BlcnNpc3RlbnQgaW5saW5lIGhlbHAgdGV4dF0oaHR0cHM6Ly9kZXZlbG9wZXIuYmxhY2tiYXVkLmNvbS9za3l1eC9kZXNpZ24vZ3VpZGVsaW5lcy91c2VyLWFzc2lzdGFuY2UjaW5saW5lLWhlbHApIHRoYXQgcHJvdmlkZXNcbiAgICogYWRkaXRpb25hbCBjb250ZXh0IHRvIHRoZSB1c2VyLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGhpbnRUZXh0OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFRoZSBsYWJlbCBmb3IgdGhlIGRhdGUgcmFuZ2UgcGlja2VyLlxuICAgKiBAZGVwcmVjYXRlZCBVc2UgdGhlIGBsYWJlbFRleHRgIGlucHV0IGluc3RlYWQuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGxhYmVsKHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLiNfbGFiZWwgPSB2YWx1ZTtcblxuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy4jbG9nZ2VyLmRlcHJlY2F0ZWQoJ1NreURhdGVSYW5nZVBpY2tlckNvbXBvbmVudC5sYWJlbCcsIHtcbiAgICAgICAgZGVwcmVjYXRpb25NYWpvclZlcnNpb246IDEwLFxuICAgICAgICByZXBsYWNlbWVudFJlY29tbWVuZGF0aW9uOiAnVXNlIHRoZSBgbGFiZWxUZXh0YCBpbnB1dCBpbnN0ZWFkLicsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0IGxhYmVsKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuI19sYWJlbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgdGV4dCB0byBkaXNwbGF5IGFzIHRoZSBkYXRlIHJhbmdlIHBpY2tlcidzIGxhYmVsLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGxhYmVsVGV4dDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBkYXRlIHJhbmdlIHBpY2tlciByZXF1aXJlcyBhIHZhbHVlLlxuICAgKi9cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gIHB1YmxpYyByZXF1aXJlZCA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBkYXRlIHJhbmdlIHBpY2tlciBpcyBzdGFja2VkIG9uIGFub3RoZXIgZm9ybSBjb21wb25lbnQuIFdoZW4gc3BlY2lmaWVkLCB0aGUgYXBwcm9wcmlhdGVcbiAgICogdmVydGljYWwgc3BhY2luZyBpcyBhdXRvbWF0aWNhbGx5IGFkZGVkIHRvIHRoZSBkYXRlIHJhbmdlIHBpY2tlci5cbiAgICovXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KVxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnNreS1tYXJnaW4tc3RhY2tlZC1sZycpXG4gIHB1YmxpYyBzdGFja2VkID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gcmVxdWlyZSB1c2VycyB0byBzcGVjaWZ5IGEgc3RhcnQgZGF0ZS5cbiAgICogQGRlcHJlY2F0ZWQgVXNlIHRoZSBgcmVxdWlyZWRgIGRpcmVjdGl2ZSBvciBBbmd1bGFyJ3MgYFZhbGlkYXRvcnMucmVxdWlyZWRgXG4gICAqIG9uIHRoZSBmb3JtIGNvbnRyb2wgdG8gbWFyayB0aGUgZGF0ZSByYW5nZSBwaWNrZXIgYXMgcmVxdWlyZWQuXG4gICAqL1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgcHVibGljIHN0YXJ0RGF0ZVJlcXVpcmVkID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEEgaGVscCBrZXkgdGhhdCBpZGVudGlmaWVzIHRoZSBnbG9iYWwgaGVscCBjb250ZW50IHRvIGRpc3BsYXkuIFdoZW4gc3BlY2lmaWVkLCBhIFtoZWxwIGlubGluZV0oaHR0cHM6Ly9kZXZlbG9wZXIuYmxhY2tiYXVkLmNvbS9za3l1eC9jb21wb25lbnRzL2hlbHAtaW5saW5lKVxuICAgKiBidXR0b24gaXMgcGxhY2VkIGJlc2lkZSB0aGUgZGF0ZSByYW5nZSBwaWNrZXIgbGFiZWwuIENsaWNraW5nIHRoZSBidXR0b24gaW52b2tlcyBbZ2xvYmFsIGhlbHBdKGh0dHBzOi8vZGV2ZWxvcGVyLmJsYWNrYmF1ZC5jb20vc2t5dXgvbGVhcm4vZGV2ZWxvcC9nbG9iYWwtaGVscClcbiAgICogYXMgY29uZmlndXJlZCBieSB0aGUgYXBwbGljYXRpb24uXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgaGVscEtleTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIEBIb3N0QmluZGluZygnc3R5bGUuZGlzcGxheScpXG4gIHByb3RlY3RlZCBkaXNwbGF5OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgcHJvdGVjdGVkIGNhbGN1bGF0b3JzOiBTa3lEYXRlUmFuZ2VDYWxjdWxhdG9yW10gPSBbXTtcbiAgcHJvdGVjdGVkIGZvcm1Hcm91cDogRm9ybUdyb3VwO1xuICBwcm90ZWN0ZWQgaGFzRXJyb3JzID0gZmFsc2U7XG4gIHByb3RlY3RlZCBob3N0Q29udHJvbDogQWJzdHJhY3RDb250cm9sIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgcHJvdGVjdGVkIHNlbGVjdGVkQ2FsY3VsYXRvcjogU2t5RGF0ZVJhbmdlQ2FsY3VsYXRvcjtcbiAgcHJvdGVjdGVkIHNob3dFbmREYXRlUGlja2VyID0gZmFsc2U7XG4gIHByb3RlY3RlZCBzaG93U3RhcnREYXRlUGlja2VyID0gZmFsc2U7XG5cbiAgZ2V0ICNjYWxjdWxhdG9ySWRDb250cm9sKCk6IEFic3RyYWN0Q29udHJvbDxTa3lEYXRlUmFuZ2VDYWxjdWxhdG9ySWQ+IHtcbiAgICByZXR1cm4gdGhpcy5mb3JtR3JvdXAuZ2V0KFxuICAgICAgJ2NhbGN1bGF0b3JJZCcsXG4gICAgKSBhcyBBYnN0cmFjdENvbnRyb2w8U2t5RGF0ZVJhbmdlQ2FsY3VsYXRvcklkPjtcbiAgfVxuXG4gIGdldCAjZW5kRGF0ZUNvbnRyb2woKTogQWJzdHJhY3RDb250cm9sPERhdGVWYWx1ZT4ge1xuICAgIHJldHVybiB0aGlzLmZvcm1Hcm91cC5nZXQoJ2VuZERhdGUnKSBhcyBBYnN0cmFjdENvbnRyb2w8RGF0ZVZhbHVlPjtcbiAgfVxuXG4gIGdldCAjc3RhcnREYXRlQ29udHJvbCgpOiBBYnN0cmFjdENvbnRyb2w8RGF0ZVZhbHVlPiB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybUdyb3VwLmdldCgnc3RhcnREYXRlJykgYXMgQWJzdHJhY3RDb250cm9sPERhdGVWYWx1ZT47XG4gIH1cblxuICAjX2NhbGN1bGF0b3JJZHMgPSBTS1lfREVGQVVMVF9DQUxDVUxBVE9SX0lEUztcbiAgI19sYWJlbDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAjX3ZhbHVlOiBTa3lEYXRlUmFuZ2VDYWxjdWxhdGlvbjtcbiAgI25nVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICAjbm90aWZ5Q2hhbmdlOiAoKF86IFNreURhdGVSYW5nZUNhbGN1bGF0aW9uKSA9PiB2b2lkKSB8IHVuZGVmaW5lZDtcbiAgI25vdGlmeVRvdWNoZWQ6ICgoKSA9PiB2b2lkKSB8IHVuZGVmaW5lZDtcblxuICByZWFkb25seSAjY2hhbmdlRGV0ZWN0b3IgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuICByZWFkb25seSAjZGF0ZVJhbmdlU3ZjID0gaW5qZWN0KFNreURhdGVSYW5nZVNlcnZpY2UpO1xuICByZWFkb25seSAjaW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpO1xuICByZWFkb25seSAjbGFiZWxUZXh0UmVxdWlyZWRTdmMgPSBpbmplY3QoXG4gICAgU2t5Rm9ybUZpZWxkTGFiZWxUZXh0UmVxdWlyZWRTZXJ2aWNlLFxuICAgIHtcbiAgICAgIG9wdGlvbmFsOiB0cnVlLFxuICAgIH0sXG4gICk7XG4gIHJlYWRvbmx5ICNsb2dnZXIgPSBpbmplY3QoU2t5TG9nU2VydmljZSk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5jYWxjdWxhdG9ycyA9IHRoaXMuI2RhdGVSYW5nZVN2Yy5jYWxjdWxhdG9ycztcbiAgICB0aGlzLnNlbGVjdGVkQ2FsY3VsYXRvciA9IHRoaXMuY2FsY3VsYXRvcnNbMF07XG5cbiAgICBjb25zdCBpbml0aWFsVmFsdWUgPSB0aGlzLiNnZXREZWZhdWx0VmFsdWUodGhpcy5zZWxlY3RlZENhbGN1bGF0b3IpO1xuICAgIHRoaXMuI192YWx1ZSA9IGluaXRpYWxWYWx1ZTtcblxuICAgIHRoaXMuZm9ybUdyb3VwID0gaW5qZWN0KEZvcm1CdWlsZGVyKS5ncm91cCh7XG4gICAgICBjYWxjdWxhdG9ySWQ6IG5ldyBGb3JtQ29udHJvbDxudW1iZXI+KGluaXRpYWxWYWx1ZS5jYWxjdWxhdG9ySWQpLFxuICAgICAgc3RhcnREYXRlOiBuZXcgRm9ybUNvbnRyb2w8RGF0ZVZhbHVlPihpbml0aWFsVmFsdWUuc3RhcnREYXRlKSxcbiAgICAgIGVuZERhdGU6IG5ldyBGb3JtQ29udHJvbDxEYXRlVmFsdWU+KGluaXRpYWxWYWx1ZS5lbmREYXRlKSxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy4jbGFiZWxUZXh0UmVxdWlyZWRTdmMpIHtcbiAgICAgIHRoaXMuI2xhYmVsVGV4dFJlcXVpcmVkU3ZjLnZhbGlkYXRlTGFiZWxUZXh0KFxuICAgICAgICB0aGlzLmxhYmVsVGV4dCB8fCB0aGlzLmxhYmVsLFxuICAgICAgKTtcblxuICAgICAgaWYgKCF0aGlzLmxhYmVsICYmICF0aGlzLmxhYmVsVGV4dCkge1xuICAgICAgICB0aGlzLmRpc3BsYXkgPSAnbm9uZSc7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmhvc3RDb250cm9sID0gdGhpcy4jaW5qZWN0b3IuZ2V0KE5nQ29udHJvbCwgbnVsbCwge1xuICAgICAgb3B0aW9uYWw6IHRydWUsXG4gICAgICBzZWxmOiB0cnVlLFxuICAgIH0pPy5jb250cm9sO1xuXG4gICAgLy8gU2V0IGEgZGVmYXVsdCB2YWx1ZSBvbiB0aGUgY29udHJvbCBpZiBpdCdzIHVuZGVmaW5lZCBvbiBpbml0LlxuICAgIC8vIFdlIG5lZWQgdG8gdXNlIHNldFRpbWVvdXQgdG8gYXZvaWQgaW50ZXJmZXJpbmcgd2l0aCB0aGUgZmlyc3RcbiAgICAvLyB2YWxpZGF0aW9uIGN5Y2xlLlxuICAgIGlmIChpc1BhcnRpYWxWYWx1ZSh0aGlzLmhvc3RDb250cm9sPy52YWx1ZSkpIHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLmhvc3RDb250cm9sPy5zZXRWYWx1ZSh0aGlzLiNnZXRWYWx1ZSgpLCB7XG4gICAgICAgICAgZW1pdEV2ZW50OiBmYWxzZSxcbiAgICAgICAgICBvbmx5U2VsZjogdHJ1ZSxcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBVcGRhdGUgdGhlIHZpZXcgd2hlbiBcInJlcXVpcmVkXCIgb3IgXCJkaXNhYmxlZFwiIHN0YXRlcyBhcmUgY2hhbmdlZCBvbiB0aGVcbiAgICAvLyBob3N0IGNvbnRyb2wuXG4gICAgdGhpcy5ob3N0Q29udHJvbD8uc3RhdHVzQ2hhbmdlc1xuICAgICAgLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoKSwgdGFrZVVudGlsKHRoaXMuI25nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuI2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfSk7XG5cbiAgICAvLyBTdGFydCBsaXN0ZW5pbmcgZm9yIGNoYW5nZXMgYWZ0ZXIgdGhlIGZpcnN0IGNoYW5nZSBkZXRlY3Rpb24gY3ljbGUuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmZvcm1Hcm91cC52YWx1ZUNoYW5nZXNcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoYXJlRGF0ZVJhbmdlc0VxdWFsKSxcbiAgICAgICAgICB0YWtlVW50aWwodGhpcy4jbmdVbnN1YnNjcmliZSksXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSgodmFsdWUpID0+IHtcbiAgICAgICAgICBpZiAoIWlzTnVsbE9yVW5kZWZpbmVkKHZhbHVlPy5jYWxjdWxhdG9ySWQpKSB7XG4gICAgICAgICAgICAvLyBUaGUgc2VsZWN0IGVsZW1lbnQgc2V0cyB0aGUgY2FsY3VsYXRvciBJRCB0byBhIHN0cmluZywgYnV0IHdlXG4gICAgICAgICAgICAvLyBuZWVkIGl0IHRvIGJlIGEgbnVtYmVyLlxuICAgICAgICAgICAgdmFsdWUuY2FsY3VsYXRvcklkID0gK3ZhbHVlLmNhbGN1bGF0b3JJZDtcblxuICAgICAgICAgICAgLy8gSWYgdGhlIGNhbGN1bGF0b3IgSUQgaXMgY2hhbmdlZCwgd2UgbmVlZCB0byByZXNldCB0aGUgc3RhcnQgYW5kXG4gICAgICAgICAgICAvLyBlbmQgZGF0ZSB2YWx1ZXMgYW5kIHdhaXQgdW50aWwgdGhlIG5leHQgdmFsdWVDaGFuZ2VzIGV2ZW50IHRvXG4gICAgICAgICAgICAvLyBub3RpZnkgdGhlIGhvc3QgY29udHJvbC5cbiAgICAgICAgICAgIGlmICh2YWx1ZS5jYWxjdWxhdG9ySWQgIT09IHRoaXMuI2dldFZhbHVlKCkuY2FsY3VsYXRvcklkKSB7XG4gICAgICAgICAgICAgIHRoaXMuI3NldFZhbHVlKFxuICAgICAgICAgICAgICAgIHsgY2FsY3VsYXRvcklkOiB2YWx1ZS5jYWxjdWxhdG9ySWQgfSxcbiAgICAgICAgICAgICAgICB7IGVtaXRFdmVudDogdHJ1ZSB9LFxuICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0aGlzLiNzZXRWYWx1ZSh2YWx1ZSwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgICAgIGNvbnN0IG5ld1ZhbHVlID0gdGhpcy4jZ2V0VmFsdWUoKTtcblxuICAgICAgICAgIC8vIFVwZGF0ZSB0aGUgaG9zdCBjb250cm9sIGlmIHRoZSB2YWx1ZSBpcyBkaWZmZXJlbnQuXG4gICAgICAgICAgaWYgKCFhcmVEYXRlUmFuZ2VzRXF1YWwodGhpcy5ob3N0Q29udHJvbD8udmFsdWUsIG5ld1ZhbHVlKSkge1xuICAgICAgICAgICAgdGhpcy4jbm90aWZ5Q2hhbmdlPy4obmV3VmFsdWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICAvLyBJZiB0aGUgZGF0ZXBpY2tlcnMnIHN0YXR1c2VzIGNoYW5nZSwgd2Ugd2FudCB0byByZXRyaWdnZXIgdGhlIGhvc3RcbiAgICAvLyBjb250cm9sJ3MgdmFsaWRhdGlvbiBzbyB0aGF0IHRoZWlyIGVycm9ycyBhcmUgcmVmbGVjdGVkIGJhY2sgdG8gdGhlIGhvc3QuXG4gICAgbWVyZ2UoXG4gICAgICB0aGlzLiNzdGFydERhdGVDb250cm9sLnN0YXR1c0NoYW5nZXMsXG4gICAgICB0aGlzLiNlbmREYXRlQ29udHJvbC5zdGF0dXNDaGFuZ2VzLFxuICAgIClcbiAgICAgIC5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksIHRha2VVbnRpbCh0aGlzLiNuZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAvLyBVc2UgYSBzZXRUaW1lb3V0IHRvIGF2b2lkIGFuIEV4cHJlc3Npb25DaGFuZ2VkQWZ0ZXJDaGVja2VkIGVycm9yLFxuICAgICAgICAvLyBzaW5jZSBtdWx0aXBsZSBjYWxscyB0byB1cGRhdGVWYWx1ZUFuZFZhbGlkaXR5IGluIHRoZSBzYW1lXG4gICAgICAgIC8vIGN5Y2xlIG1heSBjb2xsaWRlIHdpdGggb25lIGFub3RoZXIuXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuaG9zdENvbnRyb2w/LnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe1xuICAgICAgICAgICAgZW1pdEV2ZW50OiBmYWxzZSxcbiAgICAgICAgICAgIG9ubHlTZWxmOiB0cnVlLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuXG4gICAgdGhpcy4jdXBkYXRlUGlja2VyVmlzaWJpbGl0eSh0aGlzLnNlbGVjdGVkQ2FsY3VsYXRvcik7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgZm9yIHRvdWNoZWQgc3RhdHVzIGluIG5nRG9DaGVjayBzaW5jZSBBbmd1bGFyIGRvZXMgbm90IChjdXJyZW50bHkpXG4gICAqIGhhdmUgYW4gQVBJIHRvIHJlc3BvbmQgdG8gdG91Y2hlZCBzdGF0dXMgY2hhbmdlcyBmcm9tIHRoZSBob3N0IGNvbnRyb2wuXG4gICAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci9pc3N1ZXMvMTc3MzYjaXNzdWVjb21tZW50LTMxMDgxMjM2OFxuICAgKiBUT0RPOiBBbmd1bGFyIDE4IGludHJvZHVjZXMgYSBuZXcgQVBJIHRvIHJlc3BvbmQgdG8gdGhlc2Ugc3RhdHVzZXMuXG4gICAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci9pc3N1ZXMvMTA4ODcjaXNzdWVjb21tZW50LTIwMzUyNjc0MDBcbiAgICovXG4gIHB1YmxpYyBuZ0RvQ2hlY2soKTogdm9pZCB7XG4gICAgY29uc3QgY29udHJvbCA9IHRoaXMuaG9zdENvbnRyb2w7XG4gICAgY29uc3QgdG91Y2hlZCA9IHRoaXMuZm9ybUdyb3VwLnRvdWNoZWQ7XG5cbiAgICBpZiAoY29udHJvbCkge1xuICAgICAgaWYgKGNvbnRyb2wudG91Y2hlZCAmJiAhdG91Y2hlZCkge1xuICAgICAgICB0aGlzLmZvcm1Hcm91cC5tYXJrQWxsQXNUb3VjaGVkKCk7XG4gICAgICAgIHRoaXMuI2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfSBlbHNlIGlmIChjb250cm9sLnVudG91Y2hlZCAmJiB0b3VjaGVkKSB7XG4gICAgICAgIHRoaXMuZm9ybUdyb3VwLm1hcmtBc1VudG91Y2hlZCgpO1xuICAgICAgICB0aGlzLiNjaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5oYXNFcnJvcnMgPSAhIWNvbnRyb2wuZXJyb3JzICYmIChjb250cm9sLnRvdWNoZWQgfHwgY29udHJvbC5kaXJ0eSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuI25nVW5zdWJzY3JpYmUubmV4dCgpO1xuICAgIHRoaXMuI25nVW5zdWJzY3JpYmUuY29tcGxldGUoKTtcbiAgfVxuXG4gIC8vIEltcGxlbWVudGVkIGFzIHBhcnQgb2YgQ29udHJvbFZhbHVlQWNjZXNzb3IuXG4gIHB1YmxpYyByZWdpc3Rlck9uQ2hhbmdlKGZuOiAoXzogdW5rbm93bikgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMuI25vdGlmeUNoYW5nZSA9IGZuO1xuICB9XG5cbiAgLy8gSW1wbGVtZW50ZWQgYXMgcGFydCBvZiBDb250cm9sVmFsdWVBY2Nlc3Nvci5cbiAgcHVibGljIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy4jbm90aWZ5VG91Y2hlZCA9IGZuO1xuICB9XG5cbiAgLy8gSW1wbGVtZW50ZWQgYXMgcGFydCBvZiBDb250cm9sVmFsdWVBY2Nlc3Nvci5cbiAgcHVibGljIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICB9XG5cbiAgLy8gSW1wbGVtZW50ZWQgYXMgcGFydCBvZiBWYWxpZGF0b3IuXG4gIHB1YmxpYyB2YWxpZGF0ZShjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gICAgbGV0IGVycm9yczogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPSBudWxsO1xuXG4gICAgY29uc3QgY2FsY3VsYXRvckVycm9ycyA9IHRoaXMuc2VsZWN0ZWRDYWxjdWxhdG9yLnZhbGlkYXRlKGNvbnRyb2wudmFsdWUpO1xuICAgIGNvbnN0IHN0YXJ0RGF0ZUVycm9ycyA9IHRoaXMuI3N0YXJ0RGF0ZUNvbnRyb2wuZXJyb3JzO1xuICAgIGNvbnN0IGVuZERhdGVFcnJvcnMgPSB0aGlzLiNlbmREYXRlQ29udHJvbC5lcnJvcnM7XG5cbiAgICBpZiAoY2FsY3VsYXRvckVycm9ycykge1xuICAgICAgZXJyb3JzID0ge1xuICAgICAgICBza3lEYXRlUmFuZ2U6IHtcbiAgICAgICAgICBjYWxjdWxhdG9ySWQ6IHRoaXMuI2dldFZhbHVlKCkuY2FsY3VsYXRvcklkLFxuICAgICAgICAgIGVycm9yczogY2FsY3VsYXRvckVycm9ycyxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuc2hvd1N0YXJ0RGF0ZVBpY2tlciAmJiBzdGFydERhdGVFcnJvcnMpIHtcbiAgICAgIGVycm9ycyB8fD0ge307XG4gICAgICBlcnJvcnMgPSB7IC4uLmVycm9ycywgLi4uc3RhcnREYXRlRXJyb3JzIH07XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuc2hvd0VuZERhdGVQaWNrZXIgJiYgZW5kRGF0ZUVycm9ycykge1xuICAgICAgZXJyb3JzIHx8PSB7fTtcbiAgICAgIGVycm9ycyA9IHsgLi4uZXJyb3JzLCAuLi5lbmREYXRlRXJyb3JzIH07XG4gICAgfVxuXG4gICAgLy8gU2V0IGVycm9ycyBvbiB0aGUgY2FsY3VsYXRvciBzZWxlY3Qgc28gdGhhdCB0aGV5IGFwcGVhciBiZW5lYXRoIGl0LlxuICAgIHRoaXMuI2NhbGN1bGF0b3JJZENvbnRyb2wuc2V0RXJyb3JzKGVycm9ycyk7XG4gICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG5cbiAgICByZXR1cm4gZXJyb3JzO1xuICB9XG5cbiAgLy8gSW1wbGVtZW50ZWQgYXMgcGFydCBvZiBDb250cm9sVmFsdWVBY2Nlc3Nvci5cbiAgLy8gVGhlIGRhdGUgcmFuZ2UgcGlja2VyIGFsd2F5cyBoYXMgYSB2YWx1ZSwgc28gaWYgdGhlIGNvbnN1bWVyIHBhc3NlcyBpbiBhXG4gIC8vIHBhcnRpYWwgdmFsdWUgKHZpYSBgcGF0Y2hWYWx1ZWApIG9yIG51bGwsIHdlIG5lZWQgdG8gdXBkYXRlIHRoZSBob3N0IGNvbnRyb2wnc1xuICAvLyB2YWx1ZSB3aXRoIHRoZSBjb21wbGV0ZSB2YWx1ZSBhZnRlciBpdCdzIGJlZW4gbW9kaWZpZWQuXG4gIHB1YmxpYyB3cml0ZVZhbHVlKHZhbHVlOiBQYXJ0aWFsPFNreURhdGVSYW5nZUNhbGN1bGF0aW9uPiB8IHVuZGVmaW5lZCk6IHZvaWQge1xuICAgIHRoaXMuI3BhdGNoVmFsdWUodmFsdWUpO1xuXG4gICAgLy8gVXBkYXRlIHRoZSBob3N0IGNvbnRyb2wgaWYgaXQgaXMgc2V0IHRvIGEgcGFydGlhbCBvciBudWxsIHZhbHVlLlxuICAgIGlmIChpc1BhcnRpYWxWYWx1ZSh2YWx1ZSkpIHtcbiAgICAgIHRoaXMuaG9zdENvbnRyb2w/LnNldFZhbHVlKHRoaXMuI2dldFZhbHVlKCksIHtcbiAgICAgICAgZW1pdEV2ZW50OiBmYWxzZSxcbiAgICAgICAgb25seVNlbGY6IHRydWUsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgaXNSZXF1aXJlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISEoXG4gICAgICB0aGlzLnJlcXVpcmVkIHx8IHRoaXMuaG9zdENvbnRyb2w/Lmhhc1ZhbGlkYXRvcihWYWxpZGF0b3JzLnJlcXVpcmVkKVxuICAgICk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb25CbHVyKCk6IHZvaWQge1xuICAgIHRoaXMuI25vdGlmeVRvdWNoZWQ/LigpO1xuICB9XG5cbiAgI2dldENhbGN1bGF0b3IoY2FsY3VsYXRvcklkOiBudW1iZXIpOiBTa3lEYXRlUmFuZ2VDYWxjdWxhdG9yIHtcbiAgICBjb25zdCBmb3VuZCA9IHRoaXMuY2FsY3VsYXRvcnMuZmluZCgoYykgPT4gYy5jYWxjdWxhdG9ySWQgPT09IGNhbGN1bGF0b3JJZCk7XG5cbiAgICAvKnNhZmV0eSBjaGVjazogc2hvdWxkIG5vdCBoYXBwZW4qL1xuICAgIC8qaXN0YW5idWwgaWdub3JlIGlmKi9cbiAgICBpZiAoIWZvdW5kKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBBIGRhdGUgcmFuZ2UgY2FsY3VsYXRvciB3aXRoIElEICgke2NhbGN1bGF0b3JJZH0pIGNvdWxkIG5vdCBiZSBmb3VuZC5gLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZm91bmQ7XG4gIH1cblxuICAjZ2V0RGVmYXVsdFZhbHVlKFxuICAgIGNhbGN1bGF0b3I6IFNreURhdGVSYW5nZUNhbGN1bGF0b3IsXG4gICk6IFNreURhdGVSYW5nZUNhbGN1bGF0aW9uIHtcbiAgICByZXR1cm4gY2FsY3VsYXRvci5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgI2dldFZhbHVlKCk6IFNreURhdGVSYW5nZUNhbGN1bGF0aW9uIHtcbiAgICByZXR1cm4gdGhpcy4jX3ZhbHVlO1xuICB9XG5cbiAgI3BhdGNoVmFsdWUoXG4gICAgcGFydGlhbFZhbHVlOiBQYXJ0aWFsPFNreURhdGVSYW5nZUNhbGN1bGF0aW9uPiB8IG51bGwgfCB1bmRlZmluZWQsXG4gICk6IHZvaWQge1xuICAgIHRoaXMuI3NldFZhbHVlKFxuICAgICAgaXNOdWxsT3JVbmRlZmluZWQocGFydGlhbFZhbHVlKVxuICAgICAgICA/IG51bGxcbiAgICAgICAgOiB7IC4uLnRoaXMuI2dldFZhbHVlKCksIC4uLnBhcnRpYWxWYWx1ZSB9LFxuICAgICAgeyBlbWl0RXZlbnQ6IHRydWUgfSxcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHZhbHVlIHRvIGJlIHVzZWQgYnkgdGhlIGRhdGUgcmFuZ2UgcGlja2VyIGZvcm0gY29udHJvbC5cbiAgICovXG4gICNzZXRWYWx1ZShcbiAgICB2YWx1ZTogU2t5RGF0ZVJhbmdlQ2FsY3VsYXRpb24gfCBudWxsIHwgdW5kZWZpbmVkLFxuICAgIG9wdGlvbnM6IHsgZW1pdEV2ZW50OiBib29sZWFuIH0sXG4gICk6IHZvaWQge1xuICAgIGNvbnN0IG9sZFZhbHVlID0gdGhpcy4jZ2V0VmFsdWUoKTtcblxuICAgIGNvbnN0IHZhbHVlT3JEZWZhdWx0ID1cbiAgICAgICF2YWx1ZSB8fCBpc051bGxPclVuZGVmaW5lZCh2YWx1ZS5jYWxjdWxhdG9ySWQpXG4gICAgICAgID8gdGhpcy4jZ2V0RGVmYXVsdFZhbHVlKHRoaXMuY2FsY3VsYXRvcnNbMF0pXG4gICAgICAgIDoge1xuICAgICAgICAgICAgLi4udGhpcy4jZ2V0RGVmYXVsdFZhbHVlKHRoaXMuI2dldENhbGN1bGF0b3IodmFsdWUuY2FsY3VsYXRvcklkKSksXG4gICAgICAgICAgICAuLi52YWx1ZSxcbiAgICAgICAgICB9O1xuXG4gICAgLy8gRW5zdXJlIGZhbHN5IHZhbHVlcyBhcmUgc2V0IHRvIG51bGwuXG4gICAgdmFsdWVPckRlZmF1bHQuZW5kRGF0ZSA9IHZhbHVlT3JEZWZhdWx0LmVuZERhdGUgfHwgbnVsbDtcbiAgICB2YWx1ZU9yRGVmYXVsdC5zdGFydERhdGUgPSB2YWx1ZU9yRGVmYXVsdC5zdGFydERhdGUgfHwgbnVsbDtcblxuICAgIGlmICghYXJlRGF0ZVJhbmdlc0VxdWFsKG9sZFZhbHVlLCB2YWx1ZU9yRGVmYXVsdCkpIHtcbiAgICAgIHRoaXMuI192YWx1ZSA9IHZhbHVlT3JEZWZhdWx0O1xuXG4gICAgICB0aGlzLnNlbGVjdGVkQ2FsY3VsYXRvciA9IHRoaXMuI2dldENhbGN1bGF0b3IoXG4gICAgICAgIHZhbHVlT3JEZWZhdWx0LmNhbGN1bGF0b3JJZCxcbiAgICAgICk7XG5cbiAgICAgIGlmIChvbGRWYWx1ZS5jYWxjdWxhdG9ySWQgIT09IHZhbHVlT3JEZWZhdWx0LmNhbGN1bGF0b3JJZCkge1xuICAgICAgICB0aGlzLiN1cGRhdGVQaWNrZXJWaXNpYmlsaXR5KHRoaXMuc2VsZWN0ZWRDYWxjdWxhdG9yKTtcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnM/LmVtaXRFdmVudCkge1xuICAgICAgICB0aGlzLmZvcm1Hcm91cC5zZXRWYWx1ZSh2YWx1ZU9yRGVmYXVsdCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgI3VwZGF0ZVBpY2tlclZpc2liaWxpdHkoY2FsY3VsYXRvcjogU2t5RGF0ZVJhbmdlQ2FsY3VsYXRvcik6IHZvaWQge1xuICAgIGxldCBzaG93RW5kRGF0ZVBpY2tlciA9IGZhbHNlO1xuICAgIGxldCBzaG93U3RhcnREYXRlUGlja2VyID0gZmFsc2U7XG5cbiAgICBzd2l0Y2ggKGNhbGN1bGF0b3IudHlwZSkge1xuICAgICAgY2FzZSBTa3lEYXRlUmFuZ2VDYWxjdWxhdG9yVHlwZS5CZWZvcmU6XG4gICAgICAgIHNob3dFbmREYXRlUGlja2VyID0gdHJ1ZTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgU2t5RGF0ZVJhbmdlQ2FsY3VsYXRvclR5cGUuQWZ0ZXI6XG4gICAgICAgIHNob3dTdGFydERhdGVQaWNrZXIgPSB0cnVlO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBTa3lEYXRlUmFuZ2VDYWxjdWxhdG9yVHlwZS5SYW5nZTpcbiAgICAgICAgc2hvd0VuZERhdGVQaWNrZXIgPSB0cnVlO1xuICAgICAgICBzaG93U3RhcnREYXRlUGlja2VyID0gdHJ1ZTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIHRoaXMuc2hvd0VuZERhdGVQaWNrZXIgPSBzaG93RW5kRGF0ZVBpY2tlcjtcbiAgICB0aGlzLnNob3dTdGFydERhdGVQaWNrZXIgPSBzaG93U3RhcnREYXRlUGlja2VyO1xuICAgIHRoaXMuI2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICB9XG59XG4iLCI8ZGl2XG4gIGNsYXNzPVwic2t5LWRhdGUtcmFuZ2UtcGlja2VyXCJcbiAgW2Zvcm1Hcm91cF09XCJmb3JtR3JvdXBcIlxuICAoZm9jdXNvdXQpPVwib25CbHVyKClcIlxuPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJza3ktZGF0ZS1yYW5nZS1waWNrZXItZm9ybS1ncm91cFwiXG4gICAgW25nQ2xhc3NdPVwie1xuICAgICAgJ3NreS1kYXRlLXJhbmdlLXBpY2tlci1sYXN0LWlucHV0JzpcbiAgICAgICAgIXNob3dTdGFydERhdGVQaWNrZXIgJiYgIXNob3dFbmREYXRlUGlja2VyXG4gICAgfVwiXG4gID5cbiAgICA8c2t5LWlucHV0LWJveFxuICAgICAgW2hhc0Vycm9yc109XCJoYXNFcnJvcnNcIlxuICAgICAgW2hlbHBLZXldPVwiaGVscEtleVwiXG4gICAgICBbaGVscFBvcG92ZXJDb250ZW50XT1cImhlbHBQb3BvdmVyQ29udGVudFwiXG4gICAgICBbaGVscFBvcG92ZXJUaXRsZV09XCJoZWxwUG9wb3ZlclRpdGxlXCJcbiAgICAgIFtoaW50VGV4dF09XCJoaW50VGV4dFwiXG4gICAgICBbbGFiZWxUZXh0XT1cIlxuICAgICAgICBsYWJlbFRleHQgfHxcbiAgICAgICAgbGFiZWwgfHxcbiAgICAgICAgKCdza3l1eF9kYXRlX3JhbmdlX3BpY2tlcl9kZWZhdWx0X2xhYmVsJyB8IHNreUxpYlJlc291cmNlcylcbiAgICAgIFwiXG4gICAgPlxuICAgICAgPHNlbGVjdFxuICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJjYWxjdWxhdG9ySWRcIlxuICAgICAgICBbcmVxdWlyZWRdPVwiaXNSZXF1aXJlZCgpXCJcbiAgICAgICAgKGJsdXIpPVwib25CbHVyKClcIlxuICAgICAgPlxuICAgICAgICA8b3B0aW9uXG4gICAgICAgICAgKm5nRm9yPVwibGV0IGNhbGN1bGF0b3Igb2YgY2FsY3VsYXRvcnNcIlxuICAgICAgICAgIFt2YWx1ZV09XCJjYWxjdWxhdG9yLmNhbGN1bGF0b3JJZFwiXG4gICAgICAgID5cbiAgICAgICAgICB7e1xuICAgICAgICAgICAgY2FsY3VsYXRvci5fc2hvcnREZXNjcmlwdGlvblJlc291cmNlS2V5XG4gICAgICAgICAgICAgID8gKGNhbGN1bGF0b3IuX3Nob3J0RGVzY3JpcHRpb25SZXNvdXJjZUtleSB8IHNreUxpYlJlc291cmNlcylcbiAgICAgICAgICAgICAgOiBjYWxjdWxhdG9yLnNob3J0RGVzY3JpcHRpb25cbiAgICAgICAgICB9fVxuICAgICAgICA8L29wdGlvbj5cbiAgICAgIDwvc2VsZWN0PlxuICAgIDwvc2t5LWlucHV0LWJveD5cbiAgICA8c2t5LWZvcm0tZXJyb3JzXG4gICAgICAqbmdJZj1cImxhYmVsVGV4dCAmJiBob3N0Q29udHJvbD8uZXJyb3JzPy5bJ3NreURhdGVSYW5nZSddXCJcbiAgICAgIFtsYWJlbFRleHRdPVwibGFiZWxUZXh0XCJcbiAgICA+XG4gICAgICA8c2t5LWZvcm0tZXJyb3JcbiAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICBob3N0Q29udHJvbD8uZXJyb3JzPy5bJ3NreURhdGVSYW5nZSddPy5lcnJvcnMuZW5kRGF0ZUJlZm9yZVN0YXJ0RGF0ZVxuICAgICAgICBcIlxuICAgICAgICBbZXJyb3JOYW1lXT1cIidlbmREYXRlQmVmb3JlU3RhcnREYXRlJ1wiXG4gICAgICAgIFtlcnJvclRleHRdPVwiXG4gICAgICAgICAgJ3NreXV4X2RhdGVfcmFuZ2VfcGlja2VyX2VuZF9kYXRlX2JlZm9yZV9zdGFydF9kYXRlX2Vycm9yX2xhYmVsX3RleHQnXG4gICAgICAgICAgICB8IHNreUxpYlJlc291cmNlc1xuICAgICAgICBcIlxuICAgICAgLz5cbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cInNreS1mb3JtLWVycm9yXCIgLz5cbiAgICA8L3NreS1mb3JtLWVycm9ycz5cbiAgPC9kaXY+XG4gIDxkaXZcbiAgICBjbGFzcz1cInNreS1kYXRlLXJhbmdlLXBpY2tlci1mb3JtLWdyb3VwIHNreS1kYXRlLXJhbmdlLWRhdGVwaWNrZXItd3JhcHBlclwiXG4gICAgW2hpZGRlbl09XCIhc2hvd1N0YXJ0RGF0ZVBpY2tlclwiXG4gICAgW25nQ2xhc3NdPVwie1xuICAgICAgJ3NreS1kYXRlLXJhbmdlLXBpY2tlci1sYXN0LWlucHV0JzpcbiAgICAgICAgc2hvd1N0YXJ0RGF0ZVBpY2tlciAmJiAhc2hvd0VuZERhdGVQaWNrZXJcbiAgICB9XCJcbiAgPlxuICAgIDxza3ktaW5wdXQtYm94XG4gICAgICBbZXJyb3JzU2NyZWVuUmVhZGVyT25seV09XCJ0cnVlXCJcbiAgICAgIFtoYXNFcnJvcnNdPVwiaGFzRXJyb3JzXCJcbiAgICAgIFtsYWJlbFRleHRdPVwiXG4gICAgICAgIHNlbGVjdGVkQ2FsY3VsYXRvci50eXBlXG4gICAgICAgICAgfCBza3lEYXRlUmFuZ2VQaWNrZXJTdGFydERhdGVSZXNvdXJjZUtleVxuICAgICAgICAgIHwgc2t5TGliUmVzb3VyY2VzXG4gICAgICBcIlxuICAgID5cbiAgICAgIDxza3ktZGF0ZXBpY2tlcj5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwic3RhcnREYXRlXCJcbiAgICAgICAgICBuYW1lPVwic3RhcnREYXRlXCJcbiAgICAgICAgICBza3lEYXRlcGlja2VySW5wdXRcbiAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJcbiAgICAgICAgICAgIGxhYmVsVGV4dCB8fCBsYWJlbFxuICAgICAgICAgICAgICA/ICgnc2t5dXhfZGF0ZV9yYW5nZV9waWNrZXJfZGVmYXVsdF9hcmlhX2xhYmVsJ1xuICAgICAgICAgICAgICAgIHwgc2t5TGliUmVzb3VyY2VzXG4gICAgICAgICAgICAgICAgICA6IChzZWxlY3RlZENhbGN1bGF0b3IudHlwZVxuICAgICAgICAgICAgICAgICAgICAgIHwgc2t5RGF0ZVJhbmdlUGlja2VyU3RhcnREYXRlUmVzb3VyY2VLZXlcbiAgICAgICAgICAgICAgICAgICAgICB8IHNreUxpYlJlc291cmNlcylcbiAgICAgICAgICAgICAgICAgIDogKGxhYmVsVGV4dCA/IGxhYmVsVGV4dCA6IGxhYmVsKSlcbiAgICAgICAgICAgICAgOiAoc2VsZWN0ZWRDYWxjdWxhdG9yLnR5cGVcbiAgICAgICAgICAgICAgICB8IHNreURhdGVSYW5nZVBpY2tlclN0YXJ0RGF0ZVJlc291cmNlS2V5XG4gICAgICAgICAgICAgICAgfCBza3lMaWJSZXNvdXJjZXMpXG4gICAgICAgICAgXCJcbiAgICAgICAgICBbZGF0ZUZvcm1hdF09XCJkYXRlRm9ybWF0XCJcbiAgICAgICAgICBbcmVxdWlyZWRdPVwiXG4gICAgICAgICAgICBzaG93U3RhcnREYXRlUGlja2VyICYmIChzdGFydERhdGVSZXF1aXJlZCB8fCBpc1JlcXVpcmVkKCkpXG4gICAgICAgICAgXCJcbiAgICAgICAgLz5cbiAgICAgIDwvc2t5LWRhdGVwaWNrZXI+XG4gICAgPC9za3ktaW5wdXQtYm94PlxuICA8L2Rpdj5cbiAgPGRpdlxuICAgIGNsYXNzPVwic2t5LWRhdGUtcmFuZ2UtcGlja2VyLWZvcm0tZ3JvdXAgc2t5LWRhdGUtcmFuZ2UtZGF0ZXBpY2tlci13cmFwcGVyXCJcbiAgICBbaGlkZGVuXT1cIiFzaG93RW5kRGF0ZVBpY2tlclwiXG4gICAgW25nQ2xhc3NdPVwieyAnc2t5LWRhdGUtcmFuZ2UtcGlja2VyLWxhc3QtaW5wdXQnOiBzaG93RW5kRGF0ZVBpY2tlciB9XCJcbiAgPlxuICAgIDxza3ktaW5wdXQtYm94XG4gICAgICBbZXJyb3JzU2NyZWVuUmVhZGVyT25seV09XCJ0cnVlXCJcbiAgICAgIFtoYXNFcnJvcnNdPVwiaGFzRXJyb3JzXCJcbiAgICAgIFtsYWJlbFRleHRdPVwiXG4gICAgICAgIHNlbGVjdGVkQ2FsY3VsYXRvci50eXBlXG4gICAgICAgICAgfCBza3lEYXRlUmFuZ2VQaWNrZXJFbmREYXRlUmVzb3VyY2VLZXlcbiAgICAgICAgICB8IHNreUxpYlJlc291cmNlc1xuICAgICAgXCJcbiAgICA+XG4gICAgICA8c2t5LWRhdGVwaWNrZXI+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImVuZERhdGVcIlxuICAgICAgICAgIG5hbWU9XCJlbmREYXRlXCJcbiAgICAgICAgICBza3lEYXRlcGlja2VySW5wdXRcbiAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJcbiAgICAgICAgICAgIGxhYmVsVGV4dCB8fCBsYWJlbFxuICAgICAgICAgICAgICA/ICgnc2t5dXhfZGF0ZV9yYW5nZV9waWNrZXJfZGVmYXVsdF9hcmlhX2xhYmVsJ1xuICAgICAgICAgICAgICAgIHwgc2t5TGliUmVzb3VyY2VzXG4gICAgICAgICAgICAgICAgICA6IChzZWxlY3RlZENhbGN1bGF0b3IudHlwZVxuICAgICAgICAgICAgICAgICAgICAgIHwgc2t5RGF0ZVJhbmdlUGlja2VyRW5kRGF0ZVJlc291cmNlS2V5XG4gICAgICAgICAgICAgICAgICAgICAgfCBza3lMaWJSZXNvdXJjZXMpXG4gICAgICAgICAgICAgICAgICA6IChsYWJlbFRleHQgPyBsYWJlbFRleHQgOiBsYWJlbCkpXG4gICAgICAgICAgICAgIDogKHNlbGVjdGVkQ2FsY3VsYXRvci50eXBlXG4gICAgICAgICAgICAgICAgfCBza3lEYXRlUmFuZ2VQaWNrZXJFbmREYXRlUmVzb3VyY2VLZXlcbiAgICAgICAgICAgICAgICB8IHNreUxpYlJlc291cmNlcylcbiAgICAgICAgICBcIlxuICAgICAgICAgIFtkYXRlRm9ybWF0XT1cImRhdGVGb3JtYXRcIlxuICAgICAgICAgIFtyZXF1aXJlZF09XCJzaG93RW5kRGF0ZVBpY2tlciAmJiAoZW5kRGF0ZVJlcXVpcmVkIHx8IGlzUmVxdWlyZWQoKSlcIlxuICAgICAgICAvPlxuICAgICAgPC9za3ktZGF0ZXBpY2tlcj5cbiAgICA8L3NreS1pbnB1dC1ib3g+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
466
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1yYW5nZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2RhdGV0aW1lL3NyYy9saWIvbW9kdWxlcy9kYXRlLXJhbmdlLXBpY2tlci9kYXRlLXJhbmdlLXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvZGF0ZXRpbWUvc3JjL2xpYi9tb2R1bGVzL2RhdGUtcmFuZ2UtcGlja2VyL2RhdGUtcmFuZ2UtcGlja2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBRVQsV0FBVyxFQUNYLFFBQVEsRUFDUixLQUFLLEVBSUwsZ0JBQWdCLEVBQ2hCLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBR0wsV0FBVyxFQUNYLFdBQVcsRUFFWCxXQUFXLEVBQ1gsYUFBYSxFQUNiLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsbUJBQW1CLEVBR25CLFVBQVUsR0FDWCxNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDNUMsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixtQkFBbUIsRUFDbkIsb0NBQW9DLEVBQ3BDLGlCQUFpQixHQUNsQixNQUFNLGNBQWMsQ0FBQztBQUV0QixPQUFPLEVBQUUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFdkUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDdEUsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0seUNBQXlD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aUJBQWlCO3dCQUNqQixtQkFBbUI7cUJBQ3BCLGFBQ1U7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGFBQWE7NEJBQ3RCLFdBQVcsNkJBQTZCOzRCQUN4QyxLQUFLLEVBQUUsSUFBSTt5QkFDWjt3QkFDRDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLDZCQUE2Qjs0QkFDeEMsS0FBSyxFQUFFLElBQUk7eUJBQ1o7d0JBQ0QsRUFBRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtxQkFDckQsWUFDUyx1QkFBdUIsY0FDckIsSUFBSTt3REFtQkwsYUFBYTtzQkFEdkIsS0FBSztnQkFpQ0MsVUFBVTtzQkFEaEIsS0FBSztnQkFXSyxRQUFRO3NCQURsQixLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQWUvQixlQUFlO3NCQURyQixLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQVMvQixrQkFBa0I7c0JBRHhCLEtBQUs7Z0JBUUMsZ0JBQWdCO3NCQUR0QixLQUFLO2dCQVFDLFFBQVE7c0JBRGQsS0FBSztnQkFRSyxLQUFLO3NCQURmLEtBQUs7Z0JBb0JDLFNBQVM7c0JBRGYsS0FBSztnQkFPQyxRQUFRO3NCQURkLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBUy9CLE9BQU87c0JBRmIsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTs7c0JBQ3JDLFdBQVc7dUJBQUMsNkJBQTZCO2dCQVNuQyxpQkFBaUI7c0JBRHZCLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBUy9CLE9BQU87c0JBRGIsS0FBSztnQkFJSSxPQUFPO3NCQURoQixXQUFXO3VCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIERvQ2hlY2ssXG4gIEhvc3RCaW5kaW5nLFxuICBJbmplY3RvcixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBUZW1wbGF0ZVJlZixcbiAgYm9vbGVhbkF0dHJpYnV0ZSxcbiAgaW5qZWN0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEFic3RyYWN0Q29udHJvbCxcbiAgQ29udHJvbFZhbHVlQWNjZXNzb3IsXG4gIEZvcm1CdWlsZGVyLFxuICBGb3JtQ29udHJvbCxcbiAgRm9ybUdyb3VwLFxuICBGb3Jtc01vZHVsZSxcbiAgTkdfVkFMSURBVE9SUyxcbiAgTkdfVkFMVUVfQUNDRVNTT1IsXG4gIE5nQ29udHJvbCxcbiAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgVmFsaWRhdGlvbkVycm9ycyxcbiAgVmFsaWRhdG9yLFxuICBWYWxpZGF0b3JzLFxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBTa3lMb2dTZXJ2aWNlIH0gZnJvbSAnQHNreXV4L2NvcmUnO1xuaW1wb3J0IHtcbiAgU0tZX0ZPUk1fRVJST1JTX0VOQUJMRUQsXG4gIFNreUZvcm1FcnJvcnNNb2R1bGUsXG4gIFNreUZvcm1GaWVsZExhYmVsVGV4dFJlcXVpcmVkU2VydmljZSxcbiAgU2t5SW5wdXRCb3hNb2R1bGUsXG59IGZyb20gJ0Bza3l1eC9mb3Jtcyc7XG5cbmltcG9ydCB7IFN1YmplY3QsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBtZXJnZSwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IFNreURhdGVwaWNrZXJNb2R1bGUgfSBmcm9tICcuLi9kYXRlcGlja2VyL2RhdGVwaWNrZXIubW9kdWxlJztcbmltcG9ydCB7IFNreURhdGV0aW1lUmVzb3VyY2VzTW9kdWxlIH0gZnJvbSAnLi4vc2hhcmVkL3NreS1kYXRldGltZS1yZXNvdXJjZXMubW9kdWxlJztcblxuaW1wb3J0IHsgU2t5RGF0ZVJhbmdlUGlja2VyRW5kRGF0ZVJlc291cmNlS2V5UGlwZSB9IGZyb20gJy4vZGF0ZS1yYW5nZS1waWNrZXItZW5kLWRhdGUtcmVzb3VyY2Uta2V5LnBpcGUnO1xuaW1wb3J0IHsgU2t5RGF0ZVJhbmdlUGlja2VyU3RhcnREYXRlUmVzb3VyY2VLZXlQaXBlIH0gZnJvbSAnLi9kYXRlLXJhbmdlLXBpY2tlci1zdGFydC1kYXRlLXJlc291cmNlLWtleS5waXBlJztcbmltcG9ydCB7IFNreURhdGVSYW5nZVNlcnZpY2UgfSBmcm9tICcuL2RhdGUtcmFuZ2Uuc2VydmljZSc7XG5pbXBvcnQgeyBTa3lEYXRlUmFuZ2VDYWxjdWxhdGlvbiB9IGZyb20gJy4vdHlwZXMvZGF0ZS1yYW5nZS1jYWxjdWxhdGlvbic7XG5pbXBvcnQgeyBTa3lEYXRlUmFuZ2VDYWxjdWxhdG9yIH0gZnJvbSAnLi90eXBlcy9kYXRlLXJhbmdlLWNhbGN1bGF0b3InO1xuaW1wb3J0IHsgU2t5RGF0ZVJhbmdlQ2FsY3VsYXRvcklkIH0gZnJvbSAnLi90eXBlcy9kYXRlLXJhbmdlLWNhbGN1bGF0b3ItaWQnO1xuaW1wb3J0IHsgU2t5RGF0ZVJhbmdlQ2FsY3VsYXRvclR5cGUgfSBmcm9tICcuL3R5cGVzL2RhdGUtcmFuZ2UtY2FsY3VsYXRvci10eXBlJztcbmltcG9ydCB7IFNLWV9ERUZBVUxUX0NBTENVTEFUT1JfSURTIH0gZnJvbSAnLi90eXBlcy9kYXRlLXJhbmdlLWRlZmF1bHQtY2FsY3VsYXRvci1jb25maWdzJztcblxudHlwZSBEYXRlVmFsdWUgPSBEYXRlIHwgc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcblxuZnVuY3Rpb24gYXJlRGF0ZVJhbmdlc0VxdWFsKFxuICByYW5nZUE6IFNreURhdGVSYW5nZUNhbGN1bGF0aW9uIHwgdW5kZWZpbmVkLFxuICByYW5nZUI6IFNreURhdGVSYW5nZUNhbGN1bGF0aW9uIHwgdW5kZWZpbmVkLFxuKTogYm9vbGVhbiB7XG4gIHJldHVybiAoXG4gICAgISFyYW5nZUEgJiZcbiAgICAhIXJhbmdlQiAmJlxuICAgIHJhbmdlQS5jYWxjdWxhdG9ySWQgPT09IHJhbmdlQi5jYWxjdWxhdG9ySWQgJiZcbiAgICBhcmVEYXRlc0VxdWFsKHJhbmdlQS5zdGFydERhdGUsIHJhbmdlQi5zdGFydERhdGUpICYmXG4gICAgYXJlRGF0ZXNFcXVhbChyYW5nZUEuZW5kRGF0ZSwgcmFuZ2VCLmVuZERhdGUpXG4gICk7XG59XG5cbmZ1bmN0aW9uIGFyZURhdGVzRXF1YWwoYTogRGF0ZVZhbHVlLCBiOiBEYXRlVmFsdWUpOiBib29sZWFuIHtcbiAgaWYgKHR5cGVvZiBhICE9PSB0eXBlb2YgYikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmICghYSAmJiAhYikge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgaWYgKHR5cGVvZiBhID09PSAnc3RyaW5nJyAmJiBhID09PSBiKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICByZXR1cm4gYSBpbnN0YW5jZW9mIERhdGUgJiYgYiBpbnN0YW5jZW9mIERhdGUgJiYgYS5nZXRUaW1lKCkgPT09IGIuZ2V0VGltZSgpO1xufVxuXG5mdW5jdGlvbiBpc051bGxPclVuZGVmaW5lZCh2YWx1ZTogdW5rbm93bik6IHZhbHVlIGlzIHVuZGVmaW5lZCB8IG51bGwge1xuICByZXR1cm4gdmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gbnVsbDtcbn1cblxuZnVuY3Rpb24gaXNQYXJ0aWFsVmFsdWUoXG4gIHZhbHVlOiBQYXJ0aWFsPFNreURhdGVSYW5nZUNhbGN1bGF0aW9uPiB8IG51bGwgfCB1bmRlZmluZWQsXG4pOiB2YWx1ZSBpcyBQYXJ0aWFsPFNreURhdGVSYW5nZUNhbGN1bGF0aW9uPiB8IG51bGwgfCB1bmRlZmluZWQge1xuICByZXR1cm4gKFxuICAgIGlzTnVsbE9yVW5kZWZpbmVkKHZhbHVlKSB8fFxuICAgIGlzTnVsbE9yVW5kZWZpbmVkKHZhbHVlLmNhbGN1bGF0b3JJZCkgfHxcbiAgICAhKCdlbmREYXRlJyBpbiB2YWx1ZSkgfHxcbiAgICAhKCdzdGFydERhdGUnIGluIHZhbHVlKVxuICApO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBTa3lEYXRlcGlja2VyTW9kdWxlLFxuICAgIFNreURhdGVSYW5nZVBpY2tlckVuZERhdGVSZXNvdXJjZUtleVBpcGUsXG4gICAgU2t5RGF0ZVJhbmdlUGlja2VyU3RhcnREYXRlUmVzb3VyY2VLZXlQaXBlLFxuICAgIFNreURhdGV0aW1lUmVzb3VyY2VzTW9kdWxlLFxuICAgIFNreUlucHV0Qm94TW9kdWxlLFxuICAgIFNreUZvcm1FcnJvcnNNb2R1bGUsXG4gIF0sXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTElEQVRPUlMsXG4gICAgICB1c2VFeGlzdGluZzogU2t5RGF0ZVJhbmdlUGlja2VyQ29tcG9uZW50LFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBTa3lEYXRlUmFuZ2VQaWNrZXJDb21wb25lbnQsXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9LFxuICAgIHsgcHJvdmlkZTogU0tZX0ZPUk1fRVJST1JTX0VOQUJMRUQsIHVzZVZhbHVlOiB0cnVlIH0sXG4gIF0sXG4gIHNlbGVjdG9yOiAnc2t5LWRhdGUtcmFuZ2UtcGlja2VyJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgc3R5bGVVcmw6ICcuL2RhdGUtcmFuZ2UtcGlja2VyLmNvbXBvbmVudC5zY3NzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2RhdGUtcmFuZ2UtcGlja2VyLmNvbXBvbmVudC5odG1sJyxcbn0pXG5leHBvcnQgY2xhc3MgU2t5RGF0ZVJhbmdlUGlja2VyQ29tcG9uZW50XG4gIGltcGxlbWVudHNcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxuICAgIERvQ2hlY2ssXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBWYWxpZGF0b3JcbntcbiAgLyoqXG4gICAqIElEcyBmb3IgdGhlIGRhdGUgcmFuZ2Ugb3B0aW9ucyB0byBpbmNsdWRlIGluIHRoZSBwaWNrZXIncyBkcm9wZG93bi5cbiAgICogVGhlIG9wdGlvbnMgc3BlY2lmeSBjYWxjdWxhdG9yIG9iamVjdHMgdGhhdCByZXR1cm4gdHdvIGBEYXRlYCBvYmplY3RzIHRvIHJlcHJlc2VudCBkYXRlIHJhbmdlcy5cbiAgICogQnkgZGVmYXVsdCwgdGhpcyBwcm9wZXJ0eSBpbmNsdWRlcyBhbGwgYFNreURhdGVSYW5nZUNhbGN1bGF0b3JJZGAgdmFsdWVzLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBjYWxjdWxhdG9ySWRzKFxuICAgIGNhbGN1bGF0b3JJZHM6IFNreURhdGVSYW5nZUNhbGN1bGF0b3JJZFtdIHwgdW5kZWZpbmVkLFxuICApIHtcbiAgICBjb25zdCBjdXJyZW50Q2FsY3VsYXRvcklkID0gdGhpcy4jZ2V0VmFsdWUoKS5jYWxjdWxhdG9ySWQ7XG5cbiAgICB0aGlzLiNfY2FsY3VsYXRvcklkcyA9IGNhbGN1bGF0b3JJZHMgPz8gU0tZX0RFRkFVTFRfQ0FMQ1VMQVRPUl9JRFM7XG4gICAgdGhpcy5jYWxjdWxhdG9ycyA9IHRoaXMuI2RhdGVSYW5nZVN2Yy5maWx0ZXJDYWxjdWxhdG9ycyhcbiAgICAgIHRoaXMuI19jYWxjdWxhdG9ySWRzLFxuICAgICk7XG5cbiAgICAvLyBJZiB0aGUgY3VycmVudGx5IHNlbGVjdGVkIGNhbGN1bGF0b3IgaXNuJ3QgYXZhaWxhYmxlIGFueW1vcmUsXG4gICAgLy8gc2VsZWN0IHRoZSBmaXJzdCBjYWxjdWxhdG9yIGluIHRoZSBuZXcgYXJyYXkuXG4gICAgaWYgKCF0aGlzLiNfY2FsY3VsYXRvcklkcy5pbmNsdWRlcyhjdXJyZW50Q2FsY3VsYXRvcklkKSkge1xuICAgICAgdGhpcy4jc2V0VmFsdWUoXG4gICAgICAgIHsgY2FsY3VsYXRvcklkOiB0aGlzLmNhbGN1bGF0b3JJZHNbMF0gfSxcbiAgICAgICAgeyBlbWl0RXZlbnQ6IHRydWUgfSxcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldCBjYWxjdWxhdG9ySWRzKCk6IFNreURhdGVSYW5nZUNhbGN1bGF0b3JJZFtdIHtcbiAgICByZXR1cm4gdGhpcy4jX2NhbGN1bGF0b3JJZHM7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGRhdGUgZm9ybWF0IGZvclxuICAgKiBbdGhlIGBza3ktZGF0ZXBpY2tlcmAgY29tcG9uZW50c10oaHR0cHM6Ly9kZXZlbG9wZXIuYmxhY2tiYXVkLmNvbS9za3l1eC9jb21wb25lbnRzL2RhdGVwaWNrZXIpXG4gICAqIHRoYXQgbWFrZSB1cCB0aGUgZGF0ZSByYW5nZSBwaWNrZXIuIFRoZSB0ZXh0IGlucHV0IGlzIGEgY29tcG9zaXRlIGNvbXBvbmVudCBvZlxuICAgKiB1cCB0byB0d28gYHNreS1kYXRlcGlja2VyYCBjb21wb25lbnRzLlxuICAgKiBAZGVmYXVsdCBcIk1NL0REL1lZWVlcIlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGRhdGVGb3JtYXQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogV2hldGhlciB0byBkaXNhYmxlIHRoZSBkYXRlIHJhbmdlIHBpY2tlciBvbiB0ZW1wbGF0ZS1kcml2ZW4gZm9ybXMuIERvbid0IHVzZVxuICAgKiB0aGlzIGlucHV0IG9uIHJlYWN0aXZlIGZvcm1zIGJlY2F1c2UgdGhleSBtYXkgb3ZlcndyaXRlIHRoZSBpbnB1dCBvciBsZWF2ZVxuICAgKiB0aGUgY29udHJvbCBvdXQgb2Ygc3luYy4gVG8gc2V0IHRoZSBkaXNhYmxlZCBzdGF0ZSBvbiByZWFjdGl2ZSBmb3JtcyxcbiAgICogdXNlIHRoZSBgRm9ybUNvbnRyb2xgIGluc3RlYWQuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgcHVibGljIHNldCBkaXNhYmxlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy5mb3JtR3JvdXAuZGlzYWJsZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZvcm1Hcm91cC5lbmFibGUoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0byByZXF1aXJlIHVzZXJzIHRvIHNwZWNpZnkgYSBlbmQgZGF0ZS5cbiAgICogQGRlcHJlY2F0ZWQgVXNlIHRoZSBgcmVxdWlyZWRgIGRpcmVjdGl2ZSBvciBBbmd1bGFyJ3MgYFZhbGlkYXRvcnMucmVxdWlyZWRgXG4gICAqIG9uIHRoZSBmb3JtIGNvbnRyb2wgdG8gbWFyayB0aGUgZGF0ZSByYW5nZSBwaWNrZXIgYXMgcmVxdWlyZWQuXG4gICAqL1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgcHVibGljIGVuZERhdGVSZXF1aXJlZCA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBUaGUgY29udGVudCBvZiB0aGUgaGVscCBwb3BvdmVyLiBXaGVuIHNwZWNpZmllZCBhbG9uZyB3aXRoIGBsYWJlbFRleHRgLCBhIFtoZWxwIGlubGluZV0oaHR0cHM6Ly9kZXZlbG9wZXIuYmxhY2tiYXVkLmNvbS9za3l1eC9jb21wb25lbnRzL2hlbHAtaW5saW5lKVxuICAgKiBidXR0b24gaXMgYWRkZWQgdG8gZGF0ZSByYW5nZSBwaWNrZXIuIFRoZSBoZWxwIGlubGluZSBidXR0b24gZGlzcGxheXMgYSBbcG9wb3Zlcl0oaHR0cHM6Ly9kZXZlbG9wZXIuYmxhY2tiYXVkLmNvbS9za3l1eC9jb21wb25lbnRzL3BvcG92ZXIpXG4gICAqIHdoZW4gY2xpY2tlZCB1c2luZyB0aGUgc3BlY2lmaWVkIGNvbnRlbnQgYW5kIG9wdGlvbmFsIHRpdGxlLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGhlbHBQb3BvdmVyQ29udGVudDogc3RyaW5nIHwgVGVtcGxhdGVSZWY8dW5rbm93bj4gfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFRoZSB0aXRsZSBvZiB0aGUgaGVscCBwb3BvdmVyLiBUaGlzIHByb3BlcnR5IG9ubHkgYXBwbGllcyB3aGVuIGBoZWxwUG9wb3ZlckNvbnRlbnRgIGlzXG4gICAqIGFsc28gc3BlY2lmaWVkLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGhlbHBQb3BvdmVyVGl0bGU6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogW1BlcnNpc3RlbnQgaW5saW5lIGhlbHAgdGV4dF0oaHR0cHM6Ly9kZXZlbG9wZXIuYmxhY2tiYXVkLmNvbS9za3l1eC9kZXNpZ24vZ3VpZGVsaW5lcy91c2VyLWFzc2lzdGFuY2UjaW5saW5lLWhlbHApIHRoYXQgcHJvdmlkZXNcbiAgICogYWRkaXRpb25hbCBjb250ZXh0IHRvIHRoZSB1c2VyLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGhpbnRUZXh0OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFRoZSBsYWJlbCBmb3IgdGhlIGRhdGUgcmFuZ2UgcGlja2VyLlxuICAgKiBAZGVwcmVjYXRlZCBVc2UgdGhlIGBsYWJlbFRleHRgIGlucHV0IGluc3RlYWQuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGxhYmVsKHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLiNfbGFiZWwgPSB2YWx1ZTtcblxuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy4jbG9nZ2VyLmRlcHJlY2F0ZWQoJ1NreURhdGVSYW5nZVBpY2tlckNvbXBvbmVudC5sYWJlbCcsIHtcbiAgICAgICAgZGVwcmVjYXRpb25NYWpvclZlcnNpb246IDEwLFxuICAgICAgICByZXBsYWNlbWVudFJlY29tbWVuZGF0aW9uOiAnVXNlIHRoZSBgbGFiZWxUZXh0YCBpbnB1dCBpbnN0ZWFkLicsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0IGxhYmVsKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuI19sYWJlbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgdGV4dCB0byBkaXNwbGF5IGFzIHRoZSBkYXRlIHJhbmdlIHBpY2tlcidzIGxhYmVsLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGxhYmVsVGV4dDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBkYXRlIHJhbmdlIHBpY2tlciByZXF1aXJlcyBhIHZhbHVlLlxuICAgKi9cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gIHB1YmxpYyByZXF1aXJlZCA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBkYXRlIHJhbmdlIHBpY2tlciBpcyBzdGFja2VkIG9uIGFub3RoZXIgZm9ybSBjb21wb25lbnQuIFdoZW4gc3BlY2lmaWVkLCB0aGUgYXBwcm9wcmlhdGVcbiAgICogdmVydGljYWwgc3BhY2luZyBpcyBhdXRvbWF0aWNhbGx5IGFkZGVkIHRvIHRoZSBkYXRlIHJhbmdlIHBpY2tlci5cbiAgICovXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KVxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnNreS1tYXJnaW4tc3RhY2tlZC1sZycpXG4gIHB1YmxpYyBzdGFja2VkID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gcmVxdWlyZSB1c2VycyB0byBzcGVjaWZ5IGEgc3RhcnQgZGF0ZS5cbiAgICogQGRlcHJlY2F0ZWQgVXNlIHRoZSBgcmVxdWlyZWRgIGRpcmVjdGl2ZSBvciBBbmd1bGFyJ3MgYFZhbGlkYXRvcnMucmVxdWlyZWRgXG4gICAqIG9uIHRoZSBmb3JtIGNvbnRyb2wgdG8gbWFyayB0aGUgZGF0ZSByYW5nZSBwaWNrZXIgYXMgcmVxdWlyZWQuXG4gICAqL1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgcHVibGljIHN0YXJ0RGF0ZVJlcXVpcmVkID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEEgaGVscCBrZXkgdGhhdCBpZGVudGlmaWVzIHRoZSBnbG9iYWwgaGVscCBjb250ZW50IHRvIGRpc3BsYXkuIFdoZW4gc3BlY2lmaWVkLCBhIFtoZWxwIGlubGluZV0oaHR0cHM6Ly9kZXZlbG9wZXIuYmxhY2tiYXVkLmNvbS9za3l1eC9jb21wb25lbnRzL2hlbHAtaW5saW5lKVxuICAgKiBidXR0b24gaXMgcGxhY2VkIGJlc2lkZSB0aGUgZGF0ZSByYW5nZSBwaWNrZXIgbGFiZWwuIENsaWNraW5nIHRoZSBidXR0b24gaW52b2tlcyBbZ2xvYmFsIGhlbHBdKGh0dHBzOi8vZGV2ZWxvcGVyLmJsYWNrYmF1ZC5jb20vc2t5dXgvbGVhcm4vZGV2ZWxvcC9nbG9iYWwtaGVscClcbiAgICogYXMgY29uZmlndXJlZCBieSB0aGUgYXBwbGljYXRpb24uXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgaGVscEtleTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIEBIb3N0QmluZGluZygnc3R5bGUuZGlzcGxheScpXG4gIHByb3RlY3RlZCBkaXNwbGF5OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgcHJvdGVjdGVkIGNhbGN1bGF0b3JzOiBTa3lEYXRlUmFuZ2VDYWxjdWxhdG9yW10gPSBbXTtcbiAgcHJvdGVjdGVkIGZvcm1Hcm91cDogRm9ybUdyb3VwO1xuICBwcm90ZWN0ZWQgaGFzRXJyb3JzID0gZmFsc2U7XG4gIHByb3RlY3RlZCBob3N0Q29udHJvbDogQWJzdHJhY3RDb250cm9sIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgcHJvdGVjdGVkIHNlbGVjdGVkQ2FsY3VsYXRvcjogU2t5RGF0ZVJhbmdlQ2FsY3VsYXRvcjtcbiAgcHJvdGVjdGVkIHNob3dFbmREYXRlUGlja2VyID0gZmFsc2U7XG4gIHByb3RlY3RlZCBzaG93U3RhcnREYXRlUGlja2VyID0gZmFsc2U7XG5cbiAgZ2V0ICNjYWxjdWxhdG9ySWRDb250cm9sKCk6IEFic3RyYWN0Q29udHJvbDxTa3lEYXRlUmFuZ2VDYWxjdWxhdG9ySWQ+IHtcbiAgICByZXR1cm4gdGhpcy5mb3JtR3JvdXAuZ2V0KFxuICAgICAgJ2NhbGN1bGF0b3JJZCcsXG4gICAgKSBhcyBBYnN0cmFjdENvbnRyb2w8U2t5RGF0ZVJhbmdlQ2FsY3VsYXRvcklkPjtcbiAgfVxuXG4gIGdldCAjZW5kRGF0ZUNvbnRyb2woKTogQWJzdHJhY3RDb250cm9sPERhdGVWYWx1ZT4ge1xuICAgIHJldHVybiB0aGlzLmZvcm1Hcm91cC5nZXQoJ2VuZERhdGUnKSBhcyBBYnN0cmFjdENvbnRyb2w8RGF0ZVZhbHVlPjtcbiAgfVxuXG4gIGdldCAjc3RhcnREYXRlQ29udHJvbCgpOiBBYnN0cmFjdENvbnRyb2w8RGF0ZVZhbHVlPiB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybUdyb3VwLmdldCgnc3RhcnREYXRlJykgYXMgQWJzdHJhY3RDb250cm9sPERhdGVWYWx1ZT47XG4gIH1cblxuICAjX2NhbGN1bGF0b3JJZHMgPSBTS1lfREVGQVVMVF9DQUxDVUxBVE9SX0lEUztcbiAgI19sYWJlbDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAjX3ZhbHVlOiBTa3lEYXRlUmFuZ2VDYWxjdWxhdGlvbjtcbiAgI25nVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICAjbm90aWZ5Q2hhbmdlOiAoKF86IFNreURhdGVSYW5nZUNhbGN1bGF0aW9uKSA9PiB2b2lkKSB8IHVuZGVmaW5lZDtcbiAgI25vdGlmeVRvdWNoZWQ6ICgoKSA9PiB2b2lkKSB8IHVuZGVmaW5lZDtcblxuICByZWFkb25seSAjY2hhbmdlRGV0ZWN0b3IgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuICByZWFkb25seSAjZGF0ZVJhbmdlU3ZjID0gaW5qZWN0KFNreURhdGVSYW5nZVNlcnZpY2UpO1xuICByZWFkb25seSAjaW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpO1xuICByZWFkb25seSAjbGFiZWxUZXh0UmVxdWlyZWRTdmMgPSBpbmplY3QoXG4gICAgU2t5Rm9ybUZpZWxkTGFiZWxUZXh0UmVxdWlyZWRTZXJ2aWNlLFxuICAgIHtcbiAgICAgIG9wdGlvbmFsOiB0cnVlLFxuICAgIH0sXG4gICk7XG4gIHJlYWRvbmx5ICNsb2dnZXIgPSBpbmplY3QoU2t5TG9nU2VydmljZSk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5jYWxjdWxhdG9ycyA9IHRoaXMuI2RhdGVSYW5nZVN2Yy5jYWxjdWxhdG9ycztcbiAgICB0aGlzLnNlbGVjdGVkQ2FsY3VsYXRvciA9IHRoaXMuY2FsY3VsYXRvcnNbMF07XG5cbiAgICBjb25zdCBpbml0aWFsVmFsdWUgPSB0aGlzLiNnZXREZWZhdWx0VmFsdWUodGhpcy5zZWxlY3RlZENhbGN1bGF0b3IpO1xuICAgIHRoaXMuI192YWx1ZSA9IGluaXRpYWxWYWx1ZTtcblxuICAgIHRoaXMuZm9ybUdyb3VwID0gaW5qZWN0KEZvcm1CdWlsZGVyKS5ncm91cCh7XG4gICAgICBjYWxjdWxhdG9ySWQ6IG5ldyBGb3JtQ29udHJvbDxudW1iZXI+KGluaXRpYWxWYWx1ZS5jYWxjdWxhdG9ySWQpLFxuICAgICAgc3RhcnREYXRlOiBuZXcgRm9ybUNvbnRyb2w8RGF0ZVZhbHVlPihpbml0aWFsVmFsdWUuc3RhcnREYXRlKSxcbiAgICAgIGVuZERhdGU6IG5ldyBGb3JtQ29udHJvbDxEYXRlVmFsdWU+KGluaXRpYWxWYWx1ZS5lbmREYXRlKSxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy4jbGFiZWxUZXh0UmVxdWlyZWRTdmMpIHtcbiAgICAgIHRoaXMuI2xhYmVsVGV4dFJlcXVpcmVkU3ZjLnZhbGlkYXRlTGFiZWxUZXh0KFxuICAgICAgICB0aGlzLmxhYmVsVGV4dCB8fCB0aGlzLmxhYmVsLFxuICAgICAgKTtcblxuICAgICAgaWYgKCF0aGlzLmxhYmVsICYmICF0aGlzLmxhYmVsVGV4dCkge1xuICAgICAgICB0aGlzLmRpc3BsYXkgPSAnbm9uZSc7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmhvc3RDb250cm9sID0gdGhpcy4jaW5qZWN0b3IuZ2V0KE5nQ29udHJvbCwgbnVsbCwge1xuICAgICAgb3B0aW9uYWw6IHRydWUsXG4gICAgICBzZWxmOiB0cnVlLFxuICAgIH0pPy5jb250cm9sO1xuXG4gICAgLy8gU2V0IGEgZGVmYXVsdCB2YWx1ZSBvbiB0aGUgY29udHJvbCBpZiBpdCdzIHVuZGVmaW5lZCBvbiBpbml0LlxuICAgIC8vIFdlIG5lZWQgdG8gdXNlIHNldFRpbWVvdXQgdG8gYXZvaWQgaW50ZXJmZXJpbmcgd2l0aCB0aGUgZmlyc3RcbiAgICAvLyB2YWxpZGF0aW9uIGN5Y2xlLlxuICAgIGlmIChpc1BhcnRpYWxWYWx1ZSh0aGlzLmhvc3RDb250cm9sPy52YWx1ZSkpIHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLmhvc3RDb250cm9sPy5zZXRWYWx1ZSh0aGlzLiNnZXRWYWx1ZSgpLCB7XG4gICAgICAgICAgZW1pdEV2ZW50OiBmYWxzZSxcbiAgICAgICAgICBvbmx5U2VsZjogdHJ1ZSxcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBVcGRhdGUgdGhlIHZpZXcgd2hlbiBcInJlcXVpcmVkXCIgb3IgXCJkaXNhYmxlZFwiIHN0YXRlcyBhcmUgY2hhbmdlZCBvbiB0aGVcbiAgICAvLyBob3N0IGNvbnRyb2wuXG4gICAgdGhpcy5ob3N0Q29udHJvbD8uc3RhdHVzQ2hhbmdlc1xuICAgICAgLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoKSwgdGFrZVVudGlsKHRoaXMuI25nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuI2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfSk7XG5cbiAgICAvLyBTdGFydCBsaXN0ZW5pbmcgZm9yIGNoYW5nZXMgYWZ0ZXIgdGhlIGZpcnN0IGNoYW5nZSBkZXRlY3Rpb24gY3ljbGUuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmZvcm1Hcm91cC52YWx1ZUNoYW5nZXNcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoYXJlRGF0ZVJhbmdlc0VxdWFsKSxcbiAgICAgICAgICB0YWtlVW50aWwodGhpcy4jbmdVbnN1YnNjcmliZSksXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSgodmFsdWUpID0+IHtcbiAgICAgICAgICBpZiAoIWlzTnVsbE9yVW5kZWZpbmVkKHZhbHVlPy5jYWxjdWxhdG9ySWQpKSB7XG4gICAgICAgICAgICAvLyBUaGUgc2VsZWN0IGVsZW1lbnQgc2V0cyB0aGUgY2FsY3VsYXRvciBJRCB0byBhIHN0cmluZywgYnV0IHdlXG4gICAgICAgICAgICAvLyBuZWVkIGl0IHRvIGJlIGEgbnVtYmVyLlxuICAgICAgICAgICAgdmFsdWUuY2FsY3VsYXRvcklkID0gK3ZhbHVlLmNhbGN1bGF0b3JJZDtcblxuICAgICAgICAgICAgLy8gSWYgdGhlIGNhbGN1bGF0b3IgSUQgaXMgY2hhbmdlZCwgd2UgbmVlZCB0byByZXNldCB0aGUgc3RhcnQgYW5kXG4gICAgICAgICAgICAvLyBlbmQgZGF0ZSB2YWx1ZXMgYW5kIHdhaXQgdW50aWwgdGhlIG5leHQgdmFsdWVDaGFuZ2VzIGV2ZW50IHRvXG4gICAgICAgICAgICAvLyBub3RpZnkgdGhlIGhvc3QgY29udHJvbC5cbiAgICAgICAgICAgIGlmICh2YWx1ZS5jYWxjdWxhdG9ySWQgIT09IHRoaXMuI2dldFZhbHVlKCkuY2FsY3VsYXRvcklkKSB7XG4gICAgICAgICAgICAgIHRoaXMuI3NldFZhbHVlKFxuICAgICAgICAgICAgICAgIHsgY2FsY3VsYXRvcklkOiB2YWx1ZS5jYWxjdWxhdG9ySWQgfSxcbiAgICAgICAgICAgICAgICB7IGVtaXRFdmVudDogdHJ1ZSB9LFxuICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0aGlzLiNzZXRWYWx1ZSh2YWx1ZSwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgICAgICAgIGNvbnN0IG5ld1ZhbHVlID0gdGhpcy4jZ2V0VmFsdWUoKTtcblxuICAgICAgICAgIC8vIFVwZGF0ZSB0aGUgaG9zdCBjb250cm9sIGlmIHRoZSB2YWx1ZSBpcyBkaWZmZXJlbnQuXG4gICAgICAgICAgaWYgKCFhcmVEYXRlUmFuZ2VzRXF1YWwodGhpcy5ob3N0Q29udHJvbD8udmFsdWUsIG5ld1ZhbHVlKSkge1xuICAgICAgICAgICAgdGhpcy4jbm90aWZ5Q2hhbmdlPy4obmV3VmFsdWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICAvLyBJZiB0aGUgZGF0ZXBpY2tlcnMnIHN0YXR1c2VzIGNoYW5nZSwgd2Ugd2FudCB0byByZXRyaWdnZXIgdGhlIGhvc3RcbiAgICAvLyBjb250cm9sJ3MgdmFsaWRhdGlvbiBzbyB0aGF0IHRoZWlyIGVycm9ycyBhcmUgcmVmbGVjdGVkIGJhY2sgdG8gdGhlIGhvc3QuXG4gICAgbWVyZ2UoXG4gICAgICB0aGlzLiNzdGFydERhdGVDb250cm9sLnN0YXR1c0NoYW5nZXMsXG4gICAgICB0aGlzLiNlbmREYXRlQ29udHJvbC5zdGF0dXNDaGFuZ2VzLFxuICAgIClcbiAgICAgIC5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksIHRha2VVbnRpbCh0aGlzLiNuZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAvLyBVc2UgYSBzZXRUaW1lb3V0IHRvIGF2b2lkIGFuIEV4cHJlc3Npb25DaGFuZ2VkQWZ0ZXJDaGVja2VkIGVycm9yLFxuICAgICAgICAvLyBzaW5jZSBtdWx0aXBsZSBjYWxscyB0byB1cGRhdGVWYWx1ZUFuZFZhbGlkaXR5IGluIHRoZSBzYW1lXG4gICAgICAgIC8vIGN5Y2xlIG1heSBjb2xsaWRlIHdpdGggb25lIGFub3RoZXIuXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuaG9zdENvbnRyb2w/LnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoe1xuICAgICAgICAgICAgZW1pdEV2ZW50OiBmYWxzZSxcbiAgICAgICAgICAgIG9ubHlTZWxmOiB0cnVlLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuXG4gICAgdGhpcy4jdXBkYXRlUGlja2VyVmlzaWJpbGl0eSh0aGlzLnNlbGVjdGVkQ2FsY3VsYXRvcik7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgZm9yIHRvdWNoZWQgc3RhdHVzIGluIG5nRG9DaGVjayBzaW5jZSBBbmd1bGFyIGRvZXMgbm90IChjdXJyZW50bHkpXG4gICAqIGhhdmUgYW4gQVBJIHRvIHJlc3BvbmQgdG8gdG91Y2hlZCBzdGF0dXMgY2hhbmdlcyBmcm9tIHRoZSBob3N0IGNvbnRyb2wuXG4gICAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci9pc3N1ZXMvMTc3MzYjaXNzdWVjb21tZW50LTMxMDgxMjM2OFxuICAgKiBUT0RPOiBBbmd1bGFyIDE4IGludHJvZHVjZXMgYSBuZXcgQVBJIHRvIHJlc3BvbmQgdG8gdGhlc2Ugc3RhdHVzZXMuXG4gICAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci9pc3N1ZXMvMTA4ODcjaXNzdWVjb21tZW50LTIwMzUyNjc0MDBcbiAgICovXG4gIHB1YmxpYyBuZ0RvQ2hlY2soKTogdm9pZCB7XG4gICAgY29uc3QgY29udHJvbCA9IHRoaXMuaG9zdENvbnRyb2w7XG4gICAgY29uc3QgdG91Y2hlZCA9IHRoaXMuZm9ybUdyb3VwLnRvdWNoZWQ7XG5cbiAgICBpZiAoY29udHJvbCkge1xuICAgICAgaWYgKGNvbnRyb2wudG91Y2hlZCAmJiAhdG91Y2hlZCkge1xuICAgICAgICB0aGlzLmZvcm1Hcm91cC5tYXJrQWxsQXNUb3VjaGVkKCk7XG4gICAgICAgIHRoaXMuI2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfSBlbHNlIGlmIChjb250cm9sLnVudG91Y2hlZCAmJiB0b3VjaGVkKSB7XG4gICAgICAgIHRoaXMuZm9ybUdyb3VwLm1hcmtBc1VudG91Y2hlZCgpO1xuICAgICAgICB0aGlzLiNjaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5oYXNFcnJvcnMgPSAhIWNvbnRyb2wuZXJyb3JzICYmIChjb250cm9sLnRvdWNoZWQgfHwgY29udHJvbC5kaXJ0eSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuI25nVW5zdWJzY3JpYmUubmV4dCgpO1xuICAgIHRoaXMuI25nVW5zdWJzY3JpYmUuY29tcGxldGUoKTtcbiAgfVxuXG4gIC8vIEltcGxlbWVudGVkIGFzIHBhcnQgb2YgQ29udHJvbFZhbHVlQWNjZXNzb3IuXG4gIHB1YmxpYyByZWdpc3Rlck9uQ2hhbmdlKGZuOiAoXzogdW5rbm93bikgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMuI25vdGlmeUNoYW5nZSA9IGZuO1xuICB9XG5cbiAgLy8gSW1wbGVtZW50ZWQgYXMgcGFydCBvZiBDb250cm9sVmFsdWVBY2Nlc3Nvci5cbiAgcHVibGljIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy4jbm90aWZ5VG91Y2hlZCA9IGZuO1xuICB9XG5cbiAgLy8gSW1wbGVtZW50ZWQgYXMgcGFydCBvZiBDb250cm9sVmFsdWVBY2Nlc3Nvci5cbiAgcHVibGljIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICB9XG5cbiAgLy8gSW1wbGVtZW50ZWQgYXMgcGFydCBvZiBWYWxpZGF0b3IuXG4gIHB1YmxpYyB2YWxpZGF0ZShjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gICAgbGV0IGVycm9yczogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPSBudWxsO1xuXG4gICAgY29uc3QgY2FsY3VsYXRvckVycm9ycyA9IHRoaXMuc2VsZWN0ZWRDYWxjdWxhdG9yLnZhbGlkYXRlKGNvbnRyb2wudmFsdWUpO1xuICAgIGNvbnN0IHN0YXJ0RGF0ZUVycm9ycyA9IHRoaXMuI3N0YXJ0RGF0ZUNvbnRyb2wuZXJyb3JzO1xuICAgIGNvbnN0IGVuZERhdGVFcnJvcnMgPSB0aGlzLiNlbmREYXRlQ29udHJvbC5lcnJvcnM7XG5cbiAgICBpZiAoY2FsY3VsYXRvckVycm9ycykge1xuICAgICAgZXJyb3JzID0ge1xuICAgICAgICBza3lEYXRlUmFuZ2U6IHtcbiAgICAgICAgICBjYWxjdWxhdG9ySWQ6IHRoaXMuI2dldFZhbHVlKCkuY2FsY3VsYXRvcklkLFxuICAgICAgICAgIGVycm9yczogY2FsY3VsYXRvckVycm9ycyxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuc2hvd1N0YXJ0RGF0ZVBpY2tlciAmJiBzdGFydERhdGVFcnJvcnMpIHtcbiAgICAgIGVycm9ycyB8fD0ge307XG4gICAgICBlcnJvcnMgPSB7IC4uLmVycm9ycywgLi4uc3RhcnREYXRlRXJyb3JzIH07XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuc2hvd0VuZERhdGVQaWNrZXIgJiYgZW5kRGF0ZUVycm9ycykge1xuICAgICAgZXJyb3JzIHx8PSB7fTtcbiAgICAgIGVycm9ycyA9IHsgLi4uZXJyb3JzLCAuLi5lbmREYXRlRXJyb3JzIH07XG4gICAgfVxuXG4gICAgLy8gU2V0IGVycm9ycyBvbiB0aGUgY2FsY3VsYXRvciBzZWxlY3Qgc28gdGhhdCB0aGV5IGFwcGVhciBiZW5lYXRoIGl0LlxuICAgIHRoaXMuI2NhbGN1bGF0b3JJZENvbnRyb2wuc2V0RXJyb3JzKGVycm9ycyk7XG4gICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG5cbiAgICByZXR1cm4gZXJyb3JzO1xuICB9XG5cbiAgLy8gSW1wbGVtZW50ZWQgYXMgcGFydCBvZiBDb250cm9sVmFsdWVBY2Nlc3Nvci5cbiAgLy8gVGhlIGRhdGUgcmFuZ2UgcGlja2VyIGFsd2F5cyBoYXMgYSB2YWx1ZSwgc28gaWYgdGhlIGNvbnN1bWVyIHBhc3NlcyBpbiBhXG4gIC8vIHBhcnRpYWwgdmFsdWUgKHZpYSBgcGF0Y2hWYWx1ZWApIG9yIG51bGwsIHdlIG5lZWQgdG8gdXBkYXRlIHRoZSBob3N0IGNvbnRyb2wnc1xuICAvLyB2YWx1ZSB3aXRoIHRoZSBjb21wbGV0ZSB2YWx1ZSBhZnRlciBpdCdzIGJlZW4gbW9kaWZpZWQuXG4gIHB1YmxpYyB3cml0ZVZhbHVlKHZhbHVlOiBQYXJ0aWFsPFNreURhdGVSYW5nZUNhbGN1bGF0aW9uPiB8IHVuZGVmaW5lZCk6IHZvaWQge1xuICAgIHRoaXMuI3BhdGNoVmFsdWUodmFsdWUpO1xuXG4gICAgLy8gVXBkYXRlIHRoZSBob3N0IGNvbnRyb2wgaWYgaXQgaXMgc2V0IHRvIGEgcGFydGlhbCBvciBudWxsIHZhbHVlLlxuICAgIGlmIChpc1BhcnRpYWxWYWx1ZSh2YWx1ZSkpIHtcbiAgICAgIHRoaXMuaG9zdENvbnRyb2w/LnNldFZhbHVlKHRoaXMuI2dldFZhbHVlKCksIHtcbiAgICAgICAgZW1pdEV2ZW50OiBmYWxzZSxcbiAgICAgICAgb25seVNlbGY6IHRydWUsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgaXNSZXF1aXJlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISEoXG4gICAgICB0aGlzLnJlcXVpcmVkIHx8IHRoaXMuaG9zdENvbnRyb2w/Lmhhc1ZhbGlkYXRvcihWYWxpZGF0b3JzLnJlcXVpcmVkKVxuICAgICk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb25CbHVyKCk6IHZvaWQge1xuICAgIHRoaXMuI25vdGlmeVRvdWNoZWQ/LigpO1xuICB9XG5cbiAgI2dldENhbGN1bGF0b3IoY2FsY3VsYXRvcklkOiBudW1iZXIpOiBTa3lEYXRlUmFuZ2VDYWxjdWxhdG9yIHtcbiAgICBjb25zdCBmb3VuZCA9IHRoaXMuY2FsY3VsYXRvcnMuZmluZCgoYykgPT4gYy5jYWxjdWxhdG9ySWQgPT09IGNhbGN1bGF0b3JJZCk7XG5cbiAgICAvKnNhZmV0eSBjaGVjazogc2hvdWxkIG5vdCBoYXBwZW4qL1xuICAgIC8qaXN0YW5idWwgaWdub3JlIGlmKi9cbiAgICBpZiAoIWZvdW5kKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBBIGRhdGUgcmFuZ2UgY2FsY3VsYXRvciB3aXRoIElEICgke2NhbGN1bGF0b3JJZH0pIGNvdWxkIG5vdCBiZSBmb3VuZC5gLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZm91bmQ7XG4gIH1cblxuICAjZ2V0RGVmYXVsdFZhbHVlKFxuICAgIGNhbGN1bGF0b3I6IFNreURhdGVSYW5nZUNhbGN1bGF0b3IsXG4gICk6IFNreURhdGVSYW5nZUNhbGN1bGF0aW9uIHtcbiAgICByZXR1cm4gY2FsY3VsYXRvci5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgI2dldFZhbHVlKCk6IFNreURhdGVSYW5nZUNhbGN1bGF0aW9uIHtcbiAgICByZXR1cm4gdGhpcy4jX3ZhbHVlO1xuICB9XG5cbiAgI3BhdGNoVmFsdWUoXG4gICAgcGFydGlhbFZhbHVlOiBQYXJ0aWFsPFNreURhdGVSYW5nZUNhbGN1bGF0aW9uPiB8IG51bGwgfCB1bmRlZmluZWQsXG4gICk6IHZvaWQge1xuICAgIHRoaXMuI3NldFZhbHVlKFxuICAgICAgaXNOdWxsT3JVbmRlZmluZWQocGFydGlhbFZhbHVlKVxuICAgICAgICA/IG51bGxcbiAgICAgICAgOiB7IC4uLnRoaXMuI2dldFZhbHVlKCksIC4uLnBhcnRpYWxWYWx1ZSB9LFxuICAgICAgeyBlbWl0RXZlbnQ6IHRydWUgfSxcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHZhbHVlIHRvIGJlIHVzZWQgYnkgdGhlIGRhdGUgcmFuZ2UgcGlja2VyIGZvcm0gY29udHJvbC5cbiAgICovXG4gICNzZXRWYWx1ZShcbiAgICB2YWx1ZTogU2t5RGF0ZVJhbmdlQ2FsY3VsYXRpb24gfCBudWxsIHwgdW5kZWZpbmVkLFxuICAgIG9wdGlvbnM6IHsgZW1pdEV2ZW50OiBib29sZWFuIH0sXG4gICk6IHZvaWQge1xuICAgIGNvbnN0IG9sZFZhbHVlID0gdGhpcy4jZ2V0VmFsdWUoKTtcblxuICAgIGNvbnN0IHZhbHVlT3JEZWZhdWx0ID1cbiAgICAgICF2YWx1ZSB8fCBpc051bGxPclVuZGVmaW5lZCh2YWx1ZS5jYWxjdWxhdG9ySWQpXG4gICAgICAgID8gdGhpcy4jZ2V0RGVmYXVsdFZhbHVlKHRoaXMuY2FsY3VsYXRvcnNbMF0pXG4gICAgICAgIDoge1xuICAgICAgICAgICAgLi4udGhpcy4jZ2V0RGVmYXVsdFZhbHVlKHRoaXMuI2dldENhbGN1bGF0b3IodmFsdWUuY2FsY3VsYXRvcklkKSksXG4gICAgICAgICAgICAuLi52YWx1ZSxcbiAgICAgICAgICB9O1xuXG4gICAgLy8gRW5zdXJlIGZhbHN5IHZhbHVlcyBhcmUgc2V0IHRvIG51bGwuXG4gICAgdmFsdWVPckRlZmF1bHQuZW5kRGF0ZSA9IHZhbHVlT3JEZWZhdWx0LmVuZERhdGUgfHwgbnVsbDtcbiAgICB2YWx1ZU9yRGVmYXVsdC5zdGFydERhdGUgPSB2YWx1ZU9yRGVmYXVsdC5zdGFydERhdGUgfHwgbnVsbDtcblxuICAgIGlmICghYXJlRGF0ZVJhbmdlc0VxdWFsKG9sZFZhbHVlLCB2YWx1ZU9yRGVmYXVsdCkpIHtcbiAgICAgIHRoaXMuI192YWx1ZSA9IHZhbHVlT3JEZWZhdWx0O1xuXG4gICAgICB0aGlzLnNlbGVjdGVkQ2FsY3VsYXRvciA9IHRoaXMuI2dldENhbGN1bGF0b3IoXG4gICAgICAgIHZhbHVlT3JEZWZhdWx0LmNhbGN1bGF0b3JJZCxcbiAgICAgICk7XG5cbiAgICAgIGlmIChvbGRWYWx1ZS5jYWxjdWxhdG9ySWQgIT09IHZhbHVlT3JEZWZhdWx0LmNhbGN1bGF0b3JJZCkge1xuICAgICAgICB0aGlzLiN1cGRhdGVQaWNrZXJWaXNpYmlsaXR5KHRoaXMuc2VsZWN0ZWRDYWxjdWxhdG9yKTtcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnM/LmVtaXRFdmVudCkge1xuICAgICAgICB0aGlzLmZvcm1Hcm91cC5wYXRjaFZhbHVlKHZhbHVlT3JEZWZhdWx0KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAjdXBkYXRlUGlja2VyVmlzaWJpbGl0eShjYWxjdWxhdG9yOiBTa3lEYXRlUmFuZ2VDYWxjdWxhdG9yKTogdm9pZCB7XG4gICAgbGV0IHNob3dFbmREYXRlUGlja2VyID0gZmFsc2U7XG4gICAgbGV0IHNob3dTdGFydERhdGVQaWNrZXIgPSBmYWxzZTtcblxuICAgIHN3aXRjaCAoY2FsY3VsYXRvci50eXBlKSB7XG4gICAgICBjYXNlIFNreURhdGVSYW5nZUNhbGN1bGF0b3JUeXBlLkJlZm9yZTpcbiAgICAgICAgc2hvd0VuZERhdGVQaWNrZXIgPSB0cnVlO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBTa3lEYXRlUmFuZ2VDYWxjdWxhdG9yVHlwZS5BZnRlcjpcbiAgICAgICAgc2hvd1N0YXJ0RGF0ZVBpY2tlciA9IHRydWU7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIFNreURhdGVSYW5nZUNhbGN1bGF0b3JUeXBlLlJhbmdlOlxuICAgICAgICBzaG93RW5kRGF0ZVBpY2tlciA9IHRydWU7XG4gICAgICAgIHNob3dTdGFydERhdGVQaWNrZXIgPSB0cnVlO1xuICAgICAgICBicmVhaztcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgdGhpcy5zaG93RW5kRGF0ZVBpY2tlciA9IHNob3dFbmREYXRlUGlja2VyO1xuICAgIHRoaXMuc2hvd1N0YXJ0RGF0ZVBpY2tlciA9IHNob3dTdGFydERhdGVQaWNrZXI7XG4gICAgdGhpcy4jY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gIH1cbn1cbiIsIjxkaXZcbiAgY2xhc3M9XCJza3ktZGF0ZS1yYW5nZS1waWNrZXJcIlxuICBbZm9ybUdyb3VwXT1cImZvcm1Hcm91cFwiXG4gIChmb2N1c291dCk9XCJvbkJsdXIoKVwiXG4+XG4gIDxkaXZcbiAgICBjbGFzcz1cInNreS1kYXRlLXJhbmdlLXBpY2tlci1mb3JtLWdyb3VwXCJcbiAgICBbbmdDbGFzc109XCJ7XG4gICAgICAnc2t5LWRhdGUtcmFuZ2UtcGlja2VyLWxhc3QtaW5wdXQnOlxuICAgICAgICAhc2hvd1N0YXJ0RGF0ZVBpY2tlciAmJiAhc2hvd0VuZERhdGVQaWNrZXJcbiAgICB9XCJcbiAgPlxuICAgIDxza3ktaW5wdXQtYm94XG4gICAgICBbaGFzRXJyb3JzXT1cImhhc0Vycm9yc1wiXG4gICAgICBbaGVscEtleV09XCJoZWxwS2V5XCJcbiAgICAgIFtoZWxwUG9wb3ZlckNvbnRlbnRdPVwiaGVscFBvcG92ZXJDb250ZW50XCJcbiAgICAgIFtoZWxwUG9wb3ZlclRpdGxlXT1cImhlbHBQb3BvdmVyVGl0bGVcIlxuICAgICAgW2hpbnRUZXh0XT1cImhpbnRUZXh0XCJcbiAgICAgIFtsYWJlbFRleHRdPVwiXG4gICAgICAgIGxhYmVsVGV4dCB8fFxuICAgICAgICBsYWJlbCB8fFxuICAgICAgICAoJ3NreXV4X2RhdGVfcmFuZ2VfcGlja2VyX2RlZmF1bHRfbGFiZWwnIHwgc2t5TGliUmVzb3VyY2VzKVxuICAgICAgXCJcbiAgICA+XG4gICAgICA8c2VsZWN0XG4gICAgICAgIGZvcm1Db250cm9sTmFtZT1cImNhbGN1bGF0b3JJZFwiXG4gICAgICAgIFtyZXF1aXJlZF09XCJpc1JlcXVpcmVkKClcIlxuICAgICAgICAoYmx1cik9XCJvbkJsdXIoKVwiXG4gICAgICA+XG4gICAgICAgIDxvcHRpb25cbiAgICAgICAgICAqbmdGb3I9XCJsZXQgY2FsY3VsYXRvciBvZiBjYWxjdWxhdG9yc1wiXG4gICAgICAgICAgW3ZhbHVlXT1cImNhbGN1bGF0b3IuY2FsY3VsYXRvcklkXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7XG4gICAgICAgICAgICBjYWxjdWxhdG9yLl9zaG9ydERlc2NyaXB0aW9uUmVzb3VyY2VLZXlcbiAgICAgICAgICAgICAgPyAoY2FsY3VsYXRvci5fc2hvcnREZXNjcmlwdGlvblJlc291cmNlS2V5IHwgc2t5TGliUmVzb3VyY2VzKVxuICAgICAgICAgICAgICA6IGNhbGN1bGF0b3Iuc2hvcnREZXNjcmlwdGlvblxuICAgICAgICAgIH19XG4gICAgICAgIDwvb3B0aW9uPlxuICAgICAgPC9zZWxlY3Q+XG4gICAgPC9za3ktaW5wdXQtYm94PlxuICAgIDxza3ktZm9ybS1lcnJvcnNcbiAgICAgICpuZ0lmPVwibGFiZWxUZXh0ICYmIGhvc3RDb250cm9sPy5lcnJvcnM/Llsnc2t5RGF0ZVJhbmdlJ11cIlxuICAgICAgW2xhYmVsVGV4dF09XCJsYWJlbFRleHRcIlxuICAgID5cbiAgICAgIDxza3ktZm9ybS1lcnJvclxuICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgIGhvc3RDb250cm9sPy5lcnJvcnM/Llsnc2t5RGF0ZVJhbmdlJ10/LmVycm9ycy5lbmREYXRlQmVmb3JlU3RhcnREYXRlXG4gICAgICAgIFwiXG4gICAgICAgIFtlcnJvck5hbWVdPVwiJ2VuZERhdGVCZWZvcmVTdGFydERhdGUnXCJcbiAgICAgICAgW2Vycm9yVGV4dF09XCJcbiAgICAgICAgICAnc2t5dXhfZGF0ZV9yYW5nZV9waWNrZXJfZW5kX2RhdGVfYmVmb3JlX3N0YXJ0X2RhdGVfZXJyb3JfbGFiZWxfdGV4dCdcbiAgICAgICAgICAgIHwgc2t5TGliUmVzb3VyY2VzXG4gICAgICAgIFwiXG4gICAgICAvPlxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwic2t5LWZvcm0tZXJyb3JcIiAvPlxuICAgIDwvc2t5LWZvcm0tZXJyb3JzPlxuICA8L2Rpdj5cbiAgPGRpdlxuICAgIGNsYXNzPVwic2t5LWRhdGUtcmFuZ2UtcGlja2VyLWZvcm0tZ3JvdXAgc2t5LWRhdGUtcmFuZ2UtZGF0ZXBpY2tlci13cmFwcGVyXCJcbiAgICBbaGlkZGVuXT1cIiFzaG93U3RhcnREYXRlUGlja2VyXCJcbiAgICBbbmdDbGFzc109XCJ7XG4gICAgICAnc2t5LWRhdGUtcmFuZ2UtcGlja2VyLWxhc3QtaW5wdXQnOlxuICAgICAgICBzaG93U3RhcnREYXRlUGlja2VyICYmICFzaG93RW5kRGF0ZVBpY2tlclxuICAgIH1cIlxuICA+XG4gICAgPHNreS1pbnB1dC1ib3hcbiAgICAgIFtlcnJvcnNTY3JlZW5SZWFkZXJPbmx5XT1cInRydWVcIlxuICAgICAgW2hhc0Vycm9yc109XCJoYXNFcnJvcnNcIlxuICAgICAgW2xhYmVsVGV4dF09XCJcbiAgICAgICAgc2VsZWN0ZWRDYWxjdWxhdG9yLnR5cGVcbiAgICAgICAgICB8IHNreURhdGVSYW5nZVBpY2tlclN0YXJ0RGF0ZVJlc291cmNlS2V5XG4gICAgICAgICAgfCBza3lMaWJSZXNvdXJjZXNcbiAgICAgIFwiXG4gICAgPlxuICAgICAgPHNreS1kYXRlcGlja2VyPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJzdGFydERhdGVcIlxuICAgICAgICAgIG5hbWU9XCJzdGFydERhdGVcIlxuICAgICAgICAgIHNreURhdGVwaWNrZXJJbnB1dFxuICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIlxuICAgICAgICAgICAgbGFiZWxUZXh0IHx8IGxhYmVsXG4gICAgICAgICAgICAgID8gKCdza3l1eF9kYXRlX3JhbmdlX3BpY2tlcl9kZWZhdWx0X2FyaWFfbGFiZWwnXG4gICAgICAgICAgICAgICAgfCBza3lMaWJSZXNvdXJjZXNcbiAgICAgICAgICAgICAgICAgIDogKHNlbGVjdGVkQ2FsY3VsYXRvci50eXBlXG4gICAgICAgICAgICAgICAgICAgICAgfCBza3lEYXRlUmFuZ2VQaWNrZXJTdGFydERhdGVSZXNvdXJjZUtleVxuICAgICAgICAgICAgICAgICAgICAgIHwgc2t5TGliUmVzb3VyY2VzKVxuICAgICAgICAgICAgICAgICAgOiAobGFiZWxUZXh0ID8gbGFiZWxUZXh0IDogbGFiZWwpKVxuICAgICAgICAgICAgICA6IChzZWxlY3RlZENhbGN1bGF0b3IudHlwZVxuICAgICAgICAgICAgICAgIHwgc2t5RGF0ZVJhbmdlUGlja2VyU3RhcnREYXRlUmVzb3VyY2VLZXlcbiAgICAgICAgICAgICAgICB8IHNreUxpYlJlc291cmNlcylcbiAgICAgICAgICBcIlxuICAgICAgICAgIFtkYXRlRm9ybWF0XT1cImRhdGVGb3JtYXRcIlxuICAgICAgICAgIFtyZXF1aXJlZF09XCJcbiAgICAgICAgICAgIHNob3dTdGFydERhdGVQaWNrZXIgJiYgKHN0YXJ0RGF0ZVJlcXVpcmVkIHx8IGlzUmVxdWlyZWQoKSlcbiAgICAgICAgICBcIlxuICAgICAgICAvPlxuICAgICAgPC9za3ktZGF0ZXBpY2tlcj5cbiAgICA8L3NreS1pbnB1dC1ib3g+XG4gIDwvZGl2PlxuICA8ZGl2XG4gICAgY2xhc3M9XCJza3ktZGF0ZS1yYW5nZS1waWNrZXItZm9ybS1ncm91cCBza3ktZGF0ZS1yYW5nZS1kYXRlcGlja2VyLXdyYXBwZXJcIlxuICAgIFtoaWRkZW5dPVwiIXNob3dFbmREYXRlUGlja2VyXCJcbiAgICBbbmdDbGFzc109XCJ7ICdza3ktZGF0ZS1yYW5nZS1waWNrZXItbGFzdC1pbnB1dCc6IHNob3dFbmREYXRlUGlja2VyIH1cIlxuICA+XG4gICAgPHNreS1pbnB1dC1ib3hcbiAgICAgIFtlcnJvcnNTY3JlZW5SZWFkZXJPbmx5XT1cInRydWVcIlxuICAgICAgW2hhc0Vycm9yc109XCJoYXNFcnJvcnNcIlxuICAgICAgW2xhYmVsVGV4dF09XCJcbiAgICAgICAgc2VsZWN0ZWRDYWxjdWxhdG9yLnR5cGVcbiAgICAgICAgICB8IHNreURhdGVSYW5nZVBpY2tlckVuZERhdGVSZXNvdXJjZUtleVxuICAgICAgICAgIHwgc2t5TGliUmVzb3VyY2VzXG4gICAgICBcIlxuICAgID5cbiAgICAgIDxza3ktZGF0ZXBpY2tlcj5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiZW5kRGF0ZVwiXG4gICAgICAgICAgbmFtZT1cImVuZERhdGVcIlxuICAgICAgICAgIHNreURhdGVwaWNrZXJJbnB1dFxuICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIlxuICAgICAgICAgICAgbGFiZWxUZXh0IHx8IGxhYmVsXG4gICAgICAgICAgICAgID8gKCdza3l1eF9kYXRlX3JhbmdlX3BpY2tlcl9kZWZhdWx0X2FyaWFfbGFiZWwnXG4gICAgICAgICAgICAgICAgfCBza3lMaWJSZXNvdXJjZXNcbiAgICAgICAgICAgICAgICAgIDogKHNlbGVjdGVkQ2FsY3VsYXRvci50eXBlXG4gICAgICAgICAgICAgICAgICAgICAgfCBza3lEYXRlUmFuZ2VQaWNrZXJFbmREYXRlUmVzb3VyY2VLZXlcbiAgICAgICAgICAgICAgICAgICAgICB8IHNreUxpYlJlc291cmNlcylcbiAgICAgICAgICAgICAgICAgIDogKGxhYmVsVGV4dCA/IGxhYmVsVGV4dCA6IGxhYmVsKSlcbiAgICAgICAgICAgICAgOiAoc2VsZWN0ZWRDYWxjdWxhdG9yLnR5cGVcbiAgICAgICAgICAgICAgICB8IHNreURhdGVSYW5nZVBpY2tlckVuZERhdGVSZXNvdXJjZUtleVxuICAgICAgICAgICAgICAgIHwgc2t5TGliUmVzb3VyY2VzKVxuICAgICAgICAgIFwiXG4gICAgICAgICAgW2RhdGVGb3JtYXRdPVwiZGF0ZUZvcm1hdFwiXG4gICAgICAgICAgW3JlcXVpcmVkXT1cInNob3dFbmREYXRlUGlja2VyICYmIChlbmREYXRlUmVxdWlyZWQgfHwgaXNSZXF1aXJlZCgpKVwiXG4gICAgICAgIC8+XG4gICAgICA8L3NreS1kYXRlcGlja2VyPlxuICAgIDwvc2t5LWlucHV0LWJveD5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
@@ -178,15 +178,33 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.5", ngImpor
178
178
  */
179
179
  class SkyDateService {
180
180
  /* spell-checker:disable */
181
+ // See: https://github.com/angular/angular/blob/17.3.x/packages/common/src/pipes/date_pipe.ts
182
+ // See: https://www.ibm.com/docs/en/app-connect/11.0.0?topic=function-formatting-parsing-datetimes-as-strings
181
183
  #ALIASES = {
182
- medium: 'yMMMdjms',
184
+ // TODO: replace with 'M/d/yy, h:mm a' in a breaking change.
183
185
  short: 'yMdjm',
184
- fullDate: 'yMMMMEEEEd',
185
- longDate: 'yMMMMd',
186
- mediumDate: 'yMMMd',
186
+ // TODO: replace with 'MMM d, y, h:mm:ss a' in a breaking change.
187
+ medium: 'yMMMdjms',
188
+ // TODO: This format was modified from 'MMMM d, y, h:mm:ss a z' due to the limitations of the Intl API.
189
+ long: 'MMMM d, y, h:mm:ss a Z',
190
+ // TODO: This format was modified from 'EEEE, MMMM d, y, h:mm:ss a zzzz' due to the limitations of the Intl API.
191
+ full: 'EEEE, MMMM d, y, h:mm:ss a z',
192
+ // TODO: Replace with 'M/d/yy' in a breaking change.
187
193
  shortDate: 'yMd',
188
- mediumTime: 'jms',
194
+ // TODO: Replace with 'MMM d, y' in a breaking change.
195
+ mediumDate: 'yMMMd',
196
+ // TODO: Replace with 'MMMM d, y' in a breaking change.
197
+ longDate: 'yMMMMd',
198
+ // TODO: Replace with 'EEEE, MMMM d, y' in a breaking change.
199
+ fullDate: 'yMMMMEEEEd',
200
+ // TODO: Replace with 'h:mm a' in a breaking change.
189
201
  shortTime: 'jm',
202
+ // TODO: Replace with 'h:mm:ss a' in a breaking change.
203
+ mediumTime: 'jms',
204
+ // TODO: This format was modified from 'h:mm:ss a z' due to the limitations of the Intl API.
205
+ longTime: 'h:mm:ss a Z',
206
+ // TODO: This format was modified from 'h:mm:ss a zzzz' due to the limitations of the Intl API.
207
+ fullTime: 'h:mm:ss a z',
190
208
  };
191
209
  /* spell-checker:enable */
192
210
  #defaultFormat = 'short';
@@ -4400,7 +4418,7 @@ class SkyDateRangePickerComponent {
4400
4418
  this.#updatePickerVisibility(this.selectedCalculator);
4401
4419
  }
4402
4420
  if (options?.emitEvent) {
4403
- this.formGroup.setValue(valueOrDefault);
4421
+ this.formGroup.patchValue(valueOrDefault);
4404
4422
  }
4405
4423
  }
4406
4424
  }