cdk8s-plus-29
Version:
cdk8s+ is a software development framework that provides high level abstractions for authoring Kubernetes applications. cdk8s-plus-29 synthesizes Kubernetes manifests for Kubernetes 1.29.0
109 lines • 13.5 kB
JavaScript
"use strict";
var _a, _b;
Object.defineProperty(exports, "__esModule", { value: true });
exports.Namespaces = exports.Namespace = void 0;
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
const cdk8s_1 = require("cdk8s");
const constructs_1 = require("constructs");
const base = require("./base");
const k8s = require("./imports/k8s");
const pod = require("./pod");
/**
* In Kubernetes, namespaces provides a mechanism for isolating groups of resources within a single cluster.
* Names of resources need to be unique within a namespace, but not across namespaces.
* Namespace-based scoping is applicable only for namespaced objects (e.g. Deployments, Services, etc) and
* not for cluster-wide objects (e.g. StorageClass, Nodes, PersistentVolumes, etc).
*/
class Namespace extends base.Resource {
constructor(scope, id, props = {}) {
super(scope, id);
this.resourceType = 'namespaces';
this.apiObject = new k8s.KubeNamespace(this, 'Resource', {
metadata: props.metadata,
spec: cdk8s_1.Lazy.any({ produce: () => this._toKube() }),
});
this._pods = pod.Pods.all(this, 'Pods', {
namespaces: Namespaces.select(this, 'Namespaces', { names: [this.name] }),
});
}
/**
* @see INamespaceSelector.toNamespaceSelectorConfig()
*/
toNamespaceSelectorConfig() {
return { names: [this.name] };
}
/**
* @see INetworkPolicyPeer.toNetworkPolicyPeerConfig()
*/
toNetworkPolicyPeerConfig() {
return this._pods.toNetworkPolicyPeerConfig();
}
/**
* @see INetworkPolicyPeer.toPodSelector()
*/
toPodSelector() {
return this._pods.toPodSelector();
}
/**
* @internal
*/
_toKube() {
return {};
}
}
exports.Namespace = Namespace;
_a = JSII_RTTI_SYMBOL_1;
Namespace[_a] = { fqn: "cdk8s-plus-29.Namespace", version: "2.6.0" };
/**
* @see https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/#automatic-labelling
*/
Namespace.NAME_LABEL = 'kubernetes.io/metadata.name';
/**
* Represents a group of namespaces.
*/
class Namespaces extends constructs_1.Construct {
/**
* Select specific namespaces.
*/
static select(scope, id, options) {
return new Namespaces(scope, id, options.expressions, options.names, options.labels);
}
/**
* Select all namespaces.
*/
static all(scope, id) {
return Namespaces.select(scope, id, { expressions: [], labels: {} });
}
constructor(scope, id, expressions, names, labels) {
super(scope, id);
this.expressions = expressions;
this.names = names;
this.labels = labels;
this._pods = pod.Pods.all(this, 'Pods', { namespaces: this });
}
/**
* @see INamespaceSelector.toNamespaceSelectorConfig()
*/
toNamespaceSelectorConfig() {
return {
labelSelector: pod.LabelSelector.of({ expressions: this.expressions, labels: this.labels }),
names: this.names,
};
}
/**
* @see INetworkPolicyPeer.toNetworkPolicyPeerConfig()
*/
toNetworkPolicyPeerConfig() {
return this._pods.toNetworkPolicyPeerConfig();
}
/**
* @see INetworkPolicyPeer.toPodSelector()
*/
toPodSelector() {
return this._pods.toPodSelector();
}
}
exports.Namespaces = Namespaces;
_b = JSII_RTTI_SYMBOL_1;
Namespaces[_b] = { fqn: "cdk8s-plus-29.Namespaces", version: "2.6.0" };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmFtZXNwYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL25hbWVzcGFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLGlDQUF3QztBQUN4QywyQ0FBbUQ7QUFDbkQsK0JBQStCO0FBQy9CLHFDQUFxQztBQUVyQyw2QkFBNkI7QUFpQzdCOzs7OztHQUtHO0FBQ0gsTUFBYSxTQUFVLFNBQVEsSUFBSSxDQUFDLFFBQVE7SUFnQjFDLFlBQW1CLEtBQWdCLEVBQUUsRUFBVSxFQUFFLFFBQXdCLEVBQUU7UUFDekUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUxILGlCQUFZLEdBQVcsWUFBWSxDQUFDO1FBT2xELElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxHQUFHLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxVQUFVLEVBQUU7WUFDdkQsUUFBUSxFQUFFLEtBQUssQ0FBQyxRQUFRO1lBQ3hCLElBQUksRUFBRSxZQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDO1NBQ2xELENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxLQUFLLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRTtZQUN0QyxVQUFVLEVBQUUsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsWUFBWSxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7U0FDMUUsQ0FBQyxDQUFDO0lBRUwsQ0FBQztJQUVEOztPQUVHO0lBQ0kseUJBQXlCO1FBQzlCLE9BQU8sRUFBRSxLQUFLLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBRUQ7O09BRUc7SUFDSSx5QkFBeUI7UUFDOUIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLHlCQUF5QixFQUFFLENBQUM7SUFDaEQsQ0FBQztJQUVEOztPQUVHO0lBQ0ksYUFBYTtRQUNsQixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDcEMsQ0FBQztJQUVEOztPQUVHO0lBQ0ksT0FBTztRQUNaLE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQzs7QUF4REgsOEJBMERDOzs7QUF4REM7O0dBRUc7QUFDb0Isb0JBQVUsR0FBRyw2QkFBNkIsQUFBaEMsQ0FBaUM7QUFzRnBFOztHQUVHO0FBQ0gsTUFBYSxVQUFXLFNBQVEsc0JBQVM7SUFFdkM7O09BRUc7SUFDSSxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQWdCLEVBQUUsRUFBVSxFQUFFLE9BQWdDO1FBQ2pGLE9BQU8sSUFBSSxVQUFVLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxPQUFPLENBQUMsV0FBVyxFQUFFLE9BQU8sQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3ZGLENBQUM7SUFFRDs7T0FFRztJQUNJLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBZ0IsRUFBRSxFQUFVO1FBQzVDLE9BQU8sVUFBVSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEVBQUUsV0FBVyxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN2RSxDQUFDO0lBSUQsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFDckIsV0FBbUMsRUFDbkMsS0FBZ0IsRUFDaEIsTUFBa0M7UUFDbkQsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUhBLGdCQUFXLEdBQVgsV0FBVyxDQUF3QjtRQUNuQyxVQUFLLEdBQUwsS0FBSyxDQUFXO1FBQ2hCLFdBQU0sR0FBTixNQUFNLENBQTRCO1FBR25ELElBQUksQ0FBQyxLQUFLLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFFRDs7T0FFRztJQUNJLHlCQUF5QjtRQUM5QixPQUFPO1lBQ0wsYUFBYSxFQUFFLEdBQUcsQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDLEVBQUUsV0FBVyxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBRTtZQUM1RixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7U0FDbEIsQ0FBQztJQUNKLENBQUM7SUFFRDs7T0FFRztJQUNJLHlCQUF5QjtRQUM5QixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMseUJBQXlCLEVBQUUsQ0FBQztJQUNoRCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxhQUFhO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUNwQyxDQUFDOztBQWpESCxnQ0FtREMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBcGlPYmplY3QsIExhenkgfSBmcm9tICdjZGs4cyc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QsIElDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCAqIGFzIGJhc2UgZnJvbSAnLi9iYXNlJztcbmltcG9ydCAqIGFzIGs4cyBmcm9tICcuL2ltcG9ydHMvazhzJztcbmltcG9ydCAqIGFzIG5ldHdvcmtwb2xpY3kgZnJvbSAnLi9uZXR3b3JrLXBvbGljeSc7XG5pbXBvcnQgKiBhcyBwb2QgZnJvbSAnLi9wb2QnO1xuXG4vKipcbiAqIENvbmZpZ3VyYXRpb24gZm9yIHNlbGVjdGluZyBuYW1lc3BhY2VzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5hbWVzcGFjZVNlbGVjdG9yQ29uZmlnIHtcblxuICAvKipcbiAgICogQSBzZWxlY3RvciB0byBzZWxlY3QgbmFtZXNwYWNlcyBieSBsYWJlbHMuXG4gICAqL1xuICByZWFkb25seSBsYWJlbFNlbGVjdG9yPzogcG9kLkxhYmVsU2VsZWN0b3I7XG5cbiAgLyoqXG4gICAqIEEgbGlzdCBvZiBuYW1lcyB0byBzZWxlY3QgbmFtZXNwYWNlcyBieSBuYW1lcy5cbiAgICovXG4gIHJlYWRvbmx5IG5hbWVzPzogc3RyaW5nW107XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyBhbiBvYmplY3QgdGhhdCBjYW4gc2VsZWN0IG5hbWVzcGFjZXMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSU5hbWVzcGFjZVNlbGVjdG9yIGV4dGVuZHMgSUNvbnN0cnVjdCB7XG4gIC8qKlxuICAgKiBSZXR1cm4gdGhlIGNvbmZpZ3VyYXRpb24gb2YgdGhpcyBzZWxlY3Rvci5cbiAgICovXG4gIHRvTmFtZXNwYWNlU2VsZWN0b3JDb25maWcoKTogTmFtZXNwYWNlU2VsZWN0b3JDb25maWc7XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgYE5hbWVzcGFjZWAuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTmFtZXNwYWNlUHJvcHMgZXh0ZW5kcyBiYXNlLlJlc291cmNlUHJvcHMge31cblxuLyoqXG4gKiBJbiBLdWJlcm5ldGVzLCBuYW1lc3BhY2VzIHByb3ZpZGVzIGEgbWVjaGFuaXNtIGZvciBpc29sYXRpbmcgZ3JvdXBzIG9mIHJlc291cmNlcyB3aXRoaW4gYSBzaW5nbGUgY2x1c3Rlci5cbiAqIE5hbWVzIG9mIHJlc291cmNlcyBuZWVkIHRvIGJlIHVuaXF1ZSB3aXRoaW4gYSBuYW1lc3BhY2UsIGJ1dCBub3QgYWNyb3NzIG5hbWVzcGFjZXMuXG4gKiBOYW1lc3BhY2UtYmFzZWQgc2NvcGluZyBpcyBhcHBsaWNhYmxlIG9ubHkgZm9yIG5hbWVzcGFjZWQgb2JqZWN0cyAoZS5nLiBEZXBsb3ltZW50cywgU2VydmljZXMsIGV0YykgYW5kXG4gKiBub3QgZm9yIGNsdXN0ZXItd2lkZSBvYmplY3RzIChlLmcuIFN0b3JhZ2VDbGFzcywgTm9kZXMsIFBlcnNpc3RlbnRWb2x1bWVzLCBldGMpLlxuICovXG5leHBvcnQgY2xhc3MgTmFtZXNwYWNlIGV4dGVuZHMgYmFzZS5SZXNvdXJjZSBpbXBsZW1lbnRzIElOYW1lc3BhY2VTZWxlY3RvciwgbmV0d29ya3BvbGljeS5JTmV0d29ya1BvbGljeVBlZXIge1xuXG4gIC8qKlxuICAgKiBAc2VlIGh0dHBzOi8va3ViZXJuZXRlcy5pby9kb2NzL2NvbmNlcHRzL292ZXJ2aWV3L3dvcmtpbmctd2l0aC1vYmplY3RzL25hbWVzcGFjZXMvI2F1dG9tYXRpYy1sYWJlbGxpbmdcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgTkFNRV9MQUJFTCA9ICdrdWJlcm5ldGVzLmlvL21ldGFkYXRhLm5hbWUnO1xuXG4gIC8qKlxuICAgKiBAc2VlIGJhc2UuUmVzb3VyY2UuYXBpT2JqZWN0XG4gICAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgYXBpT2JqZWN0OiBBcGlPYmplY3Q7XG5cbiAgcHVibGljIHJlYWRvbmx5IHJlc291cmNlVHlwZTogc3RyaW5nID0gJ25hbWVzcGFjZXMnO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3BvZHM6IHBvZC5Qb2RzO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogTmFtZXNwYWNlUHJvcHMgPSB7fSkge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICB0aGlzLmFwaU9iamVjdCA9IG5ldyBrOHMuS3ViZU5hbWVzcGFjZSh0aGlzLCAnUmVzb3VyY2UnLCB7XG4gICAgICBtZXRhZGF0YTogcHJvcHMubWV0YWRhdGEsXG4gICAgICBzcGVjOiBMYXp5LmFueSh7IHByb2R1Y2U6ICgpID0+IHRoaXMuX3RvS3ViZSgpIH0pLFxuICAgIH0pO1xuXG4gICAgdGhpcy5fcG9kcyA9IHBvZC5Qb2RzLmFsbCh0aGlzLCAnUG9kcycsIHtcbiAgICAgIG5hbWVzcGFjZXM6IE5hbWVzcGFjZXMuc2VsZWN0KHRoaXMsICdOYW1lc3BhY2VzJywgeyBuYW1lczogW3RoaXMubmFtZV0gfSksXG4gICAgfSk7XG5cbiAgfVxuXG4gIC8qKlxuICAgKiBAc2VlIElOYW1lc3BhY2VTZWxlY3Rvci50b05hbWVzcGFjZVNlbGVjdG9yQ29uZmlnKClcbiAgICovXG4gIHB1YmxpYyB0b05hbWVzcGFjZVNlbGVjdG9yQ29uZmlnKCk6IE5hbWVzcGFjZVNlbGVjdG9yQ29uZmlnIHtcbiAgICByZXR1cm4geyBuYW1lczogW3RoaXMubmFtZV0gfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAc2VlIElOZXR3b3JrUG9saWN5UGVlci50b05ldHdvcmtQb2xpY3lQZWVyQ29uZmlnKClcbiAgICovXG4gIHB1YmxpYyB0b05ldHdvcmtQb2xpY3lQZWVyQ29uZmlnKCk6IG5ldHdvcmtwb2xpY3kuTmV0d29ya1BvbGljeVBlZXJDb25maWcge1xuICAgIHJldHVybiB0aGlzLl9wb2RzLnRvTmV0d29ya1BvbGljeVBlZXJDb25maWcoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAc2VlIElOZXR3b3JrUG9saWN5UGVlci50b1BvZFNlbGVjdG9yKClcbiAgICovXG4gIHB1YmxpYyB0b1BvZFNlbGVjdG9yKCk6IHBvZC5JUG9kU2VsZWN0b3IgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9wb2RzLnRvUG9kU2VsZWN0b3IoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyBfdG9LdWJlKCk6IGs4cy5OYW1lc3BhY2VTcGVjIHtcbiAgICByZXR1cm4ge307XG4gIH1cblxufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIGBOYW1lc3BhY2VzLnNlbGVjdGAuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTmFtZXNwYWNlc1NlbGVjdE9wdGlvbnMge1xuXG4gIC8qKlxuICAgKiBMYWJlbHMgdGhlIG5hbWVzcGFjZXMgbXVzdCBoYXZlLlxuICAgKiBUaGlzIGlzIGVxdWl2YWxlbnQgdG8gdXNpbmcgYW4gJ0lzJyBzZWxlY3Rvci5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBzdHJpY3QgbGFiZWxzIHJlcXVpcmVtZW50cy5cbiAgICovXG4gIHJlYWRvbmx5IGxhYmVscz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG5cbiAgLyoqXG4gICAqIE5hbWVzcGFjZXMgbXVzdCBzYXRpc2Z5IHRoZXNlIHNlbGVjdG9ycy5cbiAgICogVGhlIHNlbGVjdG9ycyBxdWVyeSBsYWJlbHMsIGp1c3QgbGlrZSB0aGUgYGxhYmVsc2AgcHJvcGVydHksIGJ1dCB0aGV5XG4gICAqIHByb3ZpZGUgYSBtb3JlIGFkdmFuY2VkIG1hdGNoaW5nIG1lY2hhbmlzbS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBzZWxlY3RvciByZXF1aXJlbWVudHMuXG4gICAqL1xuICByZWFkb25seSBleHByZXNzaW9ucz86IHBvZC5MYWJlbEV4cHJlc3Npb25bXTtcblxuICAvKipcbiAgICogTmFtZXNwYWNlcyBuYW1lcyBtdXN0IGJlIG9uZSBvZiB0aGVzZS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBuYW1lIHJlcXVpcmVtZW50cy5cbiAgICovXG4gIHJlYWRvbmx5IG5hbWVzPzogc3RyaW5nW107XG5cbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgZ3JvdXAgb2YgbmFtZXNwYWNlcy5cbiAqL1xuZXhwb3J0IGNsYXNzIE5hbWVzcGFjZXMgZXh0ZW5kcyBDb25zdHJ1Y3QgaW1wbGVtZW50cyBJTmFtZXNwYWNlU2VsZWN0b3IsIG5ldHdvcmtwb2xpY3kuSU5ldHdvcmtQb2xpY3lQZWVyIHtcblxuICAvKipcbiAgICogU2VsZWN0IHNwZWNpZmljIG5hbWVzcGFjZXMuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHNlbGVjdChzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBvcHRpb25zOiBOYW1lc3BhY2VzU2VsZWN0T3B0aW9ucyk6IE5hbWVzcGFjZXMge1xuICAgIHJldHVybiBuZXcgTmFtZXNwYWNlcyhzY29wZSwgaWQsIG9wdGlvbnMuZXhwcmVzc2lvbnMsIG9wdGlvbnMubmFtZXMsIG9wdGlvbnMubGFiZWxzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZWxlY3QgYWxsIG5hbWVzcGFjZXMuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGFsbChzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nKTogTmFtZXNwYWNlcyB7XG4gICAgcmV0dXJuIE5hbWVzcGFjZXMuc2VsZWN0KHNjb3BlLCBpZCwgeyBleHByZXNzaW9uczogW10sIGxhYmVsczoge30gfSk7XG4gIH1cblxuICBwcml2YXRlIHJlYWRvbmx5IF9wb2RzOiBwb2QuUG9kcztcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZXhwcmVzc2lvbnM/OiBwb2QuTGFiZWxFeHByZXNzaW9uW10sXG4gICAgcHJpdmF0ZSByZWFkb25seSBuYW1lcz86IHN0cmluZ1tdLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgbGFiZWxzPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSkge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICB0aGlzLl9wb2RzID0gcG9kLlBvZHMuYWxsKHRoaXMsICdQb2RzJywgeyBuYW1lc3BhY2VzOiB0aGlzIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEBzZWUgSU5hbWVzcGFjZVNlbGVjdG9yLnRvTmFtZXNwYWNlU2VsZWN0b3JDb25maWcoKVxuICAgKi9cbiAgcHVibGljIHRvTmFtZXNwYWNlU2VsZWN0b3JDb25maWcoKTogTmFtZXNwYWNlU2VsZWN0b3JDb25maWcge1xuICAgIHJldHVybiB7XG4gICAgICBsYWJlbFNlbGVjdG9yOiBwb2QuTGFiZWxTZWxlY3Rvci5vZih7IGV4cHJlc3Npb25zOiB0aGlzLmV4cHJlc3Npb25zLCBsYWJlbHM6IHRoaXMubGFiZWxzIH0gKSxcbiAgICAgIG5hbWVzOiB0aGlzLm5hbWVzLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQHNlZSBJTmV0d29ya1BvbGljeVBlZXIudG9OZXR3b3JrUG9saWN5UGVlckNvbmZpZygpXG4gICAqL1xuICBwdWJsaWMgdG9OZXR3b3JrUG9saWN5UGVlckNvbmZpZygpOiBuZXR3b3JrcG9saWN5Lk5ldHdvcmtQb2xpY3lQZWVyQ29uZmlnIHtcbiAgICByZXR1cm4gdGhpcy5fcG9kcy50b05ldHdvcmtQb2xpY3lQZWVyQ29uZmlnKCk7XG4gIH1cblxuICAvKipcbiAgICogQHNlZSBJTmV0d29ya1BvbGljeVBlZXIudG9Qb2RTZWxlY3RvcigpXG4gICAqL1xuICBwdWJsaWMgdG9Qb2RTZWxlY3RvcigpOiBwb2QuSVBvZFNlbGVjdG9yIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fcG9kcy50b1BvZFNlbGVjdG9yKCk7XG4gIH1cblxufVxuIl19