Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

tsickle

Package Overview
Dependencies
Maintainers
2
Versions
65
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

tsickle - npm Package Compare versions

Comparing version 0.34.0 to 0.34.2

6

package.json
{
"name": "tsickle",
"version": "0.34.0",
"version": "0.34.2",
"description": "Transpile TypeScript code to JavaScript with Closure annotations.",

@@ -32,3 +32,3 @@ "main": "src/tsickle.js",

"glob": "7.1.2",
"google-closure-compiler": "20180716.0.1",
"google-closure-compiler": "^20181125.0.1",
"jasmine": "3.1.0",

@@ -38,3 +38,3 @@ "prettier": "1.14.0",

"tslint": "5.11.0",
"typescript": "3.2.0-rc"
"typescript": "3.3.1"
},

@@ -41,0 +41,0 @@ "scripts": {

@@ -1,2 +0,2 @@

# Tsickle - TypeScript to Closure Translator [![Linux build](https://travis-ci.org/angular/tsickle.svg?branch=master)](https://travis-ci.org/angular/tsickle) [![Windows build](https://ci.appveyor.com/api/projects/status/puxdblmlqbofqqt1/branch/master?svg=true)](https://ci.appveyor.com/project/alexeagle/tsickle/branch/master)
# Tsickle - TypeScript to Closure Translator [![Build Status](https://circleci.com/gh/angular/tsickle.svg?style=svg)](https://circleci.com/gh/angular/tsickle) [![Windows build](https://ci.appveyor.com/api/projects/status/puxdblmlqbofqqt1/branch/master?svg=true)](https://ci.appveyor.com/project/alexeagle/tsickle/branch/master)

@@ -3,0 +3,0 @@ Tsickle converts TypeScript code into a form acceptable to the [Closure

@@ -12,3 +12,6 @@ /**

* but used in TypeScript platform `.d.ts`.
* We suppress checkTypes to handle the scenario where a user doesn't use the
* Closure externs (e.g. in a service worker).
* @externs
* @suppress {checkTypes}
*/

@@ -48,3 +51,3 @@

* @template T
* @extends {IArrayLike<T>}
* @extends {Array<T>}
*/

@@ -82,11 +85,1 @@ function ReadonlyArray() {}

var SymbolConstructor;
/**
* This type is used as a marker in locations where TypeScript knows the type
* but we cannot express that type in the Closure system.
*
* It's used in 'implements' clauses so that a person debugging the emitted JS
* can see that tsickle saw the type but ignored it.
* @record
*/
class InexpressibleType {}

@@ -91,9 +91,7 @@ /**

suppressions.add('uselessCode');
// 4) Suppress missingReturn. If the TS compiler's exhaustiveness analysis
// concludes that all possible branches return a value, then we don't want
// Closure to second-guess this decision.
// 4) Suppress some checks for user errors that TS already checks.
suppressions.add('missingReturn');
// 5) Suppress unusedPrivateMembers. TS also captures this, so we don't
// want to check it a second time.
suppressions.add('unusedPrivateMembers');
// 5) Suppress checking for @override, because TS doesn't model it.
suppressions.add('missingOverride');
suppressTag.type = Array.from(suppressions.values()).sort().join(',');

@@ -209,2 +207,2 @@ return tags;

});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZW92ZXJ2aWV3X2NvbW1lbnRfdHJhbnNmb3JtZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZmlsZW92ZXJ2aWV3X2NvbW1lbnRfdHJhbnNmb3JtZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFFSCwrQkFBaUM7SUFFakMseUNBQWlDO0lBQ2pDLGlFQUE4SDtJQUU5SDs7O09BR0c7SUFDSCxJQUFNLDRCQUE0QixHQUM5QixJQUFJLEdBQUcsQ0FBQyxDQUFDLGNBQWMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDO0lBRTNFOzs7OztPQUtHO0lBQ0gsU0FBUywyQkFBMkIsQ0FBQyxJQUFpQjtRQUNwRCx3Q0FBd0M7UUFDeEMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBQSxDQUFDLElBQUksT0FBQSxDQUFDLENBQUMsT0FBTyxLQUFLLGNBQWMsRUFBNUIsQ0FBNEIsQ0FBQyxFQUFFO1lBQ2pELElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFDLE9BQU8sRUFBRSxjQUFjLEVBQUUsSUFBSSxFQUFFLGtCQUFrQixFQUFDLENBQUMsQ0FBQztTQUN4RTtRQUVELGtDQUFrQztRQUNsQywwRkFBMEY7UUFDMUYsa0NBQWtDO1FBQ2xDLElBQUksV0FBVyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBQSxDQUFDLElBQUksT0FBQSxDQUFDLENBQUMsT0FBTyxLQUFLLFVBQVUsRUFBeEIsQ0FBd0IsQ0FBQyxDQUFDO1FBQzNELElBQUksWUFBeUIsQ0FBQztRQUM5QixJQUFJLFdBQVcsRUFBRTtZQUNmLFlBQVksR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUMs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LEVBQUUsZUFBZSxDQUFDLEVBQ3BFLDhCQUE4QixDQUFDLENBQUM7aUJBQ3JDO2dCQUVELDJCQUEyQixDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNsQyxJQUFNLFdBQVcsR0FBRyxLQUFLLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBRXhELElBQUksZUFBZSxHQUFHLENBQUMsRUFBRTtvQkFDdkIsMERBQTBEO29CQUMxRCxPQUFPLHlCQUF5QixDQUFDLFVBQVUsRUFBRSxXQUFXLENBQUMsQ0FBQztpQkFDM0Q7Z0JBRUQsWUFBWSxDQUFDLGVBQWUsQ0FBQyxDQUFDLElBQUksR0FBRyxXQUFXLENBQUM7Z0JBQ2pELG9FQUFvRTtnQkFDcEUsT0FBTyxVQUFVLENBQUM7WUFDcEIsQ0FBQyxDQUFDO1FBQ0osQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQXBHRCxrRkFvR0M7SUFFRCxTQUFTLHlCQUF5QixDQUFDLEVBQWlCLEVBQUUsV0FBbUI7UUFDdkUsSUFBSSx1QkFBdUIsR0FBRyw0Q0FBeUIsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM1RCx1QkFBdUIsR0FBRyxFQUFFLENBQUMsMkJBQTJCLENBQ3BELHVCQUF1QixFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsc0JBQXNCLEVBQUUsV0FBVyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3RGLE9BQU8sdUNBQW9CLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxlQUFlLFdBQUUsdUJBQXVCLEdBQUssRUFBRSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7SUFDbkcsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0ICogYXMgdHMgZnJvbSAndHlwZXNjcmlwdCc7XG5cbmltcG9ydCAqIGFzIGpzZG9jIGZyb20gJy4vanNkb2MnO1xuaW1wb3J0IHtjcmVhdGVOb3RFbWl0dGVkU3RhdGVtZW50LCByZXBvcnREaWFnbm9zdGljLCBzeW50aGVzaXplQ29tbWVudFJhbmdlcywgdXBkYXRlU291cmNlRmlsZU5vZGV9IGZyb20gJy4vdHJhbnNmb3JtZXJfdXRpbCc7XG5cbi8qKlxuICogQSBzZXQgb2YgSlNEb2MgdGFncyB0aGF0IG1hcmsgYSBjb21tZW50IGFzIGEgZmlsZW92ZXJ2aWV3IGNvbW1lbnQuIFRoZXNlIGFyZSByZWNvZ25pemVkIGJ5IG90aGVyXG4gKiBwaWVjZXMgb2YgaW5mcmFzdHJ1Y3R1cmUgKENsb3N1cmUgQ29tcGlsZXIsIG1vZHVsZSBzeXN0ZW0sIC4uLikuXG4gKi9cbmNvbnN0IEZJTEVPVkVSVklFV19DT01NRU5UX01BUktFUlM6IFJlYWRvbmx5U2V0PHN0cmluZz4gPVxuICAgIG5ldyBTZXQoWydmaWxlb3ZlcnZpZXcnLCAnZXh0ZXJucycsICdtb2ROYW1lJywgJ21vZHMnLCAncGludG9tb2R1bGUnXSk7XG5cbi8qKlxuICogR2l2ZW4gYSBwYXJzZWQgXFxAZmlsZW92ZXJ2aWV3IGNvbW1lbnQsIGVuc3VyZXMgaXQgaGFzIGFsbCB0aGUgYXR0cmlidXRlcyB3ZSBuZWVkLlxuICogVGhpcyBmdW5jdGlvbiBjYW4gYmUgY2FsbGVkIHRvIG1vZGlmeSBhbiBleGlzdGluZyBjb21tZW50IG9yIHRvIG1ha2UgYSBuZXcgb25lLlxuICpcbiAqIEBwYXJhbSB0YWdzIENvbW1lbnQgYXMgcGFyc2VkIGxpc3Qgb2YgdGFnczsgbW9kaWZpZWQgaW4tcGxhY2UuXG4gKi9cbmZ1bmN0aW9uIGF1Z21lbnRGaWxlb3ZlcnZpZXdDb21tZW50cyh0YWdzOiBqc2RvYy5UYWdbXSkge1xuICAvLyBFbnN1cmUgd2Ugc3RhcnQgd2l0aCBhIEBmaWxlb3ZlcnZpZXcuXG4gIGlmICghdGFncy5maW5kKHQgPT4gdC50YWdOYW1lID09PSAnZmlsZW92ZXJ2aWV3JykpIHtcbiAgICB0YWdzLnNwbGljZSgwLCAwLCB7dGFnTmFtZTogJ2ZpbGVvdmVydmlldycsIHRleHQ6ICdhZGRlZCBieSB0c2lja2xlJ30pO1xuICB9XG5cbiAgLy8gRmluZCBvciBjcmVhdGUgYSBAc3VwcHJlc3MgdGFnLlxuICAvLyBDbG9zdXJlIGNvbXBpbGVyIGJhcmZzIGlmIHRoZXJlJ3MgYSBkdXBsaWNhdGVkIEBzdXBwcmVzcyB0YWcgaW4gYSBmaWxlLCBzbyB0aGUgdGFnIG11c3RcbiAgLy8gb25seSBhcHBlYXIgb25jZSBhbmQgYmUgbWVyZ2VkLlxuICBsZXQgc3VwcHJlc3NUYWcgPSB0YWdzLmZpbmQodCA9PiB0LnRhZ05hbWUgPT09ICdzdXBwcmVzcycpO1xuICBsZXQgc3VwcHJlc3Npb25zOiBTZXQ8c3RyaW5nPjtcbiAgaWYgKHN1cHByZXNzVGFnKSB7XG4gICAgc3VwcHJlc3Npb25zID0gbmV3IFNldCgoc3VwcHJlc3NUYWcudHlwZSB8fCAnJykuc3BsaXQoJywnKS5tYXAocyA9PiBzLnRyaW0oKSkpO1xuICB9IGVsc2Uge1xuICAgIHN1cHByZXNzVGFnID0ge3RhZ05hbWU6ICdzdXBwcmVzcycsIHRleHQ6ICdjaGVja2VkIGJ5IHRzYyd9O1xuICAgIHRhZ3MucHVzaChzdXBwcmVzc1RhZyk7XG4gICAgc3VwcHJlc3Npb25zID0gbmV3IFNldCgpO1xuICB9XG5cbiAgLy8gRW5zdXJlIG91ciBzdXBwcmVzc2lvbnMgYXJlIGluY2x1ZGVkIGluIHRoZSBAc3VwcHJlc3MgdGFnOlxuICAvLyAxKSBTdXBwcmVzcyBjaGVja1R5cGVzLiAgV2UgYmVsaWV2ZSB0aGUgY29kZSBoYXMgYWxyZWFkeSBiZWVuIHR5cGUtY2hlY2tlZCBieSBUeXBlU2NyaXB0LFxuICAvLyBhbmQgd2UgY2Fubm90IG1vZGVsIGFsbCB0aGUgVHlwZVNjcmlwdCB0eXBlIGRlY2lzaW9ucyBpbiBDbG9zdXJlIHN5bnRheC5cbiAgc3VwcHJlc3Npb25zLmFkZCgnY2hlY2tUeXBlcycpO1xuICAvLyAyKSBTdXBwcmVzcyBleHRyYVJlcXVpcmUuICBXZSByZW1vdmUgZXh0cmEgcmVxdWlyZXMgYXQgdGhlIFR5cGVTY3JpcHQgbGV2ZWwsIHNvIGFueSByZXF1aXJlXG4gIC8vIHRoYXQgZ2V0cyB0byB0aGUgSlMgbGV2ZWwgaXMgYSBsb2FkLWJlYXJpbmcgcmVxdWlyZS5cbiAgc3VwcHJlc3Npb25zLmFkZCgnZXh0cmFSZXF1aXJlJyk7XG4gIC8vIDMpIFN1cHByZXNzIHVzZWxlc3NDb2RlLiAgV2UgZW1pdCBhbiBcImlmIChmYWxzZSlcIiBhcm91bmQgdHlwZSBkZWNsYXJhdGlvbnMsXG4gIC8vIHdoaWNoIGlzIGZsYWdnZWQgYXMgdW51c2VkIGNvZGUgdW5sZXNzIHdlIHN1cHByZXNzIGl0LlxuICBzdXBwcmVzc2lvbnMuYWRkKCd1c2VsZXNzQ29kZScpO1xuICAvLyA0KSBTdXBwcmVzcyBtaXNzaW5nUmV0dXJuLiAgSWYgdGhlIFRTIGNvbXBpbGVyJ3MgZXhoYXVzdGl2ZW5lc3MgYW5hbHlzaXNcbiAgLy8gY29uY2x1ZGVzIHRoYXQgYWxsIHBvc3NpYmxlIGJyYW5jaGVzIHJldHVybiBhIHZhbHVlLCB0aGVuIHdlIGRvbid0IHdhbnRcbiAgLy8gQ2xvc3VyZSB0byBzZWNvbmQtZ3Vlc3MgdGhpcyBkZWNpc2lvbi5cbiAgc3VwcHJlc3Npb25zLmFkZCgnbWlzc2luZ1JldHVybicpO1xuICAvLyA1KSBTdXBwcmVzcyB1bnVzZWRQcml2YXRlTWVtYmVycy4gIFRTIGFsc28gY2FwdHVyZXMgdGhpcywgc28gd2UgZG9uJ3RcbiAgLy8gd2FudCB0byBjaGVjayBpdCBhIHNlY29uZCB0aW1lLlxuICBzdXBwcmVzc2lvbnMuYWRkKCd1bnVzZWRQcml2YXRlTWVtYmVycycpO1xuICBzdXBwcmVzc1RhZy50eXBlID0gQXJyYXkuZnJvbShzdXBwcmVzc2lvbnMudmFsdWVzKCkpLnNvcnQoKS5qb2luKCcsJyk7XG5cbiAgcmV0dXJuIHRhZ3M7XG59XG5cbi8qKlxuICogQSB0cmFuc2Zvcm1lciB0aGF0IGVuc3VyZXMgdGhlIGVtaXR0ZWQgSlMgZmlsZSBoYXMgYW4gXFxAZmlsZW92ZXJ2aWV3IGNvbW1lbnQgdGhhdCBjb250YWlucyBhblxuICogXFxAc3VwcHJlc3Mge2NoZWNrVHlwZXN9IGFubm90YXRpb24gYnkgZWl0aGVyIGFkZGluZyBvciB1cGRhdGluZyBhbiBleGlzdGluZyBjb21tZW50LlxuICovXG5leHBvcnQgZnVuY3Rpb24gdHJhbnNmb3JtRmlsZW92ZXJ2aWV3Q29tbWVudEZhY3RvcnkoZGlhZ25vc3RpY3M6IHRzLkRpYWdub3N0aWNbXSkge1xuICByZXR1cm4gKCk6IChzb3VyY2VGaWxlOiB0cy5Tb3VyY2VGaWxlKSA9PiB0cy5Tb3VyY2VGaWxlID0+IHtcbiAgICBmdW5jdGlvbiBjaGVja05vRmlsZW92ZXJ2aWV3Q29tbWVudHMoXG4gICAgICAgIGNvbnRleHQ6IHRzLk5vZGUsIGNvbW1lbnRzOiBqc2RvYy5TeW50aGVzaXplZENvbW1lbnRXaXRoT3JpZ2luYWxbXSwgbWVzc2FnZTogc3RyaW5nKSB7XG4gICAgICBmb3IgKGNvbnN0IGNvbW1lbnQgb2YgY29tbWVudHMpIHtcbiAgICAgICAgY29uc3QgcGFyc2UgPSBqc2RvYy5wYXJzZShjb21tZW50KTtcbiAgICAgICAgaWYgKHBhcnNlICE9PSBudWxsICYmIHBhcnNlLnRhZ3Muc29tZSh0ID0+IEZJTEVPVkVSVklFV19DT01NRU5UX01BUktFUlMuaGFzKHQudGFnTmFtZSkpKSB7XG4gICAgICAgICAgLy8gUmVwb3J0IGEgd2FybmluZzsgdGhpcyBzaG91bGQgbm90IGJyZWFrIGNvbXBpbGF0aW9uIGluIHRoaXJkIHBhcnR5IGNvZGUuXG4gICAgICAgICAgcmVwb3J0RGlhZ25vc3RpYyhcbiAgICAgICAgICAgICAgZGlhZ25vc3RpY3MsIGNvbnRleHQsIG1lc3NhZ2UsIGNvbW1lbnQub3JpZ2luYWxSYW5nZSwgdHMuRGlhZ25vc3RpY0NhdGVnb3J5Lldhcm5pbmcpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIChzb3VyY2VGaWxlOiB0cy5Tb3VyY2VGaWxlKSA9PiB7XG4gICAgICBjb25zdCB0ZXh0ID0gc291cmNlRmlsZS5nZXRGdWxsVGV4dCgpO1xuXG4gICAgICBsZXQgZmlsZUNvbW1lbnRzOiB0cy5TeW50aGVzaXplZENvbW1lbnRbXSA9IFtdO1xuICAgICAgY29uc3QgZmlyc3RTdGF0ZW1lbnQgPSBzb3VyY2VGaWxlLnN0YXRlbWVudHMubGVuZ3RoICYmIHNvdXJjZUZpbGUuc3RhdGVtZW50c1swXSB8fCBudWxsO1xuXG4gICAgICBjb25zdCBvcmlnaW5hbENvbW1lbnRzID0gdHMuZ2V0TGVhZGluZ0NvbW1lbnRSYW5nZXModGV4dCwgMCkgfHwgW107XG4gICAgICBpZiAoIWZpcnN0U3RhdGVtZW50KSB7XG4gICAgICAgIC8vIEluIGFuIGVtcHR5IHNvdXJjZSBmaWxlLCBhbGwgY29tbWVudHMgYXJlIGZpbGUtbGV2ZWwgY29tbWVudHMuXG4gICAgICAgIGZpbGVDb21tZW50cyA9IHN5bnRoZXNpemVDb21tZW50UmFuZ2VzKHNvdXJjZUZpbGUsIG9yaWdpbmFsQ29tbWVudHMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gU2VhcmNoIGZvciB0aGUgbGFzdCBjb21tZW50IHNwbGl0IGZyb20gdGhlIGZpbGUgd2l0aCBhIFxcblxcbi4gQWxsIGNvbW1lbnRzIGJlZm9yZSB0aGF0IGFyZVxuICAgICAgICAvLyBjb25zaWRlcmVkIGZpbGVvdmVydmlldyBjb21tZW50cywgYWxsIGNvbW1lbnRzIGFmdGVyIHRoYXQgYmVsb25nIHRvIHRoZSBuZXh0XG4gICAgICAgIC8vIHN0YXRlbWVudChzKS4gSWYgbm9uZSBmb3VuZCwgY29tbWVudHMgcmVtYWlucyBlbXB0eSwgYW5kIHRoZSBjb2RlIGJlbG93IHdpbGwgaW5zZXJ0IGEgbmV3XG4gICAgICAgIC8vIGZpbGVvdmVydmlldyBjb21tZW50LlxuICAgICAgICBmb3IgKGxldCBpID0gb3JpZ2luYWxDb21tZW50cy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICAgIGNvbnN0IGVuZCA9IG9yaWdpbmFsQ29tbWVudHNbaV0uZW5kO1xuICAgICAgICAgIGlmICghdGV4dC5zdWJzdHJpbmcoZW5kKS5zdGFydHNXaXRoKCdcXG5cXG4nKSAmJlxuICAgICAgICAgICAgICAhdGV4dC5zdWJzdHJpbmcoZW5kKS5zdGFydHNXaXRoKCdcXHJcXG5cXHJcXG4nKSkge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIFRoaXMgY29tbWVudCBpcyBzZXBhcmF0ZWQgZnJvbSB0aGUgc291cmNlIGZpbGUgd2l0aCBhIGRvdWJsZSBicmVhaywgbWFya2luZyBpdCAoYW5kIGFueVxuICAgICAgICAgIC8vIHByZWNlZGluZyBjb21tZW50cykgYXMgYSBmaWxlLWxldmVsIGNvbW1lbnQuIFNwbGl0IHRoZW0gb2ZmIGFuZCBhdHRhY2ggdGhlbSBvbnRvIGFcbiAgICAgICAgICAvLyBOb3RFbWl0dGVkU3RhdGVtZW50LCBzbyB0aGF0IHRoZXkgZG8gbm90IGdldCBsb3N0IGxhdGVyIG9uLlxuICAgICAgICAgIGNvbnN0IHN5bnRoZXNpemVkQ29tbWVudHMgPSBqc2RvYy5zeW50aGVzaXplTGVhZGluZ0NvbW1lbnRzKGZpcnN0U3RhdGVtZW50KTtcbiAgICAgICAgICBjb25zdCBub3RFbWl0dGVkID0gdHMuY3JlYXRlTm90RW1pdHRlZFN0YXRlbWVudChzb3VyY2VGaWxlKTtcbiAgICAgICAgICAvLyBNb2RpZnkgdGhlIGNvbW1lbnRzIG9uIHRoZSBmaXJzdFN0YXRlbWVudCBpbiBwbGFjZSBieSByZW1vdmluZyB0aGUgZmlsZS1sZXZlbCBjb21tZW50cy5cbiAgICAgICAgICBmaWxlQ29tbWVudHMgPSBzeW50aGVzaXplZENvbW1lbnRzLnNwbGljZSgwLCBpICsgMSk7XG4gICAgICAgICAgLy8gTW92ZSB0aGUgZmlsZUNvbW1lbnRzIG9udG8gbm90RW1pdHRlZC5cbiAgICAgICAgICB0cy5zZXRTeW50aGV0aWNMZWFkaW5nQ29tbWVudHMobm90RW1pdHRlZCwgZmlsZUNvbW1lbnRzKTtcbiAgICAgICAgICBzb3VyY2VGaWxlID0gdXBkYXRlU291cmNlRmlsZU5vZGUoXG4gICAgICAgICAgICAgIHNvdXJjZUZpbGUsXG4gICAgICAgICAgICAgIHRzLmNyZWF0ZU5vZGVBcnJheShbbm90RW1pdHRlZCwgZmlyc3RTdGF0ZW1lbnQsIC4uLnNvdXJjZUZpbGUuc3RhdGVtZW50cy5zbGljZSgxKV0pKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG5cbiAgICAgICAgLy8gTm93IHdhbGsgZXZlcnkgdG9wIGxldmVsIHN0YXRlbWVudCBhbmQgZXNjYXBlL2Ryb3AgYW55IEBmaWxlb3ZlcnZpZXcgY29tbWVudHMgZm91bmQuXG4gICAgICAgIC8vIENsb3N1cmUgaWdub3JlcyBhbGwgQGZpbGVvdmVydmlldyBjb21tZW50cyBidXQgdGhlIGxhc3QsIHNvIHRzaWNrbGUgbXVzdCBtYWtlIHN1cmUgbm90IHRvXG4gICAgICAgIC8vIGVtaXQgZHVwbGljYXRlZCBvbmVzLlxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNvdXJjZUZpbGUuc3RhdGVtZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIGNvbnN0IHN0bXQgPSBzb3VyY2VGaWxlLnN0YXRlbWVudHNbaV07XG4gICAgICAgICAgLy8gQWNjZXB0IHRoZSBOb3RFbWl0dGVkU3RhdGVtZW50IGluc2VydGVkIGFib3ZlLlxuICAgICAgICAgIGlmIChpID09PSAwICYmIHN0bXQua2luZCA9PT0gdHMuU3ludGF4S2luZC5Ob3RFbWl0dGVkU3RhdGVtZW50KSBjb250aW51ZTtcbiAgICAgICAgICBjb25zdCBjb21tZW50cyA9IGpzZG9jLnN5bnRoZXNpemVMZWFkaW5nQ29tbWVudHMoc3RtdCk7XG4gICAgICAgICAgY2hlY2tOb0ZpbGVvdmVydmlld0NvbW1lbnRzKFxuICAgICAgICAgICAgICBzdG10LCBjb21tZW50cyxcbiAgICAgICAgICAgICAgYGZpbGUgY29tbWVudHMgbXVzdCBiZSBhdCB0aGUgdG9wIG9mIHRoZSBmaWxlLCBgICtcbiAgICAgICAgICAgICAgICAgIGBzZXBhcmF0ZWQgZnJvbSB0aGUgZmlsZSBib2R5IGJ5IGFuIGVtcHR5IGxpbmUuYCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gQ2xvc3VyZSBDb21waWxlciBjb25zaWRlcnMgdGhlICpsYXN0KiBjb21tZW50IHdpdGggQGZpbGVvdmVydmlldyAob3IgQGV4dGVybnMgb3JcbiAgICAgIC8vIEBub2NvbXBpbGUpIHRoYXQgaGFzIG5vdCBiZWVuIGF0dGFjaGVkIHRvIHNvbWUgb3RoZXIgdHJlZSBub2RlIHRvIGJlIHRoZSBmaWxlIG92ZXJ2aWV3XG4gICAgICAvLyBjb21tZW50LCBhbmQgb25seSBhcHBsaWVzIEBzdXBwcmVzcyB0YWdzIGZyb20gaXQuIEdvb2dsZS1pbnRlcm5hbCB0b29saW5nIGNvbnNpZGVycyAqYW55KlxuICAgICAgLy8gY29tbWVudCBtZW50aW9uaW5nIEBmaWxlb3ZlcnZpZXcuXG4gICAgICBsZXQgZmlsZW92ZXJ2aWV3SWR4ID0gLTE7XG4gICAgICBsZXQgdGFnczoganNkb2MuVGFnW10gPSBbXTtcbiAgICAgIGZvciAobGV0IGkgPSBmaWxlQ29tbWVudHMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgY29uc3QgcGFyc2UgPSBqc2RvYy5wYXJzZUNvbnRlbnRzKGZpbGVDb21tZW50c1tpXS50ZXh0KTtcbiAgICAgICAgaWYgKHBhcnNlICE9PSBudWxsICYmIHBhcnNlLnRhZ3Muc29tZSh0ID0+IEZJTEVPVkVSVklFV19DT01NRU5UX01BUktFUlMuaGFzKHQudGFnTmFtZSkpKSB7XG4gICAgICAgICAgZmlsZW92ZXJ2aWV3SWR4ID0gaTtcbiAgICAgICAgICB0YWdzID0gcGFyc2UudGFncztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoZmlsZW92ZXJ2aWV3SWR4ICE9PSAtMSkge1xuICAgICAgICBjaGVja05vRmlsZW92ZXJ2aWV3Q29tbWVudHMoXG4gICAgICAgICAgICBmaXJzdFN0YXRlbWVudCB8fCBzb3VyY2VGaWxlLCBmaWxlQ29tbWVudHMuc2xpY2UoMCwgZmlsZW92ZXJ2aWV3SWR4KSxcbiAgICAgICAgICAgIGBkdXBsaWNhdGUgZmlsZSBsZXZlbCBjb21tZW50YCk7XG4gICAgICB9XG5cbiAgICAgIGF1Z21lbnRGaWxlb3ZlcnZpZXdDb21tZW50cyh0YWdzKTtcbiAgICAgIGNvbnN0IGNvbW1lbnRUZXh0ID0ganNkb2MudG9TdHJpbmdXaXRob3V0U3RhcnRFbmQodGFncyk7XG5cbiAgICAgIGlmIChmaWxlb3ZlcnZpZXdJZHggPCAwKSB7XG4gICAgICAgIC8vIE5vIGV4aXN0aW5nIGNvbW1lbnQgdG8gbWVyZ2Ugd2l0aCwganVzdCBlbWl0IGEgbmV3IG9uZS5cbiAgICAgICAgcmV0dXJuIGFkZE5ld0ZpbGVvdmVydmlld0NvbW1lbnQoc291cmNlRmlsZSwgY29tbWVudFRleHQpO1xuICAgICAgfVxuXG4gICAgICBmaWxlQ29tbWVudHNbZmlsZW92ZXJ2aWV3SWR4XS50ZXh0ID0gY29tbWVudFRleHQ7XG4gICAgICAvLyBzZiBkb2VzIG5vdCBuZWVkIHRvIGJlIHVwZGF0ZWQsIHN5bnRoZXNpemVkIGNvbW1lbnRzIGFyZSBtdXRhYmxlLlxuICAgICAgcmV0dXJuIHNvdXJjZUZpbGU7XG4gICAgfTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gYWRkTmV3RmlsZW92ZXJ2aWV3Q29tbWVudChzZjogdHMuU291cmNlRmlsZSwgY29tbWVudFRleHQ6IHN0cmluZyk6IHRzLlNvdXJjZUZpbGUge1xuICBsZXQgc3ludGhldGljRmlyc3RTdGF0ZW1lbnQgPSBjcmVhdGVOb3RFbWl0dGVkU3RhdGVtZW50KHNmKTtcbiAgc3ludGhldGljRmlyc3RTdGF0ZW1lbnQgPSB0cy5hZGRTeW50aGV0aWNUcmFpbGluZ0NvbW1lbnQoXG4gICAgICBzeW50aGV0aWNGaXJzdFN0YXRlbWVudCwgdHMuU3ludGF4S2luZC5NdWx0aUxpbmVDb21tZW50VHJpdmlhLCBjb21tZW50VGV4dCwgdHJ1ZSk7XG4gIHJldHVybiB1cGRhdGVTb3VyY2VGaWxlTm9kZShzZiwgdHMuY3JlYXRlTm9kZUFycmF5KFtzeW50aGV0aWNGaXJzdFN0YXRlbWVudCwgLi4uc2Yuc3RhdGVtZW50c10pKTtcbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZW92ZXJ2aWV3X2NvbW1lbnRfdHJhbnNmb3JtZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZmlsZW92ZXJ2aWV3X2NvbW1lbnRfdHJhbnNmb3JtZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFFSCwrQkFBaUM7SUFFakMseUNBQWlDO0lBQ2pDLGlFQUE4SDtJQUU5SDs7O09BR0c7SUFDSCxJQUFNLDRCQUE0QixHQUM5QixJQUFJLEdBQUcsQ0FBQyxDQUFDLGNBQWMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDO0lBRTNFOzs7OztPQUtHO0lBQ0gsU0FBUywyQkFBMkIsQ0FBQyxJQUFpQjtRQUNwRCx3Q0FBd0M7UUFDeEMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBQSxDQUFDLElBQUksT0FBQSxDQUFDLENBQUMsT0FBTyxLQUFLLGNBQWMsRUFBNUIsQ0FBNEIsQ0FBQyxFQUFFO1lBQ2pELElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFDLE9BQU8sRUFBRSxjQUFjLEVBQUUsSUFBSSxFQUFFLGtCQUFrQixFQUFDLENBQUMsQ0FBQztTQUN4RTtRQUVELGtDQUFrQztRQUNsQywwRkFBMEY7UUFDMUYsa0NBQWtDO1FBQ2xDLElBQUksV0FBVyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBQSxDQUFDLElBQUksT0FBQSxDQUFDLENBQUMsT0FBTyxLQUFLLFVBQVUsRUFBeEIsQ0FBd0IsQ0FBQyxDQUFDO1FBQzNELElBQUksWUFBeUIsQ0FBQztRQUM5QixJQUFJLFdBQVcsRUFBRTtZQUNmLFlBQVksR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUMs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Q0FBQyxFQUFFLGVBQWUsQ0FBQyxFQUNwRSw4QkFBOEIsQ0FBQyxDQUFDO2lCQUNyQztnQkFFRCwyQkFBMkIsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDbEMsSUFBTSxXQUFXLEdBQUcsS0FBSyxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUV4RCxJQUFJLGVBQWUsR0FBRyxDQUFDLEVBQUU7b0JBQ3ZCLDBEQUEwRDtvQkFDMUQsT0FBTyx5QkFBeUIsQ0FBQyxVQUFVLEVBQUUsV0FBVyxDQUFDLENBQUM7aUJBQzNEO2dCQUVELFlBQVksQ0FBQyxlQUFlLENBQUMsQ0FBQyxJQUFJLEdBQUcsV0FBVyxDQUFDO2dCQUNqRCxvRUFBb0U7Z0JBQ3BFLE9BQU8sVUFBVSxDQUFDO1lBQ3BCLENBQUMsQ0FBQztRQUNKLENBQUMsQ0FBQztJQUNKLENBQUM7SUFwR0Qsa0ZBb0dDO0lBRUQsU0FBUyx5QkFBeUIsQ0FBQyxFQUFpQixFQUFFLFdBQW1CO1FBQ3ZFLElBQUksdUJBQXVCLEdBQUcsNENBQXlCLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDNUQsdUJBQXVCLEdBQUcsRUFBRSxDQUFDLDJCQUEyQixDQUNwRCx1QkFBdUIsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLHNCQUFzQixFQUFFLFdBQVcsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUN0RixPQUFPLHVDQUFvQixDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsZUFBZSxXQUFFLHVCQUF1QixHQUFLLEVBQUUsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO0lBQ25HLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCAqIGFzIHRzIGZyb20gJ3R5cGVzY3JpcHQnO1xuXG5pbXBvcnQgKiBhcyBqc2RvYyBmcm9tICcuL2pzZG9jJztcbmltcG9ydCB7Y3JlYXRlTm90RW1pdHRlZFN0YXRlbWVudCwgcmVwb3J0RGlhZ25vc3RpYywgc3ludGhlc2l6ZUNvbW1lbnRSYW5nZXMsIHVwZGF0ZVNvdXJjZUZpbGVOb2RlfSBmcm9tICcuL3RyYW5zZm9ybWVyX3V0aWwnO1xuXG4vKipcbiAqIEEgc2V0IG9mIEpTRG9jIHRhZ3MgdGhhdCBtYXJrIGEgY29tbWVudCBhcyBhIGZpbGVvdmVydmlldyBjb21tZW50LiBUaGVzZSBhcmUgcmVjb2duaXplZCBieSBvdGhlclxuICogcGllY2VzIG9mIGluZnJhc3RydWN0dXJlIChDbG9zdXJlIENvbXBpbGVyLCBtb2R1bGUgc3lzdGVtLCAuLi4pLlxuICovXG5jb25zdCBGSUxFT1ZFUlZJRVdfQ09NTUVOVF9NQVJLRVJTOiBSZWFkb25seVNldDxzdHJpbmc+ID1cbiAgICBuZXcgU2V0KFsnZmlsZW92ZXJ2aWV3JywgJ2V4dGVybnMnLCAnbW9kTmFtZScsICdtb2RzJywgJ3BpbnRvbW9kdWxlJ10pO1xuXG4vKipcbiAqIEdpdmVuIGEgcGFyc2VkIFxcQGZpbGVvdmVydmlldyBjb21tZW50LCBlbnN1cmVzIGl0IGhhcyBhbGwgdGhlIGF0dHJpYnV0ZXMgd2UgbmVlZC5cbiAqIFRoaXMgZnVuY3Rpb24gY2FuIGJlIGNhbGxlZCB0byBtb2RpZnkgYW4gZXhpc3RpbmcgY29tbWVudCBvciB0byBtYWtlIGEgbmV3IG9uZS5cbiAqXG4gKiBAcGFyYW0gdGFncyBDb21tZW50IGFzIHBhcnNlZCBsaXN0IG9mIHRhZ3M7IG1vZGlmaWVkIGluLXBsYWNlLlxuICovXG5mdW5jdGlvbiBhdWdtZW50RmlsZW92ZXJ2aWV3Q29tbWVudHModGFnczoganNkb2MuVGFnW10pIHtcbiAgLy8gRW5zdXJlIHdlIHN0YXJ0IHdpdGggYSBAZmlsZW92ZXJ2aWV3LlxuICBpZiAoIXRhZ3MuZmluZCh0ID0+IHQudGFnTmFtZSA9PT0gJ2ZpbGVvdmVydmlldycpKSB7XG4gICAgdGFncy5zcGxpY2UoMCwgMCwge3RhZ05hbWU6ICdmaWxlb3ZlcnZpZXcnLCB0ZXh0OiAnYWRkZWQgYnkgdHNpY2tsZSd9KTtcbiAgfVxuXG4gIC8vIEZpbmQgb3IgY3JlYXRlIGEgQHN1cHByZXNzIHRhZy5cbiAgLy8gQ2xvc3VyZSBjb21waWxlciBiYXJmcyBpZiB0aGVyZSdzIGEgZHVwbGljYXRlZCBAc3VwcHJlc3MgdGFnIGluIGEgZmlsZSwgc28gdGhlIHRhZyBtdXN0XG4gIC8vIG9ubHkgYXBwZWFyIG9uY2UgYW5kIGJlIG1lcmdlZC5cbiAgbGV0IHN1cHByZXNzVGFnID0gdGFncy5maW5kKHQgPT4gdC50YWdOYW1lID09PSAnc3VwcHJlc3MnKTtcbiAgbGV0IHN1cHByZXNzaW9uczogU2V0PHN0cmluZz47XG4gIGlmIChzdXBwcmVzc1RhZykge1xuICAgIHN1cHByZXNzaW9ucyA9IG5ldyBTZXQoKHN1cHByZXNzVGFnLnR5cGUgfHwgJycpLnNwbGl0KCcsJykubWFwKHMgPT4gcy50cmltKCkpKTtcbiAgfSBlbHNlIHtcbiAgICBzdXBwcmVzc1RhZyA9IHt0YWdOYW1lOiAnc3VwcHJlc3MnLCB0ZXh0OiAnY2hlY2tlZCBieSB0c2MnfTtcbiAgICB0YWdzLnB1c2goc3VwcHJlc3NUYWcpO1xuICAgIHN1cHByZXNzaW9ucyA9IG5ldyBTZXQoKTtcbiAgfVxuXG4gIC8vIEVuc3VyZSBvdXIgc3VwcHJlc3Npb25zIGFyZSBpbmNsdWRlZCBpbiB0aGUgQHN1cHByZXNzIHRhZzpcbiAgLy8gMSkgU3VwcHJlc3MgY2hlY2tUeXBlcy4gIFdlIGJlbGlldmUgdGhlIGNvZGUgaGFzIGFscmVhZHkgYmVlbiB0eXBlLWNoZWNrZWQgYnkgVHlwZVNjcmlwdCxcbiAgLy8gYW5kIHdlIGNhbm5vdCBtb2RlbCBhbGwgdGhlIFR5cGVTY3JpcHQgdHlwZSBkZWNpc2lvbnMgaW4gQ2xvc3VyZSBzeW50YXguXG4gIHN1cHByZXNzaW9ucy5hZGQoJ2NoZWNrVHlwZXMnKTtcbiAgLy8gMikgU3VwcHJlc3MgZXh0cmFSZXF1aXJlLiAgV2UgcmVtb3ZlIGV4dHJhIHJlcXVpcmVzIGF0IHRoZSBUeXBlU2NyaXB0IGxldmVsLCBzbyBhbnkgcmVxdWlyZVxuICAvLyB0aGF0IGdldHMgdG8gdGhlIEpTIGxldmVsIGlzIGEgbG9hZC1iZWFyaW5nIHJlcXVpcmUuXG4gIHN1cHByZXNzaW9ucy5hZGQoJ2V4dHJhUmVxdWlyZScpO1xuICAvLyAzKSBTdXBwcmVzcyB1c2VsZXNzQ29kZS4gIFdlIGVtaXQgYW4gXCJpZiAoZmFsc2UpXCIgYXJvdW5kIHR5cGUgZGVjbGFyYXRpb25zLFxuICAvLyB3aGljaCBpcyBmbGFnZ2VkIGFzIHVudXNlZCBjb2RlIHVubGVzcyB3ZSBzdXBwcmVzcyBpdC5cbiAgc3VwcHJlc3Npb25zLmFkZCgndXNlbGVzc0NvZGUnKTtcbiAgLy8gNCkgU3VwcHJlc3Mgc29tZSBjaGVja3MgZm9yIHVzZXIgZXJyb3JzIHRoYXQgVFMgYWxyZWFkeSBjaGVja3MuXG4gIHN1cHByZXNzaW9ucy5hZGQoJ21pc3NpbmdSZXR1cm4nKTtcbiAgc3VwcHJlc3Npb25zLmFkZCgndW51c2VkUHJpdmF0ZU1lbWJlcnMnKTtcbiAgLy8gNSkgU3VwcHJlc3MgY2hlY2tpbmcgZm9yIEBvdmVycmlkZSwgYmVjYXVzZSBUUyBkb2Vzbid0IG1vZGVsIGl0LlxuICBzdXBwcmVzc2lvbnMuYWRkKCdtaXNzaW5nT3ZlcnJpZGUnKTtcbiAgc3VwcHJlc3NUYWcudHlwZSA9IEFycmF5LmZyb20oc3VwcHJlc3Npb25zLnZhbHVlcygpKS5zb3J0KCkuam9pbignLCcpO1xuXG4gIHJldHVybiB0YWdzO1xufVxuXG4vKipcbiAqIEEgdHJhbnNmb3JtZXIgdGhhdCBlbnN1cmVzIHRoZSBlbWl0dGVkIEpTIGZpbGUgaGFzIGFuIFxcQGZpbGVvdmVydmlldyBjb21tZW50IHRoYXQgY29udGFpbnMgYW5cbiAqIFxcQHN1cHByZXNzIHtjaGVja1R5cGVzfSBhbm5vdGF0aW9uIGJ5IGVpdGhlciBhZGRpbmcgb3IgdXBkYXRpbmcgYW4gZXhpc3RpbmcgY29tbWVudC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRyYW5zZm9ybUZpbGVvdmVydmlld0NvbW1lbnRGYWN0b3J5KGRpYWdub3N0aWNzOiB0cy5EaWFnbm9zdGljW10pIHtcbiAgcmV0dXJuICgpOiAoc291cmNlRmlsZTogdHMuU291cmNlRmlsZSkgPT4gdHMuU291cmNlRmlsZSA9PiB7XG4gICAgZnVuY3Rpb24gY2hlY2tOb0ZpbGVvdmVydmlld0NvbW1lbnRzKFxuICAgICAgICBjb250ZXh0OiB0cy5Ob2RlLCBjb21tZW50czoganNkb2MuU3ludGhlc2l6ZWRDb21tZW50V2l0aE9yaWdpbmFsW10sIG1lc3NhZ2U6IHN0cmluZykge1xuICAgICAgZm9yIChjb25zdCBjb21tZW50IG9mIGNvbW1lbnRzKSB7XG4gICAgICAgIGNvbnN0IHBhcnNlID0ganNkb2MucGFyc2UoY29tbWVudCk7XG4gICAgICAgIGlmIChwYXJzZSAhPT0gbnVsbCAmJiBwYXJzZS50YWdzLnNvbWUodCA9PiBGSUxFT1ZFUlZJRVdfQ09NTUVOVF9NQVJLRVJTLmhhcyh0LnRhZ05hbWUpKSkge1xuICAgICAgICAgIC8vIFJlcG9ydCBhIHdhcm5pbmc7IHRoaXMgc2hvdWxkIG5vdCBicmVhayBjb21waWxhdGlvbiBpbiB0aGlyZCBwYXJ0eSBjb2RlLlxuICAgICAgICAgIHJlcG9ydERpYWdub3N0aWMoXG4gICAgICAgICAgICAgIGRpYWdub3N0aWNzLCBjb250ZXh0LCBtZXNzYWdlLCBjb21tZW50Lm9yaWdpbmFsUmFuZ2UsIHRzLkRpYWdub3N0aWNDYXRlZ29yeS5XYXJuaW5nKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiAoc291cmNlRmlsZTogdHMuU291cmNlRmlsZSkgPT4ge1xuICAgICAgY29uc3QgdGV4dCA9IHNvdXJjZUZpbGUuZ2V0RnVsbFRleHQoKTtcblxuICAgICAgbGV0IGZpbGVDb21tZW50czogdHMuU3ludGhlc2l6ZWRDb21tZW50W10gPSBbXTtcbiAgICAgIGNvbnN0IGZpcnN0U3RhdGVtZW50ID0gc291cmNlRmlsZS5zdGF0ZW1lbnRzLmxlbmd0aCAmJiBzb3VyY2VGaWxlLnN0YXRlbWVudHNbMF0gfHwgbnVsbDtcblxuICAgICAgY29uc3Qgb3JpZ2luYWxDb21tZW50cyA9IHRzLmdldExlYWRpbmdDb21tZW50UmFuZ2VzKHRleHQsIDApIHx8IFtdO1xuICAgICAgaWYgKCFmaXJzdFN0YXRlbWVudCkge1xuICAgICAgICAvLyBJbiBhbiBlbXB0eSBzb3VyY2UgZmlsZSwgYWxsIGNvbW1lbnRzIGFyZSBmaWxlLWxldmVsIGNvbW1lbnRzLlxuICAgICAgICBmaWxlQ29tbWVudHMgPSBzeW50aGVzaXplQ29tbWVudFJhbmdlcyhzb3VyY2VGaWxlLCBvcmlnaW5hbENvbW1lbnRzKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIFNlYXJjaCBmb3IgdGhlIGxhc3QgY29tbWVudCBzcGxpdCBmcm9tIHRoZSBmaWxlIHdpdGggYSBcXG5cXG4uIEFsbCBjb21tZW50cyBiZWZvcmUgdGhhdCBhcmVcbiAgICAgICAgLy8gY29uc2lkZXJlZCBmaWxlb3ZlcnZpZXcgY29tbWVudHMsIGFsbCBjb21tZW50cyBhZnRlciB0aGF0IGJlbG9uZyB0byB0aGUgbmV4dFxuICAgICAgICAvLyBzdGF0ZW1lbnQocykuIElmIG5vbmUgZm91bmQsIGNvbW1lbnRzIHJlbWFpbnMgZW1wdHksIGFuZCB0aGUgY29kZSBiZWxvdyB3aWxsIGluc2VydCBhIG5ld1xuICAgICAgICAvLyBmaWxlb3ZlcnZpZXcgY29tbWVudC5cbiAgICAgICAgZm9yIChsZXQgaSA9IG9yaWdpbmFsQ29tbWVudHMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgICBjb25zdCBlbmQgPSBvcmlnaW5hbENvbW1lbnRzW2ldLmVuZDtcbiAgICAgICAgICBpZiAoIXRleHQuc3Vic3RyaW5nKGVuZCkuc3RhcnRzV2l0aCgnXFxuXFxuJykgJiZcbiAgICAgICAgICAgICAgIXRleHQuc3Vic3RyaW5nKGVuZCkuc3RhcnRzV2l0aCgnXFxyXFxuXFxyXFxuJykpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICAvLyBUaGlzIGNvbW1lbnQgaXMgc2VwYXJhdGVkIGZyb20gdGhlIHNvdXJjZSBmaWxlIHdpdGggYSBkb3VibGUgYnJlYWssIG1hcmtpbmcgaXQgKGFuZCBhbnlcbiAgICAgICAgICAvLyBwcmVjZWRpbmcgY29tbWVudHMpIGFzIGEgZmlsZS1sZXZlbCBjb21tZW50LiBTcGxpdCB0aGVtIG9mZiBhbmQgYXR0YWNoIHRoZW0gb250byBhXG4gICAgICAgICAgLy8gTm90RW1pdHRlZFN0YXRlbWVudCwgc28gdGhhdCB0aGV5IGRvIG5vdCBnZXQgbG9zdCBsYXRlciBvbi5cbiAgICAgICAgICBjb25zdCBzeW50aGVzaXplZENvbW1lbnRzID0ganNkb2Muc3ludGhlc2l6ZUxlYWRpbmdDb21tZW50cyhmaXJzdFN0YXRlbWVudCk7XG4gICAgICAgICAgY29uc3Qgbm90RW1pdHRlZCA9IHRzLmNyZWF0ZU5vdEVtaXR0ZWRTdGF0ZW1lbnQoc291cmNlRmlsZSk7XG4gICAgICAgICAgLy8gTW9kaWZ5IHRoZSBjb21tZW50cyBvbiB0aGUgZmlyc3RTdGF0ZW1lbnQgaW4gcGxhY2UgYnkgcmVtb3ZpbmcgdGhlIGZpbGUtbGV2ZWwgY29tbWVudHMuXG4gICAgICAgICAgZmlsZUNvbW1lbnRzID0gc3ludGhlc2l6ZWRDb21tZW50cy5zcGxpY2UoMCwgaSArIDEpO1xuICAgICAgICAgIC8vIE1vdmUgdGhlIGZpbGVDb21tZW50cyBvbnRvIG5vdEVtaXR0ZWQuXG4gICAgICAgICAgdHMuc2V0U3ludGhldGljTGVhZGluZ0NvbW1lbnRzKG5vdEVtaXR0ZWQsIGZpbGVDb21tZW50cyk7XG4gICAgICAgICAgc291cmNlRmlsZSA9IHVwZGF0ZVNvdXJjZUZpbGVOb2RlKFxuICAgICAgICAgICAgICBzb3VyY2VGaWxlLFxuICAgICAgICAgICAgICB0cy5jcmVhdGVOb2RlQXJyYXkoW25vdEVtaXR0ZWQsIGZpcnN0U3RhdGVtZW50LCAuLi5zb3VyY2VGaWxlLnN0YXRlbWVudHMuc2xpY2UoMSldKSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuXG4gICAgICAgIC8vIE5vdyB3YWxrIGV2ZXJ5IHRvcCBsZXZlbCBzdGF0ZW1lbnQgYW5kIGVzY2FwZS9kcm9wIGFueSBAZmlsZW92ZXJ2aWV3IGNvbW1lbnRzIGZvdW5kLlxuICAgICAgICAvLyBDbG9zdXJlIGlnbm9yZXMgYWxsIEBmaWxlb3ZlcnZpZXcgY29tbWVudHMgYnV0IHRoZSBsYXN0LCBzbyB0c2lja2xlIG11c3QgbWFrZSBzdXJlIG5vdCB0b1xuICAgICAgICAvLyBlbWl0IGR1cGxpY2F0ZWQgb25lcy5cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzb3VyY2VGaWxlLnN0YXRlbWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICBjb25zdCBzdG10ID0gc291cmNlRmlsZS5zdGF0ZW1lbnRzW2ldO1xuICAgICAgICAgIC8vIEFjY2VwdCB0aGUgTm90RW1pdHRlZFN0YXRlbWVudCBpbnNlcnRlZCBhYm92ZS5cbiAgICAgICAgICBpZiAoaSA9PT0gMCAmJiBzdG10LmtpbmQgPT09IHRzLlN5bnRheEtpbmQuTm90RW1pdHRlZFN0YXRlbWVudCkgY29udGludWU7XG4gICAgICAgICAgY29uc3QgY29tbWVudHMgPSBqc2RvYy5zeW50aGVzaXplTGVhZGluZ0NvbW1lbnRzKHN0bXQpO1xuICAgICAgICAgIGNoZWNrTm9GaWxlb3ZlcnZpZXdDb21tZW50cyhcbiAgICAgICAgICAgICAgc3RtdCwgY29tbWVudHMsXG4gICAgICAgICAgICAgIGBmaWxlIGNvbW1lbnRzIG11c3QgYmUgYXQgdGhlIHRvcCBvZiB0aGUgZmlsZSwgYCArXG4gICAgICAgICAgICAgICAgICBgc2VwYXJhdGVkIGZyb20gdGhlIGZpbGUgYm9keSBieSBhbiBlbXB0eSBsaW5lLmApO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIENsb3N1cmUgQ29tcGlsZXIgY29uc2lkZXJzIHRoZSAqbGFzdCogY29tbWVudCB3aXRoIEBmaWxlb3ZlcnZpZXcgKG9yIEBleHRlcm5zIG9yXG4gICAgICAvLyBAbm9jb21waWxlKSB0aGF0IGhhcyBub3QgYmVlbiBhdHRhY2hlZCB0byBzb21lIG90aGVyIHRyZWUgbm9kZSB0byBiZSB0aGUgZmlsZSBvdmVydmlld1xuICAgICAgLy8gY29tbWVudCwgYW5kIG9ubHkgYXBwbGllcyBAc3VwcHJlc3MgdGFncyBmcm9tIGl0LiBHb29nbGUtaW50ZXJuYWwgdG9vbGluZyBjb25zaWRlcnMgKmFueSpcbiAgICAgIC8vIGNvbW1lbnQgbWVudGlvbmluZyBAZmlsZW92ZXJ2aWV3LlxuICAgICAgbGV0IGZpbGVvdmVydmlld0lkeCA9IC0xO1xuICAgICAgbGV0IHRhZ3M6IGpzZG9jLlRhZ1tdID0gW107XG4gICAgICBmb3IgKGxldCBpID0gZmlsZUNvbW1lbnRzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgIGNvbnN0IHBhcnNlID0ganNkb2MucGFyc2VDb250ZW50cyhmaWxlQ29tbWVudHNbaV0udGV4dCk7XG4gICAgICAgIGlmIChwYXJzZSAhPT0gbnVsbCAmJiBwYXJzZS50YWdzLnNvbWUodCA9PiBGSUxFT1ZFUlZJRVdfQ09NTUVOVF9NQVJLRVJTLmhhcyh0LnRhZ05hbWUpKSkge1xuICAgICAgICAgIGZpbGVvdmVydmlld0lkeCA9IGk7XG4gICAgICAgICAgdGFncyA9IHBhcnNlLnRhZ3M7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGZpbGVvdmVydmlld0lkeCAhPT0gLTEpIHtcbiAgICAgICAgY2hlY2tOb0ZpbGVvdmVydmlld0NvbW1lbnRzKFxuICAgICAgICAgICAgZmlyc3RTdGF0ZW1lbnQgfHwgc291cmNlRmlsZSwgZmlsZUNvbW1lbnRzLnNsaWNlKDAsIGZpbGVvdmVydmlld0lkeCksXG4gICAgICAgICAgICBgZHVwbGljYXRlIGZpbGUgbGV2ZWwgY29tbWVudGApO1xuICAgICAgfVxuXG4gICAgICBhdWdtZW50RmlsZW92ZXJ2aWV3Q29tbWVudHModGFncyk7XG4gICAgICBjb25zdCBjb21tZW50VGV4dCA9IGpzZG9jLnRvU3RyaW5nV2l0aG91dFN0YXJ0RW5kKHRhZ3MpO1xuXG4gICAgICBpZiAoZmlsZW92ZXJ2aWV3SWR4IDwgMCkge1xuICAgICAgICAvLyBObyBleGlzdGluZyBjb21tZW50IHRvIG1lcmdlIHdpdGgsIGp1c3QgZW1pdCBhIG5ldyBvbmUuXG4gICAgICAgIHJldHVybiBhZGROZXdGaWxlb3ZlcnZpZXdDb21tZW50KHNvdXJjZUZpbGUsIGNvbW1lbnRUZXh0KTtcbiAgICAgIH1cblxuICAgICAgZmlsZUNvbW1lbnRzW2ZpbGVvdmVydmlld0lkeF0udGV4dCA9IGNvbW1lbnRUZXh0O1xuICAgICAgLy8gc2YgZG9lcyBub3QgbmVlZCB0byBiZSB1cGRhdGVkLCBzeW50aGVzaXplZCBjb21tZW50cyBhcmUgbXV0YWJsZS5cbiAgICAgIHJldHVybiBzb3VyY2VGaWxlO1xuICAgIH07XG4gIH07XG59XG5cbmZ1bmN0aW9uIGFkZE5ld0ZpbGVvdmVydmlld0NvbW1lbnQoc2Y6IHRzLlNvdXJjZUZpbGUsIGNvbW1lbnRUZXh0OiBzdHJpbmcpOiB0cy5Tb3VyY2VGaWxlIHtcbiAgbGV0IHN5bnRoZXRpY0ZpcnN0U3RhdGVtZW50ID0gY3JlYXRlTm90RW1pdHRlZFN0YXRlbWVudChzZik7XG4gIHN5bnRoZXRpY0ZpcnN0U3RhdGVtZW50ID0gdHMuYWRkU3ludGhldGljVHJhaWxpbmdDb21tZW50KFxuICAgICAgc3ludGhldGljRmlyc3RTdGF0ZW1lbnQsIHRzLlN5bnRheEtpbmQuTXVsdGlMaW5lQ29tbWVudFRyaXZpYSwgY29tbWVudFRleHQsIHRydWUpO1xuICByZXR1cm4gdXBkYXRlU291cmNlRmlsZU5vZGUoc2YsIHRzLmNyZWF0ZU5vZGVBcnJheShbc3ludGhldGljRmlyc3RTdGF0ZW1lbnQsIC4uLnNmLnN0YXRlbWVudHNdKSk7XG59XG4iXX0=

@@ -15,2 +15,4 @@ #!/usr/bin/env node

verbose?: boolean;
/** If true, warnings cause a non-zero exit code. */
fatalWarnings?: boolean;
}

@@ -17,0 +19,0 @@ /**

@@ -32,3 +32,3 @@ #!/usr/bin/env node

function usage() {
console.error("usage: tsickle [tsickle options] -- [tsc options]\n\nexample:\n tsickle --externs=foo/externs.js -- -p src --noImplicitAny\n\ntsickle flags are:\n --externs=PATH save generated Closure externs.js to PATH\n --typed [experimental] attempt to provide Closure types instead of {?}\n --enableAutoQuoting automatically apply quotes to property accesses\n");
console.error("usage: tsickle [tsickle options] -- [tsc options]\n\nexample:\n tsickle --externs=foo/externs.js -- -p src --noImplicitAny\n\ntsickle flags are:\n --externs=PATH save generated Closure externs.js to PATH\n --typed [experimental] attempt to provide Closure types instead of {?}\n --enableAutoQuoting automatically apply quotes to property accesses\n --fatalWarnings whether warnings should be fatal, and cause tsickle to return a non-zero exit code\n");
}

@@ -64,2 +64,5 @@ /**

break;
case 'fatalWarnings':
settings.fatalWarnings = true;
break;
case '_':

@@ -154,3 +157,3 @@ // This is part of the minimist API, and holds args after the '--'.

},
shouldIgnoreWarningsForPath: function (fileName) { return false; },
shouldIgnoreWarningsForPath: function (fileName) { return !settings.fatalWarnings; },
pathToModuleName: function (context, fileName) {

@@ -218,2 +221,2 @@ return cliSupport.pathToModuleName(rootModulePath, context, fileName);

});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9tYWluLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFVQSx1QkFBeUI7SUFDekIsbUNBQXFDO0lBQ3JDLCtCQUFpQztJQUNqQywyQkFBNkI7SUFDN0IsK0JBQWlDO0lBRWpDLG9EQUE0QztJQUM1Qyw2Q0FBcUM7SUFDckMsK0NBQTBDO0lBaUIxQyxTQUFTLEtBQUs7UUFDWixPQUFPLENBQUMsS0FBSyxDQUFDLHlYQVNmLENBQUMsQ0FBQztJQUNILENBQUM7SUFFRDs7O09BR0c7SUFDSCxTQUFTLG9CQUFvQixDQUFDLElBQWM7O1FBQzFDLElBQU0sUUFBUSxHQUFhLEVBQUUsQ0FBQztRQUM5QixJQUFNLFVBQVUsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7O1lBQ2xDLEtBQW1CLElBQUEsS0FBQSxTQUFBLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUEsZ0JBQUEsNEJBQUU7Z0JBQXZDLElBQU0sSUFBSSxXQUFBO2dCQUNiLFFBQVEsSUFBSSxFQUFFO29CQUNaLEtBQUssR0FBRyxDQUFDO29CQUNULEtBQUssTUFBTTt3QkFDVCxLQUFLLEVBQUUsQ0FBQzt3QkFDUixPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO3dCQUNoQixNQUFNO29CQUNSLEtBQUssU0FBUzt3QkFDWixRQUFRLENBQUMsV0FBVyxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQzt3QkFDeEMsTUFBTTtvQkFDUixLQUFLLE9BQU87d0JBQ1YsUUFBUSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7d0JBQ3hCLE1BQU07b0JBQ1IsS0FBSyxTQUFTO3dCQUNaLFFBQVEsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO3dCQUN4QixNQUFNO29CQUNSLEtBQUssbUJBQW1CO3dCQUN0QixRQUFRLENBQUMsaUJBQWlCLEdBQUcs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LENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztZQUNoRCxFQUFFLENBQUMsYUFBYSxDQUNaLFFBQVEsQ0FBQyxXQUFXLEVBQ3BCLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7U0FDaEY7UUFDRCxPQUFPLENBQUMsQ0FBQztJQUNYLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsSUFBSSxPQUFPLENBQUMsSUFBSSxLQUFLLE1BQU0sRUFBRTtRQUMzQixPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7S0FDNUMiLCJzb3VyY2VzQ29udGVudCI6WyIjIS91c3IvYmluL2VudiBub2RlXG5cbi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMnO1xuaW1wb3J0ICogYXMgbWluaW1pc3QgZnJvbSAnbWluaW1pc3QnO1xuaW1wb3J0ICogYXMgbWtkaXJwIGZyb20gJ21rZGlycCc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0ICogYXMgdHMgZnJvbSAndHlwZXNjcmlwdCc7XG5cbmltcG9ydCAqIGFzIGNsaVN1cHBvcnQgZnJvbSAnLi9jbGlfc3VwcG9ydCc7XG5pbXBvcnQgKiBhcyB0c2lja2xlIGZyb20gJy4vdHNpY2tsZSc7XG5pbXBvcnQge01vZHVsZXNNYW5pZmVzdH0gZnJvbSAnLi90c2lja2xlJztcblxuLyoqIFRzaWNrbGUgc2V0dGluZ3MgcGFzc2VkIG9uIHRoZSBjb21tYW5kIGxpbmUuICovXG5leHBvcnQgaW50ZXJmYWNlIFNldHRpbmdzIHtcbiAgLyoqIElmIHByb3ZpZGVkLCBtb2RpZnkgcXVvdGluZyBvZiBwcm9wZXJ0eSBhY2Nlc3NlcyB0byBtYXRjaCB0aGUgdHlwZSBkZWNsYXJhdGlvbi4gKi9cbiAgZW5hYmxlQXV0b1F1b3Rpbmc/OiBib29sZWFuO1xuXG4gIC8qKiBJZiBwcm92aWRlZCwgcGF0aCB0byBzYXZlIGV4dGVybnMgdG8uICovXG4gIGV4dGVybnNQYXRoPzogc3RyaW5nO1xuXG4gIC8qKiBJZiBwcm92aWRlZCwgYXR0ZW1wdCB0byBwcm92aWRlIHR5cGVzIHJhdGhlciB0aGFuIHs/fS4gKi9cbiAgaXNUeXBlZD86IGJvb2xlYW47XG5cbiAgLyoqIElmIHRydWUsIGxvZyBpbnRlcm5hbCBkZWJ1ZyB3YXJuaW5ncyB0byB0aGUgY29uc29sZS4gKi9cbiAgdmVyYm9zZT86IGJvb2xlYW47XG59XG5cbmZ1bmN0aW9uIHVzYWdlKCkge1xuICBjb25zb2xlLmVycm9yKGB1c2FnZTogdHNpY2tsZSBbdHNpY2tsZSBvcHRpb25zXSAtLSBbdHNjIG9wdGlvbnNdXG5cbmV4YW1wbGU6XG4gIHRzaWNrbGUgLS1leHRlcm5zPWZvby9leHRlcm5zLmpzIC0tIC1wIHNyYyAtLW5vSW1wbGljaXRBbnlcblxudHNpY2tsZSBmbGFncyBhcmU6XG4gIC0tZXh0ZXJucz1QQVRIICAgICAgICBzYXZlIGdlbmVyYXRlZCBDbG9zdXJlIGV4dGVybnMuanMgdG8gUEFUSFxuICAtLXR5cGVkICAgICAgICAgICAgICAgW2V4cGVyaW1lbnRhbF0gYXR0ZW1wdCB0byBwcm92aWRlIENsb3N1cmUgdHlwZXMgaW5zdGVhZCBvZiB7P31cbiAgLS1lbmFibGVBdXRvUXVvdGluZyAgIGF1dG9tYXRpY2FsbHkgYXBwbHkgcXVvdGVzIHRvIHByb3BlcnR5IGFjY2Vzc2VzXG5gKTtcbn1cblxuLyoqXG4gKiBQYXJzZXMgdGhlIGNvbW1hbmQtbGluZSBhcmd1bWVudHMsIGV4dHJhY3RpbmcgdGhlIHRzaWNrbGUgc2V0dGluZ3MgYW5kXG4gKiB0aGUgYXJndW1lbnRzIHRvIHBhc3Mgb24gdG8gdHNjLlxuICovXG5mdW5jdGlvbiBsb2FkU2V0dGluZ3NGcm9tQXJncyhhcmdzOiBzdHJpbmdbXSk6IHtzZXR0aW5nczogU2V0dGluZ3MsIHRzY0FyZ3M6IHN0cmluZ1tdfSB7XG4gIGNvbnN0IHNldHRpbmdzOiBTZXR0aW5ncyA9IHt9O1xuICBjb25zdCBwYXJzZWRBcmdzID0gbWluaW1pc3QoYXJncyk7XG4gIGZvciAoY29uc3QgZmxhZyBvZiBPYmplY3Qua2V5cyhwYXJzZWRBcmdzKSkge1xuICAgIHN3aXRjaCAoZmxhZykge1xuICAgICAgY2FzZSAnaCc6XG4gICAgICBjYXNlICdoZWxwJzpcbiAgICAgICAgdXNhZ2UoKTtcbiAgICAgICAgcHJvY2Vzcy5leGl0KDApO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2V4dGVybnMnOlxuICAgICAgICBzZXR0aW5ncy5leHRlcm5zUGF0aCA9IHBhcnNlZEFyZ3NbZmxhZ107XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAndHlwZWQnOlxuICAgICAgICBzZXR0aW5ncy5pc1R5cGVkID0gdHJ1ZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICd2ZXJib3NlJzpcbiAgICAgICAgc2V0dGluZ3MudmVyYm9zZSA9IHRydWU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnZW5hYmxlQXV0b1F1b3RpbmcnOlxuICAgICAgICBzZXR0aW5ncy5lbmFibGVBdXRvUXVvdGluZyA9IHRydWU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnXyc6XG4gICAgICAgIC8vIFRoaXMgaXMgcGFydCBvZiB0aGUgbWluaW1pc3QgQVBJLCBhbmQgaG9sZHMgYXJncyBhZnRlciB0aGUgJy0tJy5cbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBjb25zb2xlLmVycm9yKGB1bmtub3duIGZsYWcgJy0tJHtmbGFnfSdgKTtcbiAgICAgICAgdXNhZ2UoKTtcbiAgICAgICAgcHJvY2Vzcy5leGl0KDEpO1xuICAgIH1cbiAgfVxuICAvLyBBcmd1bWVudHMgYWZ0ZXIgdGhlICctLScgYXJnIGFyZSBhcmd1bWVudHMgdG8gdHNjLlxuICBjb25zdCB0c2NBcmdzID0gcGFyc2VkQXJnc1snXyddO1xuICByZXR1cm4ge3NldHRpbmdzLCB0c2NBcmdzfTtcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmUgdGhlIGxvd2VzdC1sZXZlbCBjb21tb24gcGFyZW50IGRpcmVjdG9yeSBvZiB0aGUgZ2l2ZW4gbGlzdCBvZiBmaWxlcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldENvbW1vblBhcmVudERpcmVjdG9yeShmaWxlTmFtZXM6IHN0cmluZ1tdKTogc3RyaW5nIHtcbiAgY29uc3QgcGF0aFNwbGl0dGVyID0gL1tcXC9cXFxcXSsvO1xuICBjb25zdCBjb21tb25QYXJlbnQgPSBmaWxlTmFtZXNbMF0uc3BsaXQocGF0aFNwbGl0dGVyKTtcbiAgZm9yIChsZXQgaSA9IDE7IGkgPCBmaWxlTmFtZXMubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCB0aGlzUGF0aCA9IGZpbGVOYW1lc1tpXS5zcGxpdChwYXRoU3BsaXR0ZXIpO1xuICAgIGxldCBqID0gMDtcbiAgICB3aGlsZSAodGhpc1BhdGhbal0gPT09IGNvbW1vblBhcmVudFtqXSkge1xuICAgICAgaisrO1xuICAgIH1cbiAgICBjb21tb25QYXJlbnQubGVuZ3RoID0gajsgIC8vIFRydW5jYXRlIHdpdGhvdXQgY29weWluZyB0aGUgYXJyYXlcbiAgfVxuICBpZiAoY29tbW9uUGFyZW50Lmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiAnLyc7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGNvbW1vblBhcmVudC5qb2luKHBhdGguc2VwKTtcbiAgfVxufVxuXG4vKipcbiAqIExvYWRzIHRoZSB0c2NvbmZpZy5qc29uIGZyb20gYSBkaXJlY3RvcnkuXG4gKlxuICogVE9ETyhtYXJ0aW5wcm9ic3QpOiB1c2UgdHMuZmluZENvbmZpZ0ZpbGUgdG8gbWF0Y2ggdHNjIGJlaGF2aW91ci5cbiAqXG4gKiBAcGFyYW0gYXJncyB0c2MgY29tbWFuZC1saW5lIGFyZ3VtZW50cy5cbiAqL1xuZnVuY3Rpb24gbG9hZFRzY0NvbmZpZyhhcmdzOiBzdHJpbmdbXSk6XG4gICAge29wdGlvbnM6IHRzLkNvbXBpbGVyT3B0aW9ucywgZmlsZU5hbWVzOiBzdHJpbmdbXSwgZXJyb3JzOiB0cy5EaWFnbm9zdGljW119IHtcbiAgLy8gR2F0aGVyIHRzYyBvcHRpb25zL2lucHV0IGZpbGVzIGZyb20gY29tbWFuZCBsaW5lLlxuICBsZXQge29wdGlvbnMsIGZpbGVOYW1lcywgZXJyb3JzfSA9IHRzLnBhcnNlQ29tbWFuZExpbmUoYXJncyk7XG4gIGlmIChlcnJvcnMubGVuZ3RoID4gMCkge1xuICAgIHJldHVybiB7b3B0aW9uczoge30sIGZpbGVOYW1lczogW10sIGVycm9yc307XG4gIH1cblxuICAvLyBTdG9yZSBmaWxlIGFyZ3VtZW50c1xuICBjb25zdCB0c0ZpbGVBcmd1bWVudHMgPSBmaWxlTmFtZXM7XG5cbiAgLy8gUmVhZCBmdXJ0aGVyIHNldHRpbmdzIGZyb20gdHNjb25maWcuanNvbi5cbiAgY29uc3QgcHJvamVjdERpciA9IG9wdGlvbnMucHJvamVjdCB8fCAnLic7XG4gIGNvbnN0IGNvbmZpZ0ZpbGVOYW1lID0gcGF0aC5qb2luKHByb2plY3REaXIsICd0c2NvbmZpZy5qc29uJyk7XG4gIGNvbnN0IHtjb25maWc6IGpzb24sIGVycm9yfSA9XG4gICAgICB0cy5yZWFkQ29uZmlnRmlsZShjb25maWdGaWxlTmFtZSwgcGF0aCA9PiBmcy5yZWFkRmlsZVN5bmMocGF0aCwgJ3V0Zi04JykpO1xuICBpZiAoZXJyb3IpIHtcbiAgICByZXR1cm4ge29wdGlvbnM6IHt9LCBmaWxlTmFtZXM6IFtdLCBlcnJvcnM6IFtlcnJvcl19O1xuICB9XG4gICh7b3B0aW9ucywgZmlsZU5hbWVzLCBlcnJvcnN9ID1cbiAgICAgICB0cy5wYXJzZUpzb25Db25maWdGaWxlQ29udGVudChqc29uLCB0cy5zeXMsIHByb2plY3REaXIsIG9wdGlvbnMsIGNvbmZpZ0ZpbGVOYW1lKSk7XG4gIGlmIChlcnJvcnMubGVuZ3RoID4gMCkge1xuICAgIHJldHVybiB7b3B0aW9uczoge30sIGZpbGVOYW1lczogW10sIGVycm9yc307XG4gIH1cblxuICAvLyBpZiBmaWxlIGFyZ3VtZW50cyB3ZXJlIGdpdmVuIHRvIHRoZSB0eXBlc2NyaXB0IHRyYW5zcGlsZXIgdGhlbiB0cmFuc3BpbGUgb25seSB0aG9zZSBmaWxlc1xuICBmaWxlTmFtZXMgPSB0c0ZpbGVBcmd1bWVudHMubGVuZ3RoID4gMCA/IHRzRmlsZUFyZ3VtZW50cyA6IGZpbGVOYW1lcztcblxuICByZXR1cm4ge29wdGlvbnMsIGZpbGVOYW1lcywgZXJyb3JzOiBbXX07XG59XG5cbi8qKlxuICogQ29tcGlsZXMgVHlwZVNjcmlwdCBjb2RlIGludG8gQ2xvc3VyZS1jb21waWxlci1yZWFkeSBKUy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvQ2xvc3VyZUpTKFxuICAgIG9wdGlvbnM6IHRzLkNvbXBpbGVyT3B0aW9ucywgZmlsZU5hbWVzOiBzdHJpbmdbXSwgc2V0dGluZ3M6IFNldHRpbmdzLFxuICAgIHdyaXRlRmlsZT86IHRzLldyaXRlRmlsZUNhbGxiYWNrKTogdHNpY2tsZS5FbWl0UmVzdWx0IHtcbiAgLy8gVXNlIGFic29sdXRlIHBhdGhzIHRvIGRldGVybWluZSB3aGF0IGZpbGVzIHRvIHByb2Nlc3Mgc2luY2UgZmlsZXMgbWF5IGJlIGltcG9ydGVkIHVzaW5nXG4gIC8vIHJlbGF0aXZlIG9yIGFic29sdXRlIHBhdGhzXG4gIGNvbnN0IGFic29sdXRlRmlsZU5hbWVzID0gZmlsZU5hbWVzLm1hcChpID0+IHBhdGgucmVzb2x2ZShpKSk7XG5cbiAgY29uc3QgY29tcGlsZXJIb3N0ID0gdHMuY3JlYXRlQ29tcGlsZXJIb3N0KG9wdGlvbnMpO1xuICBjb25zdCBwcm9ncmFtID0gdHMuY3JlYXRlUHJvZ3JhbShhYnNvbHV0ZUZpbGVOYW1lcywgb3B0aW9ucywgY29tcGlsZXJIb3N0KTtcbiAgY29uc3QgZmlsZXNUb1Byb2Nlc3MgPSBuZXcgU2V0KGFic29sdXRlRmlsZU5hbWVzKTtcbiAgY29uc3Qgcm9vdE1vZHVsZVBhdGggPSBvcHRpb25zLnJvb3REaXIgfHwgZ2V0Q29tbW9uUGFyZW50RGlyZWN0b3J5KGFic29sdXRlRmlsZU5hbWVzKTtcbiAgY29uc3QgdHJhbnNmb3JtZXJIb3N0OiB0c2lja2xlLlRzaWNrbGVIb3N0ID0ge1xuICAgIHNob3VsZFNraXBUc2lja2xlUHJvY2Vzc2luZzogKGZpbGVOYW1lOiBzdHJpbmcpID0+IHtcbiAgICAgIHJldHVybiAhZmlsZXNUb1Byb2Nlc3MuaGFzKHBhdGgucmVzb2x2ZShmaWxlTmFtZSkpO1xuICAgIH0sXG4gICAgc2hvdWxkSWdub3JlV2FybmluZ3NGb3JQYXRoOiAoZmlsZU5hbWU6IHN0cmluZykgPT4gZmFsc2UsXG4gICAgcGF0aFRvTW9kdWxlTmFtZTogKGNvbnRleHQsIGZpbGVOYW1lKSA9PlxuICAgICAgICBjbGlTdXBwb3J0LnBhdGhUb01vZHVsZU5hbWUocm9vdE1vZHVsZVBhdGgsIGNvbnRleHQsIGZpbGVOYW1lKSxcbiAgICBmaWxlTmFtZVRvTW9kdWxlSWQ6IChmaWxlTmFtZSkgPT4gcGF0aC5yZWxhdGl2ZShyb290TW9kdWxlUGF0aCwgZmlsZU5hbWUpLFxuICAgIGVzNU1vZGU6IHRydWUsXG4gICAgZ29vZ21vZHVsZTogdHJ1ZSxcbiAgICB0cmFuc2Zvcm1EZWNvcmF0b3JzOiB0cnVlLFxuICAgIHRyYW5zZm9ybVR5cGVzVG9DbG9zdXJlOiB0cnVlLFxuICAgIHR5cGVCbGFja0xpc3RQYXRoczogbmV3IFNldCgpLFxuICAgIGVuYWJsZUF1dG9RdW90aW5nOiBzZXR0aW5ncy5lbmFibGVBdXRvUXVvdGluZyxcbiAgICB1bnR5cGVkOiBmYWxzZSxcbiAgICBsb2dXYXJuaW5nOiAod2FybmluZykgPT4gY29uc29sZS5lcnJvcih0cy5mb3JtYXREaWFnbm9zdGljcyhbd2FybmluZ10sIGNvbXBpbGVySG9zdCkpLFxuICAgIG9wdGlvbnMsXG4gICAgbW9kdWxlUmVzb2x1dGlvbkhvc3Q6IGNvbXBpbGVySG9zdCxcbiAgfTtcbiAgY29uc3QgZGlhZ25vc3RpY3MgPSB0cy5nZXRQcmVFbWl0RGlhZ25vc3RpY3MocHJvZ3JhbSk7XG4gIGlmIChkaWFnbm9zdGljcy5sZW5ndGggPiAwKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGRpYWdub3N0aWNzLFxuICAgICAgbW9kdWxlc01hbmlmZXN0OiBuZXcgTW9kdWxlc01hbmlmZXN0KCksXG4gICAgICBleHRlcm5zOiB7fSxcbiAgICAgIGVtaXRTa2lwcGVkOiB0cnVlLFxuICAgICAgZW1pdHRlZEZpbGVzOiBbXSxcbiAgICB9O1xuICB9XG4gIHJldHVybiB0c2lja2xlLmVtaXRXaXRoVHNpY2tsZShcbiAgICAgIHByb2dyYW0sIHRyYW5zZm9ybWVySG9zdCwgY29tcGlsZXJIb3N0LCBvcHRpb25zLCB1bmRlZmluZWQsIHdyaXRlRmlsZSk7XG59XG5cbmZ1bmN0aW9uIG1haW4oYXJnczogc3RyaW5nW10pOiBudW1iZXIge1xuICBjb25zdCB7c2V0dGluZ3MsIHRzY0FyZ3N9ID0gbG9hZFNldHRpbmdzRnJvbUFyZ3MoYXJncyk7XG4gIGNvbnN0IGNvbmZpZyA9IGxvYWRUc2NDb25maWcodHNjQXJncyk7XG4gIGlmIChjb25maWcuZXJyb3JzLmxlbmd0aCkge1xuICAgIGNvbnNvbGUuZXJyb3IodHMuZm9ybWF0RGlhZ25vc3RpY3MoY29uZmlnLmVycm9ycywgdHMuY3JlYXRlQ29tcGlsZXJIb3N0KGNvbmZpZy5vcHRpb25zKSkpO1xuICAgIHJldHVybiAxO1xuICB9XG5cbiAgaWYgKGNvbmZpZy5vcHRpb25zLm1vZHVsZSAhPT0gdHMuTW9kdWxlS2luZC5Db21tb25KUykge1xuICAgIC8vIFRoaXMgaXMgbm90IGFuIHVwc3RyZWFtIFR5cGVTY3JpcHQgZGlhZ25vc3RpYywgdGhlcmVmb3JlIGl0IGRvZXMgbm90IGdvXG4gICAgLy8gdGhyb3VnaCB0aGUgZGlhZ25vc3RpY3MgYXJyYXkgbWVjaGFuaXNtLlxuICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICd0c2lja2xlIGNvbnZlcnRzIFR5cGVTY3JpcHQgbW9kdWxlcyB0byBDbG9zdXJlIG1vZHVsZXMgdmlhIENvbW1vbkpTIGludGVybmFsbHkuICcgK1xuICAgICAgICAnU2V0IHRzY29uZmlnLmpzIFwibW9kdWxlXCI6IFwiY29tbW9uanNcIicpO1xuICAgIHJldHVybiAxO1xuICB9XG5cbiAgLy8gUnVuIHRzaWNrbGUrVFNDIHRvIGNvbnZlcnQgaW5wdXRzIHRvIENsb3N1cmUgSlMgZmlsZXMuXG4gIGNvbnN0IHJlc3VsdCA9IHRvQ2xvc3VyZUpTKFxuICAgICAgY29uZmlnLm9wdGlvbnMsIGNvbmZpZy5maWxlTmFtZXMsIHNldHRpbmdzLCAoZmlsZVBhdGg6IHN0cmluZywgY29udGVudHM6IHN0cmluZykgPT4ge1xuICAgICAgICBta2RpcnAuc3luYyhwYXRoLmRpcm5hbWUoZmlsZVBhdGgpKTtcbiAgICAgICAgZnMud3JpdGVGaWxlU3luYyhmaWxlUGF0aCwgY29udGVudHMsIHtlbmNvZGluZzogJ3V0Zi04J30pO1xuICAgICAgfSk7XG4gIGlmIChyZXN1bHQuZGlhZ25vc3RpY3MubGVuZ3RoKSB7XG4gICAgY29uc29sZS5lcnJvcih0cy5mb3JtYXREaWFnbm9zdGljcyhyZXN1bHQuZGlhZ25vc3RpY3MsIHRzLmNyZWF0ZUNvbXBpbGVySG9zdChjb25maWcub3B0aW9ucykpKTtcbiAgICByZXR1cm4gMTtcbiAgfVxuXG4gIGlmIChzZXR0aW5ncy5leHRlcm5zUGF0aCkge1xuICAgIG1rZGlycC5zeW5jKHBhdGguZGlybmFtZShzZXR0aW5ncy5leHRlcm5zUGF0aCkpO1xuICAgIGZzLndyaXRlRmlsZVN5bmMoXG4gICAgICAgIHNldHRpbmdzLmV4dGVybnNQYXRoLFxuICAgICAgICB0c2lja2xlLmdldEdlbmVyYXRlZEV4dGVybnMocmVzdWx0LmV4dGVybnMsIGNvbmZpZy5vcHRpb25zLnJvb3REaXIgfHwgJycpKTtcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy8gQ0xJIGVudHJ5IHBvaW50XG5pZiAocmVxdWlyZS5tYWluID09PSBtb2R1bGUpIHtcbiAgcHJvY2Vzcy5leGl0KG1haW4ocHJvY2Vzcy5hcmd2LnNwbGljZSgyKSkpO1xufVxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9tYWluLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFVQSx1QkFBeUI7SUFDekIsbUNBQXFDO0lBQ3JDLCtCQUFpQztJQUNqQywyQkFBNkI7SUFDN0IsK0JBQWlDO0lBRWpDLG9EQUE0QztJQUM1Qyw2Q0FBcUM7SUFDckMsK0NBQTBDO0lBb0IxQyxTQUFTLEtBQUs7UUFDWixPQUFPLENBQUMsS0FBSyxDQUFDLHFlQVVmLENBQUMsQ0FBQztJQUNILENBQUM7SUFFRDs7O09BR0c7SUFDSCxTQUFTLG9CQUFvQixDQUFDLElBQWM7O1FBQzFDLElBQU0sUUFBUSxHQUFhLEVBQUUsQ0FBQztRQUM5QixJQUFNLFVBQVUsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7O1lBQ2xDLEtBQW1CLElBQUEsS0FBQSxTQUFBLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUEsZ0JBQUEsNEJBQUU7Z0JBQXZDLElBQU0sSUFBSSxXQUFBO2dCQUNiLFFBQVEsSUFBSSxFQUFFO29CQUNaLEtBQUssR0FBRyxDQUFDO29CQUNULEtBQUssTUFBTTt3QkFDVCxLQUFLLEVBQUUsQ0FBQzt3QkFDUixPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO3dCQUNoQixNQUFNO29CQUNSLEtBQUssU0FBUzt3QkFDWixRQUFRLENBQUMsV0FBVyxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQzt3QkFDeEMsTUFBTTtvQkFDUixLQUFLLE9BQU87d0JBQ1YsUUFBUSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7d0JBQ3hCLE1BQU07b0JBQ1IsS0FBSyxTQUFTO3dCQUNaLFFBQVEsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO3dCQUN4QixNQUFNO29CQUNSLEtBQUssbUJBQW1CO3dCQUN0QixRQUFRLENBQUMsaUJBQWlCLEdBQUcs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VjtRQUVELElBQUksUUFBUSxDQUFDLFdBQVcsRUFBRTtZQUN4QixNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7WUFDaEQsRUFBRSxDQUFDLGFBQWEsQ0FDWixRQUFRLENBQUMsV0FBVyxFQUNwQixPQUFPLENBQUMsbUJBQW1CLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO1NBQ2hGO1FBQ0QsT0FBTyxDQUFDLENBQUM7SUFDWCxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLElBQUksT0FBTyxDQUFDLElBQUksS0FBSyxNQUFNLEVBQUU7UUFDM0IsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0tBQzVDIiwic291cmNlc0NvbnRlbnQiOlsiIyEvdXNyL2Jpbi9lbnYgbm9kZVxuXG4vKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzJztcbmltcG9ydCAqIGFzIG1pbmltaXN0IGZyb20gJ21pbmltaXN0JztcbmltcG9ydCAqIGFzIG1rZGlycCBmcm9tICdta2RpcnAnO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCAqIGFzIHRzIGZyb20gJ3R5cGVzY3JpcHQnO1xuXG5pbXBvcnQgKiBhcyBjbGlTdXBwb3J0IGZyb20gJy4vY2xpX3N1cHBvcnQnO1xuaW1wb3J0ICogYXMgdHNpY2tsZSBmcm9tICcuL3RzaWNrbGUnO1xuaW1wb3J0IHtNb2R1bGVzTWFuaWZlc3R9IGZyb20gJy4vdHNpY2tsZSc7XG5cbi8qKiBUc2lja2xlIHNldHRpbmdzIHBhc3NlZCBvbiB0aGUgY29tbWFuZCBsaW5lLiAqL1xuZXhwb3J0IGludGVyZmFjZSBTZXR0aW5ncyB7XG4gIC8qKiBJZiBwcm92aWRlZCwgbW9kaWZ5IHF1b3Rpbmcgb2YgcHJvcGVydHkgYWNjZXNzZXMgdG8gbWF0Y2ggdGhlIHR5cGUgZGVjbGFyYXRpb24uICovXG4gIGVuYWJsZUF1dG9RdW90aW5nPzogYm9vbGVhbjtcblxuICAvKiogSWYgcHJvdmlkZWQsIHBhdGggdG8gc2F2ZSBleHRlcm5zIHRvLiAqL1xuICBleHRlcm5zUGF0aD86IHN0cmluZztcblxuICAvKiogSWYgcHJvdmlkZWQsIGF0dGVtcHQgdG8gcHJvdmlkZSB0eXBlcyByYXRoZXIgdGhhbiB7P30uICovXG4gIGlzVHlwZWQ/OiBib29sZWFuO1xuXG4gIC8qKiBJZiB0cnVlLCBsb2cgaW50ZXJuYWwgZGVidWcgd2FybmluZ3MgdG8gdGhlIGNvbnNvbGUuICovXG4gIHZlcmJvc2U/OiBib29sZWFuO1xuXG4gIC8qKiBJZiB0cnVlLCB3YXJuaW5ncyBjYXVzZSBhIG5vbi16ZXJvIGV4aXQgY29kZS4gKi9cbiAgZmF0YWxXYXJuaW5ncz86IGJvb2xlYW47XG59XG5cbmZ1bmN0aW9uIHVzYWdlKCkge1xuICBjb25zb2xlLmVycm9yKGB1c2FnZTogdHNpY2tsZSBbdHNpY2tsZSBvcHRpb25zXSAtLSBbdHNjIG9wdGlvbnNdXG5cbmV4YW1wbGU6XG4gIHRzaWNrbGUgLS1leHRlcm5zPWZvby9leHRlcm5zLmpzIC0tIC1wIHNyYyAtLW5vSW1wbGljaXRBbnlcblxudHNpY2tsZSBmbGFncyBhcmU6XG4gIC0tZXh0ZXJucz1QQVRIICAgICAgICBzYXZlIGdlbmVyYXRlZCBDbG9zdXJlIGV4dGVybnMuanMgdG8gUEFUSFxuICAtLXR5cGVkICAgICAgICAgICAgICAgW2V4cGVyaW1lbnRhbF0gYXR0ZW1wdCB0byBwcm92aWRlIENsb3N1cmUgdHlwZXMgaW5zdGVhZCBvZiB7P31cbiAgLS1lbmFibGVBdXRvUXVvdGluZyAgIGF1dG9tYXRpY2FsbHkgYXBwbHkgcXVvdGVzIHRvIHByb3BlcnR5IGFjY2Vzc2VzXG4gIC0tZmF0YWxXYXJuaW5ncyAgICAgICB3aGV0aGVyIHdhcm5pbmdzIHNob3VsZCBiZSBmYXRhbCwgYW5kIGNhdXNlIHRzaWNrbGUgdG8gcmV0dXJuIGEgbm9uLXplcm8gZXhpdCBjb2RlXG5gKTtcbn1cblxuLyoqXG4gKiBQYXJzZXMgdGhlIGNvbW1hbmQtbGluZSBhcmd1bWVudHMsIGV4dHJhY3RpbmcgdGhlIHRzaWNrbGUgc2V0dGluZ3MgYW5kXG4gKiB0aGUgYXJndW1lbnRzIHRvIHBhc3Mgb24gdG8gdHNjLlxuICovXG5mdW5jdGlvbiBsb2FkU2V0dGluZ3NGcm9tQXJncyhhcmdzOiBzdHJpbmdbXSk6IHtzZXR0aW5nczogU2V0dGluZ3MsIHRzY0FyZ3M6IHN0cmluZ1tdfSB7XG4gIGNvbnN0IHNldHRpbmdzOiBTZXR0aW5ncyA9IHt9O1xuICBjb25zdCBwYXJzZWRBcmdzID0gbWluaW1pc3QoYXJncyk7XG4gIGZvciAoY29uc3QgZmxhZyBvZiBPYmplY3Qua2V5cyhwYXJzZWRBcmdzKSkge1xuICAgIHN3aXRjaCAoZmxhZykge1xuICAgICAgY2FzZSAnaCc6XG4gICAgICBjYXNlICdoZWxwJzpcbiAgICAgICAgdXNhZ2UoKTtcbiAgICAgICAgcHJvY2Vzcy5leGl0KDApO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2V4dGVybnMnOlxuICAgICAgICBzZXR0aW5ncy5leHRlcm5zUGF0aCA9IHBhcnNlZEFyZ3NbZmxhZ107XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAndHlwZWQnOlxuICAgICAgICBzZXR0aW5ncy5pc1R5cGVkID0gdHJ1ZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICd2ZXJib3NlJzpcbiAgICAgICAgc2V0dGluZ3MudmVyYm9zZSA9IHRydWU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnZW5hYmxlQXV0b1F1b3RpbmcnOlxuICAgICAgICBzZXR0aW5ncy5lbmFibGVBdXRvUXVvdGluZyA9IHRydWU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnZmF0YWxXYXJuaW5ncyc6XG4gICAgICAgIHNldHRpbmdzLmZhdGFsV2FybmluZ3MgPSB0cnVlO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ18nOlxuICAgICAgICAvLyBUaGlzIGlzIHBhcnQgb2YgdGhlIG1pbmltaXN0IEFQSSwgYW5kIGhvbGRzIGFyZ3MgYWZ0ZXIgdGhlICctLScuXG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgY29uc29sZS5lcnJvcihgdW5rbm93biBmbGFnICctLSR7ZmxhZ30nYCk7XG4gICAgICAgIHVzYWdlKCk7XG4gICAgICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgICB9XG4gIH1cbiAgLy8gQXJndW1lbnRzIGFmdGVyIHRoZSAnLS0nIGFyZyBhcmUgYXJndW1lbnRzIHRvIHRzYy5cbiAgY29uc3QgdHNjQXJncyA9IHBhcnNlZEFyZ3NbJ18nXTtcbiAgcmV0dXJuIHtzZXR0aW5ncywgdHNjQXJnc307XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lIHRoZSBsb3dlc3QtbGV2ZWwgY29tbW9uIHBhcmVudCBkaXJlY3Rvcnkgb2YgdGhlIGdpdmVuIGxpc3Qgb2YgZmlsZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRDb21tb25QYXJlbnREaXJlY3RvcnkoZmlsZU5hbWVzOiBzdHJpbmdbXSk6IHN0cmluZyB7XG4gIGNvbnN0IHBhdGhTcGxpdHRlciA9IC9bXFwvXFxcXF0rLztcbiAgY29uc3QgY29tbW9uUGFyZW50ID0gZmlsZU5hbWVzWzBdLnNwbGl0KHBhdGhTcGxpdHRlcik7XG4gIGZvciAobGV0IGkgPSAxOyBpIDwgZmlsZU5hbWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3QgdGhpc1BhdGggPSBmaWxlTmFtZXNbaV0uc3BsaXQocGF0aFNwbGl0dGVyKTtcbiAgICBsZXQgaiA9IDA7XG4gICAgd2hpbGUgKHRoaXNQYXRoW2pdID09PSBjb21tb25QYXJlbnRbal0pIHtcbiAgICAgIGorKztcbiAgICB9XG4gICAgY29tbW9uUGFyZW50Lmxlbmd0aCA9IGo7ICAvLyBUcnVuY2F0ZSB3aXRob3V0IGNvcHlpbmcgdGhlIGFycmF5XG4gIH1cbiAgaWYgKGNvbW1vblBhcmVudC5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gJy8nO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBjb21tb25QYXJlbnQuam9pbihwYXRoLnNlcCk7XG4gIH1cbn1cblxuLyoqXG4gKiBMb2FkcyB0aGUgdHNjb25maWcuanNvbiBmcm9tIGEgZGlyZWN0b3J5LlxuICpcbiAqIFRPRE8obWFydGlucHJvYnN0KTogdXNlIHRzLmZpbmRDb25maWdGaWxlIHRvIG1hdGNoIHRzYyBiZWhhdmlvdXIuXG4gKlxuICogQHBhcmFtIGFyZ3MgdHNjIGNvbW1hbmQtbGluZSBhcmd1bWVudHMuXG4gKi9cbmZ1bmN0aW9uIGxvYWRUc2NDb25maWcoYXJnczogc3RyaW5nW10pOlxuICAgIHtvcHRpb25zOiB0cy5Db21waWxlck9wdGlvbnMsIGZpbGVOYW1lczogc3RyaW5nW10sIGVycm9yczogdHMuRGlhZ25vc3RpY1tdfSB7XG4gIC8vIEdhdGhlciB0c2Mgb3B0aW9ucy9pbnB1dCBmaWxlcyBmcm9tIGNvbW1hbmQgbGluZS5cbiAgbGV0IHtvcHRpb25zLCBmaWxlTmFtZXMsIGVycm9yc30gPSB0cy5wYXJzZUNvbW1hbmRMaW5lKGFyZ3MpO1xuICBpZiAoZXJyb3JzLmxlbmd0aCA+IDApIHtcbiAgICByZXR1cm4ge29wdGlvbnM6IHt9LCBmaWxlTmFtZXM6IFtdLCBlcnJvcnN9O1xuICB9XG5cbiAgLy8gU3RvcmUgZmlsZSBhcmd1bWVudHNcbiAgY29uc3QgdHNGaWxlQXJndW1lbnRzID0gZmlsZU5hbWVzO1xuXG4gIC8vIFJlYWQgZnVydGhlciBzZXR0aW5ncyBmcm9tIHRzY29uZmlnLmpzb24uXG4gIGNvbnN0IHByb2plY3REaXIgPSBvcHRpb25zLnByb2plY3QgfHwgJy4nO1xuICBjb25zdCBjb25maWdGaWxlTmFtZSA9IHBhdGguam9pbihwcm9qZWN0RGlyLCAndHNjb25maWcuanNvbicpO1xuICBjb25zdCB7Y29uZmlnOiBqc29uLCBlcnJvcn0gPVxuICAgICAgdHMucmVhZENvbmZpZ0ZpbGUoY29uZmlnRmlsZU5hbWUsIHBhdGggPT4gZnMucmVhZEZpbGVTeW5jKHBhdGgsICd1dGYtOCcpKTtcbiAgaWYgKGVycm9yKSB7XG4gICAgcmV0dXJuIHtvcHRpb25zOiB7fSwgZmlsZU5hbWVzOiBbXSwgZXJyb3JzOiBbZXJyb3JdfTtcbiAgfVxuICAoe29wdGlvbnMsIGZpbGVOYW1lcywgZXJyb3JzfSA9XG4gICAgICAgdHMucGFyc2VKc29uQ29uZmlnRmlsZUNvbnRlbnQoanNvbiwgdHMuc3lzLCBwcm9qZWN0RGlyLCBvcHRpb25zLCBjb25maWdGaWxlTmFtZSkpO1xuICBpZiAoZXJyb3JzLmxlbmd0aCA+IDApIHtcbiAgICByZXR1cm4ge29wdGlvbnM6IHt9LCBmaWxlTmFtZXM6IFtdLCBlcnJvcnN9O1xuICB9XG5cbiAgLy8gaWYgZmlsZSBhcmd1bWVudHMgd2VyZSBnaXZlbiB0byB0aGUgdHlwZXNjcmlwdCB0cmFuc3BpbGVyIHRoZW4gdHJhbnNwaWxlIG9ubHkgdGhvc2UgZmlsZXNcbiAgZmlsZU5hbWVzID0gdHNGaWxlQXJndW1lbnRzLmxlbmd0aCA+IDAgPyB0c0ZpbGVBcmd1bWVudHMgOiBmaWxlTmFtZXM7XG5cbiAgcmV0dXJuIHtvcHRpb25zLCBmaWxlTmFtZXMsIGVycm9yczogW119O1xufVxuXG4vKipcbiAqIENvbXBpbGVzIFR5cGVTY3JpcHQgY29kZSBpbnRvIENsb3N1cmUtY29tcGlsZXItcmVhZHkgSlMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0Nsb3N1cmVKUyhcbiAgICBvcHRpb25zOiB0cy5Db21waWxlck9wdGlvbnMsIGZpbGVOYW1lczogc3RyaW5nW10sIHNldHRpbmdzOiBTZXR0aW5ncyxcbiAgICB3cml0ZUZpbGU/OiB0cy5Xcml0ZUZpbGVDYWxsYmFjayk6IHRzaWNrbGUuRW1pdFJlc3VsdCB7XG4gIC8vIFVzZSBhYnNvbHV0ZSBwYXRocyB0byBkZXRlcm1pbmUgd2hhdCBmaWxlcyB0byBwcm9jZXNzIHNpbmNlIGZpbGVzIG1heSBiZSBpbXBvcnRlZCB1c2luZ1xuICAvLyByZWxhdGl2ZSBvciBhYnNvbHV0ZSBwYXRoc1xuICBjb25zdCBhYnNvbHV0ZUZpbGVOYW1lcyA9IGZpbGVOYW1lcy5tYXAoaSA9PiBwYXRoLnJlc29sdmUoaSkpO1xuXG4gIGNvbnN0IGNvbXBpbGVySG9zdCA9IHRzLmNyZWF0ZUNvbXBpbGVySG9zdChvcHRpb25zKTtcbiAgY29uc3QgcHJvZ3JhbSA9IHRzLmNyZWF0ZVByb2dyYW0oYWJzb2x1dGVGaWxlTmFtZXMsIG9wdGlvbnMsIGNvbXBpbGVySG9zdCk7XG4gIGNvbnN0IGZpbGVzVG9Qcm9jZXNzID0gbmV3IFNldChhYnNvbHV0ZUZpbGVOYW1lcyk7XG4gIGNvbnN0IHJvb3RNb2R1bGVQYXRoID0gb3B0aW9ucy5yb290RGlyIHx8IGdldENvbW1vblBhcmVudERpcmVjdG9yeShhYnNvbHV0ZUZpbGVOYW1lcyk7XG4gIGNvbnN0IHRyYW5zZm9ybWVySG9zdDogdHNpY2tsZS5Uc2lja2xlSG9zdCA9IHtcbiAgICBzaG91bGRTa2lwVHNpY2tsZVByb2Nlc3Npbmc6IChmaWxlTmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICByZXR1cm4gIWZpbGVzVG9Qcm9jZXNzLmhhcyhwYXRoLnJlc29sdmUoZmlsZU5hbWUpKTtcbiAgICB9LFxuICAgIHNob3VsZElnbm9yZVdhcm5pbmdzRm9yUGF0aDogKGZpbGVOYW1lOiBzdHJpbmcpID0+ICFzZXR0aW5ncy5mYXRhbFdhcm5pbmdzLFxuICAgIHBhdGhUb01vZHVsZU5hbWU6IChjb250ZXh0LCBmaWxlTmFtZSkgPT5cbiAgICAgICAgY2xpU3VwcG9ydC5wYXRoVG9Nb2R1bGVOYW1lKHJvb3RNb2R1bGVQYXRoLCBjb250ZXh0LCBmaWxlTmFtZSksXG4gICAgZmlsZU5hbWVUb01vZHVsZUlkOiAoZmlsZU5hbWUpID0+IHBhdGgucmVsYXRpdmUocm9vdE1vZHVsZVBhdGgsIGZpbGVOYW1lKSxcbiAgICBlczVNb2RlOiB0cnVlLFxuICAgIGdvb2dtb2R1bGU6IHRydWUsXG4gICAgdHJhbnNmb3JtRGVjb3JhdG9yczogdHJ1ZSxcbiAgICB0cmFuc2Zvcm1UeXBlc1RvQ2xvc3VyZTogdHJ1ZSxcbiAgICB0eXBlQmxhY2tMaXN0UGF0aHM6IG5ldyBTZXQoKSxcbiAgICBlbmFibGVBdXRvUXVvdGluZzogc2V0dGluZ3MuZW5hYmxlQXV0b1F1b3RpbmcsXG4gICAgdW50eXBlZDogZmFsc2UsXG4gICAgbG9nV2FybmluZzogKHdhcm5pbmcpID0+IGNvbnNvbGUuZXJyb3IodHMuZm9ybWF0RGlhZ25vc3RpY3MoW3dhcm5pbmddLCBjb21waWxlckhvc3QpKSxcbiAgICBvcHRpb25zLFxuICAgIG1vZHVsZVJlc29sdXRpb25Ib3N0OiBjb21waWxlckhvc3QsXG4gIH07XG4gIGNvbnN0IGRpYWdub3N0aWNzID0gdHMuZ2V0UHJlRW1pdERpYWdub3N0aWNzKHByb2dyYW0pO1xuICBpZiAoZGlhZ25vc3RpY3MubGVuZ3RoID4gMCkge1xuICAgIHJldHVybiB7XG4gICAgICBkaWFnbm9zdGljcyxcbiAgICAgIG1vZHVsZXNNYW5pZmVzdDogbmV3IE1vZHVsZXNNYW5pZmVzdCgpLFxuICAgICAgZXh0ZXJuczoge30sXG4gICAgICBlbWl0U2tpcHBlZDogdHJ1ZSxcbiAgICAgIGVtaXR0ZWRGaWxlczogW10sXG4gICAgfTtcbiAgfVxuICByZXR1cm4gdHNpY2tsZS5lbWl0V2l0aFRzaWNrbGUoXG4gICAgICBwcm9ncmFtLCB0cmFuc2Zvcm1lckhvc3QsIGNvbXBpbGVySG9zdCwgb3B0aW9ucywgdW5kZWZpbmVkLCB3cml0ZUZpbGUpO1xufVxuXG5mdW5jdGlvbiBtYWluKGFyZ3M6IHN0cmluZ1tdKTogbnVtYmVyIHtcbiAgY29uc3Qge3NldHRpbmdzLCB0c2NBcmdzfSA9IGxvYWRTZXR0aW5nc0Zyb21BcmdzKGFyZ3MpO1xuICBjb25zdCBjb25maWcgPSBsb2FkVHNjQ29uZmlnKHRzY0FyZ3MpO1xuICBpZiAoY29uZmlnLmVycm9ycy5sZW5ndGgpIHtcbiAgICBjb25zb2xlLmVycm9yKHRzLmZvcm1hdERpYWdub3N0aWNzKGNvbmZpZy5lcnJvcnMsIHRzLmNyZWF0ZUNvbXBpbGVySG9zdChjb25maWcub3B0aW9ucykpKTtcbiAgICByZXR1cm4gMTtcbiAgfVxuXG4gIGlmIChjb25maWcub3B0aW9ucy5tb2R1bGUgIT09IHRzLk1vZHVsZUtpbmQuQ29tbW9uSlMpIHtcbiAgICAvLyBUaGlzIGlzIG5vdCBhbiB1cHN0cmVhbSBUeXBlU2NyaXB0IGRpYWdub3N0aWMsIHRoZXJlZm9yZSBpdCBkb2VzIG5vdCBnb1xuICAgIC8vIHRocm91Z2ggdGhlIGRpYWdub3N0aWNzIGFycmF5IG1lY2hhbmlzbS5cbiAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAndHNpY2tsZSBjb252ZXJ0cyBUeXBlU2NyaXB0IG1vZHVsZXMgdG8gQ2xvc3VyZSBtb2R1bGVzIHZpYSBDb21tb25KUyBpbnRlcm5hbGx5LiAnICtcbiAgICAgICAgJ1NldCB0c2NvbmZpZy5qcyBcIm1vZHVsZVwiOiBcImNvbW1vbmpzXCInKTtcbiAgICByZXR1cm4gMTtcbiAgfVxuXG4gIC8vIFJ1biB0c2lja2xlK1RTQyB0byBjb252ZXJ0IGlucHV0cyB0byBDbG9zdXJlIEpTIGZpbGVzLlxuICBjb25zdCByZXN1bHQgPSB0b0Nsb3N1cmVKUyhcbiAgICAgIGNvbmZpZy5vcHRpb25zLCBjb25maWcuZmlsZU5hbWVzLCBzZXR0aW5ncywgKGZpbGVQYXRoOiBzdHJpbmcsIGNvbnRlbnRzOiBzdHJpbmcpID0+IHtcbiAgICAgICAgbWtkaXJwLnN5bmMocGF0aC5kaXJuYW1lKGZpbGVQYXRoKSk7XG4gICAgICAgIGZzLndyaXRlRmlsZVN5bmMoZmlsZVBhdGgsIGNvbnRlbnRzLCB7ZW5jb2Rpbmc6ICd1dGYtOCd9KTtcbiAgICAgIH0pO1xuICBpZiAocmVzdWx0LmRpYWdub3N0aWNzLmxlbmd0aCkge1xuICAgIGNvbnNvbGUuZXJyb3IodHMuZm9ybWF0RGlhZ25vc3RpY3MocmVzdWx0LmRpYWdub3N0aWNzLCB0cy5jcmVhdGVDb21waWxlckhvc3QoY29uZmlnLm9wdGlvbnMpKSk7XG4gICAgcmV0dXJuIDE7XG4gIH1cblxuICBpZiAoc2V0dGluZ3MuZXh0ZXJuc1BhdGgpIHtcbiAgICBta2RpcnAuc3luYyhwYXRoLmRpcm5hbWUoc2V0dGluZ3MuZXh0ZXJuc1BhdGgpKTtcbiAgICBmcy53cml0ZUZpbGVTeW5jKFxuICAgICAgICBzZXR0aW5ncy5leHRlcm5zUGF0aCxcbiAgICAgICAgdHNpY2tsZS5nZXRHZW5lcmF0ZWRFeHRlcm5zKHJlc3VsdC5leHRlcm5zLCBjb25maWcub3B0aW9ucy5yb290RGlyIHx8ICcnKSk7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vIENMSSBlbnRyeSBwb2ludFxuaWYgKHJlcXVpcmUubWFpbiA9PT0gbW9kdWxlKSB7XG4gIHByb2Nlc3MuZXhpdChtYWluKHByb2Nlc3MuYXJndi5zcGxpY2UoMikpKTtcbn1cbiJdfQ==

@@ -31,3 +31,3 @@ /**

* ModuleTypeTranslator encapsulates knowledge and helper functions to translate types in the scope
* of a specific module. This includes managing Closure forward declare statements and any symbol
* of a specific module. This includes managing Closure requireType statements and any symbol
* aliases in scope for a whole file.

@@ -45,3 +45,3 @@ */

* tsickle creates its own aliases for types, and registers them in this map (see
* `emitImportDeclaration` and `forwardDeclare()` below). The aliases are then used when emitting
* `emitImportDeclaration` and `requireType()` below). The aliases are then used when emitting
* types.

