New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

@fgv/ts-bcp47

Package Overview
Dependencies
Maintainers
1
Versions
38
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@fgv/ts-bcp47 - npm Package Compare versions

Comparing version 0.9.3 to 0.9.4

16

bcp47/languageRegistryData.d.ts

@@ -79,2 +79,6 @@ import * as Bcp47 from '../bcp47';

*/
protected _effectiveScript?: Iana.LanguageSubtags.Model.RegisteredScript | false;
/**
* @internal
*/
protected _region?: Iana.LanguageSubtags.Model.RegisteredRegion | false;

@@ -118,4 +122,2 @@ /**

*
* Note that script will default to the registry `Suppress-Script` value of the
* primary language if no script subtag is present.
* @public

@@ -125,2 +127,12 @@ */

/**
* Registry data associated with the script of the language tag from
* which this {@link Bcp47.LanguageTagRegistryData | Bcp47.LanguageTagRegistryData}
* was constructed, or `undefined` if the script cannot be determined.
*
* Note that effectiveScript will default to the registry `Suppress-Script` value of the
* primary language if no script subtag is present.
* @public
*/
get effectiveScript(): Iana.LanguageSubtags.Model.RegisteredScript | undefined;
/**
* Registry data associated with the region subtag of the language tag from

@@ -127,0 +139,0 @@ * which this {@link Bcp47.LanguageTagRegistryData | Bcp47.LanguageTagRegistryData}

34

bcp47/languageRegistryData.js

@@ -81,8 +81,5 @@ "use strict";

*
* Note that script will default to the registry `Suppress-Script` value of the
* primary language if no script subtag is present.
* @public
*/
get script() {
var _a;
if (this._script === undefined) {

@@ -93,12 +90,33 @@ if (this._subtags.script) {

if (!this._script) {
this._script = false;
}
}
return this._script ? this._script : undefined;
}
/**
* Registry data associated with the script of the language tag from
* which this {@link Bcp47.LanguageTagRegistryData | Bcp47.LanguageTagRegistryData}
* was constructed, or `undefined` if the script cannot be determined.
*
* Note that effectiveScript will default to the registry `Suppress-Script` value of the
* primary language if no script subtag is present.
* @public
*/
get effectiveScript() {
var _a;
if (this._effectiveScript === undefined) {
if (this._subtags.script) {
this._effectiveScript = this._iana.subtags.scripts.tryGet(this._subtags.script);
}
else if (!this._effectiveScript) {
const suppressed = (_a = this.primaryLanguage) === null || _a === void 0 ? void 0 : _a.suppressScript;
if (suppressed) {
this._script = this._iana.subtags.scripts.tryGet(suppressed);
this._effectiveScript = this._iana.subtags.scripts.tryGet(suppressed);
}
}
if (!this._script) {
this._script = false;
if (!this._effectiveScript) {
this._effectiveScript = false;
}
}
return this._script ? this._script : undefined;
return this._effectiveScript ? this._effectiveScript : undefined;
}

@@ -193,2 +211,2 @@ /**

exports.LanguageRegistryData = LanguageRegistryData;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFuZ3VhZ2VSZWdpc3RyeURhdGEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYmNwNDcvbGFuZ3VhZ2VSZWdpc3RyeURhdGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW9CRzs7O0FBS0gscUNBQW9EO0FBbURwRDs7OztHQUlHO0FBQ0gsTUFBYSxvQkFBb0I7SUFzQzdCOzs7O09BSUc7SUFDSCxZQUFtQixPQUFnQixFQUFFLElBQTZCO1FBQzlELElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1FBQ2xCLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDO0lBQzVCLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILElBQVcsZUFBZTs7UUFDdEIsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEtBQUssU0FBUyxFQUFFO1lBQ3JDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxNQUFBLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsbUNBQUksS0FBSyxDQUFDO1NBQ3ZHO1FBQ0QsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQ3JFLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILElBQVcsUUFBUTtRQUNmLElBQUksSUFBSSxDQUFDLFNBQVMsS0FBSyxTQUFTLEVBQUU7WUFDOUIsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsS0FBSyxTQUFTLEVBQUU7Z0JBQ3RDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7b0JBQzlDLE9BQU87d0JBQ0gsTUFBTSxFQUFFLENBQUM7d0JBQ1QsUUFBUSxFQUFF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Q0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUM7YUFDOUY7WUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRTtnQkFDdEIsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUM7YUFDL0I7U0FDSjtRQUNELE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQ2pFLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLFFBQVE7UUFDWCxPQUFPLElBQUEsd0JBQWUsRUFBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDMUMsQ0FBQztDQUNKO0FBek1ELG9EQXlNQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjIgRXJpayBGb3J0dW5lXG4gKlxuICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuICogaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuICogdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4gKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuICpcbiAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbFxuICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbiAqXG4gKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4gKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbiAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbiAqIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFXG4gKiBTT0ZUV0FSRS5cbiAqL1xuXG5pbXBvcnQgKiBhcyBCY3A0NyBmcm9tICcuLi9iY3A0Nyc7XG5pbXBvcnQgKiBhcyBJYW5hIGZyb20gJy4uL2lhbmEnO1xuXG5pbXBvcnQgeyBTdWJ0YWdzLCBzdWJ0YWdzVG9TdHJpbmcgfSBmcm9tICcuL2NvbW1vbic7XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIHNpbmdsZSBleHRsYW5nIHN1YnRhZyB3aXRoIGNvcnJlc3BvbmRpbmcgcmVnaXN0cnkgZGF0YSxcbiAqIGlmIHByZXNlbnQuXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVnaXN0ZXJlZEV4dExhbmdWYWx1ZSB7XG4gICAgLyoqXG4gICAgICogQSB7QGxpbmsgSWFuYS5MYW5ndWFnZVN1YnRhZ3MuRXh0TGFuZ1N1YnRhZyB8IGV4dGxhbmcgc3VidGFnfSBmcm9tXG4gICAgICogdGhlIG9yaWdpbmFsIGxhbmd1YWdlIHRhZy5cbiAgICAgKi9cbiAgICBzdWJ0YWc6IElhbmEuTGFuZ3VhZ2VTdWJ0YWdzLkV4dExhbmdTdWJ0YWc7XG4gICAgLyoqXG4gICAgICogVGhlIHtAbGluayBJYW5hLkxhbmd1YWdlU3VidGFnLk1vZGVsLlJlZ2lzdGVyZWRFeHRMYW5nIHwgSUFOQSBzdWJ0YWcgcmVnaXN0cnkgZW50cnl9XG4gICAgICogZm9yIHRoaXMgc3VidGFnLCBvciBgdW5kZWZpbmVkYCBpZiB0aGUgc3VidGFnIGlzIG5vdCByZWdpc3RlcmVkLlxuICAgICAqL1xuICAgIHJlZ2lzdHJ5PzogSWFuYS5MYW5ndWFnZVN1YnRhZ3MuTW9kZWwuUmVnaXN0ZXJlZEV4dExhbmc7XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIHNpbmdsZSB2YXJpYW50IHN1YnRhZyB3aXRoIGNvcnJlc3BvbmRpbmcgcmVnaXN0cnkgZGF0YSxcbiAqIGlmIHByZXNlbnQuXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVnaXN0ZXJlZFZhcmlhbnRWYWx1ZSB7XG4gICAgLyoqXG4gICAgICogQSB7QGxpbmsgSWFuYS5MYW5ndWFnZVN1YnRhZ3MuVmFyaWFudFN1YnRhZyB8IHZhcmlhbnQgc3VidGFnfSBmcm9tXG4gICAgICogdGhlIG9yaWdpbmFsIGxhbmd1YWdlIHRhZy5cbiAgICAgKi9cbiAgICBzdWJ0YWc6IElhbmEuTGFuZ3VhZ2VTdWJ0YWdzLlZhcmlhbnRTdWJ0YWc7XG4gICAgLyoqXG4gICAgICogVGhlIHtAbGluayBJYW5hLkxhbmd1YWdlU3VidGFnLk1vZGVsLlJlZ2lzdGVyZWRWYXJpYW50IHwgSUFOQSBzdWJ0YWcgcmVnaXN0cnkgZW50cnl9XG4gICAgICogZm9yIHRoaXMgc3VidGFnLCBvciBgdW5kZWZpbmVkYCBpZiB0aGUgc3VidGFnIGlzIG5vdCByZWdpc3RlcmVkLlxuICAgICAqL1xuICAgIHJlZ2lzdHJ5PzogSWFuYS5MYW5ndWFnZVN1YnRhZ3MuTW9kZWwuUmVnaXN0ZXJlZFZhcmlhbnQ7XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIHNpbmdsZSBleHRlbnNpb24gc3VidGFnIHdpdGggY29ycmVzcG9uZGluZyByZWdpc3RyeSBkYXRhLFxuICogaWYgcHJlc2VudC5cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZWdpc3RlcmVkRXh0ZW5zaW9uVmFsdWUgZXh0ZW5kcyBCY3A0Ny5FeHRlbnNpb25TdWJ0YWdWYWx1ZSB7XG4gICAgLyoqXG4gICAgICogVGhlIGxhbnVnYWdlIGV4dGVuc2lvbnMgcmVnaXN0cnkgZW50cnkgZm9yIHRoZSBhc3NvY2lhdGVkIHN1YnRhZyxcbiAgICAgKiBvciBgdW5kZWZpbmVkYCBpZiB0aGUgZXh0ZW5zaW9uIGlzIG5vdCByZWdpc3RlcmVkLlxuICAgICAqL1xuICAgIHJlZ2lzdHJ5PzogSWFuYS5MYW5ndWFnZVRhZ0V4dGVuc2lvbnMuTW9kZWwuTGFuZ3VhZ2VUYWdFeHRlbnNpb247XG59XG5cbi8qKlxuICogUmV0dXJucyBhbGwgb2YgdGhlIGRhdGEgaW4gdGhlIElBTkEgbGFuZ3VhZ2Ugc3VidGFncyByZWdpc3RyeSBmb3JcbiAqIGEgc2V0IG9mIHN1cHBsaWVkIHtAbGluayBCY3A0Ny5TdWJ0YWdzIHwgc3VidGFnc30uXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjbGFzcyBMYW5ndWFnZVJlZ2lzdHJ5RGF0YSB7XG4gICAgLyoqXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHJvdGVjdGVkIF9pYW5hOiBJYW5hLkxhbmd1YWdlUmVnaXN0cmllcztcbiAgICAvKipcbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgX3N1YnRhZ3M6IFN1YnRhZ3M7XG4gICAgLyoqXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHJvdGVjdGVkIF9wcmltYXJ5TGFuZ3VhZ2U/OiBJYW5hLkxhbmd1YWdlU3VidGFncy5Nb2RlbC5SZWdpc3RlcmVkTGFuZ3VhZ2UgfCBmYWxzZTtcbiAgICAvKipcbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgX2V4dGxhbmdzPzogUmVnaXN0ZXJlZEV4dExhbmdWYWx1ZVtdIHwgZmFsc2U7XG4gICAgLyoqXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHJvdGVjdGVkIF9zY3JpcHQ/OiBJYW5hLkxhbmd1YWdlU3VidGFncy5Nb2RlbC5SZWdpc3RlcmVkU2NyaXB0IHwgZmFsc2U7XG4gICAgLyoqXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHJvdGVjdGVkIF9yZWdpb24/OiBJYW5hLkxhbmd1YWdlU3VidGFncy5Nb2RlbC5SZWdpc3RlcmVkUmVnaW9uIHwgZmFsc2U7XG4gICAgLyoqXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHJvdGVjdGVkIF92YXJpYW50cz86IFJlZ2lzdGVyZWRWYXJpYW50VmFsdWVbXSB8IGZhbHNlO1xuICAgIC8qKlxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHByb3RlY3RlZCBfZXh0ZW5zaW9ucz86IFJlZ2lzdGVyZWRFeHRlbnNpb25WYWx1ZVtdIHwgZmFsc2U7XG4gICAgLyoqXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHJvdGVjdGVkIF9ncmFuZGZhdGhlcmVkPzogSWFuYS5MYW5ndWFnZVN1YnRhZ3MuTW9kZWwuUmVnaXN0ZXJlZEdyYW5kZmF0aGVyZWRUYWcgfCBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIENvbnN0cnVjdHMgYSBuZXcge0BsaW5rIEJjcDQ3Lkxhbmd1YWdlVGFnUmVnaXN0cnlEYXRhIHwgQmNwNDcuTGFuZ3VhZ2VUYWdSZWdpc3RyeURhdGF9XG4gICAgICogZnJvbSBhIHN1cHBsaWVkIHtAbGluayBCY3A0Ny5TdWJ0YWdzIHwgc3VidGFnc30gYW5kIHtAbGluayBJYW5hLkxhbmd1YWdlUmVnaXN0cmllcyB8IGxhbmd1YWdlIHJlZ2lzdHJpZXN9LlxuICAgICAqIEBwdWJsaWNcbiAgICAgKi9cbiAgICBwdWJsaWMgY29uc3RydWN0b3Ioc3VidGFnczogU3VidGFncywgaWFuYTogSWFuYS5MYW5ndWFnZVJlZ2lzdHJpZXMpIHtcbiAgICAgICAgdGhpcy5faWFuYSA9IGlhbmE7XG4gICAgICAgIHRoaXMuX3N1YnRhZ3MgPSBzdWJ0YWdzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlZ2lzdHJ5IGRhdGEgYXNzb2NpYXRlZCB3aXRoIHRoZSBwcmltYXJ5IGxhbmd1YWdlIHN1YnRhZyBvZiB0aGUgbGFuZ3VhZ2UgdGFnIGZyb21cbiAgICAgKiB3aGljaCB0aGlzIHtAbGluayBCY3A0Ny5MYW5ndWFnZVRhZ1JlZ2lzdHJ5RGF0YSB8IEJjcDQ3Lkxhbmd1YWdlVGFnUmVnaXN0cnlEYXRhfVxuICAgICAqIHdhcyBjb25zdHJ1Y3RlZCwgb3IgYHVuZGVmaW5lZGAgaWYgdGhlIHByaW1hcnkgbGFuZ3VhZ2UgaXMgbWlzc2luZyBvciBpbnZhbGlkLlxuICAgICAqIEBwdWJsaWNcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IHByaW1hcnlMYW5ndWFnZSgpOiBJYW5hLkxhbmd1YWdlU3VidGFncy5Nb2RlbC5SZWdpc3RlcmVkTGFuZ3VhZ2UgfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAodGhpcy5fcHJpbWFyeUxhbmd1YWdlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRoaXMuX3ByaW1hcnlMYW5ndWFnZSA9IHRoaXMuX2lhbmEuc3VidGFncy5sYW5ndWFnZXMudHJ5R2V0KHRoaXMuX3N1YnRhZ3MucHJpbWFyeUxhbmd1YWdlKSA/PyBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5fcHJpbWFyeUxhbmd1YWdlID8gdGhpcy5fcHJpbWFyeUxhbmd1YWdlIDogdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlZ2lzdHJ5IGRhdGEgYXNzb2NpYXRlZCB3aXRoIHRoZSBleHRsYW5nIHN1YnRhZyBvZiB0aGUgbGFuZ3VhZ2UgdGFnIGZyb21cbiAgICAgKiB3aGljaCB0aGlzIHtAbGluayBCY3A0Ny5MYW5ndWFnZVRhZ1JlZ2lzdHJ5RGF0YSB8IEJjcDQ3Lkxhbmd1YWdlVGFnUmVnaXN0cnlEYXRhfVxuICAgICAqIHdhcyBjb25zdHJ1Y3RlZCwgb3IgYHVuZGVmaW5lZGAgaWYgZXh0bGFuZyBpcyBtaXNzaW5nIG9yIGludmFsaWQuXG4gICAgICogQHB1YmxpY1xuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgZXh0bGFuZ3MoKTogUmVnaXN0ZXJlZEV4dExhbmdWYWx1ZVtdIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKHRoaXMuX2V4dGxhbmdzID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLl9zdWJ0YWdzLmV4dGxhbmdzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9leHRsYW5ncyA9IHRoaXMuX3N1YnRhZ3MuZXh0bGFuZ3MubWFwKChlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdWJ0YWc6IGUsXG4gICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RyeTogdGhpcy5faWFuYS5zdWJ0YWdzLmV4dGxhbmdzLnRyeUdldChlKSxcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghdGhpcy5fc3VidGFncy5leHRsYW5ncyB8fCB0aGlzLl9zdWJ0YWdzLmV4dGxhbmdzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX2V4dGxhbmdzID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuX2V4dGxhbmdzID8gdGhpcy5fZXh0bGFuZ3MgOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVnaXN0cnkgZGF0YSBhc3NvY2lhdGVkIHdpdGggdGhlIHNjcmlwdCBvZiB0aGUgbGFuZ3VhZ2UgdGFnIGZyb21cbiAgICAgKiB3aGljaCB0aGlzIHtAbGluayBCY3A0Ny5MYW5ndWFnZVRhZ1JlZ2lzdHJ5RGF0YSB8IEJjcDQ3Lkxhbmd1YWdlVGFnUmVnaXN0cnlEYXRhfVxuICAgICAqIHdhcyBjb25zdHJ1Y3RlZCwgb3IgYHVuZGVmaW5lZGAgaWYgdGhlIHNjcmlwdCBjYW5ub3QgYmUgZGV0ZXJtaW5lZC5cbiAgICAgKlxuICAgICAqIE5vdGUgdGhhdCBzY3JpcHQgd2lsbCBkZWZhdWx0IHRvIHRoZSByZWdpc3RyeSBgU3VwcHJlc3MtU2NyaXB0YCB2YWx1ZSBvZiB0aGVcbiAgICAgKiBwcmltYXJ5IGxhbmd1YWdlIGlmIG5vIHNjcmlwdCBzdWJ0YWcgaXMgcHJlc2VudC5cbiAgICAgKiBAcHVibGljXG4gICAgICovXG4gICAgcHVibGljIGdldCBzY3JpcHQoKTogSWFuYS5MYW5ndWFnZVN1YnRhZ3MuTW9kZWwuUmVnaXN0ZXJlZFNjcmlwdCB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGlmICh0aGlzLl9zY3JpcHQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgaWYgKHRoaXMuX3N1YnRhZ3Muc2NyaXB0KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc2NyaXB0ID0gdGhpcy5faWFuYS5zdWJ0YWdzLnNjcmlwdHMudHJ5R2V0KHRoaXMuX3N1YnRhZ3Muc2NyaXB0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghdGhpcy5fc2NyaXB0KSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc3VwcHJlc3NlZCA9IHRoaXMucHJpbWFyeUxhbmd1YWdlPy5zdXBwcmVzc1NjcmlwdDtcbiAgICAgICAgICAgICAgICBpZiAoc3VwcHJlc3NlZCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9zY3JpcHQgPSB0aGlzLl9pYW5hLnN1YnRhZ3Muc2NyaXB0cy50cnlHZXQoc3VwcHJlc3NlZCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCF0aGlzLl9zY3JpcHQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zY3JpcHQgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5fc2NyaXB0ID8gdGhpcy5fc2NyaXB0IDogdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlZ2lzdHJ5IGRhdGEgYXNzb2NpYXRlZCB3aXRoIHRoZSByZWdpb24gc3VidGFnIG9mIHRoZSBsYW5ndWFnZSB0YWcgZnJvbVxuICAgICAqIHdoaWNoIHRoaXMge0BsaW5rIEJjcDQ3Lkxhbmd1YWdlVGFnUmVnaXN0cnlEYXRhIHwgQmNwNDcuTGFuZ3VhZ2VUYWdSZWdpc3RyeURhdGF9XG4gICAgICogd2FzIGNvbnN0cnVjdGVkLCBvciBgdW5kZWZpbmVkYCBpZiB0aGUgcmVnaW9uIGlzIG1pc3Npbmcgb3IgaW52YWxpZC5cbiAgICAgKiBAcHVibGljXG4gICAgICovXG4gICAgcHVibGljIGdldCByZWdpb24oKTogSWFuYS5MYW5ndWFnZVN1YnRhZ3MuTW9kZWwuUmVnaXN0ZXJlZFJlZ2lvbiB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGlmICh0aGlzLl9yZWdpb24gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgaWYgKHRoaXMuX3N1YnRhZ3MucmVnaW9uKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fcmVnaW9uID0gdGhpcy5faWFuYS5zdWJ0YWdzLnJlZ2lvbnMudHJ5R2V0KHRoaXMuX3N1YnRhZ3MucmVnaW9uKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghdGhpcy5fcmVnaW9uKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fcmVnaW9uID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuX3JlZ2lvbiA/IHRoaXMuX3JlZ2lvbiA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZWdpc3RyeSBkYXRhIGFzc29jaWF0ZWQgd2l0aCB0aGUgdmFyaWFudCBzdWJ0YWdzIG9mIHRoZSBsYW5ndWFnZSB0YWcgZnJvbVxuICAgICAqIHdoaWNoIHRoaXMge0BsaW5rIEJjcDQ3Lkxhbmd1YWdlVGFnUmVnaXN0cnlEYXRhIHwgQmNwNDcuTGFuZ3VhZ2VUYWdSZWdpc3RyeURhdGF9XG4gICAgICogd2FzIGNvbnN0cnVjdGVkLCBvciBgdW5kZWZpbmVkYCBpZiB2YXJpYW50IHN1YnRhZ3MgYXJlIG1pc3Npbmcgb3IgaW52YWxpZC5cbiAgICAgKiBAcHVibGljXG4gICAgICovXG4gICAgcHVibGljIGdldCB2YXJpYW50cygpOiBSZWdpc3RlcmVkVmFyaWFudFZhbHVlW10gfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAodGhpcy5fdmFyaWFudHMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgaWYgKHRoaXMuX3N1YnRhZ3MudmFyaWFudHMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX3ZhcmlhbnRzID0gdGhpcy5fc3VidGFncy52YXJpYW50cy5tYXAoKHYpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1YnRhZzogdixcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdHJ5OiB0aGlzLl9pYW5hLnN1YnRhZ3MudmFyaWFudHMudHJ5R2V0KHYpLFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCF0aGlzLl9zdWJ0YWdzLnZhcmlhbnRzIHx8IHRoaXMuX3N1YnRhZ3MudmFyaWFudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fdmFyaWFudHMgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5fdmFyaWFudHMgPyB0aGlzLl92YXJpYW50cyA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZWdpc3RyeSBkYXRhIGFzc29jaWF0ZWQgd2l0aCB0aGUgZXh0ZW5zaW9uIHN1YnRhZ3Mgb2YgdGhlIGxhbmd1YWdlIHRhZyBmcm9tXG4gICAgICogd2hpY2ggdGhpcyB7QGxpbmsgQmNwNDcuTGFuZ3VhZ2VUYWdSZWdpc3RyeURhdGEgfCBCY3A0Ny5MYW5ndWFnZVRhZ1JlZ2lzdHJ5RGF0YX1cbiAgICAgKiB3YXMgY29uc3RydWN0ZWQsIG9yIGB1bmRlZmluZWRgIGlmIGV4dGVuc2lvbiBzdWJ0YWdzIGFyZSBtaXNzaW5nIG9yIGludmFsaWQuXG4gICAgICogQHB1YmxpY1xuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgZXh0ZW5zaW9ucygpOiBSZWdpc3RlcmVkRXh0ZW5zaW9uVmFsdWVbXSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGlmICh0aGlzLl9leHRlbnNpb25zID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLl9zdWJ0YWdzLmV4dGVuc2lvbnMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX2V4dGVuc2lvbnMgPSB0aGlzLl9zdWJ0YWdzLmV4dGVuc2lvbnMubWFwKChlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5lLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0cnk6IHRoaXMuX2lhbmEuZXh0ZW5zaW9ucy5leHRlbnNpb25zLnRyeUdldChlLnNpbmdsZXRvbiksXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIXRoaXMuX3N1YnRhZ3MudmFyaWFudHMgfHwgdGhpcy5fc3VidGFncy52YXJpYW50cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICB0aGlzLl92YXJpYW50cyA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLl9leHRlbnNpb25zID8gdGhpcy5fZXh0ZW5zaW9ucyA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZWdpc3RyeSBkYXRhIGZvciBncmFuZGZhdGhlcmVkIHRhZ3MsIG9yIGB1bmRlZmluZWRgIGlmIHRoZSB0YWcgaXMgbm90IHJlY29nbml6ZWRcbiAgICAgKiBhcyBhIGdyYW5kZmF0aGVyZWQgdGFnLlxuICAgICAqIEBwdWJsaWNcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IGdyYW5kZmF0aGVyZWQoKTogSWFuYS5MYW5ndWFnZVN1YnRhZ3MuTW9kZWwuUmVnaXN0ZXJlZEdyYW5kZmF0aGVyZWRUYWcgfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAodGhpcy5fZ3JhbmRmYXRoZXJlZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5fc3VidGFncy5ncmFuZGZhdGhlcmVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZ3JhbmRmYXRoZXJlZCA9IHRoaXMuX2lhbmEuc3VidGFncy5ncmFuZGZhdGhlcmVkLnRyeUdldCh0aGlzLl9zdWJ0YWdzLmdyYW5kZmF0aGVyZWQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCF0aGlzLl9ncmFuZGZhdGhlcmVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZ3JhbmRmYXRoZXJlZCA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLl9ncmFuZGZhdGhlcmVkID8gdGhpcy5fZ3JhbmRmYXRoZXJlZCA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcmV0dXJucyBBIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgc3VidGFncyBmcm9tIHdoaWNoIHRoaXNcbiAgICAgKiB7QGxpbmsgQmNwNDcuTGFuZ3VhZ2VUYWdSZWdpc3RyeURhdGEgfCBCY3A0Ny5MYW5ndWFnZVRhZ1JlZ2lzdHJ5RGF0YX1cbiAgICAgKiB3YXMgY3JlYXRlZC5cbiAgICAgKiBAcHVibGljXG4gICAgICovXG4gICAgcHVibGljIHRvU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBzdWJ0YWdzVG9TdHJpbmcodGhpcy5fc3VidGFncyk7XG4gICAgfVxufVxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFuZ3VhZ2VSZWdpc3RyeURhdGEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYmNwNDcvbGFuZ3VhZ2VSZWdpc3RyeURhdGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW9CRzs7O0FBS0gscUNBQW9EO0FBbURwRDs7OztHQUlHO0FBQ0gsTUFBYSxvQkFBb0I7SUEwQzdCOzs7O09BSUc7SUFDSCxZQUFtQixPQUFnQixFQUFFLElBQTZCO1FBQzlELElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1FBQ2xCLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDO0lBQzVCLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILElBQVcsZUFBZTs7UUFDdEIsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEtBQUssU0FBUyxFQUFFO1lBQ3JDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxNQUFBLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsbUNBQUksS0FBSyxDQUFDO1NBQ3ZHO1FBQ0QsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQ3JFLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILElBQVcsUUFBUTtRQUNmLElBQUksSUFBSSxDQUFDLFNBQVMsS0FBSyxTQUFTLEVBQUU7WUFDOUIsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsS0FBSyxTQUFTLEVBQUU7Z0JBQ3RDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7b0JBQzlDLE9BQU87d0JBQ0gsTUFBTSxFQUFFLENBQUM7d0JBQ1QsUUFBUSxFQUFF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Z0JBQ04sQ0FBQyxDQUFDLENBQUM7YUFDTjtZQUNELElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO2dCQUNoRSxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQzthQUMxQjtTQUNKO1FBQ0QsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFDM0QsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxJQUFXLGFBQWE7UUFDcEIsSUFBSSxJQUFJLENBQUMsY0FBYyxLQUFLLFNBQVMsRUFBRTtZQUNuQyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxFQUFFO2dCQUM3QixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQzthQUM5RjtZQUNELElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFO2dCQUN0QixJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQzthQUMvQjtTQUNKO1FBQ0QsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFDakUsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ksUUFBUTtRQUNYLE9BQU8sSUFBQSx3QkFBZSxFQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMxQyxDQUFDO0NBQ0o7QUEvTkQsb0RBK05DIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAyMiBFcmlrIEZvcnR1bmVcbiAqXG4gKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4gKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4gKiBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4gKiB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4gKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbiAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4gKlxuICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsXG4gKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuICpcbiAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1JcbiAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4gKiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4gKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuICogT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEVcbiAqIFNPRlRXQVJFLlxuICovXG5cbmltcG9ydCAqIGFzIEJjcDQ3IGZyb20gJy4uL2JjcDQ3JztcbmltcG9ydCAqIGFzIElhbmEgZnJvbSAnLi4vaWFuYSc7XG5cbmltcG9ydCB7IFN1YnRhZ3MsIHN1YnRhZ3NUb1N0cmluZyB9IGZyb20gJy4vY29tbW9uJztcblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgc2luZ2xlIGV4dGxhbmcgc3VidGFnIHdpdGggY29ycmVzcG9uZGluZyByZWdpc3RyeSBkYXRhLFxuICogaWYgcHJlc2VudC5cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZWdpc3RlcmVkRXh0TGFuZ1ZhbHVlIHtcbiAgICAvKipcbiAgICAgKiBBIHtAbGluayBJYW5hLkxhbmd1YWdlU3VidGFncy5FeHRMYW5nU3VidGFnIHwgZXh0bGFuZyBzdWJ0YWd9IGZyb21cbiAgICAgKiB0aGUgb3JpZ2luYWwgbGFuZ3VhZ2UgdGFnLlxuICAgICAqL1xuICAgIHN1YnRhZzogSWFuYS5MYW5ndWFnZVN1YnRhZ3MuRXh0TGFuZ1N1YnRhZztcbiAgICAvKipcbiAgICAgKiBUaGUge0BsaW5rIElhbmEuTGFuZ3VhZ2VTdWJ0YWcuTW9kZWwuUmVnaXN0ZXJlZEV4dExhbmcgfCBJQU5BIHN1YnRhZyByZWdpc3RyeSBlbnRyeX1cbiAgICAgKiBmb3IgdGhpcyBzdWJ0YWcsIG9yIGB1bmRlZmluZWRgIGlmIHRoZSBzdWJ0YWcgaXMgbm90IHJlZ2lzdGVyZWQuXG4gICAgICovXG4gICAgcmVnaXN0cnk/OiBJYW5hLkxhbmd1YWdlU3VidGFncy5Nb2RlbC5SZWdpc3RlcmVkRXh0TGFuZztcbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgc2luZ2xlIHZhcmlhbnQgc3VidGFnIHdpdGggY29ycmVzcG9uZGluZyByZWdpc3RyeSBkYXRhLFxuICogaWYgcHJlc2VudC5cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZWdpc3RlcmVkVmFyaWFudFZhbHVlIHtcbiAgICAvKipcbiAgICAgKiBBIHtAbGluayBJYW5hLkxhbmd1YWdlU3VidGFncy5WYXJpYW50U3VidGFnIHwgdmFyaWFudCBzdWJ0YWd9IGZyb21cbiAgICAgKiB0aGUgb3JpZ2luYWwgbGFuZ3VhZ2UgdGFnLlxuICAgICAqL1xuICAgIHN1YnRhZzogSWFuYS5MYW5ndWFnZVN1YnRhZ3MuVmFyaWFudFN1YnRhZztcbiAgICAvKipcbiAgICAgKiBUaGUge0BsaW5rIElhbmEuTGFuZ3VhZ2VTdWJ0YWcuTW9kZWwuUmVnaXN0ZXJlZFZhcmlhbnQgfCBJQU5BIHN1YnRhZyByZWdpc3RyeSBlbnRyeX1cbiAgICAgKiBmb3IgdGhpcyBzdWJ0YWcsIG9yIGB1bmRlZmluZWRgIGlmIHRoZSBzdWJ0YWcgaXMgbm90IHJlZ2lzdGVyZWQuXG4gICAgICovXG4gICAgcmVnaXN0cnk/OiBJYW5hLkxhbmd1YWdlU3VidGFncy5Nb2RlbC5SZWdpc3RlcmVkVmFyaWFudDtcbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgc2luZ2xlIGV4dGVuc2lvbiBzdWJ0YWcgd2l0aCBjb3JyZXNwb25kaW5nIHJlZ2lzdHJ5IGRhdGEsXG4gKiBpZiBwcmVzZW50LlxuICogQHB1YmxpY1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlZ2lzdGVyZWRFeHRlbnNpb25WYWx1ZSBleHRlbmRzIEJjcDQ3LkV4dGVuc2lvblN1YnRhZ1ZhbHVlIHtcbiAgICAvKipcbiAgICAgKiBUaGUgbGFudWdhZ2UgZXh0ZW5zaW9ucyByZWdpc3RyeSBlbnRyeSBmb3IgdGhlIGFzc29jaWF0ZWQgc3VidGFnLFxuICAgICAqIG9yIGB1bmRlZmluZWRgIGlmIHRoZSBleHRlbnNpb24gaXMgbm90IHJlZ2lzdGVyZWQuXG4gICAgICovXG4gICAgcmVnaXN0cnk/OiBJYW5hLkxhbmd1YWdlVGFnRXh0ZW5zaW9ucy5Nb2RlbC5MYW5ndWFnZVRhZ0V4dGVuc2lvbjtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIGFsbCBvZiB0aGUgZGF0YSBpbiB0aGUgSUFOQSBsYW5ndWFnZSBzdWJ0YWdzIHJlZ2lzdHJ5IGZvclxuICogYSBzZXQgb2Ygc3VwcGxpZWQge0BsaW5rIEJjcDQ3LlN1YnRhZ3MgfCBzdWJ0YWdzfS5cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNsYXNzIExhbmd1YWdlUmVnaXN0cnlEYXRhIHtcbiAgICAvKipcbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgX2lhbmE6IElhbmEuTGFuZ3VhZ2VSZWdpc3RyaWVzO1xuICAgIC8qKlxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHByb3RlY3RlZCBfc3VidGFnczogU3VidGFncztcbiAgICAvKipcbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgX3ByaW1hcnlMYW5ndWFnZT86IElhbmEuTGFuZ3VhZ2VTdWJ0YWdzLk1vZGVsLlJlZ2lzdGVyZWRMYW5ndWFnZSB8IGZhbHNlO1xuICAgIC8qKlxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHByb3RlY3RlZCBfZXh0bGFuZ3M/OiBSZWdpc3RlcmVkRXh0TGFuZ1ZhbHVlW10gfCBmYWxzZTtcbiAgICAvKipcbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgX3NjcmlwdD86IElhbmEuTGFuZ3VhZ2VTdWJ0YWdzLk1vZGVsLlJlZ2lzdGVyZWRTY3JpcHQgfCBmYWxzZTtcbiAgICAvKipcbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgX2VmZmVjdGl2ZVNjcmlwdD86IElhbmEuTGFuZ3VhZ2VTdWJ0YWdzLk1vZGVsLlJlZ2lzdGVyZWRTY3JpcHQgfCBmYWxzZTtcbiAgICAvKipcbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgX3JlZ2lvbj86IElhbmEuTGFuZ3VhZ2VTdWJ0YWdzLk1vZGVsLlJlZ2lzdGVyZWRSZWdpb24gfCBmYWxzZTtcbiAgICAvKipcbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgX3ZhcmlhbnRzPzogUmVnaXN0ZXJlZFZhcmlhbnRWYWx1ZVtdIHwgZmFsc2U7XG4gICAgLyoqXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHJvdGVjdGVkIF9leHRlbnNpb25zPzogUmVnaXN0ZXJlZEV4dGVuc2lvblZhbHVlW10gfCBmYWxzZTtcbiAgICAvKipcbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgX2dyYW5kZmF0aGVyZWQ/OiBJYW5hLkxhbmd1YWdlU3VidGFncy5Nb2RlbC5SZWdpc3RlcmVkR3JhbmRmYXRoZXJlZFRhZyB8IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogQ29uc3RydWN0cyBhIG5ldyB7QGxpbmsgQmNwNDcuTGFuZ3VhZ2VUYWdSZWdpc3RyeURhdGEgfCBCY3A0Ny5MYW5ndWFnZVRhZ1JlZ2lzdHJ5RGF0YX1cbiAgICAgKiBmcm9tIGEgc3VwcGxpZWQge0BsaW5rIEJjcDQ3LlN1YnRhZ3MgfCBzdWJ0YWdzfSBhbmQge0BsaW5rIElhbmEuTGFuZ3VhZ2VSZWdpc3RyaWVzIHwgbGFuZ3VhZ2UgcmVnaXN0cmllc30uXG4gICAgICogQHB1YmxpY1xuICAgICAqL1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihzdWJ0YWdzOiBTdWJ0YWdzLCBpYW5hOiBJYW5hLkxhbmd1YWdlUmVnaXN0cmllcykge1xuICAgICAgICB0aGlzLl9pYW5hID0gaWFuYTtcbiAgICAgICAgdGhpcy5fc3VidGFncyA9IHN1YnRhZ3M7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVnaXN0cnkgZGF0YSBhc3NvY2lhdGVkIHdpdGggdGhlIHByaW1hcnkgbGFuZ3VhZ2Ugc3VidGFnIG9mIHRoZSBsYW5ndWFnZSB0YWcgZnJvbVxuICAgICAqIHdoaWNoIHRoaXMge0BsaW5rIEJjcDQ3Lkxhbmd1YWdlVGFnUmVnaXN0cnlEYXRhIHwgQmNwNDcuTGFuZ3VhZ2VUYWdSZWdpc3RyeURhdGF9XG4gICAgICogd2FzIGNvbnN0cnVjdGVkLCBvciBgdW5kZWZpbmVkYCBpZiB0aGUgcHJpbWFyeSBsYW5ndWFnZSBpcyBtaXNzaW5nIG9yIGludmFsaWQuXG4gICAgICogQHB1YmxpY1xuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgcHJpbWFyeUxhbmd1YWdlKCk6IElhbmEuTGFuZ3VhZ2VTdWJ0YWdzLk1vZGVsLlJlZ2lzdGVyZWRMYW5ndWFnZSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGlmICh0aGlzLl9wcmltYXJ5TGFuZ3VhZ2UgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhpcy5fcHJpbWFyeUxhbmd1YWdlID0gdGhpcy5faWFuYS5zdWJ0YWdzLmxhbmd1YWdlcy50cnlHZXQodGhpcy5fc3VidGFncy5wcmltYXJ5TGFuZ3VhZ2UpID8/IGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLl9wcmltYXJ5TGFuZ3VhZ2UgPyB0aGlzLl9wcmltYXJ5TGFuZ3VhZ2UgOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVnaXN0cnkgZGF0YSBhc3NvY2lhdGVkIHdpdGggdGhlIGV4dGxhbmcgc3VidGFnIG9mIHRoZSBsYW5ndWFnZSB0YWcgZnJvbVxuICAgICAqIHdoaWNoIHRoaXMge0BsaW5rIEJjcDQ3Lkxhbmd1YWdlVGFnUmVnaXN0cnlEYXRhIHwgQmNwNDcuTGFuZ3VhZ2VUYWdSZWdpc3RyeURhdGF9XG4gICAgICogd2FzIGNvbnN0cnVjdGVkLCBvciBgdW5kZWZpbmVkYCBpZiBleHRsYW5nIGlzIG1pc3Npbmcgb3IgaW52YWxpZC5cbiAgICAgKiBAcHVibGljXG4gICAgICovXG4gICAgcHVibGljIGdldCBleHRsYW5ncygpOiBSZWdpc3RlcmVkRXh0TGFuZ1ZhbHVlW10gfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAodGhpcy5fZXh0bGFuZ3MgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgaWYgKHRoaXMuX3N1YnRhZ3MuZXh0bGFuZ3MgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX2V4dGxhbmdzID0gdGhpcy5fc3VidGFncy5leHRsYW5ncy5tYXAoKGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1YnRhZzogZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdHJ5OiB0aGlzLl9pYW5hLnN1YnRhZ3MuZXh0bGFuZ3MudHJ5R2V0KGUpLFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCF0aGlzLl9zdWJ0YWdzLmV4dGxhbmdzIHx8IHRoaXMuX3N1YnRhZ3MuZXh0bGFuZ3MubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXh0bGFuZ3MgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5fZXh0bGFuZ3MgPyB0aGlzLl9leHRsYW5ncyA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZWdpc3RyeSBkYXRhIGFzc29jaWF0ZWQgd2l0aCB0aGUgc2NyaXB0IG9mIHRoZSBsYW5ndWFnZSB0YWcgZnJvbVxuICAgICAqIHdoaWNoIHRoaXMge0BsaW5rIEJjcDQ3Lkxhbmd1YWdlVGFnUmVnaXN0cnlEYXRhIHwgQmNwNDcuTGFuZ3VhZ2VUYWdSZWdpc3RyeURhdGF9XG4gICAgICogd2FzIGNvbnN0cnVjdGVkLCBvciBgdW5kZWZpbmVkYCBpZiB0aGUgc2NyaXB0IGNhbm5vdCBiZSBkZXRlcm1pbmVkLlxuICAgICAqXG4gICAgICogQHB1YmxpY1xuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgc2NyaXB0KCk6IElhbmEuTGFuZ3VhZ2VTdWJ0YWdzLk1vZGVsLlJlZ2lzdGVyZWRTY3JpcHQgfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAodGhpcy5fc2NyaXB0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLl9zdWJ0YWdzLnNjcmlwdCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX3NjcmlwdCA9IHRoaXMuX2lhbmEuc3VidGFncy5zY3JpcHRzLnRyeUdldCh0aGlzLl9zdWJ0YWdzLnNjcmlwdCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIXRoaXMuX3NjcmlwdCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX3NjcmlwdCA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLl9zY3JpcHQgPyB0aGlzLl9zY3JpcHQgOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVnaXN0cnkgZGF0YSBhc3NvY2lhdGVkIHdpdGggdGhlIHNjcmlwdCBvZiB0aGUgbGFuZ3VhZ2UgdGFnIGZyb21cbiAgICAgKiB3aGljaCB0aGlzIHtAbGluayBCY3A0Ny5MYW5ndWFnZVRhZ1JlZ2lzdHJ5RGF0YSB8IEJjcDQ3Lkxhbmd1YWdlVGFnUmVnaXN0cnlEYXRhfVxuICAgICAqIHdhcyBjb25zdHJ1Y3RlZCwgb3IgYHVuZGVmaW5lZGAgaWYgdGhlIHNjcmlwdCBjYW5ub3QgYmUgZGV0ZXJtaW5lZC5cbiAgICAgKlxuICAgICAqIE5vdGUgdGhhdCBlZmZlY3RpdmVTY3JpcHQgd2lsbCBkZWZhdWx0IHRvIHRoZSByZWdpc3RyeSBgU3VwcHJlc3MtU2NyaXB0YCB2YWx1ZSBvZiB0aGVcbiAgICAgKiBwcmltYXJ5IGxhbmd1YWdlIGlmIG5vIHNjcmlwdCBzdWJ0YWcgaXMgcHJlc2VudC5cbiAgICAgKiBAcHVibGljXG4gICAgICovXG4gICAgcHVibGljIGdldCBlZmZlY3RpdmVTY3JpcHQoKTogSWFuYS5MYW5ndWFnZVN1YnRhZ3MuTW9kZWwuUmVnaXN0ZXJlZFNjcmlwdCB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGlmICh0aGlzLl9lZmZlY3RpdmVTY3JpcHQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgaWYgKHRoaXMuX3N1YnRhZ3Muc2NyaXB0KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZWZmZWN0aXZlU2NyaXB0ID0gdGhpcy5faWFuYS5zdWJ0YWdzLnNjcmlwdHMudHJ5R2V0KHRoaXMuX3N1YnRhZ3Muc2NyaXB0KTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoIXRoaXMuX2VmZmVjdGl2ZVNjcmlwdCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHN1cHByZXNzZWQgPSB0aGlzLnByaW1hcnlMYW5ndWFnZT8uc3VwcHJlc3NTY3JpcHQ7XG4gICAgICAgICAgICAgICAgaWYgKHN1cHByZXNzZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZWZmZWN0aXZlU2NyaXB0ID0gdGhpcy5faWFuYS5zdWJ0YWdzLnNjcmlwdHMudHJ5R2V0KHN1cHByZXNzZWQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghdGhpcy5fZWZmZWN0aXZlU2NyaXB0KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZWZmZWN0aXZlU2NyaXB0ID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuX2VmZmVjdGl2ZVNjcmlwdCA/IHRoaXMuX2VmZmVjdGl2ZVNjcmlwdCA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZWdpc3RyeSBkYXRhIGFzc29jaWF0ZWQgd2l0aCB0aGUgcmVnaW9uIHN1YnRhZyBvZiB0aGUgbGFuZ3VhZ2UgdGFnIGZyb21cbiAgICAgKiB3aGljaCB0aGlzIHtAbGluayBCY3A0Ny5MYW5ndWFnZVRhZ1JlZ2lzdHJ5RGF0YSB8IEJjcDQ3Lkxhbmd1YWdlVGFnUmVnaXN0cnlEYXRhfVxuICAgICAqIHdhcyBjb25zdHJ1Y3RlZCwgb3IgYHVuZGVmaW5lZGAgaWYgdGhlIHJlZ2lvbiBpcyBtaXNzaW5nIG9yIGludmFsaWQuXG4gICAgICogQHB1YmxpY1xuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgcmVnaW9uKCk6IElhbmEuTGFuZ3VhZ2VTdWJ0YWdzLk1vZGVsLlJlZ2lzdGVyZWRSZWdpb24gfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAodGhpcy5fcmVnaW9uID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLl9zdWJ0YWdzLnJlZ2lvbikge1xuICAgICAgICAgICAgICAgIHRoaXMuX3JlZ2lvbiA9IHRoaXMuX2lhbmEuc3VidGFncy5yZWdpb25zLnRyeUdldCh0aGlzLl9zdWJ0YWdzLnJlZ2lvbik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIXRoaXMuX3JlZ2lvbikge1xuICAgICAgICAgICAgICAgIHRoaXMuX3JlZ2lvbiA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLl9yZWdpb24gPyB0aGlzLl9yZWdpb24gOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVnaXN0cnkgZGF0YSBhc3NvY2lhdGVkIHdpdGggdGhlIHZhcmlhbnQgc3VidGFncyBvZiB0aGUgbGFuZ3VhZ2UgdGFnIGZyb21cbiAgICAgKiB3aGljaCB0aGlzIHtAbGluayBCY3A0Ny5MYW5ndWFnZVRhZ1JlZ2lzdHJ5RGF0YSB8IEJjcDQ3Lkxhbmd1YWdlVGFnUmVnaXN0cnlEYXRhfVxuICAgICAqIHdhcyBjb25zdHJ1Y3RlZCwgb3IgYHVuZGVmaW5lZGAgaWYgdmFyaWFudCBzdWJ0YWdzIGFyZSBtaXNzaW5nIG9yIGludmFsaWQuXG4gICAgICogQHB1YmxpY1xuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgdmFyaWFudHMoKTogUmVnaXN0ZXJlZFZhcmlhbnRWYWx1ZVtdIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKHRoaXMuX3ZhcmlhbnRzID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLl9zdWJ0YWdzLnZhcmlhbnRzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl92YXJpYW50cyA9IHRoaXMuX3N1YnRhZ3MudmFyaWFudHMubWFwKCh2KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdWJ0YWc6IHYsXG4gICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RyeTogdGhpcy5faWFuYS5zdWJ0YWdzLnZhcmlhbnRzLnRyeUdldCh2KSxcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghdGhpcy5fc3VidGFncy52YXJpYW50cyB8fCB0aGlzLl9zdWJ0YWdzLnZhcmlhbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX3ZhcmlhbnRzID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuX3ZhcmlhbnRzID8gdGhpcy5fdmFyaWFudHMgOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVnaXN0cnkgZGF0YSBhc3NvY2lhdGVkIHdpdGggdGhlIGV4dGVuc2lvbiBzdWJ0YWdzIG9mIHRoZSBsYW5ndWFnZSB0YWcgZnJvbVxuICAgICAqIHdoaWNoIHRoaXMge0BsaW5rIEJjcDQ3Lkxhbmd1YWdlVGFnUmVnaXN0cnlEYXRhIHwgQmNwNDcuTGFuZ3VhZ2VUYWdSZWdpc3RyeURhdGF9XG4gICAgICogd2FzIGNvbnN0cnVjdGVkLCBvciBgdW5kZWZpbmVkYCBpZiBleHRlbnNpb24gc3VidGFncyBhcmUgbWlzc2luZyBvciBpbnZhbGlkLlxuICAgICAqIEBwdWJsaWNcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IGV4dGVuc2lvbnMoKTogUmVnaXN0ZXJlZEV4dGVuc2lvblZhbHVlW10gfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAodGhpcy5fZXh0ZW5zaW9ucyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5fc3VidGFncy5leHRlbnNpb25zICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9leHRlbnNpb25zID0gdGhpcy5fc3VidGFncy5leHRlbnNpb25zLm1hcCgoZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4uZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdHJ5OiB0aGlzLl9pYW5hLmV4dGVuc2lvbnMuZXh0ZW5zaW9ucy50cnlHZXQoZS5zaW5nbGV0b24pLFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCF0aGlzLl9zdWJ0YWdzLnZhcmlhbnRzIHx8IHRoaXMuX3N1YnRhZ3MudmFyaWFudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fdmFyaWFudHMgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5fZXh0ZW5zaW9ucyA/IHRoaXMuX2V4dGVuc2lvbnMgOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVnaXN0cnkgZGF0YSBmb3IgZ3JhbmRmYXRoZXJlZCB0YWdzLCBvciBgdW5kZWZpbmVkYCBpZiB0aGUgdGFnIGlzIG5vdCByZWNvZ25pemVkXG4gICAgICogYXMgYSBncmFuZGZhdGhlcmVkIHRhZy5cbiAgICAgKiBAcHVibGljXG4gICAgICovXG4gICAgcHVibGljIGdldCBncmFuZGZhdGhlcmVkKCk6IElhbmEuTGFuZ3VhZ2VTdWJ0YWdzLk1vZGVsLlJlZ2lzdGVyZWRHcmFuZGZhdGhlcmVkVGFnIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKHRoaXMuX2dyYW5kZmF0aGVyZWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgaWYgKHRoaXMuX3N1YnRhZ3MuZ3JhbmRmYXRoZXJlZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX2dyYW5kZmF0aGVyZWQgPSB0aGlzLl9pYW5hLnN1YnRhZ3MuZ3JhbmRmYXRoZXJlZC50cnlHZXQodGhpcy5fc3VidGFncy5ncmFuZGZhdGhlcmVkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghdGhpcy5fZ3JhbmRmYXRoZXJlZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX2dyYW5kZmF0aGVyZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5fZ3JhbmRmYXRoZXJlZCA/IHRoaXMuX2dyYW5kZmF0aGVyZWQgOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHJldHVybnMgQSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIHN1YnRhZ3MgZnJvbSB3aGljaCB0aGlzXG4gICAgICoge0BsaW5rIEJjcDQ3Lkxhbmd1YWdlVGFnUmVnaXN0cnlEYXRhIHwgQmNwNDcuTGFuZ3VhZ2VUYWdSZWdpc3RyeURhdGF9XG4gICAgICogd2FzIGNyZWF0ZWQuXG4gICAgICogQHB1YmxpY1xuICAgICAqL1xuICAgIHB1YmxpYyB0b1N0cmluZygpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gc3VidGFnc1RvU3RyaW5nKHRoaXMuX3N1YnRhZ3MpO1xuICAgIH1cbn1cbiJdfQ==

@@ -121,2 +121,10 @@ import * as Iana from '../iana';

/**
* Whether this language tag is a grandfathered tag.
*/
get isGrandfathered(): boolean;
/**
* Gets a text description of this tag.
*/
get description(): string;
/**
* Creates a new {@link Bcp47.LanguageTag | language tag} from a supplied `string` tag

@@ -123,0 +131,0 @@ * using optional configuration, if supplied.

@@ -165,2 +165,50 @@ "use strict";

/**
* Whether this language tag is a grandfathered tag.
*/
get isGrandfathered() {
return this.subtags.grandfathered !== undefined;
}
/**
* Gets a text description of this tag.
*/
get description() {
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;
const parts = [];
if (!this.subtags.grandfathered) {
if (this.registry.primaryLanguage || this.subtags.primaryLanguage) {
parts.push(((_b = (_a = this.registry.primaryLanguage) === null || _a === void 0 ? void 0 : _a.description[0]) !== null && _b !== void 0 ? _b : this.subtags.primaryLanguage));
}
if (this.registry.extlangs) {
for (const e of this.registry.extlangs) {
parts.push(`/ ${(_d = (_c = e.registry) === null || _c === void 0 ? void 0 : _c.description[0]) !== null && _d !== void 0 ? _d : e.subtag}`);
}
}
if (this.subtags.script) {
parts.push(`in ${(_f = (_e = this.registry.script) === null || _e === void 0 ? void 0 : _e.description[0]) !== null && _f !== void 0 ? _f : this.subtags.script} script`);
}
if (this.subtags.region) {
parts.push(`as spoken in ${(_h = (_g = this.registry.region) === null || _g === void 0 ? void 0 : _g.description[0]) !== null && _h !== void 0 ? _h : this.subtags.region}`);
}
if (this.registry.variants && this.registry.variants.length > 0) {
for (const e of this.registry.variants) {
parts.push(`(${(_k = (_j = e.registry) === null || _j === void 0 ? void 0 : _j.description[0]) !== null && _k !== void 0 ? _k : e.subtag})`);
}
}
if (this.registry.extensions && this.registry.extensions.length > 0) {
for (const e of this.registry.extensions) {
parts.push(`(${(_m = (_l = e.registry) === null || _l === void 0 ? void 0 : _l.description[0]) !== null && _m !== void 0 ? _m : `-${e.singleton}`} "${e.value}")`);
}
}
if (this.subtags.privateUse && this.subtags.privateUse.length > 0) {
for (const e of this.subtags.privateUse) {
parts.push(`(-x "${e}")`);
}
}
}
else {
parts.push(`${this.tag} (grandfathered)`);
}
return parts.join(' ');
}
/**
* Creates a new {@link Bcp47.LanguageTag | language tag} from a supplied `string` tag

@@ -345,2 +393,2 @@ * using optional configuration, if supplied.

exports.LanguageTag = LanguageTag;
//# 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==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFuZ3VhZ2VUYWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYmNwNDcvbGFuZ3VhZ2VUYWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW9CRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFSCw4Q0FBZ0M7QUFFaEMsNENBQStEO0FBQy9ELHFDQUEwRTtBQUMxRSxtREFBMEU7QUFDMUUsZ0RBQTZEO0FBRTdELGlFQUE4RDtBQUM5RCwyREFBd0Q7QUFDeEQsbURBQStDO0FBRS9DLDZDQUEyQztBQXNCM0M7OztHQUdHO0FBQ0gsTUFBYSxXQUFXO0lBMERwQjs7Ozs7Ozs7Ozs7T0FXRztJQUNILFlBQXNCLE9BQWdCLEVBQUUsUUFBcUIsRUFBRSxhQUErQixFQUFFLElBQTZCO1FBQ3pILElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEdBQUcsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUM3QyxJQUFJLENBQUMsY0FBYyxHQUFHLGFBQWEsQ0FBQztRQUNwQyxJQUFJLENBQUMsU0FBUyxHQUFHLFFBQVEsQ0FBQztRQUMxQixJQUFJLENBQUMsR0FBRyxHQUFHLElBQUEsd0JBQWUsRUFBQyxPQUFPLENBQUMsQ0FBQztRQUNwQyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztRQUNsQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksMkNBQW9CLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztRQUU3RCxJQUFJLFFBQVEsS0FBSyxnQkFBZ0IsRUFBRTtZQUMvQixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO1lBQzdCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1NBQ3hCO2FBQU0sSUFBSSxRQUFRLEtBQUssT0FBTyxFQUFFO1lBQzdCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1NBQ3hCO1FB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RDs7OztPQUlHO0lBQ0ksV0FBVztRQUNkLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNsQixPQUFPLElBQUEsa0JBQU8sRUFBQyxJQUFJLENBQUMsQ0FBQztTQUN4QjtRQUNELE1BQU0sT0FBTyxHQUEyQjtZQUNwQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUs7WUFDaEIsUUFBUSxFQUFFLElBQUksQ0FBQyxTQUFTO1lBQ3hCLGFBQWEsRUFBRSxXQUFXO1NBQzdCLENBQUM7UUFDRixPQUFPLFdBQVcsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLGNBQWMsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN0RyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLFdBQVc7UUFDZCxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDbEIsT0FBTyxJQUFBLGtCQUFPLEVBQUMsSUFBSSxDQUFDLENBQUM7U0FDeEI7UUFDRCxNQUFNLE9BQU8sR0FBMkI7WUFDcEMsSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLO1lBQ2hCLFFBQVEsRUFBRSxPQUFPO1lBQ2pCLGFBQWEsRUFBRSxXQUFXO1NBQzdCLENBQUM7UUFDRixPQUFPLFdBQVcsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLGNBQWMsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN0RyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksUUFBUTtRQUNYLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQztJQUNwQixDQUFDO0NBQ0o7QUFyWkQsa0NBcVpDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAyMiBFcmlrIEZvcnR1bmVcbiAqXG4gKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4gKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4gKiBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4gKiB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4gKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbiAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4gKlxuICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsXG4gKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuICpcbiAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1JcbiAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4gKiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4gKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuICogT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEVcbiAqIFNPRlRXQVJFLlxuICovXG5cbmltcG9ydCAqIGFzIElhbmEgZnJvbSAnLi4vaWFuYSc7XG5cbmltcG9ydCB7IFJlc3VsdCwgY2FwdHVyZVJlc3VsdCwgc3VjY2VlZCB9IGZyb20gJ0BmZ3YvdHMtdXRpbHMnO1xuaW1wb3J0IHsgU3VidGFncywgVW5kZXRlcm1pbmVkTGFuZ3VhZ2UsIHN1YnRhZ3NUb1N0cmluZyB9IGZyb20gJy4vY29tbW9uJztcbmltcG9ydCB7IFRhZ05vcm1hbGl6YXRpb24sIG1vc3ROb3JtYWxpemVkIH0gZnJvbSAnLi9ub3JtYWxpemF0aW9uL2NvbW1vbic7XG5pbXBvcnQgeyBUYWdWYWxpZGl0eSwgbW9zdFZhbGlkIH0gZnJvbSAnLi92YWxpZGF0aW9uL2NvbW1vbic7XG5cbmltcG9ydCB7IExhbmd1YWdlUmVnaXN0cnlEYXRhIH0gZnJvbSAnLi9sYW5ndWFnZVJlZ2lzdHJ5RGF0YSc7XG5pbXBvcnQgeyBMYW5ndWFnZVRhZ1BhcnNlciB9IGZyb20gJy4vbGFuZ3VhZ2VUYWdQYXJzZXInO1xuaW1wb3J0IHsgTm9ybWFsaXplVGFnIH0gZnJvbSAnLi9ub3JtYWxpemF0aW9uJztcbmltcG9ydCB7IFNjcmlwdFN1YnRhZyB9IGZyb20gJy4uL2lhbmEvbGFuZ3VhZ2Utc3VidGFncyc7XG5pbXBvcnQgeyBWYWxpZGF0ZVRhZyB9IGZyb20gJy4vdmFsaWRhdGlvbic7XG5cbi8qKlxuICogSW5pdGlhbGl6YXRpb24gb3B0aW9ucyBmb3IgcGFyc2luZyBvciBjcmVhdGlvbiBvZiB7QGxpbmsgQmNwNDcuTGFuZ3VhZ2VUYWcgfCBsYW5ndWFnZSB0YWd9IG9iamVjdHMuXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTGFuZ3VhZ2VUYWdJbml0T3B0aW9ucyB7XG4gICAgLyoqXG4gICAgICogRGVzaXJlZCB7QGxpbmsgQmNwNDcuVGFnVmFsaWRpdHkgfCB2YWxpZGl0eSBsZXZlbH0gKG9wdGlvbmFsKS5cbiAgICAgKi9cbiAgICB2YWxpZGl0eT86IFRhZ1ZhbGlkaXR5O1xuICAgIC8qKlxuICAgICAqIERlc2lyZWQge0BsaW5rIEJjcDQ3LlRhZ05vcm1hbGl6YXRpb24gfCBub3JtYWxpemF0aW9uIGxldmVsfSAob3B0aW9uYWwpLlxuICAgICAqL1xuICAgIG5vcm1hbGl6YXRpb24/OiBUYWdOb3JtYWxpemF0aW9uO1xuICAgIC8qKlxuICAgICAqIFRoZSB7QGxpbmsgSWFuYS5MYW5ndWFnZVJlZ2lzdHJpZXMgfCBJQU5BIGxhbmd1YWdlIHN1YnRhZyBhbmQgZXh0ZW5zaW9uIHJlZ2lzdHJpZXN9IHRvXG4gICAgICogYmUgdXNlZCBmb3IgdGhlIHJlcXVlc3QgKG9wdGlvbmFsKS5cbiAgICAgKi9cbiAgICBpYW5hPzogSWFuYS5MYW5ndWFnZVJlZ2lzdHJpZXM7XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIHNpbmdsZSBCQ1AtNDcgbGFuZ3VhZ2UgdGFnLlxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY2xhc3MgTGFuZ3VhZ2VUYWcge1xuICAgIC8qKlxuICAgICAqIFRoZSBpbmRpdmlkdWFsIHtAbGluayBCY3A0Ny5TdWJ0YWdzIHwgc3VidGFnc30gZm9yXG4gICAgICogdGhpcyBsYW5ndWFnZSB0YWcuXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IHN1YnRhZ3M6IFJlYWRvbmx5PFN1YnRhZ3M+O1xuXG4gICAgLyoqXG4gICAgICogQSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBsYW5ndWFnZSB0YWcuXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IHRhZzogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogRGV0YWlscyBhYm91dCB0aGlzIGxhbmd1YWdlIHRhZyBmcm9tIHRoZSBJQU5BIGxhbmd1YWdlXG4gICAgICogcmVnaXN0cmllcy5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgcmVnaXN0cnk6IExhbmd1YWdlUmVnaXN0cnlEYXRhO1xuXG4gICAgLyoqXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IF9pYW5hOiBJYW5hLkxhbmd1YWdlUmVnaXN0cmllcztcblxuICAgIC8qKlxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHByb3RlY3RlZCBfdmFsaWRpdHk6IFRhZ1ZhbGlkaXR5O1xuXG4gICAgLyoqXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHJvdGVjdGVkIF9ub3JtYWxpemF0aW9uOiBUYWdOb3JtYWxpemF0aW9uO1xuXG4gICAgLyoqXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHJvdGVjdGVkIF9pc1ZhbGlkOiB1bmRlZmluZWQgfCBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHJvdGVjdGVkIF9pc1N0cmljdGx5VmFsaWQ6IHVuZGVmaW5lZCB8IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgX2lzQ2Fub25pY2FsOiB1bmRlZmluZWQgfCBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHJvdGVjdGVkIF9pc1ByZWZlcnJlZDogdW5kZWZpbmVkIHwgYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHByb3RlY3RlZCBfc3VwcHJlc3NlZFNjcmlwdDogdW5kZWZpbmVkIHwgU2NyaXB0U3VidGFnIHwgZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBDb25zdHJ1Y3RzIGEge0BsaW5rIEJjcDQ3Lkxhbmd1YWdlVGFnIHwgTGFuZ3VhZ2VUYWcgfS5cbiAgICAgKiBAcGFyYW0gc3VidGFncyAtIFRoZSB7QGxpbmsgQmNwNDcuU3VidGFncyB8IHN1YnRhZ3MgfSBmcm9tXG4gICAgICogd2hpY2ggdGhlIHRhZyBpcyBjb25zdHJ1Y3RlZC5cbiAgICAgKiBAcGFyYW0gdmFsaWRpdHkgLSBLbm93biB7QGxpbmsgQmNwNDcuVGFnVmFsaWRpdHkgfCB2YWxpZGF0aW9uIGxldmVsfSBvZiB0aGVcbiAgICAgKiBzdXBwbGllZCBzdWJ0YWdzLlxuICAgICAqIEBwYXJhbSBub3JtYWxpemF0aW9uIC0gS25vd24ge0BsaW5rIEJjcDQ3LlRhZ05vcm1hbGl6YXRpb24gfCBub3JtYWxpemF0aW9uIGxldmVsfVxuICAgICAqIG9mIHRoZSBzdXBwbGllZCBzdWJ0YWdzLlxuICAgICAqIEBwYXJhbSBpYW5hIC0gVGhlIHtAbGluayBJYW5hLkxhbmd1YWdlUmVnaXN0cmllc30gdXNlZCB0byB2YWxpZGF0ZSBhbmQgbm9ybWFsaXplXG4gICAgICogdGhpcyB0YWcuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKHN1YnRhZ3M6IFN1YnRhZ3MsIHZhbGlkaXR5OiBUYWdWYWxpZGl0eSwgbm9ybWFsaXphdGlvbjogVGFnTm9ybWFsaXphdGlvbiwgaWFuYTogSWFuYS5MYW5ndWFnZVJlZ2lzdHJpZXMpIHtcbiAgICAgICAgdGhpcy5zdWJ0YWdzID0gT2JqZWN0LmZyZWV6ZSh7IC4uLnN1YnRhZ3MgfSk7XG4gICAgICAgIHRoaXMuX25vcm1hbGl6YXRpb24gPSBub3JtYWxpemF0aW9uO1xuICAgICAgICB0aGlzLl92YWxpZGl0eSA9IHZhbGlkaXR5O1xuICAgICAgICB0aGlzLnRhZyA9IHN1YnRhZ3NUb1N0cmluZyhzdWJ0YWdzKTtcbiAgICAgICAgdGhpcy5faWFuYSA9IGlhbmE7XG4gICAgICAgIHRoaXMucmVnaXN0cnkgPSBuZXcgTGFuZ3VhZ2VSZWdpc3RyeURhdGEodGhpcy5zdWJ0YWdzLCBpYW5hKTtcblxuICAgICAgICBpZiAodmFsaWRpdHkgPT09ICdzdHJpY3RseS12YWxpZCcpIHtcbiAgICAgICAgICAgIHRoaXMuX2lzU3RyaWN0bHlWYWxpZCA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLl9pc1ZhbGlkID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIGlmICh2YWxpZGl0eSA9PT0gJ3ZhbGlkJykge1xuICAgICAgICAgICAgdGhpcy5faXNWYWxpZCA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobm9ybWFsaXphdGlvbiA9PT0gJ3ByZWZlcnJlZCcpIHtcbiAgICAgICAgICAgIHRoaXMuX2lzUHJlZmVycmVkID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuX2lzQ2Fub25pY2FsID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIGlmIChub3JtYWxpemF0aW9uID09PSAnY2Fub25pY2FsJykge1xuICAgICAgICAgICAgdGhpcy5faXNDYW5vbmljYWwgPSB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGVmZmVjdGl2ZSBzY3JpcHQgb2YgdGhpcyBsYW5ndWFnZSB0YWcsIGlmIGtub3duLlxuICAgICAqIFRoZSBlZmZlY3RpdmUgc2NyaXB0IGlzIHRoZSBzY3JpcHQgc3VidGFnIGluIHRoZSB0YWcgaXRzZWxmLFxuICAgICAqIGlmIHByZXNlbnQsIG9yIHRoZSBgU3VwcHJlc3MtU2NyaXB0YCBkZWZpbmVkIGluIHRoZVxuICAgICAqIHtAbGluayBodHRwczovL3d3dy5pYW5hLm9yZy9hc3NpZ25tZW50cy9sYW5ndWFnZS1zdWJ0YWctcmVnaXN0cnkvbGFuZ3VhZ2Utc3VidGFnLXJlZ2lzdHJ5IHwgSUFOQSBzdWJ0YWcgcmVnaXN0cnl9XG4gICAgICogZm9yIHRoZSBwcmltYXJ5IGxhbmd1YWdlIG9mIHRoaXMgdGFnLiAgQ2FuIGJlIGB1bmRlZmluZWRgXG4gICAgICogaWYgbmVpdGhlciB0aGUgdGFnIG5vciB0aGUgSUFOQSByZWdpc3RyeSBkZWZpbmUgYSBzY3JpcHQuXG4gICAgICovXG4gICAgcHVibGljIGdldCBlZmZlY3RpdmVTY3JpcHQoKTogU2NyaXB0U3VidGFnIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3VidGFncy5zY3JpcHQgPz8gdGhpcy5nZXRTdXBwcmVzc2VkU2NyaXB0KCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGV0ZXJtaW5lcyBpZiB0aGlzIHRhZyByZXByZXNlbnRzIHRoZSBzcGVjaWFsIGB1bmRldGVybWluZWRgIGxhbmd1YWdlLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgaXNVbmRldGVybWluZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIC8vIGlzdGFuYnVsIGlnbm9yZSBuZXh0XG4gICAgICAgIHJldHVybiB0aGlzLnN1YnRhZ3MucHJpbWFyeUxhbmd1YWdlPy50b0xvd2VyQ2FzZSgpID09PSBVbmRldGVybWluZWRMYW5ndWFnZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRoaXMgbGFuZ3VhZ2UgdGFnIGlzIHZhbGlkLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgaXNWYWxpZCgpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKHRoaXMuX2lzVmFsaWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhpcy5faXNWYWxpZCA9IFZhbGlkYXRlVGFnLmlzVmFsaWQodGhpcy5zdWJ0YWdzKTtcbiAgICAgICAgICAgIGlmICh0aGlzLl9pc1ZhbGlkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fdmFsaWRpdHkgPSAndmFsaWQnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLl9pc1ZhbGlkID09PSB0cnVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgaWYgdGhpcyBsYW5ndWFnZSB0YWcgaXMgc3RyaWN0bHkgdmFsaWQuXG4gICAgICovXG4gICAgcHVibGljIGdldCBpc1N0cmljdGx5VmFsaWQoKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICh0aGlzLl9pc1N0cmljdGx5VmFsaWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhpcy5faXNTdHJpY3RseVZhbGlkID0gVmFsaWRhdGVUYWcuaXNTdHJpY3RseVZhbGlkKHRoaXMuc3VidGFncyk7XG4gICAgICAgICAgICBpZiAodGhpcy5faXNTdHJpY3RseVZhbGlkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fdmFsaWRpdHkgPSAnc3RyaWN0bHktdmFsaWQnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLl9pc1N0cmljdGx5VmFsaWQgPT09IHRydWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogV2hldGhlciB0aGlzIGxhbmd1YWdlIHRhZyBpcyBpbiBjYW5vbmljYWwgZm9ybS5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IGlzQ2Fub25pY2FsKCk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAodGhpcy5faXNDYW5vbmljYWwgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhpcy5faXNDYW5vbmljYWwgPSBWYWxpZGF0ZVRhZy5pc0Nhbm9uaWNhbCh0aGlzLnN1YnRhZ3MpO1xuICAgICAgICAgICAgaWYgKHRoaXMuX2lzQ2Fub25pY2FsKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fbm9ybWFsaXphdGlvbiA9ICdjYW5vbmljYWwnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLl9pc0Nhbm9uaWNhbCA9PT0gdHJ1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRoaXMgbGFuZ3VhZ2UgdGFnIGlzIGluIHByZWZlcnJlZCBmb3JtLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgaXNQcmVmZXJyZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICh0aGlzLl9pc1ByZWZlcnJlZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aGlzLl9pc1ByZWZlcnJlZCA9IFZhbGlkYXRlVGFnLmlzSW5QcmVmZXJyZWRGb3JtKHRoaXMuc3VidGFncyk7XG4gICAgICAgICAgICBpZiAodGhpcy5faXNQcmVmZXJyZWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9ub3JtYWxpemF0aW9uID0gJ3ByZWZlcnJlZCc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzUHJlZmVycmVkID09PSB0cnVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdGhpcyBsYW5ndWFnZSB0YWcgaXMgYSBncmFuZGZhdGhlcmVkIHRhZy5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IGlzR3JhbmRmYXRoZXJlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3VidGFncy5ncmFuZGZhdGhlcmVkICE9PSB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyBhIHRleHQgZGVzY3JpcHRpb24gb2YgdGhpcyB0YWcuXG4gICAgICovXG4gICAgcHVibGljIGdldCBkZXNjcmlwdGlvbigpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBwYXJ0czogc3RyaW5nW10gPSBbXTtcbiAgICAgICAgaWYgKCF0aGlzLnN1YnRhZ3MuZ3JhbmRmYXRoZXJlZCkge1xuICAgICAgICAgICAgaWYgKHRoaXMucmVnaXN0cnkucHJpbWFyeUxhbmd1YWdlIHx8IHRoaXMuc3VidGFncy5wcmltYXJ5TGFuZ3VhZ2UpIHtcbiAgICAgICAgICAgICAgICBwYXJ0cy5wdXNoKCh0aGlzLnJlZ2lzdHJ5LnByaW1hcnlMYW5ndWFnZT8uZGVzY3JpcHRpb25bMF0gPz8gdGhpcy5zdWJ0YWdzLnByaW1hcnlMYW5ndWFnZSkhKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLnJlZ2lzdHJ5LmV4dGxhbmdzKSB7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBlIG9mIHRoaXMucmVnaXN0cnkuZXh0bGFuZ3MpIHtcbiAgICAgICAgICAgICAgICAgICAgcGFydHMucHVzaChgLyAke2UucmVnaXN0cnk/LmRlc2NyaXB0aW9uWzBdID8/IGUuc3VidGFnfWApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLnN1YnRhZ3Muc2NyaXB0KSB7XG4gICAgICAgICAgICAgICAgcGFydHMucHVzaChgaW4gJHt0aGlzLnJlZ2lzdHJ5LnNjcmlwdD8uZGVzY3JpcHRpb25bMF0gPz8gdGhpcy5zdWJ0YWdzLnNjcmlwdH0gc2NyaXB0YCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGhpcy5zdWJ0YWdzLnJlZ2lvbikge1xuICAgICAgICAgICAgICAgIHBhcnRzLnB1c2goYGFzIHNwb2tlbiBpbiAke3RoaXMucmVnaXN0cnkucmVnaW9uPy5kZXNjcmlwdGlvblswXSA/PyB0aGlzLnN1YnRhZ3MucmVnaW9ufWApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRoaXMucmVnaXN0cnkudmFyaWFudHMgJiYgdGhpcy5yZWdpc3RyeS52YXJpYW50cy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBlIG9mIHRoaXMucmVnaXN0cnkudmFyaWFudHMpIHtcbiAgICAgICAgICAgICAgICAgICAgcGFydHMucHVzaChgKCR7ZS5yZWdpc3RyeT8uZGVzY3JpcHRpb25bMF0gPz8gZS5zdWJ0YWd9KWApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLnJlZ2lzdHJ5LmV4dGVuc2lvbnMgJiYgdGhpcy5yZWdpc3RyeS5leHRlbnNpb25zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGUgb2YgdGhpcy5yZWdpc3RyeS5leHRlbnNpb25zKSB7XG4gICAgICAgICAgICAgICAgICAgIHBhcnRzLnB1c2goYCgke2UucmVnaXN0cnk/LmRlc2NyaXB0aW9uWzBdID8/IGAtJHtlLnNpbmdsZXRvbn1gfSBcIiR7ZS52YWx1ZX1cIilgKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGhpcy5zdWJ0YWdzLnByaXZhdGVVc2UgJiYgdGhpcy5zdWJ0YWdzLnByaXZhdGVVc2UubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgZSBvZiB0aGlzLnN1YnRhZ3MucHJpdmF0ZVVzZSkge1xuICAgICAgICAgICAgICAgICAgICBwYXJ0cy5wdXNoKGAoLXggXCIke2V9XCIpYCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcGFydHMucHVzaChgJHt0aGlzLnRhZ30gKGdyYW5kZmF0aGVyZWQpYCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHBhcnRzLmpvaW4oJyAnKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgbmV3IHtAbGluayBCY3A0Ny5MYW5ndWFnZVRhZyB8IGxhbmd1YWdlIHRhZ30gZnJvbSBhIHN1cHBsaWVkIGBzdHJpbmdgIHRhZ1xuICAgICAqIHVzaW5nIG9wdGlvbmFsIGNvbmZpZ3VyYXRpb24sIGlmIHN1cHBsaWVkLlxuICAgICAqIEBwYXJhbSB0YWcgLSBUaGUgYHN0cmluZ2AgdGFnIGZyb20gd2hpY2ggdGhlIHtAbGluayBCY3A0Ny5MYW5ndWFnZVRhZyB8IGxhbmd1YWdlIHRhZ31cbiAgICAgKiBpcyB0ZSBiZSBjb25zdHJ1Y3RlZC5cbiAgICAgKiBAcGFyYW0gb3B0aW9ucyAtIChvcHRpb25hbCkgc2V0IG9mIHtAbGluayBCY3A0Ny5MYW5ndWFnZVRhZ0luaXRPcHRpb25zIHwgaW5pdCBvcHRpb25zfVxuICAgICAqIHRvIGd1aWRlIHRoZSB2YWxpZGF0aW9uIGFuZCBub3JtYWxpemF0aW9uIG9mIHRoaXMgdGFnLlxuICAgICAqIEByZXR1cm5zIGBTdWNjZXNzYCB3aXRoIHRoZSBuZXcge0BsaW5rIEJjcDQ3Lkxhbmd1YWdlVGFnIHwgbGFuZ3VhZ2UgdGFnfSBvciBgRmFpbHVyZWBcbiAgICAgKiB3aXRoIGRldGFpbHMgaWYgYW4gZXJyb3Igb2NjdXJzLlxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgY3JlYXRlRnJvbVRhZyh0YWc6IHN0cmluZywgb3B0aW9ucz86IExhbmd1YWdlVGFnSW5pdE9wdGlvbnMpOiBSZXN1bHQ8TGFuZ3VhZ2VUYWc+IHtcbiAgICAgICAgb3B0aW9ucyA9IHRoaXMuX2dldE9wdGlvbnMob3B0aW9ucyk7XG5cbiAgICAgICAgcmV0dXJuIExhbmd1YWdlVGFnUGFyc2VyLnBhcnNlKHRhZywgb3B0aW9ucy5pYW5hKS5vblN1Y2Nlc3MoKHN1YnRhZ3MpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9jcmVhdGVUcmFuc2Zvcm1lZChzdWJ0YWdzLCAndW5rbm93bicsICd1bmtub3duJywgb3B0aW9ucyk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYSBuZXcge0BsaW5rIEJjcDQ3Lkxhbmd1YWdlVGFnIHwgbGFuZ3VhZ2UgdGFnfSBmcm9tIGEgc3VwcGxpZWRcbiAgICAgKiB7QGxpbmsgQmNwNDcuU3VidGFncyB8IHN1YnRhZ3N9IHVzaW5nIG9wdGlvbmFsIGNvbmZpZ3VyYXRpb24sXG4gICAgICogaWYgc3VwcGxpZWQuXG4gICAgICogQHBhcmFtIHRhZyAtIFRoZSB7QGxpbmsgQmNwNDcuU3VidGFncyB8IHN1YnRhZ3N9IGZyb20gd2hpY2ggdGhlXG4gICAgICoge0BsaW5rIEJjcDQ3Lkxhbmd1YWdlVGFnIHwgbGFuZ3VhZ2UgdGFnfSBpcyB0ZSBiZSBjb25zdHJ1Y3RlZC5cbiAgICAgKiBAcGFyYW0gb3B0aW9ucyAtIChvcHRpb25hbCkgc2V0IG9mIHtAbGluayBCY3A0Ny5MYW5ndWFnZVRhZ0luaXRPcHRpb25zIHwgaW5pdCBvcHRpb25zfVxuICAgICAqIHRvIGd1aWRlIHRoZSB2YWxpZGF0aW9uIGFuZCBub3JtYWxpemF0aW9uIG9mIHRoaXMgdGFnLlxuICAgICAqIEByZXR1cm5zIGBTdWNjZXNzYCB3aXRoIHRoZSBuZXcge0BsaW5rIEJjcDQ3Lkxhbmd1YWdlVGFnIHwgbGFuZ3VhZ2UgdGFnfSBvciBgRmFpbHVyZWBcbiAgICAgKiB3aXRoIGRldGFpbHMgaWYgYW4gZXJyb3Igb2NjdXJzLlxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgY3JlYXRlRnJvbVN1YnRhZ3Moc3VidGFnczogU3VidGFncywgb3B0aW9ucz86IExhbmd1YWdlVGFnSW5pdE9wdGlvbnMpOiBSZXN1bHQ8TGFuZ3VhZ2VUYWc+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NyZWF0ZVRyYW5zZm9ybWVkKHN1YnRhZ3MsICd1bmtub3duJywgJ3Vua25vd24nLCBvcHRpb25zKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgbmV3IHtAbGluayBCY3A0Ny5MYW5ndWFnZVRhZyB8IGxhbmd1YWdlIHRhZ30gZnJvbSBhIHN1cHBsaWVkIGBzdHJpbmdgXG4gICAgICogdGFnIG9yIHtAbGluayBCY3A0Ny5TdWJ0YWdzIHwgc3VidGFnc30gdXNpbmcgb3B0aW9uYWwgY29uZmlndXJhdGlvbixcbiAgICAgKiBpZiBzdXBwbGllZC5cbiAgICAgKiBAcGFyYW0gZnJvbSAtIFRoZSBgc3RyaW5nYCB0YWcgb3Ige0BsaW5rIEJjcDQ3LlN1YnRhZ3MgfCBzdWJ0YWdzfSBmcm9tXG4gICAgICogd2hpY2ggdGhlIHtAbGluayBCY3A0Ny5MYW5ndWFnZVRhZyB8IGxhbmd1YWdlIHRhZ30gaXMgdGUgYmUgY29uc3RydWN0ZWQuXG4gICAgICogQHBhcmFtIG9wdGlvbnMgLSAob3B0aW9uYWwpIHNldCBvZiB7QGxpbmsgQmNwNDcuTGFuZ3VhZ2VUYWdJbml0T3B0aW9ucyB8IGluaXQgb3B0aW9uc31cbiAgICAgKiB0byBndWlkZSB0aGUgdmFsaWRhdGlvbiBhbmQgbm9ybWFsaXphdGlvbiBvZiB0aGlzIHRhZy5cbiAgICAgKiBAcmV0dXJucyBgU3VjY2Vzc2Agd2l0aCB0aGUgbmV3IHtAbGluayBCY3A0Ny5MYW5ndWFnZVRhZyB8IGxhbmd1YWdlIHRhZ30gb3IgYEZhaWx1cmVgXG4gICAgICogd2l0aCBkZXRhaWxzIGlmIGFuIGVycm9yIG9jY3Vycy5cbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIGNyZWF0ZShmcm9tOiBzdHJpbmcgfCBTdWJ0YWdzLCBvcHRpb25zPzogTGFuZ3VhZ2VUYWdJbml0T3B0aW9ucyk6IFJlc3VsdDxMYW5ndWFnZVRhZz4ge1xuICAgICAgICBpZiAodHlwZW9mIGZyb20gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVGcm9tVGFnKGZyb20sIG9wdGlvbnMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlRnJvbVN1YnRhZ3MoZnJvbSwgb3B0aW9ucyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb25zdHJ1Y3RzIGEgbmV3IHtAbGluayBCY3A0Ny5MYW5ndWFnZVRhZyB8IGxhbmd1YWdlIHRhZ30gYnkgYXBwbHlpbmcgYXBwcm9wcmlhdGUgdHJhbnNmb3JtYXRpb25zXG4gICAgICogdG8gYXMgc3VwcGxpZWQge0BsaW5rIEJjcDQ3LlN1YnRhZ3MgfCBCY3A0Ny5TdWJ0YWdzfS5cbiAgICAgKiBAcGFyYW0gc3VidGFncyAtIFRoZSB7QGxpbmsgQmNwNDcuU3VidGFncyB8IHN1YnRhZ3N9IHdoaWNoIHJlcHJlc2VudCB0aGUgdGFnLlxuICAgICAqIEBwYXJhbSBmcm9tVmFsaWRpdHkgLSBUaGUge0BsaW5rIEJjcDQ3LlRhZ1ZhbGlkaXR5IHwgdmFsaWRhdGlvbiBsZXZlbH0gb2YgdGhlIHN1cHBsaWVkIHN1YnRhZ3MuXG4gICAgICogQHBhcmFtIGZyb21Ob3JtYWxpemF0aW9uIC0gVGhlIHtAbGluayBCY3A0Ny5UYWdOb3JtYWxpemF0aW9uIHwgbm9ybWFsaXphdGlvbiBsZXZlbH0gZm8gdGhlXG4gICAgICogc3VwcGxpZWQgc3VidGFncy5cbiAgICAgKiBAcGFyYW0gcGFydGlhbE9wdGlvbnMgLSBBbnkge0BsaW5rIEJjcDQ3Lkxhbmd1YWdlVGFnSW5pdE9wdGlvbnMgfCBpbml0aWFsaXphdGlvbiBvcHRpb25zfS5cbiAgICAgKiBAcmV0dXJucyBgU3VjY2Vzc2Agd2l0aCB0aGUgY29ycmVzcG9uZGluZyB7QGxpbmsgQmNwNDcuTGFuZ3VhZ2VUYWcgfCBsYW5ndWFnZSB0YWd9IG9yIGBGYWlsdXJlYFxuICAgICAqIHdpdGggZGV0YWlscyBpZiBhbiBlcnJvciBvY2N1cnMuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHN0YXRpYyBfY3JlYXRlVHJhbnNmb3JtZWQoXG4gICAgICAgIHN1YnRhZ3M6IFN1YnRhZ3MsXG4gICAgICAgIGZyb21WYWxpZGl0eTogVGFnVmFsaWRpdHksXG4gICAgICAgIGZyb21Ob3JtYWxpemF0aW9uOiBUYWdOb3JtYWxpemF0aW9uLFxuICAgICAgICBwYXJ0aWFsT3B0aW9ucz86IExhbmd1YWdlVGFnSW5pdE9wdGlvbnNcbiAgICApOiBSZXN1bHQ8TGFuZ3VhZ2VUYWc+IHtcbiAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuX2dldE9wdGlvbnMocGFydGlhbE9wdGlvbnMpO1xuICAgICAgICByZXR1cm4gVmFsaWRhdGVUYWcudmFsaWRhdGVTdWJ0YWdzKHN1YnRhZ3MsIG9wdGlvbnMudmFsaWRpdHksIGZyb21WYWxpZGl0eSlcbiAgICAgICAgICAgIC5vblN1Y2Nlc3MoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBOb3JtYWxpemVUYWcubm9ybWFsaXplU3VidGFncyhzdWJ0YWdzLCBvcHRpb25zLm5vcm1hbGl6YXRpb24sIGZyb21Ob3JtYWxpemF0aW9uKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAub25TdWNjZXNzKChub3JtYWxpemVkKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgdmFsaWRpdHkgPSBtb3N0VmFsaWQoZnJvbVZhbGlkaXR5LCBvcHRpb25zLnZhbGlkaXR5KTtcbiAgICAgICAgICAgICAgICBjb25zdCBub3JtYWxpemF0aW9uID0gbW9zdE5vcm1hbGl6ZWQoZnJvbU5vcm1hbGl6YXRpb24sIG9wdGlvbnMubm9ybWFsaXphdGlvbik7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNhcHR1cmVSZXN1bHQoKCkgPT4gbmV3IExhbmd1YWdlVGFnKG5vcm1hbGl6ZWQsIHZhbGlkaXR5LCBub3JtYWxpemF0aW9uLCBvcHRpb25zLmlhbmEpKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgYSBmdWxseS1zcGVjaWZpZWQge0BsaW5rIEJjcDQ3Lkxhbmd1YWdlVGFnSW5pdE9wdGlvbnN9IGZyb20gcGFydGlhbCBvciB1bmRlZmluZWRcbiAgICAgKiBvcHRpb25zLCBzdWJzdGl0dXRpbmcgZGVmYXVsdHMgYXMgYXBwcm9wcmlhdGUuXG4gICAgICogQHBhcmFtIG9wdGlvbnMgLSBUaGUge0BsaW5rIEJjcDQ3Lkxhbmd1YWdlVGFnSW5pdE9wdGlvbnN9IHRvIGJlIGV4cGFuZGVkLCBvciBgdW5kZWZpbmVkYFxuICAgICAqIGZvciBkZWZhdWx0IG9wdGlvbnMuXG4gICAgICogQHJldHVybnMgRnVsbHktc3BlY2lmaWVkIHtAbGluayBCY3A0Ny5MYW5ndWFnZVRhZ0luaXRPcHRpb25zIHwgaW5pdCBvcHRpb25zfS5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgc3RhdGljIF9nZXRPcHRpb25zKG9wdGlvbnM/OiBMYW5ndWFnZVRhZ0luaXRPcHRpb25zKTogUmVxdWlyZWQ8TGFuZ3VhZ2VUYWdJbml0T3B0aW9ucz4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaWFuYTogb3B0aW9ucz8uaWFuYSA/PyBJYW5hLkRlZmF1bHRSZWdpc3RyaWVzLmxhbmd1YWdlUmVnaXN0cmllcyxcbiAgICAgICAgICAgIHZhbGlkaXR5OiBvcHRpb25zPy52YWxpZGl0eSA/PyAnd2VsbC1mb3JtZWQnLFxuICAgICAgICAgICAgbm9ybWFsaXphdGlvbjogb3B0aW9ucz8ubm9ybWFsaXphdGlvbiA/PyAnbm9uZScsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgYFN1cHByZXNzLVNjcmlwdGAgdmFsdWUgZGVmaW5lZCBmb3IgdGhlIHByaW1hcnkgbGFuZ3VhZ2Ugb2YgdGhpcyB0YWcsXG4gICAgICogcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGEgZGlmZmVyZW50IHNjcmlwdCBpcyBkZWZpbmVkIGluIHRoaXMgc3VidGFnLlxuICAgICAqIEByZXR1cm5zIFRoZSBzdXBwcmVzcy1zY3JpcHQgZGVmaW5lZCBmb3IgdGhlIHByaW1hcnkgbGFuZ3VhZ2UsIG9yIHVuZGVmaW5lZCBpZlxuICAgICAqIHRoZSBwcmltYXJ5IGxhbmd1YWdlIGlzIGludmFsaWQgb3IgaGFzIG5vIGRlZmluZWQgc3VwcHJlc3NlZCBzY3JpcHQuXG4gICAgICovXG4gICAgcHVibGljIGdldFN1cHByZXNzZWRTY3JpcHQoKTogU2NyaXB0U3VidGFnIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKHRoaXMuX3N1cHByZXNzZWRTY3JpcHQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhpcy5fc3VwcHJlc3NlZFNjcmlwdCA9IGZhbHNlO1xuICAgICAgICAgICAgaWYgKHRoaXMuc3VidGFncy5wcmltYXJ5TGFuZ3VhZ2UpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBsYW5ndWFnZSA9IHRoaXMuX2lhbmEuc3VidGFncy5sYW5ndWFnZXMudHJ5R2V0KHRoaXMuc3VidGFncy5wcmltYXJ5TGFuZ3VhZ2UpO1xuICAgICAgICAgICAgICAgIGlmIChsYW5ndWFnZT8uc3VwcHJlc3NTY3JpcHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9zdXBwcmVzc2VkU2NyaXB0ID0gbGFuZ3VhZ2Uuc3VwcHJlc3NTY3JpcHQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLl9zdXBwcmVzc2VkU2NyaXB0ID8gdGhpcy5fc3VwcHJlc3NlZFNjcmlwdCA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIGEgY29uZmlybWVkIHZhbGlkIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgbGFuZ3VhZ2UgdGFnLlxuICAgICAqIEByZXR1cm5zIGBTdWNjZXNzYCB3aXRoIGEgdmFsaWQgcmVwcmVzZW50YXRpb24gb2YgdGhpcyB7QGxpbmsgQmNwNDcuTGFuZ3VhZ2VUYWcgfCBsYW5ndWFnZSB0YWd9LFxuICAgICAqIG9yIGBGYWlsdXJlYCB3aXRoIGRldGFpbHMgaWYgdGhlIHRhZyBjYW5ub3QgYmUgdmFsaWRhdGVkLlxuICAgICAqL1xuICAgIHB1YmxpYyB0b1ZhbGlkKCk6IFJlc3VsdDxMYW5ndWFnZVRhZz4ge1xuICAgICAgICBpZiAodGhpcy5pc1ZhbGlkKSB7XG4gICAgICAgICAgICByZXR1cm4gc3VjY2VlZCh0aGlzKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBvcHRpb25zOiBMYW5ndWFnZVRhZ0luaXRPcHRpb25zID0ge1xuICAgICAgICAgICAgaWFuYTogdGhpcy5faWFuYSxcbiAgICAgICAgICAgIHZhbGlkaXR5OiAndmFsaWQnLFxuICAgICAgICAgICAgbm9ybWFsaXphdGlvbjogdGhpcy5fbm9ybWFsaXphdGlvbixcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIExhbmd1YWdlVGFnLl9jcmVhdGVUcmFuc2Zvcm1lZCh0aGlzLnN1YnRhZ3MsIHRoaXMuX3ZhbGlkaXR5LCB0aGlzLl9ub3JtYWxpemF0aW9uLCBvcHRpb25zKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIGEgY29uZmlybWVkIHN0cmljdGx5IHZhbGlkIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgbGFuZ3VhZ2UgdGFnLlxuICAgICAqIEByZXR1cm5zIGBTdWNjZXNzYCB3aXRoIGEgc3RyaWN0bHkgdmFsaWQgcmVwcmVzZW50YXRpb24gb2YgdGhpcyB7QGxpbmsgQmNwNDcuTGFuZ3VhZ2VUYWcgfCBsYW5ndWFnZSB0YWd9LFxuICAgICAqIG9yIGBGYWlsdXJlYCB3aXRoIGRldGFpbHMgaWYgdGhlIHRhZyBjYW5ub3QgYmUgc3RyaWN0bHkgdmFsaWRhdGVkLlxuICAgICAqL1xuICAgIHB1YmxpYyB0b1N0cmljdGx5VmFsaWQoKTogUmVzdWx0PExhbmd1YWdlVGFnPiB7XG4gICAgICAgIGlmICh0aGlzLmlzU3RyaWN0bHlWYWxpZCkge1xuICAgICAgICAgICAgcmV0dXJuIHN1Y2NlZWQodGhpcyk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgb3B0aW9uczogTGFuZ3VhZ2VUYWdJbml0T3B0aW9ucyA9IHtcbiAgICAgICAgICAgIGlhbmE6IHRoaXMuX2lhbmEsXG4gICAgICAgICAgICB2YWxpZGl0eTogJ3N0cmljdGx5LXZhbGlkJyxcbiAgICAgICAgICAgIG5vcm1hbGl6YXRpb246IHRoaXMuX25vcm1hbGl6YXRpb24sXG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiBMYW5ndWFnZVRhZy5fY3JlYXRlVHJhbnNmb3JtZWQodGhpcy5zdWJ0YWdzLCB0aGlzLl92YWxpZGl0eSwgdGhpcy5fbm9ybWFsaXphdGlvbiwgb3B0aW9ucyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyBhIGNvbmZpcm1lZCBjYW5vbmljYWwgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBsYW5ndWFnZSB0YWcuXG4gICAgICogQHJldHVybnMgYFN1Y2Nlc3NgIHdpdGggYSBjYW5vbmljYWwgcmVwcmVzZW50YXRpb24gb2YgdGhpcyB7QGxpbmsgQmNwNDcuTGFuZ3VhZ2VUYWcgfCBsYW5ndWFnZSB0YWd9LFxuICAgICAqIG9yIGBGYWlsdXJlYCB3aXRoIGRldGFpbHMgaWYgdGhlIHRhZyBjYW5ub3QgYmUgbm9ybWFsaXplZCB0byBjYW5vbmljYWwgZm9ybS5cbiAgICAgKi9cbiAgICBwdWJsaWMgdG9DYW5vbmljYWwoKTogUmVzdWx0PExhbmd1YWdlVGFnPiB7XG4gICAgICAgIGlmICh0aGlzLmlzQ2Fub25pY2FsKSB7XG4gICAgICAgICAgICByZXR1cm4gc3VjY2VlZCh0aGlzKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBvcHRpb25zOiBMYW5ndWFnZVRhZ0luaXRPcHRpb25zID0ge1xuICAgICAgICAgICAgaWFuYTogdGhpcy5faWFuYSxcbiAgICAgICAgICAgIHZhbGlkaXR5OiB0aGlzLl92YWxpZGl0eSxcbiAgICAgICAgICAgIG5vcm1hbGl6YXRpb246ICdjYW5vbmljYWwnLFxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gTGFuZ3VhZ2VUYWcuX2NyZWF0ZVRyYW5zZm9ybWVkKHRoaXMuc3VidGFncywgdGhpcy5fdmFsaWRpdHksIHRoaXMuX25vcm1hbGl6YXRpb24sIG9wdGlvbnMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgYSBjb25maXJtZWQgcHJlZmVycmVkIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgbGFuZ3VhZ2UgdGFnLlxuICAgICAqIEByZXR1cm5zIGBTdWNjZXNzYCB3aXRoIGEgcHJlZmVycmVkIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMge0BsaW5rIEJjcDQ3Lkxhbmd1YWdlVGFnIHwgbGFuZ3VhZ2UgdGFnfSxcbiAgICAgKiBvciBgRmFpbHVyZWAgd2l0aCBkZXRhaWxzIGlmIHRoZSB0YWcgY2Fubm90IGJlIG5vcm1hbGl6ZWQgdG8gcHJlZmVycmVkIGZvcm0uXG4gICAgICovXG4gICAgcHVibGljIHRvUHJlZmVycmVkKCk6IFJlc3VsdDxMYW5ndWFnZVRhZz4ge1xuICAgICAgICBpZiAodGhpcy5pc1ByZWZlcnJlZCkge1xuICAgICAgICAgICAgcmV0dXJuIHN1Y2NlZWQodGhpcyk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgb3B0aW9uczogTGFuZ3VhZ2VUYWdJbml0T3B0aW9ucyA9IHtcbiAgICAgICAgICAgIGlhbmE6IHRoaXMuX2lhbmEsXG4gICAgICAgICAgICB2YWxpZGl0eTogJ3ZhbGlkJywgLy8gcHJlZmVycmVkIHJlcXVpcmVzIHZhbGlkaXR5XG4gICAgICAgICAgICBub3JtYWxpemF0aW9uOiAncHJlZmVycmVkJyxcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIExhbmd1YWdlVGFnLl9jcmVhdGVUcmFuc2Zvcm1lZCh0aGlzLnN1YnRhZ3MsIHRoaXMuX3ZhbGlkaXR5LCB0aGlzLl9ub3JtYWxpemF0aW9uLCBvcHRpb25zKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgbGFuZ3VhZ2UgdGFnLlxuICAgICAqIEByZXR1cm5zIEEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgbGFuZ3VhZ2UgdGFnLlxuICAgICAqL1xuICAgIHB1YmxpYyB0b1N0cmluZygpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy50YWc7XG4gICAgfVxufVxuIl19
{
"name": "@fgv/ts-bcp47",
"version": "0.9.3",
"version": "0.9.4",
"description": "BCP-47 Tag Utilities",

@@ -37,16 +37,16 @@ "main": "index.js",

"@fgv/ts-json": "1.9.0",
"@fgv/ts-utils": "1.9.0",
"@fgv/ts-utils": "^1.9.1",
"@fgv/ts-utils-jest": "^1.9.0",
"@microsoft/api-documenter": "^7.19.27",
"@microsoft/api-extractor": "^7.33.7",
"@types/jest": "^29.2.5",
"@microsoft/api-documenter": "^7.19.28",
"@microsoft/api-extractor": "^7.33.8",
"@types/jest": "^29.2.6",
"@types/luxon": "^3.2.0",
"@types/node": "^18.11.18",
"@typescript-eslint/eslint-plugin": "^5.48.0",
"@typescript-eslint/parser": "^5.48.0",
"axios": "^1.2.1",
"eslint": "^8.31.0",
"@typescript-eslint/eslint-plugin": "^5.48.2",
"@typescript-eslint/parser": "^5.48.2",
"axios": "^1.2.3",
"eslint": "^8.32.0",
"eslint-config-prettier": "^8.6.0",
"eslint-config-standard": "^17.0.0",
"eslint-plugin-import": "^2.26.0",
"eslint-plugin-import": "^2.27.5",
"eslint-plugin-node": "^11.1.0",

@@ -56,5 +56,5 @@ "eslint-plugin-prettier": "^4.2.1",

"jest": "^29.3.1",
"prettier": "^2.8.1",
"rimraf": "^3.0.2",
"ts-jest": "^29.0.3",
"prettier": "^2.8.3",
"rimraf": "^4.1.1",
"ts-jest": "^29.0.5",
"ts-node": "^10.9.1",

@@ -64,3 +64,3 @@ "typescript": "^4.9.4"

"dependencies": {
"luxon": "^3.2.0"
"luxon": "^3.2.1"
},

@@ -67,0 +67,0 @@ "peerDependencies": {

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc