@fgv/ts-bcp47 0.5.0 → 0.5.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.
Files changed (32) hide show
  1. package/bcp47/languageRegistryData.d.ts +88 -0
  2. package/bcp47/languageRegistryData.d.ts.map +1 -0
  3. package/bcp47/languageRegistryData.js +144 -0
  4. package/bcp47/languageTag.d.ts +6 -0
  5. package/bcp47/languageTag.d.ts.map +1 -1
  6. package/bcp47/languageTag.js +3 -1
  7. package/bcp47/match/chooser.d.ts +1 -1
  8. package/bcp47/match/chooser.js +1 -1
  9. package/bcp47/overrides/defaultRegistries.js +2 -2
  10. package/bcp47/overrides/overridesRegistry.d.ts +2 -0
  11. package/bcp47/overrides/overridesRegistry.d.ts.map +1 -1
  12. package/bcp47/overrides/overridesRegistry.js +16 -5
  13. package/data/unsd/m49.json +251 -0
  14. package/iana/defaultRegistries.js +2 -2
  15. package/iana/language-subtags/jarConverters.d.ts +12 -12
  16. package/iana/language-subtags/jarConverters.d.ts.map +1 -1
  17. package/iana/language-subtags/jarConverters.js +1 -1
  18. package/iana/language-subtags/subtagRegistry.d.ts +2 -0
  19. package/iana/language-subtags/subtagRegistry.d.ts.map +1 -1
  20. package/iana/language-subtags/subtagRegistry.js +11 -1
  21. package/iana/language-tag-extensions/extensionsRegistry.d.ts +2 -0
  22. package/iana/language-tag-extensions/extensionsRegistry.d.ts.map +1 -1
  23. package/iana/language-tag-extensions/extensionsRegistry.js +11 -1
  24. package/iana/languageRegistries.d.ts +1 -0
  25. package/iana/languageRegistries.d.ts.map +1 -1
  26. package/iana/languageRegistries.js +8 -1
  27. package/package.json +1 -1
  28. package/unsd/defaultRegistries.js +2 -2
  29. package/unsd/regionCodes.d.ts +4 -2
  30. package/unsd/regionCodes.d.ts.map +1 -1
  31. package/unsd/regionCodes.js +18 -8
  32. package/data/unsd/m49.csv +0 -250
@@ -0,0 +1,88 @@
1
+ import * as Iana from '../iana';
2
+ import { Subtags } from './common';
3
+ /**
4
+ * Returns all of the data in the IANA language subtags registry for
5
+ * a set of supplied {@link Bcp47.Subtags | subtags}.
6
+ * @public
7
+ */
8
+ export declare class LanguageRegistryData {
9
+ /**
10
+ * @internal
11
+ */
12
+ protected _iana: Iana.LanguageRegistries;
13
+ /**
14
+ * @internal
15
+ */
16
+ protected _subtags: Subtags;
17
+ /**
18
+ * @internal
19
+ */
20
+ protected _primaryLanguage?: Iana.LanguageSubtags.Model.RegisteredLanguage | false;
21
+ /**
22
+ * @internal
23
+ */
24
+ protected _extlangs?: Iana.LanguageSubtags.Model.RegisteredExtLang[] | false;
25
+ /**
26
+ * @internal
27
+ */
28
+ protected _script?: Iana.LanguageSubtags.Model.RegisteredScript | false;
29
+ /**
30
+ * @internal
31
+ */
32
+ protected _region?: Iana.LanguageSubtags.Model.RegisteredRegion | false;
33
+ /**
34
+ * @internal
35
+ */
36
+ protected _grandfathered?: Iana.LanguageSubtags.Model.RegisteredGrandfatheredTag | false;
37
+ /**
38
+ * Constructs a new {@link Bcp47.LanguageTagRegistryData | Bcp47.LanguageTagRegistryData}
39
+ * from a supplied {@link Bcp47.Subtags | subtags} and {@link Iana.LanguageRegistries | language registries}.
40
+ * @public
41
+ */
42
+ constructor(subtags: Subtags, iana: Iana.LanguageRegistries);
43
+ /**
44
+ * Registry data associated with the primary language subtag of the language tag from
45
+ * which this {@link Bcp47.LanguageTagRegistryData | Bcp47.LanguageTagRegistryData}
46
+ * was constructed, or `undefined` if the primary language is missing or invalid.
47
+ * @public
48
+ */
49
+ get primaryLanguage(): Iana.LanguageSubtags.Model.RegisteredLanguage | undefined;
50
+ /**
51
+ * Registry data associated with the extlang subtag of the language tag from
52
+ * which this {@link Bcp47.LanguageTagRegistryData | Bcp47.LanguageTagRegistryData}
53
+ * was constructed, or `undefined` if extlang is missing or invalid.
54
+ * @public
55
+ */
56
+ get extlangs(): Iana.LanguageSubtags.Model.RegisteredExtLang[] | undefined;
57
+ /**
58
+ * Registry data associated with the script of the language tag from
59
+ * which this {@link Bcp47.LanguageTagRegistryData | Bcp47.LanguageTagRegistryData}
60
+ * was constructed, or `undefined` if the script cannot be determined.
61
+ *
62
+ * Note that script will default to the registry `Suppress-Script` value of the
63
+ * primary language if no script subtag is present.
64
+ * @public
65
+ */
66
+ get script(): Iana.LanguageSubtags.Model.RegisteredScript | undefined;
67
+ /**
68
+ * Registry data associated with the region subtag of the language tag from
69
+ * which this {@link Bcp47.LanguageTagRegistryData | Bcp47.LanguageTagRegistryData}
70
+ * was constructed, or `undefined` if the region is missing or invalid.
71
+ * @public
72
+ */
73
+ get region(): Iana.LanguageSubtags.Model.RegisteredRegion | undefined;
74
+ /**
75
+ * Registry data for grandfathered tags, or `undefined` if the tag is not recognized
76
+ * as a grandfathered tag.
77
+ * @public
78
+ */
79
+ get grandfathered(): Iana.LanguageSubtags.Model.RegisteredGrandfatheredTag | undefined;
80
+ /**
81
+ * @returns A string representation of the subtags from which this
82
+ * {@link Bcp47.LanguageTagRegistryData | Bcp47.LanguageTagRegistryData}
83
+ * was created.
84
+ * @public
85
+ */
86
+ toString(): string;
87
+ }
88
+ //# sourceMappingURL=languageRegistryData.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"languageRegistryData.d.ts","sourceRoot":"","sources":["../../src/bcp47/languageRegistryData.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,IAAI,MAAM,SAAS,CAAC;AAEhC,OAAO,EAAE,OAAO,EAAmB,MAAM,UAAU,CAAC;AAEpD;;;;GAIG;AACH,qBAAa,oBAAoB;IAC7B;;OAEG;IACH,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,kBAAkB,CAAC;IACzC;;OAEG;IACH,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC5B;;OAEG;IACH,SAAS,CAAC,gBAAgB,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,kBAAkB,GAAG,KAAK,CAAC;IACnF;;OAEG;IACH,SAAS,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,iBAAiB,EAAE,GAAG,KAAK,CAAC;IAC7E;;OAEG;IACH,SAAS,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,gBAAgB,GAAG,KAAK,CAAC;IACxE;;OAEG;IACH,SAAS,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,gBAAgB,GAAG,KAAK,CAAC;IACxE;;OAEG;IACH,SAAS,CAAC,cAAc,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,0BAA0B,GAAG,KAAK,CAAC;IAEzF;;;;OAIG;gBACgB,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,kBAAkB;IAKlE;;;;;OAKG;IACH,IAAW,eAAe,IAAI,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,kBAAkB,GAAG,SAAS,CAKtF;IAED;;;;;OAKG;IACH,IAAW,QAAQ,IAAI,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,iBAAiB,EAAE,GAAG,SAAS,CAYhF;IAED;;;;;;;;OAQG;IACH,IAAW,MAAM,IAAI,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,gBAAgB,GAAG,SAAS,CAgB3E;IAED;;;;;OAKG;IACH,IAAW,MAAM,IAAI,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,gBAAgB,GAAG,SAAS,CAU3E;IAED;;;;OAIG;IACH,IAAW,aAAa,IAAI,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,0BAA0B,GAAG,SAAS,CAU5F;IAED;;;;;OAKG;IACI,QAAQ,IAAI,MAAM;CAG5B"}
@@ -0,0 +1,144 @@
1
+ "use strict";
2
+ /*
3
+ * Copyright (c) 2022 Erik Fortune
4
+ *
5
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ * of this software and associated documentation files (the "Software"), to deal
7
+ * in the Software without restriction, including without limitation the rights
8
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ * copies of the Software, and to permit persons to whom the Software is
10
+ * furnished to do so, subject to the following conditions:
11
+ *
12
+ * The above copyright notice and this permission notice shall be included in all
13
+ * copies or substantial portions of the Software.
14
+ *
15
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ * SOFTWARE.
22
+ */
23
+ Object.defineProperty(exports, "__esModule", { value: true });
24
+ exports.LanguageRegistryData = void 0;
25
+ const common_1 = require("./common");
26
+ /**
27
+ * Returns all of the data in the IANA language subtags registry for
28
+ * a set of supplied {@link Bcp47.Subtags | subtags}.
29
+ * @public
30
+ */
31
+ class LanguageRegistryData {
32
+ /**
33
+ * Constructs a new {@link Bcp47.LanguageTagRegistryData | Bcp47.LanguageTagRegistryData}
34
+ * from a supplied {@link Bcp47.Subtags | subtags} and {@link Iana.LanguageRegistries | language registries}.
35
+ * @public
36
+ */
37
+ constructor(subtags, iana) {
38
+ this._iana = iana;
39
+ this._subtags = subtags;
40
+ }
41
+ /**
42
+ * Registry data associated with the primary language subtag of the language tag from
43
+ * which this {@link Bcp47.LanguageTagRegistryData | Bcp47.LanguageTagRegistryData}
44
+ * was constructed, or `undefined` if the primary language is missing or invalid.
45
+ * @public
46
+ */
47
+ get primaryLanguage() {
48
+ var _a;
49
+ if (this._primaryLanguage === undefined) {
50
+ this._primaryLanguage = (_a = this._iana.subtags.languages.tryGet(this._subtags.primaryLanguage)) !== null && _a !== void 0 ? _a : false;
51
+ }
52
+ return this._primaryLanguage ? this._primaryLanguage : undefined;
53
+ }
54
+ /**
55
+ * Registry data associated with the extlang subtag of the language tag from
56
+ * which this {@link Bcp47.LanguageTagRegistryData | Bcp47.LanguageTagRegistryData}
57
+ * was constructed, or `undefined` if extlang is missing or invalid.
58
+ * @public
59
+ */
60
+ get extlangs() {
61
+ if (this._extlangs === undefined) {
62
+ if (this._subtags.extlangs !== undefined) {
63
+ this._extlangs = this._subtags.extlangs
64
+ .map((e) => this._iana.subtags.extlangs.tryGet(e))
65
+ .filter((e) => e !== undefined);
66
+ }
67
+ if (!this._subtags.extlangs || this._subtags.extlangs.length === 0) {
68
+ this._extlangs = false;
69
+ }
70
+ }
71
+ return this._extlangs ? this._extlangs : undefined;
72
+ }
73
+ /**
74
+ * Registry data associated with the script of the language tag from
75
+ * which this {@link Bcp47.LanguageTagRegistryData | Bcp47.LanguageTagRegistryData}
76
+ * was constructed, or `undefined` if the script cannot be determined.
77
+ *
78
+ * Note that script will default to the registry `Suppress-Script` value of the
79
+ * primary language if no script subtag is present.
80
+ * @public
81
+ */
82
+ get script() {
83
+ var _a;
84
+ if (this._script === undefined) {
85
+ if (this._subtags.script) {
86
+ this._script = this._iana.subtags.scripts.tryGet(this._subtags.script);
87
+ }
88
+ if (!this._script) {
89
+ const suppressed = (_a = this.primaryLanguage) === null || _a === void 0 ? void 0 : _a.suppressScript;
90
+ if (suppressed) {
91
+ this._script = this._iana.subtags.scripts.tryGet(suppressed);
92
+ }
93
+ }
94
+ if (!this._script) {
95
+ this._script = false;
96
+ }
97
+ }
98
+ return this._script ? this._script : undefined;
99
+ }
100
+ /**
101
+ * Registry data associated with the region subtag of the language tag from
102
+ * which this {@link Bcp47.LanguageTagRegistryData | Bcp47.LanguageTagRegistryData}
103
+ * was constructed, or `undefined` if the region is missing or invalid.
104
+ * @public
105
+ */
106
+ get region() {
107
+ if (this._region === undefined) {
108
+ if (this._subtags.region) {
109
+ this._region = this._iana.subtags.regions.tryGet(this._subtags.region);
110
+ }
111
+ if (!this._region) {
112
+ this._region = false;
113
+ }
114
+ }
115
+ return this._region ? this._region : undefined;
116
+ }
117
+ /**
118
+ * Registry data for grandfathered tags, or `undefined` if the tag is not recognized
119
+ * as a grandfathered tag.
120
+ * @public
121
+ */
122
+ get grandfathered() {
123
+ if (this._grandfathered === undefined) {
124
+ if (this._subtags.grandfathered) {
125
+ this._grandfathered = this._iana.subtags.grandfathered.tryGet(this._subtags.grandfathered);
126
+ }
127
+ if (!this._grandfathered) {
128
+ this._grandfathered = false;
129
+ }
130
+ }
131
+ return this._grandfathered ? this._grandfathered : undefined;
132
+ }
133
+ /**
134
+ * @returns A string representation of the subtags from which this
135
+ * {@link Bcp47.LanguageTagRegistryData | Bcp47.LanguageTagRegistryData}
136
+ * was created.
137
+ * @public
138
+ */
139
+ toString() {
140
+ return (0, common_1.subtagsToString)(this._subtags);
141
+ }
142
+ }
143
+ exports.LanguageRegistryData = LanguageRegistryData;
144
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFuZ3VhZ2VSZWdpc3RyeURhdGEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYmNwNDcvbGFuZ3VhZ2VSZWdpc3RyeURhdGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW9CRzs7O0FBSUgscUNBQW9EO0FBRXBEOzs7O0dBSUc7QUFDSCxNQUFhLG9CQUFvQjtJQThCN0I7Ozs7T0FJRztJQUNILFlBQW1CLE9BQWdCLEVBQUUsSUFBNkI7UUFDOUQsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7UUFDbEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUM7SUFDNUIsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsSUFBVyxlQUFlOztRQUN0QixJQUFJLElBQUksQ0FBQyxnQkFBZ0IsS0FBSyxTQUFTLEVBQUU7WUFDckMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLE1BQUEsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxtQ0FBSSxLQUFLLENBQUM7U0FDdkc7UUFDRCxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFDckUsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsSUFBVyxRQUFRO1FBQ2YsSUFBSSxJQUFJLENBQUMsU0FBUyxLQUFLLFNBQVMsRUFBRTtZQUM5QixJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxLQUFLLFNBQVMsRUFBRTtnQkFDdEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVE7cUJBQ2xDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztxQkFDakQsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFxRCxFQUFFLENBQUMsQ0FBQyxLQUFLLFNBQVMsQ0FBQyxDQUFDO2FBQzFGO1lBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7Z0JBQ2hFLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO2FBQzFCO1NBQ0o7UUFDRCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUN2RCxDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSCxJQUFXLE1BQU07O1FBQ2IsSUFBSSxJQUFJLENBQUMsT0FBTyxLQUFLLFNBQVMsRUFBRTtZQUM1QixJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFO2dCQUN0QixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQzthQUMxRTtZQUNELElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFO2dCQUNmLE1BQU0sVUFBVSxHQUFHLE1BQUEsSUFBSSxDQUFDLGVBQWUsMENBQUUsY0FBYyxDQUFDO2dCQUN4RCxJQUFJLFVBQVUsRUFBRTtvQkFDWixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7aUJBQ2hFO2FBQ0o7WUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRTtnQkFDZixJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQzthQUN4QjtTQUNKO1FBQ0QsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFDbkQsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsSUFBVyxNQUFNO1FBQ2IsSUFBSSxJQUFJLENBQUMsT0FBTyxLQUFLLFNBQVMsRUFBRTtZQUM1QixJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFO2dCQUN0QixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQzthQUMxRTtZQUNELElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFO2dCQUNmLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO2FBQ3hCO1NBQ0o7UUFDRCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUNuRCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILElBQVcsYUFBYTtRQUNwQixJQUFJLElBQUksQ0FBQyxjQUFjLEtBQUssU0FBUyxFQUFFO1lBQ25DLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLEVBQUU7Z0JBQzdCLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDO2FBQzlGO1lBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUU7Z0JBQ3RCLElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDO2FBQy9CO1NBQ0o7UUFDRCxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUNqRSxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxRQUFRO1FBQ1gsT0FBTyxJQUFBLHdCQUFlLEVBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzFDLENBQUM7Q0FDSjtBQWhKRCxvREFnSkMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDIyIEVyaWsgRm9ydHVuZVxuICpcbiAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbiAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbiAqIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbiAqIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbiAqXG4gKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGxcbiAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4gKlxuICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4gKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbiAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbiAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4gKiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRVxuICogU09GVFdBUkUuXG4gKi9cblxuaW1wb3J0ICogYXMgSWFuYSBmcm9tICcuLi9pYW5hJztcblxuaW1wb3J0IHsgU3VidGFncywgc3VidGFnc1RvU3RyaW5nIH0gZnJvbSAnLi9jb21tb24nO1xuXG4vKipcbiAqIFJldHVybnMgYWxsIG9mIHRoZSBkYXRhIGluIHRoZSBJQU5BIGxhbmd1YWdlIHN1YnRhZ3MgcmVnaXN0cnkgZm9yXG4gKiBhIHNldCBvZiBzdXBwbGllZCB7QGxpbmsgQmNwNDcuU3VidGFncyB8IHN1YnRhZ3N9LlxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY2xhc3MgTGFuZ3VhZ2VSZWdpc3RyeURhdGEge1xuICAgIC8qKlxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHByb3RlY3RlZCBfaWFuYTogSWFuYS5MYW5ndWFnZVJlZ2lzdHJpZXM7XG4gICAgLyoqXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHJvdGVjdGVkIF9zdWJ0YWdzOiBTdWJ0YWdzO1xuICAgIC8qKlxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHByb3RlY3RlZCBfcHJpbWFyeUxhbmd1YWdlPzogSWFuYS5MYW5ndWFnZVN1YnRhZ3MuTW9kZWwuUmVnaXN0ZXJlZExhbmd1YWdlIHwgZmFsc2U7XG4gICAgLyoqXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHJvdGVjdGVkIF9leHRsYW5ncz86IElhbmEuTGFuZ3VhZ2VTdWJ0YWdzLk1vZGVsLlJlZ2lzdGVyZWRFeHRMYW5nW10gfCBmYWxzZTtcbiAgICAvKipcbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgX3NjcmlwdD86IElhbmEuTGFuZ3VhZ2VTdWJ0YWdzLk1vZGVsLlJlZ2lzdGVyZWRTY3JpcHQgfCBmYWxzZTtcbiAgICAvKipcbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgX3JlZ2lvbj86IElhbmEuTGFuZ3VhZ2VTdWJ0YWdzLk1vZGVsLlJlZ2lzdGVyZWRSZWdpb24gfCBmYWxzZTtcbiAgICAvKipcbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgX2dyYW5kZmF0aGVyZWQ/OiBJYW5hLkxhbmd1YWdlU3VidGFncy5Nb2RlbC5SZWdpc3RlcmVkR3JhbmRmYXRoZXJlZFRhZyB8IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogQ29uc3RydWN0cyBhIG5ldyB7QGxpbmsgQmNwNDcuTGFuZ3VhZ2VUYWdSZWdpc3RyeURhdGEgfCBCY3A0Ny5MYW5ndWFnZVRhZ1JlZ2lzdHJ5RGF0YX1cbiAgICAgKiBmcm9tIGEgc3VwcGxpZWQge0BsaW5rIEJjcDQ3LlN1YnRhZ3MgfCBzdWJ0YWdzfSBhbmQge0BsaW5rIElhbmEuTGFuZ3VhZ2VSZWdpc3RyaWVzIHwgbGFuZ3VhZ2UgcmVnaXN0cmllc30uXG4gICAgICogQHB1YmxpY1xuICAgICAqL1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihzdWJ0YWdzOiBTdWJ0YWdzLCBpYW5hOiBJYW5hLkxhbmd1YWdlUmVnaXN0cmllcykge1xuICAgICAgICB0aGlzLl9pYW5hID0gaWFuYTtcbiAgICAgICAgdGhpcy5fc3VidGFncyA9IHN1YnRhZ3M7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVnaXN0cnkgZGF0YSBhc3NvY2lhdGVkIHdpdGggdGhlIHByaW1hcnkgbGFuZ3VhZ2Ugc3VidGFnIG9mIHRoZSBsYW5ndWFnZSB0YWcgZnJvbVxuICAgICAqIHdoaWNoIHRoaXMge0BsaW5rIEJjcDQ3Lkxhbmd1YWdlVGFnUmVnaXN0cnlEYXRhIHwgQmNwNDcuTGFuZ3VhZ2VUYWdSZWdpc3RyeURhdGF9XG4gICAgICogd2FzIGNvbnN0cnVjdGVkLCBvciBgdW5kZWZpbmVkYCBpZiB0aGUgcHJpbWFyeSBsYW5ndWFnZSBpcyBtaXNzaW5nIG9yIGludmFsaWQuXG4gICAgICogQHB1YmxpY1xuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgcHJpbWFyeUxhbmd1YWdlKCk6IElhbmEuTGFuZ3VhZ2VTdWJ0YWdzLk1vZGVsLlJlZ2lzdGVyZWRMYW5ndWFnZSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGlmICh0aGlzLl9wcmltYXJ5TGFuZ3VhZ2UgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhpcy5fcHJpbWFyeUxhbmd1YWdlID0gdGhpcy5faWFuYS5zdWJ0YWdzLmxhbmd1YWdlcy50cnlHZXQodGhpcy5fc3VidGFncy5wcmltYXJ5TGFuZ3VhZ2UpID8/IGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLl9wcmltYXJ5TGFuZ3VhZ2UgPyB0aGlzLl9wcmltYXJ5TGFuZ3VhZ2UgOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVnaXN0cnkgZGF0YSBhc3NvY2lhdGVkIHdpdGggdGhlIGV4dGxhbmcgc3VidGFnIG9mIHRoZSBsYW5ndWFnZSB0YWcgZnJvbVxuICAgICAqIHdoaWNoIHRoaXMge0BsaW5rIEJjcDQ3Lkxhbmd1YWdlVGFnUmVnaXN0cnlEYXRhIHwgQmNwNDcuTGFuZ3VhZ2VUYWdSZWdpc3RyeURhdGF9XG4gICAgICogd2FzIGNvbnN0cnVjdGVkLCBvciBgdW5kZWZpbmVkYCBpZiBleHRsYW5nIGlzIG1pc3Npbmcgb3IgaW52YWxpZC5cbiAgICAgKiBAcHVibGljXG4gICAgICovXG4gICAgcHVibGljIGdldCBleHRsYW5ncygpOiBJYW5hLkxhbmd1YWdlU3VidGFncy5Nb2RlbC5SZWdpc3RlcmVkRXh0TGFuZ1tdIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKHRoaXMuX2V4dGxhbmdzID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLl9zdWJ0YWdzLmV4dGxhbmdzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9leHRsYW5ncyA9IHRoaXMuX3N1YnRhZ3MuZXh0bGFuZ3NcbiAgICAgICAgICAgICAgICAgICAgLm1hcCgoZSkgPT4gdGhpcy5faWFuYS5zdWJ0YWdzLmV4dGxhbmdzLnRyeUdldChlKSlcbiAgICAgICAgICAgICAgICAgICAgLmZpbHRlcigoZSk6IGUgaXMgSWFuYS5MYW5ndWFnZVN1YnRhZ3MuTW9kZWwuUmVnaXN0ZXJlZEV4dExhbmcgPT4gZSAhPT0gdW5kZWZpbmVkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghdGhpcy5fc3VidGFncy5leHRsYW5ncyB8fCB0aGlzLl9zdWJ0YWdzLmV4dGxhbmdzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX2V4dGxhbmdzID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuX2V4dGxhbmdzID8gdGhpcy5fZXh0bGFuZ3MgOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVnaXN0cnkgZGF0YSBhc3NvY2lhdGVkIHdpdGggdGhlIHNjcmlwdCBvZiB0aGUgbGFuZ3VhZ2UgdGFnIGZyb21cbiAgICAgKiB3aGljaCB0aGlzIHtAbGluayBCY3A0Ny5MYW5ndWFnZVRhZ1JlZ2lzdHJ5RGF0YSB8IEJjcDQ3Lkxhbmd1YWdlVGFnUmVnaXN0cnlEYXRhfVxuICAgICAqIHdhcyBjb25zdHJ1Y3RlZCwgb3IgYHVuZGVmaW5lZGAgaWYgdGhlIHNjcmlwdCBjYW5ub3QgYmUgZGV0ZXJtaW5lZC5cbiAgICAgKlxuICAgICAqIE5vdGUgdGhhdCBzY3JpcHQgd2lsbCBkZWZhdWx0IHRvIHRoZSByZWdpc3RyeSBgU3VwcHJlc3MtU2NyaXB0YCB2YWx1ZSBvZiB0aGVcbiAgICAgKiBwcmltYXJ5IGxhbmd1YWdlIGlmIG5vIHNjcmlwdCBzdWJ0YWcgaXMgcHJlc2VudC5cbiAgICAgKiBAcHVibGljXG4gICAgICovXG4gICAgcHVibGljIGdldCBzY3JpcHQoKTogSWFuYS5MYW5ndWFnZVN1YnRhZ3MuTW9kZWwuUmVnaXN0ZXJlZFNjcmlwdCB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGlmICh0aGlzLl9zY3JpcHQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgaWYgKHRoaXMuX3N1YnRhZ3Muc2NyaXB0KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc2NyaXB0ID0gdGhpcy5faWFuYS5zdWJ0YWdzLnNjcmlwdHMudHJ5R2V0KHRoaXMuX3N1YnRhZ3Muc2NyaXB0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghdGhpcy5fc2NyaXB0KSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc3VwcHJlc3NlZCA9IHRoaXMucHJpbWFyeUxhbmd1YWdlPy5zdXBwcmVzc1NjcmlwdDtcbiAgICAgICAgICAgICAgICBpZiAoc3VwcHJlc3NlZCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9zY3JpcHQgPSB0aGlzLl9pYW5hLnN1YnRhZ3Muc2NyaXB0cy50cnlHZXQoc3VwcHJlc3NlZCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCF0aGlzLl9zY3JpcHQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zY3JpcHQgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5fc2NyaXB0ID8gdGhpcy5fc2NyaXB0IDogdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlZ2lzdHJ5IGRhdGEgYXNzb2NpYXRlZCB3aXRoIHRoZSByZWdpb24gc3VidGFnIG9mIHRoZSBsYW5ndWFnZSB0YWcgZnJvbVxuICAgICAqIHdoaWNoIHRoaXMge0BsaW5rIEJjcDQ3Lkxhbmd1YWdlVGFnUmVnaXN0cnlEYXRhIHwgQmNwNDcuTGFuZ3VhZ2VUYWdSZWdpc3RyeURhdGF9XG4gICAgICogd2FzIGNvbnN0cnVjdGVkLCBvciBgdW5kZWZpbmVkYCBpZiB0aGUgcmVnaW9uIGlzIG1pc3Npbmcgb3IgaW52YWxpZC5cbiAgICAgKiBAcHVibGljXG4gICAgICovXG4gICAgcHVibGljIGdldCByZWdpb24oKTogSWFuYS5MYW5ndWFnZVN1YnRhZ3MuTW9kZWwuUmVnaXN0ZXJlZFJlZ2lvbiB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGlmICh0aGlzLl9yZWdpb24gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgaWYgKHRoaXMuX3N1YnRhZ3MucmVnaW9uKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fcmVnaW9uID0gdGhpcy5faWFuYS5zdWJ0YWdzLnJlZ2lvbnMudHJ5R2V0KHRoaXMuX3N1YnRhZ3MucmVnaW9uKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghdGhpcy5fcmVnaW9uKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fcmVnaW9uID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuX3JlZ2lvbiA/IHRoaXMuX3JlZ2lvbiA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZWdpc3RyeSBkYXRhIGZvciBncmFuZGZhdGhlcmVkIHRhZ3MsIG9yIGB1bmRlZmluZWRgIGlmIHRoZSB0YWcgaXMgbm90IHJlY29nbml6ZWRcbiAgICAgKiBhcyBhIGdyYW5kZmF0aGVyZWQgdGFnLlxuICAgICAqIEBwdWJsaWNcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IGdyYW5kZmF0aGVyZWQoKTogSWFuYS5MYW5ndWFnZVN1YnRhZ3MuTW9kZWwuUmVnaXN0ZXJlZEdyYW5kZmF0aGVyZWRUYWcgfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAodGhpcy5fZ3JhbmRmYXRoZXJlZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5fc3VidGFncy5ncmFuZGZhdGhlcmVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZ3JhbmRmYXRoZXJlZCA9IHRoaXMuX2lhbmEuc3VidGFncy5ncmFuZGZhdGhlcmVkLnRyeUdldCh0aGlzLl9zdWJ0YWdzLmdyYW5kZmF0aGVyZWQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCF0aGlzLl9ncmFuZGZhdGhlcmVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZ3JhbmRmYXRoZXJlZCA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLl9ncmFuZGZhdGhlcmVkID8gdGhpcy5fZ3JhbmRmYXRoZXJlZCA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcmV0dXJucyBBIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgc3VidGFncyBmcm9tIHdoaWNoIHRoaXNcbiAgICAgKiB7QGxpbmsgQmNwNDcuTGFuZ3VhZ2VUYWdSZWdpc3RyeURhdGEgfCBCY3A0Ny5MYW5ndWFnZVRhZ1JlZ2lzdHJ5RGF0YX1cbiAgICAgKiB3YXMgY3JlYXRlZC5cbiAgICAgKiBAcHVibGljXG4gICAgICovXG4gICAgcHVibGljIHRvU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBzdWJ0YWdzVG9TdHJpbmcodGhpcy5fc3VidGFncyk7XG4gICAgfVxufVxuIl19
@@ -3,6 +3,7 @@ import { Result } from '@fgv/ts-utils';
3
3
  import { Subtags } from './common';
