@harbor/ui
Version:
Harbor shared UI components based on Clarity and Angular6
250 lines (249 loc) • 16.8 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/
import { InjectionToken } from '@angular/core';
/** @type {?} */
export let SERVICE_CONFIG = new InjectionToken("service.config");
/**
* @record
*/
export function IServiceConfig() { }
/**
* The base endpoint of service used to retrieve the system configuration information.
* The configurations may include but not limit:
* Notary configurations
* Registry configuration
* Volume information
*
* * {string}
* \@memberOf IServiceConfig
* @type {?|undefined}
*/
IServiceConfig.prototype.systemInfoEndpoint;
/**
* The base endpoint of the service used to handle the repositories of registry and/or tags of repository.
* The endpoints of repository or tag(s) will be built based on this endpoint.
* E.g:
* If the base endpoint is '/api/repositories',
* the repository endpoint will be '/api/repositories/:repo_id',
* the tag(s) endpoint will be '/api/repositories/:repo_id/tags[/:tag_id]'.
*
*
* * {string}
* \@memberOf IServiceConfig
* @type {?|undefined}
*/
IServiceConfig.prototype.repositoryBaseEndpoint;
/**
* The base endpoint of the service used to handle the recent access logs.
*
* * {string}
* \@memberOf IServiceConfig
* @type {?|undefined}
*/
IServiceConfig.prototype.logBaseEndpoint;
/**
* The base endpoint of the service used to handle the registry targets.
* Registry target related endpoints will be built based on this endpoint.
* E.g:
* If the base endpoint is '/api/endpoints',
* the endpoint for registry target will be '/api/endpoints/:endpoint_id',
* the endpoint for pinging registry target will be '/api/endpoints/:endpoint_id/ping'.
*
* * {string}
* \@memberOf IServiceConfig
* @type {?|undefined}
*/
IServiceConfig.prototype.targetBaseEndpoint;
/**
* The base endpoint of the service used to handle the replications.
* @type {?|undefined}
*/
IServiceConfig.prototype.replicationBaseEndpoint;
/**
* The base endpoint of the service used to handle the replication rules.
* Replication rule related endpoints will be built based on this endpoint.
* E.g:
* If the base endpoint is '/api/replication/rules',
* the endpoint for rule will be '/api/replication/rules/:rule_id'.
*
* * {string}
* \@memberOf IServiceConfig
* @type {?|undefined}
*/
IServiceConfig.prototype.replicationRuleEndpoint;
/**
* The base endpoint of the service used to handle the replication jobs.
*
*
* * {string}
* \@memberOf IServiceConfig
* @type {?|undefined}
*/
IServiceConfig.prototype.replicationJobEndpoint;
/**
* The base endpoint of the service used to handle vulnerability scanning.
*
* * {string}
* \@memberOf IServiceConfig
* @type {?|undefined}
*/
IServiceConfig.prototype.vulnerabilityScanningBaseEndpoint;
/**
* The base endpoint of the service used to handle project policy.
*
* * {string}
* \@memberOf IServiceConfig
* @type {?|undefined}
*/
IServiceConfig.prototype.projectPolicyEndpoint;
/**
* The base endpoint of service used to handle projects
* * {string}
* \@memberOf IServiceConfig
* @type {?|undefined}
*/
IServiceConfig.prototype.projectBaseEndpoint;
/**
* To determine whether or not to enable the i18 multiple languages supporting.
*
* * {boolean}
* \@memberOf IServiceConfig
* @type {?|undefined}
*/
IServiceConfig.prototype.enablei18Support;
/**
* The cookie key used to store the current used language preference.
*
* * {string}
* \@memberOf IServiceConfig
* @type {?|undefined}
*/
IServiceConfig.prototype.langCookieKey;
/**
* Declare what languages are supported.
*
* * {string[]}
* \@memberOf IServiceConfig
* @type {?|undefined}
*/
IServiceConfig.prototype.supportedLangs;
/**
* Define the default language the translate service uses.
*
* * {string}
* \@memberOf I18nConfig
* @type {?|undefined}
*/
IServiceConfig.prototype.defaultLang;
/**
* To determine which loader will be used to load the required lang messages.
* Support two loaders:
* One is 'http', use async http to load json files with the specified url/path.
* Another is 'local', use local json variable to store the lang message.
*
* * {string}
* \@memberOf IServiceConfig
* @type {?|undefined}
*/
IServiceConfig.prototype.langMessageLoader;
/**
* Define the basic url/path prefix for the loader to find the json files if the 'langMessageLoader' is 'http'.
* For example, 'src/i18n/langs'.
*
* * {string}
* \@memberOf IServiceConfig
* @type {?|undefined}
*/
IServiceConfig.prototype.langMessagePathForHttpLoader;
/**
* Define the suffix of the json file names without lang name if 'langMessageLoader' is 'http'.
* For example, '-lang.json' is suffix of message file 'en-us-lang.json'.
*
* * {string}
* \@memberOf IServiceConfig
* @type {?|undefined}
*/
IServiceConfig.prototype.langMessageFileSuffixForHttpLoader;
/**
* If set 'local' loader in configuration property 'langMessageLoader' to load the i18n messages,
* this property must be defined to tell local JSON loader where to get the related messages.
* E.g:
* If declare the following messages storage variables,
*
* export const EN_US_LANG: any = {
* "APP_TITLE": {
* "VMW_HARBOR": "VMware Harbor",
* "HARBOR": "Harbor"
* }
* }
*
* export const ZH_CN_LANG: any = {
* "APP_TITLE": {
* "VMW_HARBOR": "VMware Harbor中文版",
* "HARBOR": "Harbor"
* }
* }
*
* then this property should be set to:
* {
* "en-us": EN_US_LANG,
* "zh-cn": ZH_CN_LANG
* };
*
*
* * {{ [key: string]: any }}
* \@memberOf IServiceConfig
* @type {?|undefined}
*/
IServiceConfig.prototype.localI18nMessageVariableMap;
/**
* The base endpoint of configuration service.
*
* * {string}
* \@memberOf IServiceConfig
* @type {?|undefined}
*/
IServiceConfig.prototype.configurationEndpoint;
/**
* The base endpoint of scan job service.
*
* * {string}
* \@memberof IServiceConfig
* @type {?|undefined}
*/
IServiceConfig.prototype.scanJobEndpoint;
/**
* The base endpoint of the service used to handle the labels.
* labels related endpoints will be built based on this endpoint.
* E.g:
* If the base endpoint is '/api/labels',
* the label endpoint will be '/api/labels/:id'.
*
* * {string}
* \@memberOf IServiceConfig
* @type {?|undefined}
*/
IServiceConfig.prototype.labelEndpoint;
/**
* The base endpoint of the service used to handle the helm chart.
* helm charts related endpoints will be built based on this endpoint.
* E.g:
* If the base endpoint is '/api/helmcharts',
* the helm chart endpoint will be '/api/helmcharts/:id'.
*
* * {string}
* \@memberOf IServiceConfig
* @type {?|undefined}
*/
IServiceConfig.prototype.helmChartEndpoint;
/**
* The base endpoint of the chart download url
* * {string}
* @type {?|undefined}
*/
IServiceConfig.prototype.downloadChartEndpoint;
/** @type {?|undefined} */
IServiceConfig.prototype.gcEndpoint;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS5jb25maWcuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AaGFyYm9yL3VpLyIsInNvdXJjZXMiOlsic3JjL3NlcnZpY2UuY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUUvQyxXQUFXLGNBQWMsR0FBRyxJQUFJLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuZXhwb3J0IGxldCBTRVJWSUNFX0NPTkZJRyA9IG5ldyBJbmplY3Rpb25Ub2tlbihcInNlcnZpY2UuY29uZmlnXCIpO1xuZXhwb3J0IGludGVyZmFjZSBJU2VydmljZUNvbmZpZyB7XG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgZW5kcG9pbnQgb2Ygc2VydmljZSB1c2VkIHRvIHJldHJpZXZlIHRoZSBzeXN0ZW0gY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbi5cbiAgICAgKiBUaGUgY29uZmlndXJhdGlvbnMgbWF5IGluY2x1ZGUgYnV0IG5vdCBsaW1pdDpcbiAgICAgKiAgIE5vdGFyeSBjb25maWd1cmF0aW9uc1xuICAgICAqICAgUmVnaXN0cnkgY29uZmlndXJhdGlvblxuICAgICAqICAgVm9sdW1lIGluZm9ybWF0aW9uXG4gICAgICpcbiAgICAgKiAqIHtzdHJpbmd9XG4gICAgICogQG1lbWJlck9mIElTZXJ2aWNlQ29uZmlnXG4gICAgICovXG4gICAgc3lzdGVtSW5mb0VuZHBvaW50Pzogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgZW5kcG9pbnQgb2YgdGhlIHNlcnZpY2UgdXNlZCB0byBoYW5kbGUgdGhlIHJlcG9zaXRvcmllcyBvZiByZWdpc3RyeSBhbmQvb3IgdGFncyBvZiByZXBvc2l0b3J5LlxuICAgICAqIFRoZSBlbmRwb2ludHMgb2YgcmVwb3NpdG9yeSBvciB0YWcocykgd2lsbCBiZSBidWlsdCBiYXNlZCBvbiB0aGlzIGVuZHBvaW50LlxuICAgICAqIEUuZzpcbiAgICAgKiAgIElmIHRoZSBiYXNlIGVuZHBvaW50IGlzICcvYXBpL3JlcG9zaXRvcmllcycsXG4gICAgICogICB0aGUgcmVwb3NpdG9yeSBlbmRwb2ludCB3aWxsIGJlICcvYXBpL3JlcG9zaXRvcmllcy86cmVwb19pZCcsXG4gICAgICogICB0aGUgdGFnKHMpIGVuZHBvaW50IHdpbGwgYmUgJy9hcGkvcmVwb3NpdG9yaWVzLzpyZXBvX2lkL3RhZ3NbLzp0YWdfaWRdJy5cbiAgICAgKlxuICAgICAqXG4gICAgICogKiB7c3RyaW5nfVxuICAgICAqIEBtZW1iZXJPZiBJU2VydmljZUNvbmZpZ1xuICAgICAqL1xuICAgIHJlcG9zaXRvcnlCYXNlRW5kcG9pbnQ/OiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBlbmRwb2ludCBvZiB0aGUgc2VydmljZSB1c2VkIHRvIGhhbmRsZSB0aGUgcmVjZW50IGFjY2VzcyBsb2dzLlxuICAgICAqXG4gICAgICogKiB7c3RyaW5nfVxuICAgICAqIEBtZW1iZXJPZiBJU2VydmljZUNvbmZpZ1xuICAgICAqL1xuICAgIGxvZ0Jhc2VFbmRwb2ludD86IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGVuZHBvaW50IG9mIHRoZSBzZXJ2aWNlIHVzZWQgdG8gaGFuZGxlIHRoZSByZWdpc3RyeSB0YXJnZXRzLlxuICAgICAqIFJlZ2lzdHJ5IHRhcmdldCByZWxhdGVkIGVuZHBvaW50cyB3aWxsIGJlIGJ1aWx0IGJhc2VkIG9uIHRoaXMgZW5kcG9pbnQuXG4gICAgICogRS5nOlxuICAgICAqICAgSWYgdGhlIGJhc2UgZW5kcG9pbnQgaXMgJy9hcGkvZW5kcG9pbnRzJyxcbiAgICAgKiAgIHRoZSBlbmRwb2ludCBmb3IgcmVnaXN0cnkgdGFyZ2V0IHdpbGwgYmUgJy9hcGkvZW5kcG9pbnRzLzplbmRwb2ludF9pZCcsXG4gICAgICogICB0aGUgZW5kcG9pbnQgZm9yIHBpbmdpbmcgcmVnaXN0cnkgdGFyZ2V0IHdpbGwgYmUgJy9hcGkvZW5kcG9pbnRzLzplbmRwb2ludF9pZC9waW5nJy5cbiAgICAgKlxuICAgICAqICoge3N0cmluZ31cbiAgICAgKiBAbWVtYmVyT2YgSVNlcnZpY2VDb25maWdcbiAgICAgKi9cbiAgICB0YXJnZXRCYXNlRW5kcG9pbnQ/OiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBlbmRwb2ludCBvZiB0aGUgc2VydmljZSB1c2VkIHRvIGhhbmRsZSB0aGUgcmVwbGljYXRpb25zLlxuICAgICAqL1xuICAgIHJlcGxpY2F0aW9uQmFzZUVuZHBvaW50Pzogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgZW5kcG9pbnQgb2YgdGhlIHNlcnZpY2UgdXNlZCB0byBoYW5kbGUgdGhlIHJlcGxpY2F0aW9uIHJ1bGVzLlxuICAgICAqIFJlcGxpY2F0aW9uIHJ1bGUgcmVsYXRlZCBlbmRwb2ludHMgd2lsbCBiZSBidWlsdCBiYXNlZCBvbiB0aGlzIGVuZHBvaW50LlxuICAgICAqIEUuZzpcbiAgICAgKiAgIElmIHRoZSBiYXNlIGVuZHBvaW50IGlzICcvYXBpL3JlcGxpY2F0aW9uL3J1bGVzJyxcbiAgICAgKiAgIHRoZSBlbmRwb2ludCBmb3IgcnVsZSB3aWxsIGJlICcvYXBpL3JlcGxpY2F0aW9uL3J1bGVzLzpydWxlX2lkJy5cbiAgICAgKlxuICAgICAqICoge3N0cmluZ31cbiAgICAgKiBAbWVtYmVyT2YgSVNlcnZpY2VDb25maWdcbiAgICAgKi9cbiAgICByZXBsaWNhdGlvblJ1bGVFbmRwb2ludD86IHN0cmluZztcblxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgZW5kcG9pbnQgb2YgdGhlIHNlcnZpY2UgdXNlZCB0byBoYW5kbGUgdGhlIHJlcGxpY2F0aW9uIGpvYnMuXG4gICAgICpcbiAgICAgKlxuICAgICAqICoge3N0cmluZ31cbiAgICAgKiBAbWVtYmVyT2YgSVNlcnZpY2VDb25maWdcbiAgICAgKi9cbiAgICByZXBsaWNhdGlvbkpvYkVuZHBvaW50Pzogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgZW5kcG9pbnQgb2YgdGhlIHNlcnZpY2UgdXNlZCB0byBoYW5kbGUgdnVsbmVyYWJpbGl0eSBzY2FubmluZy5cbiAgICAgKlxuICAgICAqICoge3N0cmluZ31cbiAgICAgKiBAbWVtYmVyT2YgSVNlcnZpY2VDb25maWdcbiAgICAgKi9cbiAgICB2dWxuZXJhYmlsaXR5U2Nhbm5pbmdCYXNlRW5kcG9pbnQ/OiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBlbmRwb2ludCBvZiB0aGUgc2VydmljZSB1c2VkIHRvIGhhbmRsZSBwcm9qZWN0IHBvbGljeS5cbiAgICAgKlxuICAgICAqICoge3N0cmluZ31cbiAgICAgKiBAbWVtYmVyT2YgSVNlcnZpY2VDb25maWdcbiAgICAgKi9cbiAgICBwcm9qZWN0UG9saWN5RW5kcG9pbnQ/OiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBlbmRwb2ludCBvZiBzZXJ2aWNlIHVzZWQgdG8gaGFuZGxlIHByb2plY3RzXG4gICAgICogKiB7c3RyaW5nfVxuICAgICAqIEBtZW1iZXJPZiBJU2VydmljZUNvbmZpZ1xuICAgICAqL1xuICAgIHByb2plY3RCYXNlRW5kcG9pbnQ/OiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBUbyBkZXRlcm1pbmUgd2hldGhlciBvciBub3QgdG8gZW5hYmxlIHRoZSBpMTggbXVsdGlwbGUgbGFuZ3VhZ2VzIHN1cHBvcnRpbmcuXG4gICAgICpcbiAgICAgKiAqIHtib29sZWFufVxuICAgICAqIEBtZW1iZXJPZiBJU2VydmljZUNvbmZpZ1xuICAgICAqL1xuICAgIGVuYWJsZWkxOFN1cHBvcnQ/OiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogVGhlIGNvb2tpZSBrZXkgdXNlZCB0byBzdG9yZSB0aGUgY3VycmVudCB1c2VkIGxhbmd1YWdlIHByZWZlcmVuY2UuXG4gICAgICpcbiAgICAgKiAqIHtzdHJpbmd9XG4gICAgICogQG1lbWJlck9mIElTZXJ2aWNlQ29uZmlnXG4gICAgICovXG4gICAgbGFuZ0Nvb2tpZUtleT86IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIERlY2xhcmUgd2hhdCBsYW5ndWFnZXMgYXJlIHN1cHBvcnRlZC5cbiAgICAgKlxuICAgICAqICoge3N0cmluZ1tdfVxuICAgICAqIEBtZW1iZXJPZiBJU2VydmljZUNvbmZpZ1xuICAgICAqL1xuICAgIHN1cHBvcnRlZExhbmdzPzogc3RyaW5nW107XG5cbiAgICAvKipcbiAgICAgKiBEZWZpbmUgdGhlIGRlZmF1bHQgbGFuZ3VhZ2UgdGhlIHRyYW5zbGF0ZSBzZXJ2aWNlIHVzZXMuXG4gICAgICpcbiAgICAgKiAqIHtzdHJpbmd9XG4gICAgICogQG1lbWJlck9mIEkxOG5Db25maWdcbiAgICAgKi9cbiAgICBkZWZhdWx0TGFuZz86IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIFRvIGRldGVybWluZSB3aGljaCBsb2FkZXIgd2lsbCBiZSB1c2VkIHRvIGxvYWQgdGhlIHJlcXVpcmVkIGxhbmcgbWVzc2FnZXMuXG4gICAgICogU3VwcG9ydCB0d28gbG9hZGVyczpcbiAgICAgKiAgIE9uZSBpcyAnaHR0cCcsIHVzZSBhc3luYyBodHRwIHRvIGxvYWQganNvbiBmaWxlcyB3aXRoIHRoZSBzcGVjaWZpZWQgdXJsL3BhdGguXG4gICAgICogICBBbm90aGVyIGlzICdsb2NhbCcsIHVzZSBsb2NhbCBqc29uIHZhcmlhYmxlIHRvIHN0b3JlIHRoZSBsYW5nIG1lc3NhZ2UuXG4gICAgICpcbiAgICAgKiAqIHtzdHJpbmd9XG4gICAgICogQG1lbWJlck9mIElTZXJ2aWNlQ29uZmlnXG4gICAgICovXG4gICAgbGFuZ01lc3NhZ2VMb2FkZXI/OiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBEZWZpbmUgdGhlIGJhc2ljIHVybC9wYXRoIHByZWZpeCBmb3IgdGhlIGxvYWRlciB0byBmaW5kIHRoZSBqc29uIGZpbGVzIGlmIHRoZSAnbGFuZ01lc3NhZ2VMb2FkZXInIGlzICdodHRwJy5cbiAgICAgKiBGb3IgZXhhbXBsZSwgJ3NyYy9pMThuL2xhbmdzJy5cbiAgICAgKlxuICAgICAqICoge3N0cmluZ31cbiAgICAgKiBAbWVtYmVyT2YgSVNlcnZpY2VDb25maWdcbiAgICAgKi9cbiAgICBsYW5nTWVzc2FnZVBhdGhGb3JIdHRwTG9hZGVyPzogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogRGVmaW5lIHRoZSBzdWZmaXggb2YgdGhlIGpzb24gZmlsZSBuYW1lcyB3aXRob3V0IGxhbmcgbmFtZSBpZiAnbGFuZ01lc3NhZ2VMb2FkZXInIGlzICdodHRwJy5cbiAgICAgKiBGb3IgZXhhbXBsZSwgJy1sYW5nLmpzb24nIGlzIHN1ZmZpeCBvZiBtZXNzYWdlIGZpbGUgJ2VuLXVzLWxhbmcuanNvbicuXG4gICAgICpcbiAgICAgKiAqIHtzdHJpbmd9XG4gICAgICogQG1lbWJlck9mIElTZXJ2aWNlQ29uZmlnXG4gICAgICovXG4gICAgbGFuZ01lc3NhZ2VGaWxlU3VmZml4Rm9ySHR0cExvYWRlcj86IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIElmIHNldCAnbG9jYWwnIGxvYWRlciBpbiBjb25maWd1cmF0aW9uIHByb3BlcnR5ICdsYW5nTWVzc2FnZUxvYWRlcicgdG8gbG9hZCB0aGUgaTE4biBtZXNzYWdlcyxcbiAgICAgKiB0aGlzIHByb3BlcnR5IG11c3QgYmUgZGVmaW5lZCB0byB0ZWxsIGxvY2FsIEpTT04gbG9hZGVyIHdoZXJlIHRvIGdldCB0aGUgcmVsYXRlZCBtZXNzYWdlcy5cbiAgICAgKiBFLmc6XG4gICAgICogICBJZiBkZWNsYXJlIHRoZSBmb2xsb3dpbmcgbWVzc2FnZXMgc3RvcmFnZSB2YXJpYWJsZXMsXG4gICAgICpcbiAgICAgKiAgIGV4cG9ydCBjb25zdCBFTl9VU19MQU5HOiBhbnkgPSB7XG4gICAgICogICAgICAgXCJBUFBfVElUTEVcIjoge1xuICAgICAqICAgICAgICAgICBcIlZNV19IQVJCT1JcIjogXCJWTXdhcmUgSGFyYm9yXCIsXG4gICAgICogICAgICAgICAgIFwiSEFSQk9SXCI6IFwiSGFyYm9yXCJcbiAgICAgKiAgICAgICB9XG4gICAgICogICB9XG4gICAgICpcbiAgICAgKiAgIGV4cG9ydCBjb25zdCBaSF9DTl9MQU5HOiBhbnkgPSB7XG4gICAgICogICAgICAgXCJBUFBfVElUTEVcIjoge1xuICAgICAqICAgICAgICAgICBcIlZNV19IQVJCT1JcIjogXCJWTXdhcmUgSGFyYm9y5Lit5paH54mIXCIsXG4gICAgICogICAgICAgICAgIFwiSEFSQk9SXCI6IFwiSGFyYm9yXCJcbiAgICAgKiAgICAgICB9XG4gICAgICogICB9XG4gICAgICpcbiAgICAgKiAgIHRoZW4gdGhpcyBwcm9wZXJ0eSBzaG91bGQgYmUgc2V0IHRvOlxuICAgICAqICAge1xuICAgICAqICAgICAgIFwiZW4tdXNcIjogRU5fVVNfTEFORyxcbiAgICAgKiAgICAgICBcInpoLWNuXCI6IFpIX0NOX0xBTkdcbiAgICAgKiAgIH07XG4gICAgICpcbiAgICAgKlxuICAgICAqICoge3sgW2tleTogc3RyaW5nXTogYW55IH19XG4gICAgICogQG1lbWJlck9mIElTZXJ2aWNlQ29uZmlnXG4gICAgICovXG4gICAgbG9jYWxJMThuTWVzc2FnZVZhcmlhYmxlTWFwPzogeyBba2V5OiBzdHJpbmddOiBhbnkgfTtcblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGVuZHBvaW50IG9mIGNvbmZpZ3VyYXRpb24gc2VydmljZS5cbiAgICAgKlxuICAgICAqICoge3N0cmluZ31cbiAgICAgKiBAbWVtYmVyT2YgSVNlcnZpY2VDb25maWdcbiAgICAgKi9cbiAgICBjb25maWd1cmF0aW9uRW5kcG9pbnQ/OiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBlbmRwb2ludCBvZiBzY2FuIGpvYiBzZXJ2aWNlLlxuICAgICAqXG4gICAgICogKiB7c3RyaW5nfVxuICAgICAqIEBtZW1iZXJvZiBJU2VydmljZUNvbmZpZ1xuICAgICAqL1xuICAgIHNjYW5Kb2JFbmRwb2ludD86IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIFRoZSBiYXNlIGVuZHBvaW50IG9mIHRoZSBzZXJ2aWNlIHVzZWQgdG8gaGFuZGxlIHRoZSBsYWJlbHMuXG4gICAgICogbGFiZWxzIHJlbGF0ZWQgZW5kcG9pbnRzIHdpbGwgYmUgYnVpbHQgYmFzZWQgb24gdGhpcyBlbmRwb2ludC5cbiAgICAgKiBFLmc6XG4gICAgICogICBJZiB0aGUgYmFzZSBlbmRwb2ludCBpcyAnL2FwaS9sYWJlbHMnLFxuICAgICAqICAgdGhlIGxhYmVsIGVuZHBvaW50ICB3aWxsIGJlICcvYXBpL2xhYmVscy86aWQnLlxuICAgICAqXG4gICAgICogKiB7c3RyaW5nfVxuICAgICAqIEBtZW1iZXJPZiBJU2VydmljZUNvbmZpZ1xuICAgICAqL1xuICAgIGxhYmVsRW5kcG9pbnQ/OiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBlbmRwb2ludCBvZiB0aGUgc2VydmljZSB1c2VkIHRvIGhhbmRsZSB0aGUgaGVsbSBjaGFydC5cbiAgICAgKiBoZWxtIGNoYXJ0cyByZWxhdGVkIGVuZHBvaW50cyB3aWxsIGJlIGJ1aWx0IGJhc2VkIG9uIHRoaXMgZW5kcG9pbnQuXG4gICAgICogRS5nOlxuICAgICAqICAgSWYgdGhlIGJhc2UgZW5kcG9pbnQgaXMgJy9hcGkvaGVsbWNoYXJ0cycsXG4gICAgICogICB0aGUgaGVsbSBjaGFydCBlbmRwb2ludCAgd2lsbCBiZSAnL2FwaS9oZWxtY2hhcnRzLzppZCcuXG4gICAgICpcbiAgICAgKiAqIHtzdHJpbmd9XG4gICAgICogQG1lbWJlck9mIElTZXJ2aWNlQ29uZmlnXG4gICAgICovXG4gICAgaGVsbUNoYXJ0RW5kcG9pbnQ/OiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBlbmRwb2ludCBvZiB0aGUgY2hhcnQgZG93bmxvYWQgdXJsXG4gICAgICogKiB7c3RyaW5nfVxuICAgICAqL1xuICAgIGRvd25sb2FkQ2hhcnRFbmRwb2ludD86IHN0cmluZztcblxuICAgIGdjRW5kcG9pbnQ/OiBzdHJpbmc7XG59XG4iXX0=