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

@dataform/core

Package Overview
Dependencies
Maintainers
2
Versions
250
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@dataform/core - npm Package Compare versions

Comparing version 1.6.3 to 1.6.4

3

assertion.d.ts

@@ -10,3 +10,3 @@ /// <amd-module name="@dataform/core/assertion" />

}
export declare const IAssertionConfigProperties: ("database" | "description" | "type" | "name" | "tags" | "schema" | "dependencies")[];
export declare const IAssertionConfigProperties: ("database" | "description" | "type" | "name" | "tags" | "schema" | "dependencies" | "hermetic")[];
export declare type AContextable<T> = T | ((ctx: AssertionContext) => T);

@@ -20,2 +20,3 @@ export declare class Assertion {

dependencies(value: Resolvable | Resolvable[]): this;
hermetic(hermetic: boolean): void;
tags(value: string | string[]): this;

@@ -22,0 +23,0 @@ description(description: string): this;

@@ -21,3 +21,4 @@ (function (factory) {

"tags",
"dependencies"
"dependencies",
"hermetic"
]);

@@ -29,6 +30,9 @@ class Assertion {

config(config) {
utils_1.checkExcessProperties(config, exports.IAssertionConfigProperties, "assertion config");
utils_1.checkExcessProperties((e) => this.session.compileError(e), config, exports.IAssertionConfigProperties, "assertion config");
if (config.dependencies) {
this.dependencies(config.dependencies);
}
if (config.hermetic !== undefined) {
this.hermetic(config.hermetic);
}
if (config.tags) {

@@ -59,2 +63,7 @@ this.tags(config.tags);

}
hermetic(hermetic) {
this.proto.hermeticity = hermetic
? protos_1.dataform.ActionHermeticity.HERMETIC
: protos_1.dataform.ActionHermeticity.NON_HERMETIC;
}
tags(value) {

@@ -131,2 +140,2 @@ const newTags = typeof value === "string" ? [value] : value;

});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXJ0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS9hc3NlcnRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7SUFPQSxnREFNOEI7SUFDOUIsNkNBQTRDO0lBc0IvQixRQUFBLDBCQUEwQixHQUFHLG9CQUFZLEVBQW9CLENBQUM7UUFDekUsVUFBVTtRQUNWLFFBQVE7UUFDUixNQUFNO1FBQ04sYUFBYTtRQUNiLE1BQU07UUFDTixNQUFNO1FBQ04sY0FBYztLQUNmLENBQUMsQ0FBQztJQVVILE1BQWEsU0FBUztRQUF0QjtZQUNTLFVBQUssR0FBd0IsaUJBQVEsQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUM7UUFnRmxFLENBQUM7UUF4RVEsTUFBTSxDQUFDLE1BQXdCO1lBQ3BDLDZCQUFxQixDQUFDLE1BQU0sRUFBRSxrQ0FBMEIsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO1lBQzlFLElBQUksTUFBTSxDQUFDLFlBQVksRUFBRTtnQkFDdkIsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7YUFDeEM7WUFDRCxJQUFJLE1BQU0sQ0FBQyxJQUFJLEVBQUU7Z0JBQ2YsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDeEI7WUFDRCxJQUFJLE1BQU0sQ0FBQyxXQUFXLEVBQUU7Z0JBQ3RCLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO2FBQ3RDO1lBQ0QsSUFBSSxNQUFNLENBQUMsUUFBUSxFQUFFO2dCQUNuQixJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQzthQUNoQztZQUNELElBQUksTUFBTSxDQUFDLE1BQU0sRUFBRTtnQkFDakIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7YUFDNUI7WUFDRCxPQUFPLElBQUks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LEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDOUIsSUFBSSxDQUFDLDBCQUFrQixDQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUM1QixNQUFNLE9BQU8sR0FBRyw4QkFBOEIsQ0FBQztnQkFDL0MsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7Z0JBQ3hELE9BQU8sRUFBRSxDQUFDO2FBQ1g7WUFDRCxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNqQyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDM0IsQ0FBQztRQUVNLE9BQU8sQ0FBQyxHQUEwQixFQUFFLEdBQUcsSUFBYztZQUMxRCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxvQkFBWSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ2pFLENBQUM7UUFFTSxZQUFZLENBQUMsSUFBK0I7WUFDakQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDbEMsT0FBTyxFQUFFLENBQUM7UUFDWixDQUFDO1FBQ00sSUFBSSxDQUFDLElBQXVCO1lBQ2pDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzFCLE9BQU8sRUFBRSxDQUFDO1FBQ1osQ0FBQztRQUVNLEtBQUssQ0FBSSxLQUFzQjtZQUNwQyxJQUFJLE9BQU8sS0FBSyxLQUFLLFVBQVUsRUFBRTtnQkFDL0IsT0FBUSxLQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDN0I7aUJBQU07Z0JBQ0wsT0FBTyxLQUFLLENBQUM7YUFDZDtRQUNILENBQUM7S0FDRjtJQTlDRCw0Q0E4Q0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBJQ29tbW9uQ29udGV4dCxcbiAgSURlcGVuZGVuY2llc0NvbmZpZyxcbiAgSVRhcmdldGFibGVDb25maWcsXG4gIFJlc29sdmFibGVcbn0gZnJvbSBcIkBkYXRhZm9ybS9jb3JlL2NvbW1vblwiO1xuaW1wb3J0IHsgU2Vzc2lvbiB9IGZyb20gXCJAZGF0YWZvcm0vY29yZS9zZXNzaW9uXCI7XG5pbXBvcnQge1xuICBjaGVja0V4Y2Vzc1Byb3BlcnRpZXMsXG4gIHJlc29sdmFibGVBc1RhcmdldCxcbiAgc2V0TmFtZUFuZFRhcmdldCxcbiAgc3RyaWN0S2V5c09mLFxuICB0b1Jlc29sdmFibGVcbn0gZnJvbSBcIkBkYXRhZm9ybS9jb3JlL3V0aWxzXCI7XG5pbXBvcnQgeyBkYXRhZm9ybSB9IGZyb20gXCJAZGF0YWZvcm0vcHJvdG9zXCI7XG5cbi8qKlxuICogQ29uZmlndXJhdGlvbiBvcHRpb25zIGZvciBgYXNzZXJ0aW9uYCBhY3Rpb24gdHlwZXMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUFzc2VydGlvbkNvbmZpZyBleHRlbmRzIElUYXJnZXRhYmxlQ29uZmlnLCBJRGVwZW5kZW5jaWVzQ29uZmlnIHtcbiAgLyoqXG4gICAqIFRoZSBkYXRhYmFzZSB3aGVyZSB0aGUgY29ycmVzcG9uZGluZyB2aWV3IGZvciB0aGlzIGFzc2VydGlvbiBzaG91bGQgYmUgY3JlYXRlZC5cbiAgICovXG4gIGRhdGFiYXNlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgc2NoZW1hIHdoZXJlIHRoZSBjb3JyZXNwb25kaW5nIHZpZXcgZm9yIHRoaXMgYXNzZXJ0aW9uIHNob3VsZCBiZSBjcmVhdGVkLlxuICAgKi9cbiAgc2NoZW1hPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBIGRlc2NyaXB0aW9uIGZvciB0aGlzIGFzc2VydGlvbi5cbiAgICovXG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xufVxuXG5leHBvcnQgY29uc3QgSUFzc2VydGlvbkNvbmZpZ1Byb3BlcnRpZXMgPSBzdHJpY3RLZXlzT2Y8SUFzc2VydGlvbkNvbmZpZz4oKShbXG4gIFwiZGF0YWJhc2VcIixcbiAgXCJzY2hlbWFcIixcbiAgXCJuYW1lXCIsXG4gIFwiZGVzY3JpcHRpb25cIixcbiAgXCJ0eXBlXCIsXG4gIFwidGFnc1wiLFxuICBcImRlcGVuZGVuY2llc1wiXG5dKTtcblxuLyoqXG4gKiBAaGlkZGVuXG4gKi9cbmV4cG9ydCB0eXBlIEFDb250ZXh0YWJsZTxUPiA9IFQgfCAoKGN0eDogQXNzZXJ0aW9uQ29udGV4dCkgPT4gVCk7XG5cbi8qKlxuICogQGhpZGRlblxuICovXG5leHBvcnQgY2xhc3MgQXNzZXJ0aW9uIHtcbiAgcHVibGljIHByb3RvOiBkYXRhZm9ybS5JQXNzZXJ0aW9uID0gZGF0YWZvcm0uQXNzZXJ0aW9uLmNyZWF0ZSgpO1xuXG4gIC8vIEhvbGQgYSByZWZlcmVuY2UgdG8gdGhlIFNlc3Npb24gaW5zdGFuY2UuXG4gIHB1YmxpYyBzZXNzaW9uOiBTZXNzaW9uO1xuXG4gIC8vIFdlIGRlbGF5IGNvbnRleHRpZmljYXRpb24gdW50aWwgdGhlIGZpbmFsIGNvbXBpbGUgc3RlcCwgc28gaG9sZCB0aGVzZSBoZXJlIGZvciBub3cuXG4gIHByaXZhdGUgY29udGV4dGFibGVRdWVyeTogQUNvbnRleHRhYmxlPHN0cmluZz47XG5cbiAgcHVibGljIGNvbmZpZyhjb25maWc6IElBc3NlcnRpb25Db25maWcpIHtcbiAgICBjaGVja0V4Y2Vzc1Byb3BlcnRpZXMoY29uZmlnLCBJQXNzZXJ0aW9uQ29uZmlnUHJvcGVydGllcywgXCJhc3NlcnRpb24gY29uZmlnXCIpO1xuICAgIGlmIChjb25maWcuZGVwZW5kZW5jaWVzKSB7XG4gICAgICB0aGlzLmRlcGVuZGVuY2llcyhjb25maWcuZGVwZW5kZW5jaWVzKTtcbiAgICB9XG4gICAgaWYgKGNvbmZpZy50YWdzKSB7XG4gICAgICB0aGlzLnRhZ3MoY29uZmlnLnRhZ3MpO1xuICAgIH1cbiAgICBpZiAoY29uZmlnLmRlc2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLmRlc2NyaXB0aW9uKGNvbmZpZy5kZXNjcmlwdGlvbik7XG4gICAgfVxuICAgIGlmIChjb25maWcuZGF0YWJhc2UpIHtcbiAgICAgIHRoaXMuZGF0YWJhc2UoY29uZmlnLmRhdGFiYXNlKTtcbiAgICB9XG4gICAgaWYgKGNvbmZpZy5zY2hlbWEpIHtcbiAgICAgIHRoaXMuc2NoZW1hKGNvbmZpZy5zY2hlbWEpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyBxdWVyeShxdWVyeTogQUNvbnRleHRhYmxlPHN0cmluZz4pIHtcbiAgICB0aGlzLmNvbnRleHRhYmxlUXVlcnkgPSBxdWVyeTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyBkZXBlbmRlbmNpZXModmFsdWU6IFJlc29sdmFibGUgfCBSZXNvbHZhYmxlW10pIHtcbiAgICBjb25zdCBuZXdEZXBlbmRlbmNpZXMgPSBBcnJheS5pc0FycmF5KHZhbHVlKSA/IHZhbHVlIDogW3ZhbHVlXTtcbiAgICBuZXdEZXBlbmRlbmNpZXMuZm9yRWFjaChyZXNvbHZhYmxlID0+IHtcbiAgICAgIHRoaXMucHJvdG8uZGVwZW5kZW5jeVRhcmdldHMucHVzaChyZXNvbHZhYmxlQXNUYXJnZXQocmVzb2x2YWJsZSkpO1xuICAgIH0pO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIHRhZ3ModmFsdWU6IHN0cmluZyB8IHN0cmluZ1tdKSB7XG4gICAgY29uc3QgbmV3VGFncyA9IHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIiA/IFt2YWx1ZV0gOiB2YWx1ZTtcbiAgICBuZXdUYWdzLmZvckVhY2godCA9PiB7XG4gICAgICBpZiAodGhpcy5wcm90by50YWdzLmluZGV4T2YodCkgPCAwKSB7XG4gICAgICAgIHRoaXMucHJvdG8udGFncy5wdXNoKHQpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIGRlc2NyaXB0aW9uKGRlc2NyaXB0aW9uOiBzdHJpbmcpIHtcbiAgICB0aGlzLnByb3RvLmFjdGlvbkRlc2NyaXB0b3IgPSB7IGRlc2NyaXB0aW9uIH07XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgZGF0YWJhc2UoZGF0YWJhc2U6IHN0cmluZykge1xuICAgIHNldE5hbWVBbmRUYXJnZXQoXG4gICAgICB0aGlzLnNlc3Npb24sXG4gICAgICB0aGlzLnByb3RvLFxuICAgICAgdGhpcy5wcm90by50YXJnZXQubmFtZSxcbiAgICAgIHRoaXMucHJvdG8udGFyZ2V0LnNjaGVtYSxcbiAgICAgIGRhdGFiYXNlXG4gICAgKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyBzY2hlbWEoc2NoZW1hOiBzdHJpbmcpIHtcbiAgICBzZXROYW1lQW5kVGFyZ2V0KHRoaXMuc2Vzc2lvbiwgdGhpcy5wcm90bywgdGhpcy5wcm90by50YXJnZXQubmFtZSwgc2NoZW1hKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyBjb21waWxlKCkge1xuICAgIGNvbnN0IGNvbnRleHQgPSBuZXcgQXNzZXJ0aW9uQ29udGV4dCh0aGlzKTtcblxuICAgIGNvbnN0IGFwcGxpZWRRdWVyeSA9IGNvbnRleHQuYXBwbHkodGhpcy5jb250ZXh0YWJsZVF1ZXJ5KTtcbiAgICB0aGlzLnByb3RvLnF1ZXJ5ID0gYXBwbGllZFF1ZXJ5O1xuXG4gICAgcmV0dXJuIHRoaXMucHJvdG87XG4gIH1cbn1cblxuLyoqXG4gKiBAaGlkZGVuXG4gKi9cbmV4cG9ydCBjbGFzcyBBc3NlcnRpb25Db250ZXh0IGltcGxlbWVudHMgSUNvbW1vbkNvbnRleHQge1xuICBwcml2YXRlIGFzc2VydGlvbj86IEFzc2VydGlvbjtcblxuICBjb25zdHJ1Y3Rvcihhc3NlcnRpb246IEFzc2VydGlvbikge1xuICAgIHRoaXMuYXNzZXJ0aW9uID0gYXNzZXJ0aW9uO1xuICB9XG5cbiAgcHVibGljIHNlbGYoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5yZXNvbHZlKHRoaXMuYXNzZXJ0aW9uLnByb3RvLnRhcmdldCk7XG4gIH1cblxuICBwdWJsaWMgbmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmFzc2VydGlvbi5wcm90by50YXJnZXQubmFtZTtcbiAgfVxuXG4gIHB1YmxpYyByZWYocmVmOiBSZXNvbHZhYmxlIHwgc3RyaW5nW10sIC4uLnJlc3Q6IHN0cmluZ1tdKSB7XG4gICAgcmVmID0gdG9SZXNvbHZhYmxlKHJlZiwgcmVzdCk7XG4gICAgaWYgKCFyZXNvbHZhYmxlQXNUYXJnZXQocmVmKSkge1xuICAgICAgY29uc3QgbWVzc2FnZSA9IGBBY3Rpb24gbmFtZSBpcyBub3Qgc3BlY2lmaWVkYDtcbiAgICAgIHRoaXMuYXNzZXJ0aW9uLnNlc3Npb24uY29tcGlsZUVycm9yKG5ldyBFcnJvcihtZXNzYWdlKSk7XG4gICAgICByZXR1cm4gXCJcIjtcbiAgICB9XG4gICAgdGhpcy5hc3NlcnRpb24uZGVwZW5kZW5jaWVzKHJlZik7XG4gICAgcmV0dXJuIHRoaXMucmVzb2x2ZShyZWYpO1xuICB9XG5cbiAgcHVibGljIHJlc29sdmUocmVmOiBSZXNvbHZhYmxlIHwgc3RyaW5nW10sIC4uLnJlc3Q6IHN0cmluZ1tdKSB7XG4gICAgcmV0dXJuIHRoaXMuYXNzZXJ0aW9uLnNlc3Npb24ucmVzb2x2ZSh0b1Jlc29sdmFibGUocmVmLCByZXN0KSk7XG4gIH1cblxuICBwdWJsaWMgZGVwZW5kZW5jaWVzKG5hbWU6IFJlc29sdmFibGUgfCBSZXNvbHZhYmxlW10pIHtcbiAgICB0aGlzLmFzc2VydGlvbi5kZXBlbmRlbmNpZXMobmFtZSk7XG4gICAgcmV0dXJuIFwiXCI7XG4gIH1cbiAgcHVibGljIHRhZ3MobmFtZTogc3RyaW5nIHwgc3RyaW5nW10pIHtcbiAgICB0aGlzLmFzc2VydGlvbi50YWdzKG5hbWUpO1xuICAgIHJldHVybiBcIlwiO1xuICB9XG5cbiAgcHVibGljIGFwcGx5PFQ+KHZhbHVlOiBBQ29udGV4dGFibGU8VD4pOiBUIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgIHJldHVybiAodmFsdWUgYXMgYW55KSh0aGlzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cbiAgfVxufVxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXJ0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS9hc3NlcnRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7SUFPQSxnREFNOEI7SUFDOUIsNkNBQTRDO0lBc0IvQixRQUFBLDBCQUEwQixHQUFHLG9CQUFZLEVBQW9CLENBQUM7UUFDekUsVUFBVTtRQUNWLFFBQVE7UUFDUixNQUFNO1FBQ04sYUFBYTtRQUNiLE1BQU07UUFDTixNQUFNO1FBQ04sY0FBYztRQUNkLFVBQVU7S0FDWCxDQUFDLENBQUM7SUFVSCxNQUFhLFNBQVM7UUFBdEI7WUFDUyxVQUFLLEdBQXdCLGlCQUFRLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBOEZsRSxDQUFDO1FBdEZRLE1BQU0sQ0FBQyxNQUF3QjtZQUNwQyw2QkFBcUIsQ0FDbkIsQ0FBQyxDQUFRLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUMxQyxNQUFNLEVBQ04sa0NBQTBCLEVBQzFCLGtCQUFrQixDQUNuQixDQUFDO1lBQ0YsSUFBSSxNQUFNLENBQUMsWUFBWSxFQUFFO2dCQUN2QixJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQzthQUN4QztZQUNELElBQUksTUFBTSxDQUFDLFFBQVEsS0FBSyxTQUFTLEVBQUU7Z0JBQ2pDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2FBQ2hDO1lBQ0QsSUFBSSxNQUFNLENBQUMsSUFBSSxFQUFFO2dCQUNmLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ3hCO1lBQ0QsSUFBSSxNQUFNLENBQUMsV0FBVyxFQUFFO2dCQUN0QixJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQzthQUN0QztZQUNELElBQUks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Q0FBQztRQUNNLElBQUksQ0FBQyxJQUF1QjtZQUNqQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUMxQixPQUFPLEVBQUUsQ0FBQztRQUNaLENBQUM7UUFFTSxLQUFLLENBQUksS0FBc0I7WUFDcEMsSUFBSSxPQUFPLEtBQUssS0FBSyxVQUFVLEVBQUU7Z0JBQy9CLE9BQVEsS0FBYSxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQzdCO2lCQUFNO2dCQUNMLE9BQU8sS0FBSyxDQUFDO2FBQ2Q7UUFDSCxDQUFDO0tBQ0Y7SUE5Q0QsNENBOENDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgSUNvbW1vbkNvbnRleHQsXG4gIElEZXBlbmRlbmNpZXNDb25maWcsXG4gIElUYXJnZXRhYmxlQ29uZmlnLFxuICBSZXNvbHZhYmxlXG59IGZyb20gXCJAZGF0YWZvcm0vY29yZS9jb21tb25cIjtcbmltcG9ydCB7IFNlc3Npb24gfSBmcm9tIFwiQGRhdGFmb3JtL2NvcmUvc2Vzc2lvblwiO1xuaW1wb3J0IHtcbiAgY2hlY2tFeGNlc3NQcm9wZXJ0aWVzLFxuICByZXNvbHZhYmxlQXNUYXJnZXQsXG4gIHNldE5hbWVBbmRUYXJnZXQsXG4gIHN0cmljdEtleXNPZixcbiAgdG9SZXNvbHZhYmxlXG59IGZyb20gXCJAZGF0YWZvcm0vY29yZS91dGlsc1wiO1xuaW1wb3J0IHsgZGF0YWZvcm0gfSBmcm9tIFwiQGRhdGFmb3JtL3Byb3Rvc1wiO1xuXG4vKipcbiAqIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgYGFzc2VydGlvbmAgYWN0aW9uIHR5cGVzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElBc3NlcnRpb25Db25maWcgZXh0ZW5kcyBJVGFyZ2V0YWJsZUNvbmZpZywgSURlcGVuZGVuY2llc0NvbmZpZyB7XG4gIC8qKlxuICAgKiBUaGUgZGF0YWJhc2Ugd2hlcmUgdGhlIGNvcnJlc3BvbmRpbmcgdmlldyBmb3IgdGhpcyBhc3NlcnRpb24gc2hvdWxkIGJlIGNyZWF0ZWQuXG4gICAqL1xuICBkYXRhYmFzZT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHNjaGVtYSB3aGVyZSB0aGUgY29ycmVzcG9uZGluZyB2aWV3IGZvciB0aGlzIGFzc2VydGlvbiBzaG91bGQgYmUgY3JlYXRlZC5cbiAgICovXG4gIHNjaGVtYT86IHN0cmluZztcblxuICAvKipcbiAgICogQSBkZXNjcmlwdGlvbiBmb3IgdGhpcyBhc3NlcnRpb24uXG4gICAqL1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbn1cblxuZXhwb3J0IGNvbnN0IElBc3NlcnRpb25Db25maWdQcm9wZXJ0aWVzID0gc3RyaWN0S2V5c09mPElBc3NlcnRpb25Db25maWc+KCkoW1xuICBcImRhdGFiYXNlXCIsXG4gIFwic2NoZW1hXCIsXG4gIFwibmFtZVwiLFxuICBcImRlc2NyaXB0aW9uXCIsXG4gIFwidHlwZVwiLFxuICBcInRhZ3NcIixcbiAgXCJkZXBlbmRlbmNpZXNcIixcbiAgXCJoZXJtZXRpY1wiXG5dKTtcblxuLyoqXG4gKiBAaGlkZGVuXG4gKi9cbmV4cG9ydCB0eXBlIEFDb250ZXh0YWJsZTxUPiA9IFQgfCAoKGN0eDogQXNzZXJ0aW9uQ29udGV4dCkgPT4gVCk7XG5cbi8qKlxuICogQGhpZGRlblxuICovXG5leHBvcnQgY2xhc3MgQXNzZXJ0aW9uIHtcbiAgcHVibGljIHByb3RvOiBkYXRhZm9ybS5JQXNzZXJ0aW9uID0gZGF0YWZvcm0uQXNzZXJ0aW9uLmNyZWF0ZSgpO1xuXG4gIC8vIEhvbGQgYSByZWZlcmVuY2UgdG8gdGhlIFNlc3Npb24gaW5zdGFuY2UuXG4gIHB1YmxpYyBzZXNzaW9uOiBTZXNzaW9uO1xuXG4gIC8vIFdlIGRlbGF5IGNvbnRleHRpZmljYXRpb24gdW50aWwgdGhlIGZpbmFsIGNvbXBpbGUgc3RlcCwgc28gaG9sZCB0aGVzZSBoZXJlIGZvciBub3cuXG4gIHByaXZhdGUgY29udGV4dGFibGVRdWVyeTogQUNvbnRleHRhYmxlPHN0cmluZz47XG5cbiAgcHVibGljIGNvbmZpZyhjb25maWc6IElBc3NlcnRpb25Db25maWcpIHtcbiAgICBjaGVja0V4Y2Vzc1Byb3BlcnRpZXMoXG4gICAgICAoZTogRXJyb3IpID0+IHRoaXMuc2Vzc2lvbi5jb21waWxlRXJyb3IoZSksXG4gICAgICBjb25maWcsXG4gICAgICBJQXNzZXJ0aW9uQ29uZmlnUHJvcGVydGllcyxcbiAgICAgIFwiYXNzZXJ0aW9uIGNvbmZpZ1wiXG4gICAgKTtcbiAgICBpZiAoY29uZmlnLmRlcGVuZGVuY2llcykge1xuICAgICAgdGhpcy5kZXBlbmRlbmNpZXMoY29uZmlnLmRlcGVuZGVuY2llcyk7XG4gICAgfVxuICAgIGlmIChjb25maWcuaGVybWV0aWMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5oZXJtZXRpYyhjb25maWcuaGVybWV0aWMpO1xuICAgIH1cbiAgICBpZiAoY29uZmlnLnRhZ3MpIHtcbiAgICAgIHRoaXMudGFncyhjb25maWcudGFncyk7XG4gICAgfVxuICAgIGlmIChjb25maWcuZGVzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMuZGVzY3JpcHRpb24oY29uZmlnLmRlc2NyaXB0aW9uKTtcbiAgICB9XG4gICAgaWYgKGNvbmZpZy5kYXRhYmFzZSkge1xuICAgICAgdGhpcy5kYXRhYmFzZShjb25maWcuZGF0YWJhc2UpO1xuICAgIH1cbiAgICBpZiAoY29uZmlnLnNjaGVtYSkge1xuICAgICAgdGhpcy5zY2hlbWEoY29uZmlnLnNjaGVtYSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIHF1ZXJ5KHF1ZXJ5OiBBQ29udGV4dGFibGU8c3RyaW5nPikge1xuICAgIHRoaXMuY29udGV4dGFibGVRdWVyeSA9IHF1ZXJ5O1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIGRlcGVuZGVuY2llcyh2YWx1ZTogUmVzb2x2YWJsZSB8IFJlc29sdmFibGVbXSkge1xuICAgIGNvbnN0IG5ld0RlcGVuZGVuY2llcyA9IEFycmF5LmlzQXJyYXkodmFsdWUpID8gdmFsdWUgOiBbdmFsdWVdO1xuICAgIG5ld0RlcGVuZGVuY2llcy5mb3JFYWNoKHJlc29sdmFibGUgPT4ge1xuICAgICAgdGhpcy5wcm90by5kZXBlbmRlbmN5VGFyZ2V0cy5wdXNoKHJlc29sdmFibGVBc1RhcmdldChyZXNvbHZhYmxlKSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgaGVybWV0aWMoaGVybWV0aWM6IGJvb2xlYW4pIHtcbiAgICB0aGlzLnByb3RvLmhlcm1ldGljaXR5ID0gaGVybWV0aWNcbiAgICAgID8gZGF0YWZvcm0uQWN0aW9uSGVybWV0aWNpdHkuSEVSTUVUSUNcbiAgICAgIDogZGF0YWZvcm0uQWN0aW9uSGVybWV0aWNpdHkuTk9OX0hFUk1FVElDO1xuICB9XG5cbiAgcHVibGljIHRhZ3ModmFsdWU6IHN0cmluZyB8IHN0cmluZ1tdKSB7XG4gICAgY29uc3QgbmV3VGFncyA9IHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIiA/IFt2YWx1ZV0gOiB2YWx1ZTtcbiAgICBuZXdUYWdzLmZvckVhY2godCA9PiB7XG4gICAgICBpZiAodGhpcy5wcm90by50YWdzLmluZGV4T2YodCkgPCAwKSB7XG4gICAgICAgIHRoaXMucHJvdG8udGFncy5wdXNoKHQpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIGRlc2NyaXB0aW9uKGRlc2NyaXB0aW9uOiBzdHJpbmcpIHtcbiAgICB0aGlzLnByb3RvLmFjdGlvbkRlc2NyaXB0b3IgPSB7IGRlc2NyaXB0aW9uIH07XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgZGF0YWJhc2UoZGF0YWJhc2U6IHN0cmluZykge1xuICAgIHNldE5hbWVBbmRUYXJnZXQoXG4gICAgICB0aGlzLnNlc3Npb24sXG4gICAgICB0aGlzLnByb3RvLFxuICAgICAgdGhpcy5wcm90by50YXJnZXQubmFtZSxcbiAgICAgIHRoaXMucHJvdG8udGFyZ2V0LnNjaGVtYSxcbiAgICAgIGRhdGFiYXNlXG4gICAgKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyBzY2hlbWEoc2NoZW1hOiBzdHJpbmcpIHtcbiAgICBzZXROYW1lQW5kVGFyZ2V0KHRoaXMuc2Vzc2lvbiwgdGhpcy5wcm90bywgdGhpcy5wcm90by50YXJnZXQubmFtZSwgc2NoZW1hKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyBjb21waWxlKCkge1xuICAgIGNvbnN0IGNvbnRleHQgPSBuZXcgQXNzZXJ0aW9uQ29udGV4dCh0aGlzKTtcblxuICAgIGNvbnN0IGFwcGxpZWRRdWVyeSA9IGNvbnRleHQuYXBwbHkodGhpcy5jb250ZXh0YWJsZVF1ZXJ5KTtcbiAgICB0aGlzLnByb3RvLnF1ZXJ5ID0gYXBwbGllZFF1ZXJ5O1xuXG4gICAgcmV0dXJuIHRoaXMucHJvdG87XG4gIH1cbn1cblxuLyoqXG4gKiBAaGlkZGVuXG4gKi9cbmV4cG9ydCBjbGFzcyBBc3NlcnRpb25Db250ZXh0IGltcGxlbWVudHMgSUNvbW1vbkNvbnRleHQge1xuICBwcml2YXRlIGFzc2VydGlvbj86IEFzc2VydGlvbjtcblxuICBjb25zdHJ1Y3Rvcihhc3NlcnRpb246IEFzc2VydGlvbikge1xuICAgIHRoaXMuYXNzZXJ0aW9uID0gYXNzZXJ0aW9uO1xuICB9XG5cbiAgcHVibGljIHNlbGYoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5yZXNvbHZlKHRoaXMuYXNzZXJ0aW9uLnByb3RvLnRhcmdldCk7XG4gIH1cblxuICBwdWJsaWMgbmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmFzc2VydGlvbi5wcm90by50YXJnZXQubmFtZTtcbiAgfVxuXG4gIHB1YmxpYyByZWYocmVmOiBSZXNvbHZhYmxlIHwgc3RyaW5nW10sIC4uLnJlc3Q6IHN0cmluZ1tdKSB7XG4gICAgcmVmID0gdG9SZXNvbHZhYmxlKHJlZiwgcmVzdCk7XG4gICAgaWYgKCFyZXNvbHZhYmxlQXNUYXJnZXQocmVmKSkge1xuICAgICAgY29uc3QgbWVzc2FnZSA9IGBBY3Rpb24gbmFtZSBpcyBub3Qgc3BlY2lmaWVkYDtcbiAgICAgIHRoaXMuYXNzZXJ0aW9uLnNlc3Npb24uY29tcGlsZUVycm9yKG5ldyBFcnJvcihtZXNzYWdlKSk7XG4gICAgICByZXR1cm4gXCJcIjtcbiAgICB9XG4gICAgdGhpcy5hc3NlcnRpb24uZGVwZW5kZW5jaWVzKHJlZik7XG4gICAgcmV0dXJuIHRoaXMucmVzb2x2ZShyZWYpO1xuICB9XG5cbiAgcHVibGljIHJlc29sdmUocmVmOiBSZXNvbHZhYmxlIHwgc3RyaW5nW10sIC4uLnJlc3Q6IHN0cmluZ1tdKSB7XG4gICAgcmV0dXJuIHRoaXMuYXNzZXJ0aW9uLnNlc3Npb24ucmVzb2x2ZSh0b1Jlc29sdmFibGUocmVmLCByZXN0KSk7XG4gIH1cblxuICBwdWJsaWMgZGVwZW5kZW5jaWVzKG5hbWU6IFJlc29sdmFibGUgfCBSZXNvbHZhYmxlW10pIHtcbiAgICB0aGlzLmFzc2VydGlvbi5kZXBlbmRlbmNpZXMobmFtZSk7XG4gICAgcmV0dXJuIFwiXCI7XG4gIH1cbiAgcHVibGljIHRhZ3MobmFtZTogc3RyaW5nIHwgc3RyaW5nW10pIHtcbiAgICB0aGlzLmFzc2VydGlvbi50YWdzKG5hbWUpO1xuICAgIHJldHVybiBcIlwiO1xuICB9XG5cbiAgcHVibGljIGFwcGx5PFQ+KHZhbHVlOiBBQ29udGV4dGFibGU8VD4pOiBUIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgIHJldHVybiAodmFsdWUgYXMgYW55KSh0aGlzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cbiAgfVxufVxuIl19

@@ -5,6 +5,6 @@ /// <amd-module name="@dataform/core/column_descriptors" />

export declare class ColumnDescriptors {
static mapToColumnProtoArray(columns: IColumnsDescriptor): dataform.IColumnDescriptor[];
static mapColumnDescriptionToProto(currentPath: string[], description: string | IRecordDescriptor): dataform.IColumnDescriptor[];
static mapToColumnProtoArray(columns: IColumnsDescriptor, reportError: (e: Error) => void): dataform.IColumnDescriptor[];
static mapColumnDescriptionToProto(currentPath: string[], description: string | IRecordDescriptor, reportError: (e: Error) => void): dataform.IColumnDescriptor[];
static mapAggregation(aggregation: string): dataform.ColumnDescriptor.Aggregation.SUM | dataform.ColumnDescriptor.Aggregation.DISTINCT | dataform.ColumnDescriptor.Aggregation.DERIVED;
static mapDimensionType(dimensionType: string): dataform.ColumnDescriptor.DimensionType.CATEGORY | dataform.ColumnDescriptor.DimensionType.TIMESTAMP;
}

@@ -16,6 +16,6 @@ (function (factory) {

class ColumnDescriptors {
static mapToColumnProtoArray(columns) {
return utils.flatten(Object.keys(columns).map(column => ColumnDescriptors.mapColumnDescriptionToProto([column], columns[column])));
static mapToColumnProtoArray(columns, reportError) {
return utils.flatten(Object.keys(columns).map(column => ColumnDescriptors.mapColumnDescriptionToProto([column], columns[column], reportError)));
}
static mapColumnDescriptionToProto(currentPath, description) {
static mapColumnDescriptionToProto(currentPath, description, reportError) {
if (typeof description === "string") {

@@ -29,3 +29,3 @@ return [

}
utils.checkExcessProperties(description, common_1.IRecordDescriptorProperties(), `${currentPath.join(".")} column descriptor`);
utils.checkExcessProperties(reportError, description, common_1.IRecordDescriptorProperties(), `${currentPath.join(".")} column descriptor`);
const columnDescriptor = !!description

@@ -44,3 +44,3 @@ ? [

const nestedColumns = description.columns ? Object.keys(description.columns) : [];
return columnDescriptor.concat(utils.flatten(nestedColumns.map(nestedColumn => ColumnDescriptors.mapColumnDescriptionToProto(currentPath.concat([nestedColumn]), description.columns[nestedColumn]))));
return columnDescriptor.concat(utils.flatten(nestedColumns.map(nestedColumn => ColumnDescriptors.mapColumnDescriptionToProto(currentPath.concat([nestedColumn]), description.columns[nestedColumn], reportError))));
}

@@ -76,2 +76,2 @@ static mapAggregation(aggregation) {

});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1uX2Rlc2NyaXB0b3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS9jb2x1bW5fZGVzY3JpcHRvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7SUFBQSxrREFJK0I7SUFDL0IsOENBQThDO0lBQzlDLDZDQUE0QztJQUs1QyxNQUFhLGlCQUFpQjtRQUNyQixNQUFNLENBQUMscUJBQXFCLENBQUMsT0FBMkI7WUFDN0QsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUNsQixNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUNoQyxpQkFBaUIsQ0FBQywyQkFBMkIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUN6RSxDQUNGLENBQUM7UUFDSixDQUFDO1FBRU0sTUFBTSxDQUFDLDJCQUEyQixDQUN2QyxXQUFxQixFQUNyQixXQUF1QztZQUV2QyxJQUFJLE9BQU8sV0FBVyxLQUFLLFFBQVEsRUFBRTtnQkFDbkMsT0FBTztvQkFDTCxpQkFBUSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQzt3QkFDL0IsV0FBVzt3QkFDWCxJQUFJLEVBQUUsV0FBVztxQkFDbEIsQ0FBQztpQkFDSCxDQUFDO2FBQ0g7WUFDRCxLQUFLLENBQUMscUJBQXFCLENBQ3pCLFdBQVcsRUFDWCxvQ0FBMkIsRUFBRSxFQUM3QixHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLG9CQUFvQixDQUM3QyxDQUFDO1lBQ0YsTUFBTSxnQkFBZ0IsR0FBaUMsQ0FBQyxDQUFDLFdBQVc7Z0JBQ2xFLENBQUMsQ0FBQztvQkFDRSxpQkFBUSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQzt3QkFDL0IsSUFBSSxFQUFFLFdBQVc7d0JBQ2pCLFdBQVcsRUFBRSxXQUFXLENBQUMsV0FBVzt3QkFDcEMsV0FBVyxFQUFFLFdBQVcsQ0FBQyxXQUFXO3dCQUNwQyxhQUFhLEVBQUUsaUJBQWlCLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQzt3QkFDeEUsV0FBVyxFQUFFLGlCQUFpQixDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDO3dCQUNyRSxVQUFVLEVBQUUsV0FBVyxDQUFDLFVBQVU7cUJBQ25DLENBQUM7aUJBQ0g7Z0JBQ0gsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNQLE1BQU0sYUFBYSxHQUFHLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDbEYsT0FBTyxnQkFBZ0IsQ0FBQyxNQUFNLENBQzVCLEtBQUssQ0FBQyxPQUFPLENBQ1gsYUFBYSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUMvQixpQkFBaUIsQ0FBQywyQkFBMkIsQ0FDM0MsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLEVBQ2xDLFdBQVcsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQ2xDLENBQ0YsQ0FDRixDQUNGLENBQUM7UUFDSixDQUFDO1FBRU0sTUFBTSxDQUFDLGNBQWMsQ0FBQyxXQUFtQjtZQUM5QyxRQUFRLFdBQVcsRUFBRTtnQkFDbkIsS0FBSyxLQUFLO29CQUNSLE9BQU8saUJBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDO2dCQUNuRCxLQUFLLFVBQVU7b0JBQ2IsT0FBTyxpQkFBUSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUM7Z0JBQ3hELEtBQUssU0FBUztvQkFDWixPQUFPLGlCQUFRLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQztnQkFDdkQsS0FBSyxTQUFTO29CQUNaLE9BQU8sU0FBUyxDQUFDO2dCQUNuQjtvQkFDRSxNQUFNLElBQUksS0FBSyxDQUFDLElBQUksV0FBVyxzQ0FBc0MsQ0FBQyxDQUFDO2FBQzFFO1FBQ0gsQ0FBQztRQUVNLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFxQjtZQUNsRCxRQUFRLGFBQWEsRUFBRTtnQkFDckIsS0FBSyxVQUFVO29CQUNiLE9BQU8saUJBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDO2dCQUMxRCxLQUFLLFdBQVc7b0JBQ2QsT0FBTyxpQkFBUSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUM7Z0JBQzNELEtBQUssU0FBUztvQkFDWixPQUFPLFNBQVMsQ0FBQztnQkFDbkI7b0JBQ0UsTUFBTSxJQUFJLEtBQUssQ0FBQyxJQUFJLGFBQWEsa0NBQWtDLENBQUMsQ0FBQzthQUN4RTtRQUNILENBQUM7S0FDRjtJQTlFRCw4Q0E4RUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBJQ29sdW1uc0Rlc2NyaXB0b3IsXG4gIElSZWNvcmREZXNjcmlwdG9yLFxuICBJUmVjb3JkRGVzY3JpcHRvclByb3BlcnRpZXNcbn0gZnJvbSBcIkBkYXRhZm9ybS9jb3JlL2NvbW1vblwiO1xuaW1wb3J0ICogYXMgdXRpbHMgZnJvbSBcIkBkYXRhZm9ybS9jb3JlL3V0aWxzXCI7XG5pbXBvcnQgeyBkYXRhZm9ybSB9IGZyb20gXCJAZGF0YWZvcm0vcHJvdG9zXCI7XG5cbi8qKlxuICogQGhpZGRlblxuICovXG5leHBvcnQgY2xhc3MgQ29sdW1uRGVzY3JpcHRvcnMge1xuICBwdWJsaWMgc3RhdGljIG1hcFRvQ29sdW1uUHJvdG9BcnJheShjb2x1bW5zOiBJQ29sdW1uc0Rlc2NyaXB0b3IpOiBkYXRhZm9ybS5JQ29sdW1uRGVzY3JpcHRvcltdIHtcbiAgICByZXR1cm4gdXRpbHMuZmxhdHRlbihcbiAgICAgIE9iamVjdC5rZXlzKGNvbHVtbnMpLm1hcChjb2x1bW4gPT5cbiAgICAgICAgQ29sdW1uRGVzY3JpcHRvcnMubWFwQ29sdW1uRGVzY3JpcHRpb25Ub1Byb3RvKFtjb2x1bW5dLCBjb2x1bW5zW2NvbHVtbl0pXG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgbWFwQ29sdW1uRGVzY3JpcHRpb25Ub1Byb3RvKFxuICAgIGN1cnJlbnRQYXRoOiBzdHJpbmdbXSxcbiAgICBkZXNjcmlwdGlvbjogc3RyaW5nIHwgSVJlY29yZERlc2NyaXB0b3JcbiAgKTogZGF0YWZvcm0uSUNvbHVtbkRlc2NyaXB0b3JbXSB7XG4gICAgaWYgKHR5cGVvZiBkZXNjcmlwdGlvbiA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgcmV0dXJuIFtcbiAgICAgICAgZGF0YWZvcm0uQ29sdW1uRGVzY3JpcHRvci5jcmVhdGUoe1xuICAgICAgICAgIGRlc2NyaXB0aW9uLFxuICAgICAgICAgIHBhdGg6IGN1cnJlbnRQYXRoXG4gICAgICAgIH0pXG4gICAgICBdO1xuICAgIH1cbiAgICB1dGlscy5jaGVja0V4Y2Vzc1Byb3BlcnRpZXMoXG4gICAgICBkZXNjcmlwdGlvbixcbiAgICAgIElSZWNvcmREZXNjcmlwdG9yUHJvcGVydGllcygpLFxuICAgICAgYCR7Y3VycmVudFBhdGguam9pbihcIi5cIil9IGNvbHVtbiBkZXNjcmlwdG9yYFxuICAgICk7XG4gICAgY29uc3QgY29sdW1uRGVzY3JpcHRvcjogZGF0YWZvcm0uSUNvbHVtbkRlc2NyaXB0b3JbXSA9ICEhZGVzY3JpcHRpb25cbiAgICAgID8gW1xuICAgICAgICAgIGRhdGFmb3JtLkNvbHVtbkRlc2NyaXB0b3IuY3JlYXRlKHtcbiAgICAgICAgICAgIHBhdGg6IGN1cnJlbnRQYXRoLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IGRlc2NyaXB0aW9uLmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgZGlzcGxheU5hbWU6IGRlc2NyaXB0aW9uLmRpc3BsYXlOYW1lLFxuICAgICAgICAgICAgZGltZW5zaW9uVHlwZTogQ29sdW1uRGVzY3JpcHRvcnMubWFwRGltZW5zaW9uVHlwZShkZXNjcmlwdGlvbi5kaW1lbnNpb24pLFxuICAgICAgICAgICAgYWdncmVnYXRpb246IENvbHVtbkRlc2NyaXB0b3JzLm1hcEFnZ3JlZ2F0aW9uKGRlc2NyaXB0aW9uLmFnZ3JlZ2F0b3IpLFxuICAgICAgICAgICAgZXhwcmVzc2lvbjogZGVzY3JpcHRpb24uZXhwcmVzc2lvblxuICAgICAgICAgIH0pXG4gICAgICAgIF1cbiAgICAgIDogW107XG4gICAgY29uc3QgbmVzdGVkQ29sdW1ucyA9IGRlc2NyaXB0aW9uLmNvbHVtbnMgPyBPYmplY3Qua2V5cyhkZXNjcmlwdGlvbi5jb2x1bW5zKSA6IFtdO1xuICAgIHJldHVybiBjb2x1bW5EZXNjcmlwdG9yLmNvbmNhdChcbiAgICAgIHV0aWxzLmZsYXR0ZW4oXG4gICAgICAgIG5lc3RlZENvbHVtbnMubWFwKG5lc3RlZENvbHVtbiA9PlxuICAgICAgICAgIENvbHVtbkRlc2NyaXB0b3JzLm1hcENvbHVtbkRlc2NyaXB0aW9uVG9Qcm90byhcbiAgICAgICAgICAgIGN1cnJlbnRQYXRoLmNvbmNhdChbbmVzdGVkQ29sdW1uXSksXG4gICAgICAgICAgICBkZXNjcmlwdGlvbi5jb2x1bW5zW25lc3RlZENvbHVtbl1cbiAgICAgICAgICApXG4gICAgICAgIClcbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBtYXBBZ2dyZWdhdGlvbihhZ2dyZWdhdGlvbjogc3RyaW5nKSB7XG4gICAgc3dpdGNoIChhZ2dyZWdhdGlvbikge1xuICAgICAgY2FzZSBcInN1bVwiOlxuICAgICAgICByZXR1cm4gZGF0YWZvcm0uQ29sdW1uRGVzY3JpcHRvci5BZ2dyZWdhdGlvbi5TVU07XG4gICAgICBjYXNlIFwiZGlzdGluY3RcIjpcbiAgICAgICAgcmV0dXJuIGRhdGFmb3JtLkNvbHVtbkRlc2NyaXB0b3IuQWdncmVnYXRpb24uRElTVElOQ1Q7XG4gICAgICBjYXNlIFwiZGVyaXZlZFwiOlxuICAgICAgICByZXR1cm4gZGF0YWZvcm0uQ29sdW1uRGVzY3JpcHRvci5BZ2dyZWdhdGlvbi5ERVJJVkVEO1xuICAgICAgY2FzZSB1bmRlZmluZWQ6XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYCcke2FnZ3JlZ2F0aW9ufScgaXMgbm90IGEgdmFsaWQgYWdncmVnYXRpb24gb3B0aW9uLmApO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgbWFwRGltZW5zaW9uVHlwZShkaW1lbnNpb25UeXBlOiBzdHJpbmcpIHtcbiAgICBzd2l0Y2ggKGRpbWVuc2lvblR5cGUpIHtcbiAgICAgIGNhc2UgXCJjYXRlZ29yeVwiOlxuICAgICAgICByZXR1cm4gZGF0YWZvcm0uQ29sdW1uRGVzY3JpcHRvci5EaW1lbnNpb25UeXBlLkNBVEVHT1JZO1xuICAgICAgY2FzZSBcInRpbWVzdGFtcFwiOlxuICAgICAgICByZXR1cm4gZGF0YWZvcm0uQ29sdW1uRGVzY3JpcHRvci5EaW1lbnNpb25UeXBlLlRJTUVTVEFNUDtcbiAgICAgIGNhc2UgdW5kZWZpbmVkOlxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGAnJHtkaW1lbnNpb25UeXBlfScgaXMgbm90IGEgdmFsaWQgZGltZW5zaW9uIHR5cGUuYCk7XG4gICAgfVxuICB9XG59XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1uX2Rlc2NyaXB0b3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS9jb2x1bW5fZGVzY3JpcHRvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7SUFBQSxrREFJK0I7SUFDL0IsOENBQThDO0lBQzlDLDZDQUE0QztJQUs1QyxNQUFhLGlCQUFpQjtRQUNyQixNQUFNLENBQUMscUJBQXFCLENBQ2pDLE9BQTJCLEVBQzNCLFdBQStCO1lBRS9CLE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FDbEIsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FDaEMsaUJBQWlCLENBQUMsMkJBQTJCLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsV0FBVyxDQUFDLENBQ3RGLENBQ0YsQ0FBQztRQUNKLENBQUM7UUFFTSxNQUFNLENBQUMsMkJBQTJCLENBQ3ZDLFdBQXFCLEVBQ3JCLFdBQXVDLEVBQ3ZDLFdBQStCO1lBRS9CLElBQUksT0FBTyxXQUFXLEtBQUssUUFBUSxFQUFFO2dCQUNuQyxPQUFPO29CQUNMLGlCQUFRLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDO3dCQUMvQixXQUFXO3dCQUNYLElBQUksRUFBRSxXQUFXO3FCQUNsQixDQUFDO2lCQUNILENBQUM7YUFDSDtZQUNELEtBQUssQ0FBQyxxQkFBcUIsQ0FDekIsV0FBVyxFQUNYLFdBQVcsRUFDWCxvQ0FBMkIsRUFBRSxFQUM3QixHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLG9CQUFvQixDQUM3QyxDQUFDO1lBQ0YsTUFBTSxnQkFBZ0IsR0FBaUMsQ0FBQyxDQUFDLFdBQVc7Z0JBQ2xFLENBQUMsQ0FBQztvQkFDRSxpQkFBUSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQzt3QkFDL0IsSUFBSSxFQUFFLFdBQVc7d0JBQ2pCLFdBQVcsRUFBRSxXQUFXLENBQUMsV0FBVzt3QkFDcEMsV0FBVyxFQUFFLFdBQVcsQ0FBQyxXQUFXO3dCQUNwQyxhQUFhLEVBQUUsaUJBQWlCLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQzt3QkFDeEUsV0FBVyxFQUFFLGlCQUFpQixDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDO3dCQUNyRSxVQUFVLEVBQUUsV0FBVyxDQUFDLFVBQVU7cUJBQ25DLENBQUM7aUJBQ0g7Z0JBQ0gsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNQLE1BQU0sYUFBYSxHQUFHLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDbEYsT0FBTyxnQkFBZ0IsQ0FBQyxNQUFNLENBQzVCLEtBQUssQ0FBQyxPQUFPLENBQ1gsYUFBYSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUMvQixpQkFBaUIsQ0FBQywyQkFBMkIsQ0FDM0MsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLEVBQ2xDLFdBQVcsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLEVBQ2pDLFdBQVcsQ0FDWixDQUNGLENBQ0YsQ0FDRixDQUFDO1FBQ0osQ0FBQztRQUVNLE1BQU0sQ0FBQyxjQUFjLENBQUMsV0FBbUI7WUFDOUMsUUFBUSxXQUFXLEVBQUU7Z0JBQ25CLEtBQUssS0FBSztvQkFDUixPQUFPLGlCQUFRLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQztnQkFDbkQsS0FBSyxVQUFVO29CQUNiLE9BQU8saUJBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDO2dCQUN4RCxLQUFLLFNBQVM7b0JBQ1osT0FBTyxpQkFBUSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUM7Z0JBQ3ZELEtBQUssU0FBUztvQkFDWixPQUFPLFNBQVMsQ0FBQztnQkFDbkI7b0JBQ0UsTUFBTSxJQUFJLEtBQUssQ0FBQyxJQUFJLFdBQVcsc0NBQXNDLENBQUMsQ0FBQzthQUMxRTtRQUNILENBQUM7UUFFTSxNQUFNLENBQUMsZ0JBQWdCLENBQUMsYUFBcUI7WUFDbEQsUUFBUSxhQUFhLEVBQUU7Z0JBQ3JCLEtBQUssVUFBVTtvQkFDYixPQUFPLGlCQUFRLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQztnQkFDMUQsS0FBSyxXQUFXO29CQUNkLE9BQU8saUJBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDO2dCQUMzRCxLQUFLLFNBQVM7b0JBQ1osT0FBTyxTQUFTLENBQUM7Z0JBQ25CO29CQUNFLE1BQU0sSUFBSSxLQUFLLENBQUMsSUFBSSxhQUFhLGtDQUFrQyxDQUFDLENBQUM7YUFDeEU7UUFDSCxDQUFDO0tBQ0Y7SUFwRkQsOENBb0ZDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgSUNvbHVtbnNEZXNjcmlwdG9yLFxuICBJUmVjb3JkRGVzY3JpcHRvcixcbiAgSVJlY29yZERlc2NyaXB0b3JQcm9wZXJ0aWVzXG59IGZyb20gXCJAZGF0YWZvcm0vY29yZS9jb21tb25cIjtcbmltcG9ydCAqIGFzIHV0aWxzIGZyb20gXCJAZGF0YWZvcm0vY29yZS91dGlsc1wiO1xuaW1wb3J0IHsgZGF0YWZvcm0gfSBmcm9tIFwiQGRhdGFmb3JtL3Byb3Rvc1wiO1xuXG4vKipcbiAqIEBoaWRkZW5cbiAqL1xuZXhwb3J0IGNsYXNzIENvbHVtbkRlc2NyaXB0b3JzIHtcbiAgcHVibGljIHN0YXRpYyBtYXBUb0NvbHVtblByb3RvQXJyYXkoXG4gICAgY29sdW1uczogSUNvbHVtbnNEZXNjcmlwdG9yLFxuICAgIHJlcG9ydEVycm9yOiAoZTogRXJyb3IpID0+IHZvaWRcbiAgKTogZGF0YWZvcm0uSUNvbHVtbkRlc2NyaXB0b3JbXSB7XG4gICAgcmV0dXJuIHV0aWxzLmZsYXR0ZW4oXG4gICAgICBPYmplY3Qua2V5cyhjb2x1bW5zKS5tYXAoY29sdW1uID0+XG4gICAgICAgIENvbHVtbkRlc2NyaXB0b3JzLm1hcENvbHVtbkRlc2NyaXB0aW9uVG9Qcm90byhbY29sdW1uXSwgY29sdW1uc1tjb2x1bW5dLCByZXBvcnRFcnJvcilcbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBtYXBDb2x1bW5EZXNjcmlwdGlvblRvUHJvdG8oXG4gICAgY3VycmVudFBhdGg6IHN0cmluZ1tdLFxuICAgIGRlc2NyaXB0aW9uOiBzdHJpbmcgfCBJUmVjb3JkRGVzY3JpcHRvcixcbiAgICByZXBvcnRFcnJvcjogKGU6IEVycm9yKSA9PiB2b2lkXG4gICk6IGRhdGFmb3JtLklDb2x1bW5EZXNjcmlwdG9yW10ge1xuICAgIGlmICh0eXBlb2YgZGVzY3JpcHRpb24gPT09IFwic3RyaW5nXCIpIHtcbiAgICAgIHJldHVybiBbXG4gICAgICAgIGRhdGFmb3JtLkNvbHVtbkRlc2NyaXB0b3IuY3JlYXRlKHtcbiAgICAgICAgICBkZXNjcmlwdGlvbixcbiAgICAgICAgICBwYXRoOiBjdXJyZW50UGF0aFxuICAgICAgICB9KVxuICAgICAgXTtcbiAgICB9XG4gICAgdXRpbHMuY2hlY2tFeGNlc3NQcm9wZXJ0aWVzKFxuICAgICAgcmVwb3J0RXJyb3IsXG4gICAgICBkZXNjcmlwdGlvbixcbiAgICAgIElSZWNvcmREZXNjcmlwdG9yUHJvcGVydGllcygpLFxuICAgICAgYCR7Y3VycmVudFBhdGguam9pbihcIi5cIil9IGNvbHVtbiBkZXNjcmlwdG9yYFxuICAgICk7XG4gICAgY29uc3QgY29sdW1uRGVzY3JpcHRvcjogZGF0YWZvcm0uSUNvbHVtbkRlc2NyaXB0b3JbXSA9ICEhZGVzY3JpcHRpb25cbiAgICAgID8gW1xuICAgICAgICAgIGRhdGFmb3JtLkNvbHVtbkRlc2NyaXB0b3IuY3JlYXRlKHtcbiAgICAgICAgICAgIHBhdGg6IGN1cnJlbnRQYXRoLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IGRlc2NyaXB0aW9uLmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgZGlzcGxheU5hbWU6IGRlc2NyaXB0aW9uLmRpc3BsYXlOYW1lLFxuICAgICAgICAgICAgZGltZW5zaW9uVHlwZTogQ29sdW1uRGVzY3JpcHRvcnMubWFwRGltZW5zaW9uVHlwZShkZXNjcmlwdGlvbi5kaW1lbnNpb24pLFxuICAgICAgICAgICAgYWdncmVnYXRpb246IENvbHVtbkRlc2NyaXB0b3JzLm1hcEFnZ3JlZ2F0aW9uKGRlc2NyaXB0aW9uLmFnZ3JlZ2F0b3IpLFxuICAgICAgICAgICAgZXhwcmVzc2lvbjogZGVzY3JpcHRpb24uZXhwcmVzc2lvblxuICAgICAgICAgIH0pXG4gICAgICAgIF1cbiAgICAgIDogW107XG4gICAgY29uc3QgbmVzdGVkQ29sdW1ucyA9IGRlc2NyaXB0aW9uLmNvbHVtbnMgPyBPYmplY3Qua2V5cyhkZXNjcmlwdGlvbi5jb2x1bW5zKSA6IFtdO1xuICAgIHJldHVybiBjb2x1bW5EZXNjcmlwdG9yLmNvbmNhdChcbiAgICAgIHV0aWxzLmZsYXR0ZW4oXG4gICAgICAgIG5lc3RlZENvbHVtbnMubWFwKG5lc3RlZENvbHVtbiA9PlxuICAgICAgICAgIENvbHVtbkRlc2NyaXB0b3JzLm1hcENvbHVtbkRlc2NyaXB0aW9uVG9Qcm90byhcbiAgICAgICAgICAgIGN1cnJlbnRQYXRoLmNvbmNhdChbbmVzdGVkQ29sdW1uXSksXG4gICAgICAgICAgICBkZXNjcmlwdGlvbi5jb2x1bW5zW25lc3RlZENvbHVtbl0sXG4gICAgICAgICAgICByZXBvcnRFcnJvclxuICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIG1hcEFnZ3JlZ2F0aW9uKGFnZ3JlZ2F0aW9uOiBzdHJpbmcpIHtcbiAgICBzd2l0Y2ggKGFnZ3JlZ2F0aW9uKSB7XG4gICAgICBjYXNlIFwic3VtXCI6XG4gICAgICAgIHJldHVybiBkYXRhZm9ybS5Db2x1bW5EZXNjcmlwdG9yLkFnZ3JlZ2F0aW9uLlNVTTtcbiAgICAgIGNhc2UgXCJkaXN0aW5jdFwiOlxuICAgICAgICByZXR1cm4gZGF0YWZvcm0uQ29sdW1uRGVzY3JpcHRvci5BZ2dyZWdhdGlvbi5ESVNUSU5DVDtcbiAgICAgIGNhc2UgXCJkZXJpdmVkXCI6XG4gICAgICAgIHJldHVybiBkYXRhZm9ybS5Db2x1bW5EZXNjcmlwdG9yLkFnZ3JlZ2F0aW9uLkRFUklWRUQ7XG4gICAgICBjYXNlIHVuZGVmaW5lZDpcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgJyR7YWdncmVnYXRpb259JyBpcyBub3QgYSB2YWxpZCBhZ2dyZWdhdGlvbiBvcHRpb24uYCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHN0YXRpYyBtYXBEaW1lbnNpb25UeXBlKGRpbWVuc2lvblR5cGU6IHN0cmluZykge1xuICAgIHN3aXRjaCAoZGltZW5zaW9uVHlwZSkge1xuICAgICAgY2FzZSBcImNhdGVnb3J5XCI6XG4gICAgICAgIHJldHVybiBkYXRhZm9ybS5Db2x1bW5EZXNjcmlwdG9yLkRpbWVuc2lvblR5cGUuQ0FURUdPUlk7XG4gICAgICBjYXNlIFwidGltZXN0YW1wXCI6XG4gICAgICAgIHJldHVybiBkYXRhZm9ybS5Db2x1bW5EZXNjcmlwdG9yLkRpbWVuc2lvblR5cGUuVElNRVNUQU1QO1xuICAgICAgY2FzZSB1bmRlZmluZWQ6XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYCcke2RpbWVuc2lvblR5cGV9JyBpcyBub3QgYSB2YWxpZCBkaW1lbnNpb24gdHlwZS5gKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==

@@ -20,2 +20,3 @@ /// <amd-module name="@dataform/core/common" />

dependencies?: Resolvable | Resolvable[];
hermetic?: boolean;
}

@@ -22,0 +23,0 @@ export interface IDocumentableConfig {

@@ -22,2 +22,2 @@ (function (factory) {

});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS9jb21tb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7SUFBQSxnREFBb0Q7SUF3S3ZDLFFBQUEsMkJBQTJCLEdBQUcsR0FBRyxFQUFFLENBQzlDLG9CQUFZLEVBQXFCLENBQUM7UUFDaEMsYUFBYTtRQUNiLFNBQVM7UUFDVCxhQUFhO1FBQ2IsV0FBVztRQUNYLFlBQVk7UUFDWixZQUFZO0tBQ2IsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgc3RyaWN0S2V5c09mIH0gZnJvbSBcIkBkYXRhZm9ybS9jb3JlL3V0aWxzXCI7XG5cbi8qKlxuICogQ29udGV4dCBtZXRob2RzIGFyZSBhdmFpbGFibGUgd2hlbiBldmFsdWF0aW5nIGNvbnRleHRhYmxlIFNRTCBjb2RlLCBzdWNoIGFzXG4gKiB3aXRoaW4gU1FMWCBmaWxlcywgb3Igd2hlbiB1c2luZyBhIFtDb250ZXh0YWJsZV0oI0NvbnRleHRhYmxlKSBhcmd1bWVudCB3aXRoIHRoZSBKUyBBUEkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUNvbW1vbkNvbnRleHQge1xuICAvKipcbiAgICogRXF1aXZlbGFudCB0byBgcmVzb2x2ZShuYW1lKCkpYC5cbiAgICpcbiAgICogUmV0dXJucyBhIHZhbGlkIFNRTCBzdHJpbmcgdGhhdCBjYW4gYmUgdXNlZCB0byByZWZlcmVuY2UgdGhlIGRhdGFzZXQgcHJvZHVjZWQgYnkgdGhpcyBhY3Rpb24uXG4gICAqL1xuICBzZWxmOiAoKSA9PiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIG5hbWUgb2YgdGhpcyBkYXRhc2V0LlxuICAgKi9cbiAgbmFtZTogKCkgPT4gc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBSZWZlcmVuY2VzIGFub3RoZXIgYWN0aW9uLCBhZGRpbmcgaXQgYXMgYSBkZXBlbmRlbmN5IHRvIHRoaXMgYWN0aW9uLCByZXR1cm5pbmcgdmFsaWQgU1FMIHRvIGJlIHVzZWQgaW4gYSBgZnJvbWAgZXhwcmVzc2lvbi5cbiAgICpcbiAgICogVGhpcyBmdW5jdGlvbiBjYW4gYmUgY2FsbGVkIHdpdGggYSBbUmVzb2x2YWJsZV0oI1Jlc29sdmFibGUpIG9iamVjdCwgZm9yIGV4YW1wbGU6XG4gICAqXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogJHtyZWYoeyBuYW1lOiBcIm5hbWVcIiwgc2NoZW1hOiBcInNjaGVtYVwiLCBkYXRhYmFzZTogXCJkYXRhYmFzZVwiIH0pfVxuICAgKiBgYGBcbiAgICpcbiAgICogVGhpcyBmdW5jdGlvbiBjYW4gYWxzbyBiZSBjYWxsZWQgdXNpbmcgaW5kaXZpZHVhbCBhcmd1bWVudHMgZm9yIHRoZSBcImRhdGFiYXNlXCIsIFwic2NoZW1hXCIsIGFuZCBcIm5hbWVcIiB2YWx1ZXMuXG4gICAqIFdoZW4gb25seSB0d28gdmFsdWVzIGFyZSBwcm92aWRlZCwgdGhlIGRlZmF1bHQgZGF0YWJhc2Ugd2lsbCBiZSB1c2VkIGFuZCB0aGUgdmFsdWVzIHdpbGwgYmUgaW50ZXJwcmV0ZWQgYXMgXCJzY2hlbWFcIiBhbmQgXCJuYW1lXCIuXG4gICAqIFdoZW4gb25seSBvbmUgdmFsdWUgaXMgcHJvdmlkZWQsIHRoZSBkZWZhdWx0IGRhdGEgYmFzZSBzY2hlbWEgd2lsbCBiZSB1c2VkLCB3aXRoIHRoZSBwcm92aWRlZCB2YWx1ZSBpbnRlcnByZXRlZCBhcyBcIm5hbWVcIi5cbiAgICpcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiAke3JlZihcImRhdGFiYXNlXCIsIFwic2NoZW1hXCIsIFwibmFtZVwiKX1cbiAgICogJHtyZWYoXCJzY2hlbWFcIiwgXCJuYW1lXCIpfVxuICAgKiAke3JlZihcIm5hbWVcIil9XG4gICAqIGBgYFxuICAgKi9cbiAgcmVmOiAocmVmOiBSZXNvbHZhYmxlIHwgc3RyaW5nW10sIC4uLnJlc3Q6IHN0cmluZ1tdKSA9PiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFNpbWlsYXIgdG8gYHJlZmAgZXhjZXB0IHRoYXQgaXQgZG9lcyBub3QgYWRkIGEgZGVwZW5kZW5jeSwgYnV0IGp1c3QgcmVzb2x2ZXMgdGhlIHByb3ZpZGVkIHJlZmVyZW5jZVxuICAgKiBzbyB0aGF0IGl0IGNhbiBiZSB1c2VkIGluIFNRTCwgZm9yIGV4YW1wbGUgaW4gYSBgZnJvbWAgZXhwcmVzc2lvbi5cbiAgICpcbiAgICogU2VlIHRoZSBgcmVmYCBmdW5jdGlvbiBmb3IgZXhhbXBsZSB1c2FnZS5cbiAgICovXG4gIHJlc29sdmU6IChyZWY6IFJlc29sdmFibGUgfCBzdHJpbmdbXSwgLi4ucmVzdDogc3RyaW5nW10pID0+IHN0cmluZztcbn1cblxuLyoqXG4gKiBAaGlkZGVuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUNvbW1vbkNvbmZpZyB7XG4gIC8qKlxuICAgKiBUaGUgdHlwZSBvZiB0aGUgYWN0aW9uLlxuICAgKlxuICAgKiBAaGlkZGVuXG4gICAqL1xuICB0eXBlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBIGxpc3Qgb2YgdXNlci1kZWZpbmVkIHRhZ3Mgd2l0aCB3aGljaCB0aGUgYWN0aW9uIHNob3VsZCBiZSBsYWJlbGVkLlxuICAgKi9cbiAgdGFncz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgYWN0aW9uLlxuICAgKlxuICAgKiBAaGlkZGVuXG4gICAqL1xuICBuYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBEZXBlbmRlbmNpZXMgb2YgdGhlIGFjdGlvbi5cbiAgICpcbiAgICogQGhpZGRlblxuICAgKi9cbiAgZGVwZW5kZW5jaWVzPzogUmVzb2x2YWJsZSB8IFJlc29sdmFibGVbXTtcbn1cblxuLyoqXG4gKiBAaGlkZGVuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSVRhcmdldGFibGVDb25maWcgZXh0ZW5kcyBJQ29tbW9uQ29uZmlnIHtcbiAgLyoqXG4gICAqIFRoZSBkYXRhYmFzZSBpbiB3aGljaCB0aGUgb3V0cHV0IG9mIHRoaXMgYWN0aW9uIHNob3VsZCBiZSBjcmVhdGVkLlxuICAgKi9cbiAgZGF0YWJhc2U/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBzY2hlbWEgaW4gd2hpY2ggdGhlIG91dHB1dCBvZiB0aGlzIGFjdGlvbiBzaG91bGQgYmUgY3JlYXRlZC5cbiAgICovXG4gIHNjaGVtYT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBAaGlkZGVuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSURlcGVuZGVuY2llc0NvbmZpZyB7XG4gIC8qKlxuICAgKiBPbmUgb3IgbW9yZSBleHBsaWNpdCBkZXBlbmRlbmNpZXMgZm9yIHRoaXMgYWN0aW9uLiBEZXBlbmRlbmN5IGFjdGlvbnMgd2lsbCBydW4gYmVmb3JlIGRlcGVuZGVudCBhY3Rpb25zLlxuICAgKiBUeXBpY2FsbHkgdGhpcyB3b3VsZCByZW1haW4gdW5zZXQsIGJlY2F1c2UgbW9zdCBkZXBlbmRlbmNpZXMgYXJlIGRlY2xhcmVkIGFzIGEgYnktcHJvZHVjdCBvZiB1c2luZyB0aGUgYHJlZmAgZnVuY3Rpb24uXG4gICAqL1xuICBkZXBlbmRlbmNpZXM/OiBSZXNvbHZhYmxlIHwgUmVzb2x2YWJsZVtdO1xufVxuXG4vKipcbiAqIEBoaWRkZW5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJRG9jdW1lbnRhYmxlQ29uZmlnIHtcbiAgLyoqXG4gICAqIEEgZGVzY3JpcHRpb24gb2YgY29sdW1ucyB3aXRoaW4gdGhlIGRhdGFzZXQuXG4gICAqL1xuICBjb2x1bW5zPzogSUNvbHVtbnNEZXNjcmlwdG9yO1xuXG4gIC8qKlxuICAgKiBBIGRlc2NyaXB0aW9uIG9mIHRoZSBkYXRhc2V0LlxuICAgKi9cbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogRGVzY3JpYmVzIGNvbHVtbnMgaW4gYSBkYXRhc2V0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElDb2x1bW5zRGVzY3JpcHRvciB7XG4gIFtuYW1lOiBzdHJpbmddOiBzdHJpbmcgfCBJUmVjb3JkRGVzY3JpcHRvcjtcbn1cblxuLyoqXG4gKiBEZXNjcmliZXMgYSBzdHJ1Y3QsIG9iamVjdCBvciByZWNvcmQgaW4gYSBkYXRhc2V0IHRoYXQgaGFzIG5lc3RlZCBjb2x1bW5zLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElSZWNvcmREZXNjcmlwdG9yIHtcbiAgLyoqXG4gICAqIEEgZGVzY3JpcHRpb24gb2YgdGhlIHN0cnVjdCwgb2JqZWN0IG9yIHJlY29yZC5cbiAgICovXG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBIGRlc2NyaXB0aW9uIG9mIGNvbHVtbnMgd2l0aGluIHRoZSBzdHJ1Y3QsIG9iamVjdCBvciByZWNvcmQuXG4gICAqL1xuICBjb2x1bW5zPzogSUNvbHVtbnNEZXNjcmlwdG9yO1xuXG4gIC8qKlxuICAgKiBAaGlkZGVuXG4gICAqL1xuICBkaXNwbGF5TmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogQGhpZGRlblxuICAgKi9cbiAgZGltZW5zaW9uPzogXCJjYXRlZ29yeVwiIHwgXCJ0aW1lc3RhbXBcIjtcblxuICAvKipcbiAgICogQGhpZGRlblxuICAgKi9cbiAgYWdncmVnYXRvcj86IFwic3VtXCIgfCBcImRpc3RpbmN0XCIgfCBcImRlcml2ZWRcIjtcblxuICAvKipcbiAgICogQGhpZGRlblxuICAgKi9cbiAgZXhwcmVzc2lvbj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBAaGlkZGVuXG4gKlxuICogVE9ETzogVGhpcyBuZWVkcyB0byBiZSBhIG1ldGhvZCwgSSdtIHJlYWxseSBub3Qgc3VyZSB3aHksIGJ1dCBpdCBoaXRzIGEgcnVudGltZSBmYWlsdXJlIG90aGVyd2lzZS5cbiAqL1xuZXhwb3J0IGNvbnN0IElSZWNvcmREZXNjcmlwdG9yUHJvcGVydGllcyA9ICgpID0+XG4gIHN0cmljdEtleXNPZjxJUmVjb3JkRGVzY3JpcHRvcj4oKShbXG4gICAgXCJkZXNjcmlwdGlvblwiLFxuICAgIFwiY29sdW1uc1wiLFxuICAgIFwiZGlzcGxheU5hbWVcIixcbiAgICBcImRpbWVuc2lvblwiLFxuICAgIFwiYWdncmVnYXRvclwiLFxuICAgIFwiZXhwcmVzc2lvblwiXG4gIF0pO1xuXG4vKipcbiAqIEEgcmVmZXJlbmNlIHRvIGEgZGF0YXNldCB3aXRoaW4gdGhlIHdhcmVob3VzZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJVGFyZ2V0IHtcbiAgZGF0YWJhc2U/OiBzdHJpbmc7XG5cbiAgc2NoZW1hPzogc3RyaW5nO1xuXG4gIG5hbWU/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQSByZXNvbHZhYmxlIGNhbiBiZSBlaXRoZXIgdGhlIG5hbWUgb2YgYSBkYXRhc2V0IGFzIHN0cmluZywgb3JcbiAqIGFuIG9iamVjdCB0aGF0IGRlc2NyaWJlcyB0aGUgZnVsbCBwYXRoIHRvIHRoZSByZWxhdGlvbi5cbiAqL1xuZXhwb3J0IHR5cGUgUmVzb2x2YWJsZSA9IHN0cmluZyB8IElUYXJnZXQ7XG5cbi8qKlxuICogQ29udGV4dGFibGUgYXJndW1lbnRzIGNhbiBlaXRoZXIgcGFzcyBhIHBsYWluIHZhbHVlIGZvciB0aGVpclxuICogZ2VuZXJpYyB0eXBlIGBUYCBvciBjYW4gcGFzcyBhIGZ1bmN0aW9uIHRoYXQgd2lsbCBiZSBjYWxsZWRcbiAqIHdpdGggdGhlIGNvbnRleHQgb2JqZWN0IGZvciB0aGlzIHR5cGUgb2Ygb3BlcmF0aW9uLlxuICovXG5leHBvcnQgdHlwZSBDb250ZXh0YWJsZTxDb250ZXh0LCBUPiA9IFQgfCAoKGN0eDogQ29udGV4dCkgPT4gVCk7XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS9jb21tb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7SUFBQSxnREFBb0Q7SUE4S3ZDLFFBQUEsMkJBQTJCLEdBQUcsR0FBRyxFQUFFLENBQzlDLG9CQUFZLEVBQXFCLENBQUM7UUFDaEMsYUFBYTtRQUNiLFNBQVM7UUFDVCxhQUFhO1FBQ2IsV0FBVztRQUNYLFlBQVk7UUFDWixZQUFZO0tBQ2IsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgc3RyaWN0S2V5c09mIH0gZnJvbSBcIkBkYXRhZm9ybS9jb3JlL3V0aWxzXCI7XG5cbi8qKlxuICogQ29udGV4dCBtZXRob2RzIGFyZSBhdmFpbGFibGUgd2hlbiBldmFsdWF0aW5nIGNvbnRleHRhYmxlIFNRTCBjb2RlLCBzdWNoIGFzXG4gKiB3aXRoaW4gU1FMWCBmaWxlcywgb3Igd2hlbiB1c2luZyBhIFtDb250ZXh0YWJsZV0oI0NvbnRleHRhYmxlKSBhcmd1bWVudCB3aXRoIHRoZSBKUyBBUEkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUNvbW1vbkNvbnRleHQge1xuICAvKipcbiAgICogRXF1aXZlbGFudCB0byBgcmVzb2x2ZShuYW1lKCkpYC5cbiAgICpcbiAgICogUmV0dXJucyBhIHZhbGlkIFNRTCBzdHJpbmcgdGhhdCBjYW4gYmUgdXNlZCB0byByZWZlcmVuY2UgdGhlIGRhdGFzZXQgcHJvZHVjZWQgYnkgdGhpcyBhY3Rpb24uXG4gICAqL1xuICBzZWxmOiAoKSA9PiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIG5hbWUgb2YgdGhpcyBkYXRhc2V0LlxuICAgKi9cbiAgbmFtZTogKCkgPT4gc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBSZWZlcmVuY2VzIGFub3RoZXIgYWN0aW9uLCBhZGRpbmcgaXQgYXMgYSBkZXBlbmRlbmN5IHRvIHRoaXMgYWN0aW9uLCByZXR1cm5pbmcgdmFsaWQgU1FMIHRvIGJlIHVzZWQgaW4gYSBgZnJvbWAgZXhwcmVzc2lvbi5cbiAgICpcbiAgICogVGhpcyBmdW5jdGlvbiBjYW4gYmUgY2FsbGVkIHdpdGggYSBbUmVzb2x2YWJsZV0oI1Jlc29sdmFibGUpIG9iamVjdCwgZm9yIGV4YW1wbGU6XG4gICAqXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogJHtyZWYoeyBuYW1lOiBcIm5hbWVcIiwgc2NoZW1hOiBcInNjaGVtYVwiLCBkYXRhYmFzZTogXCJkYXRhYmFzZVwiIH0pfVxuICAgKiBgYGBcbiAgICpcbiAgICogVGhpcyBmdW5jdGlvbiBjYW4gYWxzbyBiZSBjYWxsZWQgdXNpbmcgaW5kaXZpZHVhbCBhcmd1bWVudHMgZm9yIHRoZSBcImRhdGFiYXNlXCIsIFwic2NoZW1hXCIsIGFuZCBcIm5hbWVcIiB2YWx1ZXMuXG4gICAqIFdoZW4gb25seSB0d28gdmFsdWVzIGFyZSBwcm92aWRlZCwgdGhlIGRlZmF1bHQgZGF0YWJhc2Ugd2lsbCBiZSB1c2VkIGFuZCB0aGUgdmFsdWVzIHdpbGwgYmUgaW50ZXJwcmV0ZWQgYXMgXCJzY2hlbWFcIiBhbmQgXCJuYW1lXCIuXG4gICAqIFdoZW4gb25seSBvbmUgdmFsdWUgaXMgcHJvdmlkZWQsIHRoZSBkZWZhdWx0IGRhdGEgYmFzZSBzY2hlbWEgd2lsbCBiZSB1c2VkLCB3aXRoIHRoZSBwcm92aWRlZCB2YWx1ZSBpbnRlcnByZXRlZCBhcyBcIm5hbWVcIi5cbiAgICpcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiAke3JlZihcImRhdGFiYXNlXCIsIFwic2NoZW1hXCIsIFwibmFtZVwiKX1cbiAgICogJHtyZWYoXCJzY2hlbWFcIiwgXCJuYW1lXCIpfVxuICAgKiAke3JlZihcIm5hbWVcIil9XG4gICAqIGBgYFxuICAgKi9cbiAgcmVmOiAocmVmOiBSZXNvbHZhYmxlIHwgc3RyaW5nW10sIC4uLnJlc3Q6IHN0cmluZ1tdKSA9PiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFNpbWlsYXIgdG8gYHJlZmAgZXhjZXB0IHRoYXQgaXQgZG9lcyBub3QgYWRkIGEgZGVwZW5kZW5jeSwgYnV0IGp1c3QgcmVzb2x2ZXMgdGhlIHByb3ZpZGVkIHJlZmVyZW5jZVxuICAgKiBzbyB0aGF0IGl0IGNhbiBiZSB1c2VkIGluIFNRTCwgZm9yIGV4YW1wbGUgaW4gYSBgZnJvbWAgZXhwcmVzc2lvbi5cbiAgICpcbiAgICogU2VlIHRoZSBgcmVmYCBmdW5jdGlvbiBmb3IgZXhhbXBsZSB1c2FnZS5cbiAgICovXG4gIHJlc29sdmU6IChyZWY6IFJlc29sdmFibGUgfCBzdHJpbmdbXSwgLi4ucmVzdDogc3RyaW5nW10pID0+IHN0cmluZztcbn1cblxuLyoqXG4gKiBAaGlkZGVuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUNvbW1vbkNvbmZpZyB7XG4gIC8qKlxuICAgKiBUaGUgdHlwZSBvZiB0aGUgYWN0aW9uLlxuICAgKlxuICAgKiBAaGlkZGVuXG4gICAqL1xuICB0eXBlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBIGxpc3Qgb2YgdXNlci1kZWZpbmVkIHRhZ3Mgd2l0aCB3aGljaCB0aGUgYWN0aW9uIHNob3VsZCBiZSBsYWJlbGVkLlxuICAgKi9cbiAgdGFncz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgYWN0aW9uLlxuICAgKlxuICAgKiBAaGlkZGVuXG4gICAqL1xuICBuYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBEZXBlbmRlbmNpZXMgb2YgdGhlIGFjdGlvbi5cbiAgICpcbiAgICogQGhpZGRlblxuICAgKi9cbiAgZGVwZW5kZW5jaWVzPzogUmVzb2x2YWJsZSB8IFJlc29sdmFibGVbXTtcbn1cblxuLyoqXG4gKiBAaGlkZGVuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSVRhcmdldGFibGVDb25maWcgZXh0ZW5kcyBJQ29tbW9uQ29uZmlnIHtcbiAgLyoqXG4gICAqIFRoZSBkYXRhYmFzZSBpbiB3aGljaCB0aGUgb3V0cHV0IG9mIHRoaXMgYWN0aW9uIHNob3VsZCBiZSBjcmVhdGVkLlxuICAgKi9cbiAgZGF0YWJhc2U/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBzY2hlbWEgaW4gd2hpY2ggdGhlIG91dHB1dCBvZiB0aGlzIGFjdGlvbiBzaG91bGQgYmUgY3JlYXRlZC5cbiAgICovXG4gIHNjaGVtYT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBAaGlkZGVuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSURlcGVuZGVuY2llc0NvbmZpZyB7XG4gIC8qKlxuICAgKiBPbmUgb3IgbW9yZSBleHBsaWNpdCBkZXBlbmRlbmNpZXMgZm9yIHRoaXMgYWN0aW9uLiBEZXBlbmRlbmN5IGFjdGlvbnMgd2lsbCBydW4gYmVmb3JlIGRlcGVuZGVudCBhY3Rpb25zLlxuICAgKiBUeXBpY2FsbHkgdGhpcyB3b3VsZCByZW1haW4gdW5zZXQsIGJlY2F1c2UgbW9zdCBkZXBlbmRlbmNpZXMgYXJlIGRlY2xhcmVkIGFzIGEgYnktcHJvZHVjdCBvZiB1c2luZyB0aGUgYHJlZmAgZnVuY3Rpb24uXG4gICAqL1xuICBkZXBlbmRlbmNpZXM/OiBSZXNvbHZhYmxlIHwgUmVzb2x2YWJsZVtdO1xuXG4gIC8qKlxuICAgKiBBc3NlcnRzIHRoYXQgaXQgaXMgY29ycmVjdCBmb3IgdGhpcyBhY3Rpb24gdG8gaGF2ZSB6ZXJvIGRlcGVuZGVuY2llcy4gVGhpcyBpcyByZXF1aXJlZCB0byBiZSBzZXQgdG8gYHRydWVgIGZvclxuICAgKiBhY3Rpb25zIHdpdGggemVybyBkZXBlbmRlbmNpZXMgd2hlbiB0aGUgcnVuIGNhY2hpbmcgZmVhdHVyZSBpcyB0dXJuZWQgb24uXG4gICAqL1xuICBoZXJtZXRpYz86IGJvb2xlYW47XG59XG5cbi8qKlxuICogQGhpZGRlblxuICovXG5leHBvcnQgaW50ZXJmYWNlIElEb2N1bWVudGFibGVDb25maWcge1xuICAvKipcbiAgICogQSBkZXNjcmlwdGlvbiBvZiBjb2x1bW5zIHdpdGhpbiB0aGUgZGF0YXNldC5cbiAgICovXG4gIGNvbHVtbnM/OiBJQ29sdW1uc0Rlc2NyaXB0b3I7XG5cbiAgLyoqXG4gICAqIEEgZGVzY3JpcHRpb24gb2YgdGhlIGRhdGFzZXQuXG4gICAqL1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBEZXNjcmliZXMgY29sdW1ucyBpbiBhIGRhdGFzZXQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUNvbHVtbnNEZXNjcmlwdG9yIHtcbiAgW25hbWU6IHN0cmluZ106IHN0cmluZyB8IElSZWNvcmREZXNjcmlwdG9yO1xufVxuXG4vKipcbiAqIERlc2NyaWJlcyBhIHN0cnVjdCwgb2JqZWN0IG9yIHJlY29yZCBpbiBhIGRhdGFzZXQgdGhhdCBoYXMgbmVzdGVkIGNvbHVtbnMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSVJlY29yZERlc2NyaXB0b3Ige1xuICAvKipcbiAgICogQSBkZXNjcmlwdGlvbiBvZiB0aGUgc3RydWN0LCBvYmplY3Qgb3IgcmVjb3JkLlxuICAgKi9cbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEEgZGVzY3JpcHRpb24gb2YgY29sdW1ucyB3aXRoaW4gdGhlIHN0cnVjdCwgb2JqZWN0IG9yIHJlY29yZC5cbiAgICovXG4gIGNvbHVtbnM/OiBJQ29sdW1uc0Rlc2NyaXB0b3I7XG5cbiAgLyoqXG4gICAqIEBoaWRkZW5cbiAgICovXG4gIGRpc3BsYXlOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAaGlkZGVuXG4gICAqL1xuICBkaW1lbnNpb24/OiBcImNhdGVnb3J5XCIgfCBcInRpbWVzdGFtcFwiO1xuXG4gIC8qKlxuICAgKiBAaGlkZGVuXG4gICAqL1xuICBhZ2dyZWdhdG9yPzogXCJzdW1cIiB8IFwiZGlzdGluY3RcIiB8IFwiZGVyaXZlZFwiO1xuXG4gIC8qKlxuICAgKiBAaGlkZGVuXG4gICAqL1xuICBleHByZXNzaW9uPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEBoaWRkZW5cbiAqXG4gKiBUT0RPOiBUaGlzIG5lZWRzIHRvIGJlIGEgbWV0aG9kLCBJJ20gcmVhbGx5IG5vdCBzdXJlIHdoeSwgYnV0IGl0IGhpdHMgYSBydW50aW1lIGZhaWx1cmUgb3RoZXJ3aXNlLlxuICovXG5leHBvcnQgY29uc3QgSVJlY29yZERlc2NyaXB0b3JQcm9wZXJ0aWVzID0gKCkgPT5cbiAgc3RyaWN0S2V5c09mPElSZWNvcmREZXNjcmlwdG9yPigpKFtcbiAgICBcImRlc2NyaXB0aW9uXCIsXG4gICAgXCJjb2x1bW5zXCIsXG4gICAgXCJkaXNwbGF5TmFtZVwiLFxuICAgIFwiZGltZW5zaW9uXCIsXG4gICAgXCJhZ2dyZWdhdG9yXCIsXG4gICAgXCJleHByZXNzaW9uXCJcbiAgXSk7XG5cbi8qKlxuICogQSByZWZlcmVuY2UgdG8gYSBkYXRhc2V0IHdpdGhpbiB0aGUgd2FyZWhvdXNlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElUYXJnZXQge1xuICBkYXRhYmFzZT86IHN0cmluZztcblxuICBzY2hlbWE/OiBzdHJpbmc7XG5cbiAgbmFtZT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBBIHJlc29sdmFibGUgY2FuIGJlIGVpdGhlciB0aGUgbmFtZSBvZiBhIGRhdGFzZXQgYXMgc3RyaW5nLCBvclxuICogYW4gb2JqZWN0IHRoYXQgZGVzY3JpYmVzIHRoZSBmdWxsIHBhdGggdG8gdGhlIHJlbGF0aW9uLlxuICovXG5leHBvcnQgdHlwZSBSZXNvbHZhYmxlID0gc3RyaW5nIHwgSVRhcmdldDtcblxuLyoqXG4gKiBDb250ZXh0YWJsZSBhcmd1bWVudHMgY2FuIGVpdGhlciBwYXNzIGEgcGxhaW4gdmFsdWUgZm9yIHRoZWlyXG4gKiBnZW5lcmljIHR5cGUgYFRgIG9yIGNhbiBwYXNzIGEgZnVuY3Rpb24gdGhhdCB3aWxsIGJlIGNhbGxlZFxuICogd2l0aCB0aGUgY29udGV4dCBvYmplY3QgZm9yIHRoaXMgdHlwZSBvZiBvcGVyYXRpb24uXG4gKi9cbmV4cG9ydCB0eXBlIENvbnRleHRhYmxlPENvbnRleHQsIFQ+ID0gVCB8ICgoY3R4OiBDb250ZXh0KSA9PiBUKTtcbiJdfQ==

@@ -30,3 +30,3 @@ (function (factory) {

config(config) {
utils_1.checkExcessProperties(config, exports.IDeclarationConfigProperties, "declaration config");
utils_1.checkExcessProperties((e) => this.session.compileError(e), config, exports.IDeclarationConfigProperties, "declaration config");
if (config.description) {

@@ -51,3 +51,3 @@ this.description(config.description);

}
this.proto.actionDescriptor.columns = column_descriptors_1.ColumnDescriptors.mapToColumnProtoArray(columns);
this.proto.actionDescriptor.columns = column_descriptors_1.ColumnDescriptors.mapToColumnProtoArray(columns, (e) => this.session.compileError(e));
return this;

@@ -61,2 +61,2 @@ }

});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjbGFyYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9jb3JlL2RlY2xhcmF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0lBQUEsMEVBQXNFO0lBR3RFLGdEQUEyRTtJQUMzRSw2Q0FBNEM7SUFNL0IsUUFBQSw0QkFBNEIsR0FBRyxvQkFBWSxFQUFzQixDQUFDO1FBQzdFLE1BQU07UUFDTixNQUFNO1FBQ04sTUFBTTtRQUNOLFFBQVE7UUFDUixVQUFVO1FBQ1YsU0FBUztRQUNULGFBQWE7UUFDYixjQUFjO0tBQ2YsQ0FBQyxDQUFDO0lBS0gsTUFBYSxXQUFXO1FBQXhCO1lBQ1MsVUFBSyxHQUEwQixpQkFBUSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQWtDdEUsQ0FBQztRQTlCUSxNQUFNLENBQUMsTUFBMEI7WUFDdEMsNkJBQXFCLENBQUMsTUFBTSxFQUFFLG9DQUE0QixFQUFFLG9CQUFvQixDQUFDLENBQUM7WUFDbEYsSUFBSSxNQUFNLENBQUMsV0FBVyxFQUFFO2dCQUN0QixJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQzthQUN0QztZQUNELElBQUksTUFBTSxDQUFDLE9BQU8sRUFBRTtnQkFDbEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7YUFDOUI7WUFDRCxPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFFTSxXQUFXLENBQUMsV0FBbUI7WUFDcEMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLEVBQUU7Z0JBQ2hDLElBQUksQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLEdBQUcsRUFBRSxDQUFDO2FBQ2xDO1lBQ0QsSUFBSSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO1lBQ3RELE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUVNLE9BQU8sQ0FBQyxPQUEyQjtZQUN4QyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsRUFBRTtnQkFDaEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsR0FBRyxFQUFFLENBQUM7YUFDbEM7WUFDRCxJQUFJLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLE9BQU8sR0FBRyxzQ0FBaUIsQ0FBQyxxQkFBcUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUN2RixPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFFTSxPQUFPO1lBQ1osT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQ3BCLENBQUM7S0FDRjtJQW5DRCxrQ0FtQ0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb2x1bW5EZXNjcmlwdG9ycyB9IGZyb20gXCJAZGF0YWZvcm0vY29yZS9jb2x1bW5fZGVzY3JpcHRvcnNcIjtcbmltcG9ydCB7IElDb2x1bW5zRGVzY3JpcHRvciwgSURvY3VtZW50YWJsZUNvbmZpZywgSVRhcmdldGFibGVDb25maWcgfSBmcm9tIFwiQGRhdGFmb3JtL2NvcmUvY29tbW9uXCI7XG5pbXBvcnQgeyBTZXNzaW9uIH0gZnJvbSBcIkBkYXRhZm9ybS9jb3JlL3Nlc3Npb25cIjtcbmltcG9ydCB7IGNoZWNrRXhjZXNzUHJvcGVydGllcywgc3RyaWN0S2V5c09mIH0gZnJvbSBcIkBkYXRhZm9ybS9jb3JlL3V0aWxzXCI7XG5pbXBvcnQgeyBkYXRhZm9ybSB9IGZyb20gXCJAZGF0YWZvcm0vcHJvdG9zXCI7XG4vKipcbiAqIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgYGRlY2xhcmF0aW9uYCBhY3Rpb24gdHlwZXMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSURlY2xhcmF0aW9uQ29uZmlnIGV4dGVuZHMgSURvY3VtZW50YWJsZUNvbmZpZywgSVRhcmdldGFibGVDb25maWcge31cblxuZXhwb3J0IGNvbnN0IElEZWNsYXJhdGlvbkNvbmZpZ1Byb3BlcnRpZXMgPSBzdHJpY3RLZXlzT2Y8SURlY2xhcmF0aW9uQ29uZmlnPigpKFtcbiAgXCJ0eXBlXCIsXG4gIFwibmFtZVwiLFxuICBcInRhZ3NcIixcbiAgXCJzY2hlbWFcIixcbiAgXCJkYXRhYmFzZVwiLFxuICBcImNvbHVtbnNcIixcbiAgXCJkZXNjcmlwdGlvblwiLFxuICBcImRlcGVuZGVuY2llc1wiXG5dKTtcblxuLyoqXG4gKiBAaGlkZGVuXG4gKi9cbmV4cG9ydCBjbGFzcyBEZWNsYXJhdGlvbiB7XG4gIHB1YmxpYyBwcm90bzogZGF0YWZvcm0uSURlY2xhcmF0aW9uID0gZGF0YWZvcm0uRGVjbGFyYXRpb24uY3JlYXRlKCk7XG5cbiAgcHVibGljIHNlc3Npb246IFNlc3Npb247XG5cbiAgcHVibGljIGNvbmZpZyhjb25maWc6IElEZWNsYXJhdGlvbkNvbmZpZykge1xuICAgIGNoZWNrRXhjZXNzUHJvcGVydGllcyhjb25maWcsIElEZWNsYXJhdGlvbkNvbmZpZ1Byb3BlcnRpZXMsIFwiZGVjbGFyYXRpb24gY29uZmlnXCIpO1xuICAgIGlmIChjb25maWcuZGVzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMuZGVzY3JpcHRpb24oY29uZmlnLmRlc2NyaXB0aW9uKTtcbiAgICB9XG4gICAgaWYgKGNvbmZpZy5jb2x1bW5zKSB7XG4gICAgICB0aGlzLmNvbHVtbnMoY29uZmlnLmNvbHVtbnMpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyBkZXNjcmlwdGlvbihkZXNjcmlwdGlvbjogc3RyaW5nKSB7XG4gICAgaWYgKCF0aGlzLnByb3RvLmFjdGlvbkRlc2NyaXB0b3IpIHtcbiAgICAgIHRoaXMucHJvdG8uYWN0aW9uRGVzY3JpcHRvciA9IHt9O1xuICAgIH1cbiAgICB0aGlzLnByb3RvLmFjdGlvbkRlc2NyaXB0b3IuZGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbjtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyBjb2x1bW5zKGNvbHVtbnM6IElDb2x1bW5zRGVzY3JpcHRvcikge1xuICAgIGlmICghdGhpcy5wcm90by5hY3Rpb25EZXNjcmlwdG9yKSB7XG4gICAgICB0aGlzLnByb3RvLmFjdGlvbkRlc2NyaXB0b3IgPSB7fTtcbiAgICB9XG4gICAgdGhpcy5wcm90by5hY3Rpb25EZXNjcmlwdG9yLmNvbHVtbnMgPSBDb2x1bW5EZXNjcmlwdG9ycy5tYXBUb0NvbHVtblByb3RvQXJyYXkoY29sdW1ucyk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgY29tcGlsZSgpIHtcbiAgICByZXR1cm4gdGhpcy5wcm90bztcbiAgfVxufVxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjbGFyYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9jb3JlL2RlY2xhcmF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0lBQUEsMEVBQXNFO0lBR3RFLGdEQUEyRTtJQUMzRSw2Q0FBNEM7SUFNL0IsUUFBQSw0QkFBNEIsR0FBRyxvQkFBWSxFQUFzQixDQUFDO1FBQzdFLE1BQU07UUFDTixNQUFNO1FBQ04sTUFBTTtRQUNOLFFBQVE7UUFDUixVQUFVO1FBQ1YsU0FBUztRQUNULGFBQWE7UUFDYixjQUFjO0tBQ2YsQ0FBQyxDQUFDO0lBS0gsTUFBYSxXQUFXO1FBQXhCO1lBQ1MsVUFBSyxHQUEwQixpQkFBUSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQTBDdEUsQ0FBQztRQXRDUSxNQUFNLENBQUMsTUFBMEI7WUFDdEMsNkJBQXFCLENBQ25CLENBQUMsQ0FBUSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsRUFDMUMsTUFBTSxFQUNOLG9DQUE0QixFQUM1QixvQkFBb0IsQ0FDckIsQ0FBQztZQUNGLElBQUksTUFBTSxDQUFDLFdBQVcsRUFBRTtnQkFDdEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7YUFDdEM7WUFDRCxJQUFJLE1BQU0sQ0FBQyxPQUFPLEVBQUU7Z0JBQ2xCLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2FBQzlCO1lBQ0QsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBRU0sV0FBVyxDQUFDLFdBQW1CO1lBQ3BDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGdCQUFnQixFQUFFO2dCQUNoQyxJQUFJLENBQUMsS0FBSyxDQUFDLGdCQUFnQixHQUFHLEVBQUUsQ0FBQzthQUNsQztZQUNELElBQUksQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQztZQUN0RCxPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFFTSxPQUFPLENBQUMsT0FBMkI7WUFDeEMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLEVBQUU7Z0JBQ2hDLElBQUksQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLEdBQUcsRUFBRSxDQUFDO2FBQ2xDO1lBQ0QsSUFBSSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEdBQUcsc0NBQWlCLENBQUMscUJBQXFCLENBQzNFLE9BQU8sRUFDUCxDQUFDLENBQVEsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQzNDLENBQUM7WUFDRixPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFFTSxPQUFPO1lBQ1osT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQ3BCLENBQUM7S0FDRjtJQTNDRCxrQ0EyQ0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb2x1bW5EZXNjcmlwdG9ycyB9IGZyb20gXCJAZGF0YWZvcm0vY29yZS9jb2x1bW5fZGVzY3JpcHRvcnNcIjtcbmltcG9ydCB7IElDb2x1bW5zRGVzY3JpcHRvciwgSURvY3VtZW50YWJsZUNvbmZpZywgSVRhcmdldGFibGVDb25maWcgfSBmcm9tIFwiQGRhdGFmb3JtL2NvcmUvY29tbW9uXCI7XG5pbXBvcnQgeyBTZXNzaW9uIH0gZnJvbSBcIkBkYXRhZm9ybS9jb3JlL3Nlc3Npb25cIjtcbmltcG9ydCB7IGNoZWNrRXhjZXNzUHJvcGVydGllcywgc3RyaWN0S2V5c09mIH0gZnJvbSBcIkBkYXRhZm9ybS9jb3JlL3V0aWxzXCI7XG5pbXBvcnQgeyBkYXRhZm9ybSB9IGZyb20gXCJAZGF0YWZvcm0vcHJvdG9zXCI7XG4vKipcbiAqIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgYGRlY2xhcmF0aW9uYCBhY3Rpb24gdHlwZXMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSURlY2xhcmF0aW9uQ29uZmlnIGV4dGVuZHMgSURvY3VtZW50YWJsZUNvbmZpZywgSVRhcmdldGFibGVDb25maWcge31cblxuZXhwb3J0IGNvbnN0IElEZWNsYXJhdGlvbkNvbmZpZ1Byb3BlcnRpZXMgPSBzdHJpY3RLZXlzT2Y8SURlY2xhcmF0aW9uQ29uZmlnPigpKFtcbiAgXCJ0eXBlXCIsXG4gIFwibmFtZVwiLFxuICBcInRhZ3NcIixcbiAgXCJzY2hlbWFcIixcbiAgXCJkYXRhYmFzZVwiLFxuICBcImNvbHVtbnNcIixcbiAgXCJkZXNjcmlwdGlvblwiLFxuICBcImRlcGVuZGVuY2llc1wiXG5dKTtcblxuLyoqXG4gKiBAaGlkZGVuXG4gKi9cbmV4cG9ydCBjbGFzcyBEZWNsYXJhdGlvbiB7XG4gIHB1YmxpYyBwcm90bzogZGF0YWZvcm0uSURlY2xhcmF0aW9uID0gZGF0YWZvcm0uRGVjbGFyYXRpb24uY3JlYXRlKCk7XG5cbiAgcHVibGljIHNlc3Npb246IFNlc3Npb247XG5cbiAgcHVibGljIGNvbmZpZyhjb25maWc6IElEZWNsYXJhdGlvbkNvbmZpZykge1xuICAgIGNoZWNrRXhjZXNzUHJvcGVydGllcyhcbiAgICAgIChlOiBFcnJvcikgPT4gdGhpcy5zZXNzaW9uLmNvbXBpbGVFcnJvcihlKSxcbiAgICAgIGNvbmZpZyxcbiAgICAgIElEZWNsYXJhdGlvbkNvbmZpZ1Byb3BlcnRpZXMsXG4gICAgICBcImRlY2xhcmF0aW9uIGNvbmZpZ1wiXG4gICAgKTtcbiAgICBpZiAoY29uZmlnLmRlc2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLmRlc2NyaXB0aW9uKGNvbmZpZy5kZXNjcmlwdGlvbik7XG4gICAgfVxuICAgIGlmIChjb25maWcuY29sdW1ucykge1xuICAgICAgdGhpcy5jb2x1bW5zKGNvbmZpZy5jb2x1bW5zKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgZGVzY3JpcHRpb24oZGVzY3JpcHRpb246IHN0cmluZykge1xuICAgIGlmICghdGhpcy5wcm90by5hY3Rpb25EZXNjcmlwdG9yKSB7XG4gICAgICB0aGlzLnByb3RvLmFjdGlvbkRlc2NyaXB0b3IgPSB7fTtcbiAgICB9XG4gICAgdGhpcy5wcm90by5hY3Rpb25EZXNjcmlwdG9yLmRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb247XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgY29sdW1ucyhjb2x1bW5zOiBJQ29sdW1uc0Rlc2NyaXB0b3IpIHtcbiAgICBpZiAoIXRoaXMucHJvdG8uYWN0aW9uRGVzY3JpcHRvcikge1xuICAgICAgdGhpcy5wcm90by5hY3Rpb25EZXNjcmlwdG9yID0ge307XG4gICAgfVxuICAgIHRoaXMucHJvdG8uYWN0aW9uRGVzY3JpcHRvci5jb2x1bW5zID0gQ29sdW1uRGVzY3JpcHRvcnMubWFwVG9Db2x1bW5Qcm90b0FycmF5KFxuICAgICAgY29sdW1ucyxcbiAgICAgIChlOiBFcnJvcikgPT4gdGhpcy5zZXNzaW9uLmNvbXBpbGVFcnJvcihlKVxuICAgICk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgY29tcGlsZSgpIHtcbiAgICByZXR1cm4gdGhpcy5wcm90bztcbiAgfVxufVxuIl19

@@ -8,2 +8,3 @@ /// <amd-module name="@dataform/core/operation" />

}
export declare const IIOperationConfigProperties: ("database" | "description" | "columns" | "type" | "name" | "tags" | "schema" | "dependencies" | "hermetic" | "hasOutput")[];
export declare class Operation {

@@ -16,2 +17,3 @@ proto: dataform.IOperation;

dependencies(value: Resolvable | Resolvable[]): this;
hermetic(hermetic: boolean): void;
tags(value: string | string[]): this;

@@ -18,0 +20,0 @@ hasOutput(hasOutput: boolean): this;

@@ -7,3 +7,3 @@ (function (factory) {

else if (typeof define === "function" && define.amd) {
define("@dataform/core/operation", ["require", "exports", "@dataform/core/column_descriptors", "@dataform/core/utils", "@dataform/protos"], factory);
define("@dataform/core/operation", ["require", "exports", "@dataform/core/column_descriptors", "@dataform/core/utils", "@dataform/core/utils", "@dataform/protos"], factory);
}

@@ -15,3 +15,16 @@ })(function (require, exports) {

const utils = require("@dataform/core/utils");
const utils_1 = require("@dataform/core/utils");
const protos_1 = require("@dataform/protos");
exports.IIOperationConfigProperties = utils_1.strictKeysOf()([
"type",
"name",
"tags",
"schema",
"database",
"columns",
"description",
"dependencies",
"hermetic",
"hasOutput"
]);
class Operation {

@@ -22,5 +35,9 @@ constructor() {

config(config) {
utils_1.checkExcessProperties((e) => this.session.compileError(e), config, exports.IIOperationConfigProperties, "operation config");
if (config.dependencies) {
this.dependencies(config.dependencies);
}
if (config.hermetic !== undefined) {
this.hermetic(config.hermetic);
}
if (config.tags) {

@@ -57,2 +74,7 @@ this.tags(config.tags);

}
hermetic(hermetic) {
this.proto.hermeticity = hermetic
? protos_1.dataform.ActionHermeticity.HERMETIC
: protos_1.dataform.ActionHermeticity.NON_HERMETIC;
}
tags(value) {

@@ -82,3 +104,3 @@ const newTags = typeof value === "string" ? [value] : value;

}
this.proto.actionDescriptor.columns = column_descriptors_1.ColumnDescriptors.mapToColumnProtoArray(columns);
this.proto.actionDescriptor.columns = column_descriptors_1.ColumnDescriptors.mapToColumnProtoArray(columns, (e) => this.session.compileError(e));
return this;

@@ -154,2 +176,2 @@ }

});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BlcmF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS9vcGVyYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7SUFBQSwwRUFBc0U7SUFXdEUsOENBQThDO0lBQzlDLDZDQUE0QztJQXlCNUMsTUFBYSxTQUFTO1FBQXRCO1lBQ1MsVUFBSyxHQUF3QixpQkFBUSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQW1IbEUsQ0FBQztRQTNHUSxNQUFNLENBQUMsTUFBd0I7WUFDcEMsSUFBSSxNQUFNLENBQUMsWUFBWSxFQUFFO2dCQUN2QixJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQzthQUN4QztZQUNELElBQUksTUFBTSxDQUFDLElBQUksRUFBRTtnQkFDZixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUN4QjtZQUNELElBQUksTUFBTSxDQUFDLFNBQVMsRUFBRTtnQkFDcEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7YUFDbEM7WUFDRCxJQUFJLE1BQU0sQ0FBQyxXQUFXLEVBQUU7Z0JBQ3RCLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO2FBQ3RDO1lBQ0QsSUFBSSxNQUFNLENBQUMsT0FBTyxFQUFFO2dCQUNsQixJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQzthQUM5QjtZQUNELElBQUksTUFBTSxDQUFDLFFBQVEsRUFBRTtnQkFDbkIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7YUFDaEM7WUFDRCxJQUFJLE1BQU0sQ0FBQyxNQUFNLEVBQUU7Z0JBQ2pCLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2FBQzVCO1lBQ0QsT0FB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ZXNDb250ZW50IjpbImltcG9ydCB7IENvbHVtbkRlc2NyaXB0b3JzIH0gZnJvbSBcIkBkYXRhZm9ybS9jb3JlL2NvbHVtbl9kZXNjcmlwdG9yc1wiO1xuaW1wb3J0IHtcbiAgQ29udGV4dGFibGUsXG4gIElDb2x1bW5zRGVzY3JpcHRvcixcbiAgSUNvbW1vbkNvbnRleHQsXG4gIElEZXBlbmRlbmNpZXNDb25maWcsXG4gIElEb2N1bWVudGFibGVDb25maWcsXG4gIElUYXJnZXRhYmxlQ29uZmlnLFxuICBSZXNvbHZhYmxlXG59IGZyb20gXCJAZGF0YWZvcm0vY29yZS9jb21tb25cIjtcbmltcG9ydCB7IFNlc3Npb24gfSBmcm9tIFwiQGRhdGFmb3JtL2NvcmUvc2Vzc2lvblwiO1xuaW1wb3J0ICogYXMgdXRpbHMgZnJvbSBcIkBkYXRhZm9ybS9jb3JlL3V0aWxzXCI7XG5pbXBvcnQgeyBkYXRhZm9ybSB9IGZyb20gXCJAZGF0YWZvcm0vcHJvdG9zXCI7XG5cbi8qKlxuICogQ29uZmlndXJhdGlvbiBvcHRpb25zIGZvciBgb3BlcmF0aW9uc2AgYWN0aW9uIHR5cGVzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElPcGVyYXRpb25Db25maWdcbiAgZXh0ZW5kcyBJVGFyZ2V0YWJsZUNvbmZpZyxcbiAgICBJRG9jdW1lbnRhYmxlQ29uZmlnLFxuICAgIElEZXBlbmRlbmNpZXNDb25maWcge1xuICAvKipcbiAgICogRGVjbGFyZXMgdGhhdCB0aGlzIGBvcGVyYXRpb25zYCBhY3Rpb24gY3JlYXRlcyBhIGRhdGFzZXQgd2hpY2ggc2hvdWxkIGJlIHJlZmVyZW5jZWFibGUgdXNpbmcgdGhlIGByZWZgIGZ1bmN0aW9uLlxuICAgKlxuICAgKiBJZiBzZXQgdG8gdHJ1ZSwgdGhpcyBhY3Rpb24gc2hvdWxkIGNyZWF0ZSBhIGRhdGFzZXQgd2l0aCBpdHMgY29uZmlndXJlZCBuYW1lLCB1c2luZyB0aGUgYHNlbGYoKWAgY29udGV4dCBmdW5jdGlvbi5cbiAgICpcbiAgICogRm9yIGV4YW1wbGU6XG4gICAqIGBgYHNxbFxuICAgKiBjcmVhdGUgb3IgcmVwbGFjZSB0YWJsZSAke3NlbGYoKX0gYXMgc2VsZWN0IC4uLlxuICAgKiBgYGBcbiAgICovXG4gIGhhc091dHB1dD86IGJvb2xlYW47XG59XG5cbi8qKlxuICogQGhpZGRlblxuICovXG5leHBvcnQgY2xhc3MgT3BlcmF0aW9uIHtcbiAgcHVibGljIHByb3RvOiBkYXRhZm9ybS5JT3BlcmF0aW9uID0gZGF0YWZvcm0uT3BlcmF0aW9uLmNyZWF0ZSgpO1xuXG4gIC8vIEhvbGQgYSByZWZlcmVuY2UgdG8gdGhlIFNlc3Npb24gaW5zdGFuY2UuXG4gIHB1YmxpYyBzZXNzaW9uOiBTZXNzaW9uO1xuXG4gIC8vIFdlIGRlbGF5IGNvbnRleHRpZmljYXRpb24gdW50aWwgdGhlIGZpbmFsIGNvbXBpbGUgc3RlcCwgc28gaG9sZCB0aGVzZSBoZXJlIGZvciBub3cuXG4gIHByaXZhdGUgY29udGV4dGFibGVRdWVyaWVzOiBDb250ZXh0YWJsZTxJQ29tbW9uQ29udGV4dCwgc3RyaW5nIHwgc3RyaW5nW10+O1xuXG4gIHB1YmxpYyBjb25maWcoY29uZmlnOiBJT3BlcmF0aW9uQ29uZmlnKSB7XG4gICAgaWYgKGNvbmZpZy5kZXBlbmRlbmNpZXMpIHtcbiAgICAgIHRoaXMuZGVwZW5kZW5jaWVzKGNvbmZpZy5kZXBlbmRlbmNpZXMpO1xuICAgIH1cbiAgICBpZiAoY29uZmlnLnRhZ3MpIHtcbiAgICAgIHRoaXMudGFncyhjb25maWcudGFncyk7XG4gICAgfVxuICAgIGlmIChjb25maWcuaGFzT3V0cHV0KSB7XG4gICAgICB0aGlzLmhhc091dHB1dChjb25maWcuaGFzT3V0cHV0KTtcbiAgICB9XG4gICAgaWYgKGNvbmZpZy5kZXNjcmlwdGlvbikge1xuICAgICAgdGhpcy5kZXNjcmlwdGlvbihjb25maWcuZGVzY3JpcHRpb24pO1xuICAgIH1cbiAgICBpZiAoY29uZmlnLmNvbHVtbnMpIHtcbiAgICAgIHRoaXMuY29sdW1ucyhjb25maWcuY29sdW1ucyk7XG4gICAgfVxuICAgIGlmIChjb25maWcuZGF0YWJhc2UpIHtcbiAgICAgIHRoaXMuZGF0YWJhc2UoY29uZmlnLmRhdGFiYXNlKTtcbiAgICB9XG4gICAgaWYgKGNvbmZpZy5zY2hlbWEpIHtcbiAgICAgIHRoaXMuc2NoZW1hKGNvbmZpZy5zY2hlbWEpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyBxdWVyaWVzKHF1ZXJpZXM6IENvbnRleHRhYmxlPElDb21tb25Db250ZXh0LCBzdHJpbmcgfCBzdHJpbmdbXT4pIHtcbiAgICB0aGlzLmNvbnRleHRhYmxlUXVlcmllcyA9IHF1ZXJpZXM7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgZGVwZW5kZW5jaWVzKHZhbHVlOiBSZXNvbHZhYmxlIHwgUmVzb2x2YWJsZVtdKSB7XG4gICAgY29uc3QgbmV3RGVwZW5kZW5jaWVzID0gQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZSA6IFt2YWx1ZV07XG4gICAgbmV3RGVwZW5kZW5jaWVzLmZvckVhY2gocmVzb2x2YWJsZSA9PiB7XG4gICAgICB0aGlzLnByb3RvLmRlcGVuZGVuY3lUYXJnZXRzLnB1c2godXRpbHMucmVzb2x2YWJsZUFzVGFyZ2V0KHJlc29sdmFibGUpKTtcbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyB0YWdzKHZhbHVlOiBzdHJpbmcgfCBzdHJpbmdbXSkge1xuICAgIGNvbnN0IG5ld1RhZ3MgPSB0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIgPyBbdmFsdWVdIDogdmFsdWU7XG4gICAgbmV3VGFncy5mb3JFYWNoKHQgPT4ge1xuICAgICAgaWYgKHRoaXMucHJvdG8udGFncy5pbmRleE9mKHQpIDwgMCkge1xuICAgICAgICB0aGlzLnByb3RvLnRhZ3MucHVzaCh0KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyBoYXNPdXRwdXQoaGFzT3V0cHV0OiBib29sZWFuKSB7XG4gICAgdGhpcy5wcm90by5oYXNPdXRwdXQgPSBoYXNPdXRwdXQ7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgZGVzY3JpcHRpb24oZGVzY3JpcHRpb246IHN0cmluZykge1xuICAgIGlmICghdGhpcy5wcm90by5hY3Rpb25EZXNjcmlwdG9yKSB7XG4gICAgICB0aGlzLnByb3RvLmFjdGlvbkRlc2NyaXB0b3IgPSB7fTtcbiAgICB9XG4gICAgdGhpcy5wcm90by5hY3Rpb25EZXNjcmlwdG9yLmRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb247XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgY29sdW1ucyhjb2x1bW5zOiBJQ29sdW1uc0Rlc2NyaXB0b3IpIHtcbiAgICBpZiAoIXRoaXMucHJvdG8uYWN0aW9uRGVzY3JpcHRvcikge1xuICAgICAgdGhpcy5wcm90by5hY3Rpb25EZXNjcmlwdG9yID0ge307XG4gICAgfVxuICAgIHRoaXMucHJvdG8uYWN0aW9uRGVzY3JpcHRvci5jb2x1bW5zID0gQ29sdW1uRGVzY3JpcHRvcnMubWFwVG9Db2x1bW5Qcm90b0FycmF5KGNvbHVtbnMpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIGRhdGFiYXNlKGRhdGFiYXNlOiBzdHJpbmcpIHtcbiAgICB1dGlscy5zZXROYW1lQW5kVGFyZ2V0KFxuICAgICAgdGhpcy5zZXNzaW9uLFxuICAgICAgdGhpcy5wcm90byxcbiAgICAgIHRoaXMucHJvdG8udGFyZ2V0Lm5hbWUsXG4gICAgICB0aGlzLnByb3RvLnRhcmdldC5zY2hlbWEsXG4gICAgICBkYXRhYmFzZVxuICAgICk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgc2NoZW1hKHNjaGVtYTogc3RyaW5nKSB7XG4gICAgdXRpbHMuc2V0TmFtZUFuZFRhcmdldCh0aGlzLnNlc3Npb24sIHRoaXMucHJvdG8sIHRoaXMucHJvdG8udGFyZ2V0Lm5hbWUsIHNjaGVtYSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgY29tcGlsZSgpIHtcbiAgICBpZiAoXG4gICAgICB0aGlzLnByb3RvLmFjdGlvbkRlc2NyaXB0b3IgJiZcbiAgICAgIHRoaXMucHJvdG8uYWN0aW9uRGVzY3JpcHRvci5jb2x1bW5zICYmXG4gICAgICB0aGlzLnByb3RvLmFjdGlvbkRlc2NyaXB0b3IuY29sdW1ucy5sZW5ndGggPiAwICYmXG4gICAgICAhdGhpcy5wcm90by5oYXNPdXRwdXRcbiAgICApIHtcbiAgICAgIHRoaXMuc2Vzc2lvbi5jb21waWxlRXJyb3IoXG4gICAgICAgIG5ldyBFcnJvcihcbiAgICAgICAgICBcIkFjdGlvbnMgb2YgdHlwZSAnb3BlcmF0aW9ucycgbWF5IG9ubHkgZGVzY3JpYmUgY29sdW1ucyBpZiB0aGV5IHNwZWNpZnkgJ2hhc091dHB1dDogdHJ1ZScuXCJcbiAgICAgICAgKSxcbiAgICAgICAgdGhpcy5wcm90by5maWxlTmFtZVxuICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdCBjb250ZXh0ID0gbmV3IE9wZXJhdGlvbkNvbnRleHQodGhpcyk7XG5cbiAgICBjb25zdCBhcHBsaWVkUXVlcmllcyA9IGNvbnRleHQuYXBwbHkodGhpcy5jb250ZXh0YWJsZVF1ZXJpZXMpO1xuICAgIHRoaXMucHJvdG8ucXVlcmllcyA9IHR5cGVvZiBhcHBsaWVkUXVlcmllcyA9PT0gXCJzdHJpbmdcIiA/IFthcHBsaWVkUXVlcmllc10gOiBhcHBsaWVkUXVlcmllcztcblxuICAgIHJldHVybiB0aGlzLnByb3RvO1xuICB9XG59XG5cbi8qKlxuICogQGhpZGRlblxuICovXG5leHBvcnQgY2xhc3MgT3BlcmF0aW9uQ29udGV4dCBpbXBsZW1lbnRzIElDb21tb25Db250ZXh0IHtcbiAgcHJpdmF0ZSBvcGVyYXRpb24/OiBPcGVyYXRpb247XG5cbiAgY29uc3RydWN0b3Iob3BlcmF0aW9uOiBPcGVyYXRpb24pIHtcbiAgICB0aGlzLm9wZXJhdGlvbiA9IG9wZXJhdGlvbjtcbiAgfVxuXG4gIHB1YmxpYyBzZWxmKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucmVzb2x2ZSh0aGlzLm9wZXJhdGlvbi5wcm90by50YXJnZXQpO1xuICB9XG5cbiAgcHVibGljIG5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5vcGVyYXRpb24ucHJvdG8udGFyZ2V0Lm5hbWU7XG4gIH1cblxuICBwdWJsaWMgcmVmKHJlZjogUmVzb2x2YWJsZSB8IHN0cmluZ1tdLCAuLi5yZXN0OiBzdHJpbmdbXSkge1xuICAgIHJlZiA9IHV0aWxzLnRvUmVzb2x2YWJsZShyZWYsIHJlc3QpO1xuICAgIGlmICghdXRpbHMucmVzb2x2YWJsZUFzVGFyZ2V0KHJlZikpIHtcbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSBgQWN0aW9uIG5hbWUgaXMgbm90IHNwZWNpZmllZGA7XG4gICAgICB0aGlzLm9wZXJhdGlvbi5zZXNzaW9uLmNvbXBpbGVFcnJvcihuZXcgRXJyb3IobWVzc2FnZSkpO1xuICAgICAgcmV0dXJuIFwiXCI7XG4gICAgfVxuICAgIHRoaXMub3BlcmF0aW9uLmRlcGVuZGVuY2llcyhyZWYpO1xuICAgIHJldHVybiB0aGlzLnJlc29sdmUocmVmKTtcbiAgfVxuXG4gIHB1YmxpYyByZXNvbHZlKHJlZjogUmVzb2x2YWJsZSB8IHN0cmluZ1tdLCAuLi5yZXN0OiBzdHJpbmdbXSkge1xuICAgIHJldHVybiB0aGlzLm9wZXJhdGlvbi5zZXNzaW9uLnJlc29sdmUodXRpbHMudG9SZXNvbHZhYmxlKHJlZiwgcmVzdCkpO1xuICB9XG5cbiAgcHVibGljIGRlcGVuZGVuY2llcyhuYW1lOiBSZXNvbHZhYmxlIHwgUmVzb2x2YWJsZVtdKSB7XG4gICAgdGhpcy5vcGVyYXRpb24uZGVwZW5kZW5jaWVzKG5hbWUpO1xuICAgIHJldHVybiBcIlwiO1xuICB9XG5cbiAgcHVibGljIHRhZ3MobmFtZTogc3RyaW5nIHwgc3RyaW5nW10pIHtcbiAgICB0aGlzLm9wZXJhdGlvbi50YWdzKG5hbWUpO1xuICAgIHJldHVybiBcIlwiO1xuICB9XG5cbiAgcHVibGljIGhhc091dHB1dChoYXNPdXRwdXQ6IGJvb2xlYW4pIHtcbiAgICB0aGlzLm9wZXJhdGlvbi5oYXNPdXRwdXQoaGFzT3V0cHV0KTtcbiAgICByZXR1cm4gXCJcIjtcbiAgfVxuXG4gIHB1YmxpYyBhcHBseTxUPih2YWx1ZTogQ29udGV4dGFibGU8SUNvbW1vbkNvbnRleHQsIFQ+KTogVCB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICByZXR1cm4gKHZhbHVlIGFzIGFueSkodGhpcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BlcmF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS9vcGVyYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7SUFBQSwwRUFBc0U7SUFXdEUsOENBQThDO0lBQzlDLGdEQUEyRTtJQUMzRSw2Q0FBNEM7SUFzQi9CLFFBQUEsMkJBQTJCLEdBQUcsb0JBQVksRUFBb0IsQ0FBQztRQUMxRSxNQUFNO1FBQ04sTUFBTTtRQUNOLE1BQU07UUFDTixRQUFRO1FBQ1IsVUFBVTtRQUNWLFNBQVM7UUFDVCxhQUFhO1FBQ2IsY0FBYztRQUNkLFVBQVU7UUFDVixXQUFXO0tBQ1osQ0FBQyxDQUFDO0lBS0gsTUFBYSxTQUFTO1FBQXRCO1lBQ1MsVUFBSyxHQUF3QixpQkFBUSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQXFJbEUsQ0FBQztRQTdIUSxNQUFNLENBQUMsTUFBd0I7WUFDcEMsNkJBQXFCLENBQ25CLENBQUMsQ0FBUSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsRUFDMUMsTUFBTSxFQUNOLG1DQUEyQixFQUMzQixrQkFBa0IsQ0FDbkIsQ0FBQztZQUNGLElBQUksTUFBTSxDQUFDLFlBQVksRUFBRTtnQkFDdkIsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7YUFDeEM7WUFDRCxJQUFJLE1BQU0sQ0FBQyxRQUFRLEtBQUssU0FBUyxFQUFFO2dCQUNqQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQzthQUNoQztZQUNELElBQUksTUFBTSxDQUFDLElBQUksRUFBRTtnQkFDZixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUN4QjtZQUNELElBQUksTUFBTSxDQUFDLFNBQVMsRUFBRTtnQkFDcEIsSUFBSSxDQUFDLFNBQVMs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UUFDM0IsQ0FBQztRQUVNLE9BQU8sQ0FBQyxHQUEwQixFQUFFLEdBQUcsSUFBYztZQUMxRCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ3ZFLENBQUM7UUFFTSxZQUFZLENBQUMsSUFBK0I7WUFDakQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDbEMsT0FBTyxFQUFFLENBQUM7UUFDWixDQUFDO1FBRU0sSUFBSSxDQUFDLElBQXVCO1lBQ2pDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzFCLE9BQU8sRUFBRSxDQUFDO1FBQ1osQ0FBQztRQUVNLFNBQVMsQ0FBQyxTQUFrQjtZQUNqQyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUNwQyxPQUFPLEVBQUUsQ0FBQztRQUNaLENBQUM7UUFFTSxLQUFLLENBQUksS0FBcUM7WUFDbkQsSUFBSSxPQUFPLEtBQUssS0FBSyxVQUFVLEVBQUU7Z0JBQy9CLE9BQVEsS0FBYSxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQzdCO2lCQUFNO2dCQUNMLE9BQU8sS0FBSyxDQUFDO2FBQ2Q7UUFDSCxDQUFDO0tBQ0Y7SUFwREQsNENBb0RDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29sdW1uRGVzY3JpcHRvcnMgfSBmcm9tIFwiQGRhdGFmb3JtL2NvcmUvY29sdW1uX2Rlc2NyaXB0b3JzXCI7XG5pbXBvcnQge1xuICBDb250ZXh0YWJsZSxcbiAgSUNvbHVtbnNEZXNjcmlwdG9yLFxuICBJQ29tbW9uQ29udGV4dCxcbiAgSURlcGVuZGVuY2llc0NvbmZpZyxcbiAgSURvY3VtZW50YWJsZUNvbmZpZyxcbiAgSVRhcmdldGFibGVDb25maWcsXG4gIFJlc29sdmFibGVcbn0gZnJvbSBcIkBkYXRhZm9ybS9jb3JlL2NvbW1vblwiO1xuaW1wb3J0IHsgU2Vzc2lvbiB9IGZyb20gXCJAZGF0YWZvcm0vY29yZS9zZXNzaW9uXCI7XG5pbXBvcnQgKiBhcyB1dGlscyBmcm9tIFwiQGRhdGFmb3JtL2NvcmUvdXRpbHNcIjtcbmltcG9ydCB7IGNoZWNrRXhjZXNzUHJvcGVydGllcywgc3RyaWN0S2V5c09mIH0gZnJvbSBcIkBkYXRhZm9ybS9jb3JlL3V0aWxzXCI7XG5pbXBvcnQgeyBkYXRhZm9ybSB9IGZyb20gXCJAZGF0YWZvcm0vcHJvdG9zXCI7XG5cbi8qKlxuICogQ29uZmlndXJhdGlvbiBvcHRpb25zIGZvciBgb3BlcmF0aW9uc2AgYWN0aW9uIHR5cGVzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElPcGVyYXRpb25Db25maWdcbiAgZXh0ZW5kcyBJVGFyZ2V0YWJsZUNvbmZpZyxcbiAgICBJRG9jdW1lbnRhYmxlQ29uZmlnLFxuICAgIElEZXBlbmRlbmNpZXNDb25maWcge1xuICAvKipcbiAgICogRGVjbGFyZXMgdGhhdCB0aGlzIGBvcGVyYXRpb25zYCBhY3Rpb24gY3JlYXRlcyBhIGRhdGFzZXQgd2hpY2ggc2hvdWxkIGJlIHJlZmVyZW5jZWFibGUgdXNpbmcgdGhlIGByZWZgIGZ1bmN0aW9uLlxuICAgKlxuICAgKiBJZiBzZXQgdG8gdHJ1ZSwgdGhpcyBhY3Rpb24gc2hvdWxkIGNyZWF0ZSBhIGRhdGFzZXQgd2l0aCBpdHMgY29uZmlndXJlZCBuYW1lLCB1c2luZyB0aGUgYHNlbGYoKWAgY29udGV4dCBmdW5jdGlvbi5cbiAgICpcbiAgICogRm9yIGV4YW1wbGU6XG4gICAqIGBgYHNxbFxuICAgKiBjcmVhdGUgb3IgcmVwbGFjZSB0YWJsZSAke3NlbGYoKX0gYXMgc2VsZWN0IC4uLlxuICAgKiBgYGBcbiAgICovXG4gIGhhc091dHB1dD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjb25zdCBJSU9wZXJhdGlvbkNvbmZpZ1Byb3BlcnRpZXMgPSBzdHJpY3RLZXlzT2Y8SU9wZXJhdGlvbkNvbmZpZz4oKShbXG4gIFwidHlwZVwiLFxuICBcIm5hbWVcIixcbiAgXCJ0YWdzXCIsXG4gIFwic2NoZW1hXCIsXG4gIFwiZGF0YWJhc2VcIixcbiAgXCJjb2x1bW5zXCIsXG4gIFwiZGVzY3JpcHRpb25cIixcbiAgXCJkZXBlbmRlbmNpZXNcIixcbiAgXCJoZXJtZXRpY1wiLFxuICBcImhhc091dHB1dFwiXG5dKTtcblxuLyoqXG4gKiBAaGlkZGVuXG4gKi9cbmV4cG9ydCBjbGFzcyBPcGVyYXRpb24ge1xuICBwdWJsaWMgcHJvdG86IGRhdGFmb3JtLklPcGVyYXRpb24gPSBkYXRhZm9ybS5PcGVyYXRpb24uY3JlYXRlKCk7XG5cbiAgLy8gSG9sZCBhIHJlZmVyZW5jZSB0byB0aGUgU2Vzc2lvbiBpbnN0YW5jZS5cbiAgcHVibGljIHNlc3Npb246IFNlc3Npb247XG5cbiAgLy8gV2UgZGVsYXkgY29udGV4dGlmaWNhdGlvbiB1bnRpbCB0aGUgZmluYWwgY29tcGlsZSBzdGVwLCBzbyBob2xkIHRoZXNlIGhlcmUgZm9yIG5vdy5cbiAgcHJpdmF0ZSBjb250ZXh0YWJsZVF1ZXJpZXM6IENvbnRleHRhYmxlPElDb21tb25Db250ZXh0LCBzdHJpbmcgfCBzdHJpbmdbXT47XG5cbiAgcHVibGljIGNvbmZpZyhjb25maWc6IElPcGVyYXRpb25Db25maWcpIHtcbiAgICBjaGVja0V4Y2Vzc1Byb3BlcnRpZXMoXG4gICAgICAoZTogRXJyb3IpID0+IHRoaXMuc2Vzc2lvbi5jb21waWxlRXJyb3IoZSksXG4gICAgICBjb25maWcsXG4gICAgICBJSU9wZXJhdGlvbkNvbmZpZ1Byb3BlcnRpZXMsXG4gICAgICBcIm9wZXJhdGlvbiBjb25maWdcIlxuICAgICk7XG4gICAgaWYgKGNvbmZpZy5kZXBlbmRlbmNpZXMpIHtcbiAgICAgIHRoaXMuZGVwZW5kZW5jaWVzKGNvbmZpZy5kZXBlbmRlbmNpZXMpO1xuICAgIH1cbiAgICBpZiAoY29uZmlnLmhlcm1ldGljICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuaGVybWV0aWMoY29uZmlnLmhlcm1ldGljKTtcbiAgICB9XG4gICAgaWYgKGNvbmZpZy50YWdzKSB7XG4gICAgICB0aGlzLnRhZ3MoY29uZmlnLnRhZ3MpO1xuICAgIH1cbiAgICBpZiAoY29uZmlnLmhhc091dHB1dCkge1xuICAgICAgdGhpcy5oYXNPdXRwdXQoY29uZmlnLmhhc091dHB1dCk7XG4gICAgfVxuICAgIGlmIChjb25maWcuZGVzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMuZGVzY3JpcHRpb24oY29uZmlnLmRlc2NyaXB0aW9uKTtcbiAgICB9XG4gICAgaWYgKGNvbmZpZy5jb2x1bW5zKSB7XG4gICAgICB0aGlzLmNvbHVtbnMoY29uZmlnLmNvbHVtbnMpO1xuICAgIH1cbiAgICBpZiAoY29uZmlnLmRhdGFiYXNlKSB7XG4gICAgICB0aGlzLmRhdGFiYXNlKGNvbmZpZy5kYXRhYmFzZSk7XG4gICAgfVxuICAgIGlmIChjb25maWcuc2NoZW1hKSB7XG4gICAgICB0aGlzLnNjaGVtYShjb25maWcuc2NoZW1hKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgcXVlcmllcyhxdWVyaWVzOiBDb250ZXh0YWJsZTxJQ29tbW9uQ29udGV4dCwgc3RyaW5nIHwgc3RyaW5nW10+KSB7XG4gICAgdGhpcy5jb250ZXh0YWJsZVF1ZXJpZXMgPSBxdWVyaWVzO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIGRlcGVuZGVuY2llcyh2YWx1ZTogUmVzb2x2YWJsZSB8IFJlc29sdmFibGVbXSkge1xuICAgIGNvbnN0IG5ld0RlcGVuZGVuY2llcyA9IEFycmF5LmlzQXJyYXkodmFsdWUpID8gdmFsdWUgOiBbdmFsdWVdO1xuICAgIG5ld0RlcGVuZGVuY2llcy5mb3JFYWNoKHJlc29sdmFibGUgPT4ge1xuICAgICAgdGhpcy5wcm90by5kZXBlbmRlbmN5VGFyZ2V0cy5wdXNoKHV0aWxzLnJlc29sdmFibGVBc1RhcmdldChyZXNvbHZhYmxlKSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgaGVybWV0aWMoaGVybWV0aWM6IGJvb2xlYW4pIHtcbiAgICB0aGlzLnByb3RvLmhlcm1ldGljaXR5ID0gaGVybWV0aWNcbiAgICAgID8gZGF0YWZvcm0uQWN0aW9uSGVybWV0aWNpdHkuSEVSTUVUSUNcbiAgICAgIDogZGF0YWZvcm0uQWN0aW9uSGVybWV0aWNpdHkuTk9OX0hFUk1FVElDO1xuICB9XG5cbiAgcHVibGljIHRhZ3ModmFsdWU6IHN0cmluZyB8IHN0cmluZ1tdKSB7XG4gICAgY29uc3QgbmV3VGFncyA9IHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIiA/IFt2YWx1ZV0gOiB2YWx1ZTtcbiAgICBuZXdUYWdzLmZvckVhY2godCA9PiB7XG4gICAgICBpZiAodGhpcy5wcm90by50YWdzLmluZGV4T2YodCkgPCAwKSB7XG4gICAgICAgIHRoaXMucHJvdG8udGFncy5wdXNoKHQpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIGhhc091dHB1dChoYXNPdXRwdXQ6IGJvb2xlYW4pIHtcbiAgICB0aGlzLnByb3RvLmhhc091dHB1dCA9IGhhc091dHB1dDtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyBkZXNjcmlwdGlvbihkZXNjcmlwdGlvbjogc3RyaW5nKSB7XG4gICAgaWYgKCF0aGlzLnByb3RvLmFjdGlvbkRlc2NyaXB0b3IpIHtcbiAgICAgIHRoaXMucHJvdG8uYWN0aW9uRGVzY3JpcHRvciA9IHt9O1xuICAgIH1cbiAgICB0aGlzLnByb3RvLmFjdGlvbkRlc2NyaXB0b3IuZGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbjtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyBjb2x1bW5zKGNvbHVtbnM6IElDb2x1bW5zRGVzY3JpcHRvcikge1xuICAgIGlmICghdGhpcy5wcm90by5hY3Rpb25EZXNjcmlwdG9yKSB7XG4gICAgICB0aGlzLnByb3RvLmFjdGlvbkRlc2NyaXB0b3IgPSB7fTtcbiAgICB9XG4gICAgdGhpcy5wcm90by5hY3Rpb25EZXNjcmlwdG9yLmNvbHVtbnMgPSBDb2x1bW5EZXNjcmlwdG9ycy5tYXBUb0NvbHVtblByb3RvQXJyYXkoXG4gICAgICBjb2x1bW5zLFxuICAgICAgKGU6IEVycm9yKSA9PiB0aGlzLnNlc3Npb24uY29tcGlsZUVycm9yKGUpXG4gICAgKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyBkYXRhYmFzZShkYXRhYmFzZTogc3RyaW5nKSB7XG4gICAgdXRpbHMuc2V0TmFtZUFuZFRhcmdldChcbiAgICAgIHRoaXMuc2Vzc2lvbixcbiAgICAgIHRoaXMucHJvdG8sXG4gICAgICB0aGlzLnByb3RvLnRhcmdldC5uYW1lLFxuICAgICAgdGhpcy5wcm90by50YXJnZXQuc2NoZW1hLFxuICAgICAgZGF0YWJhc2VcbiAgICApO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIHNjaGVtYShzY2hlbWE6IHN0cmluZykge1xuICAgIHV0aWxzLnNldE5hbWVBbmRUYXJnZXQodGhpcy5zZXNzaW9uLCB0aGlzLnByb3RvLCB0aGlzLnByb3RvLnRhcmdldC5uYW1lLCBzY2hlbWEpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIGNvbXBpbGUoKSB7XG4gICAgaWYgKFxuICAgICAgdGhpcy5wcm90by5hY3Rpb25EZXNjcmlwdG9yICYmXG4gICAgICB0aGlzLnByb3RvLmFjdGlvbkRlc2NyaXB0b3IuY29sdW1ucyAmJlxuICAgICAgdGhpcy5wcm90by5hY3Rpb25EZXNjcmlwdG9yLmNvbHVtbnMubGVuZ3RoID4gMCAmJlxuICAgICAgIXRoaXMucHJvdG8uaGFzT3V0cHV0XG4gICAgKSB7XG4gICAgICB0aGlzLnNlc3Npb24uY29tcGlsZUVycm9yKFxuICAgICAgICBuZXcgRXJyb3IoXG4gICAgICAgICAgXCJBY3Rpb25zIG9mIHR5cGUgJ29wZXJhdGlvbnMnIG1heSBvbmx5IGRlc2NyaWJlIGNvbHVtbnMgaWYgdGhleSBzcGVjaWZ5ICdoYXNPdXRwdXQ6IHRydWUnLlwiXG4gICAgICAgICksXG4gICAgICAgIHRoaXMucHJvdG8uZmlsZU5hbWVcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3QgY29udGV4dCA9IG5ldyBPcGVyYXRpb25Db250ZXh0KHRoaXMpO1xuXG4gICAgY29uc3QgYXBwbGllZFF1ZXJpZXMgPSBjb250ZXh0LmFwcGx5KHRoaXMuY29udGV4dGFibGVRdWVyaWVzKTtcbiAgICB0aGlzLnByb3RvLnF1ZXJpZXMgPSB0eXBlb2YgYXBwbGllZFF1ZXJpZXMgPT09IFwic3RyaW5nXCIgPyBbYXBwbGllZFF1ZXJpZXNdIDogYXBwbGllZFF1ZXJpZXM7XG5cbiAgICByZXR1cm4gdGhpcy5wcm90bztcbiAgfVxufVxuXG4vKipcbiAqIEBoaWRkZW5cbiAqL1xuZXhwb3J0IGNsYXNzIE9wZXJhdGlvbkNvbnRleHQgaW1wbGVtZW50cyBJQ29tbW9uQ29udGV4dCB7XG4gIHByaXZhdGUgb3BlcmF0aW9uPzogT3BlcmF0aW9uO1xuXG4gIGNvbnN0cnVjdG9yKG9wZXJhdGlvbjogT3BlcmF0aW9uKSB7XG4gICAgdGhpcy5vcGVyYXRpb24gPSBvcGVyYXRpb247XG4gIH1cblxuICBwdWJsaWMgc2VsZigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnJlc29sdmUodGhpcy5vcGVyYXRpb24ucHJvdG8udGFyZ2V0KTtcbiAgfVxuXG4gIHB1YmxpYyBuYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMub3BlcmF0aW9uLnByb3RvLnRhcmdldC5uYW1lO1xuICB9XG5cbiAgcHVibGljIHJlZihyZWY6IFJlc29sdmFibGUgfCBzdHJpbmdbXSwgLi4ucmVzdDogc3RyaW5nW10pIHtcbiAgICByZWYgPSB1dGlscy50b1Jlc29sdmFibGUocmVmLCByZXN0KTtcbiAgICBpZiAoIXV0aWxzLnJlc29sdmFibGVBc1RhcmdldChyZWYpKSB7XG4gICAgICBjb25zdCBtZXNzYWdlID0gYEFjdGlvbiBuYW1lIGlzIG5vdCBzcGVjaWZpZWRgO1xuICAgICAgdGhpcy5vcGVyYXRpb24uc2Vzc2lvbi5jb21waWxlRXJyb3IobmV3IEVycm9yKG1lc3NhZ2UpKTtcbiAgICAgIHJldHVybiBcIlwiO1xuICAgIH1cbiAgICB0aGlzLm9wZXJhdGlvbi5kZXBlbmRlbmNpZXMocmVmKTtcbiAgICByZXR1cm4gdGhpcy5yZXNvbHZlKHJlZik7XG4gIH1cblxuICBwdWJsaWMgcmVzb2x2ZShyZWY6IFJlc29sdmFibGUgfCBzdHJpbmdbXSwgLi4ucmVzdDogc3RyaW5nW10pIHtcbiAgICByZXR1cm4gdGhpcy5vcGVyYXRpb24uc2Vzc2lvbi5yZXNvbHZlKHV0aWxzLnRvUmVzb2x2YWJsZShyZWYsIHJlc3QpKTtcbiAgfVxuXG4gIHB1YmxpYyBkZXBlbmRlbmNpZXMobmFtZTogUmVzb2x2YWJsZSB8IFJlc29sdmFibGVbXSkge1xuICAgIHRoaXMub3BlcmF0aW9uLmRlcGVuZGVuY2llcyhuYW1lKTtcbiAgICByZXR1cm4gXCJcIjtcbiAgfVxuXG4gIHB1YmxpYyB0YWdzKG5hbWU6IHN0cmluZyB8IHN0cmluZ1tdKSB7XG4gICAgdGhpcy5vcGVyYXRpb24udGFncyhuYW1lKTtcbiAgICByZXR1cm4gXCJcIjtcbiAgfVxuXG4gIHB1YmxpYyBoYXNPdXRwdXQoaGFzT3V0cHV0OiBib29sZWFuKSB7XG4gICAgdGhpcy5vcGVyYXRpb24uaGFzT3V0cHV0KGhhc091dHB1dCk7XG4gICAgcmV0dXJuIFwiXCI7XG4gIH1cblxuICBwdWJsaWMgYXBwbHk8VD4odmFsdWU6IENvbnRleHRhYmxlPElDb21tb25Db250ZXh0LCBUPik6IFQge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgcmV0dXJuICh2YWx1ZSBhcyBhbnkpKHRoaXMpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuICB9XG59XG4iXX0=
{
"version": "1.6.3",
"version": "1.6.4",
"homepage": "https://github.com/dataform-co/dataform",

@@ -24,4 +24,4 @@ "license": "MIT",

"dependencies": {
"@dataform/protos": "1.6.3",
"@dataform/sqlx": "1.6.3",
"@dataform/protos": "1.6.4",
"@dataform/sqlx": "1.6.4",
"protobufjs": "^6.8.8",

@@ -28,0 +28,0 @@ "tarjan-graph": "^2.0.0",

@@ -15,2 +15,3 @@ /// <amd-module name="@dataform/core/session" />

dependencies?: string[];
hermeticity?: dataform.ActionHermeticity;
target?: dataform.ITarget;

@@ -68,3 +69,4 @@ }

private checkCircularity;
private checkRunCachingCorrectness;
}
export {};

@@ -44,3 +44,3 @@ /// <amd-module name="@dataform/core/table" />

}
export declare const ITableConfigProperties: () => ("database" | "bigquery" | "redshift" | "sqldatawarehouse" | "description" | "columns" | "type" | "name" | "tags" | "schema" | "dependencies" | "protected" | "disabled" | "uniqueKey" | "assertions")[];
export declare const ITableConfigProperties: () => ("database" | "bigquery" | "redshift" | "sqldatawarehouse" | "description" | "columns" | "type" | "name" | "tags" | "schema" | "dependencies" | "protected" | "disabled" | "uniqueKey" | "hermetic" | "assertions")[];
export interface ITableContext extends ICommonContext {

@@ -75,2 +75,3 @@ when: (cond: boolean, trueCase: string, falseCase?: string) => string;

dependencies(value: Resolvable | Resolvable[]): this;
hermetic(hermetic: boolean): void;
tags(value: string | string[]): this;

@@ -77,0 +78,0 @@ description(description: string): this;

@@ -32,2 +32,3 @@ (function (factory) {

"dependencies",
"hermetic",
"schema",

@@ -50,3 +51,3 @@ "assertions",

config(config) {
utils_1.checkExcessProperties(config, exports.ITableConfigProperties(), "table config");
utils_1.checkExcessProperties((e) => this.session.compileError(e), config, exports.ITableConfigProperties(), "table config");
if (config.type) {

@@ -58,2 +59,5 @@ this.type(config.type);

}
if (config.hermetic !== undefined) {
this.hermetic(config.hermetic);
}
if (config.disabled) {

@@ -129,3 +133,3 @@ this.disabled();

sqldatawarehouse(sqlDataWarehouse) {
utils_1.checkExcessProperties(sqlDataWarehouse, exports.ISQLDataWarehouseOptionsProperties(), "sqldatawarehouse config");
utils_1.checkExcessProperties((e) => this.session.compileError(e), sqlDataWarehouse, exports.ISQLDataWarehouseOptionsProperties(), "sqldatawarehouse config");
this.proto.sqlDataWarehouse = protos_1.dataform.SQLDataWarehouseOptions.create(sqlDataWarehouse);

@@ -135,3 +139,3 @@ return this;

redshift(redshift) {
utils_1.checkExcessProperties(redshift, exports.IRedshiftOptionsProperties(), "redshift config");
utils_1.checkExcessProperties((e) => this.session.compileError(e), redshift, exports.IRedshiftOptionsProperties(), "redshift config");
this.proto.redshift = protos_1.dataform.RedshiftOptions.create(redshift);

@@ -141,3 +145,3 @@ return this;

bigquery(bigquery) {
utils_1.checkExcessProperties(bigquery, exports.IBigQueryOptionsProperties(), "bigquery config");
utils_1.checkExcessProperties((e) => this.session.compileError(e), bigquery, exports.IBigQueryOptionsProperties(), "bigquery config");
this.proto.bigquery = protos_1.dataform.BigQueryOptions.create(bigquery);

@@ -153,2 +157,7 @@ return this;

}
hermetic(hermetic) {
this.proto.hermeticity = hermetic
? protos_1.dataform.ActionHermeticity.HERMETIC
: protos_1.dataform.ActionHermeticity.NON_HERMETIC;
}
tags(value) {

@@ -178,3 +187,3 @@ const newTags = typeof value === "string" ? [value] : value;

}
this.proto.actionDescriptor.columns = column_descriptors_1.ColumnDescriptors.mapToColumnProtoArray(columns);
this.proto.actionDescriptor.columns = column_descriptors_1.ColumnDescriptors.mapToColumnProtoArray(columns, (e) => this.session.compileError(e));
return this;

@@ -330,2 +339,2 @@ }

});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9jb3JlL3RhYmxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0lBQ0EsMEVBQXNFO0lBV3RFLGdEQU04QjtJQUM5Qiw2Q0FBNEM7SUFLL0IsUUFBQSxTQUFTLEdBQUcsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLGFBQWEsRUFBRSxRQUFRLENBQVUsQ0FBQztJQWVoRSxRQUFBLGFBQWEsR0FBRyxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFVLENBQUM7SUFXaEQsUUFBQSxhQUFhLEdBQUcsQ0FBQyxVQUFVLEVBQUUsYUFBYSxDQUFVLENBQUM7SUFrRHJELFFBQUEsMEJBQTBCLEdBQUcsR0FBRyxFQUFFLENBQzdDLG9CQUFZLEVBQW9CLENBQUMsQ0FBQyxTQUFTLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztJQWFqRixRQUFBLGtDQUFrQyxHQUFHLEdBQUcsRUFBRSxDQUNyRCxvQkFBWSxFQUE0QixDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQztJQTRCaEQsUUFBQSwwQkFBMEIsR0FBRyxHQUFHLEVBQUUsQ0FDN0Msb0JBQVksRUFBb0IsQ0FBQyxDQUFDLGFBQWEsRUFBRSxXQUFXLEVBQUUsdUJBQXVCLENBQUMsQ0FBQyxDQUFDO0lBbUY3RSxRQUFBLHNCQUFzQixHQUFHLEdBQUcsRUFBRSxDQUN6QyxvQkFBWSxFQUFnQixDQUFDO1FBQzNCLE1BQU07UUFDTixVQUFVO1FBQ1YsV0FBVztRQUNYLE1BQU07UUFDTixVQUFVO1FBQ1YsVUFBVTtRQUNWLGtCQUFrQjtRQUNsQixNQUFNO1FBQ04sV0FBVztRQUNYLGNBQWM7UUFDZCxRQUFRO1FBQ1IsWUFBWTtRQUNaLFVBQVU7UUFDVixTQUFTO1FBQ1QsYUFBYTtLQUNkLENBQUMsQ0FBQztJQXNCTCxNQUFhLEtBQUs7UUFBbEI7WUFn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QUksQ0FBQyxDQUFDO2FBQzdCO2lCQUFNO2dCQUNMLE9BQU8sS0FBSyxDQUFDO2FBQ2Q7UUFDSCxDQUFDO1FBRU0sSUFBSSxDQUFDLElBQWM7WUFDeEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDdEIsT0FBTyxFQUFFLENBQUM7UUFDWixDQUFDO0tBQ0Y7SUEzRkQsb0NBMkZDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXNzZXJ0aW9uIH0gZnJvbSBcIkBkYXRhZm9ybS9jb3JlL2Fzc2VydGlvblwiO1xuaW1wb3J0IHsgQ29sdW1uRGVzY3JpcHRvcnMgfSBmcm9tIFwiQGRhdGFmb3JtL2NvcmUvY29sdW1uX2Rlc2NyaXB0b3JzXCI7XG5pbXBvcnQge1xuICBDb250ZXh0YWJsZSxcbiAgSUNvbHVtbnNEZXNjcmlwdG9yLFxuICBJQ29tbW9uQ29udGV4dCxcbiAgSURlcGVuZGVuY2llc0NvbmZpZyxcbiAgSURvY3VtZW50YWJsZUNvbmZpZyxcbiAgSVRhcmdldGFibGVDb25maWcsXG4gIFJlc29sdmFibGVcbn0gZnJvbSBcIkBkYXRhZm9ybS9jb3JlL2NvbW1vblwiO1xuaW1wb3J0IHsgU2Vzc2lvbiB9IGZyb20gXCJAZGF0YWZvcm0vY29yZS9zZXNzaW9uXCI7XG5pbXBvcnQge1xuICBjaGVja0V4Y2Vzc1Byb3BlcnRpZXMsXG4gIHJlc29sdmFibGVBc1RhcmdldCxcbiAgc2V0TmFtZUFuZFRhcmdldCxcbiAgc3RyaWN0S2V5c09mLFxuICB0b1Jlc29sdmFibGVcbn0gZnJvbSBcIkBkYXRhZm9ybS9jb3JlL3V0aWxzXCI7XG5pbXBvcnQgeyBkYXRhZm9ybSB9IGZyb20gXCJAZGF0YWZvcm0vcHJvdG9zXCI7XG5cbi8qKlxuICogQGhpZGRlblxuICovXG5leHBvcnQgY29uc3QgVGFibGVUeXBlID0gW1widGFibGVcIiwgXCJ2aWV3XCIsIFwiaW5jcmVtZW50YWxcIiwgXCJpbmxpbmVcIl0gYXMgY29uc3Q7XG4vKipcbiAqIFN1cHBvcnRlZCB0eXBlcyBvZiB0YWJsZSBhY3Rpb25zLlxuICpcbiAqIFRhYmxlcyBvZiB0eXBlIGB2aWV3YCB3aWxsIGJlIGNyZWF0ZWQgYXMgdmlld3MuXG4gKlxuICogVGFibGVzIG9mIHR5cGUgYHRhYmxlYCB3aWxsIGJlIGNyZWF0ZWQgYXMgdGFibGVzLlxuICpcbiAqIFRhYmxlcyBvZiB0eXBlIGBpbmNyZW1lbnRhbGAgbXVzdCBoYXZlIGEgd2hlcmUgY2xhdXNlIHByb3ZpZGVkLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIHRoZSBbaW5jcmVtZW50YWwgdGFibGVzIGd1aWRlXShndWlkZXMvaW5jcmVtZW50YWwtZGF0YXNldHMpLlxuICovXG5leHBvcnQgdHlwZSBUYWJsZVR5cGUgPSB0eXBlb2YgVGFibGVUeXBlW251bWJlcl07XG5cbi8qKlxuICogQGhpZGRlblxuICovXG5leHBvcnQgY29uc3QgRGlzdFN0eWxlVHlwZSA9IFtcImV2ZW5cIiwgXCJrZXlcIiwgXCJhbGxcIl0gYXMgY29uc3Q7XG4vKipcbiAqIFZhbGlkIHR5cGVzIGZvciBzZXR0aW5nIHRoZSBkaXN0cmlidXRpb24gc3R5bGUgZm9yIFJlZHNoaWZ0IHRhYmxlcy5cbiAqXG4gKiBWaWV3IHRoZSBbUmVkc2hpZnQgZG9jdW1lbnRhdGlvbl0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL3JlZHNoaWZ0L2xhdGVzdC9kZy9yX0NSRUFURV9UQUJMRV9leGFtcGxlcy5odG1sI3JfQ1JFQVRFX1RBQkxFX05FVy1kaXN0c3R5bGUtZGlzdGtleS1hbmQtc29ydGtleS1vcHRpb25zKSBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiAqL1xuZXhwb3J0IHR5cGUgRGlzdFN0eWxlVHlwZSA9IHR5cGVvZiBEaXN0U3R5bGVUeXBlW251bWJlcl07XG5cbi8qKlxuICogQGhpZGRlblxuICovXG5leHBvcnQgY29uc3QgU29ydFN0eWxlVHlwZSA9IFtcImNvbXBvdW5kXCIsIFwiaW50ZXJsZWF2ZWRcIl0gYXMgY29uc3Q7XG4vKipcbiAqIFZhbGlkIHR5cGVzIGZvciBzZXR0aW5nIHRoZSBzb3J0IHN0eWxlIGZvciBSZWRzaGlmdCB0YWJsZXMuXG4gKlxuICogVmlldyB0aGUgW1JlZHNoaWZ0IGRvY3VtZW50YXRpb25dKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9yZWRzaGlmdC9sYXRlc3QvZGcvcl9DUkVBVEVfVEFCTEVfZXhhbXBsZXMuaHRtbCNyX0NSRUFURV9UQUJMRV9ORVctZGlzdHN0eWxlLWRpc3RrZXktYW5kLXNvcnRrZXktb3B0aW9ucykgZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4gKi9cbmV4cG9ydCB0eXBlIFNvcnRTdHlsZVR5cGUgPSB0eXBlb2YgU29ydFN0eWxlVHlwZVtudW1iZXJdO1xuXG4vKipcbiAqIFJlZHNoaWZ0IHNwZWNpZmljIHdhcmVob3VzZSBvcHRpb25zLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElSZWRzaGlmdE9wdGlvbnMge1xuICAvKipcbiAgICogU2V0cyB0aGUgRElTVEtFWSBwcm9wZXJ0eSB3aGVuIGNyZWF0aW5nIHRhYmxlcy5cbiAgICpcbiAgICogRm9yIG1vcmUgaW5mb3JtYXRpb24sIHJlYWQgdGhlIFtSZWRzaGlmdCBjcmVhdGUgdGFibGUgZG9jc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL3JlZHNoaWZ0L2xhdGVzdC9kZy9yX0NSRUFURV9UQUJMRV9leGFtcGxlcy5odG1sI3JfQ1JFQVRFX1RBQkxFX05FVy1kaXN0c3R5bGUtZGlzdGtleS1hbmQtc29ydGtleS1vcHRpb25zKS5cbiAgICovXG4gIGRpc3RLZXk/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgRElTVFNUWUxFIHByb3BlcnR5IHdoZW4gY3JlYXRpbmcgdGFibGVzLlxuICAgKlxuICAgKiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgcmVhZCB0aGUgW1JlZHNoaWZ0IGNyZWF0ZSB0YWJsZSBkb2NzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vcmVkc2hpZnQvbGF0ZXN0L2RnL3JfQ1JFQVRFX1RBQkxFX2V4YW1wbGVzLmh0bWwjcl9DUkVBVEVfVEFCTEVfTkVXLWRpc3RzdHlsZS1kaXN0a2V5LWFuZC1zb3J0a2V5LW9wdGlvbnMpLlxuICAgKi9cbiAgZGlzdFN0eWxlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBIGxpc3Qgb2Ygc3RyaW5nIHZhbHVlcyB0aGF0IHdpbGwgY29uZmlndXJlIHRoZSBTT1JUS0VZIHByb3BlcnR5IHdoZW4gY3JlYXRpbmcgdGFibGVzLlxuICAgKlxuICAgKiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgcmVhZCB0aGUgW1JlZHNoaWZ0IGNyZWF0ZSB0YWJsZSBkb2NzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vcmVkc2hpZnQvbGF0ZXN0L2RnL3JfQ1JFQVRFX1RBQkxFX2V4YW1wbGVzLmh0bWwjcl9DUkVBVEVfVEFCTEVfTkVXLWRpc3RzdHlsZS1kaXN0a2V5LWFuZC1zb3J0a2V5LW9wdGlvbnMpLlxuICAgKi9cbiAgc29ydEtleXM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogU2V0cyB0aGUgc3R5bGUgb2YgdGhlIHNvcnQga2V5IHdoZW4gdXNpbmcgc29ydCBrZXlzLlxuICAgKlxuICAgKiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgcmVhZCB0aGUgW1JlZHNoaWZ0IHNvcnQgc3R5bGUgYXJ0aWNsZV0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL3JlZHNoaWZ0L2xhdGVzdC9kZy90X1NvcnRpbmdfZGF0YS1jb21wYXJlLXNvcnQtc3R5bGVzLmh0bWwpLlxuICAgKi9cbiAgc29ydFN0eWxlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBCeSBkZWZhdWx0LCB2aWV3cyBhcmUgY3JlYXRlZCBhcyBsYXRlIGJpbmRpbmcgdmlld3MuXG4gICAqXG4gICAqIFdoZW4gdGhpcyBpcyBzZXQgdG8gdHJ1ZSwgdmlld3Mgd2lsbCBub3QgYmUgY3JlYXRlZCBhcyBsYXRlIGJpbmRpbmcgdmlld3MsIGFuZCB0aGUgYFdJVEggU0NIRU1BIEJJTkRJTkdgIHN1ZmZpeCBpcyBvbWl0dGVkLlxuICAgKlxuICAgKiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgcmVhZCB0aGUgW1JlZHNoaWZ0IGNyZWF0ZSB2aWV3IGRvY3NdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9yZWRzaGlmdC9sYXRlc3QvZGcvcl9DUkVBVEVfVklFVy5odG1sKS5cbiAgICovXG4gIGJpbmQ/OiBib29sZWFuO1xufVxuXG5leHBvcnQgY29uc3QgSVJlZHNoaWZ0T3B0aW9uc1Byb3BlcnRpZXMgPSAoKSA9PlxuICBzdHJpY3RLZXlzT2Y8SVJlZHNoaWZ0T3B0aW9ucz4oKShbXCJkaXN0S2V5XCIsIFwiZGlzdFN0eWxlXCIsIFwic29ydEtleXNcIiwgXCJzb3J0U3R5bGVcIiwgXCJiaW5kXCJdKTtcblxuLyoqXG4gKiBPcHRpb25zIGZvciBjcmVhdGluZyB0YWJsZXMgd2l0aGluIEF6dXJlIFNRTCBEYXRhIFdhcmVob3VzZSBwcm9qZWN0cy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJU1FMRGF0YVdhcmVob3VzZU9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIGRpc3RyaWJ1dGlvbiBvcHRpb24gdmFsdWUuXG4gICAqXG4gICAqIEZvciBtb3JlIGluZm9ybWF0aW9uLCByZWFkIHRoZSBbQXp1cmUgQ1RBUyBkb2NzXShodHRwczovL2RvY3MubWljcm9zb2Z0LmNvbS9lbi1nYi9zcWwvdC1zcWwvc3RhdGVtZW50cy9jcmVhdGUtdGFibGUtYXMtc2VsZWN0LWF6dXJlLXNxbC1kYXRhLXdhcmVob3VzZT92aWV3PWFwcy1wZHctMjAxNi1hdTcjZXhhbXBsZXMtZm9yLXRhYmxlLWRpc3RyaWJ1dGlvbikuXG4gICAqL1xuICBkaXN0cmlidXRpb24/OiBzdHJpbmc7XG59XG5leHBvcnQgY29uc3QgSVNRTERhdGFXYXJlaG91c2VPcHRpb25zUHJvcGVydGllcyA9ICgpID0+XG4gIHN0cmljdEtleXNPZjxJU1FMRGF0YVdhcmVob3VzZU9wdGlvbnM+KCkoW1wiZGlzdHJpYnV0aW9uXCJdKTtcblxuLyoqXG4gKiBPcHRpb25zIGZvciBjcmVhdGluZyB0YWJsZXMgd2l0aGluIEJpZ1F1ZXJ5IHByb2plY3RzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElCaWdRdWVyeU9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIGtleSB3aXRoIHdoaWNoIHRvIHBhcnRpdGlvbiB0aGUgdGFibGUuIFR5cGljYWxseSB0aGUgbmFtZSBvZiBhIHRpbWVzdGFtcCBvciBkYXRlIGNvbHVtbi5cbiAgICpcbiAgICogRm9yIG1vcmUgaW5mb3JtYXRpb24sIHJlYWQgdGhlIFtCaWdRdWVyeSBwYXJ0aXRpb25lZCB0YWJsZXMgZG9jc10oaHR0cHM6Ly9jbG91ZC5nb29nbGUuY29tL2JpZ3F1ZXJ5L2RvY3MvcGFydGl0aW9uZWQtdGFibGVzKS5cbiAgICovXG4gIHBhcnRpdGlvbkJ5Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUga2V5cyBieSB3aGljaCB0byBjbHVzdGVyIHBhcnRpdGlvbnMgYnkuXG4gICAqXG4gICAqIEZvciBtb3JlIGluZm9ybWF0aW9uLCByZWFkIHRoZSBbQmlnUXVlcnkgY2x1c3RlcmVkIHRhYmxlcyBkb2NzXShodHRwczovL2Nsb3VkLmdvb2dsZS5jb20vYmlncXVlcnkvZG9jcy9jbHVzdGVyZWQtdGFibGVzKS5cbiAgICovXG4gIGNsdXN0ZXJCeT86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBTUUwgYmFzZWQgZmlsdGVyIGZvciB3aGVuIGluY3JlbWVudGFsIHVwZGF0ZXMgYXJlIGFwcGxpZWQuXG4gICAqXG4gICAqIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgb3VyIFtpbmNyZW1lbnRhbCBkYXRhc2V0IGRvY3NdKGh0dHBzOi8vZG9jcy5kYXRhZm9ybS5jby9ndWlkZXMvaW5jcmVtZW50YWwtZGF0YXNldHMpLlxuICAgKi9cbiAgdXBkYXRlUGFydGl0aW9uRmlsdGVyPzogc3RyaW5nO1xufVxuXG5leHBvcnQgY29uc3QgSUJpZ1F1ZXJ5T3B0aW9uc1Byb3BlcnRpZXMgPSAoKSA9PlxuICBzdHJpY3RLZXlzT2Y8SUJpZ1F1ZXJ5T3B0aW9ucz4oKShbXCJwYXJ0aXRpb25CeVwiLCBcImNsdXN0ZXJCeVwiLCBcInVwZGF0ZVBhcnRpdGlvbkZpbHRlclwiXSk7XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgY3JlYXRpbmcgYXNzZXJ0aW9ucyBhcyBwYXJ0IG9mIGEgZGF0YXNldCBkZWZpbml0aW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElUYWJsZUFzc2VydGlvbnMge1xuICAvKipcbiAgICogQ29sdW1uKHMpIHdoaWNoIGNvbnN0aXR1dGUgdGhlIGRhdGFzZXQncyB1bmlxdWUga2V5IGluZGV4LlxuICAgKlxuICAgKiBJZiBzZXQsIHRoZSByZXN1bHRpbmcgYXNzZXJ0aW9uIHdpbGwgZmFpbCBpZiB0aGVyZSBpcyBtb3JlIHRoYW4gb25lIHJvdyBpbiB0aGUgZGF0YXNldCB3aXRoIHRoZSBzYW1lIHZhbHVlcyBmb3IgYWxsIG9mIHRoZXNlIGNvbHVtbihzKS5cbiAgICovXG4gIHVuaXF1ZUtleT86IHN0cmluZyB8IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBDb2x1bW4ocykgd2hpY2ggbWF5IG5ldmVyIGJlIGBOVUxMYC5cbiAgICpcbiAgICogSWYgc2V0LCB0aGUgcmVzdWx0aW5nIGFzc2VydGlvbiB3aWxsIGZhaWwgaWYgYW55IHJvdyBjb250YWlucyBgTlVMTGAgdmFsdWVzIGZvciB0aGVzZSBjb2x1bW4ocykuXG4gICAqL1xuICBub25OdWxsPzogc3RyaW5nIHwgc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIEdlbmVyYWwgY29uZGl0aW9uKHMpIHdoaWNoIHNob3VsZCBob2xkIHRydWUgZm9yIGFsbCByb3dzIGluIHRoZSBkYXRhc2V0LlxuICAgKlxuICAgKiBJZiBzZXQsIHRoZSByZXN1bHRpbmcgYXNzZXJ0aW9uIHdpbGwgZmFpbCBpZiBhbnkgcm93IHZpb2xhdGVzIGFueSBvZiB0aGVzZSBjb25kaXRpb24ocykuXG4gICAqL1xuICByb3dDb25kaXRpb25zPzogc3RyaW5nW107XG59XG5cbi8qKlxuICogQ29uZmlndXJhdGlvbiBvcHRpb25zIGZvciBgZGF0YXNldGAgYWN0aW9ucywgaW5jbHVkaW5nIGB0YWJsZWAsIGB2aWV3YCBhbmQgYGluY3JlbWVudGFsYCBhY3Rpb24gdHlwZXMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSVRhYmxlQ29uZmlnIGV4dGVuZHMgSVRhcmdldGFibGVDb25maWcsIElEb2N1bWVudGFibGVDb25maWcsIElEZXBlbmRlbmNpZXNDb25maWcge1xuICAvKipcbiAgICogVGhlIHR5cGUgb2YgdGhlIGRhdGFzZXQuIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGhvdyB0aGlzIHNldHRpbmcgd29ya3MsIGNoZWNrIG91dCBzb21lIG9mIHRoZSBbZ3VpZGVzXShndWlkZXMpXG4gICAqIG9uIHB1Ymxpc2hpbmcgZGlmZmVyZW50IHR5cGVzIG9mIGRhdGFzZXRzIHdpdGggRGF0YWZvcm0uXG4gICAqL1xuICB0eXBlPzogVGFibGVUeXBlO1xuXG4gIC8qKlxuICAgKiBJZiBzZXQgdG8gdHJ1ZSwgdGhpcyBhY3Rpb24gd2lsbCBub3QgYmUgZXhlY3V0ZWQuIEhvd2V2ZXIsIHRoZSBhY3Rpb24gbWF5IHN0aWxsIGJlIGRlcGVuZGVkIHVwb24uXG4gICAqIFVzZWZ1bCBmb3IgdGVtcG9yYXJpbHkgdHVybmluZyBvZmYgYnJva2VuIGFjdGlvbnMuXG4gICAqL1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIE9ubHkgYWxsb3dlZCB3aGVuIHRoZSB0YWJsZSB0eXBlIGlzIGBpbmNyZW1lbnRhbGAuXG4gICAqXG4gICAqIElmIHNldCB0byB0cnVlLCBydW5uaW5nIHRoaXMgYWN0aW9uIHdpbGwgaWdub3JlIHRoZSBmdWxsLXJlZnJlc2ggb3B0aW9uLlxuICAgKiBUaGlzIGlzIHVzZWZ1bCBmb3IgdGFibGVzIHdoaWNoIGFyZSBidWlsdCBmcm9tIHRyYW5zaWVudCBkYXRhLCB0byBlbnN1cmUgdGhhdCBoaXN0b3JpY2FsIGRhdGEgaXMgbmV2ZXIgbG9zdC5cbiAgICovXG4gIHByb3RlY3RlZD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFJlZHNoaWZ0LXNwZWNpZmljIHdhcmVob3VzZSBvcHRpb25zLlxuICAgKi9cbiAgcmVkc2hpZnQ/OiBJUmVkc2hpZnRPcHRpb25zO1xuXG4gIC8qKlxuICAgKiBCaWdRdWVyeS1zcGVjaWZpYyB3YXJlaG91c2Ugb3B0aW9ucy5cbiAgICovXG4gIGJpZ3F1ZXJ5PzogSUJpZ1F1ZXJ5T3B0aW9ucztcblxuICAvKipcbiAgICogQXp1cmUgU1FMIERhdGEgV2FyZWhvdXNlLXNwZWNpZmljIG9wdGlvbnMuXG4gICAqL1xuICBzcWxkYXRhd2FyZWhvdXNlPzogSVNRTERhdGFXYXJlaG91c2VPcHRpb25zO1xuXG4gIC8qKlxuICAgKiBBc3NlcnRpb25zIHRvIGJlIHJ1biBvbiB0aGUgZGF0YXNldC5cbiAgICpcbiAgICogSWYgY29uZmlndXJlZCwgcmVsZXZhbnQgYXNzZXJ0aW9ucyB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgY3JlYXRlZCBhbmQgcnVuIGFzIGEgZGVwZW5kZW5jeSBvZiB0aGlzIGRhdGFzZXQuXG4gICAqL1xuICBhc3NlcnRpb25zPzogSVRhYmxlQXNzZXJ0aW9ucztcblxuICAvKipcbiAgICogVW5pcXVlIGtleXMgZm9yIG1lcmdlIGNyaXRlcmlhIGZvciBpbmNyZW1lbnRhbCB0YWJsZXMuXG4gICAqXG4gICAqIElmIGNvbmZpZ3VyZWQsIHJlY29yZHMgd2l0aCBtYXRjaGluZyB1bmlxdWUga2V5KHMpIHdpbGwgYmUgdXBkYXRlZCwgcmF0aGVyIHRoYW4gbmV3IHJvd3MgYmVpbmcgaW5zZXJ0ZWQuXG4gICAqL1xuICB1bmlxdWVLZXk/OiBzdHJpbmdbXTtcbn1cblxuLy8gVE9ETzogVGhpcyBuZWVkcyB0byBiZSBhIG1ldGhvZCwgSSdtIHJlYWxseSBub3Qgc3VyZSB3aHksIGJ1dCBpdCBoaXRzIGEgcnVudGltZSBmYWlsdXJlIG90aGVyd2lzZS5cbmV4cG9ydCBjb25zdCBJVGFibGVDb25maWdQcm9wZXJ0aWVzID0gKCkgPT5cbiAgc3RyaWN0S2V5c09mPElUYWJsZUNvbmZpZz4oKShbXG4gICAgXCJ0eXBlXCIsXG4gICAgXCJkaXNhYmxlZFwiLFxuICAgIFwicHJvdGVjdGVkXCIsXG4gICAgXCJuYW1lXCIsXG4gICAgXCJyZWRzaGlmdFwiLFxuICAgIFwiYmlncXVlcnlcIixcbiAgICBcInNxbGRhdGF3YXJlaG91c2VcIixcbiAgICBcInRhZ3NcIixcbiAgICBcInVuaXF1ZUtleVwiLFxuICAgIFwiZGVwZW5kZW5jaWVzXCIsXG4gICAgXCJzY2hlbWFcIixcbiAgICBcImFzc2VydGlvbnNcIixcbiAgICBcImRhdGFiYXNlXCIsXG4gICAgXCJjb2x1bW5zXCIsXG4gICAgXCJkZXNjcmlwdGlvblwiXG4gIF0pO1xuXG4vKipcbiAqIENvbnRleHQgbWV0aG9kcyBhcmUgYXZhaWxhYmxlIHdoZW4gZXZhbHVhdGluZyBjb250ZXh0YWJsZSBTUUwgY29kZSwgc3VjaCBhc1xuICogd2l0aGluIFNRTFggZmlsZXMsIG9yIHdoZW4gdXNpbmcgYSBbQ29udGV4dGFibGVdKCNDb250ZXh0YWJsZSkgYXJndW1lbnQgd2l0aCB0aGUgSlMgQVBJLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElUYWJsZUNvbnRleHQgZXh0ZW5kcyBJQ29tbW9uQ29udGV4dCB7XG4gIC8qKlxuICAgKiBTaG9ydGhhbmQgZm9yIGFuIGBpZmAgY29uZGl0aW9uLiBFcXVpdmFsZW50IHRvIGBjb25kID8gdHJ1ZUNhc2UgOiBmYWxzZUNhc2VgLlxuICAgKiBgZmFsc2VDYXNlYCBpcyBvcHRpb25hbCwgYW5kIGRlZmF1bHRzIHRvIGFuIGVtcHR5IHN0cmluZy5cbiAgICovXG4gIHdoZW46IChjb25kOiBib29sZWFuLCB0cnVlQ2FzZTogc3RyaW5nLCBmYWxzZUNhc2U/OiBzdHJpbmcpID0+IHN0cmluZztcblxuICAvKipcbiAgICogSW5kaWNhdGVzIHdoZXRoZXIgdGhlIGNvbmZpZyBpbmRpY2F0ZXMgdGhlIGZpbGUgaXMgZGVhbGluZyB3aXRoIGFuIGluY3JlbWVudGFsIHRhYmxlLlxuICAgKi9cbiAgaW5jcmVtZW50YWw6ICgpID0+IGJvb2xlYW47XG59XG5cbi8qKlxuICogQGhpZGRlblxuICovXG5leHBvcnQgY2xhc3MgVGFibGUge1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IElHTk9SRURfUFJPUFM6IHtcbiAgICBbdGFibGVUeXBlOiBzdHJpbmddOiBBcnJheTxrZXlvZiBkYXRhZm9ybS5JVGFibGU+O1xuICB9ID0ge1xuICAgIGlubGluZTogW1xuICAgICAgXCJiaWdxdWVyeVwiLFxuICAgICAgXCJyZWRzaGlmdFwiLFxuICAgICAgXCJzcWxEYXRhV2FyZWhvdXNlXCIsXG4gICAgICBcInByZU9wc1wiLFxuICAgICAgXCJwb3N0T3BzXCIsXG4gICAgICBcImFjdGlvbkRlc2NyaXB0b3JcIixcbiAgICAgIFwiZGlzYWJsZWRcIixcbiAgICAgIFwid2hlcmVcIlxuICAgIF1cbiAgfTtcblxuICBwdWJsaWMgcHJvdG86IGRhdGFmb3JtLklUYWJsZSA9IGRhdGFmb3JtLlRhYmxlLmNyZWF0ZSh7XG4gICAgdHlwZTogXCJ2aWV3XCIsXG4gICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgIHRhZ3M6IFtdXG4gIH0pO1xuXG4gIC8vIEhvbGQgYSByZWZlcmVuY2UgdG8gdGhlIFNlc3Npb24gaW5zdGFuY2UuXG4gIHB1YmxpYyBzZXNzaW9uOiBTZXNzaW9uO1xuXG4gIC8vIFdlIGRlbGF5IGNvbnRleHRpZmljYXRpb24gdW50aWwgdGhlIGZpbmFsIGNvbXBpbGUgc3RlcCwgc28gaG9sZCB0aGVzZSBoZXJlIGZvciBub3cuXG4gIHB1YmxpYyBjb250ZXh0YWJsZVF1ZXJ5OiBDb250ZXh0YWJsZTxJVGFibGVDb250ZXh0LCBzdHJpbmc+O1xuICBwcml2YXRlIGNvbnRleHRhYmxlV2hlcmU6IENvbnRleHRhYmxlPElUYWJsZUNvbnRleHQsIHN0cmluZz47XG4gIHByaXZhdGUgY29udGV4dGFibGVQcmVPcHM6IEFycmF5PENvbnRleHRhYmxlPElUYWJsZUNvbnRleHQsIHN0cmluZyB8IHN0cmluZ1tdPj4gPSBbXTtcbiAgcHJpdmF0ZSBjb250ZXh0YWJsZVBvc3RPcHM6IEFycmF5PENvbnRleHRhYmxlPElUYWJsZUNvbnRleHQsIHN0cmluZyB8IHN0cmluZ1tdPj4gPSBbXTtcbiAgcHJpdmF0ZSB1bmlxdWVLZXlBc3NlcnRpb24/OiBBc3NlcnRpb247XG4gIHByaXZhdGUgbWVyZ2VkUm93Q29uZGl0aW9uc0Fzc2VydGlvbj86IEFzc2VydGlvbjtcblxuICBwdWJsaWMgY29uZmlnKGNvbmZpZzogSVRhYmxlQ29uZmlnKSB7XG4gICAgY2hlY2tFeGNlc3NQcm9wZXJ0aWVzKGNvbmZpZywgSVRhYmxlQ29uZmlnUHJvcGVydGllcygpLCBcInRhYmxlIGNvbmZpZ1wiKTtcbiAgICBpZiAoY29uZmlnLnR5cGUpIHtcbiAgICAgIHRoaXMudHlwZShjb25maWcudHlwZSk7XG4gICAgfVxuICAgIGlmIChjb25maWcuZGVwZW5kZW5jaWVzKSB7XG4gICAgICB0aGlzLmRlcGVuZGVuY2llcyhjb25maWcuZGVwZW5kZW5jaWVzKTtcbiAgICB9XG4gICAgaWYgKGNvbmZpZy5kaXNhYmxlZCkge1xuICAgICAgdGhpcy5kaXNhYmxlZCgpO1xuICAgIH1cbiAgICBpZiAoY29uZmlnLnByb3RlY3RlZCkge1xuICAgICAgdGhpcy5wcm90ZWN0ZWQoKTtcbiAgICB9XG4gICAgaWYgKGNvbmZpZy5yZWRzaGlmdCkge1xuICAgICAgdGhpcy5yZWRzaGlmdChjb25maWcucmVkc2hpZnQpO1xuICAgIH1cbiAgICBpZiAoY29uZmlnLmJpZ3F1ZXJ5KSB7XG4gICAgICB0aGlzLmJpZ3F1ZXJ5KGNvbmZpZy5iaWdxdWVyeSk7XG4gICAgfVxuICAgIGlmIChjb25maWcuc3FsZGF0YXdhcmVob3VzZSkge1xuICAgICAgdGhpcy5zcWxkYXRhd2FyZWhvdXNlKGNvbmZpZy5zcWxkYXRhd2FyZWhvdXNlKTtcbiAgICB9XG4gICAgaWYgKGNvbmZpZy50YWdzKSB7XG4gICAgICB0aGlzLnRhZ3MoY29uZmlnLnRhZ3MpO1xuICAgIH1cbiAgICBpZiAoY29uZmlnLmRlc2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLmRlc2NyaXB0aW9uKGNvbmZpZy5kZXNjcmlwdGlvbik7XG4gICAgfVxuICAgIGlmIChjb25maWcuY29sdW1ucykge1xuICAgICAgdGhpcy5jb2x1bW5zKGNvbmZpZy5jb2x1bW5zKTtcbiAgICB9XG4gICAgaWYgKGNvbmZpZy5kYXRhYmFzZSkge1xuICAgICAgdGhpcy5kYXRhYmFzZShjb25maWcuZGF0YWJhc2UpO1xuICAgIH1cbiAgICBpZiAoY29uZmlnLnNjaGVtYSkge1xuICAgICAgdGhpcy5zY2hlbWEoY29uZmlnLnNjaGVtYSk7XG4gICAgfVxuICAgIGlmIChjb25maWcuYXNzZXJ0aW9ucykge1xuICAgICAgdGhpcy5hc3NlcnRpb25zKGNvbmZpZy5hc3NlcnRpb25zKTtcbiAgICB9XG4gICAgaWYgKGNvbmZpZy51bmlxdWVLZXkpIHtcbiAgICAgIHRoaXMudW5pcXVlS2V5KGNvbmZpZy51bmlxdWVLZXkpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIHR5cGUodHlwZTogVGFibGVUeXBlKSB7XG4gICAgdGhpcy5wcm90by50eXBlID0gdHlwZSBhcyBzdHJpbmc7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgcXVlcnkocXVlcnk6IENvbnRleHRhYmxlPElUYWJsZUNvbnRleHQsIHN0cmluZz4pIHtcbiAgICB0aGlzLmNvbnRleHRhYmxlUXVlcnkgPSBxdWVyeTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyB3aGVyZSh3aGVyZTogQ29udGV4dGFibGU8SVRhYmxlQ29udGV4dCwgc3RyaW5nPikge1xuICAgIHRoaXMuY29udGV4dGFibGVXaGVyZSA9IHdoZXJlO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIHByZU9wcyhwcmVzOiBDb250ZXh0YWJsZTxJVGFibGVDb250ZXh0LCBzdHJpbmcgfCBzdHJpbmdbXT4pIHtcbiAgICB0aGlzLmNvbnRleHRhYmxlUHJlT3BzLnB1c2gocHJlcyk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgcG9zdE9wcyhwb3N0czogQ29udGV4dGFibGU8SVRhYmxlQ29udGV4dCwgc3RyaW5nIHwgc3RyaW5nW10+KSB7XG4gICAgdGhpcy5jb250ZXh0YWJsZVBvc3RPcHMucHVzaChwb3N0cyk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgZGlzYWJsZWQoKSB7XG4gICAgdGhpcy5wcm90by5kaXNhYmxlZCA9IHRydWU7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgcHJvdGVjdGVkKCkge1xuICAgIHRoaXMucHJvdG8ucHJvdGVjdGVkID0gdHJ1ZTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyB1bmlxdWVLZXkodW5pcXVlS2V5OiBzdHJpbmdbXSkge1xuICAgIHRoaXMucHJvdG8udW5pcXVlS2V5ID0gdW5pcXVlS2V5O1xuICB9XG5cbiAgcHVibGljIHNxbGRhdGF3YXJlaG91c2Uoc3FsRGF0YVdhcmVob3VzZTogZGF0YWZvcm0uSVNRTERhdGFXYXJlaG91c2VPcHRpb25zKSB7XG4gICAgY2hlY2tFeGNlc3NQcm9wZXJ0aWVzKFxuICAgICAgc3FsRGF0YVdhcmVob3VzZSxcbiAgICAgIElTUUxEYXRhV2FyZWhvdXNlT3B0aW9uc1Byb3BlcnRpZXMoKSxcbiAgICAgIFwic3FsZGF0YXdhcmVob3VzZSBjb25maWdcIlxuICAgICk7XG4gICAgdGhpcy5wcm90by5zcWxEYXRhV2FyZWhvdXNlID0gZGF0YWZvcm0uU1FMRGF0YVdhcmVob3VzZU9wdGlvbnMuY3JlYXRlKHNxbERhdGFXYXJlaG91c2UpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIHJlZHNoaWZ0KHJlZHNoaWZ0OiBkYXRhZm9ybS5JUmVkc2hpZnRPcHRpb25zKSB7XG4gICAgY2hlY2tFeGNlc3NQcm9wZXJ0aWVzKHJlZHNoaWZ0LCBJUmVkc2hpZnRPcHRpb25zUHJvcGVydGllcygpLCBcInJlZHNoaWZ0IGNvbmZpZ1wiKTtcbiAgICB0aGlzLnByb3RvLnJlZHNoaWZ0ID0gZGF0YWZvcm0uUmVkc2hpZnRPcHRpb25zLmNyZWF0ZShyZWRzaGlmdCk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgYmlncXVlcnkoYmlncXVlcnk6IGRhdGFmb3JtLklCaWdRdWVyeU9wdGlvbnMpIHtcbiAgICBjaGVja0V4Y2Vzc1Byb3BlcnRpZXMoYmlncXVlcnksIElCaWdRdWVyeU9wdGlvbnNQcm9wZXJ0aWVzKCksIFwiYmlncXVlcnkgY29uZmlnXCIpO1xuICAgIHRoaXMucHJvdG8uYmlncXVlcnkgPSBkYXRhZm9ybS5CaWdRdWVyeU9wdGlvbnMuY3JlYXRlKGJpZ3F1ZXJ5KTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyBkZXBlbmRlbmNpZXModmFsdWU6IFJlc29sdmFibGUgfCBSZXNvbHZhYmxlW10pIHtcbiAgICBjb25zdCBuZXdEZXBlbmRlbmNpZXMgPSBBcnJheS5pc0FycmF5KHZhbHVlKSA/IHZhbHVlIDogW3ZhbHVlXTtcbiAgICBuZXdEZXBlbmRlbmNpZXMuZm9yRWFjaChyZXNvbHZhYmxlID0+IHtcbiAgICAgIHRoaXMucHJvdG8uZGVwZW5kZW5jeVRhcmdldHMucHVzaChyZXNvbHZhYmxlQXNUYXJnZXQocmVzb2x2YWJsZSkpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgdGFncyh2YWx1ZTogc3RyaW5nIHwgc3RyaW5nW10pIHtcbiAgICBjb25zdCBuZXdUYWdzID0gdHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiID8gW3ZhbHVlXSA6IHZhbHVlO1xuICAgIG5ld1RhZ3MuZm9yRWFjaCh0ID0+IHtcbiAgICAgIHRoaXMucHJvdG8udGFncy5wdXNoKHQpO1xuICAgIH0pO1xuICAgIGlmICghIXRoaXMudW5pcXVlS2V5QXNzZXJ0aW9uKSB7XG4gICAgICB0aGlzLnVuaXF1ZUtleUFzc2VydGlvbi50YWdzKHZhbHVlKTtcbiAgICB9XG4gICAgaWYgKCEhdGhpcy5tZXJnZWRSb3dDb25kaXRpb25zQXNzZXJ0aW9uKSB7XG4gICAgICB0aGlzLm1lcmdlZFJvd0NvbmRpdGlvbnNBc3NlcnRpb24udGFncyh2YWx1ZSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIGRlc2NyaXB0aW9uKGRlc2NyaXB0aW9uOiBzdHJpbmcpIHtcbiAgICBpZiAoIXRoaXMucHJvdG8uYWN0aW9uRGVzY3JpcHRvcikge1xuICAgICAgdGhpcy5wcm90by5hY3Rpb25EZXNjcmlwdG9yID0ge307XG4gICAgfVxuICAgIHRoaXMucHJvdG8uYWN0aW9uRGVzY3JpcHRvci5kZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIGNvbHVtbnMoY29sdW1uczogSUNvbHVtbnNEZXNjcmlwdG9yKSB7XG4gICAgaWYgKCF0aGlzLnByb3RvLmFjdGlvbkRlc2NyaXB0b3IpIHtcbiAgICAgIHRoaXMucHJvdG8uYWN0aW9uRGVzY3JpcHRvciA9IHt9O1xuICAgIH1cbiAgICB0aGlzLnByb3RvLmFjdGlvbkRlc2NyaXB0b3IuY29sdW1ucyA9IENvbHVtbkRlc2NyaXB0b3JzLm1hcFRvQ29sdW1uUHJvdG9BcnJheShjb2x1bW5zKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyBkYXRhYmFzZShkYXRhYmFzZTogc3RyaW5nKSB7XG4gICAgc2V0TmFtZUFuZFRhcmdldChcbiAgICAgIHRoaXMuc2Vzc2lvbixcbiAgICAgIHRoaXMucHJvdG8sXG4gICAgICB0aGlzLnByb3RvLnRhcmdldC5uYW1lLFxuICAgICAgdGhpcy5wcm90by50YXJnZXQuc2NoZW1hLFxuICAgICAgZGF0YWJhc2VcbiAgICApO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIHNjaGVtYShzY2hlbWE6IHN0cmluZykge1xuICAgIHNldE5hbWVBbmRUYXJnZXQoXG4gICAgICB0aGlzLnNlc3Npb24sXG4gICAgICB0aGlzLnByb3RvLFxuICAgICAgdGhpcy5wcm90by50YXJnZXQubmFtZSxcbiAgICAgIHNjaGVtYSxcbiAgICAgIHRoaXMucHJvdG8udGFyZ2V0LmRhdGFiYXNlXG4gICAgKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyBhc3NlcnRpb25zKHsgdW5pcXVlS2V5LCBub25OdWxsLCByb3dDb25kaXRpb25zIH06IElUYWJsZUFzc2VydGlvbnMpIHtcbiAgICBpZiAoISF1bmlxdWVLZXkpIHtcbiAgICAgIGNvbnN0IGluZGV4Q29scyA9IHR5cGVvZiB1bmlxdWVLZXkgPT09IFwic3RyaW5nXCIgPyBbdW5pcXVlS2V5XSA6IHVuaXF1ZUtleTtcbiAgICAgIHRoaXMudW5pcXVlS2V5QXNzZXJ0aW9uID0gdGhpcy5zZXNzaW9uXG4gICAgICAgIC5hc3NlcnQoYCR7dGhpcy5wcm90by50YXJnZXQubmFtZX1fYXNzZXJ0aW9uc191bmlxdWVLZXlgLCBjdHggPT5cbiAgICAgICAgICB0aGlzLnNlc3Npb24uYWRhcHRlcigpLmluZGV4QXNzZXJ0aW9uKGN0eC5yZWYodGhpcy5wcm90by50YXJnZXQpLCBpbmRleENvbHMpXG4gICAgICAgIClcbiAgICAgICAgLnRhZ3ModGhpcy5wcm90by50YWdzKTtcbiAgICB9XG4gICAgY29uc3QgbWVyZ2VkUm93Q29uZGl0aW9ucyA9IHJvd0NvbmRpdGlvbnMgfHwgW107XG4gICAgaWYgKCEhbm9uTnVsbCkge1xuICAgICAgY29uc3Qgbm9uTnVsbENvbHMgPSB0eXBlb2Ygbm9uTnVsbCA9PT0gXCJzdHJpbmdcIiA/IFtub25OdWxsXSA6IG5vbk51bGw7XG4gICAgICBub25OdWxsQ29scy5mb3JFYWNoKG5vbk51bGxDb2wgPT4gbWVyZ2VkUm93Q29uZGl0aW9ucy5wdXNoKGAke25vbk51bGxDb2x9IElTIE5PVCBOVUxMYCkpO1xuICAgIH1cbiAgICBpZiAoISFtZXJnZWRSb3dDb25kaXRpb25zICYmIG1lcmdlZFJvd0NvbmRpdGlvbnMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5tZXJnZWRSb3dDb25kaXRpb25zQXNzZXJ0aW9uID0gdGhpcy5zZXNzaW9uXG4gICAgICAgIC5hc3NlcnQoYCR7dGhpcy5wcm90by50YXJnZXQubmFtZX1fYXNzZXJ0aW9uc19yb3dDb25kaXRpb25zYCwgY3R4ID0+XG4gICAgICAgICAgdGhpcy5zZXNzaW9uXG4gICAgICAgICAgICAuYWRhcHRlcigpXG4gICAgICAgICAgICAucm93Q29uZGl0aW9uc0Fzc2VydGlvbihjdHgucmVmKHRoaXMucHJvdG8udGFyZ2V0KSwgbWVyZ2VkUm93Q29uZGl0aW9ucylcbiAgICAgICAgKVxuICAgICAgICAudGFncyh0aGlzLnByb3RvLnRhZ3MpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyBjb21waWxlKCkge1xuICAgIGNvbnN0IGNvbnRleHQgPSBuZXcgVGFibGVDb250ZXh0KHRoaXMpO1xuICAgIGNvbnN0IGluY3JlbWVudGFsQ29udGV4dCA9IG5ldyBUYWJsZUNvbnRleHQodGhpcywgdHJ1ZSk7XG5cbiAgICB0aGlzLnByb3RvLnF1ZXJ5ID0gY29udGV4dC5hcHBseSh0aGlzLmNvbnRleHRhYmxlUXVlcnkpO1xuXG4gICAgaWYgKHRoaXMucHJvdG8udHlwZSA9PT0gXCJpbmNyZW1lbnRhbFwiKSB7XG4gICAgICB0aGlzLnByb3RvLmluY3JlbWVudGFsUXVlcnkgPSBpbmNyZW1lbnRhbENvbnRleHQuYXBwbHkodGhpcy5jb250ZXh0YWJsZVF1ZXJ5KTtcblxuICAgICAgdGhpcy5wcm90by5pbmNyZW1lbnRhbFByZU9wcyA9IHRoaXMuY29udGV4dGlmeU9wcyh0aGlzLmNvbnRleHRhYmxlUHJlT3BzLCBpbmNyZW1lbnRhbENvbnRleHQpO1xuICAgICAgdGhpcy5wcm90by5pbmNyZW1lbnRhbFBvc3RPcHMgPSB0aGlzLmNvbnRleHRpZnlPcHMoXG4gICAgICAgIHRoaXMuY29udGV4dGFibGVQb3N0T3BzLFxuICAgICAgICBpbmNyZW1lbnRhbENvbnRleHRcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuY29udGV4dGFibGVXaGVyZSkge1xuICAgICAgdGhpcy5wcm90by53aGVyZSA9IGNvbnRleHQuYXBwbHkodGhpcy5jb250ZXh0YWJsZVdoZXJlKTtcbiAgICB9XG5cbiAgICB0aGlzLnByb3RvLnByZU9wcyA9IHRoaXMuY29udGV4dGlmeU9wcyh0aGlzLmNvbnRleHRhYmxlUHJlT3BzLCBjb250ZXh0KTtcbiAgICB0aGlzLnByb3RvLnBvc3RPcHMgPSB0aGlzLmNvbnRleHRpZnlPcHModGhpcy5jb250ZXh0YWJsZVBvc3RPcHMsIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIHRoaXMucHJvdG87XG4gIH1cblxuICBwcml2YXRlIGNvbnRleHRpZnlPcHMoXG4gICAgY29udGV4dGFibGVPcHM6IEFycmF5PENvbnRleHRhYmxlPElUYWJsZUNvbnRleHQsIHN0cmluZyB8IHN0cmluZ1tdPj4sXG4gICAgY3VycmVudENvbnRleHQ6IFRhYmxlQ29udGV4dFxuICApIHtcbiAgICBsZXQgcHJvdG9PcHM6IHN0cmluZ1tdID0gW107XG4gICAgY29udGV4dGFibGVPcHMuZm9yRWFjaChjb250ZXh0YWJsZU9wID0+IHtcbiAgICAgIGNvbnN0IGFwcGxpZWRPcHMgPSBjdXJyZW50Q29udGV4dC5hcHBseShjb250ZXh0YWJsZU9wKTtcbiAgICAgIHByb3RvT3BzID0gcHJvdG9PcHMuY29uY2F0KHR5cGVvZiBhcHBsaWVkT3BzID09PSBcInN0cmluZ1wiID8gW2FwcGxpZWRPcHNdIDogYXBwbGllZE9wcyk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHByb3RvT3BzO1xuICB9XG59XG5cbi8qKlxuICogQGhpZGRlblxuICovXG5leHBvcnQgY2xhc3MgVGFibGVDb250ZXh0IGltcGxlbWVudHMgSVRhYmxlQ29udGV4dCB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgdGFibGU6IFRhYmxlLCBwcml2YXRlIGlzSW5jcmVtZW50YWwgPSBmYWxzZSkge31cblxuICBwdWJsaWMgY29uZmlnKGNvbmZpZzogSVRhYmxlQ29uZmlnKSB7XG4gICAgdGhpcy50YWJsZS5jb25maWcoY29uZmlnKTtcbiAgICByZXR1cm4gXCJcIjtcbiAgfVxuXG4gIHB1YmxpYyBzZWxmKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucmVzb2x2ZSh0aGlzLnRhYmxlLnByb3RvLnRhcmdldCk7XG4gIH1cblxuICBwdWJsaWMgbmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnRhYmxlLnByb3RvLnRhcmdldC5uYW1lO1xuICB9XG5cbiAgcHVibGljIHJlZihyZWY6IFJlc29sdmFibGUgfCBzdHJpbmdbXSwgLi4ucmVzdDogc3RyaW5nW10pOiBzdHJpbmcge1xuICAgIHJlZiA9IHRvUmVzb2x2YWJsZShyZWYsIHJlc3QpO1xuICAgIGlmICghcmVzb2x2YWJsZUFzVGFyZ2V0KHJlZikpIHtcbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSBgQWN0aW9uIG5hbWUgaXMgbm90IHNwZWNpZmllZGA7XG4gICAgICB0aGlzLnRhYmxlLnNlc3Npb24uY29tcGlsZUVycm9yKG5ldyBFcnJvcihtZXNzYWdlKSk7XG4gICAgICByZXR1cm4gXCJcIjtcbiAgICB9XG4gICAgdGhpcy50YWJsZS5kZXBlbmRlbmNpZXMocmVmKTtcbiAgICByZXR1cm4gdGhpcy5yZXNvbHZlKHJlZik7XG4gIH1cblxuICBwdWJsaWMgcmVzb2x2ZShyZWY6IFJlc29sdmFibGUgfCBzdHJpbmdbXSwgLi4ucmVzdDogc3RyaW5nW10pIHtcbiAgICByZXR1cm4gdGhpcy50YWJsZS5zZXNzaW9uLnJlc29sdmUodG9SZXNvbHZhYmxlKHJlZiwgcmVzdCkpO1xuICB9XG5cbiAgcHVibGljIHR5cGUodHlwZTogVGFibGVUeXBlKSB7XG4gICAgdGhpcy50YWJsZS50eXBlKHR5cGUpO1xuICAgIHJldHVybiBcIlwiO1xuICB9XG5cbiAgcHVibGljIHdoZXJlKHdoZXJlOiBDb250ZXh0YWJsZTxJVGFibGVDb250ZXh0LCBzdHJpbmc+KSB7XG4gICAgdGhpcy50YWJsZS53aGVyZSh3aGVyZSk7XG4gICAgcmV0dXJuIFwiXCI7XG4gIH1cblxuICBwdWJsaWMgd2hlbihjb25kOiBib29sZWFuLCB0cnVlQ2FzZTogc3RyaW5nLCBmYWxzZUNhc2U6IHN0cmluZyA9IFwiXCIpIHtcbiAgICByZXR1cm4gY29uZCA/IHRydWVDYXNlIDogZmFsc2VDYXNlO1xuICB9XG5cbiAgcHVibGljIGluY3JlbWVudGFsKCkge1xuICAgIHJldHVybiAhIXRoaXMuaXNJbmNyZW1lbnRhbDtcbiAgfVxuXG4gIHB1YmxpYyBwcmVPcHMoc3RhdGVtZW50OiBDb250ZXh0YWJsZTxJVGFibGVDb250ZXh0LCBzdHJpbmcgfCBzdHJpbmdbXT4pIHtcbiAgICB0aGlzLnRhYmxlLnByZU9wcyhzdGF0ZW1lbnQpO1xuICAgIHJldHVybiBcIlwiO1xuICB9XG5cbiAgcHVibGljIHBvc3RPcHMoc3RhdGVtZW50OiBDb250ZXh0YWJsZTxJVGFibGVDb250ZXh0LCBzdHJpbmcgfCBzdHJpbmdbXT4pIHtcbiAgICB0aGlzLnRhYmxlLnBvc3RPcHMoc3RhdGVtZW50KTtcbiAgICByZXR1cm4gXCJcIjtcbiAgfVxuXG4gIHB1YmxpYyBkaXNhYmxlZCgpIHtcbiAgICB0aGlzLnRhYmxlLmRpc2FibGVkKCk7XG4gICAgcmV0dXJuIFwiXCI7XG4gIH1cblxuICBwdWJsaWMgcmVkc2hpZnQocmVkc2hpZnQ6IGRhdGFmb3JtLklSZWRzaGlmdE9wdGlvbnMpIHtcbiAgICB0aGlzLnRhYmxlLnJlZHNoaWZ0KHJlZHNoaWZ0KTtcbiAgICByZXR1cm4gXCJcIjtcbiAgfVxuXG4gIHB1YmxpYyBiaWdxdWVyeShiaWdxdWVyeTogZGF0YWZvcm0uSUJpZ1F1ZXJ5T3B0aW9ucykge1xuICAgIHRoaXMudGFibGUuYmlncXVlcnkoYmlncXVlcnkpO1xuICAgIHJldHVybiBcIlwiO1xuICB9XG5cbiAgcHVibGljIGRlcGVuZGVuY2llcyhyZXM6IFJlc29sdmFibGUpIHtcbiAgICB0aGlzLnRhYmxlLmRlcGVuZGVuY2llcyhyZXMpO1xuICAgIHJldHVybiBcIlwiO1xuICB9XG5cbiAgcHVibGljIGFwcGx5PFQ+KHZhbHVlOiBDb250ZXh0YWJsZTxJVGFibGVDb250ZXh0LCBUPik6IFQge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgcmV0dXJuICh2YWx1ZSBhcyBhbnkpKHRoaXMpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHRhZ3ModGFnczogc3RyaW5nW10pIHtcbiAgICB0aGlzLnRhYmxlLnRhZ3ModGFncyk7XG4gICAgcmV0dXJuIFwiXCI7XG4gIH1cbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9jb3JlL3RhYmxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0lBQ0EsMEVBQXNFO0lBV3RFLGdEQU04QjtJQUM5Qiw2Q0FBNEM7SUFLL0IsUUFBQSxTQUFTLEdBQUcsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLGFBQWEsRUFBRSxRQUFRLENBQVUsQ0FBQztJQWVoRSxRQUFBLGFBQWEsR0FBRyxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFVLENBQUM7SUFXaEQsUUFBQSxhQUFhLEdBQUcsQ0FBQyxVQUFVLEVBQUUsYUFBYSxDQUFVLENBQUM7SUFrRHJELFFBQUEsMEJBQTBCLEdBQUcsR0FBRyxFQUFFLENBQzdDLG9CQUFZLEVBQW9CLENBQUMsQ0FBQyxTQUFTLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztJQWFqRixRQUFBLGtDQUFrQyxHQUFHLEdBQUcsRUFBRSxDQUNyRCxvQkFBWSxFQUE0QixDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQztJQTRCaEQsUUFBQSwwQkFBMEIsR0FBRyxHQUFHLEVBQUUsQ0FDN0Msb0JBQVksRUFBb0IsQ0FBQyxDQUFDLGFBQWEsRUFBRSxXQUFXLEVBQUUsdUJBQXVCLENBQUMsQ0FBQyxDQUFDO0lBbUY3RSxRQUFBLHNCQUFzQixHQUFHLEdBQUcsRUFBRSxDQUN6QyxvQkFBWSxFQUFnQixDQUFDO1FBQzNCLE1BQU07UUFDTixVQUFVO1FBQ1YsV0FBVztRQUNYLE1BQU07UUFDTixVQUFVO1FBQ1YsVUFBVTtRQUNWLGtCQUFrQjtRQUNsQixNQUFNO1FBQ04sV0FBVztRQUNYLGNBQWM7UUFDZCxVQUFVO1FBQ1YsUUFBUTtRQUNSLFlBQVk7UUFDWixVQUFVO1FBQ1YsU0FBUztRQUNULGFBQWE7S0FDZCxDQUFDLENBQUM7SUFzQkwsTUFBYSxLQUFL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SyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUM3QixPQUFPLEVBQUUsQ0FBQztRQUNaLENBQUM7UUFFTSxPQUFPLENBQUMsU0FBd0Q7WUFDckUsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDOUIsT0FBTyxFQUFFLENBQUM7UUFDWixDQUFDO1FBRU0sUUFBUTtZQUNiLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDdEIsT0FBTyxFQUFFLENBQUM7UUFDWixDQUFDO1FBRU0sUUFBUSxDQUFDLFFBQW1DO1lBQ2pELElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzlCLE9BQU8sRUFBRSxDQUFDO1FBQ1osQ0FBQztRQUVNLFFBQVEsQ0FBQyxRQUFtQztZQUNqRCxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUM5QixPQUFPLEVBQUUsQ0FBQztRQUNaLENBQUM7UUFFTSxZQUFZLENBQUMsR0FBZTtZQUNqQyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUM3QixPQUFPLEVBQUUsQ0FBQztRQUNaLENBQUM7UUFFTSxLQUFLLENBQUksS0FBb0M7WUFDbEQsSUFBSSxPQUFPLEtBQUssS0FBSyxVQUFVLEVBQUU7Z0JBQy9CLE9BQVEsS0FBYSxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQzdCO2lCQUFNO2dCQUNMLE9BQU8sS0FBSyxDQUFDO2FBQ2Q7UUFDSCxDQUFDO1FBRU0sSUFBSSxDQUFDLElBQWM7WUFDeEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDdEIsT0FBTyxFQUFFLENBQUM7UUFDWixDQUFDO0tBQ0Y7SUEzRkQsb0NBMkZDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXNzZXJ0aW9uIH0gZnJvbSBcIkBkYXRhZm9ybS9jb3JlL2Fzc2VydGlvblwiO1xuaW1wb3J0IHsgQ29sdW1uRGVzY3JpcHRvcnMgfSBmcm9tIFwiQGRhdGFmb3JtL2NvcmUvY29sdW1uX2Rlc2NyaXB0b3JzXCI7XG5pbXBvcnQge1xuICBDb250ZXh0YWJsZSxcbiAgSUNvbHVtbnNEZXNjcmlwdG9yLFxuICBJQ29tbW9uQ29udGV4dCxcbiAgSURlcGVuZGVuY2llc0NvbmZpZyxcbiAgSURvY3VtZW50YWJsZUNvbmZpZyxcbiAgSVRhcmdldGFibGVDb25maWcsXG4gIFJlc29sdmFibGVcbn0gZnJvbSBcIkBkYXRhZm9ybS9jb3JlL2NvbW1vblwiO1xuaW1wb3J0IHsgU2Vzc2lvbiB9IGZyb20gXCJAZGF0YWZvcm0vY29yZS9zZXNzaW9uXCI7XG5pbXBvcnQge1xuICBjaGVja0V4Y2Vzc1Byb3BlcnRpZXMsXG4gIHJlc29sdmFibGVBc1RhcmdldCxcbiAgc2V0TmFtZUFuZFRhcmdldCxcbiAgc3RyaWN0S2V5c09mLFxuICB0b1Jlc29sdmFibGVcbn0gZnJvbSBcIkBkYXRhZm9ybS9jb3JlL3V0aWxzXCI7XG5pbXBvcnQgeyBkYXRhZm9ybSB9IGZyb20gXCJAZGF0YWZvcm0vcHJvdG9zXCI7XG5cbi8qKlxuICogQGhpZGRlblxuICovXG5leHBvcnQgY29uc3QgVGFibGVUeXBlID0gW1widGFibGVcIiwgXCJ2aWV3XCIsIFwiaW5jcmVtZW50YWxcIiwgXCJpbmxpbmVcIl0gYXMgY29uc3Q7XG4vKipcbiAqIFN1cHBvcnRlZCB0eXBlcyBvZiB0YWJsZSBhY3Rpb25zLlxuICpcbiAqIFRhYmxlcyBvZiB0eXBlIGB2aWV3YCB3aWxsIGJlIGNyZWF0ZWQgYXMgdmlld3MuXG4gKlxuICogVGFibGVzIG9mIHR5cGUgYHRhYmxlYCB3aWxsIGJlIGNyZWF0ZWQgYXMgdGFibGVzLlxuICpcbiAqIFRhYmxlcyBvZiB0eXBlIGBpbmNyZW1lbnRhbGAgbXVzdCBoYXZlIGEgd2hlcmUgY2xhdXNlIHByb3ZpZGVkLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIHRoZSBbaW5jcmVtZW50YWwgdGFibGVzIGd1aWRlXShndWlkZXMvaW5jcmVtZW50YWwtZGF0YXNldHMpLlxuICovXG5leHBvcnQgdHlwZSBUYWJsZVR5cGUgPSB0eXBlb2YgVGFibGVUeXBlW251bWJlcl07XG5cbi8qKlxuICogQGhpZGRlblxuICovXG5leHBvcnQgY29uc3QgRGlzdFN0eWxlVHlwZSA9IFtcImV2ZW5cIiwgXCJrZXlcIiwgXCJhbGxcIl0gYXMgY29uc3Q7XG4vKipcbiAqIFZhbGlkIHR5cGVzIGZvciBzZXR0aW5nIHRoZSBkaXN0cmlidXRpb24gc3R5bGUgZm9yIFJlZHNoaWZ0IHRhYmxlcy5cbiAqXG4gKiBWaWV3IHRoZSBbUmVkc2hpZnQgZG9jdW1lbnRhdGlvbl0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL3JlZHNoaWZ0L2xhdGVzdC9kZy9yX0NSRUFURV9UQUJMRV9leGFtcGxlcy5odG1sI3JfQ1JFQVRFX1RBQkxFX05FVy1kaXN0c3R5bGUtZGlzdGtleS1hbmQtc29ydGtleS1vcHRpb25zKSBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiAqL1xuZXhwb3J0IHR5cGUgRGlzdFN0eWxlVHlwZSA9IHR5cGVvZiBEaXN0U3R5bGVUeXBlW251bWJlcl07XG5cbi8qKlxuICogQGhpZGRlblxuICovXG5leHBvcnQgY29uc3QgU29ydFN0eWxlVHlwZSA9IFtcImNvbXBvdW5kXCIsIFwiaW50ZXJsZWF2ZWRcIl0gYXMgY29uc3Q7XG4vKipcbiAqIFZhbGlkIHR5cGVzIGZvciBzZXR0aW5nIHRoZSBzb3J0IHN0eWxlIGZvciBSZWRzaGlmdCB0YWJsZXMuXG4gKlxuICogVmlldyB0aGUgW1JlZHNoaWZ0IGRvY3VtZW50YXRpb25dKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9yZWRzaGlmdC9sYXRlc3QvZGcvcl9DUkVBVEVfVEFCTEVfZXhhbXBsZXMuaHRtbCNyX0NSRUFURV9UQUJMRV9ORVctZGlzdHN0eWxlLWRpc3RrZXktYW5kLXNvcnRrZXktb3B0aW9ucykgZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4gKi9cbmV4cG9ydCB0eXBlIFNvcnRTdHlsZVR5cGUgPSB0eXBlb2YgU29ydFN0eWxlVHlwZVtudW1iZXJdO1xuXG4vKipcbiAqIFJlZHNoaWZ0IHNwZWNpZmljIHdhcmVob3VzZSBvcHRpb25zLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElSZWRzaGlmdE9wdGlvbnMge1xuICAvKipcbiAgICogU2V0cyB0aGUgRElTVEtFWSBwcm9wZXJ0eSB3aGVuIGNyZWF0aW5nIHRhYmxlcy5cbiAgICpcbiAgICogRm9yIG1vcmUgaW5mb3JtYXRpb24sIHJlYWQgdGhlIFtSZWRzaGlmdCBjcmVhdGUgdGFibGUgZG9jc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL3JlZHNoaWZ0L2xhdGVzdC9kZy9yX0NSRUFURV9UQUJMRV9leGFtcGxlcy5odG1sI3JfQ1JFQVRFX1RBQkxFX05FVy1kaXN0c3R5bGUtZGlzdGtleS1hbmQtc29ydGtleS1vcHRpb25zKS5cbiAgICovXG4gIGRpc3RLZXk/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgRElTVFNUWUxFIHByb3BlcnR5IHdoZW4gY3JlYXRpbmcgdGFibGVzLlxuICAgKlxuICAgKiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgcmVhZCB0aGUgW1JlZHNoaWZ0IGNyZWF0ZSB0YWJsZSBkb2NzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vcmVkc2hpZnQvbGF0ZXN0L2RnL3JfQ1JFQVRFX1RBQkxFX2V4YW1wbGVzLmh0bWwjcl9DUkVBVEVfVEFCTEVfTkVXLWRpc3RzdHlsZS1kaXN0a2V5LWFuZC1zb3J0a2V5LW9wdGlvbnMpLlxuICAgKi9cbiAgZGlzdFN0eWxlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBIGxpc3Qgb2Ygc3RyaW5nIHZhbHVlcyB0aGF0IHdpbGwgY29uZmlndXJlIHRoZSBTT1JUS0VZIHByb3BlcnR5IHdoZW4gY3JlYXRpbmcgdGFibGVzLlxuICAgKlxuICAgKiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgcmVhZCB0aGUgW1JlZHNoaWZ0IGNyZWF0ZSB0YWJsZSBkb2NzXShodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vcmVkc2hpZnQvbGF0ZXN0L2RnL3JfQ1JFQVRFX1RBQkxFX2V4YW1wbGVzLmh0bWwjcl9DUkVBVEVfVEFCTEVfTkVXLWRpc3RzdHlsZS1kaXN0a2V5LWFuZC1zb3J0a2V5LW9wdGlvbnMpLlxuICAgKi9cbiAgc29ydEtleXM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogU2V0cyB0aGUgc3R5bGUgb2YgdGhlIHNvcnQga2V5IHdoZW4gdXNpbmcgc29ydCBrZXlzLlxuICAgKlxuICAgKiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgcmVhZCB0aGUgW1JlZHNoaWZ0IHNvcnQgc3R5bGUgYXJ0aWNsZV0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL3JlZHNoaWZ0L2xhdGVzdC9kZy90X1NvcnRpbmdfZGF0YS1jb21wYXJlLXNvcnQtc3R5bGVzLmh0bWwpLlxuICAgKi9cbiAgc29ydFN0eWxlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBCeSBkZWZhdWx0LCB2aWV3cyBhcmUgY3JlYXRlZCBhcyBsYXRlIGJpbmRpbmcgdmlld3MuXG4gICAqXG4gICAqIFdoZW4gdGhpcyBpcyBzZXQgdG8gdHJ1ZSwgdmlld3Mgd2lsbCBub3QgYmUgY3JlYXRlZCBhcyBsYXRlIGJpbmRpbmcgdmlld3MsIGFuZCB0aGUgYFdJVEggU0NIRU1BIEJJTkRJTkdgIHN1ZmZpeCBpcyBvbWl0dGVkLlxuICAgKlxuICAgKiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgcmVhZCB0aGUgW1JlZHNoaWZ0IGNyZWF0ZSB2aWV3IGRvY3NdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9yZWRzaGlmdC9sYXRlc3QvZGcvcl9DUkVBVEVfVklFVy5odG1sKS5cbiAgICovXG4gIGJpbmQ/OiBib29sZWFuO1xufVxuXG5leHBvcnQgY29uc3QgSVJlZHNoaWZ0T3B0aW9uc1Byb3BlcnRpZXMgPSAoKSA9PlxuICBzdHJpY3RLZXlzT2Y8SVJlZHNoaWZ0T3B0aW9ucz4oKShbXCJkaXN0S2V5XCIsIFwiZGlzdFN0eWxlXCIsIFwic29ydEtleXNcIiwgXCJzb3J0U3R5bGVcIiwgXCJiaW5kXCJdKTtcblxuLyoqXG4gKiBPcHRpb25zIGZvciBjcmVhdGluZyB0YWJsZXMgd2l0aGluIEF6dXJlIFNRTCBEYXRhIFdhcmVob3VzZSBwcm9qZWN0cy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJU1FMRGF0YVdhcmVob3VzZU9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIGRpc3RyaWJ1dGlvbiBvcHRpb24gdmFsdWUuXG4gICAqXG4gICAqIEZvciBtb3JlIGluZm9ybWF0aW9uLCByZWFkIHRoZSBbQXp1cmUgQ1RBUyBkb2NzXShodHRwczovL2RvY3MubWljcm9zb2Z0LmNvbS9lbi1nYi9zcWwvdC1zcWwvc3RhdGVtZW50cy9jcmVhdGUtdGFibGUtYXMtc2VsZWN0LWF6dXJlLXNxbC1kYXRhLXdhcmVob3VzZT92aWV3PWFwcy1wZHctMjAxNi1hdTcjZXhhbXBsZXMtZm9yLXRhYmxlLWRpc3RyaWJ1dGlvbikuXG4gICAqL1xuICBkaXN0cmlidXRpb24/OiBzdHJpbmc7XG59XG5leHBvcnQgY29uc3QgSVNRTERhdGFXYXJlaG91c2VPcHRpb25zUHJvcGVydGllcyA9ICgpID0+XG4gIHN0cmljdEtleXNPZjxJU1FMRGF0YVdhcmVob3VzZU9wdGlvbnM+KCkoW1wiZGlzdHJpYnV0aW9uXCJdKTtcblxuLyoqXG4gKiBPcHRpb25zIGZvciBjcmVhdGluZyB0YWJsZXMgd2l0aGluIEJpZ1F1ZXJ5IHByb2plY3RzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElCaWdRdWVyeU9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIGtleSB3aXRoIHdoaWNoIHRvIHBhcnRpdGlvbiB0aGUgdGFibGUuIFR5cGljYWxseSB0aGUgbmFtZSBvZiBhIHRpbWVzdGFtcCBvciBkYXRlIGNvbHVtbi5cbiAgICpcbiAgICogRm9yIG1vcmUgaW5mb3JtYXRpb24sIHJlYWQgdGhlIFtCaWdRdWVyeSBwYXJ0aXRpb25lZCB0YWJsZXMgZG9jc10oaHR0cHM6Ly9jbG91ZC5nb29nbGUuY29tL2JpZ3F1ZXJ5L2RvY3MvcGFydGl0aW9uZWQtdGFibGVzKS5cbiAgICovXG4gIHBhcnRpdGlvbkJ5Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUga2V5cyBieSB3aGljaCB0byBjbHVzdGVyIHBhcnRpdGlvbnMgYnkuXG4gICAqXG4gICAqIEZvciBtb3JlIGluZm9ybWF0aW9uLCByZWFkIHRoZSBbQmlnUXVlcnkgY2x1c3RlcmVkIHRhYmxlcyBkb2NzXShodHRwczovL2Nsb3VkLmdvb2dsZS5jb20vYmlncXVlcnkvZG9jcy9jbHVzdGVyZWQtdGFibGVzKS5cbiAgICovXG4gIGNsdXN0ZXJCeT86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBTUUwgYmFzZWQgZmlsdGVyIGZvciB3aGVuIGluY3JlbWVudGFsIHVwZGF0ZXMgYXJlIGFwcGxpZWQuXG4gICAqXG4gICAqIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgb3VyIFtpbmNyZW1lbnRhbCBkYXRhc2V0IGRvY3NdKGh0dHBzOi8vZG9jcy5kYXRhZm9ybS5jby9ndWlkZXMvaW5jcmVtZW50YWwtZGF0YXNldHMpLlxuICAgKi9cbiAgdXBkYXRlUGFydGl0aW9uRmlsdGVyPzogc3RyaW5nO1xufVxuXG5leHBvcnQgY29uc3QgSUJpZ1F1ZXJ5T3B0aW9uc1Byb3BlcnRpZXMgPSAoKSA9PlxuICBzdHJpY3RLZXlzT2Y8SUJpZ1F1ZXJ5T3B0aW9ucz4oKShbXCJwYXJ0aXRpb25CeVwiLCBcImNsdXN0ZXJCeVwiLCBcInVwZGF0ZVBhcnRpdGlvbkZpbHRlclwiXSk7XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgY3JlYXRpbmcgYXNzZXJ0aW9ucyBhcyBwYXJ0IG9mIGEgZGF0YXNldCBkZWZpbml0aW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElUYWJsZUFzc2VydGlvbnMge1xuICAvKipcbiAgICogQ29sdW1uKHMpIHdoaWNoIGNvbnN0aXR1dGUgdGhlIGRhdGFzZXQncyB1bmlxdWUga2V5IGluZGV4LlxuICAgKlxuICAgKiBJZiBzZXQsIHRoZSByZXN1bHRpbmcgYXNzZXJ0aW9uIHdpbGwgZmFpbCBpZiB0aGVyZSBpcyBtb3JlIHRoYW4gb25lIHJvdyBpbiB0aGUgZGF0YXNldCB3aXRoIHRoZSBzYW1lIHZhbHVlcyBmb3IgYWxsIG9mIHRoZXNlIGNvbHVtbihzKS5cbiAgICovXG4gIHVuaXF1ZUtleT86IHN0cmluZyB8IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBDb2x1bW4ocykgd2hpY2ggbWF5IG5ldmVyIGJlIGBOVUxMYC5cbiAgICpcbiAgICogSWYgc2V0LCB0aGUgcmVzdWx0aW5nIGFzc2VydGlvbiB3aWxsIGZhaWwgaWYgYW55IHJvdyBjb250YWlucyBgTlVMTGAgdmFsdWVzIGZvciB0aGVzZSBjb2x1bW4ocykuXG4gICAqL1xuICBub25OdWxsPzogc3RyaW5nIHwgc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIEdlbmVyYWwgY29uZGl0aW9uKHMpIHdoaWNoIHNob3VsZCBob2xkIHRydWUgZm9yIGFsbCByb3dzIGluIHRoZSBkYXRhc2V0LlxuICAgKlxuICAgKiBJZiBzZXQsIHRoZSByZXN1bHRpbmcgYXNzZXJ0aW9uIHdpbGwgZmFpbCBpZiBhbnkgcm93IHZpb2xhdGVzIGFueSBvZiB0aGVzZSBjb25kaXRpb24ocykuXG4gICAqL1xuICByb3dDb25kaXRpb25zPzogc3RyaW5nW107XG59XG5cbi8qKlxuICogQ29uZmlndXJhdGlvbiBvcHRpb25zIGZvciBgZGF0YXNldGAgYWN0aW9ucywgaW5jbHVkaW5nIGB0YWJsZWAsIGB2aWV3YCBhbmQgYGluY3JlbWVudGFsYCBhY3Rpb24gdHlwZXMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSVRhYmxlQ29uZmlnIGV4dGVuZHMgSVRhcmdldGFibGVDb25maWcsIElEb2N1bWVudGFibGVDb25maWcsIElEZXBlbmRlbmNpZXNDb25maWcge1xuICAvKipcbiAgICogVGhlIHR5cGUgb2YgdGhlIGRhdGFzZXQuIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGhvdyB0aGlzIHNldHRpbmcgd29ya3MsIGNoZWNrIG91dCBzb21lIG9mIHRoZSBbZ3VpZGVzXShndWlkZXMpXG4gICAqIG9uIHB1Ymxpc2hpbmcgZGlmZmVyZW50IHR5cGVzIG9mIGRhdGFzZXRzIHdpdGggRGF0YWZvcm0uXG4gICAqL1xuICB0eXBlPzogVGFibGVUeXBlO1xuXG4gIC8qKlxuICAgKiBJZiBzZXQgdG8gdHJ1ZSwgdGhpcyBhY3Rpb24gd2lsbCBub3QgYmUgZXhlY3V0ZWQuIEhvd2V2ZXIsIHRoZSBhY3Rpb24gbWF5IHN0aWxsIGJlIGRlcGVuZGVkIHVwb24uXG4gICAqIFVzZWZ1bCBmb3IgdGVtcG9yYXJpbHkgdHVybmluZyBvZmYgYnJva2VuIGFjdGlvbnMuXG4gICAqL1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIE9ubHkgYWxsb3dlZCB3aGVuIHRoZSB0YWJsZSB0eXBlIGlzIGBpbmNyZW1lbnRhbGAuXG4gICAqXG4gICAqIElmIHNldCB0byB0cnVlLCBydW5uaW5nIHRoaXMgYWN0aW9uIHdpbGwgaWdub3JlIHRoZSBmdWxsLXJlZnJlc2ggb3B0aW9uLlxuICAgKiBUaGlzIGlzIHVzZWZ1bCBmb3IgdGFibGVzIHdoaWNoIGFyZSBidWlsdCBmcm9tIHRyYW5zaWVudCBkYXRhLCB0byBlbnN1cmUgdGhhdCBoaXN0b3JpY2FsIGRhdGEgaXMgbmV2ZXIgbG9zdC5cbiAgICovXG4gIHByb3RlY3RlZD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFJlZHNoaWZ0LXNwZWNpZmljIHdhcmVob3VzZSBvcHRpb25zLlxuICAgKi9cbiAgcmVkc2hpZnQ/OiBJUmVkc2hpZnRPcHRpb25zO1xuXG4gIC8qKlxuICAgKiBCaWdRdWVyeS1zcGVjaWZpYyB3YXJlaG91c2Ugb3B0aW9ucy5cbiAgICovXG4gIGJpZ3F1ZXJ5PzogSUJpZ1F1ZXJ5T3B0aW9ucztcblxuICAvKipcbiAgICogQXp1cmUgU1FMIERhdGEgV2FyZWhvdXNlLXNwZWNpZmljIG9wdGlvbnMuXG4gICAqL1xuICBzcWxkYXRhd2FyZWhvdXNlPzogSVNRTERhdGFXYXJlaG91c2VPcHRpb25zO1xuXG4gIC8qKlxuICAgKiBBc3NlcnRpb25zIHRvIGJlIHJ1biBvbiB0aGUgZGF0YXNldC5cbiAgICpcbiAgICogSWYgY29uZmlndXJlZCwgcmVsZXZhbnQgYXNzZXJ0aW9ucyB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgY3JlYXRlZCBhbmQgcnVuIGFzIGEgZGVwZW5kZW5jeSBvZiB0aGlzIGRhdGFzZXQuXG4gICAqL1xuICBhc3NlcnRpb25zPzogSVRhYmxlQXNzZXJ0aW9ucztcblxuICAvKipcbiAgICogVW5pcXVlIGtleXMgZm9yIG1lcmdlIGNyaXRlcmlhIGZvciBpbmNyZW1lbnRhbCB0YWJsZXMuXG4gICAqXG4gICAqIElmIGNvbmZpZ3VyZWQsIHJlY29yZHMgd2l0aCBtYXRjaGluZyB1bmlxdWUga2V5KHMpIHdpbGwgYmUgdXBkYXRlZCwgcmF0aGVyIHRoYW4gbmV3IHJvd3MgYmVpbmcgaW5zZXJ0ZWQuXG4gICAqL1xuICB1bmlxdWVLZXk/OiBzdHJpbmdbXTtcbn1cblxuLy8gVE9ETzogVGhpcyBuZWVkcyB0byBiZSBhIG1ldGhvZCwgSSdtIHJlYWxseSBub3Qgc3VyZSB3aHksIGJ1dCBpdCBoaXRzIGEgcnVudGltZSBmYWlsdXJlIG90aGVyd2lzZS5cbmV4cG9ydCBjb25zdCBJVGFibGVDb25maWdQcm9wZXJ0aWVzID0gKCkgPT5cbiAgc3RyaWN0S2V5c09mPElUYWJsZUNvbmZpZz4oKShbXG4gICAgXCJ0eXBlXCIsXG4gICAgXCJkaXNhYmxlZFwiLFxuICAgIFwicHJvdGVjdGVkXCIsXG4gICAgXCJuYW1lXCIsXG4gICAgXCJyZWRzaGlmdFwiLFxuICAgIFwiYmlncXVlcnlcIixcbiAgICBcInNxbGRhdGF3YXJlaG91c2VcIixcbiAgICBcInRhZ3NcIixcbiAgICBcInVuaXF1ZUtleVwiLFxuICAgIFwiZGVwZW5kZW5jaWVzXCIsXG4gICAgXCJoZXJtZXRpY1wiLFxuICAgIFwic2NoZW1hXCIsXG4gICAgXCJhc3NlcnRpb25zXCIsXG4gICAgXCJkYXRhYmFzZVwiLFxuICAgIFwiY29sdW1uc1wiLFxuICAgIFwiZGVzY3JpcHRpb25cIlxuICBdKTtcblxuLyoqXG4gKiBDb250ZXh0IG1ldGhvZHMgYXJlIGF2YWlsYWJsZSB3aGVuIGV2YWx1YXRpbmcgY29udGV4dGFibGUgU1FMIGNvZGUsIHN1Y2ggYXNcbiAqIHdpdGhpbiBTUUxYIGZpbGVzLCBvciB3aGVuIHVzaW5nIGEgW0NvbnRleHRhYmxlXSgjQ29udGV4dGFibGUpIGFyZ3VtZW50IHdpdGggdGhlIEpTIEFQSS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJVGFibGVDb250ZXh0IGV4dGVuZHMgSUNvbW1vbkNvbnRleHQge1xuICAvKipcbiAgICogU2hvcnRoYW5kIGZvciBhbiBgaWZgIGNvbmRpdGlvbi4gRXF1aXZhbGVudCB0byBgY29uZCA/IHRydWVDYXNlIDogZmFsc2VDYXNlYC5cbiAgICogYGZhbHNlQ2FzZWAgaXMgb3B0aW9uYWwsIGFuZCBkZWZhdWx0cyB0byBhbiBlbXB0eSBzdHJpbmcuXG4gICAqL1xuICB3aGVuOiAoY29uZDogYm9vbGVhbiwgdHJ1ZUNhc2U6IHN0cmluZywgZmFsc2VDYXNlPzogc3RyaW5nKSA9PiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIHRoZSBjb25maWcgaW5kaWNhdGVzIHRoZSBmaWxlIGlzIGRlYWxpbmcgd2l0aCBhbiBpbmNyZW1lbnRhbCB0YWJsZS5cbiAgICovXG4gIGluY3JlbWVudGFsOiAoKSA9PiBib29sZWFuO1xufVxuXG4vKipcbiAqIEBoaWRkZW5cbiAqL1xuZXhwb3J0IGNsYXNzIFRhYmxlIHtcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBJR05PUkVEX1BST1BTOiB7XG4gICAgW3RhYmxlVHlwZTogc3RyaW5nXTogQXJyYXk8a2V5b2YgZGF0YWZvcm0uSVRhYmxlPjtcbiAgfSA9IHtcbiAgICBpbmxpbmU6IFtcbiAgICAgIFwiYmlncXVlcnlcIixcbiAgICAgIFwicmVkc2hpZnRcIixcbiAgICAgIFwic3FsRGF0YVdhcmVob3VzZVwiLFxuICAgICAgXCJwcmVPcHNcIixcbiAgICAgIFwicG9zdE9wc1wiLFxuICAgICAgXCJhY3Rpb25EZXNjcmlwdG9yXCIsXG4gICAgICBcImRpc2FibGVkXCIsXG4gICAgICBcIndoZXJlXCJcbiAgICBdXG4gIH07XG5cbiAgcHVibGljIHByb3RvOiBkYXRhZm9ybS5JVGFibGUgPSBkYXRhZm9ybS5UYWJsZS5jcmVhdGUoe1xuICAgIHR5cGU6IFwidmlld1wiLFxuICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICB0YWdzOiBbXVxuICB9KTtcblxuICAvLyBIb2xkIGEgcmVmZXJlbmNlIHRvIHRoZSBTZXNzaW9uIGluc3RhbmNlLlxuICBwdWJsaWMgc2Vzc2lvbjogU2Vzc2lvbjtcblxuICAvLyBXZSBkZWxheSBjb250ZXh0aWZpY2F0aW9uIHVudGlsIHRoZSBmaW5hbCBjb21waWxlIHN0ZXAsIHNvIGhvbGQgdGhlc2UgaGVyZSBmb3Igbm93LlxuICBwdWJsaWMgY29udGV4dGFibGVRdWVyeTogQ29udGV4dGFibGU8SVRhYmxlQ29udGV4dCwgc3RyaW5nPjtcbiAgcHJpdmF0ZSBjb250ZXh0YWJsZVdoZXJlOiBDb250ZXh0YWJsZTxJVGFibGVDb250ZXh0LCBzdHJpbmc+O1xuICBwcml2YXRlIGNvbnRleHRhYmxlUHJlT3BzOiBBcnJheTxDb250ZXh0YWJsZTxJVGFibGVDb250ZXh0LCBzdHJpbmcgfCBzdHJpbmdbXT4+ID0gW107XG4gIHByaXZhdGUgY29udGV4dGFibGVQb3N0T3BzOiBBcnJheTxDb250ZXh0YWJsZTxJVGFibGVDb250ZXh0LCBzdHJpbmcgfCBzdHJpbmdbXT4+ID0gW107XG4gIHByaXZhdGUgdW5pcXVlS2V5QXNzZXJ0aW9uPzogQXNzZXJ0aW9uO1xuICBwcml2YXRlIG1lcmdlZFJvd0NvbmRpdGlvbnNBc3NlcnRpb24/OiBBc3NlcnRpb247XG5cbiAgcHVibGljIGNvbmZpZyhjb25maWc6IElUYWJsZUNvbmZpZykge1xuICAgIGNoZWNrRXhjZXNzUHJvcGVydGllcyhcbiAgICAgIChlOiBFcnJvcikgPT4gdGhpcy5zZXNzaW9uLmNvbXBpbGVFcnJvcihlKSxcbiAgICAgIGNvbmZpZyxcbiAgICAgIElUYWJsZUNvbmZpZ1Byb3BlcnRpZXMoKSxcbiAgICAgIFwidGFibGUgY29uZmlnXCJcbiAgICApO1xuICAgIGlmIChjb25maWcudHlwZSkge1xuICAgICAgdGhpcy50eXBlKGNvbmZpZy50eXBlKTtcbiAgICB9XG4gICAgaWYgKGNvbmZpZy5kZXBlbmRlbmNpZXMpIHtcbiAgICAgIHRoaXMuZGVwZW5kZW5jaWVzKGNvbmZpZy5kZXBlbmRlbmNpZXMpO1xuICAgIH1cbiAgICBpZiAoY29uZmlnLmhlcm1ldGljICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuaGVybWV0aWMoY29uZmlnLmhlcm1ldGljKTtcbiAgICB9XG4gICAgaWYgKGNvbmZpZy5kaXNhYmxlZCkge1xuICAgICAgdGhpcy5kaXNhYmxlZCgpO1xuICAgIH1cbiAgICBpZiAoY29uZmlnLnByb3RlY3RlZCkge1xuICAgICAgdGhpcy5wcm90ZWN0ZWQoKTtcbiAgICB9XG4gICAgaWYgKGNvbmZpZy5yZWRzaGlmdCkge1xuICAgICAgdGhpcy5yZWRzaGlmdChjb25maWcucmVkc2hpZnQpO1xuICAgIH1cbiAgICBpZiAoY29uZmlnLmJpZ3F1ZXJ5KSB7XG4gICAgICB0aGlzLmJpZ3F1ZXJ5KGNvbmZpZy5iaWdxdWVyeSk7XG4gICAgfVxuICAgIGlmIChjb25maWcuc3FsZGF0YXdhcmVob3VzZSkge1xuICAgICAgdGhpcy5zcWxkYXRhd2FyZWhvdXNlKGNvbmZpZy5zcWxkYXRhd2FyZWhvdXNlKTtcbiAgICB9XG4gICAgaWYgKGNvbmZpZy50YWdzKSB7XG4gICAgICB0aGlzLnRhZ3MoY29uZmlnLnRhZ3MpO1xuICAgIH1cbiAgICBpZiAoY29uZmlnLmRlc2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLmRlc2NyaXB0aW9uKGNvbmZpZy5kZXNjcmlwdGlvbik7XG4gICAgfVxuICAgIGlmIChjb25maWcuY29sdW1ucykge1xuICAgICAgdGhpcy5jb2x1bW5zKGNvbmZpZy5jb2x1bW5zKTtcbiAgICB9XG4gICAgaWYgKGNvbmZpZy5kYXRhYmFzZSkge1xuICAgICAgdGhpcy5kYXRhYmFzZShjb25maWcuZGF0YWJhc2UpO1xuICAgIH1cbiAgICBpZiAoY29uZmlnLnNjaGVtYSkge1xuICAgICAgdGhpcy5zY2hlbWEoY29uZmlnLnNjaGVtYSk7XG4gICAgfVxuICAgIGlmIChjb25maWcuYXNzZXJ0aW9ucykge1xuICAgICAgdGhpcy5hc3NlcnRpb25zKGNvbmZpZy5hc3NlcnRpb25zKTtcbiAgICB9XG4gICAgaWYgKGNvbmZpZy51bmlxdWVLZXkpIHtcbiAgICAgIHRoaXMudW5pcXVlS2V5KGNvbmZpZy51bmlxdWVLZXkpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIHR5cGUodHlwZTogVGFibGVUeXBlKSB7XG4gICAgdGhpcy5wcm90by50eXBlID0gdHlwZSBhcyBzdHJpbmc7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgcXVlcnkocXVlcnk6IENvbnRleHRhYmxlPElUYWJsZUNvbnRleHQsIHN0cmluZz4pIHtcbiAgICB0aGlzLmNvbnRleHRhYmxlUXVlcnkgPSBxdWVyeTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyB3aGVyZSh3aGVyZTogQ29udGV4dGFibGU8SVRhYmxlQ29udGV4dCwgc3RyaW5nPikge1xuICAgIHRoaXMuY29udGV4dGFibGVXaGVyZSA9IHdoZXJlO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIHByZU9wcyhwcmVzOiBDb250ZXh0YWJsZTxJVGFibGVDb250ZXh0LCBzdHJpbmcgfCBzdHJpbmdbXT4pIHtcbiAgICB0aGlzLmNvbnRleHRhYmxlUHJlT3BzLnB1c2gocHJlcyk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgcG9zdE9wcyhwb3N0czogQ29udGV4dGFibGU8SVRhYmxlQ29udGV4dCwgc3RyaW5nIHwgc3RyaW5nW10+KSB7XG4gICAgdGhpcy5jb250ZXh0YWJsZVBvc3RPcHMucHVzaChwb3N0cyk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgZGlzYWJsZWQoKSB7XG4gICAgdGhpcy5wcm90by5kaXNhYmxlZCA9IHRydWU7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgcHJvdGVjdGVkKCkge1xuICAgIHRoaXMucHJvdG8ucHJvdGVjdGVkID0gdHJ1ZTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyB1bmlxdWVLZXkodW5pcXVlS2V5OiBzdHJpbmdbXSkge1xuICAgIHRoaXMucHJvdG8udW5pcXVlS2V5ID0gdW5pcXVlS2V5O1xuICB9XG5cbiAgcHVibGljIHNxbGRhdGF3YXJlaG91c2Uoc3FsRGF0YVdhcmVob3VzZTogZGF0YWZvcm0uSVNRTERhdGFXYXJlaG91c2VPcHRpb25zKSB7XG4gICAgY2hlY2tFeGNlc3NQcm9wZXJ0aWVzKFxuICAgICAgKGU6IEVycm9yKSA9PiB0aGlzLnNlc3Npb24uY29tcGlsZUVycm9yKGUpLFxuICAgICAgc3FsRGF0YVdhcmVob3VzZSxcbiAgICAgIElTUUxEYXRhV2FyZWhvdXNlT3B0aW9uc1Byb3BlcnRpZXMoKSxcbiAgICAgIFwic3FsZGF0YXdhcmVob3VzZSBjb25maWdcIlxuICAgICk7XG4gICAgdGhpcy5wcm90by5zcWxEYXRhV2FyZWhvdXNlID0gZGF0YWZvcm0uU1FMRGF0YVdhcmVob3VzZU9wdGlvbnMuY3JlYXRlKHNxbERhdGFXYXJlaG91c2UpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIHJlZHNoaWZ0KHJlZHNoaWZ0OiBkYXRhZm9ybS5JUmVkc2hpZnRPcHRpb25zKSB7XG4gICAgY2hlY2tFeGNlc3NQcm9wZXJ0aWVzKFxuICAgICAgKGU6IEVycm9yKSA9PiB0aGlzLnNlc3Npb24uY29tcGlsZUVycm9yKGUpLFxuICAgICAgcmVkc2hpZnQsXG4gICAgICBJUmVkc2hpZnRPcHRpb25zUHJvcGVydGllcygpLFxuICAgICAgXCJyZWRzaGlmdCBjb25maWdcIlxuICAgICk7XG4gICAgdGhpcy5wcm90by5yZWRzaGlmdCA9IGRhdGFmb3JtLlJlZHNoaWZ0T3B0aW9ucy5jcmVhdGUocmVkc2hpZnQpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIGJpZ3F1ZXJ5KGJpZ3F1ZXJ5OiBkYXRhZm9ybS5JQmlnUXVlcnlPcHRpb25zKSB7XG4gICAgY2hlY2tFeGNlc3NQcm9wZXJ0aWVzKFxuICAgICAgKGU6IEVycm9yKSA9PiB0aGlzLnNlc3Npb24uY29tcGlsZUVycm9yKGUpLFxuICAgICAgYmlncXVlcnksXG4gICAgICBJQmlnUXVlcnlPcHRpb25zUHJvcGVydGllcygpLFxuICAgICAgXCJiaWdxdWVyeSBjb25maWdcIlxuICAgICk7XG4gICAgdGhpcy5wcm90by5iaWdxdWVyeSA9IGRhdGFmb3JtLkJpZ1F1ZXJ5T3B0aW9ucy5jcmVhdGUoYmlncXVlcnkpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIGRlcGVuZGVuY2llcyh2YWx1ZTogUmVzb2x2YWJsZSB8IFJlc29sdmFibGVbXSkge1xuICAgIGNvbnN0IG5ld0RlcGVuZGVuY2llcyA9IEFycmF5LmlzQXJyYXkodmFsdWUpID8gdmFsdWUgOiBbdmFsdWVdO1xuICAgIG5ld0RlcGVuZGVuY2llcy5mb3JFYWNoKHJlc29sdmFibGUgPT4ge1xuICAgICAgdGhpcy5wcm90by5kZXBlbmRlbmN5VGFyZ2V0cy5wdXNoKHJlc29sdmFibGVBc1RhcmdldChyZXNvbHZhYmxlKSk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyBoZXJtZXRpYyhoZXJtZXRpYzogYm9vbGVhbikge1xuICAgIHRoaXMucHJvdG8uaGVybWV0aWNpdHkgPSBoZXJtZXRpY1xuICAgICAgPyBkYXRhZm9ybS5BY3Rpb25IZXJtZXRpY2l0eS5IRVJNRVRJQ1xuICAgICAgOiBkYXRhZm9ybS5BY3Rpb25IZXJtZXRpY2l0eS5OT05fSEVSTUVUSUM7XG4gIH1cblxuICBwdWJsaWMgdGFncyh2YWx1ZTogc3RyaW5nIHwgc3RyaW5nW10pIHtcbiAgICBjb25zdCBuZXdUYWdzID0gdHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiID8gW3ZhbHVlXSA6IHZhbHVlO1xuICAgIG5ld1RhZ3MuZm9yRWFjaCh0ID0+IHtcbiAgICAgIHRoaXMucHJvdG8udGFncy5wdXNoKHQpO1xuICAgIH0pO1xuICAgIGlmICghIXRoaXMudW5pcXVlS2V5QXNzZXJ0aW9uKSB7XG4gICAgICB0aGlzLnVuaXF1ZUtleUFzc2VydGlvbi50YWdzKHZhbHVlKTtcbiAgICB9XG4gICAgaWYgKCEhdGhpcy5tZXJnZWRSb3dDb25kaXRpb25zQXNzZXJ0aW9uKSB7XG4gICAgICB0aGlzLm1lcmdlZFJvd0NvbmRpdGlvbnNBc3NlcnRpb24udGFncyh2YWx1ZSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIGRlc2NyaXB0aW9uKGRlc2NyaXB0aW9uOiBzdHJpbmcpIHtcbiAgICBpZiAoIXRoaXMucHJvdG8uYWN0aW9uRGVzY3JpcHRvcikge1xuICAgICAgdGhpcy5wcm90by5hY3Rpb25EZXNjcmlwdG9yID0ge307XG4gICAgfVxuICAgIHRoaXMucHJvdG8uYWN0aW9uRGVzY3JpcHRvci5kZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIGNvbHVtbnMoY29sdW1uczogSUNvbHVtbnNEZXNjcmlwdG9yKSB7XG4gICAgaWYgKCF0aGlzLnByb3RvLmFjdGlvbkRlc2NyaXB0b3IpIHtcbiAgICAgIHRoaXMucHJvdG8uYWN0aW9uRGVzY3JpcHRvciA9IHt9O1xuICAgIH1cbiAgICB0aGlzLnByb3RvLmFjdGlvbkRlc2NyaXB0b3IuY29sdW1ucyA9IENvbHVtbkRlc2NyaXB0b3JzLm1hcFRvQ29sdW1uUHJvdG9BcnJheShcbiAgICAgIGNvbHVtbnMsXG4gICAgICAoZTogRXJyb3IpID0+IHRoaXMuc2Vzc2lvbi5jb21waWxlRXJyb3IoZSlcbiAgICApO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIGRhdGFiYXNlKGRhdGFiYXNlOiBzdHJpbmcpIHtcbiAgICBzZXROYW1lQW5kVGFyZ2V0KFxuICAgICAgdGhpcy5zZXNzaW9uLFxuICAgICAgdGhpcy5wcm90byxcbiAgICAgIHRoaXMucHJvdG8udGFyZ2V0Lm5hbWUsXG4gICAgICB0aGlzLnByb3RvLnRhcmdldC5zY2hlbWEsXG4gICAgICBkYXRhYmFzZVxuICAgICk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgc2NoZW1hKHNjaGVtYTogc3RyaW5nKSB7XG4gICAgc2V0TmFtZUFuZFRhcmdldChcbiAgICAgIHRoaXMuc2Vzc2lvbixcbiAgICAgIHRoaXMucHJvdG8sXG4gICAgICB0aGlzLnByb3RvLnRhcmdldC5uYW1lLFxuICAgICAgc2NoZW1hLFxuICAgICAgdGhpcy5wcm90by50YXJnZXQuZGF0YWJhc2VcbiAgICApO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIGFzc2VydGlvbnMoeyB1bmlxdWVLZXksIG5vbk51bGwsIHJvd0NvbmRpdGlvbnMgfTogSVRhYmxlQXNzZXJ0aW9ucykge1xuICAgIGlmICghIXVuaXF1ZUtleSkge1xuICAgICAgY29uc3QgaW5kZXhDb2xzID0gdHlwZW9mIHVuaXF1ZUtleSA9PT0gXCJzdHJpbmdcIiA/IFt1bmlxdWVLZXldIDogdW5pcXVlS2V5O1xuICAgICAgdGhpcy51bmlxdWVLZXlBc3NlcnRpb24gPSB0aGlzLnNlc3Npb25cbiAgICAgICAgLmFzc2VydChgJHt0aGlzLnByb3RvLnRhcmdldC5uYW1lfV9hc3NlcnRpb25zX3VuaXF1ZUtleWAsIGN0eCA9PlxuICAgICAgICAgIHRoaXMuc2Vzc2lvbi5hZGFwdGVyKCkuaW5kZXhBc3NlcnRpb24oY3R4LnJlZih0aGlzLnByb3RvLnRhcmdldCksIGluZGV4Q29scylcbiAgICAgICAgKVxuICAgICAgICAudGFncyh0aGlzLnByb3RvLnRhZ3MpO1xuICAgIH1cbiAgICBjb25zdCBtZXJnZWRSb3dDb25kaXRpb25zID0gcm93Q29uZGl0aW9ucyB8fCBbXTtcbiAgICBpZiAoISFub25OdWxsKSB7XG4gICAgICBjb25zdCBub25OdWxsQ29scyA9IHR5cGVvZiBub25OdWxsID09PSBcInN0cmluZ1wiID8gW25vbk51bGxdIDogbm9uTnVsbDtcbiAgICAgIG5vbk51bGxDb2xzLmZvckVhY2gobm9uTnVsbENvbCA9PiBtZXJnZWRSb3dDb25kaXRpb25zLnB1c2goYCR7bm9uTnVsbENvbH0gSVMgTk9UIE5VTExgKSk7XG4gICAgfVxuICAgIGlmICghIW1lcmdlZFJvd0NvbmRpdGlvbnMgJiYgbWVyZ2VkUm93Q29uZGl0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLm1lcmdlZFJvd0NvbmRpdGlvbnNBc3NlcnRpb24gPSB0aGlzLnNlc3Npb25cbiAgICAgICAgLmFzc2VydChgJHt0aGlzLnByb3RvLnRhcmdldC5uYW1lfV9hc3NlcnRpb25zX3Jvd0NvbmRpdGlvbnNgLCBjdHggPT5cbiAgICAgICAgICB0aGlzLnNlc3Npb25cbiAgICAgICAgICAgIC5hZGFwdGVyKClcbiAgICAgICAgICAgIC5yb3dDb25kaXRpb25zQXNzZXJ0aW9uKGN0eC5yZWYodGhpcy5wcm90by50YXJnZXQpLCBtZXJnZWRSb3dDb25kaXRpb25zKVxuICAgICAgICApXG4gICAgICAgIC50YWdzKHRoaXMucHJvdG8udGFncyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIGNvbXBpbGUoKSB7XG4gICAgY29uc3QgY29udGV4dCA9IG5ldyBUYWJsZUNvbnRleHQodGhpcyk7XG4gICAgY29uc3QgaW5jcmVtZW50YWxDb250ZXh0ID0gbmV3IFRhYmxlQ29udGV4dCh0aGlzLCB0cnVlKTtcblxuICAgIHRoaXMucHJvdG8ucXVlcnkgPSBjb250ZXh0LmFwcGx5KHRoaXMuY29udGV4dGFibGVRdWVyeSk7XG5cbiAgICBpZiAodGhpcy5wcm90by50eXBlID09PSBcImluY3JlbWVudGFsXCIpIHtcbiAgICAgIHRoaXMucHJvdG8uaW5jcmVtZW50YWxRdWVyeSA9IGluY3JlbWVudGFsQ29udGV4dC5hcHBseSh0aGlzLmNvbnRleHRhYmxlUXVlcnkpO1xuXG4gICAgICB0aGlzLnByb3RvLmluY3JlbWVudGFsUHJlT3BzID0gdGhpcy5jb250ZXh0aWZ5T3BzKHRoaXMuY29udGV4dGFibGVQcmVPcHMsIGluY3JlbWVudGFsQ29udGV4dCk7XG4gICAgICB0aGlzLnByb3RvLmluY3JlbWVudGFsUG9zdE9wcyA9IHRoaXMuY29udGV4dGlmeU9wcyhcbiAgICAgICAgdGhpcy5jb250ZXh0YWJsZVBvc3RPcHMsXG4gICAgICAgIGluY3JlbWVudGFsQ29udGV4dFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jb250ZXh0YWJsZVdoZXJlKSB7XG4gICAgICB0aGlzLnByb3RvLndoZXJlID0gY29udGV4dC5hcHBseSh0aGlzLmNvbnRleHRhYmxlV2hlcmUpO1xuICAgIH1cblxuICAgIHRoaXMucHJvdG8ucHJlT3BzID0gdGhpcy5jb250ZXh0aWZ5T3BzKHRoaXMuY29udGV4dGFibGVQcmVPcHMsIGNvbnRleHQpO1xuICAgIHRoaXMucHJvdG8ucG9zdE9wcyA9IHRoaXMuY29udGV4dGlmeU9wcyh0aGlzLmNvbnRleHRhYmxlUG9zdE9wcywgY29udGV4dCk7XG5cbiAgICByZXR1cm4gdGhpcy5wcm90bztcbiAgfVxuXG4gIHByaXZhdGUgY29udGV4dGlmeU9wcyhcbiAgICBjb250ZXh0YWJsZU9wczogQXJyYXk8Q29udGV4dGFibGU8SVRhYmxlQ29udGV4dCwgc3RyaW5nIHwgc3RyaW5nW10+PixcbiAgICBjdXJyZW50Q29udGV4dDogVGFibGVDb250ZXh0XG4gICkge1xuICAgIGxldCBwcm90b09wczogc3RyaW5nW10gPSBbXTtcbiAgICBjb250ZXh0YWJsZU9wcy5mb3JFYWNoKGNvbnRleHRhYmxlT3AgPT4ge1xuICAgICAgY29uc3QgYXBwbGllZE9wcyA9IGN1cnJlbnRDb250ZXh0LmFwcGx5KGNvbnRleHRhYmxlT3ApO1xuICAgICAgcHJvdG9PcHMgPSBwcm90b09wcy5jb25jYXQodHlwZW9mIGFwcGxpZWRPcHMgPT09IFwic3RyaW5nXCIgPyBbYXBwbGllZE9wc10gOiBhcHBsaWVkT3BzKTtcbiAgICB9KTtcbiAgICByZXR1cm4gcHJvdG9PcHM7XG4gIH1cbn1cblxuLyoqXG4gKiBAaGlkZGVuXG4gKi9cbmV4cG9ydCBjbGFzcyBUYWJsZUNvbnRleHQgaW1wbGVtZW50cyBJVGFibGVDb250ZXh0IHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSB0YWJsZTogVGFibGUsIHByaXZhdGUgaXNJbmNyZW1lbnRhbCA9IGZhbHNlKSB7fVxuXG4gIHB1YmxpYyBjb25maWcoY29uZmlnOiBJVGFibGVDb25maWcpIHtcbiAgICB0aGlzLnRhYmxlLmNvbmZpZyhjb25maWcpO1xuICAgIHJldHVybiBcIlwiO1xuICB9XG5cbiAgcHVibGljIHNlbGYoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5yZXNvbHZlKHRoaXMudGFibGUucHJvdG8udGFyZ2V0KTtcbiAgfVxuXG4gIHB1YmxpYyBuYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMudGFibGUucHJvdG8udGFyZ2V0Lm5hbWU7XG4gIH1cblxuICBwdWJsaWMgcmVmKHJlZjogUmVzb2x2YWJsZSB8IHN0cmluZ1tdLCAuLi5yZXN0OiBzdHJpbmdbXSk6IHN0cmluZyB7XG4gICAgcmVmID0gdG9SZXNvbHZhYmxlKHJlZiwgcmVzdCk7XG4gICAgaWYgKCFyZXNvbHZhYmxlQXNUYXJnZXQocmVmKSkge1xuICAgICAgY29uc3QgbWVzc2FnZSA9IGBBY3Rpb24gbmFtZSBpcyBub3Qgc3BlY2lmaWVkYDtcbiAgICAgIHRoaXMudGFibGUuc2Vzc2lvbi5jb21waWxlRXJyb3IobmV3IEVycm9yKG1lc3NhZ2UpKTtcbiAgICAgIHJldHVybiBcIlwiO1xuICAgIH1cbiAgICB0aGlzLnRhYmxlLmRlcGVuZGVuY2llcyhyZWYpO1xuICAgIHJldHVybiB0aGlzLnJlc29sdmUocmVmKTtcbiAgfVxuXG4gIHB1YmxpYyByZXNvbHZlKHJlZjogUmVzb2x2YWJsZSB8IHN0cmluZ1tdLCAuLi5yZXN0OiBzdHJpbmdbXSkge1xuICAgIHJldHVybiB0aGlzLnRhYmxlLnNlc3Npb24ucmVzb2x2ZSh0b1Jlc29sdmFibGUocmVmLCByZXN0KSk7XG4gIH1cblxuICBwdWJsaWMgdHlwZSh0eXBlOiBUYWJsZVR5cGUpIHtcbiAgICB0aGlzLnRhYmxlLnR5cGUodHlwZSk7XG4gICAgcmV0dXJuIFwiXCI7XG4gIH1cblxuICBwdWJsaWMgd2hlcmUod2hlcmU6IENvbnRleHRhYmxlPElUYWJsZUNvbnRleHQsIHN0cmluZz4pIHtcbiAgICB0aGlzLnRhYmxlLndoZXJlKHdoZXJlKTtcbiAgICByZXR1cm4gXCJcIjtcbiAgfVxuXG4gIHB1YmxpYyB3aGVuKGNvbmQ6IGJvb2xlYW4sIHRydWVDYXNlOiBzdHJpbmcsIGZhbHNlQ2FzZTogc3RyaW5nID0gXCJcIikge1xuICAgIHJldHVybiBjb25kID8gdHJ1ZUNhc2UgOiBmYWxzZUNhc2U7XG4gIH1cblxuICBwdWJsaWMgaW5jcmVtZW50YWwoKSB7XG4gICAgcmV0dXJuICEhdGhpcy5pc0luY3JlbWVudGFsO1xuICB9XG5cbiAgcHVibGljIHByZU9wcyhzdGF0ZW1lbnQ6IENvbnRleHRhYmxlPElUYWJsZUNvbnRleHQsIHN0cmluZyB8IHN0cmluZ1tdPikge1xuICAgIHRoaXMudGFibGUucHJlT3BzKHN0YXRlbWVudCk7XG4gICAgcmV0dXJuIFwiXCI7XG4gIH1cblxuICBwdWJsaWMgcG9zdE9wcyhzdGF0ZW1lbnQ6IENvbnRleHRhYmxlPElUYWJsZUNvbnRleHQsIHN0cmluZyB8IHN0cmluZ1tdPikge1xuICAgIHRoaXMudGFibGUucG9zdE9wcyhzdGF0ZW1lbnQpO1xuICAgIHJldHVybiBcIlwiO1xuICB9XG5cbiAgcHVibGljIGRpc2FibGVkKCkge1xuICAgIHRoaXMudGFibGUuZGlzYWJsZWQoKTtcbiAgICByZXR1cm4gXCJcIjtcbiAgfVxuXG4gIHB1YmxpYyByZWRzaGlmdChyZWRzaGlmdDogZGF0YWZvcm0uSVJlZHNoaWZ0T3B0aW9ucykge1xuICAgIHRoaXMudGFibGUucmVkc2hpZnQocmVkc2hpZnQpO1xuICAgIHJldHVybiBcIlwiO1xuICB9XG5cbiAgcHVibGljIGJpZ3F1ZXJ5KGJpZ3F1ZXJ5OiBkYXRhZm9ybS5JQmlnUXVlcnlPcHRpb25zKSB7XG4gICAgdGhpcy50YWJsZS5iaWdxdWVyeShiaWdxdWVyeSk7XG4gICAgcmV0dXJuIFwiXCI7XG4gIH1cblxuICBwdWJsaWMgZGVwZW5kZW5jaWVzKHJlczogUmVzb2x2YWJsZSkge1xuICAgIHRoaXMudGFibGUuZGVwZW5kZW5jaWVzKHJlcyk7XG4gICAgcmV0dXJuIFwiXCI7XG4gIH1cblxuICBwdWJsaWMgYXBwbHk8VD4odmFsdWU6IENvbnRleHRhYmxlPElUYWJsZUNvbnRleHQsIFQ+KTogVCB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICByZXR1cm4gKHZhbHVlIGFzIGFueSkodGhpcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgdGFncyh0YWdzOiBzdHJpbmdbXSkge1xuICAgIHRoaXMudGFibGUudGFncyh0YWdzKTtcbiAgICByZXR1cm4gXCJcIjtcbiAgfVxufVxuIl19

@@ -28,3 +28,3 @@ (function (factory) {

config(config) {
utils_1.checkExcessProperties(config, ITestConfigProperties, "test config");
utils_1.checkExcessProperties((e) => this.session.compileError(e), config, ITestConfigProperties, "test config");
if (config.dataset) {

@@ -159,2 +159,2 @@ this.dataset(config.dataset);

});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvdGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztJQUVBLDhDQUE4QztJQUU5QyxnREFPOEI7SUFDOUIsNkNBQTRDO0lBWTVDLE1BQU0scUJBQXFCLEdBQUcsb0JBQVksRUFBZSxDQUFDO1FBQ3hELE1BQU07UUFDTixTQUFTO1FBQ1QsTUFBTTtRQUNOLE1BQU07UUFDTixjQUFjO0tBQ2YsQ0FBQyxDQUFDO0lBS0gsTUFBYSxJQUFJO1FBQWpCO1lBQ1MsVUFBSyxHQUFtQixpQkFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUcvQyxzQkFBaUIsR0FBK0QsRUFBRSxDQUFDO1FBOEQ1RixDQUFDO1FBekRRLE1BQU0sQ0FBQyxNQUFtQjtZQUMvQiw2QkFBcUIsQ0FBQyxNQUFNLEVBQUUscUJBQXFCLEVBQUUsYUFBYSxDQUFDLENBQUM7WUFDcEUsSUFBSSxNQUFNLENBQUMsT0FBTyxFQUFFO2dCQUNsQixJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQzthQUM5QjtZQUNELE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUVNLE9BQU8sQ0FBQyxHQUFlO1lBQzVCLElBQUksQ0FBQyxhQUFhLEdBQUcsR0FBRyxDQUFDO1lBQ3pCLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUVNLEtBQUssQ0FBQyxPQUFlLEVBQUUsZ0JBQXFEO1lBQ2pGLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsR0FBRyxnQkFBZ0IsQ0FBQztZQUNuRCxPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFFTSxNQUFNLENBQUMsZ0JBQXFEO1lBQ2pFLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxnQkFBZ0IsQ0FBQztZQUN6QyxPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFFTSxPQUFPO1lBQ1osTUFBTSxXQUFXLEdBQUcs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QUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1FBQ3JDLENBQUM7UUFFTSxXQUFXO1lBQ2hCLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztRQUVNLE1BQU0sQ0FBQyxTQUF3RDtZQUNwRSxPQUFPLEVBQUUsQ0FBQztRQUNaLENBQUM7UUFFTSxPQUFPLENBQUMsU0FBd0Q7WUFDckUsT0FBTyxFQUFFLENBQUM7UUFDWixDQUFDO1FBRU0sUUFBUTtZQUNiLE9BQU8sRUFBRSxDQUFDO1FBQ1osQ0FBQztRQUVNLFFBQVEsQ0FBQyxRQUFtQztZQUNqRCxPQUFPLEVBQUUsQ0FBQztRQUNaLENBQUM7UUFFTSxRQUFRLENBQUMsUUFBbUM7WUFDakQsT0FBTyxFQUFFLENBQUM7UUFDWixDQUFDO1FBRU0sWUFBWSxDQUFDLElBQVk7WUFDOUIsT0FBTyxFQUFFLENBQUM7UUFDWixDQUFDO1FBRU0sSUFBSSxDQUFDLElBQWM7WUFDeEIsT0FBTyxFQUFFLENBQUM7UUFDWixDQUFDO0tBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb250ZXh0YWJsZSwgSUNvbW1vbkNvbmZpZywgSUNvbW1vbkNvbnRleHQsIFJlc29sdmFibGUgfSBmcm9tIFwiQGRhdGFmb3JtL2NvcmUvY29tbW9uXCI7XG5pbXBvcnQgeyBTZXNzaW9uIH0gZnJvbSBcIkBkYXRhZm9ybS9jb3JlL3Nlc3Npb25cIjtcbmltcG9ydCAqIGFzIHRhYmxlIGZyb20gXCJAZGF0YWZvcm0vY29yZS90YWJsZVwiO1xuaW1wb3J0IHsgSVRhYmxlQ29udGV4dCB9IGZyb20gXCJAZGF0YWZvcm0vY29yZS90YWJsZVwiO1xuaW1wb3J0IHtcbiAgYW1iaWd1b3VzQWN0aW9uTmFtZU1zZyxcbiAgY2hlY2tFeGNlc3NQcm9wZXJ0aWVzLFxuICByZXNvbHZhYmxlQXNUYXJnZXQsXG4gIHN0cmljdEtleXNPZixcbiAgc3RyaW5naWZ5UmVzb2x2YWJsZSxcbiAgdG9SZXNvbHZhYmxlXG59IGZyb20gXCJAZGF0YWZvcm0vY29yZS91dGlsc1wiO1xuaW1wb3J0IHsgZGF0YWZvcm0gfSBmcm9tIFwiQGRhdGFmb3JtL3Byb3Rvc1wiO1xuXG4vKipcbiAqIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdW5pdCB0ZXN0cy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJVGVzdENvbmZpZyBleHRlbmRzIElDb21tb25Db25maWcge1xuICAvKipcbiAgICogVGhlIGRhdGFzZXQgdGhhdCB0aGlzIHVuaXQgdGVzdCB0ZXN0cy5cbiAgICovXG4gIGRhdGFzZXQ/OiBSZXNvbHZhYmxlO1xufVxuXG5jb25zdCBJVGVzdENvbmZpZ1Byb3BlcnRpZXMgPSBzdHJpY3RLZXlzT2Y8SVRlc3RDb25maWc+KCkoW1xuICBcInR5cGVcIixcbiAgXCJkYXRhc2V0XCIsXG4gIFwibmFtZVwiLFxuICBcInRhZ3NcIixcbiAgXCJkZXBlbmRlbmNpZXNcIlxuXSk7XG5cbi8qKlxuICogQGhpZGRlblxuICovXG5leHBvcnQgY2xhc3MgVGVzdCB7XG4gIHB1YmxpYyBwcm90bzogZGF0YWZvcm0uSVRlc3QgPSBkYXRhZm9ybS5UZXN0LmNyZWF0ZSgpO1xuXG4gIHB1YmxpYyBzZXNzaW9uOiBTZXNzaW9uO1xuICBwdWJsaWMgY29udGV4dGFibGVJbnB1dHM6IHsgW3JlZk5hbWU6IHN0cmluZ106IENvbnRleHRhYmxlPElDb21tb25Db250ZXh0LCBzdHJpbmc+IH0gPSB7fTtcblxuICBwcml2YXRlIGRhdGFzZXRUb1Rlc3Q6IFJlc29sdmFibGU7XG4gIHByaXZhdGUgY29udGV4dGFibGVRdWVyeTogQ29udGV4dGFibGU8SUNvbW1vbkNvbnRleHQsIHN0cmluZz47XG5cbiAgcHVibGljIGNvbmZpZyhjb25maWc6IElUZXN0Q29uZmlnKSB7XG4gICAgY2hlY2tFeGNlc3NQcm9wZXJ0aWVzKGNvbmZpZywgSVRlc3RDb25maWdQcm9wZXJ0aWVzLCBcInRlc3QgY29uZmlnXCIpO1xuICAgIGlmIChjb25maWcuZGF0YXNldCkge1xuICAgICAgdGhpcy5kYXRhc2V0KGNvbmZpZy5kYXRhc2V0KTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgZGF0YXNldChyZWY6IFJlc29sdmFibGUpIHtcbiAgICB0aGlzLmRhdGFzZXRUb1Rlc3QgPSByZWY7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgaW5wdXQocmVmTmFtZTogc3RyaW5nLCBjb250ZXh0YWJsZVF1ZXJ5OiBDb250ZXh0YWJsZTxJQ29tbW9uQ29udGV4dCwgc3RyaW5nPikge1xuICAgIHRoaXMuY29udGV4dGFibGVJbnB1dHNbcmVmTmFtZV0gPSBjb250ZXh0YWJsZVF1ZXJ5O1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIGV4cGVjdChjb250ZXh0YWJsZVF1ZXJ5OiBDb250ZXh0YWJsZTxJQ29tbW9uQ29udGV4dCwgc3RyaW5nPikge1xuICAgIHRoaXMuY29udGV4dGFibGVRdWVyeSA9IGNvbnRleHRhYmxlUXVlcnk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgY29tcGlsZSgpIHtcbiAgICBjb25zdCB0ZXN0Q29udGV4dCA9IG5ldyBUZXN0Q29udGV4dCh0aGlzKTtcbiAgICBpZiAoIXRoaXMuZGF0YXNldFRvVGVzdCkge1xuICAgICAgdGhpcy5zZXNzaW9uLmNvbXBpbGVFcnJvcihcbiAgICAgICAgbmV3IEVycm9yKFwiVGVzdHMgbXVzdCBvcGVyYXRlIHVwb24gYSBzcGVjaWZpZWQgZGF0YXNldC5cIiksXG4gICAgICAgIHRoaXMucHJvdG8uZmlsZU5hbWVcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGFsbFJlc29sdmVkID0gdGhpcy5zZXNzaW9uLmZpbmRBY3Rpb25zKHJlc29sdmFibGVBc1RhcmdldCh0aGlzLmRhdGFzZXRUb1Rlc3QpKTtcbiAgICAgIGlmIChhbGxSZXNvbHZlZC5sZW5ndGggPiAxKSB7XG4gICAgICAgIHRoaXMuc2Vzc2lvbi5jb21waWxlRXJyb3IoXG4gICAgICAgICAgbmV3IEVycm9yKGFtYmlndW91c0FjdGlvbk5hbWVNc2codGhpcy5kYXRhc2V0VG9UZXN0LCBhbGxSZXNvbHZlZCkpLFxuICAgICAgICAgIHRoaXMucHJvdG8uZmlsZU5hbWVcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGRhdGFzZXQgPSBhbGxSZXNvbHZlZC5sZW5ndGggPiAwID8gYWxsUmVzb2x2ZWRbMF0gOiB1bmRlZmluZWQ7XG4gICAgICBpZiAoIShkYXRhc2V0ICYmIGRhdGFzZXQgaW5zdGFuY2VvZiB0YWJsZS5UYWJsZSkpIHtcbiAgICAgICAgdGhpcy5zZXNzaW9uLmNvbXBpbGVFcnJvcihcbiAgICAgICAgICBuZXcgRXJyb3IoYERhdGFzZXQgJHtzdHJpbmdpZnlSZXNvbHZhYmxlKHRoaXMuZGF0YXNldFRvVGVzdCl9IGNvdWxkIG5vdCBiZSBmb3VuZC5gKSxcbiAgICAgICAgICB0aGlzLnByb3RvLmZpbGVOYW1lXG4gICAgICAgICk7XG4gICAgICB9IGVsc2UgaWYgKGRhdGFzZXQucHJvdG8udHlwZSA9PT0gXCJpbmNyZW1lbnRhbFwiKSB7XG4gICAgICAgIHRoaXMuc2Vzc2lvbi5jb21waWxlRXJyb3IoXG4gICAgICAgICAgbmV3IEVycm9yKFwiUnVubmluZyB0ZXN0cyBvbiBpbmNyZW1lbnRhbCBkYXRhc2V0cyBpcyBub3QgeWV0IHN1cHBvcnRlZC5cIiksXG4gICAgICAgICAgdGhpcy5wcm90by5maWxlTmFtZVxuICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgcmVmUmVwbGFjaW5nQ29udGV4dCA9IG5ldyBSZWZSZXBsYWNpbmdDb250ZXh0KHRlc3RDb250ZXh0KTtcbiAgICAgICAgdGhpcy5wcm90by50ZXN0UXVlcnkgPSByZWZSZXBsYWNpbmdDb250ZXh0LmFwcGx5KGRhdGFzZXQuY29udGV4dGFibGVRdWVyeSk7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMucHJvdG8uZXhwZWN0ZWRPdXRwdXRRdWVyeSA9IHRlc3RDb250ZXh0LmFwcGx5KHRoaXMuY29udGV4dGFibGVRdWVyeSk7XG4gICAgcmV0dXJuIHRoaXMucHJvdG87XG4gIH1cbn1cblxuLyoqXG4gKiBAaGlkZGVuXG4gKi9cbmV4cG9ydCBjbGFzcyBUZXN0Q29udGV4dCB7XG4gIHB1YmxpYyByZWFkb25seSB0ZXN0OiBUZXN0O1xuICBjb25zdHJ1Y3Rvcih0ZXN0OiBUZXN0KSB7XG4gICAgdGhpcy50ZXN0ID0gdGVzdDtcbiAgfVxuXG4gIHB1YmxpYyBhcHBseTxUPih2YWx1ZTogQ29udGV4dGFibGU8SUNvbW1vbkNvbnRleHQsIFQ+KTogVCB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICByZXR1cm4gKHZhbHVlIGFzIGFueSkodGhpcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBAaGlkZGVuXG4gKi9cbmNsYXNzIFJlZlJlcGxhY2luZ0NvbnRleHQgaW1wbGVtZW50cyBJVGFibGVDb250ZXh0IHtcbiAgcHJpdmF0ZSByZWFkb25seSB0ZXN0Q29udGV4dDogVGVzdENvbnRleHQ7XG5cbiAgY29uc3RydWN0b3IodGVzdENvbnRleHQ6IFRlc3RDb250ZXh0KSB7XG4gICAgdGhpcy50ZXN0Q29udGV4dCA9IHRlc3RDb250ZXh0O1xuICB9XG5cbiAgcHVibGljIHJlZihyZWY6IFJlc29sdmFibGUgfCBzdHJpbmdbXSwgLi4ucmVzdDogc3RyaW5nW10pIHtcbiAgICByZXR1cm4gdGhpcy5yZXNvbHZlKHJlZiwgLi4ucmVzdCk7XG4gIH1cblxuICBwdWJsaWMgcmVzb2x2ZShyZWY6IFJlc29sdmFibGUgfCBzdHJpbmdbXSwgLi4ucmVzdDogc3RyaW5nW10pIHtcbiAgICByZWYgPSB0b1Jlc29sdmFibGUocmVmLCByZXN0KTtcbiAgICBpZiAodHlwZW9mIHJlZiAhPT0gXCJzdHJpbmdcIikge1xuICAgICAgdGhpcy50ZXN0Q29udGV4dC50ZXN0LnNlc3Npb24uY29tcGlsZUVycm9yKFxuICAgICAgICBuZXcgRXJyb3IoXCJUZXN0cyBkbyBub3QgY3VycmVudGx5IHN1cHBvcnQgcmVmZXJlbmNpbmcgbm9uLXN0cmluZyBpbnB1dHMuXCIpXG4gICAgICApO1xuICAgICAgcmV0dXJuIFwiXCI7XG4gICAgfVxuICAgIGlmICghdGhpcy50ZXN0Q29udGV4dC50ZXN0LmNvbnRleHRhYmxlSW5wdXRzW3JlZl0pIHtcbiAgICAgIHRoaXMudGVzdENvbnRleHQudGVzdC5zZXNzaW9uLmNvbXBpbGVFcnJvcihcbiAgICAgICAgbmV3IEVycm9yKGBJbnB1dCBmb3IgZGF0YXNldCBcIiR7cmVmfVwiIGhhcyBub3QgYmVlbiBwcm92aWRlZC5gKVxuICAgICAgKTtcbiAgICAgIHJldHVybiBcIlwiO1xuICAgIH1cbiAgICByZXR1cm4gYCgke3RoaXMudGVzdENvbnRleHQuYXBwbHkodGhpcy50ZXN0Q29udGV4dC50ZXN0LmNvbnRleHRhYmxlSW5wdXRzW3JlZl0pfSlgO1xuICB9XG5cbiAgcHVibGljIGFwcGx5PFQ+KHZhbHVlOiBDb250ZXh0YWJsZTxJVGFibGVDb250ZXh0LCBUPik6IFQge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgcmV0dXJuICh2YWx1ZSBhcyBhbnkpKHRoaXMpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGNvbmZpZyhjb25maWc6IHRhYmxlLklUYWJsZUNvbmZpZykge1xuICAgIHJldHVybiBcIlwiO1xuICB9XG5cbiAgcHVibGljIHNlbGYoKSB7XG4gICAgcmV0dXJuIFwiXCI7XG4gIH1cblxuICBwdWJsaWMgbmFtZSgpIHtcbiAgICByZXR1cm4gXCJcIjtcbiAgfVxuXG4gIHB1YmxpYyB0eXBlKHR5cGU6IHRhYmxlLlRhYmxlVHlwZSkge1xuICAgIHJldHVybiBcIlwiO1xuICB9XG5cbiAgcHVibGljIHdoZXJlKHdoZXJlOiBDb250ZXh0YWJsZTxJVGFibGVDb250ZXh0LCBzdHJpbmc+KSB7XG4gICAgcmV0dXJuIFwiXCI7XG4gIH1cblxuICBwdWJsaWMgd2hlbihjb25kOiBib29sZWFuLCB0cnVlQ2FzZTogc3RyaW5nLCBmYWxzZUNhc2U6IHN0cmluZyA9IFwiXCIpIHtcbiAgICByZXR1cm4gY29uZCA/IHRydWVDYXNlIDogZmFsc2VDYXNlO1xuICB9XG5cbiAgcHVibGljIGluY3JlbWVudGFsKCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHB1YmxpYyBwcmVPcHMoc3RhdGVtZW50OiBDb250ZXh0YWJsZTxJVGFibGVDb250ZXh0LCBzdHJpbmcgfCBzdHJpbmdbXT4pIHtcbiAgICByZXR1cm4gXCJcIjtcbiAgfVxuXG4gIHB1YmxpYyBwb3N0T3BzKHN0YXRlbWVudDogQ29udGV4dGFibGU8SVRhYmxlQ29udGV4dCwgc3RyaW5nIHwgc3RyaW5nW10+KSB7XG4gICAgcmV0dXJuIFwiXCI7XG4gIH1cblxuICBwdWJsaWMgZGlzYWJsZWQoKSB7XG4gICAgcmV0dXJuIFwiXCI7XG4gIH1cblxuICBwdWJsaWMgcmVkc2hpZnQocmVkc2hpZnQ6IGRhdGFmb3JtLklSZWRzaGlmdE9wdGlvbnMpIHtcbiAgICByZXR1cm4gXCJcIjtcbiAgfVxuXG4gIHB1YmxpYyBiaWdxdWVyeShiaWdxdWVyeTogZGF0YWZvcm0uSUJpZ1F1ZXJ5T3B0aW9ucykge1xuICAgIHJldHVybiBcIlwiO1xuICB9XG5cbiAgcHVibGljIGRlcGVuZGVuY2llcyhuYW1lOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gXCJcIjtcbiAgfVxuXG4gIHB1YmxpYyB0YWdzKHRhZ3M6IHN0cmluZ1tdKSB7XG4gICAgcmV0dXJuIFwiXCI7XG4gIH1cbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvdGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztJQUVBLDhDQUE4QztJQUU5QyxnREFPOEI7SUFDOUIsNkNBQTRDO0lBWTVDLE1BQU0scUJBQXFCLEdBQUcsb0JBQVksRUFBZSxDQUFDO1FBQ3hELE1BQU07UUFDTixTQUFTO1FBQ1QsTUFBTTtRQUNOLE1BQU07UUFDTixjQUFjO0tBQ2YsQ0FBQyxDQUFDO0lBS0gsTUFBYSxJQUFJO1FBQWpCO1lBQ1MsVUFBSyxHQUFtQixpQkFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUcvQyxzQkFBaUIsR0FBK0QsRUFBRSxDQUFDO1FBbUU1RixDQUFDO1FBOURRLE1BQU0sQ0FBQyxNQUFtQjtZQUMvQiw2QkFBcUIsQ0FDbkIsQ0FBQyxDQUFRLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUMxQyxNQUFNLEVBQ04scUJBQXFCLEVBQ3JCLGFBQWEsQ0FDZCxDQUFDO1lBQ0YsSUFBSSxNQUFNLENBQUMsT0FBTyxFQUFFO2dCQUNsQixJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQzthQUM5QjtZQUNELE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUVNLE9BQU8sQ0FBQyxHQUFlO1lBQzVCLElBQUksQ0FBQyxhQUFhLEdBQUcsR0FBRyxDQUFDO1lBQ3pCLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUVNLEtBQUssQ0FBQyxPQUFlLEVBQUUsZ0JBQXFEO1lBQ2pGLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsR0FBRyxnQkFBZ0IsQ0FBQztZQUNuRCxPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFFTSxNQUFNLENBQUMsZ0JBQXFEO1lBQ2pFLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxn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WixDQUFDO1FBRU0sSUFBSSxDQUFDLElBQWEsRUFBRSxRQUFnQixFQUFFLFlBQW9CLEVBQUU7WUFDakUsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1FBQ3JDLENBQUM7UUFFTSxXQUFXO1lBQ2hCLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztRQUVNLE1BQU0sQ0FBQyxTQUF3RDtZQUNwRSxPQUFPLEVBQUUsQ0FBQztRQUNaLENBQUM7UUFFTSxPQUFPLENBQUMsU0FBd0Q7WUFDckUsT0FBTyxFQUFFLENBQUM7UUFDWixDQUFDO1FBRU0sUUFBUTtZQUNiLE9BQU8sRUFBRSxDQUFDO1FBQ1osQ0FBQztRQUVNLFFBQVEsQ0FBQyxRQUFtQztZQUNqRCxPQUFPLEVBQUUsQ0FBQztRQUNaLENBQUM7UUFFTSxRQUFRLENBQUMsUUFBbUM7WUFDakQsT0FBTyxFQUFFLENBQUM7UUFDWixDQUFDO1FBRU0sWUFBWSxDQUFDLElBQVk7WUFDOUIsT0FBTyxFQUFFLENBQUM7UUFDWixDQUFDO1FBRU0sSUFBSSxDQUFDLElBQWM7WUFDeEIsT0FBTyxFQUFFLENBQUM7UUFDWixDQUFDO0tBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb250ZXh0YWJsZSwgSUNvbW1vbkNvbmZpZywgSUNvbW1vbkNvbnRleHQsIFJlc29sdmFibGUgfSBmcm9tIFwiQGRhdGFmb3JtL2NvcmUvY29tbW9uXCI7XG5pbXBvcnQgeyBTZXNzaW9uIH0gZnJvbSBcIkBkYXRhZm9ybS9jb3JlL3Nlc3Npb25cIjtcbmltcG9ydCAqIGFzIHRhYmxlIGZyb20gXCJAZGF0YWZvcm0vY29yZS90YWJsZVwiO1xuaW1wb3J0IHsgSVRhYmxlQ29udGV4dCB9IGZyb20gXCJAZGF0YWZvcm0vY29yZS90YWJsZVwiO1xuaW1wb3J0IHtcbiAgYW1iaWd1b3VzQWN0aW9uTmFtZU1zZyxcbiAgY2hlY2tFeGNlc3NQcm9wZXJ0aWVzLFxuICByZXNvbHZhYmxlQXNUYXJnZXQsXG4gIHN0cmljdEtleXNPZixcbiAgc3RyaW5naWZ5UmVzb2x2YWJsZSxcbiAgdG9SZXNvbHZhYmxlXG59IGZyb20gXCJAZGF0YWZvcm0vY29yZS91dGlsc1wiO1xuaW1wb3J0IHsgZGF0YWZvcm0gfSBmcm9tIFwiQGRhdGFmb3JtL3Byb3Rvc1wiO1xuXG4vKipcbiAqIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdW5pdCB0ZXN0cy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJVGVzdENvbmZpZyBleHRlbmRzIElDb21tb25Db25maWcge1xuICAvKipcbiAgICogVGhlIGRhdGFzZXQgdGhhdCB0aGlzIHVuaXQgdGVzdCB0ZXN0cy5cbiAgICovXG4gIGRhdGFzZXQ/OiBSZXNvbHZhYmxlO1xufVxuXG5jb25zdCBJVGVzdENvbmZpZ1Byb3BlcnRpZXMgPSBzdHJpY3RLZXlzT2Y8SVRlc3RDb25maWc+KCkoW1xuICBcInR5cGVcIixcbiAgXCJkYXRhc2V0XCIsXG4gIFwibmFtZVwiLFxuICBcInRhZ3NcIixcbiAgXCJkZXBlbmRlbmNpZXNcIlxuXSk7XG5cbi8qKlxuICogQGhpZGRlblxuICovXG5leHBvcnQgY2xhc3MgVGVzdCB7XG4gIHB1YmxpYyBwcm90bzogZGF0YWZvcm0uSVRlc3QgPSBkYXRhZm9ybS5UZXN0LmNyZWF0ZSgpO1xuXG4gIHB1YmxpYyBzZXNzaW9uOiBTZXNzaW9uO1xuICBwdWJsaWMgY29udGV4dGFibGVJbnB1dHM6IHsgW3JlZk5hbWU6IHN0cmluZ106IENvbnRleHRhYmxlPElDb21tb25Db250ZXh0LCBzdHJpbmc+IH0gPSB7fTtcblxuICBwcml2YXRlIGRhdGFzZXRUb1Rlc3Q6IFJlc29sdmFibGU7XG4gIHByaXZhdGUgY29udGV4dGFibGVRdWVyeTogQ29udGV4dGFibGU8SUNvbW1vbkNvbnRleHQsIHN0cmluZz47XG5cbiAgcHVibGljIGNvbmZpZyhjb25maWc6IElUZXN0Q29uZmlnKSB7XG4gICAgY2hlY2tFeGNlc3NQcm9wZXJ0aWVzKFxuICAgICAgKGU6IEVycm9yKSA9PiB0aGlzLnNlc3Npb24uY29tcGlsZUVycm9yKGUpLFxuICAgICAgY29uZmlnLFxuICAgICAgSVRlc3RDb25maWdQcm9wZXJ0aWVzLFxuICAgICAgXCJ0ZXN0IGNvbmZpZ1wiXG4gICAgKTtcbiAgICBpZiAoY29uZmlnLmRhdGFzZXQpIHtcbiAgICAgIHRoaXMuZGF0YXNldChjb25maWcuZGF0YXNldCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIGRhdGFzZXQocmVmOiBSZXNvbHZhYmxlKSB7XG4gICAgdGhpcy5kYXRhc2V0VG9UZXN0ID0gcmVmO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIGlucHV0KHJlZk5hbWU6IHN0cmluZywgY29udGV4dGFibGVRdWVyeTogQ29udGV4dGFibGU8SUNvbW1vbkNvbnRleHQsIHN0cmluZz4pIHtcbiAgICB0aGlzLmNvbnRleHRhYmxlSW5wdXRzW3JlZk5hbWVdID0gY29udGV4dGFibGVRdWVyeTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyBleHBlY3QoY29udGV4dGFibGVRdWVyeTogQ29udGV4dGFibGU8SUNvbW1vbkNvbnRleHQsIHN0cmluZz4pIHtcbiAgICB0aGlzLmNvbnRleHRhYmxlUXVlcnkgPSBjb250ZXh0YWJsZVF1ZXJ5O1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIGNvbXBpbGUoKSB7XG4gICAgY29uc3QgdGVzdENvbnRleHQgPSBuZXcgVGVzdENvbnRleHQodGhpcyk7XG4gICAgaWYgKCF0aGlzLmRhdGFzZXRUb1Rlc3QpIHtcbiAgICAgIHRoaXMuc2Vzc2lvbi5jb21waWxlRXJyb3IoXG4gICAgICAgIG5ldyBFcnJvcihcIlRlc3RzIG11c3Qgb3BlcmF0ZSB1cG9uIGEgc3BlY2lmaWVkIGRhdGFzZXQuXCIpLFxuICAgICAgICB0aGlzLnByb3RvLmZpbGVOYW1lXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBhbGxSZXNvbHZlZCA9IHRoaXMuc2Vzc2lvbi5maW5kQWN0aW9ucyhyZXNvbHZhYmxlQXNUYXJnZXQodGhpcy5kYXRhc2V0VG9UZXN0KSk7XG4gICAgICBpZiAoYWxsUmVzb2x2ZWQubGVuZ3RoID4gMSkge1xuICAgICAgICB0aGlzLnNlc3Npb24uY29tcGlsZUVycm9yKFxuICAgICAgICAgIG5ldyBFcnJvcihhbWJpZ3VvdXNBY3Rpb25OYW1lTXNnKHRoaXMuZGF0YXNldFRvVGVzdCwgYWxsUmVzb2x2ZWQpKSxcbiAgICAgICAgICB0aGlzLnByb3RvLmZpbGVOYW1lXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBjb25zdCBkYXRhc2V0ID0gYWxsUmVzb2x2ZWQubGVuZ3RoID4gMCA/IGFsbFJlc29sdmVkWzBdIDogdW5kZWZpbmVkO1xuICAgICAgaWYgKCEoZGF0YXNldCAmJiBkYXRhc2V0IGluc3RhbmNlb2YgdGFibGUuVGFibGUpKSB7XG4gICAgICAgIHRoaXMuc2Vzc2lvbi5jb21waWxlRXJyb3IoXG4gICAgICAgICAgbmV3IEVycm9yKGBEYXRhc2V0ICR7c3RyaW5naWZ5UmVzb2x2YWJsZSh0aGlzLmRhdGFzZXRUb1Rlc3QpfSBjb3VsZCBub3QgYmUgZm91bmQuYCksXG4gICAgICAgICAgdGhpcy5wcm90by5maWxlTmFtZVxuICAgICAgICApO1xuICAgICAgfSBlbHNlIGlmIChkYXRhc2V0LnByb3RvLnR5cGUgPT09IFwiaW5jcmVtZW50YWxcIikge1xuICAgICAgICB0aGlzLnNlc3Npb24uY29tcGlsZUVycm9yKFxuICAgICAgICAgIG5ldyBFcnJvcihcIlJ1bm5pbmcgdGVzdHMgb24gaW5jcmVtZW50YWwgZGF0YXNldHMgaXMgbm90IHlldCBzdXBwb3J0ZWQuXCIpLFxuICAgICAgICAgIHRoaXMucHJvdG8uZmlsZU5hbWVcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHJlZlJlcGxhY2luZ0NvbnRleHQgPSBuZXcgUmVmUmVwbGFjaW5nQ29udGV4dCh0ZXN0Q29udGV4dCk7XG4gICAgICAgIHRoaXMucHJvdG8udGVzdFF1ZXJ5ID0gcmVmUmVwbGFjaW5nQ29udGV4dC5hcHBseShkYXRhc2V0LmNvbnRleHRhYmxlUXVlcnkpO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLnByb3RvLmV4cGVjdGVkT3V0cHV0UXVlcnkgPSB0ZXN0Q29udGV4dC5hcHBseSh0aGlzLmNvbnRleHRhYmxlUXVlcnkpO1xuICAgIHJldHVybiB0aGlzLnByb3RvO1xuICB9XG59XG5cbi8qKlxuICogQGhpZGRlblxuICovXG5leHBvcnQgY2xhc3MgVGVzdENvbnRleHQge1xuICBwdWJsaWMgcmVhZG9ubHkgdGVzdDogVGVzdDtcbiAgY29uc3RydWN0b3IodGVzdDogVGVzdCkge1xuICAgIHRoaXMudGVzdCA9IHRlc3Q7XG4gIH1cblxuICBwdWJsaWMgYXBwbHk8VD4odmFsdWU6IENvbnRleHRhYmxlPElDb21tb25Db250ZXh0LCBUPik6IFQge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgcmV0dXJuICh2YWx1ZSBhcyBhbnkpKHRoaXMpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogQGhpZGRlblxuICovXG5jbGFzcyBSZWZSZXBsYWNpbmdDb250ZXh0IGltcGxlbWVudHMgSVRhYmxlQ29udGV4dCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgdGVzdENvbnRleHQ6IFRlc3RDb250ZXh0O1xuXG4gIGNvbnN0cnVjdG9yKHRlc3RDb250ZXh0OiBUZXN0Q29udGV4dCkge1xuICAgIHRoaXMudGVzdENvbnRleHQgPSB0ZXN0Q29udGV4dDtcbiAgfVxuXG4gIHB1YmxpYyByZWYocmVmOiBSZXNvbHZhYmxlIHwgc3RyaW5nW10sIC4uLnJlc3Q6IHN0cmluZ1tdKSB7XG4gICAgcmV0dXJuIHRoaXMucmVzb2x2ZShyZWYsIC4uLnJlc3QpO1xuICB9XG5cbiAgcHVibGljIHJlc29sdmUocmVmOiBSZXNvbHZhYmxlIHwgc3RyaW5nW10sIC4uLnJlc3Q6IHN0cmluZ1tdKSB7XG4gICAgcmVmID0gdG9SZXNvbHZhYmxlKHJlZiwgcmVzdCk7XG4gICAgaWYgKHR5cGVvZiByZWYgIT09IFwic3RyaW5nXCIpIHtcbiAgICAgIHRoaXMudGVzdENvbnRleHQudGVzdC5zZXNzaW9uLmNvbXBpbGVFcnJvcihcbiAgICAgICAgbmV3IEVycm9yKFwiVGVzdHMgZG8gbm90IGN1cnJlbnRseSBzdXBwb3J0IHJlZmVyZW5jaW5nIG5vbi1zdHJpbmcgaW5wdXRzLlwiKVxuICAgICAgKTtcbiAgICAgIHJldHVybiBcIlwiO1xuICAgIH1cbiAgICBpZiAoIXRoaXMudGVzdENvbnRleHQudGVzdC5jb250ZXh0YWJsZUlucHV0c1tyZWZdKSB7XG4gICAgICB0aGlzLnRlc3RDb250ZXh0LnRlc3Quc2Vzc2lvbi5jb21waWxlRXJyb3IoXG4gICAgICAgIG5ldyBFcnJvcihgSW5wdXQgZm9yIGRhdGFzZXQgXCIke3JlZn1cIiBoYXMgbm90IGJlZW4gcHJvdmlkZWQuYClcbiAgICAgICk7XG4gICAgICByZXR1cm4gXCJcIjtcbiAgICB9XG4gICAgcmV0dXJuIGAoJHt0aGlzLnRlc3RDb250ZXh0LmFwcGx5KHRoaXMudGVzdENvbnRleHQudGVzdC5jb250ZXh0YWJsZUlucHV0c1tyZWZdKX0pYDtcbiAgfVxuXG4gIHB1YmxpYyBhcHBseTxUPih2YWx1ZTogQ29udGV4dGFibGU8SVRhYmxlQ29udGV4dCwgVD4pOiBUIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgIHJldHVybiAodmFsdWUgYXMgYW55KSh0aGlzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBjb25maWcoY29uZmlnOiB0YWJsZS5JVGFibGVDb25maWcpIHtcbiAgICByZXR1cm4gXCJcIjtcbiAgfVxuXG4gIHB1YmxpYyBzZWxmKCkge1xuICAgIHJldHVybiBcIlwiO1xuICB9XG5cbiAgcHVibGljIG5hbWUoKSB7XG4gICAgcmV0dXJuIFwiXCI7XG4gIH1cblxuICBwdWJsaWMgdHlwZSh0eXBlOiB0YWJsZS5UYWJsZVR5cGUpIHtcbiAgICByZXR1cm4gXCJcIjtcbiAgfVxuXG4gIHB1YmxpYyB3aGVyZSh3aGVyZTogQ29udGV4dGFibGU8SVRhYmxlQ29udGV4dCwgc3RyaW5nPikge1xuICAgIHJldHVybiBcIlwiO1xuICB9XG5cbiAgcHVibGljIHdoZW4oY29uZDogYm9vbGVhbiwgdHJ1ZUNhc2U6IHN0cmluZywgZmFsc2VDYXNlOiBzdHJpbmcgPSBcIlwiKSB7XG4gICAgcmV0dXJuIGNvbmQgPyB0cnVlQ2FzZSA6IGZhbHNlQ2FzZTtcbiAgfVxuXG4gIHB1YmxpYyBpbmNyZW1lbnRhbCgpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwdWJsaWMgcHJlT3BzKHN0YXRlbWVudDogQ29udGV4dGFibGU8SVRhYmxlQ29udGV4dCwgc3RyaW5nIHwgc3RyaW5nW10+KSB7XG4gICAgcmV0dXJuIFwiXCI7XG4gIH1cblxuICBwdWJsaWMgcG9zdE9wcyhzdGF0ZW1lbnQ6IENvbnRleHRhYmxlPElUYWJsZUNvbnRleHQsIHN0cmluZyB8IHN0cmluZ1tdPikge1xuICAgIHJldHVybiBcIlwiO1xuICB9XG5cbiAgcHVibGljIGRpc2FibGVkKCkge1xuICAgIHJldHVybiBcIlwiO1xuICB9XG5cbiAgcHVibGljIHJlZHNoaWZ0KHJlZHNoaWZ0OiBkYXRhZm9ybS5JUmVkc2hpZnRPcHRpb25zKSB7XG4gICAgcmV0dXJuIFwiXCI7XG4gIH1cblxuICBwdWJsaWMgYmlncXVlcnkoYmlncXVlcnk6IGRhdGFmb3JtLklCaWdRdWVyeU9wdGlvbnMpIHtcbiAgICByZXR1cm4gXCJcIjtcbiAgfVxuXG4gIHB1YmxpYyBkZXBlbmRlbmNpZXMobmFtZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIFwiXCI7XG4gIH1cblxuICBwdWJsaWMgdGFncyh0YWdzOiBzdHJpbmdbXSkge1xuICAgIHJldHVybiBcIlwiO1xuICB9XG59XG4iXX0=

@@ -23,2 +23,2 @@ /// <amd-module name="@dataform/core/utils" />

export declare function strictKeysOf<T>(): <U extends (keyof T)[]>(array: U & ([keyof T] extends [U[number]] ? unknown : ["Needs to be all of", T][])) => U & ([keyof T] extends [U[number]] ? unknown : ["Needs to be all of", T][]);
export declare function checkExcessProperties<T>(object: T, supportedProperties: string[], name?: string): void;
export declare function checkExcessProperties<T>(reportError: (e: Error) => void, object: T, supportedProperties: string[], name?: string): void;

@@ -268,6 +268,6 @@ (function (factory) {

exports.strictKeysOf = strictKeysOf;
function checkExcessProperties(object, supportedProperties, name) {
function checkExcessProperties(reportError, object, supportedProperties, name) {
const extraProperties = Object.keys(object).filter(key => !supportedProperties.includes(key));
if (extraProperties.length > 0) {
throw new Error(`Unexpected property "${extraProperties[0]}"${!!name ? ` in ${name}` : ""}. Supported properties are: ${JSON.stringify(supportedProperties)}`);
reportError(new Error(`Unexpected property "${extraProperties[0]}"${!!name ? ` in ${name}` : ""}. Supported properties are: ${JSON.stringify(supportedProperties)}`));
}

@@ -277,2 +277,2 @@ }

});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9jb3JlL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0lBTUEsZ0RBQXNGO0lBQ3RGLDZDQUE0QztJQUM1Qyw2QkFBNkI7SUFFN0IsTUFBTSxtQ0FBbUMsR0FBRyxJQUFJLE1BQU0sQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDO0lBRXpGLFNBQVMsWUFBWSxDQUFDLFFBQWdCLEVBQUUsSUFBWTtRQUNsRCxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQ3JCLE9BQU8sUUFBUSxDQUFDO1NBQ2pCO1FBQ0QsTUFBTSxRQUFRLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDOUMsSUFBSSxRQUFRLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUNqQyxPQUFPLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDM0I7YUFBTTtZQUNMLE9BQU8sUUFBUSxDQUFDO1NBQ2pCO0lBQ0gsQ0FBQztJQUVELFNBQWdCLFlBQVksQ0FBQyxRQUFnQjtRQUMzQyxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFGRCxvQ0FFQztJQUVELFNBQWdCLGFBQWEsQ0FBQyxRQUFrQixFQUFFLE1BQWdCO1FBQ2hFLE1BQU0scUJBQXFCLEdBQWEsRUFBRSxDQUFDO1FBQzNDLFFBQVEsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDekIsSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUN6QixJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUU7b0JBQzVCLHFCQUFxQixDQUFDLElBQUksQ0FB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b3J0IHsgYWRhcHRlcnMgfSBmcm9tIFwiQGRhdGFmb3JtL2NvcmVcIjtcbmltcG9ydCB7IEFzc2VydGlvbiB9IGZyb20gXCJAZGF0YWZvcm0vY29yZS9hc3NlcnRpb25cIjtcbmltcG9ydCB7IFJlc29sdmFibGUgfSBmcm9tIFwiQGRhdGFmb3JtL2NvcmUvY29tbW9uXCI7XG5pbXBvcnQgeyBEZWNsYXJhdGlvbiB9IGZyb20gXCJAZGF0YWZvcm0vY29yZS9kZWNsYXJhdGlvblwiO1xuaW1wb3J0IHsgT3BlcmF0aW9uIH0gZnJvbSBcIkBkYXRhZm9ybS9jb3JlL29wZXJhdGlvblwiO1xuaW1wb3J0IHsgSUFjdGlvblByb3RvLCBTZXNzaW9uIH0gZnJvbSBcIkBkYXRhZm9ybS9jb3JlL3Nlc3Npb25cIjtcbmltcG9ydCB7IERpc3RTdHlsZVR5cGUsIFNvcnRTdHlsZVR5cGUsIFRhYmxlLCBUYWJsZVR5cGUgfSBmcm9tIFwiQGRhdGFmb3JtL2NvcmUvdGFibGVcIjtcbmltcG9ydCB7IGRhdGFmb3JtIH0gZnJvbSBcIkBkYXRhZm9ybS9wcm90b3NcIjtcbmltcG9ydCAqIGFzIHBhdGggZnJvbSBcInBhdGhcIjtcblxuY29uc3QgU1FMX0RBVEFfV0FSRUhPVVNFX0RJU1RfSEFTSF9SRUdFWFAgPSBuZXcgUmVnRXhwKFwiSEFTSFxcXFxzKlxcXFwoXFxcXHMqXFxcXHcqXFxcXHMqXFxcXClcXFxccypcIik7XG5cbmZ1bmN0aW9uIHJlbGF0aXZlUGF0aChmdWxsUGF0aDogc3RyaW5nLCBiYXNlOiBzdHJpbmcpIHtcbiAgaWYgKGJhc2UubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIGZ1bGxQYXRoO1xuICB9XG4gIGNvbnN0IHN0cmlwcGVkID0gZnVsbFBhdGguc3Vic3RyKGJhc2UubGVuZ3RoKTtcbiAgaWYgKHN0cmlwcGVkLnN0YXJ0c1dpdGgocGF0aC5zZXApKSB7XG4gICAgcmV0dXJuIHN0cmlwcGVkLnN1YnN0cigxKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gc3RyaXBwZWQ7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJhc2VGaWxlbmFtZShmdWxsUGF0aDogc3RyaW5nKSB7XG4gIHJldHVybiBwYXRoLmJhc2VuYW1lKGZ1bGxQYXRoKS5zcGxpdChcIi5cIilbMF07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtYXRjaFBhdHRlcm5zKHBhdHRlcm5zOiBzdHJpbmdbXSwgdmFsdWVzOiBzdHJpbmdbXSkge1xuICBjb25zdCBmdWxseVF1YWxpZmllZEFjdGlvbnM6IHN0cmluZ1tdID0gW107XG4gIHBhdHRlcm5zLmZvckVhY2gocGF0dGVybiA9PiB7XG4gICAgaWYgKHBhdHRlcm4uaW5jbHVkZXMoXCIuXCIpKSB7XG4gICAgICBpZiAodmFsdWVzLmluY2x1ZGVzKHBhdHRlcm4pKSB7XG4gICAgICAgIGZ1bGx5UXVhbGlmaWVkQWN0aW9ucy5wdXNoKHBhdHRlcm4pO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBtYXRjaGluZ0FjdGlvbnMgPSB2YWx1ZXMuZmlsdGVyKHZhbHVlID0+IHBhdHRlcm4gPT09IHZhbHVlLnNwbGl0KFwiLlwiKS5zbGljZSgtMSlbMF0pO1xuICAgICAgaWYgKG1hdGNoaW5nQWN0aW9ucy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKG1hdGNoaW5nQWN0aW9ucy5sZW5ndGggPiAxKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihhbWJpZ3VvdXNBY3Rpb25OYW1lTXNnKHBhdHRlcm4sIG1hdGNoaW5nQWN0aW9ucykpO1xuICAgICAgfVxuICAgICAgZnVsbHlRdWFsaWZpZWRBY3Rpb25zLnB1c2gobWF0Y2hpbmdBY3Rpb25zWzBdKTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gZnVsbHlRdWFsaWZpZWRBY3Rpb25zO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q2FsbGVyRmlsZShyb290RGlyOiBzdHJpbmcpIHtcbiAgbGV0IGxhc3RmaWxlOiBzdHJpbmc7XG4gIGNvbnN0IHN0YWNrID0gZ2V0Q3VycmVudFN0YWNrKCk7XG4gIHdoaWxlIChzdGFjay5sZW5ndGgpIHtcbiAgICBjb25zdCBuZXh0TGFzdGZpbGUgPSBzdGFjay5zaGlmdCgpLmdldEZpbGVOYW1lKCk7XG4gICAgaWYgKCFuZXh0TGFzdGZpbGUpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBpZiAoIW5leHRMYXN0ZmlsZS5pbmNsdWRlcyhyb290RGlyKSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGlmIChuZXh0TGFzdGZpbGUuaW5jbHVkZXMoXCJub2RlX21vZHVsZXNcIikpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICAvLyBJZiBpdCdzIGluIHRoZSByb290IGRpcmVjdG9yeSB3ZSdsbCB0YWtlIGl0LCBidXQga2VlcCBzZWFyY2hpbmdcbiAgICAvLyBmb3IgYSBiZXR0ZXIgbWF0Y2guXG4gICAgbGFzdGZpbGUgPSBuZXh0TGFzdGZpbGU7XG4gICAgaWYgKFxuICAgICAgIShcbiAgICAgICAgbmV4dExhc3RmaWxlLmluY2x1ZGVzKGBkZWZpbml0aW9ucyR7cGF0aC5zZXB9YCkgfHxcbiAgICAgICAgbmV4dExhc3RmaWxlLmluY2x1ZGVzKGBtb2RlbHMke3BhdGguc2VwfWApXG4gICAgICApXG4gICAgKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIH1cbiAgcmV0dXJuIHJlbGF0aXZlUGF0aChsYXN0ZmlsZSwgcm9vdERpcik7XG59XG5cbmZ1bmN0aW9uIGdldEN1cnJlbnRTdGFjaygpOiBOb2RlSlMuQ2FsbFNpdGVbXSB7XG4gIGNvbnN0IG9yaWdpbmFsUHJlcGFyZVN0YWNrVHJhY2UgPSBFcnJvci5wcmVwYXJlU3RhY2tUcmFjZTtcbiAgdHJ5IHtcbiAgICBFcnJvci5wcmVwYXJlU3RhY2tUcmFjZSA9IChlcnIsIHN0YWNrKSA9PiB7XG4gICAgICByZXR1cm4gc3RhY2s7XG4gICAgfTtcbiAgICByZXR1cm4gKG5ldyBFcnJvcigpLnN0YWNrIGFzIHVua25vd24pIGFzIE5vZGVKUy5DYWxsU2l0ZVtdO1xuICB9IGZpbmFsbHkge1xuICAgIEVycm9yLnByZXBhcmVTdGFja1RyYWNlID0gb3JpZ2luYWxQcmVwYXJlU3RhY2tUcmFjZTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ3JhcGhIYXNFcnJvcnMoZ3JhcGg6IGRhdGFmb3JtLklDb21waWxlZEdyYXBoKSB7XG4gIGNvbnN0IGdyYXBoRXJyb3JzID0gdmFsaWRhdGUoZ3JhcGgpO1xuXG4gIHJldHVybiAoXG4gICAgKGdyYXBoRXJyb3JzLmNvbXBpbGF0aW9uRXJyb3JzICYmIGdyYXBoRXJyb3JzLmNvbXBpbGF0aW9uRXJyb3JzLmxlbmd0aCA+IDApIHx8XG4gICAgKGdyYXBoRXJyb3JzLnZhbGlkYXRpb25FcnJvcnMgJiYgZ3JhcGhFcnJvcnMudmFsaWRhdGlvbkVycm9ycy5sZW5ndGggPiAwKVxuICApO1xufVxuXG5mdW5jdGlvbiBqb2luUXVvdGVkKHZhbHVlczogcmVhZG9ubHkgc3RyaW5nW10pIHtcbiAgcmV0dXJuIHZhbHVlcy5tYXAoKHZhbHVlOiBzdHJpbmcpID0+IGBcIiR7dmFsdWV9XCJgKS5qb2luKFwiIHwgXCIpO1xufVxuXG5mdW5jdGlvbiBvYmplY3RFeGlzdHNPcklzTm9uRW1wdHkocHJvcDogYW55KTogYm9vbGVhbiB7XG4gIGlmICghcHJvcCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgKEFycmF5LmlzQXJyYXkocHJvcCkgJiYgISFwcm9wLmxlbmd0aCkgfHxcbiAgICAoIUFycmF5LmlzQXJyYXkocHJvcCkgJiYgdHlwZW9mIHByb3AgPT09IFwib2JqZWN0XCIgJiYgISFPYmplY3Qua2V5cyhwcm9wKS5sZW5ndGgpIHx8XG4gICAgdHlwZW9mIHByb3AgIT09IFwib2JqZWN0XCJcbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlKGNvbXBpbGVkR3JhcGg6IGRhdGFmb3JtLklDb21waWxlZEdyYXBoKTogZGF0YWZvcm0uSUdyYXBoRXJyb3JzIHtcbiAgY29uc3QgdmFsaWRhdGlvbkVycm9yczogZGF0YWZvcm0uSVZhbGlkYXRpb25FcnJvcltdID0gW107XG5cbiAgLy8gVGFibGUgdmFsaWRhdGlvblxuICBjb21waWxlZEdyYXBoLnRhYmxlcy5mb3JFYWNoKGFjdGlvbiA9PiB7XG4gICAgY29uc3QgYWN0aW9uTmFtZSA9IGFjdGlvbi5uYW1lO1xuXG4gICAgLy8gdHlwZVxuICAgIGlmICghIWFjdGlvbi50eXBlICYmICFUYWJsZVR5cGUuaW5jbHVkZXMoYWN0aW9uLnR5cGUgYXMgVGFibGVUeXBlKSkge1xuICAgICAgY29uc3QgcHJlZGVmaW5lZFR5cGVzID0gam9pblF1b3RlZChUYWJsZVR5cGUpO1xuICAgICAgY29uc3QgbWVzc2FnZSA9IGBXcm9uZyB0eXBlIG9mIHRhYmxlIGRldGVjdGVkLiBTaG91bGQgb25seSB1c2UgcHJlZGVmaW5lZCB0eXBlczogJHtwcmVkZWZpbmVkVHlwZXN9YDtcbiAgICAgIHZhbGlkYXRpb25FcnJvcnMucHVzaChkYXRhZm9ybS5WYWxpZGF0aW9uRXJyb3IuY3JlYXRlKHsgbWVzc2FnZSwgYWN0aW9uTmFtZSB9KSk7XG4gICAgfVxuXG4gICAgLy8gc3FsZGF0YXdhcmVob3VzZSBjb25maWdcbiAgICBpZiAoISFhY3Rpb24uc3FsRGF0YVdhcmVob3VzZSkge1xuICAgICAgaWYgKGFjdGlvbi51bmlxdWVLZXkpIHtcbiAgICAgICAgdmFsaWRhdGlvbkVycm9ycy5wdXNoKFxuICAgICAgICAgIGRhdGFmb3JtLlZhbGlkYXRpb25FcnJvci5jcmVhdGUoe1xuICAgICAgICAgICAgbWVzc2FnZTogXCJNZXJnaW5nIHVzaW5nIHVuaXF1ZSBrZXlzIGZvciBTUUxEYXRhV2FyZWhvdXNlIGhhcyBub3QgeWV0IGJlZW4gaW1wbGVtZW50ZWQuXCIsXG4gICAgICAgICAgICBhY3Rpb25OYW1lXG4gICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGFjdGlvbi5zcWxEYXRhV2FyZWhvdXNlLmRpc3RyaWJ1dGlvbikge1xuICAgICAgICBjb25zdCBkaXN0cmlidXRpb24gPSBhY3Rpb24uc3FsRGF0YVdhcmVob3VzZS5kaXN0cmlidXRpb24udG9VcHBlckNhc2UoKTtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIGRpc3RyaWJ1dGlvbiAhPT0gXCJSRVBMSUNBVEVcIiAmJlxuICAgICAgICAgIGRpc3RyaWJ1dGlvbiAhPT0gXCJST1VORF9ST0JJTlwiICYmXG4gICAgICAgICAgIVNRTF9EQVRBX1dBUkVIT1VTRV9ESVNUX0hBU0hfUkVHRVhQLnRlc3QoZGlzdHJpYnV0aW9uKVxuICAgICAgICApIHtcbiAgICAgICAgICBjb25zdCBtZXNzYWdlID0gYEludmFsaWQgdmFsdWUgZm9yIHNxbGRhdGF3YXJlaG91c2UgZGlzdHJpYnV0aW9uOiBcIiR7ZGlzdHJpYnV0aW9ufVwiYDtcbiAgICAgICAgICB2YWxpZGF0aW9uRXJyb3JzLnB1c2goZGF0YWZvcm0uVmFsaWRhdGlvbkVycm9yLmNyZWF0ZSh7IG1lc3NhZ2UsIGFjdGlvbk5hbWUgfSkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gcmVkc2hpZnQgY29uZmlnXG4gICAgaWYgKCEhYWN0aW9uLnJlZHNoaWZ0KSB7XG4gICAgICBjb25zdCB2YWxpZGF0ZVByb3BlcnR5RGVmaW5lZCA9IChcbiAgICAgICAgb3B0czogZGF0YWZvcm0uSVJlZHNoaWZ0T3B0aW9ucyxcbiAgICAgICAgcHJvcDoga2V5b2YgZGF0YWZvcm0uSVJlZHNoaWZ0T3B0aW9uc1xuICAgICAgKSA9PiB7XG4gICAgICAgIGNvbnN0IGVycm9yID0gZGF0YWZvcm0uVmFsaWRhdGlvbkVycm9yLmNyZWF0ZSh7XG4gICAgICAgICAgbWVzc2FnZTogYFByb3BlcnR5IFwiJHtwcm9wfVwiIGlzIG5vdCBkZWZpbmVkYCxcbiAgICAgICAgICBhY3Rpb25OYW1lXG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCB2YWx1ZSA9IG9wdHNbcHJvcF07XG4gICAgICAgIGlmICghb3B0cy5oYXNPd25Qcm9wZXJ0eShwcm9wKSkge1xuICAgICAgICAgIHZhbGlkYXRpb25FcnJvcnMucHVzaChlcnJvcik7XG4gICAgICAgIH0gZWxzZSBpZiAodmFsdWUgaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgICAgIGlmICh2YWx1ZS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHZhbGlkYXRpb25FcnJvcnMucHVzaChlcnJvcik7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9O1xuICAgICAgY29uc3QgdmFsaWRhdGVQcm9wZXJ0aWVzRGVmaW5lZCA9IChcbiAgICAgICAgb3B0czogZGF0YWZvcm0uSVJlZHNoaWZ0T3B0aW9ucyxcbiAgICAgICAgcHJvcHM6IEFycmF5PGtleW9mIGRhdGFmb3JtLklSZWRzaGlmdE9wdGlvbnM+XG4gICAgICApID0+IHByb3BzLmZvckVhY2gocHJvcCA9PiB2YWxpZGF0ZVByb3BlcnR5RGVmaW5lZChvcHRzLCBwcm9wKSk7XG4gICAgICBjb25zdCB2YWxpZGF0ZVByb3BlcnR5VmFsdWVJblZhbHVlcyA9IChcbiAgICAgICAgb3B0czogZGF0YWZvcm0uSVJlZHNoaWZ0T3B0aW9ucyxcbiAgICAgICAgcHJvcDoga2V5b2YgZGF0YWZvcm0uSVJlZHNoaWZ0T3B0aW9ucyAmIChcImRpc3RTdHlsZVwiIHwgXCJzb3J0U3R5bGVcIiksXG4gICAgICAgIHZhbHVlczogcmVhZG9ubHkgc3RyaW5nW11cbiAgICAgICkgPT4ge1xuICAgICAgICBpZiAoISFvcHRzW3Byb3BdICYmICF2YWx1ZXMuaW5jbHVkZXMob3B0c1twcm9wXSkpIHtcbiAgICAgICAgICBjb25zdCBtZXNzYWdlID0gYFdyb25nIHZhbHVlIG9mIFwiJHtwcm9wfVwiIHByb3BlcnR5LiBTaG91bGQgb25seSB1c2UgcHJlZGVmaW5lZCB2YWx1ZXM6ICR7am9pblF1b3RlZChcbiAgICAgICAgICAgIHZhbHVlc1xuICAgICAgICAgICl9YDtcbiAgICAgICAgICB2YWxpZGF0aW9uRXJyb3JzLnB1c2goZGF0YWZvcm0uVmFsaWRhdGlvbkVycm9yLmNyZWF0ZSh7IG1lc3NhZ2UsIGFjdGlvbk5hbWUgfSkpO1xuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBpZiAoYWN0aW9uLnJlZHNoaWZ0LmRpc3RTdHlsZSB8fCBhY3Rpb24ucmVkc2hpZnQuZGlzdEtleSkge1xuICAgICAgICB2YWxpZGF0ZVByb3BlcnRpZXNEZWZpbmVkKGFjdGlvbi5yZWRzaGlmdCwgW1wiZGlzdFN0eWxlXCIsIFwiZGlzdEtleVwiXSk7XG4gICAgICAgIHZhbGlkYXRlUHJvcGVydHlWYWx1ZUluVmFsdWVzKGFjdGlvbi5yZWRzaGlmdCwgXCJkaXN0U3R5bGVcIiwgRGlzdFN0eWxlVHlwZSk7XG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgIGFjdGlvbi5yZWRzaGlmdC5zb3J0U3R5bGUgfHxcbiAgICAgICAgKGFjdGlvbi5yZWRzaGlmdC5zb3J0S2V5cyAmJiBhY3Rpb24ucmVkc2hpZnQuc29ydEtleXMubGVuZ3RoKVxuICAgICAgKSB7XG4gICAgICAgIHZhbGlkYXRlUHJvcGVydGllc0RlZmluZWQoYWN0aW9uLnJlZHNoaWZ0LCBbXCJzb3J0U3R5bGVcIiwgXCJzb3J0S2V5c1wiXSk7XG4gICAgICAgIHZhbGlkYXRlUHJvcGVydHlWYWx1ZUluVmFsdWVzKGFjdGlvbi5yZWRzaGlmdCwgXCJzb3J0U3R5bGVcIiwgU29ydFN0eWxlVHlwZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gQmlnUXVlcnkgY29uZmlnXG4gICAgaWYgKCEhYWN0aW9uLmJpZ3F1ZXJ5KSB7XG4gICAgICBpZiAoYWN0aW9uLmJpZ3F1ZXJ5LnBhcnRpdGlvbkJ5ICYmIGFjdGlvbi50eXBlID09PSBcInZpZXdcIikge1xuICAgICAgICBjb25zdCBlcnJvciA9IGRhdGFmb3JtLlZhbGlkYXRpb25FcnJvci5jcmVhdGUoe1xuICAgICAgICAgIG1lc3NhZ2U6IGBwYXJ0aXRpb25CeS9jbHVzdGVyQnkgYXJlIG5vdCB2YWxpZCBmb3IgQmlnUXVlcnkgdmlld3M7IHRoZXkgYXJlIG9ubHkgdmFsaWQgZm9yIHRhYmxlc2AsXG4gICAgICAgICAgYWN0aW9uTmFtZVxuICAgICAgICB9KTtcbiAgICAgICAgdmFsaWRhdGlvbkVycm9ycy5wdXNoKGVycm9yKTtcbiAgICAgIH1cbiAgICAgIGlmICghIWFjdGlvbi5iaWdxdWVyeS5jbHVzdGVyQnkgJiYgIWFjdGlvbi5iaWdxdWVyeS5wYXJ0aXRpb25CeSkge1xuICAgICAgICBjb25zdCBlcnJvciA9IGRhdGFmb3JtLlZhbGlkYXRpb25FcnJvci5jcmVhdGUoe1xuICAgICAgICAgIG1lc3NhZ2U6IGBjbHVzdGVyQnkgaXMgbm90IHZhbGlkIHdpdGhvdXQgcGFydGl0aW9uQnlgLFxuICAgICAgICAgIGFjdGlvbk5hbWVcbiAgICAgICAgfSk7XG4gICAgICAgIHZhbGlkYXRpb25FcnJvcnMucHVzaChlcnJvcik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gaWdub3JlZCBwcm9wZXJ0aWVzIGluIHRhYmxlc1xuICAgIGlmICghIVRhYmxlLklHTk9SRURfUFJPUFNbYWN0aW9uLnR5cGVdKSB7XG4gICAgICBUYWJsZS5JR05PUkVEX1BST1BTW2FjdGlvbi50eXBlXS5mb3JFYWNoKGlnbm9yZWRQcm9wID0+IHtcbiAgICAgICAgaWYgKG9iamVjdEV4aXN0c09ySXNOb25FbXB0eShhY3Rpb25baWdub3JlZFByb3BdKSkge1xuICAgICAgICAgIGNvbnN0IG1lc3NhZ2UgPSBgVW51c2VkIHByb3BlcnR5IHdhcyBkZXRlY3RlZDogXCIke2lnbm9yZWRQcm9wfVwiLiBUaGlzIHByb3BlcnR5IGlzIG5vdCB1c2VkIGZvciB0YWJsZXMgd2l0aCB0eXBlIFwiJHthY3Rpb24udHlwZX1cIiBhbmQgd2lsbCBiZSBpZ25vcmVkLmA7XG4gICAgICAgICAgdmFsaWRhdGlvbkVycm9ycy5wdXNoKGRhdGFmb3JtLlZhbGlkYXRpb25FcnJvci5jcmVhdGUoeyBtZXNzYWdlLCBhY3Rpb25OYW1lIH0pKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9KTtcblxuICBjb25zdCBjb21waWxhdGlvbkVycm9ycyA9XG4gICAgY29tcGlsZWRHcmFwaC5ncmFwaEVycm9ycyAmJiBjb21waWxlZEdyYXBoLmdyYXBoRXJyb3JzLmNvbXBpbGF0aW9uRXJyb3JzXG4gICAgICA/IGNvbXBpbGVkR3JhcGguZ3JhcGhFcnJvcnMuY29tcGlsYXRpb25FcnJvcnNcbiAgICAgIDogW107XG5cbiAgcmV0dXJuIGRhdGFmb3JtLkdyYXBoRXJyb3JzLmNyZWF0ZSh7IHZhbGlkYXRpb25FcnJvcnMsIGNvbXBpbGF0aW9uRXJyb3JzIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZmxhdHRlbjxUPihuZXN0ZWRBcnJheTogVFtdW10pIHtcbiAgcmV0dXJuIG5lc3RlZEFycmF5LnJlZHVjZSgocHJldmlvdXNWYWx1ZTogVFtdLCBjdXJyZW50VmFsdWU6IFRbXSkgPT4ge1xuICAgIHJldHVybiBwcmV2aW91c1ZhbHVlLmNvbmNhdChjdXJyZW50VmFsdWUpO1xuICB9LCBbXSk7XG59XG5cbmNvbnN0IGludmFsaWRSZWZJbnB1dE1lc3NhZ2UgPVxuICBcIkludmFsaWQgaW5wdXQuIEFjY2VwdGVkIGlucHV0cyBpbmNsdWRlOiBhIHNpbmdsZSBvYmplY3QgY29udGFpbmluZyBcIiArXG4gIFwiYW4gKG9wdGlvbmFsKSAnZGF0YWJhc2UnLCAob3B0aW9uYWwpICdzY2hlbWEnLCBhbmQgJ25hbWUnLCBcIiArXG4gIFwib3IgMS0zIGlucHV0cyBjb25zaXN0aW5nIG9mIGFuIChvcHRpb25hbCkgZGF0YWJhc2UsIChvcHRpb25hbCkgc2NoZW1hLCBhbmQgJ25hbWUnLlwiO1xuXG5leHBvcnQgZnVuY3Rpb24gdG9SZXNvbHZhYmxlKHJlZjogUmVzb2x2YWJsZSB8IHN0cmluZ1tdLCByZXN0OiBzdHJpbmdbXSk6IFJlc29sdmFibGUge1xuICBpZiAoQXJyYXkuaXNBcnJheShyZWYpICYmIHJlc3QubGVuZ3RoID4gMCkge1xuICAgIHRocm93IG5ldyBFcnJvcihpbnZhbGlkUmVmSW5wdXRNZXNzYWdlKTtcbiAgfVxuICBpZiAocmVzdC5sZW5ndGggPT09IDAgJiYgIUFycmF5LmlzQXJyYXkocmVmKSkge1xuICAgIHJldHVybiByZWY7XG4gIH1cbiAgY29uc3QgcmVzb2x2YWJsZUFycmF5ID0gQXJyYXkuaXNBcnJheShyZWYpID8gcmVmLnJldmVyc2UoKSA6IFtyZWYsIC4uLnJlc3RdLnJldmVyc2UoKTtcbiAgaWYgKCFpc1Jlc29sdmFibGVBcnJheShyZXNvbHZhYmxlQXJyYXkpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGludmFsaWRSZWZJbnB1dE1lc3NhZ2UpO1xuICB9XG4gIGNvbnN0IFtuYW1lLCBzY2hlbWEsIGRhdGFiYXNlXSA9IHJlc29sdmFibGVBcnJheTtcbiAgcmV0dXJuIHsgZGF0YWJhc2UsIHNjaGVtYSwgbmFtZSB9O1xufVxuXG5mdW5jdGlvbiBpc1Jlc29sdmFibGVBcnJheShwYXJ0czogYW55W10pOiBwYXJ0cyBpcyBbc3RyaW5nLCBzdHJpbmc/LCBzdHJpbmc/XSB7XG4gIGlmIChwYXJ0cy5zb21lKHBhcnQgPT4gdHlwZW9mIHBhcnQgIT09IFwic3RyaW5nXCIpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiBwYXJ0cy5sZW5ndGggPiAwICYmIHBhcnRzLmxlbmd0aCA8PSAzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2YWJsZUFzVGFyZ2V0KHJlc29sdmFibGU6IFJlc29sdmFibGUpOiBkYXRhZm9ybS5JVGFyZ2V0IHtcbiAgaWYgKHR5cGVvZiByZXNvbHZhYmxlID09PSBcInN0cmluZ1wiKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5hbWU6IHJlc29sdmFibGVcbiAgICB9O1xuICB9XG4gIHJldHVybiByZXNvbHZhYmxlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3RyaW5naWZ5UmVzb2x2YWJsZShyZXM6IFJlc29sdmFibGUpIHtcbiAgcmV0dXJuIHR5cGVvZiByZXMgPT09IFwic3RyaW5nXCIgPyByZXMgOiBKU09OLnN0cmluZ2lmeShyZXMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYW1iaWd1b3VzQWN0aW9uTmFtZU1zZyhcbiAgYWN0OiBSZXNvbHZhYmxlLFxuICBhbGxBY3RzOiBBcnJheTxUYWJsZSB8IE9wZXJhdGlvbiB8IEFzc2VydGlvbiB8IERlY2xhcmF0aW9uPiB8IHN0cmluZ1tdXG4pIHtcbiAgY29uc3QgYWxsQWN0TmFtZXMgPVxuICAgIHR5cGVvZiBhbGxBY3RzWzBdID09PSBcInN0cmluZ1wiXG4gICAgICA/IGFsbEFjdHNcbiAgICAgIDogKGFsbEFjdHMgYXMgQXJyYXk8VGFibGUgfCBPcGVyYXRpb24gfCBBc3NlcnRpb24+KS5tYXAoXG4gICAgICAgICAgciA9PiBgJHtyLnByb3RvLnRhcmdldC5zY2hlbWF9LiR7ci5wcm90by50YXJnZXQubmFtZX1gXG4gICAgICAgICk7XG4gIHJldHVybiBgQW1iaWd1b3VzIEFjdGlvbiBuYW1lOiAke3N0cmluZ2lmeVJlc29sdmFibGUoXG4gICAgYWN0XG4gICl9LiBEaWQgeW91IG1lYW4gb25lIG9mOiAke2FsbEFjdE5hbWVzLmpvaW4oXCIsIFwiKX0uYDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRhcmdldChcbiAgYWRhcHRlcjogYWRhcHRlcnMuSUFkYXB0ZXIsXG4gIG5hbWU6IHN0cmluZyxcbiAgc2NoZW1hOiBzdHJpbmcsXG4gIGRhdGFiYXNlPzogc3RyaW5nXG4pOiBkYXRhZm9ybS5JVGFyZ2V0IHtcbiAgcmV0dXJuIGRhdGFmb3JtLlRhcmdldC5jcmVhdGUoe1xuICAgIG5hbWU6IGFkYXB0ZXIubm9ybWFsaXplSWRlbnRpZmllcihuYW1lKSxcbiAgICBzY2hlbWE6IGFkYXB0ZXIubm9ybWFsaXplSWRlbnRpZmllcihzY2hlbWEpLFxuICAgIGRhdGFiYXNlOiBkYXRhYmFzZSAmJiBhZGFwdGVyLm5vcm1hbGl6ZUlkZW50aWZpZXIoZGF0YWJhc2UpXG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2V0TmFtZUFuZFRhcmdldChcbiAgc2Vzc2lvbjogU2Vzc2lvbixcbiAgYWN0aW9uOiBJQWN0aW9uUHJvdG8sXG4gIG5hbWU6IHN0cmluZyxcbiAgb3ZlcnJpZGVTY2hlbWE/OiBzdHJpbmcsXG4gIG92ZXJyaWRlRGF0YWJhc2U/OiBzdHJpbmdcbikge1xuICBhY3Rpb24udGFyZ2V0ID0gdGFyZ2V0KFxuICAgIHNlc3Npb24uYWRhcHRlcigpLFxuICAgIG5hbWUsXG4gICAgb3ZlcnJpZGVTY2hlbWEgfHwgc2Vzc2lvbi5jb25maWcuZGVmYXVsdFNjaGVtYSxcbiAgICBvdmVycmlkZURhdGFiYXNlIHx8IHNlc3Npb24uY29uZmlnLmRlZmF1bHREYXRhYmFzZVxuICApO1xuICBjb25zdCBuYW1lUGFydHMgPSBbYWN0aW9uLnRhcmdldC5uYW1lLCBhY3Rpb24udGFyZ2V0LnNjaGVtYV07XG4gIGlmICghIWFjdGlvbi50YXJnZXQuZGF0YWJhc2UpIHtcbiAgICBuYW1lUGFydHMucHVzaChhY3Rpb24udGFyZ2V0LmRhdGFiYXNlKTtcbiAgfVxuICBhY3Rpb24ubmFtZSA9IG5hbWVQYXJ0cy5yZXZlcnNlKCkuam9pbihcIi5cIik7XG59XG5cbi8qKlxuICogQ2hlY2tzIHRoYXQgdGhlIGdpdmVuIGxpc3Qgb2Yga2V5cyBjb21wbGV0ZWx5IGNvdmVycyBhbGwgc3VwcG9ydGVkIGtleXMgaW4gdGhlIGdpdmVuIGludGVyZmFjZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN0cmljdEtleXNPZjxUPigpIHtcbiAgcmV0dXJuIDxVIGV4dGVuZHMgQXJyYXk8a2V5b2YgVD4+KFxuICAgIGFycmF5OiBVICYgKFtrZXlvZiBUXSBleHRlbmRzIFtVW251bWJlcl1dID8gdW5rbm93biA6IEFycmF5PFtcIk5lZWRzIHRvIGJlIGFsbCBvZlwiLCBUXT4pXG4gICkgPT4gYXJyYXk7XG59XG5cbi8qKlxuICogV2lsbCB0aHJvdyBhbiBlcnJvciBpZiB0aGUgcHJvdmlkZWQgb2JqZWN0IGNvbnRhaW5zIGFueSBwcm9wZXJ0aWVzIHRoYXQgYXJlbid0IGluIHRoZSBwcm92aWRlZCBsaXN0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gY2hlY2tFeGNlc3NQcm9wZXJ0aWVzPFQ+KG9iamVjdDogVCwgc3VwcG9ydGVkUHJvcGVydGllczogc3RyaW5nW10sIG5hbWU/OiBzdHJpbmcpIHtcbiAgY29uc3QgZXh0cmFQcm9wZXJ0aWVzID0gT2JqZWN0LmtleXMob2JqZWN0KS5maWx0ZXIoXG4gICAga2V5ID0+ICEoc3VwcG9ydGVkUHJvcGVydGllcyBhcyBzdHJpbmdbXSkuaW5jbHVkZXMoa2V5KVxuICApO1xuICBpZiAoZXh0cmFQcm9wZXJ0aWVzLmxlbmd0aCA+IDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgVW5leHBlY3RlZCBwcm9wZXJ0eSBcIiR7ZXh0cmFQcm9wZXJ0aWVzWzBdfVwiJHtcbiAgICAgICAgISFuYW1lID8gYCBpbiAke25hbWV9YCA6IFwiXCJcbiAgICAgIH0uIFN1cHBvcnRlZCBwcm9wZXJ0aWVzIGFyZTogJHtKU09OLnN0cmluZ2lmeShzdXBwb3J0ZWRQcm9wZXJ0aWVzKX1gXG4gICAgKTtcbiAgfVxufVxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9jb3JlL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0lBTUEsZ0RBQXNGO0lBQ3RGLDZDQUE0QztJQUM1Qyw2QkFBNkI7SUFFN0IsTUFBTSxtQ0FBbUMsR0FBRyxJQUFJLE1BQU0sQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDO0lBRXpGLFNBQVMsWUFBWSxDQUFDLFFBQWdCLEVBQUUsSUFBWTtRQUNsRCxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQ3JCLE9BQU8sUUFBUSxDQUFDO1NBQ2pCO1FBQ0QsTUFBTSxRQUFRLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDOUMsSUFBSSxRQUFRLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUNqQyxPQUFPLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDM0I7YUFBTTtZQUNMLE9BQU8sUUFBUSxDQUFDO1NBQ2pCO0lBQ0gsQ0FBQztJQUVELFNBQWdCLFlBQVksQ0FBQyxRQUFnQjtRQUMzQyxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFGRCxvQ0FFQztJQUVELFNBQWdCLGFBQWEsQ0FBQyxRQUFrQixFQUFFLE1BQWdCO1FBQ2hFLE1BQU0scUJBQXFCLEdBQWEsRUFBRSxDQUFDO1FBQzNDLFFBQVEsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDekIsSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUN6QixJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUU7b0JBQzVCLHFCQUFxQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztpQkFDckM7YUFDRjtpQkFBTTtnQkFDTCxNQUFNLGVBQWUsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsT0FBTyxLQUFLLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDMUYsSUFBSSxlQUFlLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtvQkFDaEMsT0FBTztpQkFDUjtnQkFDRCxJQUFJLGVBQWUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO29CQUM5QixNQUFNLElBQUksS0FBSyxDQUFDLHNCQUFzQixDQUFDLE9BQU8sRUFBRSxlQUFlLENBQUMsQ0FBQyxDQUFDO2lCQUNuRTtnQkFDRCxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDaEQ7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8scUJBQXFCLENBQUM7SUFDL0IsQ0FBQztJQW5CRCxzQ0FtQkM7SUFFRCxTQUFnQixhQUFhLENBQUMsT0FBZTtRQUMzQyxJQUFJLFFBQWdCLENBQUM7UUFDckIsTUFBTSxLQUFLLEdBQUcsZUFBZSxFQUFFLENBQUM7UUFDaEMsT0FBTyxLQUFLLENBQUMsTUFBTSxFQUFFO1lBQ25CLE1BQU0sWUFBWSxHQUFHLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNqRCxJQUFJLENBQUMsWUFBWSxFQUFFO2dCQUNqQixTQUFTO2FBQ1Y7WUFDRCxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRTtnQkFDbkMsU0FBUzthQUNWO1lBQ0QsSUFBSSxZQUFZLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxFQUFFO2dCQUN6QyxTQUFTO2FBQ1Y7WUFHRCxRQUFRLEdBQUcsWUFBWSxDQUFDO1lBQ3hCLElBQ0UsQ0FBQyxDQUNDLFlBQVksQ0FBQyxRQUFRLENBQUMsY0FBYyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7Z0JBQy9DLFlBQVksQ0FBQyxRQUFRLENBQUMsU0FBUyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FDM0MsRUFDRDtnQkFDQSxTQUFTO2FBQ1Y7WUFDRCxNQUFNO1NBQ1A7UUFDRCxPQUFPLFlBQVksQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDekMsQ0FBQztJQTVCRCxzQ0E0QkM7SUFFRCxTQUFTLGVBQWU7UUFDdEIsTUFBTSx5QkFBeUIsR0FBRyxLQUFLLENBQUMsaUJBQWlCLENBQUM7UUFDMUQsSUFBSTtZQUNGLEtBQUssQ0FBQyxpQkFBaUIsR0FBRyxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRTtnQkFDdkMsT0FBTyxLQUFLLENBQUM7WUFDZixDQUFDLENBQUM7WUFDRixPQUFRLElBQUksS0FBSyxFQUFFLENBQUMsS0FBc0MsQ0FBQztTQUM1RDtnQkFBUztZQUNSLEtBQUssQ0FBQyxpQkFBaUIsR0FBRyx5QkFBeUIsQ0FBQztTQUNyRDtJQUNILENBQUM7SUFFRCxTQUFnQixjQUFjLENBQUMsS0FBOEI7UUFDM0QsTUFBTSxXQUFXLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRXBDLE9BQU8sQ0FDTCxDQUFDLFdBQVcsQ0FBQyxpQkFBaUIsSUFBSSxXQUFXLENBQUMsaUJBQWlCLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztZQUMzRSxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsSUFBSSxXQUFXLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUMxRSxDQUFDO0lBQ0osQ0FBQztJQVBELHdDQU9DO0lBRUQsU0FBUyxVQUFVLENBQUMsTUFBeUI7UUFDM0MsT0FBTyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBYSxFQUFFLEVBQUUsQ0FBQyxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFFRCxTQUFTLHdCQUF3QixDQUFDLElBQVM7UUFDekMsSUFBSSxDQUFDLElBQUksRUFBRTtZQUNULE9BQU8sS0FBSyxDQUFDO1NBQ2Q7UUFFRCxPQUFPLENBQ0wsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO1lBQ3RDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUM7WUFDaEYsT0FBTyxJQUFJLEtBQUssUUFBUSxDQUN6QixDQUFDO0lBQ0osQ0FBQztJQUVELFNBQWdCLFFBQVEsQ0FBQyxhQUFzQztRQUM3RCxNQUFNLGdCQUFnQixHQUFnQyxFQUFFLENBQUM7UUFHekQsYUFBYSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDcEMsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQztZQUcvQixJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxJQUFJLENBQUMsaUJBQVMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQWlCLENBQUMsRUFBRTtnQkFDbEUsTUFBTSxlQUFlLEdBQUcsVUFBVSxDQUFDLGlCQUFTLENBQUMsQ0FBQztnQkFDOUMsTUFBTSxPQUFPLEdBQUcsbUVBQW1FLGVBQWUsRUFBRSxDQUFDO2dCQUNyRyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsaUJBQVEsQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQzthQUNqRjtZQUdELElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsRUFBRTtnQkFDN0IsSUFBSSxNQUFNLENBQUMsU0FBUyxFQUFFO29CQUNwQixnQkFBZ0IsQ0FBQyxJQUFJLENBQ25CLGlCQUFRLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQzt3QkFDOUIsT0FBTyxFQUFFLDhFQUE4RTt3QkFDdkYsVUFBVTtxQkFDWCxDQUFDLENBQ0gsQ0FBQztpQkFDSDtnQkFFRCxJQUFJLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLEVBQUU7b0JBQ3hDLE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUM7b0JBQ3hFLElBQ0UsWUFBWSxLQUFLLFdBQVc7d0JBQzVCLFlBQVksS0FBSyxhQUFhO3dCQUM5QixDQUFDLG1DQUFtQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsRUFDdkQ7d0JBQ0EsTUFBTSxPQUFPLEdBQUcscURBQXFELFlBQVksR0FBRyxDQUFDO3dCQUNyRixnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsaUJBQVEsQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQztxQkFDakY7aUJBQ0Y7YUFDRjtZQUdELElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUU7Z0JBQ3JCLE1BQU0sdUJBQXVCLEdBQUcsQ0FDOUIsSUFBK0IsRUFDL0IsSUFBcUMsRUFDckMsRUFBRTtvQkFDRixNQUFNLEtBQUssR0FBRyxpQkFBUSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUM7d0JBQzVDLE9BQU8sRUFBRSxhQUFhLElBQUksa0JBQWtCO3dCQUM1QyxVQUFVO3FCQUNYLENBQUMsQ0FBQztvQkFDSCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQ3pCLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxFQUFFO3dCQUM5QixnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7cUJBQzlCO3lCQUFNLElBQUksS0FBSyxZQUFZLEtBQUssRUFBRTt3QkFDakMsSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTs0QkFDdEIsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO3lCQUM5QjtxQkFDRjtnQkFDSCxDQUFDLENBQUM7Z0JBQ0YsTUFBTSx5QkFBeUIsR0FBRyxDQUNoQyxJQUErQixFQUMvQixLQUE2QyxFQUM3QyxFQUFFLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLHVCQUF1QixDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO2dCQUNoRSxNQUFNLDZCQUE2QixHQUFHLENBQ3BDLElBQStCLEVBQy9CLElBQW1FLEVBQ25FLE1BQXlCLEVBQ3pCLEVBQUU7b0JBQ0YsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRTt3QkFDaEQsTUFBTSxPQUFPLEdBQUcsbUJBQW1CLElBQUksa0RBQWtELFVBQVUsQ0FDakcsTUFBTSxDQUNQLEVBQUUsQ0FBQzt3QkFDSixnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsaUJBQVEsQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQztxQkFDakY7Z0JBQ0gsQ0FBQyxDQUFDO2dCQUVGLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxTQUFTLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUU7b0JBQ3hELHlCQUF5QixDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxXQUFXLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQztvQkFDckUsNkJBQTZCLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxXQUFXLEVBQUUscUJBQWEsQ0FBQyxDQUFDO2lCQUM1RTtnQkFDRCxJQUNFLE1BQU0sQ0FBQyxRQUFRLENBQUMsU0FBUztvQkFDekIsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLFFBQVEsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFDN0Q7b0JBQ0EseUJBQXlCLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDLFdBQVcsRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDO29CQUN0RSw2QkFBNkIsQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLFdBQVcsRUFBRSxxQkFBYSxDQUFDLENBQUM7aUJBQzVFO2FBQ0Y7WUFHRCxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFO2dCQUNyQixJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsV0FBVyxJQUFJLE1BQU0sQ0FBQyxJQUFJLEtBQUssTUFBTSxFQUFFO29CQUN6RCxNQUFNLEtBQUssR0FBRyxpQkFBUSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUM7d0JBQzVDLE9BQU8sRUFBRSx3RkFBd0Y7d0JBQ2pHLFVBQVU7cUJBQ1gsQ0FBQyxDQUFDO29CQUNILGdCQUFnQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztpQkFDOUI7Z0JBQ0QsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxTQUFTLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRTtvQkFDL0QsTUFBTSxLQUFLLEdBQUcsaUJBQVEsQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDO3dCQUM1QyxPQUFPLEVBQUUsNENBQTRDO3dCQUNyRCxVQUFVO3FCQUNYLENBQUMsQ0FBQztvQkFDSCxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7aUJBQzlCO2FBQ0Y7WUFHRCxJQUFJLENBQUMsQ0FBQyxhQUFLLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDdEMsYUFBSyxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxFQUFFO29CQUNyRCxJQUFJLHdCQUF3QixDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxFQUFFO3dCQUNqRCxNQUFNLE9BQU8sR0FBRyxrQ0FBa0MsV0FBVyxzREFBc0QsTUFBTSxDQUFDLElBQUksd0JBQXdCLENBQUM7d0JBQ3ZKLGdCQUFnQixDQUFDLElBQUksQ0FBQyxpQkFBUSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDO3FCQUNqRjtnQkFDSCxDQUFDLENBQUMsQ0FBQzthQUNKO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFFSCxNQUFNLGlCQUFpQixHQUNyQixhQUFhLENBQUMsV0FBVyxJQUFJLGFBQWEsQ0FBQyxXQUFXLENBQUMsaUJBQWlCO1lBQ3RFLENBQUMsQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLGlCQUFpQjtZQUM3QyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBRVQsT0FBTyxpQkFBUSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsRUFBRSxnQkFBZ0IsRUFBRSxpQkFBaUIsRUFBRSxDQUFDLENBQUM7SUFDOUUsQ0FBQztJQTFIRCw0QkEwSEM7SUFFRCxTQUFnQixPQUFPLENBQUksV0FBa0I7UUFDM0MsT0FBTyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUMsYUFBa0IsRUFBRSxZQUFpQixFQUFFLEVBQUU7WUFDbEUsT0FBTyxhQUFhLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzVDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNULENBQUM7SUFKRCwwQkFJQztJQUVELE1BQU0sc0JBQXNCLEdBQzFCLHFFQUFxRTtRQUNyRSw2REFBNkQ7UUFDN0Qsb0ZBQW9GLENBQUM7SUFFdkYsU0FBZ0IsWUFBWSxDQUFDLEdBQTBCLEVBQUUsSUFBYztRQUNyRSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDekMsTUFBTSxJQUFJLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1NBQ3pDO1FBQ0QsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDNUMsT0FBTyxHQUFHLENBQUM7U0FDWjtRQUNELE1BQU0sZUFBZSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUN0RixJQUFJLENBQUMsaUJBQWlCLENBQUMsZUFBZSxDQUFDLEVBQUU7WUFDdkMsTUFBTSxJQUFJLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1NBQ3pDO1FBQ0QsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsUUFBUSxDQUFDLEdBQUcsZUFBZSxDQUFDO1FBQ2pELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDO0lBQ3BDLENBQUM7SUFiRCxvQ0FhQztJQUVELFNBQVMsaUJBQWlCLENBQUMsS0FBWTtRQUNyQyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLElBQUksS0FBSyxRQUFRLENBQUMsRUFBRTtZQUNoRCxPQUFPLEtBQUssQ0FBQztTQUNkO1FBQ0QsT0FBTyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxLQUFLLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRUQsU0FBZ0Isa0JBQWtCLENBQUMsVUFBc0I7UUFDdkQsSUFBSSxPQUFPLFVBQVUsS0FBSyxRQUFRLEVBQUU7WUFDbEMsT0FBTztnQkFDTCxJQUFJLEVBQUUsVUFBVTthQUNqQixDQUFDO1NBQ0g7UUFDRCxPQUFPLFVBQVUsQ0FBQztJQUNwQixDQUFDO0lBUEQsZ0RBT0M7SUFFRCxTQUFnQixtQkFBbUIsQ0FBQyxHQUFlO1FBQ2pELE9BQU8sT0FBTyxHQUFHLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUZELGtEQUVDO0lBRUQsU0FBZ0Isc0JBQXNCLENBQ3BDLEdBQWUsRUFDZixPQUFzRTtRQUV0RSxNQUFNLFdBQVcsR0FDZixPQUFPLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxRQUFRO1lBQzVCLENBQUMsQ0FBQyxPQUFPO1lBQ1QsQ0FBQyxDQUFFLE9BQWdELENBQUMsR0FBRyxDQUNuRCxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUN2RCxDQUFDO1FBQ1IsT0FBTywwQkFBMEIsbUJBQW1CLENBQ2xELEdBQUcsQ0FDSiwwQkFBMEIsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDO0lBQ3ZELENBQUM7SUFiRCx3REFhQztJQUVELFNBQWdCLE1BQU0sQ0FDcEIsT0FBMEIsRUFDMUIsSUFBWSxFQUNaLE1BQWMsRUFDZCxRQUFpQjtRQUVqQixPQUFPLGlCQUFRLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQztZQUM1QixJQUFJLEVBQUUsT0FBTyxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQztZQUN2QyxNQUFNLEVBQUUsT0FBTyxDQUFDLG1CQUFtQixDQUFDLE1BQU0sQ0FBQztZQUMzQyxRQUFRLEVBQUUsUUFBUSxJQUFJLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLENBQUM7U0FDNUQsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQVhELHdCQVdDO0lBRUQsU0FBZ0IsZ0JBQWdCLENBQzlCLE9BQWdCLEVBQ2hCLE1BQW9CLEVBQ3BCLElBQVksRUFDWixjQUF1QixFQUN2QixnQkFBeUI7UUFFekIsTUFBTSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQ3BCLE9BQU8sQ0FBQyxPQUFPLEVBQUUsRUFDakIsSUFBSSxFQUNKLGNBQWMsSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLGFBQWEsRUFDOUMsZ0JBQWdCLElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQ25ELENBQUM7UUFDRixNQUFNLFNBQVMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDN0QsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUU7WUFDNUIsU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQ3hDO1FBQ0QsTUFBTSxDQUFDLElBQUksR0FBRyxTQUFTLENBQUMsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFsQkQsNENBa0JDO0lBS0QsU0FBZ0IsWUFBWTtRQUMxQixPQUFPLENBQ0wsS0FBdUYsRUFDdkYsRUFBRSxDQUFDLEtBQUssQ0FBQztJQUNiLENBQUM7SUFKRCxvQ0FJQztJQUtELFNBQWdCLHFCQUFxQixDQUNuQyxXQUErQixFQUMvQixNQUFTLEVBQ1QsbUJBQTZCLEVBQzdCLElBQWE7UUFFYixNQUFNLGVBQWUsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FDaEQsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFFLG1CQUFnQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FDeEQsQ0FBQztRQUNGLElBQUksZUFBZSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDOUIsV0FBVyxDQUNULElBQUksS0FBSyxDQUNQLHdCQUF3QixlQUFlLENBQUMsQ0FBQyxDQUFDLElBQ3hDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQzNCLCtCQUErQixJQUFJLENBQUMsU0FBUyxDQUFDLG1CQUFtQixDQUFDLEVBQUUsQ0FDckUsQ0FDRixDQUFDO1NBQ0g7SUFDSCxDQUFDO0lBbEJELHNEQWtCQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFkYXB0ZXJzIH0gZnJvbSBcIkBkYXRhZm9ybS9jb3JlXCI7XG5pbXBvcnQgeyBBc3NlcnRpb24gfSBmcm9tIFwiQGRhdGFmb3JtL2NvcmUvYXNzZXJ0aW9uXCI7XG5pbXBvcnQgeyBSZXNvbHZhYmxlIH0gZnJvbSBcIkBkYXRhZm9ybS9jb3JlL2NvbW1vblwiO1xuaW1wb3J0IHsgRGVjbGFyYXRpb24gfSBmcm9tIFwiQGRhdGFmb3JtL2NvcmUvZGVjbGFyYXRpb25cIjtcbmltcG9ydCB7IE9wZXJhdGlvbiB9IGZyb20gXCJAZGF0YWZvcm0vY29yZS9vcGVyYXRpb25cIjtcbmltcG9ydCB7IElBY3Rpb25Qcm90bywgU2Vzc2lvbiB9IGZyb20gXCJAZGF0YWZvcm0vY29yZS9zZXNzaW9uXCI7XG5pbXBvcnQgeyBEaXN0U3R5bGVUeXBlLCBTb3J0U3R5bGVUeXBlLCBUYWJsZSwgVGFibGVUeXBlIH0gZnJvbSBcIkBkYXRhZm9ybS9jb3JlL3RhYmxlXCI7XG5pbXBvcnQgeyBkYXRhZm9ybSB9IGZyb20gXCJAZGF0YWZvcm0vcHJvdG9zXCI7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gXCJwYXRoXCI7XG5cbmNvbnN0IFNRTF9EQVRBX1dBUkVIT1VTRV9ESVNUX0hBU0hfUkVHRVhQID0gbmV3IFJlZ0V4cChcIkhBU0hcXFxccypcXFxcKFxcXFxzKlxcXFx3KlxcXFxzKlxcXFwpXFxcXHMqXCIpO1xuXG5mdW5jdGlvbiByZWxhdGl2ZVBhdGgoZnVsbFBhdGg6IHN0cmluZywgYmFzZTogc3RyaW5nKSB7XG4gIGlmIChiYXNlLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBmdWxsUGF0aDtcbiAgfVxuICBjb25zdCBzdHJpcHBlZCA9IGZ1bGxQYXRoLnN1YnN0cihiYXNlLmxlbmd0aCk7XG4gIGlmIChzdHJpcHBlZC5zdGFydHNXaXRoKHBhdGguc2VwKSkge1xuICAgIHJldHVybiBzdHJpcHBlZC5zdWJzdHIoMSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHN0cmlwcGVkO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBiYXNlRmlsZW5hbWUoZnVsbFBhdGg6IHN0cmluZykge1xuICByZXR1cm4gcGF0aC5iYXNlbmFtZShmdWxsUGF0aCkuc3BsaXQoXCIuXCIpWzBdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWF0Y2hQYXR0ZXJucyhwYXR0ZXJuczogc3RyaW5nW10sIHZhbHVlczogc3RyaW5nW10pIHtcbiAgY29uc3QgZnVsbHlRdWFsaWZpZWRBY3Rpb25zOiBzdHJpbmdbXSA9IFtdO1xuICBwYXR0ZXJucy5mb3JFYWNoKHBhdHRlcm4gPT4ge1xuICAgIGlmIChwYXR0ZXJuLmluY2x1ZGVzKFwiLlwiKSkge1xuICAgICAgaWYgKHZhbHVlcy5pbmNsdWRlcyhwYXR0ZXJuKSkge1xuICAgICAgICBmdWxseVF1YWxpZmllZEFjdGlvbnMucHVzaChwYXR0ZXJuKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgbWF0Y2hpbmdBY3Rpb25zID0gdmFsdWVzLmZpbHRlcih2YWx1ZSA9PiBwYXR0ZXJuID09PSB2YWx1ZS5zcGxpdChcIi5cIikuc2xpY2UoLTEpWzBdKTtcbiAgICAgIGlmIChtYXRjaGluZ0FjdGlvbnMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmIChtYXRjaGluZ0FjdGlvbnMubGVuZ3RoID4gMSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYW1iaWd1b3VzQWN0aW9uTmFtZU1zZyhwYXR0ZXJuLCBtYXRjaGluZ0FjdGlvbnMpKTtcbiAgICAgIH1cbiAgICAgIGZ1bGx5UXVhbGlmaWVkQWN0aW9ucy5wdXNoKG1hdGNoaW5nQWN0aW9uc1swXSk7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIGZ1bGx5UXVhbGlmaWVkQWN0aW9ucztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldENhbGxlckZpbGUocm9vdERpcjogc3RyaW5nKSB7XG4gIGxldCBsYXN0ZmlsZTogc3RyaW5nO1xuICBjb25zdCBzdGFjayA9IGdldEN1cnJlbnRTdGFjaygpO1xuICB3aGlsZSAoc3RhY2subGVuZ3RoKSB7XG4gICAgY29uc3QgbmV4dExhc3RmaWxlID0gc3RhY2suc2hpZnQoKS5nZXRGaWxlTmFtZSgpO1xuICAgIGlmICghbmV4dExhc3RmaWxlKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgaWYgKCFuZXh0TGFzdGZpbGUuaW5jbHVkZXMocm9vdERpcikpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBpZiAobmV4dExhc3RmaWxlLmluY2x1ZGVzKFwibm9kZV9tb2R1bGVzXCIpKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgLy8gSWYgaXQncyBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgd2UnbGwgdGFrZSBpdCwgYnV0IGtlZXAgc2VhcmNoaW5nXG4gICAgLy8gZm9yIGEgYmV0dGVyIG1hdGNoLlxuICAgIGxhc3RmaWxlID0gbmV4dExhc3RmaWxlO1xuICAgIGlmIChcbiAgICAgICEoXG4gICAgICAgIG5leHRMYXN0ZmlsZS5pbmNsdWRlcyhgZGVmaW5pdGlvbnMke3BhdGguc2VwfWApIHx8XG4gICAgICAgIG5leHRMYXN0ZmlsZS5pbmNsdWRlcyhgbW9kZWxzJHtwYXRoLnNlcH1gKVxuICAgICAgKVxuICAgICkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGJyZWFrO1xuICB9XG4gIHJldHVybiByZWxhdGl2ZVBhdGgobGFzdGZpbGUsIHJvb3REaXIpO1xufVxuXG5mdW5jdGlvbiBnZXRDdXJyZW50U3RhY2soKTogTm9kZUpTLkNhbGxTaXRlW10ge1xuICBjb25zdCBvcmlnaW5hbFByZXBhcmVTdGFja1RyYWNlID0gRXJyb3IucHJlcGFyZVN0YWNrVHJhY2U7XG4gIHRyeSB7XG4gICAgRXJyb3IucHJlcGFyZVN0YWNrVHJhY2UgPSAoZXJyLCBzdGFjaykgPT4ge1xuICAgICAgcmV0dXJuIHN0YWNrO1xuICAgIH07XG4gICAgcmV0dXJuIChuZXcgRXJyb3IoKS5zdGFjayBhcyB1bmtub3duKSBhcyBOb2RlSlMuQ2FsbFNpdGVbXTtcbiAgfSBmaW5hbGx5IHtcbiAgICBFcnJvci5wcmVwYXJlU3RhY2tUcmFjZSA9IG9yaWdpbmFsUHJlcGFyZVN0YWNrVHJhY2U7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdyYXBoSGFzRXJyb3JzKGdyYXBoOiBkYXRhZm9ybS5JQ29tcGlsZWRHcmFwaCkge1xuICBjb25zdCBncmFwaEVycm9ycyA9IHZhbGlkYXRlKGdyYXBoKTtcblxuICByZXR1cm4gKFxuICAgIChncmFwaEVycm9ycy5jb21waWxhdGlvbkVycm9ycyAmJiBncmFwaEVycm9ycy5jb21waWxhdGlvbkVycm9ycy5sZW5ndGggPiAwKSB8fFxuICAgIChncmFwaEVycm9ycy52YWxpZGF0aW9uRXJyb3JzICYmIGdyYXBoRXJyb3JzLnZhbGlkYXRpb25FcnJvcnMubGVuZ3RoID4gMClcbiAgKTtcbn1cblxuZnVuY3Rpb24gam9pblF1b3RlZCh2YWx1ZXM6IHJlYWRvbmx5IHN0cmluZ1tdKSB7XG4gIHJldHVybiB2YWx1ZXMubWFwKCh2YWx1ZTogc3RyaW5nKSA9PiBgXCIke3ZhbHVlfVwiYCkuam9pbihcIiB8IFwiKTtcbn1cblxuZnVuY3Rpb24gb2JqZWN0RXhpc3RzT3JJc05vbkVtcHR5KHByb3A6IGFueSk6IGJvb2xlYW4ge1xuICBpZiAoIXByb3ApIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gKFxuICAgIChBcnJheS5pc0FycmF5KHByb3ApICYmICEhcHJvcC5sZW5ndGgpIHx8XG4gICAgKCFBcnJheS5pc0FycmF5KHByb3ApICYmIHR5cGVvZiBwcm9wID09PSBcIm9iamVjdFwiICYmICEhT2JqZWN0LmtleXMocHJvcCkubGVuZ3RoKSB8fFxuICAgIHR5cGVvZiBwcm9wICE9PSBcIm9iamVjdFwiXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZShjb21waWxlZEdyYXBoOiBkYXRhZm9ybS5JQ29tcGlsZWRHcmFwaCk6IGRhdGFmb3JtLklHcmFwaEVycm9ycyB7XG4gIGNvbnN0IHZhbGlkYXRpb25FcnJvcnM6IGRhdGFmb3JtLklWYWxpZGF0aW9uRXJyb3JbXSA9IFtdO1xuXG4gIC8vIFRhYmxlIHZhbGlkYXRpb25cbiAgY29tcGlsZWRHcmFwaC50YWJsZXMuZm9yRWFjaChhY3Rpb24gPT4ge1xuICAgIGNvbnN0IGFjdGlvbk5hbWUgPSBhY3Rpb24ubmFtZTtcblxuICAgIC8vIHR5cGVcbiAgICBpZiAoISFhY3Rpb24udHlwZSAmJiAhVGFibGVUeXBlLmluY2x1ZGVzKGFjdGlvbi50eXBlIGFzIFRhYmxlVHlwZSkpIHtcbiAgICAgIGNvbnN0IHByZWRlZmluZWRUeXBlcyA9IGpvaW5RdW90ZWQoVGFibGVUeXBlKTtcbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSBgV3JvbmcgdHlwZSBvZiB0YWJsZSBkZXRlY3RlZC4gU2hvdWxkIG9ubHkgdXNlIHByZWRlZmluZWQgdHlwZXM6ICR7cHJlZGVmaW5lZFR5cGVzfWA7XG4gICAgICB2YWxpZGF0aW9uRXJyb3JzLnB1c2goZGF0YWZvcm0uVmFsaWRhdGlvbkVycm9yLmNyZWF0ZSh7IG1lc3NhZ2UsIGFjdGlvbk5hbWUgfSkpO1xuICAgIH1cblxuICAgIC8vIHNxbGRhdGF3YXJlaG91c2UgY29uZmlnXG4gICAgaWYgKCEhYWN0aW9uLnNxbERhdGFXYXJlaG91c2UpIHtcbiAgICAgIGlmIChhY3Rpb24udW5pcXVlS2V5KSB7XG4gICAgICAgIHZhbGlkYXRpb25FcnJvcnMucHVzaChcbiAgICAgICAgICBkYXRhZm9ybS5WYWxpZGF0aW9uRXJyb3IuY3JlYXRlKHtcbiAgICAgICAgICAgIG1lc3NhZ2U6IFwiTWVyZ2luZyB1c2luZyB1bmlxdWUga2V5cyBmb3IgU1FMRGF0YVdhcmVob3VzZSBoYXMgbm90IHlldCBiZWVuIGltcGxlbWVudGVkLlwiLFxuICAgICAgICAgICAgYWN0aW9uTmFtZVxuICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGlmIChhY3Rpb24uc3FsRGF0YVdhcmVob3VzZS5kaXN0cmlidXRpb24pIHtcbiAgICAgICAgY29uc3QgZGlzdHJpYnV0aW9uID0gYWN0aW9uLnNxbERhdGFXYXJlaG91c2UuZGlzdHJpYnV0aW9uLnRvVXBwZXJDYXNlKCk7XG4gICAgICAgIGlmIChcbiAgICAgICAgICBkaXN0cmlidXRpb24gIT09IFwiUkVQTElDQVRFXCIgJiZcbiAgICAgICAgICBkaXN0cmlidXRpb24gIT09IFwiUk9VTkRfUk9CSU5cIiAmJlxuICAgICAgICAgICFTUUxfREFUQV9XQVJFSE9VU0VfRElTVF9IQVNIX1JFR0VYUC50ZXN0KGRpc3RyaWJ1dGlvbilcbiAgICAgICAgKSB7XG4gICAgICAgICAgY29uc3QgbWVzc2FnZSA9IGBJbnZhbGlkIHZhbHVlIGZvciBzcWxkYXRhd2FyZWhvdXNlIGRpc3RyaWJ1dGlvbjogXCIke2Rpc3RyaWJ1dGlvbn1cImA7XG4gICAgICAgICAgdmFsaWRhdGlvbkVycm9ycy5wdXNoKGRhdGFmb3JtLlZhbGlkYXRpb25FcnJvci5jcmVhdGUoeyBtZXNzYWdlLCBhY3Rpb25OYW1lIH0pKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIHJlZHNoaWZ0IGNvbmZpZ1xuICAgIGlmICghIWFjdGlvbi5yZWRzaGlmdCkge1xuICAgICAgY29uc3QgdmFsaWRhdGVQcm9wZXJ0eURlZmluZWQgPSAoXG4gICAgICAgIG9wdHM6IGRhdGFmb3JtLklSZWRzaGlmdE9wdGlvbnMsXG4gICAgICAgIHByb3A6IGtleW9mIGRhdGFmb3JtLklSZWRzaGlmdE9wdGlvbnNcbiAgICAgICkgPT4ge1xuICAgICAgICBjb25zdCBlcnJvciA9IGRhdGFmb3JtLlZhbGlkYXRpb25FcnJvci5jcmVhdGUoe1xuICAgICAgICAgIG1lc3NhZ2U6IGBQcm9wZXJ0eSBcIiR7cHJvcH1cIiBpcyBub3QgZGVmaW5lZGAsXG4gICAgICAgICAgYWN0aW9uTmFtZVxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgdmFsdWUgPSBvcHRzW3Byb3BdO1xuICAgICAgICBpZiAoIW9wdHMuaGFzT3duUHJvcGVydHkocHJvcCkpIHtcbiAgICAgICAgICB2YWxpZGF0aW9uRXJyb3JzLnB1c2goZXJyb3IpO1xuICAgICAgICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICAgICAgICBpZiAodmFsdWUubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICB2YWxpZGF0aW9uRXJyb3JzLnB1c2goZXJyb3IpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfTtcbiAgICAgIGNvbnN0IHZhbGlkYXRlUHJvcGVydGllc0RlZmluZWQgPSAoXG4gICAgICAgIG9wdHM6IGRhdGFmb3JtLklSZWRzaGlmdE9wdGlvbnMsXG4gICAgICAgIHByb3BzOiBBcnJheTxrZXlvZiBkYXRhZm9ybS5JUmVkc2hpZnRPcHRpb25zPlxuICAgICAgKSA9PiBwcm9wcy5mb3JFYWNoKHByb3AgPT4gdmFsaWRhdGVQcm9wZXJ0eURlZmluZWQob3B0cywgcHJvcCkpO1xuICAgICAgY29uc3QgdmFsaWRhdGVQcm9wZXJ0eVZhbHVlSW5WYWx1ZXMgPSAoXG4gICAgICAgIG9wdHM6IGRhdGFmb3JtLklSZWRzaGlmdE9wdGlvbnMsXG4gICAgICAgIHByb3A6IGtleW9mIGRhdGFmb3JtLklSZWRzaGlmdE9wdGlvbnMgJiAoXCJkaXN0U3R5bGVcIiB8IFwic29ydFN0eWxlXCIpLFxuICAgICAgICB2YWx1ZXM6IHJlYWRvbmx5IHN0cmluZ1tdXG4gICAgICApID0+IHtcbiAgICAgICAgaWYgKCEhb3B0c1twcm9wXSAmJiAhdmFsdWVzLmluY2x1ZGVzKG9wdHNbcHJvcF0pKSB7XG4gICAgICAgICAgY29uc3QgbWVzc2FnZSA9IGBXcm9uZyB2YWx1ZSBvZiBcIiR7cHJvcH1cIiBwcm9wZXJ0eS4gU2hvdWxkIG9ubHkgdXNlIHByZWRlZmluZWQgdmFsdWVzOiAke2pvaW5RdW90ZWQoXG4gICAgICAgICAgICB2YWx1ZXNcbiAgICAgICAgICApfWA7XG4gICAgICAgICAgdmFsaWRhdGlvbkVycm9ycy5wdXNoKGRhdGFmb3JtLlZhbGlkYXRpb25FcnJvci5jcmVhdGUoeyBtZXNzYWdlLCBhY3Rpb25OYW1lIH0pKTtcbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgICAgaWYgKGFjdGlvbi5yZWRzaGlmdC5kaXN0U3R5bGUgfHwgYWN0aW9uLnJlZHNoaWZ0LmRpc3RLZXkpIHtcbiAgICAgICAgdmFsaWRhdGVQcm9wZXJ0aWVzRGVmaW5lZChhY3Rpb24ucmVkc2hpZnQsIFtcImRpc3RTdHlsZVwiLCBcImRpc3RLZXlcIl0pO1xuICAgICAgICB2YWxpZGF0ZVByb3BlcnR5VmFsdWVJblZhbHVlcyhhY3Rpb24ucmVkc2hpZnQsIFwiZGlzdFN0eWxlXCIsIERpc3RTdHlsZVR5cGUpO1xuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICBhY3Rpb24ucmVkc2hpZnQuc29ydFN0eWxlIHx8XG4gICAgICAgIChhY3Rpb24ucmVkc2hpZnQuc29ydEtleXMgJiYgYWN0aW9uLnJlZHNoaWZ0LnNvcnRLZXlzLmxlbmd0aClcbiAgICAgICkge1xuICAgICAgICB2YWxpZGF0ZVByb3BlcnRpZXNEZWZpbmVkKGFjdGlvbi5yZWRzaGlmdCwgW1wic29ydFN0eWxlXCIsIFwic29ydEtleXNcIl0pO1xuICAgICAgICB2YWxpZGF0ZVByb3BlcnR5VmFsdWVJblZhbHVlcyhhY3Rpb24ucmVkc2hpZnQsIFwic29ydFN0eWxlXCIsIFNvcnRTdHlsZVR5cGUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEJpZ1F1ZXJ5IGNvbmZpZ1xuICAgIGlmICghIWFjdGlvbi5iaWdxdWVyeSkge1xuICAgICAgaWYgKGFjdGlvbi5iaWdxdWVyeS5wYXJ0aXRpb25CeSAmJiBhY3Rpb24udHlwZSA9PT0gXCJ2aWV3XCIpIHtcbiAgICAgICAgY29uc3QgZXJyb3IgPSBkYXRhZm9ybS5WYWxpZGF0aW9uRXJyb3IuY3JlYXRlKHtcbiAgICAgICAgICBtZXNzYWdlOiBgcGFydGl0aW9uQnkvY2x1c3RlckJ5IGFyZSBub3QgdmFsaWQgZm9yIEJpZ1F1ZXJ5IHZpZXdzOyB0aGV5IGFyZSBvbmx5IHZhbGlkIGZvciB0YWJsZXNgLFxuICAgICAgICAgIGFjdGlvbk5hbWVcbiAgICAgICAgfSk7XG4gICAgICAgIHZhbGlkYXRpb25FcnJvcnMucHVzaChlcnJvcik7XG4gICAgICB9XG4gICAgICBpZiAoISFhY3Rpb24uYmlncXVlcnkuY2x1c3RlckJ5ICYmICFhY3Rpb24uYmlncXVlcnkucGFydGl0aW9uQnkpIHtcbiAgICAgICAgY29uc3QgZXJyb3IgPSBkYXRhZm9ybS5WYWxpZGF0aW9uRXJyb3IuY3JlYXRlKHtcbiAgICAgICAgICBtZXNzYWdlOiBgY2x1c3RlckJ5IGlzIG5vdCB2YWxpZCB3aXRob3V0IHBhcnRpdGlvbkJ5YCxcbiAgICAgICAgICBhY3Rpb25OYW1lXG4gICAgICAgIH0pO1xuICAgICAgICB2YWxpZGF0aW9uRXJyb3JzLnB1c2goZXJyb3IpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIGlnbm9yZWQgcHJvcGVydGllcyBpbiB0YWJsZXNcbiAgICBpZiAoISFUYWJsZS5JR05PUkVEX1BST1BTW2FjdGlvbi50eXBlXSkge1xuICAgICAgVGFibGUuSUdOT1JFRF9QUk9QU1thY3Rpb24udHlwZV0uZm9yRWFjaChpZ25vcmVkUHJvcCA9PiB7XG4gICAgICAgIGlmIChvYmplY3RFeGlzdHNPcklzTm9uRW1wdHkoYWN0aW9uW2lnbm9yZWRQcm9wXSkpIHtcbiAgICAgICAgICBjb25zdCBtZXNzYWdlID0gYFVudXNlZCBwcm9wZXJ0eSB3YXMgZGV0ZWN0ZWQ6IFwiJHtpZ25vcmVkUHJvcH1cIi4gVGhpcyBwcm9wZXJ0eSBpcyBub3QgdXNlZCBmb3IgdGFibGVzIHdpdGggdHlwZSBcIiR7YWN0aW9uLnR5cGV9XCIgYW5kIHdpbGwgYmUgaWdub3JlZC5gO1xuICAgICAgICAgIHZhbGlkYXRpb25FcnJvcnMucHVzaChkYXRhZm9ybS5WYWxpZGF0aW9uRXJyb3IuY3JlYXRlKHsgbWVzc2FnZSwgYWN0aW9uTmFtZSB9KSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfSk7XG5cbiAgY29uc3QgY29tcGlsYXRpb25FcnJvcnMgPVxuICAgIGNvbXBpbGVkR3JhcGguZ3JhcGhFcnJvcnMgJiYgY29tcGlsZWRHcmFwaC5ncmFwaEVycm9ycy5jb21waWxhdGlvbkVycm9yc1xuICAgICAgPyBjb21waWxlZEdyYXBoLmdyYXBoRXJyb3JzLmNvbXBpbGF0aW9uRXJyb3JzXG4gICAgICA6IFtdO1xuXG4gIHJldHVybiBkYXRhZm9ybS5HcmFwaEVycm9ycy5jcmVhdGUoeyB2YWxpZGF0aW9uRXJyb3JzLCBjb21waWxhdGlvbkVycm9ycyB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZsYXR0ZW48VD4obmVzdGVkQXJyYXk6IFRbXVtdKSB7XG4gIHJldHVybiBuZXN0ZWRBcnJheS5yZWR1Y2UoKHByZXZpb3VzVmFsdWU6IFRbXSwgY3VycmVudFZhbHVlOiBUW10pID0+IHtcbiAgICByZXR1cm4gcHJldmlvdXNWYWx1ZS5jb25jYXQoY3VycmVudFZhbHVlKTtcbiAgfSwgW10pO1xufVxuXG5jb25zdCBpbnZhbGlkUmVmSW5wdXRNZXNzYWdlID1cbiAgXCJJbnZhbGlkIGlucHV0LiBBY2NlcHRlZCBpbnB1dHMgaW5jbHVkZTogYSBzaW5nbGUgb2JqZWN0IGNvbnRhaW5pbmcgXCIgK1xuICBcImFuIChvcHRpb25hbCkgJ2RhdGFiYXNlJywgKG9wdGlvbmFsKSAnc2NoZW1hJywgYW5kICduYW1lJywgXCIgK1xuICBcIm9yIDEtMyBpbnB1dHMgY29uc2lzdGluZyBvZiBhbiAob3B0aW9uYWwpIGRhdGFiYXNlLCAob3B0aW9uYWwpIHNjaGVtYSwgYW5kICduYW1lJy5cIjtcblxuZXhwb3J0IGZ1bmN0aW9uIHRvUmVzb2x2YWJsZShyZWY6IFJlc29sdmFibGUgfCBzdHJpbmdbXSwgcmVzdDogc3RyaW5nW10pOiBSZXNvbHZhYmxlIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkocmVmKSAmJiByZXN0Lmxlbmd0aCA+IDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoaW52YWxpZFJlZklucHV0TWVzc2FnZSk7XG4gIH1cbiAgaWYgKHJlc3QubGVuZ3RoID09PSAwICYmICFBcnJheS5pc0FycmF5KHJlZikpIHtcbiAgICByZXR1cm4gcmVmO1xuICB9XG4gIGNvbnN0IHJlc29sdmFibGVBcnJheSA9IEFycmF5LmlzQXJyYXkocmVmKSA/IHJlZi5yZXZlcnNlKCkgOiBbcmVmLCAuLi5yZXN0XS5yZXZlcnNlKCk7XG4gIGlmICghaXNSZXNvbHZhYmxlQXJyYXkocmVzb2x2YWJsZUFycmF5KSkge1xuICAgIHRocm93IG5ldyBFcnJvcihpbnZhbGlkUmVmSW5wdXRNZXNzYWdlKTtcbiAgfVxuICBjb25zdCBbbmFtZSwgc2NoZW1hLCBkYXRhYmFzZV0gPSByZXNvbHZhYmxlQXJyYXk7XG4gIHJldHVybiB7IGRhdGFiYXNlLCBzY2hlbWEsIG5hbWUgfTtcbn1cblxuZnVuY3Rpb24gaXNSZXNvbHZhYmxlQXJyYXkocGFydHM6IGFueVtdKTogcGFydHMgaXMgW3N0cmluZywgc3RyaW5nPywgc3RyaW5nP10ge1xuICBpZiAocGFydHMuc29tZShwYXJ0ID0+IHR5cGVvZiBwYXJ0ICE9PSBcInN0cmluZ1wiKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gcGFydHMubGVuZ3RoID4gMCAmJiBwYXJ0cy5sZW5ndGggPD0gMztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmFibGVBc1RhcmdldChyZXNvbHZhYmxlOiBSZXNvbHZhYmxlKTogZGF0YWZvcm0uSVRhcmdldCB7XG4gIGlmICh0eXBlb2YgcmVzb2x2YWJsZSA9PT0gXCJzdHJpbmdcIikge1xuICAgIHJldHVybiB7XG4gICAgICBuYW1lOiByZXNvbHZhYmxlXG4gICAgfTtcbiAgfVxuICByZXR1cm4gcmVzb2x2YWJsZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN0cmluZ2lmeVJlc29sdmFibGUocmVzOiBSZXNvbHZhYmxlKSB7XG4gIHJldHVybiB0eXBlb2YgcmVzID09PSBcInN0cmluZ1wiID8gcmVzIDogSlNPTi5zdHJpbmdpZnkocmVzKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFtYmlndW91c0FjdGlvbk5hbWVNc2coXG4gIGFjdDogUmVzb2x2YWJsZSxcbiAgYWxsQWN0czogQXJyYXk8VGFibGUgfCBPcGVyYXRpb24gfCBBc3NlcnRpb24gfCBEZWNsYXJhdGlvbj4gfCBzdHJpbmdbXVxuKSB7XG4gIGNvbnN0IGFsbEFjdE5hbWVzID1cbiAgICB0eXBlb2YgYWxsQWN0c1swXSA9PT0gXCJzdHJpbmdcIlxuICAgICAgPyBhbGxBY3RzXG4gICAgICA6IChhbGxBY3RzIGFzIEFycmF5PFRhYmxlIHwgT3BlcmF0aW9uIHwgQXNzZXJ0aW9uPikubWFwKFxuICAgICAgICAgIHIgPT4gYCR7ci5wcm90by50YXJnZXQuc2NoZW1hfS4ke3IucHJvdG8udGFyZ2V0Lm5hbWV9YFxuICAgICAgICApO1xuICByZXR1cm4gYEFtYmlndW91cyBBY3Rpb24gbmFtZTogJHtzdHJpbmdpZnlSZXNvbHZhYmxlKFxuICAgIGFjdFxuICApfS4gRGlkIHlvdSBtZWFuIG9uZSBvZjogJHthbGxBY3ROYW1lcy5qb2luKFwiLCBcIil9LmA7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0YXJnZXQoXG4gIGFkYXB0ZXI6IGFkYXB0ZXJzLklBZGFwdGVyLFxuICBuYW1lOiBzdHJpbmcsXG4gIHNjaGVtYTogc3RyaW5nLFxuICBkYXRhYmFzZT86IHN0cmluZ1xuKTogZGF0YWZvcm0uSVRhcmdldCB7XG4gIHJldHVybiBkYXRhZm9ybS5UYXJnZXQuY3JlYXRlKHtcbiAgICBuYW1lOiBhZGFwdGVyLm5vcm1hbGl6ZUlkZW50aWZpZXIobmFtZSksXG4gICAgc2NoZW1hOiBhZGFwdGVyLm5vcm1hbGl6ZUlkZW50aWZpZXIoc2NoZW1hKSxcbiAgICBkYXRhYmFzZTogZGF0YWJhc2UgJiYgYWRhcHRlci5ub3JtYWxpemVJZGVudGlmaWVyKGRhdGFiYXNlKVxuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNldE5hbWVBbmRUYXJnZXQoXG4gIHNlc3Npb246IFNlc3Npb24sXG4gIGFjdGlvbjogSUFjdGlvblByb3RvLFxuICBuYW1lOiBzdHJpbmcsXG4gIG92ZXJyaWRlU2NoZW1hPzogc3RyaW5nLFxuICBvdmVycmlkZURhdGFiYXNlPzogc3RyaW5nXG4pIHtcbiAgYWN0aW9uLnRhcmdldCA9IHRhcmdldChcbiAgICBzZXNzaW9uLmFkYXB0ZXIoKSxcbiAgICBuYW1lLFxuICAgIG92ZXJyaWRlU2NoZW1hIHx8IHNlc3Npb24uY29uZmlnLmRlZmF1bHRTY2hlbWEsXG4gICAgb3ZlcnJpZGVEYXRhYmFzZSB8fCBzZXNzaW9uLmNvbmZpZy5kZWZhdWx0RGF0YWJhc2VcbiAgKTtcbiAgY29uc3QgbmFtZVBhcnRzID0gW2FjdGlvbi50YXJnZXQubmFtZSwgYWN0aW9uLnRhcmdldC5zY2hlbWFdO1xuICBpZiAoISFhY3Rpb24udGFyZ2V0LmRhdGFiYXNlKSB7XG4gICAgbmFtZVBhcnRzLnB1c2goYWN0aW9uLnRhcmdldC5kYXRhYmFzZSk7XG4gIH1cbiAgYWN0aW9uLm5hbWUgPSBuYW1lUGFydHMucmV2ZXJzZSgpLmpvaW4oXCIuXCIpO1xufVxuXG4vKipcbiAqIENoZWNrcyB0aGF0IHRoZSBnaXZlbiBsaXN0IG9mIGtleXMgY29tcGxldGVseSBjb3ZlcnMgYWxsIHN1cHBvcnRlZCBrZXlzIGluIHRoZSBnaXZlbiBpbnRlcmZhY2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzdHJpY3RLZXlzT2Y8VD4oKSB7XG4gIHJldHVybiA8VSBleHRlbmRzIEFycmF5PGtleW9mIFQ+PihcbiAgICBhcnJheTogVSAmIChba2V5b2YgVF0gZXh0ZW5kcyBbVVtudW1iZXJdXSA/IHVua25vd24gOiBBcnJheTxbXCJOZWVkcyB0byBiZSBhbGwgb2ZcIiwgVF0+KVxuICApID0+IGFycmF5O1xufVxuXG4vKipcbiAqIFdpbGwgdGhyb3cgYW4gZXJyb3IgaWYgdGhlIHByb3ZpZGVkIG9iamVjdCBjb250YWlucyBhbnkgcHJvcGVydGllcyB0aGF0IGFyZW4ndCBpbiB0aGUgcHJvdmlkZWQgbGlzdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNoZWNrRXhjZXNzUHJvcGVydGllczxUPihcbiAgcmVwb3J0RXJyb3I6IChlOiBFcnJvcikgPT4gdm9pZCxcbiAgb2JqZWN0OiBULFxuICBzdXBwb3J0ZWRQcm9wZXJ0aWVzOiBzdHJpbmdbXSxcbiAgbmFtZT86IHN0cmluZ1xuKSB7XG4gIGNvbnN0IGV4dHJhUHJvcGVydGllcyA9IE9iamVjdC5rZXlzKG9iamVjdCkuZmlsdGVyKFxuICAgIGtleSA9PiAhKHN1cHBvcnRlZFByb3BlcnRpZXMgYXMgc3RyaW5nW10pLmluY2x1ZGVzKGtleSlcbiAgKTtcbiAgaWYgKGV4dHJhUHJvcGVydGllcy5sZW5ndGggPiAwKSB7XG4gICAgcmVwb3J0RXJyb3IoXG4gICAgICBuZXcgRXJyb3IoXG4gICAgICAgIGBVbmV4cGVjdGVkIHByb3BlcnR5IFwiJHtleHRyYVByb3BlcnRpZXNbMF19XCIke1xuICAgICAgICAgICEhbmFtZSA/IGAgaW4gJHtuYW1lfWAgOiBcIlwiXG4gICAgICAgIH0uIFN1cHBvcnRlZCBwcm9wZXJ0aWVzIGFyZTogJHtKU09OLnN0cmluZ2lmeShzdXBwb3J0ZWRQcm9wZXJ0aWVzKX1gXG4gICAgICApXG4gICAgKTtcbiAgfVxufVxuIl19

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