@@ -51,15 +51,11 @@ */

/**
* The set of module symbols forward declared in the local namespace (with goog.forwarDeclare).
*
* Symbols not imported must be declared, which is done by adding forward declares to
* `extraImports` below.
* The set of module symbols requireTyped in the local namespace. This tracks which imported
* modules we've already added to additionalImports below.
*/
private forwardDeclaredModules;
private requireTypeModules;
/**
* The list of generated goog.forwardDeclare statements for this module. These are inserted into
* The list of generated goog.requireType statements for this module. These are inserted into
* the module's body statements after translation.
*/
private forwardDeclares;
/** A counter to generate unique names for goog.forwardDeclare variables. */
private forwardDeclareCounter;
private additionalImports;
constructor(sourceFile: ts.SourceFile, typeChecker: ts.TypeChecker, host: AnnotatorHost, diagnostics: ts.Diagnostic[], isForExterns: boolean);

@@ -89,8 +85,14 @@ debugWarn(context: ts.Node, messageText: string): void;

/**
* Returns the `const x = goog.forwardDeclare...` text for an import of the given `importPath`.
* This also registers aliases for symbols from the module that map to this forward declare.
* Records that we we want a `const x = goog.requireType...` import of the given `importPath`,
* which will be inserted when we emit.
* This also registers aliases for symbols from the module that map to this requireType.
*
* @param isExplicitImport True if this comes from an underlying 'import' statement, false
* if this reference is needed just because a symbol's type relies on it.
* @param isDefaultImport True if the import statement is a default import, e.g.
* `import Foo from ...;`, which matters for adjusting whether we emit a `.default`.
*/
forwardDeclare(importPath: string, moduleSymbol: ts.Symbol, isExplicitImport: boolean, isDefaultImport?: boolean): void;
requireType(importPath: string, moduleSymbol: ts.Symbol, isExplicitImport: boolean, isDefaultImport?: boolean): void;
protected ensureSymbolDeclared(sym: ts.Symbol): void;
insertForwardDeclares(sourceFile: ts.SourceFile): ts.SourceFile;
insertAdditionalImports(sourceFile: ts.SourceFile): ts.SourceFile;
/**

@@ -104,3 +106,2 @@ * Parses and synthesizes comments on node, and returns the JSDoc from it, if any.

private parseJSDoc;
blacklistTypeParameters(context: ts.Node, decls: ReadonlyArray<ts.TypeParameterDeclaration> | undefined): void;
/**

@@ -107,0 +108,0 @@ * Creates the jsdoc for methods, including overloads.

@@ -257,6 +257,2 @@ /**

"\t\texport {module$contents$" + clutzModuleName + "_" + symbol.name + " as " + symbol.name + "}\n";
if (symbol.flags & ts.SymbolFlags.Class) {
globalSymbols += "\t\texport {" + symbol.name + " as module$contents$" + clutzModuleName + "_" + symbol.name + "_Instance}\n";
nestedSymbols += "\t\texport {module$contents$" + clutzModuleName + "_" + symbol.name + " as " + symbol.name + "_Instance}\n";
}
}

@@ -293,2 +289,2 @@ }

});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHNpY2tsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy90c2lja2xlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBRUgsK0JBQWlDO0lBR2pDLHVEQUE2QztJQUM3QywrRkFBZ0Y7SUFDaEYsaUVBQW1EO0lBQ25ELCtDQUEwQztJQUMxQyxpR0FBdUY7SUFDdkYsbURBQTJDO0lBQzNDLG1FQUEyRTtJQUMzRSxpRUFBbUQ7SUFDbkQsdUVBQXlEO0lBQ3pELGlFQUFpRDtJQUVqRCx1Q0FBdUM7SUFDdkMsK0NBQThDO0lBQXRDLHdDQUFBLG1CQUFtQixDQUFBO0lBQzNCLGlFQUE0RDtJQUEzQyw2Q0FBQSxlQUFlLENBQUE7SUE4QmhDLFNBQWdCLGdCQUFnQixDQUFDLFdBQXlCOztRQUN4RCxJQUFNLFdBQVcsR0FBb0IsRUFBRSxDQUFDO1FBQ3hDLElBQUksV0FBVyxHQUFHLElBQUksQ0FBQztRQUN2QixJQUFNLFlBQVksR0FBYSxFQUFFLENBQUM7UUFDbEMsSUFBTSxPQUFPLEdBQWlDLEVBQUUsQ0FBQztRQUNqRCxJQUFNLGVBQWUsR0FBRyxJQUFJLGtDQUFlLEVBQUUsQ0FBQzs7WUFDOUMsS0FBaUIsSUFBQSxnQkFBQSxTQUFBLFdBQVcsQ0FBQSx3Q0FBQSxpRUFBRTtnQkFBekIsSUFBTSxFQUFFLHdCQUFBO2dCQUNYLFdBQVcsQ0FBQyxJQUFJLE9BQWhCLFdBQVcsV0FBUyxFQUFFLENBQUMsV0FBVyxHQUFFO2dCQUNwQyxXQUFXLEdBQUcsV0FBVyxJQUFJLEVBQUUsQ0FBQyxXQUFXLENBQUM7Z0JBQzVDLFlBQVksQ0FBQyxJQUFJLE9BQWpCLFlBQVksV0FBUyxFQUFFLENBQUMsWUFBWSxHQUFFO2dCQUN0QyxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQ25D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QU0sQ0FBQyxJQUFJLFFBQUssQ0FBQztnQkFDekYsSUFBSSxNQUFNLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFO29CQUN2QyxhQUFhLElBQUksaUJBQWUsTUFBTSxDQUFDLElBQUksNEJBQXVCLGVBQWUsU0FDN0UsTUFBTSxDQUFDLElBQUksaUJBQWMsQ0FBQztvQkFDOUIsYUFBYSxJQUFJLGlDQUErQixlQUFlLFNBQUksTUFBTSxDQUFDLElBQUksWUFDMUUsTUFBTSxDQUFDLElBQUksaUJBQWMsQ0FBQztpQkFDL0I7YUFDRjs7Ozs7Ozs7O1FBRUQsY0FBYyxJQUFJLG9CQUFvQixDQUFDO1FBQ3ZDLGNBQWMsSUFBSSxxQ0FBMkIsQ0FBQztRQUM5QyxjQUFjLElBQUksYUFBYSxDQUFDO1FBQ2hDLGNBQWMsSUFBSSxPQUFPLENBQUM7UUFDMUIsY0FBYyxJQUFJLG9EQUF3QyxlQUFlLFNBQU0sQ0FBQztRQUNoRixjQUFjLElBQUksYUFBYSxDQUFDO1FBQ2hDLGNBQWMsSUFBSSxPQUFPLENBQUM7UUFDMUIsY0FBYyxJQUFJLEtBQUssQ0FBQztRQUV4QixPQUFPLGNBQWMsQ0FBQztJQUN4QixDQUFDO0lBRUQsU0FBUyxrQ0FBa0MsQ0FDdkMsSUFBaUIsRUFDakIsZUFBcUQ7UUFDdkQsT0FBTyxVQUFDLE9BQWlDO1lBQ3ZDLElBQU0sUUFBUSxHQUFHLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUMxQyxPQUFPLFVBQUMsVUFBeUI7Z0JBQy9CLElBQUksSUFBSSxDQUFDLDJCQUEyQixDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsRUFBRTtvQkFDekQsT0FBTyxVQUFVLENBQUM7aUJBQ25CO2dCQUNELE9BQU8sUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQzlCLENBQUMsQ0FBQztRQUNKLENBQUMsQ0FBQztJQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCAqIGFzIHRzIGZyb20gJ3R5cGVzY3JpcHQnO1xuXG5pbXBvcnQge0Fubm90YXRvckhvc3R9IGZyb20gJy4vYW5ub3RhdG9yX2hvc3QnO1xuaW1wb3J0IHthc3NlcnRBYnNvbHV0ZX0gZnJvbSAnLi9jbGlfc3VwcG9ydCc7XG5pbXBvcnQge2RlY29yYXRvckRvd25sZXZlbFRyYW5zZm9ybWVyfSBmcm9tICcuL2RlY29yYXRvcl9kb3dubGV2ZWxfdHJhbnNmb3JtZXInO1xuaW1wb3J0IHtlbnVtVHJhbnNmb3JtZXJ9IGZyb20gJy4vZW51bV90cmFuc2Zvcm1lcic7XG5pbXBvcnQge2dlbmVyYXRlRXh0ZXJuc30gZnJvbSAnLi9leHRlcm5zJztcbmltcG9ydCB7dHJhbnNmb3JtRmlsZW92ZXJ2aWV3Q29tbWVudEZhY3Rvcnl9IGZyb20gJy4vZmlsZW92ZXJ2aWV3X2NvbW1lbnRfdHJhbnNmb3JtZXInO1xuaW1wb3J0ICogYXMgZ29vZ21vZHVsZSBmcm9tICcuL2dvb2dtb2R1bGUnO1xuaW1wb3J0IHtqc2RvY1RyYW5zZm9ybWVyLCByZW1vdmVUeXBlQXNzZXJ0aW9uc30gZnJvbSAnLi9qc2RvY190cmFuc2Zvcm1lcic7XG5pbXBvcnQge01vZHVsZXNNYW5pZmVzdH0gZnJvbSAnLi9tb2R1bGVzX21hbmlmZXN0JztcbmltcG9ydCB7cXVvdGluZ1RyYW5zZm9ybWVyfSBmcm9tICcuL3F1b3RpbmdfdHJhbnNmb3JtZXInO1xuaW1wb3J0IHtpc0R0c0ZpbGVOYW1lfSBmcm9tICcuL3RyYW5zZm9ybWVyX3V0aWwnO1xuXG4vLyBSZXRhaW5lZCBoZXJlIGZvciBBUEkgY29tcGF0aWJpbGl0eS5cbmV4cG9ydCB7Z2V0R2VuZXJhdGVkRXh0ZXJuc30gZnJvbSAnLi9leHRlcm5zJztcbmV4cG9ydCB7RmlsZU1hcCwgTW9kdWxlc01hbmlmZXN0fSBmcm9tICcuL21vZHVsZXNfbWFuaWZlc3QnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFRzaWNrbGVIb3N0IGV4dGVuZHMgZ29vZ21vZHVsZS5Hb29nTW9kdWxlUHJvY2Vzc29ySG9zdCwgQW5ub3RhdG9ySG9zdCB7XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGRvd25sZXZlbCBkZWNvcmF0b3JzXG4gICAqL1xuICB0cmFuc2Zvcm1EZWNvcmF0b3JzPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gY29udmVycyB0eXBlcyB0byBjbG9zdXJlXG4gICAqL1xuICB0cmFuc2Zvcm1UeXBlc1RvQ2xvc3VyZT86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGFkZCBhbGlhc2VzIHRvIHRoZSAuZC50cyBmaWxlcyB0byBhZGQgdGhlIGV4cG9ydHMgdG8gdGhlXG4gICAqIOCyoF/gsqAuY2x1dHogbmFtZXNwYWNlLlxuICAgKi9cbiAgYWRkRHRzQ2x1dHpBbGlhc2VzPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIElmIHRydWUsIHRzaWNrbGUgYW5kIGRlY29yYXRvciBkb3dubGV2ZWwgcHJvY2Vzc2luZyB3aWxsIGJlIHNraXBwZWQgZm9yXG4gICAqIHRoYXQgZmlsZS5cbiAgICovXG4gIHNob3VsZFNraXBUc2lja2xlUHJvY2Vzc2luZyhmaWxlTmFtZTogc3RyaW5nKTogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFRzaWNrbGUgdHJlYXRzIHdhcm5pbmdzIGFzIGVycm9ycywgaWYgdHJ1ZSwgaWdub3JlIHdhcm5pbmdzLiAgVGhpcyBtaWdodCBiZVxuICAgKiB1c2VmdWwgZm9yIGUuZy4gdGhpcmQgcGFydHkgY29kZS5cbiAgICovXG4gIHNob3VsZElnbm9yZVdhcm5pbmdzRm9yUGF0aChmaWxlUGF0aDogc3RyaW5nKTogYm9vbGVhbjtcbiAgLyoqIFdoZXRoZXIgdG8gY29udmVydCBDb21tb25KUyByZXF1aXJlKCkgaW1wb3J0cyB0byBnb29nLm1vZHVsZSgpIGFuZCBnb29nLnJlcXVpcmUoKSBjYWxscy4gKi9cbiAgZ29vZ21vZHVsZTogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1lcmdlRW1pdFJlc3VsdHMoZW1pdFJlc3VsdHM6IEVtaXRSZXN1bHRbXSk6IEVtaXRSZXN1bHQge1xuICBjb25zdCBkaWFnbm9zdGljczogdHMuRGlhZ25vc3RpY1tdID0gW107XG4gIGxldCBlbWl0U2tpcHBlZCA9IHRydWU7XG4gIGNvbnN0IGVtaXR0ZWRGaWxlczogc3RyaW5nW10gPSBbXTtcbiAgY29uc3QgZXh0ZXJuczoge1tmaWxlTmFtZTogc3RyaW5nXTogc3RyaW5nfSA9IHt9O1xuICBjb25zdCBtb2R1bGVzTWFuaWZlc3QgPSBuZXcgTW9kdWxlc01hbmlmZXN0KCk7XG4gIGZvciAoY29uc3QgZXIgb2YgZW1pdFJlc3VsdHMpIHtcbiAgICBkaWFnbm9zdGljcy5wdXNoKC4uLmVyLmRpYWdub3N0aWNzKTtcbiAgICBlbWl0U2tpcHBlZCA9IGVtaXRTa2lwcGVkIHx8IGVyLmVtaXRTa2lwcGVkO1xuICAgIGVtaXR0ZWRGaWxlcy5wdXNoKC4uLmVyLmVtaXR0ZWRGaWxlcyk7XG4gICAgT2JqZWN0LmFzc2lnbihleHRlcm5zLCBlci5leHRlcm5zKTtcbiAgICBtb2R1bGVzTWFuaWZlc3QuYWRkTWFuaWZlc3QoZXIubW9kdWxlc01hbmlmZXN0KTtcbiAgfVxuICByZXR1cm4ge2RpYWdub3N0aWNzLCBlbWl0U2tpcHBlZCwgZW1pdHRlZEZpbGVzLCBleHRlcm5zLCBtb2R1bGVzTWFuaWZlc3R9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEVtaXRSZXN1bHQgZXh0ZW5kcyB0cy5FbWl0UmVzdWx0IHtcbiAgLy8gVGhlIG1hbmlmZXN0IG9mIEpTIG1vZHVsZXMgb3V0cHV0IGJ5IHRoZSBjb21waWxlci5cbiAgbW9kdWxlc01hbmlmZXN0OiBNb2R1bGVzTWFuaWZlc3Q7XG4gIC8qKlxuICAgKiBleHRlcm5zLmpzIGZpbGVzIHByb2R1Y2VkIGJ5IHRzaWNrbGUsIGlmIGFueS4gbW9kdWxlIElEcyBhcmUgcmVsYXRpdmUgcGF0aHMgZnJvbVxuICAgKiBmaWxlTmFtZVRvTW9kdWxlSWQuXG4gICAqL1xuICBleHRlcm5zOiB7W21vZHVsZUlkOiBzdHJpbmddOiBzdHJpbmd9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEVtaXRUcmFuc2Zvcm1lcnMge1xuICAvKiogQ3VzdG9tIHRyYW5zZm9ybWVycyB0byBldmFsdWF0ZSBiZWZvcmUgVHNpY2tsZSAuanMgdHJhbnNmb3JtYXRpb25zLiAqL1xuICBiZWZvcmVUc2lja2xlPzogQXJyYXk8dHMuVHJhbnNmb3JtZXJGYWN0b3J5PHRzLlNvdXJjZUZpbGU+PjtcbiAgLyoqIEN1c3RvbSB0cmFuc2Zvcm1lcnMgdG8gZXZhbHVhdGUgYmVmb3JlIGJ1aWx0LWluIC5qcyB0cmFuc2Zvcm1hdGlvbnMuICovXG4gIGJlZm9yZVRzPzogQXJyYXk8dHMuVHJhbnNmb3JtZXJGYWN0b3J5PHRzLlNvdXJjZUZpbGU+PjtcbiAgLyoqIEN1c3RvbSB0cmFuc2Zvcm1lcnMgdG8gZXZhbHVhdGUgYWZ0ZXIgYnVpbHQtaW4gLmpzIHRyYW5zZm9ybWF0aW9ucy4gKi9cbiAgYWZ0ZXJUcz86IEFycmF5PHRzLlRyYW5zZm9ybWVyRmFjdG9yeTx0cy5Tb3VyY2VGaWxlPj47XG4gIC8qKiBDdXN0b20gdHJhbnNmb3JtZXJzIHRvIGV2YWx1YXRlIGFmdGVyIGJ1aWx0LWluIC5kLnRzIHRyYW5zZm9ybWF0aW9ucy4gKi9cbiAgYWZ0ZXJEZWNsYXJhdGlvbnM/OiBBcnJheTx0cy5UcmFuc2Zvcm1lckZhY3Rvcnk8dHMuQnVuZGxlfHRzLlNvdXJjZUZpbGU+Pjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVtaXRXaXRoVHNpY2tsZShcbiAgICBwcm9ncmFtOiB0cy5Qcm9ncmFtLCBob3N0OiBUc2lja2xlSG9zdCwgdHNIb3N0OiB0cy5Db21waWxlckhvc3QsIHRzT3B0aW9uczogdHMuQ29tcGlsZXJPcHRpb25zLFxuICAgIHRhcmdldFNvdXJjZUZpbGU/OiB0cy5Tb3VyY2VGaWxlLCB3cml0ZUZpbGU/OiB0cy5Xcml0ZUZpbGVDYWxsYmFjayxcbiAgICBjYW5jZWxsYXRpb25Ub2tlbj86IHRzLkNhbmNlbGxhdGlvblRva2VuLCBlbWl0T25seUR0c0ZpbGVzPzogYm9vbGVhbixcbiAgICBjdXN0b21UcmFuc2Zvcm1lcnM6IEVtaXRUcmFuc2Zvcm1lcnMgPSB7fSk6IEVtaXRSZXN1bHQge1xuICBmb3IgKGNvbnN0IHNmIG9mIHByb2dyYW0uZ2V0U291cmNlRmlsZXMoKSkge1xuICAgIGFzc2VydEFic29sdXRlKHNmLmZpbGVOYW1lKTtcbiAgfVxuXG4gIGxldCB0c2lja2xlRGlhZ25vc3RpY3M6IHRzLkRpYWdub3N0aWNbXSA9IFtdO1xuICBjb25zdCB0eXBlQ2hlY2tlciA9IHByb2dyYW0uZ2V0VHlwZUNoZWNrZXIoKTtcbiAgY29uc3QgdHNpY2tsZVNvdXJjZVRyYW5zZm9ybWVyczogQXJyYXk8dHMuVHJhbnNmb3JtZXJGYWN0b3J5PHRzLlNvdXJjZUZpbGU+PiA9IFtdO1xuICBpZiAoaG9zdC50cmFuc2Zvcm1UeXBlc1RvQ2xvc3VyZSkge1xuICAgIC8vIE9ubHkgYWRkIEBzdXBwcmVzcyB7Y2hlY2tUeXBlc30gY29tbWVudHMgd2hlbiBhbHNvIGFkZGluZyB0eXBlIGFubm90YXRpb25zLlxuICAgIHRzaWNrbGVTb3VyY2VUcmFuc2Zvcm1lcnMucHVzaCh0cmFuc2Zvcm1GaWxlb3ZlcnZpZXdDb21tZW50RmFjdG9yeSh0c2lja2xlRGlhZ25vc3RpY3MpKTtcbiAgICB0c2lja2xlU291cmNlVHJhbnNmb3JtZXJzLnB1c2goXG4gICAgICAgIGpzZG9jVHJhbnNmb3JtZXIoaG9zdCwgdHNPcHRpb25zLCB0c0hvc3QsIHR5cGVDaGVja2VyLCB0c2lja2xlRGlhZ25vc3RpY3MpKTtcbiAgICBpZiAoaG9zdC5lbmFibGVBdXRvUXVvdGluZykge1xuICAgICAgdHNpY2tsZVNvdXJjZVRyYW5zZm9ybWVycy5wdXNoKHF1b3RpbmdUcmFuc2Zvcm1lcihob3N0LCB0eXBlQ2hlY2tlciwgdHNpY2tsZURpYWdub3N0aWNzKSk7XG4gICAgfVxuICAgIHRzaWNrbGVTb3VyY2VUcmFuc2Zvcm1lcnMucHVzaChlbnVtVHJhbnNmb3JtZXIodHlwZUNoZWNrZXIsIHRzaWNrbGVEaWFnbm9zdGljcykpO1xuICAgIHRzaWNrbGVTb3VyY2VUcmFuc2Zvcm1lcnMucHVzaChkZWNvcmF0b3JEb3dubGV2ZWxUcmFuc2Zvcm1lcih0eXBlQ2hlY2tlciwgdHNpY2tsZURpYWdub3N0aWNzKSk7XG4gIH0gZWxzZSBpZiAoaG9zdC50cmFuc2Zvcm1EZWNvcmF0b3JzKSB7XG4gICAgdHNpY2tsZVNvdXJjZVRyYW5zZm9ybWVycy5wdXNoKGRlY29yYXRvckRvd25sZXZlbFRyYW5zZm9ybWVyKHR5cGVDaGVja2VyLCB0c2lja2xlRGlhZ25vc3RpY3MpKTtcbiAgfVxuICBjb25zdCBtb2R1bGVzTWFuaWZlc3QgPSBuZXcgTW9kdWxlc01hbmlmZXN0KCk7XG4gIGNvbnN0IHRzaWNrbGVUcmFuc2Zvcm1lcnM6IHRzLkN1c3RvbVRyYW5zZm9ybWVycyA9IHtiZWZvcmU6IHRzaWNrbGVTb3VyY2VUcmFuc2Zvcm1lcnN9O1xuICBjb25zdCB0c1RyYW5zZm9ybWVyczogdHMuQ3VzdG9tVHJhbnNmb3JtZXJzID0ge1xuICAgIGJlZm9yZTogW1xuICAgICAgLi4uKGN1c3RvbVRyYW5zZm9ybWVycy5iZWZvcmVUc2lja2xlIHx8IFtdKSxcbiAgICAgIC4uLih0c2lja2xlVHJhbnNmb3JtZXJzLmJlZm9yZSB8fCBbXSkubWFwKHRmID0+IHNraXBUcmFuc2Zvcm1Gb3JTb3VyY2VGaWxlSWZOZWVkZWQoaG9zdCwgdGYpKSxcbiAgICAgIC4uLihjdXN0b21UcmFuc2Zvcm1lcnMuYmVmb3JlVHMgfHwgW10pLFxuICAgIF0sXG4gICAgYWZ0ZXI6IFtcbiAgICAgIC4uLihjdXN0b21UcmFuc2Zvcm1lcnMuYWZ0ZXJUcyB8fCBbXSksXG4gICAgICAuLi4odHNpY2tsZVRyYW5zZm9ybWVycy5hZnRlciB8fCBbXSkubWFwKHRmID0+IHNraXBUcmFuc2Zvcm1Gb3JTb3VyY2VGaWxlSWZOZWVkZWQoaG9zdCwgdGYpKSxcbiAgICBdLFxuICAgIGFmdGVyRGVjbGFyYXRpb25zOiBjdXN0b21UcmFuc2Zvcm1lcnMuYWZ0ZXJEZWNsYXJhdGlvbnMsXG4gIH07XG4gIGlmIChob3N0LnRyYW5zZm9ybVR5cGVzVG9DbG9zdXJlKSB7XG4gICAgLy8gU2VlIGNvbW1lbnQgb24gcmVtb3RlVHlwZUFzc2VydGlvbnMuXG4gICAgdHNUcmFuc2Zvcm1lcnMuYmVmb3JlIS5wdXNoKHJlbW92ZVR5cGVBc3NlcnRpb25zKCkpO1xuICB9XG4gIGlmIChob3N0Lmdvb2dtb2R1bGUpIHtcbiAgICB0c1RyYW5zZm9ybWVycy5hZnRlciEucHVzaChnb29nbW9kdWxlLmNvbW1vbkpzVG9Hb29nbW9kdWxlVHJhbnNmb3JtZXIoXG4gICAgICAgIGhvc3QsIG1vZHVsZXNNYW5pZmVzdCwgdHlwZUNoZWNrZXIsIHRzaWNrbGVEaWFnbm9zdGljcykpO1xuICB9XG5cbiAgY29uc3Qgd3JpdGVGaWxlRGVsZWdhdGU6IHRzLldyaXRlRmlsZUNhbGxiYWNrID0gd3JpdGVGaWxlIHx8IHRzSG9zdC53cml0ZUZpbGUuYmluZCh0c0hvc3QpO1xuICBjb25zdCB3cml0ZUZpbGVJbXBsID1cbiAgICAgIChmaWxlTmFtZTogc3RyaW5nLCBjb250ZW50OiBzdHJpbmcsIHdyaXRlQnl0ZU9yZGVyTWFyazogYm9vbGVhbixcbiAgICAgICBvbkVycm9yOiAoKG1lc3NhZ2U6IHN0cmluZykgPT4gdm9pZCl8dW5kZWZpbmVkLFxuICAgICAgIHNvdXJjZUZpbGVzOiBSZWFkb25seUFycmF5PHRzLlNvdXJjZUZpbGU+KSA9PiB7XG4gICAgICAgIGFzc2VydEFic29sdXRlKGZpbGVOYW1lKTtcbiAgICAgICAgaWYgKGhvc3QuYWRkRHRzQ2x1dHpBbGlhc2VzICYmIGlzRHRzRmlsZU5hbWUoZmlsZU5hbWUpICYmIHNvdXJjZUZpbGVzKSB7XG4gICAgICAgICAgLy8gT25seSBidW5kbGUgZW1pdHMgcGFzcyBtb3JlIHRoYW4gb25lIHNvdXJjZSBmaWxlIGZvciAuZC50cyB3cml0ZXMuIEJ1bmRsZSBlbWl0cyBob3dldmVyXG4gICAgICAgICAgLy8gYXJlIG5vdCBzdXBwb3J0ZWQgYnkgdHNpY2tsZSwgYXMgd2UgY2Fubm90IGFubm90YXRlIHRoZW0gZm9yIENsb3N1cmUgaW4gYW55IG1lYW5pbmdmdWxcbiAgICAgICAgICAvLyB3YXkgYW55d2F5LlxuICAgICAgICAgIGlmICghc291cmNlRmlsZXMgfHwgc291cmNlRmlsZXMubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBleHBlY3RlZCBleGFjdGx5IG9uZSBzb3VyY2UgZmlsZSBmb3IgLmQudHMgZW1pdCwgZ290ICR7XG4gICAgICAgICAgICAgICAgc291cmNlRmlsZXMubWFwKHNmID0+IHNmLmZpbGVOYW1lKX1gKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3Qgb3JpZ2luYWxTb3VyY2UgPSBzb3VyY2VGaWxlc1swXTtcbiAgICAgICAgICBjb250ZW50ID0gYWRkQ2x1dHpBbGlhc2VzKGZpbGVOYW1lLCBjb250ZW50LCBvcmlnaW5hbFNvdXJjZSwgdHlwZUNoZWNrZXIsIGhvc3QpO1xuICAgICAgICB9XG4gICAgICAgIHdyaXRlRmlsZURlbGVnYXRlKGZpbGVOYW1lLCBjb250ZW50LCB3cml0ZUJ5dGVPcmRlck1hcmssIG9uRXJyb3IsIHNvdXJjZUZpbGVzKTtcbiAgICAgIH07XG5cbiAgY29uc3Qge2RpYWdub3N0aWNzOiB0c0RpYWdub3N0aWNzLCBlbWl0U2tpcHBlZCwgZW1pdHRlZEZpbGVzfSA9IHByb2dyYW0uZW1pdChcbiAgICAgIHRhcmdldFNvdXJjZUZpbGUsIHdyaXRlRmlsZUltcGwsIGNhbmNlbGxhdGlvblRva2VuLCBlbWl0T25seUR0c0ZpbGVzLCB0c1RyYW5zZm9ybWVycyk7XG5cbiAgY29uc3QgZXh0ZXJuczoge1tmaWxlTmFtZTogc3RyaW5nXTogc3RyaW5nfSA9IHt9O1xuICBpZiAoaG9zdC50cmFuc2Zvcm1UeXBlc1RvQ2xvc3VyZSkge1xuICAgIGNvbnN0IHNvdXJjZUZpbGVzID0gdGFyZ2V0U291cmNlRmlsZSA/IFt0YXJnZXRTb3VyY2VGaWxlXSA6IHByb2dyYW0uZ2V0U291cmNlRmlsZXMoKTtcbiAgICBmb3IgKGNvbnN0IHNvdXJjZUZpbGUgb2Ygc291cmNlRmlsZXMpIHtcbiAgICAgIGNvbnN0IGlzRHRzID0gaXNEdHNGaWxlTmFtZShzb3VyY2VGaWxlLmZpbGVOYW1lKTtcbiAgICAgIGlmIChpc0R0cyAmJiBob3N0LnNob3VsZFNraXBUc2lja2xlUHJvY2Vzc2luZyhzb3VyY2VGaWxlLmZpbGVOYW1lKSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHtvdXRwdXQsIGRpYWdub3N0aWNzfSA9XG4gICAgICAgICAgZ2VuZXJhdGVFeHRlcm5zKHR5cGVDaGVja2VyLCBzb3VyY2VGaWxlLCBob3N0LCBob3N0Lm1vZHVsZVJlc29sdXRpb25Ib3N0LCB0c09wdGlvbnMpO1xuICAgICAgaWYgKG91dHB1dCkge1xuICAgICAgICBleHRlcm5zW3NvdXJjZUZpbGUuZmlsZU5hbWVdID0gb3V0cHV0O1xuICAgICAgfVxuICAgICAgaWYgKGRpYWdub3N0aWNzKSB7XG4gICAgICAgIHRzaWNrbGVEaWFnbm9zdGljcy5wdXNoKC4uLmRpYWdub3N0aWNzKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgLy8gQWxsIGRpYWdub3N0aWNzIChpbmNsdWRpbmcgd2FybmluZ3MpIGFyZSB0cmVhdGVkIGFzIGVycm9ycy5cbiAgLy8gSWYgdGhlIGhvc3QgZGVjaWRlcyB0byBpZ25vcmUgd2FybmluZ3MsIGp1c3QgZGlzY2FyZCB0aGVtLlxuICAvLyBXYXJuaW5ncyBpbmNsdWRlIHN0dWZmIGxpa2UgXCJkb24ndCB1c2UgQHR5cGUgaW4geW91ciBqc2RvY1wiOyB0c2lja2xlXG4gIC8vIHdhcm5zIGFuZCB0aGVuIGZpeGVzIHVwIHRoZSBjb2RlIHRvIGJlIENsb3N1cmUtY29tcGF0aWJsZSBhbnl3YXkuXG4gIHRzaWNrbGVEaWFnbm9zdGljcyA9IHRzaWNrbGVEaWFnbm9zdGljcy5maWx0ZXIoXG4gICAgICBkID0+IGQuY2F0ZWdvcnkgPT09IHRzLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvciB8fFxuICAgICAgICAgICFob3N0LnNob3VsZElnbm9yZVdhcm5pbmdzRm9yUGF0aChkLmZpbGUhLmZpbGVOYW1lKSk7XG5cbiAgcmV0dXJuIHtcbiAgICBtb2R1bGVzTWFuaWZlc3QsXG4gICAgZW1pdFNraXBwZWQsXG4gICAgZW1pdHRlZEZpbGVzOiBlbWl0dGVkRmlsZXMgfHwgW10sXG4gICAgZGlhZ25vc3RpY3M6IFsuLi50c0RpYWdub3N0aWNzLCAuLi50c2lja2xlRGlhZ25vc3RpY3NdLFxuICAgIGV4dGVybnNcbiAgfTtcbn1cblxuLyoqIENvbXBhcmVzIHR3byBzdHJpbmdzIGFuZCByZXR1cm5zIGEgbnVtYmVyIHN1aXRhYmxlIGZvciB1c2UgaW4gc29ydCgpLiAqL1xuZnVuY3Rpb24gc3RyaW5nQ29tcGFyZShhOiBzdHJpbmcsIGI6IHN0cmluZyk6IG51bWJlciB7XG4gIGlmIChhIDwgYikgcmV0dXJuIC0xO1xuICBpZiAoYSA+IGIpIHJldHVybiAxO1xuICByZXR1cm4gMDtcbn1cblxuLyoqXG4gKiBBIHRzaWNrbGUgcHJvZHVjZWQgZGVjbGFyYXRpb24gZmlsZSBtaWdodCBiZSBjb25zdW1lZCBiZSByZWZlcmVuY2VkIGJ5IENsdXR6XG4gKiBwcm9kdWNlZCAuZC50cyBmaWxlcywgd2hpY2ggdXNlIHN5bWJvbCBuYW1lcyBiYXNlZCBvbiBDbG9zdXJlJ3MgaW50ZXJuYWxcbiAqIG5hbWluZyBjb252ZW50aW9ucywgc28gd2UgbmVlZCB0byBwcm92aWRlIGFsaWFzZXMgZm9yIGFsbCB0aGUgZXhwb3J0ZWQgc3ltYm9sc1xuICogaW4gdGhlIENsdXR6IG5hbWluZyBjb252ZW50aW9uLlxuICovXG5mdW5jdGlvbiBhZGRDbHV0ekFsaWFzZXMoXG4gICAgZmlsZU5hbWU6IHN0cmluZywgZHRzRmlsZUNvbnRlbnQ6IHN0cmluZywgc291cmNlRmlsZTogdHMuU291cmNlRmlsZSxcbiAgICB0eXBlQ2hlY2tlcjogdHMuVHlwZUNoZWNrZXIsIGhvc3Q6IFRzaWNrbGVIb3N0KTogc3RyaW5nIHtcbiAgY29uc3QgbW9kdWxlU3ltYm9sID0gdHlwZUNoZWNrZXIuZ2V0U3ltYm9sQXRMb2NhdGlvbihzb3VyY2VGaWxlKTtcbiAgY29uc3QgbW9kdWxlRXhwb3J0cyA9IG1vZHVsZVN5bWJvbCAmJiB0eXBlQ2hlY2tlci5nZXRFeHBvcnRzT2ZNb2R1bGUobW9kdWxlU3ltYm9sKTtcbiAgaWYgKCFtb2R1bGVFeHBvcnRzKSByZXR1cm4gZHRzRmlsZUNvbnRlbnQ7XG5cbiAgLy8gLmQudHMgZmlsZXMgY2FuIGJlIHRyYW5zZm9ybWVkLCB0b28sIHNvIHdlIG5lZWQgdG8gY29tcGFyZSB0aGUgb3JpZ2luYWwgbm9kZSBiZWxvdy5cbiAgY29uc3Qgb3JpZ1NvdXJjZUZpbGUgPSB0cy5nZXRPcmlnaW5hbE5vZGUoc291cmNlRmlsZSk7XG4gIC8vIFRoZSBtb2R1bGUgZXhwb3J0cyBtaWdodCBiZSByZS1leHBvcnRzLCBhbmQgaW4gdGhlIGNhc2Ugb2YgXCJleHBvcnQgKlwiIG1pZ2h0IG5vdCBldmVuIGJlXG4gIC8vIGF2YWlsYWJsZSBpbiB0aGUgbW9kdWxlIHNjb3BlLCB3aGljaCBtYWtlcyB0aGVtIGRpZmZpY3VsdCB0byBleHBvcnQuIEF2b2lkIHRoZSBwcm9ibGVtIGJ5XG4gIC8vIGZpbHRlcmluZyBvdXQgc3ltYm9scyB3aG8gZG8gbm90IGhhdmUgYSBkZWNsYXJhdGlvbiBpbiB0aGUgbG9jYWwgbW9kdWxlLlxuICBjb25zdCBsb2NhbEV4cG9ydHMgPSBtb2R1bGVFeHBvcnRzLmZpbHRlcihlID0+IHtcbiAgICAvLyBJZiB0aGVyZSBhcmUgbm8gZGVjbGFyYXRpb25zLCBiZSBjb25zZXJ2YXRpdmUgYW5kIGVtaXQgdGhlIGFsaWFzZXMuXG4gICAgaWYgKCFlLmRlY2xhcmF0aW9ucykgcmV0dXJuIHRydWU7XG4gICAgLy8gU2tpcCBkZWZhdWx0IGV4cG9ydHMsIHRoZXkgYXJlIG5vdCBjdXJyZW50bHkgc3VwcG9ydGVkLlxuICAgIC8vIGRlZmF1bHQgaXMgYSBrZXl3b3JkIGluIHR5cGVzY3JpcHQsIHNvIHRoZSBuYW1lIG9mIHRoZSBleHBvcnQgYmVpbmcgZGVmYXVsdCBtZWFucyB0aGF0IGl0J3MgYVxuICAgIC8vIGRlZmF1bHQgZXhwb3J0LlxuICAgIGlmIChlLm5hbWUgPT09ICdkZWZhdWx0JykgcmV0dXJuIGZhbHNlO1xuICAgIC8vIE90aGVyd2lzZSBjaGVjayB0aGF0IHNvbWUgZGVjbGFyYXRpb24gaXMgZnJvbSB0aGUgbG9jYWwgbW9kdWxlLlxuICAgIHJldHVybiBlLmRlY2xhcmF0aW9ucy5zb21lKGQgPT4gZC5nZXRTb3VyY2VGaWxlKCkgPT09IG9yaWdTb3VyY2VGaWxlKTtcbiAgfSk7XG4gIGlmICghbG9jYWxFeHBvcnRzLmxlbmd0aCkgcmV0dXJuIGR0c0ZpbGVDb250ZW50O1xuXG4gIC8vIFR5cGVTY3JpcHQgMi44IGFuZCBUeXBlU2NyaXB0IDIuOSBkaWZmZXIgb24gdGhlIG9yZGVyIGluIHdoaWNoIHRoZVxuICAvLyBtb2R1bGUgc3ltYm9scyBjb21lIG91dCwgc28gc29ydCBoZXJlIHRvIG1ha2UgdGhlIHRlc3RzIHN0YWJsZS5cbiAgbG9jYWxFeHBvcnRzLnNvcnQoKGEsIGIpID0+IHN0cmluZ0NvbXBhcmUoYS5uYW1lLCBiLm5hbWUpKTtcblxuICBjb25zdCBtb2R1bGVOYW1lID0gaG9zdC5wYXRoVG9Nb2R1bGVOYW1lKCcnLCBzb3VyY2VGaWxlLmZpbGVOYW1lKTtcbiAgY29uc3QgY2x1dHpNb2R1bGVOYW1lID0gbW9kdWxlTmFtZS5yZXBsYWNlKC9cXC4vZywgJyQnKTtcblxuICAvLyBDbHV0eiBtaWdodCByZWZlciB0byB0aGUgbmFtZSBpbiB0d28gZGlmZmVyZW50IGZvcm1zIChzdGVtbWluZyBmcm9tIGdvb2cucHJvdmlkZSBhbmRcbiAgLy8gZ29vZy5tb2R1bGUgcmVzcGVjdGl2ZWx5KS5cbiAgLy8gMSkgZ2xvYmFsIGluIGNsdXR6OiAgIOCyoF/gsqAuY2x1dHoubW9kdWxlJGNvbnRlbnRzJHBhdGgkdG8kbW9kdWxlX1N5bWJvbC4uLlxuICAvLyAyKSBsb2NhbCBpbiBhIG1vZHVsZTog4LKgX+CyoC5jbHV0ei5tb2R1bGUkZXhwb3J0cyRwYXRoJHRvJG1vZHVsZS5TeW1ib2wgLi5cbiAgLy8gU2VlIGV4YW1wbGVzIGF0OlxuICAvLyBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9jbHV0ei90cmVlL21hc3Rlci9zcmMvdGVzdC9qYXZhL2NvbS9nb29nbGUvamF2YXNjcmlwdC9jbHV0elxuXG4gIC8vIENhc2UgKDEpIGZyb20gYWJvdmUuXG4gIGxldCBnbG9iYWxTeW1ib2xzID0gJyc7XG4gIC8vIENhc2UgKDIpIGZyb20gYWJvdmUuXG4gIGxldCBuZXN0ZWRTeW1ib2xzID0gJyc7XG4gIGZvciAoY29uc3Qgc3ltYm9sIG9mIGxvY2FsRXhwb3J0cykge1xuICAgIGdsb2JhbFN5bWJvbHMgKz1cbiAgICAgICAgYFxcdFxcdGV4cG9ydCB7JHtzeW1ib2wubmFtZX0gYXMgbW9kdWxlJGNvbnRlbnRzJCR7Y2x1dHpNb2R1bGVOYW1lfV8ke3N5bWJvbC5uYW1lfX1cXG5gO1xuICAgIG5lc3RlZFN5bWJvbHMgKz1cbiAgICAgICAgYFxcdFxcdGV4cG9ydCB7bW9kdWxlJGNvbnRlbnRzJCR7Y2x1dHpNb2R1bGVOYW1lfV8ke3N5bWJvbC5uYW1lfSBhcyAke3N5bWJvbC5uYW1lfX1cXG5gO1xuICAgIGlmIChzeW1ib2wuZmxhZ3MgJiB0cy5TeW1ib2xGbGFncy5DbGFzcykge1xuICAgICAgZ2xvYmFsU3ltYm9scyArPSBgXFx0XFx0ZXhwb3J0IHske3N5bWJvbC5uYW1lfSBhcyBtb2R1bGUkY29udGVudHMkJHtjbHV0ek1vZHVsZU5hbWV9XyR7XG4gICAgICAgICAgc3ltYm9sLm5hbWV9X0luc3RhbmNlfVxcbmA7XG4gICAgICBuZXN0ZWRTeW1ib2xzICs9IGBcXHRcXHRleHBvcnQge21vZHVsZSRjb250ZW50cyQke2NsdXR6TW9kdWxlTmFtZX1fJHtzeW1ib2wubmFtZX0gYXMgJHtcbiAgICAgICAgICBzeW1ib2wubmFtZX1fSW5zdGFuY2V9XFxuYDtcbiAgICB9XG4gIH1cblxuICBkdHNGaWxlQ29udGVudCArPSAnZGVjbGFyZSBnbG9iYWwge1xcbic7XG4gIGR0c0ZpbGVDb250ZW50ICs9IGBcXHRuYW1lc3BhY2Ug4LKgX+CyoC5jbHV0eiB7XFxuYDtcbiAgZHRzRmlsZUNvbnRlbnQgKz0gZ2xvYmFsU3ltYm9scztcbiAgZHRzRmlsZUNvbnRlbnQgKz0gYFxcdH1cXG5gO1xuICBkdHNGaWxlQ29udGVudCArPSBgXFx0bmFtZXNwYWNlIOCyoF/gsqAuY2x1dHoubW9kdWxlJGV4cG9ydHMkJHtjbHV0ek1vZHVsZU5hbWV9IHtcXG5gO1xuICBkdHNGaWxlQ29udGVudCArPSBuZXN0ZWRTeW1ib2xzO1xuICBkdHNGaWxlQ29udGVudCArPSBgXFx0fVxcbmA7XG4gIGR0c0ZpbGVDb250ZW50ICs9ICd9XFxuJztcblxuICByZXR1cm4gZHRzRmlsZUNvbnRlbnQ7XG59XG5cbmZ1bmN0aW9uIHNraXBUcmFuc2Zvcm1Gb3JTb3VyY2VGaWxlSWZOZWVkZWQoXG4gICAgaG9zdDogVHNpY2tsZUhvc3QsXG4gICAgZGVsZWdhdGVGYWN0b3J5OiB0cy5UcmFuc2Zvcm1lckZhY3Rvcnk8dHMuU291cmNlRmlsZT4pOiB0cy5UcmFuc2Zvcm1lckZhY3Rvcnk8dHMuU291cmNlRmlsZT4ge1xuICByZXR1cm4gKGNvbnRleHQ6IHRzLlRyYW5zZm9ybWF0aW9uQ29udGV4dCkgPT4ge1xuICAgIGNvbnN0IGRlbGVnYXRlID0gZGVsZWdhdGVGYWN0b3J5KGNvbnRleHQpO1xuICAgIHJldHVybiAoc291cmNlRmlsZTogdHMuU291cmNlRmlsZSkgPT4ge1xuICAgICAgaWYgKGhvc3Quc2hvdWxkU2tpcFRzaWNrbGVQcm9jZXNzaW5nKHNvdXJjZUZpbGUuZmlsZU5hbWUpKSB7XG4gICAgICAgIHJldHVybiBzb3VyY2VGaWxlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGRlbGVnYXRlKHNvdXJjZUZpbGUpO1xuICAgIH07XG4gIH07XG59XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHNpY2tsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy90c2lja2xlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBRUgsK0JBQWlDO0lBR2pDLHVEQUE2QztJQUM3QywrRkFBZ0Y7SUFDaEYsaUVBQW1EO0lBQ25ELCtDQUEwQztJQUMxQyxpR0FBdUY7SUFDdkYsbURBQTJDO0lBQzNDLG1FQUEyRTtJQUMzRSxpRUFBbUQ7SUFDbkQsdUVBQXlEO0lBQ3pELGlFQUFpRDtJQUVqRCx1Q0FBdUM7SUFDdkMsK0NBQThDO0lBQXRDLHdDQUFBLG1CQUFtQixDQUFBO0lBQzNCLGlFQUE0RDtJQUEzQyw2Q0FBQSxlQUFlLENBQUE7SUE4QmhDLFNBQWdCLGdCQUFnQixDQUFDLFdBQXlCOztRQUN4RCxJQUFNLFdBQVcsR0FBb0IsRUFBRSxDQUFDO1FBQ3hDLElBQUksV0FBVyxHQUFHLElBQUksQ0FBQztRQUN2QixJQUFNLFlBQVksR0FBYSxFQUFFLENBQUM7UUFDbEMsSUFBTSxPQUFPLEdBQWlDLEVBQUUsQ0FBQztRQUNqRCxJQUFNLGVBQWUsR0FBRyxJQUFJLGtDQUFlLEVBQUUsQ0FBQzs7WUFDOUMsS0FBaUIsSUFBQSxnQkFBQSxTQUFBLFdBQVcsQ0FBQSx3Q0FBQSxpRUFBRTtnQkFBekIsSUFBTSxFQUFFLHdCQUFBO2dCQUNYLFdBQVcsQ0FBQyxJQUFJLE9BQWhCLFdBQVcsV0FBUyxFQUFFLENBQUMsV0FBVyxHQUFFO2dCQUNwQyxXQUFXLEdBQUcsV0FBVyxJQUFJLEVBQUUsQ0FBQyxXQUFXLENBQUM7Z0JBQzVDLFlBQVksQ0FBQyxJQUFJLE9BQWpCLFlBQVksV0FBUyxFQUFFLENBQUMsWUFBWSxHQUFFO2dCQUN0QyxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQ25D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QUMsSUFBSSxRQUFLLENBQUM7YUFDMUY7Ozs7Ozs7OztRQUVELGNBQWMsSUFBSSxvQkFBb0IsQ0FBQztRQUN2QyxjQUFjLElBQUkscUNBQTJCLENBQUM7UUFDOUMsY0FBYyxJQUFJLGFBQWEsQ0FBQztRQUNoQyxjQUFjLElBQUksT0FBTyxDQUFDO1FBQzFCLGNBQWMsSUFBSSxvREFBd0MsZUFBZSxTQUFNLENBQUM7UUFDaEYsY0FBYyxJQUFJLGFBQWEsQ0FBQztRQUNoQyxjQUFjLElBQUksT0FBTyxDQUFDO1FBQzFCLGNBQWMsSUFBSSxLQUFLLENBQUM7UUFFeEIsT0FBTyxjQUFjLENBQUM7SUFDeEIsQ0FBQztJQUVELFNBQVMsa0NBQWtDLENBQ3ZDLElBQWlCLEVBQ2pCLGVBQXFEO1FBQ3ZELE9BQU8sVUFBQyxPQUFpQztZQUN2QyxJQUFNLFFBQVEsR0FBRyxlQUFlLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDMUMsT0FBTyxVQUFDLFVBQXlCO2dCQUMvQixJQUFJLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLEVBQUU7b0JBQ3pELE9BQU8sVUFBVSxDQUFDO2lCQUNuQjtnQkFDRCxPQUFPLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUM5QixDQUFDLENBQUM7UUFDSixDQUFDLENBQUM7SUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQgKiBhcyB0cyBmcm9tICd0eXBlc2NyaXB0JztcblxuaW1wb3J0IHtBbm5vdGF0b3JIb3N0fSBmcm9tICcuL2Fubm90YXRvcl9ob3N0JztcbmltcG9ydCB7YXNzZXJ0QWJzb2x1dGV9IGZyb20gJy4vY2xpX3N1cHBvcnQnO1xuaW1wb3J0IHtkZWNvcmF0b3JEb3dubGV2ZWxUcmFuc2Zvcm1lcn0gZnJvbSAnLi9kZWNvcmF0b3JfZG93bmxldmVsX3RyYW5zZm9ybWVyJztcbmltcG9ydCB7ZW51bVRyYW5zZm9ybWVyfSBmcm9tICcuL2VudW1fdHJhbnNmb3JtZXInO1xuaW1wb3J0IHtnZW5lcmF0ZUV4dGVybnN9IGZyb20gJy4vZXh0ZXJucyc7XG5pbXBvcnQge3RyYW5zZm9ybUZpbGVvdmVydmlld0NvbW1lbnRGYWN0b3J5fSBmcm9tICcuL2ZpbGVvdmVydmlld19jb21tZW50X3RyYW5zZm9ybWVyJztcbmltcG9ydCAqIGFzIGdvb2dtb2R1bGUgZnJvbSAnLi9nb29nbW9kdWxlJztcbmltcG9ydCB7anNkb2NUcmFuc2Zvcm1lciwgcmVtb3ZlVHlwZUFzc2VydGlvbnN9IGZyb20gJy4vanNkb2NfdHJhbnNmb3JtZXInO1xuaW1wb3J0IHtNb2R1bGVzTWFuaWZlc3R9IGZyb20gJy4vbW9kdWxlc19tYW5pZmVzdCc7XG5pbXBvcnQge3F1b3RpbmdUcmFuc2Zvcm1lcn0gZnJvbSAnLi9xdW90aW5nX3RyYW5zZm9ybWVyJztcbmltcG9ydCB7aXNEdHNGaWxlTmFtZX0gZnJvbSAnLi90cmFuc2Zvcm1lcl91dGlsJztcblxuLy8gUmV0YWluZWQgaGVyZSBmb3IgQVBJIGNvbXBhdGliaWxpdHkuXG5leHBvcnQge2dldEdlbmVyYXRlZEV4dGVybnN9IGZyb20gJy4vZXh0ZXJucyc7XG5leHBvcnQge0ZpbGVNYXAsIE1vZHVsZXNNYW5pZmVzdH0gZnJvbSAnLi9tb2R1bGVzX21hbmlmZXN0JztcblxuZXhwb3J0IGludGVyZmFjZSBUc2lja2xlSG9zdCBleHRlbmRzIGdvb2dtb2R1bGUuR29vZ01vZHVsZVByb2Nlc3Nvckhvc3QsIEFubm90YXRvckhvc3Qge1xuICAvKipcbiAgICogV2hldGhlciB0byBkb3dubGV2ZWwgZGVjb3JhdG9yc1xuICAgKi9cbiAgdHJhbnNmb3JtRGVjb3JhdG9ycz86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGNvbnZlcnMgdHlwZXMgdG8gY2xvc3VyZVxuICAgKi9cbiAgdHJhbnNmb3JtVHlwZXNUb0Nsb3N1cmU/OiBib29sZWFuO1xuICAvKipcbiAgICogV2hldGhlciB0byBhZGQgYWxpYXNlcyB0byB0aGUgLmQudHMgZmlsZXMgdG8gYWRkIHRoZSBleHBvcnRzIHRvIHRoZVxuICAgKiDgsqBf4LKgLmNsdXR6IG5hbWVzcGFjZS5cbiAgICovXG4gIGFkZER0c0NsdXR6QWxpYXNlcz86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBJZiB0cnVlLCB0c2lja2xlIGFuZCBkZWNvcmF0b3IgZG93bmxldmVsIHByb2Nlc3Npbmcgd2lsbCBiZSBza2lwcGVkIGZvclxuICAgKiB0aGF0IGZpbGUuXG4gICAqL1xuICBzaG91bGRTa2lwVHNpY2tsZVByb2Nlc3NpbmcoZmlsZU5hbWU6IHN0cmluZyk6IGJvb2xlYW47XG4gIC8qKlxuICAgKiBUc2lja2xlIHRyZWF0cyB3YXJuaW5ncyBhcyBlcnJvcnMsIGlmIHRydWUsIGlnbm9yZSB3YXJuaW5ncy4gIFRoaXMgbWlnaHQgYmVcbiAgICogdXNlZnVsIGZvciBlLmcuIHRoaXJkIHBhcnR5IGNvZGUuXG4gICAqL1xuICBzaG91bGRJZ25vcmVXYXJuaW5nc0ZvclBhdGgoZmlsZVBhdGg6IHN0cmluZyk6IGJvb2xlYW47XG4gIC8qKiBXaGV0aGVyIHRvIGNvbnZlcnQgQ29tbW9uSlMgcmVxdWlyZSgpIGltcG9ydHMgdG8gZ29vZy5tb2R1bGUoKSBhbmQgZ29vZy5yZXF1aXJlKCkgY2FsbHMuICovXG4gIGdvb2dtb2R1bGU6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtZXJnZUVtaXRSZXN1bHRzKGVtaXRSZXN1bHRzOiBFbWl0UmVzdWx0W10pOiBFbWl0UmVzdWx0IHtcbiAgY29uc3QgZGlhZ25vc3RpY3M6IHRzLkRpYWdub3N0aWNbXSA9IFtdO1xuICBsZXQgZW1pdFNraXBwZWQgPSB0cnVlO1xuICBjb25zdCBlbWl0dGVkRmlsZXM6IHN0cmluZ1tdID0gW107XG4gIGNvbnN0IGV4dGVybnM6IHtbZmlsZU5hbWU6IHN0cmluZ106IHN0cmluZ30gPSB7fTtcbiAgY29uc3QgbW9kdWxlc01hbmlmZXN0ID0gbmV3IE1vZHVsZXNNYW5pZmVzdCgpO1xuICBmb3IgKGNvbnN0IGVyIG9mIGVtaXRSZXN1bHRzKSB7XG4gICAgZGlhZ25vc3RpY3MucHVzaCguLi5lci5kaWFnbm9zdGljcyk7XG4gICAgZW1pdFNraXBwZWQgPSBlbWl0U2tpcHBlZCB8fCBlci5lbWl0U2tpcHBlZDtcbiAgICBlbWl0dGVkRmlsZXMucHVzaCguLi5lci5lbWl0dGVkRmlsZXMpO1xuICAgIE9iamVjdC5hc3NpZ24oZXh0ZXJucywgZXIuZXh0ZXJucyk7XG4gICAgbW9kdWxlc01hbmlmZXN0LmFkZE1hbmlmZXN0KGVyLm1vZHVsZXNNYW5pZmVzdCk7XG4gIH1cbiAgcmV0dXJuIHtkaWFnbm9zdGljcywgZW1pdFNraXBwZWQsIGVtaXR0ZWRGaWxlcywgZXh0ZXJucywgbW9kdWxlc01hbmlmZXN0fTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFbWl0UmVzdWx0IGV4dGVuZHMgdHMuRW1pdFJlc3VsdCB7XG4gIC8vIFRoZSBtYW5pZmVzdCBvZiBKUyBtb2R1bGVzIG91dHB1dCBieSB0aGUgY29tcGlsZXIuXG4gIG1vZHVsZXNNYW5pZmVzdDogTW9kdWxlc01hbmlmZXN0O1xuICAvKipcbiAgICogZXh0ZXJucy5qcyBmaWxlcyBwcm9kdWNlZCBieSB0c2lja2xlLCBpZiBhbnkuIG1vZHVsZSBJRHMgYXJlIHJlbGF0aXZlIHBhdGhzIGZyb21cbiAgICogZmlsZU5hbWVUb01vZHVsZUlkLlxuICAgKi9cbiAgZXh0ZXJuczoge1ttb2R1bGVJZDogc3RyaW5nXTogc3RyaW5nfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFbWl0VHJhbnNmb3JtZXJzIHtcbiAgLyoqIEN1c3RvbSB0cmFuc2Zvcm1lcnMgdG8gZXZhbHVhdGUgYmVmb3JlIFRzaWNrbGUgLmpzIHRyYW5zZm9ybWF0aW9ucy4gKi9cbiAgYmVmb3JlVHNpY2tsZT86IEFycmF5PHRzLlRyYW5zZm9ybWVyRmFjdG9yeTx0cy5Tb3VyY2VGaWxlPj47XG4gIC8qKiBDdXN0b20gdHJhbnNmb3JtZXJzIHRvIGV2YWx1YXRlIGJlZm9yZSBidWlsdC1pbiAuanMgdHJhbnNmb3JtYXRpb25zLiAqL1xuICBiZWZvcmVUcz86IEFycmF5PHRzLlRyYW5zZm9ybWVyRmFjdG9yeTx0cy5Tb3VyY2VGaWxlPj47XG4gIC8qKiBDdXN0b20gdHJhbnNmb3JtZXJzIHRvIGV2YWx1YXRlIGFmdGVyIGJ1aWx0LWluIC5qcyB0cmFuc2Zvcm1hdGlvbnMuICovXG4gIGFmdGVyVHM/OiBBcnJheTx0cy5UcmFuc2Zvcm1lckZhY3Rvcnk8dHMuU291cmNlRmlsZT4+O1xuICAvKiogQ3VzdG9tIHRyYW5zZm9ybWVycyB0byBldmFsdWF0ZSBhZnRlciBidWlsdC1pbiAuZC50cyB0cmFuc2Zvcm1hdGlvbnMuICovXG4gIGFmdGVyRGVjbGFyYXRpb25zPzogQXJyYXk8dHMuVHJhbnNmb3JtZXJGYWN0b3J5PHRzLkJ1bmRsZXx0cy5Tb3VyY2VGaWxlPj47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlbWl0V2l0aFRzaWNrbGUoXG4gICAgcHJvZ3JhbTogdHMuUHJvZ3JhbSwgaG9zdDogVHNpY2tsZUhvc3QsIHRzSG9zdDogdHMuQ29tcGlsZXJIb3N0LCB0c09wdGlvbnM6IHRzLkNvbXBpbGVyT3B0aW9ucyxcbiAgICB0YXJnZXRTb3VyY2VGaWxlPzogdHMuU291cmNlRmlsZSwgd3JpdGVGaWxlPzogdHMuV3JpdGVGaWxlQ2FsbGJhY2ssXG4gICAgY2FuY2VsbGF0aW9uVG9rZW4/OiB0cy5DYW5jZWxsYXRpb25Ub2tlbiwgZW1pdE9ubHlEdHNGaWxlcz86IGJvb2xlYW4sXG4gICAgY3VzdG9tVHJhbnNmb3JtZXJzOiBFbWl0VHJhbnNmb3JtZXJzID0ge30pOiBFbWl0UmVzdWx0IHtcbiAgZm9yIChjb25zdCBzZiBvZiBwcm9ncmFtLmdldFNvdXJjZUZpbGVzKCkpIHtcbiAgICBhc3NlcnRBYnNvbHV0ZShzZi5maWxlTmFtZSk7XG4gIH1cblxuICBsZXQgdHNpY2tsZURpYWdub3N0aWNzOiB0cy5EaWFnbm9zdGljW10gPSBbXTtcbiAgY29uc3QgdHlwZUNoZWNrZXIgPSBwcm9ncmFtLmdldFR5cGVDaGVja2VyKCk7XG4gIGNvbnN0IHRzaWNrbGVTb3VyY2VUcmFuc2Zvcm1lcnM6IEFycmF5PHRzLlRyYW5zZm9ybWVyRmFjdG9yeTx0cy5Tb3VyY2VGaWxlPj4gPSBbXTtcbiAgaWYgKGhvc3QudHJhbnNmb3JtVHlwZXNUb0Nsb3N1cmUpIHtcbiAgICAvLyBPbmx5IGFkZCBAc3VwcHJlc3Mge2NoZWNrVHlwZXN9IGNvbW1lbnRzIHdoZW4gYWxzbyBhZGRpbmcgdHlwZSBhbm5vdGF0aW9ucy5cbiAgICB0c2lja2xlU291cmNlVHJhbnNmb3JtZXJzLnB1c2godHJhbnNmb3JtRmlsZW92ZXJ2aWV3Q29tbWVudEZhY3RvcnkodHNpY2tsZURpYWdub3N0aWNzKSk7XG4gICAgdHNpY2tsZVNvdXJjZVRyYW5zZm9ybWVycy5wdXNoKFxuICAgICAgICBqc2RvY1RyYW5zZm9ybWVyKGhvc3QsIHRzT3B0aW9ucywgdHNIb3N0LCB0eXBlQ2hlY2tlciwgdHNpY2tsZURpYWdub3N0aWNzKSk7XG4gICAgaWYgKGhvc3QuZW5hYmxlQXV0b1F1b3RpbmcpIHtcbiAgICAgIHRzaWNrbGVTb3VyY2VUcmFuc2Zvcm1lcnMucHVzaChxdW90aW5nVHJhbnNmb3JtZXIoaG9zdCwgdHlwZUNoZWNrZXIsIHRzaWNrbGVEaWFnbm9zdGljcykpO1xuICAgIH1cbiAgICB0c2lja2xlU291cmNlVHJhbnNmb3JtZXJzLnB1c2goZW51bVRyYW5zZm9ybWVyKHR5cGVDaGVja2VyLCB0c2lja2xlRGlhZ25vc3RpY3MpKTtcbiAgICB0c2lja2xlU291cmNlVHJhbnNmb3JtZXJzLnB1c2goZGVjb3JhdG9yRG93bmxldmVsVHJhbnNmb3JtZXIodHlwZUNoZWNrZXIsIHRzaWNrbGVEaWFnbm9zdGljcykpO1xuICB9IGVsc2UgaWYgKGhvc3QudHJhbnNmb3JtRGVjb3JhdG9ycykge1xuICAgIHRzaWNrbGVTb3VyY2VUcmFuc2Zvcm1lcnMucHVzaChkZWNvcmF0b3JEb3dubGV2ZWxUcmFuc2Zvcm1lcih0eXBlQ2hlY2tlciwgdHNpY2tsZURpYWdub3N0aWNzKSk7XG4gIH1cbiAgY29uc3QgbW9kdWxlc01hbmlmZXN0ID0gbmV3IE1vZHVsZXNNYW5pZmVzdCgpO1xuICBjb25zdCB0c2lja2xlVHJhbnNmb3JtZXJzOiB0cy5DdXN0b21UcmFuc2Zvcm1lcnMgPSB7YmVmb3JlOiB0c2lja2xlU291cmNlVHJhbnNmb3JtZXJzfTtcbiAgY29uc3QgdHNUcmFuc2Zvcm1lcnM6IHRzLkN1c3RvbVRyYW5zZm9ybWVycyA9IHtcbiAgICBiZWZvcmU6IFtcbiAgICAgIC4uLihjdXN0b21UcmFuc2Zvcm1lcnMuYmVmb3JlVHNpY2tsZSB8fCBbXSksXG4gICAgICAuLi4odHNpY2tsZVRyYW5zZm9ybWVycy5iZWZvcmUgfHwgW10pLm1hcCh0ZiA9PiBza2lwVHJhbnNmb3JtRm9yU291cmNlRmlsZUlmTmVlZGVkKGhvc3QsIHRmKSksXG4gICAgICAuLi4oY3VzdG9tVHJhbnNmb3JtZXJzLmJlZm9yZVRzIHx8IFtdKSxcbiAgICBdLFxuICAgIGFmdGVyOiBbXG4gICAgICAuLi4oY3VzdG9tVHJhbnNmb3JtZXJzLmFmdGVyVHMgfHwgW10pLFxuICAgICAgLi4uKHRzaWNrbGVUcmFuc2Zvcm1lcnMuYWZ0ZXIgfHwgW10pLm1hcCh0ZiA9PiBza2lwVHJhbnNmb3JtRm9yU291cmNlRmlsZUlmTmVlZGVkKGhvc3QsIHRmKSksXG4gICAgXSxcbiAgICBhZnRlckRlY2xhcmF0aW9uczogY3VzdG9tVHJhbnNmb3JtZXJzLmFmdGVyRGVjbGFyYXRpb25zLFxuICB9O1xuICBpZiAoaG9zdC50cmFuc2Zvcm1UeXBlc1RvQ2xvc3VyZSkge1xuICAgIC8vIFNlZSBjb21tZW50IG9uIHJlbW90ZVR5cGVBc3NlcnRpb25zLlxuICAgIHRzVHJhbnNmb3JtZXJzLmJlZm9yZSEucHVzaChyZW1vdmVUeXBlQXNzZXJ0aW9ucygpKTtcbiAgfVxuICBpZiAoaG9zdC5nb29nbW9kdWxlKSB7XG4gICAgdHNUcmFuc2Zvcm1lcnMuYWZ0ZXIhLnB1c2goZ29vZ21vZHVsZS5jb21tb25Kc1RvR29vZ21vZHVsZVRyYW5zZm9ybWVyKFxuICAgICAgICBob3N0LCBtb2R1bGVzTWFuaWZlc3QsIHR5cGVDaGVja2VyLCB0c2lja2xlRGlhZ25vc3RpY3MpKTtcbiAgfVxuXG4gIGNvbnN0IHdyaXRlRmlsZURlbGVnYXRlOiB0cy5Xcml0ZUZpbGVDYWxsYmFjayA9IHdyaXRlRmlsZSB8fCB0c0hvc3Qud3JpdGVGaWxlLmJpbmQodHNIb3N0KTtcbiAgY29uc3Qgd3JpdGVGaWxlSW1wbDogdHMuV3JpdGVGaWxlQ2FsbGJhY2sgPVxuICAgICAgKGZpbGVOYW1lLCBjb250ZW50LCB3cml0ZUJ5dGVPcmRlck1hcmssIG9uRXJyb3IsIHNvdXJjZUZpbGVzKSA9PiB7XG4gICAgICAgIGFzc2VydEFic29sdXRlKGZpbGVOYW1lKTtcbiAgICAgICAgaWYgKGhvc3QuYWRkRHRzQ2x1dHpBbGlhc2VzICYmIGlzRHRzRmlsZU5hbWUoZmlsZU5hbWUpICYmIHNvdXJjZUZpbGVzKSB7XG4gICAgICAgICAgLy8gT25seSBidW5kbGUgZW1pdHMgcGFzcyBtb3JlIHRoYW4gb25lIHNvdXJjZSBmaWxlIGZvciAuZC50cyB3cml0ZXMuIEJ1bmRsZSBlbWl0cyBob3dldmVyXG4gICAgICAgICAgLy8gYXJlIG5vdCBzdXBwb3J0ZWQgYnkgdHNpY2tsZSwgYXMgd2UgY2Fubm90IGFubm90YXRlIHRoZW0gZm9yIENsb3N1cmUgaW4gYW55IG1lYW5pbmdmdWxcbiAgICAgICAgICAvLyB3YXkgYW55d2F5LlxuICAgICAgICAgIGlmICghc291cmNlRmlsZXMgfHwgc291cmNlRmlsZXMubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBleHBlY3RlZCBleGFjdGx5IG9uZSBzb3VyY2UgZmlsZSBmb3IgLmQudHMgZW1pdCwgZ290ICR7XG4gICAgICAgICAgICAgICAgc291cmNlRmlsZXMubWFwKHNmID0+IHNmLmZpbGVOYW1lKX1gKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3Qgb3JpZ2luYWxTb3VyY2UgPSBzb3VyY2VGaWxlc1swXTtcbiAgICAgICAgICBjb250ZW50ID0gYWRkQ2x1dHpBbGlhc2VzKGZpbGVOYW1lLCBjb250ZW50LCBvcmlnaW5hbFNvdXJjZSwgdHlwZUNoZWNrZXIsIGhvc3QpO1xuICAgICAgICB9XG4gICAgICAgIHdyaXRlRmlsZURlbGVnYXRlKGZpbGVOYW1lLCBjb250ZW50LCB3cml0ZUJ5dGVPcmRlck1hcmssIG9uRXJyb3IsIHNvdXJjZUZpbGVzKTtcbiAgICAgIH07XG5cbiAgY29uc3Qge2RpYWdub3N0aWNzOiB0c0RpYWdub3N0aWNzLCBlbWl0U2tpcHBlZCwgZW1pdHRlZEZpbGVzfSA9IHByb2dyYW0uZW1pdChcbiAgICAgIHRhcmdldFNvdXJjZUZpbGUsIHdyaXRlRmlsZUltcGwsIGNhbmNlbGxhdGlvblRva2VuLCBlbWl0T25seUR0c0ZpbGVzLCB0c1RyYW5zZm9ybWVycyk7XG5cbiAgY29uc3QgZXh0ZXJuczoge1tmaWxlTmFtZTogc3RyaW5nXTogc3RyaW5nfSA9IHt9O1xuICBpZiAoaG9zdC50cmFuc2Zvcm1UeXBlc1RvQ2xvc3VyZSkge1xuICAgIGNvbnN0IHNvdXJjZUZpbGVzID0gdGFyZ2V0U291cmNlRmlsZSA/IFt0YXJnZXRTb3VyY2VGaWxlXSA6IHByb2dyYW0uZ2V0U291cmNlRmlsZXMoKTtcbiAgICBmb3IgKGNvbnN0IHNvdXJjZUZpbGUgb2Ygc291cmNlRmlsZXMpIHtcbiAgICAgIGNvbnN0IGlzRHRzID0gaXNEdHNGaWxlTmFtZShzb3VyY2VGaWxlLmZpbGVOYW1lKTtcbiAgICAgIGlmIChpc0R0cyAmJiBob3N0LnNob3VsZFNraXBUc2lja2xlUHJvY2Vzc2luZyhzb3VyY2VGaWxlLmZpbGVOYW1lKSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHtvdXRwdXQsIGRpYWdub3N0aWNzfSA9XG4gICAgICAgICAgZ2VuZXJhdGVFeHRlcm5zKHR5cGVDaGVja2VyLCBzb3VyY2VGaWxlLCBob3N0LCBob3N0Lm1vZHVsZVJlc29sdXRpb25Ib3N0LCB0c09wdGlvbnMpO1xuICAgICAgaWYgKG91dHB1dCkge1xuICAgICAgICBleHRlcm5zW3NvdXJjZUZpbGUuZmlsZU5hbWVdID0gb3V0cHV0O1xuICAgICAgfVxuICAgICAgaWYgKGRpYWdub3N0aWNzKSB7XG4gICAgICAgIHRzaWNrbGVEaWFnbm9zdGljcy5wdXNoKC4uLmRpYWdub3N0aWNzKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgLy8gQWxsIGRpYWdub3N0aWNzIChpbmNsdWRpbmcgd2FybmluZ3MpIGFyZSB0cmVhdGVkIGFzIGVycm9ycy5cbiAgLy8gSWYgdGhlIGhvc3QgZGVjaWRlcyB0byBpZ25vcmUgd2FybmluZ3MsIGp1c3QgZGlzY2FyZCB0aGVtLlxuICAvLyBXYXJuaW5ncyBpbmNsdWRlIHN0dWZmIGxpa2UgXCJkb24ndCB1c2UgQHR5cGUgaW4geW91ciBqc2RvY1wiOyB0c2lja2xlXG4gIC8vIHdhcm5zIGFuZCB0aGVuIGZpeGVzIHVwIHRoZSBjb2RlIHRvIGJlIENsb3N1cmUtY29tcGF0aWJsZSBhbnl3YXkuXG4gIHRzaWNrbGVEaWFnbm9zdGljcyA9IHRzaWNrbGVEaWFnbm9zdGljcy5maWx0ZXIoXG4gICAgICBkID0+IGQuY2F0ZWdvcnkgPT09IHRzLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvciB8fFxuICAgICAgICAgICFob3N0LnNob3VsZElnbm9yZVdhcm5pbmdzRm9yUGF0aChkLmZpbGUhLmZpbGVOYW1lKSk7XG5cbiAgcmV0dXJuIHtcbiAgICBtb2R1bGVzTWFuaWZlc3QsXG4gICAgZW1pdFNraXBwZWQsXG4gICAgZW1pdHRlZEZpbGVzOiBlbWl0dGVkRmlsZXMgfHwgW10sXG4gICAgZGlhZ25vc3RpY3M6IFsuLi50c0RpYWdub3N0aWNzLCAuLi50c2lja2xlRGlhZ25vc3RpY3NdLFxuICAgIGV4dGVybnNcbiAgfTtcbn1cblxuLyoqIENvbXBhcmVzIHR3byBzdHJpbmdzIGFuZCByZXR1cm5zIGEgbnVtYmVyIHN1aXRhYmxlIGZvciB1c2UgaW4gc29ydCgpLiAqL1xuZnVuY3Rpb24gc3RyaW5nQ29tcGFyZShhOiBzdHJpbmcsIGI6IHN0cmluZyk6IG51bWJlciB7XG4gIGlmIChhIDwgYikgcmV0dXJuIC0xO1xuICBpZiAoYSA+IGIpIHJldHVybiAxO1xuICByZXR1cm4gMDtcbn1cblxuLyoqXG4gKiBBIHRzaWNrbGUgcHJvZHVjZWQgZGVjbGFyYXRpb24gZmlsZSBtaWdodCBiZSBjb25zdW1lZCBiZSByZWZlcmVuY2VkIGJ5IENsdXR6XG4gKiBwcm9kdWNlZCAuZC50cyBmaWxlcywgd2hpY2ggdXNlIHN5bWJvbCBuYW1lcyBiYXNlZCBvbiBDbG9zdXJlJ3MgaW50ZXJuYWxcbiAqIG5hbWluZyBjb252ZW50aW9ucywgc28gd2UgbmVlZCB0byBwcm92aWRlIGFsaWFzZXMgZm9yIGFsbCB0aGUgZXhwb3J0ZWQgc3ltYm9sc1xuICogaW4gdGhlIENsdXR6IG5hbWluZyBjb252ZW50aW9uLlxuICovXG5mdW5jdGlvbiBhZGRDbHV0ekFsaWFzZXMoXG4gICAgZmlsZU5hbWU6IHN0cmluZywgZHRzRmlsZUNvbnRlbnQ6IHN0cmluZywgc291cmNlRmlsZTogdHMuU291cmNlRmlsZSxcbiAgICB0eXBlQ2hlY2tlcjogdHMuVHlwZUNoZWNrZXIsIGhvc3Q6IFRzaWNrbGVIb3N0KTogc3RyaW5nIHtcbiAgY29uc3QgbW9kdWxlU3ltYm9sID0gdHlwZUNoZWNrZXIuZ2V0U3ltYm9sQXRMb2NhdGlvbihzb3VyY2VGaWxlKTtcbiAgY29uc3QgbW9kdWxlRXhwb3J0cyA9IG1vZHVsZVN5bWJvbCAmJiB0eXBlQ2hlY2tlci5nZXRFeHBvcnRzT2ZNb2R1bGUobW9kdWxlU3ltYm9sKTtcbiAgaWYgKCFtb2R1bGVFeHBvcnRzKSByZXR1cm4gZHRzRmlsZUNvbnRlbnQ7XG5cbiAgLy8gLmQudHMgZmlsZXMgY2FuIGJlIHRyYW5zZm9ybWVkLCB0b28sIHNvIHdlIG5lZWQgdG8gY29tcGFyZSB0aGUgb3JpZ2luYWwgbm9kZSBiZWxvdy5cbiAgY29uc3Qgb3JpZ1NvdXJjZUZpbGUgPSB0cy5nZXRPcmlnaW5hbE5vZGUoc291cmNlRmlsZSk7XG4gIC8vIFRoZSBtb2R1bGUgZXhwb3J0cyBtaWdodCBiZSByZS1leHBvcnRzLCBhbmQgaW4gdGhlIGNhc2Ugb2YgXCJleHBvcnQgKlwiIG1pZ2h0IG5vdCBldmVuIGJlXG4gIC8vIGF2YWlsYWJsZSBpbiB0aGUgbW9kdWxlIHNjb3BlLCB3aGljaCBtYWtlcyB0aGVtIGRpZmZpY3VsdCB0byBleHBvcnQuIEF2b2lkIHRoZSBwcm9ibGVtIGJ5XG4gIC8vIGZpbHRlcmluZyBvdXQgc3ltYm9scyB3aG8gZG8gbm90IGhhdmUgYSBkZWNsYXJhdGlvbiBpbiB0aGUgbG9jYWwgbW9kdWxlLlxuICBjb25zdCBsb2NhbEV4cG9ydHMgPSBtb2R1bGVFeHBvcnRzLmZpbHRlcihlID0+IHtcbiAgICAvLyBJZiB0aGVyZSBhcmUgbm8gZGVjbGFyYXRpb25zLCBiZSBjb25zZXJ2YXRpdmUgYW5kIGVtaXQgdGhlIGFsaWFzZXMuXG4gICAgaWYgKCFlLmRlY2xhcmF0aW9ucykgcmV0dXJuIHRydWU7XG4gICAgLy8gU2tpcCBkZWZhdWx0IGV4cG9ydHMsIHRoZXkgYXJlIG5vdCBjdXJyZW50bHkgc3VwcG9ydGVkLlxuICAgIC8vIGRlZmF1bHQgaXMgYSBrZXl3b3JkIGluIHR5cGVzY3JpcHQsIHNvIHRoZSBuYW1lIG9mIHRoZSBleHBvcnQgYmVpbmcgZGVmYXVsdCBtZWFucyB0aGF0IGl0J3MgYVxuICAgIC8vIGRlZmF1bHQgZXhwb3J0LlxuICAgIGlmIChlLm5hbWUgPT09ICdkZWZhdWx0JykgcmV0dXJuIGZhbHNlO1xuICAgIC8vIE90aGVyd2lzZSBjaGVjayB0aGF0IHNvbWUgZGVjbGFyYXRpb24gaXMgZnJvbSB0aGUgbG9jYWwgbW9kdWxlLlxuICAgIHJldHVybiBlLmRlY2xhcmF0aW9ucy5zb21lKGQgPT4gZC5nZXRTb3VyY2VGaWxlKCkgPT09IG9yaWdTb3VyY2VGaWxlKTtcbiAgfSk7XG4gIGlmICghbG9jYWxFeHBvcnRzLmxlbmd0aCkgcmV0dXJuIGR0c0ZpbGVDb250ZW50O1xuXG4gIC8vIFR5cGVTY3JpcHQgMi44IGFuZCBUeXBlU2NyaXB0IDIuOSBkaWZmZXIgb24gdGhlIG9yZGVyIGluIHdoaWNoIHRoZVxuICAvLyBtb2R1bGUgc3ltYm9scyBjb21lIG91dCwgc28gc29ydCBoZXJlIHRvIG1ha2UgdGhlIHRlc3RzIHN0YWJsZS5cbiAgbG9jYWxFeHBvcnRzLnNvcnQoKGEsIGIpID0+IHN0cmluZ0NvbXBhcmUoYS5uYW1lLCBiLm5hbWUpKTtcblxuICBjb25zdCBtb2R1bGVOYW1lID0gaG9zdC5wYXRoVG9Nb2R1bGVOYW1lKCcnLCBzb3VyY2VGaWxlLmZpbGVOYW1lKTtcbiAgY29uc3QgY2x1dHpNb2R1bGVOYW1lID0gbW9kdWxlTmFtZS5yZXBsYWNlKC9cXC4vZywgJyQnKTtcblxuICAvLyBDbHV0eiBtaWdodCByZWZlciB0byB0aGUgbmFtZSBpbiB0d28gZGlmZmVyZW50IGZvcm1zIChzdGVtbWluZyBmcm9tIGdvb2cucHJvdmlkZSBhbmRcbiAgLy8gZ29vZy5tb2R1bGUgcmVzcGVjdGl2ZWx5KS5cbiAgLy8gMSkgZ2xvYmFsIGluIGNsdXR6OiAgIOCyoF/gsqAuY2x1dHoubW9kdWxlJGNvbnRlbnRzJHBhdGgkdG8kbW9kdWxlX1N5bWJvbC4uLlxuICAvLyAyKSBsb2NhbCBpbiBhIG1vZHVsZTog4LKgX+CyoC5jbHV0ei5tb2R1bGUkZXhwb3J0cyRwYXRoJHRvJG1vZHVsZS5TeW1ib2wgLi5cbiAgLy8gU2VlIGV4YW1wbGVzIGF0OlxuICAvLyBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9jbHV0ei90cmVlL21hc3Rlci9zcmMvdGVzdC9qYXZhL2NvbS9nb29nbGUvamF2YXNjcmlwdC9jbHV0elxuXG4gIC8vIENhc2UgKDEpIGZyb20gYWJvdmUuXG4gIGxldCBnbG9iYWxTeW1ib2xzID0gJyc7XG4gIC8vIENhc2UgKDIpIGZyb20gYWJvdmUuXG4gIGxldCBuZXN0ZWRTeW1ib2xzID0gJyc7XG4gIGZvciAoY29uc3Qgc3ltYm9sIG9mIGxvY2FsRXhwb3J0cykge1xuICAgIGdsb2JhbFN5bWJvbHMgKz1cbiAgICAgICAgYFxcdFxcdGV4cG9ydCB7JHtzeW1ib2wubmFtZX0gYXMgbW9kdWxlJGNvbnRlbnRzJCR7Y2x1dHpNb2R1bGVOYW1lfV8ke3N5bWJvbC5uYW1lfX1cXG5gO1xuICAgIG5lc3RlZFN5bWJvbHMgKz1cbiAgICAgICAgYFxcdFxcdGV4cG9ydCB7bW9kdWxlJGNvbnRlbnRzJCR7Y2x1dHpNb2R1bGVOYW1lfV8ke3N5bWJvbC5uYW1lfSBhcyAke3N5bWJvbC5uYW1lfX1cXG5gO1xuICB9XG5cbiAgZHRzRmlsZUNvbnRlbnQgKz0gJ2RlY2xhcmUgZ2xvYmFsIHtcXG4nO1xuICBkdHNGaWxlQ29udGVudCArPSBgXFx0bmFtZXNwYWNlIOCyoF/gsqAuY2x1dHoge1xcbmA7XG4gIGR0c0ZpbGVDb250ZW50ICs9IGdsb2JhbFN5bWJvbHM7XG4gIGR0c0ZpbGVDb250ZW50ICs9IGBcXHR9XFxuYDtcbiAgZHRzRmlsZUNvbnRlbnQgKz0gYFxcdG5hbWVzcGFjZSDgsqBf4LKgLmNsdXR6Lm1vZHVsZSRleHBvcnRzJCR7Y2x1dHpNb2R1bGVOYW1lfSB7XFxuYDtcbiAgZHRzRmlsZUNvbnRlbnQgKz0gbmVzdGVkU3ltYm9scztcbiAgZHRzRmlsZUNvbnRlbnQgKz0gYFxcdH1cXG5gO1xuICBkdHNGaWxlQ29udGVudCArPSAnfVxcbic7XG5cbiAgcmV0dXJuIGR0c0ZpbGVDb250ZW50O1xufVxuXG5mdW5jdGlvbiBza2lwVHJhbnNmb3JtRm9yU291cmNlRmlsZUlmTmVlZGVkKFxuICAgIGhvc3Q6IFRzaWNrbGVIb3N0LFxuICAgIGRlbGVnYXRlRmFjdG9yeTogdHMuVHJhbnNmb3JtZXJGYWN0b3J5PHRzLlNvdXJjZUZpbGU+KTogdHMuVHJhbnNmb3JtZXJGYWN0b3J5PHRzLlNvdXJjZUZpbGU+IHtcbiAgcmV0dXJuIChjb250ZXh0OiB0cy5UcmFuc2Zvcm1hdGlvbkNvbnRleHQpID0+IHtcbiAgICBjb25zdCBkZWxlZ2F0ZSA9IGRlbGVnYXRlRmFjdG9yeShjb250ZXh0KTtcbiAgICByZXR1cm4gKHNvdXJjZUZpbGU6IHRzLlNvdXJjZUZpbGUpID0+IHtcbiAgICAgIGlmIChob3N0LnNob3VsZFNraXBUc2lja2xlUHJvY2Vzc2luZyhzb3VyY2VGaWxlLmZpbGVOYW1lKSkge1xuICAgICAgICByZXR1cm4gc291cmNlRmlsZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBkZWxlZ2F0ZShzb3VyY2VGaWxlKTtcbiAgICB9O1xuICB9O1xufVxuIl19

@@ -124,1 +124,3 @@ /**

}
/** @return true if sym should always have type {?}. */
export declare function isBlacklisted(pathBlackList: Set<string> | undefined, symbol: ts.Symbol): boolean;

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

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