4
4
  import { TagNormalization } from './normalization/common';
5
5
  import { TagValidity } from './validation/common';
6
+ import { LanguageRegistryData } from './languageRegistryData';
6
7
  import { ScriptSubtag } from '../iana/language-subtags';
7
8
  /**
8
9
  * Initialization options for parsing or creation of {@link Bcp47.LanguageTag | language tag} objects.
@@ -37,6 +38,11 @@ export declare class LanguageTag {
37
38
  * A string representation of this language tag.
38
39
  */
39
40
  readonly tag: string;
41
+ /**
42
+ * Details about this language tag from the IANA language
43
+ * registries.
44
+ */
45
+ readonly registry: LanguageRegistryData;
40
46
  /**
41
47
  * @internal
42
48
  */
@@ -1 +1 @@
1
- {"version":3,"file":"languageTag.d.ts","sourceRoot":"","sources":["../../src/bcp47/languageTag.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"languageTag.d.ts","sourceRoot":"","sources":["../../src/bcp47/languageTag.ts"],"names":[],"mappings":"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"}
@@ -50,6 +50,7 @@ const ts_utils_1 = require("@fgv/ts-utils");
50
50
  const common_1 = require("./common");
51
51
  const common_2 = require("./normalization/common");
52
52
  const common_3 = require("./validation/common");
53
+ const languageRegistryData_1 = require("./languageRegistryData");
53
54
  const languageTagParser_1 = require("./languageTagParser");
54
55
  const normalization_1 = require("./normalization");
55
56
  const validation_1 = require("./validation");
@@ -76,6 +77,7 @@ class LanguageTag {
76
77
  this._validity = validity;
77
78
  this.tag = (0, common_1.subtagsToString)(subtags);
78
79
  this._iana = iana;
80
+ this.registry = new languageRegistryData_1.LanguageRegistryData(this.subtags, iana);
79
81
  if (validity === 'strictly-valid') {
80
82
  this._isStrictlyValid = true;
81
83
  this._isValid = true;
@@ -339,4 +341,4 @@ class LanguageTag {
339
341
  }
340
342
  }
341
343
  exports.LanguageTag = LanguageTag;
342
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFuZ3VhZ2VUYWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYmNwNDcvbGFuZ3VhZ2VUYWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW9CRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFSCw4Q0FBZ0M7QUFFaEMsNENBQStEO0FBQy9ELHFDQUEwRTtBQUMxRSxtREFBMEU7QUFDMUUsZ0RBQTZEO0FBRTdELDJEQUF3RDtBQUN4RCxtREFBK0M7QUFFL0MsNkNBQTJDO0FBc0IzQzs7O0dBR0c7QUFDSCxNQUFhLFdBQVc7SUFvRHBCOzs7Ozs7Ozs7OztPQVdHO0lBQ0gsWUFBc0IsT0FBZ0IsRUFBRSxRQUFxQixFQUFFLGFBQStCLEVBQUUsSUFBNkI7UUFDekgsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsR0FBRyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQzdDLElBQUksQ0FBQyxjQUFjLEdBQUcsYUFBYSxDQUFDO1FBQ3BDLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDO1FBQzFCLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBQSx3QkFBZSxFQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3BDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1FBRWxCLElBQUksUUFBUSxLQUFLLGdCQUFnQixFQUFFO1lBQy9CLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7WUFDN0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7U0FDeEI7YUFBTSxJQUFJLFFBQVEsS0FBSyxPQUFPLEVBQUU7WUFDN0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7U0FDeEI7UUFFRCxJQUFJLGFBQWEsS0FBSyxXQUFXLEVBQUU7WUFDL0IsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7WUFDekIsSUFBSSxDQUFDLFlBQVksR0FBRyxJ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QUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxjQUFjLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDdEcsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxXQUFXO1FBQ2QsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ2xCLE9BQU8sSUFBQSxrQkFBTyxFQUFDLElBQUksQ0FBQyxDQUFDO1NBQ3hCO1FBQ0QsTUFBTSxPQUFPLEdBQTJCO1lBQ3BDLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSztZQUNoQixRQUFRLEVBQUUsT0FBTztZQUNqQixhQUFhLEVBQUUsV0FBVztTQUM3QixDQUFDO1FBQ0YsT0FBTyxXQUFXLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxjQUFjLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDdEcsQ0FBQztJQUVEOzs7T0FHRztJQUNJLFFBQVE7UUFDWCxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUM7SUFDcEIsQ0FBQztDQUNKO0FBOVZELGtDQThWQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjIgRXJpayBGb3J0dW5lXG4gKlxuICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuICogaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuICogdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4gKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuICpcbiAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbFxuICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbiAqXG4gKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4gKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbiAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbiAqIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFXG4gKiBTT0ZUV0FSRS5cbiAqL1xuXG5pbXBvcnQgKiBhcyBJYW5hIGZyb20gJy4uL2lhbmEnO1xuXG5pbXBvcnQgeyBSZXN1bHQsIGNhcHR1cmVSZXN1bHQsIHN1Y2NlZWQgfSBmcm9tICdAZmd2L3RzLXV0aWxzJztcbmltcG9ydCB7IFN1YnRhZ3MsIFVuZGV0ZXJtaW5lZExhbmd1YWdlLCBzdWJ0YWdzVG9TdHJpbmcgfSBmcm9tICcuL2NvbW1vbic7XG5pbXBvcnQgeyBUYWdOb3JtYWxpemF0aW9uLCBtb3N0Tm9ybWFsaXplZCB9IGZyb20gJy4vbm9ybWFsaXphdGlvbi9jb21tb24nO1xuaW1wb3J0IHsgVGFnVmFsaWRpdHksIG1vc3RWYWxpZCB9IGZyb20gJy4vdmFsaWRhdGlvbi9jb21tb24nO1xuXG5pbXBvcnQgeyBMYW5ndWFnZVRhZ1BhcnNlciB9IGZyb20gJy4vbGFuZ3VhZ2VUYWdQYXJzZXInO1xuaW1wb3J0IHsgTm9ybWFsaXplVGFnIH0gZnJvbSAnLi9ub3JtYWxpemF0aW9uJztcbmltcG9ydCB7IFNjcmlwdFN1YnRhZyB9IGZyb20gJy4uL2lhbmEvbGFuZ3VhZ2Utc3VidGFncyc7XG5pbXBvcnQgeyBWYWxpZGF0ZVRhZyB9IGZyb20gJy4vdmFsaWRhdGlvbic7XG5cbi8qKlxuICogSW5pdGlhbGl6YXRpb24gb3B0aW9ucyBmb3IgcGFyc2luZyBvciBjcmVhdGlvbiBvZiB7QGxpbmsgQmNwNDcuTGFuZ3VhZ2VUYWcgfCBsYW5ndWFnZSB0YWd9IG9iamVjdHMuXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTGFuZ3VhZ2VUYWdJbml0T3B0aW9ucyB7XG4gICAgLyoqXG4gICAgICogRGVzaXJlZCB7QGxpbmsgQmNwNDcuVGFnVmFsaWRpdHkgfCB2YWxpZGl0eSBsZXZlbH0gKG9wdGlvbmFsKS5cbiAgICAgKi9cbiAgICB2YWxpZGl0eT86IFRhZ1ZhbGlkaXR5O1xuICAgIC8qKlxuICAgICAqIERlc2lyZWQge0BsaW5rIEJjcDQ3LlRhZ05vcm1hbGl6YXRpb24gfCBub3JtYWxpemF0aW9uIGxldmVsfSAob3B0aW9uYWwpLlxuICAgICAqL1xuICAgIG5vcm1hbGl6YXRpb24/OiBUYWdOb3JtYWxpemF0aW9uO1xuICAgIC8qKlxuICAgICAqIFRoZSB7QGxpbmsgSWFuYS5MYW5ndWFnZVJlZ2lzdHJpZXMgfCBJQU5BIGxhbmd1YWdlIHN1YnRhZyBhbmQgZXh0ZW5zaW9uIHJlZ2lzdHJpZXN9IHRvXG4gICAgICogYmUgdXNlZCBmb3IgdGhlIHJlcXVlc3QgKG9wdGlvbmFsKS5cbiAgICAgKi9cbiAgICBpYW5hPzogSWFuYS5MYW5ndWFnZVJlZ2lzdHJpZXM7XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIHNpbmdsZSBCQ1AtNDcgbGFuZ3VhZ2UgdGFnLlxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY2xhc3MgTGFuZ3VhZ2VUYWcge1xuICAgIC8qKlxuICAgICAqIFRoZSBpbmRpdmlkdWFsIHtAbGluayBCY3A0Ny5TdWJ0YWdzIHwgc3VidGFnc30gZm9yXG4gICAgICogdGhpcyBsYW5ndWFnZSB0YWcuXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IHN1YnRhZ3M6IFJlYWRvbmx5PFN1YnRhZ3M+O1xuXG4gICAgLyoqXG4gICAgICogQSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBsYW5ndWFnZSB0YWcuXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IHRhZzogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IF9pYW5hOiBJYW5hLkxhbmd1YWdlUmVnaXN0cmllcztcblxuICAgIC8qKlxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHByb3RlY3RlZCBfdmFsaWRpdHk6IFRhZ1ZhbGlkaXR5O1xuXG4gICAgLyoqXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHJvdGVjdGVkIF9ub3JtYWxpemF0aW9uOiBUYWdOb3JtYWxpemF0aW9uO1xuXG4gICAgLyoqXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHJvdGVjdGVkIF9pc1ZhbGlkOiB1bmRlZmluZWQgfCBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHJvdGVjdGVkIF9pc1N0cmljdGx5VmFsaWQ6IHVuZGVmaW5lZCB8IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgX2lzQ2Fub25pY2FsOiB1bmRlZmluZWQgfCBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHJvdGVjdGVkIF9pc1ByZWZlcnJlZDogdW5kZWZpbmVkIHwgYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHByb3RlY3RlZCBfc3VwcHJlc3NlZFNjcmlwdDogdW5kZWZpbmVkIHwgU2NyaXB0U3VidGFnIHwgZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBDb25zdHJ1Y3RzIGEge0BsaW5rIEJjcDQ3Lkxhbmd1YWdlVGFnIHwgTGFuZ3VhZ2VUYWcgfS5cbiAgICAgKiBAcGFyYW0gc3VidGFncyAtIFRoZSB7QGxpbmsgQmNwNDcuU3VidGFncyB8IHN1YnRhZ3MgfSBmcm9tXG4gICAgICogd2hpY2ggdGhlIHRhZyBpcyBjb25zdHJ1Y3RlZC5cbiAgICAgKiBAcGFyYW0gdmFsaWRpdHkgLSBLbm93biB7QGxpbmsgQmNwNDcuVGFnVmFsaWRpdHkgfCB2YWxpZGF0aW9uIGxldmVsfSBvZiB0aGVcbiAgICAgKiBzdXBwbGllZCBzdWJ0YWdzLlxuICAgICAqIEBwYXJhbSBub3JtYWxpemF0aW9uIC0gS25vd24ge0BsaW5rIEJjcDQ3LlRhZ05vcm1hbGl6YXRpb24gfCBub3JtYWxpemF0aW9uIGxldmVsfVxuICAgICAqIG9mIHRoZSBzdXBwbGllZCBzdWJ0YWdzLlxuICAgICAqIEBwYXJhbSBpYW5hIC0gVGhlIHtAbGluayBJYW5hLkxhbmd1YWdlUmVnaXN0cmllc30gdXNlZCB0byB2YWxpZGF0ZSBhbmQgbm9ybWFsaXplXG4gICAgICogdGhpcyB0YWcuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKHN1YnRhZ3M6IFN1YnRhZ3MsIHZhbGlkaXR5OiBUYWdWYWxpZGl0eSwgbm9ybWFsaXphdGlvbjogVGFnTm9ybWFsaXphdGlvbiwgaWFuYTogSWFuYS5MYW5ndWFnZVJlZ2lzdHJpZXMpIHtcbiAgICAgICAgdGhpcy5zdWJ0YWdzID0gT2JqZWN0LmZyZWV6ZSh7IC4uLnN1YnRhZ3MgfSk7XG4gICAgICAgIHRoaXMuX25vcm1hbGl6YXRpb24gPSBub3JtYWxpemF0aW9uO1xuICAgICAgICB0aGlzLl92YWxpZGl0eSA9IHZhbGlkaXR5O1xuICAgICAgICB0aGlzLnRhZyA9IHN1YnRhZ3NUb1N0cmluZyhzdWJ0YWdzKTtcbiAgICAgICAgdGhpcy5faWFuYSA9IGlhbmE7XG5cbiAgICAgICAgaWYgKHZhbGlkaXR5ID09PSAnc3RyaWN0bHktdmFsaWQnKSB7XG4gICAgICAgICAgICB0aGlzLl9pc1N0cmljdGx5VmFsaWQgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5faXNWYWxpZCA9IHRydWU7XG4gICAgICAgIH0gZWxzZSBpZiAodmFsaWRpdHkgPT09ICd2YWxpZCcpIHtcbiAgICAgICAgICAgIHRoaXMuX2lzVmFsaWQgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG5vcm1hbGl6YXRpb24gPT09ICdwcmVmZXJyZWQnKSB7XG4gICAgICAgICAgICB0aGlzLl9pc1ByZWZlcnJlZCA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLl9pc0Nhbm9uaWNhbCA9IHRydWU7XG4gICAgICAgIH0gZWxzZSBpZiAobm9ybWFsaXphdGlvbiA9PT0gJ2Nhbm9uaWNhbCcpIHtcbiAgICAgICAgICAgIHRoaXMuX2lzQ2Fub25pY2FsID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBlZmZlY3RpdmUgc2NyaXB0IG9mIHRoaXMgbGFuZ3VhZ2UgdGFnLCBpZiBrbm93bi5cbiAgICAgKiBUaGUgZWZmZWN0aXZlIHNjcmlwdCBpcyB0aGUgc2NyaXB0IHN1YnRhZyBpbiB0aGUgdGFnIGl0c2VsZixcbiAgICAgKiBpZiBwcmVzZW50LCBvciB0aGUgYFN1cHByZXNzLVNjcmlwdGAgZGVmaW5lZCBpbiB0aGVcbiAgICAgKiB7QGxpbmsgaHR0cHM6Ly93d3cuaWFuYS5vcmcvYXNzaWdubWVudHMvbGFuZ3VhZ2Utc3VidGFnLXJlZ2lzdHJ5L2xhbmd1YWdlLXN1YnRhZy1yZWdpc3RyeSB8IElBTkEgc3VidGFnIHJlZ2lzdHJ5fVxuICAgICAqIGZvciB0aGUgcHJpbWFyeSBsYW5ndWFnZSBvZiB0aGlzIHRhZy4gIENhbiBiZSBgdW5kZWZpbmVkYFxuICAgICAqIGlmIG5laXRoZXIgdGhlIHRhZyBub3IgdGhlIElBTkEgcmVnaXN0cnkgZGVmaW5lIGEgc2NyaXB0LlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgZWZmZWN0aXZlU2NyaXB0KCk6IFNjcmlwdFN1YnRhZyB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB0aGlzLnN1YnRhZ3Muc2NyaXB0ID8/IHRoaXMuZ2V0U3VwcHJlc3NlZFNjcmlwdCgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERldGVybWluZXMgaWYgdGhpcyB0YWcgcmVwcmVzZW50cyB0aGUgc3BlY2lhbCBgdW5kZXRlcm1pbmVkYCBsYW5ndWFnZS5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IGlzVW5kZXRlcm1pbmVkKCk6IGJvb2xlYW4ge1xuICAgICAgICAvLyBpc3RhbmJ1bCBpZ25vcmUgbmV4dFxuICAgICAgICByZXR1cm4gdGhpcy5zdWJ0YWdzLnByaW1hcnlMYW5ndWFnZT8udG9Mb3dlckNhc2UoKSA9PT0gVW5kZXRlcm1pbmVkTGFuZ3VhZ2U7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogV2hldGhlciB0aGlzIGxhbmd1YWdlIHRhZyBpcyB2YWxpZC5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IGlzVmFsaWQoKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICh0aGlzLl9pc1ZhbGlkID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRoaXMuX2lzVmFsaWQgPSBWYWxpZGF0ZVRhZy5pc1ZhbGlkKHRoaXMuc3VidGFncyk7XG4gICAgICAgICAgICBpZiAodGhpcy5faXNWYWxpZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX3ZhbGlkaXR5ID0gJ3ZhbGlkJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5faXNWYWxpZCA9PT0gdHJ1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIGlmIHRoaXMgbGFuZ3VhZ2UgdGFnIGlzIHN0cmljdGx5IHZhbGlkLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgaXNTdHJpY3RseVZhbGlkKCk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAodGhpcy5faXNTdHJpY3RseVZhbGlkID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRoaXMuX2lzU3RyaWN0bHlWYWxpZCA9IFZhbGlkYXRlVGFnLmlzU3RyaWN0bHlWYWxpZCh0aGlzLnN1YnRhZ3MpO1xuICAgICAgICAgICAgaWYgKHRoaXMuX2lzU3RyaWN0bHlWYWxpZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX3ZhbGlkaXR5ID0gJ3N0cmljdGx5LXZhbGlkJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5faXNTdHJpY3RseVZhbGlkID09PSB0cnVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdGhpcyBsYW5ndWFnZSB0YWcgaXMgaW4gY2Fub25pY2FsIGZvcm0uXG4gICAgICovXG4gICAgcHVibGljIGdldCBpc0Nhbm9uaWNhbCgpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKHRoaXMuX2lzQ2Fub25pY2FsID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRoaXMuX2lzQ2Fub25pY2FsID0gVmFsaWRhdGVUYWcuaXNDYW5vbmljYWwodGhpcy5zdWJ0YWdzKTtcbiAgICAgICAgICAgIGlmICh0aGlzLl9pc0Nhbm9uaWNhbCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX25vcm1hbGl6YXRpb24gPSAnY2Fub25pY2FsJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5faXNDYW5vbmljYWwgPT09IHRydWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogV2hldGhlciB0aGlzIGxhbmd1YWdlIHRhZyBpcyBpbiBwcmVmZXJyZWQgZm9ybS5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IGlzUHJlZmVycmVkKCk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAodGhpcy5faXNQcmVmZXJyZWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhpcy5faXNQcmVmZXJyZWQgPSBWYWxpZGF0ZVRhZy5pc0luUHJlZmVycmVkRm9ybSh0aGlzLnN1YnRhZ3MpO1xuICAgICAgICAgICAgaWYgKHRoaXMuX2lzUHJlZmVycmVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fbm9ybWFsaXphdGlvbiA9ICdwcmVmZXJyZWQnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLl9pc1ByZWZlcnJlZCA9PT0gdHJ1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgbmV3IHtAbGluayBCY3A0Ny5MYW5ndWFnZVRhZyB8IGxhbmd1YWdlIHRhZ30gZnJvbSBhIHN1cHBsaWVkIGBzdHJpbmdgIHRhZ1xuICAgICAqIHVzaW5nIG9wdGlvbmFsIGNvbmZpZ3VyYXRpb24sIGlmIHN1cHBsaWVkLlxuICAgICAqIEBwYXJhbSB0YWcgLSBUaGUgYHN0cmluZ2AgdGFnIGZyb20gd2hpY2ggdGhlIHtAbGluayBCY3A0Ny5MYW5ndWFnZVRhZyB8IGxhbmd1YWdlIHRhZ31cbiAgICAgKiBpcyB0ZSBiZSBjb25zdHJ1Y3RlZC5cbiAgICAgKiBAcGFyYW0gb3B0aW9ucyAtIChvcHRpb25hbCkgc2V0IG9mIHtAbGluayBCY3A0Ny5MYW5ndWFnZVRhZ0luaXRPcHRpb25zIHwgaW5pdCBvcHRpb25zfVxuICAgICAqIHRvIGd1aWRlIHRoZSB2YWxpZGF0aW9uIGFuZCBub3JtYWxpemF0aW9uIG9mIHRoaXMgdGFnLlxuICAgICAqIEByZXR1cm5zIGBTdWNjZXNzYCB3aXRoIHRoZSBuZXcge0BsaW5rIEJjcDQ3Lkxhbmd1YWdlVGFnIHwgbGFuZ3VhZ2UgdGFnfSBvciBgRmFpbHVyZWBcbiAgICAgKiB3aXRoIGRldGFpbHMgaWYgYW4gZXJyb3Igb2NjdXJzLlxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgY3JlYXRlRnJvbVRhZyh0YWc6IHN0cmluZywgb3B0aW9ucz86IExhbmd1YWdlVGFnSW5pdE9wdGlvbnMpOiBSZXN1bHQ8TGFuZ3VhZ2VUYWc+IHtcbiAgICAgICAgb3B0aW9ucyA9IHRoaXMuX2dldE9wdGlvbnMob3B0aW9ucyk7XG5cbiAgICAgICAgcmV0dXJuIExhbmd1YWdlVGFnUGFyc2VyLnBhcnNlKHRhZywgb3B0aW9ucy5pYW5hKS5vblN1Y2Nlc3MoKHN1YnRhZ3MpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9jcmVhdGVUcmFuc2Zvcm1lZChzdWJ0YWdzLCAndW5rbm93bicsICd1bmtub3duJywgb3B0aW9ucyk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBuZXcge0BsaW5rIEJjcDQ3Lkxhbmd1YWdlVGFnIHwgbGFuZ3VhZ2UgdGFnfSBmcm9tIGEgc3VwcGxpZWRcbiAgICAgKiB7QGxpbmsgQmNwNDcuU3VidGFncyB8IHN1YnRhZ3N9IHVzaW5nIG9wdGlvbmFsIGNvbmZpZ3VyYXRpb24sXG4gICAgICogaWYgc3VwcGxpZWQuXG4gICAgICogQHBhcmFtIHRhZyAtIFRoZSB7QGxpbmsgQmNwNDcuU3VidGFncyB8IHN1YnRhZ3N9IGZyb20gd2hpY2ggdGhlXG4gICAgICoge0BsaW5rIEJjcDQ3Lkxhbmd1YWdlVGFnIHwgbGFuZ3VhZ2UgdGFnfSBpcyB0ZSBiZSBjb25zdHJ1Y3RlZC5cbiAgICAgKiBAcGFyYW0gb3B0aW9ucyAtIChvcHRpb25hbCkgc2V0IG9mIHtAbGluayBCY3A0Ny5MYW5ndWFnZVRhZ0luaXRPcHRpb25zIHwgaW5pdCBvcHRpb25zfVxuICAgICAqIHRvIGd1aWRlIHRoZSB2YWxpZGF0aW9uIGFuZCBub3JtYWxpemF0aW9uIG9mIHRoaXMgdGFnLlxuICAgICAqIEByZXR1cm5zIGBTdWNjZXNzYCB3aXRoIHRoZSBuZXcge0BsaW5rIEJjcDQ3Lkxhbmd1YWdlVGFnIHwgbGFuZ3VhZ2UgdGFnfSBvciBgRmFpbHVyZWBcbiAgICAgKiB3aXRoIGRldGFpbHMgaWYgYW4gZXJyb3Igb2NjdXJzLlxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgY3JlYXRlRnJvbVN1YnRhZ3Moc3VidGFnczogU3VidGFncywgb3B0aW9ucz86IExhbmd1YWdlVGFnSW5pdE9wdGlvbnMpOiBSZXN1bHQ8TGFuZ3VhZ2VUYWc+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NyZWF0ZVRyYW5zZm9ybWVkKHN1YnRhZ3MsICd1bmtub3duJywgJ3Vua25vd24nLCBvcHRpb25zKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgbmV3IHtAbGluayBCY3A0Ny5MYW5ndWFnZVRhZyB8IGxhbmd1YWdlIHRhZ30gZnJvbSBhIHN1cHBsaWVkIGBzdHJpbmdgXG4gICAgICogdGFnIG9yIHtAbGluayBCY3A0Ny5TdWJ0YWdzIHwgc3VidGFnc30gdXNpbmcgb3B0aW9uYWwgY29uZmlndXJhdGlvbixcbiAgICAgKiBpZiBzdXBwbGllZC5cbiAgICAgKiBAcGFyYW0gZnJvbSAtIFRoZSBgc3RyaW5nYCB0YWcgb3Ige0BsaW5rIEJjcDQ3LlN1YnRhZ3MgfCBzdWJ0YWdzfSBmcm9tXG4gICAgICogd2hpY2ggdGhlIHtAbGluayBCY3A0Ny5MYW5ndWFnZVRhZyB8IGxhbmd1YWdlIHRhZ30gaXMgdGUgYmUgY29uc3RydWN0ZWQuXG4gICAgICogQHBhcmFtIG9wdGlvbnMgLSAob3B0aW9uYWwpIHNldCBvZiB7QGxpbmsgQmNwNDcuTGFuZ3VhZ2VUYWdJbml0T3B0aW9ucyB8IGluaXQgb3B0aW9uc31cbiAgICAgKiB0byBndWlkZSB0aGUgdmFsaWRhdGlvbiBhbmQgbm9ybWFsaXphdGlvbiBvZiB0aGlzIHRhZy5cbiAgICAgKiBAcmV0dXJucyBgU3VjY2Vzc2Agd2l0aCB0aGUgbmV3IHtAbGluayBCY3A0Ny5MYW5ndWFnZVRhZyB8IGxhbmd1YWdlIHRhZ30gb3IgYEZhaWx1cmVgXG4gICAgICogd2l0aCBkZXRhaWxzIGlmIGFuIGVycm9yIG9jY3Vycy5cbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIGNyZWF0ZShmcm9tOiBzdHJpbmcgfCBTdWJ0YWdzLCBvcHRpb25zPzogTGFuZ3VhZ2VUYWdJbml0T3B0aW9ucyk6IFJlc3VsdDxMYW5ndWFnZVRhZz4ge1xuICAgICAgICBpZiAodHlwZW9mIGZyb20gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVGcm9tVGFnKGZyb20sIG9wdGlvbnMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlRnJvbVN1YnRhZ3MoZnJvbSwgb3B0aW9ucyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb25zdHJ1Y3RzIGEgbmV3IHtAbGluayBCY3A0Ny5MYW5ndWFnZVRhZyB8IGxhbmd1YWdlIHRhZ30gYnkgYXBwbHlpbmcgYXBwcm9wcmlhdGUgdHJhbnNmb3JtYXRpb25zXG4gICAgICogdG8gYXMgc3VwcGxpZWQge0BsaW5rIEJjcDQ3LlN1YnRhZ3MgfCBCY3A0Ny5TdWJ0YWdzfS5cbiAgICAgKiBAcGFyYW0gc3VidGFncyAtIFRoZSB7QGxpbmsgQmNwNDcuU3VidGFncyB8IHN1YnRhZ3N9IHdoaWNoIHJlcHJlc2VudCB0aGUgdGFnLlxuICAgICAqIEBwYXJhbSBmcm9tVmFsaWRpdHkgLSBUaGUge0BsaW5rIEJjcDQ3LlRhZ1ZhbGlkaXR5IHwgdmFsaWRhdGlvbiBsZXZlbH0gb2YgdGhlIHN1cHBsaWVkIHN1YnRhZ3MuXG4gICAgICogQHBhcmFtIGZyb21Ob3JtYWxpemF0aW9uIC0gVGhlIHtAbGluayBCY3A0Ny5UYWdOb3JtYWxpemF0aW9uIHwgbm9ybWFsaXphdGlvbiBsZXZlbH0gZm8gdGhlXG4gICAgICogc3VwcGxpZWQgc3VidGFncy5cbiAgICAgKiBAcGFyYW0gcGFydGlhbE9wdGlvbnMgLSBBbnkge0BsaW5rIEJjcDQ3Lkxhbmd1YWdlVGFnSW5pdE9wdGlvbnMgfCBpbml0aWFsaXphdGlvbiBvcHRpb25zfS5cbiAgICAgKiBAcmV0dXJucyBgU3VjY2Vzc2Agd2l0aCB0aGUgY29ycmVzcG9uZGluZyB7QGxpbmsgQmNwNDcuTGFuZ3VhZ2VUYWcgfCBsYW5ndWFnZSB0YWd9IG9yIGBGYWlsdXJlYFxuICAgICAqIHdpdGggZGV0YWlscyBpZiBhbiBlcnJvciBvY2N1cnMuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHN0YXRpYyBfY3JlYXRlVHJhbnNmb3JtZWQoXG4gICAgICAgIHN1YnRhZ3M6IFN1YnRhZ3MsXG4gICAgICAgIGZyb21WYWxpZGl0eTogVGFnVmFsaWRpdHksXG4gICAgICAgIGZyb21Ob3JtYWxpemF0aW9uOiBUYWdOb3JtYWxpemF0aW9uLFxuICAgICAgICBwYXJ0aWFsT3B0aW9ucz86IExhbmd1YWdlVGFnSW5pdE9wdGlvbnNcbiAgICApOiBSZXN1bHQ8TGFuZ3VhZ2VUYWc+IHtcbiAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuX2dldE9wdGlvbnMocGFydGlhbE9wdGlvbnMpO1xuICAgICAgICByZXR1cm4gVmFsaWRhdGVUYWcudmFsaWRhdGVTdWJ0YWdzKHN1YnRhZ3MsIG9wdGlvbnMudmFsaWRpdHksIGZyb21WYWxpZGl0eSlcbiAgICAgICAgICAgIC5vblN1Y2Nlc3MoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBOb3JtYWxpemVUYWcubm9ybWFsaXplU3VidGFncyhzdWJ0YWdzLCBvcHRpb25zLm5vcm1hbGl6YXRpb24sIGZyb21Ob3JtYWxpemF0aW9uKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAub25TdWNjZXNzKChub3JtYWxpemVkKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgdmFsaWRpdHkgPSBtb3N0VmFsaWQoZnJvbVZhbGlkaXR5LCBvcHRpb25zLnZhbGlkaXR5KTtcbiAgICAgICAgICAgICAgICBjb25zdCBub3JtYWxpemF0aW9uID0gbW9zdE5vcm1hbGl6ZWQoZnJvbU5vcm1hbGl6YXRpb24sIG9wdGlvbnMubm9ybWFsaXphdGlvbik7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNhcHR1cmVSZXN1bHQoKCkgPT4gbmV3IExhbmd1YWdlVGFnKG5vcm1hbGl6ZWQsIHZhbGlkaXR5LCBub3JtYWxpemF0aW9uLCBvcHRpb25zLmlhbmEpKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgYSBmdWxseS1zcGVjaWZpZWQge0BsaW5rIEJjcDQ3Lkxhbmd1YWdlVGFnSW5pdE9wdGlvbnN9IGZyb20gcGFydGlhbCBvciB1bmRlZmluZWRcbiAgICAgKiBvcHRpb25zLCBzdWJzdGl0dXRpbmcgZGVmYXVsdHMgYXMgYXBwcm9wcmlhdGUuXG4gICAgICogQHBhcmFtIG9wdGlvbnMgLSBUaGUge0BsaW5rIEJjcDQ3Lkxhbmd1YWdlVGFnSW5pdE9wdGlvbnN9IHRvIGJlIGV4cGFuZGVkLCBvciBgdW5kZWZpbmVkYFxuICAgICAqIGZvciBkZWZhdWx0IG9wdGlvbnMuXG4gICAgICogQHJldHVybnMgRnVsbHktc3BlY2lmaWVkIHtAbGluayBCY3A0Ny5MYW5ndWFnZVRhZ0luaXRPcHRpb25zIHwgaW5pdCBvcHRpb25zfS5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgc3RhdGljIF9nZXRPcHRpb25zKG9wdGlvbnM/OiBMYW5ndWFnZVRhZ0luaXRPcHRpb25zKTogUmVxdWlyZWQ8TGFuZ3VhZ2VUYWdJbml0T3B0aW9ucz4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaWFuYTogb3B0aW9ucz8uaWFuYSA/PyBJYW5hLkRlZmF1bHRSZWdpc3RyaWVzLmxhbmd1YWdlUmVnaXN0cmllcyxcbiAgICAgICAgICAgIHZhbGlkaXR5OiBvcHRpb25zPy52YWxpZGl0eSA/PyAnd2VsbC1mb3JtZWQnLFxuICAgICAgICAgICAgbm9ybWFsaXphdGlvbjogb3B0aW9ucz8ubm9ybWFsaXphdGlvbiA/PyAnbm9uZScsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgYFN1cHByZXNzLVNjcmlwdGAgdmFsdWUgZGVmaW5lZCBmb3IgdGhlIHByaW1hcnkgbGFuZ3VhZ2Ugb2YgdGhpcyB0YWcsXG4gICAgICogcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGEgZGlmZmVyZW50IHNjcmlwdCBpcyBkZWZpbmVkIGluIHRoaXMgc3VidGFnLlxuICAgICAqIEByZXR1cm5zIFRoZSBzdXBwcmVzcy1zY3JpcHQgZGVmaW5lZCBmb3IgdGhlIHByaW1hcnkgbGFuZ3VhZ2UsIG9yIHVuZGVmaW5lZCBpZlxuICAgICAqIHRoZSBwcmltYXJ5IGxhbmd1YWdlIGlzIGludmFsaWQgb3IgaGFzIG5vIGRlZmluZWQgc3VwcHJlc3NlZCBzY3JpcHQuXG4gICAgICovXG4gICAgcHVibGljIGdldFN1cHByZXNzZWRTY3JpcHQoKTogU2NyaXB0U3VidGFnIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKHRoaXMuX3N1cHByZXNzZWRTY3JpcHQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhpcy5fc3VwcHJlc3NlZFNjcmlwdCA9IGZhbHNlO1xuICAgICAgICAgICAgaWYgKHRoaXMuc3VidGFncy5wcmltYXJ5TGFuZ3VhZ2UpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBsYW5ndWFnZSA9IHRoaXMuX2lhbmEuc3VidGFncy5sYW5ndWFnZXMudHJ5R2V0KHRoaXMuc3VidGFncy5wcmltYXJ5TGFuZ3VhZ2UpO1xuICAgICAgICAgICAgICAgIGlmIChsYW5ndWFnZT8uc3VwcHJlc3NTY3JpcHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9zdXBwcmVzc2VkU2NyaXB0ID0gbGFuZ3VhZ2Uuc3VwcHJlc3NTY3JpcHQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLl9zdXBwcmVzc2VkU2NyaXB0ID8gdGhpcy5fc3VwcHJlc3NlZFNjcmlwdCA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIGEgY29uZmlybWVkIHZhbGlkIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgbGFuZ3VhZ2UgdGFnLlxuICAgICAqIEByZXR1cm5zIGBTdWNjZXNzYCB3aXRoIGEgdmFsaWQgcmVwcmVzZW50YXRpb24gb2YgdGhpcyB7QGxpbmsgQmNwNDcuTGFuZ3VhZ2VUYWcgfCBsYW5ndWFnZSB0YWd9LFxuICAgICAqIG9yIGBGYWlsdXJlYCB3aXRoIGRldGFpbHMgaWYgdGhlIHRhZyBjYW5ub3QgYmUgdmFsaWRhdGVkLlxuICAgICAqL1xuICAgIHB1YmxpYyB0b1ZhbGlkKCk6IFJlc3VsdDxMYW5ndWFnZVRhZz4ge1xuICAgICAgICBpZiAodGhpcy5pc1ZhbGlkKSB7XG4gICAgICAgICAgICByZXR1cm4gc3VjY2VlZCh0aGlzKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBvcHRpb25zOiBMYW5ndWFnZVRhZ0luaXRPcHRpb25zID0ge1xuICAgICAgICAgICAgaWFuYTogdGhpcy5faWFuYSxcbiAgICAgICAgICAgIHZhbGlkaXR5OiAndmFsaWQnLFxuICAgICAgICAgICAgbm9ybWFsaXphdGlvbjogdGhpcy5fbm9ybWFsaXphdGlvbixcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIExhbmd1YWdlVGFnLl9jcmVhdGVUcmFuc2Zvcm1lZCh0aGlzLnN1YnRhZ3MsIHRoaXMuX3ZhbGlkaXR5LCB0aGlzLl9ub3JtYWxpemF0aW9uLCBvcHRpb25zKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIGEgY29uZmlybWVkIHN0cmljdGx5IHZhbGlkIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgbGFuZ3VhZ2UgdGFnLlxuICAgICAqIEByZXR1cm5zIGBTdWNjZXNzYCB3aXRoIGEgc3RyaWN0bHkgdmFsaWQgcmVwcmVzZW50YXRpb24gb2YgdGhpcyB7QGxpbmsgQmNwNDcuTGFuZ3VhZ2VUYWcgfCBsYW5ndWFnZSB0YWd9LFxuICAgICAqIG9yIGBGYWlsdXJlYCB3aXRoIGRldGFpbHMgaWYgdGhlIHRhZyBjYW5ub3QgYmUgc3RyaWN0bHkgdmFsaWRhdGVkLlxuICAgICAqL1xuICAgIHB1YmxpYyB0b1N0cmljdGx5VmFsaWQoKTogUmVzdWx0PExhbmd1YWdlVGFnPiB7XG4gICAgICAgIGlmICh0aGlzLmlzU3RyaWN0bHlWYWxpZCkge1xuICAgICAgICAgICAgcmV0dXJuIHN1Y2NlZWQodGhpcyk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgb3B0aW9uczogTGFuZ3VhZ2VUYWdJbml0T3B0aW9ucyA9IHtcbiAgICAgICAgICAgIGlhbmE6IHRoaXMuX2lhbmEsXG4gICAgICAgICAgICB2YWxpZGl0eTogJ3N0cmljdGx5LXZhbGlkJyxcbiAgICAgICAgICAgIG5vcm1hbGl6YXRpb246IHRoaXMuX25vcm1hbGl6YXRpb24sXG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiBMYW5ndWFnZVRhZy5fY3JlYXRlVHJhbnNmb3JtZWQodGhpcy5zdWJ0YWdzLCB0aGlzLl92YWxpZGl0eSwgdGhpcy5fbm9ybWFsaXphdGlvbiwgb3B0aW9ucyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyBhIGNvbmZpcm1lZCBjYW5vbmljYWwgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBsYW5ndWFnZSB0YWcuXG4gICAgICogQHJldHVybnMgYFN1Y2Nlc3NgIHdpdGggYSBjYW5vbmljYWwgcmVwcmVzZW50YXRpb24gb2YgdGhpcyB7QGxpbmsgQmNwNDcuTGFuZ3VhZ2VUYWcgfCBsYW5ndWFnZSB0YWd9LFxuICAgICAqIG9yIGBGYWlsdXJlYCB3aXRoIGRldGFpbHMgaWYgdGhlIHRhZyBjYW5ub3QgYmUgbm9ybWFsaXplZCB0byBjYW5vbmljYWwgZm9ybS5cbiAgICAgKi9cbiAgICBwdWJsaWMgdG9DYW5vbmljYWwoKTogUmVzdWx0PExhbmd1YWdlVGFnPiB7XG4gICAgICAgIGlmICh0aGlzLmlzQ2Fub25pY2FsKSB7XG4gICAgICAgICAgICByZXR1cm4gc3VjY2VlZCh0aGlzKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBvcHRpb25zOiBMYW5ndWFnZVRhZ0luaXRPcHRpb25zID0ge1xuICAgICAgICAgICAgaWFuYTogdGhpcy5faWFuYSxcbiAgICAgICAgICAgIHZhbGlkaXR5OiB0aGlzLl92YWxpZGl0eSxcbiAgICAgICAgICAgIG5vcm1hbGl6YXRpb246ICdjYW5vbmljYWwnLFxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gTGFuZ3VhZ2VUYWcuX2NyZWF0ZVRyYW5zZm9ybWVkKHRoaXMuc3VidGFncywgdGhpcy5fdmFsaWRpdHksIHRoaXMuX25vcm1hbGl6YXRpb24sIG9wdGlvbnMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgYSBjb25maXJtZWQgcHJlZmVycmVkIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgbGFuZ3VhZ2UgdGFnLlxuICAgICAqIEByZXR1cm5zIGBTdWNjZXNzYCB3aXRoIGEgcHJlZmVycmVkIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMge0BsaW5rIEJjcDQ3Lkxhbmd1YWdlVGFnIHwgbGFuZ3VhZ2UgdGFnfSxcbiAgICAgKiBvciBgRmFpbHVyZWAgd2l0aCBkZXRhaWxzIGlmIHRoZSB0YWcgY2Fubm90IGJlIG5vcm1hbGl6ZWQgdG8gcHJlZmVycmVkIGZvcm0uXG4gICAgICovXG4gICAgcHVibGljIHRvUHJlZmVycmVkKCk6IFJlc3VsdDxMYW5ndWFnZVRhZz4ge1xuICAgICAgICBpZiAodGhpcy5pc1ByZWZlcnJlZCkge1xuICAgICAgICAgICAgcmV0dXJuIHN1Y2NlZWQodGhpcyk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgb3B0aW9uczogTGFuZ3VhZ2VUYWdJbml0T3B0aW9ucyA9IHtcbiAgICAgICAgICAgIGlhbmE6IHRoaXMuX2lhbmEsXG4gICAgICAgICAgICB2YWxpZGl0eTogJ3ZhbGlkJywgLy8gcHJlZmVycmVkIHJlcXVpcmVzIHZhbGlkaXR5XG4gICAgICAgICAgICBub3JtYWxpemF0aW9uOiAncHJlZmVycmVkJyxcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIExhbmd1YWdlVGFnLl9jcmVhdGVUcmFuc2Zvcm1lZCh0aGlzLnN1YnRhZ3MsIHRoaXMuX3ZhbGlkaXR5LCB0aGlzLl9ub3JtYWxpemF0aW9uLCBvcHRpb25zKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgbGFuZ3VhZ2UgdGFnLlxuICAgICAqIEByZXR1cm5zIEEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgbGFuZ3VhZ2UgdGFnLlxuICAgICAqL1xuICAgIHB1YmxpYyB0b1N0cmluZygpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy50YWc7XG4gICAgfVxufVxuIl19
344
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFuZ3VhZ2VUYWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYmNwNDcvbGFuZ3VhZ2VUYWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW9CRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFSCw4Q0FBZ0M7QUFFaEMsNENBQStEO0FBQy9ELHFDQUEwRTtBQUMxRSxtREFBMEU7QUFDMUUsZ0RBQTZEO0FBRTdELGlFQUE4RDtBQUM5RCwyREFBd0Q7QUFDeEQsbURBQStDO0FBRS9DLDZDQUEyQztBQXNCM0M7OztHQUdHO0FBQ0gsTUFBYSxXQUFXO0lBMERwQjs7Ozs7Ozs7Ozs7T0FXRztJQUNILFlBQXNCLE9BQWdCLEVBQUUsUUFBcUIsRUFBRSxhQUErQixFQUFFLElBQTZCO1FBQ3pILElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEdBQUcsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUM3QyxJQUFJLENBQUMsY0FBYyxHQUFHLGFBQWEsQ0FBQztRQUNwQyxJQUFJLENBQUMsU0FBUyxHQUFHLFFBQVEsQ0FBQztRQUMxQixJQUFJLENBQUMsR0FBRyxHQUFHLElBQUEsd0JBQWUsRUFBQyxPQUFPLENBQUMsQ0FBQztRQUNwQyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztRQUNsQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksMkNBQW9CLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztRQUU3RCxJQUFJLFFBQVEsS0FBSyxnQkFBZ0IsRUFBRTtZQUMvQixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO1lBQzdCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1NBQ3hCO2FBQU0sSUFBSSxRQUFRLEtBQUssT0FBTyxFQUFFO1lBQzdCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1NBQ3hCO1FB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LENBQUMsS0FBSztZQUNoQixRQUFRLEVBQUUsSUFBSSxDQUFDLFNBQVM7WUFDeEIsYUFBYSxFQUFFLFdBQVc7U0FDN0IsQ0FBQztRQUNGLE9BQU8sV0FBVyxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsY0FBYyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3RHLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksV0FBVztRQUNkLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNsQixPQUFPLElBQUEsa0JBQU8sRUFBQyxJQUFJLENBQUMsQ0FBQztTQUN4QjtRQUNELE1BQU0sT0FBTyxHQUEyQjtZQUNwQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUs7WUFDaEIsUUFBUSxFQUFFLE9BQU87WUFDakIsYUFBYSxFQUFFLFdBQVc7U0FDN0IsQ0FBQztRQUNGLE9BQU8sV0FBVyxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsY0FBYyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3RHLENBQUM7SUFFRDs7O09BR0c7SUFDSSxRQUFRO1FBQ1gsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDO0lBQ3BCLENBQUM7Q0FDSjtBQXJXRCxrQ0FxV0MiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDIyIEVyaWsgRm9ydHVuZVxuICpcbiAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbiAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbiAqIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbiAqIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbiAqXG4gKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGxcbiAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4gKlxuICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4gKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbiAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbiAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4gKiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRVxuICogU09GVFdBUkUuXG4gKi9cblxuaW1wb3J0ICogYXMgSWFuYSBmcm9tICcuLi9pYW5hJztcblxuaW1wb3J0IHsgUmVzdWx0LCBjYXB0dXJlUmVzdWx0LCBzdWNjZWVkIH0gZnJvbSAnQGZndi90cy11dGlscyc7XG5pbXBvcnQgeyBTdWJ0YWdzLCBVbmRldGVybWluZWRMYW5ndWFnZSwgc3VidGFnc1RvU3RyaW5nIH0gZnJvbSAnLi9jb21tb24nO1xuaW1wb3J0IHsgVGFnTm9ybWFsaXphdGlvbiwgbW9zdE5vcm1hbGl6ZWQgfSBmcm9tICcuL25vcm1hbGl6YXRpb24vY29tbW9uJztcbmltcG9ydCB7IFRhZ1ZhbGlkaXR5LCBtb3N0VmFsaWQgfSBmcm9tICcuL3ZhbGlkYXRpb24vY29tbW9uJztcblxuaW1wb3J0IHsgTGFuZ3VhZ2VSZWdpc3RyeURhdGEgfSBmcm9tICcuL2xhbmd1YWdlUmVnaXN0cnlEYXRhJztcbmltcG9ydCB7IExhbmd1YWdlVGFnUGFyc2VyIH0gZnJvbSAnLi9sYW5ndWFnZVRhZ1BhcnNlcic7XG5pbXBvcnQgeyBOb3JtYWxpemVUYWcgfSBmcm9tICcuL25vcm1hbGl6YXRpb24nO1xuaW1wb3J0IHsgU2NyaXB0U3VidGFnIH0gZnJvbSAnLi4vaWFuYS9sYW5ndWFnZS1zdWJ0YWdzJztcbmltcG9ydCB7IFZhbGlkYXRlVGFnIH0gZnJvbSAnLi92YWxpZGF0aW9uJztcblxuLyoqXG4gKiBJbml0aWFsaXphdGlvbiBvcHRpb25zIGZvciBwYXJzaW5nIG9yIGNyZWF0aW9uIG9mIHtAbGluayBCY3A0Ny5MYW5ndWFnZVRhZyB8IGxhbmd1YWdlIHRhZ30gb2JqZWN0cy5cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMYW5ndWFnZVRhZ0luaXRPcHRpb25zIHtcbiAgICAvKipcbiAgICAgKiBEZXNpcmVkIHtAbGluayBCY3A0Ny5UYWdWYWxpZGl0eSB8IHZhbGlkaXR5IGxldmVsfSAob3B0aW9uYWwpLlxuICAgICAqL1xuICAgIHZhbGlkaXR5PzogVGFnVmFsaWRpdHk7XG4gICAgLyoqXG4gICAgICogRGVzaXJlZCB7QGxpbmsgQmNwNDcuVGFnTm9ybWFsaXphdGlvbiB8IG5vcm1hbGl6YXRpb24gbGV2ZWx9IChvcHRpb25hbCkuXG4gICAgICovXG4gICAgbm9ybWFsaXphdGlvbj86IFRhZ05vcm1hbGl6YXRpb247XG4gICAgLyoqXG4gICAgICogVGhlIHtAbGluayBJYW5hLkxhbmd1YWdlUmVnaXN0cmllcyB8IElBTkEgbGFuZ3VhZ2Ugc3VidGFnIGFuZCBleHRlbnNpb24gcmVnaXN0cmllc30gdG9cbiAgICAgKiBiZSB1c2VkIGZvciB0aGUgcmVxdWVzdCAob3B0aW9uYWwpLlxuICAgICAqL1xuICAgIGlhbmE/OiBJYW5hLkxhbmd1YWdlUmVnaXN0cmllcztcbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgc2luZ2xlIEJDUC00NyBsYW5ndWFnZSB0YWcuXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjbGFzcyBMYW5ndWFnZVRhZyB7XG4gICAgLyoqXG4gICAgICogVGhlIGluZGl2aWR1YWwge0BsaW5rIEJjcDQ3LlN1YnRhZ3MgfCBzdWJ0YWdzfSBmb3JcbiAgICAgKiB0aGlzIGxhbmd1YWdlIHRhZy5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgc3VidGFnczogUmVhZG9ubHk8U3VidGFncz47XG5cbiAgICAvKipcbiAgICAgKiBBIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIGxhbmd1YWdlIHRhZy5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgdGFnOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBEZXRhaWxzIGFib3V0IHRoaXMgbGFuZ3VhZ2UgdGFnIGZyb20gdGhlIElBTkEgbGFuZ3VhZ2VcbiAgICAgKiByZWdpc3RyaWVzLlxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSByZWdpc3RyeTogTGFuZ3VhZ2VSZWdpc3RyeURhdGE7XG5cbiAgICAvKipcbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgX2lhbmE6IElhbmEuTGFuZ3VhZ2VSZWdpc3RyaWVzO1xuXG4gICAgLyoqXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHJvdGVjdGVkIF92YWxpZGl0eTogVGFnVmFsaWRpdHk7XG5cbiAgICAvKipcbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgX25vcm1hbGl6YXRpb246IFRhZ05vcm1hbGl6YXRpb247XG5cbiAgICAvKipcbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgX2lzVmFsaWQ6IHVuZGVmaW5lZCB8IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgX2lzU3RyaWN0bHlWYWxpZDogdW5kZWZpbmVkIHwgYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHByb3RlY3RlZCBfaXNDYW5vbmljYWw6IHVuZGVmaW5lZCB8IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgX2lzUHJlZmVycmVkOiB1bmRlZmluZWQgfCBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHJvdGVjdGVkIF9zdXBwcmVzc2VkU2NyaXB0OiB1bmRlZmluZWQgfCBTY3JpcHRTdWJ0YWcgfCBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIENvbnN0cnVjdHMgYSB7QGxpbmsgQmNwNDcuTGFuZ3VhZ2VUYWcgfCBMYW5ndWFnZVRhZyB9LlxuICAgICAqIEBwYXJhbSBzdWJ0YWdzIC0gVGhlIHtAbGluayBCY3A0Ny5TdWJ0YWdzIHwgc3VidGFncyB9IGZyb21cbiAgICAgKiB3aGljaCB0aGUgdGFnIGlzIGNvbnN0cnVjdGVkLlxuICAgICAqIEBwYXJhbSB2YWxpZGl0eSAtIEtub3duIHtAbGluayBCY3A0Ny5UYWdWYWxpZGl0eSB8IHZhbGlkYXRpb24gbGV2ZWx9IG9mIHRoZVxuICAgICAqIHN1cHBsaWVkIHN1YnRhZ3MuXG4gICAgICogQHBhcmFtIG5vcm1hbGl6YXRpb24gLSBLbm93biB7QGxpbmsgQmNwNDcuVGFnTm9ybWFsaXphdGlvbiB8IG5vcm1hbGl6YXRpb24gbGV2ZWx9XG4gICAgICogb2YgdGhlIHN1cHBsaWVkIHN1YnRhZ3MuXG4gICAgICogQHBhcmFtIGlhbmEgLSBUaGUge0BsaW5rIElhbmEuTGFuZ3VhZ2VSZWdpc3RyaWVzfSB1c2VkIHRvIHZhbGlkYXRlIGFuZCBub3JtYWxpemVcbiAgICAgKiB0aGlzIHRhZy5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgY29uc3RydWN0b3Ioc3VidGFnczogU3VidGFncywgdmFsaWRpdHk6IFRhZ1ZhbGlkaXR5LCBub3JtYWxpemF0aW9uOiBUYWdOb3JtYWxpemF0aW9uLCBpYW5hOiBJYW5hLkxhbmd1YWdlUmVnaXN0cmllcykge1xuICAgICAgICB0aGlzLnN1YnRhZ3MgPSBPYmplY3QuZnJlZXplKHsgLi4uc3VidGFncyB9KTtcbiAgICAgICAgdGhpcy5fbm9ybWFsaXphdGlvbiA9IG5vcm1hbGl6YXRpb247XG4gICAgICAgIHRoaXMuX3ZhbGlkaXR5ID0gdmFsaWRpdHk7XG4gICAgICAgIHRoaXMudGFnID0gc3VidGFnc1RvU3RyaW5nKHN1YnRhZ3MpO1xuICAgICAgICB0aGlzLl9pYW5hID0gaWFuYTtcbiAgICAgICAgdGhpcy5yZWdpc3RyeSA9IG5ldyBMYW5ndWFnZVJlZ2lzdHJ5RGF0YSh0aGlzLnN1YnRhZ3MsIGlhbmEpO1xuXG4gICAgICAgIGlmICh2YWxpZGl0eSA9PT0gJ3N0cmljdGx5LXZhbGlkJykge1xuICAgICAgICAgICAgdGhpcy5faXNTdHJpY3RseVZhbGlkID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuX2lzVmFsaWQgPSB0cnVlO1xuICAgICAgICB9IGVsc2UgaWYgKHZhbGlkaXR5ID09PSAndmFsaWQnKSB7XG4gICAgICAgICAgICB0aGlzLl9pc1ZhbGlkID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChub3JtYWxpemF0aW9uID09PSAncHJlZmVycmVkJykge1xuICAgICAgICAgICAgdGhpcy5faXNQcmVmZXJyZWQgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5faXNDYW5vbmljYWwgPSB0cnVlO1xuICAgICAgICB9IGVsc2UgaWYgKG5vcm1hbGl6YXRpb24gPT09ICdjYW5vbmljYWwnKSB7XG4gICAgICAgICAgICB0aGlzLl9pc0Nhbm9uaWNhbCA9IHRydWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgZWZmZWN0aXZlIHNjcmlwdCBvZiB0aGlzIGxhbmd1YWdlIHRhZywgaWYga25vd24uXG4gICAgICogVGhlIGVmZmVjdGl2ZSBzY3JpcHQgaXMgdGhlIHNjcmlwdCBzdWJ0YWcgaW4gdGhlIHRhZyBpdHNlbGYsXG4gICAgICogaWYgcHJlc2VudCwgb3IgdGhlIGBTdXBwcmVzcy1TY3JpcHRgIGRlZmluZWQgaW4gdGhlXG4gICAgICoge0BsaW5rIGh0dHBzOi8vd3d3LmlhbmEub3JnL2Fzc2lnbm1lbnRzL2xhbmd1YWdlLXN1YnRhZy1yZWdpc3RyeS9sYW5ndWFnZS1zdWJ0YWctcmVnaXN0cnkgfCBJQU5BIHN1YnRhZyByZWdpc3RyeX1cbiAgICAgKiBmb3IgdGhlIHByaW1hcnkgbGFuZ3VhZ2Ugb2YgdGhpcyB0YWcuICBDYW4gYmUgYHVuZGVmaW5lZGBcbiAgICAgKiBpZiBuZWl0aGVyIHRoZSB0YWcgbm9yIHRoZSBJQU5BIHJlZ2lzdHJ5IGRlZmluZSBhIHNjcmlwdC5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IGVmZmVjdGl2ZVNjcmlwdCgpOiBTY3JpcHRTdWJ0YWcgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gdGhpcy5zdWJ0YWdzLnNjcmlwdCA/PyB0aGlzLmdldFN1cHByZXNzZWRTY3JpcHQoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEZXRlcm1pbmVzIGlmIHRoaXMgdGFnIHJlcHJlc2VudHMgdGhlIHNwZWNpYWwgYHVuZGV0ZXJtaW5lZGAgbGFuZ3VhZ2UuXG4gICAgICovXG4gICAgcHVibGljIGdldCBpc1VuZGV0ZXJtaW5lZCgpOiBib29sZWFuIHtcbiAgICAgICAgLy8gaXN0YW5idWwgaWdub3JlIG5leHRcbiAgICAgICAgcmV0dXJuIHRoaXMuc3VidGFncy5wcmltYXJ5TGFuZ3VhZ2U/LnRvTG93ZXJDYXNlKCkgPT09IFVuZGV0ZXJtaW5lZExhbmd1YWdlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdGhpcyBsYW5ndWFnZSB0YWcgaXMgdmFsaWQuXG4gICAgICovXG4gICAgcHVibGljIGdldCBpc1ZhbGlkKCk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAodGhpcy5faXNWYWxpZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aGlzLl9pc1ZhbGlkID0gVmFsaWRhdGVUYWcuaXNWYWxpZCh0aGlzLnN1YnRhZ3MpO1xuICAgICAgICAgICAgaWYgKHRoaXMuX2lzVmFsaWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl92YWxpZGl0eSA9ICd2YWxpZCc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzVmFsaWQgPT09IHRydWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogV2hldGhlciBpZiB0aGlzIGxhbmd1YWdlIHRhZyBpcyBzdHJpY3RseSB2YWxpZC5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IGlzU3RyaWN0bHlWYWxpZCgpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKHRoaXMuX2lzU3RyaWN0bHlWYWxpZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aGlzLl9pc1N0cmljdGx5VmFsaWQgPSBWYWxpZGF0ZVRhZy5pc1N0cmljdGx5VmFsaWQodGhpcy5zdWJ0YWdzKTtcbiAgICAgICAgICAgIGlmICh0aGlzLl9pc1N0cmljdGx5VmFsaWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl92YWxpZGl0eSA9ICdzdHJpY3RseS12YWxpZCc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzU3RyaWN0bHlWYWxpZCA9PT0gdHJ1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRoaXMgbGFuZ3VhZ2UgdGFnIGlzIGluIGNhbm9uaWNhbCBmb3JtLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgaXNDYW5vbmljYWwoKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICh0aGlzLl9pc0Nhbm9uaWNhbCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aGlzLl9pc0Nhbm9uaWNhbCA9IFZhbGlkYXRlVGFnLmlzQ2Fub25pY2FsKHRoaXMuc3VidGFncyk7XG4gICAgICAgICAgICBpZiAodGhpcy5faXNDYW5vbmljYWwpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9ub3JtYWxpemF0aW9uID0gJ2Nhbm9uaWNhbCc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzQ2Fub25pY2FsID09PSB0cnVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdGhpcyBsYW5ndWFnZSB0YWcgaXMgaW4gcHJlZmVycmVkIGZvcm0uXG4gICAgICovXG4gICAgcHVibGljIGdldCBpc1ByZWZlcnJlZCgpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKHRoaXMuX2lzUHJlZmVycmVkID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRoaXMuX2lzUHJlZmVycmVkID0gVmFsaWRhdGVUYWcuaXNJblByZWZlcnJlZEZvcm0odGhpcy5zdWJ0YWdzKTtcbiAgICAgICAgICAgIGlmICh0aGlzLl9pc1ByZWZlcnJlZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX25vcm1hbGl6YXRpb24gPSAncHJlZmVycmVkJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5faXNQcmVmZXJyZWQgPT09IHRydWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIG5ldyB7QGxpbmsgQmNwNDcuTGFuZ3VhZ2VUYWcgfCBsYW5ndWFnZSB0YWd9IGZyb20gYSBzdXBwbGllZCBgc3RyaW5nYCB0YWdcbiAgICAgKiB1c2luZyBvcHRpb25hbCBjb25maWd1cmF0aW9uLCBpZiBzdXBwbGllZC5cbiAgICAgKiBAcGFyYW0gdGFnIC0gVGhlIGBzdHJpbmdgIHRhZyBmcm9tIHdoaWNoIHRoZSB7QGxpbmsgQmNwNDcuTGFuZ3VhZ2VUYWcgfCBsYW5ndWFnZSB0YWd9XG4gICAgICogaXMgdGUgYmUgY29uc3RydWN0ZWQuXG4gICAgICogQHBhcmFtIG9wdGlvbnMgLSAob3B0aW9uYWwpIHNldCBvZiB7QGxpbmsgQmNwNDcuTGFuZ3VhZ2VUYWdJbml0T3B0aW9ucyB8IGluaXQgb3B0aW9uc31cbiAgICAgKiB0byBndWlkZSB0aGUgdmFsaWRhdGlvbiBhbmQgbm9ybWFsaXphdGlvbiBvZiB0aGlzIHRhZy5cbiAgICAgKiBAcmV0dXJucyBgU3VjY2Vzc2Agd2l0aCB0aGUgbmV3IHtAbGluayBCY3A0Ny5MYW5ndWFnZVRhZyB8IGxhbmd1YWdlIHRhZ30gb3IgYEZhaWx1cmVgXG4gICAgICogd2l0aCBkZXRhaWxzIGlmIGFuIGVycm9yIG9jY3Vycy5cbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIGNyZWF0ZUZyb21UYWcodGFnOiBzdHJpbmcsIG9wdGlvbnM/OiBMYW5ndWFnZVRhZ0luaXRPcHRpb25zKTogUmVzdWx0PExhbmd1YWdlVGFnPiB7XG4gICAgICAgIG9wdGlvbnMgPSB0aGlzLl9nZXRPcHRpb25zKG9wdGlvbnMpO1xuXG4gICAgICAgIHJldHVybiBMYW5ndWFnZVRhZ1BhcnNlci5wYXJzZSh0YWcsIG9wdGlvbnMuaWFuYSkub25TdWNjZXNzKChzdWJ0YWdzKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fY3JlYXRlVHJhbnNmb3JtZWQoc3VidGFncywgJ3Vua25vd24nLCAndW5rbm93bicsIG9wdGlvbnMpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgbmV3IHtAbGluayBCY3A0Ny5MYW5ndWFnZVRhZyB8IGxhbmd1YWdlIHRhZ30gZnJvbSBhIHN1cHBsaWVkXG4gICAgICoge0BsaW5rIEJjcDQ3LlN1YnRhZ3MgfCBzdWJ0YWdzfSB1c2luZyBvcHRpb25hbCBjb25maWd1cmF0aW9uLFxuICAgICAqIGlmIHN1cHBsaWVkLlxuICAgICAqIEBwYXJhbSB0YWcgLSBUaGUge0BsaW5rIEJjcDQ3LlN1YnRhZ3MgfCBzdWJ0YWdzfSBmcm9tIHdoaWNoIHRoZVxuICAgICAqIHtAbGluayBCY3A0Ny5MYW5ndWFnZVRhZyB8IGxhbmd1YWdlIHRhZ30gaXMgdGUgYmUgY29uc3RydWN0ZWQuXG4gICAgICogQHBhcmFtIG9wdGlvbnMgLSAob3B0aW9uYWwpIHNldCBvZiB7QGxpbmsgQmNwNDcuTGFuZ3VhZ2VUYWdJbml0T3B0aW9ucyB8IGluaXQgb3B0aW9uc31cbiAgICAgKiB0byBndWlkZSB0aGUgdmFsaWRhdGlvbiBhbmQgbm9ybWFsaXphdGlvbiBvZiB0aGlzIHRhZy5cbiAgICAgKiBAcmV0dXJucyBgU3VjY2Vzc2Agd2l0aCB0aGUgbmV3IHtAbGluayBCY3A0Ny5MYW5ndWFnZVRhZyB8IGxhbmd1YWdlIHRhZ30gb3IgYEZhaWx1cmVgXG4gICAgICogd2l0aCBkZXRhaWxzIGlmIGFuIGVycm9yIG9jY3Vycy5cbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIGNyZWF0ZUZyb21TdWJ0YWdzKHN1YnRhZ3M6IFN1YnRhZ3MsIG9wdGlvbnM/OiBMYW5ndWFnZVRhZ0luaXRPcHRpb25zKTogUmVzdWx0PExhbmd1YWdlVGFnPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jcmVhdGVUcmFuc2Zvcm1lZChzdWJ0YWdzLCAndW5rbm93bicsICd1bmtub3duJywgb3B0aW9ucyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIG5ldyB7QGxpbmsgQmNwNDcuTGFuZ3VhZ2VUYWcgfCBsYW5ndWFnZSB0YWd9IGZyb20gYSBzdXBwbGllZCBgc3RyaW5nYFxuICAgICAqIHRhZyBvciB7QGxpbmsgQmNwNDcuU3VidGFncyB8IHN1YnRhZ3N9IHVzaW5nIG9wdGlvbmFsIGNvbmZpZ3VyYXRpb24sXG4gICAgICogaWYgc3VwcGxpZWQuXG4gICAgICogQHBhcmFtIGZyb20gLSBUaGUgYHN0cmluZ2AgdGFnIG9yIHtAbGluayBCY3A0Ny5TdWJ0YWdzIHwgc3VidGFnc30gZnJvbVxuICAgICAqIHdoaWNoIHRoZSB7QGxpbmsgQmNwNDcuTGFuZ3VhZ2VUYWcgfCBsYW5ndWFnZSB0YWd9IGlzIHRlIGJlIGNvbnN0cnVjdGVkLlxuICAgICAqIEBwYXJhbSBvcHRpb25zIC0gKG9wdGlvbmFsKSBzZXQgb2Yge0BsaW5rIEJjcDQ3Lkxhbmd1YWdlVGFnSW5pdE9wdGlvbnMgfCBpbml0IG9wdGlvbnN9XG4gICAgICogdG8gZ3VpZGUgdGhlIHZhbGlkYXRpb24gYW5kIG5vcm1hbGl6YXRpb24gb2YgdGhpcyB0YWcuXG4gICAgICogQHJldHVybnMgYFN1Y2Nlc3NgIHdpdGggdGhlIG5ldyB7QGxpbmsgQmNwNDcuTGFuZ3VhZ2VUYWcgfCBsYW5ndWFnZSB0YWd9IG9yIGBGYWlsdXJlYFxuICAgICAqIHdpdGggZGV0YWlscyBpZiBhbiBlcnJvciBvY2N1cnMuXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBjcmVhdGUoZnJvbTogc3RyaW5nIHwgU3VidGFncywgb3B0aW9ucz86IExhbmd1YWdlVGFnSW5pdE9wdGlvbnMpOiBSZXN1bHQ8TGFuZ3VhZ2VUYWc+IHtcbiAgICAgICAgaWYgKHR5cGVvZiBmcm9tID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlRnJvbVRhZyhmcm9tLCBvcHRpb25zKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZUZyb21TdWJ0YWdzKGZyb20sIG9wdGlvbnMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29uc3RydWN0cyBhIG5ldyB7QGxpbmsgQmNwNDcuTGFuZ3VhZ2VUYWcgfCBsYW5ndWFnZSB0YWd9IGJ5IGFwcGx5aW5nIGFwcHJvcHJpYXRlIHRyYW5zZm9ybWF0aW9uc1xuICAgICAqIHRvIGFzIHN1cHBsaWVkIHtAbGluayBCY3A0Ny5TdWJ0YWdzIHwgQmNwNDcuU3VidGFnc30uXG4gICAgICogQHBhcmFtIHN1YnRhZ3MgLSBUaGUge0BsaW5rIEJjcDQ3LlN1YnRhZ3MgfCBzdWJ0YWdzfSB3aGljaCByZXByZXNlbnQgdGhlIHRhZy5cbiAgICAgKiBAcGFyYW0gZnJvbVZhbGlkaXR5IC0gVGhlIHtAbGluayBCY3A0Ny5UYWdWYWxpZGl0eSB8IHZhbGlkYXRpb24gbGV2ZWx9IG9mIHRoZSBzdXBwbGllZCBzdWJ0YWdzLlxuICAgICAqIEBwYXJhbSBmcm9tTm9ybWFsaXphdGlvbiAtIFRoZSB7QGxpbmsgQmNwNDcuVGFnTm9ybWFsaXphdGlvbiB8IG5vcm1hbGl6YXRpb24gbGV2ZWx9IGZvIHRoZVxuICAgICAqIHN1cHBsaWVkIHN1YnRhZ3MuXG4gICAgICogQHBhcmFtIHBhcnRpYWxPcHRpb25zIC0gQW55IHtAbGluayBCY3A0Ny5MYW5ndWFnZVRhZ0luaXRPcHRpb25zIHwgaW5pdGlhbGl6YXRpb24gb3B0aW9uc30uXG4gICAgICogQHJldHVybnMgYFN1Y2Nlc3NgIHdpdGggdGhlIGNvcnJlc3BvbmRpbmcge0BsaW5rIEJjcDQ3Lkxhbmd1YWdlVGFnIHwgbGFuZ3VhZ2UgdGFnfSBvciBgRmFpbHVyZWBcbiAgICAgKiB3aXRoIGRldGFpbHMgaWYgYW4gZXJyb3Igb2NjdXJzLlxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHByb3RlY3RlZCBzdGF0aWMgX2NyZWF0ZVRyYW5zZm9ybWVkKFxuICAgICAgICBzdWJ0YWdzOiBTdWJ0YWdzLFxuICAgICAgICBmcm9tVmFsaWRpdHk6IFRhZ1ZhbGlkaXR5LFxuICAgICAgICBmcm9tTm9ybWFsaXphdGlvbjogVGFnTm9ybWFsaXphdGlvbixcbiAgICAgICAgcGFydGlhbE9wdGlvbnM/OiBMYW5ndWFnZVRhZ0luaXRPcHRpb25zXG4gICAgKTogUmVzdWx0PExhbmd1YWdlVGFnPiB7XG4gICAgICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLl9nZXRPcHRpb25zKHBhcnRpYWxPcHRpb25zKTtcbiAgICAgICAgcmV0dXJuIFZhbGlkYXRlVGFnLnZhbGlkYXRlU3VidGFncyhzdWJ0YWdzLCBvcHRpb25zLnZhbGlkaXR5LCBmcm9tVmFsaWRpdHkpXG4gICAgICAgICAgICAub25TdWNjZXNzKCgpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gTm9ybWFsaXplVGFnLm5vcm1hbGl6ZVN1YnRhZ3Moc3VidGFncywgb3B0aW9ucy5ub3JtYWxpemF0aW9uLCBmcm9tTm9ybWFsaXphdGlvbik7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLm9uU3VjY2Vzcygobm9ybWFsaXplZCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHZhbGlkaXR5ID0gbW9zdFZhbGlkKGZyb21WYWxpZGl0eSwgb3B0aW9ucy52YWxpZGl0eSk7XG4gICAgICAgICAgICAgICAgY29uc3Qgbm9ybWFsaXphdGlvbiA9IG1vc3ROb3JtYWxpemVkKGZyb21Ob3JtYWxpemF0aW9uLCBvcHRpb25zLm5vcm1hbGl6YXRpb24pO1xuICAgICAgICAgICAgICAgIHJldHVybiBjYXB0dXJlUmVzdWx0KCgpID0+IG5ldyBMYW5ndWFnZVRhZyhub3JtYWxpemVkLCB2YWxpZGl0eSwgbm9ybWFsaXphdGlvbiwgb3B0aW9ucy5pYW5hKSk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIGEgZnVsbHktc3BlY2lmaWVkIHtAbGluayBCY3A0Ny5MYW5ndWFnZVRhZ0luaXRPcHRpb25zfSBmcm9tIHBhcnRpYWwgb3IgdW5kZWZpbmVkXG4gICAgICogb3B0aW9ucywgc3Vic3RpdHV0aW5nIGRlZmF1bHRzIGFzIGFwcHJvcHJpYXRlLlxuICAgICAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIHtAbGluayBCY3A0Ny5MYW5ndWFnZVRhZ0luaXRPcHRpb25zfSB0byBiZSBleHBhbmRlZCwgb3IgYHVuZGVmaW5lZGBcbiAgICAgKiBmb3IgZGVmYXVsdCBvcHRpb25zLlxuICAgICAqIEByZXR1cm5zIEZ1bGx5LXNwZWNpZmllZCB7QGxpbmsgQmNwNDcuTGFuZ3VhZ2VUYWdJbml0T3B0aW9ucyB8IGluaXQgb3B0aW9uc30uXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHN0YXRpYyBfZ2V0T3B0aW9ucyhvcHRpb25zPzogTGFuZ3VhZ2VUYWdJbml0T3B0aW9ucyk6IFJlcXVpcmVkPExhbmd1YWdlVGFnSW5pdE9wdGlvbnM+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGlhbmE6IG9wdGlvbnM/LmlhbmEgPz8gSWFuYS5EZWZhdWx0UmVnaXN0cmllcy5sYW5ndWFnZVJlZ2lzdHJpZXMsXG4gICAgICAgICAgICB2YWxpZGl0eTogb3B0aW9ucz8udmFsaWRpdHkgPz8gJ3dlbGwtZm9ybWVkJyxcbiAgICAgICAgICAgIG5vcm1hbGl6YXRpb246IG9wdGlvbnM/Lm5vcm1hbGl6YXRpb24gPz8gJ25vbmUnLFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIGBTdXBwcmVzcy1TY3JpcHRgIHZhbHVlIGRlZmluZWQgZm9yIHRoZSBwcmltYXJ5IGxhbmd1YWdlIG9mIHRoaXMgdGFnLFxuICAgICAqIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBhIGRpZmZlcmVudCBzY3JpcHQgaXMgZGVmaW5lZCBpbiB0aGlzIHN1YnRhZy5cbiAgICAgKiBAcmV0dXJucyBUaGUgc3VwcHJlc3Mtc2NyaXB0IGRlZmluZWQgZm9yIHRoZSBwcmltYXJ5IGxhbmd1YWdlLCBvciB1bmRlZmluZWQgaWZcbiAgICAgKiB0aGUgcHJpbWFyeSBsYW5ndWFnZSBpcyBpbnZhbGlkIG9yIGhhcyBubyBkZWZpbmVkIHN1cHByZXNzZWQgc2NyaXB0LlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRTdXBwcmVzc2VkU2NyaXB0KCk6IFNjcmlwdFN1YnRhZyB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGlmICh0aGlzLl9zdXBwcmVzc2VkU2NyaXB0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRoaXMuX3N1cHByZXNzZWRTY3JpcHQgPSBmYWxzZTtcbiAgICAgICAgICAgIGlmICh0aGlzLnN1YnRhZ3MucHJpbWFyeUxhbmd1YWdlKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbGFuZ3VhZ2UgPSB0aGlzLl9pYW5hLnN1YnRhZ3MubGFuZ3VhZ2VzLnRyeUdldCh0aGlzLnN1YnRhZ3MucHJpbWFyeUxhbmd1YWdlKTtcbiAgICAgICAgICAgICAgICBpZiAobGFuZ3VhZ2U/LnN1cHByZXNzU2NyaXB0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fc3VwcHJlc3NlZFNjcmlwdCA9IGxhbmd1YWdlLnN1cHByZXNzU2NyaXB0O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5fc3VwcHJlc3NlZFNjcmlwdCA/IHRoaXMuX3N1cHByZXNzZWRTY3JpcHQgOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyBhIGNvbmZpcm1lZCB2YWxpZCByZXByZXNlbnRhdGlvbiBvZiB0aGlzIGxhbmd1YWdlIHRhZy5cbiAgICAgKiBAcmV0dXJucyBgU3VjY2Vzc2Agd2l0aCBhIHZhbGlkIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMge0BsaW5rIEJjcDQ3Lkxhbmd1YWdlVGFnIHwgbGFuZ3VhZ2UgdGFnfSxcbiAgICAgKiBvciBgRmFpbHVyZWAgd2l0aCBkZXRhaWxzIGlmIHRoZSB0YWcgY2Fubm90IGJlIHZhbGlkYXRlZC5cbiAgICAgKi9cbiAgICBwdWJsaWMgdG9WYWxpZCgpOiBSZXN1bHQ8TGFuZ3VhZ2VUYWc+IHtcbiAgICAgICAgaWYgKHRoaXMuaXNWYWxpZCkge1xuICAgICAgICAgICAgcmV0dXJuIHN1Y2NlZWQodGhpcyk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgb3B0aW9uczogTGFuZ3VhZ2VUYWdJbml0T3B0aW9ucyA9IHtcbiAgICAgICAgICAgIGlhbmE6IHRoaXMuX2lhbmEsXG4gICAgICAgICAgICB2YWxpZGl0eTogJ3ZhbGlkJyxcbiAgICAgICAgICAgIG5vcm1hbGl6YXRpb246IHRoaXMuX25vcm1hbGl6YXRpb24sXG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiBMYW5ndWFnZVRhZy5fY3JlYXRlVHJhbnNmb3JtZWQodGhpcy5zdWJ0YWdzLCB0aGlzLl92YWxpZGl0eSwgdGhpcy5fbm9ybWFsaXphdGlvbiwgb3B0aW9ucyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyBhIGNvbmZpcm1lZCBzdHJpY3RseSB2YWxpZCByZXByZXNlbnRhdGlvbiBvZiB0aGlzIGxhbmd1YWdlIHRhZy5cbiAgICAgKiBAcmV0dXJucyBgU3VjY2Vzc2Agd2l0aCBhIHN0cmljdGx5IHZhbGlkIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMge0BsaW5rIEJjcDQ3Lkxhbmd1YWdlVGFnIHwgbGFuZ3VhZ2UgdGFnfSxcbiAgICAgKiBvciBgRmFpbHVyZWAgd2l0aCBkZXRhaWxzIGlmIHRoZSB0YWcgY2Fubm90IGJlIHN0cmljdGx5IHZhbGlkYXRlZC5cbiAgICAgKi9cbiAgICBwdWJsaWMgdG9TdHJpY3RseVZhbGlkKCk6IFJlc3VsdDxMYW5ndWFnZVRhZz4ge1xuICAgICAgICBpZiAodGhpcy5pc1N0cmljdGx5VmFsaWQpIHtcbiAgICAgICAgICAgIHJldHVybiBzdWNjZWVkKHRoaXMpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG9wdGlvbnM6IExhbmd1YWdlVGFnSW5pdE9wdGlvbnMgPSB7XG4gICAgICAgICAgICBpYW5hOiB0aGlzLl9pYW5hLFxuICAgICAgICAgICAgdmFsaWRpdHk6ICdzdHJpY3RseS12YWxpZCcsXG4gICAgICAgICAgICBub3JtYWxpemF0aW9uOiB0aGlzLl9ub3JtYWxpemF0aW9uLFxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gTGFuZ3VhZ2VUYWcuX2NyZWF0ZVRyYW5zZm9ybWVkKHRoaXMuc3VidGFncywgdGhpcy5fdmFsaWRpdHksIHRoaXMuX25vcm1hbGl6YXRpb24sIG9wdGlvbnMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgYSBjb25maXJtZWQgY2Fub25pY2FsIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgbGFuZ3VhZ2UgdGFnLlxuICAgICAqIEByZXR1cm5zIGBTdWNjZXNzYCB3aXRoIGEgY2Fub25pY2FsIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMge0BsaW5rIEJjcDQ3Lkxhbmd1YWdlVGFnIHwgbGFuZ3VhZ2UgdGFnfSxcbiAgICAgKiBvciBgRmFpbHVyZWAgd2l0aCBkZXRhaWxzIGlmIHRoZSB0YWcgY2Fubm90IGJlIG5vcm1hbGl6ZWQgdG8gY2Fub25pY2FsIGZvcm0uXG4gICAgICovXG4gICAgcHVibGljIHRvQ2Fub25pY2FsKCk6IFJlc3VsdDxMYW5ndWFnZVRhZz4ge1xuICAgICAgICBpZiAodGhpcy5pc0Nhbm9uaWNhbCkge1xuICAgICAgICAgICAgcmV0dXJuIHN1Y2NlZWQodGhpcyk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgb3B0aW9uczogTGFuZ3VhZ2VUYWdJbml0T3B0aW9ucyA9IHtcbiAgICAgICAgICAgIGlhbmE6IHRoaXMuX2lhbmEsXG4gICAgICAgICAgICB2YWxpZGl0eTogdGhpcy5fdmFsaWRpdHksXG4gICAgICAgICAgICBub3JtYWxpemF0aW9uOiAnY2Fub25pY2FsJyxcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIExhbmd1YWdlVGFnLl9jcmVhdGVUcmFuc2Zvcm1lZCh0aGlzLnN1YnRhZ3MsIHRoaXMuX3ZhbGlkaXR5LCB0aGlzLl9ub3JtYWxpemF0aW9uLCBvcHRpb25zKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIGEgY29uZmlybWVkIHByZWZlcnJlZCByZXByZXNlbnRhdGlvbiBvZiB0aGlzIGxhbmd1YWdlIHRhZy5cbiAgICAgKiBAcmV0dXJucyBgU3VjY2Vzc2Agd2l0aCBhIHByZWZlcnJlZCByZXByZXNlbnRhdGlvbiBvZiB0aGlzIHtAbGluayBCY3A0Ny5MYW5ndWFnZVRhZyB8IGxhbmd1YWdlIHRhZ30sXG4gICAgICogb3IgYEZhaWx1cmVgIHdpdGggZGV0YWlscyBpZiB0aGUgdGFnIGNhbm5vdCBiZSBub3JtYWxpemVkIHRvIHByZWZlcnJlZCBmb3JtLlxuICAgICAqL1xuICAgIHB1YmxpYyB0b1ByZWZlcnJlZCgpOiBSZXN1bHQ8TGFuZ3VhZ2VUYWc+IHtcbiAgICAgICAgaWYgKHRoaXMuaXNQcmVmZXJyZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBzdWNjZWVkKHRoaXMpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG9wdGlvbnM6IExhbmd1YWdlVGFnSW5pdE9wdGlvbnMgPSB7XG4gICAgICAgICAgICBpYW5hOiB0aGlzLl9pYW5hLFxuICAgICAgICAgICAgdmFsaWRpdHk6ICd2YWxpZCcsIC8vIHByZWZlcnJlZCByZXF1aXJlcyB2YWxpZGl0eVxuICAgICAgICAgICAgbm9ybWFsaXphdGlvbjogJ3ByZWZlcnJlZCcsXG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiBMYW5ndWFnZVRhZy5fY3JlYXRlVHJhbnNmb3JtZWQodGhpcy5zdWJ0YWdzLCB0aGlzLl92YWxpZGl0eSwgdGhpcy5fbm9ybWFsaXphdGlvbiwgb3B0aW9ucyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIGxhbmd1YWdlIHRhZy5cbiAgICAgKiBAcmV0dXJucyBBIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIGxhbmd1YWdlIHRhZy5cbiAgICAgKi9cbiAgICBwdWJsaWMgdG9TdHJpbmcoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGFnO1xuICAgIH1cbn1cbiJdfQ==
@@ -24,7 +24,7 @@ export interface MatchingLanguage {
24
24
  languageTag: LanguageTag;
25
25
  }
26
26
  /**
27
- * Options for {@link Bcp47.filter | language tag list filter} functions.
27
+ * Options for {@link Bcp47.choose | language tag list filter} functions.
28
28
  * @public
29
29
  */
30
30
  export interface LanguageChooserOptions {
@@ -89,4 +89,4 @@ class LanguageChooser {
89
89
  }
90
90
  }
91
91
  exports.LanguageChooser = LanguageChooser;
92
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hvb3Nlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iY3A0Ny9tYXRjaC9jaG9vc2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQkc7OztBQUlILDZDQUF5RDtBQUN6RCxnREFBNkM7QUFxRDdDOzs7R0FHRztBQUNVLFFBQUEsNkJBQTZCLEdBQTJCLE1BQU0sQ0FBQyxNQUFNLENBQUM7SUFDL0UsR0FBRyxFQUFFLG1CQUFtQjtJQUN4QixNQUFNLEVBQUUsaUJBQWlCO0NBQzVCLENBQUMsQ0FBQztBQUVIOzs7O0dBSUc7QUFDSCxNQUFhLGVBQWU7SUFNeEIsWUFBbUIsSUFBOEI7UUFDN0MsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLHNDQUF5QixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFTSw2QkFBNkIsQ0FDaEMsZ0JBQStCLEVBQy9CLGtCQUFpQyxFQUNqQyxPQUFnQzs7UUFFaEMsTUFBTSxPQUFPLEdBQUcsSUFBSSxHQUFHLEVBQTRCLENBQUM7UUFDcEQsTUFBTSxTQUFTLEdBQUcsZ0JBQWdCLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsZ0JBQWdCLENBQUMsTUFBTSxDQUFDO1FBQ3JGLElBQUksSUFBSSxHQUFHLEdBQUcsQ0FBQztRQUVmLDJDQUEyQztRQUMzQyxPQUFPLEdBQUcsRUFBRSxHQUFHLHFDQUE2QixFQUFFLEdBQUcsT0FBTyxFQUFFLENBQUM7UUFFM0QsS0FBSyxNQUFNLElBQUksSUFBSSxnQkFBZ0IsRUFBRTtZQUNqQyxJQUFJLElBQUksU0FBUyxDQUFDO1lBQ2xCLEtBQUssTUFBTSxJQUFJLElBQUksa0JBQWtCLEVBQUU7Z0JBQ25DLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO2dCQUMvRCxJQUFJLFVBQVUsR0FBRyxHQUFHLEVBQUU7b0JBQ2xCLE1BQU0sT0FBTyxHQUFHLElBQUksR0FBRyxVQUFVLEdBQUcsU0FBUyxDQUFDO29CQUM5QyxNQUFNLFdBQVcsR0FBRyxPQUFPLENBQUMsR0FBRyxLQUFLLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztvQkFDdEUsTUFBTSxHQUFHLEdBQUcsV0FBVyxDQUFDLEdBQUcsQ0FBQztvQkFDNUIsTUFBTSxHQUFHLEdBQUcsT0FBTyxDQUFDLE1BQU0sS0FBSyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsTUFBQSxXQUFXLENBQUMsT0FBTyxDQUFDLGVBQWUsbUNBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7b0JBRXBHLE1BQU0sS0FBSyxHQUFxQjt3QkFDNUIsT0FBTzt3QkFDUCxHQUFHO3dCQUNILFdBQVc7cUJBQ2QsQ0FBQztvQkFFRixNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO29CQUNsQyxJQUFJLENBQUMsUUFBUSxJQUFJLFFBQVEsQ0FBQyxPQUFPLEdBQUcsT0FBTyxFQUFFO3dCQUN6QyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztxQkFDM0I7aUJBQ0o7YUFDSjtTQUNKO1FBRUQsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUM1QyxJQUFJLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ25CLHdCQUF3QjtZQUN4QixNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDcEQ7YUFBTSxJQUFJLE1BQU0sQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRTtZQUN4RCxNQUFNLFdBQVcsR0FDYixPQUFPLENBQUMsZ0JBQWdCLFlBQVkseUJBQVc7Z0JBQzNDLENBQUMsQ0FBQyxPQUFPLENBQUMsZ0JBQWdCO2dCQUMxQixDQUFDLENBQUMseUJBQVcsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDbkUsSUFBSSxXQUFXLEVBQUU7Z0JBQ2IsT0FBTyxDQUFDLEVBQUUsV0FBVyxFQUFFLEdBQUcsRUFBRSxXQUFXLENBQUMsR0FBRyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2FBQzlEO1NBQ0o7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNsQixDQUFDO0lBRU0sa0JBQWtCLENBQ3JCLGdCQUErQixFQUMvQixrQkFBaUMsRUFDakMsT0FBZ0M7UUFFaEMsT0FBTyxJQUFJLENBQUMsNkJBQTZCLENBQUMsZ0JBQWdCLEVBQUUsa0JBQWtCLEVBQUUsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDdkgsQ0FBQztDQUNKO0FBckVELDBDQXFFQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjIgRXJpayBGb3J0dW5lXG4gKlxuICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuICogaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuICogdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4gKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuICpcbiAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbFxuICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbiAqXG4gKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4gKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbiAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbiAqIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFXG4gKiBTT0ZUV0FSRS5cbiAqL1xuXG5pbXBvcnQgKiBhcyBJYW5hIGZyb20gJy4uLy4uL2lhbmEnO1xuXG5pbXBvcnQgeyBMYW5ndWFnZVNpbWlsYXJpdHlNYXRjaGVyIH0gZnJvbSAnLi9zaW1pbGFyaXR5JztcbmltcG9ydCB7IExhbmd1YWdlVGFnIH0gZnJvbSAnLi4vbGFuZ3VhZ2VUYWcnO1xuaW1wb3J0IHsgU3VidGFncyB9IGZyb20gJy4uL2NvbW1vbic7XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIHNpbmdsZSBtYXRjaGluZyBmaWx0ZXJlZCBsYW5ndWFnZS5cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNYXRjaGluZ0xhbmd1YWdlIHtcbiAgICAvKipcbiAgICAgKiBOdW1lcmljIGluZGljYXRpb24gb2YgaG93IHdlbGwgdGhlIGxhbmd1YWdlIG1hdGNoZXMsXG4gICAgICogZnJvbSBwZXJmZWN0IChgMS4wYCkgdG8gbm90IGF0IGFsbCAoYDAuMGApLiAgV2hlblxuICAgICAqIG1hdGNoaW5nIGFuIG9yZGVyZWQgbGlzdCwgbGFuZ3VhZ2VzIGF0IHRoZSBmcm9udCBvZlxuICAgICAqIHRoZSBkZXNpcmVkIGxhbmd1YWdlIGxpc3QgYXJlIGFsd2F5cyBoaWdoZXIgcXVhbGl0eS5cbiAgICAgKi9cbiAgICBxdWFsaXR5OiBudW1iZXI7XG4gICAgLyoqXG4gICAgICogVGhlIGBzdHJpbmdgIHRhZyBvZiB0aGUgbWF0Y2hlZCBsYW5ndWFnZS5cbiAgICAgKi9cbiAgICB0YWc6IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBUaGUgbWF0Y2hlZCB7QGxpbmsgQmNwNDcuTGFuZ3VhZ2VUYWcgfCBsYW5ndWFnZSB0YWd9LlxuICAgICAqL1xuICAgIGxhbmd1YWdlVGFnOiBMYW5ndWFnZVRhZztcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciB7QGxpbmsgQmNwNDcuZmlsdGVyIHwgbGFuZ3VhZ2UgdGFnIGxpc3QgZmlsdGVyfSBmdW5jdGlvbnMuXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTGFuZ3VhZ2VDaG9vc2VyT3B0aW9ucyB7XG4gICAgLyoqXG4gICAgICogSW5kaWNhdGVzIHdoZXRoZXIgdG8gcmV0dXJuIHRoZSBtYXRjaGluZyBsYW5ndWFnZSBmcm9tIHRoZVxuICAgICAqIGRlc2lyZWQgbGlzdCBvciB0aGUgYXZhaWxhYmxlIGxpc3QuIERlZmF1bHQgaXMgYCdhdmFpbGFibGVMYW5ndWFnZSdgLlxuICAgICAqL1xuICAgIHVzZT86ICdkZXNpcmVkTGFuZ3VhZ2UnIHwgJ2F2YWlsYWJsZUxhbmd1YWdlJztcblxuICAgIC8qKlxuICAgICAqIEluZGljYXRlcyBob3cgdG8gZmlsdGVyIHRoZSBsYW5ndWFnZSBsaXN0IC0gYCdwcmltYXJ5TGFuZ3VhZ2UnYFxuICAgICAqIGluZGljYXRlcyB0aGUgZWFjaCBwcmltYXJ5IGxhbmd1YWdlIHNob3VsZCBhcHBlYXIgb25seSBvbmNlIGluXG4gICAgICogdGhlIGxpc3QgaW4gaXRzIG1vc3Qgc2ltaWxhciBmb3JtLiAgQSBmaWx0ZXIgdmFsdWUgb2YgYCdub25lJ2BcbiAgICAgKiByZXBvcnRzIGFsbCBtYXRjaGluZyB2YXJpYW50cyBvZiBhbnkgcHJpbWFyeSBsYW5ndWFnZSBpbiBvcmRlclxuICAgICAqIG9mIHNpbWlsYXJpdHkuICBEZWZhdWx0IGlzIGAncHJpbWFyeUxhbmd1YWdlJ2BcbiAgICAgKi9cbiAgICBmaWx0ZXI/OiAncHJpbWFyeUxhbmd1YWdlJyB8ICdub25lJztcblxuICAgIC8qKlxuICAgICAqIEFuIG9wdGlvbmFsIHtAbGluayBCY3A0Ny5MYW5ndWFnZVNwZWMgfCBsYW5ndWFnZSBzcGVjaWZpY2F0aW9ufVxuICAgICAqIGluZGljYXRpbmcgYSBsYW5ndWFnZSB0byBiZSByZXR1cm5lZCBpZiB0aGUgZmlsdGVyIGNhbGwgd291bGRcbiAgICAgKiBvdGhlcndpc2UgcmV0dXJuIGFuIGVtcHR5IGxpc3QgKGkuZS4gbm8gbGFuZ3VhZ2VzIG1hdGNoKS5cbiAgICAgKi9cbiAgICB1bHRpbWF0ZUZhbGxiYWNrPzogc3RyaW5nIHwgU3VidGFncyB8IExhbmd1YWdlVGFnO1xufVxuXG4vKipcbiAqIERlZmF1bHQgdmFsdWVzIGZvciBhe0BsaW5rIEJjcDQ3Lkxhbmd1YWdlRmlsdGVyT3B0aW9uc30uXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBkZWZhdWx0TGFuZ3VhZ2VDaG9vc2VyT3B0aW9uczogTGFuZ3VhZ2VDaG9vc2VyT3B0aW9ucyA9IE9iamVjdC5mcmVlemUoe1xuICAgIHVzZTogJ2F2YWlsYWJsZUxhbmd1YWdlJyxcbiAgICBmaWx0ZXI6ICdwcmltYXJ5TGFuZ3VhZ2UnLFxufSk7XG5cbi8qKlxuICogSGVscGVyIHRvIGNvbXBhcmUgYSBsaXN0IG9mICdkZXNpcmVkJyBsYW5ndWFnZXMgdG8gYSBsaXN0IG9mICdhdmFpbGFibGUnIGxhbmd1YWdlXG4gKiBhbmQgcmV0dXJuIHRoZSBpbnRlcnNlY3Rpb24gaW4gb3JkZXIgb2YgcHJlZmVyZW5jZSwgdGFraW5nIHRhZyBzZW1hbnRpY3MgaW50byBhY2NvdW50LlxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY2xhc3MgTGFuZ3VhZ2VDaG9vc2VyIHtcbiAgICAvKipcbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgX21hdGNoZXI6IExhbmd1YWdlU2ltaWxhcml0eU1hdGNoZXI7XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoaWFuYT86IElhbmEuTGFuZ3VhZ2VSZWdpc3RyaWVzKSB7XG4gICAgICAgIHRoaXMuX21hdGNoZXIgPSBuZXcgTGFuZ3VhZ2VTaW1pbGFyaXR5TWF0Y2hlcihpYW5hKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY2hvb3NlTGFuZ3VhZ2VUYWdzV2l0aERldGFpbHMoXG4gICAgICAgIGRlc2lyZWRMYW5ndWFnZXM6IExhbmd1YWdlVGFnW10sXG4gICAgICAgIGF2YWlsYWJsZUxhbmd1YWdlczogTGFuZ3VhZ2VUYWdbXSxcbiAgICAgICAgb3B0aW9ucz86IExhbmd1YWdlQ2hvb3Nlck9wdGlvbnNcbiAgICApOiBNYXRjaGluZ0xhbmd1YWdlW10ge1xuICAgICAgICBjb25zdCBtYXRjaGVkID0gbmV3IE1hcDxzdHJpbmcsIE1hdGNoaW5nTGFuZ3VhZ2U+KCk7XG4gICAgICAgIGNvbnN0IGRlY3JlbWVudCA9IGRlc2lyZWRMYW5ndWFnZXMubGVuZ3RoIDwgMTAgPyAwLjEgOiAxLjAgLyBkZXNpcmVkTGFuZ3VhZ2VzLmxlbmd0aDtcbiAgICAgICAgbGV0IGJhc2UgPSAxLjA7XG5cbiAgICAgICAgLy8gZmlsbCBhbnkgbWlzc2luZyBmaWVsZHMgZnJvbSB0aGUgZGVmYXVsdFxuICAgICAgICBvcHRpb25zID0geyAuLi5kZWZhdWx0TGFuZ3VhZ2VDaG9vc2VyT3B0aW9ucywgLi4ub3B0aW9ucyB9O1xuXG4gICAgICAgIGZvciAoY29uc3Qgd2FudCBvZiBkZXNpcmVkTGFuZ3VhZ2VzKSB7XG4gICAgICAgICAgICBiYXNlIC09IGRlY3JlbWVudDtcbiAgICAgICAgICAgIGZvciAoY29uc3QgaGF2ZSBvZiBhdmFpbGFibGVMYW5ndWFnZXMpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBzaW1pbGFyaXR5ID0gdGhpcy5fbWF0Y2hlci5tYXRjaExhbmd1YWdlVGFncyh3YW50LCBoYXZlKTtcbiAgICAgICAgICAgICAgICBpZiAoc2ltaWxhcml0eSA+IDAuMCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBxdWFsaXR5ID0gYmFzZSArIHNpbWlsYXJpdHkgKiBkZWNyZW1lbnQ7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGxhbmd1YWdlVGFnID0gb3B0aW9ucy51c2UgPT09ICdhdmFpbGFibGVMYW5ndWFnZScgPyBoYXZlIDogd2FudDtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdGFnID0gbGFuZ3VhZ2VUYWcudGFnO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBrZXkgPSBvcHRpb25zLmZpbHRlciA9PT0gJ3ByaW1hcnlMYW5ndWFnZScgPyBsYW5ndWFnZVRhZy5zdWJ0YWdzLnByaW1hcnlMYW5ndWFnZSA/PyB0YWcgOiB0YWc7XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbWF0Y2g6IE1hdGNoaW5nTGFuZ3VhZ2UgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBxdWFsaXR5LFxuICAgICAgICAgICAgICAgICAgICAgICAgdGFnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFuZ3VhZ2VUYWcsXG4gICAgICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZXhpc3RpbmcgPSBtYXRjaGVkLmdldChrZXkpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWV4aXN0aW5nIHx8IGV4aXN0aW5nLnF1YWxpdHkgPCBxdWFsaXR5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaGVkLnNldChrZXksIG1hdGNoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHZhbHVlcyA9IEFycmF5LmZyb20obWF0Y2hlZC52YWx1ZXMoKSk7XG4gICAgICAgIGlmICh2YWx1ZXMubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgLy8gd2FudCBkZXNjZW5kaW5nIG9yZGVyXG4gICAgICAgICAgICB2YWx1ZXMuc29ydCgobTEsIG0yKSA9PiBtMi5xdWFsaXR5IC0gbTEucXVhbGl0eSk7XG4gICAgICAgIH0gZWxzZSBpZiAodmFsdWVzLmxlbmd0aCA9PT0gMCAmJiBvcHRpb25zLnVsdGltYXRlRmFsbGJhY2spIHtcbiAgICAgICAgICAgIGNvbnN0IGxhbmd1YWdlVGFnID1cbiAgICAgICAgICAgICAgICBvcHRpb25zLnVsdGltYXRlRmFsbGJhY2sgaW5zdGFuY2VvZiBMYW5ndWFnZVRhZ1xuICAgICAgICAgICAgICAgICAgICA/IG9wdGlvbnMudWx0aW1hdGVGYWxsYmFja1xuICAgICAgICAgICAgICAgICAgICA6IExhbmd1YWdlVGFnLmNyZWF0ZShvcHRpb25zLnVsdGltYXRlRmFsbGJhY2spLm9yRGVmYXVsdCgpO1xuICAgICAgICAgICAgaWYgKGxhbmd1YWdlVGFnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFt7IGxhbmd1YWdlVGFnLCB0YWc6IGxhbmd1YWdlVGFnLnRhZywgcXVhbGl0eTogMCB9XTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdmFsdWVzO1xuICAgIH1cblxuICAgIHB1YmxpYyBmaWx0ZXJMYW5ndWFnZVRhZ3MoXG4gICAgICAgIGRlc2lyZWRMYW5ndWFnZXM6IExhbmd1YWdlVGFnW10sXG4gICAgICAgIGF2YWlsYWJsZUxhbmd1YWdlczogTGFuZ3VhZ2VUYWdbXSxcbiAgICAgICAgb3B0aW9ucz86IExhbmd1YWdlQ2hvb3Nlck9wdGlvbnNcbiAgICApOiBMYW5ndWFnZVRhZ1tdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2hvb3NlTGFuZ3VhZ2VUYWdzV2l0aERldGFpbHMoZGVzaXJlZExhbmd1YWdlcywgYXZhaWxhYmxlTGFuZ3VhZ2VzLCBvcHRpb25zKS5tYXAoKHQpID0+IHQubGFuZ3VhZ2VUYWcpO1xuICAgIH1cbn1cbiJdfQ==
92
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hvb3Nlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9iY3A0Ny9tYXRjaC9jaG9vc2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQkc7OztBQUlILDZDQUF5RDtBQUN6RCxnREFBNkM7QUFxRDdDOzs7R0FHRztBQUNVLFFBQUEsNkJBQTZCLEdBQTJCLE1BQU0sQ0FBQyxNQUFNLENBQUM7SUFDL0UsR0FBRyxFQUFFLG1CQUFtQjtJQUN4QixNQUFNLEVBQUUsaUJBQWlCO0NBQzVCLENBQUMsQ0FBQztBQUVIOzs7O0dBSUc7QUFDSCxNQUFhLGVBQWU7SUFNeEIsWUFBbUIsSUFBOEI7UUFDN0MsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLHNDQUF5QixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFTSw2QkFBNkIsQ0FDaEMsZ0JBQStCLEVBQy9CLGtCQUFpQyxFQUNqQyxPQUFnQzs7UUFFaEMsTUFBTSxPQUFPLEdBQUcsSUFBSSxHQUFHLEVBQTRCLENBQUM7UUFDcEQsTUFBTSxTQUFTLEdBQUcsZ0JBQWdCLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsZ0JBQWdCLENBQUMsTUFBTSxDQUFDO1FBQ3JGLElBQUksSUFBSSxHQUFHLEdBQUcsQ0FBQztRQUVmLDJDQUEyQztRQUMzQyxPQUFPLEdBQUcsRUFBRSxHQUFHLHFDQUE2QixFQUFFLEdBQUcsT0FBTyxFQUFFLENBQUM7UUFFM0QsS0FBSyxNQUFNLElBQUksSUFBSSxnQkFBZ0IsRUFBRTtZQUNqQyxJQUFJLElBQUksU0FBUyxDQUFDO1lBQ2xCLEtBQUssTUFBTSxJQUFJLElBQUksa0JBQWtCLEVBQUU7Z0JBQ25DLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO2dCQUMvRCxJQUFJLFVBQVUsR0FBRyxHQUFHLEVBQUU7b0JBQ2xCLE1BQU0sT0FBTyxHQUFHLElBQUksR0FBRyxVQUFVLEdBQUcsU0FBUyxDQUFDO29CQUM5QyxNQUFNLFdBQVcsR0FBRyxPQUFPLENBQUMsR0FBRyxLQUFLLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztvQkFDdEUsTUFBTSxHQUFHLEdBQUcsV0FBVyxDQUFDLEdBQUcsQ0FBQztvQkFDNUIsTUFBTSxHQUFHLEdBQUcsT0FBTyxDQUFDLE1BQU0sS0FBSyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsTUFBQSxXQUFXLENBQUMsT0FBTyxDQUFDLGVBQWUsbUNBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7b0JBRXBHLE1BQU0sS0FBSyxHQUFxQjt3QkFDNUIsT0FBTzt3QkFDUCxHQUFHO3dCQUNILFdBQVc7cUJBQ2QsQ0FBQztvQkFFRixNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO29CQUNsQyxJQUFJLENBQUMsUUFBUSxJQUFJLFFBQVEsQ0FBQyxPQUFPLEdBQUcsT0FBTyxFQUFFO3dCQUN6QyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztxQkFDM0I7aUJBQ0o7YUFDSjtTQUNKO1FBRUQsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUM1QyxJQUFJLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ25CLHdCQUF3QjtZQUN4QixNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDcEQ7YUFBTSxJQUFJLE1BQU0sQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRTtZQUN4RCxNQUFNLFdBQVcsR0FDYixPQUFPLENBQUMsZ0JBQWdCLFlBQVkseUJBQVc7Z0JBQzNDLENBQUMsQ0FBQyxPQUFPLENBQUMsZ0JBQWdCO2dCQUMxQixDQUFDLENBQUMseUJBQVcsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDbkUsSUFBSSxXQUFXLEVBQUU7Z0JBQ2IsT0FBTyxDQUFDLEVBQUUsV0FBVyxFQUFFLEdBQUcsRUFBRSxXQUFXLENBQUMsR0FBRyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2FBQzlEO1NBQ0o7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNsQixDQUFDO0lBRU0sa0JBQWtCLENBQ3JCLGdCQUErQixFQUMvQixrQkFBaUMsRUFDakMsT0FBZ0M7UUFFaEMsT0FBTyxJQUFJLENBQUMsNkJBQTZCLENBQUMsZ0JBQWdCLEVBQUUsa0JBQWtCLEVBQUUsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDdkgsQ0FBQztDQUNKO0FBckVELDBDQXFFQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjIgRXJpayBGb3J0dW5lXG4gKlxuICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuICogaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuICogdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4gKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuICpcbiAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbFxuICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbiAqXG4gKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4gKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbiAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbiAqIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFXG4gKiBTT0ZUV0FSRS5cbiAqL1xuXG5pbXBvcnQgKiBhcyBJYW5hIGZyb20gJy4uLy4uL2lhbmEnO1xuXG5pbXBvcnQgeyBMYW5ndWFnZVNpbWlsYXJpdHlNYXRjaGVyIH0gZnJvbSAnLi9zaW1pbGFyaXR5JztcbmltcG9ydCB7IExhbmd1YWdlVGFnIH0gZnJvbSAnLi4vbGFuZ3VhZ2VUYWcnO1xuaW1wb3J0IHsgU3VidGFncyB9IGZyb20gJy4uL2NvbW1vbic7XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIHNpbmdsZSBtYXRjaGluZyBmaWx0ZXJlZCBsYW5ndWFnZS5cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNYXRjaGluZ0xhbmd1YWdlIHtcbiAgICAvKipcbiAgICAgKiBOdW1lcmljIGluZGljYXRpb24gb2YgaG93IHdlbGwgdGhlIGxhbmd1YWdlIG1hdGNoZXMsXG4gICAgICogZnJvbSBwZXJmZWN0IChgMS4wYCkgdG8gbm90IGF0IGFsbCAoYDAuMGApLiAgV2hlblxuICAgICAqIG1hdGNoaW5nIGFuIG9yZGVyZWQgbGlzdCwgbGFuZ3VhZ2VzIGF0IHRoZSBmcm9udCBvZlxuICAgICAqIHRoZSBkZXNpcmVkIGxhbmd1YWdlIGxpc3QgYXJlIGFsd2F5cyBoaWdoZXIgcXVhbGl0eS5cbiAgICAgKi9cbiAgICBxdWFsaXR5OiBudW1iZXI7XG4gICAgLyoqXG4gICAgICogVGhlIGBzdHJpbmdgIHRhZyBvZiB0aGUgbWF0Y2hlZCBsYW5ndWFnZS5cbiAgICAgKi9cbiAgICB0YWc6IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBUaGUgbWF0Y2hlZCB7QGxpbmsgQmNwNDcuTGFuZ3VhZ2VUYWcgfCBsYW5ndWFnZSB0YWd9LlxuICAgICAqL1xuICAgIGxhbmd1YWdlVGFnOiBMYW5ndWFnZVRhZztcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciB7QGxpbmsgQmNwNDcuY2hvb3NlIHwgbGFuZ3VhZ2UgdGFnIGxpc3QgZmlsdGVyfSBmdW5jdGlvbnMuXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTGFuZ3VhZ2VDaG9vc2VyT3B0aW9ucyB7XG4gICAgLyoqXG4gICAgICogSW5kaWNhdGVzIHdoZXRoZXIgdG8gcmV0dXJuIHRoZSBtYXRjaGluZyBsYW5ndWFnZSBmcm9tIHRoZVxuICAgICAqIGRlc2lyZWQgbGlzdCBvciB0aGUgYXZhaWxhYmxlIGxpc3QuIERlZmF1bHQgaXMgYCdhdmFpbGFibGVMYW5ndWFnZSdgLlxuICAgICAqL1xuICAgIHVzZT86ICdkZXNpcmVkTGFuZ3VhZ2UnIHwgJ2F2YWlsYWJsZUxhbmd1YWdlJztcblxuICAgIC8qKlxuICAgICAqIEluZGljYXRlcyBob3cgdG8gZmlsdGVyIHRoZSBsYW5ndWFnZSBsaXN0IC0gYCdwcmltYXJ5TGFuZ3VhZ2UnYFxuICAgICAqIGluZGljYXRlcyB0aGUgZWFjaCBwcmltYXJ5IGxhbmd1YWdlIHNob3VsZCBhcHBlYXIgb25seSBvbmNlIGluXG4gICAgICogdGhlIGxpc3QgaW4gaXRzIG1vc3Qgc2ltaWxhciBmb3JtLiAgQSBmaWx0ZXIgdmFsdWUgb2YgYCdub25lJ2BcbiAgICAgKiByZXBvcnRzIGFsbCBtYXRjaGluZyB2YXJpYW50cyBvZiBhbnkgcHJpbWFyeSBsYW5ndWFnZSBpbiBvcmRlclxuICAgICAqIG9mIHNpbWlsYXJpdHkuICBEZWZhdWx0IGlzIGAncHJpbWFyeUxhbmd1YWdlJ2BcbiAgICAgKi9cbiAgICBmaWx0ZXI/OiAncHJpbWFyeUxhbmd1YWdlJyB8ICdub25lJztcblxuICAgIC8qKlxuICAgICAqIEFuIG9wdGlvbmFsIHtAbGluayBCY3A0Ny5MYW5ndWFnZVNwZWMgfCBsYW5ndWFnZSBzcGVjaWZpY2F0aW9ufVxuICAgICAqIGluZGljYXRpbmcgYSBsYW5ndWFnZSB0byBiZSByZXR1cm5lZCBpZiB0aGUgZmlsdGVyIGNhbGwgd291bGRcbiAgICAgKiBvdGhlcndpc2UgcmV0dXJuIGFuIGVtcHR5IGxpc3QgKGkuZS4gbm8gbGFuZ3VhZ2VzIG1hdGNoKS5cbiAgICAgKi9cbiAgICB1bHRpbWF0ZUZhbGxiYWNrPzogc3RyaW5nIHwgU3VidGFncyB8IExhbmd1YWdlVGFnO1xufVxuXG4vKipcbiAqIERlZmF1bHQgdmFsdWVzIGZvciBhe0BsaW5rIEJjcDQ3Lkxhbmd1YWdlRmlsdGVyT3B0aW9uc30uXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBkZWZhdWx0TGFuZ3VhZ2VDaG9vc2VyT3B0aW9uczogTGFuZ3VhZ2VDaG9vc2VyT3B0aW9ucyA9IE9iamVjdC5mcmVlemUoe1xuICAgIHVzZTogJ2F2YWlsYWJsZUxhbmd1YWdlJyxcbiAgICBmaWx0ZXI6ICdwcmltYXJ5TGFuZ3VhZ2UnLFxufSk7XG5cbi8qKlxuICogSGVscGVyIHRvIGNvbXBhcmUgYSBsaXN0IG9mICdkZXNpcmVkJyBsYW5ndWFnZXMgdG8gYSBsaXN0IG9mICdhdmFpbGFibGUnIGxhbmd1YWdlXG4gKiBhbmQgcmV0dXJuIHRoZSBpbnRlcnNlY3Rpb24gaW4gb3JkZXIgb2YgcHJlZmVyZW5jZSwgdGFraW5nIHRhZyBzZW1hbnRpY3MgaW50byBhY2NvdW50LlxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY2xhc3MgTGFuZ3VhZ2VDaG9vc2VyIHtcbiAgICAvKipcbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgX21hdGNoZXI6IExhbmd1YWdlU2ltaWxhcml0eU1hdGNoZXI7XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoaWFuYT86IElhbmEuTGFuZ3VhZ2VSZWdpc3RyaWVzKSB7XG4gICAgICAgIHRoaXMuX21hdGNoZXIgPSBuZXcgTGFuZ3VhZ2VTaW1pbGFyaXR5TWF0Y2hlcihpYW5hKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY2hvb3NlTGFuZ3VhZ2VUYWdzV2l0aERldGFpbHMoXG4gICAgICAgIGRlc2lyZWRMYW5ndWFnZXM6IExhbmd1YWdlVGFnW10sXG4gICAgICAgIGF2YWlsYWJsZUxhbmd1YWdlczogTGFuZ3VhZ2VUYWdbXSxcbiAgICAgICAgb3B0aW9ucz86IExhbmd1YWdlQ2hvb3Nlck9wdGlvbnNcbiAgICApOiBNYXRjaGluZ0xhbmd1YWdlW10ge1xuICAgICAgICBjb25zdCBtYXRjaGVkID0gbmV3IE1hcDxzdHJpbmcsIE1hdGNoaW5nTGFuZ3VhZ2U+KCk7XG4gICAgICAgIGNvbnN0IGRlY3JlbWVudCA9IGRlc2lyZWRMYW5ndWFnZXMubGVuZ3RoIDwgMTAgPyAwLjEgOiAxLjAgLyBkZXNpcmVkTGFuZ3VhZ2VzLmxlbmd0aDtcbiAgICAgICAgbGV0IGJhc2UgPSAxLjA7XG5cbiAgICAgICAgLy8gZmlsbCBhbnkgbWlzc2luZyBmaWVsZHMgZnJvbSB0aGUgZGVmYXVsdFxuICAgICAgICBvcHRpb25zID0geyAuLi5kZWZhdWx0TGFuZ3VhZ2VDaG9vc2VyT3B0aW9ucywgLi4ub3B0aW9ucyB9O1xuXG4gICAgICAgIGZvciAoY29uc3Qgd2FudCBvZiBkZXNpcmVkTGFuZ3VhZ2VzKSB7XG4gICAgICAgICAgICBiYXNlIC09IGRlY3JlbWVudDtcbiAgICAgICAgICAgIGZvciAoY29uc3QgaGF2ZSBvZiBhdmFpbGFibGVMYW5ndWFnZXMpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBzaW1pbGFyaXR5ID0gdGhpcy5fbWF0Y2hlci5tYXRjaExhbmd1YWdlVGFncyh3YW50LCBoYXZlKTtcbiAgICAgICAgICAgICAgICBpZiAoc2ltaWxhcml0eSA+IDAuMCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBxdWFsaXR5ID0gYmFzZSArIHNpbWlsYXJpdHkgKiBkZWNyZW1lbnQ7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGxhbmd1YWdlVGFnID0gb3B0aW9ucy51c2UgPT09ICdhdmFpbGFibGVMYW5ndWFnZScgPyBoYXZlIDogd2FudDtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdGFnID0gbGFuZ3VhZ2VUYWcudGFnO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBrZXkgPSBvcHRpb25zLmZpbHRlciA9PT0gJ3ByaW1hcnlMYW5ndWFnZScgPyBsYW5ndWFnZVRhZy5zdWJ0YWdzLnByaW1hcnlMYW5ndWFnZSA/PyB0YWcgOiB0YWc7XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbWF0Y2g6IE1hdGNoaW5nTGFuZ3VhZ2UgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBxdWFsaXR5LFxuICAgICAgICAgICAgICAgICAgICAgICAgdGFnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFuZ3VhZ2VUYWcsXG4gICAgICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZXhpc3RpbmcgPSBtYXRjaGVkLmdldChrZXkpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWV4aXN0aW5nIHx8IGV4aXN0aW5nLnF1YWxpdHkgPCBxdWFsaXR5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaGVkLnNldChrZXksIG1hdGNoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHZhbHVlcyA9IEFycmF5LmZyb20obWF0Y2hlZC52YWx1ZXMoKSk7XG4gICAgICAgIGlmICh2YWx1ZXMubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgLy8gd2FudCBkZXNjZW5kaW5nIG9yZGVyXG4gICAgICAgICAgICB2YWx1ZXMuc29ydCgobTEsIG0yKSA9PiBtMi5xdWFsaXR5IC0gbTEucXVhbGl0eSk7XG4gICAgICAgIH0gZWxzZSBpZiAodmFsdWVzLmxlbmd0aCA9PT0gMCAmJiBvcHRpb25zLnVsdGltYXRlRmFsbGJhY2spIHtcbiAgICAgICAgICAgIGNvbnN0IGxhbmd1YWdlVGFnID1cbiAgICAgICAgICAgICAgICBvcHRpb25zLnVsdGltYXRlRmFsbGJhY2sgaW5zdGFuY2VvZiBMYW5ndWFnZVRhZ1xuICAgICAgICAgICAgICAgICAgICA/IG9wdGlvbnMudWx0aW1hdGVGYWxsYmFja1xuICAgICAgICAgICAgICAgICAgICA6IExhbmd1YWdlVGFnLmNyZWF0ZShvcHRpb25zLnVsdGltYXRlRmFsbGJhY2spLm9yRGVmYXVsdCgpO1xuICAgICAgICAgICAgaWYgKGxhbmd1YWdlVGFnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFt7IGxhbmd1YWdlVGFnLCB0YWc6IGxhbmd1YWdlVGFnLnRhZywgcXVhbGl0eTogMCB9XTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdmFsdWVzO1xuICAgIH1cblxuICAgIHB1YmxpYyBmaWx0ZXJMYW5ndWFnZVRhZ3MoXG4gICAgICAgIGRlc2lyZWRMYW5ndWFnZXM6IExhbmd1YWdlVGFnW10sXG4gICAgICAgIGF2YWlsYWJsZUxhbmd1YWdlczogTGFuZ3VhZ2VUYWdbXSxcbiAgICAgICAgb3B0aW9ucz86IExhbmd1YWdlQ2hvb3Nlck9wdGlvbnNcbiAgICApOiBMYW5ndWFnZVRhZ1tdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2hvb3NlTGFuZ3VhZ2VUYWdzV2l0aERldGFpbHMoZGVzaXJlZExhbmd1YWdlcywgYXZhaWxhYmxlTGFuZ3VhZ2VzLCBvcHRpb25zKS5tYXAoKHQpID0+IHQubGFuZ3VhZ2VUYWcpO1xuICAgIH1cbn1cbiJdfQ==
@@ -29,7 +29,7 @@ const overridesRegistry_1 = require("./overridesRegistry");
29
29
  class DefaultRegistries {
30
30
  static get overridesRegistry() {
31
31
  if (!this._overridesRegistry) {
32
- this._overridesRegistry = overridesRegistry_1.OverridesRegistry.loadJson('data/bcp/overrides.json').orThrow();
32
+ this._overridesRegistry = overridesRegistry_1.OverridesRegistry.loadDefault().orThrow();
33
33
  }
34
34
  return this._overridesRegistry;
35
35
  }
@@ -39,4 +39,4 @@ exports.DefaultRegistries = DefaultRegistries;
39
39
  * @internal
40
40
  */
41
41
  DefaultRegistries._overridesRegistry = undefined;
42
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdFJlZ2lzdHJpZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYmNwNDcvb3ZlcnJpZGVzL2RlZmF1bHRSZWdpc3RyaWVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQkc7OztBQUVILDJEQUF3RDtBQUV4RDs7R0FFRztBQUNILE1BQWEsaUJBQWlCO0lBTW5CLE1BQU0sS0FBSyxpQkFBaUI7UUFDL0IsSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRTtZQUMxQixJQUFJLENBQUMsa0JBQWtCLEdBQUcscUNBQWlCLENBQUMsUUFBUSxDQUFDLHlCQUF5QixDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7U0FDN0Y7UUFDRCxPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztJQUNuQyxDQUFDOztBQVhMLDhDQVlDO0FBWEc7O0dBRUc7QUFDWSxvQ0FBa0IsR0FBdUIsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAyMiBFcmlrIEZvcnR1bmVcbiAqXG4gKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4gKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4gKiBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4gKiB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4gKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbiAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4gKlxuICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsXG4gKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuICpcbiAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1JcbiAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4gKiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4gKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuICogT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEVcbiAqIFNPRlRXQVJFLlxuICovXG5cbmltcG9ydCB7IE92ZXJyaWRlc1JlZ2lzdHJ5IH0gZnJvbSAnLi9vdmVycmlkZXNSZWdpc3RyeSc7XG5cbi8qKlxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY2xhc3MgRGVmYXVsdFJlZ2lzdHJpZXMge1xuICAgIC8qKlxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHByaXZhdGUgc3RhdGljIF9vdmVycmlkZXNSZWdpc3RyeT86IE92ZXJyaWRlc1JlZ2lzdHJ5ID0gdW5kZWZpbmVkO1xuXG4gICAgcHVibGljIHN0YXRpYyBnZXQgb3ZlcnJpZGVzUmVnaXN0cnkoKTogT3ZlcnJpZGVzUmVnaXN0cnkge1xuICAgICAgICBpZiAoIXRoaXMuX292ZXJyaWRlc1JlZ2lzdHJ5KSB7XG4gICAgICAgICAgICB0aGlzLl9vdmVycmlkZXNSZWdpc3RyeSA9IE92ZXJyaWRlc1JlZ2lzdHJ5LmxvYWRKc29uKCdkYXRhL2JjcC9vdmVycmlkZXMuanNvbicpLm9yVGhyb3coKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5fb3ZlcnJpZGVzUmVnaXN0cnk7XG4gICAgfVxufVxuIl19
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdFJlZ2lzdHJpZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYmNwNDcvb3ZlcnJpZGVzL2RlZmF1bHRSZWdpc3RyaWVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQkc7OztBQUVILDJEQUF3RDtBQUV4RDs7R0FFRztBQUNILE1BQWEsaUJBQWlCO0lBTW5CLE1BQU0sS0FBSyxpQkFBaUI7UUFDL0IsSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRTtZQUMxQixJQUFJLENBQUMsa0JBQWtCLEdBQUcscUNBQWlCLENBQUMsV0FBVyxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUM7U0FDdkU7UUFDRCxPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztJQUNuQyxDQUFDOztBQVhMLDhDQVlDO0FBWEc7O0dBRUc7QUFDWSxvQ0FBa0IsR0FBdUIsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAyMiBFcmlrIEZvcnR1bmVcbiAqXG4gKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4gKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4gKiBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4gKiB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4gKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbiAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4gKlxuICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsXG4gKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuICpcbiAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1JcbiAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4gKiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4gKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuICogT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEVcbiAqIFNPRlRXQVJFLlxuICovXG5cbmltcG9ydCB7IE92ZXJyaWRlc1JlZ2lzdHJ5IH0gZnJvbSAnLi9vdmVycmlkZXNSZWdpc3RyeSc7XG5cbi8qKlxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY2xhc3MgRGVmYXVsdFJlZ2lzdHJpZXMge1xuICAgIC8qKlxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHByaXZhdGUgc3RhdGljIF9vdmVycmlkZXNSZWdpc3RyeT86IE92ZXJyaWRlc1JlZ2lzdHJ5ID0gdW5kZWZpbmVkO1xuXG4gICAgcHVibGljIHN0YXRpYyBnZXQgb3ZlcnJpZGVzUmVnaXN0cnkoKTogT3ZlcnJpZGVzUmVnaXN0cnkge1xuICAgICAgICBpZiAoIXRoaXMuX292ZXJyaWRlc1JlZ2lzdHJ5KSB7XG4gICAgICAgICAgICB0aGlzLl9vdmVycmlkZXNSZWdpc3RyeSA9IE92ZXJyaWRlc1JlZ2lzdHJ5LmxvYWREZWZhdWx0KCkub3JUaHJvdygpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLl9vdmVycmlkZXNSZWdpc3RyeTtcbiAgICB9XG59XG4iXX0=
@@ -17,6 +17,8 @@ export declare class OverridesRegistry {
17
17
  readonly overrides: Map<LanguageSubtag, LanguageOverride>;
18
18
  protected constructor();
19
19
  static create(overrides: LanguageOverride[]): Result<OverridesRegistry>;
20
+ static createFromJson(from: unknown): Result<OverridesRegistry>;
21
+ static loadDefault(): Result<OverridesRegistry>;
20
22
  static loadJson(path: string): Result<OverridesRegistry>;
21
23
  /**
22
24
  * Converts a file {@link Bcp47.Overrides.Model.LanguageOverrideRecord | LanguageOverrideRecord }
@@ -1 +1 @@
1
- {"version":3,"file":"overridesRegistry.d.ts","sourceRoot":"","sources":["../../../src/bcp47/overrides/overridesRegistry.ts"],"names":[],"mappings":"AAuBA,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AAEjC,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3E,OAAO,EAAE,MAAM,EAAuB,MAAM,eAAe,CAAC;AAE5D;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC7B,QAAQ,EAAE,cAAc,CAAC;IACzB,eAAe,CAAC,EAAE,YAAY,CAAC;IAC/B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,GAAG,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;CACxC;AAED;;GAEG;AACH,qBAAa,iBAAiB;IAC1B,SAAgB,SAAS,EAAE,GAAG,CAAC,cAAc,EAAE,gBAAgB,CAAC,CAAC;IAEjE,SAAS;WAIK,MAAM,CAAC,SAAS,EAAE,gBAAgB,EAAE,GAAG,MAAM,CAAC,iBAAiB,CAAC;WAMhE,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,iBAAiB,CAAC;IAU/D;;;;;;;;OAQG;IACH,SAAS,CAAC,MAAM,CAAC,mBAAmB,CAAC,MAAM,EAAE,KAAK,CAAC,sBAAsB,GAAG,MAAM,CAAC,gBAAgB,CAAC;CAmBvG"}
1
+ {"version":3,"file":"overridesRegistry.d.ts","sourceRoot":"","sources":["../../../src/bcp47/overrides/overridesRegistry.ts"],"names":[],"mappings":"AAuBA,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AAEjC,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3E,OAAO,EAAE,MAAM,EAAuB,MAAM,eAAe,CAAC;AAG5D;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC7B,QAAQ,EAAE,cAAc,CAAC;IACzB,eAAe,CAAC,EAAE,YAAY,CAAC;IAC/B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,GAAG,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;CACxC;AAED;;GAEG;AACH,qBAAa,iBAAiB;IAC1B,SAAgB,SAAS,EAAE,GAAG,CAAC,cAAc,EAAE,gBAAgB,CAAC,CAAC;IAEjE,SAAS;WAIK,MAAM,CAAC,SAAS,EAAE,gBAAgB,EAAE,GAAG,MAAM,CAAC,iBAAiB,CAAC;WAMhE,cAAc,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAAC,iBAAiB,CAAC;WAWxD,WAAW,IAAI,MAAM,CAAC,iBAAiB,CAAC;WAIxC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,iBAAiB,CAAC;IAI/D;;;;;;;;OAQG;IACH,SAAS,CAAC,MAAM,CAAC,mBAAmB,CAAC,MAAM,EAAE,KAAK,CAAC,sBAAsB,GAAG,MAAM,CAAC,gBAAgB,CAAC;CAmBvG"}